diff options
Diffstat (limited to 'src/core/ao_panic.c')
| -rw-r--r-- | src/core/ao_panic.c | 19 | 
1 files changed, 12 insertions, 7 deletions
| diff --git a/src/core/ao_panic.c b/src/core/ao_panic.c index 52433044..c29cd8fe 100644 --- a/src/core/ao_panic.c +++ b/src/core/ao_panic.c @@ -29,6 +29,10 @@  #define ao_led_off(x)  #endif +#ifndef AO_LED_PANIC +#define AO_LED_PANIC	AO_LED_RED +#endif +  static void  ao_panic_delay(uint8_t n)  { @@ -49,13 +53,14 @@ ao_panic(uint8_t reason)  	ao_cur_task = NULL;  	printf ("panic %d\n", reason);  #endif -	__critical for (;;) { +	ao_arch_block_interrupts(); +	for (;;) {  		ao_panic_delay(20);  		for (n = 0; n < 5; n++) { -			ao_led_on(AO_LED_RED); +			ao_led_on(AO_LED_PANIC);  			ao_beep(AO_BEEP_HIGH);  			ao_panic_delay(1); -			ao_led_off(AO_LED_RED); +			ao_led_off(AO_LED_PANIC);  			ao_beep(AO_BEEP_LOW);  			ao_panic_delay(1);  		} @@ -66,18 +71,18 @@ ao_panic(uint8_t reason)  #pragma disable_warning 126  #endif  		if (reason & 0x40) { -			ao_led_on(AO_LED_RED); +			ao_led_on(AO_LED_PANIC);  			ao_beep(AO_BEEP_HIGH);  			ao_panic_delay(40); -			ao_led_off(AO_LED_RED); +			ao_led_off(AO_LED_PANIC);  			ao_beep(AO_BEEP_OFF);  			ao_panic_delay(10);  		}  		for (n = 0; n < (reason & 0x3f); n++) { -			ao_led_on(AO_LED_RED); +			ao_led_on(AO_LED_PANIC);  			ao_beep(AO_BEEP_MID);  			ao_panic_delay(10); -			ao_led_off(AO_LED_RED); +			ao_led_off(AO_LED_PANIC);  			ao_beep(AO_BEEP_OFF);  			ao_panic_delay(10);  		} | 
