Add lots more aoview UI bits
[fw/altos] / ao_panic.c
index 30ccce60bdc57ba2dd6a05c3d58a9e7466562e92..f6ecc380c9a0f0a27326dff9dcd321d4e1761514 100644 (file)
 static void
 ao_panic_delay(uint8_t n)
 {
-       uint8_t i = 0;
+       uint8_t i = 0, j = 0;
 
        while (n--)
-               while (--i)
-                       _asm nop _endasm;
+               while (--j)
+                       while (--i)
+                               _asm nop _endasm;
 }
 
 void
@@ -32,21 +33,26 @@ ao_panic(uint8_t reason)
 {
        uint8_t n;
        
-       for (;;) {
-               ao_led_on(AO_LED_RED);
-               ao_beep(AO_BEEP_MID);
-               ao_panic_delay(2);
-               ao_led_off(AO_LED_RED);
+       __critical for (;;) {
+               ao_panic_delay(20);
+               for (n = 0; n < 5; n++) {
+                       ao_led_on(AO_LED_RED);
+                       ao_beep(AO_BEEP_HIGH);
+                       ao_panic_delay(1);
+                       ao_led_off(AO_LED_RED);
+                       ao_beep(AO_BEEP_LOW);
+                       ao_panic_delay(1);
+               }
                ao_beep(AO_BEEP_OFF);
                ao_panic_delay(2);
+#pragma disable_warning 126
                for (n = 0; n < reason; n++) {
                        ao_led_on(AO_LED_RED);
                        ao_beep(AO_BEEP_MID);
-                       ao_panic_delay(1);
+                       ao_panic_delay(10);
                        ao_led_off(AO_LED_RED);
                        ao_beep(AO_BEEP_OFF);
-                       ao_panic_delay(1);
+                       ao_panic_delay(10);
                }
-               ao_panic_delay(2);
        }
 }