Ref T422, context/provider functions for COM, XPDR values

This commit is contained in:
Klaus Basan
2018-11-04 17:32:08 +01:00
parent 67dcd11e73
commit 084ade9e2b
9 changed files with 178 additions and 49 deletions

View File

@@ -118,6 +118,12 @@ namespace BlackCore
//! Get own aircraft
virtual BlackMisc::Simulation::CSimulatedAircraft getOwnAircraft() const = 0;
//! Get own COM system
virtual BlackMisc::Aviation::CComSystem getOwnComSystem(BlackMisc::Aviation::CComSystem::ComUnit unit) const = 0;
//! Get own transponder
virtual BlackMisc::Aviation::CTransponder getOwnTransponder() const = 0;
//! Get own aircraft
virtual BlackMisc::Aviation::CAircraftSituation getOwnAircraftSituation() const = 0;
@@ -128,6 +134,9 @@ namespace BlackCore
//! Update own cockpit
virtual bool updateCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder, const BlackMisc::CIdentifier &originator) = 0;
//! Update own transponder mode
virtual bool updateTransponderMode(const BlackMisc::Aviation::CTransponder::TransponderMode &transponderMode, const BlackMisc::CIdentifier &originator) = 0;
//! Toggle XPDR mode
virtual void toggleTransponderMode() = 0;

View File

@@ -37,6 +37,21 @@ namespace BlackCore
return BlackMisc::Simulation::CSimulatedAircraft();
}
//! \copydoc IContextOwnAircraft::getOwnComSystem
virtual BlackMisc::Aviation::CComSystem getOwnComSystem(BlackMisc::Aviation::CComSystem::ComUnit unit) const override
{
Q_UNUSED((unit);)
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Aviation::CComSystem();
}
//! \copydoc IContextOwnAircraft::getOwnTransponder()
virtual BlackMisc::Aviation::CTransponder getOwnTransponder() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Aviation::CTransponder();
}
//! \copydoc IContextOwnAircraft::getOwnAircraftSituation()
virtual BlackMisc::Aviation::CAircraftSituation getOwnAircraftSituation() const override
{
@@ -65,6 +80,15 @@ namespace BlackCore
return false;
}
//! \copydoc IContextOwnAircraft::updateTransponderMode
virtual bool updateTransponderMode(const BlackMisc::Aviation::CTransponder::TransponderMode &transponderMode, const BlackMisc::CIdentifier &originator) override
{
Q_UNUSED(transponderMode);
Q_UNUSED(originator);
logEmptyContextWarning(Q_FUNC_INFO);
return false;
}
//! \copydoc IContextOwnAircraft::updateActiveComFrequency
virtual bool updateActiveComFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ComUnit comUnit, const BlackMisc::CIdentifier &originator) override
{

View File

@@ -96,6 +96,20 @@ namespace BlackCore
return m_ownAircraft;
}
CComSystem CContextOwnAircraft::getOwnComSystem(CComSystem::ComUnit unit) const
{
if (m_debugEnabled) {CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
QReadLocker l(&m_lockAircraft);
return m_ownAircraft.getComSystem(unit);
}
CTransponder CContextOwnAircraft::getOwnTransponder() const
{
if (m_debugEnabled) {CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
QReadLocker l(&m_lockAircraft);
return m_ownAircraft.getTransponder();
}
CCoordinateGeodetic CContextOwnAircraft::getOwnAircraftPosition() const
{
QReadLocker l(&m_lockAircraft);
@@ -300,6 +314,21 @@ namespace BlackCore
return changed;
}
bool CContextOwnAircraft::updateTransponderMode(const CTransponder::TransponderMode &transponderMode, const CIdentifier &originator)
{
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << transponderMode; }
bool changed;
{
QWriteLocker l(&m_lockAircraft);
changed = m_ownAircraft.setTransponderMode(transponderMode);
}
if (changed)
{
emit this->changedAircraftCockpit(m_ownAircraft, originator);
}
return changed;
}
bool CContextOwnAircraft::updateActiveComFrequency(const CFrequency &frequency, CComSystem::ComUnit unit, const CIdentifier &originator)
{
if (unit != CComSystem::Com1 && unit != CComSystem::Com2) { return false; }
@@ -351,17 +380,7 @@ namespace BlackCore
bool CContextOwnAircraft::setTransponderMode(CTransponder::TransponderMode mode)
{
CTransponder xpdr;
CComSystem com1;
CComSystem com2;
{
QReadLocker l(&m_lockAircraft);
com1 = m_ownAircraft.getCom1System();
com2 = m_ownAircraft.getCom2System();
xpdr = m_ownAircraft.getTransponder();
}
xpdr.setTransponderMode(mode);
return this->updateCockpit(com1, com2, xpdr, this->identifier());
return this->updateTransponderMode(mode, this->identifier());
}
bool CContextOwnAircraft::updateOwnCallsign(const CCallsign &callsign)
@@ -435,6 +454,19 @@ namespace BlackCore
}
}
void CContextOwnAircraft::actionToggleTransponder(bool keydown)
{
if (!keydown) { return; }
this->toggleTransponderMode();
}
void CContextOwnAircraft::actionIdent(bool keydown)
{
if (this->getOwnTransponder().isInStandby()) { return; }
const CTransponder::TransponderMode m = keydown ? CTransponder::StateIdent : CTransponder::ModeC;
this->updateTransponderMode(m, this->identifier());
}
void CContextOwnAircraft::allSwiftWebDataRead()
{
// we should already have received a reverse lookup model

View File

@@ -16,6 +16,7 @@
#include "blackcore/context/contextownaircraft.h"
#include "blackcore/corefacadeconfig.h"
#include "blackcore/vatsim/vatsimsettings.h"
#include "blackcore/actionbind.h"
#include "blackmisc/network/settings/serversettings.h"
#include "blackmisc/network/user.h"
#include "blackmisc/simulation/aircraftmodel.h"
@@ -30,6 +31,7 @@
#include "blackmisc/geo/coordinategeodetic.h"
#include "blackmisc/pq/frequency.h"
#include "blackmisc/pq/length.h"
#include "blackmisc/icons.h"
#include "blackmisc/settingscache.h"
#include "blackmisc/identifiable.h"
#include "blackmisc/identifier.h"
@@ -114,6 +116,14 @@ namespace BlackCore
//! \ingroup ownaircraftprovider
virtual BlackMisc::Simulation::CSimulatedAircraft getOwnAircraft() const override;
//! \copydoc IContextOwnAircraft::getOwnComSystem
//! \ingroup ownaircraftprovider
virtual BlackMisc::Aviation::CComSystem getOwnComSystem(BlackMisc::Aviation::CComSystem::ComUnit unit) const override;
//! \copydoc IContextOwnAircraft::getOwnTransponder()
//! \ingroup ownaircraftprovider
virtual BlackMisc::Aviation::CTransponder getOwnTransponder() const override;
//! \copydoc IContextOwnAircraft::getOwnAircraftSituation()
//! \ingroup ownaircraftprovider
virtual BlackMisc::Aviation::CAircraftSituation getOwnAircraftSituation() const override;
@@ -132,6 +142,9 @@ namespace BlackCore
//! \copydoc IContextOwnAircraft::updateCockpit
virtual bool updateCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder, const BlackMisc::CIdentifier &originator) override;
//! \copydoc IContextOwnAircraft::updateTransponderMode
virtual bool updateTransponderMode(const BlackMisc::Aviation::CTransponder::TransponderMode &transponderMode, const BlackMisc::CIdentifier &originator) override;
//! \copydoc IContextOwnAircraft::updateSelcal
virtual bool updateSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override;
@@ -194,6 +207,9 @@ namespace BlackCore
QString m_voiceRoom2UrlOverride; //!< overridden voice room url
mutable QReadWriteLock m_lockAircraft; //!< lock aircraft
CActionBind m_actionToggleXpdr { "/Own aircraft/Toggle XPDR state", BlackMisc::CIcons::radio16(), this, &CContextOwnAircraft::actionToggleTransponder };
CActionBind m_actionIdent { "/Own aircraft/XPDR ident", BlackMisc::CIcons::radio16(), this, &CContextOwnAircraft::actionIdent };
static constexpr qint64 MinHistoryDeltaMs = 1000;
static constexpr int MaxHistoryElements = 20;
QTimer m_historyTimer; //!< history timer
@@ -214,6 +230,11 @@ namespace BlackCore
//! \ingroup crosscontextfunction
void xCtxChangedSimulatorStatus(int status);
//! Actions @{
void actionToggleTransponder(bool keydown);
void actionIdent(bool keydown);
//! @}
//! Web data loaded
void allSwiftWebDataRead();

