Ref T609, setting if COM is synced with simulator

This commit is contained in:
Klaus Basan
2019-04-19 23:22:28 +02:00
parent 927903ec53
commit 53fb28d70c
7 changed files with 79 additions and 11 deletions

View File

@@ -17,6 +17,7 @@
#include "blackcore/simulator.h" #include "blackcore/simulator.h"
#include "blackcore/blackcoreexport.h" #include "blackcore/blackcoreexport.h"
#include "blackmisc/weather/weathergrid.h" #include "blackmisc/weather/weathergrid.h"
#include "blackmisc/simulation/settings/simulatorsettings.h"
#include "blackmisc/simulation/aircraftmodellist.h" #include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/aircraftmatchersetup.h" #include "blackmisc/simulation/aircraftmatchersetup.h"
#include "blackmisc/simulation/matchingstatistics.h" #include "blackmisc/simulation/matchingstatistics.h"
@@ -148,6 +149,12 @@ namespace BlackCore
//! Return list of available simulator plugins //! Return list of available simulator plugins
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const = 0; virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const = 0;
//! Get the current simulator settings
virtual BlackMisc::Simulation::Settings::CSimulatorSettings getSimulatorSettings() const = 0;
//! Set settings for give simulator
virtual bool setSimulatorSettings(const BlackMisc::Simulation::Settings::CSimulatorSettings &settings, const BlackMisc::Simulation::CSimulatorInfo &simulator) = 0;
//! Check all listeners enabled if simulator is connected //! Check all listeners enabled if simulator is connected
virtual int checkListeners() = 0; virtual int checkListeners() = 0;

View File

