diff --git a/Nasal/buttons.nas b/Nasal/buttons.nas index eb1515db..5f0f9e80 100644 --- a/Nasal/buttons.nas +++ b/Nasal/buttons.nas @@ -55,19 +55,31 @@ var variousReset = func { setprop("/controls/switches/seatbelt-sign", 1); } -setlistener("/sim/signals/fdm-initialized", func { - var stateL = getprop("/engines/engine[0]/state"); - var stateR = getprop("/engines/engine[1]/state"); - var Lrain = getprop("/controls/switches/LrainRpt"); - var Rrain = getprop("/controls/switches/RrainRpt"); - var OnLt = getprop("/controls/switches/emerCallLtO"); - var CallLt = getprop("/controls/switches/emerCallLtC"); - var wow = getprop("/gear/gear[1]/wow"); - rainTimer.start(); -}); +var BUTTONS = { + init: func() { + var stateL = getprop("/engines/engine[0]/state"); + var stateR = getprop("/engines/engine[1]/state"); + var Lrain = getprop("/controls/switches/LrainRpt"); + var Rrain = getprop("/controls/switches/RrainRpt"); + var OnLt = getprop("/controls/switches/emerCallLtO"); + var CallLt = getprop("/controls/switches/emerCallLtC"); + var EmerCall = getprop("/controls/switches/emerCall"); + var wow = getprop("/gear/gear[1]/wow"); + var wowr = getprop("/gear/gear[2]/wow"); + var gndCtl = getprop("/systems/CVR/gndctl"); + var acPwr = getprop("/systems/electrical/bus/ac-ess"); + }, + update: func() { + rainRepel(); + CVR_master(); + if (getprop("/controls/switches/emerCall")) { + EmerCallOnLight(); + EmerCallLight(); + } + }, +}; -# inhibit rain rpt when engines off and on ground -var rainRepel = func { +var rainRepel = func() { Lrain = getprop("/controls/switches/LrainRpt"); Rrain = getprop("/controls/switches/RrainRpt"); wow = getprop("/gear/gear[1]/wow"); @@ -81,39 +93,53 @@ var rainRepel = func { } } -var EmerCall = func { - setprop("/controls/switches/emerCall", 1); - EmerCallTimer1.start(); - EmerCallTimer2.start(); - settimer(func() { - setprop("/controls/switches/emerCall", 0); - EmerCallTimer1.stop(); - EmerCallTimer2.stop(); - }, 10); -} - -var EmerCallOnLight = func { +var EmerCallOnLight = func() { OnLt = getprop("/controls/switches/emerCallLtO"); - if (OnLt) { + EmerCall = getprop("/controls/switches/emerCall"); + if ((OnLt and EmerCall) or !EmerCall) { setprop("/controls/switches/emerCallLtO", 0); - } else if (!OnLt) { + } else if (!OnLt and EmerCall) { setprop("/controls/switches/emerCallLtO", 1); } } -var EmerCallLightCall = func { +var EmerCallLight = func() { CallLt = getprop("/controls/switches/emerCallLtC"); - if (CallLt) { + EmerCall = getprop("/controls/switches/emerCall"); + if ((CallLt and EmerCall) or !EmerCall) { setprop("/controls/switches/emerCallLtC", 0); - } else if (!CallLt) { + } else if (!CallLt and EmerCall) { setprop("/controls/switches/emerCallLtC", 1); } } -var CabinCall = func { - setprop("/controls/switches/emerCall", 0); +var CVR_master = func() { + stateL = getprop("/engines/engine[0]/state"); + stateR = getprop("/engines/engine[1]/state"); + wow = getprop("/gear/gear[1]/wow"); + wowr = getprop("/gear/gear[2]/wow"); + gndCtl = getprop("/systems/CVR/gndctl"); + acPwr = getprop("/systems/electrical/bus/ac-ess"); + if (acPwr > 0 and wow and wowr and (gndCtl or (stateL == 3 or stateR == 3))) { + setprop("/controls/CVR/power", 1); + } else if (!wow and !wowr and acPwr > 0) { + setprop("/controls/CVR/power", 1); + } else { + setprop("/controls/CVR/power", 0); + } +} + +var EmerCall = func { + setprop("/controls/switches/emerCall", 1); settimer(func() { setprop("/controls/switches/emerCall", 0); + }, 10); +} + +var CabinCall = func { + setprop("/controls/switches/cabinCall", 0); + settimer(func() { + setprop("/controls/switches/cabinCall", 0); }, 15); } @@ -134,22 +160,6 @@ var CVR_test = func { } } -var CVR_master = func { - var stateL = getprop("/engines/engine[0]/state"); - var stateR = getprop("/engines/engine[1]/state"); - var wowl = getprop("/gear/gear[1]/wow"); - var wowr = getprop("/gear/gear[2]/wow"); - var gndCtl = getprop("/systems/CVR/gndctl"); - var acPwr = getprop("/systems/electrical/bus/ac-ess"); - if (acPwr > 0 and wowl and wowr and (gndCtl or (stateL == 3 or stateR == 3))) { - setprop("/controls/CVR/power", 1); - } else if (!wowl and !wowr and acPwr > 0) { - setprop("/controls/CVR/power", 1); - } else { - setprop("/controls/CVR/power", 0); - } -} - var mcpSPDKnbPull = func { setprop("/it-autoflight/input/spd-managed", 0); fmgc.ManagedSPD.stop(); @@ -238,13 +248,4 @@ var decreaseManVS = func { if (manvs <= 1 and manvs >= 0 and !auto) { setprop("/systems/pressurization/outflowpos-man", manvs - 0.001); } -} - -var update_CVR = func { - CVR_master(); -} - -var CVR = maketimer(0.1, update_CVR); -var EmerCallTimer1 = maketimer(0.5, EmerCallOnLight); -var EmerCallTimer2 = maketimer(0.5, EmerCallLightCall); -var rainTimer = maketimer(0.1, rainRepel); \ No newline at end of file +} \ No newline at end of file diff --git a/Nasal/engines-cfm.nas b/Nasal/engines-cfm.nas index b2b63fa4..13d12751 100644 --- a/Nasal/engines-cfm.nas +++ b/Nasal/engines-cfm.nas @@ -60,7 +60,7 @@ var cutoff_one = func { setprop("/systems/pneumatic/eng1-starter", 0); setprop("/controls/engines/engine[0]/starter", 0); setprop("/controls/engines/engine[0]/cutoff", 1); - var engine0_state = props.globals.initNode("/engines/engine[0]/state", 0, "INT"); + setprop("/engines/engine[0]/state", 0); interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time); eng_one_n2_check.stop(); } @@ -144,7 +144,7 @@ var cutoff_two = func { setprop("/systems/pneumatic/eng2-starter", 0); setprop("/controls/engines/engine[1]/starter", 0); setprop("/controls/engines/engine[1]/cutoff", 1); - var engine1_state = props.globals.initNode("/engines/engine[0]/state", 0, "INT"); + setprop("/engines/engine[0]/state", 0); interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time); } diff --git a/Nasal/engines-iae.nas b/Nasal/engines-iae.nas index 3eb66872..b8ba6853 100644 --- a/Nasal/engines-iae.nas +++ b/Nasal/engines-iae.nas @@ -60,7 +60,7 @@ var cutoff_one = func { setprop("/systems/pneumatic/eng1-starter", 0); setprop("/controls/engines/engine[0]/starter", 0); setprop("/controls/engines/engine[0]/cutoff", 1); - var engine0_state = props.globals.initNode("/engines/engine[0]/state", 0, "INT"); + setprop("/engines/engine[0]/state", 0); interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time); eng_one_n2_check.stop(); } @@ -144,7 +144,7 @@ var cutoff_two = func { setprop("/systems/pneumatic/eng2-starter", 0); setprop("/controls/engines/engine[1]/starter", 0); setprop("/controls/engines/engine[1]/cutoff", 1); - var engine1_state = props.globals.initNode("/engines/engine[1]/state", 0, "INT"); + setprop("/engines/engine[1]/state", 0); interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time); } diff --git a/Nasal/libraries.nas b/Nasal/libraries.nas index 7fce8a01..f5a65dbf 100644 --- a/Nasal/libraries.nas +++ b/Nasal/libraries.nas @@ -185,13 +185,13 @@ var systemsInit = func { mcdu.MCDU_init(0); mcdu.MCDU_init(1); systemsLoop.start(); - libraries.CVR.start(); icing.icingInit(); lightsLoop.start(); var autopilot = gui.Dialog.new("sim/gui/dialogs/autopilot/dialog", "Aircraft/IDG-A32X/Systems/autopilot-dlg.xml"); setprop("/it-autoflight/input/fd1", 1); setprop("/it-autoflight/input/fd2", 1); libraries.ECAM.init(); + libraries.BUTTONS.init(); libraries.variousReset(); } @@ -206,8 +206,9 @@ var systemsLoop = maketimer(0.1, func { systems.FUEL.loop(); systems.ADIRS.loop(); libraries.ECAM.loop(); - ecam.ECAM_controller.loop(); + libraries.BUTTONS.update(); fadec.fadecLoop(); + ecam.ECAM_controller.loop(); if ((getprop("/controls/pneumatic/switches/groundair") or getprop("/controls/switches/cart")) and ((getprop("/velocities/groundspeed-kt") > 2) or getprop("/controls/gear/brake-parking") == 0)) { setprop("/controls/switches/cart", 0); diff --git a/revision.txt b/revision.txt index bf388ea4..5bbc35dc 100644 --- a/revision.txt +++ b/revision.txt @@ -1 +1 @@ -4637 \ No newline at end of file +4638 \ No newline at end of file