AP_AdvancedFailsafe: Allow landing to be a termination action

This commit is contained in:
Michael du Breuil 2017-08-30 12:31:31 -07:00 committed by Tom Pittenger
parent 40f49733ea
commit 0bbbb3d08d
2 changed files with 11 additions and 6 deletions

View File

@ -25,8 +25,6 @@
#include <SRV_Channel/SRV_Channel.h>
#include <GCS_MAVLink/GCS.h>
#define TERMINATE 42
extern const AP_HAL::HAL& hal;
// table of user settable parameters
@ -69,7 +67,7 @@ const AP_Param::GroupInfo AP_AdvancedFailsafe::var_info[] = {
// @Param: TERM_ACTION
// @DisplayName: Terminate action
// @Description: This can be used to force an action on flight termination. Normally this is handled by an external failsafe board, but you can setup APM to handle it here. If set to 0 (which is the default) then no extra action is taken. If set to the magic value 42 then the plane will deliberately crash itself by setting maximum throws on all surfaces, and zero throttle
// @Description: This can be used to force an action on flight termination. Normally this is handled by an external failsafe board, but you can setup APM to handle it here. Please consult the wiki for more information on the possible values of the parameter
// @User: Advanced
AP_GROUPINFO("TERM_ACTION", 6, AP_AdvancedFailsafe, _terminate_action, 0),
@ -363,8 +361,10 @@ bool AP_AdvancedFailsafe::should_crash_vehicle(void)
// determine if the vehicle should be crashed
// only possible if FS_TERM_ACTION is 42 and _terminate is non zero
// _terminate may be set via parameters, or a mavlink command
if (_terminate_action == TERMINATE && _terminate) {
// we are crashing
if (_terminate &&
(_terminate_action == TERMINATE_ACTION_TERMINATE ||
_terminate_action == TERMINATE_ACTION_LAND)) {
// we are terminating
return true;
}
@ -392,7 +392,7 @@ bool AP_AdvancedFailsafe::gcs_terminate(bool should_terminate) {
gcs().send_text(MAV_SEVERITY_INFO, "Aborting termination due to GCS request");
}
return true;
} else if (should_terminate && _terminate_action != TERMINATE) {
} else if (should_terminate && _terminate_action != TERMINATE_ACTION_TERMINATE) {
gcs().send_text(MAV_SEVERITY_INFO, "Unable to terminate, termination is not configured");
}
return false;

View File

@ -45,6 +45,11 @@ public:
STATE_GPS_LOSS = 3
};
enum terminate_action {
TERMINATE_ACTION_TERMINATE = 42,
TERMINATE_ACTION_LAND = 43
};
// Constructor
AP_AdvancedFailsafe(AP_Mission &_mission, AP_Baro &_baro, const AP_GPS &_gps, const RCMapper &_rcmap) :
mission(_mission),