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