From 201e22f9221a72a6bde04a7060db470e4fab62fc Mon Sep 17 00:00:00 2001 From: Brendan Le Foll Date: Thu, 1 May 2014 15:27:34 +0100 Subject: [PATCH] swig: name functions explicitly and use %extend to convert _context structs to objects Signed-off-by: Brendan Le Foll --- src/maa.i | 6 ++-- src/python/pymaa.i | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 87 insertions(+), 7 deletions(-) diff --git a/src/maa.i b/src/maa.i index aa51907..d32ae8a 100644 --- a/src/maa.i +++ b/src/maa.i @@ -6,8 +6,6 @@ #include "spi.h" %} +%rename(get_version) maa_get_version(); %include "maa.h" -%include "gpio.h" -%include "pwm.h" -%include "i2c.h" -%include "spi.h" + diff --git a/src/python/pymaa.i b/src/python/pymaa.i index bbbd5a3..8cca2e8 100644 --- a/src/python/pymaa.i +++ b/src/python/pymaa.i @@ -1,8 +1,6 @@ %module(docstring="Python interface to libmaa") pymaa -%rename("%(strip:[maa_])s") ""; - -%feature("autodoc", "1"); +%feature("autodoc", "3"); #ifdef DOXYGEN %include ../maa_doc.i @@ -12,3 +10,87 @@ #endif %include ../maa.i + +#### GPIO #### + +%rename(Gpio) maa_gpio_context; + +typedef struct { + /*@{*/ + int pin; /**< the pin number, as known to the os. */ + FILE *value_fp; /**< the file pointer to the value of the gpio */ + /*@}*/ +} maa_gpio_context; + +%nodefault maa_gpio_context; +%extend maa_gpio_context { + maa_gpio_context(int pin) + { + return maa_gpio_init(pin); + } + ~maa_gpio_context() + { + maa_gpio_close($self); + } + int write(int value) + { + return maa_gpio_write($self, value); + } + int dir(gpio_dir_t dir) + { + return maa_gpio_dir($self, dir); + } + int read() + { + return maa_gpio_read($self); + } + int mode(gpio_mode_t mode) + { + return maa_gpio_mode($self, mode); + } +} + +#### i2c #### + +%rename(I2c) maa_i2c_context; + +typedef struct { + /*@{*/ + int hz; /**< frequency of communication */ + int fh; /**< the file handle to the /dev/i2c-* device */ + int addr; /**< the address of the i2c slave */ + maa_gpio_context gpio; + /*@}*/ +} maa_i2c_context; + +%nodefault maa_i2c_context; +%extend maa_i2c_context { + maa_i2c_context() + { + return maa_i2c_init(); + } + ~maa_i2c_context() + { + maa_i2c_stop($self); + } + int frequency(int hz) + { + return maa_i2c_frequency($self, hz); + } + int read(char *data, int length) + { + return maa_i2c_read($self, data, length); + } + int read() + { + return maa_i2c_read_byte($self); + } + int write(char *data, int length) + { + return maa_i2c_write($self, data, length); + } + int write(int data) + { + return maa_i2c_write_byte($self, data); + } +} -- 2.7.4