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:
Klaus Basan
2015-02-06 00:21:35 +01:00
parent caa5aab34c
commit f56a401505
11 changed files with 239 additions and 102 deletions

View File

@@ -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;

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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)

View File

@@ -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;

View File

@@ -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

View File

@@ -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;