__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
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)
{
ao_rdf_set(1);
ao_telemetry_set_interval(AO_TELEMETRY_INTERVAL_PAD);
#endif
-#if HAS_LED
+#if AO_LED_RED
/* signal successful initialization by turning off the LED */
ao_led_off(AO_LED_RED);
#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 */
ao_packet_slave_start();
#endif
-#if HAS_LED
+#if AO_LED_RED
/* signal successful initialization by turning off the LED */
ao_led_off(AO_LED_RED);
#endif
#if HAS_ACCEL
int16_t accel;
- accel = ((ao_ground_accel - ao_sample_accel) * ao_accel_scale) >> 16;
+ accel = ((ao_config.accel_plus_g - ao_sample_accel) * ao_accel_scale) >> 16;
#endif
printf ("sample:\n");
ao_flight_state = ao_flight_idle;
}
+uint8_t ao_orient_test;
+
+static void
+ao_orient_test_select(void)
+{
+ ao_orient_test = !ao_orient_test;
+}
+
__code struct ao_cmds ao_flight_cmds[] = {
{ ao_flight_dump, "F\0Dump flight status" },
{ ao_gyro_test, "G\0Test gyro code" },
+ { ao_orient_test_select,"O\0Test orientation code" },
{ 0, NULL },
};
#endif