Sub: Log leak failsafe events, and send statustext even when disarmed

This commit is contained in:
Jacob Walser 2016-11-21 17:20:30 -05:00 committed by Andrew Tridgell
parent cd6ce2b208
commit 5eb50d5d21
2 changed files with 8 additions and 2 deletions

View File

@ -401,6 +401,7 @@ enum ThrowModeState {
#define ERROR_SUBSYSTEM_TERRAIN 21
#define ERROR_SUBSYSTEM_NAVIGATION 22
#define ERROR_SUBSYSTEM_FAILSAFE_TERRAIN 23
#define ERROR_SUBSYSTEM_FAILSAFE_LEAK 24
// general error codes
#define ERROR_CODE_ERROR_RESOLVED 0
#define ERROR_CODE_FAILED_TO_INITIALISE 1

View File

@ -134,6 +134,9 @@ void Sub::set_leak_status(bool status) {
// Do nothing if we are dry, or if leak failsafe action is disabled
if(status == false || g.failsafe_leak == FS_LEAK_DISABLED) {
if(failsafe.leak) {
Log_Write_Error(ERROR_SUBSYSTEM_FAILSAFE_LEAK, ERROR_CODE_FAILSAFE_RESOLVED);
}
failsafe.leak = false;
return;
}
@ -148,14 +151,16 @@ void Sub::set_leak_status(bool status) {
}
// Do nothing if we have already triggered the failsafe action, or if the motors are disarmed
if(failsafe.leak || !motors.armed()) {
if(failsafe.leak) {
return;
}
failsafe.leak = true;
Log_Write_Error(ERROR_SUBSYSTEM_FAILSAFE_LEAK, ERROR_CODE_FAILSAFE_OCCURRED);
// Handle failsafe action
if(g.failsafe_leak == FS_LEAK_SURFACE && motors.armed()) {
if(failsafe.leak && g.failsafe_leak == FS_LEAK_SURFACE && motors.armed()) {
set_mode(SURFACE, MODE_REASON_LEAK_FAILSAFE);
}
}