projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Hook up APRS to telemetry loop
[fw/altos]
/
src
/
core
/
ao_telemetry.c
diff --git
a/src/core/ao_telemetry.c
b/src/core/ao_telemetry.c
index 52ac94891adebd99f915cf97a20e95ddf171a18c..79d1bb814f7b2ad87da0414bce50fb9841b05177 100644
(file)
--- 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;
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
#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();
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) {
while (ao_telemetry_interval) {
@@
-325,6
+334,12
@@
ao_telemetry(void)
#endif
ao_radio_rdf();
}
#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();
#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();
ao_rdf = rdf;
if (rdf == 0)
ao_radio_rdf_abort();
- else
+ else
{
ao_rdf_time = ao_time() + AO_RDF_INTERVAL_TICKS;
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;
}
__xdata struct ao_task ao_telemetry_task;