View File

@@ -28,7 +28,7 @@ namespace BlackCore
{
CContextOwnAircraftProxy::CContextOwnAircraftProxy(const QString &serviceName, QDBusConnection &connection, CCoreFacadeConfig::ContextMode mode, CCoreFacade *runtime) : IContextOwnAircraft(mode, runtime), m_dBusInterface(nullptr)
{
this->m_dBusInterface = new BlackMisc::CGenericDBusInterface(
m_dBusInterface = new BlackMisc::CGenericDBusInterface(
serviceName, IContextOwnAircraft::ObjectPath(), IContextOwnAircraft::InterfaceName(),
connection, this);
this->relaySignals(serviceName, connection);
@@ -78,77 +78,92 @@ namespace BlackCore
BlackMisc::Simulation::CSimulatedAircraft CContextOwnAircraftProxy::getOwnAircraft() const
{
return this->m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatedAircraft>(QLatin1String("getOwnAircraft"));
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatedAircraft>(QLatin1String("getOwnAircraft"));
}
CComSystem CContextOwnAircraftProxy::getOwnComSystem(CComSystem::ComUnit unit) const
{
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CComSystem>(QLatin1String("getOwnComSystem"), unit);
}
CTransponder CContextOwnAircraftProxy::getOwnTransponder() const
{
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CTransponder>(QLatin1String("getOwnTransponder"));
}
CAircraftSituation CContextOwnAircraftProxy::getOwnAircraftSituation() const
{
return this->m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAircraftSituation>(QLatin1String("getOwnAircraftSituation"));
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAircraftSituation>(QLatin1String("getOwnAircraftSituation"));
}
bool CContextOwnAircraftProxy::updateCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder, const CIdentifier &originator)
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1String("updateCockpit"), com1, com2, transponder, originator);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateCockpit"), com1, com2, transponder, originator);
}
bool CContextOwnAircraftProxy::updateTransponderMode(const CTransponder::TransponderMode &transponderMode, const CIdentifier &originator)
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateCockpit"), transponderMode, originator);
}
bool CContextOwnAircraftProxy::updateActiveComFrequency(const PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ComUnit comUnit, const CIdentifier &originator)
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1String("updateActiveComFrequency"), frequency, comUnit, originator);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateActiveComFrequency"), frequency, comUnit, originator);
}
bool CContextOwnAircraftProxy::updateOwnAircraftPilot(const BlackMisc::Network::CUser &pilot)
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnAircraftPilot"), pilot);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnAircraftPilot"), pilot);
}
bool CContextOwnAircraftProxy::updateSelcal(const CSelcal &selcal, const CIdentifier &originator)
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1String("updateSelcal"), selcal, originator);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateSelcal"), selcal, originator);
}
bool CContextOwnAircraftProxy::updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude, const CAltitude &pressureAltitude)
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnPosition"), position, altitude, pressureAltitude);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnPosition"), position, altitude, pressureAltitude);
}
bool CContextOwnAircraftProxy::updateOwnCallsign(const CCallsign &callsign)
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnCallsign"), callsign);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnCallsign"), callsign);
}
bool CContextOwnAircraftProxy::updateOwnIcaoCodes(const CAircraftIcaoCode &aircraftIcaoCode, const CAirlineIcaoCode &airlineIcaoCode)
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnIcaoCodes"), aircraftIcaoCode, airlineIcaoCode);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnIcaoCodes"), aircraftIcaoCode, airlineIcaoCode);
}
void CContextOwnAircraftProxy::setAudioOutputVolume(int outputVolume)
{
this->m_dBusInterface->callDBus(QLatin1String("setAudioOutputVolume"), outputVolume);
m_dBusInterface->callDBus(QLatin1String("setAudioOutputVolume"), outputVolume);
}
void CContextOwnAircraftProxy::setAudioVoiceRoomOverrideUrls(const QString &voiceRoom1Url, const QString &voiceRoom2Url)
{
this->m_dBusInterface->callDBus(QLatin1String("setAudioVoiceRoomOverrideUrls"), voiceRoom1Url, voiceRoom2Url);
m_dBusInterface->callDBus(QLatin1String("setAudioVoiceRoomOverrideUrls"), voiceRoom1Url, voiceRoom2Url);
}
void CContextOwnAircraftProxy::enableAutomaticVoiceRoomResolution(bool enable)
{
this->m_dBusInterface->callDBus(QLatin1String("enableAutomaticVoiceRoomResolution"), enable);
m_dBusInterface->callDBus(QLatin1String("enableAutomaticVoiceRoomResolution"), enable);
}
void CContextOwnAircraftProxy::toggleTransponderMode()
{
this->m_dBusInterface->callDBus(QLatin1String("toggleTransponderMode"));
m_dBusInterface->callDBus(QLatin1String("toggleTransponderMode"));
}
bool CContextOwnAircraftProxy::setTransponderMode(CTransponder::TransponderMode mode)
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1String("setTransponderMode"), mode);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("setTransponderMode"), mode);
}
bool CContextOwnAircraftProxy::parseCommandLine(const QString &commandLine, const CIdentifier &originator)
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1String("parseCommandLine"), commandLine, originator);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("parseCommandLine"), commandLine, originator);
}
} // namespace
} // namespace

