mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-16 10:25:36 +08:00
Use nested namespaces (C++17 feature)
This commit is contained in:
@@ -61,247 +61,244 @@ namespace BlackMisc
|
||||
namespace Weather { class IWeatherGridProvider; }
|
||||
}
|
||||
|
||||
namespace BlackSimPlugin
|
||||
namespace BlackSimPlugin::Flightgear
|
||||
{
|
||||
namespace Flightgear
|
||||
extern int FGSWIFTBUS_API_VERSION;
|
||||
extern QList<int> incompatibleVersions;
|
||||
class CFGSwiftBusServiceProxy;
|
||||
class CFGSwiftBusTrafficProxy;
|
||||
|
||||
//! Flightgear data
|
||||
struct FlightgearData
|
||||
{
|
||||
extern int FGSWIFTBUS_API_VERSION;
|
||||
extern QList<int> incompatibleVersions;
|
||||
class CFGSwiftBusServiceProxy;
|
||||
class CFGSwiftBusTrafficProxy;
|
||||
QString aircraftModelPath; //!< Aircraft model path
|
||||
QString aircraftIcaoCode; //!< Aircraft ICAO code
|
||||
double latitudeDeg; //!< Longitude [deg]
|
||||
double longitudeDeg; //!< Latitude [deg]
|
||||
double altitudeFt; //!< Altitude [ft]
|
||||
double groundspeedKts; //!< Ground speed [kts]
|
||||
double pitchDeg; //!< Pitch [deg]
|
||||
double rollDeg; //!< Roll [deg]
|
||||
double trueHeadingDeg; //!< True heading [deg]
|
||||
bool onGroundAll; //!< All wheels on ground?
|
||||
int com1ActiveKhz; //!< COM1 active [kHz]
|
||||
int com1StandbyKhz; //!< COM1 standby [kHz]
|
||||
int com2ActiveKhz; //!< COM2 active [kHz]
|
||||
int com2StandbyKhz; //!< COM2 standby [kHz]
|
||||
int xpdrCode; //!< Transpondder code
|
||||
int xpdrMode; //!< Transponder mode (off=0,stdby=1-2, >2 on)
|
||||
bool xpdrIdent; //!< Is transponder in ident?
|
||||
bool beaconLightsOn; //!< Beacon lights on?
|
||||
bool landingLightsOn; //!< Landing lights on?
|
||||
bool navLightsOn; //!< NAV lights on?
|
||||
bool strobeLightsOn; //!< Strobe lights on?
|
||||
bool taxiLightsOn; //!< Taxi lights on?
|
||||
double flapsReployRatio; //!< Flaps deployment ratio [%]
|
||||
double gearReployRatio; //!< Gear deployment ratio [%]
|
||||
QList<double> enginesN1Percentage; //!< N1 per engine [%]
|
||||
double speedBrakeRatio; //!< Speed break ratio [%]
|
||||
double pressureAltitudeFt; //!< Pressure altitude [inhg]
|
||||
double groundElevation; //!< Ground Elevation [m]
|
||||
double volumeCom1; //!< Volume com1 [0..1]
|
||||
double volumeCom2; //!< Volume com2 [0..1]
|
||||
};
|
||||
|
||||
//! Flightgear data
|
||||
struct FlightgearData
|
||||
//! Flightgear ISimulator implementation
|
||||
class CSimulatorFlightgear : public Common::CSimulatorPluginCommon
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
//! Constructor
|
||||
CSimulatorFlightgear(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
|
||||
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
|
||||
BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
|
||||
BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider,
|
||||
BlackMisc::Network::IClientProvider *clientProvider,
|
||||
QObject *parent = nullptr);
|
||||
|
||||
//! Dtor
|
||||
virtual ~CSimulatorFlightgear() override;
|
||||
|
||||
//! \name ISimulator implementations
|
||||
//! @{
|
||||
virtual bool isTimeSynchronized() const override { return false; }
|
||||
virtual bool connectTo() override;
|
||||
virtual bool disconnectFrom() override;
|
||||
virtual bool updateOwnSimulatorCockpit(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator) override;
|
||||
virtual bool updateOwnSimulatorSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override;
|
||||
virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override;
|
||||
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override;
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return BlackMisc::PhysicalQuantities::CTime(0, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); }
|
||||
virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual BlackMisc::Aviation::CCallsignSet physicallyRenderedAircraft() const override;
|
||||
virtual void unload() override;
|
||||
virtual QString getStatisticsSimulatorSpecific() const override;
|
||||
virtual void resetAircraftStatistics() override;
|
||||
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override;
|
||||
virtual bool requestElevation(const BlackMisc::Geo::ICoordinateGeodetic &reference, const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
//! @}
|
||||
|
||||
protected:
|
||||
//! \name ISimulator implementations
|
||||
//! @{
|
||||
virtual bool isConnected() const override;
|
||||
virtual bool physicallyAddRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &newRemoteAircraft) override;
|
||||
virtual bool physicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual int physicallyRemoveAllRemoteAircraft() override;
|
||||
virtual void clearAllRemoteAircraftData() override;
|
||||
virtual bool isPaused() const override
|
||||
{
|
||||
QString aircraftModelPath; //!< Aircraft model path
|
||||
QString aircraftIcaoCode; //!< Aircraft ICAO code
|
||||
double latitudeDeg; //!< Longitude [deg]
|
||||
double longitudeDeg; //!< Latitude [deg]
|
||||
double altitudeFt; //!< Altitude [ft]
|
||||
double groundspeedKts; //!< Ground speed [kts]
|
||||
double pitchDeg; //!< Pitch [deg]
|
||||
double rollDeg; //!< Roll [deg]
|
||||
double trueHeadingDeg; //!< True heading [deg]
|
||||
bool onGroundAll; //!< All wheels on ground?
|
||||
int com1ActiveKhz; //!< COM1 active [kHz]
|
||||
int com1StandbyKhz; //!< COM1 standby [kHz]
|
||||
int com2ActiveKhz; //!< COM2 active [kHz]
|
||||
int com2StandbyKhz; //!< COM2 standby [kHz]
|
||||
int xpdrCode; //!< Transpondder code
|
||||
int xpdrMode; //!< Transponder mode (off=0,stdby=1-2, >2 on)
|
||||
bool xpdrIdent; //!< Is transponder in ident?
|
||||
bool beaconLightsOn; //!< Beacon lights on?
|
||||
bool landingLightsOn; //!< Landing lights on?
|
||||
bool navLightsOn; //!< NAV lights on?
|
||||
bool strobeLightsOn; //!< Strobe lights on?
|
||||
bool taxiLightsOn; //!< Taxi lights on?
|
||||
double flapsReployRatio; //!< Flaps deployment ratio [%]
|
||||
double gearReployRatio; //!< Gear deployment ratio [%]
|
||||
QList<double> enginesN1Percentage; //!< N1 per engine [%]
|
||||
double speedBrakeRatio; //!< Speed break ratio [%]
|
||||
double pressureAltitudeFt; //!< Pressure altitude [inhg]
|
||||
double groundElevation; //!< Ground Elevation [m]
|
||||
double volumeCom1; //!< Volume com1 [0..1]
|
||||
double volumeCom2; //!< Volume com2 [0..1]
|
||||
return false;
|
||||
}
|
||||
//! @}
|
||||
|
||||
private slots:
|
||||
//! Unregister
|
||||
void onDBusServiceUnregistered();
|
||||
|
||||
private:
|
||||
enum DBusMode
|
||||
{
|
||||
Session,
|
||||
P2P
|
||||
};
|
||||
|
||||
//! Flightgear ISimulator implementation
|
||||
class CSimulatorFlightgear : public Common::CSimulatorPluginCommon
|
||||
using QDoubleList = QList<double>;
|
||||
|
||||
void setAirportsInRange(const QStringList &icaoCodes, const QStringList &names, const BlackMisc::CSequence<double> &lats, const BlackMisc::CSequence<double> &lons, const BlackMisc::CSequence<double> &alts);
|
||||
void emitOwnAircraftModelChanged(const QString &path, const QString &filename, const QString &livery, const QString &icao,
|
||||
const QString &modelString, const QString &name, const QString &description);
|
||||
void fastTimerTimeout();
|
||||
void slowTimerTimeout();
|
||||
|
||||
//! Update remote aircraft
|
||||
//! \remark this is where the interpolated data are set
|
||||
void updateRemoteAircraft();
|
||||
|
||||
//! Request elevation and CG from Flightgear
|
||||
//! @{
|
||||
void requestRemoteAircraftDataFromFlightgear();
|
||||
void requestRemoteAircraftDataFromFlightgear(const BlackMisc::Aviation::CCallsignSet &callsigns);
|
||||
void triggerRequestRemoteAircraftDataFromFlightgear(const BlackMisc::Aviation::CCallsignSet &callsigns);
|
||||
//! @}
|
||||
|
||||
//! Adding new aircraft
|
||||
//! @{
|
||||
void addNextPendingAircraft();
|
||||
void triggerAddNextPendingAircraft();
|
||||
//! @}
|
||||
|
||||
//! Detect timeouts on adding
|
||||
int detectTimeoutAdding();
|
||||
|
||||
//! Trigger a removal of an aircraft
|
||||
void triggerRemoveAircraft(const BlackMisc::Aviation::CCallsign &callsign, qint64 deferMs);
|
||||
|
||||
//! Timestamps of aircraft currently adding
|
||||
QPair<qint64, qint64> minMaxTimestampsAddInProgress() const;
|
||||
|
||||
//! Can the next aircraft be added?
|
||||
bool canAddAircraft() const;
|
||||
|
||||
//! Callbacks from simulator
|
||||
//! @{
|
||||
void onRemoteAircraftAdded(const QString &callsign);
|
||||
void onRemoteAircraftAddingFailed(const QString &callsign);
|
||||
void updateRemoteAircraftFromSimulator(const QStringList &callsigns, const QDoubleList &latitudesDeg, const QDoubleList &longitudesDeg,
|
||||
const QDoubleList &elevationsMeters, const QDoubleList &verticalOffsetsMeters);
|
||||
//! @}
|
||||
|
||||
//! Dsiconnect from DBus
|
||||
void disconnectFromDBus();
|
||||
|
||||
DBusMode m_dbusMode;
|
||||
BlackMisc::CSettingReadOnly<BlackMisc::Simulation::Settings::TFGSwiftBusServer> m_fgswiftbusServerSetting { this };
|
||||
static constexpr qint64 TimeoutAdding = 10000;
|
||||
QDBusConnection m_dBusConnection { "default" };
|
||||
QDBusServiceWatcher *m_watcher { nullptr };
|
||||
CFGSwiftBusServiceProxy *m_serviceProxy { nullptr };
|
||||
CFGSwiftBusTrafficProxy *m_trafficProxy { nullptr };
|
||||
QTimer m_fastTimer;
|
||||
QTimer m_slowTimer;
|
||||
QTimer m_airportUpdater;
|
||||
QTimer m_pendingAddedTimer;
|
||||
BlackMisc::Aviation::CAirportList m_airportsInRange; //!< aiports in range of own aircraft
|
||||
BlackMisc::CData<BlackMisc::Simulation::Data::TModelSetCacheFG> m_modelSet { this }; //!< Flightgear model set
|
||||
BlackMisc::Simulation::CSimulatedAircraftList m_pendingToBeAddedAircraft; //!< aircraft to be added
|
||||
QHash<BlackMisc::Aviation::CCallsign, qint64> m_addingInProgressAircraft; //!< aircraft just adding
|
||||
BlackMisc::Simulation::CSimulatedAircraftList m_aircraftAddedFailed; //! aircraft for which adding failed
|
||||
CFlightgearMPAircraftObjects m_flightgearAircraftObjects; //!< Flightgear multiplayer aircraft
|
||||
FlightgearData m_flightgearData; //!< Flightgear data
|
||||
|
||||
// statistics
|
||||
qint64 m_statsAddMaxTimeMs = -1;
|
||||
qint64 m_statsAddCurrentTimeMs = -1;
|
||||
|
||||
//! Reset the Flightgear data
|
||||
void resetFlightgearData()
|
||||
{
|
||||
Q_OBJECT
|
||||
m_flightgearData = { "", "", 0, 0, 0, 0, 0, 0, 0, false, 122800, 122800, 122800, 122800, 2000, 0, false, false, false, false,
|
||||
false, false, 0, 0, {}, 0.0, 0.0, 0.0, 1.0, 1.0
|
||||
};
|
||||
|
||||
public:
|
||||
//! Constructor
|
||||
CSimulatorFlightgear(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
|
||||
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
|
||||
BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
|
||||
BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider,
|
||||
BlackMisc::Network::IClientProvider *clientProvider,
|
||||
QObject *parent = nullptr);
|
||||
}
|
||||
};
|
||||
|
||||
//! Dtor
|
||||
virtual ~CSimulatorFlightgear() override;
|
||||
//! Listener waits for fgswiftbus service to show up
|
||||
class CSimulatorFlightgearListener : public BlackCore::ISimulatorListener
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
//! \name ISimulator implementations
|
||||
//! @{
|
||||
virtual bool isTimeSynchronized() const override { return false; }
|
||||
virtual bool connectTo() override;
|
||||
virtual bool disconnectFrom() override;
|
||||
virtual bool updateOwnSimulatorCockpit(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator) override;
|
||||
virtual bool updateOwnSimulatorSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override;
|
||||
virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override;
|
||||
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override;
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return BlackMisc::PhysicalQuantities::CTime(0, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); }
|
||||
virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual BlackMisc::Aviation::CCallsignSet physicallyRenderedAircraft() const override;
|
||||
virtual void unload() override;
|
||||
virtual QString getStatisticsSimulatorSpecific() const override;
|
||||
virtual void resetAircraftStatistics() override;
|
||||
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override;
|
||||
virtual bool requestElevation(const BlackMisc::Geo::ICoordinateGeodetic &reference, const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
//! @}
|
||||
public:
|
||||
//! Constructor
|
||||
CSimulatorFlightgearListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info);
|
||||
|
||||
protected:
|
||||
//! \name ISimulator implementations
|
||||
//! @{
|
||||
virtual bool isConnected() const override;
|
||||
virtual bool physicallyAddRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &newRemoteAircraft) override;
|
||||
virtual bool physicallyRemoveRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual int physicallyRemoveAllRemoteAircraft() override;
|
||||
virtual void clearAllRemoteAircraftData() override;
|
||||
virtual bool isPaused() const override
|
||||
{
|
||||
return false;
|
||||
}
|
||||
//! @}
|
||||
protected:
|
||||
//! \copydoc BlackCore::ISimulatorListener::startImpl
|
||||
virtual void startImpl() override;
|
||||
|
||||
private slots:
|
||||
//! Unregister
|
||||
void onDBusServiceUnregistered();
|
||||
//! \copydoc BlackCore::ISimulatorListener::stopImpl
|
||||
virtual void stopImpl() override;
|
||||
|
||||
private:
|
||||
enum DBusMode
|
||||
{
|
||||
Session,
|
||||
P2P
|
||||
};
|
||||
//! \copydoc BlackCore::ISimulatorListener::checkImpl
|
||||
virtual void checkImpl() override;
|
||||
|
||||
using QDoubleList = QList<double>;
|
||||
private:
|
||||
void checkConnection();
|
||||
void checkConnectionViaSessionBus();
|
||||
void checkConnectionViaPeer(const QString &address);
|
||||
void checkConnectionCommon();
|
||||
|
||||
void setAirportsInRange(const QStringList &icaoCodes, const QStringList &names, const BlackMisc::CSequence<double> &lats, const BlackMisc::CSequence<double> &lons, const BlackMisc::CSequence<double> &alts);
|
||||
void emitOwnAircraftModelChanged(const QString &path, const QString &filename, const QString &livery, const QString &icao,
|
||||
const QString &modelString, const QString &name, const QString &description);
|
||||
void fastTimerTimeout();
|
||||
void slowTimerTimeout();
|
||||
void serviceRegistered(const QString &serviceName);
|
||||
void fgSwiftBusServerSettingChanged();
|
||||
|
||||
//! Update remote aircraft
|
||||
//! \remark this is where the interpolated data are set
|
||||
void updateRemoteAircraft();
|
||||
QTimer m_timer { this };
|
||||
QDBusConnection m_conn { "default" };
|
||||
BlackMisc::CSettingReadOnly<BlackMisc::Simulation::Settings::TFGSwiftBusServer> m_fgSswiftBusServerSetting { this, &CSimulatorFlightgearListener::fgSwiftBusServerSettingChanged };
|
||||
};
|
||||
|
||||
//! Request elevation and CG from Flightgear
|
||||
//! @{
|
||||
void requestRemoteAircraftDataFromFlightgear();
|
||||
void requestRemoteAircraftDataFromFlightgear(const BlackMisc::Aviation::CCallsignSet &callsigns);
|
||||
void triggerRequestRemoteAircraftDataFromFlightgear(const BlackMisc::Aviation::CCallsignSet &callsigns);
|
||||
//! @}
|
||||
//! Factory for creating CSimulatorFlightgear instance
|
||||
class CSimulatorFlightgearFactory : public QObject, public BlackCore::ISimulatorFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.swift-project.blackcore.simulatorinterface" FILE "simulatorflightgear.json")
|
||||
Q_INTERFACES(BlackCore::ISimulatorFactory)
|
||||
|
||||
//! Adding new aircraft
|
||||
//! @{
|
||||
void addNextPendingAircraft();
|
||||
void triggerAddNextPendingAircraft();
|
||||
//! @}
|
||||
public:
|
||||
//! \copydoc BlackCore::ISimulatorFactory::create
|
||||
virtual BlackCore::ISimulator *create(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
|
||||
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
|
||||
BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
|
||||
BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider,
|
||||
BlackMisc::Network::IClientProvider *clientProvider) override;
|
||||
|
||||
//! Detect timeouts on adding
|
||||
int detectTimeoutAdding();
|
||||
|
||||
//! Trigger a removal of an aircraft
|
||||
void triggerRemoveAircraft(const BlackMisc::Aviation::CCallsign &callsign, qint64 deferMs);
|
||||
|
||||
//! Timestamps of aircraft currently adding
|
||||
QPair<qint64, qint64> minMaxTimestampsAddInProgress() const;
|
||||
|
||||
//! Can the next aircraft be added?
|
||||
bool canAddAircraft() const;
|
||||
|
||||
//! Callbacks from simulator
|
||||
//! @{
|
||||
void onRemoteAircraftAdded(const QString &callsign);
|
||||
void onRemoteAircraftAddingFailed(const QString &callsign);
|
||||
void updateRemoteAircraftFromSimulator(const QStringList &callsigns, const QDoubleList &latitudesDeg, const QDoubleList &longitudesDeg,
|
||||
const QDoubleList &elevationsMeters, const QDoubleList &verticalOffsetsMeters);
|
||||
//! @}
|
||||
|
||||
//! Dsiconnect from DBus
|
||||
void disconnectFromDBus();
|
||||
|
||||
DBusMode m_dbusMode;
|
||||
BlackMisc::CSettingReadOnly<BlackMisc::Simulation::Settings::TFGSwiftBusServer> m_fgswiftbusServerSetting { this };
|
||||
static constexpr qint64 TimeoutAdding = 10000;
|
||||
QDBusConnection m_dBusConnection { "default" };
|
||||
QDBusServiceWatcher *m_watcher { nullptr };
|
||||
CFGSwiftBusServiceProxy *m_serviceProxy { nullptr };
|
||||
CFGSwiftBusTrafficProxy *m_trafficProxy { nullptr };
|
||||
QTimer m_fastTimer;
|
||||
QTimer m_slowTimer;
|
||||
QTimer m_airportUpdater;
|
||||
QTimer m_pendingAddedTimer;
|
||||
BlackMisc::Aviation::CAirportList m_airportsInRange; //!< aiports in range of own aircraft
|
||||
BlackMisc::CData<BlackMisc::Simulation::Data::TModelSetCacheFG> m_modelSet { this }; //!< Flightgear model set
|
||||
BlackMisc::Simulation::CSimulatedAircraftList m_pendingToBeAddedAircraft; //!< aircraft to be added
|
||||
QHash<BlackMisc::Aviation::CCallsign, qint64> m_addingInProgressAircraft; //!< aircraft just adding
|
||||
BlackMisc::Simulation::CSimulatedAircraftList m_aircraftAddedFailed; //! aircraft for which adding failed
|
||||
CFlightgearMPAircraftObjects m_flightgearAircraftObjects; //!< Flightgear multiplayer aircraft
|
||||
FlightgearData m_flightgearData; //!< Flightgear data
|
||||
|
||||
// statistics
|
||||
qint64 m_statsAddMaxTimeMs = -1;
|
||||
qint64 m_statsAddCurrentTimeMs = -1;
|
||||
|
||||
//! Reset the Flightgear data
|
||||
void resetFlightgearData()
|
||||
{
|
||||
m_flightgearData = { "", "", 0, 0, 0, 0, 0, 0, 0, false, 122800, 122800, 122800, 122800, 2000, 0, false, false, false, false,
|
||||
false, false, 0, 0, {}, 0.0, 0.0, 0.0, 1.0, 1.0
|
||||
};
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
//! Listener waits for fgswiftbus service to show up
|
||||
class CSimulatorFlightgearListener : public BlackCore::ISimulatorListener
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
//! Constructor
|
||||
CSimulatorFlightgearListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info);
|
||||
|
||||
protected:
|
||||
//! \copydoc BlackCore::ISimulatorListener::startImpl
|
||||
virtual void startImpl() override;
|
||||
|
||||
//! \copydoc BlackCore::ISimulatorListener::stopImpl
|
||||
virtual void stopImpl() override;
|
||||
|
||||
//! \copydoc BlackCore::ISimulatorListener::checkImpl
|
||||
virtual void checkImpl() override;
|
||||
|
||||
private:
|
||||
void checkConnection();
|
||||
void checkConnectionViaSessionBus();
|
||||
void checkConnectionViaPeer(const QString &address);
|
||||
void checkConnectionCommon();
|
||||
|
||||
void serviceRegistered(const QString &serviceName);
|
||||
void fgSwiftBusServerSettingChanged();
|
||||
|
||||
QTimer m_timer { this };
|
||||
QDBusConnection m_conn { "default" };
|
||||
BlackMisc::CSettingReadOnly<BlackMisc::Simulation::Settings::TFGSwiftBusServer> m_fgSswiftBusServerSetting { this, &CSimulatorFlightgearListener::fgSwiftBusServerSettingChanged };
|
||||
};
|
||||
|
||||
//! Factory for creating CSimulatorFlightgear instance
|
||||
class CSimulatorFlightgearFactory : public QObject, public BlackCore::ISimulatorFactory
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.swift-project.blackcore.simulatorinterface" FILE "simulatorflightgear.json")
|
||||
Q_INTERFACES(BlackCore::ISimulatorFactory)
|
||||
|
||||
public:
|
||||
//! \copydoc BlackCore::ISimulatorFactory::create
|
||||
virtual BlackCore::ISimulator *create(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
|
||||
BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
|
||||
BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
|
||||
BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider,
|
||||
BlackMisc::Network::IClientProvider *clientProvider) override;
|
||||
|
||||
//! \copydoc BlackCore::ISimulatorFactory::createListener
|
||||
virtual BlackCore::ISimulatorListener *createListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info) override { return new CSimulatorFlightgearListener(info); }
|
||||
};
|
||||
} // ns
|
||||
//! \copydoc BlackCore::ISimulatorFactory::createListener
|
||||
virtual BlackCore::ISimulatorListener *createListener(const BlackMisc::Simulation::CSimulatorPluginInfo &info) override { return new CSimulatorFlightgearListener(info); }
|
||||
};
|
||||
} // ns
|
||||
|
||||
#endif // guard
|
||||
|
||||
Reference in New Issue
Block a user