Skip to content

Commit

Permalink
fix(a380x/air cond): default start state of air cond system (#8563)
Browse files Browse the repository at this point in the history
* feat: purs sel and temp knobs initial state

* fix: airflow when no pax entered in fms
  • Loading branch information
mjuhe authored Mar 16, 2024
1 parent f25efa0 commit 6341eae
Show file tree
Hide file tree
Showing 13 changed files with 174 additions and 63 deletions.
6 changes: 5 additions & 1 deletion fbw-a380x/docs/a380-simvars.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@

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

- A32NX_COND_PURS_SEL_TEMPERATURE
- Degree Celsius
- Temperature selected by the crew using the FAP (Flight Attendant Panel). For us, this is selected in the EFB.

- A32NX_COND_PACK_{id}_IS_OPERATING
- Bool
- True when the pack operates normally (at least one FCV is open)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -268,8 +268,9 @@ A32NX_OVHD_CARGO_AIR_FWD_SELECTOR_KNOB=150
A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
A32NX_COND_PURS_SEL_TEMPERATURE=24
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -308,8 +308,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
A32NX_COND_PURS_SEL_TEMPERATURE=24
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -311,8 +311,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
A32NX_COND_PURS_SEL_TEMPERATURE=24
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,8 +320,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
A32NX_COND_PURS_SEL_TEMPERATURE=24
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,8 +319,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
A32NX_COND_PURS_SEL_TEMPERATURE=24
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
A32NX_COND_PURS_SEL_TEMPERATURE=24
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4215,13 +4215,22 @@
<NODE_ID>KNOB_OVHD_AIRCOND_COCKPIT</NODE_ID>
<ANIM_SIMVAR_PREFIX>COND</ANIM_SIMVAR_PREFIX>
</UseTemplate>
<UseTemplate Name="FBW_AIRLINER_Aircond_Knob_Template">
<ID>CABIN</ID>
<ANIM_CODE>50</ANIM_CODE>
<ANIM_NAME>KNOB_OVHD_AIRCOND_FWDCABIN</ANIM_NAME>
<NODE_ID>KNOB_OVHD_AIRCOND_FWDCABIN</NODE_ID>
<ANIM_SIMVAR_PREFIX>COND</ANIM_SIMVAR_PREFIX>
</UseTemplate>

<Component ID="KNOB_OVHD_AIRCOND_FWDCABIN" Node="KNOB_OVHD_AIRCOND_FWDCABIN">
<UseTemplate Name="FBW_Continuous_Knob_Finite_From_Simvar">
<NODE_ID>KNOB_OVHD_AIRCOND_FWDCABIN</NODE_ID>
<ANIM_NAME>KNOB_OVHD_AIRCOND_FWDCABIN</ANIM_NAME>
<ANIM_SIMVAR>L:A32NX_OVHD_COND_CABIN_SELECTOR_KNOB</ANIM_SIMVAR>
<ANIM_SIMVAR_UNITS>number</ANIM_SIMVAR_UNITS>
<ANIM_SIMVAR_MIN>400</ANIM_SIMVAR_MIN>
<ANIM_SIMVAR_MAX>800</ANIM_SIMVAR_MAX>
<INFINITE_ROTATION>True</INFINITE_ROTATION>
<INCREMENT>s0 50 5 l0 400 % 0 == l0 400 % 350 == or ?</INCREMENT>
<DECREMENT>s0 50 5 l0 400 % 0 == l0 400 % 50 == or ?</DECREMENT>
<WHEEL_INCREMENT>s0 50 5 l0 400 % 0 == l0 400 % 350 == or ?</WHEEL_INCREMENT>
<WHEEL_DECREMENT>s0 50 5 l0 400 % 0 == l0 400 % 50 == or ?</WHEEL_DECREMENT>
</UseTemplate>
</Component>

<UseTemplate Name="ASOBO_GT_Switch_Dummy">
<Node_ID>KNOB_OVHD_AUDIOSWITCH</Node_ID>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,58 +18,91 @@
- POTENTIOMETER <no default> The potentiometer index to increment
-->
<Template Name="FBW_Continuous_Knob_Finite_From_Simvar">
<DefaultTemplateParameters>
<Parameters Type="Default">
<PART_ID>#NODE_ID#</PART_ID>
<ANIM_NAME>#NODE_ID#</ANIM_NAME>
<ANIM_SIMVAR_UNITS>percent</ANIM_SIMVAR_UNITS>
<ANIM_SIMVAR_MIN>0</ANIM_SIMVAR_MIN>
<ANIM_SIMVAR_MAX>100</ANIM_SIMVAR_MAX>
<ANIM_NAME>#ANIM_NAME#</ANIM_NAME>
<INCREMENT>1</INCREMENT>
<WHEEL_INCREMENT>4</WHEEL_INCREMENT>
<EXTRA_INTERACTION/>
<ANIMREF_ID>0</ANIMREF_ID>
<ANIMTIP_0_ON_CURSOR>TurnLeft</ANIMTIP_0_ON_CURSOR>
<ANIMTIP_1_ON_CURSOR>TurnRight</ANIMTIP_1_ON_CURSOR>
<ANIMTIP_0/>
<ANIMTIP_1/>
<ANIMTIP_0></ANIMTIP_0>
<ANIMTIP_1></ANIMTIP_1>
<ANIM_LAG>60</ANIM_LAG>
<ANIM_WRAP>True</ANIM_WRAP>
<ANIM_SCALE>100</ANIM_SCALE>
</DefaultTemplateParameters>
</Parameters>
<Parameters Type="Default">
<DECREMENT>#INCREMENT#</DECREMENT>
<WHEEL_DECREMENT>#WHEEL_INCREMENT#</WHEEL_DECREMENT>
<SET_CODE>(&gt;#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#)</SET_CODE>
</Parameters>

<OverrideTemplateParameters>
<Parameters Type="Override">
<Condition Valid="POTENTIOMETER">
<True>
<ANIM_SIMVAR>#ANIM_SIMVAR#:#POTENTIOMETER#</ANIM_SIMVAR>
<SET_CODE>#POTENTIOMETER# (&gt;K:2:LIGHT_POTENTIOMETER_SET)</SET_CODE>
</True>
</Condition>
</OverrideTemplateParameters>
</Parameters>

<UseTemplate Name="ASOBO_GT_Anim_Code">
<ANIM_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - / #ANIM_SCALE# *
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - / 100 *
</ANIM_CODE>
</UseTemplate>

<UseTemplate Name="FBW_Continuous_Knob_Finite_From_Simvar_Impl">
<CLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #INCREMENT# + #ANIM_SIMVAR_MAX# min #SET_CODE#
</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #INCREMENT# - #ANIM_SIMVAR_MIN# max #SET_CODE#
</ANTICLOCKWISE_CODE>

<!-- Provide the wheel code if we have WHEEL_INCREMENT -->
<Condition Valid="WHEEL_INCREMENT">
<!-- If we have INFINITE_ROTATION we allow the knob to rotate 3 times -->
<Condition Valid="INFINITE_ROTATION">
<True>
<WHEEL_CLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_INCREMENT# + #ANIM_SIMVAR_MAX# min #SET_CODE#
</WHEEL_CLOCKWISE_CODE>

<WHEEL_ANTICLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_INCREMENT# - #ANIM_SIMVAR_MIN# max #SET_CODE#
</WHEEL_ANTICLOCKWISE_CODE>
<CLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #INCREMENT# + #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MAX# + min #SET_CODE#
</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #DECREMENT# - #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MIN# - max #SET_CODE#
</ANTICLOCKWISE_CODE>
<Condition Valid="WHEEL_INCREMENT">
<True>
<WHEEL_CLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_INCREMENT# + #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MAX# + min #SET_CODE#
</WHEEL_CLOCKWISE_CODE>
</True>
</Condition>
<Condition Valid="WHEEL_DECREMENT">
<True>
<WHEEL_ANTICLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_DECREMENT# - #ANIM_SIMVAR_MAX# #ANIM_SIMVAR_MIN# - #ANIM_SIMVAR_MIN# - max #SET_CODE#
</WHEEL_ANTICLOCKWISE_CODE>
</True>
</Condition>
</True>
<False>
<CLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #INCREMENT# + #ANIM_SIMVAR_MAX# min #SET_CODE#
</CLOCKWISE_CODE>
<ANTICLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #DECREMENT# - #ANIM_SIMVAR_MIN# max #SET_CODE#
</ANTICLOCKWISE_CODE>

<!-- Provide the wheel code if we have WHEEL_INCREMENT -->
<Condition Valid="WHEEL_INCREMENT">
<True>
<WHEEL_CLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_INCREMENT# + #ANIM_SIMVAR_MAX# min #SET_CODE#
</WHEEL_CLOCKWISE_CODE>
</True>
</Condition>
<Condition Valid="WHEEL_DECREMENT">
<WHEEL_ANTICLOCKWISE_CODE>
(#ANIM_SIMVAR#, #ANIM_SIMVAR_UNITS#) #WHEEL_DECREMENT# - #ANIM_SIMVAR_MIN# max #SET_CODE#
</WHEEL_ANTICLOCKWISE_CODE>
</Condition>
</False>
</Condition>
</UseTemplate>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -334,8 +334,9 @@ A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
A32NX_OVHD_COCKPITDOORVIDEO_TOGGLE=1
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
A32NX_COND_PURS_SEL_TEMPERATURE=24
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,8 +318,9 @@ A32NX_OVHD_CARGO_AIR_FWD_SELECTOR_KNOB=150
A32NX_OVHD_CARGO_AIR_HEATER_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_BULK_PB_IS_ON=1
A32NX_OVHD_CARGO_AIR_ISOL_VALVES_FWD_PB_IS_ON=1
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=150
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=150
A32NX_OVHD_COND_CABIN_SELECTOR_KNOB=400
A32NX_OVHD_COND_CKPT_SELECTOR_KNOB=75
A32NX_COND_PURS_SEL_TEMPERATURE=24
A32NX_OVHD_COND_HOT_AIR_1_PB_IS_ON=1
A32NX_OVHD_COND_HOT_AIR_2_PB_IS_ON=1
A32NX_OVHD_COND_PACK_1_PB_IS_ON=1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -368,8 +368,14 @@ impl AirGenerationSystemApplication {
acs_overhead.flow_selector_position(),
OverheadFlowSelector::Norm
) {
// Minimum 40% flow to maintain temperature with zero pax
(self.pax_number_fms as f64 / Self::A380_PASSENGER_FACTOR).max(0.4)
if self.pax_number_fms == 0 {
// If the number of passengers hasn't been entered in the FMS,
// airflow is adjusted for the maximum number of passengers
1.15
} else {
// Minimum 40% flow to maintain temperature with low pax
(self.pax_number_fms as f64 / Self::A380_PASSENGER_FACTOR).max(0.4)
}
} else {
1.
};
Expand Down
Loading

0 comments on commit 6341eae

Please sign in to comment.