altos: Allow igniter status beeping with only 'extra' channels
[fw/altos] / src / kernel / ao_report.c
index 12c3a1e90acabb589114ed786edb08caf9a7c0fb..26604d1ad4d784a96318dae4e8115327fe702cbc 100644 (file)
@@ -40,6 +40,8 @@ static const uint8_t flight_reports[] = {
        MORSE4(1,0,0,1),        /* invalid 'X' */
 };
 
+static enum ao_flight_state ao_report_state;
+
 #if HAS_BEEP
 #define low(time)      ao_beep_for(AO_BEEP_LOW, time)
 #define mid(time)      ao_beep_for(AO_BEEP_MID, time)
@@ -58,8 +60,6 @@ static const uint8_t flight_reports[] = {
 #endif
 #define pause(time)    ao_delay(time)
 
-static enum ao_flight_state ao_report_state;
-
 /*
  * Farnsworth spacing
  *
@@ -115,7 +115,7 @@ static enum ao_flight_state ao_report_state;
  */
 
 static void
-ao_report_beep(void) 
+ao_report_flight_state(void) 
 {
        uint8_t r = flight_reports[ao_flight_state];
        uint8_t l = r & 7;
@@ -190,6 +190,7 @@ ao_report_battery(void)
 #endif
 
 #if HAS_IGNITE_REPORT
+#if HAS_IGNITE
 static uint8_t
 ao_report_igniter_ready(enum ao_igniter igniter)
 {
@@ -202,16 +203,13 @@ ao_report_igniter(void)
        return (ao_report_igniter_ready(ao_igniter_drogue) |
                     (ao_report_igniter_ready(ao_igniter_main) << 1));
 }
+#endif
 
 static void
 ao_report_continuity(void) 
 {
-       uint8_t c;
-
-#if !HAS_IGNITE
-       if (!ao_igniter_present)
-               return;
-#endif
+       uint8_t c;
+#if HAS_IGNITE
        c = ao_report_igniter();
        if (c) {
                while (c--) {
@@ -225,8 +223,11 @@ ao_report_continuity(void)
                        low(AO_MS_TO_TICKS(20));
                }
        }
+#endif
 #if AO_PYRO_NUM
+#if HAS_IGNITE
        pause(AO_MS_TO_TICKS(250));
+#endif
        for(c = 0; c < AO_PYRO_NUM; c++) {
                enum ao_igniter_status  status = ao_pyro_status(c);
                if (status == ao_igniter_ready)
@@ -261,7 +262,7 @@ ao_report(void)
                        ao_report_battery();
                else
 #endif
-                       ao_report_beep();
+                       ao_report_flight_state();
 #if HAS_SENSOR_ERRORS
                if (ao_report_state == ao_flight_invalid && ao_sensor_errors)
                        ao_report_number(ao_sensor_errors);