Ref T421, function to get interpolation messages from the simulator drivers

This commit is contained in:
Klaus Basan
2018-10-31 15:30:15 +01:00
parent 41685df4ee
commit 93bcbc0755
15 changed files with 70 additions and 3 deletions

View File

@@ -271,6 +271,9 @@ namespace BlackCore
//! \copydoc BlackMisc::Simulation::IInterpolationSetupProvider::setInterpolationSetupGlobal //! \copydoc BlackMisc::Simulation::IInterpolationSetupProvider::setInterpolationSetupGlobal
virtual bool setInterpolationSetupGlobal(const BlackMisc::Simulation::CInterpolationAndRenderingSetupGlobal &setup) override; virtual bool setInterpolationSetupGlobal(const BlackMisc::Simulation::CInterpolationAndRenderingSetupGlobal &setup) override;
//! Interpolation messages for callsign
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const = 0;
//! Counter added aircraft //! Counter added aircraft
int getStatisticsPhysicallyAddedAircraft() const { return m_statsPhysicallyAddedAircraft; } int getStatisticsPhysicallyAddedAircraft() const { return m_statsPhysicallyAddedAircraft; }

View File

@@ -173,6 +173,14 @@ namespace BlackSimPlugin
return m_renderedAircraft.getCallsigns(); return m_renderedAircraft.getCallsigns();
} }
CStatusMessageList CSimulatorEmulated::getInterpolationMessages(const CCallsign &callsign) const
{
if (canLog()) { m_monitorWidget->appendReceivingCall(Q_FUNC_INFO); }
if (!m_interpolators.contains(callsign)) { return CStatusMessageList(); }
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupPerCallsignOrDefault(callsign); // threadsafe copy
return m_interpolators[callsign]->getInterpolationMessages(setup.getInterpolatorMode());
}
void CSimulatorEmulated::highlightAircraft(const CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const CTime &displayTime) void CSimulatorEmulated::highlightAircraft(const CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const CTime &displayTime)
{ {
if (canLog()) { m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, aircraftToHighlight.toQString(), boolToTrueFalse(enableHighlight), displayTime.toQString()); } if (canLog()) { m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, aircraftToHighlight.toQString(), boolToTrueFalse(enableHighlight), displayTime.toQString()); }

View File

@@ -68,6 +68,7 @@ namespace BlackSimPlugin
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override; virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Aviation::CCallsignSet physicallyRenderedAircraft() const override; virtual BlackMisc::Aviation::CCallsignSet physicallyRenderedAircraft() const override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
// ----- functions just logged ------- // ----- functions just logged -------
virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override; virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override;

View File

