summaryrefslogtreecommitdiff
path: root/src/ao_telemetry.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2009-09-04 11:45:52 -0700
committerKeith Packard <keithp@keithp.com>2009-09-04 11:45:52 -0700
commit54545640b0db7747137655f84bc67fd290ecb904 (patch)
tree6cee8db5f36a5c2b7cfd2c3f6bc16287325d4d21 /src/ao_telemetry.c
parent9fafee109e96435c96639b21211cac0500673a63 (diff)
Add back the RDF tone generator
Tracking the rocket on the ground may be easier using tones than using the digital data stream, so we'll try that and see what we think. This reverts commit 3a3bfd471a868d546d83cdc431b53c8f5208edb9. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/ao_telemetry.c')
-rw-r--r--src/ao_telemetry.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ao_telemetry.c b/src/ao_telemetry.c
index 9f57f3a9..7eefee3c 100644
--- a/src/ao_telemetry.c
+++ b/src/ao_telemetry.c
@@ -18,6 +18,10 @@
#include "ao.h"
__xdata uint16_t ao_telemetry_interval = 0;
+__xdata uint8_t ao_rdf = 0;
+__xdata uint16_t ao_rdf_time;
+
+#define AO_RDF_INTERVAL AO_SEC_TO_TICKS(3)
void
ao_telemetry(void)
@@ -27,6 +31,7 @@ ao_telemetry(void)
ao_config_get();
memcpy(telemetry.callsign, ao_config.callsign, AO_MAX_CALLSIGN);
telemetry.addr = ao_serial_number;
+ ao_rdf_time = ao_time();
for (;;) {
while (ao_telemetry_interval == 0)
ao_sleep(&ao_telemetry_interval);
@@ -43,6 +48,13 @@ ao_telemetry(void)
ao_mutex_put(&ao_gps_mutex);
ao_radio_send(&telemetry);
ao_delay(ao_telemetry_interval);
+ if (ao_rdf &&
+ (int16_t) (ao_time() - ao_rdf_time) >= 0)
+ {
+ ao_rdf_time = ao_time() + AO_RDF_INTERVAL;
+ ao_radio_rdf();
+ ao_delay(ao_telemetry_interval);
+ }
}
}
@@ -53,6 +65,14 @@ ao_telemetry_set_interval(uint16_t interval)
ao_wakeup(&ao_telemetry_interval);
}
+void
+ao_rdf_set(uint8_t rdf)
+{
+ ao_rdf = rdf;
+ if (rdf == 0)
+ ao_radio_rdf_abort();
+}
+
__xdata struct ao_task ao_telemetry_task;
void