diff --git a/src/blackcore/airspacemonitor.cpp b/src/blackcore/airspacemonitor.cpp index ea2905d5d..d7edcabbf 100644 --- a/src/blackcore/airspacemonitor.cpp +++ b/src/blackcore/airspacemonitor.cpp @@ -544,22 +544,17 @@ namespace BlackCore this->updateOrAddClient(callsign, vm, false); } - void CAirspaceMonitor::onCapabilitiesReplyReceived(const CCallsign &callsign, quint32 flags) + void CAirspaceMonitor::onCapabilitiesReplyReceived(const CCallsign &callsign, int clientCaps) { if (!this->isConnected() || callsign.isEmpty()) { return; } - CPropertyIndexVariantMap capabilities; - capabilities.addValue(CClient::FsdAtisCanBeReceived, (flags & INetwork::AcceptsAtisResponses)); - capabilities.addValue(CClient::FsdWithInterimPositions, (flags & INetwork::SupportsInterimPosUpdates)); - capabilities.addValue(CClient::FsdWithIcaoCodes, (flags & INetwork::SupportsIcaoCodes)); - capabilities.addValue(CClient::FsdWithAircraftConfig, (flags & INetwork::SupportsAircraftConfigs)); - - CPropertyIndexVariantMap vm(CClient::IndexCapabilities, CVariant::from(capabilities)); - const CVoiceCapabilities caps = sApp->getWebDataServices()->getVoiceCapabilityForCallsign(callsign); - vm.addValue({CClient::IndexVoiceCapabilities}, caps); + CClient::Capabilities caps = static_cast(clientCaps); + const CVoiceCapabilities voiceCaps = sApp->getWebDataServices()->getVoiceCapabilityForCallsign(callsign); + CPropertyIndexVariantMap vm(CClient::IndexCapabilities, CVariant::from(clientCaps)); + vm.addValue({CClient::IndexVoiceCapabilities}, voiceCaps); this->updateOrAddClient(callsign, vm, false); // for aircraft parts - if (flags & INetwork::SupportsAircraftConfigs) { m_network->sendAircraftConfigQuery(callsign); } + if (caps.testFlag(CClient::FsdWithAircraftConfig)) { m_network->sendAircraftConfigQuery(callsign); } } void CAirspaceMonitor::onServerReplyReceived(const CCallsign &callsign, const QString &server) diff --git a/src/blackcore/airspacemonitor.h b/src/blackcore/airspacemonitor.h index a4cda3b71..94687f4ce 100644 --- a/src/blackcore/airspacemonitor.h +++ b/src/blackcore/airspacemonitor.h @@ -361,7 +361,7 @@ namespace BlackCore void onCustomFSInnPacketReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &airlineIcaoDesignator, const QString &aircraftDesignator, const QString &combinedAircraftType, const QString &modelString); void onRealNameReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &realname); - void onCapabilitiesReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, quint32 flags); + void onCapabilitiesReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, int clientCaps); void onServerReplyReceived(const BlackMisc::Aviation::CCallsign &callsign, const QString &server); void onFlightPlanReceived(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CFlightPlan &flightPlan); void onAtcControllerDisconnected(const BlackMisc::Aviation::CCallsign &callsign); diff --git a/src/blackcore/network.h b/src/blackcore/network.h index 50acf9369..ad4d0bd8c 100644 --- a/src/blackcore/network.h +++ b/src/blackcore/network.h @@ -82,15 +82,6 @@ namespace BlackCore //! Underlying library info. virtual const QString &getLibraryInfo(bool detailed) const = 0; - //! Flags for capabilities bitfield -// enum Capability -// { -// AcceptsAtisResponses = 1 << 0, -// SupportsInterimPosUpdates = 1 << 1, -// SupportsIcaoCodes = 1 << 2, -// SupportsAircraftConfigs = 1 << 3 -// }; - //! Login modes enum LoginMode { diff --git a/src/blackcore/vatsim/networkvatlib.cpp b/src/blackcore/vatsim/networkvatlib.cpp index bf969107c..70dec9e94 100644 --- a/src/blackcore/vatsim/networkvatlib.cpp +++ b/src/blackcore/vatsim/networkvatlib.cpp @@ -1261,13 +1261,13 @@ namespace BlackCore void CNetworkVatlib::onCapabilitiesReplyReceived(VatFsdClient *, const char *callsign, int capabilityFlags, void *cbvar) { - int flags = 0; - if (capabilityFlags & vatCapsAtcInfo) { flags |= AcceptsAtisResponses; } - if (capabilityFlags & vatCapsFastPos) { flags |= SupportsInterimPosUpdates; } - if (capabilityFlags & vatCapsAircraftInfo) { flags |= SupportsIcaoCodes; } - if (capabilityFlags & vatCapsAircraftConfig) { flags |= SupportsAircraftConfigs; } + CClient::Capabilities caps = CClient::None; + if (capabilityFlags & vatCapsAtcInfo) { caps |= CClient::FsdAtisCanBeReceived; } + if (capabilityFlags & vatCapsFastPos) { caps |= CClient::FsdWithInterimPositions; } + if (capabilityFlags & vatCapsAircraftInfo) { caps |= CClient::FsdWithIcaoCodes; } + if (capabilityFlags & vatCapsAircraftConfig) { caps |= CClient::FsdWithAircraftConfig; } auto *self = cbvar_cast(cbvar); - emit self->capabilitiesReplyReceived(self->fromFSD(callsign), flags); + emit self->capabilitiesReplyReceived(self->fromFSD(callsign), static_cast(caps)); } void CNetworkVatlib::onAtisReplyReceived(VatFsdClient *, const char *callsign, const VatControllerAtis *atis, void *cbvar)