@@ -45,6 +45,22 @@ namespace BlackCore
return BlackMisc::Simulation::CSimulatorPluginInfoList(); return BlackMisc::Simulation::CSimulatorPluginInfoList();
} }
//! \copydoc IContextSimulator::getSimulatorSettings
virtual BlackMisc::Simulation::Settings::CSimulatorSettings getSimulatorSettings() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Simulation::Settings::CSimulatorSettings();
}
//! \copydoc IContextSimulator::setSimulatorSettings
virtual bool setSimulatorSettings(const BlackMisc::Simulation::Settings::CSimulatorSettings &settings, const BlackMisc::Simulation::CSimulatorInfo &simulatorInfo) override
{
Q_UNUSED(settings);
Q_UNUSED(simulatorInfo);
logEmptyContextWarning(Q_FUNC_INFO);
return false;
}
//! \copydoc IContextSimulator::startSimulatorPlugin //! \copydoc IContextSimulator::startSimulatorPlugin
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override
{ {

View File

@@ -143,6 +143,25 @@ namespace BlackCore
return m_plugins->getAvailableSimulatorPlugins(); return m_plugins->getAvailableSimulatorPlugins();
} }
CSimulatorSettings CContextSimulator::getSimulatorSettings() const
{
const CSimulatorPluginInfo p = this->getSimulatorPluginInfo();
if (!p.isValid()) { return {}; }
const CSimulatorInfo sim = p.getSimulatorInfo();
if (!sim.isSingleSimulator()) { return {}; }
return m_simulatorSettings.getSettings(sim);
}
bool CContextSimulator::setSimulatorSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulator)
{
if (!simulator.isSingleSimulator()) { return false; }
CSimulatorSettings simSettings = m_simulatorSettings.getSettings(simulator);
if (simSettings == settings) { return false; }
const CStatusMessage msg = m_simulatorSettings.setSettings(settings, simulator);
CLogMessage::preformatted(msg);
return true;
}
bool CContextSimulator::startSimulatorPlugin(const CSimulatorPluginInfo &simulatorInfo) bool CContextSimulator::startSimulatorPlugin(const CSimulatorPluginInfo &simulatorInfo)
{ {
return this->listenForSimulator(simulatorInfo); return this->listenForSimulator(simulatorInfo);

View File

@@ -76,6 +76,8 @@ namespace BlackCore
//! @{ //! @{
virtual BlackMisc::Simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const override; virtual BlackMisc::Simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const override;
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const override; virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const override;
virtual BlackMisc::Simulation::Settings::CSimulatorSettings getSimulatorSettings() const override;
virtual bool setSimulatorSettings(const BlackMisc::Simulation::Settings::CSimulatorSettings &settings, const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override; virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override; virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual int checkListeners() override; virtual int checkListeners() override;

View File

@@ -23,6 +23,7 @@ using namespace BlackMisc::Aviation;
using namespace BlackMisc::Network; using namespace BlackMisc::Network;
using namespace BlackMisc::Geo; using namespace BlackMisc::Geo;
using namespace BlackMisc::Simulation; using namespace BlackMisc::Simulation;
using namespace BlackMisc::Simulation::Settings;
namespace BlackCore namespace BlackCore
{ {
@@ -46,6 +47,8 @@ namespace BlackCore
void CContextSimulatorProxy::relaySignals(const QString &serviceName, QDBusConnection &connection) void CContextSimulatorProxy::relaySignals(const QString &serviceName, QDBusConnection &connection)
{ {
// the types here have to be fully qualifed
bool s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(), bool s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
"simulatorStatusChanged", this, SIGNAL(simulatorStatusChanged(int))); "simulatorStatusChanged", this, SIGNAL(simulatorStatusChanged(int)));
Q_ASSERT(s); Q_ASSERT(s);
@@ -107,6 +110,16 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<CSimulatorPluginInfoList>(QLatin1String("getAvailableSimulatorPlugins")); return m_dBusInterface->callDBusRet<CSimulatorPluginInfoList>(QLatin1String("getAvailableSimulatorPlugins"));
} }
CSimulatorSettings CContextSimulatorProxy::getSimulatorSettings() const
{
return m_dBusInterface->callDBusRet<CSimulatorSettings>(QLatin1String("getSimulatorSettings"));
}
bool CContextSimulatorProxy::setSimulatorSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulatorInfo)
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("setSimulatorSettings"), settings, simulatorInfo);
}
int CContextSimulatorProxy::getSimulatorStatus() const int CContextSimulatorProxy::getSimulatorStatus() const
{ {
return m_dBusInterface->callDBusRet<int>(QLatin1String("getSimulatorStatus")); return m_dBusInterface->callDBusRet<int>(QLatin1String("getSimulatorStatus"));
@@ -114,17 +127,17 @@ namespace BlackCore
CAirportList CContextSimulatorProxy::getAirportsInRange(bool recalculatePosition) const CAirportList CContextSimulatorProxy::getAirportsInRange(bool recalculatePosition) const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAirportList>(QLatin1String("getAirportsInRange"), recalculatePosition); return m_dBusInterface->callDBusRet<CAirportList>(QLatin1String("getAirportsInRange"), recalculatePosition);
} }
CAircraftModelList CContextSimulatorProxy::getModelSet() const CAircraftModelList CContextSimulatorProxy::getModelSet() const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CAircraftModelList>(QLatin1String("getModelSet")); return m_dBusInterface->callDBusRet<CAircraftModelList>(QLatin1String("getModelSet"));
} }
CSimulatorInfo CContextSimulatorProxy::simulatorsWithInitializedModelSet() const CSimulatorInfo CContextSimulatorProxy::simulatorsWithInitializedModelSet() const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInfo>(QLatin1String("simulatorsWithInitializedModelSet")); return m_dBusInterface->callDBusRet<CSimulatorInfo>(QLatin1String("simulatorsWithInitializedModelSet"));
} }
CStatusMessageList CContextSimulatorProxy::verifyPrerequisites() const CStatusMessageList CContextSimulatorProxy::verifyPrerequisites() const
@@ -134,7 +147,7 @@ namespace BlackCore
CSimulatorInfo CContextSimulatorProxy::getModelSetLoaderSimulator() const CSimulatorInfo CContextSimulatorProxy::getModelSetLoaderSimulator() const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInfo>(QLatin1String("getModelSetLoaderSimulator")); return m_dBusInterface->callDBusRet<CSimulatorInfo>(QLatin1String("getModelSetLoaderSimulator"));
} }
void CContextSimulatorProxy::setModelSetLoaderSimulator(const CSimulatorInfo &simulator) void CContextSimulatorProxy::setModelSetLoaderSimulator(const CSimulatorInfo &simulator)
@@ -159,7 +172,7 @@ namespace BlackCore
CAircraftModelList CContextSimulatorProxy::getModelSetModelsStartingWith(const QString &modelString) const CAircraftModelList CContextSimulatorProxy::getModelSetModelsStartingWith(const QString &modelString) const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CAircraftModelList>(QLatin1String("getModelSetModelsStartingWith"), modelString); return m_dBusInterface->callDBusRet<CAircraftModelList>(QLatin1String("getModelSetModelsStartingWith"), modelString);
} }
int CContextSimulatorProxy::getModelSetCount() const int CContextSimulatorProxy::getModelSetCount() const
@@ -167,14 +180,14 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<int>(QLatin1String("getModelSetCount")); return m_dBusInterface->callDBusRet<int>(QLatin1String("getModelSetCount"));
} }
BlackMisc::Simulation::CSimulatorPluginInfo CContextSimulatorProxy::getSimulatorPluginInfo() const CSimulatorPluginInfo CContextSimulatorProxy::getSimulatorPluginInfo() const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorPluginInfo>(QLatin1String("getSimulatorPluginInfo")); return m_dBusInterface->callDBusRet<CSimulatorPluginInfo>(QLatin1String("getSimulatorPluginInfo"));
} }
CSimulatorInternals CContextSimulatorProxy::getSimulatorInternals() const CSimulatorInternals CContextSimulatorProxy::getSimulatorInternals() const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInternals>(QLatin1String("getSimulatorInternals")); return m_dBusInterface->callDBusRet<CSimulatorInternals>(QLatin1String("getSimulatorInternals"));
} }
void CContextSimulatorProxy::disableModelsForMatching(const CAircraftModelList &removedModels, bool incremental) void CContextSimulatorProxy::disableModelsForMatching(const CAircraftModelList &removedModels, bool incremental)
@@ -184,7 +197,7 @@ namespace BlackCore
CAircraftModelList CContextSimulatorProxy::getDisabledModelsForMatching() const CAircraftModelList CContextSimulatorProxy::getDisabledModelsForMatching() const
{ {
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CAircraftModelList>(QLatin1String("getDisabledModelsForMatching")); return m_dBusInterface->callDBusRet<CAircraftModelList>(QLatin1String("getDisabledModelsForMatching"));
} }
bool CContextSimulatorProxy::triggerModelSetValidation(const CSimulatorInfo &simulator) bool CContextSimulatorProxy::triggerModelSetValidation(const CSimulatorInfo &simulator)

