Send APRS packet once every 2 seconds
Signed-off-by: Keith Packard <keithp@keithp.com>
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
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) {
+#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();
ao_rdf = rdf;
if (rdf == 0)
ao_radio_rdf_abort();
ao_rdf = rdf;
if (rdf == 0)
ao_radio_rdf_abort();
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;
#ifndef _AO_APRS_H_
#define _AO_APRS_H_
#ifndef _AO_APRS_H_
#define _AO_APRS_H_
+#define AO_APRS_INTERVAL_TICKS AO_SEC_TO_TICKS(2)
+
#define HAS_BEEP 1
#define HAS_RADIO 1
#define HAS_TELEMETRY 1
#define HAS_BEEP 1
#define HAS_RADIO 1
#define HAS_TELEMETRY 1
#define HAS_SPI_1 1
#define SPI_1_PA5_PA6_PA7 1 /* Barometer */
#define HAS_SPI_1 1
#define SPI_1_PA5_PA6_PA7 1 /* Barometer */