QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
ComplexMissionItem Class Referenceabstract

#include <ComplexMissionItem.h>

+ Inheritance diagram for ComplexMissionItem:
+ Collaboration diagram for ComplexMissionItem:

Signals

void patternNameChanged (void)
 
void complexDistanceChanged (void)
 
void boundingCubeChanged (void)
 
void greatestDistanceToChanged (void)
 
void presetNamesChanged (void)
 
void isIncompleteChanged (void)
 
void minAMSLAltitudeChanged (void)
 
void maxAMSLAltitudeChanged (void)
 
void terrainCollisionChanged (bool terrainCollision)
 
- Signals inherited from VisualMissionItem
void altDifferenceChanged (double altDifference)
 
void altPercentChanged (double altPercent)
 
void terrainPercentChanged (double terrainPercent)
 
void terrainCollisionChanged (bool terrainCollision)
 
void azimuthChanged (double azimuth)
 
void commandDescriptionChanged (void)
 
void commandNameChanged (void)
 
void abbreviationChanged (void)
 
void coordinateChanged (const QGeoCoordinate &coordinate)
 
void entryCoordinateChanged (const QGeoCoordinate &entryCoordinate)
 
void exitCoordinateChanged (const QGeoCoordinate &exitCoordinate)
 
void dirtyChanged (bool dirty)
 
void distanceChanged (double distance)
 
void distanceFromStartChanged (double distanceFromStart)
 
void isCurrentItemChanged (bool isCurrentItem)
 
void hasCurrentChildItemChanged (bool hasCurrentChildItem)
 
void sequenceNumberChanged (int sequenceNumber)
 
void isSimpleItemChanged (bool isSimpleItem)
 
void isTakeoffItemChanged (bool isTakeoffItem)
 
void isLandCommandChanged (void)
 
void specifiesCoordinateChanged (void)
 
void isStandaloneCoordinateChanged (void)
 
void specifiesAltitudeOnlyChanged (void)
 
void specifiedFlightSpeedChanged (void)
 
void specifiedGimbalYawChanged (void)
 
void specifiedGimbalPitchChanged (void)
 
void specifiedVehicleYawChanged (void)
 
void lastSequenceNumberChanged (int sequenceNumber)
 
void missionGimbalYawChanged (double missionGimbalYaw)
 
void missionVehicleYawChanged (double missionVehicleYaw)
 
void terrainAltitudeChanged (double terrainAltitude)
 
void terrainQueryFailedChanged (bool terrainQueryFailed)
 
void additionalTimeDelayChanged (void)
 
void boundingCubeChanged (void)
 
void readyForSaveStateChanged (void)
 
void wizardModeChanged (bool wizardMode)
 
void parentItemChanged (VisualMissionItem *parentItem)
 
void amslEntryAltChanged (double alt)
 
void amslExitAltChanged (double alt)
 
void previousVTOLModeChanged (void)
 
void currentVTOLModeChanged (void)
 Signals that this item has changed the VTOL mode (MAV_CMD_DO_VTOL_TRANSITION)
 
void exitCoordinateSameAsEntryChanged (bool exitCoordinateSameAsEntry)
 

Public Member Functions

 ComplexMissionItem (PlanMasterController *masterController, bool flyView)
 
const ComplexMissionItemoperator= (const ComplexMissionItem &other)
 
QmlObjectListModelflightPathSegments (void)
 
virtual QString patternName (void) const =0
 
virtual bool terrainCollision (void) const
 
virtual double minAMSLAltitude (void) const =0
 
virtual double maxAMSLAltitude (void) const =0
 
virtual double complexDistance (void) const =0
 
virtual bool load (const QJsonObject &complexObject, int sequenceNumber, QString &errorString)=0
 
virtual bool isSingleItem (void) const
 
virtual Q_INVOKABLE void loadPreset (const QString &name)
 
virtual Q_INVOKABLE void savePreset (const QString &name)
 
Q_INVOKABLE void deletePreset (const QString &name)
 
virtual double greatestDistanceTo (const QGeoCoordinate &other) const =0
 
virtual QStringList presetNames (void)
 
virtual QString presetsSettingsGroup (void)
 
virtual void addKMLVisuals (KMLPlanDomDocument &domDocument)
 
virtual void applyPreviousAltitudeFrame (QGroundControlQmlGlobal::AltitudeFrame prevAltFrame, double prevAltitude)
 
