first cut at turnon scripts for EasyTimer v2
[fw/altos] / src / kernel / ao_report.c
index 831ba874cc3656d312aca76ff2409cbb03e8a7fa..3795eeb34df54ed02bb96e52fb313b8fe0fcc01a 100644 (file)
@@ -149,7 +149,7 @@ ao_report_digit(uint8_t digit)
 }
 
 static void
-ao_report_number(int16_t n)
+ao_report_number(int32_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);
 
@@ -168,11 +168,20 @@ ao_report_number(int16_t n)
        while (i != 0);
 }
 
+#ifdef HAS_BARO
 static void
 ao_report_altitude(void)
 {
-       ao_report_number(ao_max_height);
+       alt_t max_h = ao_max_height;
+       if (ao_config.report_feet) {
+               max_h = max_h * 39 / 12;
+               /* report a leading zero to distinguish */
+               if (max_h)
+                       ao_report_digit(0);
+       }
+       ao_report_number(max_h);
 }
+#endif
 
 #if HAS_BATTERY_REPORT
 static void
@@ -200,8 +209,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
 
@@ -269,7 +278,9 @@ ao_report(void)
 #endif
 
                if (ao_report_state == ao_flight_landed) {
+#if HAS_BARO
                        ao_report_altitude();
+#endif
 #if HAS_FLIGHT
                        ao_delay(AO_SEC_TO_TICKS(5));
                        continue;