May 2021 Commit
Dependencies: sx128x sx12xx_hal
Diff: main.cpp
- Revision:
- 1:3199506bc2e5
- Parent:
- 0:cb38da4f4b04
- Child:
- 2:0b7620bda2c9
--- a/main.cpp Tue Aug 22 10:06:40 2017 -0700 +++ b/main.cpp Thu Aug 31 23:15:04 2017 +0000 @@ -17,9 +17,15 @@ } /**********************************************************************/ -DigitalIn user_button(USER_BUTTON); +DigitalIn pc3(PC_3); +DigitalIn pc2(PC_2); +DigitalIn pc6(PC_6); +DigitalIn pc8(PC_8); Timer t; -#define CMD_ALARM 0x01 +#define CMD_PC2 0x02 +#define CMD_PC3 0x03 +#define CMD_PC6 0x06 +#define CMD_PC8 0x08 static uint16_t crc_ccitt( uint8_t *buffer, uint16_t length ) { @@ -45,12 +51,12 @@ return crc; } -void transmit(unsigned target) +void transmit(unsigned target, uint8_t cmd) { unsigned t_diff; uint16_t crc; - radio.tx_buf[0] = CMD_ALARM; + radio.tx_buf[0] = cmd; t_diff = target - t.read_us(); radio.tx_buf[1] = t_diff >> 24; radio.tx_buf[2] = t_diff >> 16; @@ -63,29 +69,54 @@ lora.start_tx(lora.RegPayloadLength); /* begin transmission */ - while (lora.service() != SERVICE_TX_DONE) /* wait for transmission to complete */ - ; + while (lora.service() != SERVICE_TX_DONE) { /* wait for transmission to complete */ + } printf("t_diff:%u crc:%04x\r\n", t_diff, crc); } #define TARGET_LATENCY 2000000 -void send_alarm() +void send_alarm(uint8_t cmd) { int i; unsigned target = t.read_us() + TARGET_LATENCY; printf("send_alarm() %u\n", target); - for (i = 0; i < 3; i++) { - transmit(target); + for (i = 0; i < 5; i++) { + transmit(target, cmd); wait(0.1); } } + +void debounce(DigitalIn* pin, uint8_t cmd) +{ + if (!pin->read()) { + int i; + for (i = 0; i < 5; i++) { + wait(0.01); + if (pin->read()) { + printf("trans\r\n"); + break; + } + } + if (i == 5) + send_alarm(cmd); + + while (!pin->read()) + ; + } +} int main() { printf("\r\nreset-tx\r\n"); t.start(); + + pc3.mode(PullUp); + pc2.mode(PullUp); + pc6.mode(PullUp); + pc8.mode(PullUp); + radio.rf_switch = rfsw_callback; radio.set_frf_MHz(910.8); @@ -117,21 +148,9 @@ radio.write_reg(REG_LR_PAYLOADLENGTH, lora.RegPayloadLength); for (;;) { - if (!user_button.read()) { - int i; - for (i = 0; i < 5; i++) { - wait(0.01); - if (user_button.read()) { - printf("trans\r\n"); - break; - } - } - if (i == 5) - send_alarm(); - - while (!user_button.read()) - ; - } - + debounce(&pc3, CMD_PC3); + debounce(&pc2, CMD_PC2); + debounce(&pc6, CMD_PC6); + debounce(&pc8, CMD_PC8); } // ..for (;;) }