bool presetsSupported (void)
 
bool isIncomplete (void) const
 
- Public Member Functions inherited from VisualMissionItem
 VisualMissionItem (PlanMasterController *masterController, bool flyView)
 
 VisualMissionItem (const VisualMissionItem &other, bool flyView)
 
 ~VisualMissionItem ()
 
const VisualMissionItemoperator= (const VisualMissionItem &other)
 
bool homePosition (void) const
 < Flight path cumalative horizontal distance from home point to this item
 
double altDifference (void) const
 
double altPercent (void) const
 
double terrainPercent (void) const
 
bool terrainCollision (void) const
 
double azimuth (void) const
 
double distance (void) const
 
double distanceFromStart (void) const
 
bool isCurrentItem (void) const
 
bool hasCurrentChildItem (void) const
 
double terrainAltitude (void) const
 
bool terrainQueryFailed (void) const
 
bool flyView (void) const
 
bool wizardMode (void) const
 
VisualMissionItemparentItem (void)
 
QmlObjectListModelchildItems (void)
 
void setIsCurrentItem (bool isCurrentItem)
 
void setHasCurrentChildItem (bool hasCurrentChildItem)
 
void setAltDifference (double altDifference)
 
void setAltPercent (double altPercent)
 
void setTerrainPercent (double terrainPercent)
 
void setTerrainCollision (bool terrainCollision)
 
void setAzimuth (double azimuth)
 
void setDistance (double distance)
 
void setDistanceFromStart (double distanceFromStart)
 
void setWizardMode (bool wizardMode)
 
void setParentItem (VisualMissionItem *parentItem)
 
void setHomePositionSpecialCase (bool homePositionSpecialCase)
 
FlightPathSegmentsimpleFlightPathSegment (void)
 
void setSimpleFlighPathSegment (FlightPathSegment *segment)
 
void clearSimpleFlighPathSegment (void)
 
PlanMasterControllermasterController (void)
 
virtual bool dirty (void) const =0
 
virtual bool isSimpleItem (void) const =0
 
virtual bool isTakeoffItem (void) const
 
virtual bool isLandCommand (void) const
 
virtual bool isSurveyItem (void) const
 
virtual bool isStandaloneCoordinate (void) const =0
 
virtual bool specifiesCoordinate (void) const =0
 
virtual bool specifiesAltitudeOnly (void) const =0
 
virtual QString commandDescription (void) const =0
 
virtual QString commandName (void) const =0
 
virtual QString abbreviation (void) const =0
 
virtual QGeoCoordinate coordinate (void) const =0
 
virtual QGeoCoordinate entryCoordinate (void) const =0
 
virtual QGeoCoordinate exitCoordinate (void) const =0
 
virtual double editableAlt (void) const =0
 
virtual double amslEntryAlt (void) const =0
 
virtual double amslExitAlt (void) const =0
 
virtual int sequenceNumber (void) const =0
 
virtual double specifiedFlightSpeed (void)=0
 
virtual double specifiedGimbalYaw (void)=0
 
virtual double specifiedGimbalPitch (void)=0
 
virtual double specifiedVehicleYaw (void)
 
virtual QGCGeoBoundingCubeboundingCube (void)
 
virtual void setMissionFlightStatus (MissionFlightStatus_t &missionFlightStatus)
 
virtual bool exitCoordinateSameAsEntry (void) const =0
 
virtual void setDirty (bool dirty)=0
 
virtual void setCoordinate (const QGeoCoordinate &coordinate)=0
 
virtual void setSequenceNumber (int sequenceNumber)=0
 
virtual int lastSequenceNumber (void) const =0
 
virtual ReadyForSaveState readyForSaveState (void) const
 
virtual void save (QJsonArray &missionItems)=0
 
virtual QString mapVisualQML (void) const =0
 
virtual void appendMissionItems (QList< MissionItem * > &items, QObject *missionItemParent)=0
 
virtual void applyNewAltitude (double newAltitude)=0
 Adjust the altitude of the item if appropriate to the new altitude.
 
virtual double additionalTimeDelay (void) const =0
 
double missionGimbalYaw (void) const
 
double missionVehicleYaw (void) const
 
void setMissionVehicleYaw (double vehicleYaw)
 

Static Public Attributes

static constexpr const char * jsonComplexItemTypeKey = "complexItemType"
 This mission item attribute specifies the type of the complex item.
 
