summaryrefslogtreecommitdiff
path: root/src/c
diff options
context:
space:
mode:
authorsiddhu89902016-07-25 15:59:40 +0530
committersiddhu89902016-07-25 15:59:40 +0530
commit24fbba33153e7758df4a990cb4c21ae8e53e6f3e (patch)
treeb12075cf236142e6e0b9c024a37a2fc4ee5e6761 /src/c
parent169db0082ebd07baea82d00213db6ffd4dee7cf6 (diff)
downloadScilab2C_fossee_old-24fbba33153e7758df4a990cb4c21ae8e53e6f3e.tar.gz
Scilab2C_fossee_old-24fbba33153e7758df4a990cb4c21ae8e53e6f3e.tar.bz2
Scilab2C_fossee_old-24fbba33153e7758df4a990cb4c21ae8e53e6f3e.zip
WiringPi used for RaspberryPi (Gpio, serial, Threads, ISRs)
Diffstat (limited to 'src/c')
-rw-r--r--src/c/hardware/rasberrypi/ISR/i16RPIPinISRs.c25
-rw-r--r--src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c2
-rw-r--r--src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c6
-rw-r--r--src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c15
-rw-r--r--src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h2
-rw-r--r--src/c/hardware/rasberrypi/includes/RPIPeripheralPinISR.h26
-rw-r--r--src/c/hardware/rasberrypi/includes/RPIPeripheralSerial.h49
-rw-r--r--src/c/hardware/rasberrypi/includes/RPIPeripheralThreading.h28
-rw-r--r--src/c/hardware/rasberrypi/includes/RPIPeripheralTiming.h (renamed from src/c/hardware/rasberrypi/includes/RPIPeripheralUtil.h)10
-rw-r--r--src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPinISR.h25
-rw-r--r--src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralSerial.h47
-rw-r--r--src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralThreading.h25
-rw-r--r--src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralTiming.h (renamed from src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralUtil.h)15
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/ads1115.h55
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/drcSerial.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/libwiringPi.sobin0 -> 58044 bytes
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/max31855.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/max5322.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp23008.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp23016.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp23016reg.h48
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp23017.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp23s08.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp23s17.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp23x08.h73
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp23x0817.h87
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp3002.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp3004.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp3422.h43
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/mcp4802.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/pcf8574.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/pcf8591.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/sn3218.h33
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/softPwm.h35
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/softServo.h35
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/softTone.h39
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/sr595.h34
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/wiringPi.h234
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/wiringPiI2C.h42
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/wiringPiSPI.h36
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/wiringSerial.h38
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/wiringShift.h41
-rw-r--r--src/c/hardware/rasberrypi/libraries/wiringPi/wpiExtensions.h26
-rw-r--r--src/c/hardware/rasberrypi/serial/dRPISerialSendDataa.c28
-rw-r--r--src/c/hardware/rasberrypi/serial/dRPISerialSendDatas.c36
-rw-r--r--src/c/hardware/rasberrypi/serial/gRPISerialSendDatas.c28
-rw-r--r--src/c/hardware/rasberrypi/serial/i16RPISerialDataAvails.c25
-rw-r--r--src/c/hardware/rasberrypi/serial/i16RPISerialGetChars.c27
-rw-r--r--src/c/hardware/rasberrypi/serial/i16RPISerialSendDataa.c29
-rw-r--r--src/c/hardware/rasberrypi/serial/i16RPISerialSendDatas.c25
-rw-r--r--src/c/hardware/rasberrypi/serial/i8RPISerialSendDataa.c28
-rw-r--r--src/c/hardware/rasberrypi/serial/i8RPISerialSendDatas.c23
-rw-r--r--src/c/hardware/rasberrypi/serial/sRPISerialSendDataa.c29
-rw-r--r--src/c/hardware/rasberrypi/serial/sRPISerialSendDatas.c35
-rw-r--r--src/c/hardware/rasberrypi/serial/u16RPISerialSendDataa.c29
-rw-r--r--src/c/hardware/rasberrypi/serial/u16RPISerialSendDatas.c25
-rw-r--r--src/c/hardware/rasberrypi/serial/u8RPISerialCloses.c23
-rw-r--r--src/c/hardware/rasberrypi/serial/u8RPISerialFlushs.c23
-rw-r--r--src/c/hardware/rasberrypi/serial/u8RPISerialSendChars.c23
-rw-r--r--src/c/hardware/rasberrypi/serial/u8RPISerialSendDataa.c29
-rw-r--r--src/c/hardware/rasberrypi/serial/u8RPISerialSendDatas.c23
-rw-r--r--src/c/hardware/rasberrypi/serial/u8RPISerialSetups.c25
-rw-r--r--src/c/hardware/rasberrypi/threading/u16RPIThreadCreates.c24
-rw-r--r--src/c/hardware/rasberrypi/timing/u16RPIDelayMicros.c22
-rw-r--r--src/c/hardware/rasberrypi/timing/u16RPIDelayMillis.c25
-rw-r--r--src/c/hardware/rasberrypi/timing/u32RPIGetMicros.c21
-rw-r--r--src/c/hardware/rasberrypi/timing/u32RPIGetMillis.c21
-rw-r--r--src/c/hardware/rasberrypi/util/u16RPIDelayMicros.c38
-rw-r--r--src/c/hardware/rasberrypi/util/u16RPIDelayMillis.c39
69 files changed, 2207 insertions, 99 deletions
diff --git a/src/c/hardware/rasberrypi/ISR/i16RPIPinISRs.c b/src/c/hardware/rasberrypi/ISR/i16RPIPinISRs.c
new file mode 100644
index 0000000..425fc97
--- /dev/null
+++ b/src/c/hardware/rasberrypi/ISR/i16RPIPinISRs.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to declare interrupt on pins and corresponding ISRs */
+
+#include "types.h"
+#include "RPIPeripheralPinISR.h"
+#include "RPIPeripheralDigital.h"
+
+int16 i16RPIPinISRs(uint8 pin, uint8 edgetype, void (*ISRFunction))
+{
+ int status;
+ status = wiringPiISR((int)phy_pin[pin-1], (int) edgetype, ISRFunction);
+ return status;
+}
+
diff --git a/src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c b/src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c
index d9ff093..7b84350 100644
--- a/src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c
+++ b/src/c/hardware/rasberrypi/gpio/u8RPIDigitalIns.c
@@ -19,6 +19,6 @@
uint8 u8RPIDigitalIns(uint8 pin)
{
uint8 state = 0;
- state = bcm2835_gpio_lev(phy_pin[pin-1]);
+ state = digitalRead(phy_pin[pin-1]);
return (state);
}
diff --git a/src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c b/src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c
index 97c6a03..d40263f 100644
--- a/src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c
+++ b/src/c/hardware/rasberrypi/gpio/u8RPIDigitalOuts.c
@@ -16,11 +16,11 @@
#include "types.h"
#include "RPIPeripheralDigital.h"
-/*pin is reduced by one as arrayiindex starts from 0 and pin no starts from 1*/
+/*pin is reduced by one as array index starts from 0 and pin no starts from 1*/
uint8 u8RPIDigitalOuts(uint8 pin, uint8 state)
{
if (state == 0) //low output
- bcm2835_gpio_clr(phy_pin[pin-1]);
+ digitalWrite(phy_pin[pin-1], LOW);
if (state == 1) //high output
- bcm2835_gpio_set(phy_pin[pin-1]);
+ digitalWrite(phy_pin[pin-1], HIGH);
}
diff --git a/src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c b/src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c
index 79668b1..163f0c8 100644
--- a/src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c
+++ b/src/c/hardware/rasberrypi/gpio/u8RPIDigitalSetups.c
@@ -12,28 +12,29 @@
/* Function to setup digital pins
direction = 1 -> output
+ direction = 0 -> input
*/
#include "types.h"
#include "RPIPeripheralDigital.h"
-/*This array maps pin numbers on RPi board, with actual physical pin numbers
-on processor, required by BCM2835 library*/
-int phy_pin[] = {0, 0, 2, 0, 3, 0, 4, 14, 0, 15, /*Pin 1 to 10*/
- 17, 18, 27, 0, 22, 23, 0, 24, 10, 0, /*Pin 11 to 20*/
- 9, 25, 11, 8, 0, 7 }; /*Pin 21 to 26*/
+/*This array maps pin numbers on RPi board, with pin numbers corrsponding
+to WiringPi library*/
+int phy_pin[] = {17, 17, 8, 17, 9, 17, 7, 15, 17, 16, /*Pin 1 to 10*/
+ 0, 1, 2, 17, 3, 4, 17, 5, 12, 17, /*Pin 11 to 20*/
+ 13, 6, 14, 10, 17, 11 }; /*Pin 21 to 26*/
/*pin is reduced by one as arrayiindex starts from 0 and pin no starts from 1*/
uint8 u8RPIDigitalSetups(uint8 pin, uint8 direction)
{
if(direction == 1) //Pin to be used as output
{
- bcm2835_gpio_fsel(phy_pin[pin-1], BCM2835_GPIO_FSEL_OUTP);
+ pinMode(phy_pin[pin-1], OUTPUT);
}
else
{
- bcm2835_gpio_fsel(phy_pin[pin-1], BCM2835_GPIO_FSEL_INPT);
+ pinMode(phy_pin[pin-1], INPUT);
}
return 0;
diff --git a/src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h b/src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h
index e56366c..60561cc 100644
--- a/src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h
+++ b/src/c/hardware/rasberrypi/includes/RPIPeripheralDigital.h
@@ -21,7 +21,7 @@ extern "C" {
#include "types.h"
-#include "bcm2835.h"
+#include "wiringPi.h"
extern int phy_pin[];
diff --git a/src/c/hardware/rasberrypi/includes/RPIPeripheralPinISR.h b/src/c/hardware/rasberrypi/includes/RPIPeripheralPinISR.h
new file mode 100644
index 0000000..de05f90
--- /dev/null
+++ b/src/c/hardware/rasberrypi/includes/RPIPeripheralPinISR.h
@@ -0,0 +1,26 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __RPIPERIPHERALPINISR_H__
+#define __RPIPERIPHERALPINISR_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int16 i16RPIPinISRs(uint8 pin, uint8 edgetype, void (*ISRFunction));
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RPIPERIPHERALPINISR_H__*/
diff --git a/src/c/hardware/rasberrypi/includes/RPIPeripheralSerial.h b/src/c/hardware/rasberrypi/includes/RPIPeripheralSerial.h
new file mode 100644
index 0000000..199caf9
--- /dev/null
+++ b/src/c/hardware/rasberrypi/includes/RPIPeripheralSerial.h
@@ -0,0 +1,49 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __RPIPERIPHERALSERIAL_H__
+#define __RPIPERIPHERALSERIAL_H__
+
+#include "types.h"
+#include "wiringSerial.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int u8RPISerialSetups(char* port, int baudrate);
+uint8 u8RPISerialCloses(int fd);
+
+uint8 u8RPISerialSendChars(int fd, uint8 data);
+uint8 u8RPISerialSendDatas(int fd, uint8 data);
+uint8 i8RPISerialSendDatas(int fd, int8 data);
+uint8 u16RPISerialSendDatas(int fd, uint16 data);
+uint8 i16RPISerialSendDatas(int fd, int16 data);
+uint8 sRPISerialSendDatas(int fd, float data);
+uint8 dRPISerialSendDatas(int fd, double data);
+uint8 u8RPISerialSendDataa(int fd, uint8* data, int size);
+uint8 i8RPISerialSendDataa(int fd, int8* data, int size);
+uint8 u16RPISerialSendDataa(int fd, uint16* data, int size);
+uint8 i16RPISerialSendDataa(int fd, int16* data, int size);
+uint8 sRPISerialSendDataa(int fd, float* data, int size);
+uint8 dRPISerialSendDataa(int fd, double* data, int size);
+uint8 gRPISerialSendDatas(int fd, uint8* data, int size);
+
+int16 i16RPISerialDataAvails(int fd);
+int16 i16RPISerialGetChars(int fd);
+
+uint8 u8RPISerialFlushs(int fd);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RPIPERIPHERALSERIAL_H__*/
diff --git a/src/c/hardware/rasberrypi/includes/RPIPeripheralThreading.h b/src/c/hardware/rasberrypi/includes/RPIPeripheralThreading.h
new file mode 100644
index 0000000..4c5d3a5
--- /dev/null
+++ b/src/c/hardware/rasberrypi/includes/RPIPeripheralThreading.h
@@ -0,0 +1,28 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __RPIPERIPHERALTHREADING_H__
+#define __RPIPERIPHERALTHREADING_H__
+
+#include "types.h"
+#include "wiringPi.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+uint16 RPIThreadCreate(void (*threadFunction));
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__RPIPERIPHERALTHREADING_H__*/
diff --git a/src/c/hardware/rasberrypi/includes/RPIPeripheralUtil.h b/src/c/hardware/rasberrypi/includes/RPIPeripheralTiming.h
index 0b20ad6..d1ca027 100644
--- a/src/c/hardware/rasberrypi/includes/RPIPeripheralUtil.h
+++ b/src/c/hardware/rasberrypi/includes/RPIPeripheralTiming.h
@@ -12,21 +12,23 @@
/* This file declares functions and constants related to rasberrypi*/
-#ifndef __RPIPERIPHERALUTIL_H__
-#define __RPIPERIPHERALUTIL_H__
+#ifndef __RPIPERIPHERALTIMING_H__
+#define __RPIPERIPHERALTIMING_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "types.h"
-#include "bcm2835.h"
+#include "wiringPi.h"
uint8 u16RPIDelayMillis(uint16 time);
uint8 u16RPIDelayMicros(uint16 time);
+uint32 u32RPIGetMillis();
+uint32 u32RPIGetMicros();
#ifdef __cplusplus
} /* extern "C" */
#endif
-#endif /*__RPIPERIPHERALUTIL_H__*/
+#endif /*__RPIPERIPHERALTIMING_H__*/
diff --git a/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPinISR.h b/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPinISR.h
new file mode 100644
index 0000000..b2c1ed1
--- /dev/null
+++ b/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralPinISR.h
@@ -0,0 +1,25 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_RPIPERIPHERALPINISR_H__
+#define __INT_RPIPERIPHERALPINISR_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPI_PinISR(pin,edge,funname) i16RPIPinISRs((uint8)pin,(uint8)edge,funname)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_RPIPERIPHERALPINISR_H__*/
diff --git a/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralSerial.h b/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralSerial.h
new file mode 100644
index 0000000..570e944
--- /dev/null
+++ b/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralSerial.h
@@ -0,0 +1,47 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_RPIPERIPHERALSERIAL_H__
+#define __INT_RPIPERIPHERALSERIAL_H__
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPI_SerialSetup(port,size,baudrate) u8RPISerialSetups(port,baudrate)
+#define RPI_SerialClose(fd) u8RPISerialCloses(fd)
+
+#define u80u80RPI_SerialSendDatau80(fd,data) u8RPISerialSendDatas(fd,data)
+#define u80i80RPI_SerialSendDatau80(fd,data) i8RPISerialSendDatas(fd,data)
+#define u80u160RPI_SerialSendDatau80(fd,data) u16RPISerialSendDatas(fd,data)
+#define u80i160RPI_SerialSendDatau80(fd,data) i16RPISerialSendDatas(fd,data)
+#define u80s0RPI_SerialSendDatau80(fd,data) sRPISerialSendDatas(fd,data)
+#define u80d0RPI_SerialSendDatau80(fd,data) dRPISerialSendDatas(fd,data)
+
+#define u80u82RPI_SerialSendDatau80(fd,data,size) u8RPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80i82RPI_SerialSendDatau80(fd,data,size) i8RPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80u162RPI_SerialSendDatau80(fd,data,size) u16RPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80i162RPI_SerialSendDatau80(fd,data,size) i16RPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80s2RPI_SerialSendDatau80(fd,data,size) sRPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80d2RPI_SerialSendDatau80(fd,data,size) dRPISerialSendDataa(fd,data,size[0]*size[1]);
+#define u80g2RPI_SerialSendDatau80(fd,data,size) gRPISerialSendDatas(fd,data,size[0]*size[1]);
+
+#define RPI_SerialDataAvail(fd) i16RPISerialDataAvails(fd)
+#define RPI_SerialGetChar(fd) i16RPISerialGetChars(fd)
+#define RPI_SerialFlush(fd) u8RPISerialFlushs(fd)
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_RPIPERIPHERALSERIAL_H__*/
diff --git a/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralThreading.h b/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralThreading.h
new file mode 100644
index 0000000..68ed6e0
--- /dev/null
+++ b/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralThreading.h
@@ -0,0 +1,25 @@
+ /* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+ */
+#ifndef __INT_RPIPERIPHERALTHREADING_H__
+#define __INT_RPIPERIPHERALTHREADING_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define RPI_ThreadCreate(fn) RPIThreadCreate(fn);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /*__INT_RPIPERIPHERALTHREADING_H__*/
diff --git a/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralUtil.h b/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralTiming.h
index c53db3b..1a70465 100644
--- a/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralUtil.h
+++ b/src/c/hardware/rasberrypi/interfaces/int_RPIPeripheralTiming.h
@@ -11,21 +11,24 @@
*/
-#ifndef __INT_RPIPERIPHERALUTIL_H__
-#define __INT_RPIPERIPHERALUTIL_H__
+#ifndef __INT_RPIPERIPHERALTIMING_H__
+#define __INT_RPIPERIPHERALTIMING_H__
#include "types.h"
-#include "RPIPeripheralUtil.h"
+#include "RPIPeripheralTiming.h"
#ifdef __cplusplus
extern "C" {
#endif
-#define RPI_DelayMicro(in1) u16RPIDelayMicros((uint16) in1);
-#define RPI_DelayMilli(in1) u16RPIDelayMillis((uint16) in1);
+#define RPI_DelayMicro(in1) u16RPIDelayMicros((uint16) in1)
+#define RPI_DelayMilli(in1) u16RPIDelayMillis((uint16) in1)
+#define RPI_GetMicro() u32RPIGetMicros()
+#define RPI_GetMillis() u32RPIGetMillis()
+
#ifdef __cplusplus
} /* extern "C" */
#endif
-#endif /* !__RPIPERIPHERALUTIL_H__ */
+#endif /* !__RPIPERIPHERALTIMING_H__ */
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/ads1115.h b/src/c/hardware/rasberrypi/libraries/wiringPi/ads1115.h
new file mode 100644
index 0000000..5c91735
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/ads1115.h
@@ -0,0 +1,55 @@
+/*
+ * ads1115.c:
+ * Extend wiringPi with the ADS1115 I2C 16-bit ADC
+ * Copyright (c) 2016 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+// Constants for some of the internal functions
+
+// Gain
+
+#define ADS1115_GAIN_6 0
+#define ADS1115_GAIN_4 1
+#define ADS1115_GAIN_2 2
+#define ADS1115_GAIN_1 3
+#define ADS1115_GAIN_HALF 4
+#define ADS1115_GAIN_QUARTER 5
+
+// Data rate
+
+#define ADS1115_DR_8 0
+#define ADS1115_DR_16 1
+#define ADS1115_DR_32 2
+#define ADS1115_DR_64 3
+#define ADS1115_DR_128 4
+#define ADS1115_DR_250 5
+#define ADS1115_DR_475 6
+#define ADS1115_DR_860 7
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int ads1115Setup (int pinBase, int i2cAddress) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/drcSerial.h b/src/c/hardware/rasberrypi/libraries/wiringPi/drcSerial.h
new file mode 100644
index 0000000..29e988e
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/drcSerial.h
@@ -0,0 +1,33 @@
+/*
+ * drcSerial.h:
+ * Extend wiringPi with the DRC Serial protocol (e.g. to Arduino)
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int drcSetupSerial (const int pinBase, const int numPins, const char *device, const int baud) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/libwiringPi.so b/src/c/hardware/rasberrypi/libraries/wiringPi/libwiringPi.so
new file mode 100644
index 0000000..da4a81e
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/libwiringPi.so
Binary files differ
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/max31855.h b/src/c/hardware/rasberrypi/libraries/wiringPi/max31855.h
new file mode 100644
index 0000000..385c4bd
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/max31855.h
@@ -0,0 +1,33 @@
+/*
+ * max31855.c:
+ * Extend wiringPi with the MAX31855 SPI Thermocouple driver
+ * Copyright (c) 2012-2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int max31855Setup (int pinBase, int spiChannel) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/max5322.h b/src/c/hardware/rasberrypi/libraries/wiringPi/max5322.h
new file mode 100644
index 0000000..a217cf8
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/max5322.h
@@ -0,0 +1,33 @@
+/*
+ * max5322.h:
+ * Extend wiringPi with the MAX5322 SPI Digital to Analog convertor
+ * Copyright (c) 2012-2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int max5322Setup (int pinBase, int spiChannel) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23008.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23008.h
new file mode 100644
index 0000000..e9299a8
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23008.h
@@ -0,0 +1,33 @@
+/*
+ * 23008.h:
+ * Extend wiringPi with the MCP 23008 I2C GPIO expander chip
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int mcp23008Setup (const int pinBase, const int i2cAddress) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23016.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23016.h
new file mode 100644
index 0000000..f9b5cc5
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23016.h
@@ -0,0 +1,33 @@
+/*
+ * mcp23016.h:
+ * Extend wiringPi with the MCP 23016 I2C GPIO expander chip
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int mcp23016Setup (const int pinBase, const int i2cAddress) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23016reg.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23016reg.h
new file mode 100644
index 0000000..9aea92d
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23016reg.h
@@ -0,0 +1,48 @@
+/*
+ * mcp23016:
+ * Copyright (c) 2012-2013 Gordon Henderson
+ *
+ * Header file for code using the MCP23016 GPIO expander
+ * chip.
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+// MCP23016 Registers
+
+#define MCP23016_GP0 0x00
+#define MCP23016_GP1 0x01
+#define MCP23016_OLAT0 0x02
+#define MCP23016_OLAT1 0x03
+#define MCP23016_IPOL0 0x04
+#define MCP23016_IPOL1 0x05
+#define MCP23016_IODIR0 0x06
+#define MCP23016_IODIR1 0x07
+#define MCP23016_INTCAP0 0x08
+#define MCP23016_INTCAP1 0x09
+#define MCP23016_IOCON0 0x0A
+#define MCP23016_IOCON1 0x0B
+
+// Bits in the IOCON register
+
+#define IOCON_IARES 0x01
+
+// Default initialisation mode
+
+#define IOCON_INIT 0
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23017.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23017.h
new file mode 100644
index 0000000..79b4d7b
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23017.h
@@ -0,0 +1,33 @@
+/*
+ * 23017.h:
+ * Extend wiringPi with the MCP 23017 I2C GPIO expander chip
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int mcp23017Setup (const int pinBase, const int i2cAddress) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23s08.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23s08.h
new file mode 100644
index 0000000..ebf93d1
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23s08.h
@@ -0,0 +1,33 @@
+/*
+ * 23s08.h:
+ * Extend wiringPi with the MCP 23s08 SPI GPIO expander chip
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int mcp23s08Setup (const int pinBase, const int spiPort, const int devId) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23s17.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23s17.h
new file mode 100644
index 0000000..3b2a808
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23s17.h
@@ -0,0 +1,33 @@
+/*
+ * 23s17.h:
+ * Extend wiringPi with the MCP 23s17 SPI GPIO expander chip
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int mcp23s17Setup (int pinBase, int spiPort, int devId) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23x08.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23x08.h
new file mode 100644
index 0000000..c4e6b27
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23x08.h
@@ -0,0 +1,73 @@
+/*
+ * mcp23x17:
+ * Copyright (c) 2012-2013 Gordon Henderson
+ *
+ * Header file for code using the MCP23x17 GPIO expander chip.
+ * This comes in 2 flavours: MCP23017 which has an I2C interface,
+ * an the MXP23S17 which has an SPI interface.
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+
+// MCP23x17 Registers
+
+#define IODIRA 0x00
+#define IPOLA 0x02
+#define GPINTENA 0x04
+#define DEFVALA 0x06
+#define INTCONA 0x08
+#define IOCON 0x0A
+#define GPPUA 0x0C
+#define INTFA 0x0E
+#define INTCAPA 0x10
+#define GPIOA 0x12
+#define OLATA 0x14
+
+#define IODIRB 0x01
+#define IPOLB 0x03
+#define GPINTENB 0x05
+#define DEFVALB 0x07
+#define INTCONB 0x09
+#define IOCONB 0x0B
+#define GPPUB 0x0D
+#define INTFB 0x0F
+#define INTCAPB 0x11
+#define GPIOB 0x13
+#define OLATB 0x15
+
+// Bits in the IOCON register
+
+#define IOCON_UNUSED 0x01
+#define IOCON_INTPOL 0x02
+#define IOCON_ODR 0x04
+#define IOCON_HAEN 0x08
+#define IOCON_DISSLW 0x10
+#define IOCON_SEQOP 0x20
+#define IOCON_MIRROR 0x40
+#define IOCON_BANK_MODE 0x80
+
+// Default initialisation mode
+
+#define IOCON_INIT (IOCON_SEQOP)
+
+// SPI Command codes
+
+#define CMD_WRITE 0x40
+#define CMD_READ 0x41
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23x0817.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23x0817.h
new file mode 100644
index 0000000..58bc038
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp23x0817.h
@@ -0,0 +1,87 @@
+/*
+ * mcp23xxx:
+ * Copyright (c) 2012-2013 Gordon Henderson
+ *
+ * Header file for code using the MCP23x08 and 17 GPIO expander
+ * chips.
+ * This comes in 2 flavours: MCP230xx (08/17) which has an I2C
+ * interface, and the MXP23Sxx (08/17) which has an SPI interface.
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+// MCP23x08 Registers
+
+#define MCP23x08_IODIR 0x00
+#define MCP23x08_IPOL 0x01
+#define MCP23x08_GPINTEN 0x02
+#define MCP23x08_DEFVAL 0x03
+#define MCP23x08_INTCON 0x04
+#define MCP23x08_IOCON 0x05
+#define MCP23x08_GPPU 0x06
+#define MCP23x08_INTF 0x07
+#define MCP23x08_INTCAP 0x08
+#define MCP23x08_GPIO 0x09
+#define MCP23x08_OLAT 0x0A
+
+// MCP23x17 Registers
+
+#define MCP23x17_IODIRA 0x00
+#define MCP23x17_IPOLA 0x02
+#define MCP23x17_GPINTENA 0x04
+#define MCP23x17_DEFVALA 0x06
+#define MCP23x17_INTCONA 0x08
+#define MCP23x17_IOCON 0x0A
+#define MCP23x17_GPPUA 0x0C
+#define MCP23x17_INTFA 0x0E
+#define MCP23x17_INTCAPA 0x10
+#define MCP23x17_GPIOA 0x12
+#define MCP23x17_OLATA 0x14
+
+#define MCP23x17_IODIRB 0x01
+#define MCP23x17_IPOLB 0x03
+#define MCP23x17_GPINTENB 0x05
+#define MCP23x17_DEFVALB 0x07
+#define MCP23x17_INTCONB 0x09
+#define MCP23x17_IOCONB 0x0B
+#define MCP23x17_GPPUB 0x0D
+#define MCP23x17_INTFB 0x0F
+#define MCP23x17_INTCAPB 0x11
+#define MCP23x17_GPIOB 0x13
+#define MCP23x17_OLATB 0x15
+
+// Bits in the IOCON register
+
+#define IOCON_UNUSED 0x01
+#define IOCON_INTPOL 0x02
+#define IOCON_ODR 0x04
+#define IOCON_HAEN 0x08
+#define IOCON_DISSLW 0x10
+#define IOCON_SEQOP 0x20
+#define IOCON_MIRROR 0x40
+#define IOCON_BANK_MODE 0x80
+
+// Default initialisation mode
+
+#define IOCON_INIT (IOCON_SEQOP)
+
+// SPI Command codes
+
+#define CMD_WRITE 0x40
+#define CMD_READ 0x41
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp3002.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp3002.h
new file mode 100644
index 0000000..0cd727f
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp3002.h
@@ -0,0 +1,33 @@
+/*
+ * mcp3002.c:
+ * Extend wiringPi with the MCP3002 SPI Analog to Digital convertor
+ * Copyright (c) 2012-2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int mcp3002Setup (int pinBase, int spiChannel) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp3004.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp3004.h
new file mode 100644
index 0000000..a07c0bf
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp3004.h
@@ -0,0 +1,33 @@
+/*
+ * mcp3004.c:
+ * Extend wiringPi with the MCP3004 SPI Analog to Digital convertor
+ * Copyright (c) 2012-2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int mcp3004Setup (int pinBase, int spiChannel) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp3422.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp3422.h
new file mode 100644
index 0000000..72647d4
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp3422.h
@@ -0,0 +1,43 @@
+/*
+ * mcp3422.h:
+ * Extend wiringPi with the MCP3422/3/4 I2C ADC chip
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#define MCP3422_SR_240 0
+#define MCP3422_SR_60 1
+#define MCP3422_SR_15 2
+#define MCP3422_SR_3_75 3
+
+#define MCP3422_GAIN_1 0
+#define MCP3422_GAIN_2 1
+#define MCP3422_GAIN_4 2
+#define MCP3422_GAIN_8 3
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int mcp3422Setup (int pinBase, int i2cAddress, int sampleRate, int gain) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/mcp4802.h b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp4802.h
new file mode 100644
index 0000000..effa024
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/mcp4802.h
@@ -0,0 +1,33 @@
+/*
+ * mcp4802.c:
+ * Extend wiringPi with the MCP4802 SPI Digital to Analog convertor
+ * Copyright (c) 2012-2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int mcp4802Setup (int pinBase, int spiChannel) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/pcf8574.h b/src/c/hardware/rasberrypi/libraries/wiringPi/pcf8574.h
new file mode 100644
index 0000000..8e2d818
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/pcf8574.h
@@ -0,0 +1,33 @@
+/*
+ * pcf8574.h:
+ * Extend wiringPi with the PCF8574 I2C GPIO expander chip
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int pcf8574Setup (const int pinBase, const int i2cAddress) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/pcf8591.h b/src/c/hardware/rasberrypi/libraries/wiringPi/pcf8591.h
new file mode 100644
index 0000000..6b44ccf
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/pcf8591.h
@@ -0,0 +1,33 @@
+/*
+ * pcf8591.h:
+ * Extend wiringPi with the PCF8591 I2C GPIO Analog expander chip
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int pcf8591Setup (const int pinBase, const int i2cAddress) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/sn3218.h b/src/c/hardware/rasberrypi/libraries/wiringPi/sn3218.h
new file mode 100644
index 0000000..580d5f9
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/sn3218.h
@@ -0,0 +1,33 @@
+/*
+ * sn3218.c:
+ * Extend wiringPi with the SN3218 I2C LED driver board.
+ * Copyright (c) 2012-2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int sn3218Setup (int pinBase) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/softPwm.h b/src/c/hardware/rasberrypi/libraries/wiringPi/softPwm.h
new file mode 100644
index 0000000..0351da5
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/softPwm.h
@@ -0,0 +1,35 @@
+/*
+ * softPwm.h:
+ * Provide 2 channels of software driven PWM.
+ * Copyright (c) 2012 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int softPwmCreate (int pin, int value, int range) ;
+extern void softPwmWrite (int pin, int value) ;
+extern void softPwmStop (int pin) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/softServo.h b/src/c/hardware/rasberrypi/libraries/wiringPi/softServo.h
new file mode 100644
index 0000000..794cf55
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/softServo.h
@@ -0,0 +1,35 @@
+/*
+ * softServo.h:
+ * Provide N channels of software driven PWM suitable for RC
+ * servo motors.
+ * Copyright (c) 2012 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+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) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/softTone.h b/src/c/hardware/rasberrypi/libraries/wiringPi/softTone.h
new file mode 100644
index 0000000..a93c5af
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/softTone.h
@@ -0,0 +1,39 @@
+/*
+ * softTone.c:
+ * For that authentic retro sound...
+ * Er... A little experiment to produce tones out of a Pi using
+ * one (or 2) GPIO pins and a piezeo "speaker" element.
+ * (Or a high impedance speaker, but don'y blame me if you blow-up
+ * the GPIO pins!)
+ * Copyright (c) 2012 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int softToneCreate (int pin) ;
+extern void softToneStop (int pin) ;
+extern void softToneWrite (int pin, int freq) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/sr595.h b/src/c/hardware/rasberrypi/libraries/wiringPi/sr595.h
new file mode 100644
index 0000000..4a26dc7
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/sr595.h
@@ -0,0 +1,34 @@
+/*
+ * sr595.h:
+ * Extend wiringPi with the 74x595 shift registers.
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int sr595Setup (const int pinBase, const int numPins,
+ const int dataPin, const int clockPin, const int latchPin) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/wiringPi.h b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringPi.h
new file mode 100644
index 0000000..e11a0be
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringPi.h
@@ -0,0 +1,234 @@
+/*
+ * wiringPi.h:
+ * Arduino like Wiring library for the Raspberry Pi.
+ * Copyright (c) 2012-2016 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifndef __WIRING_PI_H__
+#define __WIRING_PI_H__
+
+// C doesn't have true/false by default and I can never remember which
+// way round they are, so ...
+
+#ifndef TRUE
+# define TRUE (1==1)
+# define FALSE (!TRUE)
+#endif
+
+// Handy defines
+
+// wiringPi modes
+
+#define WPI_MODE_PINS 0
+#define WPI_MODE_GPIO 1
+#define WPI_MODE_GPIO_SYS 2
+#define WPI_MODE_PHYS 3
+#define WPI_MODE_PIFACE 4
+#define WPI_MODE_UNINITIALISED -1
+
+// Pin modes
+
+#define INPUT 0
+#define OUTPUT 1
+#define PWM_OUTPUT 2
+#define GPIO_CLOCK 3
+#define SOFT_PWM_OUTPUT 4
+#define SOFT_TONE_OUTPUT 5
+#define PWM_TONE_OUTPUT 6
+
+#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
+
+// Interrupt levels
+
+#define INT_EDGE_SETUP 0
+#define INT_EDGE_FALLING 1
+#define INT_EDGE_RISING 2
+#define INT_EDGE_BOTH 3
+
+// Pi model types and version numbers
+// Intended for the GPIO program Use at your own risk.
+
+#define PI_MODEL_A 0
+#define PI_MODEL_B 1
+#define PI_MODEL_AP 2
+#define PI_MODEL_BP 3
+#define PI_MODEL_2 4
+#define PI_ALPHA 5
+#define PI_MODEL_CM 6
+#define PI_MODEL_07 7
+#define PI_MODEL_3 8
+#define PI_MODEL_ZERO 9
+
+#define PI_VERSION_1 0
+#define PI_VERSION_1_1 1
+#define PI_VERSION_1_2 2
+#define PI_VERSION_2 3
+
+#define PI_MAKER_SONY 0
+#define PI_MAKER_EGOMAN 1
+#define PI_MAKER_MBEST 2
+#define PI_MAKER_UNKNOWN 3
+
+extern const char *piModelNames [16] ;
+extern const char *piRevisionNames [16] ;
+extern const char *piMakerNames [16] ;
+extern const int piMemorySize [ 8] ;
+
+
+// Intended for the GPIO program Use at your own risk.
+
+// Threads
+
+#define PI_THREAD(X) void *X (void *dummy)
+
+// Failure modes
+
+#define WPI_FATAL (1==1)
+#define WPI_ALMOST (1==2)
+
+
+// wiringPiNodeStruct:
+// This describes additional device nodes in the extended wiringPi
+// 2.0 scheme of things.
+// It's a simple linked list for now, but will hopefully migrate to
+// a binary tree for efficiency reasons - but then again, the chances
+// of more than 1 or 2 devices being added are fairly slim, so who
+// knows....
+
+struct wiringPiNodeStruct
+{
+ int pinBase ;
+ int pinMax ;
+
+ int fd ; // Node specific
+ unsigned int data0 ; // ditto
+ unsigned int data1 ; // ditto
+ unsigned int data2 ; // ditto
+ unsigned int data3 ; // ditto
+
+ void (*pinMode) (struct wiringPiNodeStruct *node, int pin, int mode) ;
+ void (*pullUpDnControl) (struct wiringPiNodeStruct *node, int pin, int mode) ;
+ int (*digitalRead) (struct wiringPiNodeStruct *node, int pin) ;
+ void (*digitalWrite) (struct wiringPiNodeStruct *node, int pin, int value) ;
+ void (*pwmWrite) (struct wiringPiNodeStruct *node, int pin, int value) ;
+ int (*analogRead) (struct wiringPiNodeStruct *node, int pin) ;
+ void (*analogWrite) (struct wiringPiNodeStruct *node, int pin, int value) ;
+
+ struct wiringPiNodeStruct *next ;
+} ;
+
+extern struct wiringPiNodeStruct *wiringPiNodes ;
+
+
+// Function prototypes
+// c++ wrappers thanks to a comment by Nick Lott
+// (and others on the Raspberry Pi forums)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Data
+
+// Internal
+
+extern int wiringPiFailure (int fatal, const char *message, ...) ;
+
+// Core wiringPi functions
+
+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) ;
+
+// PiFace specifics
+// (Deprecated)
+
+extern int wiringPiSetupPiFace (void) ;
+extern int wiringPiSetupPiFaceForGpioProg (void) ; // Don't use this - for gpio program only
+
+// 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 unsigned int digitalReadByte (void) ;
+extern void pwmSetMode (int mode) ;
+extern void pwmSetRange (unsigned int range) ;
+extern void pwmSetClock (int divisor) ;
+extern void gpioClockSet (int pin, int freq) ;
+
+// Interrupts
+// (Also Pi hardware specific)
+
+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) ;
+
+// Schedulling priority
+
+extern int piHiPri (const int pri) ;
+
+// 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
+}
+#endif
+
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/wiringPiI2C.h b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringPiI2C.h
new file mode 100644
index 0000000..6db8c68
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringPiI2C.h
@@ -0,0 +1,42 @@
+/*
+ * wiringPiI2C.h:
+ * Simplified I2C access routines
+ * Copyright (c) 2013 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+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) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/wiringPiSPI.h b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringPiSPI.h
new file mode 100644
index 0000000..3980321
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringPiSPI.h
@@ -0,0 +1,36 @@
+/*
+ * wiringPiSPI.h:
+ * Simplified SPI access routines
+ * Copyright (c) 2012-2015 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with wiringPi.
+ * If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+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) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/wiringSerial.h b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringSerial.h
new file mode 100644
index 0000000..430dc73
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringSerial.h
@@ -0,0 +1,38 @@
+/*
+ * wiringSerial.h:
+ * Handle a serial port
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+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) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/wiringShift.h b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringShift.h
new file mode 100644
index 0000000..419ade4
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/wiringShift.h
@@ -0,0 +1,41 @@
+/*
+ * wiringShift.h:
+ * Emulate some of the Arduino wiring functionality.
+ *
+ * Copyright (c) 2009-2012 Gordon Henderson.
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+#define LSBFIRST 0
+#define MSBFIRST 1
+
+#ifndef _STDINT_H
+# include <stdint.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+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) ;
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/c/hardware/rasberrypi/libraries/wiringPi/wpiExtensions.h b/src/c/hardware/rasberrypi/libraries/wiringPi/wpiExtensions.h
new file mode 100644
index 0000000..fcaec96
--- /dev/null
+++ b/src/c/hardware/rasberrypi/libraries/wiringPi/wpiExtensions.h
@@ -0,0 +1,26 @@
+/*
+ * extensions.h:
+ * Part of the GPIO program to test, peek, poke and otherwise
+ * noodle with the GPIO hardware on the Raspberry Pi.
+ * Copyright (c) 2012-2015 Gordon Henderson
+ ***********************************************************************
+ * This file is part of wiringPi:
+ * https://projects.drogon.net/raspberry-pi/wiringpi/
+ *
+ * wiringPi is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * wiringPi is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
+ ***********************************************************************
+ */
+
+
+extern int loadWPiExtension (char *progName, char *extensionData, int verbose) ;
diff --git a/src/c/hardware/rasberrypi/serial/dRPISerialSendDataa.c b/src/c/hardware/rasberrypi/serial/dRPISerialSendDataa.c
new file mode 100644
index 0000000..271a6b1
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/dRPISerialSendDataa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send double data array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 dRPISerialSendDataa(int fd, double* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; count++)
+ {
+ dRPISerialSendDatas(fd, data[count]);
+ }
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/dRPISerialSendDatas.c b/src/c/hardware/rasberrypi/serial/dRPISerialSendDatas.c
new file mode 100644
index 0000000..163e9c7
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/dRPISerialSendDatas.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send double data on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 dRPISerialSendDatas(int fd, double data)
+{
+ uint8 count;
+
+ union double_bytes{
+ double double_data;
+ unsigned char bytes[sizeof(double)];
+ } in_data;
+
+ in_data.double_data = data;
+
+ for(count=0; count<sizeof(double); count++)
+ {
+ //Send lsb first
+ serialPutchar(fd, (uint8) in_data.bytes[count]);
+ }
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/gRPISerialSendDatas.c b/src/c/hardware/rasberrypi/serial/gRPISerialSendDatas.c
new file mode 100644
index 0000000..4ad671a
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/gRPISerialSendDatas.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send string on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 gRPISerialSendDatas(int fd, uint8* data, int size)
+{
+ int count = 0;
+
+ while(data[count] != '\0')
+ {
+ serialPutchar(fd, data[count]);
+ }
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/i16RPISerialDataAvails.c b/src/c/hardware/rasberrypi/serial/i16RPISerialDataAvails.c
new file mode 100644
index 0000000..b56a819
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/i16RPISerialDataAvails.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to check for data availability at specified port. Returns no of
+ bytes to be read */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+int16 i16RPISerialDataAvails(int fd)
+{
+ int bytes = 0;
+ bytes = serialDataAvail(fd);
+
+ return bytes;
+}
diff --git a/src/c/hardware/rasberrypi/serial/i16RPISerialGetChars.c b/src/c/hardware/rasberrypi/serial/i16RPISerialGetChars.c
new file mode 100644
index 0000000..18ca2a7
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/i16RPISerialGetChars.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to read character from spcified serial port (file descriptor).
+ This function will block execution for 10 secs if no character is available,
+ and will return -1 in that case*/
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+int16 i16RPISerialGetChars(int fd)
+{
+ int data = 0;
+
+ data = serialGetchar(fd);
+
+ return data;
+}
diff --git a/src/c/hardware/rasberrypi/serial/i16RPISerialSendDataa.c b/src/c/hardware/rasberrypi/serial/i16RPISerialSendDataa.c
new file mode 100644
index 0000000..f5b7d71
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/i16RPISerialSendDataa.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send signed 16-bit data array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 i16RPISerialSendDataa(int fd, int16* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ i16RPISerialSendDatas(fd, data[count]);
+ }
+
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/i16RPISerialSendDatas.c b/src/c/hardware/rasberrypi/serial/i16RPISerialSendDatas.c
new file mode 100644
index 0000000..861d7d8
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/i16RPISerialSendDatas.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send signed 16-bit byte on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 i16RPISerialSendDatas(int fd, int16 data)
+{
+ //Send lsb first
+ serialPutchar(fd, (uint8) data);
+ serialPutchar(fd, (uint8) (data>>8));
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/i8RPISerialSendDataa.c b/src/c/hardware/rasberrypi/serial/i8RPISerialSendDataa.c
new file mode 100644
index 0000000..d208a01
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/i8RPISerialSendDataa.c
@@ -0,0 +1,28 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send signed 8-bit byte array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 i8RPISerialSendDataa(int fd, int8* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ i8RPISerialSendDatas(fd, data[count]);
+ }
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/i8RPISerialSendDatas.c b/src/c/hardware/rasberrypi/serial/i8RPISerialSendDatas.c
new file mode 100644
index 0000000..0d130d1
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/i8RPISerialSendDatas.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send signed 8-bit byte on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 i8RPISerialSendDatas(int fd, int8 data)
+{
+ serialPutchar(fd, (uint8) data);
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/sRPISerialSendDataa.c b/src/c/hardware/rasberrypi/serial/sRPISerialSendDataa.c
new file mode 100644
index 0000000..92fa5a7
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/sRPISerialSendDataa.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send float data array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 sRPISerialSendDataa(int fd, float* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ sRPISerialSendDatas(fd, data[count]);
+ }
+
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/sRPISerialSendDatas.c b/src/c/hardware/rasberrypi/serial/sRPISerialSendDatas.c
new file mode 100644
index 0000000..a8c34d0
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/sRPISerialSendDatas.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send float data on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 sRPISerialSendDatas(int fd, float data)
+{
+ uint8 count;
+
+ union float_bytes{
+ float float_data;
+ unsigned char bytes[sizeof(float)];
+ } in_data;
+ in_data.float_data = data;
+
+ for(count=0; count<sizeof(float); count++)
+ {
+ //Send lsb first
+ serialPutchar(fd, (uint8) in_data.bytes[count]);
+ }
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/u16RPISerialSendDataa.c b/src/c/hardware/rasberrypi/serial/u16RPISerialSendDataa.c
new file mode 100644
index 0000000..e979882
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/u16RPISerialSendDataa.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send unsigned 16-bit data array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 u16RPISerialSendDataa(int fd, uint16* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ u16RPISerialSendDatas(fd, data[count]);
+ }
+
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/u16RPISerialSendDatas.c b/src/c/hardware/rasberrypi/serial/u16RPISerialSendDatas.c
new file mode 100644
index 0000000..5b2d056
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/u16RPISerialSendDatas.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send unsigned 16-bit data on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 u16RPISerialSendDatas(int fd, uint16 data)
+{
+ //Send lsb first
+ serialPutchar(fd, (uint8) data);
+ serialPutchar(fd, (uint8) (data>>8));
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/u8RPISerialCloses.c b/src/c/hardware/rasberrypi/serial/u8RPISerialCloses.c
new file mode 100644
index 0000000..d5d4e37
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/u8RPISerialCloses.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to close serial port opened. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 u8RPISerialCloses(int fd)
+{
+ serialClose (fd);
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/u8RPISerialFlushs.c b/src/c/hardware/rasberrypi/serial/u8RPISerialFlushs.c
new file mode 100644
index 0000000..2df1f37
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/u8RPISerialFlushs.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to discards data serial buffer (received as well as waiting to be sent */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 u8RPISerialFlushs(int fd)
+{
+ serialFlush(fd);
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/u8RPISerialSendChars.c b/src/c/hardware/rasberrypi/serial/u8RPISerialSendChars.c
new file mode 100644
index 0000000..ca15b21
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/u8RPISerialSendChars.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send 8-bit char on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 u8RPISerialSendChars(int fd, uint8 data)
+{
+ serialPutchar(fd, data);
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/u8RPISerialSendDataa.c b/src/c/hardware/rasberrypi/serial/u8RPISerialSendDataa.c
new file mode 100644
index 0000000..e2fe32f
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/u8RPISerialSendDataa.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send unsigned 8-bit byte array/matrix on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 u8RPISerialSendDataa(int fd, uint8* data, int size)
+{
+ int count = 0;
+
+ for (count = 0; count < size; ++count)
+ {
+ u8RPISerialSendDatas(fd, data[count]);
+ }
+
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/u8RPISerialSendDatas.c b/src/c/hardware/rasberrypi/serial/u8RPISerialSendDatas.c
new file mode 100644
index 0000000..86d2be5
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/u8RPISerialSendDatas.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to send unsigned 8-bit byte on specified serial port. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+uint8 u8RPISerialSendDatas(int fd, uint8 data)
+{
+ serialPutchar(fd, data);
+
+ return 0;
+}
diff --git a/src/c/hardware/rasberrypi/serial/u8RPISerialSetups.c b/src/c/hardware/rasberrypi/serial/u8RPISerialSetups.c
new file mode 100644
index 0000000..6912279
--- /dev/null
+++ b/src/c/hardware/rasberrypi/serial/u8RPISerialSetups.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to setup port with desired baud rate. */
+
+#include "types.h"
+#include "RPIPeripheralSerial.h"
+
+int u8RPISerialSetups(char* port, int baudrate)
+{
+ int fd;
+
+ fd = serialOpen (port, baudrate);
+
+ return fd;
+}
diff --git a/src/c/hardware/rasberrypi/threading/u16RPIThreadCreates.c b/src/c/hardware/rasberrypi/threading/u16RPIThreadCreates.c
new file mode 100644
index 0000000..d94beff
--- /dev/null
+++ b/src/c/hardware/rasberrypi/threading/u16RPIThreadCreates.c
@@ -0,0 +1,24 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to create thread for given function */
+
+#include "types.h"
+#include "RPIPeripheralThreading.h"
+
+uint16 RPIThreadCreate(void (*threadFunction))
+{
+ int status;
+ status = piThreadCreate (threadFunction);
+ return status;
+}
+
diff --git a/src/c/hardware/rasberrypi/timing/u16RPIDelayMicros.c b/src/c/hardware/rasberrypi/timing/u16RPIDelayMicros.c
new file mode 100644
index 0000000..48418c0
--- /dev/null
+++ b/src/c/hardware/rasberrypi/timing/u16RPIDelayMicros.c
@@ -0,0 +1,22 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to insert some delay in code execution. */
+
+#include "types.h"
+#include "RPIPeripheralTiming.h"
+
+uint8 u16RPIDelayMicros(uint16 time)
+{
+ delayMicroseconds(time);
+}
+
diff --git a/src/c/hardware/rasberrypi/timing/u16RPIDelayMillis.c b/src/c/hardware/rasberrypi/timing/u16RPIDelayMillis.c
new file mode 100644
index 0000000..2dc59bb
--- /dev/null
+++ b/src/c/hardware/rasberrypi/timing/u16RPIDelayMillis.c
@@ -0,0 +1,25 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to insert some delay in code execution. */
+
+
+
+#include "types.h"
+#include "RPIPeripheralTiming.h"
+
+uint8 u16RPIDelayMillis(uint16 time)
+{
+ delay(time);
+
+}
+
diff --git a/src/c/hardware/rasberrypi/timing/u32RPIGetMicros.c b/src/c/hardware/rasberrypi/timing/u32RPIGetMicros.c
new file mode 100644
index 0000000..eb086a9
--- /dev/null
+++ b/src/c/hardware/rasberrypi/timing/u32RPIGetMicros.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to get time in microsecond since first setup function called */
+
+#include "types.h"
+#include "RPIPeripheralTiming.h"
+
+uint32 u32RPIGetMicros()
+{
+ return(micros());
+} \ No newline at end of file
diff --git a/src/c/hardware/rasberrypi/timing/u32RPIGetMillis.c b/src/c/hardware/rasberrypi/timing/u32RPIGetMillis.c
new file mode 100644
index 0000000..c118975
--- /dev/null
+++ b/src/c/hardware/rasberrypi/timing/u32RPIGetMillis.c
@@ -0,0 +1,21 @@
+/* Copyright (C) 2016 - IIT Bombay - FOSSEE
+
+ This file must be used under the terms of the CeCILL.
+ This source file is licensed as described in the file COPYING, which
+ you should have received as part of this distribution. The terms
+ are also available at
+ http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ Author: Siddhesh Wani
+ Organization: FOSSEE, IIT Bombay
+ Email: toolbox@scilab.in
+*/
+
+/* Function to get time in millisecond since first setup function called */
+
+#include "types.h"
+#include "RPIPeripheralTiming.h"
+
+uint32 u32RPIGetMillis()
+{
+ return(millis());
+} \ No newline at end of file
diff --git a/src/c/hardware/rasberrypi/util/u16RPIDelayMicros.c b/src/c/hardware/rasberrypi/util/u16RPIDelayMicros.c
deleted file mode 100644
index f29635b..0000000
--- a/src/c/hardware/rasberrypi/util/u16RPIDelayMicros.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright (C) 2016 - IIT Bombay - FOSSEE
-
- This file must be used under the terms of the CeCILL.
- This source file is licensed as described in the file COPYING, which
- you should have received as part of this distribution. The terms
- are also available at
- http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- Author: Siddhesh Wani
- Organization: FOSSEE, IIT Bombay
- Email: toolbox@scilab.in
-*/
-
-/* Function to insert some delay in code execution.
-
- Calling Sequence
- u16RPIDelayMicros(time)
-
- Parameters
- time: time(microseconds) for which execution is to be delayed
-
- Description
- this function can be used for insertig execution delays. 'time' should be
- specified in microseconds.'time' should be between (1-65536).
- Note: Delay inserted by this function is not accurate, but depedent on
- operating system, other running tasks etc.
-
- Examples
- u16RPIDelayMicros(100) //This will delay the execution of next code by 100 ms.
-*/
-
-#include "types.h"
-#include "RPIPeripheralUtil.h"
-
-uint8 u16RPIDelayMicros(uint16 time)
-{
- bcm2835_delayMicroseconds(time);
-}
-
diff --git a/src/c/hardware/rasberrypi/util/u16RPIDelayMillis.c b/src/c/hardware/rasberrypi/util/u16RPIDelayMillis.c
deleted file mode 100644
index f03e8ba..0000000
--- a/src/c/hardware/rasberrypi/util/u16RPIDelayMillis.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 2016 - IIT Bombay - FOSSEE
-
- This file must be used under the terms of the CeCILL.
- This source file is licensed as described in the file COPYING, which
- you should have received as part of this distribution. The terms
- are also available at
- http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- Author: Siddhesh Wani
- Organization: FOSSEE, IIT Bombay
- Email: toolbox@scilab.in
-*/
-
-/* Function to insert some delay in code execution.
-
- Calling Sequence
- u16RPIDelayMillis(time)
-
- Parameters
- time: time(milliseconds) for which execution is to be delayed
-
- Description
- this function can be used for insertig execution delays. 'time' should be
- specified in milliseconds.'time' should be between (1-65536).
- Note: Delay inserted by this function is not accurate, but depedent on
- operating system, other running tasks etc.
-
- Examples
- u16RPIDelayMillis(100) //This will delay the execution of next code by 100 ms.
-*/
-
-#include "types.h"
-#include "RPIPeripheralUtil.h"
-
-uint8 u16RPIDelayMillis(uint16 time)
-{
- bcm2835_delay(time);
-
-}
-