/* radio_test.c D.J.Whale 03/04/2016 * * A simple Energenie radio exerciser * * Repeatedly transmits OOK packets to turn switch 1 on and off. */ /***** INCLUDES *****/ #include "system.h" #include "radio.h" #include "delay.h" #include "trace.h" /***** CONSTANTS *****/ #define REPEATS 8 /***** FORWARD FUNCTION PROTOTYPES *****/ void radio_test_ook(void); void radio_test_fsk(void); /*---------------------------------------------------------------------------*/ int main(int argc, char **argv) { radio_test_ook(); //TODO: radio_test_fsk(); } /*---------------------------------------------------------------------------*/ void radio_test_ook(void) { //gpio_init(); //spi_init(&spi_config); radio_init(); radio_transmitter(RADIO_MODULATION_OOK); /* The 'radio' module knows nothing about the Energenie (HS1527) bit encoding, * so this test code manually encodes the bits. * For the full Python stack, there is an encoder module that can generate * specific payloads. Repeats are done in radio_transmitter. * The HRF preamble feature is no longer used, it's more predictable to * put the preamble in the payload. */ /* manual preamble, 20 bit encoded address, 4 encoded data bits */ static uint8_t enc_1on[16] = { 0x80, 0x00, 0x00, 0x00, // preamble pulse with timing violation gap // Energenie 'random' 20 bit address is 0x6C6C6 // 0110 1100 0110 1100 0110 // 0 encoded as 8 (1000) // 1 encoded as E (1110) 0x8E, 0xE8, 0xEE, 0x88, 0x8E, 0xE8, 0xEE, 0x88, 0x8E, 0xE8, // Energenie 'switch 1 ON' command F 1111 (0xEE, 0xEE) 0xEE, 0xEE // Energenie 'switch 1 OFF' command E 1110 (0xEE, 0xE8) //0xEE, 0xE8 }; static uint8_t enc_1off[16] = { 0x80, 0x00, 0x00, 0x00, // preamble pulse with timing violation gap // Energenie 'random' 20 bit address is 0x6C6C6 // 0110 1100 0110 1100 0110 // 0 encoded as 8 (1000) // 1 encoded as E (1110) 0x8E, 0xE8, 0xEE, 0x88, 0x8E, 0xE8, 0xEE, 0x88, 0x8E, 0xE8, // Energenie 'switch 1 ON' command F 1111 (0xEE, 0xEE) //0xEE, 0xEE // Energenie 'switch 1 OFF' command E 1110 (0xEE, 0xE8) 0xEE, 0xE8 }; while (1) { /* Turn switch 1 on */ TRACE_OUTS("Switch 1 ON\n"); radio_transmit(enc_1on, sizeof(enc_1on), REPEATS); radio_standby(); //TODO put this here? move out from radio_transmit?? delaysec(1); TRACE_OUTS("Switch 1 OFF\n"); radio_transmit(enc_1off, sizeof(enc_1off), REPEATS); radio_standby(); //TODO put this here? move out from radio_transmit?? delaysec(1); } radio_finished(); } /*---------------------------------------------------------------------------*/ void radio_test_fsk(void) { //TODO } /***** END OF FILE *****/