diff --git a/A320-main.xml b/A320-main.xml index e91a7508..d5b0bc16 100644 --- a/A320-main.xml +++ b/A320-main.xml @@ -719,6 +719,7 @@ <steep-ils type="bool">0</steep-ils> <steep-ils-avail type="bool">0</steep-ils-avail> <test-canvas type="bool">0</test-canvas> <!-- Enables WIP Canvas Stuff --> + <enable-ecam-actions>0</enable-ecam-actions> </options> <instrumentation n="0"> diff --git a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas index c72bae5a..4976a6fa 100644 --- a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas +++ b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas @@ -151,87 +151,87 @@ var canvas_upperECAM_base = { me["ECAML1"].setColor(1,0,0); } - if (getprop("/ECAM/msg/line1c") == "w") { + if (getprop("/ECAM/msg/line2c") == "w") { me["ECAML2"].setColor(1,1,1); - } else if (getprop("/ECAM/msg/line1c") == "b") { + } else if (getprop("/ECAM/msg/line2c") == "b") { me["ECAML2"].setColor(0,0.5,0.7); - } else if (getprop("/ECAM/msg/line1c") == "g") { + } else if (getprop("/ECAM/msg/line2c") == "g") { me["ECAML2"].setColor(0,1,0); - } else if (getprop("/ECAM/msg/line1c") == "a") { + } else if (getprop("/ECAM/msg/line2c") == "a") { me["ECAML2"].setColor(1,0.6,0); - } else if (getprop("/ECAM/msg/line1c") == "r") { + } else if (getprop("/ECAM/msg/line2c") == "r") { me["ECAML2"].setColor(1,0,0); } - if (getprop("/ECAM/msg/line1c") == "w") { + if (getprop("/ECAM/msg/line3c") == "w") { me["ECAML3"].setColor(1,1,1); - } else if (getprop("/ECAM/msg/line1c") == "b") { + } else if (getprop("/ECAM/msg/line3c") == "b") { me["ECAML3"].setColor(0,0.5,0.7); - } else if (getprop("/ECAM/msg/line1c") == "g") { + } else if (getprop("/ECAM/msg/line3c") == "g") { me["ECAML3"].setColor(0,1,0); - } else if (getprop("/ECAM/msg/line1c") == "a") { + } else if (getprop("/ECAM/msg/line3c") == "a") { me["ECAML3"].setColor(1,0.6,0); - } else if (getprop("/ECAM/msg/line1c") == "r") { + } else if (getprop("/ECAM/msg/line3c") == "r") { me["ECAML3"].setColor(1,0,0); } - if (getprop("/ECAM/msg/line1c") == "w") { + if (getprop("/ECAM/msg/line4c") == "w") { me["ECAML4"].setColor(1,1,1); - } else if (getprop("/ECAM/msg/line1c") == "b") { + } else if (getprop("/ECAM/msg/line4c") == "b") { me["ECAML4"].setColor(0,0.5,0.7); - } else if (getprop("/ECAM/msg/line1c") == "g") { + } else if (getprop("/ECAM/msg/line4c") == "g") { me["ECAML4"].setColor(0,1,0); - } else if (getprop("/ECAM/msg/line1c") == "a") { + } else if (getprop("/ECAM/msg/line4c") == "a") { me["ECAML4"].setColor(1,0.6,0); - } else if (getprop("/ECAM/msg/line1c") == "r") { + } else if (getprop("/ECAM/msg/line4c") == "r") { me["ECAML4"].setColor(1,0,0); } - if (getprop("/ECAM/msg/line1c") == "w") { + if (getprop("/ECAM/msg/line5c") == "w") { me["ECAML5"].setColor(1,1,1); - } else if (getprop("/ECAM/msg/line1c") == "b") { + } else if (getprop("/ECAM/msg/line5c") == "b") { me["ECAML5"].setColor(0,0.5,0.7); - } else if (getprop("/ECAM/msg/line1c") == "g") { + } else if (getprop("/ECAM/msg/line5c") == "g") { me["ECAML5"].setColor(0,1,0); - } else if (getprop("/ECAM/msg/line1c") == "a") { + } else if (getprop("/ECAM/msg/line5c") == "a") { me["ECAML5"].setColor(1,0.6,0); - } else if (getprop("/ECAM/msg/line1c") == "r") { + } else if (getprop("/ECAM/msg/line5c") == "r") { me["ECAML5"].setColor(1,0,0); } - if (getprop("/ECAM/msg/line1c") == "w") { + if (getprop("/ECAM/msg/line6c") == "w") { me["ECAML6"].setColor(1,1,1); - } else if (getprop("/ECAM/msg/line1c") == "b") { + } else if (getprop("/ECAM/msg/line6c") == "b") { me["ECAML6"].setColor(0,0.5,0.7); - } else if (getprop("/ECAM/msg/line1c") == "g") { + } else if (getprop("/ECAM/msg/line6c") == "g") { me["ECAML6"].setColor(0,1,0); - } else if (getprop("/ECAM/msg/line1c") == "a") { + } else if (getprop("/ECAM/msg/line6c") == "a") { me["ECAML6"].setColor(1,0.6,0); - } else if (getprop("/ECAM/msg/line1c") == "r") { + } else if (getprop("/ECAM/msg/line6c") == "r") { me["ECAML6"].setColor(1,0,0); } - if (getprop("/ECAM/msg/line1c") == "w") { + if (getprop("/ECAM/msg/line7c") == "w") { me["ECAML7"].setColor(1,1,1); - } else if (getprop("/ECAM/msg/line1c") == "b") { + } else if (getprop("/ECAM/msg/line7c") == "b") { me["ECAML7"].setColor(0,0.5,0.7); - } else if (getprop("/ECAM/msg/line1c") == "g") { + } else if (getprop("/ECAM/msg/line7c") == "g") { me["ECAML7"].setColor(0,1,0); - } else if (getprop("/ECAM/msg/line1c") == "a") { + } else if (getprop("/ECAM/msg/line7c") == "a") { me["ECAML7"].setColor(1,0.6,0); - } else if (getprop("/ECAM/msg/line1c") == "r") { + } else if (getprop("/ECAM/msg/line7c") == "r") { me["ECAML7"].setColor(1,0,0); } - if (getprop("/ECAM/msg/line1c") == "w") { + if (getprop("/ECAM/msg/line8c") == "w") { me["ECAML8"].setColor(1,1,1); - } else if (getprop("/ECAM/msg/line1c") == "b") { + } else if (getprop("/ECAM/msg/line8c") == "b") { me["ECAML8"].setColor(0,0.5,0.7); - } else if (getprop("/ECAM/msg/line1c") == "g") { + } else if (getprop("/ECAM/msg/line8c") == "g") { me["ECAML8"].setColor(0,1,0); - } else if (getprop("/ECAM/msg/line1c") == "a") { + } else if (getprop("/ECAM/msg/line8c") == "a") { me["ECAML8"].setColor(1,0.6,0); - } else if (getprop("/ECAM/msg/line1c") == "r") { + } else if (getprop("/ECAM/msg/line8c") == "r") { me["ECAML8"].setColor(1,0,0); } diff --git a/Nasal/ECAM.nas b/Nasal/ECAM.nas index cca7a695..be5293cb 100644 --- a/Nasal/ECAM.nas +++ b/Nasal/ECAM.nas @@ -21,9 +21,48 @@ setprop("/ECAM/Lower/page", "eng"); ###################################################### var ECAMinit = func { + if (getprop("/sim/options/enable-ecam-actions") == 1) { ECAMloop.start(); + setprop("/ECAM/phase-1-inhibit", 0); + setprop("/ECAM/phase-2-inhibit", 0); + setprop("/ECAM/phase-3-inhibit", 0); + setprop("/ECAM/phase-4-inhibit", 0); + setprop("/ECAM/phase-5-inhibit", 0); + setprop("/ECAM/phase-6-inhibit", 0); + setprop("/ECAM/phase-7-inhibit", 0); + setprop("/ECAM/phase-8-inhibit", 0); + setprop("/ECAM/phase-9-inhibit", 0); + setprop("/ECAM/phase-10-inhibit", 0); + 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 wowL = getprop("/gear/gear[1]/wow"); + var altitude = getprop("/position/gear-agl-ft"); + var phase1inhibit = getprop("/ECAM/phase-1-inhibit"); + var phase2inhibit = getprop("/ECAM/phase-2-inhibit"); + var phase3inhibit = getprop("/ECAM/phase-3-inhibit"); + var phase4inhibit = getprop("/ECAM/phase-4-inhibit"); + var phase5inhibit = getprop("/ECAM/phase-5-inhibit"); + var phase6inhibit = getprop("/ECAM/phase-6-inhibit"); + var phase7inhibit = getprop("/ECAM/phase-7-inhibit"); + var phase8inhibit = getprop("/ECAM/phase-8-inhibit"); + var phase9inhibit = getprop("/ECAM/phase-9-inhibit"); + var phase10inhibit = getprop("/ECAM/phase-10-inhibit"); + } } +# setlistener("/ECAM/phase-10-inhibit", func { +# phase10inhibit = getprop("/ECAM/phase-10-inhibit"); +# if (phase10inhibit) { +# settimer(func { +# setprop("/ECAM/phase-10-inhibit", 0); +# }, 300); +# } +#}); + var MSGclr = func { setprop("/ECAM/ecam-checklist-active", 0); setprop("/ECAM/left-msg", "NONE"); @@ -47,7 +86,27 @@ var MSGclr = func { MSGclr(); -var ECAMloop = maketimer(1, func { +var ECAMloop = maketimer(0.2, func { + + 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"); + wowL = getprop("/gear/gear[1]/wow"); + altitude = getprop("/position/gear-agl-ft"); + phase1inhibit = getprop("/ECAM/phase-1-inhibit"); + phase2inhibit = getprop("/ECAM/phase-2-inhibit"); + phase3inhibit = getprop("/ECAM/phase-3-inhibit"); + phase4inhibit = getprop("/ECAM/phase-4-inhibit"); + phase5inhibit = getprop("/ECAM/phase-5-inhibit"); + phase6inhibit = getprop("/ECAM/phase-6-inhibit"); + phase7inhibit = getprop("/ECAM/phase-7-inhibit"); + phase8inhibit = getprop("/ECAM/phase-8-inhibit"); + phase9inhibit = getprop("/ECAM/phase-9-inhibit"); + phase10inhibit = getprop("/ECAM/phase-10-inhibit"); + var noUpdate = getprop("/ECAM/noupdate"); var doNotRevert = getprop("/ECAM/donotrevert"); if (getprop("/FMGC/status/phase") == 0 and getprop("/engines/engine[0]/state") == 3 and getprop("/engines/engine[1]/state") == 3) { @@ -76,4 +135,124 @@ var ECAMloop = maketimer(1, func { setprop("/ECAM/msg/line7c", "g"); setprop("/ECAM/msg/line8c", "g"); } + + ########### + # Inhibit # + ########### + if (elec == 1 and !phase1inhibit and !phase2inhibit and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase6inhibit and !phase7inhibit and !phase8inhibit and !phase9inhibit and !phase10inhibit) { + setprop("/ECAM/phase-1-inhibit", 1); + } else if (stateL == 3 or stateR == 3 and !phase2inhibit and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase6inhibit and !phase7inhibit and !phase8inhibit and !phase9inhibit and !phase10inhibit) { + setprop("/ECAM/phase-1-inhibit", 0); + setprop("/ECAM/phase-2-inhibit", 1); + } else if (thrustL == "FLX" or thrustL == "TOGA" or thrustR == "FLX" or thrustR == "TOGA" and speed < 80 and !phase1inhibit and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase6inhibit and !phase7inhibit and !phase8inhibit and !phase9inhibit and !phase10inhibit) { + setprop("/ECAM/phase-2-inhibit", 0); + setprop("/ECAM/phase-3-inhibit", 1); + } else if (thrustL == "FLX" or thrustL == "TOGA" or thrustR == "FLX" or thrustR == "TOGA" and speed > 80 and wowL and !phase1inhibit and !phase2inhibit and !phase4inhibit and !phase5inhibit and !phase6inhibit and !phase7inhibit and !phase8inhibit and !phase9inhibit and !phase10inhibit) { + setprop("/ECAM/phase-3-inhibit", 0); + setprop("/ECAM/phase-4-inhibit", 1); + } else if (speed > 80 and !wowL and altitude < 1501 and !phase1inhibit and !phase2inhibit and !phase3inhibit and !phase5inhibit and !phase6inhibit and !phase7inhibit and !phase8inhibit and !phase9inhibit and !phase10inhibit) { + setprop("/ECAM/phase-4-inhibit", 0); + setprop("/ECAM/phase-5-inhibit", 1); + } else if (speed > 80 and !wowL and altitude > 1501 and !phase1inhibit and !phase2inhibit and !phase3inhibit and !phase4inhibit and !phase6inhibit and !phase7inhibit and !phase8inhibit and !phase9inhibit and !phase10inhibit) { + setprop("/ECAM/phase-5-inhibit", 0); + setprop("/ECAM/phase-6-inhibit", 1); + } else if (speed > 80 and !wowL and altitude < 801 and !phase1inhibit and !phase2inhibit and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase7inhibit and !phase8inhibit and !phase9inhibit and !phase10inhibit) { + setprop("/ECAM/phase-6-inhibit", 0); + setprop("/ECAM/phase-7-inhibit", 1); + } else if (speed > 80 and wowL and !phase1inhibit and !phase2inhibit and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase6inhibit and !phase8inhibit and !phase9inhibit and !phase10inhibit) { + setprop("/ECAM/phase-7-inhibit", 0); + setprop("/ECAM/phase-8-inhibit", 1); + } else if (speed < 80 and wowL and !phase1inhibit and !phase2inhibit and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase6inhibit and !phase7inhibit and !phase9inhibit and !phase10inhibit) { + setprop("/ECAM/phase-8-inhibit", 0); + setprop("/ECAM/phase-9-inhibit", 1); + } else if (stateL == 0 and stateR == 0 and !phase1inhibit and !phase2inhibit and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase6inhibit and !phase7inhibit and !phase8inhibit and !phase10inhibit) { + setprop("/ECAM/phase-9-inhibit", 0); + setprop("/ECAM/phase-10-inhibit", 1); + } + ############ + # Air Cond # + ############ + + if (getprop("/systems/failures/pack1") == 1 and getprop("/systems/failures/pack2") == 0 and getprop("/controls/pneumatic/switches/pack1") == 1 and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase7inhibit and !phase8inhibit) { + setprop("/ECAM/msg/line1", "AIR PACK 1 FAULT"); + setprop("/ECAM/msg/line2", " - PACK 1: OFF"); + setprop("/ECAM/msg/line3", ""); + setprop("/ECAM/msg/line4", ""); + setprop("/ECAM/msg/line5", ""); + setprop("/ECAM/msg/line6", ""); + setprop("/ECAM/msg/line7", ""); + setprop("/ECAM/msg/line8", ""); + setprop("/ECAM/msg/line1c", "a"); + setprop("/ECAM/msg/line2c", "b"); + setprop("/ECAM/msg/line3c", "g"); + setprop("/ECAM/msg/line4c", "g"); + setprop("/ECAM/msg/line5c", "g"); + setprop("/ECAM/msg/line6c", "g"); + setprop("/ECAM/msg/line7c", "g"); + setprop("/ECAM/msg/line8c", "g"); + setprop("/ECAM/left-msg", "MSG"); + } else if (getprop("/systems/failures/pack1") == 1 and getprop("/systems/failures/pack2") == 0 and getprop("/controls/pneumatic/switches/pack1") == 0 and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase7inhibit and !phase8inhibit) { + setprop("/ECAM/msg/line1", "AIR PACK 1 FAULT"); + 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", ""); + setprop("/ECAM/msg/line1c", "a"); + setprop("/ECAM/msg/line2c", "g"); + setprop("/ECAM/msg/line3c", "g"); + setprop("/ECAM/msg/line4c", "g"); + setprop("/ECAM/msg/line5c", "g"); + setprop("/ECAM/msg/line6c", "g"); + setprop("/ECAM/msg/line7c", "g"); + setprop("/ECAM/msg/line8c", "g"); + setprop("/ECAM/left-msg", "MSG"); + } else { + # MSGclr(); + } + + if (getprop("/systems/failures/pack1") == 0 and getprop("/systems/failures/pack2") == 1 and getprop("/controls/pneumatic/switches/pack2") == 1 and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase7inhibit and !phase8inhibit) { + setprop("/ECAM/msg/line1", "AIR PACK 2 FAULT"); + setprop("/ECAM/msg/line2", " - PACK 2: OFF"); + setprop("/ECAM/msg/line3", ""); + setprop("/ECAM/msg/line4", ""); + setprop("/ECAM/msg/line5", ""); + setprop("/ECAM/msg/line6", ""); + setprop("/ECAM/msg/line7", ""); + setprop("/ECAM/msg/line8", ""); + setprop("/ECAM/msg/line1c", "a"); + setprop("/ECAM/msg/line2c", "b"); + setprop("/ECAM/msg/line3c", "g"); + setprop("/ECAM/msg/line4c", "g"); + setprop("/ECAM/msg/line5c", "g"); + setprop("/ECAM/msg/line6c", "g"); + setprop("/ECAM/msg/line7c", "g"); + setprop("/ECAM/msg/line8c", "g"); + setprop("/ECAM/left-msg", "MSG"); + } else if (getprop("/systems/failures/pack1") == 0 and getprop("/systems/failures/pack2") == 1 and getprop("/controls/pneumatic/switches/pack2") == 0 and !phase3inhibit and !phase4inhibit and !phase5inhibit and !phase7inhibit and !phase8inhibit) { + setprop("/ECAM/msg/line1", "AIR PACK 2 FAULT"); + 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", ""); + setprop("/ECAM/msg/line1c", "a"); + setprop("/ECAM/msg/line2c", "g"); + setprop("/ECAM/msg/line3c", "g"); + setprop("/ECAM/msg/line4c", "g"); + setprop("/ECAM/msg/line5c", "g"); + setprop("/ECAM/msg/line6c", "g"); + setprop("/ECAM/msg/line7c", "g"); + setprop("/ECAM/msg/line8c", "g"); + setprop("/ECAM/left-msg", "MSG"); + } else { + # MSGclr(); + } + }); + +