From bb697bf6aca4c39fb39e6da766b878e645409606 Mon Sep 17 00:00:00 2001 From: Saschl <19493808+Saschl@users.noreply.github.com> Date: Wed, 23 Aug 2023 16:53:29 +0200 Subject: [PATCH] fix: use period_visual_frame in 320 fadec (#8170) * fix: use period_visual_frame in 320 fadec * fix: remaining usages of PERIOD_ONCE and cleanup --- .../src/wasm/fadec_a320/src/FadecGauge.h | 4 ++-- .../src/interface/SimConnectInterface.cpp | 20 ----------------- .../src/interface/SimConnectInterface.h | 2 -- .../src/wasm/fadec_a380/src/FadecGauge.h | 2 +- .../wasm/fbw_a380/src/FlyByWireInterface.cpp | 9 +++++++- .../src/interface/SimConnectInterface.cpp | 22 +------------------ .../src/interface/SimConnectInterface.h | 2 -- .../wasm/flypad-backend/src/FlyPadBackend.cpp | 9 ++++---- 8 files changed, 17 insertions(+), 53 deletions(-) diff --git a/fbw-a32nx/src/wasm/fadec_a320/src/FadecGauge.h b/fbw-a32nx/src/wasm/fadec_a320/src/FadecGauge.h index b556e72e6cd..f86b129d6ce 100644 --- a/fbw-a32nx/src/wasm/fadec_a320/src/FadecGauge.h +++ b/fbw-a32nx/src/wasm/fadec_a320/src/FadecGauge.h @@ -93,6 +93,7 @@ class FadecGauge { } isConnected = true; + simConnectRequestData(); return true; } @@ -104,7 +105,6 @@ class FadecGauge { bool onUpdate(double deltaTime) { if (isConnected == true) { // read simulation data from simconnect - simConnectRequestData(); simConnectReadData(); // detect pause if ((simulationData.simulationTime == previousSimulationTime) || (simulationData.simulationTime < 0.2)) { @@ -141,7 +141,7 @@ class FadecGauge { // request data HRESULT result = SimConnect_RequestDataOnSimObject(hSimConnect, 0, DataTypesID::SimulationDataTypeId, SIMCONNECT_OBJECT_ID_USER, - SIMCONNECT_PERIOD_ONCE); + SIMCONNECT_PERIOD_VISUAL_FRAME); // check result of data request if (result != S_OK) { diff --git a/fbw-a32nx/src/wasm/fbw_a320/src/interface/SimConnectInterface.cpp b/fbw-a32nx/src/wasm/fbw_a320/src/interface/SimConnectInterface.cpp index 6347098ea3d..c630a3dbe61 100644 --- a/fbw-a32nx/src/wasm/fbw_a320/src/interface/SimConnectInterface.cpp +++ b/fbw-a32nx/src/wasm/fbw_a320/src/interface/SimConnectInterface.cpp @@ -1090,26 +1090,6 @@ bool SimConnectInterface::prepareClientDataDefinitions() { return SUCCEEDED(result); } -bool SimConnectInterface::requestReadData() { - // check if we are connected - if (!isConnected) { - return false; - } - - // request data - if (!requestData()) { - return false; - } - - // read data - if (!readData()) { - return false; - } - - // success - return true; -} - bool SimConnectInterface::requestData() { // check if we are connected if (!isConnected) { diff --git a/fbw-a32nx/src/wasm/fbw_a320/src/interface/SimConnectInterface.h b/fbw-a32nx/src/wasm/fbw_a320/src/interface/SimConnectInterface.h index 88cc709b759..753f709fdc6 100644 --- a/fbw-a32nx/src/wasm/fbw_a320/src/interface/SimConnectInterface.h +++ b/fbw-a32nx/src/wasm/fbw_a320/src/interface/SimConnectInterface.h @@ -203,8 +203,6 @@ class SimConnectInterface { void setSampleTime(double sampleTime); - bool requestReadData(); - bool requestData(); bool readData(); diff --git a/fbw-a380x/src/wasm/fadec_a380/src/FadecGauge.h b/fbw-a380x/src/wasm/fadec_a380/src/FadecGauge.h index 222e9024e5c..d5f35196d18 100644 --- a/fbw-a380x/src/wasm/fadec_a380/src/FadecGauge.h +++ b/fbw-a380x/src/wasm/fadec_a380/src/FadecGauge.h @@ -115,7 +115,6 @@ class FadecGauge { } isConnected = true; - // read simulation data from simconnect simConnectRequestData(); return true; @@ -127,6 +126,7 @@ class FadecGauge { /// True if successful, false otherwise. bool onUpdate(double deltaTime) { if (isConnected == true) { + // read simulation data from simconnect simConnectReadData(); // detect pause if ((simulationData.simulationTime == previousSimulationTime) || (simulationData.simulationTime < 0.2)) { diff --git a/fbw-a380x/src/wasm/fbw_a380/src/FlyByWireInterface.cpp b/fbw-a380x/src/wasm/fbw_a380/src/FlyByWireInterface.cpp index 8b9b0cf57a9..33e533122be 100644 --- a/fbw-a380x/src/wasm/fbw_a380/src/FlyByWireInterface.cpp +++ b/fbw-a380x/src/wasm/fbw_a380/src/FlyByWireInterface.cpp @@ -32,11 +32,18 @@ bool FlyByWireInterface::connect() { flightDataRecorder.initialize(); // connect to sim connect - return simConnectInterface.connect(clientDataEnabled, autopilotStateMachineEnabled, autopilotLawsEnabled, flyByWireEnabled, primDisabled, + bool success = simConnectInterface.connect(clientDataEnabled, autopilotStateMachineEnabled, autopilotLawsEnabled, flyByWireEnabled, primDisabled, secDisabled, facDisabled, throttleAxis, spoilersHandler, flightControlsKeyChangeAileron, flightControlsKeyChangeElevator, flightControlsKeyChangeRudder, disableXboxCompatibilityRudderAxisPlusMinus, enableRudder2AxisMode, idMinimumSimulationRate->get(), idMaximumSimulationRate->get(), limitSimulationRateByPerformance); + // request data + if (!simConnectInterface.requestData()) { + std::cout << "WASM: Request data failed!" << std::endl; + return false; + } + + return success; } void FlyByWireInterface::disconnect() { diff --git a/fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.cpp b/fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.cpp index e0aa25e131b..902e6fd0dec 100644 --- a/fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.cpp +++ b/fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.cpp @@ -1108,26 +1108,6 @@ bool SimConnectInterface::prepareClientDataDefinitions() { return SUCCEEDED(result); } -bool SimConnectInterface::requestReadData() { - // check if we are connected - if (!isConnected) { - return false; - } - - // request data - if (!requestData()) { - return false; - } - - // read data - if (!readData()) { - return false; - } - - // success - return true; -} - bool SimConnectInterface::requestData() { // check if we are connected if (!isConnected) { @@ -1135,7 +1115,7 @@ bool SimConnectInterface::requestData() { } // request data - HRESULT result = SimConnect_RequestDataOnSimObject(hSimConnect, 0, 0, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_ONCE); + HRESULT result = SimConnect_RequestDataOnSimObject(hSimConnect, 0, 0, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_VISUAL_FRAME); // check result of data request if (result != S_OK) { diff --git a/fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.h b/fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.h index a64fcfedc48..ffebe22e911 100644 --- a/fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.h +++ b/fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.h @@ -211,8 +211,6 @@ class SimConnectInterface { void setSampleTime(double sampleTime); - bool requestReadData(); - bool requestData(); bool readData(); diff --git a/fbw-a380x/src/wasm/flypad-backend/src/FlyPadBackend.cpp b/fbw-a380x/src/wasm/flypad-backend/src/FlyPadBackend.cpp index 368bb5bc0a3..ae6cbe1616a 100644 --- a/fbw-a380x/src/wasm/flypad-backend/src/FlyPadBackend.cpp +++ b/fbw-a380x/src/wasm/flypad-backend/src/FlyPadBackend.cpp @@ -69,14 +69,15 @@ bool FlyPadBackend::initialize() { aircraftPresetPtr->initialize(); pushbackPtr->initialize(); + // read simulation data from simconnect + simConnectRequestData(); + std::cout << "FLYPAD_BACKEND: SimConnect connected." << std::endl; return (result == S_OK); } bool FlyPadBackend::onUpdate(double deltaTime) { if (isConnected) { - // read simulation data from simconnect - simConnectRequestData(); simConnectProcessMessages(); // detect pause @@ -113,8 +114,8 @@ bool FlyPadBackend::simConnectRequestData() const { HRESULT result = S_OK; // Request data for each data structure - remember to increase the request id. - result &= SimConnect_RequestDataOnSimObject(hSimConnect, 0, DataStructureIDs::SimulationDataID, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_ONCE); - result &= SimConnect_RequestDataOnSimObject(hSimConnect, 1, DataStructureIDs::PushbackDataID, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_ONCE); + result &= SimConnect_RequestDataOnSimObject(hSimConnect, 0, DataStructureIDs::SimulationDataID, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_VISUAL_FRAME); + result &= SimConnect_RequestDataOnSimObject(hSimConnect, 1, DataStructureIDs::PushbackDataID, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_VISUAL_FRAME); if (result != S_OK) { return false;