summaryrefslogtreecommitdiff
path: root/src/core/ao_telemetry.c
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-12-06 10:23:39 -0800
committerKeith Packard <keithp@keithp.com>2012-12-06 10:23:39 -0800
commitf661da527fb4a3a492f5322e2a718d441e1cde83 (patch)
tree8299c69eabb77845d6fa84b486a4414a0ab7dd04 /src/core/ao_telemetry.c
parentc1e6fa32b856b91afa355cd272d2d7287d3ccca1 (diff)
altos: Hook up APRS to telemetry loop
Send APRS packet once every 2 seconds Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/core/ao_telemetry.c')
-rw-r--r--src/core/ao_telemetry.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/core/ao_telemetry.c b/src/core/ao_telemetry.c
index 52ac9489..79d1bb81 100644
--- a/src/core/ao_telemetry.c
+++ b/src/core/ao_telemetry.c
@@ -22,6 +22,12 @@ static __pdata uint16_t ao_telemetry_interval;
static __pdata uint8_t ao_rdf = 0;
static __pdata uint16_t ao_rdf_time;
+#if HAS_APRS
+static __pdata uint16_t ao_aprs_time;
+
+#include <ao_aprs.h>
+#endif
+
#if defined(MEGAMETRUM)
#define AO_SEND_MEGA 1
#endif
@@ -288,6 +294,9 @@ ao_telemetry(void)
while (ao_telemetry_interval == 0)
ao_sleep(&telemetry);
time = ao_rdf_time = ao_time();
+#if HAS_APRS
+ ao_aprs_time = time;
+#endif
while (ao_telemetry_interval) {
@@ -325,6 +334,12 @@ ao_telemetry(void)
#endif
ao_radio_rdf();
}
+#if HAS_APRS
+ if (ao_rdf && (int16_t) (ao_time() - ao_aprs_time) >= 0) {
+ ao_aprs_time = ao_time() + AO_APRS_INTERVAL_TICKS;
+ ao_aprs_send();
+ }
+#endif
#endif
time += ao_telemetry_interval;
delay = time - ao_time();
@@ -389,8 +404,12 @@ ao_rdf_set(uint8_t rdf)
ao_rdf = rdf;
if (rdf == 0)
ao_radio_rdf_abort();
- else
+ else {
ao_rdf_time = ao_time() + AO_RDF_INTERVAL_TICKS;
+#if HAS_APRS
+ ao_aprs_time = ao_time() + AO_APRS_INTERVAL_TICKS;
+#endif
+ }
}
__xdata struct ao_task ao_telemetry_task;