1
0
mirror of https://github.com/xtacocorex/CHIP_IO synced 2025-07-20 12:53:22 +00:00

5 Commits

Author SHA1 Message Date
6e93fad1de README updates following the merge of PR#70 into master 2017-06-08 20:06:52 -05:00
41d4b84c56 Merge pull request #70 from mzealey/master
Extern integer definitions in the header file
2017-06-08 19:19:17 -05:00
024e5d5797 Extern integer definitions in the header file
Integers are defined in both the .c and the common.h file leading to linking
issues with the library when used externally and potentially causing issues
within the code as well.
2017-06-08 15:23:32 +00:00
6ddd0e0b14 Closing out Issue #68 by adding 3 CHIP Pro pins able to be used as interrupts 2017-05-02 22:46:10 -05:00
d4b1d8a41c adding i2s pins as gpio capable for the chip pro, code to handle per pwm/softpwm cleanup to close #64 2017-05-01 22:50:17 -05:00
11 changed files with 226 additions and 127 deletions

View File

@ -1,3 +1,18 @@
0.5.9
---
* Merged PR#70 to enable the underlying C code to be used properly in C based code
* Updated README to add missing pins on the CHIP Pro that are available as GPIO
* Updated README to denote pins that are available for Edge Detection
0.5.8
---
* Added 3 pins for the CHIP Pro as allowable for setting callbacks and edge detection to close out Issue #68
0.5.7
---
* Added the I2S pins on the CHIP Pro as GPIO capable
* Added per PWM/SoftPWM cleanup per Issue #64
0.5.6 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. * 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.

View File

