8 #include <QStringBuilder>
41 using namespace swift::config;
43 using namespace swift::misc::physical_quantities;
44 using namespace swift::misc::aviation;
45 using namespace swift::misc::network;
46 using namespace swift::misc::geo;
47 using namespace swift::misc::simulation;
48 using namespace swift::misc::weather;
49 using namespace swift::core::fsd;
50 using namespace swift::core::vatsim;
52 namespace swift::core::context
69 connect(m_fsdClient, &CFSDClient::connectionStatusChanged,
this, &CContextNetwork::onFsdConnectionStatusChanged,
70 Qt::QueuedConnection);
72 connect(m_fsdClient, &CFSDClient::textMessagesReceived,
this, &CContextNetwork::onTextMessagesReceived,
73 Qt::QueuedConnection);
74 connect(m_fsdClient, &CFSDClient::textMessageSent,
this, &CContextNetwork::onTextMessageSent,
75 Qt::QueuedConnection);
77 Qt::QueuedConnection);
79 Qt::QueuedConnection);
83 m_requestAircraftDataTimer =
new QTimer(
this);
85 m_requestAircraftDataTimer->start(30 * 1000);
86 m_requestAircraftDataTimer->setObjectName(
"CContextNetwork::m_requestAircraftDataTimer");
88 m_requestAtisTimer =
new QTimer(
this);
90 m_requestAtisTimer->start(13 * 1000);
91 m_requestAtisTimer->setObjectName(
"CContextNetwork::m_requestAtisTimer");
94 m_staggeredMatchingTimer =
new QTimer(
this);
95 connect(m_staggeredMatchingTimer, &QTimer::timeout,
this, &CContextNetwork::emitReadyForMatching);
96 m_staggeredMatchingTimer->start(200);
97 m_staggeredMatchingTimer->setObjectName(
"CContextNetwork::m_staggeredMatchingTimer");
100 Q_ASSERT_X(this->
getRuntime()->getCContextOwnAircraft(), Q_FUNC_INFO,
101 "this and own aircraft context must be local");
102 Q_ASSERT_X(this->
getRuntime()->getCContextSimulator(), Q_FUNC_INFO,
103 "this and own simulator context must be local");
105 this->
getRuntime()->getCContextSimulator(), m_fsdClient,
this);
108 Qt::QueuedConnection);
112 Qt::QueuedConnection);
114 Qt::QueuedConnection);
116 &CContextNetwork::onReadyForModelMatching);
118 Qt::QueuedConnection);
120 Qt::QueuedConnection);
133 if (!this->canUseAirspaceMonitor()) {
return {}; }
139 if (!this->canUseAirspaceMonitor()) {
return {}; }
146 if (!this->canUseAirspaceMonitor()) {
return {}; }
152 if (!this->canUseAirspaceMonitor()) {
return {}; }
158 Q_ASSERT(m_airspace);
164 if (!this->canUseAirspaceMonitor()) {
return {}; }
170 if (!this->canUseAirspaceMonitor()) {
return 0; }
176 if (!this->canUseAirspaceMonitor()) {
return 0; }
182 if (!this->canUseAirspaceMonitor()) {
return false; }
188 if (!this->canUseAirspaceMonitor()) {
return {}; }
194 if (!this->canUseAirspaceMonitor()) {
return {}; }
200 if (!this->canUseAirspaceMonitor()) {
return {}; }
207 std::function<
void(
const CCallsign &)> removedAircraftSlot,
210 Q_ASSERT_X(m_airspace, Q_FUNC_INFO,
"Missing airspace");
212 aircraftSnapshotSlot);
223 m_fsdClient->deleteLater();
224 m_fsdClient =
nullptr;
230 m_airspace->deleteLater();
231 m_airspace =
nullptr;
236 bool sendLivery,
const QString &extraModelString,
237 bool sendModelString,
const CCallsign &partnerCallsign,
240 if (!this->canUseFsd())
243 u
"Invalid FSD state (shutdown)") };
251 u
"Invalid user credentials");
256 u
"Invalid ICAO data for own aircraft");
258 if (!CNetworkUtils::canConnect(server, msg, 5000))
265 u
"Already connected");
270 u
"Pending connection, please wait");
276 isValidPartnerCallsign(ownAircraft.
getCallsign(), partnerCallsign) ? partnerCallsign :
CCallsign());
279 if (!CBuildConfig::isLocalDeveloperDebugBuild() && !this->
getIContextSimulator()->isSimulatorSimulating())
282 u
"No simulator connected or connected simulator not simulating. Falling back to observer mode");
291 const QString m = extraModelString.isEmpty() ? ownAircraft.
getModelString() : extraModelString;
295 if (sim.
isFG() && extraModelString.isEmpty()) { sendModelString =
false; }
297 m_currentMode = mode;
307 m_fsdClient->
setVersion(CBuildConfig::getVersion().majorVersion(), CBuildConfig::getVersion().minorVersion());
309 #ifdef SWIFT_VATSIM_SUPPORT
312 if (!getCmdLineClientIdAndKey(clientId, clientKey))
314 clientId = CBuildConfig::vatsimClientId();
315 clientKey = CBuildConfig::vatsimPrivateKey();
318 m_fsdClient->setClientIdAndKey(
static_cast<quint16
>(clientId), clientKey.toLocal8Bit());
320 m_fsdClient->
setClientCapabilities(Capabilities::AircraftInfo | Capabilities::FastPos | Capabilities::VisPos |
321 Capabilities::AtcInfo | Capabilities::AircraftConfig |
322 Capabilities::IcaoEquipment);
330 u
"Connection pending " % server.
getAddress() % u
' ' % QString::number(server.
getPort()));
335 if (!this->canUseFsd()) {
return {}; }
341 if (!this->canUseFsd()) {
return {}; }
348 if (!this->canUseFsd())
351 u
"Invalid FSD state (shutdown)") };
358 u
"Connection terminating");
363 u
"Already disconnected");
369 if (!this->canUseFsd()) {
return false; }
376 if (!this->canUseFsd()) {
return false; }
382 Q_UNUSED(originator;)
384 if (!this->canUseAirspaceMonitor()) {
return false; }
385 if (!this->canUseFsd()) {
return false; }
386 if (commandLine.isEmpty()) {
return false; }
388 static const QStringList cmds({
".msg",
".m",
".chat",
".altos",
".altoffset",
".addtimeos",
".addtimeoffset",
389 ".wallop",
".reinit",
".reinitialize",
".enable",
".disable",
".ignore",
390 ".unignore",
".fsd" });
392 parser.parse(commandLine);
393 if (!parser.isKnownCommand()) {
return false; }
394 if (parser.matchesCommand(
".msg",
".m",
".chat"))
406 if (parser.countParts() < 3)
414 const QString receiver = parser.part(1).trimmed().toLower();
421 if (!presetCallsign.
isEmpty()) { ownCallsign = presetCallsign; }
436 if (receiver == QStringView(u
"c1") || receiver == QStringView(u
"com1") || receiver == QStringView(u
"comm1"))
440 else if (receiver == QStringView(u
"c2") || receiver == QStringView(u
"com2") ||
441 receiver == QStringView(u
"comm2"))
445 else if (receiver ==
"u" || receiver == QStringView(u
"uni") || receiver == QStringView(u
"unicom"))
447 tm.
setFrequency(CPhysicalQuantitiesConstants::FrequencyUnicom());
452 CComSystem::parseComFrequency(receiver, CPqString::SeparatorBestGuess);
453 if (!radioFrequency.
isNull())
455 if (CComSystem::isValidCivilAviationFrequency(radioFrequency)) { tm.
setFrequency(radioFrequency); }
469 const QString msg(parser.partAndRemainingStringAfter(2));
480 else if (parser.matchesCommand(
".altos",
".altoffset"))
482 if (!m_airspace) {
return false; }
483 if (parser.countParts() < 2) {
return false; }
485 const QString csPart(parser.part(1));
487 if (csPart.contains(
'?'))
502 if (parser.hasPart(2)) { os.
parseFromString(parser.part(2), CPqString::SeparatorBestGuess); }
514 else if (parser.matchesCommand(
".addtimeos",
".addtimeoffset"))
516 if (!m_airspace) {
return false; }
517 if (parser.countParts() < 2) {
return false; }
519 CTime os(CTime::null());
520 if (parser.hasPart(2)) { os.
parseFromString(parser.part(2), CPqString::SeparatorBestGuess); }
529 else if (parser.matchesCommand(
".reinit",
".reinitialize"))
531 if (!m_airspace) {
return false; }
533 if (count > 0) {
CLogMessage(
this).
info(u
"Re-init %1 aircraft") << count; }
535 else if (parser.matchesCommand(
".wallop"))
537 if (parser.countParts() < 2) {
return false; }
538 if (!m_fsdClient) {
return false; }
544 const QString wallopMsg = parser.partAndRemainingStringAfter(1);
545 if (wallopMsg.isEmpty())
553 else if (parser.matchesCommand(
".enable",
".unignore"))
555 if (parser.countParts() < 2) {
return false; }
556 if (!m_fsdClient) {
return false; }
561 else if (parser.matchesCommand(
".disable",
".ignore"))
563 if (parser.countParts() < 2) {
return false; }
564 if (!m_fsdClient) {
return false; }
569 else if (m_airspace && parser.matchesCommand(
".fsd"))
598 if (!this->canUseFsd()) {
return {}; }
605 if (!this->canUseAirspaceMonitor()) {
return {}; }
612 if (!this->canUseAirspaceMonitor() || callsigns.
isEmpty()) {
return {}; }
629 if (!this->canUseAirspaceMonitor()) {
return {}; }
636 if (!this->canUseAirspaceMonitor()) {
return {}; }
643 if (!this->canUseAirspaceMonitor()) {
return false; }
650 if (!this->canUseAirspaceMonitor()) {
return 0; }
656 if (!this->canUseAirspaceMonitor()) {
return false; }
662 if (!this->canUseAirspaceMonitor()) {
return false; }
668 if (!this->canUseAirspaceMonitor()) {
return false; }
689 Q_ASSERT(m_airspace);
706 static const QString chgMsg(
"Connection status changed from '%1' to '%2'");
715 m_readyForModelMatching.enqueue(aircraft);
718 void CContextNetwork::emitReadyForMatching()
720 if (m_readyForModelMatching.isEmpty()) {
return; }
728 void CContextNetwork::createRelayMessageToPartnerCallsign(
const CTextMessage &textMessage,
732 if (textMessage.
isEmpty()) {
return; }
733 if (partnerCallsign.
isEmpty()) {
return; }
737 modified.makeRelayedMessage(partnerCallsign);
741 void CContextNetwork::xCtxSimulatorRenderRestrictionsChanged(
bool restricted,
bool enabled,
int maxAircraft,
742 const CLength &maxRenderedDistance)
745 if (!m_airspace) {
return; }
746 if (!m_airspace->
analyzer()) {
return; }
748 maxRenderedDistance);
751 void CContextNetwork::xCtxSimulatorStatusChanged(
int status)
753 const ISimulator::SimulatorStatus simStatus =
static_cast<ISimulator::SimulatorStatus
>(status);
760 m_simulatorConnected++;
761 m_lastConnectedSim = simInfo;
768 bool CContextNetwork::canUseAirspaceMonitor()
const {
return sApp && !
sApp->
isShuttingDown() && m_airspace; }
770 void CContextNetwork::updateMetars(
const CMetarList &metars)
776 void CContextNetwork::onChangedAtisReceived(
const CCallsign &callsign)
782 void CContextNetwork::onTextMessagesReceived(
const CTextMessageList &messages)
784 if (messages.
isEmpty()) {
return; }
792 if (!partnerCallsign.
isEmpty())
794 partnerMessages = textMessages.
findBySender(partnerCallsign);
818 if (!partnerCallsign.
isEmpty())
825 this->createRelayMessageToPartnerCallsign(m, partnerCallsign, relayedMessages);
828 if (!relayedMessages.
isEmpty())
830 QPointer<CContextNetwork> myself(
this);
832 if (myself) { myself->sendTextMessages(relayedMessages); }
839 void CContextNetwork::onTextMessageSent(
const CTextMessage &message)
841 if (message.
isEmpty()) {
return; }
850 QPointer<CContextNetwork> myself(
this);
852 this->createRelayMessageToPartnerCallsign(message, partnerCallsign, relayedMessages);
853 if (!relayedMessages.
isEmpty())
856 if (myself) { myself->sendTextMessages(relayedMessages); }
878 bool CContextNetwork::isValidPartnerCallsign(
const CCallsign &ownCallsign,
const CCallsign &partnerCallsign)
880 if (partnerCallsign.
isEmpty()) {
return false; }
881 if (ownCallsign == partnerCallsign) {
return false; }
970 if (revEnabled == enable) {
return; }
1039 if (!m_fsdClient) {
return QString(); }
1046 if (!m_fsdClient) {
return false; }
1058 if (!m_fsdClient) {
return {}; }
1088 if (!canUseAirspaceMonitor()) {
return; }
1093 if (m_requestAircraftDataTimer) { m_requestAircraftDataTimer->start(); }
1098 if (!canUseAirspaceMonitor()) {
return; }
1103 if (m_requestAtisTimer) { m_requestAtisTimer->start(); }
1108 if (!canUseAirspaceMonitor()) {
return false; }
1125 if (!canUseAirspaceMonitor()) {
return false; }
1136 if (!canUseAirspaceMonitor()) {
return false; }
1154 if (!canUseAirspaceMonitor()) {
return false; }
1170 if (!canUseAirspaceMonitor()) {
return false; }
1174 << Q_FUNC_INFO << callsign << enableFastPositonUpdates;
1206 if (!canUseAirspaceMonitor()) {
return false; }
1212 const bool c = m_airspace->
updateCG(callsign, cg);
1218 if (!canUseAirspaceMonitor()) {
return {}; }
1229 const QString &modelString)
1231 if (!canUseAirspaceMonitor()) {
return false; }
1243 if (!canUseAirspaceMonitor()) {
return false; }
1250 if (!canUseAirspaceMonitor()) {
return 0; }
1257 if (!canUseAirspaceMonitor()) {
return 0; }
1264 bool *setForOnGroundPosition)
1266 if (!canUseAirspaceMonitor()) {
return 0; }
1272 if (!canUseAirspaceMonitor()) {
return; }
1278 if (!canUseAirspaceMonitor()) {
return {}; }
1284 if (!canUseAirspaceMonitor()) {
return {}; }
1290 if (!canUseAirspaceMonitor()) {
return; }
1296 if (!canUseAirspaceMonitor()) {
return; }
1302 if (!canUseAirspaceMonitor()) {
return 0; }
1309 if (!canUseAirspaceMonitor()) {
return {}; }
1314 const CLength &range,
int minValues,
1315 int sufficientValues)
const
1317 if (!canUseAirspaceMonitor()) {
return {}; }
1327 if (!canUseAirspaceMonitor()) {
return {}; }
1333 if (!canUseAirspaceMonitor()) {
return false; }
1339 if (!canUseAirspaceMonitor()) {
return false; }
1344 bool skipEqualValues)
1346 if (!canUseAirspaceMonitor()) {
return 0; }
1356 Q_ASSERT(m_fsdClient);
1363 Q_ASSERT(m_fsdClient);
1369 if (!this->canUseFsd()) {
return; }
1379 if (!this->canUseAirspaceMonitor()) {
return; }
1384 m_airspace->testCreateDummyOnlineAtcStations(number);
1389 if (!this->canUseAirspaceMonitor()) {
return; }
1394 m_airspace->testAddAircraftParts(callsign, parts, incremental);
1399 if (!this->canUseFsd()) {
return; }
1409 if (!this->canUseFsd()) {
return; }
1427 QMetaObject::Connection
1430 Q_ASSERT_X(receiver, Q_FUNC_INFO,
"Missing receiver");
1433 const QMetaObject::Connection uc;
1434 const QMetaObject::Connection c = rawFsdMessageReceivedSlot ? connect(m_fsdClient, &CFSDClient::rawFsdMessage,
1435 receiver, rawFsdMessageReceivedSlot) :
1437 Q_ASSERT_X(c || !rawFsdMessageReceivedSlot, Q_FUNC_INFO,
"connect failed");
SWIFT_CORE_EXPORT swift::core::CApplication * sApp
Single instance of application object.
void setSimulatorRenderRestrictionsChanged(bool restricted, bool enabled, int maxAircraft, const swift::misc::physical_quantities::CLength &maxRenderedDistance)
Render restrictions in simulator.
Keeps track of other entities in the airspace: aircraft, ATC stations, etc. Central instance of data ...
misc::network::CUserList getUsers() const
Returns the list of users we know about.
void requestAtisUpdates()
Request to update ATC stations' ATIS data from the network.
misc::aviation::CAtcStationList getAtcStationsOnline() const
Returns the current online ATC stations.
void atcStationDisconnected(const swift::misc::aviation::CAtcStation &station)
ATC station disconnected.
misc::network::CUserList getUsersForCallsigns(const misc::aviation::CCallsignSet &callsigns) const
Returns a list of the users corresponding to the given callsigns.
void requestAircraftDataUpdates()
Request to update other clients' data from the network.
misc::aviation::CFlightPlan loadFlightPlanFromNetwork(const misc::aviation::CCallsign &callsign)
Returns the loaded flight plan for the given callsign.
CAirspaceAnalyzer * analyzer() const
Analyzer.
void readyForModelMatching(const swift::misc::simulation::CSimulatedAircraft &remoteAircraft)
Ready for model matching.
void changedAtisReceived(const swift::misc::aviation::CCallsign &callsign)
An ATIS has been received.
void changedAtcStationsOnline()
Online ATC stations were changed.
int reInitializeAllAircraft()
Re-init all aircrft.
void clear()
Clear the contents.
void gracefulShutdown()
Gracefully shut down, e.g. for thread safety.
bool updateFastPositionEnabled(const misc::aviation::CCallsign &callsign, bool enableFastPositonUpdates)
Members not implenented or fully implenented by CRemoteAircraftProvider.
misc::simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const
Members not implenented or fully implenented by CRemoteAircraftProvider.
const char * swiftVersionChar()
swift info string
bool isShuttingDown() const
Is application shutting down?
CWebDataServices * getWebDataServices() const
Get the web data services.
ContextMode
How to handle a given context.
The class providing facades (the contexts) for all DBus relevant operations.
context::CContextSimulator * getCContextSimulator()
Context for simulator.
context::CContextOwnAircraft * getCContextOwnAircraft()
Context for own aircraft.
swift::misc::network::CServerList getVatsimFsdServers() const
FSD servers.
swift::misc::weather::CMetar getMetarForAirport(const swift::misc::aviation::CAirportIcaoCode &icao) const
Get METAR for airport.
static bool isAnyConnectedStatus(SimulatorStatus status)
Any connected status?
virtual void rememberCGFromDB(const swift::misc::physical_quantities::CLength &cgFromDB, const swift::misc::aviation::CCallsign &callsign)
CG values from DB.
virtual bool setNetworkStatisticsEnable(bool enabled)
Statistics enable/disable.
virtual swift::misc::aviation::CCallsignSet updateCGForModel(const QString &modelString, const swift::misc::physical_quantities::CLength &cg)
Update the CG for this model string.
fsd::CFSDClient * fsdClient() const
Network library.
virtual swift::misc::network::CLoginMode getLoginMode() const
Login mode.
virtual void markAsSwiftClient(const swift::misc::aviation::CCallsign &callsign)
Mark as other swift client.
swift::misc::weather::CMetar getMetarForAirport(const swift::misc::aviation::CAirportIcaoCode &airportIcaoCode) const
Get METAR, if not available request it (code such as EDDF, KLAX)
virtual swift::misc::CStatusMessageList getAircraftPartsHistory(const swift::misc::aviation::CCallsign &callsign) const
Get aircraft parts history.
virtual void setFastPositionEnabledCallsigns(swift::misc::aviation::CCallsignSet &callsigns)
Callsigns enabled for fast position updates.
virtual int updateMultipleAircraftRendered(const swift::misc::aviation::CCallsignSet &callsigns, bool rendered)
Set aircraft rendered.
virtual swift::misc::MillisecondsMinMaxMean remoteAircraftSituationsTimestampDifferenceMinMaxMean(const swift::misc::aviation::CCallsign &callsign) const
Average update time.
virtual swift::misc::aviation::CCallsignSet remoteAircraftSupportingParts() const
Remote aircraft supporting parts.
virtual bool isRemoteAircraftSupportingParts(const swift::misc::aviation::CCallsign &callsign) const
Parts supported?
virtual swift::misc::aviation::CCallsignSet getFastPositionEnabledCallsigns() const
Callsigns enabled for fast position updates.
virtual swift::misc::aviation::CCallsign getPartnerCallsign() const
Partner callsign if any.
virtual swift::misc::aviation::CAircraftPartsList getRemoteAircraftParts(const swift::misc::aviation::CCallsign &callsign) const
Get remote aircraft parts.
virtual swift::misc::aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const
The ATC list with online ATC controllers.
virtual int updateOrAddClient(const swift::misc::aviation::CCallsign &callsign, const swift::misc::CPropertyIndexVariantMap &vm, bool skipEqualValues=true)
Update or add a client.
virtual bool hasClientInfo(const swift::misc::aviation::CCallsign &callsign) const
Client info for given callsign?
virtual QStringList getNetworkPresetValues() const
Network preset values.
virtual void enableAircraftPartsHistory(bool enabled)
Enable storing of aircraft parts.
virtual int getRemoteAircraftSupportingPartsCount() const
Number of aircraft supporting parts.
virtual qint64 partsLastModified(const swift::misc::aviation::CCallsign &callsign) const
When last modified.
virtual swift::misc::geo::CElevationPlane averageElevationOfNonMovingAircraft(const swift::misc::aviation::CAircraftSituation &reference, const swift::misc::physical_quantities::CLength &range, int minValues=1, int sufficientValues=2) const
Average elevation of aircraft in given range, which are NOT moving.
virtual swift::misc::aviation::CAircraftSituationList latestOnGroundProviderElevations() const
Latest aircraft situation "on ground" having a provider elevation.
virtual void setClients(const swift::misc::network::CClientList &clients)
Set other clients.
virtual bool updateAircraftEnabled(const swift::misc::aviation::CCallsign &callsign, bool enabledForRendering)
Enable/disable aircraft and follow up logic like sending signals.
virtual swift::misc::CStatusMessageList getReverseLookupMessages(const swift::misc::aviation::CCallsign &callsign) const
Get reverse lookup messages.
virtual swift::misc::aviation::CAircraftSituationList latestRemoteAircraftSituations() const
Latest aircraft situation for all callsigns.
virtual swift::misc::aviation::CAtcStation getOnlineStationForCallsign(const swift::misc::aviation::CCallsign &callsign) const
Online station for callsign.
virtual bool addClientGndCapability(const swift::misc::aviation::CCallsign &callsign)
Add gnd.flag capability.
virtual int updateAircraftGroundElevation(const swift::misc::aviation::CCallsign &callsign, const swift::misc::geo::CElevationPlane &elevation, swift::misc::aviation::CAircraftSituation::GndElevationInfo info, bool *setForOnGroundPosition)
Update the ground elevation.
virtual swift::misc::CStatusMessage disconnectFromNetwork()
Disconnect from network.
virtual swift::misc::aviation::CAtcStationList getOnlineStationsForFrequency(const swift::misc::physical_quantities::CFrequency &frequency) const
Online stations for frequency.
virtual swift::misc::aviation::CAircraftSituation remoteAircraftSituation(const swift::misc::aviation::CCallsign &callsign, int index) const
Rendered aircraft situations (per callsign and index)
virtual bool isAircraftPartsHistoryEnabled() const
Is storing the aircraft parts history enabled?
virtual swift::misc::network::CClientList getClientsForCallsigns(const swift::misc::aviation::CCallsignSet &callsigns) const
Returns a list of other clients corresponding to the given callsigns.
virtual void sendTextMessages(const swift::misc::network::CTextMessageList &textMessages)
Text messages (radio and private chat messages)
virtual int getAircraftInRangeCount() const
Aircraft count.
virtual bool setAircraftEnabledFlag(const swift::misc::aviation::CCallsign &callsign, bool enabledForRendering)
Set the enabled flag without any further logic like sending signals.
virtual int removeClient(const swift::misc::aviation::CCallsign &callsign)
Remove client.
virtual swift::misc::network::CUserList getUsers() const
Get all users.
virtual bool setOtherClient(const swift::misc::network::CClient &client)
Set client for its callsign.
void gracefulShutdown()
Gracefully shut down, e.g. for thread safety.
virtual swift::misc::simulation::CSimulatedAircraftList getAircraftInRange() const
Aircraft list.
virtual swift::misc::simulation::CAircraftModel getAircraftInRangeModelForCallsign(const swift::misc::aviation::CCallsign &callsign) const
Aircraft model for callsign.
virtual QMetaObject::Connection connectRawFsdMessageSignal(QObject *receiver, RawFsdMessageReceivedSlot rawFsdMessageReceivedSlot)
Connect to receive raw fsd messages.
virtual bool isOnlineStation(const swift::misc::aviation::CCallsign &callsign) const
Online station for callsign?
virtual swift::misc::network::CServerList getVatsimFsdServers() const
Known FSD servers, available when data file was first read.
virtual swift::misc::CStatusMessage connectToNetwork(const swift::misc::network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const swift::misc::aviation::CCallsign &partnerCallsign, swift::misc::network::CLoginMode mode)
Connect to Network.
virtual bool updateAircraftRendered(const swift::misc::aviation::CCallsign &callsign, bool rendered)
Set aircraft rendered.
virtual void requestAircraftDataUpdates()
Request data updates (pilot's frequencies, ATIS, ..)
virtual int aircraftPartsAdded() const
Number of parts added.
virtual void testAddAircraftParts(const swift::misc::aviation::CCallsign &callsign, const swift::misc::aviation::CAircraftParts &parts, bool incremental)
Inject aircraft parts for testing.
virtual bool addNewClient(const swift::misc::network::CClient &client)
Add a new client, if existing nothing will be added.
virtual bool updateAircraftNetworkModel(const swift::misc::aviation::CCallsign &callsign, const swift::misc::simulation::CAircraftModel &model, const swift::misc::CIdentifier &originator)
Change network model.
virtual QList< QMetaObject::Connection > connectRemoteAircraftProviderSignals(QObject *receiver, std::function< void(const swift::misc::aviation::CAircraftSituation &)> addedSituationSlot, std::function< void(const swift::misc::aviation::CCallsign &, const swift::misc::aviation::CAircraftParts &)> addedPartsSlot, std::function< void(const swift::misc::aviation::CCallsign &)> removedAircraftSlot, std::function< void(const swift::misc::simulation::CAirspaceAircraftSnapshot &)> aircraftSnapshotSlot)
Connect signals to slot receiver. As the interface is no QObject, slots can not be connected directly...
virtual int reInitializeAllAircraft()
Re-initialize all aircraft.
virtual swift::misc::aviation::CAircraftSituationChangeList remoteAircraftSituationChanges(const swift::misc::aviation::CCallsign &callsign) const
Aircraft changes.
virtual void testReceivedTextMessages(const swift::misc::network::CTextMessageList &textMessages)
Inject a text message as received.
virtual swift::misc::network::CUserList getUsersForCallsigns(const swift::misc::aviation::CCallsignSet &callsigns) const
Users for given callsigns, e.g. for voice room resolution.
virtual void testCreateDummyOnlineAtcStations(int number)
Create dummy ATC stations for performance tests etc.
virtual swift::misc::physical_quantities::CLength getCGFromDB(const swift::misc::aviation::CCallsign &callsign) const
CG values from DB.
virtual void enableReverseLookupMessages(swift::misc::simulation::ReverseLookupLogging enable)
Enable reverse lookup logging.
virtual bool autoAdjustCientGndCapability(const swift::misc::aviation::CAircraftSituation &situation)
Adjust gnd.flag capability from situation.
virtual swift::misc::aviation::CAtcStationList getClosestAtcStationsOnline(int number) const
The ATC list with online ATC controllers.
virtual bool isAircraftInRange(const swift::misc::aviation::CCallsign &callsign) const
Aircraft in range.
virtual void updateMarkAllAsNotRendered()
Mark all as not rendered.
virtual swift::misc::simulation::CSimulatedAircraft getAircraftInRangeForCallsign(const swift::misc::aviation::CCallsign &callsign) const
Aircraft for given callsign.
virtual void testRequestAircraftConfig(const swift::misc::aviation::CCallsign &callsign)
Request parts for callsign (from another client)
virtual bool updateCGAndModelString(const swift::misc::aviation::CCallsign &callsign, const swift::misc::physical_quantities::CLength &cg, const QString &modelString)
Update the CG and model string.
bool isPendingConnection() const
In transition state, e.g. connecting, disconnecting.
virtual ~CContextNetwork()
Destructor.
virtual swift::misc::aviation::CCallsignSet getAircraftInRangeCallsigns() const
Aircraft callsigns.
virtual swift::misc::network::CClient getClientOrDefaultForCallsign(const swift::misc::aviation::CCallsign &callsign) const
Other client for the given callsigns.
static void registerHelp()
Register help.
virtual bool updateAircraftSupportingGndFLag(const swift::misc::aviation::CCallsign &callsign, bool supportGndFlag)
Enable/disable support of gnd. flag.
virtual void sendFlightPlan(const swift::misc::aviation::CFlightPlan &flightPlan)
Send flight plan.
virtual int remoteAircraftSituationsCount(const swift::misc::aviation::CCallsign &callsign) const
Number of remote aircraft situations for callsign.
virtual bool updateFastPositionEnabled(const swift::misc::aviation::CCallsign &callsign, bool enableFastPositonUpdates)
Change fast position updates.
void setSimulationEnvironmentProvider(swift::misc::simulation::ISimulationEnvironmentProvider *provider)
Set the provider.
virtual bool testAddAltitudeOffset(const swift::misc::aviation::CCallsign &callsign, const swift::misc::physical_quantities::CLength &offset=swift::misc::physical_quantities::CLength::null())
Add altitude offset for testing.
virtual int remoteAircraftPartsCount(const swift::misc::aviation::CCallsign &callsign) const
All parts (per callsign, time history)
virtual int updateMultipleAircraftEnabled(const swift::misc::aviation::CCallsignSet &callsigns, bool enabled)
Enable/disable aircraft.
virtual swift::misc::network::CServer getConnectedServer() const
Server which is connected, if not connected empty default object.
virtual int remoteAircraftSituationChangesCount(const swift::misc::aviation::CCallsign &callsign) const
Aircraft changes count.
virtual swift::misc::aviation::CFlightPlan loadFlightPlanFromNetwork(const swift::misc::aviation::CCallsign &callsign) const
Load flight plan (from network)
virtual void testReceivedAtisMessage(const swift::misc::aviation::CCallsign &callsign, const swift::misc::aviation::CInformationMessage &msg)
Inject an ATIS.
virtual bool updateAircraftModel(const swift::misc::aviation::CCallsign &callsign, const swift::misc::simulation::CAircraftModel &model, const swift::misc::CIdentifier &originator)
Change model.
virtual swift::misc::network::CClientList getClients() const
Get other clients.
virtual swift::misc::simulation::ReverseLookupLogging isReverseLookupMessagesEnabled() const
Enabled reverse lookup logging?
virtual QString getNetworkStatistics(bool reset, const QString &separator)
Statistics info.
virtual void clearClients()
Set other clients.
virtual swift::misc::simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const
Current snapshot.
virtual swift::misc::aviation::CAircraftSituationList remoteAircraftSituations(const swift::misc::aviation::CCallsign &callsign) const
Rendered aircraft situations (per callsign, time history)
virtual qint64 situationsLastModified(const swift::misc::aviation::CCallsign &callsign) const
When last modified.
virtual bool setClientGndCapability(const swift::misc::aviation::CCallsign &callsign, bool supportGndFlag)
Set gnd.flag capability.
virtual swift::misc::network::CUser getUserForCallsign(const swift::misc::aviation::CCallsign &callsign) const
User for given callsign, e.g. for text messages.
virtual int aircraftSituationsAdded() const
Number of situations added.
virtual swift::misc::aviation::CAircraftPartsList remoteAircraftParts(const swift::misc::aviation::CCallsign &callsign) const
All parts (per callsign, time history)
virtual bool updateCG(const swift::misc::aviation::CCallsign &callsign, const swift::misc::physical_quantities::CLength &cg)
Update the CG.
virtual bool isVtolAircraft(const swift::misc::aviation::CCallsign &callsign) const
Is VTOL aircraft?
virtual bool isConnected() const
Network connected?
virtual void requestAtisUpdates()
Request ATIS updates (for all stations)
virtual swift::misc::simulation::CSimulatedAircraft getOwnAircraft() const
Get own aircraft.
void changedLogOrDebugSettings()
Log or debug values changed.
CCoreFacade * getRuntime()
Runtime.
bool isUsingImplementingObject() const
Using local implementing object?
const IContextSimulator * getIContextSimulator() const
Context for simulator.
IContextNetwork * getIContextNetwork()
Context for network.
IContextOwnAircraft * getIContextOwnAircraft()
Context for own aircraft.
bool isDebugEnabled() const
Debug enabled?
void textMessageSent(const swift::misc::network::CTextMessage &sentMessage)
Text message sent (by me)
void changedAircraftInRange()
Aircraft list has been changed.
void supervisorTextMessageReceived(const swift::misc::network::CTextMessage &message)
A supervisor text message was received.
void connectedServerChanged(const swift::misc::network::CServer &server)
The connected server has been changed.
void changedFastPositionUpdates(const swift::misc::simulation::CSimulatedAircraft &aircraft)
Aircraft enabled / disabled.
void addedAircraft(const swift::misc::simulation::CSimulatedAircraft &remoteAircraft)
A new aircraft appeared.
void changedGndFlagCapability(const swift::misc::simulation::CSimulatedAircraft &aircraft)
Changed gnd. flag capability.
void muteRequestReceived(bool mute)
Mute request received.
void changedRemoteAircraftModel(const swift::misc::simulation::CSimulatedAircraft &aircraft, const swift::misc::CIdentifier &originator)
Aircraft model was changed.
void changedAtcStationsOnline()
ATC station (online) list has been changed.
void textMessagesReceived(const swift::misc::network::CTextMessageList &textMessages)
Text messages received (also private chat messages, radio channel messages)
void kicked(const QString &kickMessage)
User has been kicked from network.
std::function< void(const swift::misc::network::CRawFsdMessage &)> RawFsdMessageReceivedSlot
Raw FSD message receiver functor.
void changedRemoteAircraftEnabled(const swift::misc::simulation::CSimulatedAircraft &aircraft)
Aircraft enabled / disabled.
void connectionStatusChanged(const swift::misc::network::CConnectionStatus &from, const swift::misc::network::CConnectionStatus &to)
Connection status changed.
void atcStationDisconnected(const swift::misc::aviation::CAtcStation &atcStation)
ATC station disconnected.
void severeNetworkError(const QString &errorMessage)
Network error.
void readyForModelMatching(const swift::misc::simulation::CSimulatedAircraft &renderedAircraft)
Read for model matching.
void removedAircraft(const swift::misc::aviation::CCallsign &callsign)
An aircraft disappeared.
virtual bool updateOwnAircraftPilot(const swift::misc::network::CUser &pilot)=0
Set current pilot.
virtual swift::misc::aviation::CAircraftSituation getOwnAircraftSituation() const =0
Get own aircraft.
virtual swift::misc::simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const =0
Simulator info, currently loaded plugin.
FSD client Todo: Send (interim) data updates automatically Todo Check ':' in FSD messages....
void setCallsign(const swift::misc::aviation::CCallsign &callsign)
Preset functions.
swift::misc::aviation::CCallsign getPresetPartnerCallsign() const
Partner callsign if any.
void setIcaoCodes(const swift::misc::simulation::CSimulatedAircraft &ownAircraft)
Preset functions.
void textMessagesReceived(const swift::misc::network::CTextMessageList &messages)
Client responses received.
void sendFlightPlan(const swift::misc::aviation::CFlightPlan &flightPlan)
bool isConnected() const
Connection status.
void setAtcRating(AtcRating rating)
Preset functions.
void sendTextMessages(const swift::misc::network::CTextMessageList &messages)
bool isPendingConnection() const
Connection status.
swift::misc::aviation::CCallsign getPresetCallsign() const
Callsign if any.
void setLoginMode(const swift::misc::network::CLoginMode &mode)
Preset functions.
swift::misc::aviation::CCallsignSet getInterimPositionReceivers() const
Interim pos.receivers.
void setClientName(const QString &clientName)
Preset functions.
void gracefulShutdown()
Gracefully shut down FSD client.
void setServer(const swift::misc::network::CServer &server)
Preset functions.
void setClientCapabilities(Capabilities capabilities)
Preset functions.
void setLiveryAndModelString(const QString &livery, bool sendLiveryString, const QString &modelString, bool sendModelString)
Preset functions.
void setPartnerCallsign(const swift::misc::aviation::CCallsign &callsign)
Preset functions.
const swift::misc::network::CServer & getServer() const
Get the server.
swift::misc::network::CLoginMode getLoginMode() const
Mode.
void disconnectFromServer()
Connect/disconnect.
bool setStatisticsEnable(bool enabled)
Statistics enable functions.
void atisReplyReceived(const swift::misc::aviation::CCallsign &callsign, const swift::misc::aviation::CInformationMessage &atis)
We received a reply to one of our ATIS queries.
void setInterimPositionReceivers(const swift::misc::aviation::CCallsignSet &interimPositionReceivers)
Interim pos.receivers.
QStringList getPresetValues() const
List of all preset values.
void setPilotRating(PilotRating rating)
Preset functions.
void setSimType(const swift::misc::simulation::CSimulatorInfo &simInfo)
Preset functions.
void sendClientQueryAircraftConfig(const swift::misc::aviation::CCallsign &callsign)
void sendTextMessage(const swift::misc::network::CTextMessage &message)
void setVersion(int major, int minor)
Preset functions.
void sendClientQueryFlightPlan(const swift::misc::aviation::CCallsign &callsign)
void connectToServer()
Connect/disconnect.
QString getNetworkStatisticsAsText(bool reset, const QString &separator="\n")
Text statistics.
bool isEmpty() const
Synonym for empty.
iterator push_back(const T &value)
Synonym for insert.
void start(QThread::Priority priority=QThread::InheritPriority)
Starts a thread and moves the worker into it.
void inputSignal()
Received input signal, or manually trigger.
Value object encapsulating information identifying a component of a modular distributed swift process...
static const QString & contextSlot()
Context slots.
static const QString & validation()
Validation.
Class for emitting a log message.
Derived & validationError(const char16_t(&format)[N])
Set the severity to error, providing a format string, and adding the validation category.
Derived & debug()
Set the severity to debug.
Derived & info(const char16_t(&format)[N])
Set the severity to info, providing a format string.
Specialized value object compliant map for variants, based on indexes.
size_type size() const
Returns number of elements in the sequence.
void push_back(const T &value)
Appends an element at the end of the sequence.
bool isEmpty() const
Synonym for empty.
Utility methods for simple line parsing used with the command line.
Streamable status message, e.g.
constexpr static auto SeverityError
Status severities.
constexpr static auto SeverityInfo
Status severities.
constexpr static auto SeverityWarning
Status severities.
Status messages, e.g. from Core -> GUI.
bool hasDesignator() const
Aircraft designator?
Value object encapsulating information of aircraft's parts.
Value object encapsulating a list of aircraft parts.
Value object encapsulating a list of aircraft parts.
Value object encapsulating information of an aircraft's situation.
GndElevationInfo
Where did we get elevation from?
List of aircraft situations.
Value object encapsulating information of airport ICAO data.
Value object encapsulating information about an ATC station.
Value object for a list of ATC stations.
CAtcStationList findIfFrequencyIsWithinSpacing(const physical_quantities::CFrequency &frequency)
Find 0..n stations with frequency (with 5 kHz spacing for .x20/.x25 and .x70/.x75)
Value object encapsulating information of a callsign.
const QString & asString() const
Get callsign (normalized)
bool isEmpty() const
Is empty?
bool isValid() const
Valid callsign?
Value object for a set of callsigns.
Value object for a flight plan.
swift::misc::physical_quantities::CFrequency getFrequencyActive() const
Active frequency.
OBJ findFirstByCallsign(const CCallsign &callsign, const OBJ &ifNotFound={}) const
Find the first aircraft by callsign, if none return given one.
bool containsCallsign(const CCallsign &callsign) const
Contains callsign?
Plane of same elevation, can be a single point or larger area (e.g. airport)
CONTAINER findClosest(int number, const ICoordinateGeodetic &coordinate) const
Find 0..n objects closest to the given coordinate.
void calculcateAndUpdateRelativeDistanceAndBearing(const ICoordinateGeodetic &position)
Calculate distances.
QString toQString(bool i18n=false) const
Cast as QString.
void setClientProvider(CClientProvider *provider)
Provider.
Value object encapsulating a list of voice rooms.
virtual int removeClient(const aviation::CCallsign &callsign)
Remove client.
virtual int updateOrAddClient(const aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm, bool skipEqualValues=true)
Update or add a client.
virtual bool hasClientInfo(const aviation::CCallsign &callsign) const
Client info for given callsign?
virtual bool addClientGndCapability(const aviation::CCallsign &callsign)
Add gnd.flag capability.
virtual CClientList getClientsForCallsigns(const aviation::CCallsignSet &callsigns) const
Returns a list of other clients corresponding to the given callsigns.
virtual void markAsSwiftClient(const aviation::CCallsign &callsign)
Mark as other swift client.
virtual bool setOtherClient(const swift::misc::network::CClient &client)
Set client for its callsign.
virtual bool addNewClient(const CClient &client)
Add a new client, if existing nothing will be added.
virtual void setClients(const CClientList &clients)
Set other clients.
virtual CClientList getClients() const
clientprovider
virtual void clearClients()
Set other clients.
virtual CClient getClientOrDefaultForCallsign(const aviation::CCallsign &callsign) const
Other client for the given callsigns.
virtual bool setClientGndCapability(const aviation::CCallsign &callsign, bool supportGndFlag)
Set gnd.flag capability.
virtual bool autoAdjustCientGndCapability(const aviation::CAircraftSituation &situation)
Adjust gnd.flag capability from situation.
Value object encapsulating information about a connection status.
bool isConnected() const
Query status.
bool isDisconnected() const
Query status.
Value object encapsulating information about login mode.
void setLoginMode(LoginMode mode)
Set login mode.
Value object encapsulating information of a server.
int getPort() const
Get port.
const QString & getAddress() const
Get address.
const CUser & getUser() const
Get user.
Value object encapsulating a list of servers.
Value object encapsulating information of a text message.
bool isRelayedMessage() const
Is relayed message.
void setMessage(const QString &message)
Set message.
bool isPrivateMessage() const
Is private message?
void setSenderCallsign(const aviation::CCallsign &callsign)
Set callsign (from)
bool isEmpty() const
Empty message.
void setRecipientCallsign(const aviation::CCallsign &callsign)
Set callsign (recipient)
const aviation::CCallsign & getSenderCallsign() const
Get callsign (from)
void setFrequency(const physical_quantities::CFrequency &frequency)
Set frequency.
const aviation::CCallsign & getRecipientCallsign() const
Get callsign (to)
Value object encapsulating a list of text messages.
CTextMessageList withRemovedPrivateMessagesFromCallsign(const aviation::CCallsign &callsign) const
With removed private messages from callsign.
bool containsPrivateMessages() const
Contains private messages?
CTextMessageList findByNotForRecipient(const swift::misc::aviation::CCallsign &recipient) const
Find by recipient is NOT addressed.
CTextMessageList findBySender(const swift::misc::aviation::CCallsign &sender) const
Find by sender.
CTextMessageList getPrivateMessages() const
Private messages.
CTextMessageList getSupervisorMessages() const
Supervisor messages.
CTextMessageList withRelayedToPrivateMessages() const
List with relayed messages (if any) as private messages.
CTextMessageList findByRecipient(const swift::misc::aviation::CCallsign &recipient) const
Find by recipient.
CTextMessageList markedAsSent()
Marked as sent.
Value object encapsulating information of a user.
bool hasCredentials() const
Valid credentials?
Value object encapsulating a list of voice rooms.
Physical unit length (length)
void parseFromString(const QString &value)
Parse value from string.
int valueInteger(MU unit) const
As integer value.
bool isNull() const
Is quantity null?
QString valueRoundedWithUnit(const MU &unit, int digits=-1, bool withGroupSeparator=false, bool i18n=false) const
Value to QString with the given unit, e.g. "5.00m".
bool isPositiveWithEpsilonConsidered() const
Value >= 0 epsilon considered.
void parseFromString(const QString &time)
From string hh:mm, or hh:mm:ss, or time units such as s, min.
Aircraft model (used by another pilot, my models on disk)
QString getSwiftLiveryString(bool aircraftIcao=true, bool livery=true, bool model=true) const
swift livery string (to be sent via network)
Current situation in the skies analyzed.
virtual swift::misc::CStatusMessageList getReverseLookupMessages(const swift::misc::aviation::CCallsign &callsign) const
Get reverse lookup meesages.
virtual bool isAircraftInRange(const aviation::CCallsign &callsign) const
Is aircraft in range?
virtual int remoteAircraftSituationChangesCount(const aviation::CCallsign &callsign) const
Aircraft changes count.
virtual void updateMarkAllAsNotRendered()
Mark all as not rendered.
virtual int updateMultipleAircraftRendered(const aviation::CCallsignSet &callsigns, bool rendered)
Set aircraft rendered.
virtual CSimulatedAircraftList getAircraftInRange() const
All remote aircraft.
virtual bool updateCGAndModelString(const aviation::CCallsign &callsign, const physical_quantities::CLength &cg, const QString &modelString)
Update the CG and model string.
virtual bool setAircraftEnabledFlag(const swift::misc::aviation::CCallsign &callsign, bool enabledForRendering)
Just set enable/disable aircraft flag, no further logic.
virtual aviation::CCallsignSet remoteAircraftSupportingParts() const
Remote aircraft supporting parts.
virtual int getRemoteAircraftSupportingPartsCount() const
Number of aircraft supporting parts.
virtual qint64 situationsLastModified(const aviation::CCallsign &callsign) const
When last modified.
void changedAircraftInRange()
Aircraft were changed.
virtual bool isAircraftPartsHistoryEnabled() const
Is storing aircraft parts history enabled?
virtual int remoteAircraftSituationsCount(const aviation::CCallsign &callsign) const
Number of remote aircraft situations for callsign.
virtual aviation::CAircraftSituation remoteAircraftSituation(const aviation::CCallsign &callsign, int index) const
Rendered aircraft situations (per callsign and index)
virtual geo::CElevationPlane averageElevationOfNonMovingAircraft(const aviation::CAircraftSituation &reference, const physical_quantities::CLength &range, int minValues=1, int sufficientValues=2) const
Average elevation of aircraft in given range, which are NOT moving.
virtual aviation::CAircraftSituationList remoteAircraftSituations(const aviation::CCallsign &callsign) const
Rendered aircraft situations (per callsign, time history)
virtual bool isVtolAircraft(const aviation::CCallsign &callsign) const
Is VTOL aircraft?
virtual aviation::CAircraftSituationChangeList remoteAircraftSituationChanges(const aviation::CCallsign &callsign) const
Aircraft changes.
virtual MillisecondsMinMaxMean remoteAircraftSituationsTimestampDifferenceMinMaxMean(const aviation::CCallsign &callsign) const
Average update time.
virtual aviation::CCallsignSet updateCGForModel(const QString &modelString, const physical_quantities::CLength &cg)
Update the CG for this model string.
virtual void enableAircraftPartsHistory(bool enabled)
Enable storing of aircraft parts history.
virtual CStatusMessageList getAircraftPartsHistory(const aviation::CCallsign &callsign) const
Get aircraft parts history.
void addedAircraft(const swift::misc::simulation::CSimulatedAircraft &remoteAircraft)
A new aircraft appeared.
virtual int remoteAircraftPartsCount(const aviation::CCallsign &callsign) const
All parts (per callsign, time history)
virtual bool updateAircraftEnabled(const aviation::CCallsign &callsign, bool enabledForRendering)
Enable/disable aircraft and follow up logic like sending signals.
virtual void rememberCGFromDB(const physical_quantities::CLength &cgFromDB, const aviation::CCallsign &callsign)
CG values from DB.
virtual int aircraftPartsAdded() const
Number of parts added.
virtual aviation::CAircraftSituationList latestRemoteAircraftSituations() const
Latest aircraft situation for all callsigns.
virtual bool updateAircraftNetworkModel(const aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator)
Change network model.
virtual bool updateAircraftModel(const aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator)
Change model.
virtual physical_quantities::CLength getCGFromDB(const aviation::CCallsign &callsign) const
CG values from DB.
virtual qint64 partsLastModified(const aviation::CCallsign &callsign) const
When last modified.
virtual QList< QMetaObject::Connection > connectRemoteAircraftProviderSignals(QObject *receiver, std::function< void(const aviation::CAircraftSituation &)> addedSituationSlot, std::function< void(const aviation::CCallsign &, const aviation::CAircraftParts &)> addedPartsSlot, std::function< void(const aviation::CCallsign &)> removedAircraftSlot, std::function< void(const CAirspaceAircraftSnapshot &)> aircraftSnapshotSlot)
Connect signals to slot receiver. As the interface is no QObject, slots can not be connected directly...
virtual bool updateAircraftRendered(const aviation::CCallsign &callsign, bool rendered)
Set aircraft rendered.
virtual aviation::CAircraftSituationList latestOnGroundProviderElevations() const
Latest aircraft situation "on ground" having a provider elevation.
virtual aviation::CCallsignSet getAircraftInRangeCallsigns() const
Unique callsigns for aircraft in range.
virtual ReverseLookupLogging isReverseLookupMessagesEnabled() const
Enabled reverse lookup logging?
virtual CAircraftModel getAircraftInRangeModelForCallsign(const aviation::CCallsign &callsign) const
Aircraft model for callsign.
virtual CSimulatedAircraft getAircraftInRangeForCallsign(const aviation::CCallsign &callsign) const
Aircraft for callsign.
virtual int aircraftSituationsAdded() const
Number of situations added.
virtual aviation::CAircraftPartsList remoteAircraftParts(const aviation::CCallsign &callsign) const
All parts (per callsign, time history)
virtual void enableReverseLookupMessages(ReverseLookupLogging enable)
Enable reverse lookup logging.
virtual int updateMultipleAircraftEnabled(const aviation::CCallsignSet &callsigns, bool enabledForRendering)
Enable/disable aircraft.
virtual bool updateCG(const aviation::CCallsign &callsign, const physical_quantities::CLength &cg)
Update the CG.
virtual bool isRemoteAircraftSupportingParts(const aviation::CCallsign &callsign) const
Is remote aircraft supporting parts?
virtual int getAircraftInRangeCount() const
Count remote aircraft.
bool testAddAltitudeOffset(const aviation::CCallsign &callsign, const physical_quantities::CLength &offset)
Offset for callsign.
void removedAircraft(const swift::misc::aviation::CCallsign &callsign)
An aircraft disappeared.
virtual int updateAircraftGroundElevation(const aviation::CCallsign &callsign, const geo::CElevationPlane &elevation, aviation::CAircraftSituation::GndElevationInfo info, bool *setForOnGroundPosition)
Update the ground elevation.
Comprehensive information of an aircraft.
const aviation::CComSystem & getCom2System() const
Get COM2 system.
bool isSupportingGndFlag() const
Is supporting gnd.flag?
bool fastPositionUpdates() const
Support fast position updates.
const aviation::CCallsign & getCallsign() const
Get callsign.
const aviation::CAircraftIcaoCode & getAircraftIcaoCode() const
Get aircraft ICAO info.
const simulation::CAircraftModel & getModel() const
Get model (model used for mapping)
QString getCallsignAsString() const
Get callsign.
const aviation::CComSystem & getCom1System() const
Get COM1 system.
const QString & getModelString() const
Get model string.
Value object encapsulating a list of aircraft.
void setSimulationEnvironmentProvider(ISimulationEnvironmentProvider *provider)
Set the provider.
Simple hardcoded info about the corresponding simulator.
const CSimulatorInfo & getSimulatorInfo() const
Simulator info object.
static const aviation::CCallsign & testAltitudeOffsetCallsign()
Wildcard callsign.
Direct in memory access to elevation data.
virtual bool parseCommandLine(const QString &commandLine, const swift::misc::CIdentifier &originator)
Parse a given command line.
bool parseCommandLine(const QString &commandLine, const swift::misc::CIdentifier &originator)
Parse a given command line.
Free functions in swift::misc.
SWIFT_MISC_EXPORT const QString & boolToOnOff(bool v)
Bool to on/off.
auto singleShot(int msec, QObject *target, F &&task)
Starts a single-shot timer which will call a task in the thread of the given object when it times out...
Milliseconds minimum/maximum/mean.