altos: Make telescience reliably log only when told to
[fw/altos] / src / ao_flight.c
index 94fbf1784bf4cdbdc9885b5ad6054ac983fcafc6..822a20b81f04c777ffb26eee50ed49dcd640fb70 100644 (file)
@@ -168,6 +168,10 @@ ao_flight(void)
                                ao_wakeup(&ao_gps_data);
                                ao_wakeup(&ao_gps_tracking_data);
 #endif
+#ifdef ASCENT_SIGNAL
+                               ASCENT_SIGNAL = 0;
+                               ASCENT_SIGNAL_DIR |= (1 << ASCENT_SIGNAL_PIN);
+#endif
 
                                ao_wakeup(DATA_TO_XDATA(&ao_flight_state));
                                break;
@@ -234,6 +238,13 @@ ao_flight(void)
                                /* slow down the telemetry system */
                                ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_RECOVER);
 
+                               /* Turn the RDF beacon back on */
+                               ao_rdf_set(1);
+
+#ifdef ASCENT_SIGNAL
+                               ASCENT_SIGNAL_DIR &= ~(1 << ASCENT_SIGNAL_PIN);
+                               ASCENT_SIGNAL = 0;
+#endif
                                /*
                                 * Start recording min/max height
                                 * to figure out when the rocket has landed
@@ -292,8 +303,6 @@ ao_flight(void)
 
                                        /* turn off the ADC capture */
                                        ao_timer_set_adc_interval(0);
-                                       /* Enable RDF beacon */
-                                       ao_rdf_set(1);
 
                                        ao_wakeup(DATA_TO_XDATA(&ao_flight_state));
                                }
@@ -312,6 +321,12 @@ static __xdata struct ao_task      flight_task;
 void
 ao_flight_init(void)
 {
+#ifdef ASCENT_SIGNAL
+       ASCENT_SIGNAL_SEL &= ~(1 << ASCENT_SIGNAL_PIN);
+       ASCENT_SIGNAL_DIR &= ~(1 << ASCENT_SIGNAL_PIN);
+       P1INP |= (1 << ASCENT_SIGNAL_PIN);
+       ASCENT_SIGNAL = 1;
+#endif
        ao_flight_state = ao_flight_startup;
        ao_add_task(&flight_task, ao_flight, "flight");
 }