Mercurial > code > home > repos > light9
comparison light8/serport.i @ 0:45b12307c695
Initial revision
author | drewp |
---|---|
date | Wed, 03 Jul 2002 09:37:57 +0000 |
parents | |
children | 0b86bf6808f8 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:45b12307c695 |
---|---|
1 %module serport | |
2 | |
3 %{ | |
4 #include <sys/types.h> | |
5 #include <sys/stat.h> | |
6 #include <sys/ioctl.h> | |
7 #include <fcntl.h> | |
8 #include <linux/i2c.h> | |
9 #include <linux/i2c-dev.h> | |
10 #include <unistd.h> | |
11 %} | |
12 | |
13 | |
14 %typemap(python,in) __u8 { | |
15 if( !PyInt_Check($input)) { | |
16 PyErr_SetString(PyExc_TypeError,"not an integer"); | |
17 return NULL; | |
18 } | |
19 $1 = ($type) PyInt_AsLong($input); | |
20 } | |
21 | |
22 %typemap(python,out) __s32 { | |
23 $result = Py_BuildValue("i", ($type) $1); | |
24 } | |
25 | |
26 %inline %{ | |
27 | |
28 __s32 i2c_smbus_write_byte(int file, __u8 value); | |
29 __s32 i2c_smbus_read_byte(int file); | |
30 | |
31 PyObject *read_all_adc(int file) { | |
32 PyObject *t=PyTuple_New(4); | |
33 | |
34 #define CHAN_TO_TUPLE_POS(chan,idx) i2c_smbus_write_byte(file, chan);\ | |
35 PyTuple_SetItem(t,idx,PyInt_FromLong(i2c_smbus_read_byte(file))); | |
36 | |
37 /* | |
38 these are shuffled here to match the way the pots read in. in | |
39 the returned tuple, 0=left pot..3=right pot. | |
40 */ | |
41 CHAN_TO_TUPLE_POS(1,0) | |
42 CHAN_TO_TUPLE_POS(2,1) | |
43 CHAN_TO_TUPLE_POS(3,2) | |
44 CHAN_TO_TUPLE_POS(0,3) | |
45 | |
46 return t; | |
47 | |
48 } | |
49 | |
50 %} |