Refactor retrieving remote aircraft data

Instead of requesting it individually for each callsign and waiting for a
signal from xswiftbus, pass in a list of callsigns and use async callback
to read the data.
This commit is contained in:
Roland Winklmeier
2018-05-05 13:45:24 +02:00
parent bf8ed5c006
commit 2fd4d286d6
8 changed files with 102 additions and 49 deletions

View File

@@ -39,8 +39,15 @@ namespace BlackSimPlugin
Q_OBJECT
public:
//! List of doubles
using QDoubleList = QList<double>;
//! Elevation callback
using ElevationCallback = std::function<void (const BlackMisc::Geo::CElevationPlane &, const BlackMisc::Aviation::CCallsign &)>;
//! Remote aircrafts data callback
using RemoteAircraftDataCallback = std::function<void (const QStringList &, const QDoubleList &, const QDoubleList &, const QDoubleList &, const QDoubleList &)>;
//! Service name
static const QString &InterfaceName()
{
@@ -66,10 +73,6 @@ namespace BlackSimPlugin
//! \remark from simulator to driver
void simFrame();
//! Remote aircraft data
//! \remark from simulator to driver for elevation and CG
void remoteAircraftData(const QString &callsign, double latitudeDeg, double longitudeDeg, double elevationMeters, double modelVerticalOffsetMeters);
//! Remote aircraft successfully added
void remoteAircraftAdded(const QString &callsign);
@@ -126,8 +129,8 @@ namespace BlackSimPlugin
//! \deprecated XSwiftBus::CTraffic::setInterpolatorMode
void setInterpolatorMode(const QString &callsign, bool spline);
//! \copydoc XSwiftBus::CTraffic::requestRemoteAircraftData
void requestRemoteAircraftData();
//! \copydoc XSwiftBus::CTraffic::getRemoteAircraftsData
void getRemoteAircraftsData(const QStringList &callsigns, const RemoteAircraftDataCallback &setter);
//! \copydoc XSwiftBus::CTraffic::getEelevationAtPosition
void getEelevationAtPosition(const BlackMisc::Aviation::CCallsign &callsign, double latitude, double longitude, double altitude,