diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 6104025..4ca7c8a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,8 @@ +0.5.6 +--- +* Fix for Issue #63 where re-setting up a pin wasn't lining up with RPi.GPIO standards. Calling setup after the first time will now update direction. +* README updates to point out the direction() function since that was missing + 0.5.5 --- * Fix for Issue #62 where using alternate name of an XIO would cause a segfault due to trying to set pull up/down resistor setting diff --git a/README.rst b/README.rst index 1fc7611..815d0f6 100644 --- a/README.rst +++ b/README.rst @@ -225,6 +225,16 @@ Read lots of data:: This code was initially added by brettcvz and I cleaned it up and expanded it. +You can quickly change a pins direction:: + + GPIO.direction("XIO-P3", GPIO.OUT) + GPIO.direction("XIO-P3", GPIO.IN) + +You can also re-setup a pin in order to change direction, not that this is a slower operation:: + + GPIO.setup("XIO-P3", GPIO.OUT) + GPIO.setup("XIO-P3", GPIO.IN) + The edge detection code below only works for the AP-EINT1, AP-EINT3, and XPO Pins on the CHIP. Waiting for an edge (GPIO.RISING, GPIO.FALLING, or GPIO.BOTH:: diff --git a/debian/changelog b/debian/changelog index 0589677..2cfece1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +chip-io (0.5.6-1) unstable; urgency=low + + * Fix for Issue #63 where re-setting up a pin wasn't lining up with RPi.GPIO standards. Calling setup after the first time will now update direction. + * README updates to point out the direction() function since that was missing + + -- Robert Wolterman Mon, 20 Mar 2017 23:04:00 -0600 + chip-io (0.5.5-1) unstable; urgency=low * Fix for Issue #62 where using alternate name of an XIO would cause a segfault due to trying to set pull up/down resistor setting diff --git a/setup.py b/setup.py index 543eca9..af9f095 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ classifiers = ['Development Status :: 3 - Alpha', 'Topic :: System :: Hardware'] setup(name = 'CHIP_IO', - version = '0.5.5', + version = '0.5.6', author = 'Robert Wolterman', author_email = 'robert.wolterman@gmail.com', description = 'A module to control CHIP IO channels', diff --git a/source/constants.c b/source/constants.c index acf6090..b30b3d4 100644 --- a/source/constants.c +++ b/source/constants.c @@ -85,6 +85,6 @@ void define_constants(PyObject *module) bcm = Py_BuildValue("i", BCM); PyModule_AddObject(module, "BCM", bcm); - version = Py_BuildValue("s", "0.5.5"); + version = Py_BuildValue("s", "0.5.6"); PyModule_AddObject(module, "VERSION", version); } diff --git a/source/event_gpio.c b/source/event_gpio.c index 3f5e0eb..8eb60ef 100644 --- a/source/event_gpio.c +++ b/source/event_gpio.c @@ -177,7 +177,7 @@ int gpio_export(int gpio) char err[256]; snprintf(err, sizeof(err), "gpio_export: could not write '%s' to %s (%s)", str_gpio, filename, strerror(e_no)); add_error_msg(err); - return -1; + return -2; } // add to list diff --git a/source/py_gpio.c b/source/py_gpio.c index 677cccc..e6f7914 100644 --- a/source/py_gpio.c +++ b/source/py_gpio.c @@ -215,11 +215,16 @@ static PyObject *py_setup_channel(PyObject *self, PyObject *args, PyObject *kwar init_r8_gpio_mem(); } - if (gpio_export(gpio) < 0) { + int exprtn = gpio_export(gpio); + if (exprtn == -1) { char err[2000]; snprintf(err, sizeof(err), "Error setting up channel %s, maybe already exported? (%s)", channel, get_error_msg()); PyErr_SetString(PyExc_RuntimeError, err); return NULL; + } else if (exprtn == -2 && gpio_warnings) { + char warn[2000]; + snprintf(warn, sizeof(warn), "Channel %s may already be exported, proceeding with rest of setup", channel); + PyErr_WarnEx(PyExc_Warning, warn, 1); } if (gpio_set_direction(gpio, direction) < 0) { char err[2000];