diff --git a/src/energenie/radio.py b/src/energenie/radio.py index f39be83..3f9ca3b 100644 --- a/src/energenie/radio.py +++ b/src/energenie/radio.py @@ -9,6 +9,7 @@ # and then pushed back into C once it is proved working. import spi +import time def warning(msg): print("warning:" + str(msg)) @@ -358,18 +359,19 @@ def HRF_send_OOK_payload(payload): """Send a payload multiple times""" - HRF_pollreg(ADDR_IRQFLAGS1, MASK_MODEREADY|MASK_TXREADY, MASK_MODEREADY|MASK_TXREADY) + p1 = [0x00] + payload + # This sync pattern does not match C code, but it works. + # The sync pattern from the C code does not work here + # Currently there is no explanation for this. + pn = [0x80,0x80,0x80,0x80,0x80] + payload - sync = [0x80,0x80,0x80,0x80] - payload = sync + payload + HRF_pollreg(ADDR_IRQFLAGS1, MASK_MODEREADY|MASK_TXREADY, MASK_MODEREADY|MASK_TXREADY) + HRF_writefifo_burst(p1) - HRF_writefifo_burst(payload) - for i in range(8): HRF_pollreg(ADDR_IRQFLAGS2, MASK_FIFOLEVEL, 0) - HRF_writefifo_burst(payload) + HRF_writefifo_burst(pn) - HRF_pollreg(ADDR_IRQFLAGS2, MASK_FIFOLEVEL, 0) HRF_pollreg(ADDR_IRQFLAGS2, MASK_PACKETSENT, MASK_PACKETSENT) # wait for Packet sent reg = HRF_readreg(ADDR_IRQFLAGS2) @@ -396,10 +398,10 @@ trace("RESET") spi.reset() # send a hardware reset to ensure radio in clean state - trace("config FSK") - HRF_config_FSK() + #trace("config FSK") + #HRF_config_FSK() HRF_clear_fifo() - receiver() + #receiver() def modulation(fsk=None, ook=None): diff --git a/src/legacy.py b/src/legacy.py index e587264..4e7a240 100644 --- a/src/legacy.py +++ b/src/legacy.py @@ -81,33 +81,18 @@ """Turn all switches on or off every few seconds""" while True: - print("sending ALL ON") - radio.transmit(ALL_ON) - print("waiting") - time.sleep(2) + for switch_no in range(5): + # switch_no 0 is ALL, then 1=1, 2=2, 3=3, 4=4 + # ON + print("switch %d ON" % switch_no) + radio.transmit(ON_MSGS[switch_no]) + time.sleep(2) - print("sending ALL OFF") - radio.transmit(ALL_OFF) - print("waiting") - time.sleep(2) - - -def legacy_test(): - #TODO: This testing shows that the C code and the specs are out of step - #ONE_ON = encoder.build_relay_msg(True) - #ONE_OFF = encoder.build_relay_msg(False) - ONE_ON = encoder.build_switch_msg(True, device_address=1) - ONE_OFF = encoder.build_switch_msg(False, device_address=1) - - while True: - print("ON") - radio.transmit(ONE_ON) - time.sleep(1) - - print("OFF") - radio.transmit(ONE_OFF) - time.sleep(1) - + # OFF + print("switch %d OFF" % switch_no) + radio.transmit(OFF_MSGS[switch_no]) + time.sleep(2) + def pattern_test(): """Test all patterns""" @@ -122,14 +107,15 @@ if __name__ == "__main__": print("starting legacy switch tester") + print("radio init") radio.init() + print("radio as OOK") radio.transmitter(ook=True) try: + #pattern_test() #legacy_learn_mode() - #legacy_switch_loop() - #legacy_test() - pattern_test() + legacy_switch_loop() finally: radio.finished()