refs #840, update (ground) elevation via remote aircraft provider

This commit is contained in:
Klaus Basan
2016-12-21 22:34:21 +01:00
committed by Mathew Sutcliffe
parent 667009c85e
commit be297d8ccf
9 changed files with 110 additions and 128 deletions

View File

@@ -10,6 +10,7 @@
#include "blackmisc/simulation/remoteaircraftprovider.h"
using namespace BlackMisc::Aviation;
using namespace BlackMisc::Geo;
namespace BlackMisc
{
@@ -93,6 +94,12 @@ namespace BlackMisc
return this->m_remoteAircraftProvider->updateAircraftRendered(callsign, rendered);
}
bool CRemoteAircraftAware::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation)
{
Q_ASSERT_X(this->m_remoteAircraftProvider, Q_FUNC_INFO, "No object available");
return this->m_remoteAircraftProvider->updateAircraftGroundElevation(callsign, elevation);
}
void CRemoteAircraftAware::updateMarkAllAsNotRendered()
{
Q_ASSERT_X(this->m_remoteAircraftProvider, Q_FUNC_INFO, "No object available");

View File

@@ -37,7 +37,7 @@ namespace BlackMisc
class CAircraftSituation;
class CCallsign;
}
namespace Geo { class CElevationPlane; }
namespace Simulation
{
//! Direct thread safe in memory access to remote aircraft
@@ -108,6 +108,10 @@ namespace BlackMisc
//! \threadsafe
virtual bool updateAircraftRendered(const BlackMisc::Aviation::CCallsign &callsign, bool rendered) = 0;
//! Ground elevation of aircraft
//! \threadsafe
virtual bool updateAircraftGroundElevation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Geo::CElevationPlane &elevation) = 0;
//! Mark all as not rendered
//! \threadsafe
virtual void updateMarkAllAsNotRendered() = 0;
@@ -168,7 +172,7 @@ namespace BlackMisc
{
public:
//! \copydoc IRemoteAircraftProvider::getAircraftInRange
virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const;
BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const;
//! \copydoc IRemoteAircraftProvider::getAircraftInRangeCount
int getAircraftInRangeCount() const;
@@ -177,46 +181,46 @@ namespace BlackMisc
BlackMisc::Aviation::CCallsignSet getAircraftInRangeCallsigns() const;
//! \copydoc IRemoteAircraftProvider::getAircraftInRangeForCallsign
virtual BlackMisc::Simulation::CSimulatedAircraft getAircraftInRangeForCallsign(const Aviation::CCallsign &callsign) const;
BlackMisc::Simulation::CSimulatedAircraft getAircraftInRangeForCallsign(const Aviation::CCallsign &callsign) const;
//! \copydoc IRemoteAircraftProvider::getAircraftInRangeModelForCallsign
virtual BlackMisc::Simulation::CAircraftModel getAircraftInRangeModelForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
BlackMisc::Simulation::CAircraftModel getAircraftInRangeModelForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const;
//! \copydoc IRemoteAircraftProvider::getLatestAirspaceAircraftSnapshot
virtual BlackMisc::Simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const;
BlackMisc::Simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const;
//! \copydoc IRemoteAircraftProvider::remoteAircraftSituations
virtual BlackMisc::Aviation::CAircraftSituationList remoteAircraftSituations(const BlackMisc::Aviation::CCallsign &callsign) const;
BlackMisc::Aviation::CAircraftSituationList remoteAircraftSituations(const BlackMisc::Aviation::CCallsign &callsign) const;
//! \copydoc IRemoteAircraftProvider::remoteAircraftParts
virtual BlackMisc::Aviation::CAircraftPartsList remoteAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, qint64 cutoffTimeBefore) const;
BlackMisc::Aviation::CAircraftPartsList remoteAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, qint64 cutoffTimeBefore) const;
//! \copydoc IRemoteAircraftProvider::remoteAircraftSupportingParts
virtual BlackMisc::Aviation::CCallsignSet remoteAircraftSupportingParts() const;
BlackMisc::Aviation::CCallsignSet remoteAircraftSupportingParts() const;
//! \copydoc IRemoteAircraftProvider::remoteAircraftSituationsCount
virtual int remoteAircraftSituationsCount(const BlackMisc::Aviation::CCallsign &callsign) const;
int remoteAircraftSituationsCount(const BlackMisc::Aviation::CCallsign &callsign) const;
//! \copydoc IRemoteAircraftProvider::isRemoteAircraftSupportingParts
virtual bool isRemoteAircraftSupportingParts(const BlackMisc::Aviation::CCallsign &callsign) const;
bool isRemoteAircraftSupportingParts(const BlackMisc::Aviation::CCallsign &callsign) const;
//! \copydoc IRemoteAircraftProvider::updateAircraftEnabled
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering);
bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering);
//! \copydoc IRemoteAircraftProvider::updateAircraftModel
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator);
bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator);
//! \copydoc IRemoteAircraftProvider::updateAircraftNetworkModel
virtual bool updateAircraftNetworkModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator);
bool updateAircraftNetworkModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator);
//! \copydoc IRemoteAircraftProvider::updateAircraftRendered
virtual bool updateAircraftRendered(const BlackMisc::Aviation::CCallsign &callsign, bool rendered);
bool updateAircraftRendered(const BlackMisc::Aviation::CCallsign &callsign, bool rendered);
//! \copydoc IRemoteAircraftProvider::updateAircraftGroundElevation
bool updateAircraftGroundElevation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Geo::CElevationPlane &elevation);
//! \copydoc IRemoteAircraftProvider::updateMarkAllAsNotRendered
virtual void updateMarkAllAsNotRendered();
//! Destructor
virtual ~CRemoteAircraftAware() {}
void updateMarkAllAsNotRendered();
//! Set remote aircraft provider
void setRemoteAircraftProvider(IRemoteAircraftProvider *remoteAircraftProvider) { m_remoteAircraftProvider = remoteAircraftProvider; }

