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) ...@@ -1006,7 +1006,6 @@ void MissionManager::generateResumeMission(int resumeIndex)
} }
resumeIndex = qMax(0, resumeIndex); resumeIndex = qMax(0, resumeIndex);
int seqNum = 0;
QList<MissionItem*> resumeMission; QList<MissionItem*> resumeMission;
QList<MAV_CMD> includedResumeCommands; QList<MAV_CMD> includedResumeCommands;
...@@ -1029,7 +1028,6 @@ void MissionManager::generateResumeMission(int resumeIndex) ...@@ -1029,7 +1028,6 @@ void MissionManager::generateResumeMission(int resumeIndex)
<< MAV_CMD_NAV_TAKEOFF; << MAV_CMD_NAV_TAKEOFF;
bool addHomePosition = _vehicle->firmwarePlugin()->sendHomePositionToVehicle(); bool addHomePosition = _vehicle->firmwarePlugin()->sendHomePositionToVehicle();
int setCurrentIndex = addHomePosition ? 1 : 0;
int prefixCommandCount = 0; int prefixCommandCount = 0;
for (int i=0; i<_missionItems.count(); i++) { for (int i=0; i<_missionItems.count(); i++) {
...@@ -1039,8 +1037,7 @@ void MissionManager::generateResumeMission(int resumeIndex) ...@@ -1039,8 +1037,7 @@ void MissionManager::generateResumeMission(int resumeIndex)
prefixCommandCount++; prefixCommandCount++;
} }
MissionItem* newItem = new MissionItem(*oldItem, this); MissionItem* newItem = new MissionItem(*oldItem, this);
newItem->setIsCurrentItem( i == setCurrentIndex); newItem->setIsCurrentItem(false);
newItem->setSequenceNumber(seqNum++);
resumeMission.append(newItem); resumeMission.append(newItem);
} }
} }
...@@ -1079,12 +1076,13 @@ void MissionManager::generateResumeMission(int resumeIndex) ...@@ -1079,12 +1076,13 @@ void MissionManager::generateResumeMission(int resumeIndex)
foundCameraStartStop = true; foundCameraStartStop = true;
break; break;
case MAV_CMD_IMAGE_START_CAPTURE: case MAV_CMD_IMAGE_START_CAPTURE:
// Only keep the first of these commands that are found if (resumeItem->param3() != 0) {
if (foundCameraStartStop) { // Remove commands which do not trigger by time
resumeMission.removeAt(prefixCommandCount); resumeMission.removeAt(prefixCommandCount);
break;
} }
if (resumeItem->param3() != 0) { if (foundCameraStartStop) {
// Remove commands which do no trigger by time // Only keep the first of these commands that are found
resumeMission.removeAt(prefixCommandCount); resumeMission.removeAt(prefixCommandCount);
} }
foundCameraStartStop = true; foundCameraStartStop = true;
...@@ -1096,6 +1094,14 @@ void MissionManager::generateResumeMission(int resumeIndex) ...@@ -1096,6 +1094,14 @@ void MissionManager::generateResumeMission(int resumeIndex)
prefixCommandCount--; 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 // Send to vehicle
_clearAndDeleteWriteMissionItems(); _clearAndDeleteWriteMissionItems();
for (int i=0; i<resumeMission.count(); i++) { 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