Philip Howard | 2215ad3 | 2013-03-27 23:04:22 +0000 | [diff] [blame] | 1 | %module wiringpi2 |
Philip Howard | 567ee00 | 2013-03-27 22:22:00 +0000 | [diff] [blame] | 2 | |
| 3 | %{ |
Philip Howard | 6ae3e5b | 2013-05-21 22:48:41 +0100 | [diff] [blame] | 4 | #include "WiringPi/wiringPi/wiringPi.h" |
Philip Howard | 6ae3e5b | 2013-05-21 22:48:41 +0100 | [diff] [blame] | 5 | #include "WiringPi/wiringPi/wiringPiI2C.h" |
Phil Howard | 2204176 | 2014-07-18 11:48:01 +0000 | [diff] [blame] | 6 | #include "WiringPi/wiringPi/wiringPiSPI.h" |
Philip Howard | 6ae3e5b | 2013-05-21 22:48:41 +0100 | [diff] [blame] | 7 | #include "WiringPi/wiringPi/wiringSerial.h" |
| 8 | #include "WiringPi/wiringPi/wiringShift.h" |
Phil Howard | 2204176 | 2014-07-18 11:48:01 +0000 | [diff] [blame] | 9 | #include "WiringPi/wiringPi/drcSerial.h" |
Philip Howard | d9fc85a | 2013-08-13 16:38:26 +0100 | [diff] [blame] | 10 | #include "WiringPi/wiringPi/max31855.h" |
| 11 | #include "WiringPi/wiringPi/max5322.h" |
Philip Howard | 6ae3e5b | 2013-05-21 22:48:41 +0100 | [diff] [blame] | 12 | #include "WiringPi/wiringPi/mcp23008.h" |
Philip Howard | 6ae3e5b | 2013-05-21 22:48:41 +0100 | [diff] [blame] | 13 | #include "WiringPi/wiringPi/mcp23016.h" |
Phil Howard | 2204176 | 2014-07-18 11:48:01 +0000 | [diff] [blame] | 14 | #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 Howard | 6ae3e5b | 2013-05-21 22:48:41 +0100 | [diff] [blame] | 20 | #include "WiringPi/wiringPi/mcp3002.h" |
Philip Howard | d9fc85a | 2013-08-13 16:38:26 +0100 | [diff] [blame] | 21 | #include "WiringPi/wiringPi/mcp3004.h" |
Phil Howard | 2204176 | 2014-07-18 11:48:01 +0000 | [diff] [blame] | 22 | #include "WiringPi/wiringPi/mcp3422.h" |
| 23 | #include "WiringPi/wiringPi/mcp4802.h" |
Philip Howard | 6ae3e5b | 2013-05-21 22:48:41 +0100 | [diff] [blame] | 24 | #include "WiringPi/wiringPi/pcf8574.h" |
| 25 | #include "WiringPi/wiringPi/pcf8591.h" |
Phil Howard | 2204176 | 2014-07-18 11:48:01 +0000 | [diff] [blame] | 26 | #include "WiringPi/wiringPi/sn3218.h" |
Philip Howard | 2215ad3 | 2013-03-27 23:04:22 +0000 | [diff] [blame] | 27 | #include "WiringPi/wiringPi/softPwm.h" |
| 28 | #include "WiringPi/wiringPi/softServo.h" |
| 29 | #include "WiringPi/wiringPi/softTone.h" |
| 30 | #include "WiringPi/wiringPi/sr595.h" |
Phil Howard | 2204176 | 2014-07-18 11:48:01 +0000 | [diff] [blame] | 31 | #include "WiringPi/devLib/ds1302.h" |
| 32 | #include "WiringPi/devLib/font.h" |
Philip Howard | 6ae3e5b | 2013-05-21 22:48:41 +0100 | [diff] [blame] | 33 | #include "WiringPi/devLib/gertboard.h" |
| 34 | #include "WiringPi/devLib/lcd128x64.h" |
Philip Howard | 6ae3e5b | 2013-05-21 22:48:41 +0100 | [diff] [blame] | 35 | #include "WiringPi/devLib/lcd.h" |
| 36 | #include "WiringPi/devLib/maxdetect.h" |
| 37 | #include "WiringPi/devLib/piFace.h" |
Philip Howard | d9fc85a | 2013-08-13 16:38:26 +0100 | [diff] [blame] | 38 | #include "WiringPi/devLib/piGlow.h" |
Phil Howard | 2204176 | 2014-07-18 11:48:01 +0000 | [diff] [blame] | 39 | #include "WiringPi/devLib/piNes.h" |
Philip Howard | 567ee00 | 2013-03-27 22:22:00 +0000 | [diff] [blame] | 40 | %} |
| 41 | |
| 42 | %apply unsigned char { uint8_t }; |
Phil Howard | 2204176 | 2014-07-18 11:48:01 +0000 | [diff] [blame] | 43 | %typemap(in) (unsigned char *data, int len) { |
| 44 | $1 = (unsigned char *) PyString_AsString($input); |
| 45 | $2 = PyString_Size($input); |
| 46 | }; |
| 47 | |
White Moustache | 96d5dcd | 2016-02-13 14:16:40 +0000 | [diff] [blame] | 48 | // 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 |
| 60 | PyObject* event_callback[64] = {0,}; |
| 61 | |
| 62 | void _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 :( */ |
| 84 | void _wiringPiISR_callback_pin0(void) { _wiringPiISR_callback(0); } |
| 85 | void _wiringPiISR_callback_pin1(void) { _wiringPiISR_callback(1); } |
| 86 | void _wiringPiISR_callback_pin2(void) { _wiringPiISR_callback(2); } |
| 87 | void _wiringPiISR_callback_pin3(void) { _wiringPiISR_callback(3); } |
| 88 | void _wiringPiISR_callback_pin4(void) { _wiringPiISR_callback(4); } |
| 89 | void _wiringPiISR_callback_pin5(void) { _wiringPiISR_callback(5); } |
| 90 | void _wiringPiISR_callback_pin6(void) { _wiringPiISR_callback(6); } |
| 91 | void _wiringPiISR_callback_pin7(void) { _wiringPiISR_callback(7); } |
| 92 | void _wiringPiISR_callback_pin8(void) { _wiringPiISR_callback(8); } |
| 93 | void _wiringPiISR_callback_pin9(void) { _wiringPiISR_callback(9); } |
| 94 | void _wiringPiISR_callback_pin10(void) { _wiringPiISR_callback(10); } |
| 95 | void _wiringPiISR_callback_pin11(void) { _wiringPiISR_callback(11); } |
| 96 | void _wiringPiISR_callback_pin12(void) { _wiringPiISR_callback(12); } |
| 97 | void _wiringPiISR_callback_pin13(void) { _wiringPiISR_callback(13); } |
| 98 | void _wiringPiISR_callback_pin14(void) { _wiringPiISR_callback(14); } |
| 99 | void _wiringPiISR_callback_pin15(void) { _wiringPiISR_callback(15); } |
| 100 | void _wiringPiISR_callback_pin16(void) { _wiringPiISR_callback(16); } |
| 101 | void _wiringPiISR_callback_pin17(void) { _wiringPiISR_callback(17); } |
| 102 | void _wiringPiISR_callback_pin18(void) { _wiringPiISR_callback(18); } |
| 103 | void _wiringPiISR_callback_pin19(void) { _wiringPiISR_callback(19); } |
| 104 | void _wiringPiISR_callback_pin20(void) { _wiringPiISR_callback(20); } |
| 105 | void _wiringPiISR_callback_pin21(void) { _wiringPiISR_callback(21); } |
| 106 | void _wiringPiISR_callback_pin22(void) { _wiringPiISR_callback(22); } |
| 107 | void _wiringPiISR_callback_pin23(void) { _wiringPiISR_callback(23); } |
| 108 | void _wiringPiISR_callback_pin24(void) { _wiringPiISR_callback(24); } |
| 109 | void _wiringPiISR_callback_pin25(void) { _wiringPiISR_callback(25); } |
| 110 | void _wiringPiISR_callback_pin26(void) { _wiringPiISR_callback(26); } |
| 111 | void _wiringPiISR_callback_pin27(void) { _wiringPiISR_callback(27); } |
| 112 | void _wiringPiISR_callback_pin28(void) { _wiringPiISR_callback(28); } |
| 113 | void _wiringPiISR_callback_pin29(void) { _wiringPiISR_callback(29); } |
| 114 | void _wiringPiISR_callback_pin30(void) { _wiringPiISR_callback(30); } |
| 115 | void _wiringPiISR_callback_pin31(void) { _wiringPiISR_callback(31); } |
| 116 | void _wiringPiISR_callback_pin32(void) { _wiringPiISR_callback(32); } |
| 117 | void _wiringPiISR_callback_pin33(void) { _wiringPiISR_callback(33); } |
| 118 | void _wiringPiISR_callback_pin34(void) { _wiringPiISR_callback(34); } |
| 119 | void _wiringPiISR_callback_pin35(void) { _wiringPiISR_callback(35); } |
| 120 | void _wiringPiISR_callback_pin36(void) { _wiringPiISR_callback(36); } |
| 121 | void _wiringPiISR_callback_pin37(void) { _wiringPiISR_callback(37); } |
| 122 | void _wiringPiISR_callback_pin38(void) { _wiringPiISR_callback(38); } |
| 123 | void _wiringPiISR_callback_pin39(void) { _wiringPiISR_callback(39); } |
| 124 | void _wiringPiISR_callback_pin40(void) { _wiringPiISR_callback(40); } |
| 125 | void _wiringPiISR_callback_pin41(void) { _wiringPiISR_callback(41); } |
| 126 | void _wiringPiISR_callback_pin42(void) { _wiringPiISR_callback(42); } |
| 127 | void _wiringPiISR_callback_pin43(void) { _wiringPiISR_callback(43); } |
| 128 | void _wiringPiISR_callback_pin44(void) { _wiringPiISR_callback(44); } |
| 129 | void _wiringPiISR_callback_pin45(void) { _wiringPiISR_callback(45); } |
| 130 | void _wiringPiISR_callback_pin46(void) { _wiringPiISR_callback(46); } |
| 131 | void _wiringPiISR_callback_pin47(void) { _wiringPiISR_callback(47); } |
| 132 | void _wiringPiISR_callback_pin48(void) { _wiringPiISR_callback(48); } |
| 133 | void _wiringPiISR_callback_pin49(void) { _wiringPiISR_callback(49); } |
| 134 | void _wiringPiISR_callback_pin50(void) { _wiringPiISR_callback(50); } |
| 135 | void _wiringPiISR_callback_pin51(void) { _wiringPiISR_callback(51); } |
| 136 | void _wiringPiISR_callback_pin52(void) { _wiringPiISR_callback(52); } |
| 137 | void _wiringPiISR_callback_pin53(void) { _wiringPiISR_callback(53); } |
| 138 | void _wiringPiISR_callback_pin54(void) { _wiringPiISR_callback(54); } |
| 139 | void _wiringPiISR_callback_pin55(void) { _wiringPiISR_callback(55); } |
| 140 | void _wiringPiISR_callback_pin56(void) { _wiringPiISR_callback(56); } |
| 141 | void _wiringPiISR_callback_pin57(void) { _wiringPiISR_callback(57); } |
| 142 | void _wiringPiISR_callback_pin58(void) { _wiringPiISR_callback(58); } |
| 143 | void _wiringPiISR_callback_pin59(void) { _wiringPiISR_callback(59); } |
| 144 | void _wiringPiISR_callback_pin60(void) { _wiringPiISR_callback(60); } |
| 145 | void _wiringPiISR_callback_pin61(void) { _wiringPiISR_callback(61); } |
| 146 | void _wiringPiISR_callback_pin62(void) { _wiringPiISR_callback(62); } |
| 147 | void _wiringPiISR_callback_pin63(void) { _wiringPiISR_callback(63); } |
| 148 | |
| 149 | /* This function adds a new Python function object as a callback object */ |
| 150 | |
| 151 | static 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 Howard | 0642335 | 2016-02-27 17:59:29 +0000 | [diff] [blame^] | 237 | extern int wiringPiFailure (int fatal, const char *message, ...) ; |
| 238 | extern struct wiringPiNodeStruct *wiringPiFindNode (int pin) ; |
| 239 | extern struct wiringPiNodeStruct *wiringPiNewNode (int pinBase, int numPins) ; |
| 240 | |
| 241 | // Core wiringPi functions |
| 242 | extern int wiringPiSetup (void) ; |
| 243 | extern int wiringPiSetupSys (void) ; |
| 244 | extern int wiringPiSetupGpio (void) ; |
| 245 | extern int wiringPiSetupPhys (void) ; |
| 246 | |
| 247 | extern void pinModeAlt (int pin, int mode) ; |
| 248 | extern void pinMode (int pin, int mode) ; |
| 249 | extern void pullUpDnControl (int pin, int pud) ; |
| 250 | extern int digitalRead (int pin) ; |
| 251 | extern void digitalWrite (int pin, int value) ; |
| 252 | extern void pwmWrite (int pin, int value) ; |
| 253 | extern int analogRead (int pin) ; |
| 254 | extern void analogWrite (int pin, int value) ; |
| 255 | |
| 256 | // On-Board Raspberry Pi hardware specific stuff |
| 257 | extern int piBoardRev (void) ; |
| 258 | extern void piBoardId (int *model, int *rev, int *mem, int *maker, int *overVolted) ; |
| 259 | extern int wpiPinToGpio (int wpiPin) ; |
| 260 | extern int physPinToGpio (int physPin) ; |
| 261 | extern void setPadDrive (int group, int value) ; |
| 262 | extern int getAlt (int pin) ; |
| 263 | extern void pwmToneWrite (int pin, int freq) ; |
| 264 | extern void digitalWriteByte (int value) ; |
| 265 | extern void pwmSetMode (int mode) ; |
| 266 | extern void pwmSetRange (unsigned int range) ; |
| 267 | extern void pwmSetClock (int divisor) ; |
| 268 | extern void gpioClockSet (int pin, int freq) ; |
Philip Howard | 8a61def | 2016-02-27 17:57:13 +0000 | [diff] [blame] | 269 | |
Philip Howard | 567ee00 | 2013-03-27 22:22:00 +0000 | [diff] [blame] | 270 | // Interrupts |
Philip Howard | 0642335 | 2016-02-27 17:59:29 +0000 | [diff] [blame^] | 271 | extern int waitForInterrupt (int pin, int mS) ; |
| 272 | |
White Moustache | 96d5dcd | 2016-02-13 14:16:40 +0000 | [diff] [blame] | 273 | // overlay normal function with our wrapper |
| 274 | %rename("wiringPiISR") wiringPiISRWrapper (int pin, int mode, PyObject *PyFunc); |
| 275 | static void wiringPiISRWrapper(int pin, int mode, PyObject *PyFunc); |
| 276 | |
Philip Howard | 0642335 | 2016-02-27 17:59:29 +0000 | [diff] [blame^] | 277 | // note: native C function is not exported: |
| 278 | //extern int wiringPiISR (int pin, int mode, void (*function)(void)) ; |
| 279 | |
| 280 | // Threads |
| 281 | extern int piThreadCreate (void *(*fn)(void *)) ; |
| 282 | extern void piLock (int key) ; |
| 283 | extern void piUnlock (int key) ; |
| 284 | |
| 285 | // Schedulling priority |
| 286 | |
| 287 | extern int piHiPri (const int pri) ; |
| 288 | |
| 289 | // Delays and Timing |
| 290 | extern void delay (unsigned int howLong) ; |
| 291 | extern void delayMicroseconds (unsigned int howLong) ; |
| 292 | extern unsigned int millis (void) ; |
| 293 | extern unsigned int micros (void) ; |
| 294 | |
| 295 | // ds1302 |
| 296 | extern unsigned int ds1302rtcRead (const int reg) ; |
| 297 | extern void ds1302rtcWrite (const int reg, const unsigned int data) ; |
| 298 | extern unsigned int ds1302ramRead (const int addr) ; |
| 299 | extern void ds1302ramWrite (const int addr, const unsigned int data) ; |
| 300 | extern void ds1302clockRead (int clockData [8]) ; |
| 301 | extern void ds1302clockWrite (const int clockData [8]) ; |
| 302 | extern void ds1302trickleCharge (const int diodes, const int resistors) ; |
| 303 | extern void ds1302setup (const int clockPin, const int dataPin, const int csPin) ; |
| 304 | |
| 305 | // Gertboard |
| 306 | extern void gertboardAnalogWrite (const int chan, const int value) ; |
| 307 | extern int gertboardAnalogRead (const int chan) ; |
| 308 | extern int gertboardSPISetup (void) ; |
| 309 | extern int gertboardAnalogSetup (const int pinBase) ; |
| 310 | |
| 311 | // LCD 128x64 |
| 312 | extern void lcd128x64setOrigin (int x, int y) ; |
| 313 | extern void lcd128x64setOrientation (int orientation) ; |
| 314 | extern void lcd128x64orientCoordinates (int *x, int *y) ; |
| 315 | extern void lcd128x64getScreenSize (int *x, int *y) ; |
| 316 | extern void lcd128x64point (int x, int y, int colour) ; |
| 317 | extern void lcd128x64line (int x0, int y0, int x1, int y1, int colour) ; |
| 318 | extern void lcd128x64lineTo (int x, int y, int colour) ; |
| 319 | extern void lcd128x64rectangle (int x1, int y1, int x2, int y2, int colour, int filled) ; |
| 320 | extern void lcd128x64circle (int x, int y, int r, int colour, int filled) ; |
| 321 | extern void lcd128x64ellipse (int cx, int cy, int xRadius, int yRadius, int colour, int filled) ; |
| 322 | extern void lcd128x64putchar (int x, int y, int c, int bgCol, int fgCol) ; |
| 323 | extern void lcd128x64puts (int x, int y, const char *str, int bgCol, int fgCol) ; |
| 324 | extern void lcd128x64update (void) ; |
| 325 | extern void lcd128x64clear (int colour) ; |
| 326 | extern int lcd128x64setup (void) ; |
| 327 | |
| 328 | // LCD |
| 329 | extern void lcdHome (const int fd) ; |
| 330 | extern void lcdClear (const int fd) ; |
| 331 | extern void lcdDisplay (const int fd, int state) ; |
| 332 | extern void lcdCursor (const int fd, int state) ; |
| 333 | extern void lcdCursorBlink (const int fd, int state) ; |
| 334 | extern void lcdSendCommand (const int fd, unsigned char command) ; |
| 335 | extern void lcdPosition (const int fd, int x, int y) ; |
| 336 | extern void lcdCharDef (const int fd, int index, unsigned char data [8]) ; |
| 337 | extern void lcdPutchar (const int fd, unsigned char data) ; |
| 338 | extern void lcdPuts (const int fd, const char *string) ; |
| 339 | extern void lcdPrintf (const int fd, const char *message, ...) ; |
| 340 | extern 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 |
| 346 | extern int piFaceSetup (const int pinBase) ; |
| 347 | |
| 348 | // PiGlow |
| 349 | extern void piGlow1 (const int leg, const int ring, const int intensity) ; |
| 350 | extern void piGlowLeg (const int leg, const int intensity) ; |
| 351 | extern void piGlowRing (const int ring, const int intensity) ; |
| 352 | extern void piGlowSetup (int clear) ; |
| 353 | |
| 354 | // NES |
| 355 | extern int setupNesJoystick (int dPin, int cPin, int lPin) ; |
| 356 | extern unsigned int readNesJoystick (int joystick) ; |
| 357 | |
| 358 | // Various IC setup functions |
| 359 | extern int sr595Setup (const int pinBase, const int numPins, const int dataPin, const int clockPin, const int latchPin) ; |
| 360 | extern int drcSetupSerial (const int pinBase, const int numPins, const char *device, const int baud) ; |
| 361 | extern int max31855Setup (int pinBase, int spiChannel) ; |
| 362 | extern int max5322Setup (int pinBase, int spiChannel) ; |
| 363 | extern int mcp23008Setup (const int pinBase, const int i2cAddress) ; |
| 364 | extern int mcp23016Setup (const int pinBase, const int i2cAddress) ; |
| 365 | extern int mcp23017Setup (const int pinBase, const int i2cAddress) ; |
| 366 | extern int mcp23s08Setup (const int pinBase, const int spiPort, const int devId) ; |
| 367 | extern int mcp23s17Setup (int pinBase, int spiPort, int devId) ; |
| 368 | extern int mcp3002Setup (int pinBase, int spiChannel) ; |
| 369 | extern int mcp3004Setup (int pinBase, int spiChannel) ; |
| 370 | extern int mcp3422Setup (int pinBase, int i2cAddress, int sampleRate, int gain) ; |
| 371 | extern int mcp4802Setup (int pinBase, int spiChannel) ; |
| 372 | extern int pcf8574Setup (const int pinBase, const int i2cAddress) ; |
| 373 | extern int pcf8591Setup (const int pinBase, const int i2cAddress) ; |
| 374 | extern int sn3218Setup (int pinBase) ; |
| 375 | |
| 376 | // Soft PWM |
| 377 | extern int softPwmCreate (int pin, int value, int range) ; |
| 378 | extern void softPwmWrite (int pin, int value) ; |
| 379 | extern void softPwmStop (int pin) ; |
| 380 | |
| 381 | // Soft Servo |
| 382 | extern void softServoWrite (int pin, int value) ; |
| 383 | extern int softServoSetup (int p0, int p1, int p2, int p3, int p4, int p5, int p6, int p7) ; |
| 384 | |
| 385 | // Soft Tone |
| 386 | extern int softToneCreate (int pin) ; |
| 387 | extern void softToneStop (int pin) ; |
| 388 | extern 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 | |
| 401 | int wiringPiSPIGetFd (int channel) ; |
| 402 | int wiringPiSPIDataRW (int channel, unsigned char *data, int len) ; |
| 403 | int wiringPiSPISetup (int channel, int speed) ; |
| 404 | |
| 405 | // I2C |
| 406 | extern int wiringPiI2CRead (int fd) ; |
| 407 | extern int wiringPiI2CReadReg8 (int fd, int reg) ; |
| 408 | extern int wiringPiI2CReadReg16 (int fd, int reg) ; |
| 409 | extern int wiringPiI2CWrite (int fd, int data) ; |
| 410 | extern int wiringPiI2CWriteReg8 (int fd, int reg, int data) ; |
| 411 | extern int wiringPiI2CWriteReg16 (int fd, int reg, int data) ; |
| 412 | extern int wiringPiI2CSetupInterface (const char *device, int devId) ; |
| 413 | extern int wiringPiI2CSetup (const int devId) ; |
| 414 | |
| 415 | // WiringSerial |
| 416 | extern int serialOpen (const char *device, const int baud) ; |
| 417 | extern void serialClose (const int fd) ; |
| 418 | extern void serialFlush (const int fd) ; |
| 419 | extern void serialPutchar (const int fd, const unsigned char c) ; |
| 420 | extern void serialPuts (const int fd, const char *s) ; |
| 421 | extern void serialPrintf (const int fd, const char *message, ...) ; |
| 422 | extern int serialDataAvail (const int fd) ; |
| 423 | extern int serialGetchar (const int fd) ; |
| 424 | |
| 425 | // Shift Register |
| 426 | extern uint8_t shiftIn (uint8_t dPin, uint8_t cPin, uint8_t order) ; |
| 427 | extern void shiftOut (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val) ; |
| 428 | |
Philip Howard | 4552e6c | 2016-02-27 17:31:59 +0000 | [diff] [blame] | 429 | %include "constants.py" |
Philip Howard | fa09d18 | 2013-04-01 21:11:00 +0000 | [diff] [blame] | 430 | %include "wiringpi2-class.py" |