swift
aircraftsituationlist.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_AVIATION_AIRCRAFTSITUATIONLIST_H
7 #define SWIFT_MISC_AVIATION_AIRCRAFTSITUATIONLIST_H
8 
9 #include <QHash>
10 #include <QList>
11 #include <QMetaType>
12 #include <QPair>
13 
16 #include "misc/collection.h"
18 #include "misc/geo/geoobjectlist.h"
19 #include "misc/sequence.h"
20 #include "misc/swiftmiscexport.h"
22 
23 SWIFT_DECLARE_SEQUENCE_MIXINS(swift::misc::aviation, CAircraftSituation, CAircraftSituationList)
24 
25 namespace swift::misc
26 {
27  namespace geo
28  {
29  class CElevationPlane;
30  }
31  namespace aviation
32  {
33  class CAircraftParts;
34 
37  public CSequence<CAircraftSituation>,
38  public geo::IGeoObjectList<CAircraftSituation, CAircraftSituationList>,
39  public ITimestampWithOffsetObjectList<CAircraftSituation, CAircraftSituationList>,
40  public ICallsignObjectList<CAircraftSituation, CAircraftSituationList>,
41  public mixin::MetaType<CAircraftSituationList>
42  {
43  public:
46 
49 
52 
54  CAircraftSituation frontOrNull() const;
55 
57  CAircraftSituation backOrNull() const;
58 
60  CAircraftSituation indexOrNull(int index) const;
61 
63  int setGroundElevationChecked(const geo::CElevationPlane &elevationPlane,
64  CAircraftSituation::GndElevationInfo info, qint64 newerThanAdjustedMs = -1);
65 
67  int adjustGroundFlag(const CAircraftParts &parts, double timeDeviationFactor = 0.1);
68 
70  bool containsOnGroundDetails(COnGroundInfo::OnGroundDetails details) const;
71 
74  bool containsPushBack() const;
75 
77  bool areAllOnGroundDetailsSame(COnGroundInfo::OnGroundDetails details) const;
78 
80  bool isConstOnGround() const;
81 
83  bool isConstNotOnGround() const;
84 
86  bool isConstDescending(bool alreadySortedLatestFirst = false) const;
87 
89  bool isConstAscending(bool alreadySortedLatestFirst = false) const;
90 
92  bool isConstAccelerating(bool alreadySortedLatestFirst = false) const;
93 
95  bool isConstDecelarating(bool alreadySortedLatestFirst = false) const;
96 
98  QPair<bool, COnGroundInfo::IsOnGround> isGndFlagStableChanging(bool alreadySortedLatestFirst = false) const;
99 
101  bool isJustTakingOff(bool alreadySortedLatestFirst = false) const;
102 
104  bool isJustTouchingDown(bool alreadySortedLatestFirst = false) const;
105 
107  bool isRotatingUp(bool alreadySortedLatestFirst = false) const;
108 
110  int countOnGround(COnGroundInfo::IsOnGround og) const;
111 
113  CAircraftSituation findClosestElevationWithinRange(
114  const geo::ICoordinateGeodetic &coordinate,
116 
118  void setOnGroundInfo(const COnGroundInfo &info);
119 
121  void setOnGroundDetails(COnGroundInfo::OnGroundDetails details);
122 
124  int addAltitudeOffset(const physical_quantities::CLength &offset);
125 
127  bool isSortedAdjustedLatestFirstWithoutNullPositions() const;
128 
131  CAircraftSituationList withoutFrontSituation() const;
132 
134  QList<double> pitchValues(const physical_quantities::CAngleUnit &unit) const;
135 
137  QList<double> groundSpeedValues(const physical_quantities::CSpeedUnit &unit) const;
138 
140  QList<double> elevationValues(const physical_quantities::CLengthUnit &unit) const;
141 
143  QList<double> altitudeValues(const physical_quantities::CLengthUnit &unit) const;
144 
146  physical_quantities::CAnglePair pitchStandardDeviationAndMean() const;
147 
149  physical_quantities::CSpeedPair groundSpeedStandardDeviationAndMean() const;
150 
153  int transferElevationForward(
155 
157  geo::CElevationPlane averageElevationOfTaxiingOnGroundAircraft(const CAircraftSituation &reference,
158  const physical_quantities::CLength &range,
159  int minValues = 1,
160  int sufficientValues = 2) const;
161  };
162 
165 
168 
169  } // namespace aviation
170 } // namespace swift::misc
171 
176 
177 #endif // SWIFT_MISC_AVIATION_AIRCRAFTSITUATIONLIST_H
QPair< CAngle, CAngle > CAnglePair
Pair of angle.
Definition: angle.h:115
Generic ordered container with value semantics.
Definition: collection.h:107
Generic sequential container with value semantics.
Definition: sequence.h:86
CSequence()=default
Default constructor.
List of objects with timestamp and offset. Such objects should implement.
Value object encapsulating information of aircraft's parts.
Definition: aircraftparts.h:26
Value object encapsulating information of an aircraft's situation.
GndElevationInfo
Where did we get elevation from?
CAircraftSituationList()=default
Default constructor.
Information about the ground status.
Definition: ongroundinfo.h:19
OnGroundDetails
Reliability of on ground information.
Definition: ongroundinfo.h:31
Plane of same elevation, can be a single point or larger area (e.g. airport)
static const physical_quantities::CLength & singlePointRadius()
Radius for single point.
Geodetic coordinate, a position in 3D space relative to the reference geoid.
List of objects with geo coordinates.
Definition: geoobjectlist.h:24
CRTP class template from which a derived class can inherit common methods dealing with the metatype o...
Definition: mixinmetatype.h:29
Specialized class for angles (degrees, radian).
Definition: units.h:233
Physical unit length (length)
Definition: length.h:18
Specialized class for distance units (meter, foot, nautical miles).
Definition: units.h:95
Specialized class for speed units (m/s, ft/s, NM/h).
Definition: units.h:778
#define SWIFT_MISC_DECLARE_USING_MIXIN_METATYPE(DERIVED)
When a derived class and a base class both inherit from mixin::MetaType, the derived class uses this ...
Free functions in swift::misc.
#define SWIFT_DECLARE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template declaration of mixins for a CSequence subclass to be placed near the top of the hea...
Definition: sequence.h:62
QPair< CSpeed, CSpeed > CSpeedPair
Pair of speeds.
Definition: speed.h:32
#define SWIFT_MISC_EXPORT
Export a class or function from the library.