altos: mma655x also needs ao_sensor_errors
[fw/altos] / src / core / ao_flight.c
index 463ff4a2974b38e045fb2214ca9bc163cd490d28..aac6880db1260d6dea90a4ce47cd5319e6e1d0f4 100644 (file)
@@ -46,7 +46,7 @@ __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
+#if HAS_SENSOR_ERRORS
 /* Any sensor can set this to mark the flight computer as 'broken' */
 __xdata uint8_t                        ao_sensor_errors;
 #endif
@@ -104,9 +104,6 @@ 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)
                        {
@@ -152,7 +149,11 @@ ao_flight(void)
 #endif
                        } else {
                                /* Set idle mode */
-                               ao_flight_state = ao_flight_idle;
+                               ao_flight_state = ao_flight_idle;
+#if HAS_SENSOR_ERRORS
+                               if (ao_sensor_errors)
+                                       ao_flight_state = ao_flight_invalid;
+#endif
  
 #if HAS_ACCEL && HAS_RADIO && PACKET_HAS_SLAVE
                                /* Turn on packet system in idle mode on TeleMetrum */