swift
contextsimulator.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_CORE_CONTEXTSIMULATOR_H
7 #define SWIFT_CORE_CONTEXTSIMULATOR_H
8 
9 #include <QObject>
10 #include <QString>
11 
12 #include "core/context/context.h"
13 #include "core/corefacade.h"
14 #include "core/corefacadeconfig.h"
15 #include "core/simulator.h"
16 #include "core/swiftcoreexport.h"
19 #include "misc/pixmap.h"
20 #include "misc/pq/length.h"
30 
31 // clazy:excludeall=const-signal-or-slot
32 
35 #define SWIFT_CORE_CONTEXTSIMULATOR_INTERFACENAME "org.swift_project.swift_core.contextsimulator"
36 
39 #define SWIFT_CORE_CONTEXTSIMULATOR_OBJECTPATH "/simulator"
40 
41 class QDBusConnection;
42 
43 namespace swift::misc
44 {
45  class CDBusServer;
46  namespace simulation
47  {
48  class CSimulatedAircraft;
49  }
50 } // namespace swift::misc
51 namespace swift::core::context
52 {
55  {
56  Q_OBJECT
57  Q_CLASSINFO("D-Bus Interface", SWIFT_CORE_CONTEXTSIMULATOR_INTERFACENAME)
58 
59  public:
61  static const QString &InterfaceName();
62 
64  static const QString &ObjectPath();
65 
67  QString getPathAndContextId() const override { return this->buildPathAndContextId(ObjectPath()); }
68 
71  swift::misc::CDBusServer *server, QDBusConnection &connection);
72 
74  ~IContextSimulator() override {}
75 
76  signals:
80  void simulatorStatusChanged(int status);
81 
84 
87 
90 
92  void vitalityLost();
93 
96 
98  void renderRestrictionsChanged(bool restricted, bool enabled, int maxAircraft,
99  const swift::misc::physical_quantities::CLength &maxRenderedDistance);
100 
103 
106 
109 
112 
115  bool failover, const swift::misc::CStatusMessage &message);
116 
119 
122 
125 
128 
132  const swift::misc::simulation::CAircraftModelList &invalid, bool stopped,
133  const swift::misc::CStatusMessageList &msgs);
134 
137 
138  public slots:
141 
144 
147 
150  const swift::misc::simulation::CSimulatorInfo &simulator) = 0;
151 
153  virtual int checkListeners() = 0;
154 
157 
160 
162  virtual ISimulator::SimulatorStatus getSimulatorStatus() const = 0;
163 
166 
170 
173 
177 
180 
184 
186  virtual int getModelSetCount() const = 0;
187 
190  getModelSetModelsStartingWith(const QString &modelString) const = 0;
191 
193  virtual QStringList getModelSetStrings() const = 0;
194 
196  virtual QStringList getModelSetCompleterStrings(bool sorted) const = 0;
197 
200 
203  bool incremental) = 0;
204 
207 
209  virtual bool isValidationInProgress() const = 0;
210 
213 
215  virtual void restoreDisabledModels() = 0;
216 
218  virtual bool isKnownModelInSet(const QString &modelstring) const = 0;
219 
223 
225  virtual swift::misc::simulation::CInterpolationSetupList
227 
231  const swift::misc::aviation::CCallsign &callsign) const = 0;
232 
236 
238  virtual bool
239  setInterpolationAndRenderingSetupsPerCallsign(const swift::misc::simulation::CInterpolationSetupList &setups,
240  bool ignoreSameAsGlobal) = 0;
241 
245 
247  bool isSimulatorAvailable() const;
248 
250  bool isSimulatorSimulating() const;
251 
255 
257  virtual swift::misc::simulation::MatchingLog isMatchingMessagesEnabled() const = 0;
258 
260  virtual void enableMatchingMessages(swift::misc::simulation::MatchingLog enabled) = 0;
261 
263  virtual bool followAircraft(const swift::misc::aviation::CCallsign &callsign) = 0;
264 
266  virtual void recalculateAllAircraft() = 0;
267 
270 
273 
277  const swift::misc::physical_quantities::CLength &range) const = 0;
278 
280  virtual int doMatchingsAgain() = 0;
281 
283  virtual bool doMatchingAgain(const swift::misc::aviation::CCallsign &callsign) = 0;
284 
287 
290 
292  virtual bool testRemoteAircraft(const swift::misc::simulation::CSimulatedAircraft &aircraft, bool add) = 0;
293 
297  const swift::misc::aviation::CAircraftParts &parts) = 0;
298 
301 
302  protected:
305  };
306 } // namespace swift::core::context
307 
308 #endif // SWIFT_CORE_CONTEXTSIMULATOR_H
ContextMode
How to handle a given context.
The class providing facades (the contexts) for all DBus relevant operations.
Definition: corefacade.h:57
Base for all context classes.
Definition: context.h:34
virtual swift::misc::CStatusMessageList verifyPrerequisites() const =0
Verify prerequisites for simulation like an existing model set.
virtual bool doMatchingAgain(const swift::misc::aviation::CCallsign &callsign)=0
Repeat the matching callsign.
virtual bool resetToModelMatchingAircraft(const swift::misc::aviation::CCallsign &callsign)=0
Reset model by matching it again.
virtual void restoreDisabledModels()=0
Restore the models removed with CAircraftMatcher::disableModelForMatching.
virtual bool startSimulatorPlugin(const swift::misc::simulation::CSimulatorPluginInfo &simulatorInfo)=0
Load and start specific simulator plugin.
virtual bool isKnownModelInSet(const QString &modelstring) const =0
Known model?
void renderRestrictionsChanged(bool restricted, bool enabled, int maxAircraft, const swift::misc::physical_quantities::CLength &maxRenderedDistance)
Render restrictions have been changed.
virtual void recalculateAllAircraft()=0
Recalculate all aircraft.
virtual swift::misc::simulation::CSimulatorInfo simulatorsWithInitializedModelSet() const =0
Simulators which have an initialized model set.
virtual void stopSimulatorPlugin(const swift::misc::simulation::CSimulatorPluginInfo &simulatorInfo)=0
Stop listener or unload the given plugin (if currently loaded)
virtual bool setInterpolationAndRenderingSetupsPerCallsign(const swift::misc::simulation::CInterpolationSetupList &setups, bool ignoreSameAsGlobal)=0
Set all setups per callsign.
virtual swift::misc::simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const =0
Simulator info, currently loaded plugin.
void validatedModelSet(const swift::misc::simulation::CSimulatorInfo &simulator, const swift::misc::simulation::CAircraftModelList &valid, const swift::misc::simulation::CAircraftModelList &invalid, bool stopped, const swift::misc::CStatusMessageList &msgs)
Validated model set.
void addingRemoteModelFailed(const swift::misc::simulation::CSimulatedAircraft &aircraft, bool disabled, bool failover, const swift::misc::CStatusMessage &message)
Adding a remote aircraft failed.
virtual QStringList getModelSetCompleterStrings(bool sorted) const =0
Model set completer string.
virtual void disableModelsForMatching(const swift::misc::simulation::CAircraftModelList &removedModels, bool incremental)=0
Remove a model for matching.
virtual void setInterpolationAndRenderingSetupGlobal(const swift::misc::simulation::CInterpolationAndRenderingSetupGlobal &setup)=0
Set the global setup.
virtual bool isValidationInProgress() const =0
Validation in progress.
virtual int checkListeners()=0
Check all listeners enabled if simulator is connected.
virtual swift::misc::simulation::CAircraftModelList getDisabledModelsForMatching() const =0
The disabled models for matching.
void vitalityLost()
A formerly vital driver is no longer vital/responding.
virtual swift::misc::CStatusMessageList getMatchingMessages(const swift::misc::aviation::CCallsign &callsign) const =0
Get mapping messages.
QString getPathAndContextId() const
Id and path name for round trip protection.
void interpolationAndRenderingSetupChanged()
Setup changed.
void autoPublishDataWritten(const swift::misc::simulation::CSimulatorInfo &simulator)
Auto publish data written for simulator.
void ownAircraftModelChanged(const swift::misc::simulation::CAircraftModel &model)
Emitted when own aircraft model changes.
virtual int doMatchingsAgain()=0
Repeat all matchings.
void simulatorChanged(const swift::misc::simulation::CSimulatorInfo &simulator)
Same as simulatorPluginChanged, only with simulator signature.
void modelSetChanged(const swift::misc::simulation::CSimulatorInfo &simulator)
Model set ready or changed.
virtual int removeModelsFromSet(const swift::misc::simulation::CAircraftModelList &removeModels)=0
Remove models from set.
void simulatorPluginChanged(const swift::misc::simulation::CSimulatorPluginInfo &info)
Simulator plugin loaded / unloaded (default info)
virtual swift::misc::simulation::CAircraftModelList getModelSetModelsStartingWith(const QString &modelString) const =0
Models for model string.
virtual swift::misc::simulation::CAircraftModelList getModelSet() const =0
Installed models in simulator eco system.
virtual swift::misc::simulation::CAircraftMatcherSetup getMatchingSetup() const =0
Get matching setup.
void modelMatchingCompleted(const swift::misc::simulation::CSimulatedAircraft &aircraft)
A single model has been matched for given aircraft.
virtual swift::misc::simulation::CInterpolationSetupList getInterpolationAndRenderingSetupsPerCallsign() const =0
Get all setups per callsign.
virtual swift::misc::CStatusMessageList getInterpolationMessages(const swift::misc::aviation::CCallsign &callsign) const =0
Interpolation messages.
virtual swift::misc::simulation::CInterpolationAndRenderingSetupPerCallsign getInterpolationAndRenderingSetupPerCallsignOrDefault(const swift::misc::aviation::CCallsign &callsign) const =0
Get the setup for callsign, if not existing the global setup.
void matchingSetupChanged()
Matching setup changed.
void driverMessages(const swift::misc::CStatusMessageList &messages)
Relevant simulator messages to be explicitly displayed.
virtual int getModelSetCount() const =0
Number of installed models in simulator eco system.
virtual swift::misc::simulation::CSimulatorInternals getSimulatorInternals() const =0
Simulator setup.
void simulatorStatusChanged(int status)
Simulator combined status.
virtual void setMatchingSetup(const swift::misc::simulation::CAircraftMatcherSetup &setup)=0
Set matching setup.
virtual bool testRemoteAircraft(const swift::misc::simulation::CSimulatedAircraft &aircraft, bool add)=0
Test a remote aircraft.
virtual bool testUpdateRemoteAircraft(const swift::misc::aviation::CCallsign &cs, const swift::misc::aviation::CAircraftSituation &situation, const swift::misc::aviation::CAircraftParts &parts)=0
Test update remote aircraft.
void insufficientFrameRateDetected(bool fatal)
Frame rate has fallen too far below the threshold to maintain consistent sim rate.
virtual swift::misc::simulation::settings::CSimulatorSettings getSimulatorSettings() const =0
Get the current simulator settings.
virtual bool requestElevationBySituation(const swift::misc::aviation::CAircraftSituation &situation)=0
Request elevation, there is no guarantee the requested elevation will be available in the provider.
void simulatorSettingsChanged()
Simulator settings have been changed.
virtual swift::misc::simulation::MatchingLog isMatchingMessagesEnabled() const =0
Enabled mapping logging?
virtual swift::misc::simulation::CInterpolationAndRenderingSetupGlobal getInterpolationAndRenderingSetupGlobal() const =0
The global setup.
virtual void enableMatchingMessages(swift::misc::simulation::MatchingLog enabled)=0
Enable mapping logging.
virtual bool triggerModelSetValidation(const swift::misc::simulation::CSimulatorInfo &simulator)=0
Trigger model set validation.
void airspaceSnapshotHandled()
An airspace snapshot was handled.
void aircraftRenderingChanged(const swift::misc::simulation::CSimulatedAircraft &aircraft)
Aircraft rendering changed.
virtual QStringList getModelSetStrings() const =0
Model strings.
IContextSimulator(CCoreFacadeConfig::ContextMode mode, CCoreFacade *runtime)
Constructor.
virtual ISimulator::SimulatorStatus getSimulatorStatus() const =0
Simulator combined status.
virtual swift::misc::simulation::CSimulatorInfo getModelSetLoaderSimulator() const =0
Get the model set loader simulator directly.
virtual bool setSimulatorSettings(const swift::misc::simulation::settings::CSimulatorSettings &settings, const swift::misc::simulation::CSimulatorInfo &simulator)=0
Set settings for give simulator.
virtual swift::misc::simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const =0
Return list of available simulator plugins.
virtual swift::misc::geo::CElevationPlane findClosestElevationWithinRange(const swift::misc::geo::CCoordinateGeodetic &reference, const swift::misc::physical_quantities::CLength &range) const =0
Find closest elevation (or return NULL)
virtual bool followAircraft(const swift::misc::aviation::CCallsign &callsign)=0
Follow aircraft im simulator view.
virtual void setModelSetLoaderSimulator(const swift::misc::simulation::CSimulatorInfo &simulator)=0
Set the model set loader simulator directly.
virtual swift::misc::simulation::CMatchingStatistics getCurrentMatchingStatistics(bool missingOnly) const =0
Current matching statistics.
Custom DBusServer.
Definition: dbusserver.h:34
Streamable status message, e.g.
Status messages, e.g. from Core -> GUI.
Value object encapsulating information of aircraft's parts.
Definition: aircraftparts.h:26
Value object encapsulating information of an aircraft's situation.
Value object encapsulating information of a callsign.
Definition: callsign.h:30
Plane of same elevation, can be a single point or larger area (e.g. airport)
Physical unit length (length)
Definition: length.h:18
Aircraft model (used by another pilot, my models on disk)
Definition: aircraftmodel.h:71
Value object encapsulating a list of aircraft models.
Value object for interpolator and rendering per callsign.
Value object for matching statistics.
Comprehensive information of an aircraft.
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
Simulator internals for flight simulators. Those are obtained from a running simulator and represent ...
Value object encapsulating a list of SimulatorInfo objects.
Settings for simulator Driver independent parts (such as directories), also used in model loaders.
#define SWIFT_CORE_CONTEXTSIMULATOR_INTERFACENAME
DBus interface for context.
Free functions in swift::misc.
#define SWIFT_CORE_EXPORT
Export a class or function from the library.