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"