Commit 28c0bf9e authored by Don Gagne's avatar Don Gagne

Copy coordinate frame from prev waypoint as well

parent ddb22c89
...@@ -175,11 +175,13 @@ int MissionController::insertSimpleMissionItem(QGeoCoordinate coordinate, int i) ...@@ -175,11 +175,13 @@ int MissionController::insertSimpleMissionItem(QGeoCoordinate coordinate, int i)
newItem->setDefaultsForCommand(); newItem->setDefaultsForCommand();
if ((MAV_CMD)newItem->command() == MAV_CMD_NAV_WAYPOINT) { if ((MAV_CMD)newItem->command() == MAV_CMD_NAV_WAYPOINT) {
double lastValue; double lastValue;
MAV_FRAME lastFrame;
if (_findLastAcceptanceRadius(&lastValue)) { if (_findLastAcceptanceRadius(&lastValue)) {
newItem->missionItem().setParam2(lastValue); newItem->missionItem().setParam2(lastValue);
} }
if (_findLastAltitude(&lastValue)) { if (_findLastAltitude(&lastValue, &lastFrame)) {
newItem->missionItem().setFrame(lastFrame);
newItem->missionItem().setParam7(lastValue); newItem->missionItem().setParam7(lastValue);
} }
} }
...@@ -1047,23 +1049,24 @@ void MissionController::_inProgressChanged(bool inProgress) ...@@ -1047,23 +1049,24 @@ void MissionController::_inProgressChanged(bool inProgress)
} }
} }
bool MissionController::_findLastAltitude(double* lastAltitude) bool MissionController::_findLastAltitude(double* lastAltitude, MAV_FRAME* frame)
{ {
bool found = false; bool found = false;
double foundAltitude; double foundAltitude;
MAV_FRAME foundFrame;
// Don't use home position // Don't use home position
for (int i=1; i<_visualItems->count(); i++) { for (int i=1; i<_visualItems->count(); i++) {
VisualMissionItem* visualItem = qobject_cast<VisualMissionItem*>(_visualItems->get(i)); VisualMissionItem* visualItem = qobject_cast<VisualMissionItem*>(_visualItems->get(i));
if (visualItem->specifiesCoordinate() && !visualItem->isStandaloneCoordinate()) { if (visualItem->specifiesCoordinate() && !visualItem->isStandaloneCoordinate()) {
foundAltitude = visualItem->exitCoordinate().altitude();
found = true;
if (visualItem->isSimpleItem()) { if (visualItem->isSimpleItem()) {
SimpleMissionItem* simpleItem = qobject_cast<SimpleMissionItem*>(visualItem); SimpleMissionItem* simpleItem = qobject_cast<SimpleMissionItem*>(visualItem);
if ((MAV_CMD)simpleItem->command() == MAV_CMD_NAV_TAKEOFF) { if ((MAV_CMD)simpleItem->command() != MAV_CMD_NAV_TAKEOFF) {
found = false; foundAltitude = simpleItem->exitCoordinate().altitude();
foundFrame = simpleItem->missionItem().frame();
found = true;
} }
} }
} }
...@@ -1071,6 +1074,7 @@ bool MissionController::_findLastAltitude(double* lastAltitude) ...@@ -1071,6 +1074,7 @@ bool MissionController::_findLastAltitude(double* lastAltitude)
if (found) { if (found) {
*lastAltitude = foundAltitude; *lastAltitude = foundAltitude;
*frame = foundFrame;
} }
return found; return found;
......
...@@ -103,7 +103,7 @@ private: ...@@ -103,7 +103,7 @@ private:
void _autoSyncSend(void); void _autoSyncSend(void);
void _setupActiveVehicle(Vehicle* activeVehicle, bool forceLoadFromVehicle); void _setupActiveVehicle(Vehicle* activeVehicle, bool forceLoadFromVehicle);
static void _calcPrevWaypointValues(double homeAlt, VisualMissionItem* currentItem, VisualMissionItem* prevItem, double* azimuth, double* distance, double* altDifference); static void _calcPrevWaypointValues(double homeAlt, VisualMissionItem* currentItem, VisualMissionItem* prevItem, double* azimuth, double* distance, double* altDifference);
bool _findLastAltitude(double* lastAltitude); bool _findLastAltitude(double* lastAltitude, MAV_FRAME* frame);
bool _findLastAcceptanceRadius(double* lastAcceptanceRadius); bool _findLastAcceptanceRadius(double* lastAcceptanceRadius);
void _addPlannedHomePosition(QmlObjectListModel* visualItems, bool addToCenter); void _addPlannedHomePosition(QmlObjectListModel* visualItems, bool addToCenter);
double _normalizeLat(double lat); double _normalizeLat(double lat);
......
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