From: Keith Packard Date: Fri, 11 Jan 2013 05:27:32 +0000 (-0800) Subject: altos: Time out reading packet data from cc1120 after 100ms X-Git-Tag: 1.1.9.3~8^2~10 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=acff2f466031fd1a8533fc315411c3734a8bacc6 altos: Time out reading packet data from cc1120 after 100ms Sometimes the radio will give a spurious wakeup indicating that a preamble seems to have arrived, but no packet data will appear. In this case, abandon the packet reception and go back to waiting for a preamble again. This releases the SPI bus for other users and also avoids missing packets. Signed-off-by: Keith Packard --- diff --git a/src/drivers/ao_cc1120.c b/src/drivers/ao_cc1120.c index 63d2f955..35be54a4 100644 --- a/src/drivers/ao_cc1120.c +++ b/src/drivers/ao_cc1120.c @@ -862,6 +862,7 @@ ao_radio_rx_wait(void) do { if (ao_radio_mcu_wake) ao_radio_check_marc_status(); + ao_alarm(AO_MS_TO_TICKS(100)); ao_arch_block_interrupts(); rx_waiting = 1; while (rx_data_cur - rx_data_consumed < AO_FEC_DECODE_BLOCK && @@ -873,6 +874,7 @@ ao_radio_rx_wait(void) } rx_waiting = 0; ao_arch_release_interrupts(); + ao_clear_alarm(); } while (ao_radio_mcu_wake); if (ao_radio_abort) return 0;