From c5b9ccdc8504c05f0f45ec27856aaef8e35d4c38 Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Wed, 27 Nov 2019 11:14:47 +0100 Subject: [PATCH] mavlink: don't interfere in ongoing transfers As a convenience we send down the amount of do jumps left to do. However, we should not send the mission item if happen to be in the middle of another transfer. --- src/modules/mavlink/mavlink_mission.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/modules/mavlink/mavlink_mission.cpp b/src/modules/mavlink/mavlink_mission.cpp index a209ba9d81..305eb9c577 100644 --- a/src/modules/mavlink/mavlink_mission.cpp +++ b/src/modules/mavlink/mavlink_mission.cpp @@ -498,10 +498,13 @@ MavlinkMissionManager::send(const hrt_abstime now) send_mission_current(_current_seq); if (mission_result.item_do_jump_changed) { - /* send a mission item again if the remaining DO_JUMPs has changed */ - _mission_type = MAV_MISSION_TYPE_MISSION; - send_mission_item(_transfer_partner_sysid, _transfer_partner_compid, - (uint16_t)mission_result.item_changed_index); + /* Send a mission item again if the remaining DO_JUMPs has changed, but don't interfere + * if there are ongoing transfers happening already. */ + if (_state == MAVLINK_WPM_STATE_IDLE) { + _mission_type = MAV_MISSION_TYPE_MISSION; + send_mission_item(_transfer_partner_sysid, _transfer_partner_compid, + (uint16_t)mission_result.item_changed_index); + } } } else {