blob: 45b2b875e7c97adb5acbb39d7cd665028484828e [file] [log] [blame]
Philip Howard2215ad32013-03-27 23:04:22 +00001%module wiringpi2
Philip Howard567ee002013-03-27 22:22:00 +00002
Philip Howard3366c812016-02-27 17:17:28 +00003%import "constants.i"
4
Philip Howard567ee002013-03-27 22:22:00 +00005%{
Philip Howard6ae3e5b2013-05-21 22:48:41 +01006#include "WiringPi/wiringPi/wiringPi.h"
Philip Howard6ae3e5b2013-05-21 22:48:41 +01007#include "WiringPi/wiringPi/wiringPiI2C.h"
Phil Howard22041762014-07-18 11:48:01 +00008#include "WiringPi/wiringPi/wiringPiSPI.h"
Philip Howard6ae3e5b2013-05-21 22:48:41 +01009#include "WiringPi/wiringPi/wiringSerial.h"
10#include "WiringPi/wiringPi/wiringShift.h"
Phil Howard22041762014-07-18 11:48:01 +000011#include "WiringPi/wiringPi/drcSerial.h"
Philip Howardd9fc85a2013-08-13 16:38:26 +010012#include "WiringPi/wiringPi/max31855.h"
13#include "WiringPi/wiringPi/max5322.h"
Philip Howard6ae3e5b2013-05-21 22:48:41 +010014#include "WiringPi/wiringPi/mcp23008.h"
Philip Howard6ae3e5b2013-05-21 22:48:41 +010015#include "WiringPi/wiringPi/mcp23016.h"
Phil Howard22041762014-07-18 11:48:01 +000016#include "WiringPi/wiringPi/mcp23016reg.h"
17#include "WiringPi/wiringPi/mcp23017.h"
18#include "WiringPi/wiringPi/mcp23s08.h"
19#include "WiringPi/wiringPi/mcp23s17.h"
20#include "WiringPi/wiringPi/mcp23x0817.h"
21#include "WiringPi/wiringPi/mcp23x08.h"
Philip Howard6ae3e5b2013-05-21 22:48:41 +010022#include "WiringPi/wiringPi/mcp3002.h"
Philip Howardd9fc85a2013-08-13 16:38:26 +010023#include "WiringPi/wiringPi/mcp3004.h"
Phil Howard22041762014-07-18 11:48:01 +000024#include "WiringPi/wiringPi/mcp3422.h"
25#include "WiringPi/wiringPi/mcp4802.h"
Philip Howard6ae3e5b2013-05-21 22:48:41 +010026#include "WiringPi/wiringPi/pcf8574.h"
27#include "WiringPi/wiringPi/pcf8591.h"
Phil Howard22041762014-07-18 11:48:01 +000028#include "WiringPi/wiringPi/sn3218.h"
Philip Howard2215ad32013-03-27 23:04:22 +000029#include "WiringPi/wiringPi/softPwm.h"
30#include "WiringPi/wiringPi/softServo.h"
31#include "WiringPi/wiringPi/softTone.h"
32#include "WiringPi/wiringPi/sr595.h"
Phil Howard22041762014-07-18 11:48:01 +000033#include "WiringPi/devLib/ds1302.h"
34#include "WiringPi/devLib/font.h"
Philip Howard6ae3e5b2013-05-21 22:48:41 +010035#include "WiringPi/devLib/gertboard.h"
36#include "WiringPi/devLib/lcd128x64.h"
Philip Howard6ae3e5b2013-05-21 22:48:41 +010037#include "WiringPi/devLib/lcd.h"
38#include "WiringPi/devLib/maxdetect.h"
39#include "WiringPi/devLib/piFace.h"
Philip Howardd9fc85a2013-08-13 16:38:26 +010040#include "WiringPi/devLib/piGlow.h"
Phil Howard22041762014-07-18 11:48:01 +000041#include "WiringPi/devLib/piNes.h"
Philip Howard567ee002013-03-27 22:22:00 +000042%}
43
44%apply unsigned char { uint8_t };
Phil Howard22041762014-07-18 11:48:01 +000045%typemap(in) (unsigned char *data, int len) {
46 $1 = (unsigned char *) PyString_AsString($input);
47 $2 = PyString_Size($input);
48};
49
White Moustache96d5dcd2016-02-13 14:16:40 +000050// Grab a Python function object as a Python object.
51%typemap(in) PyObject *pyfunc {
52 if (!PyCallable_Check($1)) {
53 PyErr_SetString(PyExc_TypeError, "Need a callable object!");
54 return NULL;
55 }
56 $1 = $2;
57}
58
59%{
60
61// we need to have our own callbacks array
62PyObject* event_callback[64] = {0,};
63
64void _wiringPiISR_callback(int pinNumber) {
65 PyObject *result;
66
67 if (event_callback[pinNumber]) {
68 // this will acquire the GIL
69 SWIG_PYTHON_THREAD_BEGIN_BLOCK;
70
71 result = PyObject_CallFunction(event_callback[pinNumber], NULL);
72 if (result == NULL && PyErr_Occurred()) {
73 PyErr_Print();
74 PyErr_Clear();
75 }
76 Py_XDECREF(result);
77
78 // release the GIL
79 SWIG_PYTHON_THREAD_END_BLOCK;
80 }
81}
82
83
84/* This is embarrasing, WiringPi does not support supplying args to the callback
85... so we have to create callback function for each of the pins :( */
86void _wiringPiISR_callback_pin0(void) { _wiringPiISR_callback(0); }
87void _wiringPiISR_callback_pin1(void) { _wiringPiISR_callback(1); }
88void _wiringPiISR_callback_pin2(void) { _wiringPiISR_callback(2); }
89void _wiringPiISR_callback_pin3(void) { _wiringPiISR_callback(3); }
90void _wiringPiISR_callback_pin4(void) { _wiringPiISR_callback(4); }
91void _wiringPiISR_callback_pin5(void) { _wiringPiISR_callback(5); }
92void _wiringPiISR_callback_pin6(void) { _wiringPiISR_callback(6); }
93void _wiringPiISR_callback_pin7(void) { _wiringPiISR_callback(7); }
94void _wiringPiISR_callback_pin8(void) { _wiringPiISR_callback(8); }
95void _wiringPiISR_callback_pin9(void) { _wiringPiISR_callback(9); }
96void _wiringPiISR_callback_pin10(void) { _wiringPiISR_callback(10); }
97void _wiringPiISR_callback_pin11(void) { _wiringPiISR_callback(11); }
98void _wiringPiISR_callback_pin12(void) { _wiringPiISR_callback(12); }
99void _wiringPiISR_callback_pin13(void) { _wiringPiISR_callback(13); }
100void _wiringPiISR_callback_pin14(void) { _wiringPiISR_callback(14); }
101void _wiringPiISR_callback_pin15(void) { _wiringPiISR_callback(15); }
102void _wiringPiISR_callback_pin16(void) { _wiringPiISR_callback(16); }
103void _wiringPiISR_callback_pin17(void) { _wiringPiISR_callback(17); }
104void _wiringPiISR_callback_pin18(void) { _wiringPiISR_callback(18); }
105void _wiringPiISR_callback_pin19(void) { _wiringPiISR_callback(19); }
106void _wiringPiISR_callback_pin20(void) { _wiringPiISR_callback(20); }
107void _wiringPiISR_callback_pin21(void) { _wiringPiISR_callback(21); }
108void _wiringPiISR_callback_pin22(void) { _wiringPiISR_callback(22); }
109void _wiringPiISR_callback_pin23(void) { _wiringPiISR_callback(23); }
110void _wiringPiISR_callback_pin24(void) { _wiringPiISR_callback(24); }
111void _wiringPiISR_callback_pin25(void) { _wiringPiISR_callback(25); }
112void _wiringPiISR_callback_pin26(void) { _wiringPiISR_callback(26); }
113void _wiringPiISR_callback_pin27(void) { _wiringPiISR_callback(27); }
114void _wiringPiISR_callback_pin28(void) { _wiringPiISR_callback(28); }
115void _wiringPiISR_callback_pin29(void) { _wiringPiISR_callback(29); }
116void _wiringPiISR_callback_pin30(void) { _wiringPiISR_callback(30); }
117void _wiringPiISR_callback_pin31(void) { _wiringPiISR_callback(31); }
118void _wiringPiISR_callback_pin32(void) { _wiringPiISR_callback(32); }
119void _wiringPiISR_callback_pin33(void) { _wiringPiISR_callback(33); }
120void _wiringPiISR_callback_pin34(void) { _wiringPiISR_callback(34); }
121void _wiringPiISR_callback_pin35(void) { _wiringPiISR_callback(35); }
122void _wiringPiISR_callback_pin36(void) { _wiringPiISR_callback(36); }
123void _wiringPiISR_callback_pin37(void) { _wiringPiISR_callback(37); }
124void _wiringPiISR_callback_pin38(void) { _wiringPiISR_callback(38); }
125void _wiringPiISR_callback_pin39(void) { _wiringPiISR_callback(39); }
126void _wiringPiISR_callback_pin40(void) { _wiringPiISR_callback(40); }
127void _wiringPiISR_callback_pin41(void) { _wiringPiISR_callback(41); }
128void _wiringPiISR_callback_pin42(void) { _wiringPiISR_callback(42); }
129void _wiringPiISR_callback_pin43(void) { _wiringPiISR_callback(43); }
130void _wiringPiISR_callback_pin44(void) { _wiringPiISR_callback(44); }
131void _wiringPiISR_callback_pin45(void) { _wiringPiISR_callback(45); }
132void _wiringPiISR_callback_pin46(void) { _wiringPiISR_callback(46); }
133void _wiringPiISR_callback_pin47(void) { _wiringPiISR_callback(47); }
134void _wiringPiISR_callback_pin48(void) { _wiringPiISR_callback(48); }
135void _wiringPiISR_callback_pin49(void) { _wiringPiISR_callback(49); }
136void _wiringPiISR_callback_pin50(void) { _wiringPiISR_callback(50); }
137void _wiringPiISR_callback_pin51(void) { _wiringPiISR_callback(51); }
138void _wiringPiISR_callback_pin52(void) { _wiringPiISR_callback(52); }
139void _wiringPiISR_callback_pin53(void) { _wiringPiISR_callback(53); }
140void _wiringPiISR_callback_pin54(void) { _wiringPiISR_callback(54); }
141void _wiringPiISR_callback_pin55(void) { _wiringPiISR_callback(55); }
142void _wiringPiISR_callback_pin56(void) { _wiringPiISR_callback(56); }
143void _wiringPiISR_callback_pin57(void) { _wiringPiISR_callback(57); }
144void _wiringPiISR_callback_pin58(void) { _wiringPiISR_callback(58); }
145void _wiringPiISR_callback_pin59(void) { _wiringPiISR_callback(59); }
146void _wiringPiISR_callback_pin60(void) { _wiringPiISR_callback(60); }
147void _wiringPiISR_callback_pin61(void) { _wiringPiISR_callback(61); }
148void _wiringPiISR_callback_pin62(void) { _wiringPiISR_callback(62); }
149void _wiringPiISR_callback_pin63(void) { _wiringPiISR_callback(63); }
150
151/* This function adds a new Python function object as a callback object */
152
153static void wiringPiISRWrapper(int pin, int mode, PyObject *PyFunc) {
154
155 // remove the old callback if any
156 if (event_callback[pin]) {
157 Py_XDECREF(event_callback[pin]);
158 }
159
160 // put new callback function
161 event_callback[pin] = PyFunc;
162 Py_INCREF(PyFunc);
163
164 // and now the ugly switch
165 void (*func)(void);
166 switch(pin) {
167 case 0: func = &_wiringPiISR_callback_pin0; break;
168 case 1: func = &_wiringPiISR_callback_pin1; break;
169 case 2: func = &_wiringPiISR_callback_pin2; break;
170 case 3: func = &_wiringPiISR_callback_pin3; break;
171 case 4: func = &_wiringPiISR_callback_pin4; break;
172 case 5: func = &_wiringPiISR_callback_pin5; break;
173 case 6: func = &_wiringPiISR_callback_pin6; break;
174 case 7: func = &_wiringPiISR_callback_pin7; break;
175 case 8: func = &_wiringPiISR_callback_pin8; break;
176 case 9: func = &_wiringPiISR_callback_pin9; break;
177 case 10: func = &_wiringPiISR_callback_pin10; break;
178 case 11: func = &_wiringPiISR_callback_pin11; break;
179 case 12: func = &_wiringPiISR_callback_pin12; break;
180 case 13: func = &_wiringPiISR_callback_pin13; break;
181 case 14: func = &_wiringPiISR_callback_pin14; break;
182 case 15: func = &_wiringPiISR_callback_pin15; break;
183 case 16: func = &_wiringPiISR_callback_pin16; break;
184 case 17: func = &_wiringPiISR_callback_pin17; break;
185 case 18: func = &_wiringPiISR_callback_pin18; break;
186 case 19: func = &_wiringPiISR_callback_pin19; break;
187 case 20: func = &_wiringPiISR_callback_pin20; break;
188 case 21: func = &_wiringPiISR_callback_pin21; break;
189 case 22: func = &_wiringPiISR_callback_pin22; break;
190 case 23: func = &_wiringPiISR_callback_pin23; break;
191 case 24: func = &_wiringPiISR_callback_pin24; break;
192 case 25: func = &_wiringPiISR_callback_pin25; break;
193 case 26: func = &_wiringPiISR_callback_pin26; break;
194 case 27: func = &_wiringPiISR_callback_pin27; break;
195 case 28: func = &_wiringPiISR_callback_pin28; break;
196 case 29: func = &_wiringPiISR_callback_pin29; break;
197 case 30: func = &_wiringPiISR_callback_pin30; break;
198 case 31: func = &_wiringPiISR_callback_pin31; break;
199 case 32: func = &_wiringPiISR_callback_pin32; break;
200 case 33: func = &_wiringPiISR_callback_pin33; break;
201 case 34: func = &_wiringPiISR_callback_pin34; break;
202 case 35: func = &_wiringPiISR_callback_pin35; break;
203 case 36: func = &_wiringPiISR_callback_pin36; break;
204 case 37: func = &_wiringPiISR_callback_pin37; break;
205 case 38: func = &_wiringPiISR_callback_pin38; break;
206 case 39: func = &_wiringPiISR_callback_pin39; break;
207 case 40: func = &_wiringPiISR_callback_pin40; break;
208 case 41: func = &_wiringPiISR_callback_pin41; break;
209 case 42: func = &_wiringPiISR_callback_pin42; break;
210 case 43: func = &_wiringPiISR_callback_pin43; break;
211 case 44: func = &_wiringPiISR_callback_pin44; break;
212 case 45: func = &_wiringPiISR_callback_pin45; break;
213 case 46: func = &_wiringPiISR_callback_pin46; break;
214 case 47: func = &_wiringPiISR_callback_pin47; break;
215 case 48: func = &_wiringPiISR_callback_pin48; break;
216 case 49: func = &_wiringPiISR_callback_pin49; break;
217 case 50: func = &_wiringPiISR_callback_pin50; break;
218 case 51: func = &_wiringPiISR_callback_pin51; break;
219 case 52: func = &_wiringPiISR_callback_pin52; break;
220 case 53: func = &_wiringPiISR_callback_pin53; break;
221 case 54: func = &_wiringPiISR_callback_pin54; break;
222 case 55: func = &_wiringPiISR_callback_pin55; break;
223 case 56: func = &_wiringPiISR_callback_pin56; break;
224 case 57: func = &_wiringPiISR_callback_pin57; break;
225 case 58: func = &_wiringPiISR_callback_pin58; break;
226 case 59: func = &_wiringPiISR_callback_pin59; break;
227 case 60: func = &_wiringPiISR_callback_pin60; break;
228 case 61: func = &_wiringPiISR_callback_pin61; break;
229 case 62: func = &_wiringPiISR_callback_pin62; break;
230 case 63: func = &_wiringPiISR_callback_pin63; break;
231 }
232
233 // register our dedicated function in WiringPi
234 wiringPiISR(pin, mode, func);
235}
236
237%}
238
Phil Howard22041762014-07-18 11:48:01 +0000239extern int wiringPiFailure (int fatal, const char *message, ...) ;
240extern struct wiringPiNodeStruct *wiringPiFindNode (int pin) ;
241extern struct wiringPiNodeStruct *wiringPiNewNode (int pinBase, int numPins) ;
Philip Howard567ee002013-03-27 22:22:00 +0000242
Philip Howardfa09d182013-04-01 21:11:00 +0000243// Core wiringPi functions
Philip Howard567ee002013-03-27 22:22:00 +0000244extern int wiringPiSetup (void) ;
245extern int wiringPiSetupSys (void) ;
246extern int wiringPiSetupGpio (void) ;
Philip Howardfa09d182013-04-01 21:11:00 +0000247extern int wiringPiSetupPhys (void) ;
Philip Howard567ee002013-03-27 22:22:00 +0000248
Phil Howard22041762014-07-18 11:48:01 +0000249extern void pinModeAlt (int pin, int mode) ;
Philip Howardfa09d182013-04-01 21:11:00 +0000250extern void pinMode (int pin, int mode) ;
251extern void pullUpDnControl (int pin, int pud) ;
252extern int digitalRead (int pin) ;
253extern void digitalWrite (int pin, int value) ;
254extern void pwmWrite (int pin, int value) ;
255extern int analogRead (int pin) ;
256extern void analogWrite (int pin, int value) ;
257
258// On-Board Raspberry Pi hardware specific stuff
Philip Howard567ee002013-03-27 22:22:00 +0000259extern int piBoardRev (void) ;
Phil Howard22041762014-07-18 11:48:01 +0000260extern void piBoardId (int *model, int *rev, int *mem, int *maker, int *overVolted) ;
Philip Howard567ee002013-03-27 22:22:00 +0000261extern int wpiPinToGpio (int wpiPin) ;
Phil Howard22041762014-07-18 11:48:01 +0000262extern int physPinToGpio (int physPin) ;
Philip Howardfa09d182013-04-01 21:11:00 +0000263extern void setPadDrive (int group, int value) ;
264extern int getAlt (int pin) ;
Phil Howard22041762014-07-18 11:48:01 +0000265extern void pwmToneWrite (int pin, int freq) ;
Philip Howardfa09d182013-04-01 21:11:00 +0000266extern void digitalWriteByte (int value) ;
267extern void pwmSetMode (int mode) ;
268extern void pwmSetRange (unsigned int range) ;
269extern void pwmSetClock (int divisor) ;
270extern void gpioClockSet (int pin, int freq) ;
Philip Howard567ee002013-03-27 22:22:00 +0000271
272// Interrupts
Phil Howard22041762014-07-18 11:48:01 +0000273extern int waitForInterrupt (int pin, int mS) ;
White Moustache96d5dcd2016-02-13 14:16:40 +0000274
275// overlay normal function with our wrapper
276%rename("wiringPiISR") wiringPiISRWrapper (int pin, int mode, PyObject *PyFunc);
277static void wiringPiISRWrapper(int pin, int mode, PyObject *PyFunc);
278
279// note: native C function is not exported:
280//extern int wiringPiISR (int pin, int mode, void (*function)(void)) ;
Philip Howard567ee002013-03-27 22:22:00 +0000281
282// Threads
Phil Howard22041762014-07-18 11:48:01 +0000283extern int piThreadCreate (void *(*fn)(void *)) ;
284extern void piLock (int key) ;
285extern void piUnlock (int key) ;
Philip Howard567ee002013-03-27 22:22:00 +0000286
Philip Howardfa09d182013-04-01 21:11:00 +0000287// Schedulling priority
288
Phil Howard22041762014-07-18 11:48:01 +0000289extern int piHiPri (const int pri) ;
Philip Howardfa09d182013-04-01 21:11:00 +0000290
Phil Howard22041762014-07-18 11:48:01 +0000291// Delays and Timing
Philip Howard567ee002013-03-27 22:22:00 +0000292extern void delay (unsigned int howLong) ;
293extern void delayMicroseconds (unsigned int howLong) ;
294extern unsigned int millis (void) ;
295extern unsigned int micros (void) ;
296
Philip Howard6ae3e5b2013-05-21 22:48:41 +0100297// ds1302
298extern unsigned int ds1302rtcRead (const int reg) ;
299extern void ds1302rtcWrite (const int reg, const unsigned int data) ;
300extern unsigned int ds1302ramRead (const int addr) ;
301extern void ds1302ramWrite (const int addr, const unsigned int data) ;
302extern void ds1302clockRead (int clockData [8]) ;
303extern void ds1302clockWrite (const int clockData [8]) ;
304extern void ds1302trickleCharge (const int diodes, const int resistors) ;
305extern void ds1302setup (const int clockPin, const int dataPin, const int csPin) ;
306
307// Gertboard
308extern void gertboardAnalogWrite (const int chan, const int value) ;
309extern int gertboardAnalogRead (const int chan) ;
310extern int gertboardSPISetup (void) ;
311extern int gertboardAnalogSetup (const int pinBase) ;
312
Phil Howard22041762014-07-18 11:48:01 +0000313// LCD 128x64
Philip Howard6ae3e5b2013-05-21 22:48:41 +0100314extern void lcd128x64setOrigin (int x, int y) ;
315extern void lcd128x64setOrientation (int orientation) ;
316extern void lcd128x64orientCoordinates (int *x, int *y) ;
317extern void lcd128x64getScreenSize (int *x, int *y) ;
318extern void lcd128x64point (int x, int y, int colour) ;
319extern void lcd128x64line (int x0, int y0, int x1, int y1, int colour) ;
320extern void lcd128x64lineTo (int x, int y, int colour) ;
321extern void lcd128x64rectangle (int x1, int y1, int x2, int y2, int colour, int filled) ;
322extern void lcd128x64circle (int x, int y, int r, int colour, int filled) ;
323extern void lcd128x64ellipse (int cx, int cy, int xRadius, int yRadius, int colour, int filled) ;
324extern void lcd128x64putchar (int x, int y, int c, int bgCol, int fgCol) ;
325extern void lcd128x64puts (int x, int y, const char *str, int bgCol, int fgCol) ;
326extern void lcd128x64update (void) ;
327extern void lcd128x64clear (int colour) ;
328extern int lcd128x64setup (void) ;
329
Phil Howard22041762014-07-18 11:48:01 +0000330// LCD
331extern void lcdHome (const int fd) ;
332extern void lcdClear (const int fd) ;
333extern void lcdDisplay (const int fd, int state) ;
334extern void lcdCursor (const int fd, int state) ;
335extern void lcdCursorBlink (const int fd, int state) ;
336extern void lcdSendCommand (const int fd, unsigned char command) ;
337extern void lcdPosition (const int fd, int x, int y) ;
338extern void lcdCharDef (const int fd, int index, unsigned char data [8]) ;
339extern void lcdPutchar (const int fd, unsigned char data) ;
340extern void lcdPuts (const int fd, const char *string) ;
341extern void lcdPrintf (const int fd, const char *message, ...) ;
342extern int lcdInit (const int rows, const int cols, const int bits,
343 const int rs, const int strb,
344 const int d0, const int d1, const int d2, const int d3, const int d4,
345 const int d5, const int d6, const int d7) ;
346
347// PiFace
348extern int piFaceSetup (const int pinBase) ;
Philip Howard6ae3e5b2013-05-21 22:48:41 +0100349
Philip Howardd9fc85a2013-08-13 16:38:26 +0100350// PiGlow
351extern void piGlow1 (const int leg, const int ring, const int intensity) ;
352extern void piGlowLeg (const int leg, const int intensity) ;
353extern void piGlowRing (const int ring, const int intensity) ;
Philip Howard77a42442013-08-15 22:32:14 +0100354extern void piGlowSetup (int clear) ;
Philip Howard6ae3e5b2013-05-21 22:48:41 +0100355
Phil Howard22041762014-07-18 11:48:01 +0000356// NES
357extern int setupNesJoystick (int dPin, int cPin, int lPin) ;
358extern unsigned int readNesJoystick (int joystick) ;
359
360// Various IC setup functions
361extern int sr595Setup (const int pinBase, const int numPins, const int dataPin, const int clockPin, const int latchPin) ;
362extern int drcSetupSerial (const int pinBase, const int numPins, const char *device, const int baud) ;
363extern int max31855Setup (int pinBase, int spiChannel) ;
364extern int max5322Setup (int pinBase, int spiChannel) ;
365extern int mcp23008Setup (const int pinBase, const int i2cAddress) ;
366extern int mcp23016Setup (const int pinBase, const int i2cAddress) ;
367extern int mcp23017Setup (const int pinBase, const int i2cAddress) ;
368extern int mcp23s08Setup (const int pinBase, const int spiPort, const int devId) ;
369extern int mcp23s17Setup (int pinBase, int spiPort, int devId) ;
370extern int mcp3002Setup (int pinBase, int spiChannel) ;
371extern int mcp3004Setup (int pinBase, int spiChannel) ;
372extern int mcp3422Setup (int pinBase, int i2cAddress, int sampleRate, int gain) ;
373extern int mcp4802Setup (int pinBase, int spiChannel) ;
374extern int pcf8574Setup (const int pinBase, const int i2cAddress) ;
375extern int pcf8591Setup (const int pinBase, const int i2cAddress) ;
376extern int sn3218Setup (int pinBase) ;
377
378// Soft PWM
379extern int softPwmCreate (int pin, int value, int range) ;
380extern void softPwmWrite (int pin, int value) ;
381extern void softPwmStop (int pin) ;
382
383// Soft Servo
384extern void softServoWrite (int pin, int value) ;
385extern int softServoSetup (int p0, int p1, int p2, int p3, int p4, int p5, int p6, int p7) ;
386
387// Soft Tone
388extern int softToneCreate (int pin) ;
389extern void softToneStop (int pin) ;
390extern void softToneWrite (int pin, int freq) ;
391
392// SPI
Phil Howard962b0d02015-02-09 15:06:24 +0000393
394%typemap(in) (unsigned char *data, int len) {
395 $1 = (unsigned char *) PyString_AsString($input);
396 $2 = PyString_Size($input);
397};
398
399%typemap(argout) (unsigned char *data) {
400 $result = SWIG_Python_AppendOutput($result, PyString_FromStringAndSize((char *) $1, result));
401};
402
Phil Howard22041762014-07-18 11:48:01 +0000403int wiringPiSPIGetFd (int channel) ;
404int wiringPiSPIDataRW (int channel, unsigned char *data, int len) ;
405int wiringPiSPISetup (int channel, int speed) ;
406
407// I2C
408extern int wiringPiI2CRead (int fd) ;
409extern int wiringPiI2CReadReg8 (int fd, int reg) ;
410extern int wiringPiI2CReadReg16 (int fd, int reg) ;
411extern int wiringPiI2CWrite (int fd, int data) ;
412extern int wiringPiI2CWriteReg8 (int fd, int reg, int data) ;
413extern int wiringPiI2CWriteReg16 (int fd, int reg, int data) ;
414extern int wiringPiI2CSetupInterface (const char *device, int devId) ;
415extern int wiringPiI2CSetup (const int devId) ;
416
417// WiringSerial
418extern int serialOpen (const char *device, const int baud) ;
419extern void serialClose (const int fd) ;
420extern void serialFlush (const int fd) ;
421extern void serialPutchar (const int fd, const unsigned char c) ;
422extern void serialPuts (const int fd, const char *s) ;
423extern void serialPrintf (const int fd, const char *message, ...) ;
424extern int serialDataAvail (const int fd) ;
425extern int serialGetchar (const int fd) ;
426
427// Shift Register
428extern uint8_t shiftIn (uint8_t dPin, uint8_t cPin, uint8_t order) ;
429extern void shiftOut (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val) ;
430
Philip Howardfa09d182013-04-01 21:11:00 +0000431%include "wiringpi2-class.py"