10#include <QtCore/QLoggingCategory>
76 void save (QJsonArray& planItems)
override = 0;
78 void appendMissionItems (QList<MissionItem*>& items, QObject* missionItemParent)
final;
94 QString
commandName (
void)
const override {
return tr(
"Transect"); }
126 void _polyPathTerrainData (
bool success,
const QList<TerrainPathQuery::PathHeightInfo_t>& rgPathHeightInfo);
134 void _save (QJsonObject& saveObject);
135 bool _load (
const QJsonObject& complexObject,
bool forPresets, QString&
errorString);
141 void _appendWaypoint (QList<MissionItem*>& items, QObject* missionItemParent,
int& seqNum, MAV_FRAME mavFrame,
float holdTime,
const QGeoCoordinate&
coordinate);
143 void _appendConditionGate (QList<MissionItem*>& items, QObject* missionItemParent,
int& seqNum, MAV_FRAME mavFrame,
const QGeoCoordinate&
coordinate);
211 void _reallyQueryTransectsPathHeightInfo (
void);
212 void _handleHoverAndCaptureEnabled (QVariant enabled);
213 void _updateFlightPathSegmentsDontCallDirectly (
void);
215 void _distanceModeChanged (
int distanceMode);
219 bool imagesInTurnaround;
221 bool addTriggerAtFirstAndLastPoint;
222 bool useConditionGate;
223 } BuildMissionItemsState_t;
225 void _queryTransectsPathHeightInfo (
void);
226 void _queryMissionItemCoordHeights (
void);
227 void _adjustForAvailableTerrainData (
void);
228 void _buildFlightPathCoordInfoFromTransects (
void);
229 void _buildFlightPathCoordInfoFromPathHeightInfoForCalcAboveTerrain (
void);
230 void _buildFlightPathCoordInfoFromPathHeightInfoForTerrainFrame (
void);
231 void _buildFlightPathCoordInfoFromMissionItems (
void);
232 void _adjustForMaxRates (
void);
233 void _adjustForTolerance (
void);
234 double _altitudeBetweenCoords (
const QGeoCoordinate& fromCoord,
const QGeoCoordinate& toCoord,
double percentTowardsTo);
236 BuildMissionItemsState_t _buildMissionItemsState (
void)
const;
240 QTimer _terrainPolyPathQueryTimer;
243 static constexpr const char* _jsonTerrainFollowKeyDeprecated =
"FollowTerrain";
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
Fact * adjustedFootprintFrontal(void)
virtual bool terrainCollision(void) const
A Fact is used to hold a single value within the system.
Used to convert a Plan to a KML document.
Master controller for mission, fence, rally.
A SettingsFact is Fact which holds a QSettings value.
NOTE: TerrainAtCoordinateQuery is not thread safe. All instances/calls to ElevationProvider must be o...
static constexpr double _minimumTransectSpacingMeters
virtual void _rebuildTransectsPhase1(void)=0
Rebuilds the _transects array.
QObject * _loadedMissionItemsParent
Parent for all items in _loadedMissionItems for simpler delete.
static constexpr const char * _jsonTransectStyleComplexItemKey
QList< QList< CoordInfo_t > > _transects
QList< QGeoCoordinate > _rgFlyThroughMissionItemCoords
double minAMSLAltitude(void) const final
double editableAlt(void) const final
double specifiedGimbalPitch(void) final
QGeoCoordinate _exitCoordinate
void _appendLoadedMissionItems(QList< MissionItem * > &items, QObject *missionItemParent)
int _transectCount(void) const
static constexpr const char * cameraTriggerInTurnAroundName
QString commandName(void) const override
Fact * terrainAdjustMaxClimbRate(void)
void save(QJsonArray &planItems) override=0
void _updateCoordinateAltitudes(void)
static constexpr const char * terrainAdjustMaxDescentRateName
SettingsFact _refly90DegreesFact
double amslExitAlt(void) const final
int lastSequenceNumber(void) const final
bool hoverAndCaptureEnabled(void) const
Fact * cameraTriggerInTurnAround(void)
double maxAMSLAltitude(void) const final
void _appendSinglePhotoCapture(QList< MissionItem * > &items, QObject *missionItemParent, int &seqNum)
QList< MissionItem * > _loadedMissionItems
Mission items loaded from plan file.
void _recalcComplexDistance(void)
void setMissionFlightStatus(MissionController::MissionFlightStatus_t &missionFlightStatus) final
bool isSimpleItem(void) const final
static constexpr const char * _jsonVisualTransectPointsKey
SettingsFact _terrainAdjustToleranceFact
void _setIfDirty(bool dirty)
void _setExitCoordinate(const QGeoCoordinate &coordinate)
virtual double timeBetweenShots(void)
void _buildAndAppendMissionItems(QList< MissionItem * > &items, QObject *missionItemParent)
static constexpr const char * _jsonItemsKey
static constexpr const char * _jsonTerrainFlightSpeed
double specifiedGimbalYaw(void) final
double _triggerDistance(void) const
void _updateFlightPathSegmentsSignal(void)
void setSequenceNumber(int sequenceNumber) final
Fact * refly90Degrees(void)
static constexpr const char * terrainAdjustMaxClimbRateName
static constexpr const char * terrainAdjustToleranceName
void _setCameraShots(int cameraShots)
void _appendConditionGate(QList< MissionItem * > &items, QObject *missionItemParent, int &seqNum, MAV_FRAME mavFrame, const QGeoCoordinate &coordinate)
QGeoCoordinate coordinate(void) const final
double complexDistance(void) const final
bool _hasTurnaround(void) const
double greatestDistanceTo(const QGeoCoordinate &other) const final
void applyNewAltitude(double newAltitude) final
Adjust the altitude of the item if appropriate to the new altitude.
void setCoordinate(const QGeoCoordinate &coordinate) override
int sequenceNumber(void) const final
Fact * terrainAdjustTolerance(void)
SettingsFact _terrainAdjustMaxDescentRateFact
bool specifiesCoordinate(void) const override=0
static constexpr int _terrainQueryTimeoutMsecs
void addKMLVisuals(KMLPlanDomDocument &domDocument) final
double specifiedFlightSpeed(void) final
bool triggerCamera(void) const
void _missionItemCoordTerrainData(bool success, QList< double > heights)
void _polyPathTerrainData(bool success, const QList< TerrainPathQuery::PathHeightInfo_t > &rgPathHeightInfo)
ReadyForSaveState readyForSaveState(void) const override
void _appendCameraTriggerDistanceUpdatePoint(QList< MissionItem * > &items, QObject *missionItemParent, int &seqNum, MAV_FRAME mavFrame, const QGeoCoordinate &coordinate, bool useConditionGate, float triggerDistance)
QString abbreviation(void) const override
double _turnAroundDistance(void) const
static constexpr const char * hoverAndCaptureName
static constexpr const char * refly90DegreesName
QGCMapPolygon *surveyAreaPolygon READ surveyAreaPolygon CONSTANT(CameraCalc *cameraCalc READ cameraCalc CONSTANT) 1(Fact *turnAroundDistance READ turnAroundDistance CONSTANT) 1(Fact *cameraTriggerInTurnAround READ cameraTriggerInTurnAround CONSTANT) 1(Fact *hoverAndCapture READ hoverAndCapture CONSTANT) 1(Fact *refly90Degrees READ refly90Degrees CONSTANT) 1(int cameraShots READ cameraShots NOTIFY cameraShotsChanged) 1(double timeBetweenShots READ timeBetweenShots NOTIFY timeBetweenShotsChanged) 1(double coveredArea READ coveredArea NOTIFY coveredAreaChanged) 1(bool hoverAndCaptureAllowed READ hoverAndCaptureAllowed CONSTANT) 1(QVariantList visualTransectPoints READ visualTransectPoints NOTIFY visualTransectPointsChanged) 1(Fact *terrainAdjustTolerance READ terrainAdjustTolerance CONSTANT) 1(Fact *terrainAdjustMaxDescentRate READ terrainAdjustMaxDescentRate CONSTANT) 1(Fact *terrainAdjustMaxClimbRate READ terrainAdjustMaxClimbRate CONSTANT) QGCMapPolygon *surveyAreaPolygon(void)
QMap< QString, FactMetaData * > _metaDataMap
QString commandDescription(void) const override
const Fact * hoverAndCapture(void) const
bool _load(const QJsonObject &complexObject, bool forPresets, QString &errorString)
void _appendCameraTriggerDistance(QList< MissionItem * > &items, QObject *missionItemParent, int &seqNum, float triggerDistance)
void _appendWaypoint(QList< MissionItem * > &items, QObject *missionItemParent, int &seqNum, MAV_FRAME mavFrame, float holdTime, const QGeoCoordinate &coordinate)
static constexpr const char * _jsonCameraCalcKey
static constexpr const char * _jsonCameraShotsKey
QList< TerrainPathQuery::PathHeightInfo_t > _rgPathHeightInfo
Path height for each segment includes turn segments.
double coveredArea(void) const
bool exitCoordinateSameAsEntry(void) const final
static constexpr double _forceLargeTransectSpacingMeters
static constexpr int _hoverAndCaptureDelaySeconds
QGCMapPolygon _surveyAreaPolygon
QVariantList _visualTransectPoints
Used to draw the flight path visuals on the screen.
Fact * turnAroundDistance(void)
int cameraShots(void) const
SettingsFact _hoverAndCaptureFact
QVariantList visualTransectPoints(void)
SettingsFact _cameraTriggerInTurnAroundFact
Fact * terrainAdjustMaxDescentRate(void)
QList< double > _rgFlyThroughMissionItemCoordsTerrainHeights
QGeoCoordinate entryCoordinate(void) const final
double triggerDistance(void) const
static constexpr const char * turnAroundDistanceMultiRotorName
bool isStandaloneCoordinate(void) const final
void cameraShotsChanged(void)
void _save(QJsonObject &saveObject)
QString mapVisualQML(void) const override=0
bool specifiesAltitudeOnly(void) const final
double amslEntryAlt(void) const final
void coveredAreaChanged(void)
void _rebuildTransects(void)
bool dirty(void) const final
void visualTransectPointsChanged(void)
QList< CoordInfo_t > _rgFlightPathCoordInfo
Fully calculated flight path (including terrain if needed)
virtual void _recalcCameraShots(void)=0
bool load(const QJsonObject &complexObject, int sequenceNumber, QString &errorString) override=0
CameraCalc * cameraCalc(void)
Fact * hoverAndCapture(void)
bool hoverAndCaptureAllowed(void) const
void timeBetweenShotsChanged(void)
SettingsFact _turnAroundDistanceFact
QGeoCoordinate exitCoordinate(void) const final
SettingsFact _terrainAdjustMaxClimbRateFact
void setDirty(bool dirty) final
QGeoCoordinate _entryCoordinate
static constexpr const char * turnAroundDistanceName
@ CoordTypeTurnaround
Turnaround extension waypoint.
@ CoordTypeSurveyExit
Waypoint at exit edge of survey polygon.
@ CoordTypeInterior
Interior waypoint for flight path only (example: interior corridor point)
@ CoordTypeInteriorTerrainAdded
Interior waypoint added for terrain.
@ CoordTypeInteriorHoverTrigger
Interior waypoint for hover and capture trigger.
@ CoordTypeSurveyEntry
Waypoint at entry edge of survey polygon.
void appendMissionItems(QList< MissionItem * > &items, QObject *missionItemParent) final
PlanMasterController * masterController(void)