diff --git a/src/blackcore/context/contextsimulator.h b/src/blackcore/context/contextsimulator.h index a57cdca42..9f5250f12 100644 --- a/src/blackcore/context/contextsimulator.h +++ b/src/blackcore/context/contextsimulator.h @@ -314,7 +314,7 @@ namespace BlackCore virtual void setWeatherActivated(bool activated) = 0; //! 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; + virtual void requestWeatherGrid(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::CIdentifier &identifier) = 0; //! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevationBySituation virtual bool requestElevationBySituation(const BlackMisc::Aviation::CAircraftSituation &situation) = 0; diff --git a/src/blackcore/context/contextsimulatorempty.h b/src/blackcore/context/contextsimulatorempty.h index 68a445aac..eb863f5e6 100644 --- a/src/blackcore/context/contextsimulatorempty.h +++ b/src/blackcore/context/contextsimulatorempty.h @@ -55,8 +55,8 @@ namespace BlackCore //! \copydoc IContextSimulator::setSimulatorSettings virtual bool setSimulatorSettings(const BlackMisc::Simulation::Settings::CSimulatorSettings &settings, const BlackMisc::Simulation::CSimulatorInfo &simulatorInfo) override { - Q_UNUSED(settings); - Q_UNUSED(simulatorInfo); + Q_UNUSED(settings) + Q_UNUSED(simulatorInfo) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -64,7 +64,7 @@ namespace BlackCore //! \copydoc IContextSimulator::startSimulatorPlugin virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override { - Q_UNUSED(simulatorInfo); + Q_UNUSED(simulatorInfo) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -85,14 +85,14 @@ namespace BlackCore //! \copydoc IContextSimulator::stopSimulatorPlugin virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override { - Q_UNUSED(simulatorInfo); + Q_UNUSED(simulatorInfo) logEmptyContextWarning(Q_FUNC_INFO); } //! \copydoc IContextSimulator::getAirportsInRange virtual BlackMisc::Aviation::CAirportList getAirportsInRange(bool recalculatePosition) const override { - Q_UNUSED(recalculatePosition); + Q_UNUSED(recalculatePosition) logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::Aviation::CAirportList(); } @@ -224,8 +224,8 @@ namespace BlackCore //! \copydoc IContextSimulator::setTimeSynchronization virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override { - Q_UNUSED(enable); - Q_UNUSED(offset); + Q_UNUSED(enable) + Q_UNUSED(offset) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -254,7 +254,7 @@ namespace BlackCore //! \copydoc ISimulator::getInterpolationSetupPerCallsignOrDefault virtual BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign getInterpolationAndRenderingSetupPerCallsignOrDefault(const BlackMisc::Aviation::CCallsign &callsign) const override { - Q_UNUSED(callsign); + Q_UNUSED(callsign) logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign(); } @@ -262,15 +262,15 @@ namespace BlackCore //! \copydoc BlackMisc::Simulation::IInterpolationSetupProvider::setInterpolationSetupGlobal virtual void setInterpolationAndRenderingSetupGlobal(const BlackMisc::Simulation::CInterpolationAndRenderingSetupGlobal &setup) override { - Q_UNUSED(setup); + Q_UNUSED(setup) logEmptyContextWarning(Q_FUNC_INFO); } //! \copydoc BlackMisc::Simulation::IInterpolationSetupProvider::setInterpolationSetupsPerCallsign virtual bool setInterpolationAndRenderingSetupsPerCallsign(const BlackMisc::Simulation::CInterpolationSetupList &setups, bool ignoreSameAsGlobal) override { - Q_UNUSED(setups); - Q_UNUSED(ignoreSameAsGlobal); + Q_UNUSED(setups) + Q_UNUSED(ignoreSameAsGlobal) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -278,7 +278,7 @@ namespace BlackCore //! \copydoc IContextSimulator::getInterpolationMessages virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override { - Q_UNUSED(callsign); + Q_UNUSED(callsign) logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::CStatusMessageList(); } @@ -293,7 +293,7 @@ namespace BlackCore //! \copydoc IContextSimulator::iconForModel virtual BlackMisc::CPixmap iconForModel(const QString &modelString) const override { - Q_UNUSED(modelString); + Q_UNUSED(modelString) logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::CPixmap(); } @@ -301,16 +301,16 @@ namespace BlackCore //! \copydoc IContextSimulator::highlightAircraft virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override { - Q_UNUSED(aircraftToHighlight); - Q_UNUSED(enableHighlight); - Q_UNUSED(displayTime); + Q_UNUSED(aircraftToHighlight) + Q_UNUSED(enableHighlight) + Q_UNUSED(displayTime) logEmptyContextWarning(Q_FUNC_INFO); } //! \copydoc IContextSimulator::followAircraft virtual bool followAircraft(const BlackMisc::Aviation::CCallsign &callsign) override { - Q_UNUSED(callsign); + Q_UNUSED(callsign) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -324,7 +324,7 @@ namespace BlackCore //! \copydoc IContextSimulator::resetToModelMatchingAircraft virtual bool resetToModelMatchingAircraft(const BlackMisc::Aviation::CCallsign &callsign) override { - Q_UNUSED(callsign); + Q_UNUSED(callsign) return false; } @@ -338,7 +338,7 @@ namespace BlackCore //! \copydoc IContextSimulator::doMatchingAgain virtual bool doMatchingAgain(const BlackMisc::Aviation::CCallsign &callsign) override { - Q_UNUSED(callsign); + Q_UNUSED(callsign) return false; } @@ -352,22 +352,22 @@ namespace BlackCore //! \copydoc IContextSimulator::setWeatherActivated virtual void setWeatherActivated(bool activated) override { - Q_UNUSED(activated); + Q_UNUSED(activated) logEmptyContextWarning(Q_FUNC_INFO); } //! \copydoc IContextSimulator::requestWeatherGrid - virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) override + virtual void requestWeatherGrid(const BlackMisc::Geo::CCoordinateGeodetic &position, const BlackMisc::CIdentifier &identifier) override { - Q_UNUSED(weatherGrid); - Q_UNUSED(identifier); + Q_UNUSED(position) + Q_UNUSED(identifier) logEmptyContextWarning(Q_FUNC_INFO); } //! \copydoc IContextSimulator::requestWeatherGrid virtual bool requestElevationBySituation(const BlackMisc::Aviation::CAircraftSituation &situation) override { - Q_UNUSED(situation); + Q_UNUSED(situation) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -375,8 +375,8 @@ namespace BlackCore //! \copydoc IContextSimulator::findClosestElevationWithinRange virtual BlackMisc::Geo::CElevationPlane findClosestElevationWithinRange(const BlackMisc::Geo::CCoordinateGeodetic &reference, const BlackMisc::PhysicalQuantities::CLength &range) const override { - Q_UNUSED(reference); - Q_UNUSED(range); + Q_UNUSED(reference) + Q_UNUSED(range) logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::Geo::CElevationPlane::null(); } @@ -392,7 +392,7 @@ namespace BlackCore //! \copydoc IContextSimulator::enableMatchingMessages virtual void enableMatchingMessages(BlackMisc::Simulation::MatchingLog enable) override { - Q_UNUSED(enable); + Q_UNUSED(enable) logEmptyContextWarning(Q_FUNC_INFO); } @@ -406,8 +406,8 @@ namespace BlackCore //! \copydoc IContextSimulator::parseCommandLine virtual bool parseCommandLine(const QString &commandLine, const BlackMisc::CIdentifier &originator) override { - Q_UNUSED(commandLine); - Q_UNUSED(originator); + Q_UNUSED(commandLine) + Q_UNUSED(originator) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -415,7 +415,7 @@ namespace BlackCore //! \copydoc IContextSimulator::getCurrentMatchingStatistics virtual BlackMisc::Simulation::CMatchingStatistics getCurrentMatchingStatistics(bool missingOnly) const override { - Q_UNUSED(missingOnly); + Q_UNUSED(missingOnly) logEmptyContextWarning(Q_FUNC_INFO); return BlackMisc::Simulation::CMatchingStatistics(); } @@ -423,15 +423,15 @@ namespace BlackCore //! \copydoc IContextSimulator::setMatchingSetup virtual void setMatchingSetup(const BlackMisc::Simulation::CAircraftMatcherSetup &setup) override { - Q_UNUSED(setup); + Q_UNUSED(setup) logEmptyContextWarning(Q_FUNC_INFO); } //! \copydoc IContextSimulator::testRemoteAircraft virtual bool testRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, bool add) override { - Q_UNUSED(aircraft); - Q_UNUSED(add); + Q_UNUSED(aircraft) + Q_UNUSED(add) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -439,9 +439,9 @@ namespace BlackCore //! \copydoc IContextSimulator::testUpdateRemoteAircraft virtual bool testUpdateRemoteAircraft(const BlackMisc::Aviation::CCallsign cs, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override { - Q_UNUSED(cs); - Q_UNUSED(situation); - Q_UNUSED(parts); + Q_UNUSED(cs) + Q_UNUSED(situation) + Q_UNUSED(parts) logEmptyContextWarning(Q_FUNC_INFO); return false; } @@ -456,7 +456,7 @@ namespace BlackCore //! \copydoc IContextSimulator::copyFsxTerrainProbe virtual BlackMisc::CStatusMessageList copyFsxTerrainProbe(const BlackMisc::Simulation::CSimulatorInfo &simulator) override { - Q_UNUSED(simulator); + Q_UNUSED(simulator) return BlackMisc::CStatusMessageList(); } diff --git a/src/blackcore/context/contextsimulatorimpl.cpp b/src/blackcore/context/contextsimulatorimpl.cpp index 180b04d9a..ccbe8a9bd 100644 --- a/src/blackcore/context/contextsimulatorimpl.cpp +++ b/src/blackcore/context/contextsimulatorimpl.cpp @@ -77,7 +77,8 @@ namespace BlackCore m_plugins->collectPlugins(); this->restoreSimulatorPlugins(); - connect(&m_weatherManager, &CWeatherManager::weatherGridReceived, this, &CContextSimulator::weatherGridReceived, Qt::QueuedConnection); + connect(&m_weatherManager, &CWeatherManager::weatherGridReceived, this, &CContextSimulator::weatherGridReceived, Qt::QueuedConnection); + connect(&m_weatherManager, &CWeatherManager::weatherGridReceived, this, &CContextSimulator::onWeatherGridReceived, Qt::QueuedConnection); connect(&m_aircraftMatcher, &CAircraftMatcher::setupChanged, this, &CContextSimulator::matchingSetupChanged); connect(&CCentralMultiSimulatorModelSetCachesProvider::modelCachesInstance(), &CCentralMultiSimulatorModelSetCachesProvider::cacheChanged, this, &CContextSimulator::modelSetChanged); @@ -870,6 +871,16 @@ namespace BlackCore emit this->addingRemoteModelFailed(remoteAircraft, disabled, failover, message); } + void CContextSimulator::onWeatherGridReceived(const CWeatherGrid &weatherGrid, const CIdentifier &identifier) + { + if (!this->isSimulatorPluginAvailable()) { return; } + if (!m_simulatorPlugin.second) { return; } + if (m_simulatorPlugin.second->identifier() == identifier) + { + m_simulatorPlugin.second->injectWeatherGrid(weatherGrid); + } + } + void CContextSimulator::xCtxUpdateSimulatorCockpitFromContext(const CSimulatedAircraft &ownAircraft, const CIdentifier &originator) { if (!this->isSimulatorAvailable()) { return; } @@ -1141,10 +1152,10 @@ namespace BlackCore m_simulatorPlugin.second->setWeatherActivated(activated); } - void CContextSimulator::requestWeatherGrid(const CWeatherGrid &weatherGrid, const CIdentifier &identifier) + void CContextSimulator::requestWeatherGrid(const CCoordinateGeodetic &position, const CIdentifier &identifier) { if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << identifier; } - m_weatherManager.requestWeatherGrid(weatherGrid, identifier); + m_weatherManager.requestWeatherGrid(position, identifier); } bool CContextSimulator::requestElevationBySituation(const CAircraftSituation &situation) @@ -1240,7 +1251,7 @@ namespace BlackCore { const bool s = QMetaObject::invokeMethod(listener, &ISimulatorListener::stop); Q_ASSERT_X(s, Q_FUNC_INFO, "Cannot invoke stop"); - Q_UNUSED(s); + Q_UNUSED(s) } } } diff --git a/src/blackcore/context/contextsimulatorimpl.h b/src/blackcore/context/contextsimulatorimpl.h index a05c5797a..f7397fc21 100644 --- a/src/blackcore/context/contextsimulatorimpl.h +++ b/src/blackcore/context/contextsimulatorimpl.h @@ -117,7 +117,7 @@ namespace BlackCore virtual bool resetToModelMatchingAircraft(const BlackMisc::Aviation::CCallsign &callsign) override; 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 void requestWeatherGrid(const BlackMisc::Geo::CCoordinateGeodetic &position, 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; @@ -236,6 +236,9 @@ namespace BlackCore //! Failed adding remote aircraft void onAddingRemoteAircraftFailed(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, bool disabled, bool requestFailover, const BlackMisc::CStatusMessage &message); + //! Weather request was received + void onWeatherGridReceived(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier); + //! Relay status message to simulator under consideration of settings void relayStatusMessageToSimulator(const BlackMisc::CStatusMessage &message); diff --git a/src/blackcore/context/contextsimulatorproxy.cpp b/src/blackcore/context/contextsimulatorproxy.cpp index 5a3d10e6c..123146732 100644 --- a/src/blackcore/context/contextsimulatorproxy.cpp +++ b/src/blackcore/context/contextsimulatorproxy.cpp @@ -42,7 +42,7 @@ namespace BlackCore // connect signals, asserts when failures QDBusConnection con = QDBusConnection::sessionBus(); CContextSimulatorProxy c(CDBusServer::coreServiceName(), con, CCoreFacadeConfig::Remote, nullptr); - Q_UNUSED(c); + Q_UNUSED(c) } void CContextSimulatorProxy::relaySignals(const QString &serviceName, QDBusConnection &connection) @@ -104,7 +104,7 @@ namespace BlackCore s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(), "validatedModelSet", this, SIGNAL(validatedModelSet(BlackMisc::Simulation::CSimulatorInfo, BlackMisc::Simulation::CAircraftModelList, BlackMisc::Simulation::CAircraftModelList, bool, BlackMisc::CStatusMessageList))); Q_ASSERT(s); - Q_UNUSED(s); + Q_UNUSED(s) this->relayBaseClassSignals(serviceName, connection, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName()); } @@ -318,9 +318,9 @@ namespace BlackCore m_dBusInterface->callDBus(QLatin1String("setWeatherActivated"), activated); } - void CContextSimulatorProxy::requestWeatherGrid(const Weather::CWeatherGrid &weatherGrid, const CIdentifier &identifier) + void CContextSimulatorProxy::requestWeatherGrid(const CCoordinateGeodetic &position, const CIdentifier &identifier) { - m_dBusInterface->callDBus(QLatin1String("requestWeatherGrid"), weatherGrid, identifier); + m_dBusInterface->callDBus(QLatin1String("requestWeatherGrid"), position, identifier); } bool CContextSimulatorProxy::requestElevationBySituation(const CAircraftSituation &situation) diff --git a/src/blackcore/context/contextsimulatorproxy.h b/src/blackcore/context/contextsimulatorproxy.h index 1a5f7c2ca..46c18fccd 100644 --- a/src/blackcore/context/contextsimulatorproxy.h +++ b/src/blackcore/context/contextsimulatorproxy.h @@ -100,7 +100,7 @@ namespace BlackCore virtual bool resetToModelMatchingAircraft(const BlackMisc::Aviation::CCallsign &callsign) override; 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 void requestWeatherGrid(const BlackMisc::Geo::CCoordinateGeodetic &position, 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; diff --git a/src/blackcore/simulator.cpp b/src/blackcore/simulator.cpp index 62b16f39d..2c72d410e 100644 --- a/src/blackcore/simulator.cpp +++ b/src/blackcore/simulator.cpp @@ -148,6 +148,10 @@ namespace BlackCore this->injectWeatherGrid(CWeatherGrid::getByScenario(selectedWeatherScenario)); } } + else + { + m_lastWeatherPosition = {}; // clean up so next time we fetch weather again + } } void ISimulator::setFlightNetworkConnected(bool connected) diff --git a/src/blackcore/simulator.h b/src/blackcore/simulator.h index 75897650e..52172216a 100644 --- a/src/blackcore/simulator.h +++ b/src/blackcore/simulator.h @@ -270,6 +270,9 @@ namespace BlackCore //! \remark public for testing purposes virtual void callbackReceivedRequestedElevation(const BlackMisc::Geo::CElevationPlane &plane, const BlackMisc::Aviation::CCallsign &callsign, bool isWater); + //! Inject weather grid to simulator + virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid); + //! Allows to print out simulator specific statistics virtual QString getStatisticsSimulatorSpecific() const { return QString(); } @@ -524,9 +527,6 @@ namespace BlackCore //! Kill timer if id is valid void safeKillTimer(); - //! Inject weather grid to simulator - virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid); - //! Blink the highlighted aircraft void blinkHighlightedAircraft();