QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
FixedWingLandingComplexItem.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QLoggingCategory>
4
6#include "Fact.h"
7
8Q_DECLARE_LOGGING_CATEGORY(FixedWingLandingComplexItemLog)
9
10class FWLandingPatternTest;
12class MissionItem;
13
15{
16 Q_OBJECT
17 Q_MOC_INCLUDE("MissionItem.h")
18
19public:
21
23 Q_PROPERTY(Fact* glideSlope READ glideSlope CONSTANT)
24
25 Fact* glideSlope (void) { return &_glideSlopeFact; }
26 Fact* valueSetIsDistance (void) { return &_valueSetIsDistanceFact; }
27
30
31 // Overrides from ComplexMissionItem
32 QString patternName (void) const final;
33 bool load (const QJsonObject& complexObject, int sequenceNumber, QString& errorString) final;
34 QString mapVisualQML (void) const final { return QStringLiteral("FWLandingPatternMapVisual.qml"); }
35
36 // Overrides from VisualMissionItem
37 void save (QJsonArray& missionItems) final;
38
39 static const QString name;
40
41 static constexpr const char* settingsGroup = "FixedWingLanding";
42 static constexpr const char* jsonComplexItemTypeValue = "fwLandingPattern";
43
44 static constexpr const char* glideSlopeName = "GlideSlope";
45 static constexpr const char* valueSetIsDistanceName = "ValueSetIsDistance";
46
47private slots:
48 void _updateFlightPathSegmentsDontCallDirectly (void) override;
49 void _glideSlopeChanged (void);
50
51private:
53 static bool _isValidLandItem(const MissionItem& missionItem);
54
55 // Overrides from LandingComplexItem
56 const Fact* _finalApproachAltitude (void) const final { return &_finalApproachAltitudeFact; }
57 const Fact* _useDoChangeSpeed (void) const final { return &_useDoChangeSpeedFact; }
58 const Fact* _finalApproachSpeed (void) const final { return &_finalApproachSpeedFact; }
59 const Fact* _loiterRadius (void) const final { return &_loiterRadiusFact; }
60 const Fact* _loiterClockwise (void) const final { return &_loiterClockwiseFact; }
61 const Fact* _landingAltitude (void) const final { return &_landingAltitudeFact; }
62 const Fact* _landingDistance (void) const final { return &_landingDistanceFact; }
63 const Fact* _landingHeading (void) const final { return &_landingHeadingFact; }
64 const Fact* _useLoiterToAlt (void) const final { return &_useLoiterToAltFact; }
65 const Fact* _stopTakingPhotos (void) const final { return &_stopTakingPhotosFact; }
66 const Fact* _stopTakingVideo (void) const final { return &_stopTakingVideoFact; }
67 void _calcGlideSlope (void) final;
68 MissionItem* _createLandItem (int seqNum, bool altRel, double lat, double lon, double alt, QObject* parent) final;
69
70 QMap<QString, FactMetaData*> _metaDataMap;
71
72 Fact _landingDistanceFact;
73 Fact _finalApproachAltitudeFact;
74 Fact _useDoChangeSpeedFact;
75 Fact _finalApproachSpeedFact;
76 Fact _loiterRadiusFact;
77 Fact _loiterClockwiseFact;
78 Fact _landingHeadingFact;
79 Fact _landingAltitudeFact;
80 Fact _glideSlopeFact;
81 Fact _useLoiterToAltFact;
82 Fact _stopTakingPhotosFact;
83 Fact _stopTakingVideoFact;
84 Fact _valueSetIsDistanceFact;
85
86 static constexpr const char* _jsonValueSetIsDistanceKey = "valueSetIsDistance";
87
88 friend FWLandingPatternTest;
89};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
QString errorString
A Fact is used to hold a single value within the system.
Definition Fact.h:19
static constexpr const char * glideSlopeName
static constexpr const char * jsonComplexItemTypeValue
Fact *valueSetIsDistance READ valueSetIsDistance CONSTANT(Fact *glideSlope READ glideSlope CONSTANT) Fact *glideSlope(void)
static bool scanForItems(QmlObjectListModel *visualItems, bool flyView, PlanMasterController *masterController)
Scans the loaded items for a landing pattern complex item.
static constexpr const char * settingsGroup
void save(QJsonArray &missionItems) final
static constexpr const char * valueSetIsDistanceName
QString mapVisualQML(void) const final
bool load(const QJsonObject &complexObject, int sequenceNumber, QString &errorString) final
int sequenceNumber(void) const final
Master controller for mission, fence, rally.
bool flyView(void) const
PlanMasterController * masterController(void)