diff --git a/Nasal/ECAM/ECAM-controller.nas b/Nasal/ECAM/ECAM-controller.nas
index aedf2937..d43f5947 100644
--- a/Nasal/ECAM/ECAM-controller.nas
+++ b/Nasal/ECAM/ECAM-controller.nas
@@ -98,6 +98,8 @@ var warningNodes = {
phase5Trans: props.globals.initNode("/ECAM/warnings/logic/eng/phase-5-output"),
eng1Shutdown: props.globals.initNode("/ECAM/warnings/logic/eng/eng-1-shutdown"),
eng2Shutdown: props.globals.initNode("/ECAM/warnings/logic/eng/eng-2-shutdown"),
+ acEssBusAltn: props.globals.initNode("/ECAM/warnings/logic/ac-ess-bus-altn-feed"),
+ spdBrkOut: props.globals.initNode("/ECAM/warnings/fctl/spd-brk-still-out"),
},
Timers: {
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),
diff --git a/Nasal/ECAM/ECAM-logic.nas b/Nasal/ECAM/ECAM-logic.nas
index 066a7c91..99c3478c 100644
--- a/Nasal/ECAM/ECAM-logic.nas
+++ b/Nasal/ECAM/ECAM-logic.nas
@@ -1915,6 +1915,7 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(acBusEssShedAtc);
}
+ # GEN 1 FAULT
if (gen1fault.clearFlag == 0 and warningNodes.Flipflops.gen1Fault.getValue() and (phaseVar2 == 2 or phaseVar2 == 3 or phaseVar2 == 6 or phaseVar2 == 9)) {
gen1fault.active = 1;
if (!warningNodes.Flipflops.gen1FaultOnOff.getValue()) {
@@ -1981,6 +1982,14 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(apuGenfaultGen3);
}
+ # ELEC AC ESS BUS ALTN
+ if (acEssBusAltn.clearFlag == 0 and warningNodes.Logic.acEssBusAltn.getValue() and (phaseVar2 >= 9 or phaseVar2 <= 2)) {
+ acEssBusAltn.active = 1;
+ } else {
+ ECAM_controller.warningReset(acEssBusAltn);
+ }
+
+ # L ELEV FAULT
if (lElevFault.clearFlag == 0 and warningNodes.Timers.leftElevFail.getValue() and phaseVar2 != 4 and phaseVar2 != 5) {
lElevFault.active = 1;
if (lElevFaultCare.clearFlag == 0) {
@@ -2017,6 +2026,12 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(rElevFaultPitch);
}
+ if (fctlSpdBrkStillOut.clearFlag == 0 and warningNodes.Logic.spdBrkOut.getValue() and (phaseVar2 == 6 or phaseVar2 == 7)) {
+ fctlSpdBrkStillOut.active = 1;
+ } else {
+ ECAM_controller.warningReset(fctlSpdBrkStillOut);
+ }
+
if (directLaw.clearFlag == 0 and warningNodes.Timers.directLaw.getValue() and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
directLaw.active = 1;
directLawProt.active = 1;
diff --git a/Nasal/ECAM/ECAM-messages.nas b/Nasal/ECAM/ECAM-messages.nas
index 247f78a9..f0fc3232 100644
--- a/Nasal/ECAM/ECAM-messages.nas
+++ b/Nasal/ECAM/ECAM-messages.nas
@@ -342,6 +342,39 @@ var warnings = std.Vector.new([
var satAbvFlexTemp = warning.new(msg: "ENG SAT ABOVE FLEX TEMP", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var satAbvFlexTempCheck = warning.new(msg: " -T.O DATA.........CHECK", colour: "c"),
+ # B RSVR LO LVL
+ var hydBSysLoLvl = warning.new(msg: "HYD B RSVR LO LVL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+ var hydBSysLoLvlPump = warning.new(msg: " -BLUE ELEC PUMP.....OFF ", colour: "c"),
+
+ # G RSVR LO LVL
+ var hydGSysLoLvl = warning.new(msg: "HYD G RSVR LO LVL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+ var hydGSysLoLvlPtu = warning.new(msg: " -PTU................OFF ", colour: "c"),
+ var hydGSysLoLvlPump = warning.new(msg: " -GREEN ENG 1 PUMP...OFF ", colour: "c"),
+
+ # Y RSVR LO LVL
+ var hydYSysLoLvl = warning.new(msg: "HYD Y RSVR LO LVL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+ var hydYSysLoLvlPtu = warning.new(msg: " -PTU................OFF ", colour: "c"),
+ var hydYSysLoLvlPump = warning.new(msg: " -YELLOW ENG 2 PUMP..OFF ", colour: "c"),
+ var hydYSysLoLvlElec = warning.new(msg: " -YELLOW ELEC PUMP...OFF ", colour: "c"),
+
+ # B SYS LO PR
+ var hydBSysLoPr = warning.new(msg: "HYD B SYS LO PR ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+ var hydBSysLoPrFuel = warning.new(msg: " FUEL CONSUMPT INCRSD ", colour: "c"),
+ var hydBSysLoPrFmsPred = warning.new(msg: " FMS PRED UNRELIABLE ", colour: "c"),
+
+ # G SYS LO PR
+ var hydGSysLoPr = warning.new(msg: "HYD G SYS LO PR ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+ var hydGSysLoPrFuel = warning.new(msg: " FUEL CONSUMPT INCRSD ", colour: "c"),
+ var hydGSysLoPrFmsPred = warning.new(msg: " FMS PRED UNRELIABLE ", colour: "c"),
+ var hydGSysLoPrEngPump = warning.new(msg: " G ENG 1 PUMP LO PR ", colour: "a"),
+
+ # Y SYS LO PR
+ var hydYSysLoPr = warning.new(msg: "HYD Y SYS LO PR ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+ var hydYSysLoPrAccu = warning.new(msg: " BRK Y ACCU PR MONITOR ", colour: "c"),
+ var hydYSysLoPrFuel = warning.new(msg: " FUEL CONSUMPT INCRSD ", colour: "c"),
+ var hydYSysLoPrFmsPred = warning.new(msg: " FMS PRED UNRELIABLE ", colour: "c"),
+ var hydYSysLoPrEngPump = warning.new(msg: " Y ENG 2 PUMP LO PR ", colour: "a"),
+
# DC EMER CONFIG
var dcEmerconfig = warning.new(msg: "ELEC DC EMER CONFIG", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcEmerconfigManOn = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
@@ -408,6 +441,12 @@ var warnings = std.Vector.new([
var acBusEssShed = warning.new(msg: "ELEC AC ESS BUS SHED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var acBusEssShedAtc = warning.new(msg: " -ATC..............SYS 2", colour: "c"),
+ # IDG 1 DISCONNECTED
+ var idg1Disc = warning.new(msg: "ELEC IDG 1 DISCONNECTED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+
+ # IDG 2 DISCONNECTED
+ var idg2Disc = warning.new(msg: "ELEC IDG 2 DISCONNECTED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+
# GEN 1 FAULT
var gen1fault = warning.new(msg: "ELEC GEN 1 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var gen1faultGen = warning.new(msg: "-GEN 1......OFF THEN ON", colour: "c"),
@@ -426,6 +465,9 @@ var warnings = std.Vector.new([
var apuGenfaultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
var apuGenfaultGen3 = warning.new(msg: "-APU GEN............OFF", colour: "c"),
+ # APU GEN FAULT
+ var acEssBusAltn = warning.new(msg: "ELEC AC ESS BUS ALTN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+
# L ELEV FAULT
var lElevFault = warning.new(msg: "F/CTL L ELEV FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var lElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
@@ -436,6 +478,9 @@ var warnings = std.Vector.new([
var rElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
var rElevFaultPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
+ # F/CTL SPD BRK STILL OUT
+ var fctlSpdBrkStillOut = warning.new(msg: "F/CTL SPD BRK STILL OUT ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
+
# DIRECT LAW
var directLaw = warning.new(msg: "F/CTL DIRECT LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var directLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
diff --git a/Systems/a320-fwc.xml b/Systems/a320-fwc.xml
index 6e43357b..f2fb337f 100644
--- a/Systems/a320-fwc.xml
+++ b/Systems/a320-fwc.xml
@@ -2025,6 +2025,31 @@
120
0.5
+
+
+
+
+ /systems/electrical/bus/ac-1 ge 110
+ /controls/electrical/switches/ac-ess-feed eq 0
+ /systems/electrical/relay/ac-ess-feed-2/output ge 110
+
+
+
+
+ /ECAM/warnings/logic/ac-ess-bus-altn-feed-input
+ 120
+ 2
+
+
+
+
+
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+ /systems/electrical/bus/ac-ess ge 25
+ /ECAM/warnings/logic/ac-ess-bus-altn-feed-output eq 1
+
+
+
@@ -3166,6 +3191,84 @@
+
+
+
+ /controls/flight/speedbrake gt 0.0
+
+
+
+
+ /ECAM/warnings/fctl/spd-brk-still-out-50-seconds-input
+ 120
+ 0.02
+
+
+
+
+
+ /ECAM/warnings/fctl/spd-brk-still-out-50-seconds eq 1
+ /engines/both-at-idle eq 1
+
+
+
+
+ /ECAM/warnings/fctl/spd-brk-still-out-10-seconds-input
+ 120
+ 0.1
+
+
+
+
+
+ /ECAM/warning-phase eq 6
+ /ECAM/warnings/fctl/spd-brk-still-out-50-seconds eq 1
+ /ECAM/warnings/fctl/spd-brk-still-out-10-seconds eq 0
+
+
+
+
+ /ECAM/warnings/fctl/spd-brk-still-out-1-input
+ 120
+ 0.03333333333
+
+
+
+
+
+ /ECAM/warning-phase eq 7
+ /controls/flight/speedbrake gt 0.0
+
+
+
+
+ /ECAM/warnings/fctl/spd-brk-still-out-2-input
+ 120
+ 0.2
+
+
+
+
+
+
+
+
+
+
+ /ECAM/warnings/fctl/spd-brk-still-out-1 eq 1
+ /ECAM/warnings/fctl/spd-brk-still-out-2 eq 1
+
+
+
+