diff --git a/src/blackcore/context/contextnetwork.h b/src/blackcore/context/contextnetwork.h index 5d66a57c0..12b7d1663 100644 --- a/src/blackcore/context/contextnetwork.h +++ b/src/blackcore/context/contextnetwork.h @@ -269,6 +269,9 @@ namespace BlackCore //! Enable/disable rendering virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) = 0; + //! Set the enabled flag without any further logic like sending signals + virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) = 0; + //! Enable/disable support of gnd. flag virtual bool updateAircraftSupportingGndFLag(const BlackMisc::Aviation::CCallsign &callsign, bool supportGndFlag) = 0; diff --git a/src/blackcore/context/contextnetworkempty.h b/src/blackcore/context/contextnetworkempty.h index 5d3e22575..ae509b384 100644 --- a/src/blackcore/context/contextnetworkempty.h +++ b/src/blackcore/context/contextnetworkempty.h @@ -354,6 +354,15 @@ namespace BlackCore return false; } + //! \copydoc IContextNetwork::setAircraftEnabledFlag + virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override + { + logEmptyContextWarning(Q_FUNC_INFO); + Q_UNUSED(callsign); + Q_UNUSED(enabledForRendering); + return false; + } + //! \copydoc IContextNetwork::reInitializeAllAircraft virtual int reInitializeAllAircraft() override { diff --git a/src/blackcore/context/contextnetworkimpl.cpp b/src/blackcore/context/contextnetworkimpl.cpp index 69baf1295..ae19890c0 100644 --- a/src/blackcore/context/contextnetworkimpl.cpp +++ b/src/blackcore/context/contextnetworkimpl.cpp @@ -122,6 +122,12 @@ namespace BlackCore return m_airspace->remoteAircraftSituation(callsign, index); } + MillisecondsMinMaxMean CContextNetwork::remoteAircraftSituationsTimestampDifferenceMinMaxMean(const CCallsign &callsign) const + { + Q_ASSERT(m_airspace); + return m_airspace->remoteAircraftSituationsTimestampDifferenceMinMaxMean(callsign); + } + CAircraftSituationList CContextNetwork::latestRemoteAircraftSituations() const { Q_ASSERT(m_airspace); @@ -774,6 +780,12 @@ namespace BlackCore return c; } + bool CContextNetwork::setAircraftEnabledFlag(const CCallsign &callsign, bool enabledForRendering) + { + if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign; } + return m_airspace->setAircraftEnabledFlag(callsign, enabledForRendering); + } + bool CContextNetwork::updateAircraftModel(const CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator) { Q_ASSERT(m_airspace); @@ -807,7 +819,7 @@ namespace BlackCore if (c) { const CSimulatedAircraft aircraft(this->getAircraftInRangeForCallsign(callsign)); - CLogMessage(this).info("Callsign %1 sets fast positions ") << aircraft.getCallsign() << BlackMisc::boolToOnOff(aircraft.fastPositionUpdates()); + CLogMessage(this).info("Callsign '%1' fast positions '%2'") << aircraft.getCallsign() << BlackMisc::boolToOnOff(aircraft.fastPositionUpdates()); emit this->changedFastPositionUpdates(aircraft); } return c; @@ -876,6 +888,7 @@ namespace BlackCore int CContextNetwork::reInitializeAllAircraft() { + if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } return m_airspace->reInitializeAllAircraft(); } diff --git a/src/blackcore/context/contextnetworkimpl.h b/src/blackcore/context/contextnetworkimpl.h index 6ab16a414..056afeb48 100644 --- a/src/blackcore/context/contextnetworkimpl.h +++ b/src/blackcore/context/contextnetworkimpl.h @@ -93,6 +93,7 @@ namespace BlackCore //! @{ virtual BlackMisc::Aviation::CAircraftSituationList remoteAircraftSituations(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Aviation::CAircraftSituation remoteAircraftSituation(const BlackMisc::Aviation::CCallsign &callsign, int index) const override; + virtual BlackMisc::MillisecondsMinMaxMean remoteAircraftSituationsTimestampDifferenceMinMaxMean(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Aviation::CAircraftSituationList latestRemoteAircraftSituations() const override; virtual BlackMisc::Aviation::CAircraftSituationList latestOnGroundProviderElevations() const override; virtual int remoteAircraftSituationsCount(const BlackMisc::Aviation::CCallsign &callsign) const override; @@ -153,12 +154,18 @@ namespace BlackCore // from context and provider interface //! \ingroup remoteaircraftprovider //! @{ + + // emit signal when changed 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 updateFastPositionEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enableFastPositonUpdates) override; - virtual int reInitializeAllAircraft() override; virtual bool updateAircraftSupportingGndFLag(const BlackMisc::Aviation::CCallsign &callsign, bool supportGndFlag) override; + virtual void enableReverseLookupMessages(bool enabled) override; + + // plain vanilla passing to airspace monitor + virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override; + virtual int reInitializeAllAircraft() override; virtual bool updateCG(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CLength &cg) override; virtual bool updateCGAndModelString(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CLength &cg, const QString &modelString) override; virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override; @@ -170,7 +177,6 @@ namespace BlackCore virtual BlackMisc::Simulation::CAircraftModel getAircraftInRangeModelForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::CStatusMessageList getReverseLookupMessages(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual bool isReverseLookupMessagesEnabled() const override; - virtual void enableReverseLookupMessages(bool enabled) override; virtual BlackMisc::CStatusMessageList getAircraftPartsHistory(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Aviation::CAircraftPartsList getRemoteAircraftParts(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual int getRemoteAircraftSupportingPartsCount() const override; diff --git a/src/blackcore/context/contextnetworkproxy.cpp b/src/blackcore/context/contextnetworkproxy.cpp index 5eb3b9f0e..2a4adafee 100644 --- a/src/blackcore/context/contextnetworkproxy.cpp +++ b/src/blackcore/context/contextnetworkproxy.cpp @@ -208,9 +208,14 @@ namespace BlackCore m_dBusInterface->callDBus(QLatin1String("requestAtisUpdates")); } - bool CContextNetworkProxy::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRedering) + bool CContextNetworkProxy::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRendering) { - return m_dBusInterface->callDBusRet(QLatin1String("updateAircraftEnabled"), callsign, enabledForRedering); + return m_dBusInterface->callDBusRet(QLatin1String("updateAircraftEnabled"), callsign, enabledForRendering); + } + + bool CContextNetworkProxy::setAircraftEnabledFlag(const CCallsign &callsign, bool enabledForRendering) + { + return m_dBusInterface->callDBusRet(QLatin1String("setEnabledFlag"), callsign, enabledForRendering); } bool CContextNetworkProxy::updateAircraftModel(const CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator) diff --git a/src/blackcore/context/contextnetworkproxy.h b/src/blackcore/context/contextnetworkproxy.h index 3fe3689fe..fc09d8a6e 100644 --- a/src/blackcore/context/contextnetworkproxy.h +++ b/src/blackcore/context/contextnetworkproxy.h @@ -106,7 +106,8 @@ namespace BlackCore virtual bool setOtherClient(const BlackMisc::Network::CClient &client) override; virtual void requestDataUpdates()override; virtual void requestAtisUpdates() override; - virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering) override; + virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override; + virtual bool setAircraftEnabledFlag(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 updateFastPositionEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enableFastPositionSending) override; diff --git a/src/blackcore/context/contextsimulatorimpl.cpp b/src/blackcore/context/contextsimulatorimpl.cpp index 0e82fb227..58c1c303d 100644 --- a/src/blackcore/context/contextsimulatorimpl.cpp +++ b/src/blackcore/context/contextsimulatorimpl.cpp @@ -870,9 +870,10 @@ namespace BlackCore { CSimulatedAircraft aircraft = this->getAircraftInRangeForCallsign(callsign); if (aircraft.getCallsign() != callsign) { return false; } // not found - this->updateAircraftEnabled(callsign, true); - aircraft.setModel(aircraft.getNetworkModel()); - xCtxAddedRemoteAircraftReadyForModelMatching(aircraft); + this->setAircraftEnabledFlag(callsign, true); // plain vanilla flag + this->updateAircraftRendered(callsign, false); // this is flag only anyway + aircraft.setModel(aircraft.getNetworkModel()); // like originally from network + this->xCtxAddedRemoteAircraftReadyForModelMatching(aircraft); return true; } diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index 821e2c104..fe08d04d3 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -472,6 +472,12 @@ namespace BlackMisc } bool CRemoteAircraftProvider::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRendering) + { + // here just synonym + return this->setAircraftEnabledFlag(callsign, enabledForRendering); + } + + bool CRemoteAircraftProvider::setAircraftEnabledFlag(const CCallsign &callsign, bool enabledForRendering) { QWriteLocker l(&m_lockAircraft); if (!m_aircraftInRange.contains(callsign)) { return false; } @@ -1008,6 +1014,12 @@ namespace BlackMisc return this->provider()->updateAircraftEnabled(callsign, enabledForRendering); } + bool CRemoteAircraftAware::setAircraftEnabledFlag(const CCallsign &callsign, bool enabledForRendering) + { + Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available"); + return this->provider()->setAircraftEnabledFlag(callsign, enabledForRendering); + } + bool CRemoteAircraftAware::updateMultipleAircraftEnabled(const CCallsignSet &callsigns, bool enabledForRendering) { Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available"); diff --git a/src/blackmisc/simulation/remoteaircraftprovider.h b/src/blackmisc/simulation/remoteaircraftprovider.h index 80ceed4dd..00bf1908d 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.h +++ b/src/blackmisc/simulation/remoteaircraftprovider.h @@ -153,10 +153,15 @@ namespace BlackMisc //! \threadsafe virtual int remoteAircraftSituationChangesCount(const Aviation::CCallsign &callsign) const = 0; - //! Enable/disable aircraft + //! Enable/disable aircraft and follow up logic like sending signals //! \threadsafe + //! \remark depending on implementation similar or more sophisticated as setEnabledFlag virtual bool updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRendering) = 0; + //! Just set enable/disable aircraft flag, no further logic + //! \threadsafe + virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) = 0; + //! Enable/disable aircraft //! \threadsafe virtual int updateMultipleAircraftEnabled(const Aviation::CCallsignSet &callsigns, bool enabledForRendering) = 0; @@ -295,6 +300,7 @@ namespace BlackMisc virtual bool isVtolAircraft(const Aviation::CCallsign &callsign) const override; virtual Aviation::CAircraftSituationList remoteAircraftSituations(const Aviation::CCallsign &callsign) const override; virtual Aviation::CAircraftSituation remoteAircraftSituation(const Aviation::CCallsign &callsign, int index) const override; + virtual MillisecondsMinMaxMean remoteAircraftSituationsTimestampDifferenceMinMaxMean(const Aviation::CCallsign &callsign) const override; virtual Aviation::CAircraftSituationList latestRemoteAircraftSituations() const override; virtual Aviation::CAircraftSituationList latestOnGroundProviderElevations() const override; virtual int remoteAircraftSituationsCount(const Aviation::CCallsign &callsign) const override; @@ -306,6 +312,7 @@ namespace BlackMisc virtual Aviation::CAircraftSituationChangeList remoteAircraftSituationChanges(const Aviation::CCallsign &callsign) const override; virtual int remoteAircraftSituationChangesCount(const Aviation::CCallsign &callsign) const override; virtual bool updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRendering) override; + virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override; virtual int updateMultipleAircraftEnabled(const Aviation::CCallsignSet &callsigns, bool enabledForRendering) override; virtual bool updateAircraftModel(const Aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator) override; virtual bool updateAircraftNetworkModel(const Aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator) override; @@ -538,7 +545,10 @@ namespace BlackMisc int getRemoteAircraftSupportingPartsCount() const; //! \copydoc IRemoteAircraftProvider::updateAircraftEnabled - bool updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRedering); + bool updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRendering); + + //! \copydoc IRemoteAircraftProvider::setAircraftEnabledFlag + bool setAircraftEnabledFlag(const Aviation::CCallsign &callsign, bool enabledForRendering); //! \copydoc IRemoteAircraftProvider::updateMultipleAircraftEnabled bool updateMultipleAircraftEnabled(const Aviation::CCallsignSet &callsigns, bool enabledForRendering);