Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(a380x-fire): fire protection system #8645

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions fbw-a32nx/src/wasm/systems/a320_systems/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ impl Aircraft for A320 {
self.apu.update_before_electrical(
context,
&self.apu_overhead,
false, // Todo: fire detection system
&self.apu_fire_overhead,
self.pneumatic_overhead.apu_bleed_is_on(),
// This will be replaced when integrating the whole electrical system.
Expand Down
86 changes: 86 additions & 0 deletions fbw-a380x/docs/a380-simvars.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
- [Uncategorized](#uncategorized)
- [Air Conditioning / Pressurisation / Ventilation ATA21](#air-conditioning-pressurisation-ventilation-ata-21)
- [Electrical ATA 24](#electrical-ata-24)
- [Fire and Smoke Protection ATA 26](#fire-and-smoke-protection-ata-26)
- [Flaps / Slats (ATA 27)](#flaps--slats-ata-27)
- [Indicating/Recording ATA 31](#indicating-recording-ata-31)
- [ECAM Control Panel ATA 31](#ecam-control-panel-ata-31)
Expand Down Expand Up @@ -503,6 +504,90 @@
- 3
- 4

## Fire and Smoke Protection ATA 26

- A32NX_{zone}_ON_FIRE
- Bool
- True when a fire is present in the APU or MLG
- {zone}
- APU
- MLG


- A32NX_FIRE_DETECTED_ENG{number}
- Bool
- True when fire is detected on engine
- {number}
- 1
- 2
- 3
- 4

- A32NX_FIRE_DETECTED_{zone}
- Bool
- True when fire is detected in the APU or MLG
- {zone}
- APU
- MLG

- A32NX_OVHD_FIRE_AGENT_{bottle}_{zone}_{number}_IS_PRESSED
- Bool
- True when the overhead pushbutton for the corresponding fire extinguishing bottle agent is pressed. Momentary PB. Note APU uses 1_APU_1
- {bottle}
- 1
- 2
- {zone}
- APU
- ENG
- {number}
- 1
- 2
- 3
- 4

- A32NX_OVHD_FIRE_SQUIB_{bottle}_{zone}_{number}_IS_ARMED
- Bool
- True when the the corresponding fire extinguishing bottle squibs are armed.
- {bottle}
- 1
- 2
- {zone}
- APU
- ENG
- {number}
- 1
- 2
- 3
- 4

- A32NX_OVHD_FIRE_SQUIB_{bottle}_{zone}_{number}_IS_DISCHARGED
- Bool
- True when the the corresponding fire extinguishing bottle has been discharged into the engine.
- {bottle}
- 1
- 2
- {zone}
- APU
- ENG
- {number}
- 1
- 2
- 3
- 4

- A32NX_FIRE_BUTTON_ENG{number}
- Bool
- True when the overhead fire pushbutton has been released

- A32NX_FIRE_BUTTON_APU
- Bool
- True when the overhead apu pushbutton has been released

- A32NX_FIRE_TEST_ENG1
- Bool
- True when the overhead fire test pushbutton is pressed


## Flaps / Slats (ATA 27)

- A32NX_SFCC_SLAT_FLAP_ACTUAL_POSITION_WORD
Expand Down Expand Up @@ -531,6 +616,7 @@
| 28 | Slat System Jam |
| 29 | Flap System Jam |


## Indicating-Recording ATA 31

- A32NX_CDS_CAN_BUS_1_1_AVAIL
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4008,8 +4008,10 @@
<DefaultTemplateParameters>
<TYPE>ENG</TYPE>
<ID>1</ID>
<BUTTON_ID>ENG1</BUTTON_ID>
</DefaultTemplateParameters>

<!-- Only one fire test pushbutton on the overhead panel -->
<UseTemplate Name="FBW_Airbus_FIRE_TEST_BUTTON">
<NODE_ID>PUSH_FIRE_ENG1_TEST</NODE_ID>
<PART_ID>Fire_test_eng1</PART_ID>
Expand Down Expand Up @@ -4038,8 +4040,8 @@
<SEQ2_POWERED>(L:A32NX_ELEC_AC_ESS_SHED_BUS_IS_POWERED, Bool)</SEQ2_POWERED>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_GUARD">
<NODE_ID>LOCK_OVHD_ENG1</NODE_ID>
<PART_ID>LOCK_OVHD_ENG1</PART_ID>
<NODE_ID>A380X_OVHD_ENG1_FIRE_GUARD</NODE_ID>
<PART_ID>A380X_OVHD_ENG1_FIRE_GUARD</PART_ID>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_BUTTON">
<NODE_ID>PUSH_OVHD_FIRE_ENG1</NODE_ID>
Expand All @@ -4062,12 +4064,9 @@
<DefaultTemplateParameters>
<TYPE>ENG</TYPE>
<ID>2</ID>
<BUTTON_ID>ENG2</BUTTON_ID>
</DefaultTemplateParameters>

<UseTemplate Name="FBW_Airbus_FIRE_TEST_BUTTON">
<NODE_ID>PUSH_FIRE_ENG2_TEST</NODE_ID>
<PART_ID>Fire_test_eng1</PART_ID>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_AGENT">
<NODE_ID>PUSH_OVHD_FIRE_ENG2_AGENT1</NODE_ID>
<PART_ID>FIRE_ENG2_AGENT1</PART_ID>
Expand All @@ -4092,8 +4091,8 @@
<SEQ2_POWERED>(L:A32NX_ELEC_AC_ESS_SHED_BUS_IS_POWERED, Bool)</SEQ2_POWERED>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_GUARD">
<NODE_ID>LOCK_OVHD_ENG2</NODE_ID>
<PART_ID>LOCK_OVHD_ENG2</PART_ID>
<NODE_ID>A380X_OVHD_ENG2_FIRE_GUARD</NODE_ID>
<PART_ID>A380X_OVHD_ENG2_FIRE_GUARD</PART_ID>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_BUTTON">
<NODE_ID>PUSH_OVHD_FIRE_ENG2</NODE_ID>
Expand All @@ -4116,12 +4115,9 @@
<DefaultTemplateParameters>
<TYPE>ENG</TYPE>
<ID>3</ID>
<BUTTON_ID>ENG3</BUTTON_ID>
</DefaultTemplateParameters>

<UseTemplate Name="FBW_Airbus_FIRE_TEST_BUTTON">
<NODE_ID>PUSH_FIRE_ENG_TEST</NODE_ID>
<PART_ID>Fire_test_eng1</PART_ID>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_AGENT">
<NODE_ID>PUSH_OVHD_FIRE_ENG3_AGENT1</NODE_ID>
<PART_ID>FIRE_ENG3_AGENT1</PART_ID>
Expand All @@ -4146,8 +4142,8 @@
<SEQ2_POWERED>(L:A32NX_ELEC_AC_ESS_SHED_BUS_IS_POWERED, Bool)</SEQ2_POWERED>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_GUARD">
<NODE_ID>LOCK_OVHD_ENG3</NODE_ID>
<PART_ID>LOCK_OVHD_ENG3</PART_ID>
<NODE_ID>A380X_OVHD_ENG3_FIRE_GUARD</NODE_ID>
<PART_ID>A380X_OVHD_ENG3_FIRE_GUARD</PART_ID>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_BUTTON">
<NODE_ID>PUSH_OVHD_FIRE_ENG3</NODE_ID>
Expand All @@ -4170,12 +4166,9 @@
<DefaultTemplateParameters>
<TYPE>ENG</TYPE>
<ID>4</ID>
<BUTTON_ID>ENG4</BUTTON_ID>
</DefaultTemplateParameters>

<UseTemplate Name="FBW_Airbus_FIRE_TEST_BUTTON">
<NODE_ID>PUSH_FIRE_ENG_TEST</NODE_ID>
<PART_ID>Fire_test_eng1</PART_ID>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_AGENT">
<NODE_ID>PUSH_OVHD_FIRE_ENG4_AGENT1</NODE_ID>
<PART_ID>FIRE_ENG4_AGENT1</PART_ID>
Expand All @@ -4200,8 +4193,8 @@
<SEQ2_POWERED>(L:A32NX_ELEC_AC_ESS_SHED_BUS_IS_POWERED, Bool)</SEQ2_POWERED>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_GUARD">
<NODE_ID>LOCK_OVHD_ENG4</NODE_ID>
<PART_ID>LOCK_OVHD_ENG4</PART_ID>
<NODE_ID>A380X_OVHD_ENG4_FIRE_GUARD</NODE_ID>
<PART_ID>A380X_OVHD_ENG4_FIRE_GUARD</PART_ID>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_BUTTON">
<NODE_ID>PUSH_OVHD_FIRE_ENG4</NODE_ID>
Expand All @@ -4224,6 +4217,7 @@
<DefaultTemplateParameters>
<TYPE>APU</TYPE>
<ID>1</ID>
<BUTTON_ID>APU</BUTTON_ID>
</DefaultTemplateParameters>

<UseTemplate Name="FBW_Airbus_FIRE_TEST_BUTTON">
Expand Down Expand Up @@ -4255,8 +4249,8 @@
(L:A32NX_ELEC_AC_1_BUS_IS_POWERED, Bool) or</EMISSIVE_POWERED>
</UseTemplate>
<UseTemplate Name="FBW_Airbus_FIRE_GUARD">
<NODE_ID>LOCK_OVHD_APU</NODE_ID>
<PART_ID>LOCK_OVHD_APU</PART_ID>
<NODE_ID>A380X_OVHD_APU_FIRE_GUARD</NODE_ID>
<PART_ID>A380X_OVHD_APU_FIRE_GUARD</PART_ID>
</UseTemplate>
</Component>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@
<Template Name="FBW_Airbus_Engine_Lights">
<UseTemplate Name="FBW_Push_Toggle">
<DUMMY_BUTTON>True</DUMMY_BUTTON>
<SEQ1_CODE>(L:A32NX_FIRE_TEST_ENG#ID#, bool)</SEQ1_CODE>
<SEQ1_CODE>(L:A32NX_FIRE_DETECTED_ENG#ID#, Bool)</SEQ1_CODE>
<SEQ2_CODE>(A:ENG FAILED:#ID#, bool)</SEQ2_CODE>
</UseTemplate>
</Template>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,12 @@

<Template Name="FBW_Airbus_FIRE_AGENT">
<UseTemplate Name="FBW_Push_Toggle">
<SEQ1_CODE>(L:A32NX_FIRE_TEST_#TYPE##ID#, Bool) (L:A32NX_FIRE_BUTTON_#TYPE##ID#, Bool) or</SEQ1_CODE>
<SEQ2_CODE>(L:A32NX_FIRE_TEST_#TYPE##ID#, Bool) (L:A32NX_FIRE_#TYPE##ID#_AGENT#AGENT_ID#_Discharge) or</SEQ2_CODE>
<LEFT_SINGLE_CODE>
(L:A32NX_FIRE_BUTTON_#TYPE##ID#, Bool) if{
1 (&gt;L:A32NX_FIRE_#TYPE##ID#_AGENT#AGENT_ID#_Discharge)
}
</LEFT_SINGLE_CODE>

<SEQ1_CODE>(L:A32NX_FIRE_SQUIB_#AGENT_ID#_#TYPE#_#ID#_IS_ARMED, Bool)</SEQ1_CODE>
<SEQ2_CODE>(L:A32NX_FIRE_SQUIB_#AGENT_ID#_#TYPE#_#ID#_IS_DISCHARGED, Bool)</SEQ2_CODE>
<LEFT_SINGLE_CODE>1
(&gt;L:A32NX_OVHD_FIRE_AGENT_#AGENT_ID#_#TYPE#_#ID#_IS_PRESSED)</LEFT_SINGLE_CODE>
<LEFT_LEAVE_CODE>0
(&gt;L:A32NX_OVHD_FIRE_AGENT_#AGENT_ID#_#TYPE#_#ID#_IS_PRESSED)</LEFT_LEAVE_CODE>
<MOMENTARY/>
</UseTemplate>
</Template>
Expand All @@ -49,7 +47,7 @@
<LEFT_LEAVE_CODE/>
<LEFT_SINGLE_CODE/>
<ANIM_DURATION>0.3</ANIM_DURATION>
<TOGGLE_VAR>L:A32NX_FIRE_BUTTON_#TYPE##ID#</TOGGLE_VAR>
<TOGGLE_VAR>L:A32NX_FIRE_BUTTON_#BUTTON_ID#</TOGGLE_VAR>
<EMISSIVE_POWERED>1</EMISSIVE_POWERED>
</DefaultTemplateParameters>
<Component ID="#NODE_ID#" Node="#NODE_ID#">
Expand All @@ -75,7 +73,7 @@
</UseTemplate>

<UseTemplate Name="ASOBO_GT_Component_Emissive_Gauge">
<EMISSIVE_CODE>(L:A32NX_FIRE_TEST_#TYPE##ID#, Bool) (A:ENG ON FIRE:#ID#, Bool) 1 == or (L:A32NX_OVHD_INTLT_ANN) 0 == or #EMISSIVE_POWERED# and</EMISSIVE_CODE>
<EMISSIVE_CODE>(L:A32NX_FIRE_DETECTED_#BUTTON_ID#, Bool) 1 == (L:A32NX_OVHD_INTLT_ANN) 0 == or #EMISSIVE_POWERED# and</EMISSIVE_CODE>
</UseTemplate>

<UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_Leave_Code">
Expand Down Expand Up @@ -130,7 +128,7 @@

<UseTemplate Name="ASOBO_GT_Interaction_LeftSingle_Leave_Code">
<LEFT_SINGLE_CODE>
(L:A32NX_FIRE_BUTTON_#TYPE##ID#) 0 == if{
(L:A32NX_FIRE_BUTTON_#BUTTON_ID#) 0 == if{
(#TOGGLE_VAR#) ! (&gt;#TOGGLE_VAR#)
} #LEFT_SINGLE_CODE#
</LEFT_SINGLE_CODE>
Expand Down
Loading