mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 08:36:52 +08:00
refactor: Remove timesync feature
This is directly available by new simulators.
This commit is contained in:
@@ -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