From a099bf3555943b073eeb2896113e0d4c4e5e3859 Mon Sep 17 00:00:00 2001 From: Lars Toenning Date: Sat, 12 Jul 2025 22:42:22 +0200 Subject: [PATCH] fixup! refactor(msfs): Request transponder data with OwnAircraftData --- .../fsxcommon/simconnectdatadefinition.cpp | 16 ++++++++++++++++ .../fsxcommon/simconnectdatadefinition.h | 11 +++++++++++ .../simulator/fsxcommon/simulatorfsxcommon.cpp | 5 ++--- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp index b69f389ec..677a7f69f 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp @@ -81,6 +81,7 @@ namespace swift::simplugin::fsxcommon hr += initRemoteAircraftSimDataSet(hSimConnect); hr += initSimulatorEnvironment(hSimConnect); hr += initSbDataArea(hSimConnect); + if (simInfo.isMSFS() || simInfo.isMSFS2024()) { hr += initMSFSTransponder(hSimConnect); } return hr; } @@ -409,6 +410,21 @@ namespace swift::simplugin::fsxcommon return hr; } + HRESULT CSimConnectDefinitions::initMSFSTransponder(const HANDLE hSimConnect) + { + HRESULT hr = s_ok(); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataTransponderModeMSFS, + "TRANSPONDER STATE:1", "Enum"); + + if (isFailure(hr)) + { + CLogMessage(static_cast(nullptr)) + .error(u"SimConnect error: MSFS transponder data definitions %1") + << hr; + } + return hr; + } + DataDefinitionRemoteAircraftPartsWithoutLights::DataDefinitionRemoteAircraftPartsWithoutLights() { this->resetToInvalid(); diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h index a47a5b1df..ce46a673b 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h @@ -249,6 +249,13 @@ namespace swift::simplugin::fsxcommon QString toQString() const; }; + //! Data structure for MSFS transponder mode information + struct DataDefinitionMSFSTransponderMode + { + double transponderMode = 1; //!< transponder state simvar + }; + + //! Client areas enum ClientAreaId { @@ -272,6 +279,7 @@ namespace swift::simplugin::fsxcommon DataRemoteAircraftModelData, //!< model data eventually used and reported back from simulator DataRemoteAircraftSetData, //!< set model data such as airline DataSimEnvironment, + DataTransponderModeMSFS, DataClientAreaSb, //!< whole SB area, see http://squawkbox.ca/doc/sdk/fsuipc.php DataClientAreaSbIdent, //!< SB ident single value 0x7b93/19 DataClientAreaSbStandby, //!< SB standby 0x7b91/17 @@ -333,6 +341,9 @@ namespace swift::simplugin::fsxcommon //! Initialize the SB data are static HRESULT initSbDataArea(const HANDLE hSimConnect); + + //! Initialize data definition for MSFS transponder + static HRESULT initMSFSTransponder(const HANDLE hSimConnect); }; } // namespace swift::simplugin::fsxcommon diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp index f03d126a3..df1ea9a4a 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp @@ -204,7 +204,6 @@ namespace swift::simplugin::fsxcommon { DataDefinitionMSFSTransponderMode t; t.transponderMode = (newTransponder.isInStandby() ? 1 : 4); - t.ident = newTransponder.isIdentifying(); HRESULT hr = s_ok(); @@ -684,8 +683,8 @@ namespace swift::simplugin::fsxcommon } void CSimulatorFsxCommon::setTransponderMode( - swift::misc::aviation::CTransponder &transponder, - const swift::simplugin::fsxcommon::DataDefinitionOwnAircraft &simulatorOwnAircraft) + [[maybe_unused]] swift::misc::aviation::CTransponder &transponder, + [[maybe_unused]] const swift::simplugin::fsxcommon::DataDefinitionOwnAircraft &simulatorOwnAircraft) { /* Do not modify the transponder mode by default. Only MSFS allows to read it from SimVars */ }