APU fire warn works

This commit is contained in:
legoboyvdlp R 2019-04-22 20:56:31 +01:00
parent c6af8d90f5
commit f0a812d85f
3 changed files with 70 additions and 8 deletions

View file

@ -221,31 +221,31 @@ var messages_priority_3 = func {
}
# ENG FIRE
if (eng1FireFlAgent2.clearFlag == 0 and getprop("/systems/fire/engine1/warning-active") == 1 and phaseVar >= 5 and phaseVar <= 7) {
if (eng1FireFlAgent2.clearFlag == 0 and getprop("/systems/failures/engine-left-fire") == 1 and phaseVar >= 5 and phaseVar <= 7) {
eng1FireFl.active = 1;
} else {
ECAM_controller.warningReset(eng1FireFl);
}
if (eng1FireGnevacBat.clearFlag == 0 and getprop("/systems/fire/engine1/warning-active") == 1 and (phaseVar < 5 or phaseVar > 7)) {
if (eng1FireGnevacBat.clearFlag == 0 and getprop("/systems/failures/engine-left-fire") == 1 and (phaseVar < 5 or phaseVar > 7)) {
eng1FireGn.active = 1;
} else {
ECAM_controller.warningReset(eng1FireGn);
}
if (eng2FireFlAgent2.clearFlag == 0 and getprop("/systems/fire/engine2/warning-active") == 1 and phaseVar >= 5 and phaseVar <= 7) {
if (eng2FireFlAgent2.clearFlag == 0 and getprop("/systems/failures/engine-right-fire") == 1 and phaseVar >= 5 and phaseVar <= 7) {
eng2FireFl.active = 1;
} else {
ECAM_controller.warningReset(eng2FireFl);
}
if (eng2FireGnevacBat.clearFlag == 0 and getprop("/systems/fire/engine2/warning-active") == 1 and (phaseVar < 5 or phaseVar > 7)) {
if (eng2FireGnevacBat.clearFlag == 0 and getprop("/systems/failures/engine-right-fire") == 1 and (phaseVar < 5 or phaseVar > 7)) {
eng2FireGn.active = 1;
} else {
ECAM_controller.warningReset(eng2FireGn);
}
if (apuFireMaster.clearFlag == 0 and getprop("/systems/fire/apu/warning-active") == 1) {
if (apuFireMaster.clearFlag == 0 and getprop("/systems/failures/apu-fire") == 1) {
apuFire.active = 1;
} else {
ECAM_controller.warningReset(apuFire);
@ -358,11 +358,19 @@ var messages_priority_3 = func {
} else {
ECAM_controller.warningReset(apuFirePB);
}
if (apuFireAgent.clearFlag == 0 and !getprop("/systems/fire/apu/disch")) {
if (apuFireAgent.clearFlag == 0 and !getprop("/systems/fire/apu/disch") and getprop("/systems/fire/apu/agent-timer") != 0) {
apuFireAgentTimer.active = 1;
} else {
ECAM_controller.warningReset(apuFireAgentTimer);
}
if (apuFireAgent.clearFlag == 0 and !getprop("/systems/fire/apu/disch") and getprop("/systems/fire/apu/agent-timer") == 0) {
apuFireAgent.active = 1;
} else {
ECAM_controller.warningReset(apuFireAgent);
}
if (apuFireMaster.clearFlag == 0 and getprop("/controls/APU/master")) {
apuFireMaster.active = 1;
} else {
@ -370,6 +378,7 @@ var messages_priority_3 = func {
}
} else {
ECAM_controller.warningReset(apuFirePB);
ECAM_controller.warningReset(apuFireAgentTimer);
ECAM_controller.warningReset(apuFireAgent);
ECAM_controller.warningReset(apuFireMaster);
}

View file

@ -99,7 +99,8 @@ var warnings = std.Vector.new([
# APU FIRE
var apuFire = warning.new(msg: "APU FIRE ", colour: "r", aural: 0, light: 0, hasSubmsg: 1, sdPage: "apu"),
var apuFirePB = warning.new(msg: " -APU FIRE P/B......PUSH", colour: "c"),
var apuFireAgent = warning.new(msg: " -AGENT AFT 10 S...DISCH", colour: "c"),
var apuFireAgentTimer = warning.new(msg: " -AGENT AFT 10 S...DISCH", colour: "c"),
var apuFireAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
var apuFireMaster = warning.new(msg: " -MASTER SW..........OFF", colour: "c"),
# Config

View file

@ -36,9 +36,14 @@ var testBtn2 = props.globals.getNode("/controls/fire/test-btn-2", 1);
var eng1FireWarn = props.globals.initNode("/systems/fire/engine1/warning-active", 0, "BOOL");
var eng2FireWarn = props.globals.initNode("/systems/fire/engine2/warning-active", 0, "BOOL");
var apuFireWarn = props.globals.initNode("/systems/fire/apu/warning-active", 0, "BOOL");
var eng1AgentTimer = props.globals.initNode("/systems/fire/engine1/agent-timer", 0, "INT");
var eng2AgentTimer = props.globals.initNode("/systems/fire/engine2/agent-timer", 0, "INT");
var apuAgentTimer = props.globals.initNode("/systems/fire/apu/agent-timer", 0, "INT");
var wow = props.globals.getNode("/fdm/jsbsim/position/wow", 1);
var dcbatNode = props.globals.getNode("systems/electrical/bus/dcbat", 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 fire_init = func {
setprop("/controls/OH/protectors/fwddisch", 0);
@ -288,7 +293,18 @@ var engFireDetectorUnit = {
} elsif (system == 2) {
apuFireWarn.setBoolValue(1);
if (me.wow.getValue() == 1) {
extinguisherBottles.vector[4].discharge();
if (apuMaster.getBoolValue()) {
apuBleedNode.setValue(0);
apuMaster.setValue(0);
Listener = setlistener("/systems/apu/rpm", func() {
if (getprop("/systems/apu/rpm") == 0) {
extinguisherBottles.vector[4].discharge();
removelistener(Listener);
}
}, 0, 0);
} else {
extinguisherBottles.vector[4].discharge();
}
}
}
}
@ -494,18 +510,54 @@ var createFireBottleListener = func(prop, fireBtnProp, index) {
setlistener("/controls/engines/engine[0]/fire-btn", func() {
if (getprop("/controls/engines/engine[0]/fire-btn") == 1) {
ecam.shutUpYou();
eng1AgentTimer.setValue(10);
createAgentTimerListener(1);
}
}, 0, 0);
var createAgentTimerListener = func(agent) {
var elapsedList = setlistener("/sim/time/elapsed-sec", func() {
if (agent == 1) {
if (eng1AgentTimer != 1) {
eng1AgentTimer.setValue(eng1AgentTimer.getValue() - 1);
} else {
eng1AgentTimer.setValue(0);
removelistener(elapsedList);
removeListener(createAgentTimerListener);
}
} elsif (agent == 2) {
if (eng2AgentTimer != 1) {
eng2AgentTimer.setValue(eng2AgentTimer.getValue() - 1);
} else {
eng2AgentTimer.setValue(0);
removelistener(elapsedList);
removeListener(createAgentTimerListener);
}
} elsif (agent == 3) {
if (apuAgentTimer != 1) {
eng1AgentTimer.setValue(apuAgentTimer.getValue() - 1);
} else {
apuAgentTimer.setValue(0);
removelistener(elapsedList);
removeListener(createAgentTimerListener);
}
}
}, 0, 0);
}
setlistener("/controls/engines/engine[1]/fire-btn", func() {
if (getprop("/controls/engines/engine[1]/fire-btn") == 1) {
ecam.shutUpYou();
eng2AgentTimer.setValue(10);
createAgentTimerListener(2);
}
}, 0, 0);
setlistener("/controls/APU/fire-btn", func() {
if (getprop("/controls/APU/fire-btn") == 1) {
ecam.shutUpYou();
apuAgentTimer.setValue(10);
createAgentTimerListener(3);
}
}, 0, 0);