diff light8/serport.i @ 0:45b12307c695

Initial revision
author drewp
date Wed, 03 Jul 2002 09:37:57 +0000
parents
children 0b86bf6808f8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/light8/serport.i	Wed Jul 03 09:37:57 2002 +0000
@@ -0,0 +1,50 @@
+%module serport
+
+%{
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <linux/i2c.h>
+#include <linux/i2c-dev.h>
+#include <unistd.h>
+%}
+
+
+%typemap(python,in) __u8 {
+  if( !PyInt_Check($input)) {
+    PyErr_SetString(PyExc_TypeError,"not an integer");
+    return NULL;
+  }
+  $1 = ($type) PyInt_AsLong($input);
+}
+
+%typemap(python,out) __s32 {
+  $result = Py_BuildValue("i", ($type) $1);
+}
+
+%inline %{
+
+  __s32 i2c_smbus_write_byte(int file, __u8 value);
+  __s32 i2c_smbus_read_byte(int file);
+
+  PyObject *read_all_adc(int file) {
+    PyObject *t=PyTuple_New(4);
+    
+    #define CHAN_TO_TUPLE_POS(chan,idx) i2c_smbus_write_byte(file, chan);\
+    PyTuple_SetItem(t,idx,PyInt_FromLong(i2c_smbus_read_byte(file)));
+
+    /*
+      these are shuffled here to match the way the pots read in. in
+      the returned tuple, 0=left pot..3=right pot.
+    */
+    CHAN_TO_TUPLE_POS(1,0)
+    CHAN_TO_TUPLE_POS(2,1)
+    CHAN_TO_TUPLE_POS(3,2)
+    CHAN_TO_TUPLE_POS(0,3)
+      
+    return t;
+
+  }
+
+%}