Unverified Commit f8dd44d3 authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #8866 from DonLakeFlyer/MissionFlightStatus

Mission flight status
parents b2d56a9d dee30f13
...@@ -353,7 +353,7 @@ CorridorScanComplexItem::ReadyForSaveState CorridorScanComplexItem::readyForSave ...@@ -353,7 +353,7 @@ CorridorScanComplexItem::ReadyForSaveState CorridorScanComplexItem::readyForSave
double CorridorScanComplexItem::timeBetweenShots(void) double CorridorScanComplexItem::timeBetweenShots(void)
{ {
return _cruiseSpeed == 0 ? 0 : _cameraCalc.adjustedFootprintFrontal()->rawValue().toDouble() / _cruiseSpeed; return _vehicleSpeed == 0 ? 0 : _cameraCalc.adjustedFootprintFrontal()->rawValue().toDouble() / _vehicleSpeed;
} }
double CorridorScanComplexItem::_calcTransectSpacing(void) const double CorridorScanComplexItem::_calcTransectSpacing(void) const
......
...@@ -32,11 +32,6 @@ void CorridorScanComplexItemTest::init(void) ...@@ -32,11 +32,6 @@ void CorridorScanComplexItemTest::init(void)
int expectedTransectCount = _expectedTransectCount; int expectedTransectCount = _expectedTransectCount;
QCOMPARE(_corridorItem->_transectCount(), expectedTransectCount); QCOMPARE(_corridorItem->_transectCount(), expectedTransectCount);
// vehicleSpeed need for terrain calcs
MissionController::MissionFlightStatus_t missionFlightStatus;
missionFlightStatus.vehicleSpeed = 5;
_corridorItem->setMissionFlightStatus(missionFlightStatus);
_corridorItem->setDirty(false); _corridorItem->setDirty(false);
_rgCorridorPolygonSignals[corridorPolygonPathChangedIndex] = SIGNAL(pathChanged()); _rgCorridorPolygonSignals[corridorPolygonPathChangedIndex] = SIGNAL(pathChanged());
......
...@@ -331,7 +331,6 @@ VisualMissionItem* MissionController::_insertSimpleMissionItemWorker(QGeoCoordin ...@@ -331,7 +331,6 @@ VisualMissionItem* MissionController::_insertSimpleMissionItemWorker(QGeoCoordin
} }
} }
} }
newItem->setMissionFlightStatus(_missionFlightStatus);
if (visualItemIndex == -1) { if (visualItemIndex == -1) {
_visualItems->append(newItem); _visualItems->append(newItem);
} else { } else {
...@@ -372,7 +371,6 @@ VisualMissionItem* MissionController::insertTakeoffItem(QGeoCoordinate /*coordin ...@@ -372,7 +371,6 @@ VisualMissionItem* MissionController::insertTakeoffItem(QGeoCoordinate /*coordin
newItem->setAltitudeMode(static_cast<QGroundControlQmlGlobal::AltitudeMode>(prevAltitudeMode)); newItem->setAltitudeMode(static_cast<QGroundControlQmlGlobal::AltitudeMode>(prevAltitudeMode));
} }
} }
newItem->setMissionFlightStatus(_missionFlightStatus);
if (visualItemIndex == -1) { if (visualItemIndex == -1) {
_visualItems->append(newItem); _visualItems->append(newItem);
} else { } else {
......
...@@ -44,7 +44,7 @@ public: ...@@ -44,7 +44,7 @@ public:
MissionController(PlanMasterController* masterController, QObject* parent = nullptr); MissionController(PlanMasterController* masterController, QObject* parent = nullptr);
~MissionController(); ~MissionController();
typedef struct _MissionFlightStatus_t { typedef struct {
double maxTelemetryDistance; double maxTelemetryDistance;
double totalDistance; double totalDistance;
double totalTime; double totalTime;
......
...@@ -935,7 +935,7 @@ void SimpleMissionItem::applyNewAltitude(double newAltitude) ...@@ -935,7 +935,7 @@ void SimpleMissionItem::applyNewAltitude(double newAltitude)
void SimpleMissionItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus) void SimpleMissionItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus)
{ {
// If user has not already set speed/gimbal, set defaults from previous items. // If speed and/or gimbal are not specifically set on this item. Then use the flight status values as initial defaults should a user turn them on.
VisualMissionItem::setMissionFlightStatus(missionFlightStatus); VisualMissionItem::setMissionFlightStatus(missionFlightStatus);
if (_speedSection->available() && !_speedSection->specifyFlightSpeed() && !qFuzzyCompare(_speedSection->flightSpeed()->rawValue().toDouble(), missionFlightStatus.vehicleSpeed)) { if (_speedSection->available() && !_speedSection->specifyFlightSpeed() && !qFuzzyCompare(_speedSection->flightSpeed()->rawValue().toDouble(), missionFlightStatus.vehicleSpeed)) {
_speedSection->flightSpeed()->setRawValue(missionFlightStatus.vehicleSpeed); _speedSection->flightSpeed()->setRawValue(missionFlightStatus.vehicleSpeed);
......
...@@ -474,8 +474,8 @@ int StructureScanComplexItem::cameraShots(void) const ...@@ -474,8 +474,8 @@ int StructureScanComplexItem::cameraShots(void) const
void StructureScanComplexItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus) void StructureScanComplexItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus)
{ {
ComplexMissionItem::setMissionFlightStatus(missionFlightStatus); ComplexMissionItem::setMissionFlightStatus(missionFlightStatus);
if (!qFuzzyCompare(_cruiseSpeed, missionFlightStatus.vehicleSpeed)) { if (!qFuzzyCompare(_vehicleSpeed, missionFlightStatus.vehicleSpeed)) {
_cruiseSpeed = missionFlightStatus.vehicleSpeed; _vehicleSpeed = missionFlightStatus.vehicleSpeed;
emit timeBetweenShotsChanged(); emit timeBetweenShotsChanged();
} }
} }
...@@ -499,7 +499,7 @@ void StructureScanComplexItem::_polygonDirtyChanged(bool dirty) ...@@ -499,7 +499,7 @@ void StructureScanComplexItem::_polygonDirtyChanged(bool dirty)
double StructureScanComplexItem::timeBetweenShots(void) double StructureScanComplexItem::timeBetweenShots(void)
{ {
return _cruiseSpeed == 0 ? 0 : _cameraCalc.adjustedFootprintSide()->rawValue().toDouble() / _cruiseSpeed; return _vehicleSpeed == 0 ? 0 : _cameraCalc.adjustedFootprintSide()->rawValue().toDouble() / _vehicleSpeed;
} }
QGeoCoordinate StructureScanComplexItem::coordinate(void) const QGeoCoordinate StructureScanComplexItem::coordinate(void) const
......
...@@ -151,7 +151,7 @@ private: ...@@ -151,7 +151,7 @@ private:
double _scanDistance; double _scanDistance;
int _cameraShots; int _cameraShots;
double _timeBetweenShots; double _timeBetweenShots;
double _cruiseSpeed; double _vehicleSpeed;
CameraCalc _cameraCalc; CameraCalc _cameraCalc;
......
...@@ -1416,7 +1416,7 @@ void SurveyComplexItem::rotateEntryPoint(void) ...@@ -1416,7 +1416,7 @@ void SurveyComplexItem::rotateEntryPoint(void)
double SurveyComplexItem::timeBetweenShots(void) double SurveyComplexItem::timeBetweenShots(void)
{ {
return _cruiseSpeed == 0 ? 0 : triggerDistance() / _cruiseSpeed; return _vehicleSpeed == 0 ? 0 : triggerDistance() / _vehicleSpeed;
} }
double SurveyComplexItem::additionalTimeDelay (void) const double SurveyComplexItem::additionalTimeDelay (void) const
......
...@@ -327,8 +327,10 @@ double TransectStyleComplexItem::greatestDistanceTo(const QGeoCoordinate &other) ...@@ -327,8 +327,10 @@ double TransectStyleComplexItem::greatestDistanceTo(const QGeoCoordinate &other)
void TransectStyleComplexItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus) void TransectStyleComplexItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus)
{ {
ComplexMissionItem::setMissionFlightStatus(missionFlightStatus); ComplexMissionItem::setMissionFlightStatus(missionFlightStatus);
if (!qFuzzyCompare(_cruiseSpeed, missionFlightStatus.vehicleSpeed)) { if (!qFuzzyCompare(_vehicleSpeed, missionFlightStatus.vehicleSpeed)) {
_cruiseSpeed = missionFlightStatus.vehicleSpeed; _vehicleSpeed = missionFlightStatus.vehicleSpeed;
// Vehicle speed change affects max climb/descent rates calcs for terrain so we need to re-adjust
_rebuildTransects();
emit timeBetweenShotsChanged(); emit timeBetweenShotsChanged();
} }
} }
...@@ -707,9 +709,9 @@ int TransectStyleComplexItem::_maxPathHeight(const TerrainPathQuery::PathHeightI ...@@ -707,9 +709,9 @@ int TransectStyleComplexItem::_maxPathHeight(const TerrainPathQuery::PathHeightI
void TransectStyleComplexItem::_adjustForMaxRates(QList<CoordInfo_t>& transect) void TransectStyleComplexItem::_adjustForMaxRates(QList<CoordInfo_t>& transect)
{ {
double maxClimbRate = _terrainAdjustMaxClimbRateFact.rawValue().toDouble(); double maxClimbRate = _terrainAdjustMaxClimbRateFact.rawValue().toDouble();
double maxDescentRate = _terrainAdjustMaxDescentRateFact.rawValue().toDouble(); double maxDescentRate = _terrainAdjustMaxDescentRateFact.rawValue().toDouble();
double flightSpeed = _missionFlightStatus.vehicleSpeed; double flightSpeed = _vehicleSpeed;
if (qIsNaN(flightSpeed) || (maxClimbRate == 0 && maxDescentRate == 0)) { if (qIsNaN(flightSpeed) || (maxClimbRate == 0 && maxDescentRate == 0)) {
if (qIsNaN(flightSpeed)) { if (qIsNaN(flightSpeed)) {
......
...@@ -185,7 +185,7 @@ protected: ...@@ -185,7 +185,7 @@ protected:
double _complexDistance = qQNaN(); double _complexDistance = qQNaN();
int _cameraShots = 0; int _cameraShots = 0;
double _timeBetweenShots = 0; double _timeBetweenShots = 0;
double _cruiseSpeed = 0; double _vehicleSpeed = 5;
CameraCalc _cameraCalc; CameraCalc _cameraCalc;
bool _followTerrain = false; bool _followTerrain = false;
double _minAMSLAltitude = qQNaN(); double _minAMSLAltitude = qQNaN();
......
...@@ -152,12 +152,11 @@ void VisualMissionItem::setAzimuth(double azimuth) ...@@ -152,12 +152,11 @@ void VisualMissionItem::setAzimuth(double azimuth)
void VisualMissionItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus) void VisualMissionItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus)
{ {
_missionFlightStatus = missionFlightStatus; if (qIsNaN(missionFlightStatus.gimbalYaw) && qIsNaN(_missionGimbalYaw)) {
if (qIsNaN(_missionFlightStatus.gimbalYaw) && qIsNaN(_missionGimbalYaw)) {
return; return;
} }
if (!qFuzzyCompare(_missionFlightStatus.gimbalYaw, _missionGimbalYaw)) { if (!qFuzzyCompare(missionFlightStatus.gimbalYaw, _missionGimbalYaw)) {
_missionGimbalYaw = _missionFlightStatus.gimbalYaw; _missionGimbalYaw = missionFlightStatus.gimbalYaw;
emit missionGimbalYawChanged(_missionGimbalYaw); emit missionGimbalYawChanged(_missionGimbalYaw);
} }
} }
......
...@@ -271,8 +271,6 @@ protected: ...@@ -271,8 +271,6 @@ protected:
VisualMissionItem* _parentItem = nullptr; VisualMissionItem* _parentItem = nullptr;
QGCGeoBoundingCube _boundingCube; ///< The bounding "cube" of this element. QGCGeoBoundingCube _boundingCube; ///< The bounding "cube" of this element.
MissionController::MissionFlightStatus_t _missionFlightStatus;
/// This is used to reference any subsequent mission items which do not specify a coordinate. /// This is used to reference any subsequent mission items which do not specify a coordinate.
QmlObjectListModel _childItems; QmlObjectListModel _childItems;
......
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