altos: Pre-compute RDF packet len at compile time
authorKeith Packard <keithp@keithp.com>
Wed, 21 Sep 2011 18:39:24 +0000 (11:39 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 21 Sep 2011 18:45:05 +0000 (11:45 -0700)
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>
src/cc1111/ao_radio.c
src/core/ao.h
src/core/ao_telemetry.c

index 00816b3..75f241d 100644 (file)
@@ -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);
index 1d5769c..c28c454 100644 (file)
@@ -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);
index de669ce..c2707e7 100644 (file)
@@ -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;