diff --git a/Nasal/ECAM/ECAM-controller.nas b/Nasal/ECAM/ECAM-controller.nas
index d5d82df3..aedf2937 100644
--- a/Nasal/ECAM/ECAM-controller.nas
+++ b/Nasal/ECAM/ECAM-controller.nas
@@ -87,6 +87,8 @@ var warningNodes = {
spdBrkConfig2: props.globals.initNode("/ECAM/warnings/fctl/spd-brk-config-range"),
pitchTrimConfig2: props.globals.initNode("/ECAM/warnings/fctl/pitch-trim-config-range"),
rudTrimConfig2: props.globals.initNode("/ECAM/warnings/fctl/rudder-trim-config-range"),
+ dcEssFuelConsumptionIncreased: props.globals.initNode("/ECAM/warnings/logic/dc-ess-fuel-consumption-increased"),
+ dcEssFMSPredictions: props.globals.initNode("/ECAM/warnings/logic/dc-ess-fms-predictions-unreliable"),
dc2FuelConsumptionIncreased: props.globals.initNode("/ECAM/warnings/logic/dc-2-fuel-consumption-increased"),
dc2FMSPredictions: props.globals.initNode("/ECAM/warnings/logic/dc-2-fms-predictions-unreliable"),
thrLeversNotSet: props.globals.initNode("/ECAM/warnings/logic/eng/thr-lever-not-set"),
@@ -131,6 +133,17 @@ var warningNodes = {
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault-output"),
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault-output"),
staticInverter: props.globals.initNode("/systems/electrical/some-electric-thingie/static-inverter-timer"),
+ dcEmerConfig: props.globals.initNode("/ECAM/warnings/logic/dc-emer-config-output"),
+ dc12Fault: props.globals.initNode("/ECAM/warnings/logic/dc-1-2-output"),
+ dcEssFault: props.globals.initNode("/ECAM/warnings/logic/dc-ess-output"),
+ dc1Fault: props.globals.initNode("/ECAM/warnings/logic/dc-1-output"),
+ dc2Fault: props.globals.initNode("/ECAM/warnings/logic/dc-2-output"),
+ dcBatFault: props.globals.initNode("/ECAM/warnings/logic/dc-bat-output"),
+ ac1Fault: props.globals.initNode("/ECAM/warnings/logic/ac-1-output"),
+ ac2Fault: props.globals.initNode("/ECAM/warnings/logic/ac-2-output"),
+ acEssFault: props.globals.initNode("/ECAM/warnings/logic/ac-ess-output"),
+ dcEssShed: props.globals.initNode("/ECAM/warnings/logic/dc-ess-shed-output"),
+ acEssShed: props.globals.initNode("/ECAM/warnings/logic/ac-ess-shed-output"),
},
Flipflops: {
apuGenFault: props.globals.initNode("/ECAM/warnings/flipflop/apu-gen-fault"),
diff --git a/Nasal/ECAM/ECAM-logic.nas b/Nasal/ECAM/ECAM-logic.nas
index 8d09bb15..066a7c91 100644
--- a/Nasal/ECAM/ECAM-logic.nas
+++ b/Nasal/ECAM/ECAM-logic.nas
@@ -1628,113 +1628,284 @@ var messages_priority_2 = func {
}
# DC EMER CONFIG
- if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.dcEss.getValue() < 25 and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() < 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcEmerconfig.clearFlag == 0) {
+ if (warningNodes.Timers.dcEmerConfig.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcEmerconfig.clearFlag == 0) {
dcEmerconfig.active = 1;
- dcEmerconfigManOn.active = 1;
+ if (systems.ELEC.Source.EmerGen.relayPos.getValue() == 0 and dcEmerconfigManOn.clearFlag == 0) {
+ dcEmerconfigManOn.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcEmerconfigManOn);
+ }
+
+ if ((warningNodes.Logic.dcEssFuelConsumptionIncreased.getValue() or warningNodes.Logic.dc2FuelConsumptionIncreased.getValue()) and dcEmerconfigFuel.clearFlag == 0) {
+ dcEmerconfigFuel.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcEmerconfigFuel);
+ }
} else {
ECAM_controller.warningReset(dcEmerconfig);
ECAM_controller.warningReset(dcEmerconfigManOn);
+ ECAM_controller.warningReset(dcEmerconfigFuel);
}
- if (!systems.ELEC.EmerElec.getValue() and !dcEmerconfig.active and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() < 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus12Fault.clearFlag == 0) {
+ if (warningNodes.Timers.dc12Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus12Fault.clearFlag == 0) {
dcBus12Fault.active = 1;
- dcBus12FaultBlower.active = 1;
- dcBus12FaultExtract.active = 1;
- dcBus12FaultBaroRef.active = 1;
- dcBus12FaultIcing.active = 1;
- dcBus12FaultBrking.active = 1;
+
+ if (dcBus12FaultBlower.clearFlag == 0) {
+ dcBus12FaultBlower.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus12FaultBlower);
+ }
+
+ if (dcBus12FaultExtract.clearFlag == 0) {
+ dcBus12FaultExtract.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus12FaultExtract);
+ }
+
+ if (dcBus12FaultBaroRef.clearFlag == 0) {
+ dcBus12FaultBaroRef.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus12FaultBaroRef);
+ }
+
+ if (dcBus12FaultFuel.clearFlag == 0 and warningNodes.Logic.dc2FuelConsumptionIncreased.getValue()) {
+ dcBus12FaultFuel.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus12FaultFuel);
+ }
+
+ if (dcBus12FaultPredict.clearFlag == 0 and warningNodes.Logic.dc2FMSPredictions.getValue()) {
+ dcBus12FaultPredict.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus12FaultPredict);
+ }
+
+ if (dcBus12FaultIcing.clearFlag == 0) {
+ dcBus12FaultIcing.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus12FaultIcing);
+ }
+
+ if (dcBus12FaultBrking.clearFlag == 0) {
+ dcBus12FaultBrking.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus12FaultBrking);
+ }
} else {
ECAM_controller.warningReset(dcBus12Fault);
ECAM_controller.warningReset(dcBus12FaultBlower);
ECAM_controller.warningReset(dcBus12FaultExtract);
ECAM_controller.warningReset(dcBus12FaultBaroRef);
+ ECAM_controller.warningReset(dcBus12FaultFuel);
+ ECAM_controller.warningReset(dcBus12FaultPredict);
ECAM_controller.warningReset(dcBus12FaultIcing);
ECAM_controller.warningReset(dcBus12FaultBrking);
}
- if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.acEss.getValue() < 110 and phaseVar2 != 4 and phaseVar2 != 8 and AcBusEssFault.clearFlag == 0) {
+ if (warningNodes.Timers.acEssFault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and AcBusEssFault.clearFlag == 0) {
AcBusEssFault.active = 1;
- if (!systems.ELEC.Switch.acEssFeed.getBoolValue()) {
+ if (!systems.ELEC.Switch.acEssFeed.getBoolValue() and AcBusEssFaultFeed.clearFlag == 0) {
AcBusEssFaultFeed.active = 1;
} else {
ECAM_controller.warningReset(AcBusEssFaultFeed);
}
- AcBusEssFaultAtc.active = 1;
+
+ if (atc.transponderPanel.atcSel != 2 and AcBusEssFaultAtc.clearFlag == 0) {
+ AcBusEssFaultAtc.active = 1;
+ } else {
+ ECAM_controller.warningReset(AcBusEssFaultAtc);
+ }
} else {
ECAM_controller.warningReset(AcBusEssFault);
ECAM_controller.warningReset(AcBusEssFaultFeed);
ECAM_controller.warningReset(AcBusEssFaultAtc);
}
- if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.ac1.getValue() < 110 and phaseVar2 != 4 and phaseVar2 != 8 and AcBus1Fault.clearFlag == 0) {
+ if (warningNodes.Timers.ac1Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and AcBus1Fault.clearFlag == 0) {
AcBus1Fault.active = 1;
- AcBus1FaultBlower.active = 1;
+
+ if (AcBus1FaultBlower.clearFlag == 0) {
+ AcBus1FaultBlower.active = 1;
+ } else {
+ ECAM_controller.warningReset(AcBus1FaultBlower);
+ }
} else {
ECAM_controller.warningReset(AcBus1Fault);
ECAM_controller.warningReset(AcBus1FaultBlower);
}
- if (!dcEmerconfig.active and systems.ELEC.Bus.dcEss.getValue() < 25 and phaseVar2 != 4 and phaseVar2 != 8 and DcEssBusFault.clearFlag == 0) {
+ if (warningNodes.Timers.dcEssFault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and DcEssBusFault.clearFlag == 0) {
DcEssBusFault.active = 1;
- DcEssBusFaultRadio.active = 1;
- DcEssBusFaultRadio2.active = 1;
- DcEssBusFaultBaro.active = 1;
- DcEssBusFaultGPWS.active = 1;
+ if (DcEssBusFaultRadio.clearFlag == 0) {
+ DcEssBusFaultRadio.active = 1;
+ } else {
+ ECAM_controller.warningReset(DcEssBusFaultRadio);
+ }
+ if (DcEssBusFaultRadio2.clearFlag == 0) {
+ DcEssBusFaultRadio2.active = 1;
+ } else {
+ ECAM_controller.warningReset(DcEssBusFaultRadio2);
+ }
+
+ if (DcEssBusFaultBaro.clearFlag == 0) {
+ DcEssBusFaultBaro.active = 1;
+ } else {
+ ECAM_controller.warningReset(DcEssBusFaultBaro);
+ }
+
+ if (0 == 1 and systems.ELEC.Bus.dc2.getValue() < 25 and systems.ELEC.Bus.dcEss.getValue() < 25 and DcEssBusFaultGear.clearFlag == 0) { # LGCIU12 FAULT
+ DcEssBusFaultGear.active = 1;
+ } else {
+ ECAM_controller.warningReset(DcEssBusFaultGear);
+ }
+
+ if (DcEssBusFaultGPWS.clearFlag == 0) {
+ DcEssBusFaultGPWS.active = 1;
+ } else {
+ ECAM_controller.warningReset(DcEssBusFaultGPWS);
+ }
+
+ if (DcEssBusFaultFuel.clearFlag == 0 and warningNodes.Logic.dcEssFuelConsumptionIncreased.getValue()) {
+ DcEssBusFaultFuel.active = 1;
+ } else {
+ ECAM_controller.warningReset(DcEssBusFaultFuel);
+ }
+
+ if (DcEssBusFaultPredict.clearFlag == 0 and warningNodes.Logic.dcEssFMSPredictions.getValue()) {
+ DcEssBusFaultPredict.active = 1;
+ } else {
+ ECAM_controller.warningReset(DcEssBusFaultPredict);
+ }
+
+ if (DcEssBusFaultIcing.clearFlag == 0) {
+ DcEssBusFaultIcing.active = 1;
+ } else {
+ ECAM_controller.warningReset(DcEssBusFaultIcing);
+ }
} else {
ECAM_controller.warningReset(DcEssBusFault);
ECAM_controller.warningReset(DcEssBusFaultRadio);
ECAM_controller.warningReset(DcEssBusFaultRadio2);
ECAM_controller.warningReset(DcEssBusFaultBaro);
+ ECAM_controller.warningReset(DcEssBusFaultGear);
ECAM_controller.warningReset(DcEssBusFaultGPWS);
+ ECAM_controller.warningReset(DcEssBusFaultFuel);
+ ECAM_controller.warningReset(DcEssBusFaultPredict);
+ ECAM_controller.warningReset(DcEssBusFaultIcing);
}
- if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.ac2.getValue() < 110 and phaseVar2 != 4 and phaseVar2 != 8 and AcBus2Fault.clearFlag == 0) {
+ if (warningNodes.Timers.ac2Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and AcBus2Fault.clearFlag == 0) {
AcBus2Fault.active = 1;
- AcBus2FaultExtract.active = 1;
+ if (AcBus2FaultExtract.clearFlag == 0) {
+ AcBus2FaultExtract.active = 1;
+ } else {
+ ECAM_controller.warningReset(AcBus2FaultExtract);
+ }
+
+ if (atc.transponderPanel.atcSel != 1 and AcBus2FaultAtc.clearFlag == 0) {
+ AcBus2FaultAtc.active = 1;
+ } else {
+ ECAM_controller.warningReset(AcBus2FaultAtc);
+ }
} else {
ECAM_controller.warningReset(AcBus2Fault);
ECAM_controller.warningReset(AcBus2FaultExtract);
+ ECAM_controller.warningReset(AcBus2FaultAtc);
}
- if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() >= 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus1Fault.clearFlag == 0) {
+ if (warningNodes.Timers.dc1Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus1Fault.clearFlag == 0) {
dcBus1Fault.active = 1;
- dcBus1FaultBlower.active = 1;
- dcBus1FaultExtract.active = 1;
+
+ if (dcBus1FaultBlower.clearFlag == 0) {
+ dcBus1FaultBlower.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus1FaultBlower);
+ }
+ if (dcBus1FaultExtract.clearFlag == 0) {
+ dcBus1FaultExtract.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus1FaultExtract);
+ }
+ if (dcBus1FaultIcing.clearFlag == 0) {
+ dcBus1FaultIcing.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus1FaultIcing);
+ }
} else {
ECAM_controller.warningReset(dcBus1Fault);
ECAM_controller.warningReset(dcBus1FaultBlower);
ECAM_controller.warningReset(dcBus1FaultExtract);
+ ECAM_controller.warningReset(dcBus1FaultIcing);
}
- if (!systems.ELEC.EmerElec.getValue() and systems.ELEC.Bus.dc1.getValue() >= 25 and systems.ELEC.Bus.dc2.getValue() <= 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus2Fault.clearFlag == 0) {
+ if (warningNodes.Timers.dc2Fault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcBus2Fault.clearFlag == 0) {
dcBus2Fault.active = 1;
- dcBus2FaultAirData.active = 1;
- dcBus2FaultBaro.active = 1;
+
+ if (dcBus2FaultAirData.clearFlag == 0 and systems.SwitchingPanel.Switches.airData.getValue() != 1) {
+ dcBus2FaultAirData.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus2FaultAirData);
+ }
+
+ if (dcBus2FaultBaro.clearFlag == 0) {
+ dcBus2FaultBaro.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus2FaultBaro);
+ }
+
+ if (0 == 1 and systems.ELEC.Bus.dc2.getValue() < 25 and systems.ELEC.Bus.dcEss.getValue() < 25 and dcBus2FaultGear.clearFlag == 0) { # LGCIU12 FAULT
+ dcBus2FaultGear.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus2FaultGear);
+ }
+
+ if (dcBus2FaultFuel.clearFlag == 0 and warningNodes.Logic.dc2FuelConsumptionIncreased.getValue()) {
+ dcBus2FaultFuel.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus2FaultFuel);
+ }
+
+ if (dcBus2FaultPredict.clearFlag == 0 and warningNodes.Logic.dc2FMSPredictions.getValue()) {
+ dcBus2FaultPredict.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBus2FaultPredict);
+ }
} else {
ECAM_controller.warningReset(dcBus2Fault);
ECAM_controller.warningReset(dcBus2FaultAirData);
ECAM_controller.warningReset(dcBus2FaultBaro);
+ ECAM_controller.warningReset(dcBus2FaultGear);
+ ECAM_controller.warningReset(dcBus2FaultFuel);
+ ECAM_controller.warningReset(dcBus2FaultPredict);
}
- if (!systems.ELEC.EmerElec.getValue() and !dcEmerconfig.active and systems.ELEC.Bus.dcBat.getValue() < 25 and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8 and dcBusBatFault.clearFlag == 0) {
+ if (warningNodes.Timers.dcBatFault.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8 and dcBusBatFault.clearFlag == 0) {
dcBusBatFault.active = 1;
} else {
ECAM_controller.warningReset(dcBusBatFault);
}
- if (!(systems.ELEC.EmerElec.getValue() and !systems.ELEC.Source.EmerGen.relayPos.getValue()) and systems.ELEC.Bus.dcEssShed.getValue() < 25 and systems.ELEC.Bus.dcEss.getValue() >= 25 and phaseVar2 != 4 and phaseVar2 != 8 and dcBusEssShed.clearFlag == 0) {
+ if (warningNodes.Timers.dcEssShed.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and dcBusEssShed.clearFlag == 0) {
dcBusEssShed.active = 1;
- dcBusEssShedExtract.active = 1;
- dcBusEssShedIcing.active = 1;
+ if (dcBusEssShedExtract.clearFlag == 0) {
+ dcBusEssShedExtract.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBusEssShedExtract);
+ }
+ if (dcBusEssShedIcing.clearFlag == 0) {
+ dcBusEssShedIcing.active = 1;
+ } else {
+ ECAM_controller.warningReset(dcBusEssShedIcing);
+ }
} else {
ECAM_controller.warningReset(dcBusEssShed);
ECAM_controller.warningReset(dcBusEssShedExtract);
ECAM_controller.warningReset(dcBusEssShedIcing);
}
- if (!(systems.ELEC.EmerElec.getValue() and !systems.ELEC.Source.EmerGen.relayPos.getValue()) and systems.ELEC.Bus.acEssShed.getValue() < 110 and systems.ELEC.Bus.acEss.getValue() >= 110 and phaseVar2 != 4 and phaseVar2 != 8 and acBusEssShed.clearFlag == 0) {
+ if (warningNodes.Timers.acEssShed.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 8 and acBusEssShed.clearFlag == 0) {
acBusEssShed.active = 1;
- if (!systems.ELEC.EmerElec.getValue()) {
+ if (!systems.ELEC.EmerElec.getValue() and atc.transponderPanel.atcSel != 2 and acBusEssShedAtc.clearFlag == 0) {
acBusEssShedAtc.active = 1;
} else {
ECAM_controller.warningReset(acBusEssShed);
diff --git a/Nasal/ECAM/ECAM-messages.nas b/Nasal/ECAM/ECAM-messages.nas
index d788112d..247f78a9 100644
--- a/Nasal/ECAM/ECAM-messages.nas
+++ b/Nasal/ECAM/ECAM-messages.nas
@@ -345,12 +345,15 @@ var warnings = std.Vector.new([
# 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"),
+ var dcEmerconfigFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
# DC BUS 1 OR 2 FAULT
var dcBus12Fault = warning.new(msg: "ELEC DC BUS 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcBus12FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"),
var dcBus12FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
var dcBus12FaultBaroRef = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
+ var dcBus12FaultFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
+ var dcBus12FaultPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
var dcBus12FaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
var dcBus12FaultBrking = warning.new(msg: " MAX BRK........1000 PSI", colour: "c"),
@@ -368,21 +371,30 @@ var warnings = std.Vector.new([
var DcEssBusFaultRadio = warning.new(msg: " -VHF 2 OR 3.........USE", colour: "c"),
var DcEssBusFaultRadio2 = warning.new(msg: " -AUDIO SWTG......SELECT", colour: "c"),
var DcEssBusFaultBaro = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
- var DcEssBusFaultGPWS = warning.new(msg: " -GPWS...............OFF", colour: "c"),
+ var DcEssBusFaultGear = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"),
+ var DcEssBusFaultGPWS = warning.new(msg: " -GPWS SYS...........OFF", colour: "c"),
+ var DcEssBusFaultFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
+ var DcEssBusFaultPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
+ var DcEssBusFaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
# AC BUS 2 FAULT
var AcBus2Fault = warning.new(msg: "ELEC AC BUS 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var AcBus2FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
+ var AcBus2FaultAtc = warning.new(msg: " -ATC..............SYS 1", colour: "c"),
# DC BUS 1 FAULT
var dcBus1Fault = warning.new(msg: "ELEC DC BUS 1 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcBus1FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"),
var dcBus1FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
+ var dcBus1FaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
# DC BUS 2 FAULT
var dcBus2Fault = warning.new(msg: "ELEC DC BUS 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcBus2FaultAirData = warning.new(msg: " -AIR DATA SWTG......F/O", colour: "c"),
var dcBus2FaultBaro = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
+ var dcBus2FaultGear = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"),
+ var dcBus2FaultFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
+ var dcBus2FaultPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
# DC BAT BUS FAULT
var dcBusBatFault = warning.new(msg: "ELEC DC BAT BUS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
diff --git a/Systems/a320-fwc.xml b/Systems/a320-fwc.xml
index c905cded..6e43357b 100644
--- a/Systems/a320-fwc.xml
+++ b/Systems/a320-fwc.xml
@@ -1757,6 +1757,90 @@
+
+
+
+ /ECAM/timer/ground-calc eq 0
+ /ECAM/dual-failure-enabled eq 0
+
+
+
+ /ECAM/warnings/hyd/yellow-abnorm-lo-pr eq 1
+ /systems/electrical/bus/dc-2 lt 25
+
+ /ECAM/warnings/logic/SFLAPEXT eq 1
+
+
+
+
+ /ECAM/warnings/hyd/blue-abnorm-lo-pr ne 1
+ /ECAM/warnings/hyd/green-abnorm-lo-pr eq 1
+
+ /systems/electrical/bus/dc-2 lt 25
+
+ /ECAM/warnings/logic/SSLATEXT eq 1
+
+ /ECAM/warnings/hyd/blue-abnorm-lo-pr eq 0
+ /systems/electrical/bus/ac-1 ge 110
+
+
+
+
+
+ hydraulics/aileron-l/pressure-switch-or eq 1
+
+ /systems/fctl/elac2 eq 0
+ /systems/hydraulic/green-psi lt 1500
+
+ /ECAM/warnings/logic/BLUE-EMER-ELEC ne 1
+
+
+ hydraulics/aileron-r/pressure-switch-or eq 1
+
+ /systems/fctl/elac2 eq 0
+ /systems/hydraulic/blue-psi lt 1500
+
+
+
+
+
+ /systems/electrical/bus/ac-1 ge 110
+ /ECAM/warnings/hyd/green-abnorm-lo-pr eq 0
+
+
+ /ECAM/warnings/hyd/blue-abnorm-lo-pr eq 1
+
+ hydraulics/spoiler-l3/final-deg gt 0.01
+ hydraulics/spoiler-r3/final-deg gt 0.01
+
+
+
+ /ECAM/warnings/hyd/blue-abnorm-lo-pr eq 1
+
+
+ hydraulics/aileron-l/pressure-switch-or eq 1
+
+ /systems/fctl/elac2 eq 0
+ /systems/hydraulic/green-psi lt 1500
+
+ /ECAM/warnings/logic/BLUE-EMER-ELEC ne 1
+
+
+ hydraulics/aileron-r/pressure-switch-or eq 1
+
+ /systems/fctl/elac1 eq 0
+ /systems/hydraulic/green-psi lt 1500
+
+
+
+
+
+
+
+
+
+
+
@@ -1764,6 +1848,183 @@
/systems/electrical/relay/dc-ess-shed-switch/contact-pos eq 0
+
+
+
+
+ /ECAM/warnings/logic/dc-ess-fuel-consumption-increased eq 1
+ /systems/electrical/bus/dc-2 ge 25
+
+
+
+
+
+
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+ /systems/electrical/bus/dc-1 lt 25
+ /systems/electrical/bus/dc-2 lt 25
+ /systems/electrical/bus/dc-ess lt 25
+
+
+
+
+ /ECAM/warnings/logic/dc-emer-config
+ 120
+ 5
+
+
+
+
+
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+ /systems/electrical/bus/dc-1 lt 25
+ /systems/electrical/bus/dc-2 lt 25
+ /ECAM/warnings/logic/dc-emer-config ne 1
+
+
+
+
+ /ECAM/warnings/logic/dc-1-2
+ 120
+ 0.5
+
+
+
+
+
+ /systems/electrical/bus/dc-ess lt 25
+ /ECAM/warnings/logic/dc-emer-config ne 1
+
+
+
+
+ /ECAM/warnings/logic/dc-ess-fault
+ 120
+ 0.5
+
+
+
+
+
+ /systems/electrical/bus/dc-bat lt 25
+ /ECAM/warnings/logic/dc-emer-config ne 1
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+
+
+
+
+ /ECAM/warnings/logic/dc-bat-fault
+ 120
+ 5
+
+
+
+
+
+ /systems/electrical/bus/dc-1 lt 25
+ /systems/electrical/bus/dc-2 ge 25
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+
+
+
+
+ /ECAM/warnings/logic/dc-1-fault
+ 120
+ 0.5
+
+
+
+
+
+ /systems/electrical/bus/dc-2 lt 25
+ /systems/electrical/bus/dc-1 ge 25
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+
+
+
+
+ /ECAM/warnings/logic/dc-2-fault
+ 120
+ 0.5
+
+
+
+
+
+ /systems/electrical/bus/ac-1 lt 110
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+
+
+
+
+ /ECAM/warnings/logic/ac-1-fault
+ 120
+ 5
+
+
+
+
+
+ /systems/electrical/bus/ac-2 lt 110
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+
+
+
+
+ /ECAM/warnings/logic/ac-2-fault
+ 120
+ 5
+
+
+
+
+
+ /systems/electrical/bus/ac-ess lt 110
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+
+
+
+
+ /ECAM/warnings/logic/ac-ess-fault
+ 120
+ 5
+
+
+
+
+
+ /systems/electrical/bus/dc-ess-shed lt 25
+ /systems/electrical/bus/dc-ess ge 25
+
+ /systems/electrical/some-electric-thingie/emer-elec-config-10-sec ne 1
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+
+
+
+
+
+ /ECAM/warnings/logic/dc-ess-shed-fault
+ 120
+ 0.5
+
+
+
+
+
+ /systems/electrical/bus/ac-ess-shed lt 110
+ /systems/electrical/bus/ac-ess ge 110
+
+ /systems/electrical/some-electric-thingie/emer-elec-config-10-sec ne 1
+ /systems/electrical/some-electric-thingie/emer-elec-config ne 1
+
+
+
+
+
+ /ECAM/warnings/logic/ac-ess-shed-fault
+ 120
+ 0.5
+
diff --git a/Systems/ecam-proprules.xml b/Systems/ecam-proprules.xml
index 0cc0f736..9aca49cd 100644
--- a/Systems/ecam-proprules.xml
+++ b/Systems/ecam-proprules.xml
@@ -78,6 +78,17 @@
+
+ monostable
+
+
+ /systems/electrical/some-electric-thingie/emer-elec-config
+
+
+
+
monostable