altos: Make telescience reliably log only when told to
[fw/altos] / src / ao_flight.c
index cfecc5af5d770509d1341a63ae958d4e92550891..822a20b81f04c777ffb26eee50ed49dcd640fb70 100644 (file)
@@ -168,8 +168,9 @@ ao_flight(void)
                                ao_wakeup(&ao_gps_data);
                                ao_wakeup(&ao_gps_tracking_data);
 #endif
-#ifdef ASCENT_PIN
-                               ASCENT_PIN = 0;
+#ifdef ASCENT_SIGNAL
+                               ASCENT_SIGNAL = 0;
+                               ASCENT_SIGNAL_DIR |= (1 << ASCENT_SIGNAL_PIN);
 #endif
 
                                ao_wakeup(DATA_TO_XDATA(&ao_flight_state));
@@ -240,8 +241,9 @@ ao_flight(void)
                                /* Turn the RDF beacon back on */
                                ao_rdf_set(1);
 
-#ifdef ASCENT_PIN
-                               ASCENT_PIN = 1;
+#ifdef ASCENT_SIGNAL
+                               ASCENT_SIGNAL_DIR &= ~(1 << ASCENT_SIGNAL_PIN);
+                               ASCENT_SIGNAL = 0;
 #endif
                                /*
                                 * Start recording min/max height
@@ -320,9 +322,10 @@ void
 ao_flight_init(void)
 {
 #ifdef ASCENT_SIGNAL
-       ASCENT_SIGNAL = 1;
-       ASCENT_SIGNAL_DIR |= (1 << ASCENT_SIGNAL_PIN);
        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");