2018-10-01 01:04:22 +00:00
# A3XX ECAM
2019-05-08 23:27:26 +00:00
# Joshua Davidson (Octal450)
2017-06-02 00:53:50 +00:00
2019-05-08 23:27:26 +00:00
# Copyright (c) 2019 Joshua Davidson (Octal450)
2017-07-13 17:30:33 +00:00
2018-09-29 23:48:17 +00:00
var stateL = 0;
var stateR = 0;
var thrustL = 0;
var thrustR = 0;
var elec = 0;
var speed = 0;
var wow = 0;
var altitude = 0;
2018-10-01 01:04:22 +00:00
var phase = 1;
var toPowerSet = 0;
var eng = "XX";
var eprlim = 0;
var n1lim = 0;
var mode = "XX";
var modeI = "XX";
2018-11-12 01:06:24 +00:00
var man_sel = 0;
var fault_sel = 0;
2018-11-20 17:46:25 +00:00
var fault_page = "";
2018-11-12 01:06:24 +00:00
var warnPhase = 1;
var page = "door";
var aileron = 0;
var elevator = 0;
var elapsedSec = 0;
var fctlCounting = 0;
var fctlTime = 0;
var showAPUPage = 0;
var APUMaster = 0;
var APURPM = 0;
var APUTime = 0;
var APUCounting = 0;
var engModeSel = 0;
var showENGPage = 0;
var ENGTime = 0;
var ENGCounting = 0;
var flapLever = 0;
var CRZTime = 0;
var CRZCondition = 0;
2019-01-13 04:56:05 +00:00
var CRZCounting = 0;
var agl = 0;
2018-12-05 15:27:42 +00:00
var ap_active = 0;
2018-11-19 15:13:52 +00:00
var athr_active = 0;
2017-12-30 04:44:41 +00:00
setprop("/ECAM/left-msg", "NONE");
2017-06-02 00:53:50 +00:00
setprop("/position/gear-agl-ft", 0);
2017-12-30 04:44:41 +00:00
# w = White, b = Blue, g = Green, a = Amber, r = Red
2017-08-14 15:29:00 +00:00
2017-12-30 04:44:41 +00:00
var ECAM = {
init: func() {
2017-12-30 15:27:24 +00:00
setprop("/ECAM/engine-start-time", 0);
setprop("/ECAM/engine-start-time-switch", 0);
setprop("/ECAM/to-memo-enable", 1);
2017-12-30 15:54:45 +00:00
setprop("/ECAM/to-config", 0);
2018-01-14 16:19:10 +00:00
setprop("/ECAM/ldg-memo-enable", 0);
2018-10-02 13:31:48 +00:00
setprop("/systems/gear/landing-gear-warning-light", 0);
2018-09-14 09:35:00 +00:00
setprop("/ECAM/Lower/page", "door");
setprop("/ECAM/Lower/man-select", 0);
2018-09-14 13:35:05 +00:00
setprop("/ECAM/Lower/fault-select", 0);
2018-11-20 17:46:25 +00:00
setprop("/ECAM/Lower/fault-page", "");
2018-09-14 19:56:30 +00:00
setprop("/ECAM/Lower/apu-timer", 0);
setprop("/ECAM/Lower/eng-timer", 0);
setprop("/ECAM/Lower/fctl-timer", 0);
2018-09-13 22:52:24 +00:00
setprop("/ECAM/Lower/light/apu", 0);
setprop("/ECAM/Lower/light/bleed", 0);
setprop("/ECAM/Lower/light/cond", 0);
setprop("/ECAM/Lower/light/door", 0);
setprop("/ECAM/Lower/light/elec", 0);
setprop("/ECAM/Lower/light/eng", 0);
setprop("/ECAM/Lower/light/fctl", 0);
setprop("/ECAM/Lower/light/fuel", 0);
setprop("/ECAM/Lower/light/hyd", 0);
setprop("/ECAM/Lower/light/press", 0);
setprop("/ECAM/Lower/light/sts", 0);
setprop("/ECAM/Lower/light/wheel", 0);
2018-11-20 17:46:25 +00:00
setprop("/ECAM/Lower/light/clr", 0);
2018-10-01 01:04:22 +00:00
setprop("/ECAM/warning-phase", 1);
setprop("/ECAM/warning-phase-10-time", 0);
2018-12-05 15:27:42 +00:00
setprop("/ECAM/ap-off-time", 0);
2018-11-19 15:13:52 +00:00
setprop("/ECAM/athr-off-time", 0);
2018-12-05 15:27:42 +00:00
setprop("/it-autoflight/output/ap-warning", 0);
setprop("/it-autoflight/output/athr-warning", 0);
var ap_off_time = getprop("/ECAM/ap-off-time");
2018-11-19 15:13:52 +00:00
var athr_off_time = getprop("/ECAM/athr-off-time");
2018-09-13 22:52:24 +00:00
LowerECAM.reset();
2017-12-30 04:44:41 +00:00
},
MSGclr: func() {
setprop("/ECAM/ecam-checklist-active", 0);
setprop("/ECAM/left-msg", "NONE");
setprop("/ECAM/msg/line1", "");
2017-08-14 15:29:00 +00:00
setprop("/ECAM/msg/line2", "");
setprop("/ECAM/msg/line3", "");
setprop("/ECAM/msg/line4", "");
setprop("/ECAM/msg/line5", "");
setprop("/ECAM/msg/line6", "");
setprop("/ECAM/msg/line7", "");
setprop("/ECAM/msg/line8", "");
2018-07-31 14:11:12 +00:00
setprop("/ECAM/msg/linec1", "w");
setprop("/ECAM/msg/linec2", "w");
setprop("/ECAM/msg/linec3", "w");
setprop("/ECAM/msg/linec4", "w");
setprop("/ECAM/msg/linec5", "w");
setprop("/ECAM/msg/linec6", "w");
setprop("/ECAM/msg/linec7", "w");
setprop("/ECAM/msg/linec8", "w");
2018-07-30 11:53:33 +00:00
setprop("/ECAM/rightmsg/line1", "");
setprop("/ECAM/rightmsg/line2", "");
setprop("/ECAM/rightmsg/line3", "");
setprop("/ECAM/rightmsg/line4", "");
setprop("/ECAM/rightmsg/line5", "");
setprop("/ECAM/rightmsg/line6", "");
setprop("/ECAM/rightmsg/line7", "");
setprop("/ECAM/rightmsg/line8", "");
2018-07-31 14:11:12 +00:00
setprop("/ECAM/rightmsg/linec1", "w");
setprop("/ECAM/rightmsg/linec2", "w");
setprop("/ECAM/rightmsg/linec3", "w");
setprop("/ECAM/rightmsg/linec4", "w");
setprop("/ECAM/rightmsg/linec5", "w");
setprop("/ECAM/rightmsg/linec6", "w");
setprop("/ECAM/rightmsg/linec7", "w");
setprop("/ECAM/rightmsg/linec8", "w");
2017-12-30 04:44:41 +00:00
},
2017-12-30 15:27:24 +00:00
loop: func() {
2017-12-30 04:44:41 +00:00
stateL = getprop("/engines/engine[0]/state");
stateR = getprop("/engines/engine[1]/state");
thrustL = getprop("/systems/thrust/state1");
thrustR = getprop("/systems/thrust/state2");
elec = getprop("/systems/electrical/on");
2018-10-01 01:04:22 +00:00
speed = getprop("/instrumentation/airspeed-indicator/indicated-speed-kt");
2018-01-14 16:19:10 +00:00
wow = getprop("/gear/gear[0]/wow");
2018-10-01 01:04:22 +00:00
eng = getprop("/options/eng");
2017-12-30 04:44:41 +00:00
2017-12-30 15:27:24 +00:00
if (stateL == 3 and stateR == 3 and wow == 1) {
if (getprop("/ECAM/engine-start-time-switch") != 1) {
setprop("/ECAM/engine-start-time", getprop("/sim/time/elapsed-sec"));
setprop("/ECAM/engine-start-time-switch", 1);
}
} else if (wow == 1) {
if (getprop("/ECAM/engine-start-time-switch") != 0) {
setprop("/ECAM/engine-start-time-switch", 0);
}
}
2018-11-19 12:47:31 +00:00
if (getprop("/ECAM/warning-phase") >= 3) {
2017-12-30 15:27:24 +00:00
setprop("/ECAM/to-memo-enable", 0);
2018-11-19 12:47:31 +00:00
} else {
2017-12-30 15:27:24 +00:00
setprop("/ECAM/to-memo-enable", 1);
}
2018-01-14 16:19:10 +00:00
if (getprop("/position/gear-agl-ft") <= 2000 and (getprop("/FMGC/status/phase") == 3 or getprop("/FMGC/status/phase") == 4 or getprop("/FMGC/status/phase") == 5) and wow == 0) {
setprop("/ECAM/ldg-memo-enable", 1);
2018-10-01 01:04:22 +00:00
} else if (getprop("/ECAM/left-msg") == "LDG-MEMO" and speed <= 80 and wow == 1) {
2018-01-14 16:19:10 +00:00
setprop("/ECAM/ldg-memo-enable", 0);
} else if (getprop("/ECAM/left-msg") != "LDG-MEMO") {
setprop("/ECAM/ldg-memo-enable", 0);
}
2018-11-17 14:18:11 +00:00
if (stateL == 3 and stateR == 3 and getprop("/ECAM/engine-start-time") + 120 < getprop("/sim/time/elapsed-sec") and getprop("/ECAM/to-memo-enable") == 1 and wow == 1) {
2017-12-30 04:44:41 +00:00
setprop("/ECAM/left-msg", "TO-MEMO");
2018-12-28 12:40:12 +00:00
} elsif (getprop("/ECAM/ldg-memo-enable") == 1) {
2018-01-14 16:19:10 +00:00
setprop("/ECAM/left-msg", "LDG-MEMO");
2018-12-28 12:40:12 +00:00
} elsif (getprop("/ECAM/show-left-msg") == 1) {
setprop("/ECAM/left-msg", "MSG"); # messages should have priority over memos - how?
2017-12-30 04:44:41 +00:00
} else {
setprop("/ECAM/left-msg", "NONE");
}
2017-12-30 15:54:45 +00:00
2018-11-15 04:02:59 +00:00
if (getprop("/ECAM/show-right-msg") == 1) {
2018-07-30 11:53:33 +00:00
setprop("/ECAM/right-msg", "MSG");
} else {
setprop("/ECAM/right-msg", "NONE");
}
2018-11-19 15:43:55 +00:00
if (getprop("/controls/autobrake/mode") == 3 and getprop("/controls/lighting/no-smoking-sign") == 1 and getprop("/controls/lighting/seatbelt-sign") == 1 and getprop("/controls/flight/speedbrake-arm") == 1 and getprop("/controls/flight/flap-pos") > 0
2017-12-30 15:54:45 +00:00
and getprop("/controls/flight/flap-pos") < 5) {
2019-01-14 15:49:31 +00:00
# Do nothing
2017-12-30 15:54:45 +00:00
} else {
setprop("/ECAM/to-config", 0);
}
2018-09-13 22:52:24 +00:00
2018-10-01 01:04:22 +00:00
if (eng == "IAE") {
eprlim = getprop("/controls/engines/epr-limit");
if (abs(getprop("/engines/engine[0]/epr-actual") - eprlim) <= 0.005 or abs(getprop("/engines/engine[0]/epr-actual") - eprlim) <= 0.005) {
toPowerSet = 1;
} else {
toPowerSet = 0;
}
} else {
n1lim = getprop("/controls/engines/n1-limit");
if (abs(getprop("/engines/engine[0]/n1-actual") - n1lim) <= 0.1 or abs(getprop("/engines/engine[0]/n1-actual") - n1lim) <= 0.1) {
toPowerSet = 1;
} else {
toPowerSet = 0;
}
}
2018-11-19 15:13:52 +00:00
# AP / ATHR warnings
2018-12-05 15:27:42 +00:00
if (ap_active == 1 and getprop("/it-autoflight/output/ap-warning") == 0) {
ap_active = 0;
} elsif (ap_active == 1 and getprop("/it-autoflight/output/ap-warning") == 1 and getprop("/sim/time/elapsed-sec") > (getprop("/ECAM/ap-off-time") + 9)) {
ap_active = 0;
setprop("/it-autoflight/output/ap-warning", 0);
} elsif (ap_active == 0 and getprop("/it-autoflight/output/ap-warning") != 0) {
ap_active = 1;
2018-11-19 15:13:52 +00:00
}
2018-12-05 16:10:33 +00:00
if (ap_active == 1 and getprop("/it-autoflight/output/ap-warning") == 1 and getprop("/sim/time/elapsed-sec") > (getprop("/ECAM/ap-off-time") + 3) and getprop("/ECAM/warnings/master-warning-light") == 1) {
setprop("/ECAM/warnings/master-warning-light", 0);
}
2019-01-28 13:52:58 +00:00
if (getprop("/it-autoflight/output/ap-warning") == 2 and (getprop("/it-autoflight/output/ap1") == 1 or getprop("/it-autoflight/output/ap2") == 1)) {
setprop("/it-autoflight/output/ap-warning", 0);
}
2018-12-05 15:27:42 +00:00
if (athr_active == 1 and getprop("/it-autoflight/output/athr-warning") == 0) {
athr_active = 0;
} elsif (athr_active == 1 and getprop("/it-autoflight/output/athr-warning") == 1 and getprop("/sim/time/elapsed-sec") > (getprop("/ECAM/athr-off-time") + 9)) {
athr_active = 0;
setprop("/it-autoflight/output/athr-warning", 0);
} elsif (athr_active == 0 and getprop("/it-autoflight/output/athr-warning") != 0) {
athr_active = 1;
2018-11-19 15:13:52 +00:00
}
2018-12-05 15:27:42 +00:00
if (athr_active == 1 and getprop("/it-autoflight/output/athr-warning") == 1 and getprop("/sim/time/elapsed-sec") > (getprop("/ECAM/athr-off-time") + 3) and getprop("/ECAM/warnings/master-caution-light") == 1) {
setprop("/ECAM/warnings/master-caution-light", 0);
2018-11-19 15:13:52 +00:00
}
2019-01-28 13:52:58 +00:00
if (getprop("/it-autoflight/output/athr-warning") == 2 and getprop("/it-autoflight/output/athr") == 1) {
setprop("/it-autoflight/output/athr-warning", 0);
}
2018-12-05 15:27:42 +00:00
2018-10-01 01:04:22 +00:00
# Warning Phases
if (getprop("/systems/electrical/bus/ac1") < 110 and getprop("/systems/electrical/bus/ac2") < 110 and getprop("/systems/electrical/bus/ac-ess") < 110) { # Reset warning phases
if (getprop("/ECAM/warning-phase") != 1) {
setprop("/ECAM/warning-phase", 1);
}
} else {
phase = getprop("/ECAM/warning-phase");
mode = getprop("/modes/pfd/fma/pitch-mode");
modeI = getprop("/it-autoflight/mode/vert");
if (phase == 1 and (stateL == 3 or stateR == 3)) {
setprop("/ECAM/warning-phase", 2);
} else if (phase == 2 and toPowerSet) {
setprop("/ECAM/warning-phase", 3);
} else if (phase == 3 and speed >= 80) {
setprop("/ECAM/warning-phase", 4);
} else if (phase == 4 and getprop("/fdm/jsbsim/position/wow") == 0) { # Liftoff
setprop("/ECAM/warning-phase", 5);
} else if (phase == 5 and getprop("/position/gear-agl-ft") >= 1500) {
setprop("/ECAM/warning-phase", 6);
} else if (phase == 6 and getprop("/position/gear-agl-ft") < 800) {
if (mode == "OP CLB" or mode == "CLB" or (modeI == "V/S" and getprop("/it-autoflight/input/vs") >= 100) or (modeI == "FPA" and getprop("/it-autoflight/input/fpa") >= 0.1)) {
# Do not do this if we are climbing, not in FCOM, but prevents terrain from causing early mode change. If this ends up using baro alt, not radio, then delete this if
} else {
setprop("/ECAM/warning-phase", 7);
}
} else if (phase == 7 and getprop("/fdm/jsbsim/position/wow") == 1) { # Touchdown
setprop("/ECAM/warning-phase", 8);
} else if (phase == 8 and speed < 80) {
setprop("/ECAM/warning-phase", 9);
} else if (phase == 9 and (stateL == 0 or stateR == 0)) {
setprop("/ECAM/warning-phase", 10);
setprop("/ECAM/warning-phase-10-time", getprop("/sim/time/elapsed-sec"));
} else if (phase == 10 and getprop("/ECAM/warning-phase-10-time") + 300 < getprop("/sim/time/elapsed-sec")) { # After 5 mins, reset to phase 1
setprop("/ECAM/warning-phase", 1);
}
}
2018-09-13 22:52:24 +00:00
LowerECAM.loop();
2017-12-30 15:54:45 +00:00
},
toConfig: func() {
2018-01-14 03:38:47 +00:00
stateL = getprop("/engines/engine[0]/state");
stateR = getprop("/engines/engine[1]/state");
2018-01-14 16:19:10 +00:00
wow = getprop("/gear/gear[0]/wow");
2018-01-14 03:38:47 +00:00
2018-11-17 14:18:11 +00:00
if ((getprop("/ECAM/warning-phase") == 2 or getprop("/ECAM/warning-phase") == 9) and wow == 1 and (stateL == 3 or stateR == 3) and getprop("/ECAM/left-msg") != "TO-MEMO") {
2018-01-14 03:38:47 +00:00
setprop("/ECAM/to-memo-enable", 1);
setprop("/ECAM/engine-start-time", getprop("/ECAM/engine-start-time") - 120);
}
2019-01-14 15:49:31 +00:00
if (getprop("/controls/autobrake/mode") == 3 and getprop("/controls/switches/no-smoking-sign") == 1 and getprop("/controls/switches/seatbelt-sign") == 1 and getprop("/controls/flight/speedbrake-arm") == 1 and getprop("/controls/flight/flap-pos") > 0
and getprop("/controls/flight/flap-pos") < 5) {
setprop("/ECAM/to-config", 1);
}
},
2017-12-30 04:44:41 +00:00
};
2017-08-14 15:29:00 +00:00
2017-12-30 04:44:41 +00:00
ECAM.MSGclr();
2018-09-13 22:52:24 +00:00
2018-11-12 01:06:24 +00:00
# Lower ECAM Pages
2018-09-13 22:52:24 +00:00
var LowerECAM = {
button: func(b) {
2019-03-16 17:13:35 +00:00
man_sel = getprop("/ECAM/Lower/man-select");
if (b == "clr" and getprop("/it-autoflight/output/athr-warning") == 2) {
setprop("/it-autoflight/output/athr-warning", 0);
setprop("/ECAM/Lower/light/clr", 0);
setprop("/ECAM/warnings/master-caution-light", 0);
return;
}
if (b == "clr" and getprop("/it-autoflight/output/ap-warning") == 2) {
setprop("/it-autoflight/output/ap-warning", 0);
setprop("/ECAM/Lower/light/clr", 0);
setprop("/ECAM/warnings/master-warning-light", 0);
return;
}
2019-02-08 20:05:54 +00:00
if (b == "clr" and getprop("/ECAM/Lower/man-select") == 0 and getprop("/ECAM/Lower/fault-select") == 0) {
ecam.ECAM_controller.clear();
2019-03-20 16:29:54 +00:00
return;
2019-02-08 20:05:54 +00:00
}
2018-12-05 16:10:33 +00:00
2018-11-20 17:46:25 +00:00
if (getprop("/ECAM/Lower/fault-select") == 0) {
if (b != "clr") {
if (!man_sel) {
setprop("/ECAM/Lower/man-select", 1);
setprop("/ECAM/Lower/page", b);
setprop("/ECAM/Lower/light/" ~ b, 1);
} else {
if (b == getprop("/ECAM/Lower/page")) {
setprop("/ECAM/Lower/man-select", 0);
LowerECAM.loop();
setprop("/ECAM/Lower/light/" ~ b, 0);
} else {
setprop("/ECAM/Lower/light/" ~ getprop("/ECAM/Lower/page"), 0);
setprop("/ECAM/Lower/page", b);
setprop("/ECAM/Lower/light/" ~ b, 1);
}
}
2018-12-07 17:57:54 +00:00
} elsif (getprop("/ECAM/Lower/light/clr") == 1) {
setprop("/ECAM/Lower/light/clr", 0);
2018-11-20 17:46:25 +00:00
}
} else {
if (b == "clr") {
setprop("/ECAM/Lower/light/clr", 0);
setprop("/ECAM/Lower/fault-select", 0);
setprop("/ECAM/Lower/fault-page", "");
LowerECAM.loop();
} elsif (!man_sel) {
2018-09-14 13:35:05 +00:00
setprop("/ECAM/Lower/man-select", 1);
2018-09-14 09:35:00 +00:00
setprop("/ECAM/Lower/page", b);
setprop("/ECAM/Lower/light/" ~ b, 1);
2018-09-14 13:35:05 +00:00
} else {
2018-11-12 01:06:24 +00:00
if (b == getprop("/ECAM/Lower/page")) {
2018-09-14 13:35:05 +00:00
setprop("/ECAM/Lower/man-select", 0);
setprop("/ECAM/Lower/light/" ~ b, 0);
2018-11-20 17:46:25 +00:00
setprop("/ECAM/Lower/fault-select", 1);
setprop("/ECAM/Lower/page", getprop("/ECAM/Lower/fault-page"));
2018-09-14 13:35:05 +00:00
} else {
setprop("/ECAM/Lower/light/" ~ getprop("/ECAM/Lower/page"), 0);
setprop("/ECAM/Lower/page", b);
setprop("/ECAM/Lower/light/" ~ b, 1);
}
2018-09-14 09:35:00 +00:00
}
}
2018-09-13 22:52:24 +00:00
},
loop: func() {
2018-11-12 01:06:24 +00:00
man_sel = getprop("/ECAM/Lower/man-select");
fault_sel = getprop("/ECAM/Lower/fault-select");
2018-11-20 17:46:25 +00:00
fault_page = getprop("/ECAM/Lower/fault-page");
2018-11-12 01:06:24 +00:00
page = getprop("/ECAM/Lower/page");
2018-10-01 01:04:22 +00:00
if (!man_sel) {
if (!fault_sel) {
2018-11-12 01:06:24 +00:00
warnPhase = getprop("/ECAM/warning-phase");
2019-01-13 04:58:40 +00:00
aileron = getprop("/fdm/jsbsim/fbw/aileron-sidestick");
elevator = getprop("/fdm/jsbsim/fbw/elevator-sidestick");
APUMaster = getprop("/controls/APU/master");
APURPM = getprop("/systems/apu/rpm");
stateL = getprop("/engines/engine[0]/state");
stateR = getprop("/engines/engine[1]/state");
engModeSel = getprop("/controls/engines/engine-start-switch");
elapsedSec = getprop("/sim/time/elapsed-sec");
if (warnPhase == 2) {
if (abs(aileron) > 0.3 or abs(elevator) > 0.3) {
fctlTime = elapsedSec;
fctlCounting = 1;
} else if (fctlCounting) {
if (fctlTime + 20 < elapsedSec) {
fctlCounting = 0;
}
}
} else {
fctlCounting = 0;
}
if (APURPM > 95) {
if (APUTime + 10 < elapsedSec) {
APUCounting = 0;
}
} else {
if (APUMaster) {
APUTime = elapsedSec;
APUCounting = 1;
} else {
APUCounting = 0;
}
}
if ((APURPM <= 95 or APUCounting) and APUMaster) {
showAPUPage = 1;
} else {
showAPUPage = 0;
}
if (stateL == 3 or stateR == 3) {
if (ENGCounting and ENGTime + 10 < elapsedSec) {
ENGCounting = 0;
}
}
if (((stateL > 0 and stateL != 3) or (stateR > 0 and stateR != 3)) and engModeSel == 2) {
ENGTime = elapsedSec;
ENGCounting = 1;
} else if ((stateL == 0 and stateR == 0) or engModeSel == 1) {
ENGCounting = 0;
}
2018-11-12 01:06:24 +00:00
2019-01-13 04:58:40 +00:00
if (ENGCounting or engModeSel == 0) {
showENGPage = 1;
} else {
showENGPage = 0;
}
2018-11-12 01:06:24 +00:00
if (warnPhase == 1 or warnPhase == 10) {
if (showENGPage) {
if (page != "eng") {
setprop("/ECAM/Lower/page", "eng");
}
} else if (showAPUPage) {
if (page != "apu") {
setprop("/ECAM/Lower/page", "apu");
}
} else if (page != "door") {
setprop("/ECAM/Lower/page", "door");
2018-09-29 01:21:34 +00:00
}
2018-11-12 01:06:24 +00:00
} else if (warnPhase == 2) {
if (showENGPage) {
if (page != "eng") {
setprop("/ECAM/Lower/page", "eng");
}
} else if (showAPUPage) {
if (page != "apu") {
setprop("/ECAM/Lower/page", "apu");
}
} else if (fctlCounting == 1) {
if (page != "fctl") {
setprop("/ECAM/Lower/page", "fctl");
}
} else if (page != "wheel") {
setprop("/ECAM/Lower/page", "wheel");
2018-09-14 22:38:12 +00:00
}
2019-01-13 04:56:05 +00:00
} else if (warnPhase >= 3 and warnPhase <= 5) {
if (page != "eng") {
setprop("/ECAM/Lower/page", "eng");
}
} else if (warnPhase >= 7 and warnPhase <= 9) {
if (showENGPage) {
if (page != "eng") {
setprop("/ECAM/Lower/page", "eng");
}
} else if (showAPUPage) {
if (page != "apu") {
setprop("/ECAM/Lower/page", "apu");
}
} else if (page != "wheel") {
setprop("/ECAM/Lower/page", "wheel");
}
} else if (warnPhase == 6) {
2018-11-12 01:06:24 +00:00
flapLever = getprop("/controls/flight/flap-lever");
2019-01-13 04:56:05 +00:00
gearLever = getprop("/controls/gear/gear-down");
agl = getprop("/position/gear-agl-ft");
2018-11-12 01:06:24 +00:00
2019-01-13 04:56:05 +00:00
if (CRZCounting and (toPowerSet or flapLever > 0) and !CRZCondition) {
2018-11-12 01:06:24 +00:00
if (CRZTime + 60 < elapsedSec) {
CRZCondition = 1;
2019-01-13 04:56:05 +00:00
CRZCounting = 0;
2018-11-12 01:06:24 +00:00
} else {
CRZCondition = 0;
}
2019-01-13 04:56:05 +00:00
}
if (!CRZCounting and (toPowerSet or flapLever > 0) and !CRZCondition) {
2018-11-12 01:06:24 +00:00
CRZTime = elapsedSec;
CRZCondition = 0;
2019-01-13 04:56:05 +00:00
CRZCounting = 1;
2018-09-29 01:21:34 +00:00
}
2018-11-12 01:06:24 +00:00
2019-01-13 04:56:05 +00:00
if (CRZCondition or (flapLever == 0 and !toPowerSet)) {
if (gearLever and agl <= 16000) {
if (page != "wheel") {
setprop("/ECAM/Lower/page", "wheel");
}
} else if (page != "crz") {
2018-11-12 01:06:24 +00:00
setprop("/ECAM/Lower/page", "crz");
}
} else {
if (showENGPage) {
if (page != "eng") {
setprop("/ECAM/Lower/page", "eng");
}
} else if (showAPUPage) {
if (page != "apu") {
setprop("/ECAM/Lower/page", "apu");
}
} else if (page != "eng") {
setprop("/ECAM/Lower/page", "eng");
}
2018-09-14 19:56:30 +00:00
}
2018-09-14 13:35:05 +00:00
}
2018-11-20 17:46:25 +00:00
} else {
setprop("/ECAM/Lower/light/apu", 0);
setprop("/ECAM/Lower/light/bleed", 0);
setprop("/ECAM/Lower/light/cond", 0);
setprop("/ECAM/Lower/light/door", 0);
setprop("/ECAM/Lower/light/elec", 0);
setprop("/ECAM/Lower/light/eng", 0);
setprop("/ECAM/Lower/light/fctl", 0);
setprop("/ECAM/Lower/light/fuel", 0);
setprop("/ECAM/Lower/light/hyd", 0);
setprop("/ECAM/Lower/light/press", 0);
setprop("/ECAM/Lower/light/sts", 0);
setprop("/ECAM/Lower/light/wheel", 0);
2018-09-14 13:35:05 +00:00
}
2018-09-14 09:35:00 +00:00
}
2018-09-13 22:52:24 +00:00
},
reset: func() {
2018-09-14 09:35:00 +00:00
setprop("/ECAM/Lower/page", "door");
setprop("/ECAM/Lower/man-select", 0);
2018-09-14 13:35:05 +00:00
setprop("/ECAM/Lower/fault-select", 0);
2018-09-14 09:35:00 +00:00
setprop("/ECAM/Lower/light/apu", 0);
setprop("/ECAM/Lower/light/bleed", 0);
setprop("/ECAM/Lower/light/cond", 0);
setprop("/ECAM/Lower/light/door", 0);
setprop("/ECAM/Lower/light/elec", 0);
setprop("/ECAM/Lower/light/eng", 0);
setprop("/ECAM/Lower/light/fctl", 0);
setprop("/ECAM/Lower/light/fuel", 0);
setprop("/ECAM/Lower/light/hyd", 0);
setprop("/ECAM/Lower/light/press", 0);
setprop("/ECAM/Lower/light/sts", 0);
setprop("/ECAM/Lower/light/wheel", 0);
2018-09-13 22:52:24 +00:00
},
2018-11-20 17:46:25 +00:00
failCall: func(page) {
setprop("/ECAM/Lower/man-select", 0);
setprop("/ECAM/Lower/fault-select", 1);
setprop("/ECAM/Lower/fault-page", page);
setprop("/ECAM/Lower/page", page);
setprop("/ECAM/Lower/light/clr", 1);
},
2018-12-05 15:27:42 +00:00
clrLight: func() {
setprop("/ECAM/Lower/light/clr", 1);
2018-11-19 15:13:52 +00:00
}
2019-01-13 04:56:05 +00:00
};