@ -46,116 +46,125 @@ All scripts that require GPIO, PWM (HW and/or SW), and Overlay Manager need to b
The following "table" is the allowable pin names that are able to be used by the library. The Name column is the normal name used on the CHIP Headers, the Alt Name column is the value used by the PocketCHIP header (if it's broken out), and the Key is the Header and Pin Number the the Pin is physically located. Either of these 3 means is able to specify a pin in CHIP_IO. The following "table" is the allowable pin names that are able to be used by the library. The Name column is the normal name used on the CHIP Headers, the Alt Name column is the value used by the PocketCHIP header (if it's broken out), and the Key is the Header and Pin Number the the Pin is physically located. Either of these 3 means is able to specify a pin in CHIP_IO.
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CHIP (Name) | PocketCHIP/CHIP Pro Name | CHIP Key | HW Support | | CHIP (Main Name) | PocketCHIP/CHIP Pro Name | Key (Alt Name) | HW Support | Edge Detect |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| TWI1-SDA | KPD-I2C-SDA | U13_9 | CHIP/CHIP PRO | | TWI1-SDA | KPD-I2C-SDA | U13_9 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| TWI1-SCK | KPD-I2C-SCL | U13_11 | CHIP/CHIP PRO | | TWI1-SCK | KPD-I2C-SCL | U13_11 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D2 | UART2-TX | U13_17 | CHIP/CHIP PRO | | LCD-D2 | UART2-TX | U13_17 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| PWM0 | PWM0 | U13_18 | CHIP/CHIP PRO | | PWM0 | PWM0 | U13_18 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| PWM1 | PWM1 | EINT13 | CHIP PRO | | PWM1 | PWM1 | EINT13 | CHIP PRO | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D4 | UART2-CTS | U13_19 | CHIP/CHIP PRO | | LCD-D4 | UART2-CTS | U13_19 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D3 | UART2-RX | U13_20 | CHIP/CHIP PRO | | LCD-D3 | UART2-RX | U13_20 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D6 | LCD-D6 | U13_21 | CHIP | | LCD-D6 | LCD-D6 | U13_21 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D5 | UART2-RTS | U13_22 | CHIP/CHIP PRO | | LCD-D5 | UART2-RTS | U13_22 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D10 | LCD-D10 | U13_23 | CHIP | | LCD-D10 | LCD-D10 | U13_23 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D7 | LCD-D7 | U13_24 | CHIP | | LCD-D7 | LCD-D7 | U13_24 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D12 | LCD-D12 | U13_25 | CHIP | | LCD-D12 | LCD-D12 | U13_25 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D11 | LCD-D11 | U13_26 | CHIP | | LCD-D11 | LCD-D11 | U13_26 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D14 | LCD-D14 | U13_27 | CHIP | | LCD-D14 | LCD-D14 | U13_27 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D13 | LCD-D13 | U13_28 | CHIP | | LCD-D13 | LCD-D13 | U13_28 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D18 | LCD-D18 | U13_29 | CHIP | | LCD-D18 | LCD-D18 | U13_29 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D15 | LCD-D15 | U13_30 | CHIP | | LCD-D15 | LCD-D15 | U13_30 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D20 | LCD-D20 | U13_31 | CHIP | | LCD-D20 | LCD-D20 | U13_31 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D19 | LCD-D19 | U13_32 | CHIP | | LCD-D19 | LCD-D19 | U13_32 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D22 | LCD-D22 | U13_33 | CHIP | | LCD-D22 | LCD-D22 | U13_33 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D21 | LCD-D21 | U13_34 | CHIP | | LCD-D21 | LCD-D21 | U13_34 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-CLK | LCD-CLK | U13_35 | CHIP | | LCD-CLK | LCD-CLK | U13_35 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-D23 | LCD-D23 | U13_36 | CHIP | | LCD-D23 | LCD-D23 | U13_36 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-VSYNC | LCD-VSYNC | U13_37 | CHIP | | LCD-VSYNC | LCD-VSYNC | U13_37 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-HSYNC | LCD-HSYNC | U13_38 | CHIP | | LCD-HSYNC | LCD-HSYNC | U13_38 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LCD-DE | LCD-DE | U13_40 | CHIP | | LCD-DE | LCD-DE | U13_40 | CHIP | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| UART1-TX | UART-TX | U14_3 | CHIP/CHIP PRO | | UART1-TX | UART-TX | U14_3 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| UART1-RX | UART-RX | U14_5 | CHIP/CHIP PRO | | UART1-RX | UART-RX | U14_5 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| LRADC | ADC | U14_11 | CHIP/CHIP PRO | | LRADC | ADC | U14_11 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| XIO-P0 | XIO-P0 | U14_13 | CHIP | | XIO-P0 | XIO-P0 | U14_13 | CHIP | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| XIO-P1 | XIO-P1 | U14_14 | CHIP | | XIO-P1 | XIO-P1 | U14_14 | CHIP | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| XIO-P2 | GPIO1 | U14_15 | CHIP | | XIO-P2 | GPIO1 | U14_15 | CHIP | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| XIO-P3 | GPIO2 | U14_16 | CHIP | | XIO-P3 | GPIO2 | U14_16 | CHIP | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| XIO-P4 | GPIO3 | U14_17 | CHIP | | XIO-P4 | GPIO3 | U14_17 | CHIP | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| XIO-P5 | GPIO4 | U14_18 | CHIP | | XIO-P5 | GPIO4 | U14_18 | CHIP | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| XIO-P6 | GPIO5 | U14_19 | CHIP | | XIO-P6 | GPIO5 | U14_19 | CHIP | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| XIO-P7 | GPIO6 | U14_20 | CHIP | | XIO-P7 | GPIO6 | U14_20 | CHIP | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| AP-EINT1 | KPD-INT | U14_23 | CHIP/CHIP PRO | | AP-EINT1 | KPD-INT | U14_23 | CHIP/CHIP PRO | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| AP-EINT3 | AP-INT3 | U14_24 | CHIP/CHIP PRO | | AP-EINT3 | AP-INT3 | U14_24 | CHIP/CHIP PRO | YES |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| TWI2-SDA | I2C-SDA | U14_25 | CHIP/CHIP PRO | | TWI2-SDA | I2C-SDA | U14_25 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| TWI2-SCK | I2C-SCL | U14_26 | CHIP/CHIP PRO | | TWI2-SCK | I2C-SCL | U14_26 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSIPCK | SPI-SEL | U14_27 | CHIP/CHIP PRO | | CSIPCK | SPI-SEL | U14_27 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSICK | SPI-CLK | U14_28 | CHIP/CHIP PRO | | CSICK | SPI-CLK | U14_28 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSIHSYNC | SPI-MOSI | U14_29 | CHIP/CHIP PRO | | CSIHSYNC | SPI-MOSI | U14_29 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSIVSYNC | SPI-MISO | U14_30 | CHIP/CHIP PRO | | CSIVSYNC | SPI-MISO | U14_30 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSID0 | D0 | U14_31 | CHIP/CHIP PRO | | CSID0 | D0 | U14_31 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSID1 | D1 | U14_32 | CHIP/CHIP PRO | | CSID1 | D1 | U14_32 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSID2 | D2 | U14_33 | CHIP/CHIP PRO | | CSID2 | D2 | U14_33 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSID3 | D3 | U14_34 | CHIP/CHIP PRO | | CSID3 | D3 | U14_34 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSID4 | D4 | U14_35 | CHIP/CHIP PRO | | CSID4 | D4 | U14_35 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSID5 | D5 | U14_36 | CHIP/CHIP PRO | | CSID5 | D5 | U14_36 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSID6 | D6 | U14_37 | CHIP/CHIP PRO | | CSID6 | D6 | U14_37 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| CSID7 | D7 | U14_38 | CHIP/CHIP PRO | | CSID7 | D7 | U14_38 | CHIP/CHIP PRO | NO |
+------------------+--------------------------+-------------+-----------------+ +------------------+--------------------------+----------------+-----------------+-----------------+
| I2S-MCLK | EINT19 | 21 | CHIP PRO | YES |
+------------------+--------------------------+----------------+-----------------+-----------------+
| I2S-BCLK | I2S-BCLK | 22 | CHIP PRO | NO |
+------------------+--------------------------+----------------+-----------------+-----------------+
| I2S-LCLK | I2S-LCLK | 23 | CHIP PRO | NO |
+------------------+--------------------------+----------------+-----------------+-----------------+
| I2S-DO | EINT19 | 24 | CHIP PRO | NO |
+------------------+--------------------------+----------------+-----------------+-----------------+
| I2S-DI | EINT24 | 25 | CHIP PRO | YES |
+------------------+--------------------------+----------------+-----------------+-----------------+
**GPIO Setup** **GPIO Setup**
Import the library, and setup as GPIO.OUT or GPIO.IN:: Import the library, and setup as GPIO.OUT or GPIO.IN::

