X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=src%2Fao_radio.c;h=7b7c5161fb0ac95c2d730f7f44b91136a292c84b;hp=362b73aa3053c67452ace38ce15fa879aed4d0bb;hb=484b44e81b655f1ecb48256095382a56d2839bae;hpb=07213dc34fa20470a4b36a327a83d75b0f010ebb diff --git a/src/ao_radio.c b/src/ao_radio.c index 362b73aa..7b7c5161 100644 --- a/src/ao_radio.c +++ b/src/ao_radio.c @@ -377,8 +377,13 @@ ao_radio_recv(__xdata void *packet, uint8_t size) __reentrant DMA_CFG1_PRIORITY_HIGH); ao_dma_start(ao_radio_dma); RFST = RFST_SRX; + + /* Wait for DMA to be done, for the radio receive process to + * get aborted or for a receive timeout to fire + */ __critical while (!ao_radio_dma_done && !ao_radio_abort) - ao_sleep(&ao_radio_dma_done); + if (ao_sleep(&ao_radio_dma_done)) + break; /* If recv was aborted, clean up by stopping the DMA engine * and idling the radio