View File

@@ -64,9 +64,12 @@ namespace BlackCore
//! \publicsection
//! @{
virtual BlackMisc::Simulation::CSimulatedAircraft getOwnAircraft() const override;
virtual BlackMisc::Aviation::CComSystem getOwnComSystem(BlackMisc::Aviation::CComSystem::ComUnit unit) const override;
virtual BlackMisc::Aviation::CTransponder getOwnTransponder() const override;
virtual BlackMisc::Aviation::CAircraftSituation getOwnAircraftSituation() const override;
virtual bool updateOwnPosition(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::Aviation::CAltitude &altitude, const BlackMisc::Aviation::CAltitude &pressureAltitude) override;
virtual bool updateCockpit(const BlackMisc::Aviation::CComSystem &com1, const BlackMisc::Aviation::CComSystem &com2, const BlackMisc::Aviation::CTransponder &transponder, const BlackMisc::CIdentifier &originator) override;
virtual bool updateTransponderMode(const BlackMisc::Aviation::CTransponder::TransponderMode &transponderMode, const BlackMisc::CIdentifier &originator) override;
virtual bool updateActiveComFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ComUnit comUnit, const BlackMisc::CIdentifier &originator) override;
virtual bool updateOwnAircraftPilot(const BlackMisc::Network::CUser &pilot) override;
virtual bool updateSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override;