mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-02 06:35:52 +08:00
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:
@@ -107,15 +107,29 @@ namespace BlackSimPlugin
|
||||
m_dbusInterface->callDBus(QLatin1String("setInterpolatorMode"), callsign, spline);
|
||||
}
|
||||
|
||||
void CXSwiftBusTrafficProxy::requestRemoteAircraftData()
|
||||
void CXSwiftBusTrafficProxy::getRemoteAircraftsData(const QStringList &callsigns, const RemoteAircraftDataCallback &setter)
|
||||
{
|
||||
m_dbusInterface->callDBus(QLatin1String("requestRemoteAircraftData"));
|
||||
std::function<void(QDBusPendingCallWatcher *)> callback = [ = ](QDBusPendingCallWatcher * watcher)
|
||||
{
|
||||
QDBusPendingReply<QStringList, QList<double>, QList<double>, QList<double>, QList<double>> reply = *watcher;
|
||||
if (!reply.isError())
|
||||
{
|
||||
QStringList callsigns = reply.argumentAt<0>();
|
||||
QList<double> latitudesDeg = reply.argumentAt<1>();
|
||||
QList<double> longitudesDeg = reply.argumentAt<2>();
|
||||
QList<double> elevationsM = reply.argumentAt<3>();
|
||||
QList<double> verticalOffsets = reply.argumentAt<4>();
|
||||
setter(callsigns, latitudesDeg, longitudesDeg, elevationsM, verticalOffsets);
|
||||
}
|
||||
watcher->deleteLater();
|
||||
};
|
||||
m_dbusInterface->callDBusAsync(QLatin1String("getRemoteAircraftsData"), callback, callsigns);
|
||||
}
|
||||
|
||||
void CXSwiftBusTrafficProxy::getEelevationAtPosition(const CCallsign &callsign, double latitude, double longitude, double altitude,
|
||||
const ElevationCallback &setter)
|
||||
const ElevationCallback &setter)
|
||||
{
|
||||
std::function<void(QDBusPendingCallWatcher *)> callback = [=](QDBusPendingCallWatcher * watcher)
|
||||
std::function<void(QDBusPendingCallWatcher *)> callback = [ = ](QDBusPendingCallWatcher * watcher)
|
||||
{
|
||||
QDBusPendingReply<QString, double> reply = *watcher;
|
||||
if (!reply.isError())
|
||||
|
||||
Reference in New Issue
Block a user