Browse Source

Fly view needs to slurp in sections using scan

Otherwise things like gimbal angles end up on the wrong items.
QGC4.4
DonLakeFlyer 7 years ago
parent
commit
15669c39f4
  1. 36
      src/MissionManager/MissionController.cc
  2. 2
      src/MissionManager/MissionController.h

36
src/MissionManager/MissionController.cc

@ -189,9 +189,7 @@ void MissionController::_newMissionItemsAvailableFromVehicle(bool removeAllReque
_addMissionSettings(_visualItems, _editMode && _visualItems->count() > 0 /* addToCenter */); _addMissionSettings(_visualItems, _editMode && _visualItems->count() > 0 /* addToCenter */);
} }
if (_editMode) { MissionController::_scanForAdditionalSettings(_visualItems, _controllerVehicle);
MissionController::_scanForAdditionalSettings(_visualItems, _controllerVehicle);
}
_initAllVisualItems(); _initAllVisualItems();
_updateContainsItems(); _updateContainsItems();
@ -290,14 +288,14 @@ void MissionController::convertToKMLDocument(QDomDocument& document)
continue; continue;
} }
const MissionCommandUIInfo* uiInfo = \ const MissionCommandUIInfo* uiInfo = \
qgcApp()->toolbox()->missionCommandTree()->getUIInfo(_controllerVehicle, item->command()); qgcApp()->toolbox()->missionCommandTree()->getUIInfo(_controllerVehicle, item->command());
if (uiInfo && uiInfo->specifiesCoordinate() && !uiInfo->isStandaloneCoordinate()) { if (uiInfo && uiInfo->specifiesCoordinate() && !uiInfo->isStandaloneCoordinate()) {
coord = QString::number(item->param6(),'f',7) \ coord = QString::number(item->param6(),'f',7) \
+ "," \ + "," \
+ QString::number(item->param5(),'f',7) \ + QString::number(item->param5(),'f',7) \
+ "," \ + "," \
+ QString::number(item->param7() + altitude,'f',2); + QString::number(item->param7() + altitude,'f',2);
coords.append(coord); coords.append(coord);
} }
} }
@ -1218,6 +1216,8 @@ void MissionController::_recalcMissionFlightStatus()
} }
} }
qDebug() << "Gimbal calc";
for (int i=0; i<_visualItems->count(); i++) { for (int i=0; i<_visualItems->count(); i++) {
VisualMissionItem* item = qobject_cast<VisualMissionItem*>(_visualItems->get(i)); VisualMissionItem* item = qobject_cast<VisualMissionItem*>(_visualItems->get(i));
SimpleMissionItem* simpleItem = qobject_cast<SimpleMissionItem*>(item); SimpleMissionItem* simpleItem = qobject_cast<SimpleMissionItem*>(item);
@ -1247,6 +1247,7 @@ void MissionController::_recalcMissionFlightStatus()
// Look for gimbal change // Look for gimbal change
double gimbalYaw = item->specifiedGimbalYaw(); double gimbalYaw = item->specifiedGimbalYaw();
if (!qIsNaN(gimbalYaw)) { if (!qIsNaN(gimbalYaw)) {
qDebug() << _editMode << gimbalYaw;
_missionFlightStatus.gimbalYaw = gimbalYaw; _missionFlightStatus.gimbalYaw = gimbalYaw;
} }
double gimbalPitch = item->specifiedGimbalPitch(); double gimbalPitch = item->specifiedGimbalPitch();
@ -1352,6 +1353,7 @@ void MissionController::_recalcMissionFlightStatus()
_addTimeDistance(vtolInHover, hoverTime, cruiseTime, extraTime, distance, item->sequenceNumber()); _addTimeDistance(vtolInHover, hoverTime, cruiseTime, extraTime, distance, item->sequenceNumber());
} }
qDebug() << "setMissionFlightStatus" << item->sequenceNumber() << _missionFlightStatus.gimbalYaw << item->commandName();
item->setMissionFlightStatus(_missionFlightStatus); item->setMissionFlightStatus(_missionFlightStatus);
} }
@ -1783,8 +1785,10 @@ void MissionController::setDirty(bool dirty)
void MissionController::_scanForAdditionalSettings(QmlObjectListModel* visualItems, Vehicle* vehicle) void MissionController::_scanForAdditionalSettings(QmlObjectListModel* visualItems, Vehicle* vehicle)
{ {
// First we look for a Fixed Wing Landing Pattern which is at the end if (_editMode) {
FixedWingLandingComplexItem::scanForItem(visualItems, vehicle); // First we look for a Fixed Wing Landing Pattern which is at the end
FixedWingLandingComplexItem::scanForItem(visualItems, vehicle);
}
int scanIndex = 0; int scanIndex = 0;
while (scanIndex < visualItems->count()) { while (scanIndex < visualItems->count()) {
@ -1792,11 +1796,13 @@ void MissionController::_scanForAdditionalSettings(QmlObjectListModel* visualIte
qCDebug(MissionControllerLog) << "MissionController::_scanForAdditionalSettings count:scanIndex" << visualItems->count() << scanIndex; qCDebug(MissionControllerLog) << "MissionController::_scanForAdditionalSettings count:scanIndex" << visualItems->count() << scanIndex;
MissionSettingsItem* settingsItem = qobject_cast<MissionSettingsItem*>(visualItem); if (_editMode) {
if (settingsItem) { MissionSettingsItem* settingsItem = qobject_cast<MissionSettingsItem*>(visualItem);
scanIndex++; if (settingsItem) {
settingsItem->scanForMissionSettings(visualItems, scanIndex); scanIndex++;
continue; settingsItem->scanForMissionSettings(visualItems, scanIndex);
continue;
}
} }
SimpleMissionItem* simpleItem = qobject_cast<SimpleMissionItem*>(visualItem); SimpleMissionItem* simpleItem = qobject_cast<SimpleMissionItem*>(visualItem);

2
src/MissionManager/MissionController.h

@ -227,7 +227,7 @@ private:
bool _loadJsonMissionFileV2(const QJsonObject& json, QmlObjectListModel* visualItems, QString& errorString); bool _loadJsonMissionFileV2(const QJsonObject& json, QmlObjectListModel* visualItems, QString& errorString);
bool _loadTextMissionFile(QTextStream& stream, QmlObjectListModel* visualItems, QString& errorString); bool _loadTextMissionFile(QTextStream& stream, QmlObjectListModel* visualItems, QString& errorString);
int _nextSequenceNumber(void); int _nextSequenceNumber(void);
static void _scanForAdditionalSettings(QmlObjectListModel* visualItems, Vehicle* vehicle); void _scanForAdditionalSettings(QmlObjectListModel* visualItems, Vehicle* vehicle);
static bool _convertToMissionItems(QmlObjectListModel* visualMissionItems, QList<MissionItem*>& rgMissionItems, QObject* missionItemParent); static bool _convertToMissionItems(QmlObjectListModel* visualMissionItems, QList<MissionItem*>& rgMissionItems, QObject* missionItemParent);
void _setPlannedHomePositionFromFirstCoordinate(void); void _setPlannedHomePositionFromFirstCoordinate(void);
void _resetMissionFlightStatus(void); void _resetMissionFlightStatus(void);

Loading…
Cancel
Save