Ref T703, set partner callsign in network vatlib / functions in context adjusted

This commit is contained in:
Klaus Basan
2019-08-16 19:46:55 +02:00
parent 21cb1fac0d
commit f18f2327ae
9 changed files with 44 additions and 21 deletions

View File

@@ -246,6 +246,7 @@ namespace BlackCore
const BlackMisc::Network::CServer &server, const BlackMisc::Network::CServer &server,
const QString &extraLiveryString, bool sendLivery, const QString &extraLiveryString, bool sendLivery,
const QString &extraModelString, bool sendModelString, const QString &extraModelString, bool sendModelString,
const BlackMisc::Aviation::CCallsign &partnerCallsign,
BlackCore::INetwork::LoginMode loginMode) = 0; BlackCore::INetwork::LoginMode loginMode) = 0;
//! Server which is connected, if not connected empty default object. //! Server which is connected, if not connected empty default object.

View File

@@ -124,7 +124,7 @@ namespace BlackCore
} }
//! \copydoc IContextNetwork::connectToNetwork //! \copydoc IContextNetwork::connectToNetwork
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, BlackCore::INetwork::LoginMode mode) override virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const BlackMisc::Aviation::CCallsign &partnerCallsign, BlackCore::INetwork::LoginMode mode) override
{ {
Q_UNUSED(mode); Q_UNUSED(mode);
Q_UNUSED(server); Q_UNUSED(server);
@@ -132,6 +132,7 @@ namespace BlackCore
Q_UNUSED(extraLiveryString); Q_UNUSED(extraLiveryString);
Q_UNUSED(sendLivery); Q_UNUSED(sendLivery);
Q_UNUSED(sendModelString); Q_UNUSED(sendModelString);
Q_UNUSED(partnerCallsign);
logEmptyContextWarning(Q_FUNC_INFO); logEmptyContextWarning(Q_FUNC_INFO);
return statusMessageEmptyContext(); return statusMessageEmptyContext();
} }

View File

@@ -76,7 +76,7 @@ namespace BlackCore
connect(m_network, &INetwork::connectionStatusChanged, this, &CContextNetwork::onFsdConnectionStatusChanged); connect(m_network, &INetwork::connectionStatusChanged, this, &CContextNetwork::onFsdConnectionStatusChanged);
connect(m_network, &INetwork::kicked, this, &CContextNetwork::kicked); connect(m_network, &INetwork::kicked, this, &CContextNetwork::kicked);
connect(m_network, &INetwork::textMessagesReceived, this, &CContextNetwork::textMessagesReceived); connect(m_network, &INetwork::textMessagesReceived, this, &CContextNetwork::textMessagesReceived);
connect(m_network, &INetwork::textMessagesReceived, this, &CContextNetwork::checkForSupervisiorTextMessage); connect(m_network, &INetwork::textMessagesReceived, this, &CContextNetwork::onTextMessagesReceived, Qt::QueuedConnection);
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)
@@ -218,7 +218,7 @@ namespace BlackCore
if (m_airspace) { m_airspace->gracefulShutdown(); } if (m_airspace) { m_airspace->gracefulShutdown(); }
} }
CStatusMessage CContextNetwork::connectToNetwork(const CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, INetwork::LoginMode mode) CStatusMessage CContextNetwork::connectToNetwork(const CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const CCallsign &partnerCallsign, INetwork::LoginMode mode)
{ {
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
QString msg; QString msg;
@@ -232,6 +232,7 @@ namespace BlackCore
this->getIContextOwnAircraft()->updateOwnAircraftPilot(server.getUser()); this->getIContextOwnAircraft()->updateOwnAircraftPilot(server.getUser());
const CSimulatedAircraft ownAircraft(this->ownAircraft()); const CSimulatedAircraft ownAircraft(this->ownAircraft());
m_network->presetServer(server); m_network->presetServer(server);
m_network->presetPartnerCallsign(partnerCallsign);
// Fall back to observer mode, if no simulator is available or not simulating // Fall back to observer mode, if no simulator is available or not simulating
if (!CBuildConfig::isLocalDeveloperDebugBuild() && !this->getIContextSimulator()->isSimulatorSimulating()) if (!CBuildConfig::isLocalDeveloperDebugBuild() && !this->getIContextSimulator()->isSimulatorSimulating())
@@ -664,7 +665,7 @@ namespace BlackCore
m_dsAtcStationsOnlineChanged.inputSignal(); // the ATIS data are stored in the station object m_dsAtcStationsOnlineChanged.inputSignal(); // the ATIS data are stored in the station object
} }
void CContextNetwork::checkForSupervisiorTextMessage(const CTextMessageList &messages) void CContextNetwork::onTextMessagesReceived(const CTextMessageList &messages)
{ {
if (messages.containsPrivateMessages()) if (messages.containsPrivateMessages())
{ {

View File

@@ -252,7 +252,7 @@ namespace BlackCore
virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Aviation::CAtcStationList getOnlineStationsForFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ChannelSpacing channelSpacing) const override; virtual BlackMisc::Aviation::CAtcStationList getOnlineStationsForFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ChannelSpacing channelSpacing) const override;
virtual bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, BlackCore::INetwork::LoginMode mode) override; virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const BlackMisc::Aviation::CCallsign &partnerCallsign, BlackCore::INetwork::LoginMode mode) override;
virtual BlackMisc::Network::CServer getConnectedServer() const override; virtual BlackMisc::Network::CServer getConnectedServer() const override;
virtual INetwork::LoginMode getLoginMode() const override; virtual INetwork::LoginMode getLoginMode() const override;
virtual BlackMisc::CStatusMessage disconnectFromNetwork() override; virtual BlackMisc::CStatusMessage disconnectFromNetwork() override;
@@ -310,8 +310,8 @@ namespace BlackCore
//! Update METAR collection //! Update METAR collection
void updateMetars(const BlackMisc::Weather::CMetarList &metars); void updateMetars(const BlackMisc::Weather::CMetarList &metars);
//! Check if a supervisor message was received //! Check if a supervisor message was received, message has to be relayed ...
void checkForSupervisiorTextMessage(const BlackMisc::Network::CTextMessageList &messages); void onTextMessagesReceived(const BlackMisc::Network::CTextMessageList &messages);
//! An ATIS has been received //! An ATIS has been received
void onChangedAtisReceived(const BlackMisc::Aviation::CCallsign &callsign); void onChangedAtisReceived(const BlackMisc::Aviation::CCallsign &callsign);

