Skip to content

Commit 4b29f92

Browse files
authored
refactor(a380x/prim): split prim into parts (#10777)
* refactor(a380x/prim): split prim into parts * fix: remove debug logging
1 parent 85fe749 commit 4b29f92

22 files changed

Lines changed: 14492 additions & 6440 deletions

fbw-a380x/src/wasm/fbw_a380/build.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,10 @@ clang++ \
123123
"${DIR}/src/model/Double2MultiWord.cpp" \
124124
"${DIR}/src/model/A380FacComputer_data.cpp" \
125125
"${DIR}/src/model/A380FacComputer.cpp" \
126-
"${DIR}/src/model/A380PrimComputer_data.cpp" \
127-
"${DIR}/src/model/A380PrimComputer.cpp" \
126+
"${DIR}/src/model/A380PrimComputerGeneralLogic_data.cpp" \
127+
"${DIR}/src/model/A380PrimComputerGeneralLogic.cpp" \
128+
"${DIR}/src/model/A380PrimComputerFctl_data.cpp" \
129+
"${DIR}/src/model/A380PrimComputerFctl.cpp" \
128130
"${DIR}/src/model/A380SecComputer_data.cpp" \
129131
"${DIR}/src/model/A380SecComputer.cpp" \
130132
"${DIR}/src/model/A380PitchNormalLaw.cpp" \

fbw-a380x/src/wasm/fbw_a380/src/Arinc429Utils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

33
#include <cstdint>
4-
#include "model/A380PrimComputer_types.h"
4+
#include "model/A380PrimComputerGeneralLogic_types.h"
55

66
namespace Arinc429Utils {
77
base_arinc_429 fromSimVar(double simVar);

fbw-a380x/src/wasm/fbw_a380/src/FlyByWireInterface.cpp

Lines changed: 132 additions & 136 deletions
Large diffs are not rendered by default.

fbw-a380x/src/wasm/fbw_a380/src/FlyByWireInterface.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ class FlyByWireInterface {
5555
bool autopilotLawsEnabled = false;
5656
bool flyByWireEnabled = false;
5757
int primDisabled = -1;
58+
bool primGeneralLogicDisabled = false;
59+
bool primFctlDisabled = false;
5860
int secDisabled = -1;
5961
int facDisabled = -1;
6062
bool autoThrustEnabled = false;

fbw-a380x/src/wasm/fbw_a380/src/fcdc/FcdcIO.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

33
#include "../interface/SimConnectData.h"
4-
#include "../model/A380PrimComputer.h"
4+
#include "../model/A380PrimComputerGeneralLogic.h"
55
#include "../model/AutopilotLaws.h"
66
#include "../model/Autothrust.h"
77

fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ bool SimConnectInterface::connect(bool clientDataEnabled,
1616
bool autopilotLawsEnabled,
1717
bool flyByWireEnabled,
1818
int primDisabled,
19+
bool primGeneralLogicDisabled,
20+
bool primFctlDisabled,
1921
int secDisabled,
2022
int facDisabled,
2123
const std::vector<std::shared_ptr<ThrottleAxisMapping>>& throttleAxis,
@@ -49,6 +51,8 @@ bool SimConnectInterface::connect(bool clientDataEnabled,
4951
// store is client data is enabled
5052
this->clientDataEnabled = clientDataEnabled;
5153
this->primDisabled = primDisabled;
54+
this->primGeneralLogicDisabled = primGeneralLogicDisabled;
55+
this->primFctlDisabled = primFctlDisabled;
5256
this->secDisabled = secDisabled;
5357
this->facDisabled = facDisabled;
5458
// store key change value for each axis
@@ -986,6 +990,24 @@ bool SimConnectInterface::prepareClientDataDefinitions() {
986990

987991
// ------------------------------------------------------------------------------------------------------------------
988992

993+
// map client id
994+
result &=
995+
SimConnect_MapClientDataNameToID(hSimConnect, "A32NX_CLIENT_DATA_PRIM_GENERAL_LOGIC_OUTPUT", ClientData::PRIM_GENERAL_LOGIC_OUTPUT);
996+
// create client data
997+
result &= SimConnect_CreateClientData(hSimConnect, ClientData::PRIM_GENERAL_LOGIC_OUTPUT, sizeof(base_prim_general_logic_outputs),
998+
SIMCONNECT_CREATE_CLIENT_DATA_FLAG_DEFAULT);
999+
// add data definitions
1000+
result &= SimConnect_AddToClientDataDefinition(hSimConnect, ClientData::PRIM_GENERAL_LOGIC_OUTPUT, SIMCONNECT_CLIENTDATAOFFSET_AUTO,
1001+
sizeof(base_prim_general_logic_outputs));
1002+
1003+
if (primFctlDisabled) {
1004+
// request data to be updated when set
1005+
result &= SimConnect_RequestClientData(hSimConnect, ClientData::PRIM_GENERAL_LOGIC_OUTPUT, ClientData::PRIM_GENERAL_LOGIC_OUTPUT,
1006+
ClientData::PRIM_GENERAL_LOGIC_OUTPUT, SIMCONNECT_CLIENT_DATA_PERIOD_ON_SET);
1007+
}
1008+
1009+
// ------------------------------------------------------------------------------------------------------------------
1010+
9891011
for (int i = 0; i < 3; i++) {
9901012
auto defineId = ClientData::PRIM_1_BUS_OUTPUT + i;
9911013

@@ -1454,6 +1476,10 @@ bool SimConnectInterface::setClientDataPrimBusInput(base_prim_out_bus& output, i
14541476
return sendClientData(ClientData::PRIM_1_BUS_OUTPUT + primIndex, sizeof(output), &output);
14551477
}
14561478

1479+
bool SimConnectInterface::setClientDataPrimGeneralLogicOutput(const base_prim_general_logic_outputs& output) {
1480+
return sendClientData(ClientData::PRIM_GENERAL_LOGIC_OUTPUT, sizeof(output), const_cast<base_prim_general_logic_outputs*>(&output));
1481+
}
1482+
14571483
bool SimConnectInterface::setClientDataSecDiscretes(base_sec_discrete_inputs& output) {
14581484
return sendClientData(ClientData::SEC_DISCRETE_INPUTS, sizeof(output), &output);
14591485
}
@@ -1490,6 +1516,10 @@ base_prim_out_bus& SimConnectInterface::getClientDataPrimBusOutput() {
14901516
return clientDataPrimBusOutputs;
14911517
}
14921518

1519+
base_prim_general_logic_outputs& SimConnectInterface::getClientDataPrimGeneralLogicOutput() {
1520+
return clientDataPrimGeneralLogicOutput;
1521+
}
1522+
14931523
base_sec_discrete_outputs& SimConnectInterface::getClientDataSecDiscretesOutput() {
14941524
return clientDataSecDiscreteOutputs;
14951525
}
@@ -3231,6 +3261,11 @@ void SimConnectInterface::simConnectProcessClientData(const SIMCONNECT_RECV_CLIE
32313261
clientDataPrimBusOutputs = *((base_prim_out_bus*)&data->dwData);
32323262
return;
32333263

3264+
case ClientData::PRIM_GENERAL_LOGIC_OUTPUT:
3265+
// store aircraft data
3266+
clientDataPrimGeneralLogicOutput = *((base_prim_general_logic_outputs*)&data->dwData);
3267+
return;
3268+
32343269
case ClientData::SEC_DISCRETE_OUTPUTS:
32353270
// store aircraft data
32363271
clientDataSecDiscreteOutputs = *((base_sec_discrete_outputs*)&data->dwData);

fbw-a380x/src/wasm/fbw_a380/src/interface/SimConnectInterface.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#include "SimConnectData.h"
1212

1313
#include "../model/A380FacComputer_types.h"
14-
#include "../model/A380PrimComputer_types.h"
14+
#include "../model/A380PrimComputerGeneralLogic_types.h"
1515
#include "../model/A380SecComputer_types.h"
1616

1717
class SimConnectInterface {
@@ -208,6 +208,8 @@ class SimConnectInterface {
208208
bool autopilotLawsEnabled,
209209
bool flyByWireEnabled,
210210
int primDisabled,
211+
bool primGeneralLogicDisabled,
212+
bool primFctlDisabled,
211213
int secDisabled,
212214
int facDisabled,
213215
const std::vector<std::shared_ptr<ThrottleAxisMapping>>& throttleAxis,
@@ -290,10 +292,12 @@ class SimConnectInterface {
290292
bool setClientDataPrimAnalog(base_prim_analog_inputs& output);
291293
bool setClientDataPrimTemporaryAp(base_prim_temporary_ap_input& output);
292294
bool setClientDataPrimBusInput(base_prim_out_bus& output, int primIndex);
295+
bool setClientDataPrimGeneralLogicOutput(const base_prim_general_logic_outputs& output);
293296

294297
base_prim_discrete_outputs& getClientDataPrimDiscretesOutput();
295298
base_prim_analog_outputs& getClientDataPrimAnalogsOutput();
296299
base_prim_out_bus& getClientDataPrimBusOutput();
300+
base_prim_general_logic_outputs& getClientDataPrimGeneralLogicOutput();
297301

298302
bool setClientDataSecDiscretes(base_sec_discrete_inputs& output);
299303
bool setClientDataSecAnalog(base_sec_analog_inputs& output);
@@ -347,6 +351,7 @@ class SimConnectInterface {
347351
PRIM_1_BUS_OUTPUT,
348352
PRIM_2_BUS_OUTPUT,
349353
PRIM_3_BUS_OUTPUT,
354+
PRIM_GENERAL_LOGIC_OUTPUT,
350355
SEC_DISCRETE_INPUTS,
351356
SEC_ANALOG_INPUTS,
352357
SEC_DISCRETE_OUTPUTS,
@@ -390,6 +395,8 @@ class SimConnectInterface {
390395
bool clientDataEnabled = false;
391396

392397
int primDisabled = -1;
398+
bool primGeneralLogicDisabled = false;
399+
bool primFctlDisabled = false;
393400
int secDisabled = -1;
394401
int facDisabled = -1;
395402

@@ -421,6 +428,7 @@ class SimConnectInterface {
421428
base_prim_discrete_outputs clientDataPrimDiscreteOutputs = {};
422429
base_prim_analog_outputs clientDataPrimAnalogOutputs = {};
423430
base_prim_out_bus clientDataPrimBusOutputs = {};
431+
base_prim_general_logic_outputs clientDataPrimGeneralLogicOutput = {};
424432

425433
base_sec_discrete_outputs clientDataSecDiscreteOutputs = {};
426434
base_sec_analog_outputs clientDataSecAnalogOutputs = {};

0 commit comments

Comments
 (0)