From 3f00e2e6c2a923d2d8cc4ae36b9ea0e60bbbb583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Mon, 28 May 2018 11:50:52 +0200 Subject: [PATCH] mavlink mission: send an ack on duplicated last uploaded mission item --- src/modules/mavlink/mavlink_mission.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/modules/mavlink/mavlink_mission.cpp b/src/modules/mavlink/mavlink_mission.cpp index 7e201cf9c5..6be7429c74 100644 --- a/src/modules/mavlink/mavlink_mission.cpp +++ b/src/modules/mavlink/mavlink_mission.cpp @@ -1021,10 +1021,18 @@ MavlinkMissionManager::handle_mission_item_both(const mavlink_message_t *msg) } } else if (_state == MAVLINK_WPM_STATE_IDLE) { - PX4_DEBUG("WPM: MISSION_ITEM ERROR: no transfer"); + if (_transfer_seq == wp.seq + 1) { + // Assume this is a duplicate, where we already successfully got all mission items, + // but the GCS did not receive the last ack and sent the same item again + send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ACCEPTED); + + } else { + PX4_DEBUG("WPM: MISSION_ITEM ERROR: no transfer"); + + _mavlink->send_statustext_critical("IGN MISSION_ITEM: No transfer"); + send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ERROR); + } - _mavlink->send_statustext_critical("IGN MISSION_ITEM: No transfer"); - send_mission_ack(_transfer_partner_sysid, _transfer_partner_compid, MAV_MISSION_ERROR); return; } else {