View File

@@ -353,9 +353,9 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<bool>(QLatin1String("testAddAltitudeOffset"), callsign, offset); return m_dBusInterface->callDBusRet<bool>(QLatin1String("testAddAltitudeOffset"), callsign, offset);
} }
CStatusMessage CContextNetworkProxy::connectToNetwork(const CServer &server, const QString &extraLiveryString, bool sendLiveryString, const QString &extraModelString, bool sendModelString, INetwork::LoginMode loginMode) CStatusMessage CContextNetworkProxy::connectToNetwork(const CServer &server, const QString &extraLiveryString, bool sendLiveryString, const QString &extraModelString, bool sendModelString, const CCallsign &partnerCallsign, INetwork::LoginMode loginMode)
{ {
return m_dBusInterface->callDBusRet<BlackMisc::CStatusMessage>(QLatin1String("connectToNetwork"), server, extraLiveryString, sendLiveryString, extraModelString, sendModelString, loginMode); return m_dBusInterface->callDBusRet<BlackMisc::CStatusMessage>(QLatin1String("connectToNetwork"), server, extraLiveryString, sendLiveryString, extraModelString, sendModelString, partnerCallsign, loginMode);
} }
CStatusMessage CContextNetworkProxy::disconnectFromNetwork() CStatusMessage CContextNetworkProxy::disconnectFromNetwork()

View File

@@ -88,7 +88,7 @@ namespace BlackCore
virtual BlackMisc::Aviation::CAtcStationList getOnlineStationsForFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ChannelSpacing channelSpacing) const override; virtual BlackMisc::Aviation::CAtcStationList getOnlineStationsForFrequency(const BlackMisc::PhysicalQuantities::CFrequency &frequency, BlackMisc::Aviation::CComSystem::ChannelSpacing channelSpacing) const override;
virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, BlackCore::INetwork::LoginMode mode) override; virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, const QString &extraLiveryString, bool sendLivery, const QString &extraModelString, bool sendModelString, const BlackMisc::Aviation::CCallsign &partnerCallsign, BlackCore::INetwork::LoginMode mode) override;
virtual BlackMisc::CStatusMessage disconnectFromNetwork() override; virtual BlackMisc::CStatusMessage disconnectFromNetwork() override;
virtual bool isConnected() const override; virtual bool isConnected() const override;
virtual BlackMisc::Network::CServer getConnectedServer() const override; virtual BlackMisc::Network::CServer getConnectedServer() const override;

