Generated bindings, swig3.0
diff --git a/Makefile b/Makefile
index 8808aac..2afb13a 100644
--- a/Makefile
+++ b/Makefile
@@ -2,8 +2,7 @@
python setup.py build
bindings:
- grep -PhR "(?s)extern [^\"](.*);" WiringPi/ > bindings.i
- swig2.0 -python wiringpi.i
+ swig3.0 -python wiringpi.i
install:
sudo python setup.py install
diff --git a/bindings.i b/bindings.i
new file mode 100644
index 0000000..a604ff1
--- /dev/null
+++ b/bindings.i
@@ -0,0 +1,211 @@
+
+// Header file WiringPi/wiringPi/wiringPi.h
+extern int wiringPiFailure (int fatal, const char *message, ...) ;
+extern struct wiringPiNodeStruct *wiringPiFindNode (int pin) ;
+extern struct wiringPiNodeStruct *wiringPiNewNode (int pinBase, int numPins) ;
+extern int wiringPiSetup (void) ;
+extern int wiringPiSetupSys (void) ;
+extern int wiringPiSetupGpio (void) ;
+extern int wiringPiSetupPhys (void) ;
+extern void pinModeAlt (int pin, int mode) ;
+extern void pinMode (int pin, int mode) ;
+extern void pullUpDnControl (int pin, int pud) ;
+extern int digitalRead (int pin) ;
+extern void digitalWrite (int pin, int value) ;
+extern void pwmWrite (int pin, int value) ;
+extern int analogRead (int pin) ;
+extern void analogWrite (int pin, int value) ;
+extern int wiringPiSetupPiFace (void) ;
+extern int wiringPiSetupPiFaceForGpioProg (void) ; // Don't use this - for gpio program only
+extern int piBoardRev (void) ;
+extern void piBoardId (int *model, int *rev, int *mem, int *maker, int *overVolted) ;
+extern int wpiPinToGpio (int wpiPin) ;
+extern int physPinToGpio (int physPin) ;
+extern void setPadDrive (int group, int value) ;
+extern int getAlt (int pin) ;
+extern void pwmToneWrite (int pin, int freq) ;
+extern void digitalWriteByte (int value) ;
+extern void pwmSetMode (int mode) ;
+extern void pwmSetRange (unsigned int range) ;
+extern void pwmSetClock (int divisor) ;
+extern void gpioClockSet (int pin, int freq) ;
+extern int waitForInterrupt (int pin, int mS) ;
+extern int piThreadCreate (void *(*fn)(void *)) ;
+extern void piLock (int key) ;
+extern void piUnlock (int key) ;
+extern int piHiPri (const int pri) ;
+extern void delay (unsigned int howLong) ;
+extern void delayMicroseconds (unsigned int howLong) ;
+extern unsigned int millis (void) ;
+extern unsigned int micros (void) ;
+
+// Header file WiringPi/wiringPi/wiringPiI2C.h
+extern int wiringPiI2CRead (int fd) ;
+extern int wiringPiI2CReadReg8 (int fd, int reg) ;
+extern int wiringPiI2CReadReg16 (int fd, int reg) ;
+extern int wiringPiI2CWrite (int fd, int data) ;
+extern int wiringPiI2CWriteReg8 (int fd, int reg, int data) ;
+extern int wiringPiI2CWriteReg16 (int fd, int reg, int data) ;
+extern int wiringPiI2CSetupInterface (const char *device, int devId) ;
+extern int wiringPiI2CSetup (const int devId) ;
+
+// Header file WiringPi/wiringPi/wiringPiSPI.h
+int wiringPiSPIGetFd (int channel) ;
+int wiringPiSPIDataRW (int channel, unsigned char *data, int len) ;
+int wiringPiSPISetupMode (int channel, int speed, int mode) ;
+int wiringPiSPISetup (int channel, int speed) ;
+
+// Header file WiringPi/wiringPi/wiringSerial.h
+extern int serialOpen (const char *device, const int baud) ;
+extern void serialClose (const int fd) ;
+extern void serialFlush (const int fd) ;
+extern void serialPutchar (const int fd, const unsigned char c) ;
+extern void serialPuts (const int fd, const char *s) ;
+extern void serialPrintf (const int fd, const char *message, ...) ;
+extern int serialDataAvail (const int fd) ;
+extern int serialGetchar (const int fd) ;
+
+// Header file WiringPi/wiringPi/wiringShift.h
+extern uint8_t shiftIn (uint8_t dPin, uint8_t cPin, uint8_t order) ;
+extern void shiftOut (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val) ;
+
+// Header file WiringPi/wiringPi/wpiExtensions.h
+extern int loadWPiExtension (char *progName, char *extensionData, int verbose) ;
+
+// Header file WiringPi/wiringPi/drcSerial.h
+extern int drcSetupSerial (const int pinBase, const int numPins, const char *device, const int baud) ;
+
+// Header file WiringPi/wiringPi/max31855.h
+extern int max31855Setup (int pinBase, int spiChannel) ;
+
+// Header file WiringPi/wiringPi/max5322.h
+extern int max5322Setup (int pinBase, int spiChannel) ;
+
+// Header file WiringPi/wiringPi/mcp23008.h
+extern int mcp23008Setup (const int pinBase, const int i2cAddress) ;
+
+// Header file WiringPi/wiringPi/mcp23016.h
+extern int mcp23016Setup (const int pinBase, const int i2cAddress) ;
+
+// Header file WiringPi/wiringPi/mcp23016reg.h
+
+// Header file WiringPi/wiringPi/mcp23017.h
+extern int mcp23017Setup (const int pinBase, const int i2cAddress) ;
+
+// Header file WiringPi/wiringPi/mcp23s08.h
+extern int mcp23s08Setup (const int pinBase, const int spiPort, const int devId) ;
+
+// Header file WiringPi/wiringPi/mcp23s17.h
+extern int mcp23s17Setup (int pinBase, int spiPort, int devId) ;
+
+// Header file WiringPi/wiringPi/mcp23x0817.h
+
+// Header file WiringPi/wiringPi/mcp23x08.h
+
+// Header file WiringPi/wiringPi/mcp3002.h
+extern int mcp3002Setup (int pinBase, int spiChannel) ;
+
+// Header file WiringPi/wiringPi/mcp3004.h
+extern int mcp3004Setup (int pinBase, int spiChannel) ;
+
+// Header file WiringPi/wiringPi/mcp3422.h
+extern int mcp3422Setup (int pinBase, int i2cAddress, int sampleRate, int gain) ;
+
+// Header file WiringPi/wiringPi/mcp4802.h
+extern int mcp4802Setup (int pinBase, int spiChannel) ;
+
+// Header file WiringPi/wiringPi/pcf8574.h
+extern int pcf8574Setup (const int pinBase, const int i2cAddress) ;
+
+// Header file WiringPi/wiringPi/pcf8591.h
+extern int pcf8591Setup (const int pinBase, const int i2cAddress) ;
+
+// Header file WiringPi/wiringPi/sn3218.h
+extern int sn3218Setup (int pinBase) ;
+
+// Header file WiringPi/wiringPi/softPwm.h
+extern int softPwmCreate (int pin, int value, int range) ;
+extern void softPwmWrite (int pin, int value) ;
+extern void softPwmStop (int pin) ;
+
+// Header file WiringPi/wiringPi/softServo.h
+extern void softServoWrite (int pin, int value) ;
+extern int softServoSetup (int p0, int p1, int p2, int p3, int p4, int p5, int p6, int p7) ;
+
+// Header file WiringPi/wiringPi/softTone.h
+extern int softToneCreate (int pin) ;
+extern void softToneStop (int pin) ;
+extern void softToneWrite (int pin, int freq) ;
+
+// Header file WiringPi/wiringPi/sr595.h
+extern int sr595Setup (const int pinBase, const int numPins,
+ const int dataPin, const int clockPin, const int latchPin) ;
+
+// Header file WiringPi/devLib/ds1302.h
+extern unsigned int ds1302rtcRead (const int reg) ;
+extern void ds1302rtcWrite (const int reg, const unsigned int data) ;
+extern unsigned int ds1302ramRead (const int addr) ;
+extern void ds1302ramWrite (const int addr, const unsigned int data) ;
+extern void ds1302clockRead (int clockData [8]) ;
+extern void ds1302clockWrite (const int clockData [8]) ;
+extern void ds1302trickleCharge (const int diodes, const int resistors) ;
+extern void ds1302setup (const int clockPin, const int dataPin, const int csPin) ;
+
+// Header file WiringPi/devLib/font.h
+
+// Header file WiringPi/devLib/gertboard.h
+extern void gertboardAnalogWrite (const int chan, const int value) ;
+extern int gertboardAnalogRead (const int chan) ;
+extern int gertboardSPISetup (void) ;
+extern int gertboardAnalogSetup (const int pinBase) ;
+
+// Header file WiringPi/devLib/lcd128x64.h
+extern void lcd128x64setOrigin (int x, int y) ;
+extern void lcd128x64setOrientation (int orientation) ;
+extern void lcd128x64orientCoordinates (int *x, int *y) ;
+extern void lcd128x64getScreenSize (int *x, int *y) ;
+extern void lcd128x64point (int x, int y, int colour) ;
+extern void lcd128x64line (int x0, int y0, int x1, int y1, int colour) ;
+extern void lcd128x64lineTo (int x, int y, int colour) ;
+extern void lcd128x64rectangle (int x1, int y1, int x2, int y2, int colour, int filled) ;
+extern void lcd128x64circle (int x, int y, int r, int colour, int filled) ;
+extern void lcd128x64ellipse (int cx, int cy, int xRadius, int yRadius, int colour, int filled) ;
+extern void lcd128x64putchar (int x, int y, int c, int bgCol, int fgCol) ;
+extern void lcd128x64puts (int x, int y, const char *str, int bgCol, int fgCol) ;
+extern void lcd128x64update (void) ;
+extern void lcd128x64clear (int colour) ;
+extern int lcd128x64setup (void) ;
+
+// Header file WiringPi/devLib/lcd.h
+extern void lcdHome (const int fd) ;
+extern void lcdClear (const int fd) ;
+extern void lcdDisplay (const int fd, int state) ;
+extern void lcdCursor (const int fd, int state) ;
+extern void lcdCursorBlink (const int fd, int state) ;
+extern void lcdSendCommand (const int fd, unsigned char command) ;
+extern void lcdPosition (const int fd, int x, int y) ;
+extern void lcdCharDef (const int fd, int index, unsigned char data [8]) ;
+extern void lcdPutchar (const int fd, unsigned char data) ;
+extern void lcdPuts (const int fd, const char *string) ;
+extern void lcdPrintf (const int fd, const char *message, ...) ;
+extern int lcdInit (const int rows, const int cols, const int bits,
+ const int rs, const int strb,
+ const int d0, const int d1, const int d2, const int d3, const int d4,
+ const int d5, const int d6, const int d7) ;
+
+// Header file WiringPi/devLib/maxdetect.h
+int maxDetectRead (const int pin, unsigned char buffer [4]) ;
+int readRHT03 (const int pin, int *temp, int *rh) ;
+
+// Header file WiringPi/devLib/piFace.h
+extern int piFaceSetup (const int pinBase) ;
+
+// Header file WiringPi/devLib/piGlow.h
+extern void piGlow1 (const int leg, const int ring, const int intensity) ;
+extern void piGlowLeg (const int leg, const int intensity) ;
+extern void piGlowRing (const int ring, const int intensity) ;
+extern void piGlowSetup (int clear) ;
+
+// Header file WiringPi/devLib/piNes.h
+extern int setupNesJoystick (int dPin, int cPin, int lPin) ;
+extern unsigned int readNesJoystick (int joystick) ;
diff --git a/generate-bindings.py b/generate-bindings.py
new file mode 100644
index 0000000..31fad85
--- /dev/null
+++ b/generate-bindings.py
@@ -0,0 +1,67 @@
+HEADERS = [
+"WiringPi/wiringPi/wiringPi.h",
+"WiringPi/wiringPi/wiringPiI2C.h",
+"WiringPi/wiringPi/wiringPiSPI.h",
+"WiringPi/wiringPi/wiringSerial.h",
+"WiringPi/wiringPi/wiringShift.h",
+"WiringPi/wiringPi/wpiExtensions.h",
+
+"WiringPi/wiringPi/drcSerial.h",
+"WiringPi/wiringPi/max31855.h",
+"WiringPi/wiringPi/max5322.h",
+"WiringPi/wiringPi/mcp23008.h",
+"WiringPi/wiringPi/mcp23016.h",
+"WiringPi/wiringPi/mcp23016reg.h",
+"WiringPi/wiringPi/mcp23017.h",
+"WiringPi/wiringPi/mcp23s08.h",
+"WiringPi/wiringPi/mcp23s17.h",
+"WiringPi/wiringPi/mcp23x0817.h",
+"WiringPi/wiringPi/mcp23x08.h",
+"WiringPi/wiringPi/mcp3002.h",
+"WiringPi/wiringPi/mcp3004.h",
+"WiringPi/wiringPi/mcp3422.h",
+"WiringPi/wiringPi/mcp4802.h",
+"WiringPi/wiringPi/pcf8574.h",
+"WiringPi/wiringPi/pcf8591.h",
+"WiringPi/wiringPi/sn3218.h",
+"WiringPi/wiringPi/softPwm.h",
+"WiringPi/wiringPi/softServo.h",
+"WiringPi/wiringPi/softTone.h",
+"WiringPi/wiringPi/sr595.h",
+
+"WiringPi/devLib/ds1302.h",
+"WiringPi/devLib/font.h",
+"WiringPi/devLib/gertboard.h",
+"WiringPi/devLib/lcd128x64.h",
+"WiringPi/devLib/lcd.h",
+"WiringPi/devLib/maxdetect.h",
+"WiringPi/devLib/piFace.h",
+"WiringPi/devLib/piGlow.h",
+"WiringPi/devLib/piNes.h"
+]
+def is_c_decl(line):
+ if "wiringPiISR" in line:
+ return False
+ for prefix in ['extern','void','int','uint8_t']:
+ if line.startswith(prefix):
+ return True
+
+for file in HEADERS:
+ print("\n// Header file {}".format(file))
+ h = open(file).read().split('\n')
+ extern = False
+ cont = False
+ if 'extern "C" {' not in h:
+ extern = True
+ for line in h:
+ line = line.strip()
+ if cont:
+ print("\t{}".format(line))
+ cont = ";" not in line
+ continue
+ if line.startswith('extern "C"'):
+ extern = True
+ continue
+ if is_c_decl(line) and extern:
+ print(line)
+ cont = ";" not in line
diff --git a/wiringpi.i b/wiringpi.i
index 5d3f5b8..3580b3d 100644
--- a/wiringpi.i
+++ b/wiringpi.i
@@ -234,160 +234,10 @@
%}
-extern int wiringPiFailure (int fatal, const char *message, ...) ;
-extern struct wiringPiNodeStruct *wiringPiFindNode (int pin) ;
-extern struct wiringPiNodeStruct *wiringPiNewNode (int pinBase, int numPins) ;
-
-// Core wiringPi functions
-extern int wiringPiSetup (void) ;
-extern int wiringPiSetupSys (void) ;
-extern int wiringPiSetupGpio (void) ;
-extern int wiringPiSetupPhys (void) ;
-
-extern void pinModeAlt (int pin, int mode) ;
-extern void pinMode (int pin, int mode) ;
-extern void pullUpDnControl (int pin, int pud) ;
-extern int digitalRead (int pin) ;
-extern void digitalWrite (int pin, int value) ;
-extern void pwmWrite (int pin, int value) ;
-extern int analogRead (int pin) ;
-extern void analogWrite (int pin, int value) ;
-
-// On-Board Raspberry Pi hardware specific stuff
-extern int piBoardRev (void) ;
-extern void piBoardId (int *model, int *rev, int *mem, int *maker, int *overVolted) ;
-extern int wpiPinToGpio (int wpiPin) ;
-extern int physPinToGpio (int physPin) ;
-extern void setPadDrive (int group, int value) ;
-extern int getAlt (int pin) ;
-extern void pwmToneWrite (int pin, int freq) ;
-extern void digitalWriteByte (int value) ;
-extern void pwmSetMode (int mode) ;
-extern void pwmSetRange (unsigned int range) ;
-extern void pwmSetClock (int divisor) ;
-extern void gpioClockSet (int pin, int freq) ;
-
-// Interrupts
-extern int waitForInterrupt (int pin, int mS) ;
-
// overlay normal function with our wrapper
%rename("wiringPiISR") wiringPiISRWrapper (int pin, int mode, PyObject *PyFunc);
static void wiringPiISRWrapper(int pin, int mode, PyObject *PyFunc);
-// note: native C function is not exported:
-//extern int wiringPiISR (int pin, int mode, void (*function)(void)) ;
-
-// Threads
-extern int piThreadCreate (void *(*fn)(void *)) ;
-extern void piLock (int key) ;
-extern void piUnlock (int key) ;
-
-// Schedulling priority
-
-extern int piHiPri (const int pri) ;
-
-// Delays and Timing
-extern void delay (unsigned int howLong) ;
-extern void delayMicroseconds (unsigned int howLong) ;
-extern unsigned int millis (void) ;
-extern unsigned int micros (void) ;
-
-// ds1302
-extern unsigned int ds1302rtcRead (const int reg) ;
-extern void ds1302rtcWrite (const int reg, const unsigned int data) ;
-extern unsigned int ds1302ramRead (const int addr) ;
-extern void ds1302ramWrite (const int addr, const unsigned int data) ;
-extern void ds1302clockRead (int clockData [8]) ;
-extern void ds1302clockWrite (const int clockData [8]) ;
-extern void ds1302trickleCharge (const int diodes, const int resistors) ;
-extern void ds1302setup (const int clockPin, const int dataPin, const int csPin) ;
-
-// Gertboard
-extern void gertboardAnalogWrite (const int chan, const int value) ;
-extern int gertboardAnalogRead (const int chan) ;
-extern int gertboardSPISetup (void) ;
-extern int gertboardAnalogSetup (const int pinBase) ;
-
-// LCD 128x64
-extern void lcd128x64setOrigin (int x, int y) ;
-extern void lcd128x64setOrientation (int orientation) ;
-extern void lcd128x64orientCoordinates (int *x, int *y) ;
-extern void lcd128x64getScreenSize (int *x, int *y) ;
-extern void lcd128x64point (int x, int y, int colour) ;
-extern void lcd128x64line (int x0, int y0, int x1, int y1, int colour) ;
-extern void lcd128x64lineTo (int x, int y, int colour) ;
-extern void lcd128x64rectangle (int x1, int y1, int x2, int y2, int colour, int filled) ;
-extern void lcd128x64circle (int x, int y, int r, int colour, int filled) ;
-extern void lcd128x64ellipse (int cx, int cy, int xRadius, int yRadius, int colour, int filled) ;
-extern void lcd128x64putchar (int x, int y, int c, int bgCol, int fgCol) ;
-extern void lcd128x64puts (int x, int y, const char *str, int bgCol, int fgCol) ;
-extern void lcd128x64update (void) ;
-extern void lcd128x64clear (int colour) ;
-extern int lcd128x64setup (void) ;
-
-// LCD
-extern void lcdHome (const int fd) ;
-extern void lcdClear (const int fd) ;
-extern void lcdDisplay (const int fd, int state) ;
-extern void lcdCursor (const int fd, int state) ;
-extern void lcdCursorBlink (const int fd, int state) ;
-extern void lcdSendCommand (const int fd, unsigned char command) ;
-extern void lcdPosition (const int fd, int x, int y) ;
-extern void lcdCharDef (const int fd, int index, unsigned char data [8]) ;
-extern void lcdPutchar (const int fd, unsigned char data) ;
-extern void lcdPuts (const int fd, const char *string) ;
-extern void lcdPrintf (const int fd, const char *message, ...) ;
-extern int lcdInit (const int rows, const int cols, const int bits,
- const int rs, const int strb,
- const int d0, const int d1, const int d2, const int d3, const int d4,
- const int d5, const int d6, const int d7) ;
-
-// PiFace
-extern int piFaceSetup (const int pinBase) ;
-
-// PiGlow
-extern void piGlow1 (const int leg, const int ring, const int intensity) ;
-extern void piGlowLeg (const int leg, const int intensity) ;
-extern void piGlowRing (const int ring, const int intensity) ;
-extern void piGlowSetup (int clear) ;
-
-// NES
-extern int setupNesJoystick (int dPin, int cPin, int lPin) ;
-extern unsigned int readNesJoystick (int joystick) ;
-
-// Various IC setup functions
-extern int sr595Setup (const int pinBase, const int numPins, const int dataPin, const int clockPin, const int latchPin) ;
-extern int drcSetupSerial (const int pinBase, const int numPins, const char *device, const int baud) ;
-extern int max31855Setup (int pinBase, int spiChannel) ;
-extern int max5322Setup (int pinBase, int spiChannel) ;
-extern int mcp23008Setup (const int pinBase, const int i2cAddress) ;
-extern int mcp23016Setup (const int pinBase, const int i2cAddress) ;
-extern int mcp23017Setup (const int pinBase, const int i2cAddress) ;
-extern int mcp23s08Setup (const int pinBase, const int spiPort, const int devId) ;
-extern int mcp23s17Setup (int pinBase, int spiPort, int devId) ;
-extern int mcp3002Setup (int pinBase, int spiChannel) ;
-extern int mcp3004Setup (int pinBase, int spiChannel) ;
-extern int mcp3422Setup (int pinBase, int i2cAddress, int sampleRate, int gain) ;
-extern int mcp4802Setup (int pinBase, int spiChannel) ;
-extern int pcf8574Setup (const int pinBase, const int i2cAddress) ;
-extern int pcf8591Setup (const int pinBase, const int i2cAddress) ;
-extern int sn3218Setup (int pinBase) ;
-
-// Soft PWM
-extern int softPwmCreate (int pin, int value, int range) ;
-extern void softPwmWrite (int pin, int value) ;
-extern void softPwmStop (int pin) ;
-
-// Soft Servo
-extern void softServoWrite (int pin, int value) ;
-extern int softServoSetup (int p0, int p1, int p2, int p3, int p4, int p5, int p6, int p7) ;
-
-// Soft Tone
-extern int softToneCreate (int pin) ;
-extern void softToneStop (int pin) ;
-extern void softToneWrite (int pin, int freq) ;
-
-// SPI
%typemap(in) (unsigned char *data, int len) {
$1 = (unsigned char *) PyString_AsString($input);
@@ -398,34 +248,6 @@
$result = SWIG_Python_AppendOutput($result, PyString_FromStringAndSize((char *) $1, result));
};
-int wiringPiSPIGetFd (int channel) ;
-int wiringPiSPIDataRW (int channel, unsigned char *data, int len) ;
-int wiringPiSPISetupMode (int channel, int speed, int mode) ;
-int wiringPiSPISetup (int channel, int speed) ;
-
-// I2C
-extern int wiringPiI2CRead (int fd) ;
-extern int wiringPiI2CReadReg8 (int fd, int reg) ;
-extern int wiringPiI2CReadReg16 (int fd, int reg) ;
-extern int wiringPiI2CWrite (int fd, int data) ;
-extern int wiringPiI2CWriteReg8 (int fd, int reg, int data) ;
-extern int wiringPiI2CWriteReg16 (int fd, int reg, int data) ;
-extern int wiringPiI2CSetupInterface (const char *device, int devId) ;
-extern int wiringPiI2CSetup (const int devId) ;
-
-// WiringSerial
-extern int serialOpen (const char *device, const int baud) ;
-extern void serialClose (const int fd) ;
-extern void serialFlush (const int fd) ;
-extern void serialPutchar (const int fd, const unsigned char c) ;
-extern void serialPuts (const int fd, const char *s) ;
-extern void serialPrintf (const int fd, const char *message, ...) ;
-extern int serialDataAvail (const int fd) ;
-extern int serialGetchar (const int fd) ;
-
-// Shift Register
-extern uint8_t shiftIn (uint8_t dPin, uint8_t cPin, uint8_t order) ;
-extern void shiftOut (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val) ;
-
+%include "bindings.i"
%include "constants.py"
%include "wiringpi2-class.py"