altos: Allow telemetry, rdf and APRS to be individually controlled
authorKeith Packard <keithp@keithp.com>
Thu, 6 Dec 2012 18:28:14 +0000 (10:28 -0800)
committerKeith Packard <keithp@keithp.com>
Thu, 6 Dec 2012 18:28:14 +0000 (10:28 -0800)
But, only when APRS is available so that TeleMetrum and TeleMini don't
change behaviour

Signed-off-by: Keith Packard <keithp@keithp.com>
src/core/ao.h
src/core/ao_config.c
src/core/ao_telemetry.c

index d6e27707d7137e7d9077ee6c887bdcad2af48648..fa873efeba12b49f67c754677d0c4baa7c529e74 100644 (file)
@@ -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
 
index e85ddcb4d74d9a53dbb0b2ed9630d4be0f667cfe..df40ff90659214081a307437e5031843f5c24bb9 100644 (file)
@@ -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)
index 79d1bb814f7b2ad87da0414bce50fb9841b05177..4ff98f9be3eeea5dad0f908a01dffa4d90c3915c 100644 (file)
@@ -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();
                        }