1
0
Fork 0

Merge pull request #8 from legoboyvdlp/dev

keep aligned with head repo
This commit is contained in:
Andrea Vezzali 2020-01-13 10:11:16 +01:00 committed by GitHub
commit a21ac7213c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 1559 additions and 650 deletions

View file

@ -428,7 +428,7 @@
<z-offset-max-m type="float">300.0</z-offset-max-m>
</current-view>
<minimum-fg-version>2018.1.0</minimum-fg-version>
<minimum-fg-version>2019.2.0</minimum-fg-version>
</sim>
<consumables>
@ -1690,6 +1690,15 @@
<script>libraries.fovZoom(1);</script>
</binding>
</key>
<key n="99">
<name>c</name>
<desc>Reset view to center</desc>
<repeatable type="bool">true</repeatable>
<binding>
<command>nasal</command>
<script>libraries.resetView();</script>
</binding>
</key>
<key n="120">
<name>x</name>
<desc>Decrease field of view</desc>
@ -1933,7 +1942,7 @@
<file>Aircraft/A320-family/Nasal/Panels/atc.nas</file>
</atc>
<dmc>
<file>Aircraft/A320-family/Nasal/Systems/DMC.nas</file>
<file>Aircraft/A320-family/Nasal/Displays/DMC.nas</file>
</dmc>
<Dialogs>
<file>Aircraft/A320-family/gui/dialogs/refuel.nas</file>

View file

