Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / src / kernel / ao_report.c
index 26604d1ad4d784a96318dae4e8115327fe702cbc..4624403a10d61e0a255caf38f56fecdc8bcff4af 100644 (file)
@@ -149,7 +149,7 @@ ao_report_digit(uint8_t digit)
 }
 
 static void
-ao_report_number(int16_t n)
+ao_report_number(ao_v_t n)
 {
        uint8_t digits[10];
        uint8_t ndigits, i;
@@ -158,7 +158,7 @@ ao_report_number(int16_t n)
                n = 0;
        ndigits = 0;
        do {
-               digits[ndigits++] = n % 10;
+               digits[ndigits++] = (uint8_t) (n % 10);
                n /= 10;
        } while (n);
 
@@ -200,8 +200,8 @@ ao_report_igniter_ready(enum ao_igniter igniter)
 uint8_t
 ao_report_igniter(void)
 {
-       return (ao_report_igniter_ready(ao_igniter_drogue) |
-                    (ao_report_igniter_ready(ao_igniter_main) << 1));
+       return (uint8_t) (ao_report_igniter_ready(ao_igniter_drogue) |
+                         (ao_report_igniter_ready(ao_igniter_main) << 1));
 }
 #endif
 
@@ -285,6 +285,15 @@ ao_report(void)
                        while (c-- && ao_flight_state == ao_flight_pad)
                                pause(AO_MS_TO_TICKS(100));
                }
+#endif
+#if HAS_PAD_REPORT
+               while (ao_flight_state == ao_flight_pad) {
+                       uint8_t c;
+                       ao_report_flight_state();
+                       c = 50;
+                       while (c-- && ao_flight_state == ao_flight_pad)
+                               pause(AO_MS_TO_TICKS(100));
+               }
 #endif
                while (ao_report_state == ao_flight_state)
                        ao_sleep(&ao_flight_state);