From e97de1354506d3f4b62b5239868074bf53b7ce53 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 14 Apr 2018 06:56:01 +0200 Subject: [PATCH] Ref T260, adjusted context/remote provider * signal from simulator -> context * return number of updated situations --- src/blackcore/context/contextnetworkimpl.cpp | 2 +- src/blackcore/context/contextnetworkimpl.h | 2 +- .../context/contextsimulatorimpl.cpp | 8 ++++++ src/blackcore/context/contextsimulatorimpl.h | 25 ++++++++++++------- .../simulation/remoteaircraftprovider.cpp | 18 ++++++------- .../simulation/remoteaircraftprovider.h | 6 ++--- 6 files changed, 38 insertions(+), 23 deletions(-) diff --git a/src/blackcore/context/contextnetworkimpl.cpp b/src/blackcore/context/contextnetworkimpl.cpp index d8ad7c4df..ecc1bb321 100644 --- a/src/blackcore/context/contextnetworkimpl.cpp +++ b/src/blackcore/context/contextnetworkimpl.cpp @@ -699,7 +699,7 @@ namespace BlackCore return c; } - bool CContextNetwork::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation) + int CContextNetwork::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation) { return m_airspace->updateAircraftGroundElevation(callsign, elevation); } diff --git a/src/blackcore/context/contextnetworkimpl.h b/src/blackcore/context/contextnetworkimpl.h index 0532127c7..776ef84ef 100644 --- a/src/blackcore/context/contextnetworkimpl.h +++ b/src/blackcore/context/contextnetworkimpl.h @@ -102,7 +102,7 @@ namespace BlackCore std::function aircraftSnapshotSlot ) override; virtual bool updateAircraftRendered(const BlackMisc::Aviation::CCallsign &callsign, bool rendered) override; - virtual bool updateAircraftGroundElevation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Geo::CElevationPlane &elevation) override; + virtual int updateAircraftGroundElevation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Geo::CElevationPlane &elevation) override; virtual void updateMarkAllAsNotRendered() override; virtual BlackMisc::Simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const override; //! @} diff --git a/src/blackcore/context/contextsimulatorimpl.cpp b/src/blackcore/context/contextsimulatorimpl.cpp index ade8e5834..416630449 100644 --- a/src/blackcore/context/contextsimulatorimpl.cpp +++ b/src/blackcore/context/contextsimulatorimpl.cpp @@ -358,6 +358,8 @@ namespace BlackCore Q_ASSERT(c); c = connect(simulator, &ISimulator::physicallyAddingRemoteModelFailed, this, &CContextSimulator::addingRemoteAircraftFailed); Q_ASSERT(c); + c = connect(simulator, &ISimulator::receivedRequestedElevation, this, &CContextSimulator::onReceivedRequestedElevation); + Q_ASSERT(c); c = connect(simulator, &ISimulator::ownAircraftModelChanged, this, &IContextSimulator::ownAircraftModelChanged); Q_ASSERT(c); c = connect(simulator, &ISimulator::aircraftRenderingChanged, this, &IContextSimulator::aircraftRenderingChanged); @@ -557,6 +559,12 @@ namespace BlackCore emit getIContextOwnAircraft()->changedAircraftCockpit(ownAircraft, IContextSimulator::InterfaceName()); } + void CContextSimulator::onReceivedRequestedElevation(const CElevationPlane &plane, const CCallsign &callsign) + { + if (!isSimulatorSimulating()) { return; } + emit this->receivedRequestedElevation(plane, callsign); + } + void CContextSimulator::xCtxChangedRemoteAircraftModel(const CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator) { if (CIdentifiable::isMyIdentifier(originator)) { return; } diff --git a/src/blackcore/context/contextsimulatorimpl.h b/src/blackcore/context/contextsimulatorimpl.h index 7205ea83a..9e50b1b22 100644 --- a/src/blackcore/context/contextsimulatorimpl.h +++ b/src/blackcore/context/contextsimulatorimpl.h @@ -66,13 +66,6 @@ namespace BlackCore friend class BlackCore::CCoreFacade; friend class IContextSimulator; - public: - //! Destructor - virtual ~CContextSimulator(); - - //! Gracefully shut down, e.g. for plugin unloading - void gracefulShutdown(); - public slots: // ----------------------------- context interface ----------------------------- //! \publicsection @@ -126,6 +119,15 @@ namespace BlackCore // ----------------------------- context interface ----------------------------- public: + //! Destructor + virtual ~CContextSimulator(); + + //! Gracefully shut down, e.g. for plugin unloading + void gracefulShutdown(); + + //! Simulator object + ISimulator *simulator() const; + //! Register dot commands static void registerHelp() { @@ -136,8 +138,10 @@ namespace BlackCore BlackMisc::CSimpleCommandParser::registerCommand({".ris parts on|off", "aircraft parts"}); } - //! Simulator object - ISimulator *simulator() const; + signals: + //! A requested elevation has been received + //! \remark only meant to be used locally, not via DBus + void receivedRequestedElevation(const BlackMisc::Geo::CElevationPlane &plane, const BlackMisc::Aviation::CCallsign &callsign); protected: //! Constructor @@ -192,6 +196,9 @@ namespace BlackCore //! Simulator has changed cockpit void onCockpitChangedFromSimulator(const BlackMisc::Simulation::CSimulatedAircraft &ownAircraft); + //! Received elevation + void onReceivedRequestedElevation(const BlackMisc::Geo::CElevationPlane &plane, const BlackMisc::Aviation::CCallsign &callsign); + //! Failed adding remote aircraft void addingRemoteAircraftFailed(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, const BlackMisc::CStatusMessage &message); diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index 70b25076c..7f578d270 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -337,26 +337,26 @@ namespace BlackMisc return c > 0; } - bool CRemoteAircraftProvider::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation) + int CRemoteAircraftProvider::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation) { - if (!this->isAircraftInRange(callsign)) { return false; } + if (!this->isAircraftInRange(callsign)) { return 0; } // update aircraft situation - CAircraftSituationList situations = this->remoteAircraftSituations(callsign); - const int updated = situations.setGroundElevationChecked(elevation); - if (updated < 1) { return false; } const qint64 ts = QDateTime::currentMSecsSinceEpoch(); - + int updated = 0; { QWriteLocker l(&m_lockSituations); - m_situationsByCallsign[callsign] = situations; + updated = m_situationsByCallsign[callsign].setGroundElevationChecked(elevation); + if (updated < 1) { return 0; } m_situationsLastModified[callsign] = ts; } // aircraft updates QWriteLocker l(&m_lockAircraft); const int c = m_aircraftInRange.setGroundElevationChecked(callsign, elevation); - return c > 0; + Q_UNUSED(c); // just for info, expect 1 + + return updated; // updated situations } void CRemoteAircraftProvider::updateMarkAllAsNotRendered() @@ -608,7 +608,7 @@ namespace BlackMisc return this->provider()->updateAircraftRendered(callsign, rendered); } - bool CRemoteAircraftAware::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation) + int CRemoteAircraftAware::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation) { Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available"); return this->provider()->updateAircraftGroundElevation(callsign, elevation); diff --git a/src/blackmisc/simulation/remoteaircraftprovider.h b/src/blackmisc/simulation/remoteaircraftprovider.h index 0dcbfbc41..89fc1182a 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.h +++ b/src/blackmisc/simulation/remoteaircraftprovider.h @@ -147,7 +147,7 @@ namespace BlackMisc //! Ground elevation of aircraft //! \threadsafe - virtual bool updateAircraftGroundElevation(const Aviation::CCallsign &callsign, const Geo::CElevationPlane &elevation) = 0; + virtual int updateAircraftGroundElevation(const Aviation::CCallsign &callsign, const Geo::CElevationPlane &elevation) = 0; //! Get reverse lookup meesages //! \threadsafe @@ -252,7 +252,7 @@ namespace BlackMisc virtual bool updateAircraftNetworkModel(const Aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator) override; virtual bool updateFastPositionEnabled(const Aviation::CCallsign &callsign, bool enableFastPositonUpdates) override; virtual bool updateAircraftRendered(const Aviation::CCallsign &callsign, bool rendered) override; - virtual bool updateAircraftGroundElevation(const Aviation::CCallsign &callsign, const Geo::CElevationPlane &elevation) override; + virtual int updateAircraftGroundElevation(const Aviation::CCallsign &callsign, const Geo::CElevationPlane &elevation) override; virtual void updateMarkAllAsNotRendered() override; virtual CStatusMessageList getAircraftPartsHistory(const Aviation::CCallsign &callsign) const override; virtual bool isAircraftPartsHistoryEnabled() const override; @@ -443,7 +443,7 @@ namespace BlackMisc bool updateAircraftRendered(const Aviation::CCallsign &callsign, bool rendered); //! \copydoc IRemoteAircraftProvider::updateAircraftGroundElevation - bool updateAircraftGroundElevation(const Aviation::CCallsign &callsign, const Geo::CElevationPlane &elevation); + int updateAircraftGroundElevation(const Aviation::CCallsign &callsign, const Geo::CElevationPlane &elevation); //! \copydoc IRemoteAircraftProvider::updateMarkAllAsNotRendered void updateMarkAllAsNotRendered();