swift
contextownaircraftproxy.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QDBusConnection>
7 #include <QLatin1String>
8 #include <QObject>
9 #include <QtGlobal>
10 
11 #include "misc/dbus.h"
12 #include "misc/dbusserver.h"
15 
16 using namespace swift::misc;
17 using namespace swift::misc::aviation;
18 using namespace swift::misc::simulation;
19 
20 namespace swift::core::context
21 {
22  CContextOwnAircraftProxy::CContextOwnAircraftProxy(const QString &serviceName, QDBusConnection &connection,
24  : IContextOwnAircraft(mode, runtime), m_dBusInterface(nullptr)
25  {
26  m_dBusInterface = new swift::misc::CGenericDBusInterface(
27  serviceName, IContextOwnAircraft::ObjectPath(), IContextOwnAircraft::InterfaceName(), connection, this);
28  this->relaySignals(serviceName, connection);
29  }
30 
31  void CContextOwnAircraftProxy::relaySignals(const QString &serviceName, QDBusConnection &connection)
32  {
33  bool s = connection.connect(
35  "changedAircraftCockpit", this,
37  Q_ASSERT(s);
39  "changedSelcal", this,
41  Q_ASSERT(s);
43  "changedCallsign", this, SIGNAL(changedCallsign(swift::misc::aviation::CCallsign)));
44  Q_ASSERT(s);
46  "changedAircraftIcaoCodes", this,
49  Q_ASSERT(s);
51  "changedPilot", this, SIGNAL(changedPilot(swift::misc::network::CUser)));
52  Q_ASSERT(s);
54  "movedAircraft", this, SIGNAL(movedAircraft(swift::misc::physical_quantities::CLength)));
55  Q_ASSERT(s);
56 
57  this->relayBaseClassSignals(serviceName, connection, IContextOwnAircraft::ObjectPath(),
59  Q_UNUSED(s)
60  }
61 
62  void CContextOwnAircraftProxy::unitTestRelaySignals()
63  {
64  // connect signals, asserts when failures
67  Q_UNUSED(c)
68  }
69 
71  {
73  QLatin1String("getOwnAircraft"));
74  }
75 
77  {
78  return m_dBusInterface->callDBusRet<swift::misc::aviation::CComSystem>(QLatin1String("getOwnComSystem"), unit);
79  }
80 
82  {
83  return m_dBusInterface->callDBusRet<swift::misc::aviation::CTransponder>(QLatin1String("getOwnTransponder"));
84  }
85 
87  {
89  QLatin1String("getOwnAircraftSituation"));
90  }
91 
94  const swift::misc::aviation::CTransponder &transponder,
95  const CIdentifier &originator)
96  {
97  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateCockpit"), com1, com2, transponder, originator);
98  }
99 
101  const CIdentifier &originator)
102  {
103  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateTransponderMode"), transponderMode, originator);
104  }
105 
108  const CIdentifier &originator)
109  {
110  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateActiveComFrequency"), frequency, comUnit,
111  originator);
112  }
113 
116  const CIdentifier &originator)
117  {
118  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateStandbyComFrequency"), frequency, comUnit,
119  originator);
120  }
121 
123  {
124  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnAircraftPilot"), pilot);
125  }
126 
127  bool CContextOwnAircraftProxy::updateSelcal(const CSelcal &selcal, const CIdentifier &originator)
128  {
129  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateSelcal"), selcal, originator);
130  }
131 
133  const swift::misc::aviation::CAltitude &altitude,
134  const CAltitude &pressureAltitude)
135  {
136  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnPosition"), position, altitude,
137  pressureAltitude);
138  }
139 
141  {
142  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnCallsign"), callsign);
143  }
144 
146  const CAirlineIcaoCode &airlineIcaoCode)
147  {
148  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnIcaoCodes"), aircraftIcaoCode,
149  airlineIcaoCode);
150  }
151 
153  {
154  m_dBusInterface->callDBus(QLatin1String("toggleTransponderMode"));
155  }
156 
158  {
159  return m_dBusInterface->callDBusRet<bool>(QLatin1String("setTransponderMode"), mode);
160  }
161 
162  bool CContextOwnAircraftProxy::parseCommandLine(const QString &commandLine, const CIdentifier &originator)
163  {
164  return m_dBusInterface->callDBusRet<bool>(QLatin1String("parseCommandLine"), commandLine, originator);
165  }
166 } // namespace swift::core::context
ContextMode
How to handle a given context.
@ Remote
context runs in a different process.
The class providing facades (the contexts) for all DBus relevant operations.
Definition: corefacade.h:57
CContextOwnAircraftProxy(CCoreFacadeConfig::ContextMode mode, CCoreFacade *runtime)
Constructor.
bool parseCommandLine(const QString &commandLine, const swift::misc::CIdentifier &originator)
Parse a given command line.
swift::misc::aviation::CComSystem getOwnComSystem(swift::misc::aviation::CComSystem::ComUnit unit) const
Get own COM system.
bool updateOwnIcaoCodes(const swift::misc::aviation::CAircraftIcaoCode &aircraftIcaoCode, const swift::misc::aviation::CAirlineIcaoCode &airlineIcaoCode)
Set ICAO data.
bool updateSelcal(const swift::misc::aviation::CSelcal &selcal, const swift::misc::CIdentifier &originator)
Own SELCAL code.
bool updateTransponderMode(const swift::misc::aviation::CTransponder::TransponderMode &transponderMode, const swift::misc::CIdentifier &originator)
Update own transponder mode.
bool updateCockpit(const swift::misc::aviation::CComSystem &com1, const swift::misc::aviation::CComSystem &com2, const swift::misc::aviation::CTransponder &transponder, const swift::misc::CIdentifier &originator)
Update own cockpit.
bool updateActiveComFrequency(const swift::misc::physical_quantities::CFrequency &frequency, swift::misc::aviation::CComSystem::ComUnit comUnit, const swift::misc::CIdentifier &originator)
Tune in a COM frequency (active)
swift::misc::simulation::CSimulatedAircraft getOwnAircraft() const
Get own aircraft.
bool setTransponderMode(swift::misc::aviation::CTransponder::TransponderMode mode)
Set XPDR mode.
swift::misc::aviation::CAircraftSituation getOwnAircraftSituation() const
Get own aircraft.
swift::misc::aviation::CTransponder getOwnTransponder() const
Get own transponder.
bool updateOwnPosition(const swift::misc::geo::CCoordinateGeodetic &position, const swift::misc::aviation::CAltitude &altitude, const swift::misc::aviation::CAltitude &pressureAltitude)
Update position.
bool updateStandbyComFrequency(const swift::misc::physical_quantities::CFrequency &frequency, swift::misc::aviation::CComSystem::ComUnit comUnit, const swift::misc::CIdentifier &originator)
Tune in a COM frequency (standby)
bool updateOwnAircraftPilot(const swift::misc::network::CUser &pilot)
Set current pilot.
bool updateOwnCallsign(const swift::misc::aviation::CCallsign &callsign)
Set callsign.
void relayBaseClassSignals(const QString &serviceName, QDBusConnection &connection, const QString &objectPath, const QString &interfaceName)
Relay signals from this class.
Definition: context.cpp:61
void changedAircraftCockpit(const swift::misc::simulation::CSimulatedAircraft &aircraft, const swift::misc::CIdentifier &originator)
Aircraft cockpit update.
void changedPilot(const swift::misc::network::CUser &pilot)
Own pilot (aka the swift user) changed.
void changedCallsign(const swift::misc::aviation::CCallsign &callsign)
Own callsign was changed.
void changedAircraftIcaoCodes(const swift::misc::aviation::CAircraftIcaoCode &aircraftIcaoCode, const swift::misc::aviation::CAirlineIcaoCode &airlineIcaoCode)
Own ICAO was changed.
static const QString & ObjectPath()
DBus object path.
static const QString & InterfaceName()
DBus interface name.
void movedAircraft(const swift::misc::physical_quantities::CLength &distance)
Aircraft has been moved from one location to another (changed scenery)
void changedSelcal(const swift::misc::aviation::CSelcal &selcal, const swift::misc::CIdentifier &originator)
Changed SELCAL code.
static const QString & coreServiceName()
Default service name.
Definition: dbusserver.cpp:98
Used for hand written interface based on virtual methods.
void callDBus(QLatin1String method, Args &&...args)
Call DBus, no return value.
Ret callDBusRet(QLatin1String method, Args &&...args)
Call DBus with synchronous return value.
Value object encapsulating information identifying a component of a modular distributed swift process...
Definition: identifier.h:29
Value object for ICAO classification.
Value object encapsulating information of an aircraft's situation.
Value object for ICAO classification.
Altitude as used in aviation, can be AGL or MSL altitude.
Definition: altitude.h:52
Value object encapsulating information of a callsign.
Definition: callsign.h:30
COM system (aka "radio")
Definition: comsystem.h:37
Value object for SELCAL.
Definition: selcal.h:31
Value object encapsulating information of a user.
Definition: user.h:28
Physical unit length (length)
Definition: length.h:18
Comprehensive information of an aircraft.
Free functions in swift::misc.
bool connect(const QString &service, const QString &path, const QString &interface, const QString &name, QObject *receiver, const char *slot)
QDBusConnection sessionBus()