swift
ownaircraftprovider.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_OWNAIRCRAFTPROVIDER_H
7 #define SWIFT_MISC_SIMULATION_OWNAIRCRAFTPROVIDER_H
8 
9 #include <QObject>
10 #include <QtGlobal>
11 
14 #include "misc/aviation/callsign.h"
16 #include "misc/aviation/selcal.h"
18 #include "misc/identifier.h"
19 #include "misc/pq/frequency.h"
20 #include "misc/pq/length.h"
21 #include "misc/provider.h"
24 #include "misc/swiftmiscexport.h"
25 
26 namespace swift::misc
27 {
28  namespace aviation
29  {
30  class CAircraftIcaoCode;
31  class CAircraftSituation;
32  } // namespace aviation
33 
34  namespace simulation
35  {
38  {
39  public:
42  virtual CSimulatedAircraft getOwnAircraft() const = 0;
43 
46  virtual aviation::CCallsign getOwnCallsign() const = 0;
47 
51 
55 
59 
63 
67 
71 
76 
79  virtual bool updateOwnCallsign(const aviation::CCallsign &callsign) = 0;
80 
83  virtual bool updateOwnIcaoCodes(const aviation::CAircraftIcaoCode &aircraftIcaoCode,
84  const aviation::CAirlineIcaoCode &airlineIcaoCode) = 0;
85 
89 
91  virtual bool updateOwnSituation(const aviation::CAircraftSituation &situation) = 0;
92 
94  virtual bool updateOwnParts(const aviation::CAircraftParts &parts) = 0;
95 
97  virtual bool updateOwnCG(const physical_quantities::CLength &cg) = 0;
98 
99  // ------------------------------------------------------------------------
100  // cockpit / aircraft related updates, which can come from multiple sources
101  // and are subject of roundtrips -> originator
102  // ------------------------------------------------------------------------
103 
106  bool updateCockpit(const swift::misc::simulation::CSimulatedAircraft &aircraft,
107  const swift::misc::CIdentifier &originator);
108 
111  virtual bool updateCockpit(const aviation::CComSystem &com1, const aviation::CComSystem &com2,
112  const aviation::CTransponder &transponder,
113  const swift::misc::CIdentifier &originator) = 0;
114 
119  const swift::misc::CIdentifier &originator) = 0;
120 
123  virtual bool updateSelcal(const aviation::CSelcal &selcal, const swift::misc::CIdentifier &originator) = 0;
124  };
125 
127  class SWIFT_MISC_EXPORT COwnAircraftAware : public IProviderAware<IOwnAircraftProvider>
128  {
129  virtual void anchor();
130 
131  public:
133  void setOwnAircraftProvider(IOwnAircraftProvider *provider) { this->setProvider(provider); }
134 
136  CSimulatedAircraft getOwnAircraft() const;
137 
139  aviation::CCallsign getOwnCallsign() const;
140 
142  aviation::CComSystem getOwnComSystem(aviation::CComSystem::ComUnit unit) const;
143 
145  aviation::CTransponder getOwnTransponder() const;
146 
148  swift::misc::geo::CCoordinateGeodetic getOwnAircraftPosition() const;
149 
151  aviation::CAircraftSituation getOwnAircraftSituation() const;
152 
154  aviation::CAircraftParts getOwnAircraftParts() const;
155 
157  swift::misc::simulation::CAircraftModel getOwnAircraftModel() const;
158 
161  getDistanceToOwnAircraft(const swift::misc::geo::ICoordinateGeodetic &position) const;
162 
165  bool updateCockpit(const swift::misc::simulation::CSimulatedAircraft &aircraft,
166  const swift::misc::CIdentifier &originator);
167 
170  bool updateCockpit(const aviation::CComSystem &com1, const aviation::CComSystem &com2,
171  const aviation::CTransponder &transponder, const swift::misc::CIdentifier &originator);
172 
174  bool updateActiveComFrequency(const swift::misc::physical_quantities::CFrequency &frequency,
176  const swift::misc::CIdentifier &originator);
177 
179  bool updateSelcal(const aviation::CSelcal &selcal, const swift::misc::CIdentifier &originator);
180 
182  bool updateOwnCallsign(const aviation::CCallsign &callsign);
183 
185  bool updateOwnIcaoCodes(const aviation::CAircraftIcaoCode &aircraftIcaoData,
186  const aviation::CAirlineIcaoCode &airlineIcaoCode);
187 
189  bool updateOwnModel(const swift::misc::simulation::CAircraftModel &model);
190 
192  bool updateOwnSituation(const aviation::CAircraftSituation &situation);
193 
195  bool updateOwnParts(const aviation::CAircraftParts &parts);
196 
198  bool updateOwnCG(const physical_quantities::CLength &cg);
199 
200  protected:
202  COwnAircraftAware(IOwnAircraftProvider *ownAircraftProvider) : IProviderAware(ownAircraftProvider)
203  {
204  Q_ASSERT(ownAircraftProvider);
205  }
206  };
207  } // namespace simulation
208 } // namespace swift::misc
209 
211  "org.swift-project.misc::simulation::iownaircraftprovider")
212 
213 #endif // SWIFT_MISC_SIMULATION_OWNAIRCRAFTPROVIDER_H
Value object encapsulating information identifying a component of a modular distributed swift process...
Definition: identifier.h:29
Base class of provider aware classes.
Definition: provider.h:41
Base class for providers.
Definition: provider.h:19
Value object for ICAO classification.
Value object encapsulating information of aircraft's parts.
Definition: aircraftparts.h:26
Value object encapsulating information of an aircraft's situation.
Value object for ICAO classification.
Value object encapsulating information of a callsign.
Definition: callsign.h:30
COM system (aka "radio")
Definition: comsystem.h:37
Value object for SELCAL.
Definition: selcal.h:31
Geodetic coordinate, a position in 3D space relative to the reference geoid.
Physical unit length (length)
Definition: length.h:18
Aircraft model (used by another pilot, my models on disk)
Definition: aircraftmodel.h:71
Delegating class which can be directly used to access an.
void setOwnAircraftProvider(IOwnAircraftProvider *provider)
Set the provider.
COwnAircraftAware(IOwnAircraftProvider *ownAircraftProvider)
Constructor.
Comprehensive information of an aircraft.
Direct threadsafe in memory access to own aircraft.
virtual swift::misc::simulation::CAircraftModel getOwnAircraftModel() const =0
Own aircraft model.
virtual aviation::CCallsign getOwnCallsign() const =0
Own aircraft's callsign.
virtual aviation::CAircraftParts getOwnAircraftParts() const =0
Own aircraft's parts.
virtual bool updateOwnModel(const swift::misc::simulation::CAircraftModel &model)=0
Update model.
virtual bool updateOwnCallsign(const aviation::CCallsign &callsign)=0
Update aircraft's callsign.
virtual swift::misc::physical_quantities::CLength getDistanceToOwnAircraft(const swift::misc::geo::ICoordinateGeodetic &position) const =0
Distance to own aircraft.
virtual geo::CCoordinateGeodetic getOwnAircraftPosition() const =0
Own aircraft's position.
virtual bool updateCockpit(const aviation::CComSystem &com1, const aviation::CComSystem &com2, const aviation::CTransponder &transponder, const swift::misc::CIdentifier &originator)=0
Update cockpit, but only send signals when applicable.
virtual bool updateOwnCG(const physical_quantities::CLength &cg)=0
Update own aircraft's CG (aka vertical offset)
virtual CSimulatedAircraft getOwnAircraft() const =0
Own aircraft.
virtual aviation::CAircraftSituation getOwnAircraftSituation() const =0
Own aircraft's situation.
virtual bool updateActiveComFrequency(const swift::misc::physical_quantities::CFrequency &frequency, aviation::CComSystem::ComUnit comUnit, const swift::misc::CIdentifier &originator)=0
Update cockpit, but only send signals when applicable.
virtual bool updateOwnSituation(const aviation::CAircraftSituation &situation)=0
Update own situation.
virtual aviation::CComSystem getOwnComSystem(aviation::CComSystem::ComUnit unit) const =0
Own aircraft COM unit.
virtual bool updateOwnParts(const aviation::CAircraftParts &parts)=0
Update own parts.
virtual bool updateOwnIcaoCodes(const aviation::CAircraftIcaoCode &aircraftIcaoCode, const aviation::CAirlineIcaoCode &airlineIcaoCode)=0
Update ICAO data.
virtual bool updateSelcal(const aviation::CSelcal &selcal, const swift::misc::CIdentifier &originator)=0
Update cockpit, but only send signals when applicable.
virtual aviation::CTransponder getOwnTransponder() const =0
Own aircraft XPDR.
Free functions in swift::misc.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.