summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-09-21 11:39:24 -0700
committerKeith Packard <keithp@keithp.com>2011-09-21 11:45:05 -0700
commitc8a00bb9ccdf0d4257f037c2bf996ce5e6b0b0c0 (patch)
treecef91c9361b9455078ee4393281333c0ae6af784
parentabf17522c206b465375b73a004a6d67bfa714ba3 (diff)
altos: Pre-compute RDF packet len at compile time
Instead of computing the RDF packet len at run time, which takes a pile of code space. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/cc1111/ao_radio.c14
-rw-r--r--src/core/ao.h12
-rw-r--r--src/core/ao_telemetry.c2
3 files changed, 13 insertions, 15 deletions
diff --git a/src/cc1111/ao_radio.c b/src/cc1111/ao_radio.c
index 00816b33..75f241d4 100644
--- a/src/cc1111/ao_radio.c
+++ b/src/cc1111/ao_radio.c
@@ -367,21 +367,9 @@ ao_radio_recv_abort(void)
__xdata ao_radio_rdf_value = 0x55;
void
-ao_radio_rdf(int ms)
+ao_radio_rdf(uint8_t pkt_len)
{
uint8_t i;
- uint8_t pkt_len;
-
- /*
- * Compute the packet length as follows:
- *
- * 2000 bps (for a 1kHz tone)
- * so, for 'ms' milliseconds, we need
- * 2 * ms bits, or ms / 4 bytes
- */
- if (ms > (255 * 4))
- ms = 255 * 4;
- pkt_len = ms >> 2;
ao_radio_abort = 0;
ao_radio_get(pkt_len);
diff --git a/src/core/ao.h b/src/core/ao.h
index 1d5769cb..c28c4549 100644
--- a/src/core/ao.h
+++ b/src/core/ao.h
@@ -1341,8 +1341,18 @@ ao_radio_recv(__xdata void *data, uint8_t size) __reentrant;
void
ao_radio_recv_abort(void);
+/*
+ * Compute the packet length as follows:
+ *
+ * 2000 bps (for a 1kHz tone)
+ * so, for 'ms' milliseconds, we need
+ * 2 * ms bits, or ms / 4 bytes
+ */
+
+#define AO_MS_TO_RDF_LEN(ms) ((ms) > 255 * 4 ? 255 : ((ms) >> 2))
+
void
-ao_radio_rdf(int ms);
+ao_radio_rdf(uint8_t pkt_len);
void
ao_radio_rdf_abort(void);
diff --git a/src/core/ao_telemetry.c b/src/core/ao_telemetry.c
index de669ce1..c2707e7d 100644
--- a/src/core/ao_telemetry.c
+++ b/src/core/ao_telemetry.c
@@ -235,7 +235,7 @@ ao_telemetry(void)
(int16_t) (ao_time() - ao_rdf_time) >= 0)
{
ao_rdf_time = ao_time() + AO_RDF_INTERVAL_TICKS;
- ao_radio_rdf(AO_RDF_LENGTH_MS);
+ ao_radio_rdf(AO_MS_TO_RDF_LEN(AO_RDF_LENGTH_MS));
}
#endif
time += ao_telemetry_interval;