@ -119,7 +119,7 @@ var du_quality = gui.Dialog.new("sim/gui/dialogs/acconfig/du-quality/dialog", "A
var rendering_dlg = gui.Dialog.new("sim/gui/dialogs/rendering/dialog", "Aircraft/A320-family/AircraftConfig/rendering.xml");
spinning.start();
init_dlg.open();
http.load("https://raw.githubusercontent.com/legoboyvdlp/A320-family/master/revision.txt").done(func(r) setprop("/systems/acconfig/new-revision", r.response));
http.load("https://raw.githubusercontent.com/legoboyvdlp/A320-family/201912/revision.txt").done(func(r) setprop("/systems/acconfig/new-revision", r.response));
var revisionFile = (getprop("/sim/aircraft-dir") ~ "/revision.txt");
var current_revision = io.readfile(revisionFile);
print("A320-family Revision: " ~ current_revision);
@ -366,15 +366,15 @@ var beforestart_b = func {
setprop("/controls/adirs/ir[0]/knob","1");
setprop("/controls/adirs/ir[1]/knob","1");
setprop("/controls/adirs/ir[2]/knob","1");
systems.ADIRSControlPanel.adrSw(0);
systems.ADIRSControlPanel.adrSw(1);
systems.ADIRSControlPanel.adrSw(2);
if (systems.ADIRSnew.Switches.adrSw[0].getValue() != 1) { systems.ADIRSControlPanel.adrSw(0); }
if (systems.ADIRSnew.Switches.adrSw[1].getValue() != 1) { systems.ADIRSControlPanel.adrSw(1); }
if (systems.ADIRSnew.Switches.adrSw[2].getValue() != 1) { systems.ADIRSControlPanel.adrSw(2); }
systems.ADIRSControlPanel.irModeSw(0, 1);
systems.ADIRSControlPanel.irModeSw(1, 1);
systems.ADIRSControlPanel.irModeSw(2, 1);
systems.ADIRS.skip(0);
systems.ADIRS.skip(1);
systems.ADIRS.skip(2);
systems.ADIRSnew.ADIRunits[0].instAlign();
systems.ADIRSnew.ADIRunits[1].instAlign();
systems.ADIRSnew.ADIRunits[2].instAlign();
setprop("/controls/adirs/mcducbtn", 1);
setprop("/controls/switches/beacon", 1);
setprop("/controls/lighting/nav-lights-switch", 1);
@ -457,15 +457,15 @@ var taxi_b = func {
setprop("/controls/adirs/ir[0]/knob","1");
setprop("/controls/adirs/ir[1]/knob","1");
setprop("/controls/adirs/ir[2]/knob","1");
systems.ADIRSControlPanel.adrSw(0);
systems.ADIRSControlPanel.adrSw(1);
systems.ADIRSControlPanel.adrSw(2);
if (systems.ADIRSnew.Switches.adrSw[0].getValue() != 1) { systems.ADIRSControlPanel.adrSw(0); }
if (systems.ADIRSnew.Switches.adrSw[1].getValue() != 1) { systems.ADIRSControlPanel.adrSw(1); }
if (systems.ADIRSnew.Switches.adrSw[2].getValue() != 1) { systems.ADIRSControlPanel.adrSw(2); }
systems.ADIRSControlPanel.irModeSw(0, 1);
systems.ADIRSControlPanel.irModeSw(1, 1);
systems.ADIRSControlPanel.irModeSw(2, 1);
systems.ADIRS.skip(0);
systems.ADIRS.skip(1);
systems.ADIRS.skip(2);
systems.ADIRSnew.ADIRunits[0].instAlign();
systems.ADIRSnew.ADIRunits[1].instAlign();
systems.ADIRSnew.ADIRunits[2].instAlign();
setprop("/controls/adirs/mcducbtn", 1);
setprop("/controls/switches/beacon", 1);
setprop("/controls/switches/wing-lights", 1);

View file

@ -464,7 +464,6 @@
<!-- Remove from this animation once you simulate -->
<animation>
<type>select</type>
<object-name>alt-text-test</object-name>
<object-name>atc-test</object-name>
<object-name>audio_att_sgn</object-name>
<object-name>audio_call_hf2_led</object-name>
@ -480,19 +479,27 @@
<object-name>engine_fault_1</object-name>
<object-name>engine_fault_2</object-name>
<object-name>exped_led</object-name>
<object-name>hdg-text-test</object-name>
<object-name>qnh-test</object-name>
<object-name>radio_opt_led</object-name>
<object-name>rudder-trim-test</object-name>
<object-name>spd-text-test</object-name>
<object-name>terr_on_nd_on</object-name>
<object-name>ver.fmgc</object-name>
<condition>
<property>controls/switches/annun-test</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>alt-text-test</object-name>
<object-name>hdg-text-test</object-name>
<object-name>spd-text-test</object-name>
<object-name>vs-text-test</object-name>
<condition>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
</equals>
<or>
<not><property>/FMGC/FCU-working</property></not>
<property>/controls/switches/annun-test</property>
</or>
</condition>
</animation>

View file

@ -80,27 +80,20 @@ var canvas_IESI_base = {
dcess = systems.ELEC.Bus.dcEss.getValue();
dchot1 = systems.ELEC.Bus.dcHot1.getValue();
if (dcess >= 25 or (dchot1 >= 25 and airspeed.getValue() >= 50)) {
cur_time = et.getValue();
if (dcess >= 25 or (dchot1 >= 25 and airspeed.getValue() >= 50 and cur_time >= 5)) {
IESI.page.show();
IESI.update();
if (aconfig.getValue() != 1 and iesi_init.getValue() != 1) {
iesi_init.setBoolValue(1);
cur_time = et.getValue();
iesi_time.setValue(cur_time);
} else if (aconfig.getValue() == 1 and iesi_init.getValue() != 1) {
iesi_init.setBoolValue(1);
cur_time = et.getValue() - 87;
iesi_time.setValue(cur_time);
iesi_time.setValue(cur_time - 87);
}
} else {
iesi_init.setBoolValue(0);
}
if (dcess >= 25 or (dchot1 >= 25 and airspeed.getValue() >= 50)) {
IESI.page.show();
IESI.update();
} else {
IESI.page.hide();
}
},

View file

@ -257,6 +257,7 @@ var gen2_load = props.globals.initNode("/systems/electrical/extra/gen2-load", 0,
var du4_test = props.globals.initNode("/instrumentation/du/du4-test", 0, "BOOL");
var du4_test_time = props.globals.initNode("/instrumentation/du/du4-test-time", 0, "DOUBLE");
var du4_test_amount = props.globals.initNode("/instrumentation/du/du4-test-amount", 0, "DOUBLE");
var du4_offtime = props.globals.initNode("/instrumentation/du/du4-off-time", 0.0, "DOUBLE");
var canvas_lowerECAM_base = {
init: func(canvas_group, file) {
@ -278,27 +279,34 @@ var canvas_lowerECAM_base = {
getKeys: func() {
return [];
},
update: func() {
elapsedtime = elapsed_sec.getValue();
updateDu4: func() {
var elapsedtime = elapsed_sec.getValue();
if (ac2.getValue() >= 110) {
if (gear0_wow.getValue() == 1) {
if (autoconfig_running.getValue() != 1 and du4_test.getValue() != 1) {
if (du4_offtime.getValue() + 3 < elapsedtime) {
if (gear0_wow.getValue() == 1) {
if (autoconfig_running.getValue() != 1 and du4_test.getValue() != 1) {
du4_test.setValue(1);
du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du4_test_time.setValue(elapsedtime);
} else if (autoconfig_running.getValue() == 1 and du4_test.getValue() != 1) {
du4_test.setValue(1);
du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du4_test_time.setValue(elapsedtime - 30);
}
} else {
du4_test.setValue(1);
du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du4_test_time.setValue(elapsedtime);
} else if (autoconfig_running.getValue() == 1 and du4_test.getValue() != 1) {
du4_test.setValue(1);
du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du4_test_time.setValue(elapsedtime - 30);
du4_test_amount.setValue(0);
du4_test_time.setValue(-100);
}
} else {
du4_test.setValue(1);
du4_test_amount.setValue(0);
du4_test_time.setValue(-100);
}
} else if (ac1_src.getValue() == "XX" or ac2_src.getValue() == "XX") {
} else {
du4_test.setValue(0);
du4_offtime.setValue(elapsedtime);
}
},
update: func() {
var elapsedtime = elapsed_sec.getValue();
if (ac2.getValue() >= 110 and lighting_du4.getValue() > 0.01) {
if (du4_test_time.getValue() + du4_test_amount.getValue() >= elapsedtime) {
@ -597,14 +605,14 @@ var canvas_lowerECAM_apu = {
me["APUAvail"].hide();
}
if (tank3_content_lbs.getValue() < 100) {
if (!systems.FUEL.Pumps.apu.getBoolValue() and systems.FUEL.Pumps.allOff.getBoolValue()) {
me["APUfuelLO"].show();
} else {
me["APUfuelLO"].hide();
}
# APU Gen
if (apu_volts.getValue() > 110) {
if (apu_volts.getValue() >= 110) {
me["APUGenVolt"].setColor(0.0509,0.7529,0.2941);
} else {
me["APUGenVolt"].setColor(0.7333,0.3803,0);
@ -1433,13 +1441,13 @@ var canvas_lowerECAM_elec = {
me["GEN1-num-label"].setColor(0.8078,0.8039,0.8078);
}
if (gen1_volts.getValue() > 120 or gen1_volts.getValue() < 110 or gen1_hz.getValue() > 410 or gen1_hz.getValue() < 390 or gen1_load.getValue() > 110) {
if (gen1_volts.getValue() > 120 or gen1_volts.getValue() < 110 or gen1_hz.getValue() > 410 or gen1_hz.getValue() < 390 or gen1_load.getValue() >= 110) {
me["GEN1-label"].setColor(0.7333,0.3803,0);
} else {
me["GEN1-label"].setColor(0.8078,0.8039,0.8078);
}
if (gen1_load.getValue() > 110) {
if (gen1_load.getValue() >= 110) {
me["Gen1Load"].setColor(0.7333,0.3803,0);
} else {
me["Gen1Load"].setColor(0.0509,0.7529,0.2941);
@ -1490,13 +1498,13 @@ var canvas_lowerECAM_elec = {
me["GEN2-num-label"].setColor(0.8078,0.8039,0.8078);
}
if (gen2_volts.getValue() > 120 or gen2_volts.getValue() < 110 or gen2_hz.getValue() > 410 or gen2_hz.getValue() < 390 or gen2_load.getValue() > 110) {
if (gen2_volts.getValue() > 120 or gen2_volts.getValue() < 110 or gen2_hz.getValue() > 410 or gen2_hz.getValue() < 390 or gen2_load.getValue() >= 110) {
me["GEN2-label"].setColor(0.7333,0.3803,0);
} else {
me["GEN2-label"].setColor(0.8078,0.8039,0.8078);
}
if (gen2_load.getValue() > 110) {
if (gen2_load.getValue() >= 110) {
me["Gen2Load"].setColor(0.7333,0.3803,0);
} else {
me["Gen2Load"].setColor(0.0509,0.7529,0.2941);
@ -1540,13 +1548,13 @@ var canvas_lowerECAM_elec = {
me["APUGenHz"].setText(sprintf("%s", math.round(apu_hz.getValue())));
}
if (apu_volts.getValue() > 120 or apu_volts.getValue() < 110 or apu_hz.getValue() > 410 or apu_hz.getValue() < 390 or apu_load.getValue() > 110) {
if (apu_volts.getValue() > 120 or apu_volts.getValue() < 110 or apu_hz.getValue() > 410 or apu_hz.getValue() < 390 or apu_load.getValue() >= 110) {
me["APUGentext"].setColor(0.7333,0.3803,0);
} else {
me["APUGentext"].setColor(0.8078,0.8039,0.8078);
}
if(apu_load.getValue() > 110) {
if(apu_load.getValue() >= 110) {
me["APUGenLoad"].setColor(0.7333,0.3803,0);
} else {
me["APUGenLoad"].setColor(0.0509,0.7529,0.2941);
@ -1625,25 +1633,25 @@ var canvas_lowerECAM_elec = {
me["ELEC-DCESS-label"].setColor(0.7333,0.3803,0);
}
if (ac_ess.getValue() > 110) {
if (ac_ess.getValue() >= 110) {
me["ELEC-ACESS-label"].setColor(0.0509,0.7529,0.2941);
} else {
me["ELEC-ACESS-label"].setColor(0.7333,0.3803,0);
}
if (systems.ELEC.Bus.acEssShed.getValue() > 110) {
if (systems.ELEC.Bus.acEssShed.getValue() >= 110) {
me["ACESS-SHED"].hide();
} else {
me["ACESS-SHED"].show();
}
if (ac1.getValue() > 110) {
if (ac1.getValue() >= 110) {
me["ELEC-AC1-label"].setColor(0.0509,0.7529,0.2941);
} else {
me["ELEC-AC1-label"].setColor(0.7333,0.3803,0);
}
if (ac2.getValue() > 110) {
if (ac2.getValue() >= 110) {
me["ELEC-AC2-label"].setColor(0.0509,0.7529,0.2941);
} else {
me["ELEC-AC2-label"].setColor(0.7333,0.3803,0);
@ -1712,11 +1720,19 @@ var canvas_lowerECAM_elec = {
}
if (getprop("/systems/electrical/relay/ac-ess-feed-1/contact-pos") == 1) {
me["ELEC-Line-AC1-ACESS"].show();
if (ac1.getValue() >= 110) {
me["ELEC-Line-AC1-ACESS"].show();
} else {
me["ELEC-Line-AC1-ACESS"].hide();
}
me["ELEC-Line-AC2-ACESS"].hide();
} elsif (getprop("/systems/electrical/relay/ac-ess-feed-2/contact-pos") == 1) {
me["ELEC-Line-AC1-ACESS"].hide();
me["ELEC-Line-AC2-ACESS"].show();
if (ac2.getValue() >= 110) {
me["ELEC-Line-AC2-ACESS"].show();
} else {
me["ELEC-Line-AC2-ACESS"].hide();
}
} else {
me["ELEC-Line-AC1-ACESS"].hide();
me["ELEC-Line-AC2-ACESS"].hide();
@ -1782,7 +1798,7 @@ var canvas_lowerECAM_elec = {
me["ELEC-Line-Emergen-ESSTR"].hide();
}
if (!getprop("/systems/electrical/relay/ac-ess-feed-emer-gen/contact-pos") and (!getprop("/systems/electrical/relay/tr-contactor-1/contact-pos") or !getprop("/systems/electrical/relay/tr-contactor-2/contact-pos"))) {
if (systems.ELEC.Bus.acEss.getValue() >= 110 and !getprop("/systems/electrical/relay/ac-ess-feed-emer-gen/contact-pos") and (!getprop("/systems/electrical/relay/tr-contactor-1/contact-pos") or !getprop("/systems/electrical/relay/tr-contactor-2/contact-pos"))) {
me["ELEC-Line-ACESS-TRESS"].show();
} else {
me["ELEC-Line-ACESS-TRESS"].hide();
@ -2739,13 +2755,13 @@ var canvas_lowerECAM_hyd = {
me["OVHT-Blue"].hide();
}
if (systems.ELEC.Bus.ac1.getValue() > 110) {
if (systems.ELEC.Bus.ac1.getValue() >= 110) {
me["ELEC-Blue-label"].setColor(0.8078,0.8039,0.8078);
} else {
me["ELEC-Blue-label"].setColor(0.7333,0.3803,0);
}
if (systems.ELEC.Bus.ac2.getValue() > 110) {
if (systems.ELEC.Bus.ac2.getValue() >= 110) {
me["ELEC-Yellow-label"].setColor(0.8078,0.8039,0.8078);
} else {
me["ELEC-Yellow-label"].setColor(0.7333,0.3803,0);
@ -3329,6 +3345,7 @@ var canvas_lowerECAM_test = {
return ["Test_white","Test_text"];
},
update: func() {
var elapsedtime = elapsed_sec.getValue();
if (du4_test_time.getValue() + 1 >= elapsedtime) {
me["Test_white"].show();
me["Test_text"].hide();
@ -3395,3 +3412,7 @@ var showLowerECAM = func {
var dlg = canvas.Window.new([512, 512], "dialog").set("resize", 1);
dlg.setCanvas(lowerECAM_display);
}
setlistener("/systems/electrical/bus/ac-2", func() {
canvas_lowerECAM_base.updateDu4();
}, 0, 0);

View file

@ -877,7 +877,7 @@ var canvas_MCDU_base = {
me["Simple_R6S"].setText("TROPO");
me["Simple_R1"].setText(sprintf("%s", depArpt.getValue() ~ "/" ~ arrArpt.getValue()));
me["Simple_R2"].setText("REQUEST ");
me["Simple_R3"].setText("ALIGN IRS ");
me["Simple_R3"].setText("IRS INIT >");
me["Simple_R4"].setText("-----.--");
me["Simple_R5"].setText("WIND ");
me["Simple_R6"].setText(sprintf("%5.0f", tropo.getValue()));

View file

@ -20,8 +20,10 @@ var du1_test_amount = props.globals.getNode("/instrumentation/du/du1-test-amount
var du2_test = props.globals.getNode("/instrumentation/du/du2-test");
var du2_test_time = props.globals.getNode("/instrumentation/du/du2-test-time");
var du2_test_amount = props.globals.getNode("/instrumentation/du/du2-test-amount");
var du2_offtime = props.globals.initNode("/instrumentation/du/du2-off-time", 0.0, "DOUBLE");
var du5_test = props.globals.getNode("/instrumentation/du/du5-test");
var du5_test_time = props.globals.getNode("/instrumentation/du/du5-test-time");
var du5_offtime = props.globals.initNode("/instrumentation/du/du5-off-time", 0.0, "DOUBLE");
var du5_test_amount = props.globals.getNode("/instrumentation/du/du5-test-amount");
var du6_test = props.globals.getNode("/instrumentation/du/du6-test");
var du6_test_time = props.globals.getNode("/instrumentation/du/du6-test-time");
@ -84,47 +86,60 @@ var canvas_nd_base = {
getKeys: func() {
return [];
},
update: func() {
elapsedtime = getprop("/sim/time/elapsed-sec");
updateDu2: func() {
var elapsedtime = getprop("/sim/time/elapsed-sec");
if (getprop("/systems/electrical/bus/ac-ess-shed") >= 110) {
if (wow0.getValue() == 1) {
if (getprop("/systems/acconfig/autoconfig-running") != 1 and du2_test.getValue() != 1) {
if (du2_offtime.getValue() + 3 < elapsedtime) {
if (wow0.getValue() == 1) {
if (getprop("/systems/acconfig/autoconfig-running") != 1 and du2_test.getValue() != 1) {
du2_test.setValue(1);
du2_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du2_test_time.setValue(getprop("/sim/time/elapsed-sec"));
} else if (getprop("/systems/acconfig/autoconfig-running") == 1 and du2_test.getValue() != 1) {
du2_test.setValue(1);
du2_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du2_test_time.setValue(getprop("/sim/time/elapsed-sec") - 30);
}
} else {
du2_test.setValue(1);
du2_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du2_test_time.setValue(getprop("/sim/time/elapsed-sec"));
} else if (getprop("/systems/acconfig/autoconfig-running") == 1 and du2_test.getValue() != 1) {
du2_test.setValue(1);
du2_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du2_test_time.setValue(getprop("/sim/time/elapsed-sec") - 30);
du2_test_amount.setValue(0);
du2_test_time.setValue(-100);
}
} else {
du2_test.setValue(1);
du2_test_amount.setValue(0);
du2_test_time.setValue(-100);
}
} else {
du2_test.setValue(0);
du2_offtime.setValue(elapsedtime);
}
},
updateDu5: func() {
var elapsedtime = getprop("/sim/time/elapsed-sec");
if (getprop("/systems/electrical/bus/ac-2") >= 110) {
if (wow0.getValue() == 1) {
if (getprop("/systems/acconfig/autoconfig-running") != 1 and du5_test.getValue() != 1) {
if (du5_offtime.getValue() + 3 < elapsedtime) {
if (wow0.getValue() == 1) {
if (getprop("/systems/acconfig/autoconfig-running") != 1 and du5_test.getValue() != 1) {
du5_test.setValue(1);
du5_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du5_test_time.setValue(getprop("/sim/time/elapsed-sec"));
} else if (getprop("/systems/acconfig/autoconfig-running") == 1 and du5_test.getValue() != 1) {
du5_test.setValue(1);
du5_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du5_test_time.setValue(getprop("/sim/time/elapsed-sec") - 30);
}
} else {
du5_test.setValue(1);
du5_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du5_test_time.setValue(getprop("/sim/time/elapsed-sec"));
} else if (getprop("/systems/acconfig/autoconfig-running") == 1 and du5_test.getValue() != 1) {
du5_test.setValue(1);
du5_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du5_test_time.setValue(getprop("/sim/time/elapsed-sec") - 30);
du5_test_amount.setValue(0);
du5_test_time.setValue(-100);
}
} else {
du5_test.setValue(1);
du5_test_amount.setValue(0);
du5_test_time.setValue(-100);
}
} else {
du5_test.setValue(0);
du5_offtime.setValue(elapsedtime);
}
},
update: func() {
var elapsedtime = getprop("/sim/time/elapsed-sec");
if (getprop("/systems/electrical/bus/ac-ess-shed") >= 110 and getprop("/controls/lighting/DU/du2") > 0) {
if (du2_test_time.getValue() + du2_test_amount.getValue() >= elapsedtime and cpt_du_xfr.getValue() != 1) {
ND_1.page.hide();
@ -383,3 +398,11 @@ var showNd = func(nd = nil) {
var dlg = canvas.Window.new([512, 512], "dialog").set("resize", 1);
dlg.setCanvas(nd_display[nd]);
}
setlistener("/systems/electrical/bus/ac-ess-shed", func() {
canvas_nd_base.updateDu2();
}, 0, 0);
setlistener("/systems/electrical/bus/ac-2", func() {
canvas_nd_base.updateDu5();
}, 0, 0);

View file

@ -40,14 +40,6 @@
<object-name>ELAC1Btn1F</object-name>
<object-name>ELAC1Btn2O</object-name>
<object-name>EmerExtLtBtn2O</object-name>
<object-name>Eng1FireAgt1Btn1S</object-name>
<object-name>Eng1FireAgt1Btn2D</object-name>
<object-name>Eng1FireAgt2Btn1S</object-name>
<object-name>Eng1FireAgt2Btn2D</object-name>
<object-name>Eng2FireAgt1Btn1S</object-name>
<object-name>Eng2FireAgt1Btn2D</object-name>
<object-name>Eng2FireAgt2Btn1S</object-name>
<object-name>Eng2FireAgt2Btn2D</object-name>
<object-name>ExtPwrBtn2O</object-name>
<object-name>FAC1Btn1F</object-name>
<object-name>FAC1Btn2O</object-name>
@ -65,10 +57,18 @@
<object-name>SEC1Btn1F</object-name>
<object-name>SEC1Btn2O</object-name>
<object-name>VentBlowBtn1F</object-name>
<object-name>Eng1FireAgt1Btn1S</object-name>
<object-name>Eng1FireAgt1Btn2D</object-name>
<object-name>Eng2FireAgt1Btn1S</object-name>
<object-name>Eng2FireAgt1Btn2D</object-name>
<object-name>Eng1FireAgt2Btn1S</object-name>
<object-name>Eng1FireAgt2Btn2D</object-name>
<object-name>Eng2FireAgt2Btn1S</object-name>
<object-name>Eng2FireAgt2Btn2D</object-name>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/ac-ess</property>
<value>25</value>
<value>5</value>
</greater-than-equals>
</condition>
</animation>
@ -167,7 +167,7 @@
</greater-than-equals>
</condition>
</animation>
<!-- These are not simulated yet, so they only illuminate when the test is on. Remove each light/button once you add its select animation. -JD -->
<animation>
<type>select</type>
@ -3248,16 +3248,10 @@
<repeatable>false</repeatable>
<binding>
<condition>
<or>
<greater-than-equals>
<property>systems/electrical/bus/dc-bat</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-ess</property>
<value>25</value>
</greater-than-equals>
</or>
<greater-than-equals>
<property>systems/electrical/bus/dc-bat</property>
<value>25</value>
</greater-than-equals> <!-- control is on DC BAT bus - so if you enter EMER ELEC with it turned off, too bad -->
</condition>
<command>property-toggle</command>
<property>controls/electrical/switches/apu</property>
@ -3696,21 +3690,8 @@
<object-name>EmerGenInd1F</object-name>
<condition>
<and>
<greater-than-equals>
<property>systems/electrical/bus/dc-ess</property>
<value>25</value>
</greater-than-equals>
<or>
<and>
<equals>
<property>systems/electrical/bus/ac-1</property>
<value>0</value>
</equals>
<equals>
<property>systems/electrical/bus/ac-2</property>
<value>0</value>
</equals>
</and>
<property>/systems/electrical/light/rat-emer-gen-fault</property>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
@ -6497,6 +6478,18 @@
<command>property-assign</command>
<property>controls/engines/engine[0]/agent1-btn</property>
<value>1</value>
<condition>
<or>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-1</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-2</property>
<value>25</value>
</greater-than-equals>
</or>
</condition>
</binding>
</action>
</animation>
@ -6513,6 +6506,12 @@
<command>property-assign</command>
<property>controls/engines/engine[0]/agent2-btn</property>
<value>1</value>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/dc-2</property>
<value>25</value>
</greater-than-equals>
</condition>
</binding>
</action>
</animation>
@ -6520,22 +6519,60 @@
<animation>
<type>select</type>
<object-name>Eng1FireAgt1Btn1S</object-name>
<condition>
<and>
<or>
<equals>
<property>controls/engines/engine[0]/fire-btn</property>
<value>1</value>
</equals>
<equals>
<property>/controls/fire/test-btn-1</property>
<value>1</value>
</equals>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
</equals>
</or>
<or>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-1</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-2</property>
<value>25</value>
</greater-than-equals>
</or>
</and>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>Eng1FireAgt2Btn1S</object-name>
<condition>
<or>
<equals>
<property>controls/engines/engine[0]/fire-btn</property>
<value>1</value>
</equals>
<equals>
<property>/controls/fire/test-btn-1</property>
<value>1</value>
</equals>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
</equals>
</or>
<and>
<or>
<equals>
<property>controls/engines/engine[0]/fire-btn</property>
<value>1</value>
</equals>
<equals>
<property>/controls/fire/test-btn-1</property>
<value>1</value>
</equals>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
</equals>
</or>
<greater-than-equals>
<property>systems/electrical/bus/dc-2</property>
<value>25</value>
</greater-than-equals>
</and>
</condition>
</animation>
@ -6592,6 +6629,24 @@
<command>property-assign</command>
<property>controls/fire/test-btn-1</property>
<value>1</value>
<condition>
<or>
<or>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-1</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-2</property>
<value>25</value>
</greater-than-equals>
</or>
<greater-than-equals>
<property>systems/electrical/bus/dc-2</property>
<value>25</value>
</greater-than-equals>
</or>
</condition>
</binding>
<mod-up>
<binding>
@ -6613,6 +6668,24 @@
<command>property-assign</command>
<property>controls/fire/test-btn-2</property>
<value>1</value>
<condition>
<or>
<or>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-1</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-2</property>
<value>25</value>
</greater-than-equals>
</or>
<greater-than-equals>
<property>systems/electrical/bus/dc-2</property>
<value>25</value>
</greater-than-equals>
</or>
</condition>
</binding>
<mod-up>
<binding>
@ -6634,6 +6707,18 @@
<command>property-assign</command>
<property>controls/fire/apu-test-btn</property>
<value>1</value>
<condition>
<or>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-1</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-2</property>
<value>25</value>
</greater-than-equals>
</or>
</condition>
</binding>
<mod-up>
<binding>
@ -6746,6 +6831,22 @@
<command>property-assign</command>
<property>controls/APU/agent-btn</property>
<value>1</value>
<condition>
<or>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-1</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-2</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-bat</property>
<value>25</value>
</greater-than-equals>
</or>
</condition>
</binding>
</action>
</animation>
@ -6893,6 +6994,18 @@
<command>property-assign</command>
<property>controls/engines/engine[1]/agent1-btn</property>
<value>1</value>
<condition>
<or>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-1</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-2</property>
<value>25</value>
</greater-than-equals>
</or>
</condition>
</binding>
</action>
</animation>
@ -6909,6 +7022,12 @@
<command>property-assign</command>
<property>controls/engines/engine[1]/agent2-btn</property>
<value>1</value>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/dc-2</property>
<value>25</value>
</greater-than-equals>
</condition>
</binding>
</action>
</animation>
@ -6916,22 +7035,60 @@
<animation>
<type>select</type>
<object-name>Eng2FireAgt1Btn1S</object-name>
<condition>
<and>
<or>
<equals>
<property>controls/engines/engine[1]/fire-btn</property>
<value>1</value>
</equals>
<equals>
<property>/controls/fire/test-btn-2</property>
<value>1</value>
</equals>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
</equals>
</or>
<or>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-1</property>
<value>25</value>
</greater-than-equals>
<greater-than-equals>
<property>systems/electrical/bus/dc-hot-2</property>
<value>25</value>
</greater-than-equals>
</or>
</and>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>Eng2FireAgt2Btn1S</object-name>
<condition>
<or>
<equals>
<property>controls/engines/engine[1]/fire-btn</property>
<value>1</value>
</equals>
<equals>
<property>controls/fire/test-btn-2</property>
<value>1</value>
</equals>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
</equals>
</or>
<and>
<or>
<equals>
<property>controls/engines/engine[1]/fire-btn</property>
<value>1</value>
</equals>
<equals>
<property>/controls/fire/test-btn-2</property>
<value>1</value>
</equals>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
</equals>
</or>
<greater-than-equals>
<property>systems/electrical/bus/dc-2</property>
<value>25</value>
</greater-than-equals>
</and>
</condition>
</animation>

View file

@ -108,12 +108,6 @@ var athr = props.globals.getNode("/it-autoflight/output/athr", 1);
var gear_agl = props.globals.getNode("/position/gear-agl-ft", 1);
var aileron_input = props.globals.getNode("/controls/flight/aileron-input-fast", 1);
var elevator_input = props.globals.getNode("/controls/flight/elevator-input-fast", 1);
var adirs0_active = props.globals.getNode("/instrumentation/adirs/adr[0]/active", 1);
var adirs1_active = props.globals.getNode("/instrumentation/adirs/adr[1]/active", 1);
var adirs2_active = props.globals.getNode("/instrumentation/adirs/adr[2]/active", 1);
var ir0_aligned = props.globals.getNode("/instrumentation/adirs/ir[0]/aligned", 1);
var ir1_aligned = props.globals.getNode("/instrumentation/adirs/ir[1]/aligned", 1);
var ir2_aligned = props.globals.getNode("/instrumentation/adirs/ir[2]/aligned", 1);
var att_switch = props.globals.getNode("/controls/switching/ATTHDG", 1);
var air_switch = props.globals.getNode("/controls/switching/AIRDATA", 1);
@ -128,11 +122,9 @@ var hdg_diff = props.globals.initNode("/instrumentation/pfd/hdg-diff", 0.0, "DOU
var hdg_scale = props.globals.initNode("/instrumentation/pfd/heading-scale", 0.0, "DOUBLE");
var track = props.globals.initNode("/instrumentation/pfd/track-deg", 0.0, "DOUBLE");
var track_diff = props.globals.initNode("/instrumentation/pfd/track-hdg-diff", 0.0, "DOUBLE");
var speed_pred_1 = props.globals.initNode("/instrumentation/pfd/speed-lookahead-1", 0.0, "DOUBLE");
var speed_pred_2 = props.globals.initNode("/instrumentation/pfd/speed-lookahead-2", 0.0, "DOUBLE");
var speed_pred_3 = props.globals.initNode("/instrumentation/pfd/speed-lookahead-3", 0.0, "DOUBLE");
var du1_test = props.globals.initNode("/instrumentation/du/du1-test", 0, "BOOL");
var du1_test_time = props.globals.initNode("/instrumentation/du/du1-test-time", 0.0, "DOUBLE");
var du1_offtime = props.globals.initNode("/instrumentation/du/du1-off-time", 0.0, "DOUBLE");
var du1_test_amount = props.globals.initNode("/instrumentation/du/du1-test-amount", 0.0, "DOUBLE");
var du2_test = props.globals.initNode("/instrumentation/du/du2-test", 0, "BOOL");
var du2_test_time = props.globals.initNode("/instrumentation/du/du2-test-time", 0.0, "DOUBLE");
@ -143,6 +135,7 @@ var du5_test_amount = props.globals.initNode("/instrumentation/du/du5-test-amoun
var du6_test = props.globals.initNode("/instrumentation/du/du6-test", 0, "BOOL");
var du6_test_time = props.globals.initNode("/instrumentation/du/du6-test-time", 0.0, "DOUBLE");
var du6_test_amount = props.globals.initNode("/instrumentation/du/du6-test-amount", 0.0, "DOUBLE");
var du6_offtime = props.globals.initNode("/instrumentation/du/du6-off-time", 0.0, "DOUBLE");
var canvas_PFD_base = {
init: func(canvas_group, file) {
@ -196,47 +189,58 @@ var canvas_PFD_base = {
"QNH_std","QNH_box","LOC_pointer","LOC_scale","GS_scale","GS_pointer","CRS_pointer","HDG_target","HDG_scale","HDG_one","HDG_two","HDG_three","HDG_four","HDG_five","HDG_six","HDG_seven","HDG_digit_L","HDG_digit_R","HDG_error","HDG_group","HDG_frame",
"TRK_pointer","machError"];
},
update: func() {
elapsedtime_act = elapsedtime.getValue();
updateDu1: func() {
var elapsedtime_act = elapsedtime.getValue();
if (acess.getValue() >= 110) {
if (wow0.getValue() == 1) {
if (acconfig.getValue() != 1 and du1_test.getValue() != 1) {
if (du1_offtime.getValue() + 3 < elapsedtime_act) {
if (wow0.getValue() == 1) {
if (acconfig.getValue() != 1 and du1_test.getValue() != 1) {
du1_test.setValue(1);
du1_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du1_test_time.setValue(elapsedtime_act);
} else if (acconfig.getValue() == 1 and du1_test.getValue() != 1) {
du1_test.setValue(1);
du1_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du1_test_time.setValue(elapsedtime_act - 30);
}
} else {
du1_test.setValue(1);
du1_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du1_test_time.setValue(elapsedtime_act);
} else if (acconfig.getValue() == 1 and du1_test.getValue() != 1) {
du1_test.setValue(1);
du1_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du1_test_time.setValue(elapsedtime_act - 30);
du1_test_amount.setValue(0);
du1_test_time.setValue(-100);
}
} else {
du1_test.setValue(1);
du1_test_amount.setValue(0);
du1_test_time.setValue(-100);
}
} else {
du1_test.setValue(0);
du1_offtime.setValue(elapsedtime_act);
}
},
updateDu6: func() {
var elapsedtime_act = elapsedtime.getValue();
if (ac2.getValue() >= 110) {
if (wow0.getValue() == 1) {
if (acconfig.getValue() != 1 and du6_test.getValue() != 1) {
if (du6_offtime.getValue() + 3 < elapsedtime_act) {
if (wow0.getValue() == 1) {
if (acconfig.getValue() != 1 and du6_test.getValue() != 1) {
du6_test.setValue(1);
du6_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du6_test_time.setValue(elapsedtime_act);
} else if (acconfig.getValue() == 1 and du6_test.getValue() != 1) {
du6_test.setValue(1);
du6_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du6_test_time.setValue(elapsedtime_act - 30);
}
} else {
du6_test.setValue(1);
du6_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du6_test_time.setValue(elapsedtime_act);
} else if (acconfig.getValue() == 1 and du6_test.getValue() != 1) {
du6_test.setValue(1);
du6_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du6_test_time.setValue(elapsedtime_act - 30);
du6_test_amount.setValue(0);
du6_test_time.setValue(-100);
}
} else {
du6_test.setValue(1);
du6_test_amount.setValue(0);
du6_test_time.setValue(-100);
}
} else {
du6_test.setValue(0);
du6_offtime.setValue(elapsedtime_act);
}
},
update: func() {
var elapsedtime_act = elapsedtime.getValue();
if (acconfig_mismatch.getValue() == "0x000") {
PFD_1_mismatch.page.hide();
@ -790,26 +794,22 @@ var canvas_PFD_1 = {
wow2_act = wow2.getValue();
# Errors
if ((adirs0_active.getValue() == 1) or (air_switch.getValue() == -1 and adirs2_active.getValue() == 1)) {
me["VS_group"].show();
me["VS_error"].hide();
} else {
me["VS_error"].show();
me["VS_group"].hide();
}
if ((ir0_aligned.getValue() == 1) or (ir2_aligned.getValue() == 1 and att_switch.getValue() == -1)) {
if (systems.ADIRSnew.ADIRunits[0].aligned == 1 or (systems.ADIRSnew.ADIRunits[2].aligned == 1 and att_switch.getValue() == -1)) {
me["AI_group"].show();
me["HDG_group"].show();
me["AI_error"].hide();
me["HDG_error"].hide();
me["HDG_frame"].setColor(1,1,1);
me["VS_group"].show();
me["VS_error"].hide(); # VS is inertial-sourced
} else {
me["AI_error"].show();
me["HDG_error"].show();
me["HDG_frame"].setColor(1,0,0);
me["AI_group"].hide();
me["HDG_group"].hide();
me["VS_error"].show();
me["VS_group"].hide();
}
# FD
@ -938,7 +938,7 @@ var canvas_PFD_1 = {
me["ASI_target"].hide();
}
me.ASItrend = speed_pred_1.getValue() - me.ASI;
me.ASItrend = dmc.DMController.DMCs[0].outputs[6].getValue() - me.ASI;
me["ASI_trend_up"].setTranslation(0, math.clamp(me.ASItrend, 0, 50) * -6.6);
me["ASI_trend_down"].setTranslation(0, math.clamp(me.ASItrend, -50, 0) * -6.6);
@ -1083,37 +1083,22 @@ var canvas_PFD_2 = {
wow2_act = wow2.getValue();
# Errors
if ((adirs1_active.getValue() == 1) or (air_switch.getValue() == 1 and adirs2_active.getValue() == 1)) {
me["ALT_group"].show();
me["ALT_group2"].show();
me["ALT_scale"].show();
me["VS_group"].show();
me["ALT_error"].hide();
me["ALT_frame"].setColor(1,1,1);
me["VS_error"].hide();
} else {
me["ALT_error"].show();
me["ALT_frame"].setColor(1,0,0);
me["VS_error"].show();
me["ASI_group"].hide();
me["ALT_group"].hide();
me["ALT_group2"].hide();
me["ALT_scale"].hide();
me["VS_group"].hide();
}
if ((ir1_aligned.getValue() == 1) or (ir2_aligned.getValue() == 1 and att_switch.getValue() == 1)) {
if (systems.ADIRSnew.ADIRunits[1].aligned == 1 or (systems.ADIRSnew.ADIRunits[2].aligned == 1 and att_switch.getValue() == 1)) {
me["AI_group"].show();
me["HDG_group"].show();
me["AI_error"].hide();
me["HDG_error"].hide();
me["HDG_frame"].setColor(1,1,1);
me["VS_group"].show();
me["VS_error"].hide(); # VS is inertial-sourced
} else {
me["AI_error"].show();
me["HDG_error"].show();
me["HDG_frame"].setColor(1,0,0);
me["AI_group"].hide();
me["HDG_group"].hide();
me["VS_error"].show();
me["VS_group"].hide();
}
# FD
@ -1242,7 +1227,7 @@ var canvas_PFD_2 = {
me["ASI_target"].hide();
}
me.ASItrend = speed_pred_2.getValue() - me.ASI;
me.ASItrend = dmc.DMController.DMCs[1].outputs[6].getValue() - me.ASI;
me["ASI_trend_up"].setTranslation(0, math.clamp(me.ASItrend, 0, 50) * -6.6);
me["ASI_trend_down"].setTranslation(0, math.clamp(me.ASItrend, -50, 0) * -6.6);
@ -1584,4 +1569,12 @@ var fontSizeHDG = func(input) {
} else {
return 32;
}
};
};
setlistener("/systems/electrical/bus/ac-ess", func() {
canvas_PFD_base.updateDu1();
}, 0, 0);
setlistener("/systems/electrical/bus/ac-2", func() {
canvas_PFD_base.updateDu6();
}, 0, 0);

View file

@ -28,6 +28,7 @@ var N1_lim = props.globals.initNode("/ECAM/Upper/N1ylim", 0, "DOUBLE");
var du3_test = props.globals.initNode("/instrumentation/du/du3-test", 0, "BOOL");
var du3_test_time = props.globals.initNode("/instrumentation/du/du3-test-time", 0.0, "DOUBLE");
var du3_test_amount = props.globals.initNode("/instrumentation/du/du3-test-amount", 0.0, "DOUBLE");
var du3_offtime = props.globals.initNode("/instrumentation/du/du3-off-time", 0.0, "DOUBLE");
# Fetch nodes:
var et = props.globals.getNode("/sim/time/elapsed-sec", 1);
@ -133,28 +134,34 @@ var canvas_upperECAM_base = {
getKeys: func() {
return [];
},
update: func() {
elapsedtime = et.getValue();
updateDu3: func() {
var elapsedtime = et.getValue();
if (acess.getValue() >= 110) {
if (wow0.getValue() == 1) {
if (acconfig.getValue() != 1 and du3_test.getValue() != 1) {
if (du3_offtime.getValue() + 3 < elapsedtime) {
if (wow0.getValue() == 1) {
if (acconfig.getValue() != 1 and du3_test.getValue() != 1) {
du3_test.setValue(1);
du3_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du3_test_time.setValue(elapsedtime);
} else if (acconfig.getValue() == 1 and du3_test.getValue() != 1) {
du3_test.setValue(1);
du3_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du3_test_time.setValue(elapsedtime - 30);
}
} else {
du3_test.setValue(1);
du3_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du3_test_time.setValue(elapsedtime);
} else if (acconfig.getValue() == 1 and du3_test.getValue() != 1) {
du3_test.setValue(1);
du3_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1));
du3_test_time.setValue(elapsedtime - 30);
du3_test_amount.setValue(0);
du3_test_time.setValue(-100);
}
} else {
du3_test.setValue(1);
du3_test_amount.setValue(0);
du3_test_time.setValue(-100);
}
} else {
du3_test.setValue(0);
du3_offtime.setValue(elapsedtime);
}
},
update: func() {
var elapsedtime = et.getValue();
cur_eng_option = eng_option.getValue();
if (acess.getValue() >= 110 and du3_lgt.getValue() > 0.01) {
@ -1168,6 +1175,7 @@ var canvas_upperECAM_test = {
return ["Test_white","Test_text"];
},
update: func() {
var elapsedtime = et.getValue();
if (du3_test_time.getValue() + 1 >= elapsedtime) {
me["Test_white"].show();
me["Test_text"].hide();
@ -1212,3 +1220,7 @@ var showUpperECAM = func {
var dlg = canvas.Window.new([512, 512], "dialog").set("resize", 1);
dlg.setCanvas(upperECAM_display);
}
setlistener("/systems/electrical/bus/ac-ess", func() {
canvas_upperECAM_base.updateDu3();
}, 0, 0);

View file

@ -15,12 +15,13 @@ var DMC = {
altitudesPfd: [props.globals.getNode("/instrumentation/altimeter[0]/indicated-altitude-ft-pfd", 1), props.globals.getNode("/instrumentation/altimeter[1]/indicated-altitude-ft-pfd", 1), props.globals.getNode("/instrumentation/altimeter[2]/indicated-altitude-ft-pfd", 1)],
sats: [props.globals.getNode("/systems/navigation/adr/output/sat-1", 1), props.globals.getNode("/systems/navigation/adr/output/sat-2", 1), props.globals.getNode("/systems/navigation/adr/output/sat-3", 1)],
tats: [props.globals.getNode("/systems/navigation/adr/output/tat-1", 1), props.globals.getNode("/systems/navigation/adr/output/tat-2", 1), props.globals.getNode("/systems/navigation/adr/output/tat-3", 1)],
outputs: [nil, nil, nil, nil, nil, nil], # airspeed, altitude, mach, pfd altitude, sat, tat
trends: [props.globals.getNode("/instrumentation/pfd/speed-lookahead-1", 1), props.globals.getNode("/instrumentation/pfd/speed-lookahead-2", 1), props.globals.getNode("/instrumentation/pfd/speed-lookahead-3", 1)],
outputs: [nil, nil, nil, nil, nil, nil, nil], # airspeed, altitude, mach, pfd altitude, sat, tat, speed trend
new: func(num) {
var d = { parents:[DMC] };
d.activeADIRS = num;
d.outputs = [nil, nil, nil, nil, nil, nil];
d.outputs = [nil, nil, nil, nil, nil, nil, nil];
return d;
},
changeActiveADIRS: func(newADIRS) {
@ -34,6 +35,7 @@ var DMC = {
me.outputs[3] = me.altitudesPfd[ADIRS];
me.outputs[4] = me.sats[ADIRS];
me.outputs[5] = me.tats[ADIRS];
me.outputs[6] = me.trends[ADIRS];
},
setOutputsNil: func() {
me.outputs[0] = nil;
@ -42,6 +44,7 @@ var DMC = {
me.outputs[3] = nil;
me.outputs[4] = nil;
me.outputs[5] = nil;
me.outputs[6] = nil;
},
update: func() {
if (systems.ADIRSnew.ADIRunits[me.activeADIRS].operative and systems.ADIRSnew.ADIRunits[me.activeADIRS].outputOn) {

View file

@ -25,16 +25,19 @@ var statusIndex = 0;
var flash = 0;
var hasCleared = 0;
var statusFlag = 0;
var counter = 0;
var noMainMsg = 0;
var storeFirstWarning = nil;
var warning = {
new: func(msg,colour = "g",aural = 9,light = 9,hasSubmsg = 0,lastSubmsg = 0, sdPage = "nil", isMemo = 0) {
new: func(msg,colour = "g",aural = 9,light = 9,isMainMsg = 0,lastSubmsg = 0, sdPage = "nil", isMemo = 0) {
var t = {parents:[warning]};
t.msg = msg;
t.colour = colour;
t.aural = aural;
t.light = light;
t.hasSubmsg = hasSubmsg;
t.isMainMsg = isMainMsg;
t.lastSubmsg = lastSubmsg;
t.active = 0;
t.noRepeat = 0;
@ -51,19 +54,21 @@ var warning = {
if (me.active == 0) { return; }
me.wasActive = 1;
lineIndex = 0;
while (lineIndex < 7 and lines[lineIndex].getValue() != "") {
while (lineIndex <= 7 and lines[lineIndex].getValue() != "") {
lineIndex = lineIndex + 1; # go to next line until empty line
}
if (lineIndex == 7) {
if (lineIndex == 8) {
leftOverflow.setBoolValue(1);
} elsif (leftOverflow.getBoolValue()) {
leftOverflow.setBoolValue(0);
}
if (lines[lineIndex].getValue() == "" and me.msg != "" and lineIndex <= 7) { # at empty line. Also checks if message is not blank to allow for some warnings with no displayed msg, eg stall
lines[lineIndex].setValue(me.msg);
linesCol[lineIndex].setValue(me.colour);
if (lineIndex <= 7) {
if (lines[lineIndex].getValue() == "" and me.msg != "") { # at empty line. Also checks if message is not blank to allow for some warnings with no displayed msg, eg stall
lines[lineIndex].setValue(me.msg);
linesCol[lineIndex].setValue(me.colour);
}
}
},
warnlight: func() {
@ -89,11 +94,13 @@ var warning = {
if (me.aural != 0) {
aural[me.aural].setBoolValue(0);
settimer(func() {
aural[me.aural].setBoolValue(1);
}, 0.15);
} else {
aural[me.aural].setBoolValue(1);
}
me.noRepeat2 = 1;
settimer(func() {
aural[me.aural].setBoolValue(1);
}, 0.15);
},
callPage: func() {
if (me.sdPage == "nil" or me.hasCalled == 1) { return; }
@ -201,12 +208,13 @@ var ECAM_controller = {
if (!getprop("/systems/acconfig/autoconfig-running")) {
foreach (var w; warnings.vector) {
if (counter >= 9) { break; }
if (w.active == 1) {
w.write();
if (counter < 9) {
w.write();
counter += 1;
}
w.warnlight();
w.sound();
counter += 1;
} elsif (w.wasActive == 1) {
w.warnlight();
w.sound();
@ -284,32 +292,50 @@ var ECAM_controller = {
clear: func() {
hasCleared = 0;
counter = 0;
noMainMsg = 0;
storeFirstWarning = nil;
if (leftOverflow.getBoolValue()) {
foreach (var w; warnings.vector) {
if (counter >= 8) { break; }
if (w.active == 1 and w.clearFlag != 1 and w.isMemo != 1) {
counter += 1;
if (w.hasSubmsg == 1) { continue; }
w.clearFlag = 1;
hasCleared = 1;
statusFlag = 1;
libraries.ECAMControlPanel.lightOff("clr");
}
}
} else {
foreach (var w; warnings.vector) {
if (w.active == 1 and w.clearFlag != 1 and w.hasSubmsg == 1 and w.isMemo != 1) {
w.clearFlag = 1;
hasCleared = 1;
statusFlag = 1;
libraries.ECAMControlPanel.lightOff("clr");
break;
# first go through the first eight, see how many mainMsg there are
foreach (var w; warnings.vector) {
if (counter >= 8) { break; }
if (w.active == 1 and w.clearFlag != 1 and w.isMemo != 1) {
counter += 1;
if (w.isMainMsg == 1) {
if (noMainMsg == 0) {
storeFirstWarning = w;
}
noMainMsg += 1;
}
}
}
if (statusFlag == 1) {
# then, if there is an overflow and noMainMsg == 1, we clear the first shown ones
if (leftOverflow.getBoolValue() and noMainMsg == 1) {
counter = 0;
foreach (var w; warnings.vector) {
if (counter >= 8) { break; }
if (w.active == 1 and w.clearFlag != 1 and w.isMemo != 1) {
counter += 1;
if (w.isMainMsg == 1) { continue; }
w.clearFlag = 1;
hasCleared = 1;
statusFlag = 1;
}
}
}
# else, we clear the first mainMsg stored
else {
if (storeFirstWarning != nil) {
if (storeFirstWarning.active == 1 and storeFirstWarning.clearFlag != 1 and storeFirstWarning.isMainMsg == 1 and storeFirstWarning.isMemo != 1) {
storeFirstWarning.clearFlag = 1;
hasCleared = 1;
statusFlag = 1;
}
}
}
if (statusFlag == 1 and lines[0].getValue() == "") {
libraries.SystemDisplay.manCall("sts");
statusFlag = 0;
}
@ -341,12 +367,13 @@ var ECAM_controller = {
}
},
warningReset: func(warning) {
if (warning.aural != 9 and warning.active == 1) {
aural[warning.aural].setBoolValue(0);
}
warning.active = 0;
warning.noRepeat = 0;
warning.noRepeat2 = 0;
if (warning.aural == 2) {
aural[2].setValue(0);
}
# don't set .wasActive to 0, warnlight / sound funcs do that
},
};

View file

@ -29,6 +29,10 @@ var phaseVar = nil;
var dualFailFACActive = 1;
var emerConfigFACActive = 1;
var gear_agl_cur = nil;
var numberMinutes = nil;
var timeNow = nil;
var timer10secIRS = nil;
var messages_priority_3 = func {
phaseVar = phaseNode.getValue();
@ -738,45 +742,6 @@ var messages_priority_3 = func {
ap_offw.active = 1;
} else {
ECAM_controller.warningReset(ap_offw);
if (getprop("/it-autoflight/output/ap-warning") == 2) {
setprop("/it-autoflight/output/ap-warning", 0);
setprop("/ECAM/Lower/light/clr", 0);
setprop("/ECAM/warnings/master-warning-light", 0);
}
}
if ((athr_lock.clearFlag == 0) and phaseVar >= 5 and phaseVar <= 7 and getprop("/systems/thrust/thr-locked-alert") == 1) {
if (getprop("/systems/thrust/thr-locked-flash") == 0) {
athr_lock.msg = " ";
} else {
athr_lock.msg = msgSave
}
athr_lock.active = 1;
athr_lock_1.active = 1;
} else {
ECAM_controller.warningReset(athr_lock);
ECAM_controller.warningReset(athr_lock_1);
}
if ((athr_offw.clearFlag == 0) and athrWarn.getValue() == 2 and phaseVar != 4 and phaseVar != 8 and phaseVar != 10) {
athr_offw.active = 1;
athr_offw_1.active = 1;
} else {
ECAM_controller.warningReset(athr_offw);
ECAM_controller.warningReset(athr_offw_1);
if (getprop("/it-autoflight/output/athr-warning") == 2) {
setprop("/it-autoflight/output/athr-warning", 0);
setprop("/ECAM/Lower/light/clr", 0);
setprop("/ECAM/warnings/master-caution-light", 0);
}
}
if ((athr_lim.clearFlag == 0) and getprop("/it-autoflight/output/athr") == 1 and ((getprop("/systems/thrust/eng-out") != 1 and (getprop("/systems/thrust/state1") == "MAN" or getprop("/systems/thrust/state2") == "MAN")) or (getprop("/systems/thrust/eng-out") == 1 and (getprop("/systems/thrust/state1") == "MAN" or getprop("/systems/thrust/state2") == "MAN" or (getprop("/systems/thrust/state1") == "MAN THR" and getprop("/controls/engines/engine[0]/throttle-pos") <= 0.83) or (getprop("/systems/thrust/state2") == "MAN THR" and getprop("/controls/engines/engine[0]/throttle-pos") <= 0.83)))) and (phaseVar >= 5 and phaseVar <= 7)) {
athr_lim.active = 1;
athr_lim_1.active = 1;
} else {
ECAM_controller.warningReset(athr_lim);
ECAM_controller.warningReset(athr_lim_1);
}
if (!systems.cargoTestBtn.getBoolValue()) {
@ -784,21 +749,21 @@ var messages_priority_3 = func {
cargoSmokeFwd.active = 1;
} elsif (cargoSmokeFwd.clearFlag == 1 or systems.cargoTestBtnOff.getBoolValue()) {
ECAM_controller.warningReset(cargoSmokeFwd);
cargoSmokeFwd.hasSubmsg = 1;
cargoSmokeFwd.isMainMsg = 1;
}
if (cargoSmokeFwdAgent.clearFlag == 0 and cargoSmokeFwd.active == 1 and !getprop("/systems/fire/cargo/disch")) {
cargoSmokeFwdAgent.active = 1;
} else {
ECAM_controller.warningReset(cargoSmokeFwdAgent);
cargoSmokeFwd.hasSubmsg = 0;
cargoSmokeFwd.isMainMsg = 0;
}
if (cargoSmokeAft.clearFlag == 0 and systems.aftCargoFireWarn.getBoolValue() and (phaseVar <= 3 or phaseVar >= 9 or phaseVar == 6)) {
cargoSmokeAft.active = 1;
} elsif (cargoSmokeAft.clearFlag == 1 or systems.cargoTestBtnOff.getBoolValue()) {
ECAM_controller.warningReset(cargoSmokeAft);
cargoSmokeAft.hasSubmsg = 1;
cargoSmokeAft.isMainMsg = 1;
systems.cargoTestBtnOff.setBoolValue(0);
}
@ -806,7 +771,7 @@ var messages_priority_3 = func {
cargoSmokeAftAgent.active = 1;
} else {
ECAM_controller.warningReset(cargoSmokeAftAgent);
cargoSmokeAft.hasSubmsg = 0;
cargoSmokeAft.isMainMsg = 0;
}
} else {
if (systems.aftCargoFireWarn.getBoolValue()) {
@ -850,7 +815,7 @@ var messages_priority_3 = func {
}
if (!(getprop("/systems/electrical/some-electric-thingie/generator-1-reset") and getprop("/systems/electrical/some-electric-thingie/generator-2-reset")) and emerconfigGen.clearFlag == 0) {
emerconfigGen.active = 1;
emerconfigGen.active = 1; # EGEN12R TRUE
} else {
ECAM_controller.warningReset(emerconfigGen);
}
@ -862,7 +827,7 @@ var messages_priority_3 = func {
} else {
ECAM_controller.warningReset(emerconfigBusTie);
}
emerconfigGen3.active = 1;
emerconfigGen3.active = 1; # EGENRESET TRUE
} else {
ECAM_controller.warningReset(emerconfigGen2);
ECAM_controller.warningReset(emerconfigBusTie);
@ -1088,6 +1053,37 @@ var messages_priority_2 = func {
ECAM_controller.warningReset(acBusEssShedAtc);
}
if ((athr_offw.clearFlag == 0) and athrWarn.getValue() == 2 and phaseVar != 4 and phaseVar != 8 and phaseVar != 10) {
athr_offw.active = 1;
athr_offw_1.active = 1;
} else {
ECAM_controller.warningReset(athr_offw);
ECAM_controller.warningReset(athr_offw_1);
}
if ((athr_lock.clearFlag == 0) and phaseVar >= 5 and phaseVar <= 7 and getprop("/systems/thrust/thr-locked-alert") == 1) {
if (getprop("/systems/thrust/thr-locked-flash") == 0) {
athr_lock.msg = " ";
} else {
athr_lock.msg = msgSave
}
athr_lock.active = 1;
athr_lock_1.active = 1;
} else {
ECAM_controller.warningReset(athr_lock);
ECAM_controller.warningReset(athr_lock_1);
}
if ((athr_lim.clearFlag == 0) and getprop("/it-autoflight/output/athr") == 1 and ((getprop("/systems/thrust/eng-out") != 1 and (getprop("/systems/thrust/state1") == "MAN" or getprop("/systems/thrust/state2") == "MAN")) or (getprop("/systems/thrust/eng-out") == 1 and (getprop("/systems/thrust/state1") == "MAN" or getprop("/systems/thrust/state2") == "MAN" or (getprop("/systems/thrust/state1") == "MAN THR" and getprop("/controls/engines/engine[0]/throttle-pos") <= 0.83) or (getprop("/systems/thrust/state2") == "MAN THR" and getprop("/controls/engines/engine[0]/throttle-pos") <= 0.83)))) and (phaseVar >= 5 and phaseVar <= 7)) {
athr_lim.active = 1;
athr_lim_1.active = 1;
} else {
ECAM_controller.warningReset(athr_lim);
ECAM_controller.warningReset(athr_lim_1);
}
if (getprop("/instrumentation/tcas/serviceable") == 0 and phaseVar != 3 and phaseVar != 4 and phaseVar != 7 and systems.ELEC.Bus.ac1.getValue() and pts.Instrumentation.TCAS.Inputs.mode.getValue() != 1 and tcasFault.clearFlag == 0) {
tcasFault.active = 1;
} else {
@ -1123,14 +1119,14 @@ var messages_priority_2 = func {
apuEmerShutdown.active = 1;
} elsif (apuEmerShutdown.clearFlag == 1) {
ECAM_controller.warningReset(apuEmerShutdown);
apuEmerShutdown.hasSubmsg = 1;
apuEmerShutdown.isMainMsg = 1;
}
if (apuEmerShutdownMast.clearFlag == 0 and getprop("/controls/APU/master") and apuEmerShutdown.active == 1) {
apuEmerShutdownMast.active = 1;
} else {
ECAM_controller.warningReset(apuEmerShutdownMast);
apuEmerShutdown.hasSubmsg = 0;
apuEmerShutdown.isMainMsg = 0;
}
if (eng1FireDetFault.clearFlag == 0 and (systems.engFireDetectorUnits.vector[0].condition == 0 or (systems.engFireDetectorUnits.vector[0].loopOne == 9 and systems.engFireDetectorUnits.vector[0].loopTwo == 9 and systems.eng1Inop.getBoolValue())) and (phaseVar == 6 or phaseVar >= 9 or phaseVar <= 2)) {
@ -1362,7 +1358,7 @@ var messages_config_memo = func {
setprop("/ECAM/ldg-memo-2200-set", 0);
}
if (phaseVar >= 6 and phaseVar <= 8) {
if (phaseVar != 6 and phaseVar != 7 and phaseVar != 8) {
setprop("/ECAM/ldg-memo-2200-reset", 1);
} else {
setprop("/ECAM/ldg-memo-2200-reset", 0);
@ -1389,6 +1385,39 @@ var messages_memo = func {
refuelg.active = 0;
}
if ((phaseVar == 1 or phaseVar == 2) and toMemoLine1.active != 1 and ldgMemoLine1.active != 1 and (systems.ADIRSnew.ADIRunits[0].inAlign == 1 or systems.ADIRSnew.ADIRunits[1].inAlign == 1 or systems.ADIRSnew.ADIRunits[2].inAlign == 1)) {
irs_in_align.active = 1;
if (getprop("/ECAM/phases/timer/eng1or2-output")) {
irs_in_align.colour = "a";
} else {
irs_in_align.colour = "g";
}
timeNow = pts.Sim.Time.elapsedSec.getValue();
numberMinutes = math.round(math.max(systems.ADIRSnew.ADIRunits[0]._alignTime - timeNow, systems.ADIRSnew.ADIRunits[1]._alignTime - timeNow, systems.ADIRSnew.ADIRunits[2]._alignTime - timeNow) / 60);
if (numberMinutes >= 7) {
irs_in_align.msg = "IRS IN ALIGN > 7 MN";
} elsif (numberMinutes >= 1) {
irs_in_align.msg = "IRS IN ALIGN " ~ numberMinutes ~ " MN";
} else {
irs_in_align.msg = "IRS IN ALIGN";
}
} else {
if (irs_in_align.active and !timer10secIRS) {
timer10secIRS = 1;
irs_in_align.msg = "IRS ALIGNED";
settimer(func() {
irs_in_align.active = 0;
irs_in_align.msg = "IRS IN ALIGN";
timer10secIRS = 0;
}, 10);
} elsif (!timer10secIRS) {
irs_in_align.active = 0;
irs_in_align.msg = "IRS IN ALIGN";
}
}
if (getprop("/controls/flight/speedbrake-arm") == 1 and toMemoLine1.active != 1 and ldgMemoLine1.active != 1) {
gnd_splrs.active = 1;
} else {
@ -1447,7 +1476,7 @@ var messages_right_memo = func {
ldg_inhibit.active = 0;
}
if ((getprop("/gear/gear[1]/wow") == 0) and (getprop("/systems/fire/engine1/warning-active") == 1 or getprop("/systems/fire/engine2/warning-active") == 1 or getprop("/systems/fire/apu/warning-active") == 1 or getprop("/systems/failures/cargo-aft-fire") == 1 or getprop("/systems/failures/cargo-fwd-fire") == 1) or (((getprop("/systems/hydraulic/green-psi") < 1500 and getprop("/engines/engine[0]/state") == 3) and (getprop("/systems/hydraulic/yellow-psi") < 1500 and getprop("/engines/engine[1]/state") == 3)) or ((getprop("/systems/hydraulic/green-psi") < 1500 or getprop("/systems/hydraulic/yellow-psi") < 1500) and getprop("/engines/engine[0]/state") == 3 and getprop("/engines/engine[1]/state") == 3) and phaseVar >= 3 and phaseVar <= 8)) {
if ((getprop("/gear/gear[1]/wow") == 0) and (getprop("/systems/electrical/some-electric-thingie/emer-elec-config") or getprop("/systems/fire/engine1/warning-active") == 1 or getprop("/systems/fire/engine2/warning-active") == 1 or getprop("/systems/fire/apu/warning-active") == 1 or getprop("/systems/failures/cargo-aft-fire") == 1 or getprop("/systems/failures/cargo-fwd-fire") == 1) or (((getprop("/systems/hydraulic/green-psi") < 1500 and getprop("/engines/engine[0]/state") == 3) and (getprop("/systems/hydraulic/yellow-psi") < 1500 and getprop("/engines/engine[1]/state") == 3)) or ((getprop("/systems/hydraulic/green-psi") < 1500 or getprop("/systems/hydraulic/yellow-psi") < 1500) and getprop("/engines/engine[0]/state") == 3 and getprop("/engines/engine[1]/state") == 3) and phaseVar >= 3 and phaseVar <= 8)) {
# todo: emer elec
land_asap_r.active = 1;
} else {

View file

@ -230,7 +230,7 @@ var SystemDisplay = {
if (APUMaster == 1 and me.APU10sec != 1) {
me.autoCall("apu");
me.fctl20sec = 9;
me.fctl20sec = 0;
if (me.APU10sec == 9 and APURPM >= 95.0) {
me.APU10sec = 0;
@ -242,7 +242,7 @@ var SystemDisplay = {
}
} elsif (engModeSel == 0 or engModeSel == 2 or (engModeSel == 1 and me.eng10sec == 0)) {
me.autoCall("eng");
me.fctl20sec = 9;
me.fctl20sec = 0;
if (me.eng10sec == 9 and engModeSel == 1) {
me.eng10sec = 0;
@ -254,7 +254,9 @@ var SystemDisplay = {
}
} else {
# Reset variables
me.APU10sec = 9;
if (APUMaster == 0) {
me.APU10sec = 9;
}
me.eng10sec = 9;
# Phase logic
@ -322,15 +324,17 @@ var ECAMControlPanel = {
},
clrBtn: func() {
me.lightOff("clr");
if (athrWarnNode.getValue == 2) {
athrWarnNode.setValue(0);
return;
}
if (apWarnNode.getValue() == 2) {
apWarnNode.setValue(0);
return;
}
if (athrWarnNode.getValue() == 2) {
athrWarnNode.setValue(0);
return;
}
if (SystemDisplay.manShownPage) {
me.lightOff(SystemDisplay.page);
SystemDisplay.manShownPage = 0;

View file

@ -13,13 +13,13 @@ var warnings = std.Vector.new([
var stall = warning.new(msg: "", aural: 2),
var flap_not_zero = warning.new(msg: "F/CTL FLAP LVR NOT ZERO", colour: "r", aural: 0, light: 0),
var overspeed = warning.new(msg: "OVER SPEED", colour: "r", aural: 0, light: 0, hasSubmsg: 1),
var overspeed = warning.new(msg: "OVER SPEED", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var overspeedVMO = warning.new(msg: "-VMO/MMO.......350 /.82", colour: "r"),
var overspeedGear = warning.new(msg: "-VLE...........280 /.67", colour: "r"),
var overspeedFlap = warning.new(msg: "-VFE................XXX", colour: "r"),
# DUAL ENG FAIL
var dualFail = warning.new(msg: "ENG DUAL FAILURE", colour: "r", aural: 0, light: 0, hasSubmsg: 1),
var dualFail = warning.new(msg: "ENG DUAL FAILURE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var dualFailModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
var dualFailLevers = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
var dualFailRelightSPD = warning.new(msg: " OPTIMUM RELIGHT SPD.280", colour: "c"),
@ -27,41 +27,41 @@ var warnings = std.Vector.new([
var dualFailElec = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
var dualFailRadio = warning.new(msg: " -VHF1/ATC1..........USE", colour: "c"),
var dualFailFAC = warning.new(msg: " -FAC 1......OFF THEN ON", colour: "c"),
var dualFailRelight = warning.new(msg: "•IF NO RELIGHT AFTER 30S", colour: "w", hasSubmsg: 1),
var dualFailRelight = warning.new(msg: "•IF NO RELIGHT AFTER 30S", colour: "w", isMainMsg: 1),
var dualFailMasters = warning.new(msg: " -ENG MASTERS.OFF 30S/ON", colour: "c"),
var dualFailSuccess = warning.new(msg: " •IF UNSUCCESSFUL : ", colour: "w", hasSubmsg: 1),
var dualFailSuccess = warning.new(msg: " •IF UNSUCCESSFUL : ", colour: "w", isMainMsg: 1),
var dualFailAPU = warning.new(msg: " -APU (IF AVAIL)...START", colour: "c"),
var dualFailAPUwing = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
var dualFailAPUbleed = warning.new(msg: " -APU BLEED...........ON", colour: "c"),
var dualFailMastersAPU = warning.new(msg: " -ENG MASTERS.OFF 30S/ON", colour: "c"),
var dualFailSPDGD = warning.new(msg: " OPTIMUM SPEED.....G DOT", colour: "c"),
var dualFailAPPR = warning.new(msg: " •EARLY IN APPR : ", colour: "w", hasSubmsg: 1),
var dualFailAPPR = warning.new(msg: " •EARLY IN APPR : ", colour: "w", isMainMsg: 1),
var dualFailcabin = warning.new(msg: " -CAB SECURE.......ORDER", colour: "c"),
var dualFailrudd = warning.new(msg: " -USE RUDDER WITH CARE ", colour: "c"),
var dualFailflap = warning.new(msg: " -FOR LDG.....USE FLAP 3", colour: "c"),
var dualFail5000 = warning.new(msg: " •AT 5000 FT AGL : ", colour: "w", hasSubmsg: 1),
var dualFail5000 = warning.new(msg: " •AT 5000 FT AGL : ", colour: "w", isMainMsg: 1),
var dualFailgear = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"),
var dualFailfinalspeed = warning.new(msg: " TARGET SPEED.....150 KT", colour: "c"),
var dualFailtouch = warning.new(msg: " •AT TOUCH DOWN : ", colour: "w", hasSubmsg: 1),
var dualFailtouch = warning.new(msg: " •AT TOUCH DOWN : ", colour: "w", isMainMsg: 1),
var dualFailmasteroff = warning.new(msg: " -ENG MASTERS........OFF", colour: "c"),
var dualFailapuoff = warning.new(msg: " -APU MASTER SW......OFF", colour: "c"),
var dualFailevac = warning.new(msg: " -EVAC..........INITIATE", colour: "c"),
var dualFailbatt = warning.new(msg: " -BAT 1+2............OFF", colour: "c"),
# ENG 1 FIRE (flight)
var eng1Fire = warning.new(msg: "ENG 1 FIRE", colour: "r", aural: 0, light: 0, hasSubmsg: 1),
var eng1Fire = warning.new(msg: "ENG 1 FIRE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var eng1FireFllever = warning.new(msg: " -THR LEVER 1.......IDLE", colour: "c"),
var eng1FireFlmaster = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
var eng1FireFlPB = warning.new(msg: " -ENG 1 FIRE P/B....PUSH", colour: "c"),
var eng1FireFlAgent1Timer = warning.new(msg: " -AGENT 1 AFT 10 S.DISCH", colour: "w"),
var eng1FireFlAgent1 = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
var eng1FireFlATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
var eng1FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w", hasSubmsg: 1),
var eng1FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w", isMainMsg: 1),
var eng1FireFlAgent2 = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
# ENG 1 FIRE (ground)
var eng1FireGnlever = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
var eng1FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", hasSubmsg: 1),
var eng1FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", isMainMsg: 1),
var eng1FireGnparkbrk = warning.new(msg: " -PARKING BRK.........ON", colour: "c"),
var eng1FireGnmaster = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
var eng1FireGnPB = warning.new(msg: " -ENG 1 FIRE P/B....PUSH", colour: "c"),
@ -70,25 +70,25 @@ var warnings = std.Vector.new([
var eng1FireGnmaster2 = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
var eng1FireGnATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
var eng1FireGncrew = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
var eng1FireGnevac = warning.new(msg: " •IF EVAC RQRD:", colour: "w", hasSubmsg: 1),
var eng1FireGnevac = warning.new(msg: " •IF EVAC RQRD:", colour: "w", isMainMsg: 1),
var eng1FireGnevacSw = warning.new(msg: " -EVAC COMMAND........ON", colour: "c"),
var eng1FireGnevacApu = warning.new(msg: " -APU MASTER SW......OFF", colour: "c"),
var eng1FireGnevacBat = warning.new(msg: " -BAT 1+2............OFF", colour: "c"),
# ENG 2 FIRE (flight)
var eng2Fire = warning.new(msg: "ENG 2 FIRE", colour: "r", aural: 0, light: 0, hasSubmsg: 1),
var eng2Fire = warning.new(msg: "ENG 2 FIRE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var eng2FireFllever = warning.new(msg: " -THR LEVER 2.......IDLE", colour: "c"),
var eng2FireFlmaster = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
var eng2FireFlPB = warning.new(msg: " -ENG 2 FIRE P/B....PUSH", colour: "c"),
var eng2FireFlAgent1Timer = warning.new(msg: " -AGENT 1 AFT 10 S.DISCH", colour: "w"),
var eng2FireFlAgent1 = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
var eng2FireFlATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
var eng2FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w", hasSubmsg: 1),
var eng2FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w", isMainMsg: 1),
var eng2FireFlAgent2 = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
# ENG 2 FIRE (ground)
var eng2FireGnlever = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
var eng2FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", hasSubmsg: 1),
var eng2FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", isMainMsg: 1),
var eng2FireGnparkbrk = warning.new(msg: " -PARKING BRK.........ON", colour: "c"),
var eng2FireGnmaster = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
var eng2FireGnPB = warning.new(msg: " -ENG 2 FIRE P/B....PUSH", colour: "c"),
@ -97,13 +97,13 @@ var warnings = std.Vector.new([
var eng2FireGnmaster2 = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
var eng2FireGnATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
var eng2FireGncrew = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
var eng2FireGnevac = warning.new(msg: " •IF EVAC RQRD:", colour: "w", hasSubmsg: 1),
var eng2FireGnevac = warning.new(msg: " •IF EVAC RQRD:", colour: "w", isMainMsg: 1),
var eng2FireGnevacSw = warning.new(msg: " -EVAC COMMAND........ON", colour: "c"),
var eng2FireGnevacApu = warning.new(msg: " -APU MASTER SW......OFF", colour: "c"),
var eng2FireGnevacBat = warning.new(msg: " -BAT 1+2............OFF", colour: "c"),
# APU FIRE
var apuFire = warning.new(msg: "APU FIRE ", colour: "r", aural: 0, light: 0, hasSubmsg: 1, sdPage: "apu"),
var apuFire = warning.new(msg: "APU FIRE ", colour: "r", aural: 0, light: 0, isMainMsg: 1, sdPage: "apu"),
var apuFirePB = warning.new(msg: " -APU FIRE P/B......PUSH", colour: "c"),
var apuFireAgentTimer = warning.new(msg: " -AGENT AFT 10 S...DISCH", colour: "c"),
var apuFireAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
@ -122,23 +122,17 @@ var warnings = std.Vector.new([
var rud_trim_config_1 = warning.new(msg: " NOT IN T.O. RANGE", colour: "r", aural: 0, light: 0),
var park_brk_config = warning.new(msg: "CONFIG PARK BRK ON", colour: "r", aural: 0, light: 0),
# Autopilot
var ap_offw = warning.new(msg: "AUTO FLT AP OFF", colour: "r", light: 0),
var athr_offw = warning.new(msg: "AUTO FLT A/THR OFF", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var athr_offw_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
var athr_lock = warning.new(msg: "ENG THRUST LOCKED", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var athr_lock_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
var athr_lim = warning.new(msg: "AUTO FLT A/THR LIMITED", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var athr_lim_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
# Autopilot off involuntary
var ap_offw = warning.new(msg: "AUTO FLT AP OFF", colour: "r", light: 0, isMainMsg: 1),
# Cargo smoke
var cargoSmokeFwd = warning.new(msg: "SMOKE FWD CARGO SMOKE", colour: "r", aural: 0, light: 0, hasSubmsg: 1),
var cargoSmokeFwd = warning.new(msg: "SMOKE FWD CARGO SMOKE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var cargoSmokeFwdAgent = warning.new(msg: "-AGENT............DISCH", colour: "c"),
var cargoSmokeAft = warning.new(msg: "SMOKE AFT CARGO SMOKE", colour: "r", aural: 0, light: 0, hasSubmsg: 1),
var cargoSmokeAft = warning.new(msg: "SMOKE AFT CARGO SMOKE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var cargoSmokeAftAgent = warning.new(msg: "-AGENT............DISCH", colour: "c"),
# ESS Bus on Bat
var essBusOnBat = warning.new(msg: "ELEC ESS BUSES ON BAT", colour: "r", aural: 0, light: 0, hasSubmsg: 1),
var essBusOnBat = warning.new(msg: "ELEC ESS BUSES ON BAT", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var essBusOnBatLGUplock = warning.new(msg: " •WHEN L/G UPLOCKED :", colour: "w"),
var essBusOnBatManOn = warning.new(msg: "-EMER ELEC PWR...MAN ON", colour: "c"),
var essBusOnBatRetract = warning.new(msg: " •IF L/G RETRACT FAULT:", colour: "w"),
@ -147,7 +141,7 @@ var warnings = std.Vector.new([
var essBusOnBatManOn2 = warning.new(msg: "-EMER ELEC PWR...MAN ON", colour: "c"),
# Emer Config
var emerconfig = warning.new(msg: "ELEC EMER CONFIG", colour: "r", aural: 0, light: 0, hasSubmsg: 1),
var emerconfig = warning.new(msg: "ELEC EMER CONFIG", colour: "r", aural: 0, light: 0, isMainMsg: 1),
var emerconfigMinRat = warning.new(msg: "MIN RAT SPD......140 KT", colour: "c"),
var emerconfigGen = warning.new(msg: "-GEN 1+2....OFF THEN ON", colour: "c"),
var emerconfigGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
@ -168,11 +162,11 @@ var warnings = std.Vector.new([
var emerconfigMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
# DC EMER CONFIG
var dcEmerconfig = warning.new(msg: "ELEC DC EMER CONFIG", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var dcEmerconfig = warning.new(msg: "ELEC DC EMER CONFIG", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcEmerconfigManOn = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
# DC BUS 1 OR 2 FAULT
var dcBus12Fault = warning.new(msg: "ELEC DC BUS 1+2 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var dcBus12Fault = warning.new(msg: "ELEC DC BUS 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcBus12FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"),
var dcBus12FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
var dcBus12FaultBaroRef = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
@ -180,78 +174,86 @@ var warnings = std.Vector.new([
var dcBus12FaultBrking = warning.new(msg: " MAX BRK........1000 PSI", colour: "c"),
# AC ESS BUS FAULT
var AcBusEssFault = warning.new(msg: "ELEC AC ESS BUS FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var AcBusEssFault = warning.new(msg: "ELEC AC ESS BUS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var AcBusEssFaultFeed = warning.new(msg: " -AC ESS FEED.......ALTN", colour: "c"),
var AcBusEssFaultAtc = warning.new(msg: " -ATC..............SYS 2", colour: "c"),
# AC BUS 1 FAULT
var AcBus1Fault = warning.new(msg: "ELEC AC BUS 1 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var AcBus1Fault = warning.new(msg: "ELEC AC BUS 1 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var AcBus1FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"),
# DC ESS BUS FAULT
var DcEssBusFault = warning.new(msg: "ELEC DC ESS BUS FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var DcEssBusFault = warning.new(msg: "ELEC DC ESS BUS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var DcEssBusFaultRadio = warning.new(msg: " -VHF 2 OR 3.........USE", colour: "c"),
var DcEssBusFaultRadio2 = warning.new(msg: " -AUDIO SWTG......SELECT", colour: "c"),
var DcEssBusFaultBaro = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
var DcEssBusFaultGPWS = warning.new(msg: " -GPWS...............OFF", colour: "c"),
# AC BUS 2 FAULT
var AcBus2Fault = warning.new(msg: "ELEC AC BUS 2 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var AcBus2Fault = warning.new(msg: "ELEC AC BUS 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var AcBus2FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
# DC BUS 1 FAULT
var dcBus1Fault = warning.new(msg: "ELEC DC BUS 1 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var dcBus1Fault = warning.new(msg: "ELEC DC BUS 1 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcBus1FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"),
var dcBus1FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
# DC BUS 2 FAULT
var dcBus2Fault = warning.new(msg: "ELEC DC BUS 2 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var dcBus2Fault = warning.new(msg: "ELEC DC BUS 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcBus2FaultAirData = warning.new(msg: " -AIR DATA SWTG......F/O", colour: "c"),
var dcBus2FaultBaro = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
# DC BAT BUS FAULT
var dcBusBatFault = warning.new(msg: "ELEC DC BAT BUS FAULT", colour: "a", aural: 1, light: 1),
var dcBusBatFault = warning.new(msg: "ELEC DC BAT BUS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
# DC ESS BUS SHED
var dcBusEssShed = warning.new(msg: "ELEC DC ESS BUS SHED", colour: "a", aural: 1, light: 1),
var dcBusEssShed = warning.new(msg: "ELEC DC ESS BUS SHED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var dcBusEssShedExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
var dcBusEssShedIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
# AC ESS BUS SHED
var acBusEssShed = warning.new(msg: "ELEC DC ESS BUS SHED", colour: "a", aural: 1, light: 1),
var acBusEssShed = warning.new(msg: "ELEC DC ESS BUS SHED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var acBusEssShedAtc = warning.new(msg: " -ATC..............SYS 2", colour: "c"),
# Autothrust
var athr_offw = warning.new(msg: "AUTO FLT A/THR OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var athr_offw_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
var athr_lock = warning.new(msg: "ENG THRUST LOCKED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var athr_lock_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
var athr_lim = warning.new(msg: "AUTO FLT A/THR LIMITED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var athr_lim_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
# TCAS FAULT
var tcasFault = warning.new(msg: "NAV TCAS FAULT", colour: "a", aural: 1, light: 1),
var tcasFault = warning.new(msg: "NAV TCAS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
# FCU fault
var fcuFault = warning.new(msg: "AUTO FLT FCU 1+2 FAULT", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var fcuFault = warning.new(msg: "AUTO FLT FCU 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var fcuFaultBaro = warning.new(msg: " -PFD BARO REF: STD ONLY", colour: "c"),
var fcuFault1 = warning.new(msg: "AUTO FLT FCU 1 FAULT", colour: "a", hasSubmsg: 1),
var fcuFault1 = warning.new(msg: "AUTO FLT FCU 1 FAULT", colour: "a", isMainMsg: 1),
var fcuFault1Baro = warning.new(msg: " -BARO REF.......X CHECK", colour: "c"),
var fcuFault2 = warning.new(msg: "AUTO FLT FCU 2 FAULT", colour: "a", hasSubmsg: 1),
var fcuFault2 = warning.new(msg: "AUTO FLT FCU 2 FAULT", colour: "a", isMainMsg: 1),
var fcuFault2Baro = warning.new(msg: " -BARO REF.......X CHECK", colour: "c"),
# APU shutdown
var apuEmerShutdown = warning.new(msg: "APU EMER SHUT DOWN", colour: "a", aural: 1, light: 1, hasSubmsg: 1),
var apuEmerShutdown = warning.new(msg: "APU EMER SHUT DOWN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var apuEmerShutdownMast = warning.new(msg: " -MASTER SW..........OFF", colour: "c"),
# FIRE det fault
var eng1FireDetFault = warning.new(msg: "ENG 1 FIRE DET FAULT", colour: "a", aural: 1, light: 1),
var eng1LoopAFault = warning.new(msg: "ENG 1 FIRE LOOP A FAULT", colour: "a"),
var eng1LoopBFault = warning.new(msg: "ENG 1 FIRE LOOP B FAULT", colour: "a"),
var eng2FireDetFault = warning.new(msg: "ENG 2 FIRE DET FAULT", colour: "a", aural: 1, light: 1),
var eng2LoopAFault = warning.new(msg: "ENG 2 FIRE LOOP A FAULT", colour: "a"),
var eng2LoopBFault = warning.new(msg: "ENG 2 FIRE LOOP B FAULT", colour: "a"),
var apuFireDetFault = warning.new(msg: "APU FIRE DET FAULT", colour: "a", aural: 1, light: 1),
var apuLoopAFault = warning.new(msg: "APU FIRE LOOP A FAULT", colour: "a"),
var apuLoopBFault = warning.new(msg: "APU FIRE LOOP B FAULT", colour: "a"),
var crgFwdFireDetFault = warning.new(msg: "FWD CRG DET FAULT", colour: "a"),
var crgAftFireDetFault = warning.new(msg: "AFT CRG DET FAULT", colour: "a"),
var eng1FireDetFault = warning.new(msg: "ENG 1 FIRE DET FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng1LoopAFault = warning.new(msg: "ENG 1 FIRE LOOP A FAULT", colour: "a", isMainMsg: 1),
var eng1LoopBFault = warning.new(msg: "ENG 1 FIRE LOOP B FAULT", colour: "a", isMainMsg: 1),
var eng2FireDetFault = warning.new(msg: "ENG 2 FIRE DET FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var eng2LoopAFault = warning.new(msg: "ENG 2 FIRE LOOP A FAULT", colour: "a", isMainMsg: 1),
var eng2LoopBFault = warning.new(msg: "ENG 2 FIRE LOOP B FAULT", colour: "a", isMainMsg: 1),
var apuFireDetFault = warning.new(msg: "APU FIRE DET FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
var apuLoopAFault = warning.new(msg: "APU FIRE LOOP A FAULT", colour: "a", isMainMsg: 1),
var apuLoopBFault = warning.new(msg: "APU FIRE LOOP B FAULT", colour: "a", isMainMsg: 1),
var crgFwdFireDetFault = warning.new(msg: "FWD CRG DET FAULT", colour: "a", isMainMsg: 1),
var crgAftFireDetFault = warning.new(msg: "AFT CRG DET FAULT", colour: "a", isMainMsg: 1),
# Recall
var recallNormal = warning.new(msg: " ", colour: "g", hasSubmsg: 1),
var recallNormal1 = warning.new(msg: " ", colour: "g", hasSubmsg: 1),
var recallNormal2 = warning.new(msg: " NORMAL", colour: "g", hasSubmsg: 1),
var recallNormal = warning.new(msg: " ", colour: "g", isMainMsg: 1),
var recallNormal1 = warning.new(msg: " ", colour: "g", isMainMsg: 1),
var recallNormal2 = warning.new(msg: " NORMAL", colour: "g", isMainMsg: 1),
]);
var configmemos = std.Vector.new([
@ -270,7 +272,7 @@ var configmemos = std.Vector.new([
var leftmemos = std.Vector.new([
var company_alert = warning.new(msg: "COMPANY ALERT" ), # Not yet implemented, buzzer sound
var refuelg = warning.new(msg: "REFUELG" ),
var irs_in_align = warning.new(msg: "IRS IN ALIGN" ), # Not yet implemented
var irs_in_align = warning.new(msg: "IRS IN ALIGN" ),
var gnd_splrs = warning.new(msg: "GND SPLRS ARMED" ),
var seatbelts = warning.new(msg: "SEAT BELTS" ),
var nosmoke = warning.new(msg: "NO SMOKING" ),

View file

@ -179,7 +179,7 @@ var update_loop = func {
FBW.Lights.elac2.setValue(1);
}
if (sec1_sw and !sec1_fail and ac_ess >= 110) {
if (sec1_sw and !sec1_fail and dc_ess >= 25) {
setprop("/systems/fctl/sec1", 1);
setprop("/systems/failures/spoiler-l3", 0);
setprop("/systems/failures/spoiler-r3", 0);
@ -193,7 +193,7 @@ var update_loop = func {
setprop("/systems/failures/spoiler-r4", 1);
}
if (sec2_sw and !sec2_fail and ac_ess >= 110) {
if (sec2_sw and !sec2_fail and dc2 >= 25) {
setprop("/systems/fctl/sec2", 1);
setprop("/systems/failures/spoiler-l5", 0);
setprop("/systems/failures/spoiler-r5", 0);
@ -203,7 +203,7 @@ var update_loop = func {
setprop("/systems/failures/spoiler-r5", 1);
}
if (sec3_sw and !sec3_fail and ac_ess >= 110) {
if (sec3_sw and !sec3_fail and dc2 >= 25) {
setprop("/systems/fctl/sec3", 1);
setprop("/systems/failures/spoiler-l1", 0);
setprop("/systems/failures/spoiler-r1", 0);
@ -269,15 +269,28 @@ var update_loop = func {
if (!elac1 and !elac2) {
if (law == 0) {
FBW.degradeLaw.setValue(1);
fcu.apOff("hard", 0);
fcu.athrOff("hard");
}
}
if (ac_ess >= 110 and blue >= 1500 and green < 1500 and yellow < 1500) {
if (getprop("/systems/electrical/some-electric-thingie/emer-elec-config") == 1) {
if (law == 0) {
FBW.degradeLaw.setValue(1);
fcu.apOff("hard", 0);
fcu.athrOff("hard");
}
}
if ((blue >= 1500 and green < 1500 and yellow < 1500) or (blue < 1500 and green < 1500 and yellow >= 1500)) {
if (law == 0 or law == 1) {
FBW.degradeLaw.setValue(2);
fcu.apOff("hard", 0);
fcu.athrOff("hard");
}
}
if (ac_ess < 110 or (blue < 1500 and green < 1500 and yellow < 1500)) {
}
if (dc_ess < 25 and dc2 < 25) {
FBW.degradeLaw.setValue(3);
fcu.apOff("hard", 0);
fcu.athrOff("hard");
}
}
@ -373,6 +386,7 @@ var fbw_loop = func {
if (FBW.activeLaw.getValue() != 0) {
if (getprop("/it-autoflight/output/ap1") == 1 or getprop("/it-autoflight/output/ap2") == 1) {
fcu.apOff("hard", 0);
fcu.athrOff("hard");
}
}
}

View file

@ -34,6 +34,7 @@ var vertModeInput = props.globals.getNode("/it-autoflight/input/vert", 1);
var vsModeInput = props.globals.getNode("/it-autoflight/input/vs", 1);
var locArm = props.globals.getNode("/it-autoflight/output/loc-armed", 1);
var apprArm = props.globals.getNode("/it-autoflight/output/appr-armed", 1);
var FCUworkingNode = props.globals.initNode("/FMGC/FCU-working", 0, "BOOL");
var FCU = {
elecSupply: "",
@ -62,7 +63,7 @@ var FCUController = {
FCUworking: 0,
_init: 0,
init: func() {
me.FCU1 = FCU.new(systems.ELEC.Bus.dcEssShed);
me.FCU1 = FCU.new(systems.ELEC.Bus.dcEss);
me.FCU2 = FCU.new(systems.ELEC.Bus.dc2);
me._init = 1;
},
@ -73,10 +74,12 @@ var FCUController = {
me.FCU1.loop();
me.FCU2.loop();
if (!me.FCU1.failed and !me.FCU2.failed) {
if (!me.FCU1.failed or !me.FCU2.failed) {
me.FCUworking = 1;
FCUworkingNode.setValue(1);
} else {
me.FCUworking = 0;
FCUworkingNode.setValue(0);
}
notification = nil;
@ -97,16 +100,17 @@ var FCUController = {
me.FCU2.restore();
},
AP1: func() {
if (me.FCUworking) {
if (me.FCUworking and fbw.FBW.activeLaw.getValue() == 0) {
if (!ap1.getBoolValue()) {
ap1Input.setValue(1);
libraries.apWarnNode.setValue(0);
} else {
apOff("hard", 1);
}
}
},
AP2: func() {
if (me.FCUworking) {
if (me.FCUworking and fbw.FBW.activeLaw.getValue() == 0) {
if (!ap2.getBoolValue()) {
ap2Input.setValue(1);
} else {
@ -115,8 +119,8 @@ var FCUController = {
}
},
ATHR: func() {
if (me.FCUworking) {
if (!athr.getBoolValue() and !pts.FMGC.CasCompare.rejectAll.getBoolValue()) {
if (me.FCUworking and !pts.FMGC.CasCompare.rejectAll.getBoolValue() and fbw.FBW.activeLaw.getValue() == 0) {
if (!athr.getBoolValue()) {
athrInput.setValue(1);
} else {
athrOff("hard");
@ -150,8 +154,10 @@ var FCUController = {
setprop("/it-autoflight/sound/apoffsound", 0);
setprop("/it-autoflight/sound/apoffsound2", 0);
}
setprop("/it-autoflight/output/ap-warning", 0);
setprop("/ECAM/warnings/master-warning-light", 0);
if (getprop("/it-autoflight/output/ap-warning") != 0) {
setprop("/it-autoflight/output/ap-warning", 0);
setprop("/ECAM/warnings/master-warning-light", 0);
}
}
}
},
@ -471,6 +477,10 @@ var updateActiveFMGC = func {
# Autopilot Disconnection
var apOff = func(type, side) {
if ((ap1Input.getValue() and (side == 1 or side == 0)) or (ap2Input.getValue() and (side == 2 or side == 0))) {
libraries.doApWarn(type);
}
if (side == 0) {
ap1Input.setValue(0);
ap2Input.setValue(0);
@ -479,18 +489,17 @@ var apOff = func(type, side) {
} elsif (side == 2) {
ap2Input.setValue(0);
}
libraries.doApWarn(type);
}
# Autothrust Disconnection
var athrOff = func(type) {
if (type == "hard") {
fadec.lockThr();
if (athrInput.getValue() == 1) {
if (type == "hard") {
fadec.lockThr();
}
athrInput.setValue(0);
libraries.doAthrWarn(type);
}
athrInput.setValue(0);
libraries.doAthrWarn(type);
}
# If the heading knob is turned while in nav mode, it will display heading for a period of time

View file

@ -367,8 +367,6 @@ var ITAF = {
# Misc
if (Output.ap1Temp == 1 or Output.ap2Temp == 1) { # Trip AP off
if (abs(Control.aileron.getValue()) >= 0.2 or abs(Control.elevator.getValue()) >= 0.2 or abs(Control.rudder.getValue()) >= 0.2) {
me.ap1Master(0);
me.ap2Master(0);
fcu.apOff("hard", 0);
}
}

View file

@ -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 (pts.Gear.position[0].getValue() != 0 or pts.Gear.position[1].getValue() != 0 or pts.Gear.position[2].getValue() != 0) {
setprop("/FMGC/internal/maxspeed", 284);
} else {
setprop("/FMGC/internal/maxspeed", getprop("/it-fbw/speeds/vmo-mmo"));
}

View file

@ -96,9 +96,9 @@ var initInputA = func(key, i) {
}
}
} else if (key == "R3") {
if (getprop("/controls/adirs/mcducbtn") == 0) {
setprop("/controls/adirs/mcducbtn", 1);
}
#if (getprop("/controls/adirs/mcducbtn") == 0) {
# setprop("/controls/adirs/mcducbtn", 1);
#}
} else if (key == "R6") {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/tropo", 36090);

View file

@ -28,7 +28,7 @@ var Transponder = {
ac1Node: props.globals.getNode("/systems/electrical/bus/ac-1", 1),
tcasNode: props.globals.getNode("/instrumentation/tcas/inputs/mode"),
aglNode: props.globals.getNode("/position/gear-agl-ft", 1),
electricNode: props.globals.getNode("/systems/electrical/outputs/transponder", 1),
electricNode: props.globals.getNode("/systems/electrical/outputs/transponder", 1), # communicate to generic systems
new: func(elecSrc, ADIRS) {
var t = {parents:[Transponder]};
t.mode = 1;

View file

@ -233,7 +233,6 @@ var systemsLoop = maketimer(0.1, func {
systems.PNEU.loop();
systems.HYD.loop();
systems.FUEL.loop();
systems.ADIRS.loop();
systems.ADIRSnew.loop();
libraries.ECAM.loop();
libraries.BUTTONS.update();
@ -716,4 +715,33 @@ var APPanel = {
},
};
var resetView = func() {
if (getprop("sim/current-view/view-number") == 0) {
if (getprop("/sim/rendering/headshake/enabled")) {
var _shakeFlag = 1;
setprop("/sim/rendering/headshake/enabled", 0);
} else {
var _shakeFlag = 0;
}
var hd = getprop("sim/current-view/heading-offset-deg");
var hd_t = 360;
if (hd < 180) {
hd_t = hd_t - 360;
}
interpolate("sim/current-view/field-of-view", 63, 0.66);
interpolate("sim/current-view/heading-offset-deg", hd_t,0.66);
interpolate("sim/current-view/pitch-offset-deg", -14.6,0.66);
interpolate("sim/current-view/roll-offset-deg", 0,0.66);
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
if (_shakeFlag) {
setprop("/sim/rendering/headshake/enabled", 1);
}
}
}
setprop("/systems/acconfig/libraries-loaded", 1);

View file

@ -66,6 +66,7 @@ var FMGC = {
var Gear = {
compression: [props.globals.getNode("/gear/gear[0]/compression-norm"),props.globals.getNode("/gear/gear[1]/compression-norm"),props.globals.getNode("/gear/gear[2]/compression-norm")],
wow: [props.globals.getNode("/gear/gear[0]/wow"),props.globals.getNode("/gear/gear[1]/wow"),props.globals.getNode("/gear/gear[2]/wow")],
position: [props.globals.getNode("/gear/gear[0]/position-norm"),props.globals.getNode("/gear/gear[1]/position-norm"),props.globals.getNode("/gear/gear[2]/position-norm")],
};
var Instrumentation = {
@ -105,8 +106,16 @@ var Options = {
eng: props.globals.getNode("/options/eng"),
};
var Orientation = {
pitch: props.globals.getNode("/orientation/pitch-deg"),
roll: props.globals.getNode("/orientation/roll-deg"),
yaw: props.globals.getNode("/orientation/yaw-deg"),
};
var Position = {
gearAglFt: props.globals.getNode("/position/gear-agl-ft"),
latitude: props.globals.getNode("/position/latitude-deg"),
longitude: props.globals.getNode("/position/longitude-deg"),
};
var Sim = {
@ -119,16 +128,14 @@ var Sim = {
},
};
var Orientation = {
pitch: props.globals.getNode("/orientation/pitch-deg"),
roll: props.globals.getNode("/orientation/roll-deg"),
yaw: props.globals.getNode("/orientation/yaw-deg"),
};
var PTSSystems = {
Thrust: {
flex: props.globals.getNode("/systems/thrust/lim-flex"),
},
};
var Velocities = {
groundspeed: props.globals.getNode("/velocities/groundspeed-kt"),
};
setprop("/systems/acconfig/property-tree-setup-loaded", 1);

View file

@ -2,35 +2,8 @@
# Joshua Davidson (Octal450)
# Copyright (c) 2019 Joshua Davidson (Octal450)
var knob = 0;
var roll = 0;
var pitch = 0;
var gs = 0;
var ac1 = 0;
var ac2 = 0;
var dcbat = 0;
var pwr_src = "XX";
setprop("/controls/adirs/align-time", 600);
var ADIRS = {
init: func() {
setprop("/controls/adirs/numm", 0);
setprop("/instrumentation/adirs/ir[0]/aligned", 0);
setprop("/instrumentation/adirs/ir[1]/aligned", 0);
setprop("/instrumentation/adirs/ir[2]/aligned", 0);
setprop("/controls/adirs/ir[0]/align", 0);
setprop("/controls/adirs/ir[1]/align", 0);
setprop("/controls/adirs/ir[2]/align", 0);
setprop("/controls/adirs/ir[0]/time", 0);
setprop("/controls/adirs/ir[1]/time", 0);
setprop("/controls/adirs/ir[2]/time", 0);
setprop("/controls/adirs/ir[0]/knob", 0);
setprop("/controls/adirs/ir[1]/knob", 0);
setprop("/controls/adirs/ir[2]/knob", 0);
setprop("/controls/adirs/ir[0]/fault", 0);
setprop("/controls/adirs/ir[1]/fault", 0);
setprop("/controls/adirs/ir[2]/fault", 0);
setprop("/controls/adirs/mcdu/mode1", ""); # INVAL ALIGN NAV ATT or off (blank)
setprop("/controls/adirs/mcdu/mode2", "");
setprop("/controls/adirs/mcdu/mode3", "");
@ -43,160 +16,4 @@ var ADIRS = {
setprop("/controls/adirs/mcdu/avgdrift3", "");
setprop("/controls/adirs/mcducbtn", 0);
},
loop: func() {
roll = getprop("/orientation/roll-deg");
pitch = getprop("/orientation/pitch-deg");
gs = getprop("/velocities/groundspeed-kt");
ac1 = getprop("/systems/electrical/bus/ac-1");
ac2 = getprop("/systems/electrical/bus/ac-2");
dcbat = getprop("/systems/electrical/bus/dc-bat");
if (getprop("/controls/adirs/skip") == 1) {
if (getprop("/controls/adirs/align-time") != 5) {
setprop("/controls/adirs/align-time", 5);
}
} else {
if (getprop("/controls/adirs/align-time") != 600) {
setprop("/controls/adirs/align-time", 600);
}
}
if (gs > 5 or pitch > 5 or pitch < -5 or roll > 10 or roll < -10 or (ac1 < 110 and ac2 < 110 and dcbat < 25)) {
if (getprop("/controls/adirs/ir[0]/align") == 1) {
me.stopAlign(0,1);
}
if (getprop("/controls/adirs/ir[1]/align") == 1) {
me.stopAlign(1,1);
}
if (getprop("/controls/adirs/ir[2]/align") == 1) {
me.stopAlign(2,1);
}
}
},
knob: func(k) {
knob = getprop("/controls/adirs/ir[" ~ k ~ "]/knob");
if (knob == 0) {
me.stopAlign(k,0);
} else if (knob == 1) {
me.beginAlign(k);
} else if (knob == 2) {
me.beginAlign(k);
}
},
beginAlign: func(n) {
ac1 = getprop("/systems/electrical/bus/ac-1");
ac2 = getprop("/systems/electrical/bus/ac-2");
dcbat = getprop("/systems/electrical/bus/dc-bat");
setprop("/instrumentation/adirs/adr[" ~ n ~ "]/active", 1);
if (getprop("/controls/adirs/ir[" ~ n ~ "]/align") != 1 and getprop("/instrumentation/adirs/ir[" ~ n ~ "]/aligned") != 1 and (ac1 >= 110 or ac2 >= 110 or dcbat >= 25)) {
setprop("/controls/adirs/ir[" ~ n ~ "]/time", getprop("/sim/time/elapsed-sec"));
setprop("/controls/adirs/ir[" ~ n ~ "]/align", 1);
setprop("/controls/adirs/ir[" ~ n ~ "]/fault", 0);
if (n == 0) {
alignOne.start();
} else if (n == 1) {
alignTwo.start();
} else if (n == 2) {
alignThree.start();
}
}
},
stopAlign: func(n,f) {
setprop("/controls/adirs/ir[" ~ n ~ "]/align", 0);
if (f == 1) {
setprop("/controls/adirs/ir[" ~ n ~ "]/fault", 1);
} else {
setprop("/controls/adirs/ir[" ~ n ~ "]/fault", 0);
}
if (n == 0) {
alignOne.stop();
} else if (n == 1) {
alignTwo.stop();
} else if (n == 2) {
alignThree.stop();
}
setprop("/instrumentation/adirs/ir[" ~ n ~ "]/aligned", 0);
setprop("/controls/adirs/mcducbtn", 0);
},
skip: func(n) {
if (n == 0) {
alignOne.stop();
} else if (n == 1) {
alignTwo.stop();
} else if (n == 2) {
alignThree.stop();
}
setprop("/controls/adirs/ir[" ~ n ~ "]/align", 0);
setprop("/controls/adirs/ir[" ~ n ~ "]/fault", 0);
setprop("/instrumentation/adirs/ir[" ~ n ~ "]/aligned", 1);
},
};
var alignOne = maketimer(0.1, func {
if (getprop("/controls/adirs/ir[0]/time") + getprop("/controls/adirs/align-time") >= getprop("/sim/time/elapsed-sec")) {
if (getprop("/instrumentation/adirs/ir[0]/aligned") != 0) {
setprop("/instrumentation/adirs/ir[0]/aligned", 0);
}
if (getprop("/controls/adirs/ir[0]/align") != 1) {
setprop("/controls/adirs/ir[0]/align", 1);
}
} else {
if (getprop("/instrumentation/adirs/ir[0]/aligned") != 1 and getprop("/controls/adirs/mcducbtn") == 1) {
alignOne.stop();
setprop("/instrumentation/adirs/ir[0]/aligned", 1);
}
if (getprop("/controls/adirs/ir[0]/align") != 0) {
setprop("/controls/adirs/ir[0]/align", 0);
}
}
});
var alignTwo = maketimer(0.1, func {
if (getprop("/controls/adirs/ir[1]/time") + getprop("/controls/adirs/align-time") >= getprop("/sim/time/elapsed-sec")) {
if (getprop("/instrumentation/adirs/ir[1]/aligned") != 0) {
setprop("/instrumentation/adirs/ir[1]/aligned", 0);
}
if (getprop("/controls/adirs/ir[1]/align") != 1) {
setprop("/controls/adirs/ir[1]/align", 1);
}
} else {
if (getprop("/instrumentation/adirs/ir[1]/aligned") != 1 and getprop("/controls/adirs/mcducbtn") == 1) {
alignTwo.stop();
setprop("/instrumentation/adirs/ir[1]/aligned", 1);
}
if (getprop("/controls/adirs/ir[1]/align") != 0) {
setprop("/controls/adirs/ir[1]/align", 0);
}
}
});
var alignThree = maketimer(0.1, func {
if (getprop("/controls/adirs/ir[2]/time") + getprop("/controls/adirs/align-time") >= getprop("/sim/time/elapsed-sec")) {
if (getprop("/instrumentation/adirs/ir[2]/aligned") != 0) {
setprop("/instrumentation/adirs/ir[2]/aligned", 0);
}
if (getprop("/controls/adirs/ir[2]/align") != 1) {
setprop("/controls/adirs/ir[2]/align", 1);
}
} else {
if (getprop("/instrumentation/adirs/ir[2]/aligned") != 1 and getprop("/controls/adirs/mcducbtn") == 1) {
alignThree.stop();
setprop("/instrumentation/adirs/ir[2]/aligned", 1);
}
if (getprop("/controls/adirs/ir[2]/align") != 0) {
setprop("/controls/adirs/ir[2]/align", 0);
}
}
});
setlistener("/controls/adirs/ir[0]/knob", func {
ADIRS.knob(0);
});
setlistener("/controls/adirs/ir[1]/knob", func {
ADIRS.knob(1);
});
setlistener("/controls/adirs/ir[2]/knob", func {
ADIRS.knob(2);
});
};

View file

@ -9,17 +9,24 @@ var _selfTestTime = nil;
var ADIRU = {
# local vars
_alignTime: 0,
_voltageMain: 0,
_voltageBackup: 0,
_voltageLimitedTime: 0,
_noPowerTime: 0,
_timeVar: 0,
_roll: 0,
_pitch: 0,
_gs: 0,
num: 0,
aligned: 0,
inAlign: 0,
outputOn: 0, # 0 = disc, 1 = normal
mode: 0, # 0 = off, 1 = nav, 2 = att
energised: 0, # 0 = off, 1 = on
operative: 0, # 0 = off,
alignTimer: nil,
input: [],
output: [],
@ -27,8 +34,18 @@ var ADIRU = {
new: func(n) {
var adiru = { parents:[ADIRU] };
adiru.num = n;
adiru.alignTimer = maketimer(0.1, adiru, me.alignLoop);
return adiru;
},
setOperative: func(newOperative) {
if (newOperative != me.operative) {
me.operative = newOperative;
if (newOperative) {
me.selfTest();
}
}
},
# Power and state
updateEnergised: func(mode) {
me.energised = mode != 0 ? 1 : 0;
},
@ -41,6 +58,7 @@ var ADIRU = {
me._voltageLimitedTime = isLimited;
return me._voltageBackup;
},
# BITE
selfTest: func() {
ADIRSnew._selfTest = 1;
_selfTestTime = pts.Sim.Time.elapsedSec.getValue();
@ -66,14 +84,67 @@ var ADIRU = {
ADIRSnew.selfTest();
},
setOperative: func(newOperative) {
if (newOperative != me.operative) {
me.operative = newOperative;
if (newOperative) {
me.selfTest();
# Alignment
align: func(time) {
ADIRSnew.Lights.irFault[me.num].setBoolValue(0);
if (!ADIRSnew.skip.getValue()) {
if (time > 0 and me.aligned == 0 and me.inAlign == 0 and me.operative == 1) {
me._alignTime = pts.Sim.Time.elapsedSec.getValue() + time;
print("Alignment Started");
me.inAlign = 1;
if (me.alignTimer != nil) {
me.alignTimer.start();
}
}
} else {
if (me.aligned == 0 and me.inAlign == 0 and me.operative == 1) {
me._alignTime = pts.Sim.Time.elapsedSec.getValue() + 5;
print("Fast Alignment Started");
me.inAlign = 1;
if (me.alignTimer != nil) {
me.alignTimer.start();
}
}
}
},
stopAlignNoAlign: func() {
print("Stopping alignment or setting unaligned state");
me.inAlign = 0;
me.aligned = 0;
if (me.alignTimer != nil) {
me.alignTimer.stop();
}
},
stopAlignAligned: func() {
print("Aligned");
me.inAlign = 0;
me.aligned = 1;
if (me.alignTimer != nil) {
me.alignTimer.stop();
}
},
alignLoop: func() {
me._roll = pts.Orientation.roll.getValue();
me._pitch = pts.Orientation.pitch.getValue();
me._gs = pts.Velocities.groundspeed.getValue();
# todo use IR values
if (me._gs > 5 or abs(me._pitch) > 5 or abs(me._roll) > 10) {
me.stopAlignNoAlign();
print("Excessive motion, restarting");
me.update(); # update operative
me.align(calcAlignTime(pts.Position.latitude.getValue()));
} elsif (me.operative == 0) {
print("ADIRU " ~ me.num ~ " off");
me.stopAlignNoAlign();
} elsif (pts.Sim.Time.elapsedSec.getValue() >= me._alignTime) {
me.stopAlignAligned();
}
},
instAlign: func() {
me.stopAlignAligned();
},
# Update loop
update: func() {
me._timeVar = pts.Sim.Time.elapsedSec.getValue();
if (me.energised and !me._voltageMain and me._voltageLimitedTime and me._noPowerTime == 0) {
@ -136,6 +207,13 @@ var ADIRSControlPanel = {
ADIRSnew.ADIRunits[n].mode = mode;
ADIRSnew.ADIRunits[n].updateEnergised(mode);
ADIRSnew.Switches.irModeSw[n].setValue(mode);
if (mode == 0) {
ADIRSnew.Lights.irFault[n].setBoolValue(0);
ADIRSnew.ADIRunits[n].stopAlignNoAlign();
} elsif (ADIRSnew.ADIRunits[n].aligned == 0) {
ADIRSnew.ADIRunits[n].update(); # update early so operative is set properly
ADIRSnew.ADIRunits[n].align(calcAlignTime(pts.Position.latitude.getValue())); # when you set NAV, it first acquires GPS position then acquires GPS. You then use IRS INIT > to set PPOS to align if you wish
}
}
}
};
@ -155,7 +233,6 @@ var ADIRSnew = {
# ADIRS Units
ADIRunits: [nil, nil, nil],
#IRunits: [nil, nil, nil],
# Electrical
mainSupply: [systems.ELEC.Bus.acEss, systems.ELEC.Bus.ac2, systems.ELEC.Bus.ac1],
@ -180,6 +257,8 @@ var ADIRSnew = {
# Nodes
overspeedVFE: props.globals.initNode("/systems/navigation/adr/computation/overspeed-vfe-spd", 0, "INT"),
skip: props.globals.initNode("/controls/adirs/skip", 0, "BOOL"),
mcduControl: props.globals.initNode("/controls/adirs/mcducbtn", 0, "BOOL"),
# System
init: func() {
@ -249,12 +328,26 @@ var ADIRSnew = {
};
var calcAlignTime = func(latitude) {
return ((0.002 * (latitude * latitude)) + 5) * 60;
};
setlistener("/systems/fmgc/cas-compare/cas-reject-all", func() {
if (pts.FMGC.CasCompare.rejectAll.getBoolValue()) {
fcu.athrOff("hard");
}
}, 0, 0);
setlistener("/controls/adirs/skip", func() {
if (ADIRSnew.skip.getBoolValue()) {
for (i = 0; i < 3; i = i + 1) {
if (ADIRSnew.ADIRunits[i].inAlign == 1) {
ADIRSnew.ADIRunits[i].stopAlignAligned();
}
}
}
}, 0, 0);
selfTestLoop = maketimer(0.2, func() {
if (pts.Sim.Time.elapsedSec.getValue() > _selfTestTime + 5) {
ADIRSnew.Lights.onBat.setBoolValue(0);

67
Nasal/Systems/APU.nas Normal file
View file

@ -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();
}
},
};

View file

@ -13,6 +13,8 @@ var dc2 = 0;
# Main class
var ELEC = {
_timer1On: 0,
_timer2On: 0,
Bus: {
acEss: props.globals.getNode("/systems/electrical/bus/ac-ess"),
acEssShed: props.globals.getNode("/systems/electrical/bus/ac-ess-shed"),
@ -227,20 +229,32 @@ var ELEC = {
# Autopilot Disconnection routines
if (me.Bus.dcEssShed.getValue() < 25) {
if (getprop("/it-autoflight/output/ap1") == 1) {
fcu.apOff("hard", 1);
if (getprop("/it-autoflight/output/ap2") == 0) {
fcu.athrOff("hard"); # TODO - athr master FMGC logic
}
if (getprop("/it-autoflight/output/ap1") == 1 and !me._timer1On) {
me._timer1On = 1;
settimer(func() {
if (me.Bus.dcEssShed.getValue() < 25) {
fcu.apOff("hard", 1);
if (fcu.FCUController.activeFMGC.getValue() == 1) {
fcu.athrOff("hard");
}
}
me._timer1On = 0;
}, 0.1);
}
}
if (me.Bus.dc2.getValue() < 25) {
if (getprop("/it-autoflight/output/ap2") == 1) {
fcu.apOff("hard", 2);
if (getprop("/it-autoflight/output/ap1") == 0) {
fcu.athrOff("hard"); # TODO - athr master FMGC logic
}
if (getprop("/it-autoflight/output/ap2") == 1 and !me._timer2On) {
me._timer2On = 1;
settimer(func() {
if (me.Bus.dc2.getValue() < 25) {
fcu.apOff("hard", 2);
if (fcu.FCUController.activeFMGC.getValue() == 2) {
fcu.athrOff("hard");
}
}
me._timer2On = 0;
}, 0.1);
}
}
},

View file

@ -521,8 +521,8 @@ cargoDetectorLoop.new(2, 1, "/systems/fire/cargo/fwd/temperature", "/systems/fai
]);
# Create extinguisher bottles
var extinguisherBottles = std.Vector.new([extinguisherBottle.new(0, "/systems/fire/engine1/disch1", "/systems/electrical/bus/dc-bat", "/systems/failures/engine-left-fire", "/systems/fire/engine1/warning-active"), extinguisherBottle.new(1, "/systems/fire/engine1/disch2", "/systems/electrical/bus/dc-2", "/systems/failures/engine-left-fire", "/systems/fire/engine1/warning-active"),
extinguisherBottle.new(0, "/systems/fire/engine2/disch1", "/systems/electrical/bus/dc-bat", "/systems/failures/engine-right-fire", "/systems/fire/engine2/warning-active"), extinguisherBottle.new(1, "/systems/fire/engine2/disch2", "/systems/electrical/bus/dc-2", "/systems/failures/engine-right-fire", "/systems/fire/engine2/warning-active"),
var extinguisherBottles = std.Vector.new([extinguisherBottle.new(0, "/systems/fire/engine1/disch1", "/systems/electrical/bus/dc-hot-1", "/systems/failures/engine-left-fire", "/systems/fire/engine1/warning-active"), extinguisherBottle.new(1, "/systems/fire/engine1/disch2", "/systems/electrical/bus/dc-2", "/systems/failures/engine-left-fire", "/systems/fire/engine1/warning-active"),
extinguisherBottle.new(0, "/systems/fire/engine2/disch1", "/systems/electrical/bus/dc-hot-2", "/systems/failures/engine-right-fire", "/systems/fire/engine2/warning-active"), extinguisherBottle.new(1, "/systems/fire/engine2/disch2", "/systems/electrical/bus/dc-2", "/systems/failures/engine-right-fire", "/systems/fire/engine2/warning-active"),
extinguisherBottle.new(9, "/systems/fire/apu/disch", "/systems/electrical/bus/dc-bat", "/systems/failures/apu-fire", "/systems/fire/apu/warning-active") ]);
# There is only one bottle but the system will think there are two, so other parts work
@ -585,6 +585,7 @@ eng1AgentTimerMakeTimerFunc = func() {
var timeToSetEng1 = eng1Time - etEng1;
eng1AgentTimer.setValue(timeToSetEng1);
} else {
eng1AgentTimer.setValue(99);
eng1AgentTimerMakeTimer.stop();
}
}
@ -596,6 +597,7 @@ eng1Agent2TimerMakeTimerFunc = func() {
var timeToSetEng12 = eng1Time2 - etEng12;
eng1Agent2Timer.setValue(timeToSetEng12);
} else {
eng1Agent2Timer.setValue(99);
eng1Agent2TimerMakeTimer.stop();
}
}
@ -626,6 +628,7 @@ eng2AgentTimerMakeTimerFunc = func() {
var timeToSetEng2 = eng2Time - etEng2;
eng2AgentTimer.setValue(timeToSetEng2);
} else {
eng2AgentTimer.setValue(99);
eng2AgentTimerMakeTimer.stop();
}
}
@ -637,6 +640,7 @@ eng2Agent2TimerMakeTimerFunc = func() {
var timeToSetEng22 = eng2Time2 - etEng22;
eng2Agent2Timer.setValue(timeToSetEng22);
} else {
eng2Agent2Timer.setValue(99);
eng2Agent2TimerMakeTimer.stop();
}
}

View file

@ -22,6 +22,10 @@ var FUEL = {
pumpRight1: props.globals.getNode("/controls/fuel/switches/pump-right-1"),
pumpRight2: props.globals.getNode("/controls/fuel/switches/pump-right-2"),
},
Pumps: {
apu: props.globals.getNode("/systems/fuel/pumps/apu-operate"),
allOff: props.globals.getNode("/systems/fuel/pumps/all-eng-pump-off"),
},
Valves: {
crossfeed: props.globals.getNode("/systems/fuel/valves/crossfeed-valve"),
lpValve1: props.globals.getNode("/systems/fuel/valves/engine-1-lp-valve"),

View file

@ -1557,6 +1557,7 @@
<mode>once</mode>
<type>avionics</type>
<condition>
<property>/sim/current-view/internal</property>
<property>/sim/sound/warnings/chime</property>
</condition>
<reference-dist>10</reference-dist>
@ -1575,6 +1576,7 @@
</and>
</condition>
<volume>
<property>/sim/current-view/internal</property>
<factor>0.8</factor>
</volume>
<reference-dist>10</reference-dist>
@ -1590,6 +1592,7 @@
<property>/sim/sound/warnings/cricket</property>
</condition>
<volume>
<property>/sim/current-view/internal</property>
<factor>0.2</factor>
</volume>
<reference-dist>10</reference-dist>
@ -1605,6 +1608,7 @@
<property>/sim/sound/warnings/stall-voice</property>
</condition>
<volume>
<property>/sim/current-view/internal</property>
<factor>2.0</factor>
</volume>
<reference-dist>10</reference-dist>

View file

@ -409,6 +409,9 @@
<!-- outside -->
<engine>
<name>a320_external_idle_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idle.wav</path>
<condition>
@ -440,6 +443,9 @@
<engine>
<name>a320_external_idle_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idle.wav</path>
<condition>
@ -471,6 +477,9 @@
<engine>
<name>a320_external_idle_rear_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleRear.wav</path>
<condition>
@ -502,6 +511,9 @@
<engine>
<name>a320_external_idle_rear_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleRear.wav</path>
<condition>
@ -533,6 +545,9 @@
<engine>
<name>a320_external_idle_distant_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleDist.wav</path>
<condition>
@ -564,6 +579,9 @@
<engine>
<name>a320_external_idle_distant_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleDist.wav</path>
<condition>
@ -595,6 +613,9 @@
<engine>
<name>a320_external_idle_distant_side_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleDistSide.wav</path>
<condition>
@ -626,6 +647,9 @@
<engine>
<name>a320_external_idle_distant_side_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleDistSide.wav</path>
<condition>
@ -657,6 +681,9 @@
<engine>
<name>a320_external_idle_close_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleClose.wav</path>
<condition>
@ -688,6 +715,9 @@
<engine>
<name>a320_external_idle_close_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleClose.wav</path>
<condition>
@ -719,6 +749,9 @@
<engine>
<name>a320_external_spool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spool.wav</path>
<condition>
@ -750,6 +783,9 @@
<engine>
<name>a320_external_spool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spool.wav</path>
<condition>
@ -781,6 +817,9 @@
<engine>
<name>a320_external_lowspool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-lowspool.wav</path>
<condition>
@ -812,6 +851,9 @@
<engine>
<name>a320_external_lowspool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-lowspool.wav</path>
<condition>
@ -843,6 +885,9 @@
<engine>
<name>a320_external_spool_close_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spoolClose.wav</path>
<condition>
@ -874,6 +919,9 @@
<engine>
<name>a320_external_spool_close_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spoolClose.wav</path>
<condition>
@ -905,6 +953,9 @@
<engine>
<name>a320_external_spool_closeRear_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spoolCloseRear.wav</path>
<condition>
@ -936,6 +987,9 @@
<engine>
<name>a320_external_spool_closeRear_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spoolCloseRear.wav</path>
<condition>
@ -967,6 +1021,9 @@
<engine>
<name>a320_external_buzz_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-buzz.wav</path>
<condition>
@ -998,6 +1055,9 @@
<engine>
<name>a320_external_buzz_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-buzz.wav</path>
<condition>
@ -1029,6 +1089,9 @@
<engine>
<name>a320_external_buzz_distant_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-buzzDist.wav</path>
<condition>
@ -1060,6 +1123,9 @@
<engine>
<name>a320_external_buzz_distant_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-buzzDist.wav</path>
<condition>
@ -1091,6 +1157,9 @@
<engine>
<name>a320_external_rumble_distant_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumbleDist.wav</path>
<condition>
@ -1119,6 +1188,9 @@
<engine>
<name>a320_external_rumble_distant_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumbleDist.wav</path>
<condition>
@ -1147,6 +1219,9 @@
<engine>
<name>a320_external_rumble_side_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumbleSide.wav</path>
<condition>
@ -1178,6 +1253,9 @@
<engine>
<name>a320_external_rumble_side_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumbleSide.wav</path>
<condition>
@ -1209,6 +1287,9 @@
<engine>
<name>a320_external_rumble_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumble.wav</path>
<condition>
@ -1240,6 +1321,9 @@
<engine>
<name>a320_external_rumble_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumble.wav</path>
<condition>
@ -1271,6 +1355,9 @@
<engine>
<name>a320_external_rumble2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumble.wav</path>
<condition>
@ -1302,6 +1389,9 @@
<engine>
<name>a320_external_rumble2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumble.wav</path>
<condition>
@ -1333,6 +1423,9 @@
<engine>
<name>a320_external_reverse_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-reverse.wav</path>
<condition>
@ -1364,6 +1457,9 @@
<engine>
<name>a320_external_reverse_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-reverse.wav</path>
<condition>
@ -1401,6 +1497,9 @@
<!-- wingaft -->
<engine>
<name>a320_wingaft_idle_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-idle.wav</path>
<condition>
@ -1423,6 +1522,9 @@
<engine>
<name>a320_wingaft_idle_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-idle.wav</path>
<condition>
@ -1445,6 +1547,9 @@
<engine>
<name>a320_wingaft_idle2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-idle2.wav</path>
<condition>
@ -1467,6 +1572,9 @@
<engine>
<name>a320_wingaft_idle2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-idle2.wav</path>
<condition>
@ -1489,6 +1597,9 @@
<engine>
<name>a320_wingaft_lowspool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-lowspool.wav</path>
<condition>
@ -1511,6 +1622,9 @@
<engine>
<name>a320_wingaft_lowspool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-lowspool.wav</path>
<condition>
@ -1533,6 +1647,9 @@
<engine>
<name>a320_wingaft_spool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-lowspool.wav</path>
<condition>
@ -1555,6 +1672,9 @@
<engine>
<name>a320_wingaft_spool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-lowspool.wav</path>
<condition>
@ -1577,6 +1697,9 @@
<engine>
<name>a320_wingaft_hum_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-hum.wav</path>
<condition>
@ -1599,6 +1722,9 @@
<engine>
<name>a320_wingaft_hum_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-hum.wav</path>
<condition>
@ -1621,6 +1747,9 @@
<engine>
<name>a320_wingaft_humfull_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-humfull.wav</path>
<condition>
@ -1643,6 +1772,9 @@
<engine>
<name>a320_wingaft_humfull_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-humfull.wav</path>
<condition>
@ -1665,6 +1797,9 @@
<engine>
<name>a320_wingaft_comb_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-comb.wav</path>
<condition>
@ -1687,6 +1822,9 @@
<engine>
<name>a320_wingaft_comb_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-comb.wav</path>
<condition>
@ -1709,6 +1847,9 @@
<engine>
<name>a320_wingaft_comb2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-comb-full.wav</path>
<condition>
@ -1731,6 +1872,9 @@
<engine>
<name>a320_wingaft_comb2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-comb-full.wav</path>
<condition>
@ -1753,6 +1897,9 @@
<engine>
<name>a320_wingaft_buzz_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-buzz.wav</path>
<condition>
@ -1775,6 +1922,9 @@
<engine>
<name>a320_wingaft_buzz_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-buzz.wav</path>
<condition>
@ -1797,6 +1947,9 @@
<engine>
<name>a320_wingaft_reverse_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-reverse.wav</path>
<condition>
@ -1819,6 +1972,9 @@
<engine>
<name>a320_wingaft_reverse_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-reverse.wav</path>
<condition>
@ -1852,6 +2008,9 @@
<!-- wingfwd -->
<engine>
<name>a320_wingfwd_idle_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-idle.wav</path>
<condition>
@ -1874,6 +2033,9 @@
<engine>
<name>a320_wingfwd_idle_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-idle.wav</path>
<condition>
@ -1896,6 +2058,9 @@
<engine>
<name>a320_wingfwd_idle2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-idle2.wav</path>
<condition>
@ -1918,6 +2083,9 @@
<engine>
<name>a320_wingfwd_idle2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-idle2.wav</path>
<condition>
@ -1940,6 +2108,9 @@
<engine>
<name>a320_wingfwd_lowspool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-lowspool.wav</path>
<condition>
@ -1962,6 +2133,9 @@
<engine>
<name>a320_wingfwd_lowspool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-lowspool.wav</path>
<condition>
@ -1984,6 +2158,9 @@
<engine>
<name>a320_wingfwd_spool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-lowspool.wav</path>
<condition>
@ -2006,6 +2183,9 @@
<engine>
<name>a320_wingfwd_spool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-lowspool.wav</path>
<condition>
@ -2028,6 +2208,9 @@
<engine>
<name>a320_wingfwd_hum_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-hum.wav</path>
<condition>
@ -2050,6 +2233,9 @@
<engine>
<name>a320_wingfwd_hum_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-hum.wav</path>
<condition>
@ -2072,6 +2258,9 @@
<engine>
<name>a320_wingfwd_comb_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-comb.wav</path>
<condition>
@ -2094,6 +2283,9 @@
<engine>
<name>a320_wingfwd_comb_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-comb.wav</path>
<condition>
@ -2116,6 +2308,9 @@
<engine>
<name>a320_wingfwd_comb2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-comb-full.wav</path>
<condition>
@ -2138,6 +2333,9 @@
<engine>
<name>a320_wingfwd_comb2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-comb-full.wav</path>
<condition>
@ -2160,6 +2358,9 @@
<engine>
<name>a320_wingfwd_buzz_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-buzz.wav</path>
<condition>
@ -2182,6 +2383,9 @@
<engine>
<name>a320_wingfwd_buzz_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-buzz.wav</path>
<condition>
@ -2204,6 +2408,9 @@
<engine>
<name>a320_wingfwd_reverse_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-reverse.wav</path>
<condition>
@ -2226,6 +2433,9 @@
<engine>
<name>a320_wingfwd_reverse_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-reverse.wav</path>
<condition>

View file

@ -365,6 +365,9 @@
<!-- outside -->
<engine>
<name>a320_external_idle_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idle.wav</path>
<condition>
@ -396,6 +399,9 @@
<engine>
<name>a320_external_idle_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idle.wav</path>
<condition>
@ -427,6 +433,9 @@
<engine>
<name>a320_external_idle_rear_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleRear.wav</path>
<condition>
@ -458,6 +467,9 @@
<engine>
<name>a320_external_idle_rear_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleRear.wav</path>
<condition>
@ -489,6 +501,9 @@
<engine>
<name>a320_external_idle_distant_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleDist.wav</path>
<condition>
@ -520,6 +535,9 @@
<engine>
<name>a320_external_idle_distant_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleDist.wav</path>
<condition>
@ -551,6 +569,9 @@
<engine>
<name>a320_external_idle_distant_side_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleDistSide.wav</path>
<condition>
@ -582,6 +603,9 @@
<engine>
<name>a320_external_idle_distant_side_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleDistSide.wav</path>
<condition>
@ -613,6 +637,9 @@
<engine>
<name>a320_external_idle_close_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleClose.wav</path>
<condition>
@ -644,6 +671,9 @@
<engine>
<name>a320_external_idle_close_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-idleClose.wav</path>
<condition>
@ -675,6 +705,9 @@
<engine>
<name>a320_external_spool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spool.wav</path>
<condition>
@ -706,6 +739,9 @@
<engine>
<name>a320_external_spool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spool.wav</path>
<condition>
@ -737,6 +773,9 @@
<engine>
<name>a320_external_lowspool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-lowspool.wav</path>
<condition>
@ -768,6 +807,9 @@
<engine>
<name>a320_external_lowspool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-lowspool.wav</path>
<condition>
@ -799,6 +841,9 @@
<engine>
<name>a320_external_spool_close_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spoolClose.wav</path>
<condition>
@ -830,6 +875,9 @@
<engine>
<name>a320_external_spool_close_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spoolClose.wav</path>
<condition>
@ -861,6 +909,9 @@
<engine>
<name>a320_external_spool_closeRear_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spoolCloseRear.wav</path>
<condition>
@ -892,6 +943,9 @@
<engine>
<name>a320_external_spool_closeRear_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-spoolCloseRear.wav</path>
<condition>
@ -923,6 +977,9 @@
<engine>
<name>a320_external_rumble_distant_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumbleDist.wav</path>
<condition>
@ -951,6 +1008,9 @@
<engine>
<name>a320_external_rumble_distant_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumbleDist.wav</path>
<condition>
@ -979,6 +1039,9 @@
<engine>
<name>a320_external_rumble_side_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumbleSide.wav</path>
<condition>
@ -1010,6 +1073,9 @@
<engine>
<name>a320_external_rumble_side_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumbleSide.wav</path>
<condition>
@ -1041,6 +1107,9 @@
<engine>
<name>a320_external_rumble_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumble.wav</path>
<condition>
@ -1072,6 +1141,9 @@
<engine>
<name>a320_external_rumble_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumble.wav</path>
<condition>
@ -1103,6 +1175,9 @@
<engine>
<name>a320_external_rumble2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumble.wav</path>
<condition>
@ -1134,6 +1209,9 @@
<engine>
<name>a320_external_rumble2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-rumble.wav</path>
<condition>
@ -1165,6 +1243,9 @@
<engine>
<name>a320_external_reverse_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-reverse.wav</path>
<condition>
@ -1196,6 +1277,9 @@
<engine>
<name>a320_external_reverse_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-reverse.wav</path>
<condition>
@ -1233,6 +1317,9 @@
<!-- wingaft -->
<engine>
<name>a320_wingaft_idle_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-idle.wav</path>
<condition>
@ -1255,6 +1342,9 @@
<engine>
<name>a320_wingaft_idle_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-idle.wav</path>
<condition>
@ -1277,6 +1367,9 @@
<engine>
<name>a320_wingaft_idle2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-idle2.wav</path>
<condition>
@ -1299,6 +1392,9 @@
<engine>
<name>a320_wingaft_idle2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-idle2.wav</path>
<condition>
@ -1321,6 +1417,9 @@
<engine>
<name>a320_wingaft_lowspool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-lowspool.wav</path>
<condition>
@ -1343,6 +1442,9 @@
<engine>
<name>a320_wingaft_lowspool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-lowspool.wav</path>
<condition>
@ -1365,6 +1467,9 @@
<engine>
<name>a320_wingaft_spool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-lowspool.wav</path>
<condition>
@ -1387,6 +1492,9 @@
<engine>
<name>a320_wingaft_spool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-lowspool.wav</path>
<condition>
@ -1409,6 +1517,9 @@
<engine>
<name>a320_wingaft_hum_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-hum.wav</path>
<condition>
@ -1431,6 +1542,9 @@
<engine>
<name>a320_wingaft_hum_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-hum.wav</path>
<condition>
@ -1453,6 +1567,9 @@
<engine>
<name>a320_wingaft_humfull_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-humfull.wav</path>
<condition>
@ -1475,6 +1592,9 @@
<engine>
<name>a320_wingaft_humfull_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-humfull.wav</path>
<condition>
@ -1497,6 +1617,9 @@
<engine>
<name>a320_wingaft_comb_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-comb.wav</path>
<condition>
@ -1519,6 +1642,9 @@
<engine>
<name>a320_wingaft_comb_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-comb.wav</path>
<condition>
@ -1541,6 +1667,9 @@
<engine>
<name>a320_wingaft_comb2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-comb-full.wav</path>
<condition>
@ -1563,6 +1692,9 @@
<engine>
<name>a320_wingaft_comb2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-comb-full.wav</path>
<condition>
@ -1585,6 +1717,9 @@
<engine>
<name>a320_wingaft_reverse_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-reverse.wav</path>
<condition>
@ -1607,6 +1742,9 @@
<engine>
<name>a320_wingaft_reverse_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingaft/cfm-reverse.wav</path>
<condition>
@ -1640,6 +1778,9 @@
<!-- wingfwd -->
<engine>
<name>a320_wingfwd_idle_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-idle.wav</path>
<condition>
@ -1662,6 +1803,9 @@
<engine>
<name>a320_wingfwd_idle_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-idle.wav</path>
<condition>
@ -1684,6 +1828,9 @@
<engine>
<name>a320_wingfwd_idle2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-idle2.wav</path>
<condition>
@ -1706,6 +1853,9 @@
<engine>
<name>a320_wingfwd_idle2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-idle2.wav</path>
<condition>
@ -1728,6 +1878,9 @@
<engine>
<name>a320_wingfwd_lowspool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-lowspool.wav</path>
<condition>
@ -1750,6 +1903,9 @@
<engine>
<name>a320_wingfwd_lowspool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-lowspool.wav</path>
<condition>
@ -1772,6 +1928,9 @@
<engine>
<name>a320_wingfwd_spool_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-lowspool.wav</path>
<condition>
@ -1794,6 +1953,9 @@
<engine>
<name>a320_wingfwd_spool_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-lowspool.wav</path>
<condition>
@ -1816,6 +1978,9 @@
<engine>
<name>a320_wingfwd_hum_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-hum.wav</path>
<condition>
@ -1838,6 +2003,9 @@
<engine>
<name>a320_wingfwd_hum_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-hum.wav</path>
<condition>
@ -1860,6 +2028,9 @@
<engine>
<name>a320_wingfwd_comb_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-comb.wav</path>
<condition>
@ -1882,6 +2053,9 @@
<engine>
<name>a320_wingfwd_comb_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-comb.wav</path>
<condition>
@ -1904,6 +2078,9 @@
<engine>
<name>a320_wingfwd_comb2_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-comb-full.wav</path>
<condition>
@ -1926,6 +2103,9 @@
<engine>
<name>a320_wingfwd_comb2_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-comb-full.wav</path>
<condition>
@ -1948,6 +2128,9 @@
<engine>
<name>a320_wingfwd_reverse_1</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-reverse.wav</path>
<condition>
@ -1970,6 +2153,9 @@
<engine>
<name>a320_wingfwd_reverse_2</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/wingfwd/cfm-reverse.wav</path>
<condition>

View file

@ -303,13 +303,6 @@
</position>
</engine>
<!-- outside -->
<engine>
<name>a320_external_starter_left</name>
@ -487,6 +480,9 @@
<engine>
<name>a320_external_idle_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-idle.wav</path>
<condition>
@ -518,6 +514,9 @@
<engine>
<name>a320_external_idle_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-idle.wav</path>
<condition>
@ -549,6 +548,9 @@
<engine>
<name>a320_external_idle_rear_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-idleRear.wav</path>
<condition>
@ -580,6 +582,9 @@
<engine>
<name>a320_external_idle_rear_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-idleRear.wav</path>
<condition>
@ -611,6 +616,9 @@
<engine>
<name>a320_external_spool_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-spool.wav</path>
<condition>
@ -642,6 +650,9 @@
<engine>
<name>a320_external_spool_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-spool.wav</path>
<condition>
@ -673,6 +684,9 @@
<engine>
<name>a320_external_lowspool_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-lowspool.wav</path>
<condition>
@ -704,6 +718,9 @@
<engine>
<name>a320_external_lowspool_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-lowspool.wav</path>
<condition>
@ -735,6 +752,9 @@
<engine>
<name>a320_external_buzz_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-buzz.wav</path>
<condition>
@ -766,6 +786,9 @@
<engine>
<name>a320_external_buzz_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-buzz.wav</path>
<condition>
@ -797,6 +820,9 @@
<engine>
<name>a320_external_buzz_distant_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-buzzDist.wav</path>
<condition>
@ -828,6 +854,9 @@
<engine>
<name>a320_external_buzz_distant_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-buzzDist.wav</path>
<condition>
@ -859,6 +888,9 @@
<engine>
<name>a320_external_rumble_distant_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-rumbleDist.wav</path>
<condition>
@ -887,6 +919,9 @@
<engine>
<name>a320_external_rumble_distant_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-rumbleDist.wav</path>
<condition>
@ -915,6 +950,9 @@
<engine>
<name>a320_external_rumble_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-rumble.wav</path>
<condition>
@ -946,6 +984,9 @@
<engine>
<name>a320_external_rumble_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-rumble.wav</path>
<condition>
@ -977,6 +1018,9 @@
<engine>
<name>a320_external_rumble_side_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-rumbleSide.wav</path>
<condition>
@ -1008,6 +1052,9 @@
<engine>
<name>a320_external_rumble_side_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-rumbleSide.wav</path>
<condition>
@ -1039,6 +1086,9 @@
<engine>
<name>a320_external_rumble2_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-rumble.wav</path>
<condition>
@ -1070,6 +1120,9 @@
<engine>
<name>a320_external_rumble2_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-rumble.wav</path>
<condition>
@ -1101,6 +1154,9 @@
<engine>
<name>a320_external_reverse_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-reverse.wav</path>
<condition>
@ -1132,6 +1188,9 @@
<engine>
<name>a320_external_reverse_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-reverse.wav</path>
<condition>
@ -1166,6 +1225,9 @@
<!-- wingaft -->
<engine>
<name>a320_wingaft_idle_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-idle.wav</path>
<condition>
@ -1188,6 +1250,9 @@
<engine>
<name>a320_wingaft_idle_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-idle.wav</path>
<condition>
@ -1210,6 +1275,9 @@
<engine>
<name>a320_wingaft_whine_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-whine.wav</path>
<condition>
@ -1232,6 +1300,9 @@
<engine>
<name>a320_wingaft_whine_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-whine.wav</path>
<condition>
@ -1254,6 +1325,9 @@
<engine>
<name>a320_wingaft_lowspool_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-lowspool.wav</path>
<condition>
@ -1276,6 +1350,9 @@
<engine>
<name>a320_wingaft_lowspool_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-lowspool.wav</path>
<condition>
@ -1298,6 +1375,9 @@
<engine>
<name>a320_wingaft_comb_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-comb.wav</path>
<condition>
@ -1320,6 +1400,9 @@
<engine>
<name>a320_wingaft_comb_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-comb.wav</path>
<condition>
@ -1342,6 +1425,9 @@
<engine>
<name>a320_wingaft_fullhum_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-fullhum.wav</path>
<condition>
@ -1364,6 +1450,9 @@
<engine>
<name>a320_wingaft_fullhum_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-fullhum.wav</path>
<condition>
@ -1386,6 +1475,9 @@
<engine>
<name>a320_wingaft_reverse_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-reverse.wav</path>
<condition>
@ -1408,6 +1500,9 @@
<engine>
<name>a320_wingaft_reverse_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingaft/v2500-reverse.wav</path>
<condition>
@ -1441,6 +1536,9 @@
<!-- wingfwd -->
<engine>
<name>a320_wingfwd_idle_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-idle.wav</path>
<condition>
@ -1463,6 +1561,9 @@
<engine>
<name>a320_wingfwd_idle_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-idle.wav</path>
<condition>
@ -1485,6 +1586,9 @@
<engine>
<name>a320_wingfwd_lowspool_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-lowspool.wav</path>
<condition>
@ -1507,6 +1611,9 @@
<engine>
<name>a320_wingfwd_lowspool_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-lowspool.wav</path>
<condition>
@ -1529,6 +1636,9 @@
<engine>
<name>a320_wingfwd_comb_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-comb.wav</path>
<condition>
@ -1551,6 +1661,9 @@
<engine>
<name>a320_wingfwd_comb_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-comb.wav</path>
<condition>
@ -1573,6 +1686,9 @@
<engine>
<name>a320_wingfwd_fullhum_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-fullhum.wav</path>
<condition>
@ -1595,6 +1711,9 @@
<engine>
<name>a320_wingfwd_fullhum_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-fullhum.wav</path>
<condition>
@ -1617,6 +1736,9 @@
<engine>
<name>a320_wingfwd_buzz_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-buzz.wav</path>
<condition>
@ -1639,6 +1761,9 @@
<engine>
<name>a320_wingfwd_buzz_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-buzz.wav</path>
<condition>
@ -1661,6 +1786,9 @@
<engine>
<name>a320_wingfwd_reverse_left</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-reverse.wav</path>
<condition>
@ -1683,6 +1811,9 @@
<engine>
<name>a320_wingfwd_reverse_right</name>
<condition>
<not><property>sim/current-view/internal</property></not>
</condition>
<mode>looped</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/wingfwd/v2500-reverse.wav</path>
<condition>

View file

@ -13,9 +13,9 @@
<table>
<independentVar lookup="row">/velocities/groundspeed-kt</independentVar>
<tableData>
0 0.0
5 0.0
6 1.0
0 0.0
29 0.0
30 1.0
</tableData>
</table>
</product>
@ -955,14 +955,26 @@
</clipto>
</pure_gain>
<switch name="/instrumentation/transponder/altimeter-input">
<test logic="AND" value="/systems/navigation/adr/output/baro-alt-corrected-1-capt">
<switch name="/instrumentation/transponder/altimeter-input/mode-c-alt-ft">
<test logic="AND" value="/instrumentation/altimeter[0]/mode-c-alt-ft">
/instrumentation/transponder/altimeter-input-src eq 1
</test>
<test logic="AND" value="/systems/navigation/adr/output/baro-alt-corrected-2-capt">
<test logic="AND" value="/instrumentation/altimeter[1]/mode-c-alt-ft">
/instrumentation/transponder/altimeter-input-src eq 2
</test>
<test logic="AND" value="/systems/navigation/adr/output/baro-alt-corrected-3-capt">
<test logic="AND" value="/instrumentation/altimeter[2]/mode-c-alt-ft">
/instrumentation/transponder/altimeter-input-src eq 3
</test>
</switch>
<switch name="/instrumentation/transponder/altimeter-input/mode-s-alt-ft">
<test logic="AND" value="/instrumentation/altimeter[0]/mode-s-alt-ft">
/instrumentation/transponder/altimeter-input-src eq 1
</test>
<test logic="AND" value="/instrumentation/altimeter[1]/mode-s-alt-ft">
/instrumentation/transponder/altimeter-input-src eq 2
</test>
<test logic="AND" value="/instrumentation/altimeter[2]/mode-s-alt-ft">
/instrumentation/transponder/altimeter-input-src eq 3
</test>
</switch>

View file

@ -4,6 +4,8 @@
<system name="A320: Electrical">
<property value="0">/systems/electrical/some-electric-thingie/rat-deploy</property>
<channel name="Main Electrical" execrate="8">
<!-- Battery 1 -->
@ -371,7 +373,7 @@
<!-- Emergency Generator -->
<switch name="/systems/electrical/some-electric-thingie/rat-deploy">
<default value="0"/>
<default value="/systems/electrical/some-electric-thingie/rat-deploy"/>
<test logic="AND" value="1">
/instrumentation/airspeed-indicator/indicated-speed-kt gt 100
/systems/electrical/bus/ac-1 eq 0
@ -382,6 +384,9 @@
/controls/hydraulic/switches/rat-man eq 1
/controls/electrical/switches/emer-elec-man-on eq 1
</test>
<!--<test value="0">
/controls/hydraulic/switches/ground-rat-retraction eq 1
</test>-->
</switch>
<switch name="/systems/electrical/some-electric-thingie/emer-gen-operate">
@ -1301,7 +1306,7 @@
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/some-electric-thingie/emer-elec-config eq 1
/controls/electrical/switches/gen-1 eq 1
/systems/electrical/some-electric-thingie/generator-1-pb eq 1
/controls/electrical/switches/bus-tie eq 0
</test>
</switch>
@ -1310,7 +1315,7 @@
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/some-electric-thingie/emer-elec-config eq 1
/controls/electrical/switches/gen-2 eq 1
/systems/electrical/some-electric-thingie/generator-2-pb eq 1
/controls/electrical/switches/bus-tie eq 0
</test>
</switch>
@ -1319,7 +1324,7 @@
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/some-electric-thingie/emer-elec-config eq 1
/controls/electrical/switches/gen-1 eq 1
/systems/electrical/some-electric-thingie/generator-1-pb eq 1
</test>
</switch>
@ -1327,7 +1332,7 @@
<default value="0"/>
<test logic="AND" value="1">
/systems/electrical/some-electric-thingie/emer-elec-config eq 1
/controls/electrical/switches/gen-2 eq 1
/systems/electrical/some-electric-thingie/generator-2-pb eq 1
</test>
</switch>
@ -1379,12 +1384,14 @@
</test>
</switch>
<switch name="/systems/electrical/light/apu-fault"> <!-- TODO: check out connection to engines -->
<switch name="/systems/electrical/light/apu-fault">
<default value="0"/>
<test logic="AND" value="1">
/controls/electrical/switches/apu eq 1
/systems/electrical/relay/apu-glc/contact-pos eq 0
/systems/electrical/relay/ext-epc/contact-pos eq 0
/systems/electrical/relay/gen-1-glc/contact-pos eq 0
/systems/electrical/relay/gen-2-glc/contact-pos eq 0
/systems/electrical/sources/apu/drive-rpm gt 2000
</test>
</switch>
@ -1448,7 +1455,7 @@
<switch name="/systems/electrical/light/rat-emer-gen-fault">
<default value="0"/>
<test value="1">
<test logic="AND" value="1">
/systems/electrical/relay/dc-ess-feed-tr/output eq 0
/systems/electrical/bus/ac-1 eq 0
/systems/electrical/bus/ac-2 eq 0

View file

@ -109,7 +109,7 @@
<table>
<independentVar lookup="row">/instrumentation/airspeed-indicator/indicated-speed-kt</independentVar>
<tableData>
99 0
90 0
100 2500
</tableData>
</table>

View file

@ -4,6 +4,30 @@
<PropertyList>
<flipflop>
<type>monostable</type>
<inverted type="bool">true</inverted>
<time>
<value>0.1</value>
</time>
<S>
<property>/controls/electrical/switches/gen-1</property>
</S>
<output>/systems/electrical/some-electric-thingie/generator-1-pb</output>
</flipflop>
<flipflop>
<type>monostable</type>
<inverted type="bool">true</inverted>
<time>
<value>0.1</value>
</time>
<S>
<property>/controls/electrical/switches/gen-2</property>
</S>
<output>/systems/electrical/some-electric-thingie/generator-2-pb</output>
</flipflop>
<flipflop>
<type>RS</type>
<S>

View file

@ -226,8 +226,6 @@
<mode>2</mode>
<encoder-path>/instrumentation/transponder/altimeter-input</encoder-path>
<airspeed-path>/instrumentation/transponder/airspeed-input</airspeed-path>
<mode-c-altitude>/instrumentation/encoder/mode-c-alt-ft</mode-c-altitude>
<mode-s-altitude>/instrumentation/encoder/mode-s-alt-ft</mode-s-altitude>
</transponder>
<turn-indicator>

View file

@ -1 +1 @@
16
20