From e30af581227266c77eb207135526adc6b78d2ade Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Wed, 1 Jan 2020 22:11:26 +0000 Subject: [PATCH] Add overspeed PFD warning for the landing gear --- Nasal/FMGC/FMGC.nas | 2 ++ Nasal/Systems/APU.nas | 67 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 Nasal/Systems/APU.nas diff --git a/Nasal/FMGC/FMGC.nas b/Nasal/FMGC/FMGC.nas index 8b983ef8..f3694d0e 100644 --- a/Nasal/FMGC/FMGC.nas +++ b/Nasal/FMGC/FMGC.nas @@ -266,6 +266,8 @@ var masterFMGC = maketimer(0.2, func { if (getprop("/systems/navigation/adr/computation/overspeed-vfe-spd") != 1024) { setprop("/FMGC/internal/maxspeed", getprop("/systems/navigation/adr/computation/overspeed-vfe-spd") - 4); + } elsif (getprop("/systems/navigation/adr/computation/overspeed-vle")) { + setprop("/FMGC/internal/maxspeed", 284); } else { setprop("/FMGC/internal/maxspeed", getprop("/it-fbw/speeds/vmo-mmo")); } diff --git a/Nasal/Systems/APU.nas b/Nasal/Systems/APU.nas new file mode 100644 index 00000000..9033032f --- /dev/null +++ b/Nasal/Systems/APU.nas @@ -0,0 +1,67 @@ +# A3XX Auxilliary Power Unit +# Jonathan Redpath (legoboyvdlp) + +# Copyright (c) 2019 Jonathan Redpath (legoboyvdlp) + +var APU = { + state: 0, # power up, watch, starting, run, cooldown, shutdown + nRpm: 0, + fuelValve: aircraft.door.new("/controls/apu/fuel-valve", 1), + inletFlap: aircraft.door.new("/controls/apu/inlet-flap", 12), + listenSignals: 0, + start: 0, + cancelCheckFlap: 0, + new: func() { + var a = { parents:[APU] }; + return a; + }, + setState: func(num) { + me.state = num; + }, + powerOn: func() { + # apu able to receive emergency stop or start signals + me.fuelValve.open(); + me.inletFlap.open(); + me.listenSignals = 1; + settimer(me.setState(1), 3); + }, + getStartSignal: func() { + if (me.listenSignals and me.state < 2 and me.nRpm < 7) { + me.start = 1; + me.startCheckFlap(); + } elsif (me.listenSignals) { + settimer(me.getStartSignal(), 0); + } + }, + startCheckFlap: func() { + if (me.inletFlap.getpos() != 1 and me.cancelCheckFlap == 0 and me.state == 1) { + settimer(me.startCheckFlap(), 0); + } elsif (me.cancelCheckFlap) { + me.cancelCheckFlap = 0; + } else { + me.setState(2); + } + }, + getStopSignal: func() { + if (me.listenSignals) { + me.cancelCheckFlap = 1; + me.inletFlap.close(); + # wait for flap close --> power down relay output + } + }, +}; + +var APUController = { + _init: 0, + APU: nil, + init: func() { + if (!me._init) { + me.APU = APU.new(); + } + }, + loop: func() { + if (me.APU != nil) { + APU.update(); + } + }, +}; \ No newline at end of file