- Static Public Attributes inherited from VisualMissionItem
static constexpr const char * jsonTypeKey = "type"
 Json file attribute which specifies the item type.
 
static constexpr const char * jsonTypeSimpleItemValue = "SimpleItem"
 Item type is MISSION_ITEM.
 
static constexpr const char * jsonTypeComplexItemValue = "ComplexItem"
 Item type is Complex Item.
 

Protected Slots

virtual void _segmentTerrainCollisionChanged (bool terrainCollision)
 
- Protected Slots inherited from VisualMissionItem
void _amslEntryAltChanged (void)
 
void _amslExitAltChanged (void)
 

Protected Member Functions

void _savePresetJson (const QString &name, QJsonObject &presetObject)
 
QJsonObject _loadPresetJson (const QString &name)
 
void _appendFlightPathSegment (FlightPathSegment::SegmentType segmentType, const QGeoCoordinate &coord1, double coord1AMSLAlt, const QGeoCoordinate &coord2, double coord2AMSLAlt)
 
- Protected Member Functions inherited from VisualMissionItem
void _setBoundingCube (QGCGeoBoundingCube bc)
 

Protected Attributes

bool _isIncomplete = true
 
int _cTerrainCollisionSegments = 0
 
QmlObjectListModel _flightPathSegments
 
QMap< QString, FactMetaData * > _metaDataMap
 
- Protected Attributes inherited from VisualMissionItem
bool _flyView = false
 
bool _isCurrentItem = false
 
bool _hasCurrentChildItem = false
 
bool _dirty = false
 
bool _homePositionSpecialCase = false
 true: This item is being used as a ui home position indicator
 
bool _wizardMode = false
 true: Item editor is showing wizard completion panel
 
double _terrainAltitude = qQNaN()
 Altitude of terrain at coordinate position, NaN for not known.
 
bool _terrainQueryFailed = false
 true: Last terrain query failed
 
double _altDifference = 0
 Difference in altitude from previous waypoint.
 
double _altPercent = 0
 Percent of total altitude change in mission.
 
double _terrainPercent = qQNaN()
 Percent of terrain altitude for coordinate.
 
bool _terrainCollision = false
 true: item collides with terrain
 
double _azimuth = 0
 Azimuth to previous waypoint.
 
double _distance = 0
 Distance to previous waypoint.
 
double _distanceFromStart = 0
 Flight path cumalative horizontal distance from home point to this item.
 
QString _editorQml
 Qml resource for editing item.
 
double _missionGimbalYaw = qQNaN()
 
double _missionVehicleYaw = qQNaN()
 
QGCMAVLinkTypes::VehicleClass_t _previousVTOLMode = QGCMAVLinkTypes::VehicleClassGeneric
 Generic == unknown.
 
PlanMasterController_masterController = nullptr
 
MissionController_missionController = nullptr
 
Vehicle_controllerVehicle = nullptr
 
FlightPathSegment_simpleFlightPathSegment = nullptr
 The simple item flight segment (if any) which starts with this visual item.
 
VisualMissionItem_parentItem = nullptr
 
QGCGeoBoundingCube _boundingCube
 The bounding "cube" of this element.
 
QmlObjectListModel _childItems
 This is used to reference any subsequent mission items which do not specify a coordinate.
 

Static Protected Attributes

static constexpr const char * _presetSettingsKey = "_presets"
 

Additional Inherited Members

- Public Types inherited from VisualMissionItem
enum  ReadyForSaveState { ReadyForSave , NotReadyForSaveTerrain , NotReadyForSaveData }
 

Detailed Description

Definition at line 15 of file ComplexMissionItem.h.

Constructor & Destructor Documentation

◆ ComplexMissionItem()

Member Function Documentation

◆ _appendFlightPathSegment()

void ComplexMissionItem::_appendFlightPathSegment ( FlightPathSegment::SegmentType  segmentType,
const QGeoCoordinate &  coord1,
double  coord1AMSLAlt,
const QGeoCoordinate &  coord2,
double  coord2AMSLAlt 
)
protected

◆ _loadPresetJson()

QJsonObject ComplexMissionItem::_loadPresetJson ( const QString &  name)
protected

◆ _savePresetJson()

void ComplexMissionItem::_savePresetJson ( const QString &  name,
QJsonObject &  presetObject 
)
protected

◆ _segmentTerrainCollisionChanged

void ComplexMissionItem::_segmentTerrainCollisionChanged ( bool  terrainCollision)
protectedvirtualslot

