From e59b8b2038db0e8e43efcdf5efd2d4062765837b Mon Sep 17 00:00:00 2001 From: Brendan Le Foll Date: Thu, 10 Apr 2014 18:00:50 +0100 Subject: [PATCH] gpio: enable very basic gpio control from swig Signed-off-by: Brendan Le Foll --- api/gpio.h | 35 +++++++++++++++++++++-------------- api/maa.h | 1 + examples/python/hello_gpio.py | 8 ++++++++ src/CMakeLists.txt | 2 +- src/gpio/{gpio.cxx => gpio.c} | 16 +++++++++++++--- src/maa.i | 1 + 6 files changed, 45 insertions(+), 18 deletions(-) create mode 100644 examples/python/hello_gpio.py rename src/gpio/{gpio.cxx => gpio.c} (93%) diff --git a/api/gpio.h b/api/gpio.h index 335a0b7..b58735e 100644 --- a/api/gpio.h +++ b/api/gpio.h @@ -23,21 +23,28 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -namespace maa { +#ifdef __cplusplus +extern "C" { +#endif - struct gpio_t { - int pin; - int pinMap; - char path[32]; - }; - typedef char gpio_mode_t[8]; - typedef char gpio_dir_t[8]; +typedef struct gpio_struct +{ + int pin; + int pinMap; + char path[64]; +} gpio_t; - void gpio_init(gpio_t *gpio, int pin); - int gpio_set(int pin); - void gpio_mode(gpio_t *gpio, gpio_mode_t mode); - void gpio_dir(gpio_t *gpio, gpio_dir_t dir); +typedef char gpio_mode_t[16]; +typedef char gpio_dir_t[16]; - int gpio_read(gpio_t *gpio); - void gpio_write(gpio_t *gpio, int value); +void gpio_init(gpio_t *gpio, int pin); +int gpio_set(int pin); +void gpio_mode(gpio_t *gpio, gpio_mode_t mode); +void gpio_dir(gpio_t *gpio, gpio_dir_t dir); + +int gpio_read(gpio_t *gpio); +void gpio_write(gpio_t *gpio, int value); + +#ifdef __cplusplus } +#endif diff --git a/api/maa.h b/api/maa.h index 4ab972f..c4883da 100644 --- a/api/maa.h +++ b/api/maa.h @@ -25,6 +25,7 @@ #pragma once #include "i2c.h" +#include "gpio.h" #define MAA_LIBRARY_VERSION 1 diff --git a/examples/python/hello_gpio.py b/examples/python/hello_gpio.py new file mode 100644 index 0000000..c2c2831 --- /dev/null +++ b/examples/python/hello_gpio.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 + +import pymaa + +x = pymaa.gpio_t() +print(x.pin) +gpio_init(x, 20) +print(x.pin) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b8c4008..b9cac45 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -7,7 +7,7 @@ set (maa_LIB_SRCS ${PROJECT_SOURCE_DIR}/src/maa.cxx ${PROJECT_SOURCE_DIR}/src/i2c/i2c.cxx ${PROJECT_SOURCE_DIR}/src/i2c/smbus.c - ${PROJECT_SOURCE_DIR}/src/gpio/gpio.cxx + ${PROJECT_SOURCE_DIR}/src/gpio/gpio.c ) add_library (maa STATIC ${maa_LIB_SRCS}) diff --git a/src/gpio/gpio.cxx b/src/gpio/gpio.c similarity index 93% rename from src/gpio/gpio.cxx rename to src/gpio/gpio.c index 827d4bd..e2b5110 100644 --- a/src/gpio/gpio.cxx +++ b/src/gpio/gpio.c @@ -24,17 +24,21 @@ */ #include +#include + #include "gpio.h" -using namespace maa; +#ifdef __cplusplus +extern "C" { +#endif void gpio_init(gpio_t *gpio, int pin) { - malloc(sizeof(gpio_t)); gpio->pin = pin; } + int -gpio_set(gpio_t *gpio) { +gpio_set(int pin) { //Stuff return 0; } @@ -43,16 +47,22 @@ void gpio_mode(gpio_t *gpio, gpio_mode_t mode) { //gpio->pin } + void gpio_dir(gpio_t *gpio, gpio_dir_t dir) { } + int gpio_read(gpio_t *gpio) { return 0; } + void gpio_write(gpio_t *gpio, int value){ } +#ifdef __cplusplus +} +#endif diff --git a/src/maa.i b/src/maa.i index 7998812..3482c6c 100644 --- a/src/maa.i +++ b/src/maa.i @@ -4,3 +4,4 @@ %include "maa.h" %include "i2c.h" +%include "gpio.h" -- 2.7.4