gpio.hpp: Add C++ wrapper around Gpio
[contrib/mraa.git] / src / maa.i
index 8845a14..ac24a4c 100644 (file)
--- a/src/maa.i
+++ b/src/maa.i
@@ -1,6 +1,6 @@
 %{
     #include "maa.h"
-    #include "gpio.h"
+    #include "gpio.hpp"
     #include "pwm.hpp"
     #include "i2c.hpp"
     #include "spi.h"
@@ -17,112 +17,7 @@ const char * maa_get_version();
 
 #### GPIO ####
 
-typedef enum {
-    MAA_GPIO_STRONG     = 0, /**< Default. Strong high and low */
-    MAA_GPIO_PULLUP     = 1, /**< Resistive High */
-    MAA_GPIO_PULLDOWN   = 2, /**< Resistive Low */
-    MAA_GPIO_HIZ        = 3  /**< High Z State */
-} gpio_mode_t;
-
-typedef enum {
-    MAA_GPIO_OUT    = 0, /**< Output. A Mode can also be set */
-    MAA_GPIO_IN     = 1  /**< Input. */
-} gpio_dir_t;
-
-%nodefault maa_gpio_context;
-%rename(Gpio) maa_gpio_context;
-%ignore value_fp;
-
-%feature("autodoc") maa_gpio_context "
-Create a Gpio object and export it. Depending on your board the correct GPIO
-value will be used. If raw is true then the pin that will be initialised will
-be the hardcoded pin value in the kernel. Please see your board IO
-documentation to understand exactly what will happen.
-
-Parameters:
-        * pin: pin number read from the board, i.e IO3 is 3
-        * raw: set to True to use real pin value from the kernel";
-typedef struct {
-    /*@{*/
-    int pin; /**< the pin number, as known to the os. */
-    FILE *value_fp; /**< the file pointer to the value of the gpio */
-#if defined(SWIGPYTHON)
-    PyObject *isr; /**< the interupt service request */
-#endif
-    pthread_t thread_id; /**< the isr handler thread id */
-    int isr_value_fp; /**< the isr file pointer on the value */
-    /*@}*/
-} maa_gpio_context;
-
-%typemap(check) PyObject *pyfunc {
-  if (!PyCallable_Check($1))
-    SWIG_exception(SWIG_TypeError,"Expected function.");
-}
-
-%extend maa_gpio_context {
-  maa_gpio_context(int pin, int raw=0)
-  {
-    if (raw)
-      return maa_gpio_init_raw(pin);
-    return maa_gpio_init(pin);
-  }
-  ~maa_gpio_context()
-  {
-    maa_gpio_unexport($self);
-  }
-  %feature("autodoc") write "
-  Write a value to a GPIO pin
-
-  Parameters:
-        * value: value to write to GPIO";
-  int write(int value)
-  {
-    return maa_gpio_write($self, value);
-  }
-  %feature("autodoc") dir "
-  Set the gpio direction
-
-  Parameters:
-        * dir: GPIO direction";
-  int dir(gpio_dir_t dir)
-  {
-    return maa_gpio_dir($self, dir);
-  }
-  %feature("autodoc") read "
-  Read the value of a GPIO
-
-  Returns:
-        * value: GPIO value";
-  int read()
-  {
-    return maa_gpio_read($self);
-  }
-  %feature("autodoc") mode "
-  Set the GPIO mode
-
-  Parameters:
-        * mode: GPIO mode to set";
-  int mode(gpio_mode_t mode)
-  {
-    return maa_gpio_mode($self, mode);
-  }
-#if defined(SWIGPYTHON)
-  //set python method as the isr function
-  int set_isr(PyObject *pyfunc)
-  {
-    Py_INCREF(pyfunc);
-    // do a nasty cast to get away from the warnings
-    maa_gpio_isr(self, MAA_GPIO_EDGE_BOTH, (void (*) ()) pyfunc);
-    return 0;
-  }
-#else
-  %ignore maa_gpio_isr;
-#endif
-  int isr_exit()
-  {
-    maa_gpio_isr_exit(self);
-  }
-}
+%include "gpio.hpp"
 
 #### i2c ####