From 97a4f5131ee0101e5d92407c6f5974b8e8dcf0ce Mon Sep 17 00:00:00 2001 From: Philip Howard Date: Sun, 7 Apr 2013 11:06:20 +0000 Subject: [PATCH] Various fixes --- CHANGES.txt | 3 +++ MANIFEST.in | 1 + setup.py | 4 ++-- wiringpi.i | 3 +++ wiringpi2-class.py | 18 ++++++++++++++ wiringpi2.py | 26 ++++++++++++++++++++ wiringpi2.pyc | Bin 25869 -> 28020 bytes wiringpi_wrap.c | 58 +++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 111 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index c504481..dc341cf 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -6,3 +6,6 @@ v1.0.4 -- Added class wrapper, plus analogRead/Write functions v1.0.5 -- Second attempt at pretty Pypi page v1.0.6 -- Fixed spelling error in softToneCreate - Thanks oevsegneev v1.0.7 -- Added LCD functionality +v1.0.8 -- Updated manifest to include .rst and fix build error +v1.0.9 -- Erroneous non-fix due to stupidity +v1.0.10 -- Added I2CSetup and new I2C class diff --git a/MANIFEST.in b/MANIFEST.in index 4d941f2..dd99154 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,3 @@ graft WiringPi/wiringPi include *.txt +include *.rst diff --git a/setup.py b/setup.py index ff987a4..338eb2e 100644 --- a/setup.py +++ b/setup.py @@ -31,14 +31,14 @@ _wiringpi2 = Extension( setup( name = 'wiringpi2', - version = '1.0.7', + version = '1.0.10', author = "Philip Howard", author_email = "phil@gadgetoid.com", url = 'https://github.com/Gadgetoid/WiringPi2-Python/', description = """A python interface to WiringPi 2.0 library which allows for easily interfacing with the GPIO pins of the Raspberry Pi. Also supports i2c and SPI""", - long_description=open('README.rst','rt').read(), + long_description=open('README').read(), ext_modules = [ _wiringpi2 ], py_modules = ["wiringpi2"], install_requires=[], diff --git a/wiringpi.i b/wiringpi.i index 1538c38..a38d5a0 100644 --- a/wiringpi.i +++ b/wiringpi.i @@ -105,6 +105,9 @@ int wiringPiSPISetup (int channel, int speed) ; // i2c +extern int wiringPiI2CSetupInterface (char *device, int devId) ; +extern int wiringPiI2CSetup (int devId) ; + extern int wiringPiI2CRead (int fd) ; extern int wiringPiI2CReadReg8 (int fd, int reg) ; extern int wiringPiI2CReadReg16 (int fd, int reg) ; diff --git a/wiringpi2-class.py b/wiringpi2-class.py index 822c18c..beeb811 100644 --- a/wiringpi2-class.py +++ b/wiringpi2-class.py @@ -26,6 +26,24 @@ class Serial(object): def __del__(self): serialClose(self.serial_id) +class I2C(object): + def setupInterface(self,*args): + return wiringPiI2CSetupInterface(*args) + def setup(self,*args): + return wiringPiI2CSetup(*args) + def read(self,*args): + return wiringPiI2CRead(*args) + def readReg8(self,*args): + return wiringPiI2CRead(*args) + def readReg16(self,*args): + return wiringPiI2CReadReg16(*args) + def write(self,*args): + return wiringPiI2CWrite(*args) + def writeReg8(self,*args): + return wiringPiI2CWriteReg8(*args) + def writeReg16(self,*args): + return wiringPiI2CWriteReg16(*args) + class GPIO(object): WPI_MODE_PINS = 0 WPI_MODE_GPIO = 1 diff --git a/wiringpi2.py b/wiringpi2.py index 2dad3e1..2940572 100644 --- a/wiringpi2.py +++ b/wiringpi2.py @@ -240,6 +240,14 @@ def wiringPiSPISetup(*args): return _wiringpi2.wiringPiSPISetup(*args) wiringPiSPISetup = _wiringpi2.wiringPiSPISetup +def wiringPiI2CSetupInterface(*args): + return _wiringpi2.wiringPiI2CSetupInterface(*args) +wiringPiI2CSetupInterface = _wiringpi2.wiringPiI2CSetupInterface + +def wiringPiI2CSetup(*args): + return _wiringpi2.wiringPiI2CSetup(*args) +wiringPiI2CSetup = _wiringpi2.wiringPiI2CSetup + def wiringPiI2CRead(*args): return _wiringpi2.wiringPiI2CRead(*args) wiringPiI2CRead = _wiringpi2.wiringPiI2CRead @@ -366,6 +374,24 @@ class Serial(object): def __del__(self): serialClose(self.serial_id) +class I2C(object): + def setupInterface(self,*args): + return wiringPiI2CSetupInterface(*args) + def setup(self,*args): + return wiringPiI2CSetup(*args) + def read(self,*args): + return wiringPiI2CRead(*args) + def readReg8(self,*args): + return wiringPiI2CRead(*args) + def readReg16(self,*args): + return wiringPiI2CReadReg16(*args) + def write(self,*args): + return wiringPiI2CWrite(*args) + def writeReg8(self,*args): + return wiringPiI2CWriteReg8(*args) + def writeReg16(self,*args): + return wiringPiI2CWriteReg16(*args) + class GPIO(object): WPI_MODE_PINS = 0 WPI_MODE_GPIO = 1 diff --git a/wiringpi2.pyc b/wiringpi2.pyc index 6f3ae5c2b84ccd3c3e013a0c53a51927b8afa645..cbde93d8045408091c64146507b85627ff8b5551 100644 GIT binary patch delta 4835 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 diff --git a/wiringpi_wrap.c b/wiringpi_wrap.c index 063f987..9b23aa6 100644 --- a/wiringpi_wrap.c +++ b/wiringpi_wrap.c @@ -4418,6 +4418,62 @@ fail: } +SWIGINTERN PyObject *_wrap_wiringPiI2CSetupInterface(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + int arg2 ; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"OO:wiringPiI2CSetupInterface",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "wiringPiI2CSetupInterface" "', argument " "1"" of type '" "char *""'"); + } + arg1 = (char *)(buf1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "wiringPiI2CSetupInterface" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + result = (int)wiringPiI2CSetupInterface(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); + return resultobj; +fail: + if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_wiringPiI2CSetup(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + int arg1 ; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + int result; + + if (!PyArg_ParseTuple(args,(char *)"O:wiringPiI2CSetup",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "wiringPiI2CSetup" "', argument " "1"" of type '" "int""'"); + } + arg1 = (int)(val1); + result = (int)wiringPiI2CSetup(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *_wrap_wiringPiI2CRead(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; int arg1 ; @@ -5447,6 +5503,8 @@ static PyMethodDef SwigMethods[] = { { (char *)"wiringPiSPIGetFd", _wrap_wiringPiSPIGetFd, METH_VARARGS, NULL}, { (char *)"wiringPiSPIDataRW", _wrap_wiringPiSPIDataRW, METH_VARARGS, NULL}, { (char *)"wiringPiSPISetup", _wrap_wiringPiSPISetup, METH_VARARGS, NULL}, + { (char *)"wiringPiI2CSetupInterface", _wrap_wiringPiI2CSetupInterface, METH_VARARGS, NULL}, + { (char *)"wiringPiI2CSetup", _wrap_wiringPiI2CSetup, METH_VARARGS, NULL}, { (char *)"wiringPiI2CRead", _wrap_wiringPiI2CRead, METH_VARARGS, NULL}, { (char *)"wiringPiI2CReadReg8", _wrap_wiringPiI2CReadReg8, METH_VARARGS, NULL}, { (char *)"wiringPiI2CReadReg16", _wrap_wiringPiI2CReadReg16, METH_VARARGS, NULL},