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 00816b33bdef4c9e784834c84c12d07a0ca3c6c9..75f241d4d2391e3664181fc3a0b230919e283e89 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 1d5769cb0f6b5c62f77588e9341aec59c6ea4e76..c28c4549067fbb638417298b9095161f8541ceeb 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 de669ce16a5683bb3fd9e603a6cb97eeb4fdadaa..c2707e7d57effeb820743c23d4d362f4dff6b31d 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;