22
debian/changelog vendored
View File

@ -1,3 +1,25 @@
chip-io (0.5.9-1) unstable; urgency=low
* Merged PR#70 to enable the underlying C code to be used properly in C based code
* Updated README to add missing pins on the CHIP Pro that are available as GPIO
* Updated README to denote pins that are available for Edge Detection
-- Robert Wolterman <robert.wolterman@gmail.com> Tue, 08 Jun 2017 20:03:00 -0600
chip-io (0.5.8-1) unstable; urgency=low
* Added 3 pins for the CHIP Pro as allowable for setting callbacks and edge
detection to close out Issue #68
-- Robert Wolterman <robert.wolterman@gmail.com> Tue, 02 May 2017 22:43:00 -0600
chip-io (0.5.7-1) unstable; urgency=low
* Added the I2S pins on the CHIP Pro as GPIO capable
* Added per PWM/SoftPWM cleanup per Issue #64
-- Robert Wolterman <robert.wolterman@gmail.com> Mon, 01 May 2017 22:47:00 -0600
chip-io (0.5.6-1) unstable; urgency=low 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. * 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.

4
debian/files vendored
View File

@ -1,2 +1,2 @@
python-chip-io_0.5.5-1_armhf.deb python optional python-chip-io_0.5.8-1_armhf.deb python optional
python3-chip-io_0.5.5-1_armhf.deb python optional python3-chip-io_0.5.8-1_armhf.deb python optional

View File