View File

@@ -203,6 +203,17 @@ namespace BlackCore
*/ */
virtual void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign) = 0; virtual void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign) = 0;
/*!
* Set the partner callsign (co-pilot/pilot in shared cockpit) before connecting.
* \pre Network must be disconnected when calling this function.
*/
virtual void presetPartnerCallsign(const BlackMisc::Aviation::CCallsign &callsign) = 0;
/*!
* Get the partner callsign (co-pilot/pilot in shared cockpit) before connecting.
*/
virtual const BlackMisc::Aviation::CCallsign &getPresetPartnerCallsign() const = 0;
/*! /*!
* Set our own aircraft ICAO codes before connecting. * Set our own aircraft ICAO codes before connecting.
* \pre Network must be disconnected when calling this function. * \pre Network must be disconnected when calling this function.

View File

@@ -190,7 +190,8 @@ namespace BlackCore
m_ownLivery, m_ownLivery,
m_ownAircraftIcaoCode.getDesignator(), m_ownAircraftIcaoCode.getDesignator(),
m_ownAirlineIcaoCode.getVDesignator(), m_ownAirlineIcaoCode.getVDesignator(),
m_ownCallsign.asString() m_ownCallsign.asString(),
m_partnerCallsign.asString()
}; };
return v; return v;
} }
@@ -492,7 +493,12 @@ namespace BlackCore
{ {
Q_ASSERT_X(isDisconnected(), Q_FUNC_INFO, "Can't change callsign while still connected"); Q_ASSERT_X(isDisconnected(), Q_FUNC_INFO, "Can't change callsign while still connected");
m_ownCallsign = callsign; m_ownCallsign = callsign;
updateOwnCallsign(callsign); this->updateOwnCallsign(callsign);
}
void CNetworkVatlib::presetPartnerCallsign(const CCallsign &callsign)
{
m_partnerCallsign = callsign;
} }
void CNetworkVatlib::presetIcaoCodes(const CSimulatedAircraft &ownAircraft) void CNetworkVatlib::presetIcaoCodes(const CSimulatedAircraft &ownAircraft)
@@ -1505,7 +1511,7 @@ namespace BlackCore
{ {
QList<qint64> &offsets = m_lastOffsetTimes[callsign]; QList<qint64> &offsets = m_lastOffsetTimes[callsign];
offsets.push_front(offsetMs); offsets.push_front(offsetMs);
if (offsets.size() > MaxOffseTimes) { offsets.removeLast(); } if (offsets.size() > MaxOffsetTimes) { offsets.removeLast(); }
} }
qint64 CNetworkVatlib::averageOffsetTimeMs(const CCallsign &callsign, int &count, int maxLastValues) const qint64 CNetworkVatlib::averageOffsetTimeMs(const CCallsign &callsign, int &count, int maxLastValues) const

View File

@@ -81,9 +81,11 @@ namespace BlackCore
virtual bool isPendingConnection() const override { return m_status == vatStatusConnecting; } virtual bool isPendingConnection() const override { return m_status == vatStatusConnecting; }
virtual const BlackMisc::Network::CServer &getPresetServer() const override { return m_server; } virtual const BlackMisc::Network::CServer &getPresetServer() const override { return m_server; }
virtual QStringList getPresetValues() const override; virtual QStringList getPresetValues() const override;
virtual const BlackMisc::Aviation::CCallsign &getPresetPartnerCallsign() const override { return m_partnerCallsign; }
virtual void presetLoginMode(LoginMode mode) override; virtual void presetLoginMode(LoginMode mode) override;
virtual void presetServer(const BlackMisc::Network::CServer &server) override; virtual void presetServer(const BlackMisc::Network::CServer &server) override;
virtual void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign) override; virtual void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign) override;
virtual void presetPartnerCallsign(const BlackMisc::Aviation::CCallsign &callsign) override;
virtual void presetIcaoCodes(const BlackMisc::Simulation::CSimulatedAircraft &ownAircraft) override; virtual void presetIcaoCodes(const BlackMisc::Simulation::CSimulatedAircraft &ownAircraft) override;
virtual void presetLiveryAndModelString(const QString &livery, bool sendLiveryString, const QString &modelString, bool sendModelString) override; virtual void presetLiveryAndModelString(const QString &livery, bool sendLiveryString, const QString &modelString, bool sendModelString) override;
virtual void presetSimulatorInfo(const BlackMisc::Simulation::CSimulatorPluginInfo &simInfo) override; virtual void presetSimulatorInfo(const BlackMisc::Simulation::CSimulatorPluginInfo &simInfo) override;
@@ -258,10 +260,10 @@ namespace BlackCore
void insertLatestOffsetTime(const BlackMisc::Aviation::CCallsign &callsign, qint64 offsetMs); void insertLatestOffsetTime(const BlackMisc::Aviation::CCallsign &callsign, qint64 offsetMs);
//! Average offset time in ms //! Average offset time in ms
qint64 averageOffsetTimeMs(const BlackMisc::Aviation::CCallsign &callsign, int &count, int maxLastValues = MaxOffseTimes) const; qint64 averageOffsetTimeMs(const BlackMisc::Aviation::CCallsign &callsign, int &count, int maxLastValues = MaxOffsetTimes) const;
//! Average offset time in ms //! Average offset time in ms
qint64 averageOffsetTimeMs(const BlackMisc::Aviation::CCallsign &callsign, int maxLastValues = MaxOffseTimes) const; qint64 averageOffsetTimeMs(const BlackMisc::Aviation::CCallsign &callsign, int maxLastValues = MaxOffsetTimes) const;
//! Remove colon //! Remove colon
static QString removeColon(const QString &candidate); static QString removeColon(const QString &candidate);
@@ -289,6 +291,7 @@ namespace BlackCore
QTextCodec *m_fsdTextCodec = nullptr; QTextCodec *m_fsdTextCodec = nullptr;
BlackMisc::Simulation::CSimulatorPluginInfo m_simulatorInfo; //!< used simulator BlackMisc::Simulation::CSimulatorPluginInfo m_simulatorInfo; //!< used simulator
BlackMisc::Aviation::CCallsign m_ownCallsign; //!< "buffered callsign", as this must not change when connected BlackMisc::Aviation::CCallsign m_ownCallsign; //!< "buffered callsign", as this must not change when connected
BlackMisc::Aviation::CCallsign m_partnerCallsign; //!< callsign of partner flying in shared cockpit
BlackMisc::Aviation::CAircraftIcaoCode m_ownAircraftIcaoCode; //!< "buffered icao", as this must not change when connected BlackMisc::Aviation::CAircraftIcaoCode m_ownAircraftIcaoCode; //!< "buffered icao", as this must not change when connected
BlackMisc::Aviation::CAirlineIcaoCode m_ownAirlineIcaoCode; //!< "buffered icao", as this must not change when connected BlackMisc::Aviation::CAirlineIcaoCode m_ownAirlineIcaoCode; //!< "buffered icao", as this must not change when connected
QString m_ownLivery; //!< "buffered livery", as this must not change when connected QString m_ownLivery; //!< "buffered livery", as this must not change when connected
@@ -318,7 +321,7 @@ namespace BlackCore
QHash<BlackMisc::Aviation::CCallsign, qint64> m_lastPositionUpdate; QHash<BlackMisc::Aviation::CCallsign, qint64> m_lastPositionUpdate;
QHash<BlackMisc::Aviation::CCallsign, QList<qint64>> m_lastOffsetTimes; //!< latest offset first QHash<BlackMisc::Aviation::CCallsign, QList<qint64>> m_lastOffsetTimes; //!< latest offset first
static const int MaxOffseTimes = 6; //!< Max offset times kept static const int MaxOffsetTimes = 6; //!< Max offset times kept
BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TRawFsdMessageSetting> m_fsdMessageSetting { this, &CNetworkVatlib::fsdMessageSettingsChanged }; BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TRawFsdMessageSetting> m_fsdMessageSetting { this, &CNetworkVatlib::fsdMessageSettingsChanged };
QFile m_rawFsdMessageLogFile; QFile m_rawFsdMessageLogFile;