mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-21 04:45:31 +08:00
refs #369, adjusted contexts
* using CSimulatedAircraft / CSimulatedAircraftList * new functions as getAircraftForCallsign or getInstalledModelsStartingWith * fixes such as override missing fixed * return values (success/failed) for member functions (e.g. setTimeSynchronization) * getMaxRenderedAircraft / setMaxRenderedAircraft
This commit is contained in:
@@ -72,7 +72,7 @@ namespace BlackCore
|
||||
void removedAircraft(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
|
||||
//! Read for model matching
|
||||
void readyForModelMatching(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft);
|
||||
void readyForModelMatching(const BlackMisc::Simulation::CSimulatedAircraft &renderedAircraft);
|
||||
|
||||
//! ATC station (online) list has been changed
|
||||
void changedAtcStationsOnline();
|
||||
@@ -92,8 +92,11 @@ namespace BlackCore
|
||||
//! Digest signal changedAircraftInRange()
|
||||
void changedAircraftInRangeDigest();
|
||||
|
||||
//! Aircraft situation update
|
||||
void changedAircraftSituation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation);
|
||||
//! Aircraft model was changed
|
||||
void changedRenderedAircraftModel(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const QString &originator);
|
||||
|
||||
//! Aircraft enabled / disabled
|
||||
void changedAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const QString &originator);
|
||||
|
||||
//! Connection status changed for online station
|
||||
void changedAtcStationOnlineConnectionStatus(const BlackMisc::Aviation::CAtcStation &atcStation, bool connected);
|
||||
@@ -133,6 +136,9 @@ namespace BlackCore
|
||||
//! Aircraft list
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const = 0;
|
||||
|
||||
//! Aircraft for given callsign
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraft getAircraftForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const = 0;
|
||||
|
||||
//! Get all users
|
||||
virtual BlackMisc::Network::CUserList getUsers() const = 0;
|
||||
|
||||
@@ -182,11 +188,7 @@ namespace BlackCore
|
||||
//! Command line was entered
|
||||
virtual bool parseCommandLine(const QString &commandLine) = 0;
|
||||
|
||||
/*!
|
||||
* Get METAR, if not available request it
|
||||
* \param airportIcaoCode such as EDDF, KLAX
|
||||
* \return
|
||||
*/
|
||||
//! Get METAR, if not available request it (code such as EDDF, KLAX)
|
||||
virtual BlackMisc::Aviation::CInformationMessage getMetar(const BlackMisc::Aviation::CAirportIcao &airportIcaoCode) = 0;
|
||||
|
||||
//! Use the selected COM1/2 frequencies, and get the corresponding voice room for it
|
||||
@@ -201,6 +203,12 @@ namespace BlackCore
|
||||
//! Request ATIS updates (for all stations)
|
||||
virtual void requestAtisUpdates() = 0;
|
||||
|
||||
//! Enable/disable rendering
|
||||
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering, const QString &originator) = 0;
|
||||
|
||||
//! Change model string
|
||||
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const QString &originator) = 0;
|
||||
|
||||
//! Create dummy ATC stations for performance tests etc.
|
||||
virtual void testCreateDummyOnlineAtcStations(int number) = 0;
|
||||
|
||||
|
||||
@@ -60,6 +60,14 @@ namespace BlackCore
|
||||
return BlackMisc::Simulation::CSimulatedAircraftList();
|
||||
}
|
||||
|
||||
//! \copydoc IContextNetwork::getAircraftForCallsign
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraft getAircraftForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override
|
||||
{
|
||||
Q_UNUSED(callsign);
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return BlackMisc::Simulation::CSimulatedAircraft();
|
||||
}
|
||||
|
||||
//! \copydoc IContextNetwork::connectToNetwork
|
||||
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, uint mode) override
|
||||
{
|
||||
@@ -194,18 +202,38 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
//! \copydoc IContextNetwork::getVatsimVoiceServers
|
||||
virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const
|
||||
virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const override
|
||||
{
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return BlackMisc::Network::CServerList();
|
||||
}
|
||||
|
||||
//! \copydoc IContextNetwork::getVatsimFsdServers
|
||||
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const
|
||||
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const override
|
||||
{
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return BlackMisc::Network::CServerList();
|
||||
}
|
||||
|
||||
//! \copydoc IContextNetwork::updateAircraftEnabled
|
||||
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering, const QString &originator) override
|
||||
{
|
||||
Q_UNUSED(callsign);
|
||||
Q_UNUSED(originator);
|
||||
Q_UNUSED(enabledForRedering);
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return false;
|
||||
}
|
||||
|
||||
//! \copydoc IContextNetwork::updateAircraftModel
|
||||
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const QString &originator) override
|
||||
{
|
||||
Q_UNUSED(callsign);
|
||||
Q_UNUSED(originator);
|
||||
Q_UNUSED(model);
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
} // namespace
|
||||
|
||||
|
||||
@@ -76,13 +76,8 @@ namespace BlackCore
|
||||
connect(this->m_airspace, &CAirspaceMonitor::changedAtcStationsBooked, this, &CContextNetwork::changedAtcStationsBooked);
|
||||
connect(this->m_airspace, &CAirspaceMonitor::changedAtcStationOnlineConnectionStatus, this, &CContextNetwork::changedAtcStationOnlineConnectionStatus);
|
||||
connect(this->m_airspace, &CAirspaceMonitor::changedAircraftInRange, this, &CContextNetwork::changedAircraftInRange);
|
||||
connect(this->m_airspace, &CAirspaceMonitor::changedAircraftSituation, this, &CContextNetwork::changedAircraftSituation);
|
||||
connect(this->m_airspace, &CAirspaceMonitor::removedAircraft, this, &CContextNetwork::removedAircraft);
|
||||
connect(this->m_airspace, &CAirspaceMonitor::readyForModelMatching, this, &CContextNetwork::readyForModelMatching);
|
||||
|
||||
//! \todo Should be set in runtime, but this would require airspace to be a context
|
||||
// connect(this->getIContextOwnAircraft(), &IContextOwnAircraft::changedAircraft, this->m_airspace, &CAirspaceMonitor::setOwnAircraft);
|
||||
// connect(this->getIContextSimulator(), &IContextSimulator::ownAircraftModelChanged, this->m_airspace, &CAirspaceMonitor::setOwnAircraftModel);
|
||||
}
|
||||
|
||||
CContextNetwork::~CContextNetwork()
|
||||
@@ -90,6 +85,30 @@ namespace BlackCore
|
||||
this->gracefulShutdown();
|
||||
}
|
||||
|
||||
const CSimulatedAircraftList &CContextNetwork::renderedAircraft() const
|
||||
{
|
||||
Q_ASSERT(this->m_airspace);
|
||||
return m_airspace->renderedAircraft();
|
||||
}
|
||||
|
||||
CSimulatedAircraftList &CContextNetwork::renderedAircraft()
|
||||
{
|
||||
Q_ASSERT(this->m_airspace);
|
||||
return m_airspace->renderedAircraft();
|
||||
}
|
||||
|
||||
CAircraftSituationList &CContextNetwork::renderedAircraftSituations()
|
||||
{
|
||||
Q_ASSERT(this->m_airspace);
|
||||
return m_airspace->renderedAircraftSituations();
|
||||
}
|
||||
|
||||
const CAircraftSituationList &CContextNetwork::renderedAircraftSituations() const
|
||||
{
|
||||
Q_ASSERT(this->m_airspace);
|
||||
return m_airspace->renderedAircraftSituations();
|
||||
}
|
||||
|
||||
void CContextNetwork::gracefulShutdown()
|
||||
{
|
||||
if (this->m_vatsimBookingReader) { this->m_vatsimBookingReader->quit(); }
|
||||
@@ -297,9 +316,22 @@ namespace BlackCore
|
||||
void CContextNetwork::readAtcBookingsFromSource() const
|
||||
{
|
||||
Q_ASSERT(this->m_vatsimBookingReader);
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
this->m_vatsimBookingReader->read();
|
||||
}
|
||||
|
||||
CSimulatedAircraftList CContextNetwork::getAircraftInRange() const
|
||||
{
|
||||
BlackMisc::CLogMessage(this, BlackMisc::CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
return this->m_airspace->renderedAircraft();
|
||||
}
|
||||
|
||||
CSimulatedAircraft CContextNetwork::getAircraftForCallsign(const CCallsign &callsign) const
|
||||
{
|
||||
BlackMisc::CLogMessage(this, BlackMisc::CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign;
|
||||
return this->m_airspace->renderedAircraft().findFirstByCallsign(callsign);
|
||||
}
|
||||
|
||||
void CContextNetwork::ps_receivedBookings(const CAtcStationList &)
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
@@ -310,7 +342,8 @@ namespace BlackCore
|
||||
void CContextNetwork::requestDataUpdates()
|
||||
{
|
||||
Q_ASSERT(this->m_network);
|
||||
if (!this->isConnected()) return;
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
if (!this->isConnected()) { return; }
|
||||
|
||||
this->requestAtisUpdates();
|
||||
this->m_airspace->requestDataUpdates();
|
||||
@@ -319,13 +352,37 @@ namespace BlackCore
|
||||
void CContextNetwork::requestAtisUpdates()
|
||||
{
|
||||
Q_ASSERT(this->m_network);
|
||||
if (!this->isConnected()) return;
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
if (!this->isConnected()) { return; }
|
||||
|
||||
this->m_airspace->requestAtisUpdates();
|
||||
}
|
||||
|
||||
bool CContextNetwork::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRedering, const QString &originator)
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign << enabledForRedering << originator;
|
||||
bool c = this->m_airspace->updateAircraftEnabled(callsign, enabledForRedering, originator);
|
||||
if (c)
|
||||
{
|
||||
emit this->changedAircraftEnabled(this->renderedAircraft().findFirstByCallsign(callsign), originator);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
bool CContextNetwork::updateAircraftModel(const CCallsign &callsign, const CAircraftModel &model, const QString &originator)
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign << model << originator;
|
||||
bool c = this->m_airspace->updateAircraftModel(callsign, model, originator);
|
||||
if (c)
|
||||
{
|
||||
emit this->changedRenderedAircraftModel(this->renderedAircraft().findFirstByCallsign(callsign), originator);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
void CContextNetwork::testCreateDummyOnlineAtcStations(int number)
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << number;
|
||||
this->m_airspace->testCreateDummyOnlineAtcStations(number);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "blackcore/context_network.h"
|
||||
#include "blackcore/context_settings.h"
|
||||
#include "blackcore/context_runtime.h"
|
||||
#include "blackmisc/simulation/simdirectaccessrenderedaircraft.h"
|
||||
#include "blackcore/dbus_server.h"
|
||||
#include "blackcore/network.h"
|
||||
#include "blackcore/airspace_monitor.h"
|
||||
@@ -26,8 +27,7 @@
|
||||
#include "blackmisc/avaircraftsituationlist.h"
|
||||
|
||||
#include <QMap>
|
||||
|
||||
class QTimer;
|
||||
#include <QTimer>
|
||||
|
||||
namespace BlackCore
|
||||
{
|
||||
@@ -35,7 +35,9 @@ namespace BlackCore
|
||||
class CVatsimDataFileReader;
|
||||
|
||||
//! Network context implementation
|
||||
class CContextNetwork : public IContextNetwork
|
||||
class CContextNetwork :
|
||||
public IContextNetwork,
|
||||
public BlackMisc::Simulation::IRenderedAircraftProvider
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_CLASSINFO("D-Bus Interface", BLACKCORE_CONTEXTNETWORK_INTERFACENAME)
|
||||
@@ -46,6 +48,18 @@ namespace BlackCore
|
||||
//! Destructor
|
||||
virtual ~CContextNetwork();
|
||||
|
||||
//! \copydoc IRenderedAircraftProviderReadOnly::renderedAircraft
|
||||
virtual const BlackMisc::Simulation::CSimulatedAircraftList &renderedAircraft() const override;
|
||||
|
||||
//! \copydoc IRenderedAircraftProvider::renderedAircraft
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList &renderedAircraft() override;
|
||||
|
||||
//! \copydoc IRenderedAircraftProviderReadOnly::renderedAircraftSituations
|
||||
virtual const BlackMisc::Aviation::CAircraftSituationList &renderedAircraftSituations() const override;
|
||||
|
||||
//! \copydoc IRenderedAircraftProviderReadOnly::renderedAircraftSituations
|
||||
virtual BlackMisc::Aviation::CAircraftSituationList &renderedAircraftSituations() override;
|
||||
|
||||
public slots:
|
||||
|
||||
//! \copydoc IContextNetwork::readAtcBookingsFromSource()
|
||||
@@ -66,11 +80,10 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
//! \copydoc IContextNetwork::getAircraftInRange()
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override
|
||||
{
|
||||
BlackMisc::CLogMessage(this, BlackMisc::CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
return this->m_airspace->renderedAircraft();
|
||||
}
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override;
|
||||
|
||||
//! \copydoc IContextNetwork::getAircraftForCallsign
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraft getAircraftForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
|
||||
//! \copydoc IContextNetwork::connectToNetwork()
|
||||
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, uint mode) override;
|
||||
@@ -136,6 +149,12 @@ namespace BlackCore
|
||||
//! \copydoc IContextNetwork::requestAtisUpdates
|
||||
virtual void requestAtisUpdates() override;
|
||||
|
||||
//! \copydoc IContextNetwork::updateAircraftEnabled
|
||||
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering, const QString &originator) override;
|
||||
|
||||
//! \copydoc IContextNetwork::updateAircraftModel
|
||||
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const QString &originator) override;
|
||||
|
||||
//! \copydoc IContextNetwork::testCreateDummyOnlineAtcStations
|
||||
virtual void testCreateDummyOnlineAtcStations(int number) override;
|
||||
|
||||
|
||||
@@ -72,6 +72,12 @@ namespace BlackCore
|
||||
s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(),
|
||||
"vatsimBookingsRead", this, SIGNAL(vatsimBookingsRead()));
|
||||
Q_ASSERT(s);
|
||||
s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(),
|
||||
"changedRenderedAircraftModel", this, SIGNAL(changedRenderedAircraftModel(BlackMisc::Simulation::CSimulatedAircraft,QString)));
|
||||
Q_ASSERT(s);
|
||||
s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(),
|
||||
"changedAircraftEnabled", this, SIGNAL(changedAircraftEnabled(BlackMisc::Simulation::CSimulatedAircraft,QString)));
|
||||
Q_ASSERT(s);
|
||||
Q_UNUSED(s);
|
||||
}
|
||||
|
||||
@@ -95,6 +101,11 @@ namespace BlackCore
|
||||
return this->m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatedAircraftList>(QLatin1Literal("getAircraftInRange"));
|
||||
}
|
||||
|
||||
Simulation::CSimulatedAircraft CContextNetworkProxy::getAircraftForCallsign(const CCallsign &callsign) const
|
||||
{
|
||||
return this->m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatedAircraft>(QLatin1Literal("getAircraftForCallsign"), callsign);
|
||||
}
|
||||
|
||||
BlackMisc::Network::CUserList CContextNetworkProxy::getUsers() const
|
||||
{
|
||||
return this->m_dBusInterface->callDBusRet<BlackMisc::Network::CUserList>(QLatin1Literal("getUsers"));
|
||||
@@ -150,6 +161,16 @@ namespace BlackCore
|
||||
this->m_dBusInterface->callDBus(QLatin1Literal("requestAtisUpdates"));
|
||||
}
|
||||
|
||||
bool CContextNetworkProxy::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRedering, const QString &originator)
|
||||
{
|
||||
return this->m_dBusInterface->callDBusRet<bool>(QLatin1Literal("updateAircraftEnabled"), callsign, enabledForRedering, originator);
|
||||
}
|
||||
|
||||
bool CContextNetworkProxy::updateAircraftModel(const CCallsign &callsign, const Simulation::CAircraftModel &model, const QString &originator)
|
||||
{
|
||||
return this->m_dBusInterface->callDBusRet<bool>(QLatin1Literal("updateAircraftModel"), callsign, model, originator);
|
||||
}
|
||||
|
||||
void CContextNetworkProxy::testCreateDummyOnlineAtcStations(int number)
|
||||
{
|
||||
this->m_dBusInterface->callDBus(QLatin1Literal("testCreateDummyOnlineAtcStations"), number);
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
namespace BlackCore
|
||||
{
|
||||
|
||||
//! \brief Network context proxy
|
||||
//! Network context proxy
|
||||
//! \ingroup dbus
|
||||
class CContextNetworkProxy : public IContextNetwork
|
||||
{
|
||||
@@ -65,6 +65,9 @@ namespace BlackCore
|
||||
//! \copydoc IContextNetwork::getAircraftInRange()
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override;
|
||||
|
||||
//! \copydoc IContextNetwork::getAircraftForCallsign
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraft getAircraftForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
|
||||
//! \copydoc IContextNetwork::connectToNetwork
|
||||
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, uint mode) override;
|
||||
|
||||
@@ -122,6 +125,12 @@ namespace BlackCore
|
||||
//! \copydoc IContextNetwork::requestAtisUpdates
|
||||
virtual void requestAtisUpdates() override;
|
||||
|
||||
//! \copydoc IContextNetwork::updateAircraftEnabled
|
||||
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering, const QString &originator) override;
|
||||
|
||||
//! \copydoc IContextNetwork::updateAircraftModel
|
||||
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const QString &originator) override;
|
||||
|
||||
//! \copydoc IContextNetwork::testCreateDummyOnlineAtcStations
|
||||
virtual void testCreateDummyOnlineAtcStations(int number) override;
|
||||
|
||||
|
||||
@@ -81,12 +81,9 @@ namespace BlackCore
|
||||
//! Installed aircraft models ready or changed
|
||||
void installedAircraftModelsChanged();
|
||||
|
||||
//! A single model has been matched for given Aircraft
|
||||
//! A single model has been matched for given aircraft
|
||||
void modelMatchingCompleted(BlackMisc::Simulation::CSimulatedAircraft aircraft);
|
||||
|
||||
//! A remote aircraft got changed
|
||||
void remoteAircraftChanged(BlackMisc::Simulation::CSimulatedAircraft aircraft);
|
||||
|
||||
//! Emitted when own aircraft model changes
|
||||
//! \todo move to own aircraft context?
|
||||
void ownAircraftModelChanged(BlackMisc::Simulation::CSimulatedAircraft aircraft);
|
||||
@@ -124,25 +121,24 @@ namespace BlackCore
|
||||
//! Installed models in simulator eco system
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getInstalledModels() const = 0;
|
||||
|
||||
//! Simulated other aircraft in range
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList getRemoteAircraft() const = 0;
|
||||
//! Model for model string
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getInstalledModelsStartingWith(const QString modelString) const = 0;
|
||||
|
||||
//! Changed remote aircraft (e.g. by disabling aircraft)
|
||||
//! \todo tbd No add/remove remote aircraft function as those are added implicitly by accessing airspace monitor
|
||||
virtual int changeRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &toChangeAircraft, const BlackMisc::CPropertyIndexVariantMap &changeValues) = 0;
|
||||
//! ICAO data for model string
|
||||
virtual BlackMisc::Aviation::CAircraftIcao getIcaoForModelString(const QString &modelString) const = 0;
|
||||
|
||||
//! Set time synchronization between simulator and user's computer time
|
||||
//! \remarks not all drivers implement this, e.g. if it is an intrinsic simulator feature
|
||||
virtual void setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) = 0;
|
||||
virtual bool setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) = 0;
|
||||
|
||||
//! Is time synchronization on?
|
||||
virtual bool isTimeSynchronized() const = 0;
|
||||
|
||||
//! Max. number of remote aircraft rendered
|
||||
virtual int getMaxRenderedRemoteAircraft() const = 0;
|
||||
virtual int getMaxRenderedAircraft() const = 0;
|
||||
|
||||
//! Max. number of remote aircraft rendered
|
||||
virtual void setMaxRenderedRemoteAircraft(int number) = 0;
|
||||
virtual void setMaxRenderedAircraft(int number) = 0;
|
||||
|
||||
//! Time synchronization offset
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const = 0;
|
||||
|
||||
@@ -116,33 +116,35 @@ namespace BlackCore
|
||||
return this->m_simulator->getInstalledModels();
|
||||
}
|
||||
|
||||
CSimulatedAircraftList CContextSimulator::getRemoteAircraft() const
|
||||
CAircraftModelList CContextSimulator::getInstalledModelsStartingWith(const QString modelString) const
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
// If no ISimulator object is available, return a dummy.
|
||||
if (!m_simulator) { return CSimulatedAircraftList(); }
|
||||
|
||||
return this->m_simulator->getRemoteAircraft();
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << modelString;
|
||||
if (!m_simulator) { return CAircraftModelList(); }
|
||||
return this->m_simulator->getInstalledModels().findModelsStartingWith(modelString);
|
||||
}
|
||||
|
||||
int CContextSimulator::changeRemoteAircraft(const CSimulatedAircraft &changedAircraft, const CPropertyIndexVariantMap &changedValues)
|
||||
CAircraftIcao CContextSimulator::getIcaoForModelString(const QString &modelString) const
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << modelString;
|
||||
if (!m_simulator) { return CAircraftIcao(); }
|
||||
return this->m_simulator->getIcaoForModelString(modelString);
|
||||
}
|
||||
|
||||
bool CContextSimulator::setTimeSynchronization(bool enable, CTime offset)
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
if (!m_simulator) { return 0; }
|
||||
int c = this->m_simulator->changeRemoteAircraft(changedAircraft, changedValues);
|
||||
if (c > 0)
|
||||
if (!m_simulator) { return false; }
|
||||
bool c = this->m_simulator->setTimeSynchronization(enable, offset);
|
||||
if (!c) { return false; }
|
||||
if (enable)
|
||||
{
|
||||
// really changed something
|
||||
emit this->remoteAircraftChanged(this->getRemoteAircraft().findFirstByCallsign(changedAircraft.getCallsign()));
|
||||
CLogMessage(this).info("Set time syncronization to %1") << offset.toQString();
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
void CContextSimulator::setTimeSynchronization(bool enable, CTime offset)
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
if (!m_simulator) return;
|
||||
this->m_simulator->setTimeSynchronization(enable, offset);
|
||||
else
|
||||
{
|
||||
CLogMessage(this).info("Disabled time syncronization %1");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CContextSimulator::isTimeSynchronized() const
|
||||
@@ -152,18 +154,17 @@ namespace BlackCore
|
||||
return this->m_simulator->isTimeSynchronized();
|
||||
}
|
||||
|
||||
int CContextSimulator::getMaxRenderedRemoteAircraft() const
|
||||
int CContextSimulator::getMaxRenderedAircraft() const
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
if (!m_simulator) return 0;
|
||||
return 13;
|
||||
}
|
||||
|
||||
void CContextSimulator::setMaxRenderedRemoteAircraft(int number)
|
||||
void CContextSimulator::setMaxRenderedAircraft(int number)
|
||||
{
|
||||
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
|
||||
//! \todo implement
|
||||
Q_UNUSED(number);
|
||||
if (m_simulator) { this->m_simulator->setMaxRenderedAircraft(number); }
|
||||
}
|
||||
|
||||
CTime CContextSimulator::getTimeSynchronizationOffset() const
|
||||
@@ -200,7 +201,6 @@ namespace BlackCore
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// Factory for driver
|
||||
ISimulatorFactory *factory = *factoryIterator;
|
||||
Q_ASSERT(factory);
|
||||
@@ -208,8 +208,10 @@ namespace BlackCore
|
||||
// We assume we run in the same process as the own aircraft context
|
||||
// Hence we pass in memory refernce to own aircraft object
|
||||
Q_ASSERT(this->getIContextOwnAircraft()->isUsingImplementingObject());
|
||||
IOwnAircraftProvider *ownAircraft = this->getRuntime()->getCContextOwnAircraft();
|
||||
ISimulator *newSimulator = factory->create(ownAircraft, this);
|
||||
Q_ASSERT(this->getIContextNetwork()->isUsingImplementingObject());
|
||||
IOwnAircraftProvider *ownAircraftProvider = this->getRuntime()->getCContextOwnAircraft();
|
||||
IRenderedAircraftProvider *renderedAircraftProvider = this->getRuntime()->getCContextNetwork();
|
||||
ISimulator *newSimulator = factory->create(ownAircraftProvider, renderedAircraftProvider, this);
|
||||
Q_ASSERT(newSimulator);
|
||||
|
||||
this->unloadSimulatorPlugin(); // old plugin unloaded
|
||||
@@ -233,16 +235,16 @@ namespace BlackCore
|
||||
// use readyForModelMatching instead of CAirspaceMonitor::addedAircraft, as it contains client information
|
||||
bool c = connect(networkContext, &IContextNetwork::readyForModelMatching, this, &CContextSimulator::ps_addRemoteAircraft);
|
||||
Q_ASSERT(c);
|
||||
c = connect(networkContext, &IContextNetwork::changedAircraftSituation, this, &CContextSimulator::ps_addAircraftSituation);
|
||||
Q_ASSERT(c);
|
||||
c = connect(networkContext, &IContextNetwork::removedAircraft, this, &CContextSimulator::ps_removeRemoteAircraft);
|
||||
Q_ASSERT(c);
|
||||
for (const auto &aircraft : networkContext->getAircraftInRange())
|
||||
c = connect(networkContext, &IContextNetwork::changedRenderedAircraftModel, this->m_simulator, &ISimulator::changeRenderedAircraftModel);
|
||||
Q_ASSERT(c);
|
||||
c = connect(networkContext, &IContextNetwork::changedAircraftEnabled, this->m_simulator, &ISimulator::changeAircraftEnabled);
|
||||
Q_ASSERT(c);
|
||||
|
||||
for (const CSimulatedAircraft &simAircraft : networkContext->getAircraftInRange())
|
||||
{
|
||||
Q_ASSERT(!aircraft.getCallsign().isEmpty());
|
||||
CClient client = networkContext->getOtherClients().findFirstByCallsign(aircraft.getCallsign());
|
||||
CSimulatedAircraft simAircraft(aircraft);
|
||||
simAircraft.setClient(client);
|
||||
Q_ASSERT(!simAircraft.getCallsign().isEmpty());
|
||||
m_simulator->addRemoteAircraft(simAircraft);
|
||||
}
|
||||
|
||||
@@ -321,7 +323,7 @@ namespace BlackCore
|
||||
{
|
||||
Q_ASSERT(this->m_simulator);
|
||||
if (!this->m_simulator) return;
|
||||
this->m_simulator->removeRemoteAircraft(callsign);
|
||||
this->m_simulator->removeRenderedAircraft(callsign);
|
||||
}
|
||||
|
||||
void CContextSimulator::ps_onConnectionStatusChanged(ISimulator::ConnectionStatus status)
|
||||
|
||||
@@ -74,23 +74,23 @@ namespace BlackCore
|
||||
//! \copydoc IContextSimulator::getInstalledModels
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getInstalledModels() const override;
|
||||
|
||||
//! \copydoc IContextSimulator::getRemoteAircraft
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList getRemoteAircraft() const override;
|
||||
//! \copydoc IContextSimulator::getInstalledModelsStartingWith
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getInstalledModelsStartingWith(const QString modelString) const override;
|
||||
|
||||
//! \copydoc IContextSimulator::changeRemoteAircraft
|
||||
virtual int changeRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &changedAircraft, const BlackMisc::CPropertyIndexVariantMap &changedValues) override;
|
||||
//! \copydoc IContextSimulator::getIcaoForModelString
|
||||
virtual BlackMisc::Aviation::CAircraftIcao getIcaoForModelString(const QString &modelString) const override;
|
||||
|
||||
//! \copydoc IContextSimulator::setTimeSynchronization
|
||||
virtual void setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) override;
|
||||
virtual bool setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) override;
|
||||
|
||||
//! \copydoc IContextSimulator::isTimeSynchronized
|
||||
virtual bool isTimeSynchronized() const override;
|
||||
|
||||
//! \copydoc IContextSimulator::getMaxRenderedRemoteAircraft
|
||||
virtual int getMaxRenderedRemoteAircraft() const override;
|
||||
//! \copydoc IContextSimulator::getMaxRenderedAircraft
|
||||
virtual int getMaxRenderedAircraft() const override;
|
||||
|
||||
//! \copydoc IContextSimulator::setMaxRenderedRemoteAircraft
|
||||
virtual void setMaxRenderedRemoteAircraft(int number) override;
|
||||
//! \copydoc IContextSimulator::setMaxRenderedAircraft
|
||||
virtual void setMaxRenderedAircraft(int number) override;
|
||||
|
||||
//! \copydoc IContextSimulator::getTimeSynchronizationOffset
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
|
||||
|
||||
@@ -51,9 +51,6 @@ namespace BlackCore
|
||||
s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
|
||||
"modelMatchingCompleted", this, SIGNAL(modelMatchingCompleted(BlackMisc::Simulation::CSimulatedAircraft)));
|
||||
Q_ASSERT(s);
|
||||
s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
|
||||
"remoteAircraftChanged", this, SIGNAL(remoteAircraftChanged(BlackMisc::Simulation::CSimulatedAircraft)));
|
||||
Q_ASSERT(s);
|
||||
Q_UNUSED(s);
|
||||
}
|
||||
|
||||
@@ -97,14 +94,14 @@ namespace BlackCore
|
||||
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CAircraftModelList>(QLatin1Literal("getInstalledModels"));
|
||||
}
|
||||
|
||||
CSimulatedAircraftList CContextSimulatorProxy::getRemoteAircraft() const
|
||||
CAircraftModelList CContextSimulatorProxy::getInstalledModelsStartingWith(const QString modelString) const
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatedAircraftList>(QLatin1Literal("getRemoteAircraft"));
|
||||
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CAircraftModelList>(QLatin1Literal("getInstalledModelsStartingWith"));
|
||||
}
|
||||
|
||||
int CContextSimulatorProxy::changeRemoteAircraft(const CSimulatedAircraft &changedAircraft, const CPropertyIndexVariantMap &changedValues)
|
||||
CAircraftIcao CContextSimulatorProxy::getIcaoForModelString(const QString &modelString) const
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<int>(QLatin1Literal("changeRemoteAircraft"), changedAircraft, changedValues);
|
||||
return m_dBusInterface->callDBusRet<CAircraftIcao>(QLatin1Literal("getIcaoForModelString"), modelString);
|
||||
}
|
||||
|
||||
BlackSim::CSimulatorInfo CContextSimulatorProxy::getSimulatorInfo() const
|
||||
@@ -112,9 +109,9 @@ namespace BlackCore
|
||||
return m_dBusInterface->callDBusRet<BlackSim::CSimulatorInfo>(QLatin1Literal("getSimulatorInfo"));
|
||||
}
|
||||
|
||||
void CContextSimulatorProxy::setTimeSynchronization(bool enable, CTime offset)
|
||||
bool CContextSimulatorProxy::setTimeSynchronization(bool enable, CTime offset)
|
||||
{
|
||||
m_dBusInterface->callDBus(QLatin1Literal("setTimeSynchronization"), enable, offset);
|
||||
return m_dBusInterface->callDBusRet<bool>(QLatin1Literal("setTimeSynchronization"), enable, offset);
|
||||
}
|
||||
|
||||
bool CContextSimulatorProxy::isTimeSynchronized() const
|
||||
@@ -122,14 +119,14 @@ namespace BlackCore
|
||||
return m_dBusInterface->callDBusRet<bool>(QLatin1Literal("isTimeSynchronized"));
|
||||
}
|
||||
|
||||
void CContextSimulatorProxy::setMaxRenderedRemoteAircraft(int number)
|
||||
void CContextSimulatorProxy::setMaxRenderedAircraft(int number)
|
||||
{
|
||||
m_dBusInterface->callDBus(QLatin1Literal("setMaxRenderedRemoteAircraft"), number);
|
||||
}
|
||||
|
||||
int CContextSimulatorProxy::getMaxRenderedRemoteAircraft() const
|
||||
int CContextSimulatorProxy::getMaxRenderedAircraft() const
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<int>(QLatin1Literal("getMaxRenderedRemoteAircraft"));
|
||||
return m_dBusInterface->callDBusRet<int>(QLatin1Literal("getMaxRenderedAircraft"));
|
||||
}
|
||||
|
||||
CTime CContextSimulatorProxy::getTimeSynchronizationOffset() const
|
||||
|
||||
@@ -74,26 +74,26 @@ namespace BlackCore
|
||||
//! \copydoc IContextSimulator::getInstalledModels()
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getInstalledModels() const override;
|
||||
|
||||
//! \copydoc IContextSimulator::getRemoteAircraft
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList getRemoteAircraft() const override;
|
||||
//! \copydoc IContextSimulator::getInstalledModelsStartingWith
|
||||
virtual BlackMisc::Simulation::CAircraftModelList getInstalledModelsStartingWith(const QString modelString) const override;
|
||||
|
||||
//! \copydoc IContextSimulator::changeRemoteAircraft
|
||||
virtual int changeRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &changedAircraft, const BlackMisc::CPropertyIndexVariantMap &changedValues) override;
|
||||
//! \copydoc IContextSimulator::getIcaoForModelString
|
||||
virtual BlackMisc::Aviation::CAircraftIcao getIcaoForModelString(const QString &modelString) const override;
|
||||
|
||||
//! \copydoc IContextSimulator::getSimulatorInfo
|
||||
virtual BlackSim::CSimulatorInfo getSimulatorInfo() const override;
|
||||
|
||||
//! \copydoc IContextSimulator::setTimeSynchronization
|
||||
virtual void setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) override;
|
||||
virtual bool setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) override;
|
||||
|
||||
//! \copydoc IContextSimulator::isTimeSynchronized
|
||||
virtual bool isTimeSynchronized() const override;
|
||||
|
||||
//! \copydoc IContextSimulator::getMaxRenderedRemoteAircraft
|
||||
virtual int getMaxRenderedRemoteAircraft() const override;
|
||||
//! \copydoc IContextSimulator::getMaxRenderedAircraft
|
||||
virtual int getMaxRenderedAircraft() const override;
|
||||
|
||||
//! \copydoc IContextSimulator::setMaxRenderedRemoteAircraft
|
||||
virtual void setMaxRenderedRemoteAircraft(int number) override;
|
||||
virtual void setMaxRenderedAircraft(int number) override;
|
||||
|
||||
//! \copydoc IContextSimulator::getTimeSynchronizationOffset
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
|
||||
|
||||
Reference in New Issue
Block a user