@ -13,7 +13,7 @@ classifiers = ['Development Status :: 3 - Alpha',
'Topic :: System :: Hardware'] 'Topic :: System :: Hardware']
setup(name = 'CHIP_IO', setup(name = 'CHIP_IO',
version = '0.5.6', version = '0.5.9',
author = 'Robert Wolterman', author = 'Robert Wolterman',
author_email = 'robert.wolterman@gmail.com', author_email = 'robert.wolterman@gmail.com',
description = 'A module to control CHIP IO channels', description = 'A module to control CHIP IO channels',

View File

@ -138,6 +138,11 @@ pins_t pins_info[] = {
{ "CSID7", "D7", "U14_38", 139, BASE_METHOD_AS_IS, -1, -1, BOTH}, { "CSID7", "D7", "U14_38", 139, BASE_METHOD_AS_IS, -1, -1, BOTH},
{ "GND", "GND", "U14_39", -1, BASE_METHOD_AS_IS, -1, -1, BOTH}, { "GND", "GND", "U14_39", -1, BASE_METHOD_AS_IS, -1, -1, BOTH},
{ "GND", "GND", "U14_40", -1, BASE_METHOD_AS_IS, -1, -1, BOTH}, { "GND", "GND", "U14_40", -1, BASE_METHOD_AS_IS, -1, -1, BOTH},
{ "I2S-MCLK", "EINT19", "21", 37, BASE_METHOD_AS_IS, -1, -1, CHIPPRO},
{ "I2S-BCLK", "I2S-BCLK", "22", 38, BASE_METHOD_AS_IS, -1, -1, CHIPPRO},
{ "I2S-LCLK", "I2S-LCLK", "23", 39, BASE_METHOD_AS_IS, -1, -1, CHIPPRO},
{ "I2S-DO", "I2S-DO", "24", 40, BASE_METHOD_AS_IS, -1, -1, CHIPPRO},
{ "I2S-DI", "EINT24", "25", 41, BASE_METHOD_AS_IS, -1, -1, CHIPPRO},
{ NULL, NULL, NULL, -1, 0, -1, -1, -1} { NULL, NULL, NULL, -1, 0, -1, -1, -1}
}; };

View File

@ -86,9 +86,9 @@ typedef struct dyn_int_array_s dyn_int_array_t;
#define FILENAME_BUFFER_SIZE 128 #define FILENAME_BUFFER_SIZE 128
int setup_error; extern int setup_error;
int module_setup; extern int module_setup;
int DEBUG; extern int DEBUG;
int get_xio_base(void); int get_xio_base(void);
int is_this_chippro(void); int is_this_chippro(void);

View File

@ -85,6 +85,6 @@ void define_constants(PyObject *module)
bcm = Py_BuildValue("i", BCM); bcm = Py_BuildValue("i", BCM);
PyModule_AddObject(module, "BCM", bcm); PyModule_AddObject(module, "BCM", bcm);
version = Py_BuildValue("s", "0.5.6"); version = Py_BuildValue("s", "0.5.9");
PyModule_AddObject(module, "VERSION", version); PyModule_AddObject(module, "VERSION", version);
} }

View File

