summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-12-06 10:28:14 -0800
committerKeith Packard <keithp@keithp.com>2012-12-06 10:28:14 -0800
commit1f84c0adbfa494ddc7dbe276796d999560be9438 (patch)
treee8280bcaeb7ca405574e763fcd538066a71a55c1
parentf661da527fb4a3a492f5322e2a718d441e1cde83 (diff)
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 <keithp@keithp.com>
-rw-r--r--src/core/ao.h5
-rw-r--r--src/core/ao_config.c2
-rw-r--r--src/core/ao_telemetry.c31
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();
}