From f661da527fb4a3a492f5322e2a718d441e1cde83 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 6 Dec 2012 10:23:39 -0800 Subject: [PATCH] altos: Hook up APRS to telemetry loop Send APRS packet once every 2 seconds Signed-off-by: Keith Packard --- src/core/ao_telemetry.c | 21 ++++++++++++++++++++- src/drivers/ao_aprs.h | 2 ++ src/megametrum-v0.1/ao_pins.h | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) 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 +#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; diff --git a/src/drivers/ao_aprs.h b/src/drivers/ao_aprs.h index a033fa0b..e00dd75b 100644 --- a/src/drivers/ao_aprs.h +++ b/src/drivers/ao_aprs.h @@ -18,6 +18,8 @@ #ifndef _AO_APRS_H_ #define _AO_APRS_H_ +#define AO_APRS_INTERVAL_TICKS AO_SEC_TO_TICKS(2) + void ao_aprs_send(void); diff --git a/src/megametrum-v0.1/ao_pins.h b/src/megametrum-v0.1/ao_pins.h index f07dc26e..083c1b6f 100644 --- a/src/megametrum-v0.1/ao_pins.h +++ b/src/megametrum-v0.1/ao_pins.h @@ -70,6 +70,7 @@ #define HAS_BEEP 1 #define HAS_RADIO 1 #define HAS_TELEMETRY 1 +#define HAS_APRS 1 #define HAS_SPI_1 1 #define SPI_1_PA5_PA6_PA7 1 /* Barometer */ -- 2.30.2