Ref T717, simulator ground elevation

This commit is contained in:
Klaus Basan
2019-09-16 00:20:52 +02:00
committed by Mat Sutcliffe
parent e215a9858c
commit 6521b89fdd
6 changed files with 56 additions and 4 deletions

View File

@@ -28,6 +28,7 @@
#include "blackmisc/simulation/matchingstatistics.h"
#include "blackmisc/simulation/interpolationrenderingsetup.h"
#include "blackmisc/aviation/airportlist.h"
#include "blackmisc/geo/elevationplane.h"
#include "blackmisc/pq/length.h"
#include "blackmisc/pq/time.h"
#include "blackmisc/identifier.h"
@@ -301,6 +302,12 @@ namespace BlackCore
//! Request weather grid. Argument identifier is past in the signal to identify the requestor
virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) = 0;
//! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevationBySituation
virtual bool requestElevationBySituation(const BlackMisc::Aviation::CAircraftSituation &situation) = 0;
//! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::findClosestElevationWithinRange
virtual BlackMisc::Geo::CElevationPlane findClosestElevationWithinRange(const BlackMisc::Geo::CCoordinateGeodetic &reference, const BlackMisc::PhysicalQuantities::CLength &range) const = 0;
//! Repeat all matchings
virtual int doMatchingsAgain() = 0;

View File

@@ -364,6 +364,22 @@ namespace BlackCore
logEmptyContextWarning(Q_FUNC_INFO);
}
//! \copydoc IContextSimulator::requestWeatherGrid
virtual bool requestElevationBySituation(const BlackMisc::Aviation::CAircraftSituation &situation) override
{
Q_UNUSED(situation);
logEmptyContextWarning(Q_FUNC_INFO);
return false;
}
virtual BlackMisc::Geo::CElevationPlane findClosestElevationWithinRange(const BlackMisc::Geo::CCoordinateGeodetic &reference, const BlackMisc::PhysicalQuantities::CLength &range) const override
{
Q_UNUSED(reference);
Q_UNUSED(range);
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Geo::CElevationPlane::null();
}
//! \copydoc IContextSimulator::getMatchingMessages
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const override
{

View File

@@ -1131,6 +1131,20 @@ namespace BlackCore
m_weatherManager.requestWeatherGrid(weatherGrid, identifier);
}
bool CContextSimulator::requestElevationBySituation(const CAircraftSituation &situation)
{
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << situation; }
if (!m_simulatorPlugin.second || !m_simulatorPlugin.second->isConnected()) { return false; }
return m_simulatorPlugin.second->requestElevationBySituation(situation);
}
CElevationPlane CContextSimulator::findClosestElevationWithinRange(const CCoordinateGeodetic &reference, const CLength &range) const
{
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << reference.convertToQString(true) << range; }
if (!m_simulatorPlugin.second || !m_simulatorPlugin.second->isConnected()) { return CElevationPlane::null(); }
return m_simulatorPlugin.second->findClosestElevationWithinRange(reference, range);
}
int CContextSimulator::doMatchingsAgain()
{
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }

View File

@@ -118,6 +118,8 @@ namespace BlackCore
virtual bool isWeatherActivated() const override;
virtual void setWeatherActivated(bool activated) override;
virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) override;
virtual bool requestElevationBySituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
virtual BlackMisc::Geo::CElevationPlane findClosestElevationWithinRange(const BlackMisc::Geo::CCoordinateGeodetic &reference, const BlackMisc::PhysicalQuantities::CLength &range) const override;
virtual int doMatchingsAgain() override;
virtual bool doMatchingAgain(const BlackMisc::Aviation::CCallsign &callsign) override;
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;

View File

@@ -320,6 +320,16 @@ namespace BlackCore
m_dBusInterface->callDBus(QLatin1String("requestWeatherGrid"), weatherGrid, identifier);
}
bool CContextSimulatorProxy::requestElevationBySituation(const CAircraftSituation &situation)
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("requestElevationBySituation"), situation);
}
CElevationPlane CContextSimulatorProxy::findClosestElevationWithinRange(const CCoordinateGeodetic &reference, const CLength &range) const
{
return m_dBusInterface->callDBusRet<BlackMisc::Geo::CElevationPlane>(QLatin1String("findClosestElevationWithinRange"), reference, range);
}
CStatusMessageList CContextSimulatorProxy::getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const
{
return m_dBusInterface->callDBusRet<BlackMisc::CStatusMessageList>(QLatin1String("getMatchingMessages"), callsign);

View File

@@ -14,13 +14,14 @@
#include "blackcore/blackcoreexport.h"
#include "blackcore/context/contextsimulator.h"
#include "blackcore/corefacadeconfig.h"
#include "blackmisc/aviation/airportlist.h"
#include "blackmisc/pixmap.h"
#include "blackmisc/pq/length.h"
#include "blackmisc/pq/time.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/simulatorplugininfolist.h"
#include "blackmisc/simulation/simulatorinternals.h"
#include "blackmisc/geo/elevationplane.h"
#include "blackmisc/pq/length.h"
#include "blackmisc/pq/time.h"
#include "blackmisc/aviation/airportlist.h"
#include "blackmisc/pixmap.h"
#include <QObject>
#include <QString>
@@ -100,6 +101,8 @@ namespace BlackCore
virtual bool isWeatherActivated() const override;
virtual void setWeatherActivated(bool activated) override;
virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) override;
virtual bool requestElevationBySituation(const BlackMisc::Aviation::CAircraftSituation &situation) override;
virtual BlackMisc::Geo::CElevationPlane findClosestElevationWithinRange(const BlackMisc::Geo::CCoordinateGeodetic &reference, const BlackMisc::PhysicalQuantities::CLength &range) const override;
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Simulation::MatchingLog isMatchingMessagesEnabled() const override;
virtual void enableMatchingMessages(BlackMisc::Simulation::MatchingLog enabled) override;