This repository has been archived on 2021-09-26. You can view files and clone it, but cannot push or open issues or pull requests.
IDG-A32X/Nasal/ECAM.nas

118 lines
4.5 KiB
Text
Raw Normal View History

2017-06-02 00:53:50 +00:00
# A3XX ECAM Messages
# Joshua Davidson (it0uchpods)
2017-11-16 19:29:08 +00:00
##############################################
# Copyright (c) Joshua Davidson (it0uchpods) #
##############################################
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
setprop("/ECAM/Lower/page", "fctl");
# w = White, b = Blue, g = Green, a = Amber, r = Red
2017-12-30 04:44:41 +00:00
var ECAM = {
init: func() {
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);
2017-12-30 04:44:41 +00:00
var stateL = getprop("/engines/engine[0]/state");
var stateR = getprop("/engines/engine[1]/state");
var thrustL = getprop("/systems/thrust/state1");
var thrustR = getprop("/systems/thrust/state2");
var elec = getprop("/systems/electrical/on");
var speed = getprop("/velocities/airspeed-kt");
var wow = getprop("/gear/gear[0]/wow");
2017-12-30 04:44:41 +00:00
var altitude = getprop("/position/gear-agl-ft");
},
MSGclr: func() {
setprop("/ECAM/ecam-checklist-active", 0);
setprop("/ECAM/left-msg", "NONE");
setprop("/ECAM/msg/line1", "");
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", "");
2017-12-30 04:44:41 +00:00
setprop("/ECAM/msg/line1c", "w");
setprop("/ECAM/msg/line2c", "w");
setprop("/ECAM/msg/line3c", "w");
setprop("/ECAM/msg/line4c", "w");
setprop("/ECAM/msg/line5c", "w");
setprop("/ECAM/msg/line6c", "w");
setprop("/ECAM/msg/line7c", "w");
setprop("/ECAM/msg/line8c", "w");
},
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");
speed = getprop("/velocities/airspeed-kt");
2018-01-14 16:19:10 +00:00
wow = getprop("/gear/gear[0]/wow");
2017-12-30 04:44:41 +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);
}
}
if (wow == 0) {
setprop("/ECAM/to-memo-enable", 0);
} else if ((stateL != 3 or stateR != 3) and wow == 1) {
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);
} else if (getprop("/ECAM/left-msg") == "LDG-MEMO" and getprop("/instrumentation/airspeed-indicator/indicated-speed-kt") <= 80 and wow == 1) {
setprop("/ECAM/ldg-memo-enable", 0);
} else if (getprop("/ECAM/left-msg") != "LDG-MEMO") {
setprop("/ECAM/ldg-memo-enable", 0);
}
if (ecam.active_messages.size() > 0) {
setprop("/ECAM/left-msg", "MSG");
} else if (getprop("/FMGC/status/phase") == 0 and 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-01-14 16:19:10 +00:00
} else if (getprop("/ECAM/ldg-memo-enable") == 1) {
setprop("/ECAM/left-msg", "LDG-MEMO");
2017-12-30 04:44:41 +00:00
} else {
setprop("/ECAM/left-msg", "NONE");
}
2017-12-30 15:54:45 +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) {
# Do nothing
} else {
setprop("/ECAM/to-config", 0);
}
},
toConfig: func() {
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");
if (wow == 1 and stateL == 3 and stateR == 3 and getprop("/ECAM/left-msg") != "TO-MEMO") {
setprop("/ECAM/to-memo-enable", 1);
setprop("/ECAM/engine-start-time", getprop("/ECAM/engine-start-time") - 120);
}
2017-12-30 15:54:45 +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-12-30 04:44:41 +00:00
ECAM.MSGclr();