From c8a00bb9ccdf0d4257f037c2bf996ce5e6b0b0c0 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 21 Sep 2011 11:39:24 -0700 Subject: 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 --- src/core/ao.h | 12 +++++++++++- src/core/ao_telemetry.c | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'src/core') 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; -- cgit v1.2.3