From 5fe512a9137e1a0024d0cb59362198eccae0a32f Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Thu, 13 Aug 2020 10:45:08 +0100 Subject: [PATCH] APU: correct un-init property, and ensure start signal is ended when master switch is turned off in pre-init phase --- Nasal/Systems/APU.nas | 17 +++++++----- Nasal/Systems/fire.nas | 63 ++++++++++++++++++++---------------------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/Nasal/Systems/APU.nas b/Nasal/Systems/APU.nas index bb33a3ee..6ab5dac0 100644 --- a/Nasal/Systems/APU.nas +++ b/Nasal/Systems/APU.nas @@ -19,7 +19,7 @@ var APUNodes = { var APU = { state: 0, # off, power up, watch, starting preparation, starting, run, cooldown, shutdown - inletFlap: aircraft.door.new("controls/apu/inlet-flap", 12), + inletFlap: aircraft.door.new("/controls/apu/inlet-flap", 12), fuelValveCmd: props.globals.getNode("/systems/fuel/valves/apu-lp-valve-cmd"), fuelValvePos: props.globals.getNode("/systems/fuel/valves/apu-lp-valve"), inletFlapPos: props.globals.getNode("/controls/apu/inlet-flap/position-norm"), @@ -95,7 +95,7 @@ var APU = { me.checkOil(); me.listenSignals = 1; settimer(func() { - if (APUNodes.Controls.master.getValue() and !getprop("systems/acconfig/autoconfig-running")) { + if (APUNodes.Controls.master.getValue() and !getprop("/systems/acconfig/autoconfig-running")) { me.setState(2); } }, 3); @@ -103,7 +103,7 @@ var APU = { }, startCommand: func(fast = 0) { if (me.listenSignals and (me.state == 1 or me.state == 2)) { - me.signals.startInProgress.setValue(1); + me.signals.startInProgress.setBoolValue(1); me.setState(3); checkApuStartTimer.start(); me.fastStart = fast; @@ -137,7 +137,7 @@ var APU = { waitStart2: func() { if (pts.APU.rpm.getValue() >= 99.9) { me.GenericControls.starter.setValue(0); - me.signals.startInProgress.setValue(0); + me.signals.startInProgress.setBoolValue(0); me.signals.available.setValue(1); me.setState(5); apuStartTimer2.stop(); @@ -187,11 +187,14 @@ var APU = { # Signal generators / receivers stop: func() { if (me.listenStopSignal and me.state == 4) { - me.signals.startInProgress.setValue(0); + me.signals.startInProgress.setBoolValue(0); me.stopAPU(); me.setState(7); shutdownTimer.start(); } else { + if (me.signals.startInProgress.getBoolValue()) { + me.signals.startInProgress.setBoolValue(0); + } if (me.signals.bleedWasUsed) { if (me.bleedTime == 0) { me.shutBleed(); } if (120 - (pts.Sim.Time.elapsedSec.getValue() - me.bleedTime) > 0) { @@ -290,7 +293,7 @@ var APUController = { }; var _masterTime = 0; -setlistener("controls/apu/master", func() { +setlistener("/controls/apu/master", func() { if (APUController.APU != nil) { if (APUNodes.Controls.master.getValue() and APUController.APU.state == 0) { shutdownTimer.stop(); @@ -304,7 +307,7 @@ setlistener("controls/apu/master", func() { } }, 0, 0); -setlistener("controls/pneumatics/switches/apu", func() { +setlistener("/controls/pneumatics/switches/apu", func() { if (APUController.APU != nil) { if (APUNodes.Controls.bleed.getValue()) { APUController.APU.signals.bleedWasUsed = 1; diff --git a/Nasal/Systems/fire.nas b/Nasal/Systems/fire.nas index ad949cd8..39ff7216 100644 --- a/Nasal/Systems/fire.nas +++ b/Nasal/Systems/fire.nas @@ -3,10 +3,10 @@ # Copyright (c) 2020 Josh Davidson (Octal450) -var elapsedTime = props.globals.getNode("sim/time/elapsed-sec"); -var apuTestBtn = props.globals.getNode("controls/fire/apu-test-btn", 1); -var testBtn = props.globals.getNode("controls/fire/test-btn-1", 1); -var testBtn2 = props.globals.getNode("controls/fire/test-btn-2", 1); +var elapsedTime = props.globals.getNode("/sim/time/elapsed-sec"); +var apuTestBtn = props.globals.getNode("/controls/fire/apu-test-btn", 1); +var testBtn = props.globals.getNode("/controls/fire/test-btn-1", 1); +var testBtn2 = props.globals.getNode("/controls/fire/test-btn-2", 1); var dischTest = props.globals.initNode("/systems/fire/cargo/disch-test", 0, "BOOL"); var cargoTestBtn = props.globals.initNode("/controls/fire/cargo/test", 0, "BOOL"); var cargoTestTime = props.globals.initNode("/controls/fire/cargo/test-time", 0, "DOUBLE"); @@ -32,20 +32,19 @@ var eng2AgentTimerTime = props.globals.initNode("/systems/fire/engine2/agent1-ti var eng1Agent2TimerTime = props.globals.initNode("/systems/fire/engine1/agent2-timer-time", 0, "INT"); var eng2Agent2TimerTime = props.globals.initNode("/systems/fire/engine2/agent2-timer-time", 0, "INT"); var apuAgentTimerTime = props.globals.initNode("/systems/fire/apu/agent-timer-time", 0, "INT"); -var wow = props.globals.getNode("fdm/jsbsim/position/wow", 1); -var dcbatNode = props.globals.getNode("systems/electrical/bus/dc-bat", 1); -var dcessNode = props.globals.getNode("systems/electrical/bus/dc-ess", 1); -var apuBleedNode = props.globals.getNode("systems/apu/bleed-used", 1); -var apuMaster = props.globals.getNode("controls/apu/master", 1); +var wow = props.globals.getNode("/fdm/jsbsim/position/wow", 1); +var dcbatNode = props.globals.getNode("/systems/electrical/bus/dc-bat", 1); +var dcessNode = props.globals.getNode("/systems/electrical/bus/dc-ess", 1); +var apuMaster = props.globals.getNode("/controls/apu/master", 1); var fire_init = func { - setprop("controls/OH/protectors/fwddisch", 0); - setprop("controls/OH/protectors/aftdisch", 0); - setprop("controls/fire/cargo/fwddisch", 0); - setprop("controls/fire/cargo/aftdisch", 0); - setprop("systems/failures/cargo-fwd-fire", 0); - setprop("systems/failures/cargo-aft-fire", 0); - setprop("controls/fire/cargo/test", 0); + setprop("/controls/OH/protectors/fwddisch", 0); + setprop("/controls/OH/protectors/aftdisch", 0); + setprop("/controls/fire/cargo/fwddisch", 0); + setprop("/controls/fire/cargo/aftdisch", 0); + setprop("/systems/failures/cargo-fwd-fire", 0); + setprop("/systems/failures/cargo-aft-fire", 0); + setprop("/controls/fire/cargo/test", 0); fire_timer.start(); } @@ -68,7 +67,7 @@ var engFireDetectorUnit = { eF.loopTwo = 0; eF.fireProp = props.globals.getNode(fireProp, 1); eF.testProp = props.globals.getNode(testProp, 1); - eF.wow = props.globals.getNode("fdm/jsbsim/position/wow", 1); + eF.wow = props.globals.getNode("/fdm/jsbsim/position/wow", 1); eF.condition = 100; return eF; }, @@ -179,7 +178,6 @@ var engFireDetectorUnit = { } elsif (system == 2) { apuFireWarn.setBoolValue(1); if (me.wow.getValue() == 1) { - apuBleedNode.setValue(0); systems.APUController.APU.emergencyStop(); settimer(func() { # 3 sec delay - source TTM ATA 26 FIRE PROTECTION p102 extinguisherBottles.vector[4].discharge(); @@ -284,9 +282,9 @@ var detectorLoop = { } }, sendSignal: func(system, typeLoop) { - if (system == 0 and !getprop("systems/failures/engine-left-fire")) { return; } - elsif (system == 1 and !getprop("systems/failures/engine-right-fire")) { return; } - elsif (system == 2 and !getprop("systems/failures/apu-fire")) { return; } + if (system == 0 and !getprop("/systems/failures/engine-left-fire")) { return; } + elsif (system == 1 and !getprop("/systems/failures/engine-right-fire")) { return; } + elsif (system == 2 and !getprop("/systems/failures/apu-fire")) { return; } engFireDetectorUnits.vector[system].receiveSignal(typeLoop); } }; @@ -311,8 +309,8 @@ var cargoDetectorLoop = { } }, sendSignal: func(system, typeLoop) { - if ((system == 0 or system == 1) and !getprop("systems/failures/cargo-aft-fire")) { return; } - elsif (system == 2 and !getprop("systems/failures/cargo-fwd-fire")) { return; } + if ((system == 0 or system == 1) and !getprop("/systems/failures/cargo-aft-fire")) { return; } + elsif (system == 2 and !getprop("/systems/failures/cargo-fwd-fire")) { return; } cargoSmokeDetectorUnits.vector[system].receiveSignal(typeLoop); } @@ -552,7 +550,7 @@ var createCargoFireBottleListener = func(prop, index) { # Listeners setlistener("/controls/engines/engine[0]/fire-btn", func() { - if (getprop("controls/engines/engine[0]/fire-btn") == 1) { + if (getprop("/controls/engines/engine[0]/fire-btn") == 1) { ecam.shutUpYou(); eng1AgentTimerMakeTimer.stop(); eng1AgentTimer.setValue(10); @@ -562,7 +560,7 @@ setlistener("/controls/engines/engine[0]/fire-btn", func() { }, 0, 0); setlistener("/systems/fire/engine1/disch1", func() { - if (getprop("systems/fire/engine1/disch1") == 1) { + if (getprop("/systems/fire/engine1/disch1") == 1) { eng1Agent2TimerMakeTimer.stop(); eng1Agent2Timer.setValue(30); eng1Agent2TimerTime.setValue(elapsedTime.getValue() + 31); @@ -595,7 +593,7 @@ eng1Agent2TimerMakeTimerFunc = func() { } setlistener("/controls/engines/engine[1]/fire-btn", func() { - if (getprop("controls/engines/engine[1]/fire-btn") == 1) { + if (getprop("/controls/engines/engine[1]/fire-btn") == 1) { ecam.shutUpYou(); eng2AgentTimerMakeTimer.stop(); eng2AgentTimer.setValue(10); @@ -605,7 +603,7 @@ setlistener("/controls/engines/engine[1]/fire-btn", func() { }, 0, 0); setlistener("/systems/fire/engine2/disch1", func() { - if (getprop("systems/fire/engine2/disch1") == 1) { + if (getprop("/systems/fire/engine2/disch1") == 1) { eng2Agent2TimerMakeTimer.stop(); eng2Agent2Timer.setValue(30); eng2Agent2TimerTime.setValue(elapsedTime.getValue() + 31); @@ -638,9 +636,8 @@ eng2Agent2TimerMakeTimerFunc = func() { } setlistener("/controls/apu/fire-btn", func() { - if (getprop("controls/apu/fire-btn") == 1) { + if (getprop("/controls/apu/fire-btn") == 1) { ecam.shutUpYou(); - apuBleedNode.setValue(0); systems.APUController.APU.emergencyStop(); apuAgentTimerMakeTimer.stop(); apuAgentTimer.setValue(10); @@ -661,7 +658,7 @@ apuAgentTimerMakeTimerFunc = func() { } setlistener("/controls/fire/test-btn-1", func() { - if (getprop("systems/failures/engine-left-fire")) { return; } + if (getprop("/systems/failures/engine-left-fire")) { return; } if (testBtn.getValue() == 1) { if (dcbatNode.getValue() > 25 or dcessNode.getValue() > 25) { @@ -674,7 +671,7 @@ setlistener("/controls/fire/test-btn-1", func() { }, 0, 0); setlistener("/controls/fire/test-btn-2", func() { - if (getprop("systems/failures/engine-right-fire")) { return; } + if (getprop("/systems/failures/engine-right-fire")) { return; } if (testBtn2.getValue() == 1) { if (dcbatNode.getValue() > 25 or dcessNode.getValue() > 25) { eng2FireWarn.setBoolValue(1); @@ -686,7 +683,7 @@ setlistener("/controls/fire/test-btn-2", func() { }, 0, 0); setlistener("/controls/fire/apu-test-btn", func() { - if (getprop("systems/failures/apu-fire")) { return; } + if (getprop("/systems/failures/apu-fire")) { return; } if (apuTestBtn.getValue() == 1) { if (dcbatNode.getValue() > 25 or dcessNode.getValue() > 25) { apuFireWarn.setBoolValue(1); @@ -698,7 +695,7 @@ setlistener("/controls/fire/apu-test-btn", func() { }, 0, 0); setlistener("/controls/fire/cargo/test", func() { - if (getprop("systems/failures/aft-cargo-fire") or getprop("systems/failures/fwd-cargo-fire") or dcbatNode.getValue() < 25 or dcessNode.getValue() < 25) { return; } + if (getprop("/systems/failures/aft-cargo-fire") or getprop("/systems/failures/fwd-cargo-fire") or dcbatNode.getValue() < 25 or dcessNode.getValue() < 25) { return; } if (cargoTestBtn.getBoolValue()) { cargoTestTime.setValue(elapsedTime.getValue()); cargoTestChecker.start();