altos: Try IMU self-test 10 times before giving up
[fw/altos] / src / core / ao_flight.c
index 4a53bdc672f7af22deb6c94a0fcfb2b2581e14d5..463ff4a2974b38e045fb2214ca9bc163cd490d28 100644 (file)
@@ -46,6 +46,11 @@ __pdata enum ao_flight_state ao_flight_state;        /* current flight state */
 __pdata uint16_t               ao_boost_tick;          /* time of launch detect */
 __pdata uint16_t               ao_motor_number;        /* number of motors burned so far */
 
+#if HAS_IMU
+/* Any sensor can set this to mark the flight computer as 'broken' */
+__xdata uint8_t                        ao_sensor_errors;
+#endif
+
 /*
  * track min/max data over a long interval to detect
  * resting
@@ -99,6 +104,9 @@ ao_flight(void)
                            ao_config.accel_minus_g == 0 ||
                            ao_ground_accel < ao_config.accel_plus_g - ACCEL_NOSE_UP ||
                            ao_ground_accel > ao_config.accel_minus_g + ACCEL_NOSE_UP ||
+#if HAS_IMU
+                           ao_sensor_errors ||
+#endif
                            ao_ground_height < -1000 ||
                            ao_ground_height > 7000)
                        {