@@ -168,6 +168,12 @@ namespace BlackSimPlugin
} }
} }
CStatusMessageList CFs9Client::getInterpolationMessages(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
{
if (!this->getInterpolator()) { return CStatusMessageList(); }
return this->getInterpolator()->getInterpolationMessages(mode);
}
void CFs9Client::timerEvent(QTimerEvent *event) void CFs9Client::timerEvent(QTimerEvent *event)
{ {
Q_UNUSED(event); Q_UNUSED(event);

View File

@@ -47,13 +47,18 @@ namespace BlackSimPlugin
BlackCore::ISimulator *simulator); BlackCore::ISimulator *simulator);
//! Destructor //! Destructor
virtual ~CFs9Client(); virtual ~CFs9Client() override;
//! Set DirectPlay host address //! Set DirectPlay host address
void setHostAddress(const QString &hostAddress); void setHostAddress(const QString &hostAddress);
//! Get interpolator //! Get interpolator @{
BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() { return &m_interpolator; } BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() { return &m_interpolator; }
const BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return &m_interpolator; }
//! @}
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolationMessages
BlackMisc::CStatusMessageList getInterpolationMessages(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
public slots: public slots:
//! Send new text message //! Send new text message

View File

@@ -14,7 +14,6 @@
#include "multiplayerpackets.h" #include "multiplayerpackets.h"
#include "multiplayerpacketparser.h" #include "multiplayerpacketparser.h"
#include "registermetadata.h" #include "registermetadata.h"
#include "blackmisc/simulation/interpolatorlinear.h"
#include "blackmisc/network/textmessage.h" #include "blackmisc/network/textmessage.h"
#include "blackmisc/simulation/simulatorplugininfo.h" #include "blackmisc/simulation/simulatorplugininfo.h"
#include "blackmisc/logmessage.h" #include "blackmisc/logmessage.h"
@@ -281,6 +280,15 @@ namespace BlackSimPlugin
this->displayStatusMessage(message.asStatusMessage(true, true)); this->displayStatusMessage(message.asStatusMessage(true, true));
} }
CStatusMessageList CSimulatorFs9::getInterpolationMessages(const CCallsign &callsign) const
{
if (!m_hashFs9Clients.contains(callsign)) { return CStatusMessageList(); }
const CFs9Client *client = m_hashFs9Clients[callsign].data();
if (!client) { return CStatusMessageList(); }
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupPerCallsignOrDefault(callsign);
return client->getInterpolationMessages(setup.getInterpolatorMode());
}
bool CSimulatorFs9::isPhysicallyRenderedAircraft(const CCallsign &callsign) const bool CSimulatorFs9::isPhysicallyRenderedAircraft(const CCallsign &callsign) const
{ {
return m_hashFs9Clients.contains(callsign); return m_hashFs9Clients.contains(callsign);

View File

@@ -64,6 +64,7 @@ namespace BlackSimPlugin
virtual bool updateOwnSimulatorSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override; virtual bool updateOwnSimulatorSelcal(const BlackMisc::Aviation::CSelcal &selcal, const BlackMisc::CIdentifier &originator) override;
virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override; virtual void displayStatusMessage(const BlackMisc::CStatusMessage &message) const override;
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override; virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
//! \@} //! \@}
protected: protected:

View File

@@ -224,6 +224,13 @@ namespace BlackSimPlugin
return m_interpolator->getLastInterpolatedSituation(mode); return m_interpolator->getLastInterpolatedSituation(mode);
} }
const CStatusMessageList &CSimConnectObject::getInterpolationMessages(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
{
static const CStatusMessageList empty;
if (!m_interpolator) { return empty; }
return m_interpolator->getInterpolationMessages(mode);
}
QString CSimConnectObject::toQString() const QString CSimConnectObject::toQString() const
{ {
static const QString s("CS: '%1' obj: %2 req: %3 conf.added: %4 pend.rem.: %5 rwa: %6 awr: %7 aEx: %8 aRem: %9"); static const QString s("CS: '%1' obj: %2 req: %3 conf.added: %4 pend.rem.: %5 rwa: %6 awr: %7 aEx: %8 aRem: %9");

View File

@@ -254,6 +254,9 @@ namespace BlackSimPlugin
//! \copydoc BlackMisc::Simulation::CInterpolator::getLastInterpolatedSituation //! \copydoc BlackMisc::Simulation::CInterpolator::getLastInterpolatedSituation
const BlackMisc::Aviation::CAircraftSituation &getLastInterpolatedSituation(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const; const BlackMisc::Aviation::CAircraftSituation &getLastInterpolatedSituation(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolationMessages
const BlackMisc::CStatusMessageList &getInterpolationMessages(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
//! Interpolator //! Interpolator
BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return m_interpolator.data(); } BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return m_interpolator.data(); }

View File

@@ -355,6 +355,13 @@ namespace BlackSimPlugin
ISimulator::setFlightNetworkConnected(connected); ISimulator::setFlightNetworkConnected(connected);
} }
CStatusMessageList CSimulatorFsxCommon::getInterpolationMessages(const CCallsign &callsign) const
{
if (!m_simConnectObjects.contains(callsign)) { return CStatusMessageList(); }
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupConsolidated(callsign);
return (m_simConnectObjects[callsign]).getInterpolationMessages(setup.getInterpolatorMode());
}
CSimConnectDefinitions::SimObjectRequest CSimulatorFsxCommon::requestToSimObjectRequest(DWORD requestId) CSimConnectDefinitions::SimObjectRequest CSimulatorFsxCommon::requestToSimObjectRequest(DWORD requestId)
{ {
DWORD v = static_cast<DWORD>(CSimConnectDefinitions::SimObjectEndMarker); DWORD v = static_cast<DWORD>(CSimConnectDefinitions::SimObjectEndMarker);

View File

@@ -151,6 +151,7 @@ namespace BlackSimPlugin
virtual QString getStatisticsSimulatorSpecific() const override; virtual QString getStatisticsSimulatorSpecific() const override;
virtual void resetAircraftStatistics() override; virtual void resetAircraftStatistics() override;
virtual void setFlightNetworkConnected(bool connected) override; virtual void setFlightNetworkConnected(bool connected) override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
//! @} //! @}
//! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation //! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation

View File

@@ -145,6 +145,13 @@ namespace BlackSimPlugin
m_statsAddCurrentTimeMs = -1; m_statsAddCurrentTimeMs = -1;
} }
CStatusMessageList CSimulatorXPlane::getInterpolationMessages(const CCallsign &callsign) const
{
if (!m_xplaneAircraftObjects.contains(callsign)) { return CStatusMessageList(); }
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupConsolidated(callsign);
return m_xplaneAircraftObjects[callsign].getInterpolationMessages(setup.getInterpolatorMode());
}
void CSimulatorXPlane::clearAllRemoteAircraftData() void CSimulatorXPlane::clearAllRemoteAircraftData()
{ {
m_aircraftAddedFailed.clear(); m_aircraftAddedFailed.clear();

View File

@@ -138,6 +138,7 @@ namespace BlackSimPlugin
virtual void unload() override; virtual void unload() override;
virtual QString getStatisticsSimulatorSpecific() const override; virtual QString getStatisticsSimulatorSpecific() const override;
virtual void resetAircraftStatistics() override; virtual void resetAircraftStatistics() override;
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
//! @} //! @}
//! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation //! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation

View File

@@ -12,6 +12,7 @@
#include "blackmisc/simulation/interpolatormulti.h" #include "blackmisc/simulation/interpolatormulti.h"
using namespace BlackCore; using namespace BlackCore;
using namespace BlackMisc;
using namespace BlackMisc::Aviation; using namespace BlackMisc::Aviation;
using namespace BlackMisc::Simulation; using namespace BlackMisc::Simulation;
@@ -49,6 +50,11 @@ namespace BlackSimPlugin
return m_interpolator->getInterpolation(currentTimeSinceEpoc, setup, aircraftNumber); return m_interpolator->getInterpolation(currentTimeSinceEpoc, setup, aircraftNumber);
} }
CStatusMessageList CXPlaneMPAircraft::getInterpolationMessages(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
{
return this->getInterpolator() ? this->getInterpolator()->getInterpolationMessages(mode) : CStatusMessageList();
}
CCallsignSet CXPlaneMPAircraftObjects::getAllCallsigns() const CCallsignSet CXPlaneMPAircraftObjects::getAllCallsigns() const
{ {
return CCallsignSet(this->keys()); return CCallsignSet(this->keys());

View File

@@ -55,6 +55,9 @@ namespace BlackSimPlugin
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolation //! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolation
BlackMisc::Simulation::CInterpolationResult getInterpolation(qint64 currentTimeSinceEpoc, const BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign &setup, int aircraftNumber) const; BlackMisc::Simulation::CInterpolationResult getInterpolation(qint64 currentTimeSinceEpoc, const BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign &setup, int aircraftNumber) const;
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolationMessages
BlackMisc::CStatusMessageList getInterpolationMessages(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
//! Interpolator //! Interpolator
BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return m_interpolator.data(); } BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return m_interpolator.data(); }