X-Plane plugin cleanup

* Remove XBUS_SERVICE_SERVICENAME macro in favour of inline function with QStringLiteral
* Assert calls that require connection when not connected
This commit is contained in:
Michał Garapich
2015-03-11 17:12:46 +01:00
committed by Roland Winklmeier
parent 924e094a38
commit ad8f84e344

View File

@@ -14,6 +14,7 @@
#include "blackmisc/coordinategeodetic.h" #include "blackmisc/coordinategeodetic.h"
#include <QDBusServiceWatcher> #include <QDBusServiceWatcher>
#include <QTimer> #include <QTimer>
#include <QString>
using namespace BlackMisc; using namespace BlackMisc;
using namespace BlackMisc::Aviation; using namespace BlackMisc::Aviation;
@@ -28,12 +29,16 @@ namespace BlackSimPlugin
namespace XPlane namespace XPlane
{ {
static inline QString xbusServiceName() {
return QStringLiteral("org.swift.xbus");
}
CSimulatorXPlane::CSimulatorXPlane(IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, QObject *parent) : CSimulatorXPlane::CSimulatorXPlane(IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *remoteAircraftProvider, QObject *parent) :
CSimulatorCommon(CSimulatorInfo::XP(), ownAircraftProvider, remoteAircraftProvider, parent) CSimulatorCommon(CSimulatorInfo::XP(), ownAircraftProvider, remoteAircraftProvider, parent)
{ {
m_watcher = new QDBusServiceWatcher(this); m_watcher = new QDBusServiceWatcher(this);
m_watcher->setWatchMode(QDBusServiceWatcher::WatchForUnregistration); m_watcher->setWatchMode(QDBusServiceWatcher::WatchForUnregistration);
m_watcher->addWatchedService("net.vatsim.xbus"); m_watcher->addWatchedService(xbusServiceName());
connect(m_watcher, &QDBusServiceWatcher::serviceUnregistered, this, &CSimulatorXPlane::ps_serviceUnregistered); connect(m_watcher, &QDBusServiceWatcher::serviceUnregistered, this, &CSimulatorXPlane::ps_serviceUnregistered);
m_fastTimer = new QTimer(this); m_fastTimer = new QTimer(this);
@@ -155,6 +160,7 @@ namespace BlackSimPlugin
bool CSimulatorXPlane::connectTo() bool CSimulatorXPlane::connectTo()
{ {
if (isConnected()) { if (isConnected()) {
qWarning("X-Plane already connected");
return true; return true;
} }
@@ -226,21 +232,26 @@ namespace BlackSimPlugin
void CSimulatorXPlane::displayStatusMessage(const BlackMisc::CStatusMessage &message) const void CSimulatorXPlane::displayStatusMessage(const BlackMisc::CStatusMessage &message) const
{ {
if (! isConnected()) { return; } Q_ASSERT(isConnected());
// TODO // TODO XPLMSpeakString()?
// http://www.xsquawkbox.net/xpsdk/mediawiki/XPLMSpeakString
Q_UNUSED(message); Q_UNUSED(message);
} }
void CSimulatorXPlane::displayTextMessage(const BlackMisc::Network::CTextMessage &message) const void CSimulatorXPlane::displayTextMessage(const BlackMisc::Network::CTextMessage &message) const
{ {
if (! isConnected()) { return; } Q_ASSERT(isConnected());
// TODO XPLMSpeakString()?
// http://www.xsquawkbox.net/xpsdk/mediawiki/XPLMSpeakString
Q_UNUSED(message); Q_UNUSED(message);
} }
BlackMisc::Simulation::CAircraftModelList CSimulatorXPlane::getInstalledModels() const BlackMisc::Simulation::CAircraftModelList CSimulatorXPlane::getInstalledModels() const
{ {
Q_ASSERT(isConnected());
//! \todo XP driver, function not available //! \todo XP driver, function not available
CLogMessage(this).error("Function not avialable"); CLogMessage(this).error("Function not avialable");
return {}; return {};
} }
@@ -302,8 +313,8 @@ namespace BlackSimPlugin
bool CSimulatorXPlane::updateOwnSimulatorCockpit(const BlackMisc::Aviation::CAircraft &aircraft, const QString &originator) bool CSimulatorXPlane::updateOwnSimulatorCockpit(const BlackMisc::Aviation::CAircraft &aircraft, const QString &originator)
{ {
Q_ASSERT(isConnected());
if (originator == this->simulatorOriginator()) { return false; } if (originator == this->simulatorOriginator()) { return false; }
if (!isConnected()) { return false; }
auto com1 = Aviation::CComSystem::getCom1System({ m_xplaneData.com1Active, CFrequencyUnit::kHz() }, { m_xplaneData.com1Standby, CFrequencyUnit::kHz() }); auto com1 = Aviation::CComSystem::getCom1System({ m_xplaneData.com1Active, CFrequencyUnit::kHz() }, { m_xplaneData.com1Standby, CFrequencyUnit::kHz() });
auto com2 = Aviation::CComSystem::getCom2System({ m_xplaneData.com2Active, CFrequencyUnit::kHz() }, { m_xplaneData.com2Standby, CFrequencyUnit::kHz() }); auto com2 = Aviation::CComSystem::getCom2System({ m_xplaneData.com2Active, CFrequencyUnit::kHz() }, { m_xplaneData.com2Standby, CFrequencyUnit::kHz() });
auto xpdr = Aviation::CTransponder::getStandardTransponder(m_xplaneData.xpdrCode, xpdrMode(m_xplaneData.xpdrMode, m_xplaneData.xpdrIdent)); auto xpdr = Aviation::CTransponder::getStandardTransponder(m_xplaneData.xpdrCode, xpdrMode(m_xplaneData.xpdrMode, m_xplaneData.xpdrIdent));
@@ -330,7 +341,7 @@ namespace BlackSimPlugin
bool CSimulatorXPlane::addRemoteAircraft(const CSimulatedAircraft &newRemoteAircraft) bool CSimulatorXPlane::addRemoteAircraft(const CSimulatedAircraft &newRemoteAircraft)
{ {
if (!isConnected()) { return false; } Q_ASSERT(isConnected());
//! \todo XPlane driver check if already exists, how? //! \todo XPlane driver check if already exists, how?
//! \todo XPlane driver set correct return value //! \todo XPlane driver set correct return value
// KB: from what I can see here all data are available // KB: from what I can see here all data are available
@@ -344,7 +355,7 @@ namespace BlackSimPlugin
void CSimulatorXPlane::ps_addAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situ) void CSimulatorXPlane::ps_addAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situ)
{ {
if (! isConnected()) { return; } Q_ASSERT(isConnected());
using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::PhysicalQuantities;
m_traffic->setPlanePosition(situ.getCallsign().asString(), m_traffic->setPlanePosition(situ.getCallsign().asString(),
situ.latitude().value(CAngleUnit::deg()), situ.latitude().value(CAngleUnit::deg()),
@@ -357,7 +368,7 @@ namespace BlackSimPlugin
void CSimulatorXPlane::ps_addAircraftParts(const BlackMisc::Aviation::CAircraftParts &parts) void CSimulatorXPlane::ps_addAircraftParts(const BlackMisc::Aviation::CAircraftParts &parts)
{ {
if (! isConnected()) { return; } Q_ASSERT(isConnected());
m_traffic->setPlaneSurfaces(parts.getCallsign().asString(), true, 0, 0, 0, 0, 0, 0, 0, 0, 0, true, true, true, true, 0); // TODO landing gear, lights, control surfaces m_traffic->setPlaneSurfaces(parts.getCallsign().asString(), true, 0, 0, 0, 0, 0, 0, 0, 0, 0, true, true, true, true, 0); // TODO landing gear, lights, control surfaces
m_traffic->setPlaneTransponder(parts.getCallsign().asString(), 2000, true, false); // TODO transponder m_traffic->setPlaneTransponder(parts.getCallsign().asString(), 2000, true, false); // TODO transponder
} }
@@ -370,7 +381,7 @@ namespace BlackSimPlugin
bool CSimulatorXPlane::removeRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign) bool CSimulatorXPlane::removeRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign)
{ {
if (! isConnected()) { return false; } Q_ASSERT(isConnected());
m_traffic->removePlane(callsign.asString()); m_traffic->removePlane(callsign.asString());
remoteAircraft().setRendered(callsign, false); remoteAircraft().setRendered(callsign, false);
CLogMessage(this).info("XP: Removed aircraft %1") << callsign.toQString(); CLogMessage(this).info("XP: Removed aircraft %1") << callsign.toQString();
@@ -425,8 +436,7 @@ namespace BlackSimPlugin
return; return;
m_conn = QDBusConnection::sessionBus(); // TODO make this configurable m_conn = QDBusConnection::sessionBus(); // TODO make this configurable
m_watcher = new QDBusServiceWatcher("net.vatsim.xbus", m_conn, QDBusServiceWatcher::WatchForRegistration, this); m_watcher = new QDBusServiceWatcher(xbusServiceName(), m_conn, QDBusServiceWatcher::WatchForRegistration, this);
connect(m_watcher, &QDBusServiceWatcher::serviceRegistered, this, &CSimulatorXPlaneListener::ps_serviceRegistered); connect(m_watcher, &QDBusServiceWatcher::serviceRegistered, this, &CSimulatorXPlaneListener::ps_serviceRegistered);
} }
@@ -440,7 +450,7 @@ namespace BlackSimPlugin
void CSimulatorXPlaneListener::ps_serviceRegistered(const QString &serviceName) void CSimulatorXPlaneListener::ps_serviceRegistered(const QString &serviceName)
{ {
if (serviceName == "net.vatsim.xbus") if (serviceName == xbusServiceName())
emit simulatorStarted(m_simulatorInfo); emit simulatorStarted(m_simulatorInfo);
} }