◆ addKMLVisuals()

void ComplexMissionItem::addKMLVisuals ( KMLPlanDomDocument domDocument)
virtual

Reimplemented in TransectStyleComplexItem.

Definition at line 104 of file ComplexMissionItem.cc.

◆ applyPreviousAltitudeFrame()

virtual void ComplexMissionItem::applyPreviousAltitudeFrame ( QGroundControlQmlGlobal::AltitudeFrame  prevAltFrame,
double  prevAltitude 
)
inlinevirtual

Called by MissionController after inserting a new item when a previous altitude is available and the global altitude frame is AltitudeFrameMixed. Override to apply altitude frame context to the item. The default implementation is a no-op.

Parameters
prevAltFrameAltitude frame of the previous mission item
prevAltitudeAltitude of the previous mission item

Reimplemented in SurveyComplexItem.

Definition at line 94 of file ComplexMissionItem.h.

Referenced by MissionController::insertComplexMissionItem().

◆ boundingCubeChanged

void ComplexMissionItem::boundingCubeChanged ( void  )
signal

◆ complexDistance()

virtual double ComplexMissionItem::complexDistance ( void  ) const
pure virtual
Returns
The distance covered the complex mission item in meters. Signals complexDistanceChanged

Implemented in LandingComplexItem, MissionSettingsItem, StructureScanComplexItem, and TransectStyleComplexItem.

Referenced by MissionFlightStatusCalculator::recalc(), and TerrainProfile::updateSeries().

◆ complexDistanceChanged

void ComplexMissionItem::complexDistanceChanged ( void  )
signal

◆ deletePreset()

void ComplexMissionItem::deletePreset ( const QString &  name)

◆ flightPathSegments()

QmlObjectListModel * ComplexMissionItem::flightPathSegments ( void  )
inline

Definition at line 35 of file ComplexMissionItem.h.

References _flightPathSegments.

◆ greatestDistanceTo()

virtual double ComplexMissionItem::greatestDistanceTo ( const QGeoCoordinate &  other) const
pure virtual

Get the point of complex mission item furthest away from a coordinate

Parameters
otherQGeoCoordinate to which distance is calculated
Returns
the greatest distance from any point of the complex item to some coordinate Signals greatestDistanceToChanged

Implemented in LandingComplexItem, MissionSettingsItem, StructureScanComplexItem, and TransectStyleComplexItem.

Referenced by MissionFlightStatusCalculator::recalc().

◆ greatestDistanceToChanged

void ComplexMissionItem::greatestDistanceToChanged ( void  )
signal

◆ isIncomplete()

bool ComplexMissionItem::isIncomplete ( void  ) const
inline

Definition at line 98 of file ComplexMissionItem.h.

References _isIncomplete.

◆ isIncompleteChanged

void ComplexMissionItem::isIncompleteChanged ( void  )
signal

◆ isSingleItem()

virtual bool ComplexMissionItem::isSingleItem ( void  ) const
inlinevirtual
Returns
true: Represents a single coordinate (ex: MissionSettingsItem), false: Represents multiple items (ex: Survey)

Reimplemented in MissionSettingsItem.

Definition at line 60 of file ComplexMissionItem.h.

◆ load()

virtual bool ComplexMissionItem::load ( const QJsonObject &  complexObject,
int  sequenceNumber,
QString &  errorString 
)
pure virtual

Load the complex mission item from Json

Parameters
complexObjectComplex mission item json object
sequenceNumberSequence number for first MISSION_ITEM in survey
[out]errorStringError if load fails
Returns
true: load success, false: load failed, errorString set

Implemented in CorridorScanComplexItem, FixedWingLandingComplexItem, MissionSettingsItem, StructureScanComplexItem, SurveyComplexItem, VTOLLandingComplexItem, and TransectStyleComplexItem.

◆ loadPreset()

void ComplexMissionItem::loadPreset ( const QString &  name)
virtual

Loads the specified preset into the complex item.

Parameters
namePreset name.

Reimplemented in CorridorScanComplexItem, and SurveyComplexItem.

Definition at line 41 of file ComplexMissionItem.cc.

References QGC::showAppMessage().

◆ maxAMSLAltitude()

virtual double ComplexMissionItem::maxAMSLAltitude ( void  ) const
pure virtual
Returns
Maximum altitude for the items within this complex items.

