WiringPi V2.0 for Python2 & Python3
diff --git a/wiringpi.i b/wiringpi.i
new file mode 100644
index 0000000..6d275eb
--- /dev/null
+++ b/wiringpi.i
@@ -0,0 +1,127 @@
+%module wiringpi
+
+%{
+#include "WiringPi/wiringPi/ds1302.h",
+#include "WiringPi/wiringPi/gertboard.h",
+#include "WiringPi/wiringPi/lcd.h",
+#include "WiringPi/wiringPi/mcp23008.h",
+#include "WiringPi/wiringPi/mcp23017.h",
+#include "WiringPi/wiringPi/mcp23s08.h",
+#include "WiringPi/wiringPi/mcp23s17.h",
+#include "WiringPi/wiringPi/mcp23x0817.h",
+#include "WiringPi/wiringPi/mcp23x08.h",
+#include "WiringPi/wiringPi/piFace.h",
+#include "WiringPi/wiringPi/piNes.h",
+#include "WiringPi/wiringPi/softPwm.h",
+#include "WiringPi/wiringPi/softServo.h",
+#include "WiringPi/wiringPi/softTone.h",
+#include "WiringPi/wiringPi/sr595.h",
+#include "WiringPi/wiringPi/wiringPi.h",
+#include "WiringPi/wiringPi/wiringPiI2C.h",
+#include "WiringPi/wiringPi/wiringPiSPI.h",
+#include "WiringPi/wiringPi/wiringSerial.h",
+#include "WiringPi/wiringPi/wiringShift.h"
+%}
+
+%apply unsigned char { uint8_t };
+
+extern int  wiringPiSetup       (void) ;
+extern int  wiringPiSetupSys    (void) ;
+extern int  wiringPiSetupGpio   (void) ;
+
+extern int  piFaceSetup (int pinbase) ;
+
+extern int  piBoardRev          (void) ;
+extern int  wpiPinToGpio        (int wpiPin) ;
+
+extern void pinMode           (int pin, int mode) ;
+extern int  getAlt            (int pin) ;
+extern void pullUpDnControl   (int pin, int pud) ;
+extern void digitalWrite      (int pin, int value) ;
+extern void digitalWriteByte  (int value) ;
+extern void gpioClockSet      (int pin, int freq) ;
+extern void pwmWrite          (int pin, int value) ;
+extern void setPadDrive       (int group, int value) ;
+extern int  digitalRead       (int pin) ;
+extern void pwmSetMode        (int mode) ;
+extern void pwmSetRange       (unsigned int range) ;
+extern void pwmSetClock       (int divisor) ;
+
+// Interrupts
+
+extern int  (*waitForInterrupt) (int pin, int mS) ;
+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) ;
+
+// Extras from arduino land
+
+extern void         delay             (unsigned int howLong) ;
+extern void         delayMicroseconds (unsigned int howLong) ;
+extern unsigned int millis            (void) ;
+extern unsigned int micros            (void) ;
+
+// WiringSerial
+
+extern int   serialOpen      (char *device, int baud) ;
+extern void  serialClose     (int fd) ;
+extern void  serialFlush     (int fd) ;
+extern void  serialPutchar   (int fd, unsigned char c) ;
+extern void  serialPuts      (int fd, char *s) ;
+extern void  serialPrintf    (int fd, char *message, ...) ;
+extern int   serialDataAvail (int fd) ;
+extern int   serialGetchar   (int fd) ;
+
+// Shifting
+
+extern void shiftOut          (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val);
+extern uint8_t shiftIn        (uint8_t dPin, uint8_t cPin, uint8_t order);
+
+// Spi
+
+%typemap(in) (unsigned char *data, int len) {
+      $1 = (unsigned char *) PyString_AsString($input);
+      $2 = PyString_Size($input);
+};
+
+int wiringPiSPIGetFd  (int channel) ;
+int wiringPiSPIDataRW (int channel, unsigned char *data, int len) ;
+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) ;
+
+// Soft Tone
+
+extern int  softToneCreate (int pin) ;
+extern void softToneWrite  (int pin, int frewq) ;
+
+// 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 PWM
+
+extern int  softPwmCreate (int pin, int value, int range) ;
+extern void softPwmWrite  (int pin, int value) ;
+
+
+extern int mcp23s17Setup (int pinBase, int spiPort, int devId) ;
+extern int mcp23017Setup (int pinBase, int i2cAddress) ;
+
+extern int mcp23s08Setup (int pinBase, int spiPort, int devId) ;
+extern int mcp23008Setup (int pinBase, int i2cAddress) ;
+
+extern int sr595Setup (int pinBase, int numPins, int dataPin, int clockPin, int latchPin) ;