altos/micropeak-v2.0: Fix LED blinking sequence at power-on
[fw/altos] / src / micropeak-v2.0 / ao_micropeak.c
index df557e60f1b9168e42e9afe2cb247e25fbe25f23..0e3a90056d9ddd5c01cc2f8075898f4cf39746bc 100644 (file)
@@ -176,11 +176,12 @@ ao_micropeak(void)
        /* Give the person a second to get their finger out of the way */
        ao_delay(AO_MS_TO_TICKS(1000));
 
-       ao_pips();
-
        ao_log_micro_restore();
        ao_compute_height();
        ao_report_altitude();
+
+       ao_pips();
+
        ao_log_micro_dump();
 
 #if BOOST_DELAY
@@ -243,6 +244,11 @@ ao_hsi_init(void)
 void
 main(void)
 {
+       int i;
+
+       for (i = 0; i < 100000; i++)
+               ao_arch_nop();
+
        if (ao_battery_voltage() < 320)
                ao_on_battery = 1;
 
@@ -257,22 +263,21 @@ main(void)
        ao_timer_init();
        ao_serial_init();
        stm_moder_set(&stm_gpioa, 2, STM_MODER_OUTPUT);
-
        ao_dma_init();
        ao_spi_init();
        ao_exti_init();
 
-       /* Leave USB disabled on battery */
-       if (!ao_on_battery) {
-               ao_usb_init();
-               ao_cmd_init();
-       }
-
        ao_ms5607_init();
-
        ao_storage_init();
 
-       ao_add_task(&mp_task, ao_micropeak, "micropeak");
-       ao_cmd_register(mp_cmd);
+       if (ao_on_battery) {
+               /* On battery power, run the flight code */
+               ao_add_task(&mp_task, ao_micropeak, "micropeak");
+       } else {
+               /* otherwise, turn on USB and run the command processor */
+               ao_usb_init();
+               ao_cmd_init();
+               ao_cmd_register(mp_cmd);
+       }
        ao_start_scheduler();
 }