swift
remoteaircraftprovider.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2015 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_SIMULATION_REMOTEAIRCRAFTPROVIDER_H
7 #define SWIFT_MISC_SIMULATION_REMOTEAIRCRAFTPROVIDER_H
8 
9 #include <functional>
10 
11 #include <QHash>
12 #include <QJsonObject>
13 #include <QList>
14 #include <QMetaObject>
15 #include <QObject>
16 #include <QReadWriteLock>
17 #include <QtGlobal>
18 
24 #include "misc/identifiable.h"
25 #include "misc/provider.h"
30 #include "misc/swiftmiscexport.h"
31 
32 namespace swift::misc
33 {
34  namespace geo
35  {
36  class CElevationPlane;
37  }
38  namespace simulation
39  {
45  {
46  public:
47  static constexpr int MaxSituationsPerCallsign = 50;
48  static constexpr int MaxPartsPerCallsign = 50;
49  static constexpr int MaxPartsAgePerCallsignSecs = 60;
50 
52  virtual ~IRemoteAircraftProvider() override;
53 
56 
59 
63 
66  virtual int getAircraftInRangeCount() const = 0;
67 
71 
74  virtual bool isAircraftInRange(const aviation::CCallsign &callsign) const = 0;
75 
78  virtual bool isVtolAircraft(const aviation::CCallsign &callsign) const = 0;
79 
83 
87 
91 
95  remoteAircraftSituations(const aviation::CCallsign &callsign) const = 0;
96 
101 
108  int index) const = 0;
109 
113 
117 
121  virtual int remoteAircraftSituationsCount(const aviation::CCallsign &callsign) const = 0;
122 
127 
130  virtual int remoteAircraftPartsCount(const aviation::CCallsign &callsign) const = 0;
131 
134  virtual bool isRemoteAircraftSupportingParts(const aviation::CCallsign &callsign) const = 0;
135 
138  aviation::CAircraftParts getLatestAircraftParts(const aviation::CCallsign &callsign) const;
139 
142  virtual int getRemoteAircraftSupportingPartsCount() const = 0;
143 
147 
152 
155  virtual int remoteAircraftSituationChangesCount(const aviation::CCallsign &callsign) const = 0;
156 
160  virtual bool updateAircraftEnabled(const aviation::CCallsign &callsign, bool enabledForRendering) = 0;
161 
165  bool enabledForRendering) = 0;
166 
170  bool enabledForRendering) = 0;
171 
174  virtual bool updateAircraftRendered(const aviation::CCallsign &callsign, bool rendered) = 0;
175 
178  virtual int updateMultipleAircraftRendered(const aviation::CCallsignSet &callsigns, bool rendered) = 0;
179 
182  virtual void updateMarkAllAsNotRendered() = 0;
183 
186  virtual bool updateAircraftModel(const aviation::CCallsign &callsign, const CAircraftModel &model,
187  const CIdentifier &originator) = 0;
188 
191  virtual bool updateAircraftNetworkModel(const aviation::CCallsign &callsign, const CAircraftModel &model,
192  const CIdentifier &originator) = 0;
193 
196  virtual bool updateFastPositionEnabled(const aviation::CCallsign &callsign,
197  bool enableFastPositonUpdates) = 0;
198 
202  const geo::CElevationPlane &elevation,
204  bool *updateAircraftGroundElevation) = 0;
205 
208  virtual bool updateCG(const aviation::CCallsign &callsign, const physical_quantities::CLength &cg) = 0;
209 
212  virtual aviation::CCallsignSet updateCGForModel(const QString &modelString,
213  const physical_quantities::CLength &cg) = 0;
214 
217  virtual bool updateCGAndModelString(const aviation::CCallsign &callsign,
218  const physical_quantities::CLength &cg, const QString &modelString) = 0;
219 
224  virtual physical_quantities::CLength getCGFromDB(const QString &modelString) const = 0;
225  virtual void rememberCGFromDB(const physical_quantities::CLength &cgFromDB,
226  const aviation::CCallsign &callsign) = 0;
227  virtual void rememberCGFromDB(const physical_quantities::CLength &cgFromDB, const QString &modelString) = 0;
229 
233 
236  virtual ReverseLookupLogging isReverseLookupMessagesEnabled() const = 0;
237 
240  virtual void enableReverseLookupMessages(ReverseLookupLogging enable) = 0;
241 
245 
248  virtual bool isAircraftPartsHistoryEnabled() const = 0;
249 
252  virtual void enableAircraftPartsHistory(bool enabled) = 0;
253 
256  virtual int aircraftSituationsAdded() const = 0;
257 
260  virtual int aircraftPartsAdded() const = 0;
261 
264  virtual qint64 situationsLastModified(const aviation::CCallsign &callsign) const = 0;
265 
268  virtual qint64 partsLastModified(const aviation::CCallsign &callsign) const = 0;
269 
273  virtual geo::CElevationPlane
275  const physical_quantities::CLength &range, int minValues = 1,
276  int sufficientValues = 2) const = 0;
277 
281  virtual QList<QMetaObject::Connection> connectRemoteAircraftProviderSignals(
282  QObject *receiver, std::function<void(const aviation::CAircraftSituation &)> addedSituationSlot,
283  std::function<void(const aviation::CCallsign &, const aviation::CAircraftParts &)> addedPartsSlot,
284  std::function<void(const aviation::CCallsign &)> removedAircraftSlot,
285  std::function<void(const CAirspaceAircraftSnapshot &)> aircraftSnapshot) = 0;
286 
288  static void removeOutdatedParts(aviation::CAircraftPartsList &partsList);
289 
291  static const aviation::CCallsign &testAltitudeOffsetCallsign();
292 
293  protected:
296  };
297  } // namespace simulation
298 } // namespace swift::misc
299 
300 Q_DECLARE_INTERFACE(swift::misc::simulation::IRemoteAircraftProvider, "org.swift-project.iremoteaircraftprovider")
301 
302 namespace swift::misc::simulation
303 {
306  public QObject,
308  public CIdentifiable
309  {
310  Q_OBJECT
312 
313  public:
315  static const QStringList &getLogCategories();
316 
318  CRemoteAircraftProvider(QObject *parent);
319 
320  // remoteaircraftprovider
321  virtual CSimulatedAircraftList getAircraftInRange() const override;
322  virtual aviation::CCallsignSet getAircraftInRangeCallsigns() const override;
323  virtual CSimulatedAircraft getAircraftInRangeForCallsign(const aviation::CCallsign &callsign) const override;
324  virtual CAircraftModel getAircraftInRangeModelForCallsign(const aviation::CCallsign &callsign) const override;
325  virtual int getAircraftInRangeCount() const override;
326  virtual bool isAircraftInRange(const aviation::CCallsign &callsign) const override;
327  virtual bool isVtolAircraft(const aviation::CCallsign &callsign) const override;
329  remoteAircraftSituations(const aviation::CCallsign &callsign) const override;
330  virtual aviation::CAircraftSituation remoteAircraftSituation(const aviation::CCallsign &callsign,
331  int index) const override;
332  virtual MillisecondsMinMaxMean
333  remoteAircraftSituationsTimestampDifferenceMinMaxMean(const aviation::CCallsign &callsign) const override;
334  virtual aviation::CAircraftSituationList latestRemoteAircraftSituations() const override;
335  virtual aviation::CAircraftSituationList latestOnGroundProviderElevations() const override;
336  virtual int remoteAircraftSituationsCount(const aviation::CCallsign &callsign) const override;
337  virtual aviation::CAircraftPartsList remoteAircraftParts(const aviation::CCallsign &callsign) const override;
338  virtual int remoteAircraftPartsCount(const aviation::CCallsign &callsign) const override;
339  virtual bool isRemoteAircraftSupportingParts(const aviation::CCallsign &callsign) const override;
340  virtual int getRemoteAircraftSupportingPartsCount() const override;
341  virtual aviation::CCallsignSet remoteAircraftSupportingParts() const override;
343  remoteAircraftSituationChanges(const aviation::CCallsign &callsign) const override;
344  virtual int remoteAircraftSituationChangesCount(const aviation::CCallsign &callsign) const override;
345  virtual bool updateAircraftEnabled(const aviation::CCallsign &callsign, bool enabledForRendering) override;
346  virtual bool setAircraftEnabledFlag(const swift::misc::aviation::CCallsign &callsign,
347  bool enabledForRendering) override;
348  virtual int updateMultipleAircraftEnabled(const aviation::CCallsignSet &callsigns,
349  bool enabledForRendering) override;
350  virtual bool updateAircraftModel(const aviation::CCallsign &callsign, const CAircraftModel &model,
351  const CIdentifier &originator) override;
352  virtual bool updateAircraftNetworkModel(const aviation::CCallsign &callsign, const CAircraftModel &model,
353  const CIdentifier &originator) override;
354  virtual bool updateFastPositionEnabled(const aviation::CCallsign &callsign,
355  bool enableFastPositonUpdates) override;
356  virtual bool updateAircraftRendered(const aviation::CCallsign &callsign, bool rendered) override;
357  virtual int updateMultipleAircraftRendered(const aviation::CCallsignSet &callsigns, bool rendered) override;
358  virtual int updateAircraftGroundElevation(const aviation::CCallsign &callsign,
359  const geo::CElevationPlane &elevation,
361  bool *setForOnGroundPosition) override;
362  virtual bool updateCG(const aviation::CCallsign &callsign, const physical_quantities::CLength &cg) override;
363  virtual bool updateCGAndModelString(const aviation::CCallsign &callsign, const physical_quantities::CLength &cg,
364  const QString &modelString) override;
365  virtual aviation::CCallsignSet updateCGForModel(const QString &modelString,
366  const physical_quantities::CLength &cg) override;
367  virtual physical_quantities::CLength getCGFromDB(const aviation::CCallsign &callsign) const override;
368  virtual physical_quantities::CLength getCGFromDB(const QString &modelString) const override;
369  virtual void rememberCGFromDB(const physical_quantities::CLength &cgFromDB,
370  const aviation::CCallsign &callsign) override;
371  virtual void rememberCGFromDB(const physical_quantities::CLength &cgFromDB,
372  const QString &modelString) override;
373  virtual void updateMarkAllAsNotRendered() override;
374  virtual CStatusMessageList getAircraftPartsHistory(const aviation::CCallsign &callsign) const override;
375  virtual bool isAircraftPartsHistoryEnabled() const override;
376  virtual void enableAircraftPartsHistory(bool enabled) override;
377  virtual int aircraftSituationsAdded() const override;
378  virtual int aircraftPartsAdded() const override;
379  virtual qint64 situationsLastModified(const aviation::CCallsign &callsign) const override;
380  virtual qint64 partsLastModified(const aviation::CCallsign &callsign) const override;
381  virtual geo::CElevationPlane averageElevationOfNonMovingAircraft(const aviation::CAircraftSituation &reference,
382  const physical_quantities::CLength &range,
383  int minValues = 1,
384  int sufficientValues = 2) const override;
385  virtual QList<QMetaObject::Connection> connectRemoteAircraftProviderSignals(
386  QObject *receiver, std::function<void(const aviation::CAircraftSituation &)> addedSituationSlot,
387  std::function<void(const aviation::CCallsign &, const aviation::CAircraftParts &)> addedPartsSlot,
388  std::function<void(const aviation::CCallsign &)> removedAircraftSlot,
389  std::function<void(const CAirspaceAircraftSnapshot &)> aircraftSnapshotSlot) override;
390 
391  virtual void enableReverseLookupMessages(ReverseLookupLogging enable) override;
392  virtual ReverseLookupLogging isReverseLookupMessagesEnabled() const override;
394  getReverseLookupMessages(const swift::misc::aviation::CCallsign &callsign) const override;
395 
400  void addReverseLookupMessages(const aviation::CCallsign &callsign, const CStatusMessageList &messages);
401  void addReverseLookupMessage(const aviation::CCallsign &callsign, const CStatusMessage &message);
402  void addReverseLookupMessage(const aviation::CCallsign &callsign, const QString &message,
403  CStatusMessage::StatusSeverity severity = CStatusMessage::SeverityInfo);
405 
407  virtual QObject *asQObject() override { return this; }
408 
410  void clear();
411 
412  // ------------------- testing ---------------
413 
415  bool hasTestAltitudeOffset(const aviation::CCallsign &callsign) const;
416 
418  bool hasTestAltitudeOffsetGlobalValue() const;
419 
421  bool testAddAltitudeOffset(const aviation::CCallsign &callsign, const physical_quantities::CLength &offset);
422 
423  signals:
426 
430 
433 
436 
439 
442 
443  protected:
446  bool removeAircraft(const aviation::CCallsign &callsign);
447 
450  void removeAllAircraft();
451 
454  void removeReverseLookupMessages(const aviation::CCallsign &callsign);
455 
458  bool addNewAircraftInRange(const CSimulatedAircraft &aircraft);
459 
462  CSimulatedAircraft addOrUpdateAircraftInRange(const aviation::CCallsign &callsign, const QString &aircraftIcao,
463  const QString &airlineIcao, const QString &livery,
464  const QString &modelString, CAircraftModel::ModelType modelType,
465  CStatusMessageList *log = nullptr);
466 
469  int updateAircraftInRange(const aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm,
470  bool skipEqualValues = true);
471 
475  bool updateAircraftInRangeDistanceBearing(const aviation::CCallsign &callsign,
476  const aviation::CAircraftSituation &situation,
477  const physical_quantities::CLength &distance,
478  const physical_quantities::CAngle &bearing);
479 
483  virtual aviation::CAircraftSituation storeAircraftSituation(const aviation::CAircraftSituation &situation,
484  bool allowTestAltitudeOffset = true);
485 
490  void storeAircraftParts(const aviation::CCallsign &callsign, const aviation::CAircraftParts &parts,
491  bool removeOutdated);
492  void storeAircraftParts(const aviation::CCallsign &callsign, const QJsonObject &jsonObject,
493  qint64 currentOffsetMs);
495 
498  bool guessOnGroundAndUpdateModelCG(aviation::CAircraftSituation &situation,
500  const CAircraftModel &aircraftModel);
501 
504  addTestAltitudeOffsetToSituation(const aviation::CAircraftSituation &situation) const;
505 
508  ReverseLookupLogging whatToReverseLog() const;
509 
512  static int setGroundElevationCheckedAndGuessGround(aviation::CAircraftSituationList &situations,
513  const geo::CElevationPlane &elevationPlane,
515  const simulation::CAircraftModel &model,
517  bool *setForOnGroundPosition);
518 
519  private:
523  void storeChange(const aviation::CAircraftSituationChange &change);
524 
526  m_situationsByCallsign;
528  m_latestSituationByCallsign;
531  m_latestOnGroundProviderElevation;
533  m_partsByCallsign;
535  m_changesByCallsign;
537  aviation::CCallsignSet m_aircraftWithParts;
538  int m_situationsAdded = 0;
539  int m_partsAdded = 0;
540 
541  ReverseLookupLogging m_enableReverseLookupMsgs =
542  RevLogSimplifiedInfo;
544  aviation::CStatusMessageListPerCallsign m_reverseLookupMessages;
545  aviation::CStatusMessageListPerCallsign m_aircraftPartsMessages;
546  aviation::CTimestampPerCallsign m_situationsLastModified;
547  aviation::CTimestampPerCallsign m_partsLastModified;
548  aviation::CLengthPerCallsign m_testOffset;
549  aviation::CLengthPerCallsign m_dbCGPerCallsign;
550  QHash<QString, physical_quantities::CLength> m_dbCGPerModelString;
551 
552  bool m_enableAircraftPartsHistory = true;
553 
554  // locks
555  mutable QReadWriteLock m_lockSituations;
556  mutable QReadWriteLock m_lockParts;
557  mutable QReadWriteLock m_lockChanges;
558  mutable QReadWriteLock m_lockAircraft;
559  mutable QReadWriteLock m_lockMessages;
560  mutable QReadWriteLock m_lockPartsHistory;
561  };
562 
564  class SWIFT_MISC_EXPORT CRemoteAircraftAware : public IProviderAware<IRemoteAircraftProvider>
565  {
566  public:
568  virtual ~CRemoteAircraftAware() override;
569 
571  CSimulatedAircraftList getAircraftInRange() const;
572 
574  bool isAircraftInRange(const aviation::CCallsign &callsign) const;
575 
577  bool isVtolAircraft(const aviation::CCallsign &callsign) const;
578 
580  int getAircraftInRangeCount() const;
581 
583  aviation::CCallsignSet getAircraftInRangeCallsigns() const;
584 
586  CSimulatedAircraft getAircraftInRangeForCallsign(const aviation::CCallsign &callsign) const;
587 
589  CAircraftModel getAircraftInRangeModelForCallsign(const aviation::CCallsign &callsign) const;
590 
592  CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const;
593 
595  aviation::CAircraftSituationList remoteAircraftSituations(const aviation::CCallsign &callsign) const;
596 
598  aviation::CAircraftSituation remoteAircraftSituation(const aviation::CCallsign &callsign, int index) const;
599 
601  aviation::CAircraftSituationList latestRemoteAircraftSituations() const;
602 
604  aviation::CAircraftSituationList latestOnGroundProviderElevations() const;
605 
607  int remoteAircraftSituationsCount(const aviation::CCallsign &callsign) const;
608 
610  aviation::CAircraftPartsList remoteAircraftParts(const aviation::CCallsign &callsign) const;
611 
613  int remoteAircraftPartsCount(const aviation::CCallsign &callsign) const;
614 
617  remoteAircraftSituationChanges(const aviation::CCallsign &callsign) const;
618 
620  aviation::CCallsignSet remoteAircraftSupportingParts() const;
621 
623  bool isRemoteAircraftSupportingParts(const aviation::CCallsign &callsign) const;
624 
626  int getRemoteAircraftSupportingPartsCount() const;
627 
629  bool updateAircraftEnabled(const aviation::CCallsign &callsign, bool enabledForRendering);
630 
632  bool setAircraftEnabledFlag(const aviation::CCallsign &callsign, bool enabledForRendering);
633 
635  bool updateMultipleAircraftEnabled(const aviation::CCallsignSet &callsigns, bool enabledForRendering);
636 
638  bool updateAircraftModel(const aviation::CCallsign &callsign, const CAircraftModel &model,
639  const CIdentifier &originator);
640 
642  bool updateAircraftNetworkModel(const aviation::CCallsign &callsign, const CAircraftModel &model,
643  const CIdentifier &originator);
644 
646  bool updateAircraftRendered(const aviation::CCallsign &callsign, bool rendered);
647 
649  bool updateMultipleAircraftRendered(const aviation::CCallsignSet &callsigns, bool rendered);
650 
652  int updateAircraftGroundElevation(const aviation::CCallsign &callsign, const geo::CElevationPlane &elevation,
654  bool *updateAircraftGroundElevation);
655 
657  bool updateCG(const aviation::CCallsign &callsign, const physical_quantities::CLength &cg);
658 
660  aviation::CCallsignSet updateCGForModel(const QString &modelString, const physical_quantities::CLength &cg);
661 
663  bool updateCGAndModelString(const aviation::CCallsign &callsign, const physical_quantities::CLength &cg,
664  const QString &modelString);
665 
667  void updateMarkAllAsNotRendered();
668 
670  int aircraftSituationsAdded() const;
671 
673  int aircraftPartsAdded() const;
674 
676  qint64 situationsLastModified(const aviation::CCallsign &callsign) const;
677 
679  qint64 partsLastModified(const aviation::CCallsign &callsign) const;
680 
682  geo::CElevationPlane averageElevationOfNonMovingAircraft(const aviation::CAircraftSituation &reference,
683  const physical_quantities::CLength &range,
684  int minValues = 1) const;
685 
688  {
689  this->setProvider(remoteAircraftProvider);
690  }
691 
693  IRemoteAircraftProvider *getRemoteAircraftProvider() const { return this->getProvider(); }
694 
695  protected:
698 
700  CRemoteAircraftAware(IRemoteAircraftProvider *remoteAircraftProvider) : IProviderAware(remoteAircraftProvider)
701  {
702  Q_ASSERT(remoteAircraftProvider);
703  }
704  };
705 } // namespace swift::misc::simulation
706 
707 #endif // SWIFT_MISC_SIMULATION_REMOTEAIRCRAFTPROVIDER_H
Base class with a member CIdentifier to be inherited by a class which has an identity in the environm...
Definition: identifiable.h:24
Value object encapsulating information identifying a component of a modular distributed swift process...
Definition: identifier.h:29
Specialized value object compliant map for variants, based on indexes.
Streamable status message, e.g.
Status messages, e.g. from Core -> GUI.
Base class of provider aware classes.
Definition: provider.h:41
Base class for providers.
Definition: provider.h:19
Value object encapsulating information of aircraft's parts.
Definition: aircraftparts.h:26
Value object encapsulating a list of aircraft parts.
Value object about changes in situations.
Value object encapsulating a list of aircraft parts.
Value object encapsulating information of an aircraft's situation.
GndElevationInfo
Where did we get elevation from?
Value object encapsulating information of a callsign.
Definition: callsign.h:30
Value object for a set of callsigns.
Definition: callsignset.h:26
Plane of same elevation, can be a single point or larger area (e.g. airport)
Physical unit angle (radians, degrees)
Definition: angle.h:23
Physical unit length (length)
Definition: length.h:18
Aircraft model (used by another pilot, my models on disk)
Definition: aircraftmodel.h:71
Class which can be directly used to access an.
CRemoteAircraftAware(IRemoteAircraftProvider *remoteAircraftProvider)
Constructor.
IRemoteAircraftProvider * getRemoteAircraftProvider() const
Get the aircraft provider.
void setRemoteAircraftProvider(IRemoteAircraftProvider *remoteAircraftProvider)
Set remote aircraft provider.
Implementaion of the interface, which can also be used for testing.
void changedAircraftInRange()
Aircraft were changed.
CSimulatedAircraft addOrUpdateAircraftInRange(const aviation::CCallsign &callsign, const QString &aircraftIcao, const QString &airlineIcao, const QString &livery, const QString &modelString, CAircraftModel::ModelType modelType, CStatusMessageList *log=nullptr)
Init a new aircraft and add it or update model of existing aircraft.
void addedAircraftParts(const swift::misc::aviation::CCallsign &callsign, const swift::misc::aviation::CAircraftParts &parts)
Parts added.
void addedAircraft(const swift::misc::simulation::CSimulatedAircraft &remoteAircraft)
A new aircraft appeared.
void airspaceAircraftSnapshot(const swift::misc::simulation::CAirspaceAircraftSnapshot &snapshot)
New aircraft snapshot.
void addedAircraftSituation(const swift::misc::aviation::CAircraftSituation &situation)
Situation added.
virtual QObject * asQObject()
Return as QObject.
void removedAircraft(const swift::misc::aviation::CCallsign &callsign)
An aircraft disappeared.
Comprehensive information of an aircraft.
Value object encapsulating a list of aircraft.
Direct thread safe in memory access to remote aircraft.
virtual bool isAircraftPartsHistoryEnabled() const =0
Is storing aircraft parts history enabled?
IRemoteAircraftProvider(const IRemoteAircraftProvider &)=delete
Copy constructor.
virtual int aircraftPartsAdded() const =0
Number of parts added.
virtual bool setAircraftEnabledFlag(const swift::misc::aviation::CCallsign &callsign, bool enabledForRendering)=0
Just set enable/disable aircraft flag, no further logic.
virtual bool isRemoteAircraftSupportingParts(const aviation::CCallsign &callsign) const =0
Is remote aircraft supporting parts?
virtual aviation::CAircraftSituation remoteAircraftSituation(const aviation::CCallsign &callsign, int index) const =0
Rendered aircraft situations (per callsign and index)
virtual bool updateCGAndModelString(const aviation::CCallsign &callsign, const physical_quantities::CLength &cg, const QString &modelString)=0
Update the CG and model string.
virtual bool updateAircraftEnabled(const aviation::CCallsign &callsign, bool enabledForRendering)=0
Enable/disable aircraft and follow up logic like sending signals.
virtual void updateMarkAllAsNotRendered()=0
Mark all as not rendered.
virtual geo::CElevationPlane averageElevationOfNonMovingAircraft(const aviation::CAircraftSituation &reference, const physical_quantities::CLength &range, int minValues=1, int sufficientValues=2) const =0
Average elevation of aircraft in given range, which are NOT moving.
virtual bool updateAircraftNetworkModel(const aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator)=0
Change network model.
virtual bool updateFastPositionEnabled(const aviation::CCallsign &callsign, bool enableFastPositonUpdates)=0
Change fast position updates.
IRemoteAircraftProvider & operator=(const IRemoteAircraftProvider &)=delete
Copy assignment operator.
virtual aviation::CAircraftSituationList latestRemoteAircraftSituations() const =0
Latest aircraft situation for all callsigns.
virtual aviation::CCallsignSet getAircraftInRangeCallsigns() const =0
Unique callsigns for aircraft in range.
virtual CAircraftModel getAircraftInRangeModelForCallsign(const aviation::CCallsign &callsign) const =0
Aircraft model for callsign.
virtual int updateMultipleAircraftRendered(const aviation::CCallsignSet &callsigns, bool rendered)=0
Set aircraft rendered.
virtual physical_quantities::CLength getCGFromDB(const QString &modelString) const =0
CG values from DB.
virtual int remoteAircraftSituationsCount(const aviation::CCallsign &callsign) const =0
Number of remote aircraft situations for callsign.
virtual bool updateAircraftRendered(const aviation::CCallsign &callsign, bool rendered)=0
Set aircraft rendered.
virtual void rememberCGFromDB(const physical_quantities::CLength &cgFromDB, const QString &modelString)=0
CG values from DB.
virtual CStatusMessageList getReverseLookupMessages(const aviation::CCallsign &callsign) const =0
Get reverse lookup meesages.
virtual qint64 partsLastModified(const aviation::CCallsign &callsign) const =0
When last modified.
virtual void enableReverseLookupMessages(ReverseLookupLogging enable)=0
Enable reverse lookup logging.
virtual int getAircraftInRangeCount() const =0
Count remote aircraft.
virtual QList< QMetaObject::Connection > connectRemoteAircraftProviderSignals(QObject *receiver, std::function< void(const aviation::CAircraftSituation &)> addedSituationSlot, std::function< void(const aviation::CCallsign &, const aviation::CAircraftParts &)> addedPartsSlot, std::function< void(const aviation::CCallsign &)> removedAircraftSlot, std::function< void(const CAirspaceAircraftSnapshot &)> aircraftSnapshot)=0
Connect signals to slot receiver. As the interface is no QObject, slots can not be connected directly...
virtual aviation::CCallsignSet remoteAircraftSupportingParts() const =0
Remote aircraft supporting parts.
virtual aviation::CAircraftSituationList remoteAircraftSituations(const aviation::CCallsign &callsign) const =0
Rendered aircraft situations (per callsign, time history)
virtual ReverseLookupLogging isReverseLookupMessagesEnabled() const =0
Enabled reverse lookup logging?
virtual int updateMultipleAircraftEnabled(const aviation::CCallsignSet &callsigns, bool enabledForRendering)=0
Enable/disable aircraft.
virtual physical_quantities::CLength getCGFromDB(const aviation::CCallsign &callsign) const =0
CG values from DB.
virtual aviation::CAircraftSituationChangeList remoteAircraftSituationChanges(const aviation::CCallsign &callsign) const =0
Aircraft changes.
virtual CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const =0
Current snapshot.
virtual bool updateAircraftModel(const aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator)=0
Change model.
virtual CSimulatedAircraftList getAircraftInRange() const =0
All remote aircraft.
virtual CStatusMessageList getAircraftPartsHistory(const aviation::CCallsign &callsign) const =0
Get aircraft parts history.
virtual int getRemoteAircraftSupportingPartsCount() const =0
Number of aircraft supporting parts.
virtual int remoteAircraftPartsCount(const aviation::CCallsign &callsign) const =0
All parts (per callsign, time history)
virtual int aircraftSituationsAdded() const =0
Number of situations added.
virtual bool isVtolAircraft(const aviation::CCallsign &callsign) const =0
Is VTOL aircraft?
virtual int updateAircraftGroundElevation(const aviation::CCallsign &callsign, const geo::CElevationPlane &elevation, aviation::CAircraftSituation::GndElevationInfo info, bool *updateAircraftGroundElevation)=0
Update the ground elevation.
virtual void enableAircraftPartsHistory(bool enabled)=0
Enable storing of aircraft parts history.
virtual qint64 situationsLastModified(const aviation::CCallsign &callsign) const =0
When last modified.
virtual aviation::CAircraftPartsList remoteAircraftParts(const aviation::CCallsign &callsign) const =0
All parts (per callsign, time history)
virtual CSimulatedAircraft getAircraftInRangeForCallsign(const aviation::CCallsign &callsign) const =0
Aircraft for callsign.
virtual aviation::CCallsignSet updateCGForModel(const QString &modelString, const physical_quantities::CLength &cg)=0
Update the CG for this model string.
virtual int remoteAircraftSituationChangesCount(const aviation::CCallsign &callsign) const =0
Aircraft changes count.
virtual void rememberCGFromDB(const physical_quantities::CLength &cgFromDB, const aviation::CCallsign &callsign)=0
CG values from DB.
virtual aviation::CAircraftSituationList latestOnGroundProviderElevations() const =0
Latest aircraft situation "on ground" having a provider elevation.
virtual bool updateCG(const aviation::CCallsign &callsign, const physical_quantities::CLength &cg)=0
Update the CG.
virtual MillisecondsMinMaxMean remoteAircraftSituationsTimestampDifferenceMinMaxMean(const aviation::CCallsign &callsign) const =0
Average update time.
virtual bool isAircraftInRange(const aviation::CCallsign &callsign) const =0
Is aircraft in range?
Free functions in swift::misc.
StatusSeverity
Status severities.
Definition: statusmessage.h:35
Milliseconds minimum/maximum/mean.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.