diff --git a/firmware/src/cron.c b/firmware/src/cron.c index 5e06c5f..21ae449 100644 --- a/firmware/src/cron.c +++ b/firmware/src/cron.c @@ -31,10 +31,10 @@ #include "data.h" #include "hw_config.h" #include "watchdog.h" - +#include "backlog.h" /* Internal time representation */ -struct tracker_time time = {}; +struct tracker_time time = {0}; /* Pointer to latest datapoint */ struct tracker_datapoint* dp; @@ -111,6 +111,11 @@ void do_cron(void) pips_telemetry(); } + + /* ---- Record for backlog ---- */ + if ((time.minute == 0) && (time.second == 25)) { + record_backlog(dp); + } } /** diff --git a/firmware/src/main.c b/firmware/src/main.c index c55a532..70ddfb8 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -39,8 +39,10 @@ #include "location.h" #include "rf_tests.h" #include "data.h" +#include "backlog.h" #define CALLSIGN "UBSEDSx" +#define APRS_COMMENT "RTTY/434.6U8N2" /** * Formats a UKHAS telemetry string for the given datapoint @@ -150,6 +152,8 @@ void contestia_telemetry(struct tracker_datapoint* dp) { */ void aprs_telemetry(struct tracker_datapoint* dp) { + struct tracker_datapoint* backlog_dp_ptr; + if (!gps_is_locked()) return; /* Don't bother with no GPS */ float lat = (float)dp->latitude / 10000000.0; /* degrees */ @@ -165,6 +169,19 @@ void aprs_telemetry(struct tracker_datapoint* dp) { /* Set location */ aprs_set_datapoint(dp); + /* Set comment */ + if ((dp->time.hour % 2) == 0) { + aprs_set_comment(APRS_COMMENT); + } else { + backlog_dp_ptr = get_backlog(); + + if (backlog_dp_ptr) { /* Backlog comment if we can */ + aprs_set_backlog_comment(backlog_dp_ptr); + } else { + aprs_set_comment(APRS_COMMENT); + } + } + /* Set frequency */ telemetry_aprs_set_frequency(aprs_location_frequency());