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);
38  s = connection.connect(serviceName, IContextOwnAircraft::ObjectPath(), IContextOwnAircraft::InterfaceName(),
39  "changedSelcal", this,
41  Q_ASSERT(s);
42  s = connection.connect(serviceName, IContextOwnAircraft::ObjectPath(), IContextOwnAircraft::InterfaceName(),
43  "changedCallsign", this, SIGNAL(changedCallsign(swift::misc::aviation::CCallsign)));
44  Q_ASSERT(s);
45  s = connection.connect(serviceName, IContextOwnAircraft::ObjectPath(), IContextOwnAircraft::InterfaceName(),
46  "changedAircraftIcaoCodes", this,
49  Q_ASSERT(s);
50  s = connection.connect(serviceName, IContextOwnAircraft::ObjectPath(), IContextOwnAircraft::InterfaceName(),
51  "changedPilot", this, SIGNAL(changedPilot(swift::misc::network::CUser)));
52  Q_ASSERT(s);
53  s = connection.connect(serviceName, IContextOwnAircraft::ObjectPath(), IContextOwnAircraft::InterfaceName(),
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
65  QDBusConnection con = QDBusConnection::sessionBus();
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 
115  {
116  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnAircraftPilot"), pilot);
117  }
118 
119  bool CContextOwnAircraftProxy::updateSelcal(const CSelcal &selcal, const CIdentifier &originator)
120  {
121  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateSelcal"), selcal, originator);
122  }
123 
125  const swift::misc::aviation::CAltitude &altitude,
126  const CAltitude &pressureAltitude)
127  {
128  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnPosition"), position, altitude,
129  pressureAltitude);
130  }
131 
133  {
134  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnCallsign"), callsign);
135  }
136 
138  const CAirlineIcaoCode &airlineIcaoCode)
139  {
140  return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateOwnIcaoCodes"), aircraftIcaoCode,
141  airlineIcaoCode);
142  }
143 
145  {
146  m_dBusInterface->callDBus(QLatin1String("toggleTransponderMode"));
147  }
148 
150  {
151  return m_dBusInterface->callDBusRet<bool>(QLatin1String("setTransponderMode"), mode);
152  }
153 
154  bool CContextOwnAircraftProxy::parseCommandLine(const QString &commandLine, const CIdentifier &originator)
155  {
156  return m_dBusInterface->callDBusRet<bool>(QLatin1String("parseCommandLine"), commandLine, originator);
157  }
158 } // 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.
virtual bool parseCommandLine(const QString &commandLine, const swift::misc::CIdentifier &originator)
Parse a given command line.
virtual swift::misc::aviation::CComSystem getOwnComSystem(swift::misc::aviation::CComSystem::ComUnit unit) const
Get own COM system.
virtual bool updateOwnIcaoCodes(const swift::misc::aviation::CAircraftIcaoCode &aircraftIcaoCode, const swift::misc::aviation::CAirlineIcaoCode &airlineIcaoCode)
Set ICAO data.
virtual bool updateSelcal(const swift::misc::aviation::CSelcal &selcal, const swift::misc::CIdentifier &originator)
Own SELCAL code.
virtual bool updateTransponderMode(const swift::misc::aviation::CTransponder::TransponderMode &transponderMode, const swift::misc::CIdentifier &originator)
Update own transponder mode.
virtual 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.
virtual 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.
virtual swift::misc::simulation::CSimulatedAircraft getOwnAircraft() const
Get own aircraft.
virtual bool setTransponderMode(swift::misc::aviation::CTransponder::TransponderMode mode)
Set XPDR mode.
virtual swift::misc::aviation::CAircraftSituation getOwnAircraftSituation() const
Get own aircraft.
virtual swift::misc::aviation::CTransponder getOwnTransponder() const
Get own transponder.
virtual bool updateOwnPosition(const swift::misc::geo::CCoordinateGeodetic &position, const swift::misc::aviation::CAltitude &altitude, const swift::misc::aviation::CAltitude &pressureAltitude)
Update position.
virtual bool updateOwnAircraftPilot(const swift::misc::network::CUser &pilot)
Set current pilot.
virtual 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.