@ -596,6 +596,9 @@ static PyObject *py_add_event_callback(PyObject *self, PyObject *args, PyObject
// check to ensure gpio is one of the allowed pins // check to ensure gpio is one of the allowed pins
if (gpio != lookup_gpio_by_name("AP-EINT3") if (gpio != lookup_gpio_by_name("AP-EINT3")
&& gpio != lookup_gpio_by_name("AP-EINT1") && gpio != lookup_gpio_by_name("AP-EINT1")
&& gpio != lookup_gpio_by_name("I2S-MCLK") // CHIP PRO
&& gpio != lookup_gpio_by_name("I2S-DI") // CHIP PRO
&& gpio != lookup_gpio_by_name("PWM1") // CHIP PRO
&& !(gpio >= lookup_gpio_by_name("XIO-P0") && gpio <= lookup_gpio_by_name("XIO-P7"))) { && !(gpio >= lookup_gpio_by_name("XIO-P0") && gpio <= lookup_gpio_by_name("XIO-P7"))) {
PyErr_SetString(PyExc_ValueError, "Callbacks currently available on AP-EINT1, AP-EINT3, and XIO-P0 to XIO-P7 only"); PyErr_SetString(PyExc_ValueError, "Callbacks currently available on AP-EINT1, AP-EINT3, and XIO-P0 to XIO-P7 only");
return NULL; return NULL;
@ -665,6 +668,9 @@ static PyObject *py_add_event_detect(PyObject *self, PyObject *args, PyObject *k
// check to ensure gpio is one of the allowed pins // check to ensure gpio is one of the allowed pins
if (gpio != lookup_gpio_by_name("AP-EINT3") if (gpio != lookup_gpio_by_name("AP-EINT3")
&& gpio != lookup_gpio_by_name("AP-EINT1") && gpio != lookup_gpio_by_name("AP-EINT1")
&& gpio != lookup_gpio_by_name("I2S-MCLK") // CHIP PRO
&& gpio != lookup_gpio_by_name("I2S-DI") // CHIP PRO
&& gpio != lookup_gpio_by_name("PWM1") // CHIP PRO
&& !(gpio >= lookup_gpio_by_name("XIO-P0") && gpio <= lookup_gpio_by_name("XIO-P7"))) { && !(gpio >= lookup_gpio_by_name("XIO-P0") && gpio <= lookup_gpio_by_name("XIO-P7"))) {
PyErr_SetString(PyExc_ValueError, "Edge Detection currently available on AP-EINT1, AP-EINT3, and XIO-P0 to XIO-P7 only"); PyErr_SetString(PyExc_ValueError, "Edge Detection currently available on AP-EINT1, AP-EINT3, and XIO-P0 to XIO-P7 only");
return NULL; return NULL;
@ -741,6 +747,9 @@ static PyObject *py_remove_event_detect(PyObject *self, PyObject *args)
// check to ensure gpio is one of the allowed pins // check to ensure gpio is one of the allowed pins
if (gpio != lookup_gpio_by_name("AP-EINT3") if (gpio != lookup_gpio_by_name("AP-EINT3")
&& gpio != lookup_gpio_by_name("AP-EINT1") && gpio != lookup_gpio_by_name("AP-EINT1")
&& gpio != lookup_gpio_by_name("I2S-MCLK") // CHIP PRO
&& gpio != lookup_gpio_by_name("I2S-DI") // CHIP PRO
&& gpio != lookup_gpio_by_name("PWM1") // CHIP PRO
&& !(gpio >= lookup_gpio_by_name("XIO-P0") && gpio <= lookup_gpio_by_name("XIO-P7"))) { && !(gpio >= lookup_gpio_by_name("XIO-P0") && gpio <= lookup_gpio_by_name("XIO-P7"))) {
PyErr_SetString(PyExc_ValueError, "Edge Detection currently available on AP-EINT1, AP-EINT3, and XIO-P0 to XIO-P7 only"); PyErr_SetString(PyExc_ValueError, "Edge Detection currently available on AP-EINT1, AP-EINT3, and XIO-P0 to XIO-P7 only");
return NULL; return NULL;
@ -845,6 +854,9 @@ static PyObject *py_wait_for_edge(PyObject *self, PyObject *args)
// check to ensure gpio is one of the allowed pins // check to ensure gpio is one of the allowed pins
if (gpio != lookup_gpio_by_name("AP-EINT3") if (gpio != lookup_gpio_by_name("AP-EINT3")
&& gpio != lookup_gpio_by_name("AP-EINT1") && gpio != lookup_gpio_by_name("AP-EINT1")
&& gpio != lookup_gpio_by_name("I2S-MCLK") // CHIP PRO
&& gpio != lookup_gpio_by_name("I2S-DI") // CHIP PRO
&& gpio != lookup_gpio_by_name("PWM1") // CHIP PRO
&& !(gpio >= lookup_gpio_by_name("XIO-P0") && gpio <= lookup_gpio_by_name("XIO-P7"))) { && !(gpio >= lookup_gpio_by_name("XIO-P0") && gpio <= lookup_gpio_by_name("XIO-P7"))) {
PyErr_SetString(PyExc_ValueError, "Edge Detection currently available on AP-EINT1, AP-EINT3, and XIO-P0 to XIO-P7 only"); PyErr_SetString(PyExc_ValueError, "Edge Detection currently available on AP-EINT1, AP-EINT3, and XIO-P0 to XIO-P7 only");
return NULL; return NULL;

View File

@ -34,11 +34,29 @@ SOFTWARE.
#include "common.h" #include "common.h"
#include "c_pwm.h" #include "c_pwm.h"
// python function cleanup() // python function cleanup(channel)
static PyObject *py_cleanup(PyObject *self, PyObject *args) static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
{ {
// unexport the PWM char key[8];
char *channel;
static char *kwlist[] = {"channel", NULL};
clear_error_msg();
// Channel is optional
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|s", kwlist, &channel)) {
return NULL;
}
// The !channel fixes issues #50
if (channel == NULL || strcmp(channel, "\0") == 0) {
pwm_cleanup(); pwm_cleanup();
} else {
if (!get_pwm_key(channel, key)) {
pwm_cleanup();
}
pwm_disable(key);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@ -395,7 +413,7 @@ PyMethodDef pwm_methods[] = {
{"set_frequency", (PyCFunction)py_set_frequency, METH_VARARGS, "Change the frequency\nfrequency - frequency in Hz (freq > 0.0)" }, {"set_frequency", (PyCFunction)py_set_frequency, METH_VARARGS, "Change the frequency\nfrequency - frequency in Hz (freq > 0.0)" },
{"set_period_ns", (PyCFunction)py_set_period_ns, METH_VARARGS, "Change the period\nperiod_ns - period in nanoseconds" }, {"set_period_ns", (PyCFunction)py_set_period_ns, METH_VARARGS, "Change the period\nperiod_ns - period in nanoseconds" },
{"set_pulse_width_ns", (PyCFunction)py_set_pulse_width_ns, METH_VARARGS, "Change the period\npulse_width_ns - pulse width in nanoseconds" }, {"set_pulse_width_ns", (PyCFunction)py_set_pulse_width_ns, METH_VARARGS, "Change the period\npulse_width_ns - pulse width in nanoseconds" },
{"cleanup", py_cleanup, METH_VARARGS, "Clean up by resetting all GPIO channels that have been used by this program to INPUT with no pullup/pulldown and no event detection"}, {"cleanup", (PyCFunction)py_cleanup, METH_VARARGS | METH_KEYWORDS, "Clean up by resetting PWM channel(s) that have been used by this program to be disabled"},
{"toggle_debug", py_toggle_debug, METH_VARARGS, "Toggles the enabling/disabling of Debug print output"}, {"toggle_debug", py_toggle_debug, METH_VARARGS, "Toggles the enabling/disabling of Debug print output"},
{"is_chip_pro", py_is_chip_pro, METH_VARARGS, "Is hardware a CHIP Pro? Boolean False for normal CHIP/PocketCHIP (R8 SOC)"}, {"is_chip_pro", py_is_chip_pro, METH_VARARGS, "Is hardware a CHIP Pro? Boolean False for normal CHIP/PocketCHIP (R8 SOC)"},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}

View File

@ -43,11 +43,29 @@ static PyObject *py_toggle_debug(PyObject *self, PyObject *args)
Py_RETURN_NONE; Py_RETURN_NONE;
} }
// python function cleanup() // python function cleanup(channel)
static PyObject *py_cleanup(PyObject *self, PyObject *args) static PyObject *py_cleanup(PyObject *self, PyObject *args, PyObject *kwargs)
{ {
// unexport the PWM char key[8];
char *channel;
static char *kwlist[] = {"channel", NULL};
clear_error_msg();
// Channel is optional
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|s", kwlist, &channel)) {
return NULL;
}
// The !channel fixes issues #50
if (channel == NULL || strcmp(channel, "\0") == 0) {
softpwm_cleanup(); softpwm_cleanup();
} else {
if (!get_key(channel, key)) {
softpwm_cleanup();
}
softpwm_disable(key);
}
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@ -300,7 +318,7 @@ PyMethodDef pwm_methods[] = {
{"stop", (PyCFunction)py_stop_channel, METH_VARARGS | METH_KEYWORDS, "Stop the PWM channel. channel can be in the form of 'XIO-P0', or 'U14_13'"}, {"stop", (PyCFunction)py_stop_channel, METH_VARARGS | METH_KEYWORDS, "Stop the PWM channel. channel can be in the form of 'XIO-P0', or 'U14_13'"},
{"set_duty_cycle", (PyCFunction)py_set_duty_cycle, METH_VARARGS, "Change the duty cycle\ndutycycle - between 0.0 and 100.0" }, {"set_duty_cycle", (PyCFunction)py_set_duty_cycle, METH_VARARGS, "Change the duty cycle\ndutycycle - between 0.0 and 100.0" },
{"set_frequency", (PyCFunction)py_set_frequency, METH_VARARGS, "Change the frequency\nfrequency - frequency in Hz (freq > 0.0)" }, {"set_frequency", (PyCFunction)py_set_frequency, METH_VARARGS, "Change the frequency\nfrequency - frequency in Hz (freq > 0.0)" },
{"cleanup", (PyCFunction)py_cleanup, METH_VARARGS, "Clean up by resetting all GPIO channels that have been used by this program to INPUT with no pullup/pulldown and no event detection"}, {"cleanup", (PyCFunction)py_cleanup, METH_VARARGS | METH_KEYWORDS, "Clean up by resetting all GPIO channels that have been used by this program to INPUT with no pullup/pulldown and no event detection"},
{"toggle_debug", py_toggle_debug, METH_VARARGS, "Toggles the enabling/disabling of Debug print output"}, {"toggle_debug", py_toggle_debug, METH_VARARGS, "Toggles the enabling/disabling of Debug print output"},
{"is_chip_pro", py_is_chip_pro, METH_VARARGS, "Is hardware a CHIP Pro? Boolean False for normal CHIP/PocketCHIP (R8 SOC)"}, {"is_chip_pro", py_is_chip_pro, METH_VARARGS, "Is hardware a CHIP Pro? Boolean False for normal CHIP/PocketCHIP (R8 SOC)"},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}