altos: Don't access cc1120 SPI bus during recv after abort has started
authorKeith Packard <keithp@keithp.com>
Wed, 27 Jul 2016 20:17:51 +0000 (13:17 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 27 Jul 2016 20:17:51 +0000 (13:17 -0700)
When the receive timeout happens, the radio may still interrupt while
the SPI bus is getting shut down. If this happens, the interrupt
handler shouldn't touch the SPI bus at all as it may well be turned
off, which would cause the receive function to wedge waiting for a spi
byte transfer to happen.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/drivers/ao_cc1120.c

index da5bbeba6d27799dc4ded5e6bec7219a0d10b527..f9fc6b2dc2a5c8fda902869f8887451fb087475e 100644 (file)
@@ -999,6 +999,8 @@ ao_radio_rx_isr(void)
 {
        uint8_t d;
 
+       if (ao_radio_abort)
+               return;
        if (rx_task_id) {
                if (ao_radio_try_select(rx_task_id)) {
                        ++rx_fast_start;