diff --git a/src/energenie/radio.py b/src/energenie/radio.py index 107a5f8..e090f49 100644 --- a/src/energenie/radio.py +++ b/src/energenie/radio.py @@ -298,6 +298,51 @@ for i in range(1,length+1): print("[%d] = %s" % (i, hex(payload[i]))) +#ORIGINAL C CODE +#void HRF_send_OOK_msg(uint8_t relayState) +#{ +# uint8_t buf[17]; +# uint8_t i; +# +# HRF_config_OOK(); +# +# buf[1] = 0x80; // Preambule 32b enclosed in sync words +# buf[2] = 0x00; +# buf[3] = 0x00; +# buf[4] = 0x00; +# +# for (i = 5; i <= 14; ++i){ +# buf[i] = 8 + (i&1) * 6 + 128 + (i&2) * 48; // address 20b * 4 = 10 Bytes +# } +# +# if (relayState == 1) +# { +# printf("relay ON\n\n"); +# buf[15] = 0xEE; // D0-high, D1-h // S1 on +# buf[16] = 0xEE; // D2-h, D3-h +# } +# else +# { +# printf("relay OFF\n\n"); +# buf[15] = 0xEE; // D0-high, D1-h // S1 off +# buf[16] = 0xE8; // D2-h, D3-l +# } +# +# HRF_wait_for (ADDR_IRQFLAGS1, MASK_MODEREADY | MASK_TXREADY, true); // wait for ModeReady + TX ready +# HRF_reg_Wn(buf + 4, 0, 12); // don't include sync word (4 bytes) into data buffer +# +# for (i = 0; i < 8; ++i) // Send the same message few more times +# { +# HRF_wait_for(ADDR_IRQFLAGS2, MASK_FIFOLEVEL, false); +# HRF_reg_Wn(buf, 0, 16); // with sync word +# } +# +# HRF_wait_for (ADDR_IRQFLAGS2, MASK_PACKETSENT, true); // wait for Packet sent +# HRF_assert_reg_val(ADDR_IRQFLAGS2, MASK_FIFONOTEMPTY | MASK_FIFOOVERRUN, false, "are all bytes sent?"); +# HRF_config_FSK(); +# HRF_wait_for (ADDR_IRQFLAGS1, MASK_MODEREADY, true); // wait for ModeReady +#} + def HRF_send_OOK_payload_repeat(payload, times=0): """Send a payload multiple times""" @@ -306,18 +351,20 @@ # A payload is 32 bits enclosed in sync words # write first payload without sync preamble + payload.insert(0, 0x00) # first byte should be all zeros (TODO add to payload builder) HRF_writefifo_burst(payload) # preceed all future payloads with a sync-word preamble if times > 0: - SYNC_PREAMBLE = [0x00,0x80,0x00,0x00,0x00] + SYNC_PREAMBLE = [0x00,0x80,0x00,0x00] preamble_payload = SYNC_PREAMBLE + payload for i in range(times): # Repeat the message a number of times HRF_pollreg(ADDR_IRQFLAGS2, MASK_FIFOLEVEL, 0) HRF_writefifo_burst(preamble_payload) - #TODO: this will be unreliable, as the IRQ might fire on any single packet + #TODO: this might be unreliable, as the IRQ might fire on any single packet #need to check how big the FIFO is, and just build a single payload and burst load it + #especially as Python will be slower loading the FIFO than the original C was. HRF_pollreg(ADDR_IRQFLAGS2, MASK_PACKETSENT, MASK_PACKETSENT) # wait for Packet sent reg = HRF_readreg(ADDR_IRQFLAGS2)