// Handy defines
+// Deprecated
#define NUM_PINS 17
#define WPI_MODE_PINS 0
#define WPI_MODE_GPIO 1
#define WPI_MODE_GPIO_SYS 2
#define WPI_MODE_PIFACE 3
+#define WPI_MODE_UNINITIALISED -1
-#define INPUT 0
-#define OUTPUT 1
-#define PWM_OUTPUT 2
+// Pin modes
-#define LOW 0
-#define HIGH 1
+#define INPUT 0
+#define OUTPUT 1
+#define PWM_OUTPUT 2
+#define GPIO_CLOCK 3
-#define PUD_OFF 0
-#define PUD_DOWN 1
-#define PUD_UP 2
+#define LOW 0
+#define HIGH 1
+
+// Pull up/down/none
+
+#define PUD_OFF 0
+#define PUD_DOWN 1
+#define PUD_UP 2
// PWM
-#define PWM_MODE_MS 0
-#define PWM_MODE_BAL 1
+#define PWM_MODE_MS 0
+#define PWM_MODE_BAL 1
+
+// Interrupt levels
+
+#define INT_EDGE_SETUP 0
+#define INT_EDGE_FALLING 1
+#define INT_EDGE_RISING 2
+#define INT_EDGE_BOTH 3
+
+// Threads
+
+#define PI_THREAD(X) void *X (void *dummy)
// Function prototypes
-// c++ wrappers thanks to a commend by Nick Lott
+// c++ wrappers thanks to a comment by Nick Lott
// (and others on the Raspberry Pi forums)
#ifdef __cplusplus
extern int wiringPiSetupGpio (void) ;
extern int wiringPiSetupPiFace (void) ;
+extern int piBoardRev (void) ;
+extern int wpiPinToGpio (int wpiPin) ;
+
extern int wiringPiSetupPiFaceForGpioProg (void) ; // Don't use this - for gpio program only
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 (*delayMicroseconds) (unsigned int howLong) ;
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
-#define PI_THREAD(X) void *X (void *dummy)
-
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) ;
#ifdef __cplusplus
}