View File

@@ -59,6 +59,8 @@ namespace BlackCore
//! @{ //! @{
virtual BlackMisc::Simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const override; virtual BlackMisc::Simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const override;
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const override; virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const override;
virtual BlackMisc::Simulation::Settings::CSimulatorSettings getSimulatorSettings() const override;
virtual bool setSimulatorSettings(const BlackMisc::Simulation::Settings::CSimulatorSettings &settings, const BlackMisc::Simulation::CSimulatorInfo &simulatorInfo) override;
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override; virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override; virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual int checkListeners() override; virtual int checkListeners() override;

View File

@@ -39,7 +39,8 @@ namespace BlackMisc
{ {
IndexSimulatorDirectory = CPropertyIndex::GlobalIndexCSimulatorSettings, IndexSimulatorDirectory = CPropertyIndex::GlobalIndexCSimulatorSettings,
IndexModelDirectories, IndexModelDirectories,
IndexModelExcludeDirectoryPatterns IndexModelExcludeDirectoryPatterns,
IndexComIntegration //!< COM unit integration
}; };
//! Default constructor //! Default constructor
@@ -84,6 +85,12 @@ namespace BlackMisc
//! Having model exclude directoy patterns? //! Having model exclude directoy patterns?
bool hasModelExcludeDirectoryPatterns() const { return !this->getModelExcludeDirectoryPatterns().isEmpty(); } bool hasModelExcludeDirectoryPatterns() const { return !this->getModelExcludeDirectoryPatterns().isEmpty(); }
//! COM unit integration
bool isComIntegrated() const { return m_comIntegration; }
//! COM unit integration
void setComIntegrated(bool integrated) { m_comIntegration = integrated; }
//! Reset the paths //! Reset the paths
void resetPaths(); void resetPaths();
@@ -103,12 +110,14 @@ namespace BlackMisc
QString m_simulatorDirectory; //!< Simulator directory QString m_simulatorDirectory; //!< Simulator directory
QStringList m_modelDirectories; //!< Model directory QStringList m_modelDirectories; //!< Model directory
QStringList m_excludeDirectoryPatterns; //!< Exclude model directory QStringList m_excludeDirectoryPatterns; //!< Exclude model directory
bool m_comIntegration = false; //!< COM integration
BLACK_METACLASS( BLACK_METACLASS(
CSimulatorSettings, CSimulatorSettings,
BLACK_METAMEMBER(simulatorDirectory), BLACK_METAMEMBER(simulatorDirectory),
BLACK_METAMEMBER(modelDirectories), BLACK_METAMEMBER(modelDirectories),
BLACK_METAMEMBER(excludeDirectoryPatterns) BLACK_METAMEMBER(excludeDirectoryPatterns),
BLACK_METAMEMBER(comIntegration)
); );
}; };