refs #375, prepared flag to enable / disable sending interim positions

This commit is contained in:
Klaus Basan
2015-02-16 02:00:31 +01:00
parent 29bb7d02d0
commit c55681fce5
9 changed files with 85 additions and 17 deletions

View File

@@ -160,6 +160,12 @@ namespace BlackCore
//! Known FSD servers, available when data file was first read
virtual BlackMisc::Network::CServerList getVatsimFsdServers() const = 0;
//! Is interim position sending enabled?
virtual bool isInterimPositionSendingEnabled() const = 0;
//! Enable interim position sending
virtual void enableInterimPositionSending(bool enable) = 0;
/*!
* Connect to Network
* \return messages gererated during connecting

View File

@@ -231,6 +231,21 @@ namespace BlackCore
logEmptyContextWarning(Q_FUNC_INFO);
return false;
}
//! \copydoc IContextNetwork::isInterimPositionSendingEnabled
virtual bool isInterimPositionSendingEnabled() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return false;
}
//! \copydoc IContextNetwork::enableInterimPositionSending
virtual void enableInterimPositionSending(bool enable) override
{
Q_UNUSED(enable);
logEmptyContextWarning(Q_FUNC_INFO);
}
};
} // namespace

View File

@@ -416,6 +416,20 @@ namespace BlackCore
return c;
}
bool CContextNetwork::isInterimPositionSendingEnabled() const
{
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO;
Q_ASSERT(this->m_network);
return m_network->isInterimPositionSendingEnabled();
}
void CContextNetwork::enableInterimPositionSending(bool enable)
{
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << enable;
Q_ASSERT(this->m_network);
m_network->enableInterimPositionSending(enable);
}
void CContextNetwork::testCreateDummyOnlineAtcStations(int number)
{
CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << number;

View File

@@ -159,6 +159,12 @@ namespace BlackCore
//! \copydoc IContextNetwork::updateAircraftModel
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const QString &originator) override;
//! \copydoc IContextNetwork::isInterimPositionSendingEnabled
virtual bool isInterimPositionSendingEnabled() const override;
//! \copydoc IContextNetwork::enableInterimPositionSending
virtual void enableInterimPositionSending(bool enable) override;
//! \copydoc IContextNetwork::testCreateDummyOnlineAtcStations
virtual void testCreateDummyOnlineAtcStations(int number) override;

View File

@@ -73,10 +73,10 @@ namespace BlackCore
"vatsimBookingsRead", this, SIGNAL(vatsimBookingsRead()));
Q_ASSERT(s);
s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(),
"changedRenderedAircraftModel", this, SIGNAL(changedRenderedAircraftModel(BlackMisc::Simulation::CSimulatedAircraft,QString)));
"changedRenderedAircraftModel", this, SIGNAL(changedRenderedAircraftModel(BlackMisc::Simulation::CSimulatedAircraft, QString)));
Q_ASSERT(s);
s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(),
"changedAircraftEnabled", this, SIGNAL(changedAircraftEnabled(BlackMisc::Simulation::CSimulatedAircraft,QString)));
"changedAircraftEnabled", this, SIGNAL(changedAircraftEnabled(BlackMisc::Simulation::CSimulatedAircraft, QString)));
Q_ASSERT(s);
Q_UNUSED(s);
}
@@ -104,7 +104,7 @@ namespace BlackCore
Simulation::CSimulatedAircraft CContextNetworkProxy::getAircraftForCallsign(const CCallsign &callsign) const
{
return this->m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatedAircraft>(QLatin1Literal("getAircraftForCallsign"), callsign);
}
}
BlackMisc::Network::CUserList CContextNetworkProxy::getUsers() const
{
@@ -171,6 +171,16 @@ namespace BlackCore
return this->m_dBusInterface->callDBusRet<bool>(QLatin1Literal("updateAircraftModel"), callsign, model, originator);
}
bool CContextNetworkProxy::isInterimPositionSendingEnabled() const
{
return this->m_dBusInterface->callDBusRet<bool>(QLatin1Literal("isInterimPositionSendingEnabled"));
}
void CContextNetworkProxy::enableInterimPositionSending(bool enable)
{
this->m_dBusInterface->callDBus(QLatin1Literal("enableInterimPositionSending"), enable);
}
void CContextNetworkProxy::testCreateDummyOnlineAtcStations(int number)
{
this->m_dBusInterface->callDBus(QLatin1Literal("testCreateDummyOnlineAtcStations"), number);

View File

@@ -131,6 +131,12 @@ namespace BlackCore
//! \copydoc IContextNetwork::updateAircraftModel
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const QString &originator) override;
//! \copydoc IContextNetwork::isInterimPositionSendingEnabled
virtual bool isInterimPositionSendingEnabled() const override;
//! \copydoc IContextNetwork::enableInterimPositionSending
virtual void enableInterimPositionSending(bool enable) override;
//! \copydoc IContextNetwork::testCreateDummyOnlineAtcStations
virtual void testCreateDummyOnlineAtcStations(int number) override;

View File

@@ -191,6 +191,12 @@ namespace BlackCore
*/
virtual void terminateConnection() = 0;
//! Is interim position sending enabled?
virtual bool isInterimPositionSendingEnabled() const = 0;
//! Enable interim position sending
virtual void enableInterimPositionSending(bool enable) = 0;
/*!
* Send a ping message to a user with a specific callsign.
* \pre Network must be connected when calling this function.

View File

@@ -36,10 +36,10 @@ namespace BlackCore
CNetworkVatlib::CNetworkVatlib(Simulation::IOwnAircraftProvider *ownAircraft, QObject *parent)
: INetwork(parent), COwnAircraftProviderSupport(ownAircraft),
m_loginMode(LoginNormal),
m_status(vatStatusIdle),
m_fsdTextCodec(QTextCodec::codecForName("latin1")),
m_tokenBucket(10, CTime(5, CTimeUnit::s()), 1)
m_loginMode(LoginNormal),
m_status(vatStatusIdle),
m_fsdTextCodec(QTextCodec::codecForName("latin1")),
m_tokenBucket(10, CTime(5, CTimeUnit::s()), 1)
{
connect(this, &CNetworkVatlib::terminate, this, &INetwork::terminateConnection, Qt::QueuedConnection);
connect(this, &INetwork::customPacketReceived, this, &CNetworkVatlib::customPacketDispatcher);
@@ -567,6 +567,16 @@ namespace BlackCore
sendCustomPacket(callsign, "FSIPIR", data);
}
void CNetworkVatlib::enableInterimPositionSending(bool enable)
{
m_sendInterimPositions = enable;
}
bool CNetworkVatlib::isInterimPositionSendingEnabled() const
{
return m_sendInterimPositions;
}
void CNetworkVatlib::broadcastAircraftConfig(const QJsonObject &config)
{
// Fixme: Use QJsonObject with std::initializer_list once 5.4 is baseline
@@ -687,11 +697,11 @@ namespace BlackCore
QJsonDocument doc = QJsonDocument::fromJson(json, &parserError);
if (parserError.error != QJsonParseError::NoError)
CLogMessage(static_cast<CNetworkVatlib*>(nullptr)).warning("Failed to parse aircraft config packet: %1") << parserError.errorString();
CLogMessage(static_cast<CNetworkVatlib *>(nullptr)).warning("Failed to parse aircraft config packet: %1") << parserError.errorString();
QJsonObject packet = doc.object();
if (packet == JsonPackets::aircraftConfigRequest() )
if (packet == JsonPackets::aircraftConfigRequest())
{
cbvar_cast(cbvar)->replyToConfigQuery(cbvar_cast(cbvar)->fromFSD(callsign));
return;

View File

@@ -45,7 +45,6 @@ namespace BlackCore
virtual bool isPendingConnection() const override { return m_status == vatStatusConnecting; }
// Network slots
//! \copydoc INetwork::presetLoginMode
virtual void presetLoginMode(LoginMode mode) override;
virtual void presetServer(const BlackMisc::Network::CServer &server) override;
virtual void presetCallsign(const BlackMisc::Aviation::CCallsign &callsign) override;
@@ -61,14 +60,11 @@ namespace BlackCore
const QString &aircraftDesignator, const QString &combinedType, const QString &modelString) override;
virtual void sendFsipirCustomPacket(const BlackMisc::Aviation::CCallsign &callsign, const QString &airlineDesignator,
const QString &aircraftDesignator, const QString &combinedType, const QString &modelString) override;
//! \copydoc INetwork::broadcastAircraftConfig
virtual bool isInterimPositionSendingEnabled() const override;
virtual void enableInterimPositionSending(bool enable) override;
virtual void broadcastAircraftConfig(const QJsonObject &config) override;
//! \copydoc INetwork::sendAircraftConfigQuery
virtual void sendAircraftConfigQuery(const BlackMisc::Aviation::CCallsign &callsign) override;
// Text message slots
virtual void sendTextMessages(const BlackMisc::Network::CTextMessageList &messages) override;
@@ -98,9 +94,7 @@ namespace BlackCore
private: //shimlib callbacks
static void onConnectionStatusChanged(VatSessionID, VatConnectionStatus oldStatus, VatConnectionStatus newStatus, void *cbvar);
static void onTextMessageReceived(VatSessionID, const char *from, const char *to, const char *msg, void *cbvar);
static void onRadioMessageReceived(VatSessionID, const char *from, int freqCount, int *freqList, const char *message, void *cbvar);
static void onControllerDisconnected(VatSessionID, const char *callsign, void *cbvar);
static void onInterimPilotPositionUpdate(VatSessionID, const char *callsign, const VatPilotPosition *position, void *cbvar);
static void onAtcPositionUpdate(VatSessionID, const char *callsign, const VatAtcPosition *pos, void *cbvar);
@@ -164,6 +158,7 @@ namespace BlackCore
BlackMisc::Network::CServer m_server;
BlackMisc::Aviation::CCallsign m_callsign; //!< "buffered callsign", as this must not change when connected
BlackMisc::Aviation::CAircraftIcao m_icaoCode; //!< "buffered icao", as this must not change when connected
bool m_sendInterimPositions = false; //!< send interim positions
QTimer m_processingTimer;
QTimer m_updateTimer;