Add an additional safety switch LED blink sequence when FMU and IO are armed

If both the FMU and the IO board are armed then the secure switch will
blink two times quickly then a pause followed by two quick blinks and
so on.
This commit is contained in:
Simon Wilks 2012-12-07 21:34:41 +01:00
parent 82cbac70ee
commit 197e573885
1 changed files with 23 additions and 2 deletions

View File

@ -60,6 +60,11 @@ static struct hrt_call failsafe_call;
*/ */
static unsigned counter; static unsigned counter;
/*
* Used to coordinate a special blink pattern wheb both the FMU and IO are armed.
*/
static unsigned blink_count = 0;
#define ARM_COUNTER_THRESHOLD 10 #define ARM_COUNTER_THRESHOLD 10
#define DISARM_COUNTER_THRESHOLD 2 #define DISARM_COUNTER_THRESHOLD 2
@ -120,9 +125,25 @@ safety_check_button(void *arg)
counter = 0; counter = 0;
} }
/* when armed, toggle the LED; when safe, leave it on */ /*
* When the IO is armed, toggle the LED; when IO and FMU armed use aircraft like
* pattern (long pause then 2 fast blinks); when safe, leave it on.
*/
if (system_state.armed) { if (system_state.armed) {
if (system_state.arm_ok) {
/* FMU and IO are armed */
if (blink_count > 9) {
safety_led_state = !safety_led_state; safety_led_state = !safety_led_state;
} else {
safety_led_state = false;
}
if (blink_count++ == 12) {
blink_count = 0;
}
} else {
/* Only the IO is armed so use a constant blink rate */
safety_led_state = !safety_led_state;
}
} else { } else {
safety_led_state = true; safety_led_state = true;
} }