projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Provide timeout value to ao_radio_recv
[fw/altos]
/
src
/
cc1111
/
ao_radio.c
diff --git
a/src/cc1111/ao_radio.c
b/src/cc1111/ao_radio.c
index cb2c2fddba411fee29ea427bd11f44b402d96fd7..07b0d1b5d3882c1f62826c7965e353ebf2a4ebf1 100644
(file)
--- a/
src/cc1111/ao_radio.c
+++ b/
src/cc1111/ao_radio.c
@@
-322,7
+322,7
@@
ao_radio_send(__xdata void *packet, uint8_t size) __reentrant
}
uint8_t
}
uint8_t
-ao_radio_recv(__xdata void *packet, uint8_t size) __reentrant
+ao_radio_recv(__xdata void *packet, uint8_t size
, uint8_t timeout
) __reentrant
{
ao_radio_abort = 0;
ao_radio_get(size - 2);
{
ao_radio_abort = 0;
ao_radio_get(size - 2);
@@
-342,9
+342,13
@@
ao_radio_recv(__xdata void *packet, uint8_t size) __reentrant
/* Wait for DMA to be done, for the radio receive process to
* get aborted or for a receive timeout to fire
*/
/* Wait for DMA to be done, for the radio receive process to
* get aborted or for a receive timeout to fire
*/
+ if (timeout)
+ ao_alarm(timeout);
__critical while (!ao_radio_dma_done && !ao_radio_abort)
if (ao_sleep(&ao_radio_dma_done))
break;
__critical while (!ao_radio_dma_done && !ao_radio_abort)
if (ao_sleep(&ao_radio_dma_done))
break;
+ if (timeout)
+ ao_clear_alarm();
/* If recv was aborted, clean up by stopping the DMA engine
* and idling the radio
/* If recv was aborted, clean up by stopping the DMA engine
* and idling the radio