From 1f84c0adbfa494ddc7dbe276796d999560be9438 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 6 Dec 2012 10:28:14 -0800 Subject: [PATCH] altos: Allow telemetry, rdf and APRS to be individually controlled But, only when APRS is available so that TeleMetrum and TeleMini don't change behaviour Signed-off-by: Keith Packard --- src/core/ao.h | 5 +++++ src/core/ao_config.c | 2 +- src/core/ao_telemetry.c | 31 +++++++++++++++++++++---------- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/core/ao.h b/src/core/ao.h index d6e27707..fa873efe 100644 --- a/src/core/ao.h +++ b/src/core/ao.h @@ -717,6 +717,11 @@ struct ao_config { #define AO_IGNITE_MODE_APOGEE 1 #define AO_IGNITE_MODE_MAIN 2 +#define AO_RADIO_ENABLE_CORE 1 +#define AO_RADIO_ENABLE_APRS 2 +#define AO_RADIO_DISABLE_TELEMETRY 4 +#define AO_RADIO_DISABLE_RDF 8 + #define AO_PAD_ORIENTATION_ANTENNA_UP 0 #define AO_PAD_ORIENTATION_ANTENNA_DOWN 1 diff --git a/src/core/ao_config.c b/src/core/ao_config.c index e85ddcb4..df40ff90 100644 --- a/src/core/ao_config.c +++ b/src/core/ao_config.c @@ -128,7 +128,7 @@ _ao_config_get(void) if (minor < 6) ao_config.pad_orientation = AO_CONFIG_DEFAULT_PAD_ORIENTATION; if (minor < 8) - ao_config.radio_enable = TRUE; + ao_config.radio_enable = AO_RADIO_ENABLE_CORE; if (minor < 9) ao_xmemset(&ao_config.aes_key, '\0', AO_AES_LEN); if (minor < 10) diff --git a/src/core/ao_telemetry.c b/src/core/ao_telemetry.c index 79d1bb81..4ff98f9b 100644 --- a/src/core/ao_telemetry.c +++ b/src/core/ao_telemetry.c @@ -300,27 +300,35 @@ ao_telemetry(void) while (ao_telemetry_interval) { +#if HAS_APRS + if (!(ao_config.radio_enable & AO_RADIO_DISABLE_TELEMETRY)) +#endif + { #ifdef AO_SEND_ALL_BARO - ao_send_baro(); + ao_send_baro(); #endif #ifdef AO_SEND_MEGA - ao_send_mega_sensor(); - ao_send_mega_data(); + ao_send_mega_sensor(); + ao_send_mega_data(); #else - ao_send_sensor(); + ao_send_sensor(); #endif #if HAS_COMPANION - if (ao_companion_running) - ao_send_companion(); + if (ao_companion_running) + ao_send_companion(); #endif - ao_send_configuration(); + ao_send_configuration(); #if HAS_GPS - ao_send_location(); - ao_send_satellite(); + ao_send_location(); + ao_send_satellite(); #endif + } #ifndef AO_SEND_ALL_BARO if (ao_rdf && +#if HAS_APRS + !(ao_config.radio_enable & AO_RADIO_DISABLE_RDF) && +#endif (int16_t) (ao_time() - ao_rdf_time) >= 0) { #if HAS_IGNITE_REPORT @@ -335,7 +343,10 @@ ao_telemetry(void) ao_radio_rdf(); } #if HAS_APRS - if (ao_rdf && (int16_t) (ao_time() - ao_aprs_time) >= 0) { + if (ao_rdf && + (ao_config.radio_enable & AO_RADIO_ENABLE_APRS) && + (int16_t) (ao_time() - ao_aprs_time) >= 0) + { ao_aprs_time = ao_time() + AO_APRS_INTERVAL_TICKS; ao_aprs_send(); } -- 2.30.2