altos: Add telemetry to megametrum
[fw/altos] / src / core / ao_flight_mm.c
index e812016eaec05e854226e9858959bb1fe58f6874..28b9869f8bb7e19033e579e08c754e900e2a4763 100644 (file)
 #error Please define HAS_USB
 #endif
 
+#ifndef HAS_TELEMETRY
+#define HAS_TELEMETRY  HAS_RADIO
+#endif
+
 /* Main flight thread. */
 
 __pdata enum ao_flight_state   ao_flight_state;        /* current flight state */
@@ -83,7 +87,7 @@ ao_flight(void)
                         *  - pad mode if we're upright,
                         *  - idle mode otherwise
                         */
-#if HAS_ACCEL
+#if HAS_ACCEL && 0
                        if (ao_config.accel_plus_g == 0 ||
                            ao_config.accel_minus_g == 0 ||
                            ao_ground_accel < ao_config.accel_plus_g - ACCEL_NOSE_UP ||
@@ -94,21 +98,21 @@ ao_flight(void)
                                 */
                                ao_flight_state = ao_flight_invalid;
 
-#if HAS_RADIO
+#if HAS_RADIO && PACKET_HAS_SLAVE
                                /* Turn on packet system in invalid mode on TeleMetrum */
                                ao_packet_slave_start();
 #endif
                        } else
 #endif
                                if (!ao_flight_force_idle
-#if HAS_ACCEL
+#if HAS_ACCEL && 0
                                    && ao_ground_accel < ao_config.accel_plus_g + ACCEL_NOSE_UP
 #endif
                                        )
                        {
                                /* Set pad mode - we can fly! */
                                ao_flight_state = ao_flight_pad;
-#if HAS_USB && HAS_RADIO
+#if HAS_USB && HAS_RADIO && 0
                                /* Disable the USB controller in flight mode
                                 * to save power
                                 */
@@ -120,7 +124,7 @@ ao_flight(void)
                                ao_packet_slave_stop();
 #endif
 
-#if HAS_RADIO
+#if HAS_TELEMETRY
                                /* Turn on telemetry system */
                                ao_rdf_set(1);
                                ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_PAD);
@@ -131,7 +135,7 @@ ao_flight(void)
                                /* Set idle mode */
                                ao_flight_state = ao_flight_idle;
  
-#if HAS_ACCEL && HAS_RADIO
+#if HAS_ACCEL && HAS_RADIO && PACKET_HAS_SLAVE
                                /* Turn on packet system in idle mode on TeleMetrum */
                                ao_packet_slave_start();
 #endif
@@ -171,7 +175,7 @@ ao_flight(void)
                                /* start logging data */
                                ao_log_start();
 
-#if HAS_RADIO
+#if HAS_TELEMETRY
                                /* Increase telemetry rate */
                                ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_FLIGHT);
 
@@ -259,7 +263,7 @@ ao_flight(void)
                                ao_ignite(ao_igniter_drogue);
 #endif
 
-#if HAS_RADIO
+#if HAS_TELEMETRY
                                /* slow down the telemetry system */
                                ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_RECOVER);
 
@@ -359,9 +363,11 @@ static inline int frac_part(int16_t i)     { return ((i & 0xf) * 100 + 8) / 16; }
 static void
 ao_flight_dump(void)
 {
+#if HAS_ACCEL
        int16_t accel;
 
        accel = ((ao_ground_accel - ao_sample_accel) * ao_accel_scale) >> 16;
+#endif
 
        printf ("sample:\n");
        printf ("  tick        %d\n", ao_sample_tick);
@@ -378,7 +384,9 @@ ao_flight_dump(void)
 
        printf ("  alt         %d\n", ao_sample_alt);
        printf ("  height      %d\n", ao_sample_height);
+#if HAS_ACCEL
        printf ("  accel       %d.%02d\n", int_part(accel), frac_part(accel));
+#endif
 
 
        printf ("kalman:\n");