refs #395, integrated aircraft airspace snapshot / analyzer into remote provider

* added snapshot class
* added snapshot in analyzer, signal for new snapshot
* made all provider signals available in CSimulator
* added finders in CSimulatedAircraftList
* moved COwnAircraftProviderDummy into own file
This commit is contained in:
Klaus Basan
2015-04-30 23:20:17 +02:00
committed by Mathew Sutcliffe
parent 6570a0c966
commit 018c5ae1bf
32 changed files with 621 additions and 193 deletions

View File

@@ -651,7 +651,7 @@ namespace BlackSimPlugin
CAircraftPartsList parts;
if (partsStatus.supportsParts)
{
this->m_interpolator->getPartsBeforeTime(callsign, currentTimestamp - IInterpolator::TimeOffsetMs, partsStatus);
this->m_interpolator->getPartsBeforeTime(callsign, currentTimestamp - this->m_interpolator->TimeOffsetMs, partsStatus);
}
if (interpolatorStatus.allTrue())

View File

@@ -58,16 +58,7 @@ namespace BlackSimPlugin
connect(m_slowTimer, &QTimer::timeout, this, &CSimulatorXPlane::ps_slowTimerTimeout);
m_fastTimer->start(100);
m_slowTimer->start(1000);
resetData();
bool c = remoteAircraftProvider->connectRemoteAircraftProviderSignals(
std::bind(&CSimulatorXPlane::ps_addAircraftSituation, this, std::placeholders::_1),
std::bind(&CSimulatorXPlane::ps_addAircraftParts, this, std::placeholders::_1),
std::bind(&CSimulatorXPlane::ps_removedAircraft, this, std::placeholders::_1)
);
Q_ASSERT(c);
Q_UNUSED(c);
}
// convert xplane squawk mode to swift squawk mode
@@ -381,27 +372,27 @@ namespace BlackSimPlugin
return true;
}
void CSimulatorXPlane::ps_addAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situ)
void CSimulatorXPlane::ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation)
{
Q_ASSERT(isConnected());
using namespace BlackMisc::PhysicalQuantities;
m_traffic->setPlanePosition(situ.getCallsign().asString(),
situ.latitude().value(CAngleUnit::deg()),
situ.longitude().value(CAngleUnit::deg()),
situ.getAltitude().value(CLengthUnit::ft()),
situ.getPitch().value(CAngleUnit::deg()),
situ.getBank().value(CAngleUnit::deg()),
situ.getHeading().value(CAngleUnit::deg()));
m_traffic->setPlanePosition(situation.getCallsign().asString(),
situation.latitude().value(CAngleUnit::deg()),
situation.longitude().value(CAngleUnit::deg()),
situation.getAltitude().value(CLengthUnit::ft()),
situation.getPitch().value(CAngleUnit::deg()),
situation.getBank().value(CAngleUnit::deg()),
situation.getHeading().value(CAngleUnit::deg()));
}
void CSimulatorXPlane::ps_addAircraftParts(const BlackMisc::Aviation::CAircraftParts &parts)
void CSimulatorXPlane::ps_remoteProvideraddAircraftParts(const BlackMisc::Aviation::CAircraftParts &parts)
{
Q_ASSERT(isConnected());
m_traffic->setPlaneSurfaces(parts.getCallsign().asString(), true, 0, 0, 0, 0, 0, 0, 0, 0, 0, true, true, true, true, 0); // TODO landing gear, lights, control surfaces
m_traffic->setPlaneTransponder(parts.getCallsign().asString(), 2000, true, false); // TODO transponder
}
void CSimulatorXPlane::ps_removedAircraft(const CCallsign &callsign)
void CSimulatorXPlane::ps_remoteProviderRemovedAircraft(const CCallsign &callsign)
{
Q_UNUSED(callsign);
//! \todo call removeRemoteAircraft or just let removeRemoteAircraft handle it?

View File

@@ -26,9 +26,7 @@ namespace BlackSimPlugin
class CXBusServiceProxy;
class CXBusTrafficProxy;
/*!
* X-Plane ISimulator implementation
*/
//! X-Plane ISimulator implementation
class CSimulatorXPlane : public BlackCore::CSimulatorCommon
{
Q_OBJECT
@@ -112,6 +110,16 @@ namespace BlackSimPlugin
//! \copydoc ISimulator::isRenderedAircraft
virtual bool isRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
protected slots:
//! \copydoc CSimulatorCommon::ps_remoteProviderAddAircraftSituation
virtual void ps_remoteProviderAddAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
//! \copydoc CSimulatorCommon::ps_remoteProvideraddAircraftParts
virtual void ps_remoteProvideraddAircraftParts(const BlackMisc::Aviation::CAircraftParts &parts) override;
//! \copydoc CSimulatorCommon::ps_remoteProviderRemovedAircraft
virtual void ps_remoteProviderRemovedAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
private slots:
void ps_serviceUnregistered();
void ps_setAirportsInRange(const QStringList &icaoCodes, const QStringList &names, const BlackMisc::CSequence<double> &lats, const BlackMisc::CSequence<double> &lons, const BlackMisc::CSequence<double> &alts);
@@ -119,10 +127,6 @@ namespace BlackSimPlugin
void ps_fastTimerTimeout();
void ps_slowTimerTimeout();
void ps_addAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situ);
void ps_addAircraftParts(const BlackMisc::Aviation::CAircraftParts &parts);
void ps_removedAircraft(const BlackMisc::Aviation::CCallsign &callsign);
private:
QDBusConnection m_conn { "default" };
QDBusServiceWatcher *m_watcher { nullptr };