Commit 9e426b02 authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #5601 from DonLakeFlyer/SeqNum

Resume Mission: Fix up sequence numbers and current item
parents 332d9843 c1b7e860
......@@ -1006,7 +1006,6 @@ void MissionManager::generateResumeMission(int resumeIndex)
}
resumeIndex = qMax(0, resumeIndex);
int seqNum = 0;
QList<MissionItem*> resumeMission;
QList<MAV_CMD> includedResumeCommands;
......@@ -1029,7 +1028,6 @@ void MissionManager::generateResumeMission(int resumeIndex)
<< MAV_CMD_NAV_TAKEOFF;
bool addHomePosition = _vehicle->firmwarePlugin()->sendHomePositionToVehicle();
int setCurrentIndex = addHomePosition ? 1 : 0;
int prefixCommandCount = 0;
for (int i=0; i<_missionItems.count(); i++) {
......@@ -1039,8 +1037,7 @@ void MissionManager::generateResumeMission(int resumeIndex)
prefixCommandCount++;
}
MissionItem* newItem = new MissionItem(*oldItem, this);
newItem->setIsCurrentItem( i == setCurrentIndex);
newItem->setSequenceNumber(seqNum++);
newItem->setIsCurrentItem(false);
resumeMission.append(newItem);
}
}
......@@ -1079,12 +1076,13 @@ void MissionManager::generateResumeMission(int resumeIndex)
foundCameraStartStop = true;
break;
case MAV_CMD_IMAGE_START_CAPTURE:
// Only keep the first of these commands that are found
if (foundCameraStartStop) {
if (resumeItem->param3() != 0) {
// Remove commands which do not trigger by time
resumeMission.removeAt(prefixCommandCount);
break;
}
if (resumeItem->param3() != 0) {
// Remove commands which do no trigger by time
if (foundCameraStartStop) {
// Only keep the first of these commands that are found
resumeMission.removeAt(prefixCommandCount);
}
foundCameraStartStop = true;
......@@ -1096,6 +1094,14 @@ void MissionManager::generateResumeMission(int resumeIndex)
prefixCommandCount--;
}
// Adjust sequence numbers and current item
int seqNum = 0;
for (int i=0; i<resumeMission.count(); i++) {
resumeMission[i]->setSequenceNumber(seqNum++);
}
int setCurrentIndex = addHomePosition ? 1 : 0;
resumeMission[setCurrentIndex]->setIsCurrentItem(true);
// Send to vehicle
_clearAndDeleteWriteMissionItems();
for (int i=0; i<resumeMission.count(); i++) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment