From 851bb70a685028b316be5c16f194d736ff512eba Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 11 Jul 2014 00:34:52 +0200 Subject: [PATCH] refs #289, added methods for time sync in context, plugin Remark: in the same step added methods for paused simulator --- src/blackcore/context_simulator.h | 9 +++++++++ src/blackcore/context_simulator_impl.cpp | 18 +++++++++++++++++- src/blackcore/context_simulator_impl.h | 9 +++++++++ src/blackcore/context_simulator_proxy.cpp | 15 +++++++++++++++ src/blackcore/context_simulator_proxy.h | 10 ++++++++++ src/blackcore/simulator.h | 9 +++++++++ src/plugins/simulator/fsx/simulator_fsx.h | 9 +++++++++ .../simulator/xplane/simulator_xplane.h | 9 +++++++++ 8 files changed, 87 insertions(+), 1 deletion(-) diff --git a/src/blackcore/context_simulator.h b/src/blackcore/context_simulator.h index fbc1c815a..bf4691025 100644 --- a/src/blackcore/context_simulator.h +++ b/src/blackcore/context_simulator.h @@ -102,6 +102,12 @@ namespace BlackCore //! \remarks not all drivers implement this, e.g. if it is an intrinsic simulator feature virtual void setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) = 0; + //! Is time synchronization on? + virtual bool isTimeSynchronized() const = 0; + + //! Time synchronization offset + virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const = 0; + //! Load specific simulator plugin virtual bool loadSimulatorPlugin(const BlackSim::CSimulatorInfo &simulatorInfo) = 0; @@ -114,6 +120,9 @@ namespace BlackCore //! Simulator avialable? bool isSimulatorAvailable() const { return BlackMisc::CProject::isCompiledWithFlightSimulatorSupport() && !getSimulatorInfo().isUnspecified(); } + //! Simulator paused? + virtual bool isSimulatorPaused() const = 0; + //! Settings have been changed virtual void settingsChanged(uint type) = 0; diff --git a/src/blackcore/context_simulator_impl.cpp b/src/blackcore/context_simulator_impl.cpp index 298728cbb..c93089f6c 100644 --- a/src/blackcore/context_simulator_impl.cpp +++ b/src/blackcore/context_simulator_impl.cpp @@ -109,7 +109,19 @@ namespace BlackCore void CContextSimulator::setTimeSynchronization(bool enable, CTime offset) { if (!m_simulator) return; - this->setTimeSynchronization(enable, offset); + this->m_simulator->setTimeSynchronization(enable, offset); + } + + bool CContextSimulator::isTimeSynchronized() const + { + if (!m_simulator) return false; + return this->m_simulator->isTimeSynchronized(); + } + + CTime CContextSimulator::getTimeSynchronizationOffset() const + { + if (!m_simulator) return CTime(0, CTimeUnit::hrmin()); + return this->m_simulator->getTimeSynchronizationOffset(); } bool CContextSimulator::loadSimulatorPlugin(const CSimulatorInfo &simulatorInfo) @@ -306,6 +318,10 @@ namespace BlackCore this->getRuntime()->sendStatusMessage(CStatusMessage::getErrorMessage(m, CStatusMessage::TypeSimulator)); } } + bool CContextSimulator::isSimulatorPaused() const + { + if (!this->m_simulator) return false; + return this->m_simulator->isSimPaused(); } void CContextSimulator::findSimulatorPlugins() diff --git a/src/blackcore/context_simulator_impl.h b/src/blackcore/context_simulator_impl.h index e709617fd..4e63420b3 100644 --- a/src/blackcore/context_simulator_impl.h +++ b/src/blackcore/context_simulator_impl.h @@ -65,6 +65,12 @@ namespace BlackCore //! \copydoc IContextSimulator::setTimeSynchronization virtual void setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) override; + //! \copydoc IContextSimulator::isTimeSynchronized + virtual bool isTimeSynchronized() const override; + + //! \copydoc IContextSimulator::getTimeSynchronizationOffset + virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override; + //! \copydoc IContextSimulator::loadSimulatorPlugin() virtual bool loadSimulatorPlugin(const BlackSim::CSimulatorInfo &simulatorInfo) override; @@ -77,6 +83,9 @@ namespace BlackCore //! \copydoc IContextSimulator::settingsChanged virtual void settingsChanged(uint type) override; + //! \copydoc IContextSimulator::isSimulatorPaused + virtual bool isSimulatorPaused() const override; + protected: //! \brief Constructor CContextSimulator(CRuntimeConfig::ContextMode, CRuntime *runtime); diff --git a/src/blackcore/context_simulator_proxy.cpp b/src/blackcore/context_simulator_proxy.cpp index 29b9c647b..a5a143f06 100644 --- a/src/blackcore/context_simulator_proxy.cpp +++ b/src/blackcore/context_simulator_proxy.cpp @@ -78,6 +78,16 @@ namespace BlackCore m_dBusInterface->callDBus(QLatin1Literal("setTimeSynchronization"), enable, offset); } + bool CContextSimulatorProxy::isTimeSynchronized() const + { + return m_dBusInterface->callDBusRet(QLatin1Literal("isTimeSynchronized")); + } + + CTime CContextSimulatorProxy::getTimeSynchronizationOffset() const + { + return m_dBusInterface->callDBusRet(QLatin1Literal("getTimeSynchronizationOffset")); + } + bool CContextSimulatorProxy::loadSimulatorPlugin(const BlackSim::CSimulatorInfo &simulatorInfo) { return m_dBusInterface->callDBusRet(QLatin1Literal("loadSimulatorPlugin"), simulatorInfo); @@ -98,4 +108,9 @@ namespace BlackCore m_dBusInterface->callDBus(QLatin1Literal("settingsChanged"), type); } + bool CContextSimulatorProxy::isSimulatorPaused() const + { + return m_dBusInterface->callDBusRet(QLatin1Literal("isSimulatorPaused")); + } + } // namespace BlackCore diff --git a/src/blackcore/context_simulator_proxy.h b/src/blackcore/context_simulator_proxy.h index 199c5d7e8..9cf6eed61 100644 --- a/src/blackcore/context_simulator_proxy.h +++ b/src/blackcore/context_simulator_proxy.h @@ -67,6 +67,12 @@ namespace BlackCore //! \copydoc IContextSimulator::setTimeSynchronization virtual void setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) override; + //! \copydoc IContextSimulator::isTimeSynchronized + virtual bool isTimeSynchronized() const override; + + //! \copydoc IContextSimulator::getTimeSynchronizationOffset + virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override; + //! \copydoc IContextSimulator::loadSimulatorPlugin virtual bool loadSimulatorPlugin(const BlackSim::CSimulatorInfo &simulatorInfo) override; @@ -78,6 +84,10 @@ namespace BlackCore //! \copydoc IContextSimulator::settingsChanged virtual void settingsChanged(uint type) override; + + //! \copydoc IContextSimulator::isSimulatorPaused + virtual bool isSimulatorPaused() const override; + }; } // namespace BlackCore diff --git a/src/blackcore/simulator.h b/src/blackcore/simulator.h index 32d77bbd7..5f84d6e84 100644 --- a/src/blackcore/simulator.h +++ b/src/blackcore/simulator.h @@ -92,6 +92,15 @@ namespace BlackCore //! \remarks not all drivers implement this, e.g. if it is an intrinsic simulator feature virtual void setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) = 0; + //! Is time synchronization on? + virtual bool isTimeSynchronized() const = 0; + + //! Time synchronization offset + virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const = 0; + + //! Simulator paused? + virtual bool isSimPaused() const = 0; + signals: //! Emitted when the connection status has changed void statusChanged(ISimulator::Status status); diff --git a/src/plugins/simulator/fsx/simulator_fsx.h b/src/plugins/simulator/fsx/simulator_fsx.h index 6eff270df..4abbaf3ce 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.h +++ b/src/plugins/simulator/fsx/simulator_fsx.h @@ -132,6 +132,15 @@ namespace BlackSimPlugin //! \copydoc ISimulator::setTimeSynchronization virtual void setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) override; + //! \copydoc ISimulator::isTimeSynchronized + virtual bool isTimeSynchronized() const override { return m_syncTime; } + + //! \copydoc ISimulator::getTimeSynchronizationOffset + virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return m_syncTimeOffset; } + + //! \copydoc ISimulator::isSimPaused + virtual bool isSimPaused() const override { return m_simPaused; } + //! \brief Called when sim has started void onSimRunning(); diff --git a/src/plugins/simulator/xplane/simulator_xplane.h b/src/plugins/simulator/xplane/simulator_xplane.h index 6fd9ce2fb..1270b8fd4 100644 --- a/src/plugins/simulator/xplane/simulator_xplane.h +++ b/src/plugins/simulator/xplane/simulator_xplane.h @@ -80,6 +80,15 @@ namespace BlackSimPlugin //! \copydoc ISimulator::setTimeSynchronization virtual void setTimeSynchronization(bool enable, BlackMisc::PhysicalQuantities::CTime offset) override; + //! \copydoc ISimulator::isTimeSynchronized + virtual bool isTimeSynchronized() const override { return false; } // TODO: Can we query the XP intrinisc feature? + + //! \copydoc ISimulator::getTimeSynchronizationOffset + virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return BlackMisc::PhysicalQuantities::CTime(0, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); } + + //! \copydoc ISimulator::isSimPaused + virtual bool isSimPaused() const override { return false; } + private slots: void serviceRegistered(const QString &serviceName); void serviceUnregistered();