Implemented in LandingComplexItem, MissionSettingsItem, StructureScanComplexItem, and TransectStyleComplexItem.

Referenced by MissionFlightStatusCalculator::recalc().

◆ maxAMSLAltitudeChanged

◆ minAMSLAltitude()

virtual double ComplexMissionItem::minAMSLAltitude ( void  ) const
pure virtual
Returns
Minimum altitude for the items within this complex items.

Implemented in LandingComplexItem, MissionSettingsItem, StructureScanComplexItem, and TransectStyleComplexItem.

Referenced by MissionFlightStatusCalculator::recalc().

◆ minAMSLAltitudeChanged

◆ operator=()

const ComplexMissionItem & ComplexMissionItem::operator= ( const ComplexMissionItem other)

Minimum altitude of all coordinates in item Maximum altitude of all coordinates in item

Definition at line 23 of file ComplexMissionItem.cc.

References VisualMissionItem::operator=().

◆ patternName()

virtual QString ComplexMissionItem::patternName ( void  ) const
pure virtual

◆ patternNameChanged

void ComplexMissionItem::patternNameChanged ( void  )
signal

◆ presetNames()

QStringList ComplexMissionItem::presetNames ( void  )
virtual

Returns the list of currently saved presets for this complex item type.

Parameters
nameUser visible name for preset. Will replace existing preset if already exists.

Definition at line 30 of file ComplexMissionItem.cc.

References _presetSettingsKey, and presetsSettingsGroup().

◆ presetNamesChanged

void ComplexMissionItem::presetNamesChanged ( void  )
signal

Referenced by _savePresetJson(), and deletePreset().

◆ presetsSettingsGroup()

virtual QString ComplexMissionItem::presetsSettingsGroup ( void  )
inlinevirtual

Returns the name of the settings group for presets. Empty string signals no support for presets.

Reimplemented in CorridorScanComplexItem, and SurveyComplexItem.

Definition at line 85 of file ComplexMissionItem.h.

Referenced by _loadPresetJson(), _savePresetJson(), deletePreset(), presetNames(), and presetsSupported().

◆ presetsSupported()

bool ComplexMissionItem::presetsSupported ( void  )
inline

Definition at line 97 of file ComplexMissionItem.h.

References presetsSettingsGroup().

◆ savePreset()

void ComplexMissionItem::savePreset ( const QString &  name)
virtual

Saves the current state of the complex item as the named preset.

Parameters
nameUser visible name for preset. Will replace existing preset if already exists.

Reimplemented in CorridorScanComplexItem, and SurveyComplexItem.

Definition at line 47 of file ComplexMissionItem.cc.

References QGC::showAppMessage().

◆ terrainCollision()

virtual bool ComplexMissionItem::terrainCollision ( void  ) const
inlinevirtual
Returns
true: This complex item is colliding with terrain

Reimplemented in MissionSettingsItem.

Definition at line 40 of file ComplexMissionItem.h.

References _cTerrainCollisionSegments.

Referenced by _segmentTerrainCollisionChanged().

◆ terrainCollisionChanged

void ComplexMissionItem::terrainCollisionChanged ( bool  terrainCollision)
signal

Member Data Documentation

◆ _cTerrainCollisionSegments

int ComplexMissionItem::_cTerrainCollisionSegments = 0
protected

Definition at line 123 of file ComplexMissionItem.h.

Referenced by _segmentTerrainCollisionChanged(), and terrainCollision().

◆ _flightPathSegments

QmlObjectListModel ComplexMissionItem::_flightPathSegments
protected

Definition at line 124 of file ComplexMissionItem.h.

Referenced by _appendFlightPathSegment(), and flightPathSegments().

◆ _isIncomplete

bool ComplexMissionItem::_isIncomplete = true
protected

◆ _metaDataMap

QMap<QString, FactMetaData*> ComplexMissionItem::_metaDataMap
protected

Definition at line 126 of file ComplexMissionItem.h.

◆ _presetSettingsKey

constexpr const char* ComplexMissionItem::_presetSettingsKey = "_presets"
staticconstexprprotected

Definition at line 128 of file ComplexMissionItem.h.

Referenced by _loadPresetJson(), _savePresetJson(), deletePreset(), and presetNames().

◆ jsonComplexItemTypeKey

constexpr const char* ComplexMissionItem::jsonComplexItemTypeKey = "complexItemType"
staticconstexpr

The documentation for this class was generated from the following files: