projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Compute "real" RSSI value in radio code as needed
[fw/altos]
/
src
/
cc1111
/
ao_radio.c
diff --git
a/src/cc1111/ao_radio.c
b/src/cc1111/ao_radio.c
index 07b0d1b5d3882c1f62826c7965e353ebf2a4ebf1..4842486b5e170c5625a5c5a9f3190e2381b32a6b 100644
(file)
--- a/
src/cc1111/ao_radio.c
+++ b/
src/cc1111/ao_radio.c
@@
-249,6
+249,18
@@
__xdata uint8_t ao_radio_done;
__xdata uint8_t ao_radio_abort;
__xdata uint8_t ao_radio_mutex;
__xdata uint8_t ao_radio_abort;
__xdata uint8_t ao_radio_mutex;
+#if PACKET_HAS_MASTER || HAS_AES
+#define NEED_RADIO_RSSI 1
+#endif
+
+#ifndef NEED_RADIO_RSSI
+#define NEED_RADIO_RSSI 0
+#endif
+
+#if NEED_RADIO_RSSI
+__xdata int8_t ao_radio_rssi;
+#endif
+
void
ao_radio_general_isr(void) __interrupt 16
{
void
ao_radio_general_isr(void) __interrupt 16
{
@@
-356,7
+368,14
@@
ao_radio_recv(__xdata void *packet, uint8_t size, uint8_t timeout) __reentrant
if (!ao_radio_dma_done) {
ao_dma_abort(ao_radio_dma);
ao_radio_idle();
if (!ao_radio_dma_done) {
ao_dma_abort(ao_radio_dma);
ao_radio_idle();
+#if NEED_RADIO_RSSI
+ ao_radio_rssi = 0;
+#endif
}
}
+#if NEED_RADIO_RSSI
+ else
+ ao_radio_rssi = AO_RSSI_FROM_RADIO(((uint8_t *)packet)[size - 1]);
+#endif
ao_radio_put();
return ao_radio_dma_done;
}
ao_radio_put();
return ao_radio_dma_done;
}