ArduChess/Panic.h

58 lines
973 B
C

#ifndef __PANIC_H_INC
#define __PANIC_H_INC
#pragma GCC push_options
#pragma GCC optimize("-Os")
#ifdef _ACF_ACTIVITY_BLINK
bool ledhi;
void blink() {
ledhi = !ledhi;
if(ledhi) {
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
}
#else
void blink() {}
#endif
#ifdef _ACF_PANIC_BLINK
void sos() {
while(true) {
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(200);
digitalWrite(LED_BUILTIN, HIGH);
delay(150);
digitalWrite(LED_BUILTIN, LOW);
delay(150);
digitalWrite(LED_BUILTIN, HIGH);
delay(150);
digitalWrite(LED_BUILTIN, LOW);
delay(150);
digitalWrite(LED_BUILTIN, HIGH);
delay(150);
digitalWrite(LED_BUILTIN, LOW);
delay(150);
delay(2000);
}
}
#endif
void panic(const __FlashStringHelper* message) {
Serial.println(F("PANIC!"));
Serial.println(message);
#ifdef _ACF_PANIC_BLINK
sos();
#endif
while(true);
}
#pragma GCC pop_options
#endif