gpio: enable very basic gpio control from swig
authorBrendan Le Foll <brendan.le.foll@intel.com>
Thu, 10 Apr 2014 17:00:50 +0000 (18:00 +0100)
committerBrendan Le Foll <brendan.le.foll@intel.com>
Thu, 10 Apr 2014 17:00:57 +0000 (18:00 +0100)
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
api/gpio.h
api/maa.h
examples/python/hello_gpio.py [new file with mode: 0644]
src/CMakeLists.txt
src/gpio/gpio.c [moved from src/gpio/gpio.cxx with 93% similarity]
src/maa.i

index 335a0b7..b58735e 100644 (file)
  * 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
index 4ab972f..c4883da 100644 (file)
--- 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 (file)
index 0000000..c2c2831
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/env python3
+
+import pymaa
+
+x = pymaa.gpio_t()
+print(x.pin)
+gpio_init(x, 20)
+print(x.pin)
index b8c4008..b9cac45 100644 (file)
@@ -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})
similarity index 93%
rename from src/gpio/gpio.cxx
rename to src/gpio/gpio.c
index 827d4bd..e2b5110 100644 (file)
  */
 
 #include <stdlib.h>
+#include <stdio.h>
+
 #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
index 7998812..3482c6c 100644 (file)
--- a/src/maa.i
+++ b/src/maa.i
@@ -4,3 +4,4 @@
 
 %include "maa.h"
 %include "i2c.h"
+%include "gpio.h"