refactor: Remove timesync feature

This is directly available by new simulators.
This commit is contained in:
Lars Toenning
2024-12-29 14:25:56 +01:00
parent 865e7fc0ef
commit efc7796f1b
23 changed files with 0 additions and 384 deletions

View File

@@ -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;

View File

@@ -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
{

View File

@@ -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());

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -56,9 +56,6 @@ namespace swift::gui::components
//! Apply disable rendering
void onApplyDisableRendering();
//! Apply time synchronization
void onApplyTimeSync();
//! Apply COM sync
void onApplyComSync();

View File

@@ -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>

View File

@@ -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());

View File

@@ -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>

View File

@@ -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);

View File

@@ -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;

View File

@@ -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())

View File

@@ -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

View File

@@ -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;

View File

@@ -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,

View File

@@ -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;

View File

@@ -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

View File

@@ -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 =

View File

@@ -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);

View File

@@ -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;