mirror of
https://github.com/xtacocorex/CHIP_IO
synced 2025-07-20 12:53:22 +00:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
abbc4968c6 | |||
9a2e81f093 | |||
7cce06b472 |
@ -1,3 +1,7 @@
|
|||||||
|
0.2.6
|
||||||
|
----
|
||||||
|
* Fix to keep the GPIO value file open until the pin is unexported (issue #34)
|
||||||
|
|
||||||
0.2.5
|
0.2.5
|
||||||
----
|
----
|
||||||
* Updates to the pytest code for HWPWM and SoftPWM
|
* Updates to the pytest code for HWPWM and SoftPWM
|
||||||
|
@ -7,7 +7,6 @@ import sys
|
|||||||
def compile():
|
def compile():
|
||||||
print("Compiling DTS Files")
|
print("Compiling DTS Files")
|
||||||
call(["dtc", "-O", "dtb", "-o", "overlays/chip-spi2.dtbo", "-b", "o", "-@", "overlays/chip-spi2.dts"])
|
call(["dtc", "-O", "dtb", "-o", "overlays/chip-spi2.dtbo", "-b", "o", "-@", "overlays/chip-spi2.dts"])
|
||||||
call(["dtc", "-O", "dtb", "-o", "overlays/chip-i2c1.dtbo", "-b", "o", "-@", "overlays/chip-i2c1.dts"])
|
|
||||||
call(["dtc", "-O", "dtb", "-o", "overlays/chip-pwm0.dtbo", "-b", "o", "-@", "overlays/chip-pwm0.dts"])
|
call(["dtc", "-O", "dtb", "-o", "overlays/chip-pwm0.dtbo", "-b", "o", "-@", "overlays/chip-pwm0.dts"])
|
||||||
|
|
||||||
def copy():
|
def copy():
|
||||||
@ -22,5 +21,4 @@ def copy():
|
|||||||
os.remove(fl)
|
os.remove(fl)
|
||||||
print("Moving DTBO files to "+overlay_path)
|
print("Moving DTBO files to "+overlay_path)
|
||||||
shutil.move("overlays/chip-spi2.dtbo", overlay_path+"/chip-spi2.dtbo")
|
shutil.move("overlays/chip-spi2.dtbo", overlay_path+"/chip-spi2.dtbo")
|
||||||
shutil.move("overlays/chip-i2c1.dtbo", overlay_path+"/chip-i2c1.dtbo")
|
|
||||||
shutil.move("overlays/chip-pwm0.dtbo", overlay_path+"/chip-pwm0.dtbo")
|
shutil.move("overlays/chip-pwm0.dtbo", overlay_path+"/chip-pwm0.dtbo")
|
||||||
|
2
setup.py
2
setup.py
@ -20,7 +20,7 @@ classifiers = ['Development Status :: 3 - Alpha',
|
|||||||
'Topic :: System :: Hardware']
|
'Topic :: System :: Hardware']
|
||||||
|
|
||||||
setup(name = 'CHIP_IO',
|
setup(name = 'CHIP_IO',
|
||||||
version = '0.2.5',
|
version = '0.2.6',
|
||||||
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',
|
||||||
|
162
source/common.c
162
source/common.c
@ -50,87 +50,87 @@ int setup_error = 0;
|
|||||||
int module_setup = 0;
|
int module_setup = 0;
|
||||||
|
|
||||||
pins_t pins_info[] = {
|
pins_t pins_info[] = {
|
||||||
{ "GND", "GND", "U13_1", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U13_1", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CHG-IN", "CHG-IN", "U13_2", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "CHG-IN", "CHG-IN", "U13_2", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-5V", "VCC-5V", "U13_3", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-5V", "VCC-5V", "U13_3", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U13_4", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U13_4", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-3V3", "VCC-3V3", "U13_5", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-3V3", "VCC-3V3", "U13_5", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TS", "TS", "U13_6", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "TS", "TS", "U13_6", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-1V8", "VCC-1V8", "U13_7", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-1V8", "VCC-1V8", "U13_7", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "BAT", "BAT", "U13_8", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "BAT", "BAT", "U13_8", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TWI1-SDA", "KPD-I2C-SDA", "U13_9", 48, BASE_METHOD_AS_IS, -1, -1},
|
{ "TWI1-SDA", "KPD-I2C-SDA", "U13_9", 48, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "PWRON", "PWRON", "U13_10", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "PWRON", "PWRON", "U13_10", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TWI1-SCK", "KPD-I2C-SCL", "U13_11", 47, BASE_METHOD_AS_IS, -1, -1},
|
{ "TWI1-SCK", "KPD-I2C-SCL", "U13_11", 47, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U13_12", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U13_12", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "X1", "X1", "U13_13", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "X1", "X1", "U13_13", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "X2", "X2", "U13_14", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "X2", "X2", "U13_14", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "Y1", "Y1", "U13_15", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "Y1", "Y1", "U13_15", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "Y2", "Y2", "U13_16", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "Y2", "Y2", "U13_16", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D2", "LCD-D2", "U13_17", 98, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D2", "LCD-D2", "U13_17", 98, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "PWM0", "PWM0", "U13_18", 34, BASE_METHOD_AS_IS, 0, -1},
|
{ "PWM0", "PWM0", "U13_18", 34, BASE_METHOD_AS_IS, 0, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D4", "LCD-D4", "U13_19", 100, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D4", "LCD-D4", "U13_19", 100, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D3", "LCD-D3", "U13_20", 99, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D3", "LCD-D3", "U13_20", 99, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D6", "LCD-D6", "U13_21", 102, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D6", "LCD-D6", "U13_21", 102, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D5", "LCD-D5", "U13_22", 101, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D5", "LCD-D5", "U13_22", 101, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D10", "LCD-D10", "U13_23", 106, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D10", "LCD-D10", "U13_23", 106, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D7", "LCD-D7", "U13_24", 103, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D7", "LCD-D7", "U13_24", 103, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D12", "LCD-D12", "U13_25", 108, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D12", "LCD-D12", "U13_25", 108, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D11", "LCD-D11", "U13_26", 107, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D11", "LCD-D11", "U13_26", 107, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D14", "LCD-D14", "U13_27", 110, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D14", "LCD-D14", "U13_27", 110, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D13", "LCD-D13", "U13_28", 109, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D13", "LCD-D13", "U13_28", 109, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D18", "LCD-D18", "U13_29", 114, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D18", "LCD-D18", "U13_29", 114, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D15", "LCD-D15", "U13_30", 111, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D15", "LCD-D15", "U13_30", 111, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D20", "LCD-D20", "U13_31", 116, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D20", "LCD-D20", "U13_31", 116, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D19", "LCD-D19", "U13_32", 115, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D19", "LCD-D19", "U13_32", 115, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D22", "LCD-D22", "U13_33", 118, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D22", "LCD-D22", "U13_33", 118, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D21", "LCD-D21", "U13_34", 117, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D21", "LCD-D21", "U13_34", 117, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-CLK", "LCD-CLK", "U13_35", 120, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-CLK", "LCD-CLK", "U13_35", 120, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-D23", "LCD-D23", "U13_36", 119, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-D23", "LCD-D23", "U13_36", 119, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-VSYNC", "LCD-VSYNC", "U13_37", 123, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-VSYNC", "LCD-VSYNC", "U13_37", 123, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-HSYNC", "LCD-HSYNC", "U13_38", 122, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-HSYNC", "LCD-HSYNC", "U13_38", 122, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U13_39", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U13_39", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LCD-DE", "LCD-DE", "U13_40", 121, BASE_METHOD_AS_IS, -1, -1},
|
{ "LCD-DE", "LCD-DE", "U13_40", 121, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U14_1", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_1", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-5V", "VCC-5V", "U14_2", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-5V", "VCC-5V", "U14_2", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "UART1-TX", "UART-TX", "U14_3", 195, BASE_METHOD_AS_IS, -1, -1},
|
{ "UART1-TX", "UART-TX", "U14_3", 195, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "HPL", "HPL", "U14_4", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "HPL", "HPL", "U14_4", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "UART1-RX", "UART-RX", "U14_5", 196, BASE_METHOD_AS_IS, -1, -1},
|
{ "UART1-RX", "UART-RX", "U14_5", 196, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "HPCOM", "HPCOM", "U14_6", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "HPCOM", "HPCOM", "U14_6", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "FEL", "FEL", "U14_7", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "FEL", "FEL", "U14_7", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "HPR", "HPR", "U14_8", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "HPR", "HPR", "U14_8", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "VCC-3V3", "VCC-3V3", "U14_9", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "VCC-3V3", "VCC-3V3", "U14_9", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "MICM", "MICM", "U14_10", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "MICM", "MICM", "U14_10", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "LRADC", "ADC", "U14_11", -1, BASE_METHOD_AS_IS, -1, 0},
|
{ "LRADC", "ADC", "U14_11", -1, BASE_METHOD_AS_IS, -1, 0, SPWM_DISABLED},
|
||||||
{ "MICIN1", "MICIN1", "U14_12", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "MICIN1", "MICIN1", "U14_12", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "XIO-P0", "XIO-P0", "U14_13", 0, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P0", "XIO-P0", "U14_13", 0, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P1", "XIO-P1", "U14_14", 1, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P1", "XIO-P1", "U14_14", 1, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P2", "GPIO1", "U14_15", 2, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P2", "GPIO1", "U14_15", 2, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P3", "GPIO2", "U14_16", 3, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P3", "GPIO2", "U14_16", 3, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P4", "GPIO3", "U14_17", 4, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P4", "GPIO3", "U14_17", 4, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P5", "GPIO4", "U14_18", 5, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P5", "GPIO4", "U14_18", 5, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P6", "GPIO5", "U14_19", 6, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P6", "GPIO5", "U14_19", 6, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "XIO-P7", "GPIO6", "U14_20", 7, BASE_METHOD_XIO, -1, -1},
|
{ "XIO-P7", "GPIO6", "U14_20", 7, BASE_METHOD_XIO, -1, -1, SPWM_ENABLED},
|
||||||
{ "GND", "GND", "U14_21", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_21", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U14_22", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_22", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "AP-EINT1", "KPD-INT", "U14_23", 193, BASE_METHOD_AS_IS, -1, -1},
|
{ "AP-EINT1", "KPD-INT", "U14_23", 193, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "AP-EINT3", "AP-INT3", "U14_24", 35, BASE_METHOD_AS_IS, -1, -1},
|
{ "AP-EINT3", "AP-INT3", "U14_24", 35, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TWI2-SDA", "I2C-SDA", "U14_25", 50, BASE_METHOD_AS_IS, -1, -1},
|
{ "TWI2-SDA", "I2C-SDA", "U14_25", 50, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "TWI2-SCK", "I2C-SCL", "U14_26", 49, BASE_METHOD_AS_IS, -1, -1},
|
{ "TWI2-SCK", "I2C-SCL", "U14_26", 49, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSIPCK", "SPI-SEL", "U14_27", 128, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSIPCK", "SPI-SEL", "U14_27", 128, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSICK", "SPI-CLK", "U14_28", 129, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSICK", "SPI-CLK", "U14_28", 129, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSIHSYNC", "SPI-MOSI", "U14_29", 130, BASE_METHOD_AS_IS, 1, -1},
|
{ "CSIHSYNC", "SPI-MOSI", "U14_29", 130, BASE_METHOD_AS_IS, 1, -1, SPWM_DISABLED},
|
||||||
{ "CSIVSYNC", "SPI-MISO", "U14_30", 131, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSIVSYNC", "SPI-MISO", "U14_30", 131, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID0", "CSID0", "U14_31", 132, BASE_METHOD_AS_IS, 1, -1},
|
{ "CSID0", "CSID0", "U14_31", 132, BASE_METHOD_AS_IS, 1, -1, SPWM_DISABLED},
|
||||||
{ "CSID1", "CSID1", "U14_32", 133, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID1", "CSID1", "U14_32", 133, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID2", "CSID2", "U14_33", 134, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID2", "CSID2", "U14_33", 134, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID3", "CSID3", "U14_34", 135, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID3", "CSID3", "U14_34", 135, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID4", "CSID4", "U14_35", 136, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID4", "CSID4", "U14_35", 136, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID5", "CSID5", "U14_36", 137, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID5", "CSID5", "U14_36", 137, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID6", "CSID6", "U14_37", 138, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID6", "CSID6", "U14_37", 138, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "CSID7", "CSID7", "U14_38", 139, BASE_METHOD_AS_IS, -1, -1},
|
{ "CSID7", "CSID7", "U14_38", 139, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U14_39", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_39", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ "GND", "GND", "U14_40", -1, BASE_METHOD_AS_IS, -1, -1},
|
{ "GND", "GND", "U14_40", -1, BASE_METHOD_AS_IS, -1, -1, SPWM_DISABLED},
|
||||||
{ NULL, NULL, NULL, -1, 0, -1, -1}
|
{ NULL, NULL, NULL, -1, 0, -1, -1, -1}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,13 +52,15 @@ SOFTWARE.
|
|||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define MODE_UNKNOWN -1
|
#define MODE_UNKNOWN -1
|
||||||
#define BOARD 10
|
#define CHIP 0
|
||||||
#define BCM 11
|
#define CHIPPRO 1
|
||||||
|
|
||||||
// In the pins_t structure, the "base_method" field tells how
|
// In the pins_t structure, the "base_method" field tells how
|
||||||
// the "gpio" field should be interpreted.
|
// the "gpio" field should be interpreted.
|
||||||
#define BASE_METHOD_AS_IS 1 /* use the gpio value directly */
|
#define BASE_METHOD_AS_IS 1 /* use the gpio value directly */
|
||||||
#define BASE_METHOD_XIO 2 /* add the gpio value to the XIO base */
|
#define BASE_METHOD_XIO 2 /* add the gpio value to the XIO base */
|
||||||
|
#define SPWM_ENABLED 1 /* pin able to be used by software pwm */
|
||||||
|
#define SPWM_DISABLED 0 /* pin unable to be used by software pwm */
|
||||||
|
|
||||||
typedef struct pins_t {
|
typedef struct pins_t {
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -66,8 +68,9 @@ typedef struct pins_t {
|
|||||||
const char *key;
|
const char *key;
|
||||||
int gpio; /* port number to use under /sys/class/gpio */
|
int gpio; /* port number to use under /sys/class/gpio */
|
||||||
int base_method; /* modifier for port number; see BASE_METHOD_... */
|
int base_method; /* modifier for port number; see BASE_METHOD_... */
|
||||||
int pwm_mux_mode;
|
int pwm_mux_mode; /* pwm pin */
|
||||||
int ain;
|
int ain; /* analog pin */
|
||||||
|
int spwm_allow; /* pin allowed for software pwm */
|
||||||
} pins_t;
|
} pins_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,6 +76,6 @@ void define_constants(PyObject *module)
|
|||||||
both_edge = Py_BuildValue("i", BOTH_EDGE);
|
both_edge = Py_BuildValue("i", BOTH_EDGE);
|
||||||
PyModule_AddObject(module, "BOTH", both_edge);
|
PyModule_AddObject(module, "BOTH", both_edge);
|
||||||
|
|
||||||
version = Py_BuildValue("s", "0.2.5");
|
version = Py_BuildValue("s", "0.2.6");
|
||||||
PyModule_AddObject(module, "VERSION", version);
|
PyModule_AddObject(module, "VERSION", version);
|
||||||
}
|
}
|
||||||
|
@ -215,7 +215,9 @@ int open_value_file(int gpio)
|
|||||||
// create file descriptor of value file
|
// create file descriptor of value file
|
||||||
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio); BUF2SMALL(filename);
|
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio); BUF2SMALL(filename);
|
||||||
|
|
||||||
if ((fd = open(filename, O_RDONLY | O_NONBLOCK)) < 0) {
|
// Changed this to open Read/Write to prevent a ton of file open/closes from happening when using
|
||||||
|
// the GPIO for SOFTPWM
|
||||||
|
if ((fd = open(filename, O_RDWR | O_NONBLOCK)) < 0) {
|
||||||
char err[256];
|
char err[256];
|
||||||
snprintf(err, sizeof(err), "open_value_file: could not open '%s' (%s)", filename, strerror(errno));
|
snprintf(err, sizeof(err), "open_value_file: could not open '%s' (%s)", filename, strerror(errno));
|
||||||
add_error_msg(err);
|
add_error_msg(err);
|
||||||
@ -376,18 +378,24 @@ int gpio_get_direction(int gpio, unsigned int *value)
|
|||||||
|
|
||||||
int gpio_set_value(int gpio, unsigned int value)
|
int gpio_set_value(int gpio, unsigned int value)
|
||||||
{
|
{
|
||||||
int fd, e_no;
|
// This now uses the value file descriptor that is set in the other struct
|
||||||
|
// in an effort to minimize opening/closing this
|
||||||
|
int fd = fd_lookup(gpio);
|
||||||
|
int e_no;
|
||||||
char filename[MAX_FILENAME];
|
char filename[MAX_FILENAME];
|
||||||
char vstr[16];
|
char vstr[16];
|
||||||
|
|
||||||
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio); BUF2SMALL(filename);
|
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio); BUF2SMALL(filename);
|
||||||
|
|
||||||
if ((fd = open(filename, O_WRONLY)) < 0) {
|
if (!fd)
|
||||||
|
{
|
||||||
|
if ((fd = open_value_file(gpio)) == -1) {
|
||||||
char err[256];
|
char err[256];
|
||||||
snprintf(err, sizeof(err), "gpio_set_value: could not open '%s' (%s)", filename, strerror(errno));
|
snprintf(err, sizeof(err), "gpio_get_value: could not open GPIO %d value file", gpio);
|
||||||
add_error_msg(err);
|
add_error_msg(err);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (value) {
|
if (value) {
|
||||||
strncpy(vstr, "1", ARRAY_SIZE(vstr) - 1);
|
strncpy(vstr, "1", ARRAY_SIZE(vstr) - 1);
|
||||||
@ -396,7 +404,6 @@ int gpio_set_value(int gpio, unsigned int value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ssize_t s = write(fd, vstr, strlen(vstr)); e_no = errno;
|
ssize_t s = write(fd, vstr, strlen(vstr)); e_no = errno;
|
||||||
close(fd);
|
|
||||||
|
|
||||||
if (s != strlen(vstr)) {
|
if (s != strlen(vstr)) {
|
||||||
char err[256];
|
char err[256];
|
||||||
|
Reference in New Issue
Block a user