@@ -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+
14571483bool 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+
14931523base_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 );
0 commit comments