From ec991e7b328a6bba8ea6834629b788b0185d98d6 Mon Sep 17 00:00:00 2001 From: Florian Gross <63071941+flogross89@users.noreply.github.com> Date: Sat, 6 Apr 2024 15:43:24 +0300 Subject: [PATCH] Add ROP/ROW aural alerts to A32NX --- fbw-a32nx/docs/a320-simvars.md | 2 +- .../html_ui/Pages/A32NX_Core/A32NX_FWC.js | 25 +++++++++++++++++++ .../systems/systems-host/systems/LegacyFwc.ts | 2 +- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/fbw-a32nx/docs/a320-simvars.md b/fbw-a32nx/docs/a320-simvars.md index 872e974e61be..aedd5ce91cd1 100644 --- a/fbw-a32nx/docs/a320-simvars.md +++ b/fbw-a32nx/docs/a320-simvars.md @@ -3867,7 +3867,7 @@ In the variables below, {number} should be replaced with one item in the set: { | 27 | TERRAIN AHEAD | - `A32NX_EGPWS_ALERT_{1 | 2}_DISCRETE_WORD_2` - - Data word for GPWS alerts. Used for displaying alerts on the PFD (on the A380) + - Data word for GPWS alerts. Used for displaying alerts on the PFD (on the A380) or on the GPWS visual indicators on the A320 - Arinc429 - | Bit | Description | |:---:|:----------------------------:| diff --git a/fbw-a32nx/src/base/flybywire-aircraft-a320-neo/html_ui/Pages/A32NX_Core/A32NX_FWC.js b/fbw-a32nx/src/base/flybywire-aircraft-a320-neo/html_ui/Pages/A32NX_Core/A32NX_FWC.js index 701f00e22941..efabe23a991a 100644 --- a/fbw-a32nx/src/base/flybywire-aircraft-a320-neo/html_ui/Pages/A32NX_Core/A32NX_FWC.js +++ b/fbw-a32nx/src/base/flybywire-aircraft-a320-neo/html_ui/Pages/A32NX_Core/A32NX_FWC.js @@ -67,6 +67,7 @@ class A32NX_FWC { this._updateTakeoffMemo(_deltaTime); this._updateLandingMemo(_deltaTime); this._updateAltitudeWarning(); + this.updateRowRopWarnings(); } _updateButtons(_deltaTime) { @@ -380,4 +381,28 @@ class A32NX_FWC { } return true; } + + updateRowRopWarnings() { + const w = Arinc429Word.fromSimVarValue('L:A32NX_ROW_ROP_WORD_1'); + + // ROW + SimVar.SetSimVarValue('L:A32NX_AUDIO_ROW_RWY_TOO_SHORT', 'bool', w.getBitValueOr(15, false)); + + // ROP + // MAX BRAKING, only for manual braking, if maximum pedal braking is not applied + const maxBrakingSet = SimVar.GetSimVarValue('L:A32NX_LEFT_BRAKE_PEDAL_INPUT', 'number') > 90 || SimVar.GetSimVarValue('L:A32NX_RIGHT_BRAKE_PEDAL_INPUT', 'number') > 90; + const maxBraking = w.getBitValueOr(13, false) && !maxBrakingSet; + SimVar.SetSimVarValue('L:A32NX_AUDIO_ROP_MAX_BRAKING', 'bool', maxBraking); + + // SET MAX REVERSE, if not already max. reverse set and !MAX_BRAKING + const maxReverseSet = SimVar.GetSimVarValue('L:XMLVAR_Throttle1Position', 'number') < 0.1 && SimVar.GetSimVarValue('L:XMLVAR_Throttle2Position', 'number') < 0.1; + const maxReverse = (w.getBitValueOr(12, false) || w.getBitValueOr(13, false)) && !maxReverseSet; + SimVar.SetSimVarValue('L:A32NX_AUDIO_ROW_SET_MAX_REVERSE', 'bool', !maxBraking && maxReverse); + + // At 80kt, KEEP MAX REVERSE once, if max. reversers deployed + const ias = SimVar.GetSimVarValue('AIRSPEED INDICATED', 'knots'); + SimVar.SetSimVarValue('L:A32NX_AUDIO_ROP_KEEP_MAX_REVERSE', 'bool', (ias <= 80 && ias > 4) && (w.getBitValueOr(12, false) || w.getBitValueOr(13, false))); + + + } } diff --git a/fbw-a380x/src/systems/systems-host/systems/LegacyFwc.ts b/fbw-a380x/src/systems/systems-host/systems/LegacyFwc.ts index 67467cb5fb3d..8462c987ea18 100644 --- a/fbw-a380x/src/systems/systems-host/systems/LegacyFwc.ts +++ b/fbw-a380x/src/systems/systems-host/systems/LegacyFwc.ts @@ -505,7 +505,7 @@ export class LegacyFwc { // SET MAX REVERSE, if not already max. reverse set and !MAX_BRAKING const maxReverseSet = SimVar.GetSimVarValue('L:XMLVAR_Throttle2Position', 'number') < 0.1 && SimVar.GetSimVarValue('L:XMLVAR_Throttle3Position', 'number') < 0.1; - const maxReverse = w.getBitValueOr(12, false) && !maxReverseSet; + const maxReverse = (w.getBitValueOr(12, false) || w.getBitValueOr(13, false)) && !maxReverseSet; SimVar.SetSimVarValue('L:A32NX_AUDIO_ROW_SET_MAX_REVERSE', 'bool', !maxBraking && maxReverse); // At 80kt, KEEP MAX REVERSE once, if max. reversers deployed