mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 00:16:51 +08:00
Ref T717, function to send parts/situation for testing and in the model browser
This commit is contained in:
committed by
Mat Sutcliffe
parent
73b9371c73
commit
f80e093a0a
@@ -94,16 +94,16 @@ namespace BlackSimPlugin
|
||||
QDBusPendingReply<QStringList, QList<double>, QList<double>, QList<double>, QList<double>> reply = *watcher;
|
||||
if (!reply.isError())
|
||||
{
|
||||
const QStringList callsigns = reply.argumentAt<0>();
|
||||
const QList<double> latitudesDeg = reply.argumentAt<1>();
|
||||
const QList<double> longitudesDeg = reply.argumentAt<2>();
|
||||
const QList<double> elevationsM = reply.argumentAt<3>();
|
||||
const QStringList callsigns = reply.argumentAt<0>();
|
||||
const QList<double> latitudesDeg = reply.argumentAt<1>();
|
||||
const QList<double> longitudesDeg = reply.argumentAt<2>();
|
||||
const QList<double> elevationsM = reply.argumentAt<3>();
|
||||
const QList<double> verticalOffsets = reply.argumentAt<4>();
|
||||
setter(callsigns, latitudesDeg, longitudesDeg, elevationsM, verticalOffsets);
|
||||
setter(callsigns, latitudesDeg, longitudesDeg, elevationsM, verticalOffsets);
|
||||
}
|
||||
watcher->deleteLater();
|
||||
};
|
||||
m_dbusInterface->callDBusAsync(QLatin1String("getRemoteAircraftData"), callback, callsigns);
|
||||
}
|
||||
}
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#define BLACKSIMPLUGIN_FLIGHTGEAR_TRAFFIC_PROXY_H
|
||||
|
||||
#include "blackmisc/genericdbusinterface.h"
|
||||
#include "blackmisc/aviation/aircraftsituation.h"
|
||||
#include "blackmisc/aviation/aircraftparts.h"
|
||||
#include "blackmisc/aviation/callsign.h"
|
||||
#include "blackmisc/geo/elevationplane.h"
|
||||
|
||||
@@ -47,21 +49,34 @@ namespace BlackSimPlugin
|
||||
const int s = callsigns.size();
|
||||
if (s != latitudesDeg.size()) { return false; }
|
||||
if (s != longitudesDeg.size()) { return false; }
|
||||
if (s != altitudesFt.size()) { return false; }
|
||||
if (s != altitudesFt.size()) { return false; }
|
||||
if (s != pitchesDeg.size()) { return false; }
|
||||
if (s != rollsDeg.size()) { return false; }
|
||||
if (s != headingsDeg.size()) { return false; }
|
||||
return true;
|
||||
}
|
||||
|
||||
QStringList callsigns; //!< List of callsigns
|
||||
//! Push back the latest situation
|
||||
void push_back(const BlackMisc::Aviation::CAircraftSituation &situation)
|
||||
{
|
||||
this->callsigns.push_back(situation.getCallsign().asString());
|
||||
this->latitudesDeg.push_back(situation.latitude().value(BlackMisc::PhysicalQuantities::CAngleUnit::deg()));
|
||||
this->longitudesDeg.push_back(situation.longitude().value(BlackMisc::PhysicalQuantities::CAngleUnit::deg()));
|
||||
this->altitudesFt.push_back(situation.getAltitude().value(BlackMisc::PhysicalQuantities::CLengthUnit::ft()));
|
||||
this->pitchesDeg.push_back(situation.getPitch().value(BlackMisc::PhysicalQuantities::CAngleUnit::deg()));
|
||||
this->rollsDeg.push_back(situation.getBank().value(BlackMisc::PhysicalQuantities::CAngleUnit::deg()));
|
||||
this->headingsDeg.push_back(situation.getHeading().value(BlackMisc::PhysicalQuantities::CAngleUnit::deg()));
|
||||
this->onGrounds.push_back(situation.getOnGround() == BlackMisc::Aviation::CAircraftSituation::OnGround);
|
||||
}
|
||||
|
||||
QStringList callsigns; //!< List of callsigns
|
||||
QList<double> latitudesDeg; //!< List of latitudes
|
||||
QList<double> longitudesDeg; //!< List of longitudes
|
||||
QList<double> altitudesFt; //!< List of altitudes
|
||||
QList<double> altitudesFt; //!< List of altitudes
|
||||
QList<double> pitchesDeg; //!< List of pitches
|
||||
QList<double> rollsDeg; //!< List of rolls
|
||||
QList<double> headingsDeg; //!< List of headings
|
||||
QList<bool> onGrounds; //!< List of onGrounds
|
||||
QList<bool> onGrounds; //!< List of onGrounds
|
||||
};
|
||||
|
||||
//! Planes surfaces
|
||||
@@ -70,6 +85,29 @@ namespace BlackSimPlugin
|
||||
//! Is empty?
|
||||
bool isEmpty() const { return callsigns.isEmpty(); }
|
||||
|
||||
//! Push back the latest parts
|
||||
void push_back(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts)
|
||||
{
|
||||
this->callsigns.push_back(callsign.asString());
|
||||
this->gears.push_back(parts.isGearDown() ? 1 : 0);
|
||||
this->flaps.push_back(parts.getFlapsPercent() / 100.0);
|
||||
this->spoilers.push_back(parts.isSpoilersOut() ? 1 : 0);
|
||||
this->speedBrakes.push_back(parts.isSpoilersOut() ? 1 : 0);
|
||||
this->slats.push_back(parts.getFlapsPercent() / 100.0);
|
||||
this->wingSweeps.push_back(0.0);
|
||||
this->thrusts.push_back(parts.isAnyEngineOn() ? 0 : 0.75);
|
||||
this->elevators.push_back(0.0);
|
||||
this->rudders.push_back(0.0);
|
||||
this->ailerons.push_back(0.0);
|
||||
this->landLights.push_back(parts.getLights().isLandingOn());
|
||||
//! \todo KB 2019-09 Missing taxi lights in FG
|
||||
// this->taxiLights.push_back(parts.getLights().isTaxiOn());
|
||||
this->beaconLights.push_back(parts.getLights().isBeaconOn());
|
||||
this->strobeLights.push_back(parts.getLights().isStrobeOn());
|
||||
this->navLights.push_back(parts.getLights().isNavOn());
|
||||
this->lightPatterns.push_back(0);
|
||||
}
|
||||
|
||||
QStringList callsigns; //!< List of callsigns
|
||||
QList<double> gears; //!< List of gears
|
||||
QList<double> flaps; //!< List of flaps
|
||||
@@ -177,7 +215,6 @@ namespace BlackSimPlugin
|
||||
//! Get remote aircrafts data (lat, lon, elevation and CG)
|
||||
void getRemoteAircraftData(const QStringList &callsigns, const RemoteAircraftDataCallback &setter) const;
|
||||
|
||||
|
||||
private:
|
||||
BlackMisc::CGenericDBusInterface *m_dbusInterface = nullptr;
|
||||
};
|
||||
|
||||
@@ -149,6 +149,32 @@ namespace BlackSimPlugin
|
||||
return m_flightgearAircraftObjects[callsign].getInterpolationMessages(setup.getInterpolatorMode());
|
||||
}
|
||||
|
||||
bool CSimulatorFlightgear::testSendSituationAndParts(const CCallsign &callsign, const CAircraftSituation &situation, const CAircraftParts &parts)
|
||||
{
|
||||
if (!this->isConnected()) { return false; }
|
||||
if (!m_trafficProxy) { return false; }
|
||||
if (!m_flightgearAircraftObjects.contains(callsign)) { return false; }
|
||||
|
||||
int u = 0;
|
||||
if (!situation.isNull())
|
||||
{
|
||||
PlanesPositions planesPositions;
|
||||
planesPositions.push_back(situation);
|
||||
m_trafficProxy->setPlanesPositions(planesPositions);
|
||||
u++;
|
||||
}
|
||||
|
||||
if (!parts.isNull())
|
||||
{
|
||||
PlanesSurfaces surfaces;
|
||||
surfaces.push_back(callsign, parts);
|
||||
//! \todo KB 2091-09 FG parts sending missing
|
||||
// m_trafficProxy->setPlanesSurfaces(surfaces);
|
||||
u++;
|
||||
}
|
||||
return u > 0;
|
||||
}
|
||||
|
||||
void CSimulatorFlightgear::clearAllRemoteAircraftData()
|
||||
{
|
||||
m_aircraftAddedFailed.clear();
|
||||
|
||||
@@ -135,6 +135,7 @@ namespace BlackSimPlugin
|
||||
virtual QString getStatisticsSimulatorSpecific() const override;
|
||||
virtual void resetAircraftStatistics() override;
|
||||
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override;
|
||||
//! @}
|
||||
|
||||
//! Creates an appropriate dbus connection from the string describing it
|
||||
|
||||
Reference in New Issue
Block a user