mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
refactor: Remove timesync feature
This is directly available by new simulators.
This commit is contained in:
@@ -18,7 +18,6 @@
|
||||
#include "misc/geo/elevationplane.h"
|
||||
#include "misc/pixmap.h"
|
||||
#include "misc/pq/length.h"
|
||||
#include "misc/pq/time.h"
|
||||
#include "misc/simulation/aircraftmatchersetup.h"
|
||||
#include "misc/simulation/aircraftmodellist.h"
|
||||
#include "misc/simulation/interpolation/interpolationrenderingsetup.h"
|
||||
@@ -221,13 +220,6 @@ namespace swift::core::context
|
||||
//! Known model?
|
||||
virtual bool isKnownModelInSet(const QString &modelstring) const = 0;
|
||||
|
||||
//! Set time synchronization between simulator and user's computer time
|
||||
//! \remarks not all drivers implement this, e.g. if it is an intrinsic simulator feature
|
||||
virtual bool setTimeSynchronization(bool enable, const swift::misc::physical_quantities::CTime &offset) = 0;
|
||||
|
||||
//! Is time synchronization on?
|
||||
virtual bool isTimeSynchronized() const = 0;
|
||||
|
||||
//! \copydoc swift::misc::simulation::IInterpolationSetupProvider::getInterpolationSetupGlobal
|
||||
virtual swift::misc::simulation::CInterpolationAndRenderingSetupGlobal
|
||||
getInterpolationAndRenderingSetupGlobal() const = 0;
|
||||
@@ -254,9 +246,6 @@ namespace swift::core::context
|
||||
virtual swift::misc::CStatusMessageList
|
||||
getInterpolationMessages(const swift::misc::aviation::CCallsign &callsign) const = 0;
|
||||
|
||||
//! Time synchronization offset
|
||||
virtual swift::misc::physical_quantities::CTime getTimeSynchronizationOffset() const = 0;
|
||||
|
||||
//! Simulator avialable (driver available)?
|
||||
bool isSimulatorAvailable() const;
|
||||
|
||||
|
||||
@@ -211,22 +211,6 @@ namespace swift::core::context
|
||||
return swift::misc::simulation::CSimulatorInternals();
|
||||
}
|
||||
|
||||
//! \copydoc IContextSimulator::setTimeSynchronization
|
||||
virtual bool setTimeSynchronization(bool enable, const swift::misc::physical_quantities::CTime &offset) override
|
||||
{
|
||||
Q_UNUSED(enable)
|
||||
Q_UNUSED(offset)
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return false;
|
||||
}
|
||||
|
||||
//! \copydoc IContextSimulator::isTimeSynchronized
|
||||
virtual bool isTimeSynchronized() const override
|
||||
{
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return false;
|
||||
}
|
||||
|
||||
//! \copydoc ISimulator::getInterpolationSetupGlobal
|
||||
virtual swift::misc::simulation::CInterpolationAndRenderingSetupGlobal
|
||||
getInterpolationAndRenderingSetupGlobal() const override
|
||||
@@ -281,13 +265,6 @@ namespace swift::core::context
|
||||
return swift::misc::CStatusMessageList();
|
||||
}
|
||||
|
||||
//! \copydoc IContextSimulator::getTimeSynchronizationOffset
|
||||
virtual swift::misc::physical_quantities::CTime getTimeSynchronizationOffset() const override
|
||||
{
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return swift::misc::physical_quantities::CTime();
|
||||
}
|
||||
|
||||
//! \copydoc IContextSimulator::followAircraft
|
||||
virtual bool followAircraft(const swift::misc::aviation::CCallsign &callsign) override
|
||||
{
|
||||
|
||||
@@ -372,26 +372,6 @@ namespace swift::core::context
|
||||
return this->getModelSet().findModelsStartingWith(modelString);
|
||||
}
|
||||
|
||||
bool CContextSimulator::setTimeSynchronization(bool enable, const CTime &offset)
|
||||
{
|
||||
if (isDebugEnabled()) { CLogMessage(this, CLogCategories::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||
if (!m_simulatorPlugin.second || m_simulatorPlugin.first.isUnspecified()) { return false; }
|
||||
|
||||
const bool c = m_simulatorPlugin.second->setTimeSynchronization(enable, offset);
|
||||
if (!c) { return false; }
|
||||
|
||||
CLogMessage(this).info(enable ? QStringLiteral("Set time synchronization to %1").arg(offset.toQString()) :
|
||||
QStringLiteral("Disabled time syncrhonization"));
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CContextSimulator::isTimeSynchronized() const
|
||||
{
|
||||
if (isDebugEnabled()) { CLogMessage(this, CLogCategories::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||
if (!m_simulatorPlugin.second || m_simulatorPlugin.first.isUnspecified()) { return false; }
|
||||
return m_simulatorPlugin.second->isTimeSynchronized();
|
||||
}
|
||||
|
||||
CInterpolationAndRenderingSetupGlobal CContextSimulator::getInterpolationAndRenderingSetupGlobal() const
|
||||
{
|
||||
if (isDebugEnabled()) { CLogMessage(this, CLogCategories::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||
@@ -446,16 +426,6 @@ namespace swift::core::context
|
||||
return m_simulatorPlugin.second->getInterpolationMessages(callsign);
|
||||
}
|
||||
|
||||
CTime CContextSimulator::getTimeSynchronizationOffset() const
|
||||
{
|
||||
if (isDebugEnabled()) { CLogMessage(this, CLogCategories::contextSlot()).debug() << Q_FUNC_INFO; }
|
||||
if (!m_simulatorPlugin.second || m_simulatorPlugin.first.isUnspecified())
|
||||
{
|
||||
return CTime(0, CTimeUnit::hrmin());
|
||||
}
|
||||
return m_simulatorPlugin.second->getTimeSynchronizationOffset();
|
||||
}
|
||||
|
||||
bool CContextSimulator::loadSimulatorPlugin(const CSimulatorPluginInfo &simulatorPluginInfo)
|
||||
{
|
||||
Q_ASSERT(this->getIContextApplication());
|
||||
|
||||
@@ -150,16 +150,6 @@ namespace swift::core
|
||||
virtual swift::misc::simulation::CAircraftModelList
|
||||
getModelSetModelsStartingWith(const QString &modelString) const override;
|
||||
|
||||
//! \copydoc swift::core::context::IContextSimulator::getTimeSynchronizationOffset
|
||||
virtual swift::misc::physical_quantities::CTime getTimeSynchronizationOffset() const override;
|
||||
|
||||
//! \copydoc swift::core::context::IContextSimulator::setTimeSynchronization
|
||||
virtual bool setTimeSynchronization(bool enable,
|
||||
const swift::misc::physical_quantities::CTime &offset) override;
|
||||
|
||||
//! \copydoc swift::core::context::IContextSimulator::isTimeSynchronized
|
||||
virtual bool isTimeSynchronized() const override;
|
||||
|
||||
//! \copydoc swift::core::context::IContextSimulator::getInterpolationAndRenderingSetupGlobal
|
||||
virtual swift::misc::simulation::CInterpolationAndRenderingSetupGlobal
|
||||
getInterpolationAndRenderingSetupGlobal() const override;
|
||||
|
||||
@@ -232,16 +232,6 @@ namespace swift::core::context
|
||||
m_dBusInterface->callDBus(QLatin1String("restoreDisabledModels"));
|
||||
}
|
||||
|
||||
bool CContextSimulatorProxy::setTimeSynchronization(bool enable, const CTime &offset)
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<bool>(QLatin1String("setTimeSynchronization"), enable, offset);
|
||||
}
|
||||
|
||||
bool CContextSimulatorProxy::isTimeSynchronized() const
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<bool>(QLatin1String("isTimeSynchronized"));
|
||||
}
|
||||
|
||||
CInterpolationAndRenderingSetupGlobal CContextSimulatorProxy::getInterpolationAndRenderingSetupGlobal() const
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<CInterpolationAndRenderingSetupGlobal>(
|
||||
@@ -279,12 +269,6 @@ namespace swift::core::context
|
||||
m_dBusInterface->callDBus(QLatin1String("setInterpolationAndRenderingSetupGlobal"), setup);
|
||||
}
|
||||
|
||||
CTime CContextSimulatorProxy::getTimeSynchronizationOffset() const
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<swift::misc::physical_quantities::CTime>(
|
||||
QLatin1String("getTimeSynchronizationOffset"));
|
||||
}
|
||||
|
||||
bool CContextSimulatorProxy::startSimulatorPlugin(const CSimulatorPluginInfo &simulatorInfo)
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<bool>(QLatin1String("startSimulatorPlugin"), simulatorInfo);
|
||||
|
||||
@@ -139,13 +139,6 @@ namespace swift::core
|
||||
//! \copydoc swift::core::context::IContextSimulator::restoreDisabledModels
|
||||
virtual void restoreDisabledModels() override;
|
||||
|
||||
//! \copydoc swift::core::context::IContextSimulator::setTimeSynchronization
|
||||
virtual bool setTimeSynchronization(bool enable,
|
||||
const swift::misc::physical_quantities::CTime &offset) override;
|
||||
|
||||
//! \copydoc swift::core::context::IContextSimulator::isTimeSynchronized
|
||||
virtual bool isTimeSynchronized() const override;
|
||||
|
||||
//! \copydoc swift::core::context::IContextSimulator::getInterpolationAndRenderingSetupGlobal
|
||||
virtual swift::misc::simulation::CInterpolationAndRenderingSetupGlobal
|
||||
getInterpolationAndRenderingSetupGlobal() const override;
|
||||
@@ -171,9 +164,6 @@ namespace swift::core
|
||||
virtual swift::misc::CStatusMessageList
|
||||
getInterpolationMessages(const swift::misc::aviation::CCallsign &callsign) const override;
|
||||
|
||||
//! \copydoc swift::core::context::IContextSimulator::getTimeSynchronizationOffset
|
||||
virtual swift::misc::physical_quantities::CTime getTimeSynchronizationOffset() const override;
|
||||
|
||||
//! \copydoc swift::core::context::IContextSimulator::followAircraft
|
||||
virtual bool followAircraft(const swift::misc::aviation::CCallsign &callsign) override;
|
||||
|
||||
|
||||
@@ -83,9 +83,6 @@ namespace swift::core
|
||||
//! Combined status
|
||||
virtual SimulatorStatus getSimulatorStatus() const;
|
||||
|
||||
//! Is time synchronization on?
|
||||
virtual bool isTimeSynchronized() const = 0;
|
||||
|
||||
//! Get the simulator current internal state
|
||||
virtual const swift::misc::simulation::CSimulatorInternals &getSimulatorInternals() const
|
||||
{
|
||||
@@ -139,13 +136,6 @@ namespace swift::core
|
||||
//! Airports in range from simulator, or if not available from web service
|
||||
virtual swift::misc::aviation::CAirportList getAirportsInRange(bool recalculateDistance) const;
|
||||
|
||||
//! Set time synchronization between simulator and user's computer time
|
||||
//! \remarks not all drivers implement this, e.g. if it is an intrinsic simulator feature
|
||||
virtual bool setTimeSynchronization(bool enable, const swift::misc::physical_quantities::CTime &offset) = 0;
|
||||
|
||||
//! Time synchronization offset
|
||||
virtual swift::misc::physical_quantities::CTime getTimeSynchronizationOffset() const = 0;
|
||||
|
||||
//! Is the aircraft rendered (displayed in simulator)?
|
||||
//! This shall only return true if the aircraft is really visible in the simulator
|
||||
virtual bool isPhysicallyRenderedAircraft(const swift::misc::aviation::CCallsign &callsign) const = 0;
|
||||
|
||||
@@ -72,8 +72,6 @@ namespace swift::gui::components
|
||||
connect(ui->pb_Reload, &QCheckBox::pressed, this, &CSettingsSimulatorComponent::onReload, Qt::QueuedConnection);
|
||||
connect(ui->pb_ApplyMaxAircraft, &QCheckBox::pressed, this,
|
||||
&CSettingsSimulatorComponent::onApplyMaxRenderedAircraft, Qt::QueuedConnection);
|
||||
connect(ui->pb_ApplyTimeSync, &QCheckBox::pressed, this, &CSettingsSimulatorComponent::onApplyTimeSync,
|
||||
Qt::QueuedConnection);
|
||||
connect(ui->pb_ApplyMaxDistance, &QCheckBox::pressed, this,
|
||||
&CSettingsSimulatorComponent::onApplyMaxRenderedDistance, Qt::QueuedConnection);
|
||||
connect(ui->pb_ApplyComSync, &QCheckBox::pressed, this, &CSettingsSimulatorComponent::onApplyComSync,
|
||||
@@ -130,11 +128,6 @@ namespace swift::gui::components
|
||||
const CInterpolationAndRenderingSetupGlobal setup =
|
||||
sGui->getIContextSimulator()->getInterpolationAndRenderingSetupGlobal();
|
||||
|
||||
// time sync
|
||||
ui->cb_TimeSync->setEnabled(m_pluginLoaded);
|
||||
ui->le_TimeSyncOffset->setEnabled(m_pluginLoaded);
|
||||
ui->pb_ApplyTimeSync->setEnabled(m_pluginLoaded);
|
||||
|
||||
// COM unit
|
||||
ui->pb_ApplyComSync->setEnabled(m_pluginLoaded);
|
||||
ui->cb_ComSync->setEnabled(m_pluginLoaded);
|
||||
@@ -164,10 +157,6 @@ namespace swift::gui::components
|
||||
if (m_pluginLoaded)
|
||||
{
|
||||
const IContextSimulator *sim = sGui->getIContextSimulator();
|
||||
const bool timeSynced = sim->isTimeSynchronized();
|
||||
ui->cb_TimeSync->setChecked(timeSynced);
|
||||
const CTime timeOffset = sim->getTimeSynchronizationOffset();
|
||||
ui->le_TimeSyncOffset->setText(timeOffset.formattedHrsMin());
|
||||
|
||||
// settings
|
||||
const CSimulatorSettings settings = sim->getSimulatorSettings();
|
||||
@@ -287,18 +276,6 @@ namespace swift::gui::components
|
||||
this->setGuiValues();
|
||||
}
|
||||
|
||||
void CSettingsSimulatorComponent::onApplyTimeSync()
|
||||
{
|
||||
if (!sGui || sGui->isShuttingDown() || !sGui->getIContextSimulator()) { return; }
|
||||
|
||||
const bool timeSync = ui->cb_TimeSync->isChecked();
|
||||
const QString os = ui->le_TimeSyncOffset->text();
|
||||
CTime ost(0, CTimeUnit::hrmin());
|
||||
if (!os.isEmpty()) { ost.parseFromString(os); }
|
||||
if (ost.isNull()) { CLogMessage().validationWarning(u"Invalid offset time"); }
|
||||
else { sGui->getIContextSimulator()->setTimeSynchronization(timeSync, ost); }
|
||||
}
|
||||
|
||||
CSimulatorSettings CSettingsSimulatorComponent::getSimulatorSettings(bool &ok)
|
||||
{
|
||||
ok = false;
|
||||
|
||||
@@ -56,9 +56,6 @@ namespace swift::gui::components
|
||||
//! Apply disable rendering
|
||||
void onApplyDisableRendering();
|
||||
|
||||
//! Apply time synchronization
|
||||
void onApplyTimeSync();
|
||||
|
||||
//! Apply COM sync
|
||||
void onApplyComSync();
|
||||
|
||||
|
||||
@@ -118,95 +118,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QWidget" name="wi_TimeSync" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cb_TimeSync">
|
||||
<property name="toolTip">
|
||||
<string>Enable time syncronization</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="le_TimeSyncOffset">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>75</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>offset +/-hh:mm</string>
|
||||
</property>
|
||||
<property name="inputMask">
|
||||
<string>#99:99</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>+00:00</string>
|
||||
</property>
|
||||
<property name="maxLength">
|
||||
<number>6</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="hs_TimeSync">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="lbl_TimeSync">
|
||||
<property name="toolTip">
|
||||
<string>Time synchronization</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Time synch.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<widget class="QPushButton" name="pb_ApplyTimeSync">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>125</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>apply</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="2">
|
||||
<widget class="QPushButton" name="pb_ClearRestrictedRendering">
|
||||
<property name="minimumSize">
|
||||
@@ -488,9 +399,6 @@
|
||||
<tabstops>
|
||||
<tabstop>pb_Check</tabstop>
|
||||
<tabstop>sa_Settings</tabstop>
|
||||
<tabstop>cb_TimeSync</tabstop>
|
||||
<tabstop>le_TimeSyncOffset</tabstop>
|
||||
<tabstop>pb_ApplyTimeSync</tabstop>
|
||||
<tabstop>pb_ApplyCGSource</tabstop>
|
||||
<tabstop>cb_ComSync</tabstop>
|
||||
<tabstop>pb_ApplyComSync</tabstop>
|
||||
|
||||
@@ -59,8 +59,6 @@ namespace swift::simplugin::emulated
|
||||
}
|
||||
}
|
||||
|
||||
bool CSimulatorEmulated::isTimeSynchronized() const { return m_timeSyncronized; }
|
||||
|
||||
bool CSimulatorEmulated::connectTo()
|
||||
{
|
||||
const QPointer<CSimulatorEmulated> myself(this);
|
||||
@@ -168,23 +166,6 @@ namespace swift::simplugin::emulated
|
||||
m_monitorWidget->displayTextMessage(message);
|
||||
}
|
||||
|
||||
bool CSimulatorEmulated::setTimeSynchronization(bool enable, const CTime &offset)
|
||||
{
|
||||
if (canLog())
|
||||
{
|
||||
m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, boolToTrueFalse(enable), offset.toQString());
|
||||
}
|
||||
m_timeSyncronized = enable;
|
||||
m_offsetTime = offset;
|
||||
return enable;
|
||||
}
|
||||
|
||||
CTime CSimulatorEmulated::getTimeSynchronizationOffset() const
|
||||
{
|
||||
if (canLog()) { m_monitorWidget->appendReceivingCall(Q_FUNC_INFO); }
|
||||
return m_offsetTime;
|
||||
}
|
||||
|
||||
bool CSimulatorEmulated::isPhysicallyRenderedAircraft(const CCallsign &callsign) const
|
||||
{
|
||||
if (canLog()) m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, callsign.toQString());
|
||||
|
||||
@@ -46,7 +46,6 @@ namespace swift::simplugin::emulated
|
||||
virtual ~CSimulatorEmulated() override;
|
||||
|
||||
// functions implemented
|
||||
virtual bool isTimeSynchronized() const override;
|
||||
virtual bool connectTo() override;
|
||||
virtual bool disconnectFrom() override;
|
||||
virtual void unload() override;
|
||||
@@ -61,9 +60,6 @@ namespace swift::simplugin::emulated
|
||||
const swift::misc::CIdentifier &originator) override;
|
||||
virtual void displayStatusMessage(const swift::misc::CStatusMessage &message) const override;
|
||||
virtual void displayTextMessage(const swift::misc::network::CTextMessage &message) const override;
|
||||
virtual bool setTimeSynchronization(bool enable,
|
||||
const swift::misc::physical_quantities::CTime &offset) override;
|
||||
virtual swift::misc::physical_quantities::CTime getTimeSynchronizationOffset() const override;
|
||||
virtual bool isPhysicallyRenderedAircraft(const swift::misc::aviation::CCallsign &callsign) const override;
|
||||
virtual swift::misc::aviation::CCallsignSet physicallyRenderedAircraft() const override;
|
||||
virtual swift::misc::CStatusMessageList
|
||||
@@ -173,11 +169,9 @@ namespace swift::simplugin::emulated
|
||||
bool m_paused = false;
|
||||
bool m_connected = true;
|
||||
bool m_simulating = true;
|
||||
bool m_timeSyncronized = false;
|
||||
int m_countInterpolatedSituations = 0;
|
||||
int m_countInterpolatedParts = 0;
|
||||
QTimer m_interpolatorFetchTimer; //!< fetch data from interpolator
|
||||
swift::misc::physical_quantities::CTime m_offsetTime;
|
||||
swift::misc::simulation::CSimulatedAircraft m_myAircraft; //!< represents own aircraft of simulator
|
||||
swift::misc::simulation::CSimulatedAircraftList m_renderedAircraft; //!< represents remote aircraft in simulator
|
||||
QPointer<CSimulatorEmulatedMonitorDialog>
|
||||
|
||||
@@ -462,13 +462,6 @@ namespace swift::simplugin::flightgear
|
||||
return airports;
|
||||
}
|
||||
|
||||
bool CSimulatorFlightgear::setTimeSynchronization(bool enable, const physical_quantities::CTime &offset)
|
||||
{
|
||||
Q_UNUSED(offset)
|
||||
if (enable) { CLogMessage(this).info(u"Flightgear provides real time synchronization, use this one"); }
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CSimulatorFlightgear::isPhysicallyRenderedAircraft(const CCallsign &callsign) const
|
||||
{
|
||||
return m_flightgearAircraftObjects.contains(callsign);
|
||||
|
||||
@@ -123,7 +123,6 @@ namespace swift::simplugin::flightgear
|
||||
|
||||
//! \name ISimulator implementations
|
||||
//! @{
|
||||
virtual bool isTimeSynchronized() const override { return false; }
|
||||
virtual bool connectTo() override;
|
||||
virtual bool disconnectFrom() override;
|
||||
virtual bool updateOwnSimulatorCockpit(const swift::misc::simulation::CSimulatedAircraft &aircraft,
|
||||
@@ -133,12 +132,6 @@ namespace swift::simplugin::flightgear
|
||||
virtual void displayStatusMessage(const swift::misc::CStatusMessage &message) const override;
|
||||
virtual void displayTextMessage(const swift::misc::network::CTextMessage &message) const override;
|
||||
virtual swift::misc::aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
virtual bool setTimeSynchronization(bool enable,
|
||||
const swift::misc::physical_quantities::CTime &offset) override;
|
||||
virtual swift::misc::physical_quantities::CTime getTimeSynchronizationOffset() const override
|
||||
{
|
||||
return swift::misc::physical_quantities::CTime(0, swift::misc::physical_quantities::CTimeUnit::hrmin());
|
||||
}
|
||||
virtual bool isPhysicallyRenderedAircraft(const swift::misc::aviation::CCallsign &callsign) const override;
|
||||
virtual swift::misc::aviation::CCallsignSet physicallyRenderedAircraft() const override;
|
||||
virtual void unload() override;
|
||||
|
||||
@@ -59,15 +59,6 @@ namespace swift::simplugin::fscommon
|
||||
return r;
|
||||
}
|
||||
|
||||
CTime CSimulatorFsCommon::getTimeSynchronizationOffset() const { return m_syncTimeOffset; }
|
||||
|
||||
bool CSimulatorFsCommon::setTimeSynchronization(bool enable, const physical_quantities::CTime &offset)
|
||||
{
|
||||
m_simTimeSynced = enable;
|
||||
m_syncTimeOffset = offset;
|
||||
return true;
|
||||
}
|
||||
|
||||
CAirportList CSimulatorFsCommon::getAirportsInRange(bool recalculateDistance) const
|
||||
{
|
||||
if (!m_airportsInRangeFromSimulator.isEmpty())
|
||||
|
||||
@@ -32,10 +32,6 @@ namespace swift::simplugin::fscommon
|
||||
// ---------------------- ISimulator ------------------
|
||||
virtual bool disconnectFrom() override;
|
||||
virtual bool isPaused() const override { return m_simPaused; }
|
||||
virtual bool isTimeSynchronized() const override { return m_simTimeSynced; }
|
||||
virtual swift::misc::physical_quantities::CTime getTimeSynchronizationOffset() const override;
|
||||
virtual bool setTimeSynchronization(bool enable,
|
||||
const swift::misc::physical_quantities::CTime &offset) override;
|
||||
virtual swift::misc::aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
// ---------------------- ISimulator ------------------
|
||||
|
||||
@@ -62,8 +58,6 @@ namespace swift::simplugin::fscommon
|
||||
0; //!< own aircraft updates, even with 50 updates/sec long enough even for 32bit
|
||||
int m_skipCockpitUpdateCycles = 0; //!< skip some update cycles to allow changes in simulator cockpit to be set
|
||||
bool m_simPaused = false; //!< simulator paused?
|
||||
bool m_simTimeSynced = false; //!< time synchronized?
|
||||
swift::misc::physical_quantities::CTime m_syncTimeOffset; //!< time offset
|
||||
swift::misc::aviation::CAirportList m_airportsInRangeFromSimulator; //!< airports in range of own aircraft
|
||||
|
||||
// cockpit as set in SIM
|
||||
|
||||
@@ -25,7 +25,6 @@ namespace swift::simplugin::fsxcommon
|
||||
{
|
||||
static const QString ownAircraft("RequestOwnAircraft");
|
||||
static const QString title("RequestOwnAircraftTitle");
|
||||
static const QString simEnv("RequestSimEnvironment");
|
||||
static const QString sbData("RequestSbData");
|
||||
static const QString facility("RequestFacility");
|
||||
static const QString end("<end>");
|
||||
@@ -35,7 +34,6 @@ namespace swift::simplugin::fsxcommon
|
||||
{
|
||||
case RequestOwnAircraft: return ownAircraft;
|
||||
case RequestOwnAircraftTitle: return title;
|
||||
case RequestSimEnvironment: return simEnv;
|
||||
case RequestSbData: return sbData;
|
||||
case RequestFacility: return facility;
|
||||
case RequestEndMarker: return end;
|
||||
|
||||
@@ -209,15 +209,6 @@ namespace swift::simplugin::fsxcommon
|
||||
bool isOnGround() const { return this->aboveGroundFt() < 1.0; }
|
||||
};
|
||||
|
||||
//! Data struct simulator environment
|
||||
struct DataDefinitionSimEnvironment
|
||||
{
|
||||
qint32 zuluTimeSeconds; //!< Simulator zulu (GMT) time in secs.
|
||||
qint32 zuluYear; //!< Simulator zulu (GMT) year.
|
||||
qint32 zuluMonth; //!< Simulator zulu (GMT) month.
|
||||
qint32 zuluDayOfMonth; //!< Simulator zulu (GMT) day of the month.
|
||||
};
|
||||
|
||||
//! The whole SB data area
|
||||
//! \remark vPilot SB area https://forums.vatsim.net/viewtopic.php?p=519580
|
||||
//! \remark SB offsets http://www.squawkbox.ca/doc/sdk/fsuipc.php
|
||||
@@ -301,7 +292,6 @@ namespace swift::simplugin::fsxcommon
|
||||
{
|
||||
RequestOwnAircraft,
|
||||
RequestOwnAircraftTitle,
|
||||
RequestSimEnvironment,
|
||||
RequestSbData, //!< SB client area / XPDR mode
|
||||
RequestMSFSTransponder, //!< MSFS XPDR mode/ident
|
||||
RequestFacility,
|
||||
|
||||
@@ -528,12 +528,6 @@ namespace swift::simplugin::fsxcommon
|
||||
SIMCONNECT_PERIOD_SECOND, SIMCONNECT_DATA_REQUEST_FLAG_CHANGED),
|
||||
"Cannot request title", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject");
|
||||
|
||||
hr += this->logAndTraceSendId(
|
||||
SimConnect_RequestDataOnSimObject(m_hSimConnect, CSimConnectDefinitions::RequestSimEnvironment,
|
||||
CSimConnectDefinitions::DataSimEnvironment, SIMCONNECT_OBJECT_ID_USER,
|
||||
SIMCONNECT_PERIOD_SECOND, SIMCONNECT_DATA_REQUEST_FLAG_CHANGED),
|
||||
"Cannot request sim.env.", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject");
|
||||
|
||||
// TODO TZ use MSFS2024 FSUIPC?
|
||||
if (!this->getSimulatorPluginInfo().getSimulatorInfo().isMSFS() &&
|
||||
!this->getSimulatorPluginInfo().getSimulatorInfo().isMSFS2024())
|
||||
@@ -2553,61 +2547,6 @@ namespace swift::simplugin::fsxcommon
|
||||
return true;
|
||||
}
|
||||
|
||||
void CSimulatorFsxCommon::synchronizeTime(const DataDefinitionSimEnvironment *simEnv)
|
||||
{
|
||||
if (!m_simTimeSynced) { return; }
|
||||
if (!this->isConnected()) { return; }
|
||||
if (m_syncTimeDeferredCounter > 0)
|
||||
{
|
||||
--m_syncTimeDeferredCounter;
|
||||
return; // wait some time before we snyc again
|
||||
}
|
||||
|
||||
const int zh = simEnv->zuluTimeSeconds / 3600;
|
||||
const int zm = (simEnv->zuluTimeSeconds - (zh * 3600)) / 60;
|
||||
const QDateTime simDateTime({ simEnv->zuluYear, simEnv->zuluMonth, simEnv->zuluDayOfMonth }, { zh, zm },
|
||||
Qt::UTC);
|
||||
|
||||
QDateTime currentDateTime = QDateTime::currentDateTimeUtc();
|
||||
if (!m_syncTimeOffset.isZeroEpsilonConsidered())
|
||||
{
|
||||
int offsetSeconds = m_syncTimeOffset.valueInteger(CTimeUnit::s());
|
||||
currentDateTime = currentDateTime.addSecs(offsetSeconds);
|
||||
}
|
||||
|
||||
if (qAbs(simDateTime.secsTo(currentDateTime)) < 120)
|
||||
{
|
||||
// checked and no relevant difference
|
||||
m_syncTimeDeferredCounter = 10; // wait some time to check again
|
||||
return;
|
||||
}
|
||||
|
||||
const DWORD h = static_cast<DWORD>(currentDateTime.time().hour());
|
||||
const DWORD m = static_cast<DWORD>(currentDateTime.time().minute());
|
||||
const DWORD y = static_cast<DWORD>(currentDateTime.date().year());
|
||||
const DWORD d = static_cast<DWORD>(currentDateTime.date().dayOfYear());
|
||||
|
||||
const HRESULT hr1 = SimConnect_TransmitClientEvent(m_hSimConnect, 0, EventSetTimeZuluHours, h,
|
||||
SIMCONNECT_GROUP_PRIORITY_STANDARD,
|
||||
SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY);
|
||||
const HRESULT hr2 = SimConnect_TransmitClientEvent(m_hSimConnect, 0, EventSetTimeZuluMinutes, m,
|
||||
SIMCONNECT_GROUP_PRIORITY_STANDARD,
|
||||
SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY);
|
||||
const HRESULT hr3 = SimConnect_TransmitClientEvent(m_hSimConnect, 0, EventSetTimeZuluYear, y,
|
||||
SIMCONNECT_GROUP_PRIORITY_STANDARD,
|
||||
SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY);
|
||||
const HRESULT hr4 =
|
||||
SimConnect_TransmitClientEvent(m_hSimConnect, 0, EventSetTimeZuluDay, d, SIMCONNECT_GROUP_PRIORITY_STANDARD,
|
||||
SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY);
|
||||
|
||||
if (isFailure(hr1, hr2, hr3, hr4)) { CLogMessage(this).warning(u"Sending time sync failed!"); }
|
||||
else
|
||||
{
|
||||
m_syncTimeDeferredCounter = 5; // allow some time to sync
|
||||
CLogMessage(this).info(u"Synchronized time to '%1' UTC") << currentDateTime.toString();
|
||||
}
|
||||
}
|
||||
|
||||
bool CSimulatorFsxCommon::requestPositionDataForSimObject(const CSimConnectObject &simObject,
|
||||
SIMCONNECT_PERIOD period)
|
||||
{
|
||||
@@ -2727,7 +2666,6 @@ namespace swift::simplugin::fsxcommon
|
||||
m_simConnected = false;
|
||||
m_simSimulating = false;
|
||||
m_sbDataReceived = 0;
|
||||
m_syncTimeDeferredCounter = 0;
|
||||
m_requestIdSimObjAircraft = static_cast<SIMCONNECT_DATA_REQUEST_ID>(RequestSimObjAircraftStart);
|
||||
m_dispatchErrors = 0;
|
||||
m_receiveExceptionCount = 0;
|
||||
|
||||
@@ -549,9 +549,6 @@ namespace swift::simplugin::fsxcommon
|
||||
//! The SimConnect object for idxs
|
||||
CSimConnectObject getSimObjectForObjectId(DWORD objectId) const;
|
||||
|
||||
//! Sync time with user's computer
|
||||
void synchronizeTime(const DataDefinitionSimEnvironment *simEnv);
|
||||
|
||||
//! Request data for a CSimConnectObject (aka remote aircraft)
|
||||
bool requestPositionDataForSimObject(const CSimConnectObject &simObject,
|
||||
SIMCONNECT_PERIOD period = SIMCONNECT_PERIOD_SECOND);
|
||||
@@ -651,7 +648,6 @@ namespace swift::simplugin::fsxcommon
|
||||
qint64 m_traceAutoUntilTs = -1; //!< allows to automatically trace for some time
|
||||
qint64 m_simulatingChangedTs = -1; //!< timestamp, when simulating changed (used to avoid jitter)
|
||||
int m_sbDataReceived = 0; //!< SB3 area data received
|
||||
int m_syncTimeDeferredCounter = 0; //!< Set when synchronized, used to wait some time
|
||||
|
||||
// tracing dispatch performance
|
||||
int m_dispatchErrors = 0; //!< number of dispatched failed, \sa dispatch
|
||||
|
||||
@@ -260,13 +260,6 @@ namespace swift::simplugin::fsxcommon
|
||||
simulatorFsxP3D->reverseLookupAndUpdateOwnAircraftModel(model);
|
||||
break;
|
||||
}
|
||||
case CSimConnectDefinitions::RequestSimEnvironment:
|
||||
{
|
||||
const DataDefinitionSimEnvironment *simEnv =
|
||||
reinterpret_cast<const DataDefinitionSimEnvironment *>(&pObjData->dwData);
|
||||
simulatorFsxP3D->synchronizeTime(simEnv);
|
||||
break;
|
||||
}
|
||||
case CSimConnectDefinitions::RequestMSFSTransponder:
|
||||
{
|
||||
const DataDefinitionMSFSTransponderMode *transponderMode =
|
||||
|
||||
@@ -636,13 +636,6 @@ namespace swift::simplugin::xplane
|
||||
return airports;
|
||||
}
|
||||
|
||||
bool CSimulatorXPlane::setTimeSynchronization(bool enable, const physical_quantities::CTime &offset)
|
||||
{
|
||||
Q_UNUSED(offset)
|
||||
if (enable) { CLogMessage(this).info(u"X-Plane provides real time synchronization, use this one"); }
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CSimulatorXPlane::isPhysicallyRenderedAircraft(const CCallsign &callsign) const
|
||||
{
|
||||
return m_xplaneAircraftObjects.contains(callsign);
|
||||
|
||||
@@ -127,10 +127,6 @@ namespace swift::simplugin::xplane
|
||||
|
||||
//! \name ISimulator implementations
|
||||
//! @{
|
||||
virtual bool isTimeSynchronized() const override
|
||||
{
|
||||
return false;
|
||||
} // TODO: Can we query the XP intrinisc feature?
|
||||
virtual bool connectTo() override;
|
||||
virtual bool disconnectFrom() override;
|
||||
virtual bool updateOwnSimulatorCockpit(const swift::misc::simulation::CSimulatedAircraft &aircraft,
|
||||
@@ -140,12 +136,6 @@ namespace swift::simplugin::xplane
|
||||
virtual void displayStatusMessage(const swift::misc::CStatusMessage &message) const override;
|
||||
virtual void displayTextMessage(const swift::misc::network::CTextMessage &message) const override;
|
||||
virtual swift::misc::aviation::CAirportList getAirportsInRange(bool recalculateDistance) const override;
|
||||
virtual bool setTimeSynchronization(bool enable,
|
||||
const swift::misc::physical_quantities::CTime &offset) override;
|
||||
virtual swift::misc::physical_quantities::CTime getTimeSynchronizationOffset() const override
|
||||
{
|
||||
return swift::misc::physical_quantities::CTime(0, swift::misc::physical_quantities::CTimeUnit::hrmin());
|
||||
}
|
||||
virtual bool isPhysicallyRenderedAircraft(const swift::misc::aviation::CCallsign &callsign) const override;
|
||||
virtual swift::misc::aviation::CCallsignSet physicallyRenderedAircraft() const override;
|
||||
virtual bool followAircraft(const swift::misc::aviation::CCallsign &callsign) override;
|
||||
|
||||
Reference in New Issue
Block a user