diff --git a/chch-power.py b/chch-power.py index 8967e57..37d4f6d 100644 --- a/chch-power.py +++ b/chch-power.py @@ -1,7 +1,32 @@ import pifacedigitalio +import pifacecommon.mcp23s17 import time from subprocess import call +def init_board_no_power_off(self): + ioconfig = ( + pifacecommon.mcp23s17.BANK_OFF | + pifacecommon.mcp23s17.INT_MIRROR_OFF | + pifacecommon.mcp23s17.SEQOP_OFF | + pifacecommon.mcp23s17.DISSLW_OFF | + pifacecommon.mcp23s17.HAEN_ON | + pifacecommon.mcp23s17.ODR_OFF | + pifacecommon.mcp23s17.INTPOL_LOW + ) + self.iocon.value = ioconfig + if self.iocon.value != ioconfig: + raise pifacedigitalio.NoPiFaceDigitalDetectedError( + "No PiFace Digital board detected (hardware_addr={h}, " + "bus={b}, chip_select={c}).".format( + h=self.hardware_addr, b=self.bus, c=self.chip_select)) + else: + self.iodira.value = 0 # GPIOA as outputs + self.iodirb.value = 0xFF # GPIOB as inputs + self.gppub.value = 0xFF # input pullups on + self.enable_interrupts() + +setattr(pifacedigitalio.PiFaceDigital, 'init_board', init_board_no_power_off) + button_count = 8 longpress_delay = 0.4 verylongpress_delay = 2