refs #93, update network data such as ATIS or pilot frequencies from time to time,

as these data are not actively pushed from network when changing
* timer in network context
* update methods, one specific method for ATIS as this can also be manually re-read(from GUI)
This commit is contained in:
Klaus Basan
2014-02-07 21:30:04 +01:00
parent 2cbddeb5ee
commit 1a72b4b691
5 changed files with 64 additions and 2 deletions

View File

@@ -33,13 +33,18 @@ namespace BlackCore
// 2. Init own aircraft // 2. Init own aircraft
this->initOwnAircraft(); this->initOwnAircraft();
// 3. Init network access driver for XML data (bookings) // 3a. Init network access driver for XML data (bookings)
this->m_networkManager = new QNetworkAccessManager(this); this->m_networkManager = new QNetworkAccessManager(this);
this->m_atcBookingTimer = new QTimer(this); this->m_atcBookingTimer = new QTimer(this);
this->connect(this->m_networkManager, &QNetworkAccessManager::finished, this, &CContextNetwork::psAtcBookingsRead); this->connect(this->m_networkManager, &QNetworkAccessManager::finished, this, &CContextNetwork::psAtcBookingsRead);
this->connect(this->m_atcBookingTimer, &QTimer::timeout, this, &CContextNetwork::readAtcBookingsFromSource); this->connect(this->m_atcBookingTimer, &QTimer::timeout, this, &CContextNetwork::readAtcBookingsFromSource);
this->m_atcBookingTimer->start(10 * 1000); // will be reset in method to a longer time this->m_atcBookingTimer->start(10 * 1000); // will be reset in method to a longer time
// 3b. Update timer for data
this->m_dataUpdateTimer = new QTimer(this);
this->connect(this->m_dataUpdateTimer, &QTimer::timeout, this, &CContextNetwork::requestDataUpdates);
this->m_dataUpdateTimer->start(30 * 1000);
// 4. connect signals and slots // 4. connect signals and slots
this->connect(this->m_network, &INetwork::connectionStatusChanged, this, &CContextNetwork::psFsdConnectionStatusChanged); this->connect(this->m_network, &INetwork::connectionStatusChanged, this, &CContextNetwork::psFsdConnectionStatusChanged);
this->connect(this->m_network, &INetwork::atcPositionUpdate, this, &CContextNetwork::psFsdAtcPositionUpdate); this->connect(this->m_network, &INetwork::atcPositionUpdate, this, &CContextNetwork::psFsdAtcPositionUpdate);

View File

@@ -159,6 +159,12 @@ namespace BlackCore
//! \copydoc IContextNetwork::getUsersForCallsigns //! \copydoc IContextNetwork::getUsersForCallsigns
virtual BlackMisc::Network::CUserList getUsersForCallsigns(const BlackMisc::Aviation::CCallsignList &callsigns) const; virtual BlackMisc::Network::CUserList getUsersForCallsigns(const BlackMisc::Aviation::CCallsignList &callsigns) const;
//! \copydoc IContextNetwork::requestDataUpdates
virtual void requestDataUpdates();
//! \copydoc IContextNetwork::requestAtisUpdates
virtual void requestAtisUpdates();
private: private:
BlackMisc::Aviation::CAtcStationList m_atcStationsOnline; BlackMisc::Aviation::CAtcStationList m_atcStationsOnline;
BlackMisc::Aviation::CAtcStationList m_atcStationsBooked; BlackMisc::Aviation::CAtcStationList m_atcStationsBooked;
@@ -169,7 +175,8 @@ namespace BlackCore
// for reading XML // for reading XML
QNetworkAccessManager *m_networkManager; QNetworkAccessManager *m_networkManager;
QTimer *m_atcBookingTimer; QTimer *m_atcBookingTimer; //!< ATC stations bookings
QTimer *m_dataUpdateTimer; //!< general updates such as ATIS, frequencies, see requestDataUpdates()
QDateTime m_atcBookingsUpdateTimestamp; QDateTime m_atcBookingsUpdateTimestamp;
/*! /*!
@@ -291,6 +298,7 @@ namespace BlackCore
* \todo encapsulate reading from WWW in some class * \todo encapsulate reading from WWW in some class
*/ */
void psAtcBookingsRead(QNetworkReply *nwReply); void psAtcBookingsRead(QNetworkReply *nwReply);
}; };
} }

View File

@@ -40,6 +40,35 @@ namespace BlackCore
this->m_networkManager->get(request); this->m_networkManager->get(request);
} }
/*
* Update data
*/
void CContextNetwork::requestDataUpdates()
{
Q_ASSERT(this->m_network);
if (!this->isConnected()) return;
this->requestAtisUpdates();
// other updates
foreach(CAircraft aircraft, this->m_aircraftsInRange)
{
this->m_network->sendFrequencyQuery(aircraft.getCallsign());
}
}
/*
* Request new ATIS data
*/
void CContextNetwork::requestAtisUpdates()
{
Q_ASSERT(this->m_network);
if (!this->isConnected()) return;
foreach(CAtcStation station, this->m_atcStationsOnline)
{
this->m_network->sendAtisQuery(station.getCallsign());
}
}
/* /*
* Booked stations * Booked stations
*/ */

View File

@@ -101,6 +101,16 @@ namespace BlackCore
return this->m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAtcStationList>(QLatin1Literal("getSelectedAtcStations")); return this->m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAtcStationList>(QLatin1Literal("getSelectedAtcStations"));
} }
void IContextNetwork::requestDataUpdates()
{
this->m_dBusInterface->callDBus(QLatin1Literal("requestDataUpdates"));
}
void IContextNetwork::requestAtisUpdates()
{
this->m_dBusInterface->callDBus(QLatin1Literal("requestAtisUpdates"));
}
BlackMisc::Aviation::CAircraft IContextNetwork::getOwnAircraft() const BlackMisc::Aviation::CAircraft IContextNetwork::getOwnAircraft() const
{ {
return this->m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAircraft>(QLatin1Literal("getOwnAircraft")); return this->m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAircraft>(QLatin1Literal("getOwnAircraft"));

View File

@@ -252,6 +252,16 @@ namespace BlackCore
* \brief Use the selected COM1/2 frequencies, and get the corresponding ATC stations for it * \brief Use the selected COM1/2 frequencies, and get the corresponding ATC stations for it
*/ */
virtual BlackMisc::Aviation::CAtcStationList getSelectedAtcStations() const; virtual BlackMisc::Aviation::CAtcStationList getSelectedAtcStations() const;
/*!
* \brief Request data updates (pilot' frequencies, ATIS, ..)
*/
virtual void requestDataUpdates();
/*!
* \brief Request ATIS updates (for all stations)
*/
virtual void requestAtisUpdates();
}; };
} }