View File

@@ -8,17 +8,19 @@
*/
#include "blackmisc/aviation/callsign.h"
#include "blackmisc/geo/elevationplane.h"
#include "blackmisc/simulation/remoteaircraftproviderdummy.h"
#include "blackmisc/collection.h"
#include "blackmisc/compare.h"
#include "blackmisc/dictionary.h"
#include "blackmisc/metaclassprivate.h"
#include "blackmisc/propertyindexvariantmap.h"
#include "blackmisc/simulation/remoteaircraftproviderdummy.h"
#include "blackmisc/variant.h"
#include <QHash>
using namespace BlackMisc::Aviation;
using namespace BlackMisc::Geo;
namespace BlackMisc
{
@@ -105,7 +107,7 @@ namespace BlackMisc
bool CRemoteAircraftProviderDummy::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRendering)
{
CPropertyIndexVariantMap vm(CSimulatedAircraft::IndexEnabled, CVariant::fromValue(enabledForRendering));
int n = this->m_aircraft.applyIfCallsign(callsign, vm);
const int n = this->m_aircraft.applyIfCallsign(callsign, vm);
return n > 0;
}
@@ -113,7 +115,7 @@ namespace BlackMisc
{
Q_UNUSED(originator);
CPropertyIndexVariantMap vm(CSimulatedAircraft::IndexModel, CVariant::from(model));
int n = this->m_aircraft.applyIfCallsign(callsign, vm);
const int n = this->m_aircraft.applyIfCallsign(callsign, vm);
return n > 0;
}
@@ -121,24 +123,31 @@ namespace BlackMisc
{
Q_UNUSED(originator);
CPropertyIndexVariantMap vm(CSimulatedAircraft::IndexNetworkModel, CVariant::from(model));
int n = this->m_aircraft.applyIfCallsign(callsign, vm);
const int n = this->m_aircraft.applyIfCallsign(callsign, vm);
return n > 0;
}
bool CRemoteAircraftProviderDummy::updateFastPositionEnabled(const CCallsign &callsign, bool enableFastPositionUpdates)
{
CPropertyIndexVariantMap vm(CSimulatedAircraft::IndexFastPositionUpdates, CVariant::fromValue(enableFastPositionUpdates));
int n = this->m_aircraft.applyIfCallsign(callsign, vm);
const int n = this->m_aircraft.applyIfCallsign(callsign, vm);
return n > 0;
}
bool CRemoteAircraftProviderDummy::updateAircraftRendered(const CCallsign &callsign, bool rendered)
{
CPropertyIndexVariantMap vm(CSimulatedAircraft::IndexRendered, CVariant::fromValue(rendered));
int n = this->m_aircraft.applyIfCallsign(callsign, vm);
const int n = this->m_aircraft.applyIfCallsign(callsign, vm);
return n > 0;
}
bool CRemoteAircraftProviderDummy::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation)
{
CPropertyIndexVariantMap vm({ CSimulatedAircraft::IndexSituation, CAircraftSituation::IndexGroundSpeed }, CVariant::fromValue(elevation));
const int c = this->m_aircraft.applyIfCallsign(callsign, vm);
return c > 0;
}
void CRemoteAircraftProviderDummy::updateMarkAllAsNotRendered()
{
this->m_aircraft.markAllAsNotRendered();

View File

@@ -62,8 +62,7 @@ namespace BlackMisc
//! Clear all data
void clear();
//! \name Interface overrides
//! @{
// Interface overrides
virtual CSimulatedAircraftList getAircraftInRange() const override;
virtual int getAircraftInRangeCount() const override;
virtual Aviation::CCallsignSet getAircraftInRangeCallsigns() const override;
@@ -84,9 +83,10 @@ namespace BlackMisc
) override;
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) override;
virtual bool updateAircraftNetworkModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) override;
virtual bool updateAircraftNetworkModel(const Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) override;
virtual bool updateFastPositionEnabled(const Aviation::CCallsign &callsign, bool enableFastPositionUpdates) override;
virtual bool updateAircraftRendered(const Aviation::CCallsign &callsign, bool rendered) override;
virtual bool updateAircraftGroundElevation(const Aviation::CCallsign &callsign, const BlackMisc::Geo::CElevationPlane &elevation) override;
virtual void updateMarkAllAsNotRendered() override;
virtual BlackMisc::CStatusMessageList getReverseLookupMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool isReverseLookupMessagesEnabled() const override;
@@ -94,7 +94,6 @@ namespace BlackMisc
virtual BlackMisc::CStatusMessageList getAircraftPartsHistory(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool isAircraftPartsHistoryEnabled() const override;
virtual void enableAircraftPartsHistory(bool enabled) override;
//! @}
signals:
//! Added situation