%module(docstring="Python interface to libmaa") pymaa
-%rename("%(strip:[maa_])s") "";
-
-%feature("autodoc", "1");
+%feature("autodoc", "3");
#ifdef DOXYGEN
%include ../maa_doc.i
#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);
+ }
+}