Skip to content

Commit 6341eae

Browse files
authored
fix(a380x/air cond): default start state of air cond system (flybywiresim#8563)
* feat: purs sel and temp knobs initial state * fix: airflow when no pax entered in fms
1 parent f25efa0 commit 6341eae

File tree

13 files changed

+174
-63
lines changed

13 files changed

+174
-63
lines changed

fbw-a380x/docs/a380-simvars.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@
9595

9696
- A380X_OVHD_ELEC_BAT_SELECTOR_KNOB
9797
- Number
98-
- The position of the battery display knob from left to right
98+
- The position of the battery display knob from left to right
9999
- ESS=0, APU=1, OFF=2, BAT1=3, BAT2=4
100100
- Mapped to battery voltage indexes: {bat_index} = ESS=4 | APU=3 | OFF=0 | BAT1=1 | BAT2=2
101101
- A32NX_ELEC_BAT_{bat_index}_POTENTIAL is used to get the voltage
@@ -140,6 +140,10 @@
140140
- {id}
141141
- Same as A32NX_COND_{id}_TEMP
142142

143+
- A32NX_COND_PURS_SEL_TEMPERATURE
144+
- Degree Celsius
145+
- Temperature selected by the crew using the FAP (Flight Attendant Panel). For us, this is selected in the EFB.
146+
143147
- A32NX_COND_PACK_{id}_IS_OPERATING
144148
- Bool
145149
- True when the pack operates normally (at least one FCV is open)

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/Climb.flt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,9 @@ A32NX_OVHD_CARGO_AIR_FWD_SELECTOR_KNOB=150
268268
A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
269269
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
270270
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
271-
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
272-
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
271+
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
272+
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
273+
A32NX_COND_PURS_SEL_TEMPERATURE=24
273274
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
274275
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
275276
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/approach.FLT

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,8 +308,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
308308
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
309309
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
310310
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
311-
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
312-
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
311+
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
312+
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
313+
A32NX_COND_PURS_SEL_TEMPERATURE=24
313314
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
314315
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
315316
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/apron.FLT

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
311311
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
312312
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
313313
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
314-
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
315-
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
314+
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
315+
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
316+
A32NX_COND_PURS_SEL_TEMPERATURE=24
316317
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
317318
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
318319
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/cruise.FLT

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
320320
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
321321
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
322322
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
323-
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
324-
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
323+
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
324+
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
325+
A32NX_COND_PURS_SEL_TEMPERATURE=24
325326
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
326327
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
327328
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/final.FLT

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,8 +319,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
319319
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
320320
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
321321
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
322-
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
323-
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
322+
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
323+
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
324+
A32NX_COND_PURS_SEL_TEMPERATURE=24
324325
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
325326
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
326327
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/hangar.flt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
310310
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
311311
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
312312
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
313-
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
314-
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
313+
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
314+
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
315+
A32NX_COND_PURS_SEL_TEMPERATURE=24
315316
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
316317
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
317318
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/A380_COCKPIT.xml

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4215,13 +4215,22 @@
42154215
<NODE_ID>KNOB_OVHD_AIRCOND_COCKPIT</NODE_ID>
42164216
<ANIM_SIMVAR_PREFIX>COND</ANIM_SIMVAR_PREFIX>
42174217
</UseTemplate>
4218-
<UseTemplate Name="FBW_AIRLINER_Aircond_Knob_Template">
4219-
<ID>CABIN</ID>
4220-
<ANIM_CODE>50</ANIM_CODE>
4221-
<ANIM_NAME>KNOB_OVHD_AIRCOND_FWDCABIN</ANIM_NAME>
4222-
<NODE_ID>KNOB_OVHD_AIRCOND_FWDCABIN</NODE_ID>
4223-
<ANIM_SIMVAR_PREFIX>COND</ANIM_SIMVAR_PREFIX>
4224-
</UseTemplate>
4218+
4219+
<Component ID="KNOB_OVHD_AIRCOND_FWDCABIN" Node="KNOB_OVHD_AIRCOND_FWDCABIN">
4220+
<UseTemplate Name="FBW_Continuous_Knob_Finite_From_Simvar">
4221+
<NODE_ID>KNOB_OVHD_AIRCOND_FWDCABIN</NODE_ID>
4222+
<ANIM_NAME>KNOB_OVHD_AIRCOND_FWDCABIN</ANIM_NAME>
4223+
<ANIM_SIMVAR>L:A32NX_OVHD_COND_CABIN_SELECTOR_KNOB</ANIM_SIMVAR>
4224+
<ANIM_SIMVAR_UNITS>number</ANIM_SIMVAR_UNITS>
4225+
<ANIM_SIMVAR_MIN>400</ANIM_SIMVAR_MIN>
4226+
<ANIM_SIMVAR_MAX>800</ANIM_SIMVAR_MAX>
4227+
<INFINITE_ROTATION>True</INFINITE_ROTATION>
4228+
<INCREMENT>s0 50 5 l0 400 % 0 == l0 400 % 350 == or ?</INCREMENT>
4229+
<DECREMENT>s0 50 5 l0 400 % 0 == l0 400 % 50 == or ?</DECREMENT>
4230+
<WHEEL_INCREMENT>s0 50 5 l0 400 % 0 == l0 400 % 350 == or ?</WHEEL_INCREMENT>
4231+
<WHEEL_DECREMENT>s0 50 5 l0 400 % 0 == l0 400 % 50 == or ?</WHEEL_DECREMENT>
4232+
</UseTemplate>
4233+
</Component>
42254234

42264235
<UseTemplate Name="ASOBO_GT_Switch_Dummy">
42274236
<Node_ID>KNOB_OVHD_AUDIOSWITCH</Node_ID>

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/model/behaviour/legacy/generated/A32NX_Interior_Generics.xml

Lines changed: 58 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,58 +18,91 @@
1818
- POTENTIOMETER <no default> The potentiometer index to increment
1919
-->
2020
<Template Name="FBW_Continuous_Knob_Finite_From_Simvar">
21-
<DefaultTemplateParameters>
21+
<Parameters Type="Default">
22+
<PART_ID>#NODE_ID#</PART_ID>
23+
<ANIM_NAME>#NODE_ID#</ANIM_NAME>
2224
<ANIM_SIMVAR_UNITS>percent</ANIM_SIMVAR_UNITS>
2325
<ANIM_SIMVAR_MIN>0</ANIM_SIMVAR_MIN>
2426
<ANIM_SIMVAR_MAX>100</ANIM_SIMVAR_MAX>
25-
<ANIM_NAME>#ANIM_NAME#</ANIM_NAME>
2627
<INCREMENT>1</INCREMENT>
2728
<WHEEL_INCREMENT>4</WHEEL_INCREMENT>
2829
<EXTRA_INTERACTION/>
2930
<ANIMREF_ID>0</ANIMREF_ID>
3031
<ANIMTIP_0_ON_CURSOR>TurnLeft</ANIMTIP_0_ON_CURSOR>
3132
<ANIMTIP_1_ON_CURSOR>TurnRight</ANIMTIP_1_ON_CURSOR>
32-
<ANIMTIP_0/>
33-
<ANIMTIP_1/>
33+
<ANIMTIP_0></ANIMTIP_0>
34+
<ANIMTIP_1></ANIMTIP_1>
3435
<ANIM_LAG>60</ANIM_LAG>
3536
<ANIM_WRAP>True</ANIM_WRAP>
36-
<ANIM_SCALE>100</ANIM_SCALE>
37-
</DefaultTemplateParameters>
37+
</Parameters>
38+
<Parameters Type="Default">
39+
<DECREMENT>#INCREMENT#</DECREMENT>
40+
<WHEEL_DECREMENT>#WHEEL_INCREMENT#</WHEEL_DECREMENT>
41+
<SET_CODE>(&gt;#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#)</SET_CODE>
42+
</Parameters>
3843

39-
<OverrideTemplateParameters>
44+
<Parameters Type="Override">
4045
<Condition Valid="POTENTIOMETER">
4146
<True>
4247
<ANIM_SIMVAR>#ANIM_SIMVAR#:#POTENTIOMETER#</ANIM_SIMVAR>
4348
<SET_CODE>#POTENTIOMETER# (&gt;K:2:LIGHT_POTENTIOMETER_SET)</SET_CODE>
4449
</True>
4550
</Condition>
46-
</OverrideTemplateParameters>
51+
</Parameters>
4752

4853
<UseTemplate Name="ASOBO_GT_Anim_Code">
4954
<ANIM_CODE>
50-
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - / #ANIM_SCALE# *
55+
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - / 100 *
5156
</ANIM_CODE>
5257
</UseTemplate>
5358

5459
<UseTemplate Name="FBW_Continuous_Knob_Finite_From_Simvar_Impl">
55-
<CLOCKWISE_CODE>
56-
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #INCREMENT# + #ANIM_SIMVAR_MAX# min #SET_CODE#
57-
</CLOCKWISE_CODE>
58-
<ANTICLOCKWISE_CODE>
59-
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #INCREMENT# - #ANIM_SIMVAR_MIN# max #SET_CODE#
60-
</ANTICLOCKWISE_CODE>
61-
62-
<!-- Provide the wheel code if we have WHEEL_INCREMENT -->
63-
<Condition Valid="WHEEL_INCREMENT">
60+
<!-- If we have INFINITE_ROTATION we allow the knob to rotate 3 times -->
61+
<Condition Valid="INFINITE_ROTATION">
6462
<True>
65-
<WHEEL_CLOCKWISE_CODE>
66-
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_INCREMENT# + #ANIM_SIMVAR_MAX# min #SET_CODE#
67-
</WHEEL_CLOCKWISE_CODE>
68-
69-
<WHEEL_ANTICLOCKWISE_CODE>
70-
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_INCREMENT# - #ANIM_SIMVAR_MIN# max #SET_CODE#
71-
</WHEEL_ANTICLOCKWISE_CODE>
63+
<CLOCKWISE_CODE>
64+
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #INCREMENT# + #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MAX# + min #SET_CODE#
65+
</CLOCKWISE_CODE>
66+
<ANTICLOCKWISE_CODE>
67+
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #DECREMENT# - #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MIN# - max #SET_CODE#
68+
</ANTICLOCKWISE_CODE>
69+
<Condition Valid="WHEEL_INCREMENT">
70+
<True>
71+
<WHEEL_CLOCKWISE_CODE>
72+
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_INCREMENT# + #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MAX# + min #SET_CODE#
73+
</WHEEL_CLOCKWISE_CODE>
74+
</True>
75+
</Condition>
76+
<Condition Valid="WHEEL_DECREMENT">
77+
<True>
78+
<WHEEL_ANTICLOCKWISE_CODE>
79+
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_DECREMENT# - #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MIN# - max #SET_CODE#
80+
</WHEEL_ANTICLOCKWISE_CODE>
81+
</True>
82+
</Condition>
7283
</True>
84+
<False>
85+
<CLOCKWISE_CODE>
86+
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #INCREMENT# + #ANIM_SIMVAR_MAX# min #SET_CODE#
87+
</CLOCKWISE_CODE>
88+
<ANTICLOCKWISE_CODE>
89+
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #DECREMENT# - #ANIM_SIMVAR_MIN# max #SET_CODE#
90+
</ANTICLOCKWISE_CODE>
91+
92+
<!-- Provide the wheel code if we have WHEEL_INCREMENT -->
93+
<Condition Valid="WHEEL_INCREMENT">
94+
<True>
95+
<WHEEL_CLOCKWISE_CODE>
96+
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_INCREMENT# + #ANIM_SIMVAR_MAX# min #SET_CODE#
97+
</WHEEL_CLOCKWISE_CODE>
98+
</True>
99+
</Condition>
100+
<Condition Valid="WHEEL_DECREMENT">
101+
<WHEEL_ANTICLOCKWISE_CODE>
102+
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_DECREMENT# - #ANIM_SIMVAR_MIN# max #SET_CODE#
103+
</WHEEL_ANTICLOCKWISE_CODE>
104+
</Condition>
105+
</False>
73106
</Condition>
74107
</UseTemplate>
75108

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/runway.FLT

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,8 +334,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
334334
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
335335
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
336336
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
337-
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
338-
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
337+
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
338+
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
339+
A32NX_COND_PURS_SEL_TEMPERATURE=24
339340
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
340341
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
341342
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1

fbw-a380x/src/base/flybywire-aircraft-a380-842/SimObjects/AirPlanes/FlyByWire_A380_842/taxi.flt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,9 @@ A32NX_OVHD_CARGO_AIR_FWD_SELECTOR_KNOB=150
318318
A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
319319
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
320320
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
321-
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
322-
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
321+
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
322+
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
323+
A32NX_COND_PURS_SEL_TEMPERATURE=24
323324
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
324325
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
325326
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1

fbw-a380x/src/wasm/systems/a380_systems/src/air_conditioning/cpiom_b.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,8 +368,14 @@ impl AirGenerationSystemApplication {
368368
acs_overhead.flow_selector_position(),
369369
OverheadFlowSelector::Norm
370370
) {
371-
// Minimum 40% flow to maintain temperature with zero pax
372-
(self.pax_number_fms as f64 / Self::A380_PASSENGER_FACTOR).max(0.4)
371+
if self.pax_number_fms == 0 {
372+
// If the number of passengers hasn't been entered in the FMS,
373+
// airflow is adjusted for the maximum number of passengers
374+
1.15
375+
} else {
376+
// Minimum 40% flow to maintain temperature with low pax
377+
(self.pax_number_fms as f64 / Self::A380_PASSENGER_FACTOR).max(0.4)
378+
}
373379
} else {
374380
1.
375381
};

0 commit comments

Comments
 (0)