Skip to content

Commit f99d8a6

Browse files
committed
AP_AdvancedFailsafe: option to not go back to the loss comm mission item if we already passed it or already in return path
1 parent a5d7f03 commit f99d8a6

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

libraries/AP_AdvancedFailsafe/AP_AdvancedFailsafe.cpp

+10-1
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,16 @@ AP_AdvancedFailsafe::check(uint32_t last_valid_rc_ms)
253253
_state = STATE_DATA_LINK_LOSS;
254254
if (_wp_comms_hold) {
255255
_saved_wp = mission.get_current_nav_cmd().index;
256-
mission.set_current_cmd(_wp_comms_hold);
256+
257+
//option to not go back to the loss comm mission item if we are already in return path or passed loss comm mission item
258+
if ((mission.state() == AP_Mission::MISSION_RUNNING) &&
259+
((option_is_set(Option::CONTINUE_IF_ALREADY_IN_RETURN_PATH) && mission.get_in_return_path_flag()) ||
260+
(option_is_set(Option::CONTINUE_IF_PASSED_LOSS_COMM_WP) && (mission.get_current_nav_cmd().index > _wp_comms_hold)))){
261+
262+
}else {//nominal case, set mission item to _wp_comms_hold
263+
mission.set_current_cmd(_wp_comms_hold);
264+
}
265+
257266
if (mode == AFS_AUTO && option_is_set(Option::GCS_FS_ALL_AUTONOMOUS_MODES)) {
258267
set_mode_auto();
259268
}

libraries/AP_AdvancedFailsafe/AP_AdvancedFailsafe.h

+2
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ class AP_AdvancedFailsafe
171171
enum class Option {
172172
CONTINUE_AFTER_RECOVERED = (1U<<0),
173173
GCS_FS_ALL_AUTONOMOUS_MODES = (1U<<1),
174+
CONTINUE_IF_ALREADY_IN_RETURN_PATH = (1U<<2),
175+
CONTINUE_IF_PASSED_LOSS_COMM_WP = (1U<<3),
174176
};
175177
bool option_is_set(Option option) const {
176178
return (options.get() & int16_t(option)) != 0;

0 commit comments

Comments
 (0)