Merge branch 'dev' into 3D
This commit is contained in:
commit
cd141f357f
34 changed files with 1024 additions and 571 deletions
|
@ -21,7 +21,7 @@
|
||||||
<path>Aircraft/A320-family/Sounds/cfm56-sound.xml</path>
|
<path>Aircraft/A320-family/Sounds/cfm56-sound.xml</path>
|
||||||
</sound>
|
</sound>
|
||||||
|
|
||||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
<chase-distance-m type="double" archive="y">-60.0</chase-distance-m>
|
||||||
<view>
|
<view>
|
||||||
<name>Pilot View</name>
|
<name>Pilot View</name>
|
||||||
<internal archive="y">true</internal>
|
<internal archive="y">true</internal>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<path>Aircraft/A320-family/Sounds/cfm56-sound.xml</path>
|
<path>Aircraft/A320-family/Sounds/cfm56-sound.xml</path>
|
||||||
</sound>
|
</sound>
|
||||||
|
|
||||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
<chase-distance-m type="double" archive="y">-60.0</chase-distance-m>
|
||||||
<view>
|
<view>
|
||||||
<name>Pilot View</name>
|
<name>Pilot View</name>
|
||||||
<internal archive="y">true</internal>
|
<internal archive="y">true</internal>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<path>Aircraft/A320-family/Sounds/v2500-sound.xml</path>
|
<path>Aircraft/A320-family/Sounds/v2500-sound.xml</path>
|
||||||
</sound>
|
</sound>
|
||||||
|
|
||||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
<chase-distance-m type="double" archive="y">-60.0</chase-distance-m>
|
||||||
<view>
|
<view>
|
||||||
<name>Pilot View</name>
|
<name>Pilot View</name>
|
||||||
<internal archive="y">true</internal>
|
<internal archive="y">true</internal>
|
||||||
|
|
|
@ -576,7 +576,7 @@
|
||||||
<gui n="0" include="gui/it-gui.xml"/>
|
<gui n="0" include="gui/it-gui.xml"/>
|
||||||
|
|
||||||
<current-view>
|
<current-view>
|
||||||
<z-offset-default type="float">80.0</z-offset-default>
|
<z-offset-default type="float">60.0</z-offset-default>
|
||||||
<z-offset-min-m type="float">10.0</z-offset-min-m>
|
<z-offset-min-m type="float">10.0</z-offset-min-m>
|
||||||
<z-offset-max-m type="float">300.0</z-offset-max-m>
|
<z-offset-max-m type="float">300.0</z-offset-max-m>
|
||||||
</current-view>
|
</current-view>
|
||||||
|
@ -778,9 +778,6 @@
|
||||||
<overspeed-roll-back type="bool">0</overspeed-roll-back>
|
<overspeed-roll-back type="bool">0</overspeed-roll-back>
|
||||||
</protections>
|
</protections>
|
||||||
<spd-hld type="bool">0</spd-hld>
|
<spd-hld type="bool">0</spd-hld>
|
||||||
<speeds>
|
|
||||||
<vmo-mmo type="int">350</vmo-mmo>
|
|
||||||
</speeds>
|
|
||||||
</it-fbw>
|
</it-fbw>
|
||||||
|
|
||||||
<FMGC n="0">
|
<FMGC n="0">
|
||||||
|
@ -1318,6 +1315,7 @@
|
||||||
<fac2 type="bool">0</fac2>
|
<fac2 type="bool">0</fac2>
|
||||||
<rtlu-1 type="bool">0</rtlu-1>
|
<rtlu-1 type="bool">0</rtlu-1>
|
||||||
<rtlu-2 type="bool">0</rtlu-2>
|
<rtlu-2 type="bool">0</rtlu-2>
|
||||||
|
<ths-jam type="bool">0</ths-jam>
|
||||||
<yaw-damper-1 type="bool">0</yaw-damper-1>
|
<yaw-damper-1 type="bool">0</yaw-damper-1>
|
||||||
<yaw-damper-2 type="bool">0</yaw-damper-2>
|
<yaw-damper-2 type="bool">0</yaw-damper-2>
|
||||||
</fctl>
|
</fctl>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<path>Aircraft/A320-family/Sounds/leapx-sound.xml</path>
|
<path>Aircraft/A320-family/Sounds/leapx-sound.xml</path>
|
||||||
</sound>
|
</sound>
|
||||||
|
|
||||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
<chase-distance-m type="double" archive="y">-60.0</chase-distance-m>
|
||||||
<view>
|
<view>
|
||||||
<name>Pilot View</name>
|
<name>Pilot View</name>
|
||||||
<internal archive="y">true</internal>
|
<internal archive="y">true</internal>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
<path>Aircraft/A320-family/Sounds/leapx-sound.xml</path>
|
<path>Aircraft/A320-family/Sounds/leapx-sound.xml</path>
|
||||||
</sound>
|
</sound>
|
||||||
|
|
||||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
<chase-distance-m type="double" archive="y">-60.0</chase-distance-m>
|
||||||
<view>
|
<view>
|
||||||
<name>Pilot View</name>
|
<name>Pilot View</name>
|
||||||
<internal archive="y">true</internal>
|
<internal archive="y">true</internal>
|
||||||
|
|
|
@ -144,6 +144,16 @@
|
||||||
<live>true</live>
|
<live>true</live>
|
||||||
</checkbox>
|
</checkbox>
|
||||||
|
|
||||||
|
<checkbox>
|
||||||
|
<label>THS</label>
|
||||||
|
<halign>left</halign>
|
||||||
|
<property>/systems/failures/fctl/ths-jam</property>
|
||||||
|
<binding>
|
||||||
|
<command>dialog-apply</command>
|
||||||
|
</binding>
|
||||||
|
<live>true</live>
|
||||||
|
</checkbox>
|
||||||
|
|
||||||
<checkbox>
|
<checkbox>
|
||||||
<label>Yaw Damper 1</label>
|
<label>Yaw Damper 1</label>
|
||||||
<halign>left</halign>
|
<halign>left</halign>
|
||||||
|
|
|
@ -365,7 +365,7 @@
|
||||||
<type>rotate</type>
|
<type>rotate</type>
|
||||||
<object-name>brakes_lb_psi</object-name>
|
<object-name>brakes_lb_psi</object-name>
|
||||||
<property>systems/hydraulic/brakes/pressure-left-psi</property>
|
<property>systems/hydraulic/brakes/pressure-left-psi</property>
|
||||||
<factor>0.03</factor>
|
<factor>-0.03</factor>
|
||||||
<condition>
|
<condition>
|
||||||
<equals>
|
<equals>
|
||||||
<property>systems/hydraulic/brakes/mode</property>
|
<property>systems/hydraulic/brakes/mode</property>
|
||||||
|
@ -381,7 +381,7 @@
|
||||||
<type>rotate</type>
|
<type>rotate</type>
|
||||||
<object-name>brakes_rb_psi</object-name>
|
<object-name>brakes_rb_psi</object-name>
|
||||||
<property>systems/hydraulic/brakes/pressure-right-psi</property>
|
<property>systems/hydraulic/brakes/pressure-right-psi</property>
|
||||||
<factor>-0.03</factor>
|
<factor>0.03</factor>
|
||||||
<condition>
|
<condition>
|
||||||
<equals>
|
<equals>
|
||||||
<property>systems/hydraulic/brakes/mode</property>
|
<property>systems/hydraulic/brakes/mode</property>
|
||||||
|
@ -399,10 +399,16 @@
|
||||||
<property>systems/hydraulic/brakes/accumulator-pressure-psi</property>
|
<property>systems/hydraulic/brakes/accumulator-pressure-psi</property>
|
||||||
<interpolation>
|
<interpolation>
|
||||||
<entry><ind>0</ind><dep>0</dep></entry>
|
<entry><ind>0</ind><dep>0</dep></entry>
|
||||||
<entry><ind>700</ind><dep>66</dep></entry>
|
<entry><ind>700</ind><dep>-66</dep></entry>
|
||||||
<entry><ind>2000</ind><dep>78</dep></entry>
|
<entry><ind>2000</ind><dep>-78</dep></entry>
|
||||||
<entry><ind>3000</ind><dep>90</dep></entry>
|
<entry><ind>3000</ind><dep>-90</dep></entry>
|
||||||
</interpolation>
|
</interpolation>
|
||||||
|
<condition>
|
||||||
|
<equals>
|
||||||
|
<property>systems/hydraulic/brakes/mode</property>
|
||||||
|
<value>2</value>
|
||||||
|
</equals>
|
||||||
|
</condition>
|
||||||
<axis>
|
<axis>
|
||||||
<object-name>brakes_accum_psi.axis</object-name>
|
<object-name>brakes_accum_psi.axis</object-name>
|
||||||
</axis>
|
</axis>
|
||||||
|
@ -5421,19 +5427,65 @@
|
||||||
<type>select</type>
|
<type>select</type>
|
||||||
<object-name>gear_lever_down_arrow</object-name>
|
<object-name>gear_lever_down_arrow</object-name>
|
||||||
<condition>
|
<condition>
|
||||||
|
<and>
|
||||||
|
<or>
|
||||||
|
<greater-than>
|
||||||
|
<property>systems/electrical/bus/ac-ess</property>
|
||||||
|
<value>110</value>
|
||||||
|
</greater-than>
|
||||||
|
<greater-than>
|
||||||
|
<property>systems/electrical/bus/ac-2</property>
|
||||||
|
<value>110</value>
|
||||||
|
</greater-than>
|
||||||
|
</or>
|
||||||
<or>
|
<or>
|
||||||
<equals>
|
<equals>
|
||||||
<property>controls/switches/annun-test</property>
|
<property>controls/switches/annun-test</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
<equals>
|
<equals>
|
||||||
<property>systems/gear/landing-gear-warning-light</property>
|
<property>ECAM/warnings/landing-gear-warning-light</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
</or>
|
</or>
|
||||||
|
</and>
|
||||||
</condition>
|
</condition>
|
||||||
</animation>
|
</animation>
|
||||||
|
|
||||||
|
<animation>
|
||||||
|
<type>material</type>
|
||||||
|
<object-name>gear_lever_down_arrow</object-name>
|
||||||
|
<condition>
|
||||||
|
<and>
|
||||||
|
<or>
|
||||||
|
<greater-than>
|
||||||
|
<property>systems/electrical/bus/ac-ess</property>
|
||||||
|
<value>110</value>
|
||||||
|
</greater-than>
|
||||||
|
<greater-than>
|
||||||
|
<property>systems/electrical/bus/ac-2</property>
|
||||||
|
<value>110</value>
|
||||||
|
</greater-than>
|
||||||
|
</or>
|
||||||
|
<or>
|
||||||
|
<equals>
|
||||||
|
<property>controls/switches/annun-test</property>
|
||||||
|
<value>1</value>
|
||||||
|
</equals>
|
||||||
|
<equals>
|
||||||
|
<property>ECAM/warnings/landing-gear-warning-light</property>
|
||||||
|
<value>1</value>
|
||||||
|
</equals>
|
||||||
|
</or>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<emission>
|
||||||
|
<red>1.00</red>
|
||||||
|
<green>0.0</green>
|
||||||
|
<blue>0.0</blue>
|
||||||
|
</emission>
|
||||||
|
</animation>
|
||||||
|
|
||||||
<!-- Landing Gear Lights -->
|
<!-- Landing Gear Lights -->
|
||||||
<animation>
|
<animation>
|
||||||
<type>select</type>
|
<type>select</type>
|
||||||
|
|
|
@ -36,6 +36,10 @@ var tr2_v = 0;
|
||||||
var tr2_a = 0;
|
var tr2_a = 0;
|
||||||
var essTramps = 0;
|
var essTramps = 0;
|
||||||
var essTrvolts = 0;
|
var essTrvolts = 0;
|
||||||
|
var elac1Node = 0;
|
||||||
|
var elac2Node = 0;
|
||||||
|
var sec1Node = 0;
|
||||||
|
var sec2Node = 0;
|
||||||
|
|
||||||
# Conversion factor pounds to kilogram
|
# Conversion factor pounds to kilogram
|
||||||
LBS2KGS = 0.4535924;
|
LBS2KGS = 0.4535924;
|
||||||
|
@ -1951,12 +1955,16 @@ var canvas_lowerECAM_fctl = {
|
||||||
return["TAT","SAT","GW","UTCh","UTCm","GW-weight-unit","ailL","ailR","elevL","elevR","PTcc","PT","PTupdn","elac1","elac2","sec1","sec2","sec3","ailLblue","ailRblue","elevLblue","elevRblue","rudderblue","ailLgreen","ailRgreen","elevLgreen","ruddergreen","PTgreen",
|
return["TAT","SAT","GW","UTCh","UTCm","GW-weight-unit","ailL","ailR","elevL","elevR","PTcc","PT","PTupdn","elac1","elac2","sec1","sec2","sec3","ailLblue","ailRblue","elevLblue","elevRblue","rudderblue","ailLgreen","ailRgreen","elevLgreen","ruddergreen","PTgreen",
|
||||||
"elevRyellow","rudderyellow","PTyellow","rudder","spdbrkblue","spdbrkgreen","spdbrkyellow","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex","spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex",
|
"elevRyellow","rudderyellow","PTyellow","rudder","spdbrkblue","spdbrkgreen","spdbrkyellow","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex","spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex",
|
||||||
"spoiler1Lrt","spoiler2Lex","spoiler2Lrt","spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf","spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf",
|
"spoiler1Lrt","spoiler2Lex","spoiler2Lrt","spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf","spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf",
|
||||||
"spoiler5Lf","ailLscale","ailRscale","path4249","path4249-3","path4249-3-6-7","path4249-3-6-7-5","path4249-3-6"];
|
"spoiler5Lf","ailLscale","ailRscale","path4249","path4249-3","path4249-3-6-7","path4249-3-6-7-5","path4249-3-6","text4343"];
|
||||||
},
|
},
|
||||||
update: func() {
|
update: func() {
|
||||||
blue_psi = systems.HYD.Psi.blue.getValue();
|
blue_psi = systems.HYD.Psi.blue.getValue();
|
||||||
green_psi = systems.HYD.Psi.green.getValue();
|
green_psi = systems.HYD.Psi.green.getValue();
|
||||||
yellow_psi = systems.HYD.Psi.yellow.getValue();
|
yellow_psi = systems.HYD.Psi.yellow.getValue();
|
||||||
|
elac1Node = fbw.FBW.Computers.elac1.getValue();
|
||||||
|
elac2Node = fbw.FBW.Computers.elac2.getValue();
|
||||||
|
sec1Node = fbw.FBW.Computers.sec1.getValue();
|
||||||
|
sec2Node = fbw.FBW.Computers.sec2.getValue();
|
||||||
|
|
||||||
# Pitch Trim
|
# Pitch Trim
|
||||||
me["PT"].setText(sprintf("%2.1f", math.round(elevator_trim_deg.getValue(), 0.1)));
|
me["PT"].setText(sprintf("%2.1f", math.round(elevator_trim_deg.getValue(), 0.1)));
|
||||||
|
@ -1977,15 +1985,25 @@ var canvas_lowerECAM_fctl = {
|
||||||
me["PTcc"].setColor(0.0509,0.7529,0.2941);
|
me["PTcc"].setColor(0.0509,0.7529,0.2941);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fbw.FBW.Failures.ths.getBoolValue()) {
|
||||||
|
me["text4343"].setColor(0.7333,0.3803,0);
|
||||||
|
} else {
|
||||||
|
me["text4343"].setColor(0.8078,0.8039,0.8078);
|
||||||
|
}
|
||||||
|
|
||||||
# Ailerons
|
# Ailerons
|
||||||
me["ailL"].setTranslation(0, aileron_ind_left.getValue() * 100);
|
me["ailL"].setTranslation(0, aileron_ind_left.getValue() * 100);
|
||||||
me["ailR"].setTranslation(0, aileron_ind_right.getValue() * (-100));
|
me["ailR"].setTranslation(0, aileron_ind_right.getValue() * (-100));
|
||||||
|
|
||||||
if (blue_psi < 1500 and green_psi < 1500) {
|
if ((blue_psi < 1500 or !elac1Node) and (green_psi < 1500 or !elac2Node)) {
|
||||||
me["ailL"].setColor(0.7333,0.3803,0);
|
me["ailL"].setColor(0.7333,0.3803,0);
|
||||||
me["ailR"].setColor(0.7333,0.3803,0);
|
|
||||||
} else {
|
} else {
|
||||||
me["ailL"].setColor(0.0509,0.7529,0.2941);
|
me["ailL"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((green_psi < 1500 or !elac1Node) and (blue_psi < 1500 or !elac2Node)) {
|
||||||
|
me["ailR"].setColor(0.7333,0.3803,0);
|
||||||
|
} else {
|
||||||
me["ailR"].setColor(0.0509,0.7529,0.2941);
|
me["ailR"].setColor(0.0509,0.7529,0.2941);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1993,13 +2011,13 @@ var canvas_lowerECAM_fctl = {
|
||||||
me["elevL"].setTranslation(0, elevator_ind_left.getValue() * 100);
|
me["elevL"].setTranslation(0, elevator_ind_left.getValue() * 100);
|
||||||
me["elevR"].setTranslation(0, elevator_ind_right.getValue() * 100);
|
me["elevR"].setTranslation(0, elevator_ind_right.getValue() * 100);
|
||||||
|
|
||||||
if (blue_psi < 1500 and green_psi < 1500) {
|
if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (green_psi < 1500 or (!elac2Node and !sec2Node))) {
|
||||||
me["elevL"].setColor(0.7333,0.3803,0);
|
me["elevL"].setColor(0.7333,0.3803,0);
|
||||||
} else {
|
} else {
|
||||||
me["elevL"].setColor(0.0509,0.7529,0.2941);
|
me["elevL"].setColor(0.0509,0.7529,0.2941);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blue_psi < 1500 and yellow_psi < 1500) {
|
if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (yellow_psi < 1500 or (!elac2Node and !sec2Node))) {
|
||||||
me["elevR"].setColor(0.7333,0.3803,0);
|
me["elevR"].setColor(0.7333,0.3803,0);
|
||||||
} else {
|
} else {
|
||||||
me["elevR"].setColor(0.0509,0.7529,0.2941);
|
me["elevR"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
@ -2237,34 +2255,34 @@ var canvas_lowerECAM_fctl = {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Flight Computers
|
# Flight Computers
|
||||||
if (fbw.FBW.Computers.elac1.getValue()) {
|
if (elac1Node) {
|
||||||
me["elac1"].setColor(0.0509,0.7529,0.2941);
|
me["elac1"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["path4249"].setColor(0.0509,0.7529,0.2941);
|
me["path4249"].setColor(0.0509,0.7529,0.2941);
|
||||||
} else if (!fbw.FBW.Computers.elac1.getValue() or fbw.FBW.Failures.elac1.getValue()) {
|
} else if (!elac1Node or fbw.FBW.Failures.elac1.getValue()) {
|
||||||
me["elac1"].setColor(0.7333,0.3803,0);
|
me["elac1"].setColor(0.7333,0.3803,0);
|
||||||
me["path4249"].setColor(0.7333,0.3803,0);
|
me["path4249"].setColor(0.7333,0.3803,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fbw.FBW.Computers.elac2.getValue()) {
|
if (elac2Node) {
|
||||||
me["elac2"].setColor(0.0509,0.7529,0.2941);
|
me["elac2"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["path4249-3"].setColor(0.0509,0.7529,0.2941);
|
me["path4249-3"].setColor(0.0509,0.7529,0.2941);
|
||||||
} else if (!fbw.FBW.Computers.elac2.getValue() or fbw.FBW.Failures.elac2.getValue()) {
|
} else if (!elac2Node or fbw.FBW.Failures.elac2.getValue()) {
|
||||||
me["elac2"].setColor(0.7333,0.3803,0);
|
me["elac2"].setColor(0.7333,0.3803,0);
|
||||||
me["path4249-3"].setColor(0.7333,0.3803,0);
|
me["path4249-3"].setColor(0.7333,0.3803,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fbw.FBW.Computers.sec1.getValue()) {
|
if (sec1Node) {
|
||||||
me["sec1"].setColor(0.0509,0.7529,0.2941);
|
me["sec1"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["path4249-3-6-7"].setColor(0.0509,0.7529,0.2941);
|
me["path4249-3-6-7"].setColor(0.0509,0.7529,0.2941);
|
||||||
} else if (!fbw.FBW.Computers.sec1.getValue() or fbw.FBW.Failures.sec1.getValue()) {
|
} else if (!sec1Node or fbw.FBW.Failures.sec1.getValue()) {
|
||||||
me["sec1"].setColor(0.7333,0.3803,0);
|
me["sec1"].setColor(0.7333,0.3803,0);
|
||||||
me["path4249-3-6-7"].setColor(0.7333,0.3803,0);
|
me["path4249-3-6-7"].setColor(0.7333,0.3803,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fbw.FBW.Computers.sec2.getValue()) {
|
if (sec2Node) {
|
||||||
me["sec2"].setColor(0.0509,0.7529,0.2941);
|
me["sec2"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["path4249-3-6-7-5"].setColor(0.0509,0.7529,0.2941);
|
me["path4249-3-6-7-5"].setColor(0.0509,0.7529,0.2941);
|
||||||
} else if (!fbw.FBW.Computers.sec2.getValue() or fbw.FBW.Failures.sec2.getValue()) {
|
} else if (!sec2Node or fbw.FBW.Failures.sec2.getValue()) {
|
||||||
me["sec2"].setColor(0.7333,0.3803,0);
|
me["sec2"].setColor(0.7333,0.3803,0);
|
||||||
me["path4249-3-6-7-5"].setColor(0.7333,0.3803,0);
|
me["path4249-3-6-7-5"].setColor(0.7333,0.3803,0);
|
||||||
}
|
}
|
||||||
|
@ -2279,10 +2297,23 @@ var canvas_lowerECAM_fctl = {
|
||||||
|
|
||||||
# Hydraulic Indicators
|
# Hydraulic Indicators
|
||||||
if (blue_psi >= 1500) {
|
if (blue_psi >= 1500) {
|
||||||
|
if (elac1Node) {
|
||||||
me["ailLblue"].setColor(0.0509,0.7529,0.2941);
|
me["ailLblue"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["ailRblue"].setColor(0.0509,0.7529,0.2941);
|
} else {
|
||||||
|
me["ailLblue"].setColor(0.7333,0.3803,0);
|
||||||
|
}
|
||||||
|
if (elac1Node or sec1Node) {
|
||||||
me["elevLblue"].setColor(0.0509,0.7529,0.2941);
|
me["elevLblue"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["elevRblue"].setColor(0.0509,0.7529,0.2941);
|
me["elevRblue"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
} else {
|
||||||
|
me["elevLblue"].setColor(0.7333,0.3803,0);
|
||||||
|
me["elevRblue"].setColor(0.7333,0.3803,0);
|
||||||
|
}
|
||||||
|
if (elac2Node) {
|
||||||
|
me["ailRblue"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
} else {
|
||||||
|
me["ailRblue"].setColor(0.7333,0.3803,0);
|
||||||
|
}
|
||||||
me["rudderblue"].setColor(0.0509,0.7529,0.2941);
|
me["rudderblue"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["spdbrkblue"].setColor(0.0509,0.7529,0.2941);
|
me["spdbrkblue"].setColor(0.0509,0.7529,0.2941);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2295,9 +2326,22 @@ var canvas_lowerECAM_fctl = {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (green_psi >= 1500) {
|
if (green_psi >= 1500) {
|
||||||
me["ailLgreen"].setColor(0.0509,0.7529,0.2941);
|
if (elac2Node or sec2Node) {
|
||||||
me["ailRgreen"].setColor(0.0509,0.7529,0.2941);
|
|
||||||
me["elevLgreen"].setColor(0.0509,0.7529,0.2941);
|
me["elevLgreen"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
} else {
|
||||||
|
me["elevLgreen"].setColor(0.7333,0.3803,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (elac2Node) {
|
||||||
|
me["ailLgreen"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
} else {
|
||||||
|
me["ailLgreen"].setColor(0.7333,0.3803,0);
|
||||||
|
}
|
||||||
|
if (elac1Node) {
|
||||||
|
me["ailRgreen"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
} else {
|
||||||
|
me["ailRgreen"].setColor(0.7333,0.3803,0);
|
||||||
|
}
|
||||||
me["ruddergreen"].setColor(0.0509,0.7529,0.2941);
|
me["ruddergreen"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["PTgreen"].setColor(0.0509,0.7529,0.2941);
|
me["PTgreen"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["spdbrkgreen"].setColor(0.0509,0.7529,0.2941);
|
me["spdbrkgreen"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
@ -2311,7 +2355,11 @@ var canvas_lowerECAM_fctl = {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (yellow_psi >= 1500) {
|
if (yellow_psi >= 1500) {
|
||||||
|
if (elac2Node or sec2Node) {
|
||||||
me["elevRyellow"].setColor(0.0509,0.7529,0.2941);
|
me["elevRyellow"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
} else {
|
||||||
|
me["elevRyellow"].setColor(0.7333,0.3803,0);
|
||||||
|
}
|
||||||
me["rudderyellow"].setColor(0.0509,0.7529,0.2941);
|
me["rudderyellow"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["PTyellow"].setColor(0.0509,0.7529,0.2941);
|
me["PTyellow"].setColor(0.0509,0.7529,0.2941);
|
||||||
me["spdbrkyellow"].setColor(0.0509,0.7529,0.2941);
|
me["spdbrkyellow"].setColor(0.0509,0.7529,0.2941);
|
||||||
|
|
|
@ -2995,16 +2995,16 @@ var canvas_MCDU_base = {
|
||||||
|
|
||||||
me.fontSizeLeft(normal, normal, small, small, small, small);
|
me.fontSizeLeft(normal, normal, small, small, small, small);
|
||||||
me.fontSizeCenter(small, small, normal, small, small, small);
|
me.fontSizeCenter(small, small, normal, small, small, small);
|
||||||
me.fontSizeRight(normal, normal, normal, small, small, small);
|
me.fontSizeRight(small, small, normal, small, small, small);
|
||||||
me["Simple_C3B"].setFontSize(small);
|
me["Simple_C3B"].setFontSize(small);
|
||||||
|
|
||||||
me.colorLeft("grn", "grn", "wht", "wht", "wht", "wht");
|
me.colorLeft("grn", "grn", "wht", "wht", "wht", "wht");
|
||||||
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
|
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||||
me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||||
me.colorCenter("grn", "grn", "blu", "grn", "blu", "wht");
|
me.colorCenter("wht", "wht", "blu", "grn", "blu", "wht");
|
||||||
me["Simple_C3B"].setColor(BLUE);
|
me["Simple_C3B"].setColor(BLUE);
|
||||||
me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
|
me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||||
me.colorRight("grn", "grn", "blu", "wht", "wht", "wht");
|
me.colorRight("wht", "wht", "blu", "wht", "wht", "wht");
|
||||||
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||||
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||||
|
|
||||||
|
@ -3012,12 +3012,12 @@ var canvas_MCDU_base = {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!engrdy.getBoolValue() or !fmgc.FMGCInternal.toFromSet) {
|
if (!engrdy.getBoolValue() or !fmgc.FMGCInternal.toFromSet) {
|
||||||
me["Simple_L1"].setText("----");
|
me["Simple_L1"].setText("NONE");
|
||||||
} else {
|
} else {
|
||||||
me["Simple_L1"].setText(fmgc.FMGCInternal.arrApt);
|
me["Simple_L1"].setText(fmgc.FMGCInternal.arrApt);
|
||||||
}
|
}
|
||||||
if (!engrdy.getBoolValue() or !fmgc.FMGCInternal.altAirportSet) {
|
if (!engrdy.getBoolValue() or !fmgc.FMGCInternal.altAirportSet) {
|
||||||
me["Simple_L2"].setText("----");
|
me["Simple_L2"].setText("NONE");
|
||||||
} else {
|
} else {
|
||||||
me["Simple_L2"].setText(fmgc.FMGCInternal.altAirport);
|
me["Simple_L2"].setText(fmgc.FMGCInternal.altAirport);
|
||||||
}
|
}
|
||||||
|
@ -3025,7 +3025,7 @@ var canvas_MCDU_base = {
|
||||||
me["Simple_L1S"].setText("AT");
|
me["Simple_L1S"].setText("AT");
|
||||||
me["Simple_L2S"].setText("X");
|
me["Simple_L2S"].setText("X");
|
||||||
me["Simple_L3S"].setText("RTE RSV/PCT");
|
me["Simple_L3S"].setText("RTE RSV/PCT");
|
||||||
me["Simple_L4S"].setText("ALTN/TIME");
|
me["Simple_L4S"].setText("ALTN /TIME");
|
||||||
me["Simple_L5S"].setText("FINAL/TIME");
|
me["Simple_L5S"].setText("FINAL/TIME");
|
||||||
me["Simple_L6S"].setText("MIN DEST FOB");
|
me["Simple_L6S"].setText("MIN DEST FOB");
|
||||||
|
|
||||||
|
@ -3033,8 +3033,8 @@ var canvas_MCDU_base = {
|
||||||
me["Simple_C1"].setText("----");
|
me["Simple_C1"].setText("----");
|
||||||
me["Simple_C2"].setText("----");
|
me["Simple_C2"].setText("----");
|
||||||
|
|
||||||
me["Simple_R1"].setText("-.-");
|
me["Simple_R1"].setText("---.-");
|
||||||
me["Simple_R2"].setText("-.-");
|
me["Simple_R2"].setText("---.-");
|
||||||
me["Simple_R1S"].setText("EFOB");
|
me["Simple_R1S"].setText("EFOB");
|
||||||
me["Simple_R2S"].setText("X");
|
me["Simple_R2S"].setText("X");
|
||||||
me["Simple_R4S"].setText("FOB ");
|
me["Simple_R4S"].setText("FOB ");
|
||||||
|
@ -3061,7 +3061,7 @@ var canvas_MCDU_base = {
|
||||||
me["Simple_L6"].setText("---.-");
|
me["Simple_L6"].setText("---.-");
|
||||||
|
|
||||||
me["Simple_R4"].setText("---.-/FF+FQ");
|
me["Simple_R4"].setText("---.-/FF+FQ");
|
||||||
me["Simple_R5"].setText("---.-/---.-");
|
me["Simple_R5"].setText("---.-/ --.-");
|
||||||
me["Simple_R6"].setText("---.-/----");
|
me["Simple_R6"].setText("---.-/----");
|
||||||
|
|
||||||
me.colorLeft("ack", "ack", "wht", "wht", "wht", "wht");
|
me.colorLeft("ack", "ack", "wht", "wht", "wht", "wht");
|
||||||
|
|
|
@ -14,7 +14,6 @@ var updateL = 0;
|
||||||
var updateR = 0;
|
var updateR = 0;
|
||||||
var et = 0;
|
var et = 0;
|
||||||
var altTens = 0;
|
var altTens = 0;
|
||||||
var altPolarity = "";
|
|
||||||
var track_diff = 0;
|
var track_diff = 0;
|
||||||
var AICenter = nil;
|
var AICenter = nil;
|
||||||
|
|
||||||
|
@ -69,9 +68,6 @@ var alt_inhg = props.globals.getNode("/instrumentation/altimeter/setting-inhg",
|
||||||
var target_altitude = props.globals.getNode("/autopilot/settings/target-altitude-ft", 1);
|
var target_altitude = props.globals.getNode("/autopilot/settings/target-altitude-ft", 1);
|
||||||
var altitude = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1);
|
var altitude = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1);
|
||||||
var altitude_pfd = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft-pfd", 1);
|
var altitude_pfd = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft-pfd", 1);
|
||||||
var alt_diff = props.globals.getNode("/instrumentation/pfd/alt-diff", 1);
|
|
||||||
var ground_diff = props.globals.getNode("/instrumentation/pfd/ground-diff", 1);
|
|
||||||
var landing_diff = props.globals.getNode("/instrumentation/pfd/landing-diff", 1);
|
|
||||||
var ap_alt = props.globals.getNode("/it-autoflight/internal/alt", 1);
|
var ap_alt = props.globals.getNode("/it-autoflight/internal/alt", 1);
|
||||||
var vs_needle = props.globals.getNode("/instrumentation/pfd/vs-needle", 1);
|
var vs_needle = props.globals.getNode("/instrumentation/pfd/vs-needle", 1);
|
||||||
var vs_digit = props.globals.getNode("/instrumentation/pfd/vs-digit-trans", 1);
|
var vs_digit = props.globals.getNode("/instrumentation/pfd/vs-digit-trans", 1);
|
||||||
|
@ -141,8 +137,6 @@ var air_data_switch = props.globals.getNode("/controls/navigation/switching/air-
|
||||||
|
|
||||||
# Create Nodes:
|
# Create Nodes:
|
||||||
var alt_diff = props.globals.initNode("/instrumentation/pfd/alt-diff", 0.0, "DOUBLE");
|
var alt_diff = props.globals.initNode("/instrumentation/pfd/alt-diff", 0.0, "DOUBLE");
|
||||||
var ground_diff = props.globals.initNode("/instrumentation/pfd/ground-diff", 0.0, "DOUBLE");
|
|
||||||
var landing_diff = props.globals.initNode("/instrumentation/pfd/landing-diff", 0.0, "DOUBLE");
|
|
||||||
var heading = props.globals.initNode("/instrumentation/pfd/heading-deg", 0.0, "DOUBLE");
|
var heading = props.globals.initNode("/instrumentation/pfd/heading-deg", 0.0, "DOUBLE");
|
||||||
var horizon_pitch = props.globals.initNode("/instrumentation/pfd/horizon-pitch", 0.0, "DOUBLE");
|
var horizon_pitch = props.globals.initNode("/instrumentation/pfd/horizon-pitch", 0.0, "DOUBLE");
|
||||||
var horizon_ground = props.globals.initNode("/instrumentation/pfd/horizon-ground", 0.0, "DOUBLE");
|
var horizon_ground = props.globals.initNode("/instrumentation/pfd/horizon-ground", 0.0, "DOUBLE");
|
||||||
|
@ -225,7 +219,7 @@ var canvas_PFD_base = {
|
||||||
"FMA_athr_box","FMA_Middle1","FMA_Middle2","ALPHA_MAX","ALPHA_PROT","ALPHA_SW","ALPHA_bars","VLS_min","ASI_max","ASI_scale","ASI_target","ASI_mach","ASI_mach_decimal","ASI_trend_up","ASI_trend_down","ASI_digit_UP","ASI_digit_DN","ASI_decimal_UP",
|
"FMA_athr_box","FMA_Middle1","FMA_Middle2","ALPHA_MAX","ALPHA_PROT","ALPHA_SW","ALPHA_bars","VLS_min","ASI_max","ASI_scale","ASI_target","ASI_mach","ASI_mach_decimal","ASI_trend_up","ASI_trend_down","ASI_digit_UP","ASI_digit_DN","ASI_decimal_UP",
|
||||||
"ASI_decimal_DN","ASI_index","ASI_error","ASI_group","ASI_frame","AI_center","AI_bank","AI_bank_lim","AI_bank_lim_X","AI_pitch_lim","AI_pitch_lim_X","AI_slipskid","AI_horizon","AI_horizon_ground","AI_horizon_sky","AI_stick","AI_stick_pos","AI_heading",
|
"ASI_decimal_DN","ASI_index","ASI_error","ASI_group","ASI_frame","AI_center","AI_bank","AI_bank_lim","AI_bank_lim_X","AI_pitch_lim","AI_pitch_lim_X","AI_slipskid","AI_horizon","AI_horizon_ground","AI_horizon_sky","AI_stick","AI_stick_pos","AI_heading",
|
||||||
"AI_agl_g","AI_agl","AI_error","AI_group","FD_roll","FD_pitch","ALT_box_flash","ALT_box","ALT_box_amber","ALT_scale","ALT_target","ALT_target_digit","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_digit_UP",
|
"AI_agl_g","AI_agl","AI_error","AI_group","FD_roll","FD_pitch","ALT_box_flash","ALT_box","ALT_box_amber","ALT_scale","ALT_target","ALT_target_digit","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_digit_UP",
|
||||||
"ALT_digit_DN","ALT_error","ALT_group","ALT_group2","ALT_frame","VS_pointer","VS_box","VS_digit","VS_error","VS_group","QNH","QNH_setting","QNH_std","QNH_box","LOC_pointer","LOC_scale","GS_scale","GS_pointer","CRS_pointer","HDG_target","HDG_scale",
|
"ALT_digit_DN","ALT_error","ALT_neg","ALT_group","ALT_group2","ALT_frame","VS_pointer","VS_box","VS_digit","VS_error","VS_group","QNH","QNH_setting","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","ilsError","ils_code","ils_freq","dme_dist","dme_dist_legend","ILS_HDG_R","ILS_HDG_L",
|
"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","ilsError","ils_code","ils_freq","dme_dist","dme_dist_legend","ILS_HDG_R","ILS_HDG_L",
|
||||||
"ILS_right","ILS_left","outerMarker","middleMarker","innerMarker","v1_group","v1_text","vr_speed","F_target","S_target","FS_targets","flap_max","clean_speed","ground","ground_ref","FPV","spdLimError"];
|
"ILS_right","ILS_left","outerMarker","middleMarker","innerMarker","v1_group","v1_text","vr_speed","F_target","S_target","FS_targets","flap_max","clean_speed","ground","ground_ref","FPV","spdLimError"];
|
||||||
},
|
},
|
||||||
|
@ -298,8 +292,10 @@ var canvas_PFD_base = {
|
||||||
PFD_1_test.page.show();
|
PFD_1_test.page.show();
|
||||||
} else {
|
} else {
|
||||||
PFD_1.updateFast();
|
PFD_1.updateFast();
|
||||||
PFD_1.update();
|
if (!updateL) { # Update slow here once so that no flicker if timers don't perfectly align
|
||||||
updateL = 1;
|
updateL = 1;
|
||||||
|
PFD_1.update();
|
||||||
|
}
|
||||||
PFD_1_test.page.hide();
|
PFD_1_test.page.hide();
|
||||||
PFD_1.page.show();
|
PFD_1.page.show();
|
||||||
}
|
}
|
||||||
|
@ -321,8 +317,10 @@ var canvas_PFD_base = {
|
||||||
PFD_2_test.page.show();
|
PFD_2_test.page.show();
|
||||||
} else {
|
} else {
|
||||||
PFD_2.updateFast();
|
PFD_2.updateFast();
|
||||||
PFD_2.update();
|
if (!updateR) { # Update slow here once so that no flicker if timers don't perfectly align
|
||||||
updateR = 1;
|
updateR = 1;
|
||||||
|
PFD_2.update();
|
||||||
|
}
|
||||||
PFD_2_test.page.hide();
|
PFD_2_test.page.hide();
|
||||||
PFD_2.page.show();
|
PFD_2.page.show();
|
||||||
}
|
}
|
||||||
|
@ -514,7 +512,8 @@ var canvas_PFD_base = {
|
||||||
me["FMA_rollarm_box"].hide();
|
me["FMA_rollarm_box"].hide();
|
||||||
me["FMA_Middle1"].hide();
|
me["FMA_Middle1"].hide();
|
||||||
me["FMA_Middle2"].hide();
|
me["FMA_Middle2"].hide();
|
||||||
if (fbw_curlaw == 2) {
|
|
||||||
|
if (ecam.directLaw.active) {
|
||||||
me["FMA_ctr_msg"].setText("USE MAN PITCH TRIM");
|
me["FMA_ctr_msg"].setText("USE MAN PITCH TRIM");
|
||||||
me["FMA_ctr_msg"].setColor(0.7333,0.3803,0);
|
me["FMA_ctr_msg"].setColor(0.7333,0.3803,0);
|
||||||
me["FMA_ctr_msg"].show();
|
me["FMA_ctr_msg"].show();
|
||||||
|
@ -525,6 +524,7 @@ var canvas_PFD_base = {
|
||||||
} else {
|
} else {
|
||||||
me["FMA_ctr_msg"].hide();
|
me["FMA_ctr_msg"].hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
me["FMA_combined"].show();
|
me["FMA_combined"].show();
|
||||||
if (pitch_box.getValue() == 1 and pitch_mode_act != " ") {
|
if (pitch_box.getValue() == 1 and pitch_mode_act != " ") {
|
||||||
me["FMA_combined_box"].show();
|
me["FMA_combined_box"].show();
|
||||||
|
@ -534,7 +534,7 @@ var canvas_PFD_base = {
|
||||||
} else {
|
} else {
|
||||||
me["FMA_combined"].hide();
|
me["FMA_combined"].hide();
|
||||||
me["FMA_combined_box"].hide();
|
me["FMA_combined_box"].hide();
|
||||||
if (fbw_curlaw == 2) {
|
if (ecam.directLaw.active) {
|
||||||
me["FMA_ctr_msg"].setText("USE MAN PITCH TRIM");
|
me["FMA_ctr_msg"].setText("USE MAN PITCH TRIM");
|
||||||
me["FMA_ctr_msg"].setColor(0.7333,0.3803,0);
|
me["FMA_ctr_msg"].setColor(0.7333,0.3803,0);
|
||||||
me["FMA_Middle1"].hide();
|
me["FMA_Middle1"].hide();
|
||||||
|
@ -1270,7 +1270,6 @@ var canvas_PFD_1 = {
|
||||||
}
|
}
|
||||||
|
|
||||||
me["ASI_scale"].setTranslation(0, me.ASI * 6.6);
|
me["ASI_scale"].setTranslation(0, me.ASI * 6.6);
|
||||||
|
|
||||||
if (fbw.FBW.Computers.fac1.getValue() or fbw.FBW.Computers.fac2.getValue()) {
|
if (fbw.FBW.Computers.fac1.getValue() or fbw.FBW.Computers.fac2.getValue()) {
|
||||||
me["ASI_max"].setTranslation(0, me.ASImax * -6.6);
|
me["ASI_max"].setTranslation(0, me.ASImax * -6.6);
|
||||||
me["ASI_max"].show();
|
me["ASI_max"].show();
|
||||||
|
@ -1687,6 +1686,7 @@ var canvas_PFD_1 = {
|
||||||
me["ALT_error"].hide();
|
me["ALT_error"].hide();
|
||||||
me["ALT_frame"].setColor(1,1,1);
|
me["ALT_frame"].setColor(1,1,1);
|
||||||
me["ALT_group"].show();
|
me["ALT_group"].show();
|
||||||
|
me["ALT_tens"].show();
|
||||||
me["ALT_box"].show();
|
me["ALT_box"].show();
|
||||||
me["ALT_group2"].show();
|
me["ALT_group2"].show();
|
||||||
me["ALT_scale"].show();
|
me["ALT_scale"].show();
|
||||||
|
@ -1708,13 +1708,13 @@ var canvas_PFD_1 = {
|
||||||
me["ALT_two"].setText(sprintf("%03d", abs(me.middleAltText-5)));
|
me["ALT_two"].setText(sprintf("%03d", abs(me.middleAltText-5)));
|
||||||
me["ALT_one"].setText(sprintf("%03d", abs(me.middleAltText-10)));
|
me["ALT_one"].setText(sprintf("%03d", abs(me.middleAltText-10)));
|
||||||
|
|
||||||
if (altitude.getValue() < 0) {
|
if (me.altitude < 0) {
|
||||||
altPolarity = "-";
|
me["ALT_neg"].show();
|
||||||
} else {
|
} else {
|
||||||
altPolarity = "";
|
me["ALT_neg"].hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
me["ALT_digits"].setText(sprintf("%s%d", altPolarity, dmc.DMController.DMCs[0].outputs[3].getValue()));
|
me["ALT_digits"].setText(sprintf("%d", dmc.DMController.DMCs[0].outputs[3].getValue()));
|
||||||
altTens = num(right(sprintf("%02d", me.altitude), 2));
|
altTens = num(right(sprintf("%02d", me.altitude), 2));
|
||||||
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
||||||
|
|
||||||
|
@ -1754,7 +1754,7 @@ var canvas_PFD_1 = {
|
||||||
me["ALT_target"].hide();
|
me["ALT_target"].hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
ground_diff_cur = ground_diff.getValue();
|
ground_diff_cur = -gear_agl.getValue();
|
||||||
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
||||||
me["ground_ref"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
me["ground_ref"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
||||||
me["ground_ref"].show();
|
me["ground_ref"].show();
|
||||||
|
@ -1762,10 +1762,9 @@ var canvas_PFD_1 = {
|
||||||
me["ground_ref"].hide();
|
me["ground_ref"].hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
landing_diff_cur = landing_diff.getValue();
|
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
||||||
if (landing_diff_cur >= -565 and landing_diff_cur <= 565) {
|
|
||||||
if ((fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
if ((fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
||||||
me["ground"].setTranslation(0, (landing_diff_cur / 100) * -48.66856);
|
me["ground"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
||||||
me["ground"].show();
|
me["ground"].show();
|
||||||
} else {
|
} else {
|
||||||
me["ground"].hide();
|
me["ground"].hide();
|
||||||
|
@ -1822,6 +1821,8 @@ var canvas_PFD_1 = {
|
||||||
me["ALT_error"].show();
|
me["ALT_error"].show();
|
||||||
me["ALT_frame"].setColor(1,0,0);
|
me["ALT_frame"].setColor(1,0,0);
|
||||||
me["ALT_group"].hide();
|
me["ALT_group"].hide();
|
||||||
|
me["ALT_tens"].hide();
|
||||||
|
me["ALT_neg"].hide();
|
||||||
me["ALT_group2"].hide();
|
me["ALT_group2"].hide();
|
||||||
me["ALT_scale"].hide();
|
me["ALT_scale"].hide();
|
||||||
me["ALT_box_flash"].hide();
|
me["ALT_box_flash"].hide();
|
||||||
|
@ -2455,15 +2456,16 @@ var canvas_PFD_2 = {
|
||||||
me["machError"].show();
|
me["machError"].show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dmc.DMController.DMCs[0].outputs[1] != nil) {
|
if (dmc.DMController.DMCs[1].outputs[1] != nil) {
|
||||||
me["ALT_error"].hide();
|
me["ALT_error"].hide();
|
||||||
me["ALT_frame"].setColor(1,1,1);
|
me["ALT_frame"].setColor(1,1,1);
|
||||||
me["ALT_group"].show();
|
me["ALT_group"].show();
|
||||||
|
me["ALT_tens"].show();
|
||||||
me["ALT_box"].show();
|
me["ALT_box"].show();
|
||||||
me["ALT_group2"].show();
|
me["ALT_group2"].show();
|
||||||
me["ALT_scale"].show();
|
me["ALT_scale"].show();
|
||||||
|
|
||||||
me.altitude = dmc.DMController.DMCs[0].outputs[1].getValue();
|
me.altitude = dmc.DMController.DMCs[1].outputs[1].getValue();
|
||||||
me.altOffset = me.altitude / 500 - int(me.altitude / 500);
|
me.altOffset = me.altitude / 500 - int(me.altitude / 500);
|
||||||
me.middleAltText = roundaboutAlt(me.altitude / 100);
|
me.middleAltText = roundaboutAlt(me.altitude / 100);
|
||||||
me.middleAltOffset = nil;
|
me.middleAltOffset = nil;
|
||||||
|
@ -2480,13 +2482,13 @@ var canvas_PFD_2 = {
|
||||||
me["ALT_two"].setText(sprintf("%03d", abs(me.middleAltText-5)));
|
me["ALT_two"].setText(sprintf("%03d", abs(me.middleAltText-5)));
|
||||||
me["ALT_one"].setText(sprintf("%03d", abs(me.middleAltText-10)));
|
me["ALT_one"].setText(sprintf("%03d", abs(me.middleAltText-10)));
|
||||||
|
|
||||||
if (altitude.getValue() < 0) {
|
if (me.altitude < 0) {
|
||||||
altPolarity = "-";
|
me["ALT_neg"].show();
|
||||||
} else {
|
} else {
|
||||||
altPolarity = "";
|
me["ALT_neg"].hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
me["ALT_digits"].setText(sprintf("%s%d", altPolarity, dmc.DMController.DMCs[0].outputs[3].getValue()));
|
me["ALT_digits"].setText(sprintf("%d", dmc.DMController.DMCs[1].outputs[3].getValue()));
|
||||||
altTens = num(right(sprintf("%02d", me.altitude), 2));
|
altTens = num(right(sprintf("%02d", me.altitude), 2));
|
||||||
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
||||||
|
|
||||||
|
@ -2526,7 +2528,7 @@ var canvas_PFD_2 = {
|
||||||
me["ALT_target"].hide();
|
me["ALT_target"].hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
ground_diff_cur = ground_diff.getValue();
|
ground_diff_cur = -gear_agl.getValue();
|
||||||
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
||||||
me["ground_ref"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
me["ground_ref"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
||||||
me["ground_ref"].show();
|
me["ground_ref"].show();
|
||||||
|
@ -2534,10 +2536,9 @@ var canvas_PFD_2 = {
|
||||||
me["ground_ref"].hide();
|
me["ground_ref"].hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
landing_diff_cur = landing_diff.getValue();
|
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
||||||
if (landing_diff_cur >= -565 and landing_diff_cur <= 565) {
|
|
||||||
if ((fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
if ((fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
||||||
me["ground"].setTranslation(0, (landing_diff_cur / 100) * -48.66856);
|
me["ground"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
||||||
me["ground"].show();
|
me["ground"].show();
|
||||||
} else {
|
} else {
|
||||||
me["ground"].hide();
|
me["ground"].hide();
|
||||||
|
@ -2594,6 +2595,8 @@ var canvas_PFD_2 = {
|
||||||
me["ALT_error"].show();
|
me["ALT_error"].show();
|
||||||
me["ALT_frame"].setColor(1,0,0);
|
me["ALT_frame"].setColor(1,0,0);
|
||||||
me["ALT_group"].hide();
|
me["ALT_group"].hide();
|
||||||
|
me["ALT_tens"].hide();
|
||||||
|
me["ALT_neg"].hide();
|
||||||
me["ALT_group2"].hide();
|
me["ALT_group2"].hide();
|
||||||
me["ALT_scale"].hide();
|
me["ALT_scale"].hide();
|
||||||
me["ALT_box_flash"].hide();
|
me["ALT_box_flash"].hide();
|
||||||
|
|
|
@ -41,9 +41,9 @@
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:window-y="-8"
|
inkscape:window-y="-8"
|
||||||
inkscape:window-x="-8"
|
inkscape:window-x="-8"
|
||||||
inkscape:cy="259.23779"
|
inkscape:cy="683.12157"
|
||||||
inkscape:cx="201.84998"
|
inkscape:cx="1026.1197"
|
||||||
inkscape:zoom="2.56"
|
inkscape:zoom="1.8101934"
|
||||||
showgrid="true"
|
showgrid="true"
|
||||||
id="namedview371"
|
id="namedview371"
|
||||||
inkscape:window-height="705"
|
inkscape:window-height="705"
|
||||||
|
@ -2380,78 +2380,20 @@
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
id="path1283"
|
id="path1283"
|
||||||
d="m 856.4002,481.90842 2.2e-4,-15.92813 h 52.07464 v 93.34657 h -52.07457 v -15.26583"
|
d="m 856.4002,481.90842 2.2e-4,-15.92813 h 52.07464 v 93.34657 h -52.07457 v -15.26583"
|
||||||
style="fill:#000000;fill-opacity:1;stroke:#ffff00;stroke-width:3.19995;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
style="fill:#000000;fill-opacity:1;stroke:#ffff00;stroke-width:3.19994998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||||
<path
|
<path
|
||||||
sodipodi:nodetypes="cc"
|
sodipodi:nodetypes="cc"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
id="path1285"
|
id="path1285"
|
||||||
d="m 770.31078,481.90873 86.08971,-3.1e-4"
|
d="m 770.31078,481.90873 86.08971,-3.1e-4"
|
||||||
style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:3.19995;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:3.19994998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:3.19995;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:3.19994998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||||
d="m 770.31078,544.06163 86.08971,-6e-4"
|
d="m 770.31078,544.06163 86.08971,-6e-4"
|
||||||
id="path1287"
|
id="path1287"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="cc" />
|
sodipodi:nodetypes="cc" />
|
||||||
</g>
|
</g>
|
||||||
<text
|
|
||||||
id="ALT_tens"
|
|
||||||
y="317.73038"
|
|
||||||
x="898.703"
|
|
||||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
|
||||||
xml:space="preserve"
|
|
||||||
inkscape:label="#text913"
|
|
||||||
transform="scale(0.96366556,1.0377044)"><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="317.73038"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan919">40</tspan><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="344.55804"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan4300">20</tspan><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="371.38571"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan931">00</tspan><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="398.21338"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan927">80</tspan><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="425.04105"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan925">60</tspan><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="451.86871"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan923">40</tspan><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="478.69638"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan921">20</tspan><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="505.52405"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan917">00</tspan><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="532.35168"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan915">80</tspan><tspan
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
|
||||||
y="559.17938"
|
|
||||||
x="898.703"
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan4302">60</tspan></text>
|
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||||
|
@ -2464,8 +2406,16 @@
|
||||||
id="tspan973"
|
id="tspan973"
|
||||||
x="890.99316"
|
x="890.99316"
|
||||||
y="506.23941"
|
y="506.23941"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.8348px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">00</tspan></text>
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.83480072px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">00</tspan></text>
|
||||||
</g>
|
</g>
|
||||||
|
<rect
|
||||||
|
style="display:inline;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:3.22735;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||||
|
id="ground_ref"
|
||||||
|
width="16.287683"
|
||||||
|
height="2088.8245"
|
||||||
|
x="860.0014"
|
||||||
|
y="512.75592"
|
||||||
|
inkscape:label="ground_ref" />
|
||||||
<path
|
<path
|
||||||
style="fill:none;fill-opacity:1;stroke:#515256;stroke-width:3.19995403;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
style="fill:none;fill-opacity:1;stroke:#515256;stroke-width:3.19995403;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||||
d="m 216.77826,137.60788 0,-135.9564208"
|
d="m 216.77826,137.60788 0,-135.9564208"
|
||||||
|
@ -6000,6 +5950,64 @@
|
||||||
x="680.1095"
|
x="680.1095"
|
||||||
id="tspan773-9-9"
|
id="tspan773-9-9"
|
||||||
sodipodi:role="line">IM</tspan></text>
|
sodipodi:role="line">IM</tspan></text>
|
||||||
|
<text
|
||||||
|
id="ALT_tens"
|
||||||
|
y="317.73038"
|
||||||
|
x="898.703"
|
||||||
|
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||||
|
xml:space="preserve"
|
||||||
|
inkscape:label="#text913"
|
||||||
|
transform="scale(0.96366556,1.0377044)"><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="317.73038"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan919">40</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="344.55804"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4300">20</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="371.38571"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan931">00</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="398.21338"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan927">80</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="425.04105"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan925">60</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="451.86871"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan923">40</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="478.69638"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan921">20</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="505.52405"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan917">00</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="532.35175"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan915">80</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="559.17938"
|
||||||
|
x="898.703"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan4302">60</tspan></text>
|
||||||
<g
|
<g
|
||||||
inkscape:label="#g5173"
|
inkscape:label="#g5173"
|
||||||
id="ALT_box_flash">
|
id="ALT_box_flash">
|
||||||
|
@ -6022,14 +6030,6 @@
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
sodipodi:nodetypes="cc" />
|
sodipodi:nodetypes="cc" />
|
||||||
</g>
|
</g>
|
||||||
<rect
|
|
||||||
style="display:inline;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:3.22735;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
|
||||||
id="ground_ref"
|
|
||||||
width="16.287683"
|
|
||||||
height="2088.8245"
|
|
||||||
x="857.0014"
|
|
||||||
y="512.75592"
|
|
||||||
inkscape:label="ground_ref" />
|
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.75"
|
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||||
|
@ -6233,4 +6233,27 @@
|
||||||
x="462.76437"
|
x="462.76437"
|
||||||
y="500.03757" />
|
y="500.03757" />
|
||||||
</g>
|
</g>
|
||||||
|
<text
|
||||||
|
inkscape:label="#text975"
|
||||||
|
transform="scale(0.95383278,1.0484018)"
|
||||||
|
id="ALT_neg"
|
||||||
|
y="453.28622"
|
||||||
|
x="823.7511"
|
||||||
|
style="font-style:normal;font-weight:normal;line-height:1.10000002;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||||
|
xml:space="preserve"><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.10000002;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="453.28622"
|
||||||
|
x="823.7511"
|
||||||
|
id="tspan1791"
|
||||||
|
sodipodi:role="line">N</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.10000002;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="506.08621"
|
||||||
|
x="823.7511"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1795">E</tspan><tspan
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.10000002;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||||
|
y="558.88623"
|
||||||
|
x="823.7511"
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan1797">G</tspan></text>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 339 KiB After Width: | Height: | Size: 340 KiB |
|
@ -74,6 +74,8 @@ var warningNodes = {
|
||||||
blueYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/blue-yellow-fuel-consumpt"),
|
blueYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/blue-yellow-fuel-consumpt"),
|
||||||
greenYellow: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-failure"),
|
greenYellow: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-failure"),
|
||||||
greenYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-fuel-consumpt"),
|
greenYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-fuel-consumpt"),
|
||||||
|
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault"),
|
||||||
|
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault"),
|
||||||
},
|
},
|
||||||
Timers: {
|
Timers: {
|
||||||
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),
|
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),
|
||||||
|
@ -94,6 +96,8 @@ var warningNodes = {
|
||||||
eng1AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-1-closed-output"),
|
eng1AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-1-closed-output"),
|
||||||
eng2AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-2-closed-output"),
|
eng2AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-2-closed-output"),
|
||||||
LRElevFault: props.globals.initNode("/ECAM/warnings/fctl/lrElevFault-output"),
|
LRElevFault: props.globals.initNode("/ECAM/warnings/fctl/lrElevFault-output"),
|
||||||
|
altnLaw: props.globals.initNode("/ECAM/warnings/fctl/altn-law-output"),
|
||||||
|
directLaw: props.globals.initNode("/ECAM/warnings/fctl/direct-law-output"),
|
||||||
waiLhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-left"),
|
waiLhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-left"),
|
||||||
waiRhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-right"),
|
waiRhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-right"),
|
||||||
pack1Fault: props.globals.initNode("/ECAM/warnings/timer/pack-1-fault-2"),
|
pack1Fault: props.globals.initNode("/ECAM/warnings/timer/pack-1-fault-2"),
|
||||||
|
@ -104,6 +108,8 @@ var warningNodes = {
|
||||||
yawDamper1Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-1-fault"),
|
yawDamper1Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-1-fault"),
|
||||||
yawDamper2Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-2-fault"),
|
yawDamper2Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-2-fault"),
|
||||||
navTerrFault: props.globals.initNode("/ECAM/warnings/timer/nav-gpws-terr-fault"),
|
navTerrFault: props.globals.initNode("/ECAM/warnings/timer/nav-gpws-terr-fault"),
|
||||||
|
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault-output"),
|
||||||
|
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault-output"),
|
||||||
},
|
},
|
||||||
Flipflops: {
|
Flipflops: {
|
||||||
apuGenFault: props.globals.initNode("/ECAM/warnings/flipflop/apu-gen-fault"),
|
apuGenFault: props.globals.initNode("/ECAM/warnings/flipflop/apu-gen-fault"),
|
||||||
|
|
|
@ -653,8 +653,14 @@ var messages_priority_3 = func {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gearNotDown.clearFlag == 0 and (warningNodes.Logic.gearNotDown1.getBoolValue() or warningNodes.Logic.gearNotDown2.getBoolValue()) and phaseVar3 != 3 and phaseVar3 != 4 and phaseVar3 != 5) {
|
if (gearNotDown.clearFlag == 0 and (warningNodes.Logic.gearNotDown1.getBoolValue() or warningNodes.Logic.gearNotDown2.getBoolValue()) and phaseVar3 != 3 and phaseVar3 != 4 and phaseVar3 != 5) {
|
||||||
|
if (!gearNotDown.active) {
|
||||||
|
gearWarnLight.setValue(1);
|
||||||
|
}
|
||||||
gearNotDown.active = 1;
|
gearNotDown.active = 1;
|
||||||
} else {
|
} else {
|
||||||
|
if (gearNotDown.active) {
|
||||||
|
gearWarnLight.setValue(0);
|
||||||
|
}
|
||||||
ECAM_controller.warningReset(gearNotDown);
|
ECAM_controller.warningReset(gearNotDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -869,23 +875,6 @@ var messages_priority_3 = func {
|
||||||
ECAM_controller.warningReset(emerconfigVent);
|
ECAM_controller.warningReset(emerconfigVent);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (emerconfigAltn.clearFlag == 0) {
|
|
||||||
emerconfigAltn.active = 1;
|
|
||||||
} else {
|
|
||||||
ECAM_controller.warningReset(emerconfigAltn);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (emerconfigProt.clearFlag == 0) {
|
|
||||||
emerconfigProt.active = 1;
|
|
||||||
} else {
|
|
||||||
ECAM_controller.warningReset(emerconfigProt);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (emerconfigMaxSpeed.clearFlag == 0) {
|
|
||||||
emerconfigMaxSpeed.active = 1;
|
|
||||||
} else {
|
|
||||||
ECAM_controller.warningReset(emerconfigMaxSpeed);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
ECAM_controller.warningReset(emerconfig);
|
ECAM_controller.warningReset(emerconfig);
|
||||||
ECAM_controller.warningReset(emerconfigMinRat);
|
ECAM_controller.warningReset(emerconfigMinRat);
|
||||||
|
@ -903,9 +892,6 @@ var messages_priority_3 = func {
|
||||||
ECAM_controller.warningReset(emerconfigBusTie2);
|
ECAM_controller.warningReset(emerconfigBusTie2);
|
||||||
ECAM_controller.warningReset(emerconfigAPU);
|
ECAM_controller.warningReset(emerconfigAPU);
|
||||||
ECAM_controller.warningReset(emerconfigVent);
|
ECAM_controller.warningReset(emerconfigVent);
|
||||||
ECAM_controller.warningReset(emerconfigAltn);
|
|
||||||
ECAM_controller.warningReset(emerconfigProt);
|
|
||||||
ECAM_controller.warningReset(emerconfigMaxSpeed);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hydBYloPr.clearFlag == 0 and phaseVar3 != 4 and phaseVar3 != 5 and warningNodes.Logic.blueYellow.getValue()) {
|
if (hydBYloPr.clearFlag == 0 and phaseVar3 != 4 and phaseVar3 != 5 and warningNodes.Logic.blueYellow.getValue()) {
|
||||||
|
@ -1284,6 +1270,109 @@ var messages_priority_2 = func {
|
||||||
ECAM_controller.warningReset(apuGenfaultGen3);
|
ECAM_controller.warningReset(apuGenfaultGen3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lElevFault.clearFlag == 0 and warningNodes.Timers.leftElevFail.getValue() and phaseVar2 != 4 and phaseVar2 != 5) {
|
||||||
|
lElevFault.active = 1;
|
||||||
|
if (lElevFaultCare.clearFlag == 0) {
|
||||||
|
lElevFaultCare.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(lElevFaultCare);
|
||||||
|
}
|
||||||
|
if (lElevFaultPitch.clearFlag == 0) {
|
||||||
|
lElevFaultPitch.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(lElevFaultPitch);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(lElevFault);
|
||||||
|
ECAM_controller.warningReset(lElevFaultCare);
|
||||||
|
ECAM_controller.warningReset(lElevFaultPitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rElevFault.clearFlag == 0 and warningNodes.Timers.rightElevFail.getValue() and phaseVar2 != 4 and phaseVar2 != 5) {
|
||||||
|
rElevFault.active = 1;
|
||||||
|
if (rElevFaultCare.clearFlag == 0) {
|
||||||
|
rElevFaultCare.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(rElevFaultCare);
|
||||||
|
}
|
||||||
|
if (rElevFaultPitch.clearFlag == 0) {
|
||||||
|
rElevFaultPitch.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(rElevFaultPitch);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(rElevFault);
|
||||||
|
ECAM_controller.warningReset(rElevFaultCare);
|
||||||
|
ECAM_controller.warningReset(rElevFaultPitch);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (directLaw.clearFlag == 0 and warningNodes.Timers.directLaw.getValue() and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
|
||||||
|
directLaw.active = 1;
|
||||||
|
directLawProt.active = 1;
|
||||||
|
if (directLawMaxSpeed.clearFlag == 0 and !fbw.tripleADRFail and pts.Gear.position[1].getValue() == 1) {
|
||||||
|
directLawMaxSpeed.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(directLawMaxSpeed);
|
||||||
|
}
|
||||||
|
if (directLawTrim.clearFlag == 0 and (systems.HYD.Psi.green.getValue() >= 1500 or systems.HYD.Psi.yellow.getValue() >= 1500) and !fbw.FBW.Failures.ths.getValue()) {
|
||||||
|
directLawTrim.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(directLawTrim);
|
||||||
|
}
|
||||||
|
if (directLawCare.clearFlag == 0 and (fbw.tripleADRFail or pts.Gear.position[1].getValue() == 1)) {
|
||||||
|
directLawCare.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(directLawCare);
|
||||||
|
}
|
||||||
|
if (directLawSpdBrk.clearFlag == 0 and !fbw.tripleADRFail and pts.Gear.position[1].getValue() == 1) {
|
||||||
|
directLawSpdBrk.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(directLawSpdBrk);
|
||||||
|
}
|
||||||
|
if (directLawSpdBrk2.clearFlag == 0 and fbw.tripleADRFail) {
|
||||||
|
directLawSpdBrk2.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(directLawSpdBrk2);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(directLaw);
|
||||||
|
ECAM_controller.warningReset(directLawProt);
|
||||||
|
ECAM_controller.warningReset(directLawMaxSpeed);
|
||||||
|
ECAM_controller.warningReset(directLawTrim);
|
||||||
|
ECAM_controller.warningReset(directLawCare);
|
||||||
|
ECAM_controller.warningReset(directLawSpdBrk);
|
||||||
|
ECAM_controller.warningReset(directLawSpdBrk2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (altnLaw.clearFlag == 0 and warningNodes.Timers.altnLaw.getValue() and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
|
||||||
|
altnLaw.active = 1;
|
||||||
|
altnLawProt.active = 1;
|
||||||
|
if (altnLawMaxSpeed.clearFlag == 0 and altnLawMaxSpeed2.clearFlag == 0 and !fbw.tripleADRFail) {
|
||||||
|
if (!(getprop("/ECAM/warnings/hyd/green-abnorm-lo-pr") and (getprop("/ECAM/warnings/hyd/blue-abnorm-lo-pr") or getprop("/ECAM/warnings/hyd/yellow-abnorm-lo-pr")))) {
|
||||||
|
altnLawMaxSpeed.active = 1;
|
||||||
|
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
||||||
|
} else {
|
||||||
|
altnLawMaxSpeed2.active = 1;
|
||||||
|
ECAM_controller.warningReset(altnLawMaxSpeed);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(altnLawMaxSpeed);
|
||||||
|
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (altnLawMaxSpdBrk.clearFlag == 0 and (fbw.tripleADRFail or warningNodes.Logic.leftElevFail.getValue() or warningNodes.Logic.rightElevFail.getValue())) {
|
||||||
|
altnLawMaxSpdBrk.active = 1;
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(altnLawMaxSpdBrk);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ECAM_controller.warningReset(altnLaw);
|
||||||
|
ECAM_controller.warningReset(altnLawProt);
|
||||||
|
ECAM_controller.warningReset(altnLawMaxSpeed);
|
||||||
|
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
||||||
|
ECAM_controller.warningReset(altnLawMaxSpdBrk);
|
||||||
|
}
|
||||||
|
|
||||||
if ((athr_offw.clearFlag == 0) and athrWarn.getValue() == 2 and phaseVar2 != 4 and phaseVar2 != 8 and phaseVar2 != 10) {
|
if ((athr_offw.clearFlag == 0) and athrWarn.getValue() == 2 and phaseVar2 != 4 and phaseVar2 != 8 and phaseVar2 != 10) {
|
||||||
athr_offw.active = 1;
|
athr_offw.active = 1;
|
||||||
athr_offw_1.active = 1;
|
athr_offw_1.active = 1;
|
||||||
|
|
|
@ -19,10 +19,11 @@ var engStrtTimeSw = 0;
|
||||||
var engStrtTime = 0;
|
var engStrtTime = 0;
|
||||||
var page = 0;
|
var page = 0;
|
||||||
|
|
||||||
|
var gearWarnLight = props.globals.initNode("/ECAM/warnings/landing-gear-warning-light", 0, "BOOL");
|
||||||
|
|
||||||
var ECAM = {
|
var ECAM = {
|
||||||
_cachePage: "",
|
_cachePage: "",
|
||||||
init: func() {
|
init: func() {
|
||||||
setprop("/systems/gear/landing-gear-warning-light", 0);
|
|
||||||
page = props.globals.initNode("/ECAM/Lower/page", "door", "STRING");
|
page = props.globals.initNode("/ECAM/Lower/page", "door", "STRING");
|
||||||
|
|
||||||
apOffTime = props.globals.initNode("/ECAM/warnings/ap-off-time", 0, "INT");
|
apOffTime = props.globals.initNode("/ECAM/warnings/ap-off-time", 0, "INT");
|
||||||
|
|
|
@ -155,9 +155,6 @@ var warnings = std.Vector.new([
|
||||||
var emerconfigBusTie2 = warning.new(msg: " -BUS TIE...........AUTO", colour: "c"),
|
var emerconfigBusTie2 = warning.new(msg: " -BUS TIE...........AUTO", colour: "c"),
|
||||||
var emerconfigAPU = warning.new(msg: " -APU (IF AVAIL)...START", colour: "c"),
|
var emerconfigAPU = warning.new(msg: " -APU (IF AVAIL)...START", colour: "c"),
|
||||||
var emerconfigVent = warning.new(msg: " -BLOWER + EXTRACT..OVRD", colour: "c"),
|
var emerconfigVent = warning.new(msg: " -BLOWER + EXTRACT..OVRD", colour: "c"),
|
||||||
var emerconfigAltn = warning.new(msg: "F/CTL ALTN LAW", colour: "a"),
|
|
||||||
var emerconfigProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
|
||||||
var emerconfigMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
|
|
||||||
|
|
||||||
# B + Y LO PR
|
# B + Y LO PR
|
||||||
var hydBYloPr = warning.new(msg: "HYD B+Y SYS LO PR", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
var hydBYloPr = warning.new(msg: "HYD B+Y SYS LO PR", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||||
|
@ -265,6 +262,32 @@ var warnings = std.Vector.new([
|
||||||
var apuGenfaultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
var apuGenfaultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||||
var apuGenfaultGen3 = warning.new(msg: "-APU GEN............OFF", colour: "c"),
|
var apuGenfaultGen3 = warning.new(msg: "-APU GEN............OFF", colour: "c"),
|
||||||
|
|
||||||
|
# L ELEV FAULT
|
||||||
|
var lElevFault = warning.new(msg: "F/CTL L ELEV FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||||
|
var lElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||||
|
var lElevFaultPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
|
||||||
|
|
||||||
|
# R ELEV FAULT
|
||||||
|
var rElevFault = warning.new(msg: "F/CTL R ELEV FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||||
|
var rElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||||
|
var rElevFaultPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
|
||||||
|
|
||||||
|
# DIRECT LAW
|
||||||
|
var directLaw = warning.new(msg: "F/CTL DIRECT LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||||
|
var directLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
||||||
|
var directLawMaxSpeed = warning.new(msg: " MAX SPEED........320/.77", colour: "c"),
|
||||||
|
var directLawTrim = warning.new(msg: " -MAN PITCH TRIM.....USE", colour: "c"),
|
||||||
|
var directLawCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||||
|
var directLawSpdBrk = warning.new(msg: " USE SPD BRK WITH CARE", colour: "c"),
|
||||||
|
var directLawSpdBrk2 = warning.new(msg: " SPD BRK.......DO NOT USE", colour: "c"),
|
||||||
|
|
||||||
|
# ALTN LAW
|
||||||
|
var altnLaw = warning.new(msg: "F/CTL ALTN LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||||
|
var altnLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
||||||
|
var altnLawMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
|
||||||
|
var altnLawMaxSpeed2 = warning.new(msg: " MAX SPEED........320/.77", colour: "c"),
|
||||||
|
var altnLawMaxSpdBrk = warning.new(msg: " SPD BRK.......DO NOT USE", colour: "c"),
|
||||||
|
|
||||||
# Autothrust
|
# Autothrust
|
||||||
var athr_offw = warning.new(msg: "AUTO FLT A/THR OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
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_offw_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
|
||||||
|
|
|
@ -72,6 +72,9 @@ var FWC = {
|
||||||
altChg: props.globals.getNode("/it-autoflight/input/alt-is-changing", 1),
|
altChg: props.globals.getNode("/it-autoflight/input/alt-is-changing", 1),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var gnd = nil;
|
||||||
|
var gndTimer = nil;
|
||||||
|
|
||||||
var phaseLoop = func() {
|
var phaseLoop = func() {
|
||||||
if ((systems.ELEC.Bus.acEss.getValue() < 110 and systems.ELEC.Bus.ac2.getValue() < 110) or pts.Acconfig.running.getBoolValue()) { return; }
|
if ((systems.ELEC.Bus.acEss.getValue() < 110 and systems.ELEC.Bus.ac2.getValue() < 110) or pts.Acconfig.running.getBoolValue()) { return; }
|
||||||
if (pts.Sim.Replay.replayActive.getBoolValue()) { return; }
|
if (pts.Sim.Replay.replayActive.getBoolValue()) { return; }
|
||||||
|
@ -84,7 +87,8 @@ var phaseLoop = func() {
|
||||||
eng2n1 = pts.Engines.Engine.n1Actual[1].getValue();
|
eng2n1 = pts.Engines.Engine.n1Actual[1].getValue();
|
||||||
master1 = pts.Controls.Engines.Engine.cutoffSw[0].getBoolValue();
|
master1 = pts.Controls.Engines.Engine.cutoffSw[0].getBoolValue();
|
||||||
master2 = pts.Controls.Engines.Engine.cutoffSw[1].getBoolValue();
|
master2 = pts.Controls.Engines.Engine.cutoffSw[1].getBoolValue();
|
||||||
|
gnd = FWC.Logic.gnd.getBoolValue();
|
||||||
|
gndTimer = FWC.Timer.gnd.getValue();
|
||||||
FWC.Flipflop.recallReset.setValue(0);
|
FWC.Flipflop.recallReset.setValue(0);
|
||||||
|
|
||||||
# Various things
|
# Various things
|
||||||
|
@ -102,13 +106,13 @@ var phaseLoop = func() {
|
||||||
FWC.Flipflop.phase10Set.setBoolValue(0);
|
FWC.Flipflop.phase10Set.setBoolValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FWC.Timer.gnd.getValue() == 1 and pts.Controls.Engines.Engine.firePb[0].getBoolValue()) {
|
if (gndTimer == 1 and pts.Controls.Engines.Engine.firePb[0].getBoolValue()) {
|
||||||
FWC.Flipflop.phase10Reset.setBoolValue(1);
|
FWC.Flipflop.phase10Reset.setBoolValue(1);
|
||||||
} else {
|
} else {
|
||||||
FWC.Flipflop.phase10Reset.setBoolValue(0);
|
FWC.Flipflop.phase10Reset.setBoolValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((FWC.Logic.gnd.getBoolValue() and FWC.Timer.eng1and2Off.getValue() and myPhase == 9) and FWC.Flipflop.phase10Output.getBoolValue()) {
|
if ((gnd and FWC.Timer.eng1and2Off.getValue() and myPhase == 9) and FWC.Flipflop.phase10Output.getBoolValue()) {
|
||||||
FWC.Monostable.phase1.setBoolValue(1); # true for 300 sec then false
|
FWC.Monostable.phase1.setBoolValue(1); # true for 300 sec then false
|
||||||
} else {
|
} else {
|
||||||
FWC.Monostable.phase1.setBoolValue(0);
|
FWC.Monostable.phase1.setBoolValue(0);
|
||||||
|
@ -121,7 +125,7 @@ var phaseLoop = func() {
|
||||||
FWC.Flipflop.phase2Set.setBoolValue(0);
|
FWC.Flipflop.phase2Set.setBoolValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!FWC.Monostable.m80kt.getBoolValue() and myPhase != 9 and ((!FWC.Monostable.phase9Output.getBoolValue() and FWC.Timer.gnd.getValue() == 1) or (!FWC.Monostable.toPowerOutput.getBoolValue() and FWC.Timer.gnd.getValue() == 1))) {
|
if (!FWC.Monostable.m80kt.getBoolValue() and myPhase != 9 and ((!FWC.Monostable.phase9Output.getBoolValue() and gndTimer == 1) or (!FWC.Monostable.toPowerOutput.getBoolValue() and gndTimer == 1))) {
|
||||||
FWC.Flipflop.phase2Reset.setBoolValue(1);
|
FWC.Flipflop.phase2Reset.setBoolValue(1);
|
||||||
} else {
|
} else {
|
||||||
FWC.Flipflop.phase2Reset.setBoolValue(0);
|
FWC.Flipflop.phase2Reset.setBoolValue(0);
|
||||||
|
@ -130,33 +134,33 @@ var phaseLoop = func() {
|
||||||
gear_agl_cur = pts.Position.gearAglFt.getValue();
|
gear_agl_cur = pts.Position.gearAglFt.getValue();
|
||||||
|
|
||||||
# Phase 5 monostable
|
# Phase 5 monostable
|
||||||
if (FWC.toPower.getBoolValue() and (!FWC.Logic.feet1500.getBoolValue() and !FWC.Logic.gnd.getBoolValue() and FWC.Timer.gnd2Sec.getValue() != 1)) {
|
if (FWC.toPower.getBoolValue() and (!FWC.Logic.feet1500.getBoolValue() and !gnd and FWC.Timer.gnd2Sec.getValue() != 1)) {
|
||||||
FWC.Monostable.phase5.setBoolValue(1);
|
FWC.Monostable.phase5.setBoolValue(1);
|
||||||
} else {
|
} else {
|
||||||
FWC.Monostable.phase5.setBoolValue(0);
|
FWC.Monostable.phase5.setBoolValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Phase 7 monostable
|
# Phase 7 monostable
|
||||||
if (!FWC.toPower.getBoolValue() and !FWC.Logic.feet1500.getBoolValue() and !FWC.Logic.feet800.getBoolValue() and !FWC.Logic.gnd.getBoolValue() and FWC.Timer.gnd2Sec.getValue() != 1) {
|
if (!FWC.toPower.getBoolValue() and !FWC.Logic.feet1500.getBoolValue() and !FWC.Logic.feet800.getBoolValue() and !gnd and FWC.Timer.gnd2Sec.getValue() != 1) {
|
||||||
FWC.Monostable.phase7.setBoolValue(1);
|
FWC.Monostable.phase7.setBoolValue(1);
|
||||||
} else {
|
} else {
|
||||||
FWC.Monostable.phase7.setBoolValue(0);
|
FWC.Monostable.phase7.setBoolValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Actual Phases
|
# Actual Phases
|
||||||
if ((FWC.Logic.gnd.getBoolValue() and FWC.Timer.eng1and2Off.getValue() and myPhase != 9) and !FWC.Monostable.phase1Output.getBoolValue()) {
|
if ((gnd and FWC.Timer.eng1and2Off.getValue() and myPhase != 9) and !FWC.Monostable.phase1Output.getBoolValue()) {
|
||||||
setPhase(1);
|
setPhase(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (FWC.Logic.gnd.getBoolValue() and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and !FWC.Flipflop.phase2Output.getBoolValue()) {
|
if (FWC.Timer.eng1or2Output.getBoolValue() and (gnd and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and !FWC.Flipflop.phase2Output.getBoolValue()) {
|
||||||
setPhase(2);
|
setPhase(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (FWC.Timer.gnd.getValue() == 1 and FWC.toPower.getBoolValue()) and !FWC.speed80.getBoolValue()) {
|
if (FWC.Timer.eng1or2Output.getBoolValue() and (gndTimer == 1 and FWC.toPower.getBoolValue()) and !FWC.speed80.getBoolValue()) {
|
||||||
setPhase(3);
|
setPhase(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((FWC.Timer.gnd.getValue() == 1 and FWC.toPower.getBoolValue()) and FWC.speed80.getBoolValue()) {
|
if ((gndTimer == 1 and FWC.toPower.getBoolValue()) and FWC.speed80.getBoolValue()) {
|
||||||
setPhase(4);
|
setPhase(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +168,7 @@ var phaseLoop = func() {
|
||||||
setPhase(5);
|
setPhase(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!FWC.Logic.gnd.getValue() and FWC.Timer.gnd2SecHalf.getValue() != 1 and (!FWC.Monostable.phase5.getBoolValue() or !FWC.Monostable.phase5Output.getBoolValue()) and (!FWC.Monostable.phase7.getBoolValue() or !FWC.Monostable.phase7Output.getBoolValue())) {
|
if (!gnd and FWC.Timer.gnd2SecHalf.getValue() != 1 and (!FWC.Monostable.phase5.getBoolValue() or !FWC.Monostable.phase5Output.getBoolValue()) and (!FWC.Monostable.phase7.getBoolValue() or !FWC.Monostable.phase7Output.getBoolValue())) {
|
||||||
setPhase(6);
|
setPhase(6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,15 +176,15 @@ var phaseLoop = func() {
|
||||||
setPhase(7);
|
setPhase(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!FWC.toPower.getBoolValue() and FWC.speed80.getBoolValue() and (FWC.Logic.gnd.getBoolValue() or FWC.Timer.gnd2Sec.getValue == 1)) {
|
if (!FWC.toPower.getBoolValue() and FWC.speed80.getBoolValue() and (gnd or FWC.Timer.gnd2Sec.getValue == 1)) {
|
||||||
setPhase(8);
|
setPhase(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FWC.Flipflop.phase2Output.getBoolValue() and (FWC.Logic.gnd.getBoolValue() and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and FWC.Timer.eng1or2.getBoolValue()) {
|
if (FWC.Flipflop.phase2Output.getBoolValue() and (gnd and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and FWC.Timer.eng1or2.getBoolValue()) {
|
||||||
setPhase(9);
|
setPhase(9);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((FWC.Logic.gnd.getBoolValue() and FWC.Timer.eng1and2Off.getValue() and myPhase == 9) and FWC.Monostable.phase1Output.getBoolValue()) {
|
if ((gnd and FWC.Timer.eng1and2Off.getValue() and myPhase == 9) and FWC.Monostable.phase1Output.getBoolValue()) {
|
||||||
setPhase(10);
|
setPhase(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,7 @@ var FBW = {
|
||||||
sec3: props.globals.getNode("/systems/failures/fctl/sec3"),
|
sec3: props.globals.getNode("/systems/failures/fctl/sec3"),
|
||||||
fac1: props.globals.getNode("/systems/failures/fctl/fac1"),
|
fac1: props.globals.getNode("/systems/failures/fctl/fac1"),
|
||||||
fac2: props.globals.getNode("/systems/failures/fctl/fac2"),
|
fac2: props.globals.getNode("/systems/failures/fctl/fac2"),
|
||||||
|
ths: props.globals.getNode("/systems/failures/fctl/ths-jam"),
|
||||||
spoilerl1: props.globals.getNode("/systems/failures/spoilers/spoiler-l1"),
|
spoilerl1: props.globals.getNode("/systems/failures/spoilers/spoiler-l1"),
|
||||||
spoilerl2: props.globals.getNode("/systems/failures/spoilers/spoiler-l2"),
|
spoilerl2: props.globals.getNode("/systems/failures/spoilers/spoiler-l2"),
|
||||||
spoilerl3: props.globals.getNode("/systems/failures/spoilers/spoiler-l3"),
|
spoilerl3: props.globals.getNode("/systems/failures/spoilers/spoiler-l3"),
|
||||||
|
@ -143,6 +144,7 @@ var FBW = {
|
||||||
me.Failures.sec3.setBoolValue(0);
|
me.Failures.sec3.setBoolValue(0);
|
||||||
me.Failures.fac1.setBoolValue(0);
|
me.Failures.fac1.setBoolValue(0);
|
||||||
me.Failures.fac2.setBoolValue(0);
|
me.Failures.fac2.setBoolValue(0);
|
||||||
|
me.Failures.ths.setBoolValue(0);
|
||||||
me.Failures.spoilerl1.setBoolValue(0);
|
me.Failures.spoilerl1.setBoolValue(0);
|
||||||
me.Failures.spoilerl2.setBoolValue(0);
|
me.Failures.spoilerl2.setBoolValue(0);
|
||||||
me.Failures.spoilerl3.setBoolValue(0);
|
me.Failures.spoilerl3.setBoolValue(0);
|
||||||
|
@ -191,7 +193,10 @@ var update_loop = func {
|
||||||
tripleIRFail = !ir1 and !ir2 and !ir3;
|
tripleIRFail = !ir1 and !ir2 and !ir3;
|
||||||
doubleIRFail = (!ir1 and !ir2 and ir3) or (ir1 and !ir2 and !ir3) or (!ir1 and ir2 and !ir3);
|
doubleIRFail = (!ir1 and !ir2 and ir3) or (ir1 and !ir2 and !ir3) or (!ir1 and ir2 and !ir3);
|
||||||
|
|
||||||
if (tripleADRFail or doubleADRFail or doubleIRFail or tripleIRFail or dualFACFault or !FBW.yawdamper.getValue() or greenYellowFail or blueGreenFail or dualELACFault or (!elac1 and elac2 and ((green < 1500 and yellow >= 1500) or (green >= 1500 and yellow < 1500))) or (!elac2 and elac1 and blue < 1500) or tripleSECFault or systems.ELEC.EmerElec.getBoolValue()) {
|
if (dualELACFault and !sec1 and !sec2) {
|
||||||
|
FBW.degradeLaw.setValue(3);
|
||||||
|
FBW.apOff = 1;
|
||||||
|
} elsif (tripleADRFail or doubleADRFail or doubleIRFail or tripleIRFail or dualFACFault or !FBW.yawdamper.getValue() or greenYellowFail or blueGreenFail or dualELACFault or (!elac1 and elac2 and ((green < 1500 and yellow >= 1500) or (green >= 1500 and yellow < 1500))) or (!elac2 and elac1 and blue < 1500) or tripleSECFault or systems.ELEC.EmerElec.getBoolValue()) {
|
||||||
if (dualFACFault or !FBW.yawdamper.getValue() or greenYellowFail or (systems.ELEC.EmerElec.getBoolValue() and !fac1) or tripleIRFail) {
|
if (dualFACFault or !FBW.yawdamper.getValue() or greenYellowFail or (systems.ELEC.EmerElec.getBoolValue() and !fac1) or tripleIRFail) {
|
||||||
if (lawyaw == 0 or lawyaw == 1) {
|
if (lawyaw == 0 or lawyaw == 1) {
|
||||||
FBW.degradeYawLaw.setValue(2);
|
FBW.degradeYawLaw.setValue(2);
|
||||||
|
@ -217,12 +222,6 @@ var update_loop = func {
|
||||||
FBW.apOff = 0;
|
FBW.apOff = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dualELACFault and tripleSECFault and dualFACFault) {
|
|
||||||
FBW.degradeLaw.setValue(3);
|
|
||||||
FBW.apOff = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# degrade loop runs faster; reset this variable
|
# degrade loop runs faster; reset this variable
|
||||||
law = FBW.activeLaw.getValue();
|
law = FBW.activeLaw.getValue();
|
||||||
|
|
||||||
|
@ -238,12 +237,6 @@ var update_loop = func {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# If they can, laws can go back to standard law
|
|
||||||
if (law == 3) {
|
|
||||||
if (!dualELACFault or !tripleSECFault or !dualFACFault) {
|
|
||||||
FBW.degradeLaw.setValue(2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cas = pts.Instrumentation.AirspeedIndicator.indicatedSpdKt.getValue();
|
cas = pts.Instrumentation.AirspeedIndicator.indicatedSpdKt.getValue();
|
||||||
mmoIAS = (cas / pts.Instrumentation.AirspeedIndicator.indicatedMach.getValue()) * 0.82;
|
mmoIAS = (cas / pts.Instrumentation.AirspeedIndicator.indicatedMach.getValue()) * 0.82;
|
||||||
|
|
|
@ -667,7 +667,7 @@ var masterFMGC = maketimer(0.2, func {
|
||||||
} elsif (pts.Gear.position[0].getValue() != 0 or pts.Gear.position[1].getValue() != 0 or pts.Gear.position[2].getValue() != 0) {
|
} elsif (pts.Gear.position[0].getValue() != 0 or pts.Gear.position[1].getValue() != 0 or pts.Gear.position[2].getValue() != 0) {
|
||||||
FMGCInternal.maxspeed = 284;
|
FMGCInternal.maxspeed = 284;
|
||||||
} else {
|
} else {
|
||||||
FMGCInternal.maxspeed = getprop("/it-fbw/speeds/vmo-mmo");
|
FMGCInternal.maxspeed = fmgc.FMGCInternal.vmo_mmo;
|
||||||
}
|
}
|
||||||
|
|
||||||
############################
|
############################
|
||||||
|
|
|
@ -161,7 +161,7 @@ var SimbriefParser = {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ident == "TOD") {
|
if (ident == "TOD") {
|
||||||
_foundTOC = 1;
|
_foundTOD = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,16 +14,16 @@ var cvr_tone = props.globals.getNode("/controls/CVR/tone");
|
||||||
|
|
||||||
# Resets buttons to the default values
|
# Resets buttons to the default values
|
||||||
var variousReset = func {
|
var variousReset = func {
|
||||||
setprop("modes/cpt-du-xfr", 0);
|
setprop("/modes/cpt-du-xfr", 0);
|
||||||
setprop("modes/fo-du-xfr", 0);
|
setprop("/modes/fo-du-xfr", 0);
|
||||||
setprop("/controls/fadec/n1mode1", 0);
|
setprop("/controls/fadec/n1mode1", 0);
|
||||||
setprop("/controls/fadec/n1mode2", 0);
|
setprop("/controls/fadec/n1mode2", 0);
|
||||||
setprop("instrumentation/mk-viii/serviceable", 1);
|
setprop("/instrumentation/mk-viii/serviceable", 1);
|
||||||
setprop("instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit", 0);
|
setprop("/instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit", 0);
|
||||||
setprop("instrumentation/mk-viii/inputs/discretes/gpws-inhibit", 0);
|
setprop("/instrumentation/mk-viii/inputs/discretes/gpws-inhibit", 0);
|
||||||
setprop("instrumentation/mk-viii/inputs/discretes/glideslope-inhibit", 0);
|
setprop("/instrumentation/mk-viii/inputs/discretes/glideslope-inhibit", 0);
|
||||||
setprop("instrumentation/mk-viii/inputs/discretes/momentary-flap-all-override", 0);
|
setprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap-all-override", 0);
|
||||||
setprop("instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override", 0);
|
setprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override", 0);
|
||||||
setprop("/controls/switches/cabinCall", 0);
|
setprop("/controls/switches/cabinCall", 0);
|
||||||
setprop("/controls/switches/mechCall", 0);
|
setprop("/controls/switches/mechCall", 0);
|
||||||
setprop("/controls/switches/emer-lights", 0.5);
|
setprop("/controls/switches/emer-lights", 0.5);
|
||||||
|
@ -61,7 +61,7 @@ var variousReset = func {
|
||||||
setprop("/controls/lighting/DU/du6", 1);
|
setprop("/controls/lighting/DU/du6", 1);
|
||||||
setprop("/controls/lighting/DU/mcdu1", 1);
|
setprop("/controls/lighting/DU/mcdu1", 1);
|
||||||
setprop("/controls/lighting/DU/mcdu2", 1);
|
setprop("/controls/lighting/DU/mcdu2", 1);
|
||||||
setprop("modes/fcu/hdg-time", -45);
|
setprop("/modes/fcu/hdg-time", -45);
|
||||||
setprop("/controls/navigation/switching/att-hdg", 0);
|
setprop("/controls/navigation/switching/att-hdg", 0);
|
||||||
setprop("/controls/navigation/switching/air-data", 0);
|
setprop("/controls/navigation/switching/air-data", 0);
|
||||||
setprop("/controls/switches/no-smoking-sign", 1);
|
setprop("/controls/switches/no-smoking-sign", 1);
|
||||||
|
|
|
@ -22,6 +22,7 @@ var Controls = {
|
||||||
Engines: {
|
Engines: {
|
||||||
startSw: props.globals.getNode("/controls/engines/engine-start-switch"),
|
startSw: props.globals.getNode("/controls/engines/engine-start-switch"),
|
||||||
Engine: {
|
Engine: {
|
||||||
|
cutoff: [props.globals.getNode("/controls/engines/engine[0]/cutoff"), props.globals.getNode("/controls/engines/engine[1]/cutoff")],
|
||||||
cutoffSw: [props.globals.getNode("/controls/engines/engine[0]/cutoff-switch"), props.globals.getNode("/controls/engines/engine[1]/cutoff-switch")],
|
cutoffSw: [props.globals.getNode("/controls/engines/engine[0]/cutoff-switch"), props.globals.getNode("/controls/engines/engine[1]/cutoff-switch")],
|
||||||
firePb: [props.globals.getNode("/controls/engines/engine[0]/fire-btn"), props.globals.getNode("/controls/engines/engine[1]/fire-btn")],
|
firePb: [props.globals.getNode("/controls/engines/engine[0]/fire-btn"), props.globals.getNode("/controls/engines/engine[1]/fire-btn")],
|
||||||
throttle: [props.globals.getNode("/controls/engines/engine[0]/throttle"), props.globals.getNode("/controls/engines/engine[1]/throttle")],
|
throttle: [props.globals.getNode("/controls/engines/engine[0]/throttle"), props.globals.getNode("/controls/engines/engine[1]/throttle")],
|
||||||
|
@ -30,6 +31,7 @@ var Controls = {
|
||||||
throttleOutput: [props.globals.getNode("/controls/engines/engine[0]/throttle-output"), props.globals.getNode("/controls/engines/engine[1]/throttle-output")],
|
throttleOutput: [props.globals.getNode("/controls/engines/engine[0]/throttle-output"), props.globals.getNode("/controls/engines/engine[1]/throttle-output")],
|
||||||
throttlePos: [props.globals.getNode("/controls/engines/engine[0]/throttle-pos"), props.globals.getNode("/controls/engines/engine[1]/throttle-pos")],
|
throttlePos: [props.globals.getNode("/controls/engines/engine[0]/throttle-pos"), props.globals.getNode("/controls/engines/engine[1]/throttle-pos")],
|
||||||
throttleRev: [props.globals.getNode("/controls/engines/engine[0]/throttle-rev"), props.globals.getNode("/controls/engines/engine[1]/throttle-rev")],
|
throttleRev: [props.globals.getNode("/controls/engines/engine[0]/throttle-rev"), props.globals.getNode("/controls/engines/engine[1]/throttle-rev")],
|
||||||
|
starter: [props.globals.getNode("/controls/engines/engine[0]/starter"), props.globals.getNode("/controls/engines/engine[1]/starter")],
|
||||||
reverser: [props.globals.getNode("/controls/engines/engine[0]/reverser"), props.globals.getNode("/controls/engines/engine[1]/reverser")],
|
reverser: [props.globals.getNode("/controls/engines/engine[0]/reverser"), props.globals.getNode("/controls/engines/engine[1]/reverser")],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -18,45 +18,43 @@ var shutdown_time = 20;
|
||||||
var egt_shutdown_time = 20;
|
var egt_shutdown_time = 20;
|
||||||
|
|
||||||
var eng_init = func {
|
var eng_init = func {
|
||||||
setprop("/controls/engines/engine[0]/man-start", 0);
|
|
||||||
setprop("/controls/engines/engine[1]/man-start", 0);
|
|
||||||
eng_common_init();
|
eng_common_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
# Trigger Startups and Stops
|
# Trigger Startups and Stops
|
||||||
setlistener("/controls/engines/engine[0]/cutoff-switch", func {
|
setlistener("/controls/engines/engine[0]/cutoff-switch", func {
|
||||||
if (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
if (!pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||||
if (getprop("/systems/acconfig/autoconfig-running") == 1) {
|
if (pts.Acconfig.running.getValue()) {
|
||||||
fast_start_one();
|
fast_start_one();
|
||||||
} else {
|
} else {
|
||||||
if (getprop("/controls/engines/engine[0]/man-start") == 0) {
|
if (!manStart[0].getValue()) {
|
||||||
start_one_check();
|
start_one_check();
|
||||||
} else if (getprop("/controls/engines/engine[0]/man-start") == 1) {
|
} else {
|
||||||
eng_one_man_start.start();
|
eng_one_man_start.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1) {
|
} else if (pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||||
cutoff_one();
|
cutoff_one();
|
||||||
}
|
}
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
var cutoff_one = func {
|
var cutoff_one = func {
|
||||||
eng_one_auto_start.stop();
|
eng_one_auto_start.stop();
|
||||||
eng_one_man_start.stop();
|
eng_one_man_start.stop();
|
||||||
eng_one_n2_check.stop();
|
eng_one_n2_check.stop();
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
igniterA[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
igniterB[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/man-start", 0);
|
manStart[0].setValue(0);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/starter", 0);
|
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||||
setprop("/engines/engine[0]/state", 0);
|
pts.Engines.Engine.state[0].setValue(0);
|
||||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
eng_one_n2_check.stop();
|
eng_one_n2_check.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
var fast_start_one = func {
|
var fast_start_one = func {
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||||
setprop("/engines/engine[0]/out-of-fuel", 0);
|
setprop("/engines/engine[0]/out-of-fuel", 0);
|
||||||
setprop("/engines/engine[0]/run", 1);
|
setprop("/engines/engine[0]/run", 1);
|
||||||
|
|
||||||
|
@ -65,81 +63,81 @@ var fast_start_one = func {
|
||||||
|
|
||||||
setprop("/fdm/jsbsim/propulsion/set-running", 0);
|
setprop("/fdm/jsbsim/propulsion/set-running", 0);
|
||||||
|
|
||||||
setprop("/engines/engine[0]/state", 3);
|
pts.Engines.Engine.state[0].setValue(3);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
setlistener("/controls/engines/engine[0]/man-start", func {
|
setlistener("/controls/engines/engine[0]/man-start", func {
|
||||||
start_one_mancheck();
|
start_one_mancheck();
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
var start_one_mancheck = func {
|
var start_one_mancheck = func {
|
||||||
if (getprop("/controls/engines/engine[0]/man-start") == 1) {
|
if (manStart[0].getValue()) {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1)) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1)) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 1);
|
systems.PNEU.Valves.starter1.setValue(1);
|
||||||
settimer(start_one_mancheck_b, 0.5);
|
settimer(start_one_mancheck_b, 0.5);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/engines/engine[0]/state", 0);
|
pts.Engines.Engine.state[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/starter", 0);
|
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_one_mancheck_b = func {
|
var start_one_mancheck_b = func {
|
||||||
if (systems.PNEU.Psi.engine1.getValue() >= 25) {
|
if (systems.PNEU.Psi.engine1.getValue() >= 25) {
|
||||||
setprop("/engines/engine[0]/state", 1);
|
pts.Engines.Engine.state[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/starter", 1);
|
pts.Controls.Engines.Engine.starter[0].setValue(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_one_check = func {
|
var start_one_check = func {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 1);
|
systems.PNEU.Valves.starter1.setValue(1);
|
||||||
settimer(start_one_check_b, 0.5);
|
settimer(start_one_check_b, 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_one_check_b = func {
|
var start_one_check_b = func {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and systems.PNEU.Psi.engine1.getValue() and !pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and systems.PNEU.Psi.engine1.getValue() >= 25and !pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||||
auto_start_one();
|
auto_start_one();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setlistener("/controls/engines/engine[1]/cutoff-switch", func {
|
setlistener("/controls/engines/engine[1]/cutoff-switch", func {
|
||||||
if (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
if (!pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||||
if (getprop("/systems/acconfig/autoconfig-running") == 1) {
|
if (pts.Acconfig.running.getValue()) {
|
||||||
fast_start_two();
|
fast_start_two();
|
||||||
} else {
|
} else {
|
||||||
if (getprop("/controls/engines/engine[1]/man-start") == 0) {
|
if (!manStart[1].getValue()) {
|
||||||
start_two_check();
|
start_two_check();
|
||||||
} else if (getprop("/controls/engines/engine[1]/man-start") == 1) {
|
} else {
|
||||||
eng_two_man_start.start();
|
eng_two_man_start.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1) {
|
} else if (pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||||
cutoff_two();
|
cutoff_two();
|
||||||
}
|
}
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
var cutoff_two = func {
|
var cutoff_two = func {
|
||||||
eng_two_auto_start.stop();
|
eng_two_auto_start.stop();
|
||||||
eng_two_man_start.stop();
|
eng_two_man_start.stop();
|
||||||
eng_two_n2_check.stop();
|
eng_two_n2_check.stop();
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
igniterA[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
igniterB[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/man-start", 0);
|
manStart[1].setValue(0);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/starter", 0);
|
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||||
setprop("/engines/engine[1]/state", 0);
|
pts.Engines.Engine.state[1].setValue(0);
|
||||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
var fast_start_two = func {
|
var fast_start_two = func {
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||||
setprop("/engines/engine[1]/out-of-fuel", 0);
|
setprop("/engines/engine[1]/out-of-fuel", 0);
|
||||||
setprop("/engines/engine[1]/run", 1);
|
setprop("/engines/engine[1]/run", 1);
|
||||||
|
|
||||||
|
@ -148,69 +146,69 @@ var fast_start_two = func {
|
||||||
|
|
||||||
setprop("/fdm/jsbsim/propulsion/set-running", 1);
|
setprop("/fdm/jsbsim/propulsion/set-running", 1);
|
||||||
|
|
||||||
setprop("/engines/engine[1]/state", 3);
|
pts.Engines.Engine.state[1].setValue(3);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
setlistener("/controls/engines/engine[1]/man-start", func {
|
setlistener("/controls/engines/engine[1]/man-start", func {
|
||||||
start_two_mancheck();
|
start_two_mancheck();
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
var start_two_mancheck = func {
|
var start_two_mancheck = func {
|
||||||
if (getprop("/controls/engines/engine[1]/man-start") == 1) {
|
if (manStart[1].getValue() == 1) {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1)) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1)) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 1);
|
systems.PNEU.Valves.starter2.setValue(1);
|
||||||
settimer(start_two_mancheck_b, 0.5);
|
settimer(start_two_mancheck_b, 0.5);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/engines/engine[1]/state", 0);
|
pts.Engines.Engine.state[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/starter", 0);
|
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_two_mancheck_b = func {
|
var start_two_mancheck_b = func {
|
||||||
if (systems.PNEU.Psi.engine2.getValue() >= 25) {
|
if (systems.PNEU.Psi.engine2.getValue() >= 25) {
|
||||||
setprop("/engines/engine[1]/state", 1);
|
pts.Engines.Engine.state[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/starter", 1);
|
pts.Controls.Engines.Engine.starter[1].setValue(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_two_check = func {
|
var start_two_check = func {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 1);
|
systems.PNEU.Valves.starter2.setValue(1);
|
||||||
settimer(start_two_check_b, 0.5);
|
settimer(start_two_check_b, 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_two_check_b = func {
|
var start_two_check_b = func {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and systems.PNEU.Psi.engine2.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and systems.PNEU.Psi.engine2.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||||
auto_start_two();
|
auto_start_two();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Start Engine One
|
# Start Engine One
|
||||||
var auto_start_one = func {
|
var auto_start_one = func {
|
||||||
setprop("/engines/engine[0]/state", 1);
|
pts.Engines.Engine.state[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/starter", 1);
|
pts.Controls.Engines.Engine.starter[0].setValue(1);
|
||||||
eng_one_auto_start.start();
|
eng_one_auto_start.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
var eng_one_auto_start = maketimer(0.5, func {
|
var eng_one_auto_start = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 22) {
|
if (pts.Engines.Engine.n2Actual[0].getValue() >= 22) {
|
||||||
eng_one_auto_start.stop();
|
eng_one_auto_start.stop();
|
||||||
setprop("/engines/engine[0]/state", 2);
|
pts.Engines.Engine.state[0].setValue(2);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||||
if (getprop("/controls/engines/engine[0]/last-igniter") == "B") {
|
if (lastIgniter[0].getValue() == "B") {
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 1);
|
igniterA[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
igniterB[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/last-igniter", "A");
|
lastIgniter[0].setValue("A");
|
||||||
} else if (getprop("/controls/engines/engine[0]/last-igniter") == "A") {
|
} else if (lastIgniter[0].getValue() == "A") {
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
igniterA[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 1);
|
igniterB[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/last-igniter", "B");
|
lastIgniter[0].setValue("B");
|
||||||
}
|
}
|
||||||
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||||
eng_one_egt_check.start();
|
eng_one_egt_check.start();
|
||||||
|
@ -221,10 +219,10 @@ var eng_one_auto_start = maketimer(0.5, func {
|
||||||
var eng_one_man_start = maketimer(0.5, func {
|
var eng_one_man_start = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 16.7) {
|
if (pts.Engines.Engine.n2Actual[0].getValue() >= 16.7) {
|
||||||
eng_one_man_start.stop();
|
eng_one_man_start.stop();
|
||||||
setprop("/engines/engine[0]/state", 2);
|
pts.Engines.Engine.state[0].setValue(2);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 1);
|
igniterA[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 1);
|
igniterB[0].setValue(1);
|
||||||
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||||
eng_one_egt_check.start();
|
eng_one_egt_check.start();
|
||||||
eng_one_n2_check.start();
|
eng_one_n2_check.start();
|
||||||
|
@ -232,7 +230,7 @@ var eng_one_man_start = maketimer(0.5, func {
|
||||||
});
|
});
|
||||||
|
|
||||||
var eng_one_egt_check = maketimer(0.5, func {
|
var eng_one_egt_check = maketimer(0.5, func {
|
||||||
if (getprop("/engines/engine[0]/egt-actual") >= egt_start) {
|
if (pts.Engines.Engine.egtActual[0].getValue() >= egt_start) {
|
||||||
eng_one_egt_check.stop();
|
eng_one_egt_check.stop();
|
||||||
interpolate(engines[0].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
interpolate(engines[0].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
||||||
}
|
}
|
||||||
|
@ -240,40 +238,40 @@ var eng_one_egt_check = maketimer(0.5, func {
|
||||||
|
|
||||||
var eng_one_n2_check = maketimer(0.5, func {
|
var eng_one_n2_check = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 43.0) {
|
if (pts.Engines.Engine.n2Actual[0].getValue() >= 43.0) {
|
||||||
if (getprop("/controls/engines/engine[0]/igniter-a") != 0) {
|
if (igniterA[0].getValue() != 0) {
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
igniterA[0].setValue(0);
|
||||||
}
|
}
|
||||||
if (getprop("/controls/engines/engine[0]/igniter-b") != 0) {
|
if (igniterB[0].getValue() != 0) {
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
igniterB[0].setValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 57.0) {
|
if (pts.Engines.Engine.n2Actual[0].getValue() >= 57.0) {
|
||||||
eng_one_n2_check.stop();
|
eng_one_n2_check.stop();
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/engines/engine[0]/state", 3);
|
pts.Engines.Engine.state[0].setValue(3);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
# Start Engine Two
|
# Start Engine Two
|
||||||
var auto_start_two = func {
|
var auto_start_two = func {
|
||||||
setprop("/engines/engine[1]/state", 1);
|
pts.Engines.Engine.state[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/starter", 1);
|
pts.Controls.Engines.Engine.starter[1].setValue(1);
|
||||||
eng_two_auto_start.start();
|
eng_two_auto_start.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
var eng_two_auto_start = maketimer(0.5, func {
|
var eng_two_auto_start = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 22) {
|
if (pts.Engines.Engine.n2Actual[1].getValue() >= 22) {
|
||||||
eng_two_auto_start.stop();
|
eng_two_auto_start.stop();
|
||||||
setprop("/engines/engine[1]/state", 2);
|
pts.Engines.Engine.state[1].setValue(2);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||||
if (getprop("/controls/engines/engine[1]/last-igniter") == "B") {
|
if (lastIgniter[1].getValue() == "B") {
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 1);
|
igniterA[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
igniterB[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/last-igniter", "A");
|
lastIgniter[1].setValue("A");
|
||||||
} else if (getprop("/controls/engines/engine[1]/last-igniter") == "A") {
|
} else if (lastIgniter[1].getValue() == "A") {
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
igniterA[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 1);
|
igniterB[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/last-igniter", "B");
|
lastIgniter[1].setValue("B");
|
||||||
}
|
}
|
||||||
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||||
eng_two_egt_check.start();
|
eng_two_egt_check.start();
|
||||||
|
@ -284,10 +282,10 @@ var eng_two_auto_start = maketimer(0.5, func {
|
||||||
var eng_two_man_start = maketimer(0.5, func {
|
var eng_two_man_start = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 16.7) {
|
if (pts.Engines.Engine.n2Actual[1].getValue() >= 16.7) {
|
||||||
eng_two_man_start.stop();
|
eng_two_man_start.stop();
|
||||||
setprop("/engines/engine[1]/state", 2);
|
pts.Engines.Engine.state[1].setValue(2);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 1);
|
igniterA[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 1);
|
igniterB[1].setValue(1);
|
||||||
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||||
eng_two_egt_check.start();
|
eng_two_egt_check.start();
|
||||||
eng_two_n2_check.start();
|
eng_two_n2_check.start();
|
||||||
|
@ -295,7 +293,7 @@ var eng_two_man_start = maketimer(0.5, func {
|
||||||
});
|
});
|
||||||
|
|
||||||
var eng_two_egt_check = maketimer(0.5, func {
|
var eng_two_egt_check = maketimer(0.5, func {
|
||||||
if (getprop("/engines/engine[1]/egt-actual") >= egt_start) {
|
if (pts.Engines.Engine.egtActual[1].getValue() >= egt_start) {
|
||||||
eng_two_egt_check.stop();
|
eng_two_egt_check.stop();
|
||||||
interpolate(engines[1].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
interpolate(engines[1].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
||||||
}
|
}
|
||||||
|
@ -303,17 +301,17 @@ var eng_two_egt_check = maketimer(0.5, func {
|
||||||
|
|
||||||
var eng_two_n2_check = maketimer(0.5, func {
|
var eng_two_n2_check = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 50.0) {
|
if (pts.Engines.Engine.n2Actual[1].getValue() >= 50.0) {
|
||||||
if (getprop("/controls/engines/engine[1]/igniter-a") != 0) {
|
if (igniterA[1].getValue() != 0) {
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
igniterA[1].setValue(0);
|
||||||
}
|
}
|
||||||
if (getprop("/controls/engines/engine[1]/igniter-b") != 0) {
|
if (igniterB[1].getValue() != 0) {
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
igniterB[1].setValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 57.0) {
|
if (pts.Engines.Engine.n2Actual[1].getValue() >= 57.0) {
|
||||||
eng_two_n2_check.stop();
|
eng_two_n2_check.stop();
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/engines/engine[1]/state", 3);
|
pts.Engines.Engine.state[1].setValue(3);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -327,31 +325,31 @@ setlistener("/controls/engines/engine-start-switch", func {
|
||||||
start_two_check();
|
start_two_check();
|
||||||
start_two_mancheck();
|
start_two_mancheck();
|
||||||
}
|
}
|
||||||
if ((getprop("/controls/engines/engine-start-switch") == 0) or (getprop("/controls/engines/engine-start-switch") == 1)) {
|
if ((pts.Controls.Engines.startSw.getValue() == 0) or (pts.Controls.Engines.startSw.getValue() == 1)) {
|
||||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||||
setprop("/controls/engines/engine[0]/starter", 0);
|
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/engines/engine[0]/state", 0);
|
pts.Engines.Engine.state[0].setValue(0);
|
||||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||||
setprop("/controls/engines/engine[1]/starter", 0);
|
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/engines/engine[1]/state", 0);
|
pts.Engines.Engine.state[1].setValue(0);
|
||||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
||||||
if (systems.PNEU.Psi.engine1.getValue() < 24.5) {
|
if (systems.PNEU.Psi.engine1.getValue() < 24.5) {
|
||||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||||
setprop("/controls/engines/engine[0]/starter", 0);
|
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/engines/engine[0]/state", 0);
|
pts.Engines.Engine.state[0].setValue(0);
|
||||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -360,10 +358,10 @@ setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
||||||
setlistener("/systems/pneumatics/psi/engine-2-psi", func {
|
setlistener("/systems/pneumatics/psi/engine-2-psi", func {
|
||||||
if (systems.PNEU.Psi.engine2.getValue() < 24.5) {
|
if (systems.PNEU.Psi.engine2.getValue() < 24.5) {
|
||||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||||
setprop("/controls/engines/engine[1]/starter", 0);
|
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/engines/engine[1]/state", 0);
|
pts.Engines.Engine.state[1].setValue(0);
|
||||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
|
|
||||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||||
|
|
||||||
|
var manStart = [props.globals.initNode("/controls/engines/engine[0]/man-start", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/man-start", 0, "BOOL")];
|
||||||
|
var lastIgniter = [props.globals.getNode("/controls/engines/engine[0]/last-igniter"),props.globals.initNode("/controls/engines/engine[1]/last-igniter")];
|
||||||
|
var igniterA = [props.globals.initNode("/controls/engines/engine[0]/igniter-a", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/igniter-a", 0, "BOOL")];
|
||||||
|
var igniterB = [props.globals.initNode("/controls/engines/engine[0]/igniter-b", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/igniter-b", 0, "BOOL")];
|
||||||
|
|
||||||
if (pts.Options.eng.getValue() == "IAE") {
|
if (pts.Options.eng.getValue() == "IAE") {
|
||||||
io.include("engines-iae.nas");
|
io.include("engines-iae.nas");
|
||||||
} else {
|
} else {
|
||||||
|
@ -10,7 +15,8 @@ if (pts.Options.eng.getValue() == "IAE") {
|
||||||
}
|
}
|
||||||
|
|
||||||
var eng_common_init = func {
|
var eng_common_init = func {
|
||||||
# nada
|
manStart[0].setValue(0);
|
||||||
|
manStart[1].setValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Engine thrust commands
|
# Engine thrust commands
|
||||||
|
|
|
@ -17,46 +17,45 @@ var egt_lightdn_time = 10;
|
||||||
var shutdown_time = 20;
|
var shutdown_time = 20;
|
||||||
var egt_shutdown_time = 20;
|
var egt_shutdown_time = 20;
|
||||||
|
|
||||||
|
|
||||||
var eng_init = func {
|
var eng_init = func {
|
||||||
setprop("/controls/engines/engine[0]/man-start", 0);
|
|
||||||
setprop("/controls/engines/engine[1]/man-start", 0);
|
|
||||||
eng_common_init();
|
eng_common_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
# Trigger Startups and Stops
|
# Trigger Startups and Stops
|
||||||
setlistener("/controls/engines/engine[0]/cutoff-switch", func {
|
setlistener("/controls/engines/engine[0]/cutoff-switch", func {
|
||||||
if (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
if (!pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||||
if (getprop("/systems/acconfig/autoconfig-running") == 1) {
|
if (pts.Acconfig.running.getValue()) {
|
||||||
fast_start_one();
|
fast_start_one();
|
||||||
} else {
|
} else {
|
||||||
if (getprop("/controls/engines/engine[0]/man-start") == 0) {
|
if (!manStart[0].getValue()) {
|
||||||
start_one_check();
|
start_one_check();
|
||||||
} else if (getprop("/controls/engines/engine[0]/man-start") == 1) {
|
} else if (manStart[0].getValue()) {
|
||||||
eng_one_man_start.start();
|
eng_one_man_start.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1) {
|
} else if (pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||||
cutoff_one();
|
cutoff_one();
|
||||||
}
|
}
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
var cutoff_one = func {
|
var cutoff_one = func {
|
||||||
eng_one_auto_start.stop();
|
eng_one_auto_start.stop();
|
||||||
eng_one_man_start.stop();
|
eng_one_man_start.stop();
|
||||||
eng_one_n2_check.stop();
|
eng_one_n2_check.stop();
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
igniterA[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
igniterB[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/man-start", 0);
|
manStart[0].setValue(0);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/starter", 0);
|
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||||
setprop("/engines/engine[0]/state", 0);
|
pts.Engines.Engine.state[0].setValue(0);
|
||||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
eng_one_n2_check.stop();
|
eng_one_n2_check.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
var fast_start_one = func {
|
var fast_start_one = func {
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||||
setprop("/engines/engine[0]/out-of-fuel", 0);
|
setprop("/engines/engine[0]/out-of-fuel", 0);
|
||||||
setprop("/engines/engine[0]/run", 1);
|
setprop("/engines/engine[0]/run", 1);
|
||||||
|
|
||||||
|
@ -65,81 +64,81 @@ var fast_start_one = func {
|
||||||
|
|
||||||
setprop("/fdm/jsbsim/propulsion/set-running", 0);
|
setprop("/fdm/jsbsim/propulsion/set-running", 0);
|
||||||
|
|
||||||
setprop("/engines/engine[0]/state", 3);
|
pts.Engines.Engine.state[0].setValue(3);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
setlistener("/controls/engines/engine[0]/man-start", func {
|
setlistener("/controls/engines/engine[0]/man-start", func {
|
||||||
start_one_mancheck();
|
start_one_mancheck();
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
var start_one_mancheck = func {
|
var start_one_mancheck = func {
|
||||||
if (getprop("/controls/engines/engine[0]/man-start") == 1) {
|
if (manStart[0].getValue()) {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1)) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1)) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 1);
|
systems.PNEU.Valves.starter1.setValue(1);
|
||||||
settimer(start_one_mancheck_b, 0.5);
|
settimer(start_one_mancheck_b, 0.5);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/engines/engine[0]/state", 0);
|
pts.Engines.Engine.state[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/starter", 0);
|
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_one_mancheck_b = func {
|
var start_one_mancheck_b = func {
|
||||||
if (systems.PNEU.Psi.engine1.getValue() >= 25) {
|
if (systems.PNEU.Psi.engine1.getValue() >= 25) {
|
||||||
setprop("/engines/engine[0]/state", 1);
|
pts.Engines.Engine.state[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/starter", 1);
|
pts.Controls.Engines.Engine.starter[0].setValue(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_one_check = func {
|
var start_one_check = func {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 1);
|
systems.PNEU.Valves.starter1.setValue(1);
|
||||||
settimer(start_one_check_b, 0.5);
|
settimer(start_one_check_b, 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_one_check_b = func {
|
var start_one_check_b = func {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and systems.PNEU.Psi.engine1.getValue() and !pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and systems.PNEU.Psi.engine1.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||||
auto_start_one();
|
auto_start_one();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setlistener("/controls/engines/engine[1]/cutoff-switch", func {
|
setlistener("/controls/engines/engine[1]/cutoff-switch", func {
|
||||||
if (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
if (!pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||||
if (getprop("/systems/acconfig/autoconfig-running") == 1) {
|
if (pts.Acconfig.running.getValue()) {
|
||||||
fast_start_two();
|
fast_start_two();
|
||||||
} else {
|
} else {
|
||||||
if (getprop("/controls/engines/engine[1]/man-start") == 0) {
|
if (!manStart[1].getValue()) {
|
||||||
start_two_check();
|
start_two_check();
|
||||||
} else if (getprop("/controls/engines/engine[1]/man-start") == 1) {
|
} else if (manStart[1].getValue()) {
|
||||||
eng_two_man_start.start();
|
eng_two_man_start.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1) {
|
} else if (pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||||
cutoff_two();
|
cutoff_two();
|
||||||
}
|
}
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
var cutoff_two = func {
|
var cutoff_two = func {
|
||||||
eng_two_auto_start.stop();
|
eng_two_auto_start.stop();
|
||||||
eng_two_man_start.stop();
|
eng_two_man_start.stop();
|
||||||
eng_two_n2_check.stop();
|
eng_two_n2_check.stop();
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
igniterA[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
igniterB[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/man-start", 0);
|
manStart[1].setValue(0);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/starter", 0);
|
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||||
setprop("/engines/engine[1]/state", 0);
|
pts.Engines.Engine.state[1].setValue(0);
|
||||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
var fast_start_two = func {
|
var fast_start_two = func {
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||||
setprop("/engines/engine[1]/out-of-fuel", 0);
|
setprop("/engines/engine[1]/out-of-fuel", 0);
|
||||||
setprop("/engines/engine[1]/run", 1);
|
setprop("/engines/engine[1]/run", 1);
|
||||||
|
|
||||||
|
@ -148,69 +147,69 @@ var fast_start_two = func {
|
||||||
|
|
||||||
setprop("/fdm/jsbsim/propulsion/set-running", 1);
|
setprop("/fdm/jsbsim/propulsion/set-running", 1);
|
||||||
|
|
||||||
setprop("/engines/engine[1]/state", 3);
|
pts.Engines.Engine.state[1].setValue(3);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
setlistener("/controls/engines/engine[1]/man-start", func {
|
setlistener("/controls/engines/engine[1]/man-start", func {
|
||||||
start_two_mancheck();
|
start_two_mancheck();
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
var start_two_mancheck = func {
|
var start_two_mancheck = func {
|
||||||
if (getprop("/controls/engines/engine[1]/man-start") == 1) {
|
if (manStart[1].getValue() == 1) {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1)) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1)) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 1);
|
systems.PNEU.Valves.starter2.setValue(1);
|
||||||
settimer(start_two_mancheck_b, 0.5);
|
settimer(start_two_mancheck_b, 0.5);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/engines/engine[1]/state", 0);
|
pts.Engines.Engine.state[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/starter", 0);
|
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_two_mancheck_b = func {
|
var start_two_mancheck_b = func {
|
||||||
if (systems.PNEU.Psi.engine1.getValue() >= 25) {
|
if (systems.PNEU.Psi.engine1.getValue() >= 25) {
|
||||||
setprop("/engines/engine[1]/state", 1);
|
pts.Engines.Engine.state[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/starter", 1);
|
pts.Controls.Engines.Engine.starter[1].setValue(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_two_check = func {
|
var start_two_check = func {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 1);
|
systems.PNEU.Valves.starter2.setValue(1);
|
||||||
settimer(start_two_check_b, 0.5);
|
settimer(start_two_check_b, 0.5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var start_two_check_b = func {
|
var start_two_check_b = func {
|
||||||
if (getprop("/controls/engines/engine-start-switch") == 2 and systems.PNEU.Psi.engine2.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
if (pts.Controls.Engines.startSw.getValue() == 2 and systems.PNEU.Psi.engine2.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||||
auto_start_two();
|
auto_start_two();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Start Engine One
|
# Start Engine One
|
||||||
var auto_start_one = func {
|
var auto_start_one = func {
|
||||||
setprop("/engines/engine[0]/state", 1);
|
pts.Engines.Engine.state[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/starter", 1);
|
pts.Controls.Engines.Engine.starter[0].setValue(1);
|
||||||
eng_one_auto_start.start();
|
eng_one_auto_start.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
var eng_one_auto_start = maketimer(0.5, func {
|
var eng_one_auto_start = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n1Actual[0].getValue() >= 4.7) {
|
if (pts.Engines.Engine.n1Actual[0].getValue() >= 4.7) {
|
||||||
eng_one_auto_start.stop();
|
eng_one_auto_start.stop();
|
||||||
setprop("/engines/engine[0]/state", 2);
|
pts.Engines.Engine.state[0].setValue(2);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||||
if (getprop("/controls/engines/engine[0]/last-igniter") == "B") {
|
if (lastIgniter[0].getValue() == "B") {
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 1);
|
igniterA[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
igniterB[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/last-igniter", "A");
|
lastIgniter[0].setValue("A");
|
||||||
} else if (getprop("/controls/engines/engine[0]/last-igniter") == "A") {
|
} else if (lastIgniter[0].getValue() == "A") {
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
igniterA[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 1);
|
igniterB[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/last-igniter", "B");
|
lastIgniter[0].setValue("B");
|
||||||
}
|
}
|
||||||
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||||
eng_one_egt_check.start();
|
eng_one_egt_check.start();
|
||||||
|
@ -221,10 +220,10 @@ var eng_one_auto_start = maketimer(0.5, func {
|
||||||
var eng_one_man_start = maketimer(0.5, func {
|
var eng_one_man_start = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 16.7) {
|
if (pts.Engines.Engine.n2Actual[0].getValue() >= 16.7) {
|
||||||
eng_one_man_start.stop();
|
eng_one_man_start.stop();
|
||||||
setprop("/engines/engine[0]/state", 2);
|
pts.Engines.Engine.state[0].setValue(2);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 1);
|
igniterA[0].setValue(1);
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 1);
|
igniterB[0].setValue(1);
|
||||||
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||||
eng_one_egt_check.start();
|
eng_one_egt_check.start();
|
||||||
eng_one_n2_check.start();
|
eng_one_n2_check.start();
|
||||||
|
@ -232,7 +231,7 @@ var eng_one_man_start = maketimer(0.5, func {
|
||||||
});
|
});
|
||||||
|
|
||||||
var eng_one_egt_check = maketimer(0.5, func {
|
var eng_one_egt_check = maketimer(0.5, func {
|
||||||
if (getprop("/engines/engine[0]/egt-actual") >= egt_start) {
|
if (pts.Engines.Engine.egtActual[0].getValue() >= egt_start) {
|
||||||
eng_one_egt_check.stop();
|
eng_one_egt_check.stop();
|
||||||
interpolate(engines[0].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
interpolate(engines[0].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
||||||
}
|
}
|
||||||
|
@ -240,40 +239,40 @@ var eng_one_egt_check = maketimer(0.5, func {
|
||||||
|
|
||||||
var eng_one_n2_check = maketimer(0.5, func {
|
var eng_one_n2_check = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 43.0) {
|
if (pts.Engines.Engine.n2Actual[0].getValue() >= 43.0) {
|
||||||
if (getprop("/controls/engines/engine[0]/igniter-a") != 0) {
|
if (igniterA[0].getValue() != 0) {
|
||||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
igniterA[0].setValue(0);
|
||||||
}
|
}
|
||||||
if (getprop("/controls/engines/engine[0]/igniter-b") != 0) {
|
if (igniterB[0].getValue() != 0) {
|
||||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
igniterB[0].setValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 57.0) {
|
if (pts.Engines.Engine.n2Actual[0].getValue() >= 57.0) {
|
||||||
eng_one_n2_check.stop();
|
eng_one_n2_check.stop();
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/engines/engine[0]/state", 3);
|
pts.Engines.Engine.state[0].setValue(3);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
# Start Engine Two
|
# Start Engine Two
|
||||||
var auto_start_two = func {
|
var auto_start_two = func {
|
||||||
setprop("/engines/engine[1]/state", 1);
|
pts.Engines.Engine.state[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/starter", 1);
|
pts.Controls.Engines.Engine.starter[1].setValue(1);
|
||||||
eng_two_auto_start.start();
|
eng_two_auto_start.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
var eng_two_auto_start = maketimer(0.5, func {
|
var eng_two_auto_start = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n1Actual[1].getValue() >= 4.7) {
|
if (pts.Engines.Engine.n1Actual[1].getValue() >= 4.7) {
|
||||||
eng_two_auto_start.stop();
|
eng_two_auto_start.stop();
|
||||||
setprop("/engines/engine[1]/state", 2);
|
pts.Engines.Engine.state[1].setValue(2);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||||
if (getprop("/controls/engines/engine[1]/last-igniter") == "B") {
|
if (lastIgniter[1].getValue() == "B") {
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 1);
|
igniterA[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
igniterB[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/last-igniter", "A");
|
lastIgniter[1].setValue("A");
|
||||||
} else if (getprop("/controls/engines/engine[1]/last-igniter") == "A") {
|
} else if (lastIgniter[1].getValue() == "A") {
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
igniterA[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 1);
|
igniterB[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/last-igniter", "B");
|
lastIgniter[1].setValue("B");
|
||||||
}
|
}
|
||||||
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||||
eng_two_egt_check.start();
|
eng_two_egt_check.start();
|
||||||
|
@ -284,10 +283,10 @@ var eng_two_auto_start = maketimer(0.5, func {
|
||||||
var eng_two_man_start = maketimer(0.5, func {
|
var eng_two_man_start = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 16.7) {
|
if (pts.Engines.Engine.n2Actual[1].getValue() >= 16.7) {
|
||||||
eng_two_man_start.stop();
|
eng_two_man_start.stop();
|
||||||
setprop("/engines/engine[1]/state", 2);
|
pts.Engines.Engine.state[1].setValue(2);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 1);
|
igniterA[1].setValue(1);
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 1);
|
igniterB[1].setValue(1);
|
||||||
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||||
eng_two_egt_check.start();
|
eng_two_egt_check.start();
|
||||||
eng_two_n2_check.start();
|
eng_two_n2_check.start();
|
||||||
|
@ -295,7 +294,7 @@ var eng_two_man_start = maketimer(0.5, func {
|
||||||
});
|
});
|
||||||
|
|
||||||
var eng_two_egt_check = maketimer(0.5, func {
|
var eng_two_egt_check = maketimer(0.5, func {
|
||||||
if (getprop("/engines/engine[1]/egt-actual") >= egt_start) {
|
if (pts.Engines.Engine.egtActual[1].getValue() >= egt_start) {
|
||||||
eng_two_egt_check.stop();
|
eng_two_egt_check.stop();
|
||||||
interpolate(engines[1].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
interpolate(engines[1].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
||||||
}
|
}
|
||||||
|
@ -303,17 +302,17 @@ var eng_two_egt_check = maketimer(0.5, func {
|
||||||
|
|
||||||
var eng_two_n2_check = maketimer(0.5, func {
|
var eng_two_n2_check = maketimer(0.5, func {
|
||||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 43.0) {
|
if (pts.Engines.Engine.n2Actual[1].getValue() >= 43.0) {
|
||||||
if (getprop("/controls/engines/engine[1]/igniter-a") != 0) {
|
if (igniterA[1].getValue() != 0) {
|
||||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
igniterA[1].setValue(0);
|
||||||
}
|
}
|
||||||
if (getprop("/controls/engines/engine[1]/igniter-b") != 0) {
|
if (igniterB[1].getValue() != 0) {
|
||||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
igniterB[1].setValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 57.0) {
|
if (pts.Engines.Engine.n2Actual[1].getValue() >= 57.0) {
|
||||||
eng_two_n2_check.stop();
|
eng_two_n2_check.stop();
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/engines/engine[1]/state", 3);
|
pts.Engines.Engine.state[1].setValue(3);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -327,31 +326,31 @@ setlistener("/controls/engines/engine-start-switch", func {
|
||||||
start_two_check();
|
start_two_check();
|
||||||
start_two_mancheck();
|
start_two_mancheck();
|
||||||
}
|
}
|
||||||
if ((getprop("/controls/engines/engine-start-switch") == 0) or (getprop("/controls/engines/engine-start-switch") == 1)) {
|
if ((pts.Controls.Engines.startSw.getValue() == 0) or (pts.Controls.Engines.startSw.getValue() == 1)) {
|
||||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||||
setprop("/controls/engines/engine[0]/starter", 0);
|
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/engines/engine[0]/state", 0);
|
pts.Engines.Engine.state[0].setValue(0);
|
||||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||||
setprop("/controls/engines/engine[1]/starter", 0);
|
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/engines/engine[1]/state", 0);
|
pts.Engines.Engine.state[1].setValue(0);
|
||||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}, 0, 0);
|
||||||
|
|
||||||
setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
||||||
if (systems.PNEU.Psi.engine1.getValue() < 24.5) {
|
if (systems.PNEU.Psi.engine1.getValue() < 24.5) {
|
||||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||||
setprop("/controls/engines/engine[0]/starter", 0);
|
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
systems.PNEU.Valves.starter1.setValue(0);
|
||||||
setprop("/engines/engine[0]/state", 0);
|
pts.Engines.Engine.state[0].setValue(0);
|
||||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -360,10 +359,10 @@ setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
||||||
setlistener("/systems/pneumatics/psi/engine-2-psi", func {
|
setlistener("/systems/pneumatics/psi/engine-2-psi", func {
|
||||||
if (systems.PNEU.Psi.engine2.getValue() < 24.5) {
|
if (systems.PNEU.Psi.engine2.getValue() < 24.5) {
|
||||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||||
setprop("/controls/engines/engine[1]/starter", 0);
|
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
systems.PNEU.Valves.starter2.setValue(0);
|
||||||
setprop("/engines/engine[1]/state", 0);
|
pts.Engines.Engine.state[1].setValue(0);
|
||||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -406,7 +406,7 @@ var Autobrake = {
|
||||||
me._mode = me.mode.getValue();
|
me._mode = me.mode.getValue();
|
||||||
me._active = me.active.getBoolValue();
|
me._active = me.active.getBoolValue();
|
||||||
if (me._gnd_speed > 72) {
|
if (me._gnd_speed > 72) {
|
||||||
if (me._mode != 0 and pts.Controls.Engines.Engine.throttle[0].getValue() < 0.15 and pts.Controls.Engines.Engine.throttle[1].getValue() < 0.15 and me._wow0) {
|
if (me._mode != 0 and pts.Controls.Engines.Engine.throttle[0].getValue() < 0.15 and pts.Controls.Engines.Engine.throttle[1].getValue() < 0.15 and me._wow0 and systems.HYD.Brakes.askidSw.getValue() and systems.HYD.Psi.green.getValue() >= 2500 ) {
|
||||||
me.active.setBoolValue(1);
|
me.active.setBoolValue(1);
|
||||||
} elsif (me._active) {
|
} elsif (me._active) {
|
||||||
me.active.setBoolValue(0);
|
me.active.setBoolValue(0);
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
# Jonathan Redpath
|
# Jonathan Redpath
|
||||||
|
|
||||||
# Copyright (c) 2019 Jonathan Redpath
|
# Copyright (c) 2019 Jonathan Redpath
|
||||||
|
var lcont = 0;
|
||||||
|
var rcont = 0;
|
||||||
|
|
||||||
var HYD = {
|
var HYD = {
|
||||||
Brakes: {
|
Brakes: {
|
||||||
|
@ -10,10 +12,11 @@ var HYD = {
|
||||||
rightPressPsi: props.globals.initNode("/systems/hydraulic/brakes/pressure-right-psi", 0, "INT"),
|
rightPressPsi: props.globals.initNode("/systems/hydraulic/brakes/pressure-right-psi", 0, "INT"),
|
||||||
askidSw: props.globals.initNode("/systems/hydraulic/brakes/askidnwssw", 1, "BOOL"),
|
askidSw: props.globals.initNode("/systems/hydraulic/brakes/askidnwssw", 1, "BOOL"),
|
||||||
mode: props.globals.initNode("/systems/hydraulic/brakes/mode", 0, "INT"),
|
mode: props.globals.initNode("/systems/hydraulic/brakes/mode", 0, "INT"),
|
||||||
|
leftbrake: props.globals.getNode("/controls/gear/brake-left"),
|
||||||
|
rightbrake: props.globals.getNode("/controls/gear/brake-right"),
|
||||||
lbrake: props.globals.initNode("/systems/hydraulic/brakes/lbrake", 0, "INT"),
|
lbrake: props.globals.initNode("/systems/hydraulic/brakes/lbrake", 0, "INT"),
|
||||||
rbrake: props.globals.initNode("/systems/hydraulic/brakes/rbrake", 0, "INT"),
|
rbrake: props.globals.initNode("/systems/hydraulic/brakes/rbrake", 0, "INT"),
|
||||||
noserubber: props.globals.initNode("/systems/hydraulic/brakes/nose-rubber", 0, "INT"),
|
noserubber: props.globals.initNode("/systems/hydraulic/brakes/nose-rubber", 0, "INT"),
|
||||||
counter: props.globals.initNode("/systems/hydraulic/brakes/counter", 0, "INT"),
|
|
||||||
},
|
},
|
||||||
Fail: {
|
Fail: {
|
||||||
blueElec: props.globals.getNode("/systems/failures/hydraulic/blue-elec"),
|
blueElec: props.globals.getNode("/systems/failures/hydraulic/blue-elec"),
|
||||||
|
@ -85,11 +88,110 @@ var HYD = {
|
||||||
me.Fail.yellowLeak.setBoolValue(0);
|
me.Fail.yellowLeak.setBoolValue(0);
|
||||||
},
|
},
|
||||||
loop: func() {
|
loop: func() {
|
||||||
|
if (me.Brakes.leftbrake.getValue() == 1) {
|
||||||
|
me.Brakes.lbrake.setValue(1);
|
||||||
|
} else {
|
||||||
|
me.Brakes.lbrake.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rightbrake.getValue() == 1) {
|
||||||
|
me.Brakes.rbrake.setValue(1);
|
||||||
|
} else {
|
||||||
|
me.Brakes.rbrake.setValue(0);
|
||||||
|
}
|
||||||
|
if (props.globals.getValue("/controls/gear/nws-switch") == 1) {
|
||||||
|
me.Brakes.askidSw.setBoolValue(1); #true
|
||||||
|
} else {
|
||||||
|
me.Brakes.askidSw.setBoolValue(0); #false
|
||||||
|
}
|
||||||
if (me.Brakes.mode.getValue() == 2) {
|
if (me.Brakes.mode.getValue() == 2) {
|
||||||
if (me.Psi.yellow.getValue() > 2500 and me.Brakes.accumPressPsi.getValue() < 700) {
|
if (me.Psi.yellow.getValue() > 2500 and me.Brakes.accumPressPsi.getValue() < 700) {
|
||||||
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() + 50);
|
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() + 50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Decrease accumPressPsi when green and yellow hydraulic's aren't pressurized
|
||||||
|
if (me.Brakes.leftbrake.getValue() > 0) {
|
||||||
|
lcont = lcont + 1;
|
||||||
|
} else {
|
||||||
|
lcont = 0;
|
||||||
|
}
|
||||||
|
if (me.Brakes.rightbrake.getValue() > 0) {
|
||||||
|
rcont = rcont + 1;
|
||||||
|
} else {
|
||||||
|
rcont = 0;
|
||||||
|
}
|
||||||
|
if ((me.Psi.green.getValue() == 0) and (me.Psi.yellow.getValue() == 0) and (me.Brakes.accumPressPsi.getValue()) > 0) {
|
||||||
|
if (lcont == 1) {
|
||||||
|
#me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - (35 * me.Brakes.leftbrake.getValue()));
|
||||||
|
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - 35);
|
||||||
|
}
|
||||||
|
if (rcont == 1) {
|
||||||
|
#me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - (35 * me.Brakes.leftbrake.getValue()));
|
||||||
|
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - 35);
|
||||||
|
}
|
||||||
|
if (me.Brakes.accumPressPsi.getValue() < 0) {
|
||||||
|
me.Brakes.accumPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Braking Pressure
|
||||||
|
if (me.Brakes.mode.getValue() == 1 or (me.Brakes.mode.getValue() == 2 and me.Psi.green.getValue() >= 2500)) {
|
||||||
|
# Normal braking - Green OK
|
||||||
|
if (me.Brakes.lbrake.getValue() > 0) {
|
||||||
|
me.Brakes.leftPressPsi.setValue(props.globals.getValue("/systems/hydraulic/green-psi-ptu"));
|
||||||
|
} else {
|
||||||
|
me.Brakes.leftPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rbrake.getValue() > 0) {
|
||||||
|
me.Brakes.rightPressPsi.setValue(props.globals.getValue("/systems/hydraulic/green-psi-ptu"));
|
||||||
|
} else {
|
||||||
|
me.Brakes.rightPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (me.Brakes.mode.getValue() == 2 and me.Psi.green.getValue() < 2500) {
|
||||||
|
# Alternate Braking (Yellow OK + Antiskid ON + electric OK) - missing condition: BSCU OK-KO
|
||||||
|
if (me.Psi.yellow.getValue() >= 2500 and me.Brakes.askidSw.getValue() and props.globals.getValue("/systems/electrical/serviceable")) {
|
||||||
|
if (me.Brakes.lbrake.getValue() > 0) {
|
||||||
|
me.Brakes.leftPressPsi.setValue(props.globals.getValue("/systems/hydraulic/yellow-psi-ptu"));
|
||||||
|
} else {
|
||||||
|
me.Brakes.leftPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rbrake.getValue() > 0) {
|
||||||
|
me.Brakes.rightPressPsi.setValue(props.globals.getValue("/systems/hydraulic/yellow-psi-ptu"));
|
||||||
|
} else {
|
||||||
|
me.Brakes.rightPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Alternate Braking (Yellow OK + Antiskid OFF + electric OK) - missing condition: BSCU OK-KO
|
||||||
|
if (me.Psi.yellow.getValue() >= 2500 and !me.Brakes.askidSw.getValue() and props.globals.getValue("/systems/electrical/serviceable")) {
|
||||||
|
if (me.Brakes.lbrake.getValue() > 0) {
|
||||||
|
me.Brakes.leftPressPsi.setValue(1000);
|
||||||
|
} else {
|
||||||
|
me.Brakes.leftPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rbrake.getValue() > 0) {
|
||||||
|
me.Brakes.rightPressPsi.setValue(1000);
|
||||||
|
} else {
|
||||||
|
me.Brakes.rightPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Alternate Braking (Yellow KO or Antiskid KO or electric KO) - missing condition: BSCU OK-KO
|
||||||
|
if (me.Psi.yellow.getValue() < 2500 or !me.Brakes.askidSw.getValue() or !props.globals.getValue("/systems/electrical/serviceable")) {
|
||||||
|
if (me.Brakes.lbrake.getValue() > 0) {
|
||||||
|
me.Brakes.leftPressPsi.setValue(me.Brakes.accumPressPsi.getValue());
|
||||||
|
} else {
|
||||||
|
me.Brakes.leftPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
if (me.Brakes.rbrake.getValue() > 0) {
|
||||||
|
me.Brakes.rightPressPsi.setValue(me.Brakes.accumPressPsi.getValue());
|
||||||
|
} else {
|
||||||
|
me.Brakes.rightPressPsi.setValue(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,8 @@ var PNEU = {
|
||||||
pack2: props.globals.getNode("/systems/air-conditioning/valves/flow-control-valve-2"),
|
pack2: props.globals.getNode("/systems/air-conditioning/valves/flow-control-valve-2"),
|
||||||
ramAir: props.globals.getNode("/systems/air-conditioning/valves/ram-air"),
|
ramAir: props.globals.getNode("/systems/air-conditioning/valves/ram-air"),
|
||||||
hotAir: props.globals.getNode("/systems/air-conditioning/valves/hot-air"),
|
hotAir: props.globals.getNode("/systems/air-conditioning/valves/hot-air"),
|
||||||
|
starter1: props.globals.getNode("/systems/pneumatics/valves/starter-valve-1"),
|
||||||
|
starter2: props.globals.getNode("/systems/pneumatics/valves/starter-valve-2"),
|
||||||
},
|
},
|
||||||
pressMode: props.globals.getNode("/systems/pressurization/mode", 1),
|
pressMode: props.globals.getNode("/systems/pressurization/mode", 1),
|
||||||
init: func() {
|
init: func() {
|
||||||
|
|
|
@ -30,23 +30,7 @@ var execLoop = func
|
||||||
emesary.GlobalTransmitter.NotifyAll(notifications.frameNotification);
|
emesary.GlobalTransmitter.NotifyAll(notifications.frameNotification);
|
||||||
|
|
||||||
notifications.frameNotification.FrameCount = notifications.frameNotification.FrameCount + 1;
|
notifications.frameNotification.FrameCount = notifications.frameNotification.FrameCount + 1;
|
||||||
|
frame_inc = 0.0333; #30 Hz
|
||||||
if (notifications.frameNotification.frame_rate < 5) {
|
|
||||||
frame_inc = 0.25;#4 Hz
|
|
||||||
} elsif (notifications.frameNotification.frame_rate < 10) {
|
|
||||||
frame_inc = 0.125;#8 Hz
|
|
||||||
} elsif (notifications.frameNotification.frame_rate < 15) {
|
|
||||||
frame_inc = 0.10;#10 Hz
|
|
||||||
} elsif (notifications.frameNotification.frame_rate < 20) {
|
|
||||||
frame_inc = 0.075;#13.3 Hz
|
|
||||||
} elsif (notifications.frameNotification.frame_rate < 25) {
|
|
||||||
frame_inc = 0.05;#20 Hz
|
|
||||||
} elsif (notifications.frameNotification.frame_rate < 40) {
|
|
||||||
frame_inc = 0.0333;#30 Hz
|
|
||||||
} else {
|
|
||||||
frame_inc = 0.02;#50 Hz
|
|
||||||
}
|
|
||||||
|
|
||||||
if (frame_inc != cur_frame_inc) {
|
if (frame_inc != cur_frame_inc) {
|
||||||
cur_frame_inc = frame_inc;
|
cur_frame_inc = frame_inc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,9 +94,15 @@
|
||||||
<switch name="hydraulics/aileron-l/pressure-switch-or">
|
<switch name="hydraulics/aileron-l/pressure-switch-or">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="OR" value="1">
|
<test logic="OR" value="1">
|
||||||
/systems/hydraulic/green-psi ge 1500
|
<test logic="AND">
|
||||||
|
/systems/fctl/elac1 eq 1
|
||||||
/systems/hydraulic/blue-psi ge 1500
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
</test>
|
</test>
|
||||||
|
<test logic="AND">
|
||||||
|
/systems/fctl/elac2 eq 1
|
||||||
|
/systems/hydraulic/green-psi ge 1500
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
<switch name="hydraulics/aileron-l/switch">
|
<switch name="hydraulics/aileron-l/switch">
|
||||||
|
@ -167,9 +173,15 @@
|
||||||
<switch name="hydraulics/aileron-r/pressure-switch-or">
|
<switch name="hydraulics/aileron-r/pressure-switch-or">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="OR" value="1">
|
<test logic="OR" value="1">
|
||||||
|
<test logic="AND">
|
||||||
|
/systems/fctl/elac1 eq 1
|
||||||
/systems/hydraulic/green-psi ge 1500
|
/systems/hydraulic/green-psi ge 1500
|
||||||
|
</test>
|
||||||
|
<test logic="AND">
|
||||||
|
/systems/fctl/elac2 eq 1
|
||||||
/systems/hydraulic/blue-psi ge 1500
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
</test>
|
</test>
|
||||||
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
<switch name="hydraulics/aileron-r/switch">
|
<switch name="hydraulics/aileron-r/switch">
|
||||||
|
@ -229,16 +241,42 @@
|
||||||
<switch name="hydraulics/elevator-l/pressure-switch-or">
|
<switch name="hydraulics/elevator-l/pressure-switch-or">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="OR" value="1">
|
<test logic="OR" value="1">
|
||||||
/systems/hydraulic/green-psi ge 1500
|
<test logic="AND">
|
||||||
|
<test logic="OR">
|
||||||
|
/systems/fctl/elac1 eq 1
|
||||||
|
/systems/fctl/sec1 eq 1
|
||||||
|
</test>
|
||||||
/systems/hydraulic/blue-psi ge 1500
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
</test>
|
</test>
|
||||||
|
<test logic="AND">
|
||||||
|
<test logic="OR">
|
||||||
|
/systems/fctl/elac2 eq 1
|
||||||
|
/systems/fctl/sec2 eq 1
|
||||||
|
</test>
|
||||||
|
/systems/hydraulic/green-psi ge 1500
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
<switch name="hydraulics/elevator-l/switch">
|
<switch name="hydraulics/elevator-l/switch">
|
||||||
<default value="hydraulics/elevator-droop"/>
|
<default value="hydraulics/elevator-droop"/>
|
||||||
|
<test logic="AND" value="0">
|
||||||
|
<test logic="OR">
|
||||||
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
|
/systems/hydraulic/green-psi ge 1500
|
||||||
|
</test>
|
||||||
|
/systems/failures/elevator-left eq 0
|
||||||
|
<test logic="AND"> <!-- only pitch trim available -->
|
||||||
|
/systems/fctl/elac1 eq 0
|
||||||
|
/systems/fctl/sec1 eq 0
|
||||||
|
/systems/fctl/elac2 eq 0
|
||||||
|
/systems/fctl/sec2 eq 0
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
<test logic="AND" value="hydraulics/elevator-output-switch">
|
<test logic="AND" value="hydraulics/elevator-output-switch">
|
||||||
hydraulics/elevator-l/pressure-switch-or eq 1
|
hydraulics/elevator-l/pressure-switch-or eq 1
|
||||||
/systems/failures/elevator-left eq 0
|
/systems/failures/elevator-left eq 0
|
||||||
|
/it-fbw/law ne 3
|
||||||
</test>
|
</test>
|
||||||
<clipto>
|
<clipto>
|
||||||
<min>-1.0</min>
|
<min>-1.0</min>
|
||||||
|
@ -269,16 +307,42 @@
|
||||||
<switch name="hydraulics/elevator-r/pressure-switch-or">
|
<switch name="hydraulics/elevator-r/pressure-switch-or">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="OR" value="1">
|
<test logic="OR" value="1">
|
||||||
/systems/hydraulic/yellow-psi ge 1500
|
<test logic="AND">
|
||||||
|
<test logic="OR">
|
||||||
|
/systems/fctl/elac1 eq 1
|
||||||
|
/systems/fctl/sec1 eq 1
|
||||||
|
</test>
|
||||||
/systems/hydraulic/blue-psi ge 1500
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
</test>
|
</test>
|
||||||
|
<test logic="AND">
|
||||||
|
<test logic="OR">
|
||||||
|
/systems/fctl/elac2 eq 1
|
||||||
|
/systems/fctl/sec2 eq 1
|
||||||
|
</test>
|
||||||
|
/systems/hydraulic/yellow-psi ge 1500
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
<switch name="hydraulics/elevator-r/switch">
|
<switch name="hydraulics/elevator-r/switch">
|
||||||
<default value="hydraulics/elevator-droop"/>
|
<default value="hydraulics/elevator-droop"/>
|
||||||
|
<test logic="AND" value="0">
|
||||||
|
<test logic="OR">
|
||||||
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
|
/systems/hydraulic/yellow-psi ge 1500
|
||||||
|
</test>
|
||||||
|
/systems/failures/elevator-right eq 0
|
||||||
|
<test logic="AND"> <!-- only pitch trim available -->
|
||||||
|
/systems/fctl/elac1 eq 0
|
||||||
|
/systems/fctl/sec1 eq 0
|
||||||
|
/systems/fctl/elac2 eq 0
|
||||||
|
/systems/fctl/sec2 eq 0
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
<test logic="AND" value="hydraulics/elevator-output-switch">
|
<test logic="AND" value="hydraulics/elevator-output-switch">
|
||||||
hydraulics/elevator-r/pressure-switch-or eq 1
|
hydraulics/elevator-r/pressure-switch-or eq 1
|
||||||
/systems/failures/elevator-right eq 0
|
/systems/failures/elevator-right eq 0
|
||||||
|
/it-fbw/law ne 3
|
||||||
</test>
|
</test>
|
||||||
<clipto>
|
<clipto>
|
||||||
<min>-1.0</min>
|
<min>-1.0</min>
|
||||||
|
@ -307,7 +371,10 @@
|
||||||
<channel name="Pitch Trim">
|
<channel name="Pitch Trim">
|
||||||
|
|
||||||
<switch name="hydraulics/elevator-trim/rate">
|
<switch name="hydraulics/elevator-trim/rate">
|
||||||
<default value="0.125"/>
|
<default value="0"/> <!-- only mechanical input to hyd actuator. So it does need hydraulic power -->
|
||||||
|
<test logic="OR" value="0">
|
||||||
|
/systems/failures/fctl/ths-jam eq 1
|
||||||
|
</test>
|
||||||
<test logic="OR" value="0.25">
|
<test logic="OR" value="0.25">
|
||||||
/systems/hydraulic/yellow-psi ge 1500
|
/systems/hydraulic/yellow-psi ge 1500
|
||||||
/systems/hydraulic/green-psi ge 1500
|
/systems/hydraulic/green-psi ge 1500
|
||||||
|
|
|
@ -2049,6 +2049,117 @@
|
||||||
<rate_limit sense="incr">3.33333333333</rate_limit> <!-- 0.3 seconds -->
|
<rate_limit sense="incr">3.33333333333</rate_limit> <!-- 0.3 seconds -->
|
||||||
</actuator>
|
</actuator>
|
||||||
|
|
||||||
|
<switch name="/ECAM/warnings/fctl/leftElevFault-cond">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="1">
|
||||||
|
<test logic="OR">
|
||||||
|
<test logic="AND">
|
||||||
|
/systems/fctl/elac1 eq 0
|
||||||
|
/systems/fctl/sec1 eq 0
|
||||||
|
</test>
|
||||||
|
/systems/hydraulic/blue-psi lt 1500
|
||||||
|
</test>
|
||||||
|
<test logic="OR">
|
||||||
|
<test logic="AND">
|
||||||
|
/systems/fctl/elac2 eq 0
|
||||||
|
/systems/fctl/sec2 eq 0
|
||||||
|
</test>
|
||||||
|
/systems/hydraulic/green-psi lt 1500
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/ECAM/warnings/fctl/leftElevFault">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="1">
|
||||||
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
|
/systems/hydraulic/green-psi ge 1500
|
||||||
|
/systems/electrical/bus/dc-2 ge 25
|
||||||
|
/ECAM/warnings/fctl/lrElevFault ne 1
|
||||||
|
<test logic="OR">
|
||||||
|
/controls/fctl/switches/elac1 eq 1
|
||||||
|
/controls/fctl/switches/elac2 eq 1
|
||||||
|
/controls/fctl/switches/sec1 eq 1
|
||||||
|
/controls/fctl/switches/sec2 eq 1
|
||||||
|
</test>
|
||||||
|
/ECAM/warnings/fctl/leftElevFault-cond eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/ECAM/warnings/fctl/leftElevFault-output">
|
||||||
|
<input>/ECAM/warnings/fctl/leftElevFault</input>
|
||||||
|
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
|
||||||
|
<rate_limit sense="incr">3.33333333333</rate_limit> <!-- 0.3 seconds -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
|
<switch name="/ECAM/warnings/fctl/rightElevFault-cond">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="1">
|
||||||
|
<test logic="OR">
|
||||||
|
<test logic="AND">
|
||||||
|
/systems/fctl/elac1 eq 0
|
||||||
|
/systems/fctl/sec1 eq 0
|
||||||
|
</test>
|
||||||
|
/systems/hydraulic/blue-psi lt 1500
|
||||||
|
</test>
|
||||||
|
<test logic="OR">
|
||||||
|
<test logic="AND">
|
||||||
|
/systems/fctl/elac2 eq 0
|
||||||
|
/systems/fctl/sec2 eq 0
|
||||||
|
</test>
|
||||||
|
/systems/hydraulic/yellow-psi lt 1500
|
||||||
|
</test>
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<switch name="/ECAM/warnings/fctl/rightElevFault">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="1">
|
||||||
|
/systems/hydraulic/blue-psi ge 1500
|
||||||
|
/systems/hydraulic/yellow-psi ge 1500
|
||||||
|
/systems/electrical/bus/dc-2 ge 25
|
||||||
|
/ECAM/warnings/fctl/lrElevFault ne 1
|
||||||
|
<test logic="OR">
|
||||||
|
/controls/fctl/switches/elac1 eq 1
|
||||||
|
/controls/fctl/switches/elac2 eq 1
|
||||||
|
/controls/fctl/switches/sec1 eq 1
|
||||||
|
/controls/fctl/switches/sec2 eq 1
|
||||||
|
</test>
|
||||||
|
/ECAM/warnings/fctl/rightElevFault-cond eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/ECAM/warnings/fctl/rightElevFault-output">
|
||||||
|
<input>/ECAM/warnings/fctl/rightElevFault</input>
|
||||||
|
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
|
||||||
|
<rate_limit sense="incr">3.33333333333</rate_limit> <!-- 0.3 seconds -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
|
<switch name="/ECAM/warnings/fctl/altn-law">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="1">
|
||||||
|
/ECAM/warning-phase ne 1
|
||||||
|
/ECAM/warning-phase ne 10
|
||||||
|
/it-fbw/law eq 1
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
|
<actuator name="/ECAM/warnings/fctl/altn-law-output">
|
||||||
|
<input>/ECAM/warnings/fctl/altn-law</input>
|
||||||
|
<rate_limit sense="decr">120</rate_limit> <!-- Instant -->
|
||||||
|
<rate_limit sense="incr">3.33333333333</rate_limit> <!-- 0.3 seconds -->
|
||||||
|
</actuator>
|
||||||
|
|
||||||
|
|
||||||
|
<switch name="/ECAM/warnings/fctl/direct-law-output">
|
||||||
|
<default value="0"/>
|
||||||
|
<test logic="AND" value="1">
|
||||||
|
/ECAM/warning-phase ne 1
|
||||||
|
/ECAM/warning-phase ne 10
|
||||||
|
/it-fbw/law eq 2
|
||||||
|
</test>
|
||||||
|
</switch>
|
||||||
|
|
||||||
<switch name="/ECAM/warnings/fctl/gear-not-down-not-cancellable">
|
<switch name="/ECAM/warnings/fctl/gear-not-down-not-cancellable">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="AND" value="1">
|
<test logic="AND" value="1">
|
||||||
|
|
|
@ -710,46 +710,6 @@
|
||||||
<output>/controls/flight/auto-coordination</output>
|
<output>/controls/flight/auto-coordination</output>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
<!-- Braking -->
|
|
||||||
|
|
||||||
<filter>
|
|
||||||
<name>Left Press</name>
|
|
||||||
<type>gain</type>
|
|
||||||
<gain>1.0</gain>
|
|
||||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
|
||||||
<input>
|
|
||||||
<expression>
|
|
||||||
<table>
|
|
||||||
<property>/controls/gear/brake-left</property>
|
|
||||||
<entry><ind>0.0</ind><dep> 0</dep></entry>
|
|
||||||
<entry><ind>0.3</ind><dep>1000</dep></entry>
|
|
||||||
<entry><ind>0.6</ind><dep>2000</dep></entry>
|
|
||||||
<entry><ind>1.0</ind><dep>3000</dep></entry>
|
|
||||||
</table>
|
|
||||||
</expression>
|
|
||||||
</input>
|
|
||||||
<output>/systems/hydraulic/brakes/pressure-left-psi</output>
|
|
||||||
</filter>
|
|
||||||
|
|
||||||
<filter>
|
|
||||||
<name>Right Press</name>
|
|
||||||
<type>gain</type>
|
|
||||||
<gain>1.0</gain>
|
|
||||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
|
||||||
<input>
|
|
||||||
<expression>
|
|
||||||
<table>
|
|
||||||
<property>/controls/gear/brake-right</property>
|
|
||||||
<entry><ind>0.0</ind><dep> 0</dep></entry>
|
|
||||||
<entry><ind>0.3</ind><dep>1000</dep></entry>
|
|
||||||
<entry><ind>0.6</ind><dep>2000</dep></entry>
|
|
||||||
<entry><ind>1.0</ind><dep>3000</dep></entry>
|
|
||||||
</table>
|
|
||||||
</expression>
|
|
||||||
</input>
|
|
||||||
<output>/systems/hydraulic/brakes/pressure-right-psi</output>
|
|
||||||
</filter>
|
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<name>Left Door</name>
|
<name>Left Door</name>
|
||||||
<type>gain</type>
|
<type>gain</type>
|
||||||
|
|
|
@ -141,34 +141,6 @@
|
||||||
<output>/instrumentation/pfd/alt-diff</output>
|
<output>/instrumentation/pfd/alt-diff</output>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
<filter>
|
|
||||||
<name>Ground bug diff</name>
|
|
||||||
<type>gain</type>
|
|
||||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
|
||||||
<gain>1.0</gain>
|
|
||||||
<input>
|
|
||||||
<property>/position/ground-elev-ft</property>
|
|
||||||
</input>
|
|
||||||
<reference>
|
|
||||||
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
|
|
||||||
</reference>
|
|
||||||
<output>/instrumentation/pfd/ground-diff</output>
|
|
||||||
</filter>
|
|
||||||
|
|
||||||
<filter>
|
|
||||||
<name>Destination bug diff</name>
|
|
||||||
<type>gain</type>
|
|
||||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
|
||||||
<gain>1.0</gain>
|
|
||||||
<input>
|
|
||||||
<property>/FMGC/internal/ldg-elev</property>
|
|
||||||
</input>
|
|
||||||
<reference>
|
|
||||||
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
|
|
||||||
</reference>
|
|
||||||
<output>/instrumentation/pfd/landing-diff</output>
|
|
||||||
</filter>
|
|
||||||
|
|
||||||
<filter>
|
<filter>
|
||||||
<name>Localizer course diff</name>
|
<name>Localizer course diff</name>
|
||||||
<type>gain</type>
|
<type>gain</type>
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
41
|
42
|
Loading…
Add table
Reference in a new issue