mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-18 19:35:33 +08:00
Ref T706, some fixes around the ATIS voiceroom URL issue
Discord: https://discordapp.com/channels/539048679160676382/602915311380987905/602917602293055489
This commit is contained in:
@@ -298,7 +298,7 @@ namespace BlackCore
|
|||||||
return stations.front();
|
return stations.front();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CAirspaceMonitor::requestDataUpdates()
|
void CAirspaceMonitor::requestAircraftDataUpdates()
|
||||||
{
|
{
|
||||||
if (!this->isConnectedAndNotShuttingDown()) { return; }
|
if (!this->isConnectedAndNotShuttingDown()) { return; }
|
||||||
const CSimulatedAircraftList aircraftInRange(this->getAircraftInRange());
|
const CSimulatedAircraftList aircraftInRange(this->getAircraftInRange());
|
||||||
@@ -323,7 +323,8 @@ namespace BlackCore
|
|||||||
const CAtcStationList stations(this->getAtcStationsOnline());
|
const CAtcStationList stations(this->getAtcStationsOnline());
|
||||||
for (const CAtcStation &station : stations)
|
for (const CAtcStation &station : stations)
|
||||||
{
|
{
|
||||||
m_network->sendAtisQuery(station.getCallsign()); // for each online station
|
const CCallsign cs = station.getCallsign();
|
||||||
|
m_network->sendAtisQuery(cs); // for each online station
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -722,9 +723,12 @@ namespace BlackCore
|
|||||||
this->updateBookedStation(callsign, vm);
|
this->updateBookedStation(callsign, vm);
|
||||||
|
|
||||||
// receiving voice room means ATC has voice
|
// receiving voice room means ATC has voice
|
||||||
|
if (!trimmedUrl.isEmpty())
|
||||||
|
{
|
||||||
vm = CPropertyIndexVariantMap(CClient::IndexVoiceCapabilities, CVariant::from(CVoiceCapabilities::fromVoiceCapabilities(CVoiceCapabilities::Voice)));
|
vm = CPropertyIndexVariantMap(CClient::IndexVoiceCapabilities, CVariant::from(CVoiceCapabilities::fromVoiceCapabilities(CVoiceCapabilities::Voice)));
|
||||||
this->updateOrAddClient(callsign, vm, false);
|
this->updateOrAddClient(callsign, vm, false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CAirspaceMonitor::onAtisLogoffTimeReceived(const CCallsign &callsign, const QString &zuluTime)
|
void CAirspaceMonitor::onAtisLogoffTimeReceived(const CCallsign &callsign, const QString &zuluTime)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ namespace BlackCore
|
|||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
//! Request to update other clients' data from the network
|
//! Request to update other clients' data from the network
|
||||||
void requestDataUpdates();
|
void requestAircraftDataUpdates();
|
||||||
|
|
||||||
//! Request to update ATC stations' ATIS data from the network
|
//! Request to update ATC stations' ATIS data from the network
|
||||||
void requestAtisUpdates();
|
void requestAtisUpdates();
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ namespace BlackCore
|
|||||||
virtual BlackMisc::Aviation::CAtcStationList getSelectedAtcStations() const = 0;
|
virtual BlackMisc::Aviation::CAtcStationList getSelectedAtcStations() const = 0;
|
||||||
|
|
||||||
//! Request data updates (pilot's frequencies, ATIS, ..)
|
//! Request data updates (pilot's frequencies, ATIS, ..)
|
||||||
virtual void requestDataUpdates() = 0;
|
virtual void requestAircraftDataUpdates() = 0;
|
||||||
|
|
||||||
//! Request ATIS updates (for all stations)
|
//! Request ATIS updates (for all stations)
|
||||||
virtual void requestAtisUpdates() = 0;
|
virtual void requestAtisUpdates() = 0;
|
||||||
|
|||||||
@@ -255,8 +255,8 @@ namespace BlackCore
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \copydoc IContextNetwork::requestDataUpdates
|
//! \copydoc IContextNetwork::requestAircraftDataUpdates
|
||||||
virtual void requestDataUpdates()override
|
virtual void requestAircraftDataUpdates()override
|
||||||
{
|
{
|
||||||
logEmptyContextWarning(Q_FUNC_INFO);
|
logEmptyContextWarning(Q_FUNC_INFO);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,9 +80,16 @@ namespace BlackCore
|
|||||||
connect(m_network, &INetwork::textMessageSent, this, &CContextNetwork::textMessageSent);
|
connect(m_network, &INetwork::textMessageSent, this, &CContextNetwork::textMessageSent);
|
||||||
|
|
||||||
// 2. Update timer for data (network data such as frequency)
|
// 2. Update timer for data (network data such as frequency)
|
||||||
m_networkDataUpdateTimer = new QTimer(this);
|
// we use 2 timers so we can query at different times (not too many queirs at once)
|
||||||
connect(m_networkDataUpdateTimer, &QTimer::timeout, this, &CContextNetwork::requestDataUpdates);
|
m_requestAircraftDataTimer = new QTimer(this);
|
||||||
m_networkDataUpdateTimer->start(30 * 1000);
|
connect(m_requestAircraftDataTimer, &QTimer::timeout, this, &CContextNetwork::requestAircraftDataUpdates);
|
||||||
|
m_requestAircraftDataTimer->start(30 * 1000);
|
||||||
|
m_requestAircraftDataTimer->setObjectName("CContextNetwork::m_requestAircraftDataTimer");
|
||||||
|
|
||||||
|
m_requestAtisTimer = new QTimer(this);
|
||||||
|
connect(m_requestAtisTimer, &QTimer::timeout, this, &CContextNetwork::requestAtisUpdates);
|
||||||
|
m_requestAtisTimer->start(13 * 1000); // should not be called at the same time as above
|
||||||
|
m_requestAtisTimer->setObjectName("CContextNetwork::m_requestAtisTimer");
|
||||||
|
|
||||||
// 3. Airspace contents
|
// 3. Airspace contents
|
||||||
Q_ASSERT_X(this->getRuntime()->getCContextOwnAircraft(), Q_FUNC_INFO, "this and own aircraft context must be local");
|
Q_ASSERT_X(this->getRuntime()->getCContextOwnAircraft(), Q_FUNC_INFO, "this and own aircraft context must be local");
|
||||||
@@ -858,14 +865,14 @@ namespace BlackCore
|
|||||||
return m_airspace->getAtcStationsOnline().containsCallsign(callsign);
|
return m_airspace->getAtcStationsOnline().containsCallsign(callsign);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CContextNetwork::requestDataUpdates()
|
void CContextNetwork::requestAircraftDataUpdates()
|
||||||
{
|
{
|
||||||
Q_ASSERT(m_airspace);
|
Q_ASSERT(m_airspace);
|
||||||
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
|
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||||
if (!this->isConnected()) { return; }
|
if (!this->isConnected()) { return; }
|
||||||
|
|
||||||
this->requestAtisUpdates();
|
m_airspace->requestAircraftDataUpdates();
|
||||||
m_airspace->requestDataUpdates();
|
if (m_requestAircraftDataTimer) { m_requestAircraftDataTimer->start(); } // restart
|
||||||
}
|
}
|
||||||
|
|
||||||
void CContextNetwork::requestAtisUpdates()
|
void CContextNetwork::requestAtisUpdates()
|
||||||
@@ -875,6 +882,7 @@ namespace BlackCore
|
|||||||
if (!this->isConnected()) { return; }
|
if (!this->isConnected()) { return; }
|
||||||
|
|
||||||
m_airspace->requestAtisUpdates();
|
m_airspace->requestAtisUpdates();
|
||||||
|
if (m_requestAtisTimer) { m_requestAtisTimer->start(); } // restart
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CContextNetwork::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRendering)
|
bool CContextNetwork::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRendering)
|
||||||
@@ -884,7 +892,7 @@ namespace BlackCore
|
|||||||
const bool c = m_airspace->updateAircraftEnabled(callsign, enabledForRendering);
|
const bool c = m_airspace->updateAircraftEnabled(callsign, enabledForRendering);
|
||||||
if (c)
|
if (c)
|
||||||
{
|
{
|
||||||
CSimulatedAircraft aircraft(this->getAircraftInRangeForCallsign(callsign));
|
const CSimulatedAircraft aircraft(this->getAircraftInRangeForCallsign(callsign));
|
||||||
Q_ASSERT_X(!aircraft.getCallsign().isEmpty(), Q_FUNC_INFO, "missing callsign");
|
Q_ASSERT_X(!aircraft.getCallsign().isEmpty(), Q_FUNC_INFO, "missing callsign");
|
||||||
emit this->changedRemoteAircraftEnabled(aircraft);
|
emit this->changedRemoteAircraftEnabled(aircraft);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ namespace BlackCore
|
|||||||
virtual BlackMisc::Network::CUser getUserForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
virtual BlackMisc::Network::CUser getUserForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||||
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const override;
|
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const override;
|
||||||
virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const override;
|
virtual BlackMisc::Network::CServerList getVatsimVoiceServers() const override;
|
||||||
virtual void requestDataUpdates()override;
|
virtual void requestAircraftDataUpdates()override;
|
||||||
virtual void requestAtisUpdates() override;
|
virtual void requestAtisUpdates() override;
|
||||||
virtual void setFastPositionEnabledCallsigns(BlackMisc::Aviation::CCallsignSet &callsigns) override;
|
virtual void setFastPositionEnabledCallsigns(BlackMisc::Aviation::CCallsignSet &callsigns) override;
|
||||||
virtual BlackMisc::Aviation::CCallsignSet getFastPositionEnabledCallsigns() const override;
|
virtual BlackMisc::Aviation::CCallsignSet getFastPositionEnabledCallsigns() const override;
|
||||||
@@ -295,7 +295,8 @@ namespace BlackCore
|
|||||||
INetwork *m_network = nullptr;
|
INetwork *m_network = nullptr;
|
||||||
INetwork::ConnectionStatus m_currentStatus = INetwork::Disconnected; //!< used to detect pending connections
|
INetwork::ConnectionStatus m_currentStatus = INetwork::Disconnected; //!< used to detect pending connections
|
||||||
INetwork::LoginMode m_currentMode = INetwork::LoginNormal; //!< current modeM
|
INetwork::LoginMode m_currentMode = INetwork::LoginNormal; //!< current modeM
|
||||||
QTimer *m_networkDataUpdateTimer = nullptr; //!< general updates such as ATIS, frequencies, see requestDataUpdates()
|
QTimer *m_requestAircraftDataTimer = nullptr; //!< general updates such as frequencies, see requestAircraftDataUpdates()
|
||||||
|
QTimer *m_requestAtisTimer = nullptr; //!< general updates such as ATIS
|
||||||
|
|
||||||
// Digest signals, only sending after some time
|
// Digest signals, only sending after some time
|
||||||
BlackMisc::CDigestSignal m_dsAtcStationsBookedChanged { this, &IContextNetwork::changedAtcStationsBooked, &IContextNetwork::changedAtcStationsBookedDigest, 1000, 2 };
|
BlackMisc::CDigestSignal m_dsAtcStationsBookedChanged { this, &IContextNetwork::changedAtcStationsBooked, &IContextNetwork::changedAtcStationsBookedDigest, 1000, 2 };
|
||||||
@@ -308,12 +309,12 @@ namespace BlackCore
|
|||||||
//! Update METAR collection
|
//! Update METAR collection
|
||||||
void updateMetars(const BlackMisc::Weather::CMetarList &metars);
|
void updateMetars(const BlackMisc::Weather::CMetarList &metars);
|
||||||
|
|
||||||
//! An ATIS has been received
|
|
||||||
void onChangedAtisReceived(const BlackMisc::Aviation::CCallsign &callsign);
|
|
||||||
|
|
||||||
//! Check if a supervisor message was received
|
//! Check if a supervisor message was received
|
||||||
void checkForSupervisiorTextMessage(const BlackMisc::Network::CTextMessageList &messages);
|
void checkForSupervisiorTextMessage(const BlackMisc::Network::CTextMessageList &messages);
|
||||||
|
|
||||||
|
//! An ATIS has been received
|
||||||
|
void onChangedAtisReceived(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
|
||||||
//! Connection status changed
|
//! Connection status changed
|
||||||
void onFsdConnectionStatusChanged(BlackCore::INetwork::ConnectionStatus from, BlackCore::INetwork::ConnectionStatus to);
|
void onFsdConnectionStatusChanged(BlackCore::INetwork::ConnectionStatus from, BlackCore::INetwork::ConnectionStatus to);
|
||||||
|
|
||||||
|
|||||||
@@ -213,9 +213,9 @@ namespace BlackCore
|
|||||||
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAtcStationList>(QLatin1String("getSelectedAtcStations"));
|
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAtcStationList>(QLatin1String("getSelectedAtcStations"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CContextNetworkProxy::requestDataUpdates()
|
void CContextNetworkProxy::requestAircraftDataUpdates()
|
||||||
{
|
{
|
||||||
m_dBusInterface->callDBus(QLatin1String("requestDataUpdates"));
|
m_dBusInterface->callDBus(QLatin1String("requestAircraftDataUpdates"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void CContextNetworkProxy::requestAtisUpdates()
|
void CContextNetworkProxy::requestAtisUpdates()
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ namespace BlackCore
|
|||||||
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const override;
|
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const override;
|
||||||
virtual BlackMisc::Network::CClientList getClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override;
|
virtual BlackMisc::Network::CClientList getClientsForCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns) const override;
|
||||||
virtual bool setOtherClient(const BlackMisc::Network::CClient &client) override;
|
virtual bool setOtherClient(const BlackMisc::Network::CClient &client) override;
|
||||||
virtual void requestDataUpdates()override;
|
virtual void requestAircraftDataUpdates()override;
|
||||||
virtual void requestAtisUpdates() override;
|
virtual void requestAtisUpdates() override;
|
||||||
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
|
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
|
||||||
virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
|
virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
|
||||||
|
|||||||
@@ -1606,15 +1606,17 @@ namespace BlackCore
|
|||||||
self->increaseStatisticsValue(__func__);
|
self->increaseStatisticsValue(__func__);
|
||||||
|
|
||||||
const CCallsign cs(self->fromFSD(callsign), CCallsign::Atc);
|
const CCallsign cs(self->fromFSD(callsign), CCallsign::Atc);
|
||||||
emit self->atisVoiceRoomReplyReceived(cs, self->fromFSD(atis->voiceRoom));
|
const QString voiceRoom(self->fromFSD(atis->voiceRoom));
|
||||||
emit self->atisLogoffTimeReplyReceived(cs, self->fromFSD(atis->zuluLogoff));
|
const QString zuluLogoff = self->fromFSD(atis->zuluLogoff);
|
||||||
|
emit self->atisVoiceRoomReplyReceived(cs, voiceRoom);
|
||||||
|
emit self->atisLogoffTimeReplyReceived(cs, zuluLogoff);
|
||||||
|
|
||||||
CInformationMessage atisMessage;
|
CInformationMessage atisMessage;
|
||||||
atisMessage.setType(CInformationMessage::ATIS);
|
atisMessage.setType(CInformationMessage::ATIS);
|
||||||
for (unsigned int i = 0; i < atis->textLineCount; ++i)
|
for (unsigned int i = 0; i < atis->textLineCount; ++i)
|
||||||
{
|
{
|
||||||
const QString fixed = cbvar_cast(cbvar)->fromFSD(atis->textLines[i]).trimmed();
|
const QString fixed = cbvar_cast(cbvar)->fromFSD(atis->textLines[i]).trimmed();
|
||||||
if (! fixed.isEmpty())
|
if (!fixed.isEmpty())
|
||||||
{
|
{
|
||||||
// detect the stupid z1, z2, z3 placeholders
|
// detect the stupid z1, z2, z3 placeholders
|
||||||
//! \fixme: Anything better as this stupid code here?
|
//! \fixme: Anything better as this stupid code here?
|
||||||
|
|||||||
Reference in New Issue
Block a user