Many bugfixes
This commit is contained in:
parent
fb5c0e60fc
commit
f8f87ed042
10 changed files with 419 additions and 45 deletions
|
@ -1670,8 +1670,19 @@
|
||||||
</greater-than-equals>
|
</greater-than-equals>
|
||||||
</condition>
|
</condition>
|
||||||
<command>nasal</command>
|
<command>nasal</command>
|
||||||
<script>ecam.ECAM_controller.recall();</script>
|
<script>
|
||||||
|
ecam.ECAM_controller.recall();
|
||||||
|
ecam.FWC.Btn.recall.setValue(1);
|
||||||
|
</script>
|
||||||
</binding>
|
</binding>
|
||||||
|
<mod-up>
|
||||||
|
<binding>
|
||||||
|
<command>nasal</command>
|
||||||
|
<script>
|
||||||
|
ecam.FWC.Btn.recall.setValue(0);
|
||||||
|
</script>
|
||||||
|
</binding>
|
||||||
|
</mod-up>
|
||||||
</action>
|
</action>
|
||||||
</animation>
|
</animation>
|
||||||
|
|
||||||
|
@ -1690,8 +1701,19 @@
|
||||||
</greater-than-equals>
|
</greater-than-equals>
|
||||||
</condition>
|
</condition>
|
||||||
<command>nasal</command>
|
<command>nasal</command>
|
||||||
<script>libraries.LowerECAM.button("clr");</script>
|
<script>
|
||||||
|
libraries.LowerECAM.button("clr");
|
||||||
|
ecam.FWC.Btn.clr.setValue(1);
|
||||||
|
</script>
|
||||||
</binding>
|
</binding>
|
||||||
|
<mod-up>
|
||||||
|
<binding>
|
||||||
|
<command>nasal</command>
|
||||||
|
<script>
|
||||||
|
ecam.FWC.Btn.clr.setValue(0);
|
||||||
|
</script>
|
||||||
|
</binding>
|
||||||
|
</mod-up>
|
||||||
</action>
|
</action>
|
||||||
</animation>
|
</animation>
|
||||||
|
|
||||||
|
|
|
@ -2844,7 +2844,7 @@
|
||||||
<binding>
|
<binding>
|
||||||
<condition>
|
<condition>
|
||||||
<greater-than-equals>
|
<greater-than-equals>
|
||||||
<property>systems/electrical/bus/dc-ess</property>
|
<property>systems/electrical/bus/dc-service-bus</property>
|
||||||
<value>25</value>
|
<value>25</value>
|
||||||
</greater-than-equals>
|
</greater-than-equals>
|
||||||
</condition>
|
</condition>
|
||||||
|
|
|
@ -146,6 +146,7 @@ var status = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var ECAM_controller = {
|
var ECAM_controller = {
|
||||||
|
_recallCounter: 0,
|
||||||
init: func() {
|
init: func() {
|
||||||
ECAMloopTimer.start();
|
ECAMloopTimer.start();
|
||||||
me.reset();
|
me.reset();
|
||||||
|
@ -295,12 +296,25 @@ var ECAM_controller = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
recall: func() {
|
recall: func() {
|
||||||
|
me._recallCounter = 0;
|
||||||
foreach (var w; warnings.vector) {
|
foreach (var w; warnings.vector) {
|
||||||
if (w.clearFlag == 1) {
|
if (w.clearFlag == 1) {
|
||||||
w.noRepeat = 0;
|
w.noRepeat = 0;
|
||||||
w.clearFlag = 0;
|
w.clearFlag = 0;
|
||||||
|
me._recallCounter += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (me._recallCounter == 0) {
|
||||||
|
FWC.Btn.recallStsNormal.setValue(1);
|
||||||
|
settimer(func() {
|
||||||
|
if (FWC.Btn.recallStsNormal.getValue() == 1) { # catch unexpected error, trying something new here
|
||||||
|
FWC.Btn.recallStsNormal.setValue(0);
|
||||||
|
} else {
|
||||||
|
die("Exception in ECAM-controller.nas, line 316");
|
||||||
|
}
|
||||||
|
}, 0.1);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
warningReset: func(warning) {
|
warningReset: func(warning) {
|
||||||
warning.active = 0;
|
warning.active = 0;
|
||||||
|
|
|
@ -738,7 +738,7 @@ var messages_priority_3 = func {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!systems.cargoTestBtn.getBoolValue()) {
|
if (!systems.cargoTestBtn.getBoolValue()) {
|
||||||
if (cargoSmokeFwd.clearFlag == 0 and systems.fwdCargoFireWarn.getBoolValue() and (getprop("/ECAM/warning-phase") <= 3 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") == 6)) {
|
if (cargoSmokeFwd.clearFlag == 0 and systems.fwdCargoFireWarn.getBoolValue() and (phaseVar <= 3 or phaseVar >= 9 or phaseVar == 6)) {
|
||||||
cargoSmokeFwd.active = 1;
|
cargoSmokeFwd.active = 1;
|
||||||
} elsif (cargoSmokeFwd.clearFlag == 1 or systems.cargoTestBtnOff.getBoolValue()) {
|
} elsif (cargoSmokeFwd.clearFlag == 1 or systems.cargoTestBtnOff.getBoolValue()) {
|
||||||
ECAM_controller.warningReset(cargoSmokeFwd);
|
ECAM_controller.warningReset(cargoSmokeFwd);
|
||||||
|
@ -752,7 +752,7 @@ var messages_priority_3 = func {
|
||||||
cargoSmokeFwd.hasSubmsg = 0;
|
cargoSmokeFwd.hasSubmsg = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cargoSmokeAft.clearFlag == 0 and systems.aftCargoFireWarn.getBoolValue() and (getprop("/ECAM/warning-phase") <= 3 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") == 6)) {
|
if (cargoSmokeAft.clearFlag == 0 and systems.aftCargoFireWarn.getBoolValue() and (phaseVar <= 3 or phaseVar >= 9 or phaseVar == 6)) {
|
||||||
cargoSmokeAft.active = 1;
|
cargoSmokeAft.active = 1;
|
||||||
} elsif (cargoSmokeAft.clearFlag == 1 or systems.cargoTestBtnOff.getBoolValue()) {
|
} elsif (cargoSmokeAft.clearFlag == 1 or systems.cargoTestBtnOff.getBoolValue()) {
|
||||||
ECAM_controller.warningReset(cargoSmokeAft);
|
ECAM_controller.warningReset(cargoSmokeAft);
|
||||||
|
@ -781,7 +781,7 @@ var messages_priority_3 = func {
|
||||||
}
|
}
|
||||||
|
|
||||||
# ESS on BAT
|
# ESS on BAT
|
||||||
if ((!gear.getValue() or !getprop("/controls/gear/gear-down")) and getprop("/systems/electrical/some-electric-thingie/static-inverter-timer") == 1 and getprop("/ECAM/warning-phase") >= 5 and getprop("/ECAM/warning-phase") <= 7) {
|
if ((!gear.getValue() or !getprop("/controls/gear/gear-down")) and getprop("/systems/electrical/some-electric-thingie/static-inverter-timer") == 1 and phaseVar >= 5 and phaseVar <= 7) {
|
||||||
essBusOnBat.active = 1;
|
essBusOnBat.active = 1;
|
||||||
essBusOnBatLGUplock.active = 1;
|
essBusOnBatLGUplock.active = 1;
|
||||||
essBusOnBatManOn.active = 1;
|
essBusOnBatManOn.active = 1;
|
||||||
|
@ -798,7 +798,7 @@ var messages_priority_3 = func {
|
||||||
}
|
}
|
||||||
|
|
||||||
# EMER CONFIG
|
# EMER CONFIG
|
||||||
if (getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and !dualFail.active and phaseVar != 4 and phaseVar != 8 and emerconfig.clearFlag == 0) {
|
if (getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and !dualFailNode.getBoolValue() and phaseVar != 4 and phaseVar != 8 and emerconfig.clearFlag == 0) {
|
||||||
emerconfig.active = 1;
|
emerconfig.active = 1;
|
||||||
|
|
||||||
if (getprop("/systems/hydraulic/sources/rat/position") != 0 and emerconfigMinRat.clearFlag == 0) {
|
if (getprop("/systems/hydraulic/sources/rat/position") != 0 and emerconfigMinRat.clearFlag == 0) {
|
||||||
|
@ -928,8 +928,9 @@ var messages_priority_3 = func {
|
||||||
}
|
}
|
||||||
|
|
||||||
var messages_priority_2 = func {
|
var messages_priority_2 = func {
|
||||||
|
phaseVar = phaseNode.getValue();
|
||||||
# DC EMER CONFIG
|
# DC EMER CONFIG
|
||||||
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and systems.ELEC.Bus.dcEss.getValue() < 25 and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() < 25) {
|
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and systems.ELEC.Bus.dcEss.getValue() < 25 and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() < 25 and phaseVar != 4 and phaseVar != 8) {
|
||||||
dcEmerconfig.active = 1;
|
dcEmerconfig.active = 1;
|
||||||
dcEmerconfigManOn.active = 1;
|
dcEmerconfigManOn.active = 1;
|
||||||
} else {
|
} else {
|
||||||
|
@ -937,6 +938,114 @@ var messages_priority_2 = func {
|
||||||
ECAM_controller.warningReset(dcEmerconfigManOn);
|
ECAM_controller.warningReset(dcEmerconfigManOn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and !dcEmerconfig.active and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() < 25 and phaseVar != 4 and phaseVar != 8) {
|
||||||
|
dcBus12Fault.active = 1;
|
||||||
|
dcBus12FaultBlower.active = 1;
|
||||||
|
dcBus12FaultExtract.active = 1;
|
||||||
|
dcBus12FaultBaroRef.active = 1;
|
||||||
|
dcBus12FaultIcing.active = 1;
|
||||||
|
dcBus12FaultBrking.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(dcBus12Fault);
|
||||||
|
ECAM_controller.warningReset(dcBus12FaultBlower);
|
||||||
|
ECAM_controller.warningReset(dcBus12FaultExtract);
|
||||||
|
ECAM_controller.warningReset(dcBus12FaultBaroRef);
|
||||||
|
ECAM_controller.warningReset(dcBus12FaultIcing);
|
||||||
|
ECAM_controller.warningReset(dcBus12FaultBrking);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and systems.ELEC.Bus.acEss.getValue() < 110 and phaseVar != 4 and phaseVar != 8) {
|
||||||
|
AcBusEssFault.active = 1;
|
||||||
|
if (!systems.ELEC.Switch.acEssFeed.getBoolValue()) {
|
||||||
|
AcBusEssFaultFeed.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(AcBusEssFaultFeed);
|
||||||
|
}
|
||||||
|
AcBusEssFaultAtc.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(AcBusEssFault);
|
||||||
|
ECAM_controller.warningReset(AcBusEssFaultFeed);
|
||||||
|
ECAM_controller.warningReset(AcBusEssFaultAtc);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and systems.ELEC.Bus.ac1.getValue() < 110 and phaseVar != 4 and phaseVar != 8) {
|
||||||
|
AcBus1Fault.active = 1;
|
||||||
|
AcBus1FaultBlower.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(AcBus1Fault);
|
||||||
|
ECAM_controller.warningReset(AcBus1FaultBlower);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!dcEmerconfig.active and systems.ELEC.Bus.dcEss.getValue() < 25 and phaseVar != 4 and phaseVar != 8) {
|
||||||
|
DcEssBusFault.active = 1;
|
||||||
|
DcEssBusFaultRadio.active = 1;
|
||||||
|
DcEssBusFaultRadio2.active = 1;
|
||||||
|
DcEssBusFaultBaro.active = 1;
|
||||||
|
DcEssBusFaultGPWS.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(DcEssBusFault);
|
||||||
|
ECAM_controller.warningReset(DcEssBusFaultRadio);
|
||||||
|
ECAM_controller.warningReset(DcEssBusFaultRadio2);
|
||||||
|
ECAM_controller.warningReset(DcEssBusFaultBaro);
|
||||||
|
ECAM_controller.warningReset(DcEssBusFaultGPWS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and systems.ELEC.Bus.ac2.getValue() < 110 and phaseVar != 4 and phaseVar != 8) {
|
||||||
|
AcBus2Fault.active = 1;
|
||||||
|
AcBus2FaultExtract.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(AcBus2Fault);
|
||||||
|
ECAM_controller.warningReset(AcBus2FaultExtract);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and systems.ELEC.Bus.dc1.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() >= 25 and phaseVar != 4 and phaseVar != 8) {
|
||||||
|
dcBus1Fault.active = 1;
|
||||||
|
dcBus1FaultBlower.active = 1;
|
||||||
|
dcBus1FaultExtract.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(dcBus1Fault);
|
||||||
|
ECAM_controller.warningReset(dcBus1FaultBlower);
|
||||||
|
ECAM_controller.warningReset(dcBus1FaultExtract);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and systems.ELEC.Bus.dc1.getValue() >= 25 and systems.ELEC.Bus.dc2.getValue() <= 25 and phaseVar != 4 and phaseVar != 8) {
|
||||||
|
dcBus2Fault.active = 1;
|
||||||
|
dcBus2FaultAirData.active = 1;
|
||||||
|
dcBus2FaultBaro.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(dcBus2Fault);
|
||||||
|
ECAM_controller.warningReset(dcBus2FaultAirData);
|
||||||
|
ECAM_controller.warningReset(dcBus2FaultBaro);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and !dcEmerconfig.active and systems.ELEC.Bus.dcBat.getValue() < 25 and phaseVar != 4 and phaseVar != 5 and phaseVar != 7 and phaseVar != 8) {
|
||||||
|
dcBusBatFault.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(dcBusBatFault);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and !getprop("/systems/electrical/relay/emer-glc/contact-pos")) and systems.ELEC.Bus.dcEssShed.getValue() < 25 and systems.ELEC.Bus.dcEss.getValue() >= 25 and phaseVar != 4 and phaseVar != 8) {
|
||||||
|
dcBusEssShed.active = 1;
|
||||||
|
dcBusEssShedExtract.active = 1;
|
||||||
|
dcBusEssShedIcing.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(dcBusEssShed);
|
||||||
|
ECAM_controller.warningReset(dcBusEssShedExtract);
|
||||||
|
ECAM_controller.warningReset(dcBusEssShedIcing);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(getprop("/systems/electrical/some-electric-thingie/emer-elec-config") and !getprop("/systems/electrical/relay/emer-glc/contact-pos")) and systems.ELEC.Bus.acEssShed.getValue() < 110 and systems.ELEC.Bus.acEss.getValue() >= 110 and phaseVar != 4 and phaseVar != 8) {
|
||||||
|
acBusEssShed.active = 1;
|
||||||
|
if (!getprop("/systems/electrical/some-electric-thingie/emer-elec-config")) {
|
||||||
|
acBusEssShedAtc.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(acBusEssShed);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(acBusEssShed);
|
||||||
|
ECAM_controller.warningReset(acBusEssShedAtc);
|
||||||
|
}
|
||||||
|
|
||||||
if (fcu.FCUController.FCU1.failed and fcu.FCUController.FCU2.failed and systems.ELEC.Bus.dcEss.getValue() >= 25 and systems.ELEC.Bus.dcEss.getValue() >= 25) {
|
if (fcu.FCUController.FCU1.failed and fcu.FCUController.FCU2.failed and systems.ELEC.Bus.dcEss.getValue() >= 25 and systems.ELEC.Bus.dcEss.getValue() >= 25) {
|
||||||
fcuFault.active = 1;
|
fcuFault.active = 1;
|
||||||
fcuFaultBaro.active = 1;
|
fcuFaultBaro.active = 1;
|
||||||
|
@ -962,7 +1071,7 @@ var messages_priority_2 = func {
|
||||||
}
|
}
|
||||||
|
|
||||||
# APU EMER SHUT DOWN
|
# APU EMER SHUT DOWN
|
||||||
if (apuEmerShutdown.clearFlag == 0 and systems.apuEmerShutdown.getBoolValue() and !getprop("/systems/fire/apu/warning-active") and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (apuEmerShutdown.clearFlag == 0 and systems.apuEmerShutdown.getBoolValue() and !getprop("/systems/fire/apu/warning-active") and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
apuEmerShutdown.active = 1;
|
apuEmerShutdown.active = 1;
|
||||||
} elsif (apuEmerShutdown.clearFlag == 1) {
|
} elsif (apuEmerShutdown.clearFlag == 1) {
|
||||||
ECAM_controller.warningReset(apuEmerShutdown);
|
ECAM_controller.warningReset(apuEmerShutdown);
|
||||||
|
@ -976,90 +1085,103 @@ var messages_priority_2 = func {
|
||||||
apuEmerShutdown.hasSubmsg = 0;
|
apuEmerShutdown.hasSubmsg = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eng1FireDetFault.clearFlag == 0 and (systems.engFireDetectorUnits.vector[0].condition == 0 or (systems.engFireDetectorUnits.vector[0].loopOne == 9 and systems.engFireDetectorUnits.vector[0].loopTwo == 9 and systems.eng1Inop.getBoolValue())) and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (eng1FireDetFault.clearFlag == 0 and (systems.engFireDetectorUnits.vector[0].condition == 0 or (systems.engFireDetectorUnits.vector[0].loopOne == 9 and systems.engFireDetectorUnits.vector[0].loopTwo == 9 and systems.eng1Inop.getBoolValue())) and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
eng1FireDetFault.active = 1;
|
eng1FireDetFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(eng1FireDetFault);
|
ECAM_controller.warningReset(eng1FireDetFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eng1LoopAFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[0].loopOne == 9 and systems.engFireDetectorUnits.vector[0].loopTwo != 9 and !systems.eng1Inop.getBoolValue() and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (eng1LoopAFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[0].loopOne == 9 and systems.engFireDetectorUnits.vector[0].loopTwo != 9 and !systems.eng1Inop.getBoolValue() and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
eng1LoopAFault.active = 1;
|
eng1LoopAFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(eng1LoopAFault);
|
ECAM_controller.warningReset(eng1LoopAFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eng1LoopBFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[0].loopOne != 9 and systems.engFireDetectorUnits.vector[0].loopTwo == 9 and !systems.eng1Inop.getBoolValue() and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (eng1LoopBFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[0].loopOne != 9 and systems.engFireDetectorUnits.vector[0].loopTwo == 9 and !systems.eng1Inop.getBoolValue() and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
eng1LoopBFault.active = 1;
|
eng1LoopBFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(eng1LoopBFault);
|
ECAM_controller.warningReset(eng1LoopBFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eng2FireDetFault.clearFlag == 0 and (systems.engFireDetectorUnits.vector[1].condition == 0 or (systems.engFireDetectorUnits.vector[1].loopOne == 9 and systems.engFireDetectorUnits.vector[1].loopTwo == 9 and systems.eng2Inop.getBoolValue())) and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (eng2FireDetFault.clearFlag == 0 and (systems.engFireDetectorUnits.vector[1].condition == 0 or (systems.engFireDetectorUnits.vector[1].loopOne == 9 and systems.engFireDetectorUnits.vector[1].loopTwo == 9 and systems.eng2Inop.getBoolValue())) and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
eng2FireDetFault.active = 1;
|
eng2FireDetFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(eng2FireDetFault);
|
ECAM_controller.warningReset(eng2FireDetFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eng2LoopAFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[1].loopOne == 9 and systems.engFireDetectorUnits.vector[1].loopTwo != 9 and !systems.eng2Inop.getBoolValue() and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (eng2LoopAFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[1].loopOne == 9 and systems.engFireDetectorUnits.vector[1].loopTwo != 9 and !systems.eng2Inop.getBoolValue() and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
eng2LoopAFault.active = 1;
|
eng2LoopAFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(eng2LoopAFault);
|
ECAM_controller.warningReset(eng2LoopAFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eng2LoopBFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[1].loopOne != 9 and systems.engFireDetectorUnits.vector[1].loopTwo == 9 and !systems.eng2Inop.getBoolValue() and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (eng2LoopBFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[1].loopOne != 9 and systems.engFireDetectorUnits.vector[1].loopTwo == 9 and !systems.eng2Inop.getBoolValue() and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
eng2LoopBFault.active = 1;
|
eng2LoopBFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(eng2LoopBFault);
|
ECAM_controller.warningReset(eng2LoopBFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (apuFireDetFault.clearFlag == 0 and (systems.engFireDetectorUnits.vector[2].condition == 0 or (systems.engFireDetectorUnits.vector[2].loopOne == 9 and systems.engFireDetectorUnits.vector[2].loopTwo == 9 and systems.apuInop.getBoolValue())) and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (apuFireDetFault.clearFlag == 0 and (systems.engFireDetectorUnits.vector[2].condition == 0 or (systems.engFireDetectorUnits.vector[2].loopOne == 9 and systems.engFireDetectorUnits.vector[2].loopTwo == 9 and systems.apuInop.getBoolValue())) and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
apuFireDetFault.active = 1;
|
apuFireDetFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(apuFireDetFault);
|
ECAM_controller.warningReset(apuFireDetFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (apuLoopAFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[2].loopOne == 9 and systems.engFireDetectorUnits.vector[2].loopTwo != 9 and !systems.apuInop.getBoolValue() and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (apuLoopAFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[2].loopOne == 9 and systems.engFireDetectorUnits.vector[2].loopTwo != 9 and !systems.apuInop.getBoolValue() and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
apuLoopAFault.active = 1;
|
apuLoopAFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(apuLoopAFault);
|
ECAM_controller.warningReset(apuLoopAFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (apuLoopBFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[2].loopOne != 9 and systems.engFireDetectorUnits.vector[2].loopTwo == 9 and !systems.apuInop.getBoolValue() and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (apuLoopBFault.clearFlag == 0 and systems.engFireDetectorUnits.vector[2].loopOne != 9 and systems.engFireDetectorUnits.vector[2].loopTwo == 9 and !systems.apuInop.getBoolValue() and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
apuLoopBFault.active = 1;
|
apuLoopBFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(apuLoopBFault);
|
ECAM_controller.warningReset(apuLoopBFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (crgAftFireDetFault.clearFlag == 0 and (systems.cargoSmokeDetectorUnits.vector[0].condition == 0 or systems.cargoSmokeDetectorUnits.vector[1].condition == 0) and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (crgAftFireDetFault.clearFlag == 0 and (systems.cargoSmokeDetectorUnits.vector[0].condition == 0 or systems.cargoSmokeDetectorUnits.vector[1].condition == 0) and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
crgAftFireDetFault.active = 1;
|
crgAftFireDetFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(crgAftFireDetFault);
|
ECAM_controller.warningReset(crgAftFireDetFault);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (crgFwdFireDetFault.clearFlag == 0 and systems.cargoSmokeDetectorUnits.vector[2].condition == 0 and (getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") >= 9 or getprop("/ECAM/warning-phase") <= 2)) {
|
if (crgFwdFireDetFault.clearFlag == 0 and systems.cargoSmokeDetectorUnits.vector[2].condition == 0 and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
|
||||||
crgFwdFireDetFault.active = 1;
|
crgFwdFireDetFault.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(crgFwdFireDetFault);
|
ECAM_controller.warningReset(crgFwdFireDetFault);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var messages_priority_1 = func {}
|
var messages_priority_1 = func {
|
||||||
var messages_priority_0 = func {}
|
}
|
||||||
|
|
||||||
|
var messages_priority_0 = func {
|
||||||
|
if (FWC.Btn.recallStsNormalOutput.getBoolValue()) {
|
||||||
|
recallNormal.active = 1;
|
||||||
|
recallNormal1.active = 1;
|
||||||
|
recallNormal2.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(recallNormal);
|
||||||
|
ECAM_controller.warningReset(recallNormal1);
|
||||||
|
ECAM_controller.warningReset(recallNormal2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var messages_config_memo = func {
|
var messages_config_memo = func {
|
||||||
|
phaseVar = phaseNode.getValue();
|
||||||
if (getprop("/controls/flight/flap-lever") == 0 or getprop("/controls/flight/flap-lever") == 4 or getprop("/controls/flight/speedbrake") != 0 or getprop("/fdm/jsbsim/hydraulics/elevator-trim/final-deg") > 1.75 or getprop("/fdm/jsbsim/hydraulics/elevator-trim/final-deg") < -3.65 or getprop("/fdm/jsbsim/hydraulics/rudder/trim-cmd-deg") < -3.55 or getprop("/fdm/jsbsim/hydraulics/rudder/trim-cmd-deg") > 3.55) {
|
if (getprop("/controls/flight/flap-lever") == 0 or getprop("/controls/flight/flap-lever") == 4 or getprop("/controls/flight/speedbrake") != 0 or getprop("/fdm/jsbsim/hydraulics/elevator-trim/final-deg") > 1.75 or getprop("/fdm/jsbsim/hydraulics/elevator-trim/final-deg") < -3.65 or getprop("/fdm/jsbsim/hydraulics/rudder/trim-cmd-deg") < -3.55 or getprop("/fdm/jsbsim/hydraulics/rudder/trim-cmd-deg") > 3.55) {
|
||||||
setprop("/ECAM/to-config-normal", 0);
|
setprop("/ECAM/to-config-normal", 0);
|
||||||
} else {
|
} else {
|
||||||
setprop("/ECAM/to-config-normal", 1);
|
setprop("/ECAM/to-config-normal", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/ECAM/to-config-test") and (getprop("/ECAM/warning-phase") == 2 or getprop("/ECAM/warning-phase") == 9)) {
|
if (getprop("/ECAM/to-config-test") and (phaseVar == 2 or phaseVar == 9)) {
|
||||||
setprop("/ECAM/to-config-set", 1);
|
setprop("/ECAM/to-config-set", 1);
|
||||||
} else {
|
} else {
|
||||||
setprop("/ECAM/to-config-set", 0);
|
setprop("/ECAM/to-config-set", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!getprop("/ECAM/to-config-normal") or getprop("/ECAM/warning-phase") == 6) {
|
if (!getprop("/ECAM/to-config-normal") or phaseVar == 6) {
|
||||||
setprop("/ECAM/to-config-reset", 1);
|
setprop("/ECAM/to-config-reset", 1);
|
||||||
} else {
|
} else {
|
||||||
setprop("/ECAM/to-config-reset", 0);
|
setprop("/ECAM/to-config-reset", 0);
|
||||||
|
@ -1105,19 +1227,19 @@ var messages_config_memo = func {
|
||||||
toMemoLine5.colour = "c";
|
toMemoLine5.colour = "c";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/ECAM/to-config-test") and (getprop("/ECAM/warning-phase") == 2 or getprop("/ECAM/warning-phase") == 9)) {
|
if (getprop("/ECAM/to-config-test") and (phaseVar == 2 or phaseVar == 9)) {
|
||||||
setprop("/ECAM/to-memo-set", 1);
|
setprop("/ECAM/to-memo-set", 1);
|
||||||
} else {
|
} else {
|
||||||
setprop("/ECAM/to-memo-set", 0);
|
setprop("/ECAM/to-memo-set", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/ECAM/warning-phase") == 1 or getprop("/ECAM/warning-phase") == 3 or getprop("/ECAM/warning-phase") == 6 or getprop("/ECAM/warning-phase") == 10) {
|
if (phaseVar == 1 or phaseVar == 3 or phaseVar == 6 or phaseVar == 10) {
|
||||||
setprop("/ECAM/to-memo-reset", 1);
|
setprop("/ECAM/to-memo-reset", 1);
|
||||||
} else {
|
} else {
|
||||||
setprop("/ECAM/to-memo-reset", 0);
|
setprop("/ECAM/to-memo-reset", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((getprop("/ECAM/warning-phase") == 2 and getprop("/ECAM/engine-start-time") != 0 and getprop("/ECAM/engine-start-time") + 120 < getprop("/sim/time/elapsed-sec")) or getprop("/ECAM/to-memo-flipflop")) {
|
if ((phaseVar == 2 and getprop("/ECAM/engine-start-time") != 0 and getprop("/ECAM/engine-start-time") + 120 < getprop("/sim/time/elapsed-sec")) or getprop("/ECAM/to-memo-flipflop")) {
|
||||||
toMemoLine1.active = 1;
|
toMemoLine1.active = 1;
|
||||||
toMemoLine2.active = 1;
|
toMemoLine2.active = 1;
|
||||||
toMemoLine3.active = 1;
|
toMemoLine3.active = 1;
|
||||||
|
@ -1192,13 +1314,13 @@ var messages_config_memo = func {
|
||||||
setprop("/ECAM/ldg-memo-2200-set", 0);
|
setprop("/ECAM/ldg-memo-2200-set", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/ECAM/warning-phase") >= 6 and getprop("/ECAM/warning-phase") <= 8) {
|
if (phaseVar >= 6 and phaseVar <= 8) {
|
||||||
setprop("/ECAM/ldg-memo-2200-reset", 1);
|
setprop("/ECAM/ldg-memo-2200-reset", 1);
|
||||||
} else {
|
} else {
|
||||||
setprop("/ECAM/ldg-memo-2200-reset", 0);
|
setprop("/ECAM/ldg-memo-2200-reset", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((getprop("/ECAM/warning-phase") == 6 and getprop("/ECAM/ldg-memo-flipflop") and getprop("/ECAM/ldg-memo-2200-flipflop")) or getprop("/ECAM/warning-phase") == 7 or getprop("/ECAM/warning-phase") == 8) {
|
if ((phaseVar == 6 and getprop("/ECAM/ldg-memo-flipflop") and getprop("/ECAM/ldg-memo-2200-flipflop")) or phaseVar == 7 or phaseVar == 8) {
|
||||||
ldgMemoLine1.active = 1;
|
ldgMemoLine1.active = 1;
|
||||||
ldgMemoLine2.active = 1;
|
ldgMemoLine2.active = 1;
|
||||||
ldgMemoLine3.active = 1;
|
ldgMemoLine3.active = 1;
|
||||||
|
@ -1213,7 +1335,7 @@ var messages_config_memo = func {
|
||||||
|
|
||||||
var messages_memo = func {
|
var messages_memo = func {
|
||||||
phaseVar = phaseNode.getValue();
|
phaseVar = phaseNode.getValue();
|
||||||
if (getprop("/services/fuel-truck/enable") == 1 and leftMsgNode.getValue() != "TO-MEMO" and leftMsgNode.getValue() != "LDG-MEMO") {
|
if (getprop("/services/fuel-truck/enable") == 1) {
|
||||||
refuelg.active = 1;
|
refuelg.active = 1;
|
||||||
} else {
|
} else {
|
||||||
refuelg.active = 0;
|
refuelg.active = 0;
|
||||||
|
@ -1225,25 +1347,25 @@ var messages_memo = func {
|
||||||
gnd_splrs.active = 0;
|
gnd_splrs.active = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/controls/lighting/seatbelt-sign") == 1 and leftMsgNode.getValue() != "TO-MEMO" and leftMsgNode.getValue() != "LDG-MEMO") {
|
if (getprop("/controls/lighting/seatbelt-sign") == 1) {
|
||||||
seatbelts.active = 1;
|
seatbelts.active = 1;
|
||||||
} else {
|
} else {
|
||||||
seatbelts.active = 0;
|
seatbelts.active = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/controls/lighting/no-smoking-sign") == 1 and leftMsgNode.getValue() != "TO-MEMO" and leftMsgNode.getValue() != "LDG-MEMO") { # should go off after takeoff assuming switch is in auto due to old logic from the days when smoking was allowed!
|
if (getprop("/controls/lighting/no-smoking-sign") == 1) { # should go off after takeoff assuming switch is in auto due to old logic from the days when smoking was allowed!
|
||||||
nosmoke.active = 1;
|
nosmoke.active = 1;
|
||||||
} else {
|
} else {
|
||||||
nosmoke.active = 0;
|
nosmoke.active = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/controls/lighting/strobe") == 0 and getprop("/gear/gear[1]/wow") == 0 and leftMsgNode.getValue() != "TO-MEMO" and leftMsgNode.getValue() != "LDG-MEMO") { # todo: use gear branch properties
|
if (getprop("/controls/lighting/strobe") == 0 and getprop("/gear/gear[1]/wow") == 0) { # todo: use gear branch properties
|
||||||
strobe_lt_off.active = 1;
|
strobe_lt_off.active = 1;
|
||||||
} else {
|
} else {
|
||||||
strobe_lt_off.active = 0;
|
strobe_lt_off.active = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/consumables/fuel/total-fuel-lbs") < 6000 and leftMsgNode.getValue() != "TO-MEMO" and leftMsgNode.getValue() != "LDG-MEMO") { # assuming US short ton 2000lb
|
if (getprop("/consumables/fuel/total-fuel-lbs") < 6000) { # assuming US short ton 2000lb
|
||||||
fob_3T.active = 1;
|
fob_3T.active = 1;
|
||||||
} else {
|
} else {
|
||||||
fob_3T.active = 0;
|
fob_3T.active = 0;
|
||||||
|
@ -1259,13 +1381,13 @@ var messages_memo = func {
|
||||||
|
|
||||||
var messages_right_memo = func {
|
var messages_right_memo = func {
|
||||||
phaseVar = phaseNode.getValue();
|
phaseVar = phaseNode.getValue();
|
||||||
if (phaseVar >= 3 and phaseVar <= 5) {
|
if (FWC.Timer.toInhibitOutput.getValue() == 1) {
|
||||||
to_inhibit.active = 1;
|
to_inhibit.active = 1;
|
||||||
} else {
|
} else {
|
||||||
to_inhibit.active = 0;
|
to_inhibit.active = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (phaseVar >= 7 and phaseVar <= 7) {
|
if (FWC.Timer.ldgInhibitOutput.getValue() == 1) {
|
||||||
ldg_inhibit.active = 1;
|
ldg_inhibit.active = 1;
|
||||||
} else {
|
} else {
|
||||||
ldg_inhibit.active = 0;
|
ldg_inhibit.active = 0;
|
||||||
|
|
|
@ -162,8 +162,58 @@ var warnings = std.Vector.new([
|
||||||
var emerconfigMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
|
var emerconfigMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
|
||||||
|
|
||||||
# DC EMER CONFIG
|
# DC EMER CONFIG
|
||||||
var dcEmerconfig = warning.new(msg: "ELEC DC EMER CONFIG", colour: "a", aural: 1, light: 0, hasSubmsg: 1),
|
var dcEmerconfig = warning.new(msg: "ELEC DC EMER CONFIG", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
|
||||||
var dcEmerconfigManOn = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
|
var dcEmerconfigManOn = warning.new(msg: " -EMER ELEC PWR...MAN ON", 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, hasSubmsg: 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 dcBus12FaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||||
|
var dcBus12FaultBrking = warning.new(msg: " MAX BRK........1000 PSI", colour: "c"),
|
||||||
|
|
||||||
|
# AC ESS BUS FAULT
|
||||||
|
var AcBusEssFault = warning.new(msg: "ELEC AC ESS BUS FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
|
||||||
|
var AcBusEssFaultFeed = warning.new(msg: " -AC ESS FEED.......ALTN", colour: "c"),
|
||||||
|
var AcBusEssFaultAtc = warning.new(msg: " -ATC..............SYS 2", colour: "c"),
|
||||||
|
|
||||||
|
# AC BUS 1 FAULT
|
||||||
|
var AcBus1Fault = warning.new(msg: "ELEC AC BUS 1 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
|
||||||
|
var AcBus1FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"),
|
||||||
|
|
||||||
|
# DC ESS BUS FAULT
|
||||||
|
var DcEssBusFault = warning.new(msg: "ELEC DC ESS BUS FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
|
||||||
|
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"),
|
||||||
|
|
||||||
|
# AC BUS 2 FAULT
|
||||||
|
var AcBus2Fault = warning.new(msg: "ELEC AC BUS 2 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
|
||||||
|
var AcBus2FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
|
||||||
|
|
||||||
|
# DC BUS 1 FAULT
|
||||||
|
var dcBus1Fault = warning.new(msg: "ELEC DC BUS 1 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
|
||||||
|
var dcBus1FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"),
|
||||||
|
var dcBus1FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
|
||||||
|
|
||||||
|
# DC BUS 2 FAULT
|
||||||
|
var dcBus2Fault = warning.new(msg: "ELEC DC BUS 2 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
|
||||||
|
var dcBus2FaultAirData = warning.new(msg: " -AIR DATA SWTG......F/O", colour: "c"),
|
||||||
|
var dcBus2FaultBaro = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
|
||||||
|
|
||||||
|
# DC BAT BUS FAULT
|
||||||
|
var dcBusBatFault = warning.new(msg: "ELEC DC BAT BUS FAULT", colour: "a", aural: 1, light: 1),
|
||||||
|
|
||||||
|
# DC ESS BUS SHED
|
||||||
|
var dcBusEssShed = warning.new(msg: "ELEC DC ESS BUS SHED", colour: "a", aural: 1, light: 1),
|
||||||
|
var dcBusEssShedExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
|
||||||
|
var dcBusEssShedIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||||
|
|
||||||
|
# AC ESS BUS SHED
|
||||||
|
var acBusEssShed = warning.new(msg: "ELEC DC ESS BUS SHED", colour: "a", aural: 1, light: 1),
|
||||||
|
var acBusEssShedAtc = warning.new(msg: " -ATC..............SYS 2", colour: "c"),
|
||||||
|
|
||||||
# FCU fault
|
# FCU fault
|
||||||
var fcuFault = warning.new(msg: "AUTO FLT FCU 1+2 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
|
var fcuFault = warning.new(msg: "AUTO FLT FCU 1+2 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
|
||||||
|
@ -189,6 +239,11 @@ var warnings = std.Vector.new([
|
||||||
var apuLoopBFault = warning.new(msg: "APU FIRE LOOP B FAULT", colour: "a"),
|
var apuLoopBFault = warning.new(msg: "APU FIRE LOOP B FAULT", colour: "a"),
|
||||||
var crgFwdFireDetFault = warning.new(msg: "FWD CRG DET FAULT", colour: "a"),
|
var crgFwdFireDetFault = warning.new(msg: "FWD CRG DET FAULT", colour: "a"),
|
||||||
var crgAftFireDetFault = warning.new(msg: "AFT CRG DET FAULT", colour: "a"),
|
var crgAftFireDetFault = warning.new(msg: "AFT CRG DET FAULT", colour: "a"),
|
||||||
|
|
||||||
|
# Recall
|
||||||
|
var recallNormal = warning.new(msg: " ", colour: "g", hasSubmsg: 1),
|
||||||
|
var recallNormal1 = warning.new(msg: " ", colour: "g", hasSubmsg: 1),
|
||||||
|
var recallNormal2 = warning.new(msg: " NORMAL", colour: "g", hasSubmsg: 1),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var configmemos = std.Vector.new([
|
var configmemos = std.Vector.new([
|
||||||
|
@ -216,7 +271,7 @@ var leftmemos = std.Vector.new([
|
||||||
var fob_3T = warning.new(msg: "FOB BELOW 3T" ),
|
var fob_3T = warning.new(msg: "FOB BELOW 3T" ),
|
||||||
var gpws_flap_mode_off = warning.new(msg: "GPWS FLAP MODE OFF" ),
|
var gpws_flap_mode_off = warning.new(msg: "GPWS FLAP MODE OFF" ),
|
||||||
var atc_datalink_stby = warning.new(msg: "ATC DATALINK STBY" ), # Not yet implemented
|
var atc_datalink_stby = warning.new(msg: "ATC DATALINK STBY" ), # Not yet implemented
|
||||||
var company_datalink_stby = warning.new(msg: "COMPANY DATALINK STBY") # Not yet implemented
|
var company_datalink_stby = warning.new(msg: "COMPANY DATALINK STBY"), # Not yet implemented
|
||||||
]);
|
]);
|
||||||
|
|
||||||
# Right E/WD
|
# Right E/WD
|
||||||
|
|
|
@ -21,6 +21,12 @@ var n1lim = nil;
|
||||||
var gear_agl_cur = nil;
|
var gear_agl_cur = nil;
|
||||||
|
|
||||||
var FWC = {
|
var FWC = {
|
||||||
|
Btn: {
|
||||||
|
clr: props.globals.initNode("/ECAM/buttons/clear-btn", 0, "BOOL"),
|
||||||
|
recall: props.globals.initNode("/ECAM/buttons/recall-btn", 0, "BOOL"),
|
||||||
|
recallStsNormal: props.globals.initNode("/ECAM/buttons/recall-status-normal", 0, "BOOL"),
|
||||||
|
recallStsNormalOutput: props.globals.initNode("/ECAM/buttons/recall-status-normal-output", 0, "BOOL"),
|
||||||
|
},
|
||||||
Monostable: {
|
Monostable: {
|
||||||
phase1: props.globals.initNode("/ECAM/phases/monostable/phase-1-300", 0, "BOOL"),
|
phase1: props.globals.initNode("/ECAM/phases/monostable/phase-1-300", 0, "BOOL"),
|
||||||
phase5: props.globals.initNode("/ECAM/phases/monostable/phase-5", 0, "BOOL"),
|
phase5: props.globals.initNode("/ECAM/phases/monostable/phase-5", 0, "BOOL"),
|
||||||
|
@ -43,20 +49,29 @@ var FWC = {
|
||||||
phase10Set: props.globals.initNode("/ECAM/phases/flipflop/phase-10-set", 0, "BOOL"),
|
phase10Set: props.globals.initNode("/ECAM/phases/flipflop/phase-10-set", 0, "BOOL"),
|
||||||
phase10Reset: props.globals.initNode("/ECAM/phases/flipflop/phase-10-reset", 0, "BOOL"),
|
phase10Reset: props.globals.initNode("/ECAM/phases/flipflop/phase-10-reset", 0, "BOOL"),
|
||||||
phase10Output: props.globals.initNode("/ECAM/phases/flipflop/phase-10-output", 0, "BOOL"),
|
phase10Output: props.globals.initNode("/ECAM/phases/flipflop/phase-10-output", 0, "BOOL"),
|
||||||
|
recallSet: props.globals.initNode("/ECAM/flipflop/recall-set", 0, "BOOL"),
|
||||||
|
recallReset: props.globals.initNode("/ECAM/flipflop/recall-reset", 0, "BOOL"),
|
||||||
|
recallOutput: props.globals.initNode("/ECAM/flipflop/recall-output", 0, "BOOL"),
|
||||||
},
|
},
|
||||||
Timer: {
|
Timer: {
|
||||||
eng1idle: props.globals.initNode("/ECAM/phases/timer/eng1idle", 0, "INT"),
|
eng1idle: props.globals.initNode("/ECAM/phases/timer/eng1idle", 0, "INT"),
|
||||||
eng2idle: props.globals.initNode("/ECAM/phases/timer/eng2idle", 0, "INT"),
|
eng2idle: props.globals.initNode("/ECAM/phases/timer/eng2idle", 0, "INT"),
|
||||||
eng1or2: props.globals.initNode("/ECAM/phases/timer/eng1or2", 0, "INT"),
|
eng1or2: props.globals.initNode("/ECAM/phases/timer/eng1or2", 0, "INT"),
|
||||||
|
toInhibit: props.globals.initNode("/ECAM/phases/timer/to-inhibit", 0, "INT"),
|
||||||
|
ldgInhibit: props.globals.initNode("/ECAM/phases/timer/ldg-inhibit", 0, "INT"),
|
||||||
eng1idleOutput: props.globals.getNode("/ECAM/phases/timer/eng1idle-output"),
|
eng1idleOutput: props.globals.getNode("/ECAM/phases/timer/eng1idle-output"),
|
||||||
eng2idleOutput: props.globals.getNode("/ECAM/phases/timer/eng2idle-output"),
|
eng2idleOutput: props.globals.getNode("/ECAM/phases/timer/eng2idle-output"),
|
||||||
eng1or2Output: props.globals.initNode("/ECAM/phases/timer/eng1or2-output", 0, "INT"),
|
eng1or2Output: props.globals.initNode("/ECAM/phases/timer/eng1or2-output", 0, "INT"),
|
||||||
|
toInhibitOutput: props.globals.getNode("/ECAM/phases/timer/to-inhibit-output"),
|
||||||
|
ldgInhibitOutput: props.globals.getNode("/ECAM/phases/timer/ldg-inhibit-output"),
|
||||||
},
|
},
|
||||||
speed80: props.globals.initNode("/ECAM/phases/speed-gt-80", 0, "BOOL"),
|
speed80: props.globals.initNode("/ECAM/phases/speed-gt-80", 0, "BOOL"),
|
||||||
toPower: props.globals.initNode("/ECAM/phases/to-power-set", 0, "BOOL"),
|
toPower: props.globals.initNode("/ECAM/phases/to-power-set", 0, "BOOL"),
|
||||||
};
|
};
|
||||||
|
|
||||||
var phaseLoop = func() {
|
var phaseLoop = func() {
|
||||||
|
if (pts.Sim.Replay.replayActive.getBoolValue()) { return; }
|
||||||
|
|
||||||
gear_agl = pts.Position.gearAglFt.getValue();
|
gear_agl = pts.Position.gearAglFt.getValue();
|
||||||
gear_comp = pts.Gear.compression[1].getValue();
|
gear_comp = pts.Gear.compression[1].getValue();
|
||||||
myPhase = pts.ECAM.fwcWarningPhase.getValue();
|
myPhase = pts.ECAM.fwcWarningPhase.getValue();
|
||||||
|
@ -115,14 +130,14 @@ var phaseLoop = func() {
|
||||||
|
|
||||||
if (eng == "IAE") {
|
if (eng == "IAE") {
|
||||||
eprlim = getprop("/controls/engines/epr-limit");
|
eprlim = getprop("/controls/engines/epr-limit");
|
||||||
if ((!getprop("/controls/engines/engine[0]/reverser") and !getprop("/controls/engines/engine[1]/reverser")) and (abs(eng1epr - eprlim) <= 0.005 or abs(eng2epr - eprlim) <= 0.005)) {
|
if ((!getprop("/controls/engines/engine[0]/reverser") and !getprop("/controls/engines/engine[1]/reverser")) and (((pts.Controls.Engines.Engine1.throttle.getValue() >= 0.8 or pts.Controls.Engines.Engine2.throttle.getValue() >= 0.8) and pts.PTSSystems.Thrust.flex.getBoolValue()) or (pts.Controls.Engines.Engine1.throttle.getValue() == 1.0 or pts.Controls.Engines.Engine2.throttle.getValue() == 1.0))) {
|
||||||
FWC.toPower.setBoolValue(1);
|
FWC.toPower.setBoolValue(1);
|
||||||
} else {
|
} else {
|
||||||
FWC.toPower.setBoolValue(0);
|
FWC.toPower.setBoolValue(0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
n1lim = getprop("/controls/engines/n1-limit");
|
n1lim = getprop("/controls/engines/n1-limit");
|
||||||
if ((!getprop("/controls/engines/engine[0]/reverser") and !getprop("/controls/engines/engine[1]/reverser")) and (abs(eng1n1 - n1lim) <= 0.1 or abs(eng2n1 - n1lim) <= 0.1)) {
|
if ((!getprop("/controls/engines/engine[0]/reverser") and !getprop("/controls/engines/engine[1]/reverser")) and (((pts.Controls.Engines.Engine1.throttle.getValue() >= 0.8 or pts.Controls.Engines.Engine2.throttle.getValue() >= 0.8) and pts.PTSSystems.Thrust.flex.getBoolValue()) or (pts.Controls.Engines.Engine1.throttle.getValue() == 1.0 or pts.Controls.Engines.Engine2.throttle.getValue() == 1.0))) {
|
||||||
FWC.toPower.setBoolValue(1);
|
FWC.toPower.setBoolValue(1);
|
||||||
} else {
|
} else {
|
||||||
FWC.toPower.setBoolValue(0);
|
FWC.toPower.setBoolValue(0);
|
||||||
|
@ -229,13 +244,42 @@ var phaseLoop = func() {
|
||||||
if ((gnd and twoEngOff and myPhase == 9) and FWC.Monostable.phase1Output.getBoolValue()) {
|
if ((gnd and twoEngOff and myPhase == 9) and FWC.Monostable.phase1Output.getBoolValue()) {
|
||||||
setPhase(10);
|
setPhase(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# FWC Inhibiting
|
||||||
|
myPhase = pts.ECAM.fwcWarningPhase.getValue();
|
||||||
|
if (myPhase >= 3 and myPhase <= 5 and !FWC.Flipflop.recallOutput.getValue()) {
|
||||||
|
FWC.Timer.toInhibit.setValue(1);
|
||||||
|
} else {
|
||||||
|
FWC.Timer.toInhibit.setValue(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (myPhase == 7 or myPhase == 8 and !FWC.Flipflop.recallOutput.getValue()) {
|
||||||
|
FWC.Timer.ldgInhibit.setValue(1);
|
||||||
|
} else {
|
||||||
|
FWC.Timer.ldgInhibit.setValue(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var _lastPhase = nil;
|
var _lastPhase = nil;
|
||||||
var setPhase = func(newPhase) {
|
var setPhase = func(newPhase) {
|
||||||
if (newPhase >= 1 and newPhase <= 10 and _lastPhase != newPhase) {
|
if (newPhase >= 1 and newPhase <= 10 and _lastPhase != newPhase) {
|
||||||
pts.ECAM.fwcWarningPhase.setValue(newPhase);
|
pts.ECAM.fwcWarningPhase.setValue(newPhase);
|
||||||
print("Phase " ~ newPhase);
|
FWC.Flipflop.recallReset.setValue(1);
|
||||||
|
settimer(func() {
|
||||||
|
if (FWC.Flipflop.recallReset.getValue() == 1) { # catch unexpected error, trying something new here
|
||||||
|
FWC.Flipflop.recallReset.setValue(0);
|
||||||
|
} else {
|
||||||
|
die("Exception in ECAM-phases.nas, line 271");
|
||||||
|
}
|
||||||
|
}, 0.1);
|
||||||
_lastPhase = newPhase;
|
_lastPhase = newPhase;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setlistener("/ECAM/buttons/recall-btn", func() {
|
||||||
|
FWC.Flipflop.recallSet.setValue(FWC.Btn.recall.getBoolValue());
|
||||||
|
}, 0, 0);
|
||||||
|
|
||||||
|
var clrBtn = func(btn) {
|
||||||
|
FWC.Btn.clr.setValue(btn);
|
||||||
}
|
}
|
|
@ -10,10 +10,12 @@ var Controls = {
|
||||||
Engine1: {
|
Engine1: {
|
||||||
cutoffSw: props.globals.getNode("/controls/engines/engine[0]/cutoff-switch"),
|
cutoffSw: props.globals.getNode("/controls/engines/engine[0]/cutoff-switch"),
|
||||||
firePb: props.globals.getNode("/controls/engines/engine[0]/fire-btn"),
|
firePb: props.globals.getNode("/controls/engines/engine[0]/fire-btn"),
|
||||||
|
throttle: props.globals.getNode("/controls/engines/engine[0]/throttle"),
|
||||||
},
|
},
|
||||||
Engine2: {
|
Engine2: {
|
||||||
cutoffSw: props.globals.getNode("/controls/engines/engine[1]/cutoff-switch"),
|
cutoffSw: props.globals.getNode("/controls/engines/engine[1]/cutoff-switch"),
|
||||||
firePb: props.globals.getNode("/controls/engines/engine[1]/fire-btn"),
|
firePb: props.globals.getNode("/controls/engines/engine[1]/fire-btn"),
|
||||||
|
throttle: props.globals.getNode("/controls/engines/engine[1]/throttle"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -54,9 +56,18 @@ var Position = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var Sim = {
|
var Sim = {
|
||||||
|
Replay: {
|
||||||
|
replayActive: props.globals.getNode("/sim/replay/replay-state"),
|
||||||
|
},
|
||||||
Time: {
|
Time: {
|
||||||
elapsedSec: props.globals.getNode("/sim/time/elapsed-sec"),
|
elapsedSec: props.globals.getNode("/sim/time/elapsed-sec"),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var PTSSystems = {
|
||||||
|
Thrust: {
|
||||||
|
flex: props.globals.getNode("/systems/thrust/lim-flex"),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
setprop("/systems/acconfig/property-tree-setup-loaded", 1);
|
setprop("/systems/acconfig/property-tree-setup-loaded", 1);
|
||||||
|
|
|
@ -695,6 +695,42 @@
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/electrical/relay/galley-bus-1-shed-switch/contact-pos">
|
||||||
|
<default value="1"/>
|
||||||
|
<test logic="OR" value="0">
|
||||||
|
/controls/electrical/switches/galley eq 1
|
||||||
|
<test logic="AND">
|
||||||
|
/systems/electrical/relay/gen-1-glc/output ne 0
|
||||||
|
/systems/electrical/relay/gen-2-glc/output ne 0
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/electrical/relay/galley-bus-1-shed-switch/output">
|
||||||
|
<default value="0"/>
|
||||||
|
<test value="/systems/electrical/bus/ac-1">
|
||||||
|
/systems/electrical/relay/galley-bus-1-shed-switch/contact-pos eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/electrical/relay/galley-bus-2-shed-switch/contact-pos">
|
||||||
|
<default value="1"/>
|
||||||
|
<test logic="OR" value="0">
|
||||||
|
/controls/electrical/switches/galley eq 1
|
||||||
|
<test logic="AND">
|
||||||
|
/systems/electrical/relay/gen-1-glc/output ne 0
|
||||||
|
/systems/electrical/relay/gen-2-glc/output ne 0
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/electrical/relay/galley-bus-2-shed-switch/output">
|
||||||
|
<default value="0"/>
|
||||||
|
<test value="/systems/electrical/bus/ac-2">
|
||||||
|
/systems/electrical/relay/galley-bus-2-shed-switch/contact-pos eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
<!-- AC Bus 1 -->
|
<!-- AC Bus 1 -->
|
||||||
<switch name="/systems/electrical/bus/ac-1-src">
|
<switch name="/systems/electrical/bus/ac-1-src">
|
||||||
<description>Tell which source is being used for priority purpose</description>
|
<description>Tell which source is being used for priority purpose</description>
|
||||||
|
@ -1047,6 +1083,29 @@
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
<!-- DC Service Bus -->
|
||||||
|
<switch name="/systems/electrical/relay/dc-svc-bus-contactor-tr/contact-pos"> <!-- TODO: via 1PX CB on 124VU -->
|
||||||
|
<default value="0"/>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/electrical/relay/dc-svc-bus-contactor-tr/output">
|
||||||
|
<default value="0"/>
|
||||||
|
<test value="/systems/electrical/relay/tr-contactor-2/output">
|
||||||
|
/systems/electrical/relay/dc-svc-bus-contactor-tr/contact-pos eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/electrical/relay/dc-svc-bus-contactor-bus-2/contact-pos"> <!-- TODO: via 7PN CB on 124VU -->
|
||||||
|
<default value="1"/>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/systems/electrical/relay/dc-svc-bus-contactor-bus-2/output">
|
||||||
|
<default value="0"/>
|
||||||
|
<test value="/systems/electrical/bus/dc-2">
|
||||||
|
/systems/electrical/relay/dc-svc-bus-contactor-bus-2/contact-pos eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
<!-- DC Bus 1 -->
|
<!-- DC Bus 1 -->
|
||||||
<switch name="/systems/electrical/bus/dc-1-src">
|
<switch name="/systems/electrical/bus/dc-1-src">
|
||||||
<description>Tell which source is being used for priority purpose</description>
|
<description>Tell which source is being used for priority purpose</description>
|
||||||
|
@ -1103,6 +1162,15 @@
|
||||||
</function>
|
</function>
|
||||||
</fcs_function>
|
</fcs_function>
|
||||||
|
|
||||||
|
<fcs_function name="/systems/electrical/bus/dc-service-bus">
|
||||||
|
<function>
|
||||||
|
<max>
|
||||||
|
<property>/systems/electrical/relay/dc-svc-bus-contactor-tr/output</property>
|
||||||
|
<property>/systems/electrical/relay/dc-svc-bus-contactor-bus-2/output</property>
|
||||||
|
</max>
|
||||||
|
</function>
|
||||||
|
</fcs_function>
|
||||||
|
|
||||||
<!-- DC Bus Tie DC Bus Relays (continued) -->
|
<!-- DC Bus Tie DC Bus Relays (continued) -->
|
||||||
<!-- These outputs are from the DC Bus to the DC Bus Tie -->
|
<!-- These outputs are from the DC Bus to the DC Bus Tie -->
|
||||||
<switch name="/systems/electrical/relay/dc-bus-tie-dc-1/output-tie">
|
<switch name="/systems/electrical/relay/dc-bus-tie-dc-1/output-tie">
|
||||||
|
@ -1391,6 +1459,5 @@
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
</channel>
|
</channel>
|
||||||
|
|
||||||
<!-- TODO: TR should have a fault which should include failure OR loss of input power. It remains latched at fault and can only be reset on ground. -->
|
|
||||||
</system>
|
</system>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<system name="A320: FWC">
|
<system name="A320: FWC">
|
||||||
|
|
||||||
<channel name="FWC">
|
<channel name="FWC" execrate="8">
|
||||||
|
|
||||||
<actuator name="/ECAM/phases/timer/eng1idle-output">
|
<actuator name="/ECAM/phases/timer/eng1idle-output">
|
||||||
<description>Timer for the ECAM system</description>
|
<description>Timer for the ECAM system</description>
|
||||||
|
@ -26,6 +26,20 @@
|
||||||
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
|
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
|
||||||
<rate_limit sense="incr">0.033</rate_limit> <!-- 30 seconds -->
|
<rate_limit sense="incr">0.033</rate_limit> <!-- 30 seconds -->
|
||||||
</actuator>
|
</actuator>
|
||||||
|
|
||||||
|
<actuator name="/ECAM/phases/timer/to-inhibit-output">
|
||||||
|
<description>Timer for the ECAM system</description>
|
||||||
|
<input>/ECAM/phases/timer/to-inhibit</input>
|
||||||
|
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
|
||||||
|
<rate_limit sense="incr">0.33</rate_limit> <!-- 3 seconds -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
|
<actuator name="/ECAM/phases/timer/ldg-inhibit-output">
|
||||||
|
<description>Timer for the ECAM system</description>
|
||||||
|
<input>/ECAM/phases/timer/ldg-inhibit</input>
|
||||||
|
<rate_limit sense="decr">100</rate_limit> <!-- Instant -->
|
||||||
|
<rate_limit sense="incr">0.33</rate_limit> <!-- 3 seconds -->
|
||||||
|
</actuator>
|
||||||
</channel>
|
</channel>
|
||||||
|
|
||||||
</system>
|
</system>
|
||||||
|
|
|
@ -530,6 +530,17 @@
|
||||||
<output>/ECAM/phases/flipflop/phase-10-output</output>
|
<output>/ECAM/phases/flipflop/phase-10-output</output>
|
||||||
</flipflop>
|
</flipflop>
|
||||||
|
|
||||||
|
<flipflop>
|
||||||
|
<type>RS</type>
|
||||||
|
<S>
|
||||||
|
<property>/ECAM/flipflop/recall-set</property>
|
||||||
|
</S>
|
||||||
|
<R>
|
||||||
|
<property>/ECAM/flipflop/recall-reset</property>
|
||||||
|
</R>
|
||||||
|
<output>/ECAM/flipflop/recall-output</output>
|
||||||
|
</flipflop>
|
||||||
|
|
||||||
<flipflop>
|
<flipflop>
|
||||||
<type>monostable</type>
|
<type>monostable</type>
|
||||||
<time>
|
<time>
|
||||||
|
@ -576,6 +587,20 @@
|
||||||
<output>/ECAM/phases/monostable/phase-7-output</output>
|
<output>/ECAM/phases/monostable/phase-7-output</output>
|
||||||
</flipflop>
|
</flipflop>
|
||||||
|
|
||||||
|
<flipflop>
|
||||||
|
<type>monostable</type>
|
||||||
|
<time>
|
||||||
|
<value>5.0</value>
|
||||||
|
</time>
|
||||||
|
<S>
|
||||||
|
<property>/ECAM/buttons/recall-status-normal</property>
|
||||||
|
</S>
|
||||||
|
<R>
|
||||||
|
<property>/ECAM/buttons/clear-btn</property>
|
||||||
|
</R>
|
||||||
|
<output>/ECAM/buttons/recall-status-normal-output</output>
|
||||||
|
</flipflop>
|
||||||
|
|
||||||
<!-- falling edge detector - take inverse of following -->
|
<!-- falling edge detector - take inverse of following -->
|
||||||
<flipflop>
|
<flipflop>
|
||||||
<type>monostable</type>
|
<type>monostable</type>
|
||||||
|
|
Loading…
Reference in a new issue