Skip to content

Commit 12024ec

Browse files
committed
feat(afs): Add FMGC and FCU computer implementation
FBW PR 7587 fix
1 parent f6acd47 commit 12024ec

File tree

239 files changed

+52447
-36042
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

239 files changed

+52447
-36042
lines changed

flybywire

Submodule flybywire updated 161 files

hdw-a333x/src/wasm/fbw_a330/src/model/PitchAlternateLaw.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -420,10 +420,10 @@ void PitchAlternateLaw::reset(void)
420420
PitchAlternateLaw_DWork.icLoad = true;
421421
PitchAlternateLaw_DWork.is_active_c9_PitchAlternateLaw = 0U;
422422
PitchAlternateLaw_DWork.is_c9_PitchAlternateLaw = PitchAlternateLaw_IN_NO_ACTIVE_CHILD;
423-
PitchAlternateLaw_DWork.is_active_c7_PitchAlternateLaw = 0U;
424-
PitchAlternateLaw_DWork.is_c7_PitchAlternateLaw = PitchAlternateLaw_IN_NO_ACTIVE_CHILD;
425423
rtb_nz_limit_up_g = 0.0;
426424
rtb_nz_limit_lo_g = 0.0;
425+
PitchAlternateLaw_DWork.is_active_c7_PitchAlternateLaw = 0U;
426+
PitchAlternateLaw_DWork.is_c7_PitchAlternateLaw = PitchAlternateLaw_IN_NO_ACTIVE_CHILD;
427427
PitchAlternateLaw_RateLimiter_Reset(&PitchAlternateLaw_DWork.sf_RateLimiter);
428428
PitchAlternateLaw_LagFilter_Reset(&PitchAlternateLaw_DWork.sf_LagFilter_g3);
429429
PitchAlternateLaw_WashoutFilter_Reset(&PitchAlternateLaw_DWork.sf_WashoutFilter_c);
@@ -474,7 +474,7 @@ void PitchAlternateLaw::step(const real_T *rtu_In_time_dt, const real_T *rtu_In_
474474
int32_T tmp;
475475
boolean_T rtb_NOT;
476476
boolean_T rtb_eta_trim_deg_should_freeze;
477-
if (PitchAlternateLaw_DWork.is_active_c9_PitchAlternateLaw == 0U) {
477+
if (PitchAlternateLaw_DWork.is_active_c9_PitchAlternateLaw == 0) {
478478
PitchAlternateLaw_DWork.is_active_c9_PitchAlternateLaw = 1U;
479479
PitchAlternateLaw_DWork.is_c9_PitchAlternateLaw = PitchAlternateLaw_IN_running;
480480
rtb_eta_trim_deg_should_freeze = false;
@@ -512,7 +512,7 @@ void PitchAlternateLaw::step(const real_T *rtu_In_time_dt, const real_T *rtu_In_
512512
}
513513

514514
rtb_Gain5 = PitchAlternateLaw_rtP.Gain5_Gain * rtb_Switch_c;
515-
if (PitchAlternateLaw_DWork.is_active_c7_PitchAlternateLaw == 0U) {
515+
if (PitchAlternateLaw_DWork.is_active_c7_PitchAlternateLaw == 0) {
516516
PitchAlternateLaw_DWork.is_active_c7_PitchAlternateLaw = 1U;
517517
PitchAlternateLaw_DWork.is_c7_PitchAlternateLaw = PitchAlternateLaw_IN_ground;
518518
rtb_eta_trim_deg_rate_limit_up_deg_s = 0.7;
@@ -853,7 +853,7 @@ void PitchAlternateLaw::step(const real_T *rtu_In_time_dt, const real_T *rtu_In_
853853
rty_Out_eta_deg, &PitchAlternateLaw_DWork.sf_RateLimiter_b);
854854
*rty_Out_eta_trim_limit_up = PitchAlternateLaw_rtP.Constant2_Value;
855855
*rty_Out_eta_trim_limit_lo = PitchAlternateLaw_rtP.Constant3_Value_j;
856-
if (PitchAlternateLaw_DWork.is_active_c8_PitchAlternateLaw == 0U) {
856+
if (PitchAlternateLaw_DWork.is_active_c8_PitchAlternateLaw == 0) {
857857
PitchAlternateLaw_DWork.is_active_c8_PitchAlternateLaw = 1U;
858858
PitchAlternateLaw_DWork.is_c8_PitchAlternateLaw = PitchAlternateLaw_IN_manual;
859859
} else {

hdw-a333x/src/wasm/fbw_a330/src/model/PitchAlternateLaw.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#ifndef RTW_HEADER_PitchAlternateLaw_h_
2-
#define RTW_HEADER_PitchAlternateLaw_h_
1+
#ifndef PitchAlternateLaw_h_
2+
#define PitchAlternateLaw_h_
33
#include "rtwtypes.h"
44
#include "PitchAlternateLaw_types.h"
55
#include <cstring>
@@ -228,4 +228,3 @@ class PitchAlternateLaw final
228228
extern PitchAlternateLaw::Parameters_PitchAlternateLaw_T PitchAlternateLaw_rtP;
229229

230230
#endif
231-

hdw-a333x/src/wasm/fbw_a330/src/model/PitchDirectLaw.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#ifndef RTW_HEADER_PitchDirectLaw_h_
2-
#define RTW_HEADER_PitchDirectLaw_h_
1+
#ifndef PitchDirectLaw_h_
2+
#define PitchDirectLaw_h_
33
#include "rtwtypes.h"
44
#include "PitchDirectLaw_types.h"
55
#include <cstring>
@@ -41,4 +41,3 @@ class PitchDirectLaw final
4141
extern PitchDirectLaw::Parameters_PitchDirectLaw_T PitchDirectLaw_rtP;
4242

4343
#endif
44-

hdw-a333x/src/wasm/fbw_a330/src/model/PitchNormalLaw.cpp

Lines changed: 353 additions & 352 deletions
Large diffs are not rendered by default.

hdw-a333x/src/wasm/fbw_a330/src/model/PitchNormalLaw.h

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
#ifndef RTW_HEADER_PitchNormalLaw_h_
2-
#define RTW_HEADER_PitchNormalLaw_h_
1+
#ifndef PitchNormalLaw_h_
2+
#define PitchNormalLaw_h_
33
#include "rtwtypes.h"
44
#include "PitchNormalLaw_types.h"
55
#include <cstring>
@@ -38,7 +38,7 @@ class PitchNormalLaw final
3838
boolean_T pU_not_empty;
3939
};
4040

41-
struct rtDW_RateLimiter_PitchNormalLaw_a_T {
41+
struct rtDW_RateLimiter_PitchNormalLaw_o_T {
4242
real_T pY;
4343
boolean_T pY_not_empty;
4444
};
@@ -68,6 +68,8 @@ class PitchNormalLaw final
6868
real_T Delay1_DSTATE_i;
6969
real_T Delay_DSTATE_e1;
7070
real_T Delay_DSTATE_bg;
71+
real_T Delay_DSTATE_o;
72+
real_T Delay1_DSTATE_n;
7173
real_T Delay_DSTATE_jv;
7274
real_T Delay_DSTATE_lf;
7375
real_T Delay_DSTATE_dv;
@@ -78,7 +80,7 @@ class PitchNormalLaw final
7880
real_T Delay1_DSTATE_l;
7981
real_T Delay_DSTATE_m;
8082
real_T Delay_DSTATE_k2;
81-
real_T Delay1_DSTATE_n;
83+
real_T Delay1_DSTATE_ns;
8284
real_T Delay_DSTATE_mz;
8385
real_T Delay_DSTATE_jh;
8486
real_T Delay_DSTATE_dy;
@@ -88,7 +90,7 @@ class PitchNormalLaw final
8890
real_T Delay_DSTATE_h;
8991
real_T Delay_DSTATE_ds;
9092
real_T Delay_DSTATE_jt;
91-
real_T Delay_DSTATE_o;
93+
real_T Delay_DSTATE_o3;
9294
real_T Delay_DSTATE_ej;
9395
real_T Delay_DSTATE_e4;
9496
real_T Delay_DSTATE_cl;
@@ -105,18 +107,16 @@ class PitchNormalLaw final
105107
boolean_T icLoad;
106108
boolean_T icLoad_p;
107109
rtDW_RateLimiter_PitchNormalLaw_T sf_RateLimiter_b;
108-
rtDW_RateLimiter_PitchNormalLaw_a_T sf_RateLimiter_ct;
109-
rtDW_LagFilter_PitchNormalLaw_d_T sf_LagFilter_fz;
110+
rtDW_RateLimiter_PitchNormalLaw_o_T sf_RateLimiter_ct;
111+
rtDW_LagFilter_PitchNormalLaw_d_T sf_LagFilter_f;
110112
rtDW_WashoutFilter_PitchNormalLaw_T sf_WashoutFilter_h;
111-
rtDW_RateLimiter_PitchNormalLaw_a_T sf_RateLimiter_nx;
112-
rtDW_RateLimiter_PitchNormalLaw_a_T sf_RateLimiter_i;
113-
rtDW_RateLimiter_PitchNormalLaw_a_T sf_RateLimiter_c2;
113+
rtDW_RateLimiter_PitchNormalLaw_o_T sf_RateLimiter_nx;
114+
rtDW_RateLimiter_PitchNormalLaw_o_T sf_RateLimiter_i;
115+
rtDW_RateLimiter_PitchNormalLaw_o_T sf_RateLimiter_c2;
114116
rtDW_RateLimiter_PitchNormalLaw_T sf_RateLimiter_o;
115117
rtDW_LagFilter_PitchNormalLaw_T sf_LagFilter_mf;
116-
rtDW_RateLimiter_PitchNormalLaw_T sf_RateLimiter_pr;
117-
rtDW_RateLimiter_PitchNormalLaw_a_T sf_RateLimiter_f;
118-
rtDW_RateLimiter_PitchNormalLaw_T sf_RateLimiter_m;
119-
rtDW_LagFilter_PitchNormalLaw_d_T sf_LagFilter_f;
118+
rtDW_RateLimiter_PitchNormalLaw_T sf_RateLimiter_ck;
119+
rtDW_RateLimiter_PitchNormalLaw_T sf_RateLimiter_e;
120120
rtDW_WashoutFilter_PitchNormalLaw_T sf_WashoutFilter_ca;
121121
rtDW_LagFilter_PitchNormalLaw_d_T sf_LagFilter_gr;
122122
rtDW_WashoutFilter_PitchNormalLaw_T sf_WashoutFilter_c;
@@ -164,7 +164,7 @@ class PitchNormalLaw final
164164
real_T WashoutFilter_C1_b;
165165
real_T Subsystem1_C1;
166166
real_T Subsystem3_C1;
167-
real_T LagFilterdeltaetapos_C1;
167+
real_T LagFilter3_C1;
168168
real_T LagFilter_C1_c;
169169
real_T WashoutFilter_C1_p;
170170
real_T Subsystem2_C1;
@@ -227,9 +227,8 @@ class PitchNormalLaw final
227227
real_T DiscreteDerivativeVariableTs2_InitialCondition_m;
228228
real_T RateLimiterVariableTs5_InitialCondition;
229229
real_T DiscreteDerivativeVariableTs1_InitialCondition_n;
230-
real_T RateLimiterFlareLawTailstrikeProtection_InitialCondition;
231-
real_T RateLimiterDeltaEtaFlare_InitialCondition;
232-
real_T RateLimiterTheta_c_InitialCondition;
230+
real_T RateLimiterVariableTs1_InitialCondition_n;
231+
real_T RateLimiterVariableTs_InitialCondition_b;
233232
real_T DiscreteDerivativeVariableTs_InitialCondition_n;
234233
real_T DiscreteDerivativeVariableTs2_InitialCondition_a;
235234
real_T RateLimiterVariableTs9_InitialCondition;
@@ -276,9 +275,8 @@ class PitchNormalLaw final
276275
real_T RateLimiterVariableTs8_lo;
277276
real_T RateLimiterVariableTs2_lo_k;
278277
real_T RateLimiterVariableTs5_lo;
279-
real_T RateLimiterFlareLawTailstrikeProtection_lo;
280-
real_T RateLimiterDeltaEtaFlare_lo;
281-
real_T RateLimiterTheta_c_lo;
278+
real_T RateLimiterVariableTs1_lo_j;
279+
real_T RateLimiterVariableTs_lo_j;
282280
real_T RateLimiterVariableTs9_lo;
283281
real_T RateLimiterVariableTs_lo_c;
284282
real_T RateLimiterVariableTs3_lo_b;
@@ -294,11 +292,10 @@ class PitchNormalLaw final
294292
real_T RateLimiterVariableTs8_up;
295293
real_T RateLimiterVariableTs2_up_m;
296294
real_T RateLimiterVariableTs5_up;
297-
real_T RateLimiterFlareLawTailstrikeProtection_up;
298-
real_T RateLimiterDeltaEtaFlare_up;
299-
real_T RateLimiterTheta_c_up;
300-
real_T RateLimiterVariableTs9_up;
295+
real_T RateLimiterVariableTs1_up_b;
301296
real_T RateLimiterVariableTs_up_n;
297+
real_T RateLimiterVariableTs9_up;
298+
real_T RateLimiterVariableTs_up_n5;
302299
real_T RateLimiterVariableTs3_up_i;
303300
real_T RateLimiterVariableTs4_up;
304301
real_T RateLimiterVariableTs_up_na;
@@ -317,7 +314,7 @@ class PitchNormalLaw final
317314
real_T LimitLo_bp02Data[5];
318315
real_T ConstantLo_Value;
319316
real_T LimitSwitchLo_Threshold;
320-
real_T FlareLawTailstrikeProtectionLimitLo_Value;
317+
real_T Constant1_Value;
321318
real_T qk_dot_gain1_Gain;
322319
real_T qk_gain_HSP_Gain;
323320
real_T v_dot_gain_HSP_Gain;
@@ -328,7 +325,7 @@ class PitchNormalLaw final
328325
real_T Saturation4_LowerSat;
329326
real_T Saturation8_UpperSat;
330327
real_T Saturation8_LowerSat;
331-
real_T Constant1_Value;
328+
real_T Constant1_Value_g;
332329
real_T Saturation_UpperSat;
333330
real_T Saturation_LowerSat;
334331
real_T Constant1_Value_h;
@@ -451,7 +448,10 @@ class PitchNormalLaw final
451448
real_T Saturation3_LowerSat_lu;
452449
real_T Gain5_Gain_g;
453450
real_T Bias_Bias_g;
454-
real_T Gain_Gain_d;
451+
real_T Gain3_Gain_k;
452+
real_T Delay_InitialCondition_i;
453+
real_T Constant_Value_fu;
454+
real_T Delay1_InitialCondition_d;
455455
real_T PLUT_tableData_bb[2];
456456
real_T PLUT_bp01Data_k[2];
457457
real_T DLUT_tableData_bf[2];
@@ -622,14 +622,13 @@ class PitchNormalLaw final
622622
static void PitchNormalLaw_WashoutFilter_Reset(rtDW_WashoutFilter_PitchNormalLaw_T *localDW);
623623
static void PitchNormalLaw_WashoutFilter(real_T rtu_U, real_T rtu_C1, const real_T *rtu_dt, real_T *rty_Y,
624624
rtDW_WashoutFilter_PitchNormalLaw_T *localDW);
625-
static void PitchNormalLaw_RateLimiter_a_Reset(rtDW_RateLimiter_PitchNormalLaw_a_T *localDW);
626-
static void PitchNormalLaw_RateLimiter_f(const real_T *rtu_u, real_T rtu_up, real_T rtu_lo, const real_T *rtu_Ts,
627-
real_T rtu_init, real_T *rty_Y, rtDW_RateLimiter_PitchNormalLaw_a_T *localDW);
625+
static void PitchNormalLaw_RateLimiter_l_Reset(rtDW_RateLimiter_PitchNormalLaw_o_T *localDW);
626+
static void PitchNormalLaw_RateLimiter_c(const real_T *rtu_u, real_T rtu_up, real_T rtu_lo, const real_T *rtu_Ts,
627+
real_T rtu_init, real_T *rty_Y, rtDW_RateLimiter_PitchNormalLaw_o_T *localDW);
628628
static void PitchNormalLaw_VoterAttitudeProtection(real_T rtu_input, real_T rtu_input_l, real_T rtu_input_o, real_T
629629
*rty_vote);
630630
};
631631

632632
extern PitchNormalLaw::Parameters_PitchNormalLaw_T PitchNormalLaw_rtP;
633633

634634
#endif
635-

hdw-a339x/mach.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ module.exports = {
3434
msfsAvionicsInstrument('ND'),
3535
msfsAvionicsInstrument('EWD'),
3636
msfsAvionicsInstrument('Clock'),
37+
msfsAvionicsInstrument('FCU'),
3738

3839
reactInstrument('SD'),
3940
reactInstrument('DCDU'),

hdw-a339x/src/base/headwindsim-aircraft-a330-900/ModelBehaviorDefs/A339X/Airbus.xml

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,6 @@
2222
</UseTemplate>
2323
</Template>
2424

25-
<Template Name="FBW_AIRBUS_Push_Metric_Alt_Template">
26-
<DefaultTemplateParameters>
27-
<NODE_ID>AIRBUS_Push_Metric_Alt</NODE_ID>
28-
<ANIM_NAME>AIRBUS_Push_Metric_Alt</ANIM_NAME>
29-
<PART_ID>AIRBUS_Push_Metric_Alt</PART_ID>
30-
<WWISE_EVENT_1>fcubutton</WWISE_EVENT_1>
31-
<WWISE_EVENT_2>fcubutton</WWISE_EVENT_2>
32-
<NORMALIZED_TIME_1>0.1</NORMALIZED_TIME_1>
33-
<NORMALIZED_TIME_2>0.5</NORMALIZED_TIME_2>
34-
<TOOLTIPID>%((L:A32NX_METRIC_ALT_TOGGLE, bool))%{if}TT:COCKPIT.TOOLTIPS.AUTOPILOT_PANEL_METRIC_ALT_TURN_OFF%{else}TT:COCKPIT.TOOLTIPS.AUTOPILOT_PANEL_METRIC_ALT_TURN_ON%{end}</TOOLTIPID>
35-
</DefaultTemplateParameters>
36-
37-
<Component ID="#NODE_ID#" Node="#NODE_ID#">
38-
<UseTemplate Name="ASOBO_GT_Push_Button">
39-
<LEFT_SINGLE_CODE>(L:A32NX_METRIC_ALT_TOGGLE, bool) ! (&gt;L:A32NX_METRIC_ALT_TOGGLE)</LEFT_SINGLE_CODE>
40-
</UseTemplate>
41-
</Component>
42-
</Template>
43-
4425
<Template Name="FBW_AIRBUS_Push_Transfer_Template">
4526
<DefaultTemplateParameters>
4627
<NODE_ID>AIRBUS_Push_Transfer</NODE_ID>
@@ -59,57 +40,6 @@
5940
</Component>
6041
</Template>
6142

62-
<Template Name="FBW_AIRBUS_NAV_AID_SWITCH_SubTemplate">
63-
<DefaultTemplateParameters>
64-
<ANIM_NAME>#BASE_NAME#</ANIM_NAME>
65-
<NODE_ID>#BASE_NAME#</NODE_ID>
66-
<PART_ID>#BASE_NAME#</PART_ID>
67-
<WWISE_EVENT>lswitch</WWISE_EVENT>
68-
69-
</DefaultTemplateParameters>
70-
<Component ID="#NODE_ID#" Node="#NODE_ID#">
71-
<UseTemplate Name="ASOBO_GT_Switch_3States">
72-
<SWITCH_DIRECTION>Horizontal</SWITCH_DIRECTION>
73-
<CODE_POS_0>
74-
(* LEFT *)
75-
1 (&gt;L:#STATE_VAR_NAME#)
76-
</CODE_POS_0>
77-
<CODE_POS_1>
78-
(* OFF *)
79-
0 (&gt;L:#STATE_VAR_NAME#)
80-
</CODE_POS_1>
81-
<CODE_POS_2>
82-
(* RIGHT *)
83-
2 (&gt;L:#STATE_VAR_NAME#)
84-
</CODE_POS_2>
85-
<STATE0_TEST>(L:#STATE_VAR_NAME#) 1 ==</STATE0_TEST>
86-
<STATE1_TEST>(L:#STATE_VAR_NAME#) 0 ==</STATE1_TEST>
87-
<STATE2_TEST>(L:#STATE_VAR_NAME#) 2 ==</STATE2_TEST>
88-
89-
</UseTemplate>
90-
</Component>
91-
</Template>
92-
93-
<Template Name="FBW_AIRBUS_NAV_AID_SWITCH_Template">
94-
<DefaultTemplateParameters>
95-
<BASE_NAME>UNKNOWN</BASE_NAME>
96-
<PART_ID>NAVAID_Switch</PART_ID>
97-
<ANIMREF_ID>0</ANIMREF_ID>
98-
<ANIMCURSOR_MAX>1</ANIMCURSOR_MAX>
99-
<STATE_VAR_NAME>A32NX_EFIS_#SIDE#_NAVAID_#INDEX#_MODE</STATE_VAR_NAME>
100-
<ANIMTIP_0>TT:COCKPIT.TOOLTIPS.EFIS_PANEL_ADFSWITCH_ADF#INDEX#</ANIMTIP_0>
101-
<ANIMTIP_1>TT:COCKPIT.TOOLTIPS.EFIS_PANEL_ADFSWITCH_OFF#INDEX#</ANIMTIP_1>
102-
<ANIMTIP_2>TT:COCKPIT.TOOLTIPS.EFIS_PANEL_ADFSWITCH_VOR#INDEX#</ANIMTIP_2>
103-
<ANIMTIP_0_ON_PERCENT>0</ANIMTIP_0_ON_PERCENT>
104-
<ANIMTIP_1_ON_PERCENT>.5</ANIMTIP_1_ON_PERCENT>
105-
<ANIMTIP_2_ON_PERCENT>1</ANIMTIP_2_ON_PERCENT>
106-
<ANIM_DURATION>0.5</ANIM_DURATION>
107-
</DefaultTemplateParameters>
108-
109-
<UseTemplate Name="FBW_AIRBUS_NAV_AID_SWITCH_SubTemplate">
110-
</UseTemplate>
111-
</Template>
112-
11343
<Template Name="FBW_AIRBUS_Push_TERRONND_Template">
11444
<DefaultTemplateParameters>
11545
<ID>1</ID>

0 commit comments

Comments
 (0)