From 40777e9e74b25638b886605f66d78d583844cf46 Mon Sep 17 00:00:00 2001 From: Tom Pittenger Date: Fri, 25 Nov 2016 16:45:11 -0800 Subject: [PATCH] AP_Mission: move jump_to_landing_sequence() to AP_Mission --- libraries/AP_Mission/AP_Mission.cpp | 23 +++++++++++++++++++++++ libraries/AP_Mission/AP_Mission.h | 5 +++++ 2 files changed, 28 insertions(+) diff --git a/libraries/AP_Mission/AP_Mission.cpp b/libraries/AP_Mission/AP_Mission.cpp index b5260bd64f..b9bd353d59 100644 --- a/libraries/AP_Mission/AP_Mission.cpp +++ b/libraries/AP_Mission/AP_Mission.cpp @@ -3,6 +3,7 @@ #include "AP_Mission.h" #include +#include const AP_Param::GroupInfo AP_Mission::var_info[] = { @@ -1615,3 +1616,25 @@ uint16_t AP_Mission::get_landing_sequence_start() return landing_start_index; } +/* + find the nearest landing sequence starting point (DO_LAND_START) and + switch to that mission item. Returns false if no DO_LAND_START + available. + */ +bool AP_Mission::jump_to_landing_sequence(void) +{ + uint16_t land_idx = get_landing_sequence_start(); + if (land_idx != 0 && set_current_cmd(land_idx)) { + + //if the mission has ended it has to be restarted + if (state() == AP_Mission::MISSION_STOPPED) { + resume(); + } + + GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_INFO, "Landing sequence start"); + return true; + } + + GCS_MAVLINK::send_statustext_all(MAV_SEVERITY_WARNING, "Unable to start landing sequence"); + return false; +} diff --git a/libraries/AP_Mission/AP_Mission.h b/libraries/AP_Mission/AP_Mission.h index 30f3ec8da9..45346bff52 100644 --- a/libraries/AP_Mission/AP_Mission.h +++ b/libraries/AP_Mission/AP_Mission.h @@ -422,6 +422,11 @@ public: // be found. uint16_t get_landing_sequence_start(); + // find the nearest landing sequence starting point (DO_LAND_START) and + // switch to that mission item. Returns false if no DO_LAND_START + // available. + bool jump_to_landing_sequence(void); + // user settable parameters static const struct AP_Param::GroupInfo var_info[];