summaryrefslogtreecommitdiff
path: root/ao_panic.c
diff options
context:
space:
mode:
Diffstat (limited to 'ao_panic.c')
-rw-r--r--ao_panic.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/ao_panic.c b/ao_panic.c
index 0f8433dc..30ccce60 100644
--- a/ao_panic.c
+++ b/ao_panic.c
@@ -17,8 +17,36 @@
#include "ao.h"
+static void
+ao_panic_delay(uint8_t n)
+{
+ uint8_t i = 0;
+
+ while (n--)
+ while (--i)
+ _asm nop _endasm;
+}
+
void
ao_panic(uint8_t reason)
{
- (void) 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);
+ ao_beep(AO_BEEP_OFF);
+ ao_panic_delay(2);
+ for (n = 0; n < reason; n++) {
+ ao_led_on(AO_LED_RED);
+ ao_beep(AO_BEEP_MID);
+ ao_panic_delay(1);
+ ao_led_off(AO_LED_RED);
+ ao_beep(AO_BEEP_OFF);
+ ao_panic_delay(1);
+ }
+ ao_panic_delay(2);
+ }
}