From 7f5222eac2d2c0741e67d9f61b2a00f66250b008 Mon Sep 17 00:00:00 2001 From: Tom Pittenger Date: Tue, 21 Feb 2023 17:47:01 -0800 Subject: [PATCH] AP_Mission: add Jump_TAG hook for scripting --- libraries/AP_Mission/AP_Mission.cpp | 12 ++++++++++++ libraries/AP_Mission/AP_Mission.h | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/libraries/AP_Mission/AP_Mission.cpp b/libraries/AP_Mission/AP_Mission.cpp index 647c56e3fa..b419f5d67a 100644 --- a/libraries/AP_Mission/AP_Mission.cpp +++ b/libraries/AP_Mission/AP_Mission.cpp @@ -2091,6 +2091,18 @@ uint16_t AP_Mission::get_index_of_jump_tag(const uint16_t tag) const return 0; } +#if AP_SCRIPTING_ENABLED +bool AP_Mission::get_last_jump_tag(uint16_t &tag, uint16_t &age) const +{ + if (_jump_tag.age == 0) { + return false; + } + tag = _jump_tag.tag; + age = _jump_tag.age; + return true; +} +#endif + // init_jump_tracking - initialise jump_tracking variables void AP_Mission::init_jump_tracking() { diff --git a/libraries/AP_Mission/AP_Mission.h b/libraries/AP_Mission/AP_Mission.h index ca62b666fd..ed1633226c 100644 --- a/libraries/AP_Mission/AP_Mission.h +++ b/libraries/AP_Mission/AP_Mission.h @@ -659,6 +659,13 @@ public: bool get_item(uint16_t index, mavlink_mission_item_int_t& result) const ; bool set_item(uint16_t index, mavlink_mission_item_int_t& source) ; + // Jump Tags. When a JUMP_TAG is run in the mission, either via DO_JUMP_TAG or + // by just being the next item, the tag is remembered and the age is set to 1. + // Only the most recent tag is remembered. It's age is how many NAV items have + // progressed since the tag was seen. While executing the tag, the + // age will be 1. The next NAV command after it will tick the age to 2, and so on. + bool get_last_jump_tag(uint16_t &tag, uint16_t &age) const; + // Set the mission index to the first JUMP_TAG with this tag. // Returns true on success, else false if no appropriate JUMP_TAG match can be found or if setting the index failed bool jump_to_tag(const uint16_t tag);