diff --git a/cli.py b/cli.py new file mode 100755 index 0000000..4d94279 --- /dev/null +++ b/cli.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +import pifacedigitalio +import pifacecommon.mcp23s17 +import sys + +button_count = 2 + +# dirty workaround to disable reset of output pins +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) + +def chch_status(pfd): + for i in range(button_count): + if pfd.output_pins[i].value != 0: + print(str(i) + ' on') + else: + print(str(i) + ' off') + +def chch_all_off(pfd): + for i in range(button_count): + pfd.output_pins[i].turn_off() + +def help(): + print('valid commands: status, all_off') + +if __name__ == "__main__": + # listener = pifacedigitalio.InputEventListener() + # listener.activate() + # chch_status_output(listener.chip) + try: + command = sys.argv[1] + except: + help() + exit(1) + if command=='status': + chch_status(pifacedigitalio.PiFaceDigital()) + elif command=='all_off': + chch_all_off(pifacedigitalio.PiFaceDigital()) + else: + help()