Merge branch 'dev' into rework
|
@ -212,6 +212,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -211,6 +211,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -211,6 +211,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -1058,6 +1058,19 @@
|
|||
<ratman type="bool">0</ratman>
|
||||
</protectors>
|
||||
</OH>
|
||||
<oxygen>
|
||||
<cockpit-oxygen-supply-pb type="bool">0</cockpit-oxygen-supply-pb>
|
||||
<cockpit-mask-1-on type="bool">0</cockpit-mask-1-on>
|
||||
<cockpit-mask-2-on type="bool">0</cockpit-mask-2-on>
|
||||
<cockpit-mask-3-on type="bool">0</cockpit-mask-3-on>
|
||||
<cockpit-mask-4-on type="bool">0</cockpit-mask-4-on>
|
||||
<cockpit-mask-1-selector type="bool">0</cockpit-mask-1-selector>
|
||||
<cockpit-mask-2-selector type="bool">0</cockpit-mask-2-selector>
|
||||
<cockpit-mask-3-selector type="bool">0</cockpit-mask-3-selector>
|
||||
<cockpit-mask-4-selector type="bool">0</cockpit-mask-4-selector>
|
||||
<passenger-mask-deploy-man type="bool">0</passenger-mask-deploy-man>
|
||||
<passenger-mask-reset type="bool">0</passenger-mask-reset>
|
||||
</oxygen>
|
||||
<pneumatics n="0">
|
||||
<switches n="0">
|
||||
<apu type="bool">0</apu>
|
||||
|
@ -1285,8 +1298,6 @@
|
|||
<ac-ess-bus type="bool">0</ac-ess-bus>
|
||||
<ac-1-bus type="bool">0</ac-1-bus>
|
||||
<ac-2-bus type="bool">0</ac-2-bus>
|
||||
<bat-1 type="bool">0</bat-1>
|
||||
<bat-2 type="bool">0</bat-2>
|
||||
<dc-bat-bus type="bool">0</dc-bat-bus>
|
||||
<dc-ess-bus type="bool">0</dc-ess-bus>
|
||||
<dc-1-bus type="bool">0</dc-1-bus>
|
||||
|
@ -1580,6 +1591,7 @@
|
|||
<operating-3 type="bool">0</operating-3>
|
||||
</adr>
|
||||
</navigation>
|
||||
|
||||
</systems>
|
||||
|
||||
<options n="0">
|
||||
|
@ -4719,7 +4731,6 @@
|
|||
<file>Aircraft/A320-family/Nasal/MCDU/PERFTO.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/RADNAV.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/DATA.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/DATA2.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/STATUS.nas</file>
|
||||
</mcdu>
|
||||
<!-- Traffic layer from E-jet -->
|
||||
|
@ -4757,6 +4768,7 @@
|
|||
<file>Aircraft/A320-family/Models/Instruments/IESI/IESI.nas</file>
|
||||
</canvas_iesi>
|
||||
<canvas_mcdu>
|
||||
<file>Aircraft/A320-family/Models/Instruments/MCDU/MCDU-funcs.nas</file>
|
||||
<file>Aircraft/A320-family/Models/Instruments/MCDU/MCDU.nas</file>
|
||||
</canvas_mcdu>
|
||||
<canvas_qrh>
|
||||
|
|
|
@ -211,6 +211,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -211,6 +211,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-oxygen"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
|
|
|
@ -104,14 +104,30 @@ setlistener("/systems/acconfig/new-revision", func {
|
|||
}
|
||||
});
|
||||
|
||||
var fgfsMin = split(".", getprop("/sim/minimum-fg-version"));
|
||||
var fgfsVer = split(".", getprop("/sim/version/flightgear"));
|
||||
|
||||
var versionCheck = func() {
|
||||
if (fgfsVer[0] < fgfsMin[0] or fgfsVer[1] < fgfsMin[1]) {
|
||||
return 0;
|
||||
} else if (fgfsVer[1] == fgfsMin[1]) {
|
||||
if (fgfsVer[2] < fgfsMin[2]) {
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
var mismatch_chk = func {
|
||||
if (num(string.replace(getprop("/sim/version/flightgear"),".","")) < 201920) {
|
||||
if (!versionCheck()) {
|
||||
setprop("/systems/acconfig/mismatch-code", "0x121");
|
||||
setprop("/systems/acconfig/mismatch-reason", "FGFS version is too old! Please update FlightGear to at least 2019.2.0.");
|
||||
setprop("/systems/acconfig/mismatch-reason", "FGFS version is too old! Please update FlightGear to at least " ~ getprop("/sim/minimum-fg-version") ~ ".");
|
||||
if (getprop("/systems/acconfig/out-of-date") != 1) {
|
||||
error_mismatch.open();
|
||||
}
|
||||
libraries.systemsLoop.stop();
|
||||
print("Mismatch: 0x121");
|
||||
welcome_dlg.close();
|
||||
} else if (getprop("/gear/gear[0]/wow") == 0 or getprop("/position/altitude-ft") >= 15000) {
|
||||
|
@ -120,7 +136,6 @@ var mismatch_chk = func {
|
|||
if (getprop("/systems/acconfig/out-of-date") != 1) {
|
||||
error_mismatch.open();
|
||||
}
|
||||
libraries.systemsLoop.stop();
|
||||
print("Mismatch: 0x223");
|
||||
welcome_dlg.close();
|
||||
} else if (getprop("/systems/acconfig/libraries-loaded") != 1) {
|
||||
|
@ -129,7 +144,6 @@ var mismatch_chk = func {
|
|||
if (getprop("/systems/acconfig/out-of-date") != 1) {
|
||||
error_mismatch.open();
|
||||
}
|
||||
libraries.systemsLoop.stop();
|
||||
print("Mismatch: 0x247");
|
||||
welcome_dlg.close();
|
||||
}
|
||||
|
@ -323,7 +337,7 @@ var beforestart = func {
|
|||
setprop("/controls/flight/elevator-trim", 0);
|
||||
libraries.systemsInit();
|
||||
libraries.variousReset();
|
||||
setprop("/controls/oxygen/crewOxyPB", 1);
|
||||
setprop("/controls/oxygen/cockpit-oxygen-supply-pb", 1);
|
||||
failResetOld();
|
||||
|
||||
# Now the Startup!
|
||||
|
@ -419,7 +433,7 @@ var taxi = func {
|
|||
setprop("/controls/flight/elevator-trim", 0);
|
||||
libraries.systemsInit();
|
||||
libraries.variousReset();
|
||||
setprop("/controls/oxygen/crewOxyPB", 1);
|
||||
setprop("/controls/oxygen/cockpit-oxygen-supply-pb", 1);
|
||||
failResetOld();
|
||||
|
||||
# Now the Startup!
|
||||
|
|
|
@ -412,26 +412,6 @@
|
|||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>BATTERY 1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/electrical/bat-1</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>BATTERY 2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/electrical/bat-2</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>DC ESS BUS</label>
|
||||
<halign>left</halign>
|
||||
|
|
|
@ -172,6 +172,8 @@
|
|||
</hrule>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<checkbox>
|
||||
<label>Front Left</label>
|
||||
<halign>left</halign>
|
||||
|
@ -191,6 +193,7 @@
|
|||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
</group>
|
||||
|
||||
<checkbox>
|
||||
<label>Stairway Cover</label>
|
||||
|
@ -342,6 +345,59 @@
|
|||
<value>1</value>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
<text>
|
||||
<label>Oxygen</label>
|
||||
</text>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<button>
|
||||
<legend>Replace Oxygen Bottle</legend>
|
||||
<halign>center</halign>
|
||||
<padding>5</padding>
|
||||
<enable>
|
||||
<property>/gear/gear[1]/wow</property>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<value>2183</value>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>200</y>
|
||||
<label>8888 litres</label><!-- placeholder for width -->
|
||||
<format>%4.0f litres</format>
|
||||
<property>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<live>true</live>
|
||||
</text>
|
||||
</group>
|
||||
|
||||
<button>
|
||||
<legend>Reset Pax Oxy Masks</legend>
|
||||
<halign>center</halign>
|
||||
<padding>5</padding>
|
||||
<enable>
|
||||
<property>/gear/gear[1]/wow</property>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/systems/oxygen/passenger-oxygen/masks-deploy</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -996,6 +996,7 @@
|
|||
<property>modes/fo-du-xfr</property>
|
||||
<factor>-0.20062</factor>
|
||||
<axis>
|
||||
<x>-0.004984547901</x>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
|
@ -3073,6 +3074,10 @@
|
|||
<value>0</value>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/knb1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
@ -3437,6 +3442,10 @@
|
|||
<command>property-toggle</command>
|
||||
<property>modes/pfd/ILS1</property>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3472,6 +3481,10 @@
|
|||
<command>property-toggle</command>
|
||||
<property>modes/pfd/ILS2</property>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3544,9 +3557,12 @@
|
|||
} else {
|
||||
fcu.cpt_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3586,9 +3602,12 @@
|
|||
} else {
|
||||
fcu.fo_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3628,9 +3647,12 @@
|
|||
} else {
|
||||
fcu.cpt_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3670,9 +3692,12 @@
|
|||
} else {
|
||||
fcu.fo_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3712,9 +3737,12 @@
|
|||
} else {
|
||||
fcu.cpt_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3754,9 +3782,12 @@
|
|||
} else {
|
||||
fcu.fo_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3796,9 +3827,12 @@
|
|||
} else {
|
||||
fcu.cpt_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3838,9 +3872,12 @@
|
|||
} else {
|
||||
fcu.fo_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3880,9 +3917,12 @@
|
|||
} else {
|
||||
fcu.cpt_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -3922,9 +3962,12 @@
|
|||
} else {
|
||||
fcu.fo_efis_btns("off");
|
||||
}
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -4111,6 +4154,10 @@
|
|||
<value>1</value> <!-- VOR -->
|
||||
<value>-1</value> <!-- ADF -->
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/switch1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
|
@ -4122,6 +4169,10 @@
|
|||
<value>1</value> <!-- VOR -->
|
||||
<value>0</value> <!-- OFF -->
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/switch1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -4151,6 +4202,10 @@
|
|||
<value>1</value> <!-- VOR -->
|
||||
<value>-1</value> <!-- ADF -->
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/switch1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
|
@ -4162,6 +4217,10 @@
|
|||
<value>1</value> <!-- VOR -->
|
||||
<value>0</value> <!-- OFF -->
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/switch1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -4191,6 +4250,10 @@
|
|||
<value>1</value> <!-- VOR -->
|
||||
<value>-1</value> <!-- ADF -->
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/switch1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
|
@ -4202,6 +4265,10 @@
|
|||
<value>1</value> <!-- VOR -->
|
||||
<value>0</value> <!-- OFF -->
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/switch1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -4231,6 +4298,10 @@
|
|||
<value>1</value> <!-- VOR -->
|
||||
<value>-1</value> <!-- ADF -->
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/switch1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
|
@ -4242,6 +4313,10 @@
|
|||
<value>1</value> <!-- VOR -->
|
||||
<value>0</value> <!-- OFF -->
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/switch1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -5518,6 +5593,22 @@
|
|||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>metric_alt</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
fcu.FCUController.MetricAlt();
|
||||
setprop("sim/sounde/btn1", 1);
|
||||
</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<!-- Flap Lever -->
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
|
@ -6461,6 +6552,10 @@
|
|||
}
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
@ -6495,6 +6590,10 @@
|
|||
}
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
@ -7453,19 +7552,15 @@
|
|||
<object-name>vs.ind</object-name>
|
||||
<object-name>fpa.ind</object-name>
|
||||
<object-name>fpa.ind.001</object-name>
|
||||
<object-name>atc-code</object-name>
|
||||
<object-name>atc-test</object-name>
|
||||
<object-name>fpa-text</object-name>
|
||||
<object-name>qnh-inhg</object-name>
|
||||
<object-name>qnh-hpa</object-name>
|
||||
<object-name>qnh-std</object-name>
|
||||
<object-name>qnh-test</object-name>
|
||||
<object-name>rudder-trim</object-name>
|
||||
<object-name>rudder-trim-letter</object-name>
|
||||
<diffuse>
|
||||
<red>0.75</red>
|
||||
<green>0.30</green>
|
||||
<blue>0.0</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.515</green>
|
||||
<blue>0.00</blue>
|
||||
<factor-prop>controls/lighting/fcu-digit-norm</factor-prop>
|
||||
</diffuse>
|
||||
<ambient>
|
||||
|
@ -7479,9 +7574,9 @@
|
|||
<blue>0</blue>
|
||||
</specular>
|
||||
<emission>
|
||||
<red>0.75</red>
|
||||
<green>0.30</green>
|
||||
<blue>0.0</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.515</green>
|
||||
<blue>0.00</blue>
|
||||
<factor-prop>controls/lighting/fcu-digit-norm</factor-prop>
|
||||
</emission>
|
||||
</animation>
|
||||
|
@ -7490,10 +7585,12 @@
|
|||
<type>material</type>
|
||||
<object-name>rudder-trim</object-name>
|
||||
<object-name>rudder-trim-letter</object-name>
|
||||
<object-name>atc-code</object-name>
|
||||
<object-name>atc-test</object-name>
|
||||
<diffuse>
|
||||
<red>0.75</red>
|
||||
<green>0.30</green>
|
||||
<blue>0.0</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.355</green>
|
||||
<blue>0.00</blue>
|
||||
</diffuse>
|
||||
<ambient>
|
||||
<red>0</red>
|
||||
|
@ -7506,9 +7603,9 @@
|
|||
<blue>0</blue>
|
||||
</specular>
|
||||
<emission>
|
||||
<red>0.75</red>
|
||||
<green>0.30</green>
|
||||
<blue>0.0</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.355</green>
|
||||
<blue>0.00</blue>
|
||||
</emission>
|
||||
</animation>
|
||||
|
||||
|
@ -8909,9 +9006,9 @@
|
|||
<object-name>dme1</object-name>
|
||||
<!-- <object-name>dme1_20</object-name>-->
|
||||
<diffuse>
|
||||
<red>0.89</red>
|
||||
<green>0.37</green>
|
||||
<blue>0.08</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.355</green>
|
||||
<blue>0.00</blue>
|
||||
</diffuse>
|
||||
<ambient>
|
||||
<red>0</red>
|
||||
|
@ -8924,9 +9021,9 @@
|
|||
<blue>0</blue>
|
||||
</specular>
|
||||
<emission>
|
||||
<red>0.89</red>
|
||||
<green>0.37</green>
|
||||
<blue>0.08</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.355</green>
|
||||
<blue>0.00</blue>
|
||||
</emission>
|
||||
</animation>
|
||||
|
||||
|
@ -9056,6 +9153,10 @@
|
|||
<value>1</value>
|
||||
<value>2</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
@ -9073,6 +9174,10 @@
|
|||
<value>1</value>
|
||||
<value>2</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/btn1", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.5 KiB |
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 8.7 KiB |
|
@ -26,7 +26,6 @@ var canvas_lowerECAMPageDoor =
|
|||
obj["Cabin3LeftSlide"].hide();
|
||||
obj["Cabin3RightSlide"].hide();
|
||||
|
||||
obj["DOOROXY-REGUL-LO-PR"].hide();
|
||||
obj["AvionicsLine1"].hide();
|
||||
obj["AvionicsLine2"].hide();
|
||||
obj["AvionicsLbl1"].hide();
|
||||
|
@ -153,16 +152,23 @@ var canvas_lowerECAMPageDoor =
|
|||
obj["Cargo1Line"].hide();
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("oxyPB", nil, func(val) {
|
||||
if (val) {
|
||||
props.UpdateManager.FromHashList(["oxyPB","oxyBottlePress","oxyBottleRegulLoPr"], nil, func(val) {
|
||||
if (val.oxyPB) {
|
||||
if (val.oxyBottlePress < 300 or val.oxyBottleRegulLoPr) {
|
||||
obj["DOOROXY-OxyIndicator"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
obj["DOOROXY-OxyIndicator"].setColor(0.8078,0.8039,0.8078);
|
||||
obj["DOOROXY-PR"].setColor(0.0509,0.7529,0.2941);
|
||||
obj["DOOROXY-PR"].setText("1300");
|
||||
}
|
||||
} else {
|
||||
obj["DOOROXY-OxyIndicator"].setColor(0.7333,0.3803,0);
|
||||
obj["DOOROXY-PR"].setColor(0.7333,0.3803,0);
|
||||
obj["DOOROXY-PR"].setText("0");
|
||||
}
|
||||
|
||||
if (val.oxyBottlePress < 300) {
|
||||
obj["DOOROXY-PR"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
obj["DOOROXY-PR"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
obj["DOOROXY-PR"].setText(sprintf("%4.0f", math.round(val.oxyBottlePress, 10)));
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("pressVS", nil, func(val) {
|
||||
if (val > 9950) {
|
||||
|
@ -186,6 +192,13 @@ var canvas_lowerECAMPageDoor =
|
|||
obj["DOOR-VS-Container"].hide();
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("oxyBottleRegulLoPr", nil, func(val) {
|
||||
if (val) {
|
||||
obj["DOOROXY-REGUL-LO-PR"].show();
|
||||
} else {
|
||||
obj["DOOROXY-REGUL-LO-PR"].hide();
|
||||
}
|
||||
}),
|
||||
];
|
||||
|
||||
obj.displayedGForce = 0;
|
||||
|
@ -326,7 +339,9 @@ var input = {
|
|||
cargoAft: "/sim/model/door-positions/cargoaft/position-norm",
|
||||
cargoBulk: "/sim/model/door-positions/cargobulk/position-norm",
|
||||
cargoFwd: "/sim/model/door-positions/cargofwd/position-norm",
|
||||
oxyPB: "/controls/oxygen/crewOxyPB",
|
||||
oxyPB: "/controls/oxygen/cockpit-oxygen-supply-pb",
|
||||
oxyBottlePress: "/systems/oxygen/cockpit-oxygen/bottle-psi",
|
||||
oxyBottleRegulLoPr: "/systems/oxygen/cockpit-oxygen/regul-lo-pr",
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
|
|
|
@ -631,14 +631,16 @@ var canvas_lowerECAMPageElec =
|
|||
} else {
|
||||
obj["ELEC-Line-APU-EXT"].hide();
|
||||
}
|
||||
|
||||
if (val.elecExtEPC and (val.elecAcTie1 or val.elecAcTie2)) {
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("elecExtEPC", nil, func(val) {
|
||||
if (val) {
|
||||
obj["EXT-out"].show();
|
||||
} else {
|
||||
obj["EXT-out"].hide();
|
||||
}
|
||||
|
||||
if (val.apuGLC and (val.elecAcTie1 or val.elecAcTie2)) {
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("apuGLC", nil, func(val) {
|
||||
if (val) {
|
||||
obj["APU-out"].show();
|
||||
} else {
|
||||
obj["APU-out"].hide();
|
||||
|
|
359
Models/Instruments/MCDU/MCDU-funcs.nas
Normal file
|
@ -0,0 +1,359 @@
|
|||
var showLeft = func (obj, a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
if (a >= 1) {
|
||||
obj["Simple_L1"].show();
|
||||
} else {
|
||||
obj["Simple_L1"].hide();
|
||||
}
|
||||
}
|
||||
if (b != 0) {
|
||||
if (b >= 1) {
|
||||
obj["Simple_L2"].show();
|
||||
} else {
|
||||
obj["Simple_L2"].hide();
|
||||
}
|
||||
}
|
||||
if (c != 0) {
|
||||
if (c >= 1) {
|
||||
obj["Simple_L3"].show();
|
||||
} else {
|
||||
obj["Simple_L3"].hide();
|
||||
}
|
||||
}
|
||||
if (d != 0) {
|
||||
if (d >= 1) {
|
||||
obj["Simple_L4"].show();
|
||||
} else {
|
||||
obj["Simple_L4"].hide();
|
||||
}
|
||||
}
|
||||
if (e != 0) {
|
||||
if (e >= 1) {
|
||||
obj["Simple_L5"].show();
|
||||
} else {
|
||||
obj["Simple_L5"].hide();
|
||||
}
|
||||
}
|
||||
if (f != 0) {
|
||||
if (f >= 1) {
|
||||
obj["Simple_L6"].show();
|
||||
} else {
|
||||
obj["Simple_L6"].hide();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var showLeftS = func (obj, a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
if (a >= 1) {
|
||||
obj["Simple_L1S"].show();
|
||||
} else {
|
||||
obj["Simple_L1S"].hide();
|
||||
}
|
||||
}
|
||||
if (b != 0) {
|
||||
if (b >= 1) {
|
||||
obj["Simple_L2S"].show();
|
||||
} else {
|
||||
obj["Simple_L2S"].hide();
|
||||
}
|
||||
}
|
||||
if (c != 0) {
|
||||
if (c >= 1) {
|
||||
obj["Simple_L3S"].show();
|
||||
} else {
|
||||
obj["Simple_L3S"].hide();
|
||||
}
|
||||
}
|
||||
if (d != 0) {
|
||||
if (d >= 1) {
|
||||
obj["Simple_L4S"].show();
|
||||
} else {
|
||||
obj["Simple_L4S"].hide();
|
||||
}
|
||||
}
|
||||
if (e != 0) {
|
||||
if (e >= 1) {
|
||||
obj["Simple_L5S"].show();
|
||||
} else {
|
||||
obj["Simple_L5S"].hide();
|
||||
}
|
||||
}
|
||||
if (f != 0) {
|
||||
if (f >= 1) {
|
||||
obj["Simple_L6S"].show();
|
||||
} else {
|
||||
obj["Simple_L6S"].hide();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var showCenter = func (obj, a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
if (a >= 1) {
|
||||
obj["Simple_C1"].show();
|
||||
} else {
|
||||
obj["Simple_C1"].hide();
|
||||
}
|
||||
}
|
||||
if (b != 0) {
|
||||
if (b >= 1) {
|
||||
obj["Simple_C2"].show();
|
||||
} else {
|
||||
obj["Simple_C2"].hide();
|
||||
}
|
||||
}
|
||||
if (c != 0) {
|
||||
if (c >= 1) {
|
||||
obj["Simple_C3"].show();
|
||||
} else {
|
||||
obj["Simple_C3"].hide();
|
||||
}
|
||||
}
|
||||
if (d != 0) {
|
||||
if (d >= 1) {
|
||||
obj["Simple_C4"].show();
|
||||
} else {
|
||||
obj["Simple_C4"].hide();
|
||||
}
|
||||
}
|
||||
if (e != 0) {
|
||||
if (e >= 1) {
|
||||
obj["Simple_C5"].show();
|
||||
} else {
|
||||
obj["Simple_C5"].hide();
|
||||
}
|
||||
}
|
||||
if (f != 0) {
|
||||
if (f >= 1) {
|
||||
obj["Simple_C6"].show();
|
||||
} else {
|
||||
obj["Simple_C6"].hide();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var showCenterS = func (obj, a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
if (a >= 1) {
|
||||
obj["Simple_C1S"].show();
|
||||
} else {
|
||||
obj["Simple_C1S"].hide();
|
||||
}
|
||||
}
|
||||
if (b != 0) {
|
||||
if (b >= 1) {
|
||||
obj["Simple_C2S"].show();
|
||||
} else {
|
||||
obj["Simple_C2S"].hide();
|
||||
}
|
||||
}
|
||||
if (c != 0) {
|
||||
if (c >= 1) {
|
||||
obj["Simple_C3S"].show();
|
||||
} else {
|
||||
obj["Simple_C3S"].hide();
|
||||
}
|
||||
}
|
||||
if (d != 0) {
|
||||
if (d >= 1) {
|
||||
obj["Simple_C4S"].show();
|
||||
} else {
|
||||
obj["Simple_C4S"].hide();
|
||||
}
|
||||
}
|
||||
if (e != 0) {
|
||||
if (e >= 1) {
|
||||
obj["Simple_C5S"].show();
|
||||
} else {
|
||||
obj["Simple_C5S"].hide();
|
||||
}
|
||||
}
|
||||
if (f != 0) {
|
||||
if (f >= 1) {
|
||||
obj["Simple_C6S"].show();
|
||||
} else {
|
||||
obj["Simple_C6S"].hide();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var showRight = func (obj, a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
if (a >= 1) {
|
||||
obj["Simple_R1"].show();
|
||||
} else {
|
||||
obj["Simple_R1"].hide();
|
||||
}
|
||||
}
|
||||
if (b != 0) {
|
||||
if (b >= 1) {
|
||||
obj["Simple_R2"].show();
|
||||
} else {
|
||||
obj["Simple_R2"].hide();
|
||||
}
|
||||
}
|
||||
if (c != 0) {
|
||||
if (c >= 1) {
|
||||
obj["Simple_R3"].show();
|
||||
} else {
|
||||
obj["Simple_R3"].hide();
|
||||
}
|
||||
}
|
||||
if (d != 0) {
|
||||
if (d >= 1) {
|
||||
obj["Simple_R4"].show();
|
||||
} else {
|
||||
obj["Simple_R4"].hide();
|
||||
}
|
||||
}
|
||||
if (e != 0) {
|
||||
if (e >= 1) {
|
||||
obj["Simple_R5"].show();
|
||||
} else {
|
||||
obj["Simple_R5"].hide();
|
||||
}
|
||||
}
|
||||
if (f != 0) {
|
||||
if (f >= 1) {
|
||||
obj["Simple_R6"].show();
|
||||
} else {
|
||||
obj["Simple_R6"].hide();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var showRightS = func (obj, a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
if (a >= 1) {
|
||||
obj["Simple_R1S"].show();
|
||||
} else {
|
||||
obj["Simple_R1S"].hide();
|
||||
}
|
||||
}
|
||||
if (b != 0) {
|
||||
if (b >= 1) {
|
||||
obj["Simple_R2S"].show();
|
||||
} else {
|
||||
obj["Simple_R2S"].hide();
|
||||
}
|
||||
}
|
||||
if (c != 0) {
|
||||
if (c >= 1) {
|
||||
obj["Simple_R3S"].show();
|
||||
} else {
|
||||
obj["Simple_R3S"].hide();
|
||||
}
|
||||
}
|
||||
if (d != 0) {
|
||||
if (d >= 1) {
|
||||
obj["Simple_R4S"].show();
|
||||
} else {
|
||||
obj["Simple_R4S"].hide();
|
||||
}
|
||||
}
|
||||
if (e != 0) {
|
||||
if (e >= 1) {
|
||||
obj["Simple_R5S"].show();
|
||||
} else {
|
||||
obj["Simple_R5S"].hide();
|
||||
}
|
||||
}
|
||||
if (f != 0) {
|
||||
if (f >= 1) {
|
||||
obj["Simple_R6S"].show();
|
||||
} else {
|
||||
obj["Simple_R6S"].hide();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var showLeftArrow = func (obj, a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
if (a >= 1) {
|
||||
obj["Simple_L1_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_L1_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (b != 0) {
|
||||
if (b >= 1) {
|
||||
obj["Simple_L2_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_L2_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (c != 0) {
|
||||
if (c >= 1) {
|
||||
obj["Simple_L3_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_L3_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (d != 0) {
|
||||
if (d >= 1) {
|
||||
obj["Simple_L4_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_L4_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (e != 0) {
|
||||
if (e >= 1) {
|
||||
obj["Simple_L5_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_L5_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (f != 0) {
|
||||
if (f >= 1) {
|
||||
obj["Simple_L6_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_L6_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var showRightArrow = func (obj, a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
if (a >= 1) {
|
||||
obj["Simple_R1_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_R1_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (b != 0) {
|
||||
if (b >= 1) {
|
||||
obj["Simple_R2_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_R2_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (c != 0) {
|
||||
if (c >= 1) {
|
||||
obj["Simple_R3_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_R3_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (d != 0) {
|
||||
if (d >= 1) {
|
||||
obj["Simple_R4_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_R4_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (e != 0) {
|
||||
if (e >= 1) {
|
||||
obj["Simple_R5_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_R5_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
if (f != 0) {
|
||||
if (f >= 1) {
|
||||
obj["Simple_R6_Arrow"].show();
|
||||
} else {
|
||||
obj["Simple_R6_Arrow"].hide();
|
||||
}
|
||||
}
|
||||
};
|
|
@ -218,6 +218,7 @@ var canvas_ND_1 = {
|
|||
# here we make the ND:
|
||||
me.NDCpt = ND.new("/instrumentation/efis", myCockpit_switches, "Airbus");
|
||||
me.NDCpt.attitude_heading_setting = -1;
|
||||
me.NDCpt.number = 0;
|
||||
me.NDCpt.adirs_property = props.globals.getNode("/instrumentation/efis[0]/nd/ir-1",1);
|
||||
me.NDCpt.newMFD(canvas_group);
|
||||
me.NDCpt.change_phase = 0;
|
||||
|
@ -243,6 +244,7 @@ var canvas_ND_2 = {
|
|||
myCockpit_switches["ADIRS"]= {path: "/nd/ir-2", value: 0, type: "BOOL"};
|
||||
me.NDFo = ND.new("/instrumentation/efis[1]", myCockpit_switches, "Airbus");
|
||||
me.NDFo.attitude_heading_setting = 1;
|
||||
me.NDFo.number = 1;
|
||||
me.NDFo.adirs_property = props.globals.getNode("/instrumentation/efis[1]/nd/ir-2",1);
|
||||
me.NDFo.newMFD(canvas_group);
|
||||
me.NDFo.change_phase = 0;
|
||||
|
|
|
@ -225,7 +225,7 @@ canvas.NavDisplay.newMFD = func(canvas_group, parent=nil, nd_options=nil, update
|
|||
# anything that needs updatecenter called, should be added to the vector here
|
||||
#
|
||||
foreach(var element; ["staFromL2","staToL2","staFromR2","staToR2",
|
||||
"hdgTrk","trkInd","hdgBug","HdgBugCRT","TrkBugLCD","HdgBugLCD","curHdgPtr",
|
||||
"hdgTrk","hdgBug","HdgBugCRT","TrkBugLCD","HdgBugLCD","curHdgPtr",
|
||||
"HdgBugCRT2","TrkBugLCD2","HdgBugLCD2","hdgBug2","selHdgLine","selHdgLine2","curHdgPtr2",
|
||||
"staToL","staFromL","staToR","staFromR"] )
|
||||
me.symbols[element] = me.nd.getElementById(element).updateCenter();
|
||||
|
@ -613,13 +613,11 @@ canvas.NavDisplay.update = func() # FIXME: This stuff is still too aircraft spec
|
|||
if((me.in_mode("toggle_display_mode", ["MAP"]) and me.get_switch("toggle_display_type") == "CRT")
|
||||
or (me.get_switch("toggle_track_heading") and me.get_switch("toggle_display_type") == "LCD"))
|
||||
{
|
||||
me.symbols.trkInd.setRotation(0);
|
||||
me.symbols.curHdgPtr.setRotation((userHdg-userTrk)*D2R);
|
||||
me.symbols.curHdgPtr2.setRotation((userHdg-userTrk)*D2R);
|
||||
}
|
||||
else
|
||||
{
|
||||
me.symbols.trkInd.setRotation((userTrk-userHdg)*D2R);
|
||||
me.symbols.curHdgPtr.setRotation(0);
|
||||
me.symbols.curHdgPtr2.setRotation(0);
|
||||
}
|
||||
|
@ -656,10 +654,6 @@ canvas.NavDisplay.update = func() # FIXME: This stuff is still too aircraft spec
|
|||
var adf0hdg = getprop("/instrumentation/adf/indicated-bearing-deg");
|
||||
var adf1hdg = getprop("/instrumentation/adf[1]/indicated-bearing-deg");
|
||||
if(!me.get_switch("toggle_centered")) {
|
||||
if(me.in_mode("toggle_display_mode", ["PLAN"]) or (me.adirs_property.getValue() != 1 or (me.change_phase == 1) and (adirs_3.getValue() != 1 or att_switch.getValue() != me.attitude_heading_setting)))
|
||||
me.symbols.trkInd.hide();
|
||||
else
|
||||
me.symbols.trkInd.show();
|
||||
if((getprop("/instrumentation/nav[2]/in-range") and me.get_switch("toggle_lh_vor_adf") == 1)) {
|
||||
me.symbols.staToL.setColor(0.195,0.96,0.097);
|
||||
me.symbols.staFromL.setColor(0.195,0.96,0.097);
|
||||
|
@ -713,7 +707,6 @@ canvas.NavDisplay.update = func() # FIXME: This stuff is still too aircraft spec
|
|||
}
|
||||
me.symbols.selHdgLine.setVisible(staPtrVis and hdg_bug_active);
|
||||
} else {
|
||||
me.symbols.trkInd.hide();
|
||||
if((getprop("/instrumentation/nav[2]/in-range") and me.get_switch("toggle_lh_vor_adf") == 1)) {
|
||||
me.symbols.staFromL2.setColor(0.195,0.96,0.097);
|
||||
me.symbols.staToL2.setColor(0.195,0.96,0.097);
|
||||
|
|
|
@ -23,8 +23,7 @@ var init = func {
|
|||
var draw = func{
|
||||
if(me.decel_grp != nil){
|
||||
var spd_ctrl = getprop(me.options.spd_ctrl);
|
||||
var spd_managed = (spd_ctrl == me.options.managed_val);
|
||||
if(spd_managed)
|
||||
if(spd_ctrl)
|
||||
me.decel_grp.setColor(me.style.managed_color);
|
||||
else
|
||||
me.decel_grp.setColor(me.style.selected_color);
|
||||
|
|
|
@ -82,7 +82,7 @@ var draw = func{
|
|||
var wp_group = me.element;
|
||||
var alt = me.model.alt;
|
||||
var i = me.model.idx;
|
||||
var vnav_actv = getprop(me.options.ver_ctrl) == me.options.managed_val;
|
||||
var vnav_actv = getprop(me.options.spd_ctrl) == 1;
|
||||
var curwp = getprop(me.options.current_wp);
|
||||
if(alt > 0){
|
||||
var wp_d = me.model.wp.distance_along_route;
|
||||
|
|
|
@ -1183,43 +1183,29 @@
|
|||
x="198.86594"
|
||||
y="648.10144">99</tspan></text>
|
||||
|
||||
<g
|
||||
id="trkInd"
|
||||
inkscape:label="#g3107"
|
||||
inkscape:transform-center-y="-318.607"
|
||||
inkscape:transform-center-x="-0.165"><path
|
||||
inkscape:transform-center-y="-715.775"
|
||||
inkscape:label="#path3882"
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="curTrkPtr"
|
||||
<path
|
||||
style="display:inline;fill:none;stroke:#0dc04b;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 494.187,150.9257 512.25,179.3894 530.312,150.9257 512.25,122.462 Z"
|
||||
style="display:inline;fill:none;stroke:#0dc04b;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
|
||||
inkscape:label="#path6714"
|
||||
inkscape:transform-center-y="-436.38973"
|
||||
style="fill:none;stroke:#66b266;stroke-width:5.12176;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 512,179.04645 V 777.94594"
|
||||
id="curTrkPtr"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccc"
|
||||
inkscape:label="#path3882"
|
||||
inkscape:transform-center-y="-673.07581"
|
||||
inkscape:transform-center-x="-0.25" /><path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="trkline"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" /><path
|
||||
style="fill:none;stroke:#ededed;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 497.671,651.001 h 27.578"
|
||||
id="path3823"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3825"
|
||||
d="m 497.671,478.113 h 27.578"
|
||||
style="fill:none;stroke:#ededed;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
|
||||
style="fill:none;stroke:#ededed;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 498.171,306.64 h 27.578"
|
||||
id="path3827"
|
||||
inkscape:connector-curvature="0" /><path
|
||||
d="M 512,179.04645 V 777.94594"
|
||||
style="fill:none;stroke:#66b266;stroke-width:5.12175989;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:transform-center-y="-345.50518"
|
||||
inkscape:label="#path6714"
|
||||
inkscape:transform-center-x="-0.001953124" /><path
|
||||
sodipodi:nodetypes="cscc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="altArc"
|
||||
d="m 351.124,888.591 c 0,0 72.1,-39.455 161.041,-39.455 88.941,0 161.041,39.455 161.041,39.455 v 0"
|
||||
style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0"
|
||||
inkscape:label="#path3888-1" /></g>
|
||||
inkscape:label="#path3888-1" />
|
||||
<g
|
||||
inkscape:transform-center-x="-0.198874"
|
||||
inkscape:transform-center-y="4.4952743"
|
||||
|
@ -1614,22 +1600,24 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path4921"
|
||||
d="m 97.36195,-183.49186 34.40958,0.79658 v 0"
|
||||
style="fill:none;stroke:#ff00ff;stroke-width:6.72142;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g><g
|
||||
id="trkInd2"
|
||||
inkscape:transform-center-y="-221.51123"><path
|
||||
style="fill:none;stroke:#ff00ff;stroke-width:6.72142;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g>
|
||||
<path
|
||||
id="curTrkPtr2"
|
||||
d="M 494.187,114.9257 512.25,143.3894 530.312,114.9257 512.25,86.462 Z"
|
||||
style="display:inline;fill:none;stroke:#0dc04b;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
inkscape:label="#path3998" /><path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="trkline2"
|
||||
inkscape:label="#path3998"
|
||||
inkscape:transform-center-x="-0.28439381"
|
||||
inkscape:transform-center-y="-400.24318" /><path
|
||||
inkscape:label="#path6714"
|
||||
inkscape:transform-center-y="-195.62267"
|
||||
style="fill:none;stroke:#66b266;stroke-width:4.09095001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 512,143.84995 V 525.93899"
|
||||
style="fill:none;stroke:#66b266;stroke-width:4.09095;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:transform-center-y="-278.41021"
|
||||
inkscape:label="#path6714" /></g><path
|
||||
id="trkline2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:transform-center-x="-0.16436971" /><path
|
||||
id="aplSymVor"
|
||||
style="fill:none;stroke:#ededed;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 523.994,501.789 v 58 h 51.042 m -51.042,0 v 57 h 18.782 m -43.653,-115 v 58 h -50.158 m 50.158,0 v 57 h -19.136"
|
||||
|
|
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 149 KiB |
|
@ -529,7 +529,7 @@ canvas.NDStyles["Airbus"] = {
|
|||
var lat_ctrl = getprop(me.options.lat_ctrl);
|
||||
var is_managed = (lat_ctrl == me.options.managed_val);
|
||||
var is_active = getprop(me.options.fplan_active);
|
||||
(is_managed and is_active ? [] : [32, 16]);
|
||||
(is_managed and is_active ? [] : [12, 12]);
|
||||
},
|
||||
line_dash_alternate_active: [32,16],
|
||||
line_dash_temporary: [32,16],
|
||||
|
@ -561,6 +561,7 @@ canvas.NDStyles["Airbus"] = {
|
|||
"fplan_active",
|
||||
"lat_ctrl",
|
||||
"ver_ctrl",
|
||||
"spd_ctrl",
|
||||
"current_wp",
|
||||
"wp_count",
|
||||
"dep_rwy",
|
||||
|
@ -707,18 +708,33 @@ canvas.NDStyles["Airbus"] = {
|
|||
id: "nd_warn_memo",
|
||||
impl: {
|
||||
init: func(nd, symbol),
|
||||
predicate: ALWAYS,
|
||||
is_true: func(nd) nd.symbols.nd_warn_memo.hide(),
|
||||
is_false: func(nd),
|
||||
predicate: func(nd) {
|
||||
(!systems.ADIRS.Operating.aligned[0].getBoolValue() and !systems.ADIRS.Operating.aligned[1].getBoolValue() and !systems.ADIRS.Operating.aligned[2].getBoolValue())
|
||||
or (mcdu_scratchpad.scratchpads[nd.number].showTypeIIMsg and mcdu_scratchpad.scratchpads[nd.number].scratchpad == "GPS PRIMARY")
|
||||
},
|
||||
is_true: func(nd) {
|
||||
nd.symbols.nd_warn_memo.show();
|
||||
if (mcdu_scratchpad.scratchpads[nd.number].showTypeIIMsg and mcdu_scratchpad.scratchpads[nd.number].scratchpad == "GPS PRIMARY") {
|
||||
nd.symbols.nd_warn_memo.setText("GPS PRIMARY");
|
||||
nd.symbols.nd_warn_memo.setColor(0.8078,0.8039,0.8078);
|
||||
} else {
|
||||
nd.symbols.nd_warn_memo.setText("GPS PRIMARY LOST");
|
||||
nd.symbols.nd_warn_memo.setColor(0.7333,0.3803,0);
|
||||
}
|
||||
},
|
||||
is_false: func(nd) nd.symbols.nd_warn_memo.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "nd_warn_msgbox",
|
||||
impl: {
|
||||
init: func(nd, symbol),
|
||||
predicate: ALWAYS,
|
||||
is_true: func(nd) nd.symbols.nd_warn_msgbox.hide(),
|
||||
is_false: func(nd),
|
||||
predicate: func(nd) {
|
||||
(!systems.ADIRS.Operating.aligned[0].getBoolValue() and !systems.ADIRS.Operating.aligned[1].getBoolValue() and !systems.ADIRS.Operating.aligned[2].getBoolValue())
|
||||
or (mcdu_scratchpad.scratchpads[nd.number].showTypeIIMsg and mcdu_scratchpad.scratchpads[nd.number].scratchpad == "GPS PRIMARY")
|
||||
},
|
||||
is_true: func(nd) nd.symbols.nd_warn_msgbox.show(),
|
||||
is_false: func(nd) nd.symbols.nd_warn_msgbox.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -743,21 +759,14 @@ canvas.NDStyles["Airbus"] = {
|
|||
id: "tas",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd) nd.aircraft_source.get_spd() > 100,
|
||||
predicate: func(nd) getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 60,
|
||||
is_true: func(nd) {
|
||||
nd.symbols.tas.setText(sprintf("%3.0f",getprop("/velocities/TAS") ));
|
||||
nd.symbols.tas.setText(sprintf("%3.0f",getprop("/instrumentation/airspeed-indicator/true-speed-kt")));
|
||||
nd.symbols.tas.show();
|
||||
},
|
||||
is_false: func(nd) nd.symbols.tas.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "tasLbl",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd) nd.aircraft_source.get_spd() > 100,
|
||||
is_true: func(nd) nd.symbols.tasLbl.show(),
|
||||
is_false: func(nd) nd.symbols.tasLbl.hide(),
|
||||
is_false: func(nd){
|
||||
nd.symbols.tas.setText("---");
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -991,12 +1000,6 @@ canvas.NDStyles["Airbus"] = {
|
|||
impl: {
|
||||
init: func(nd,symbol),
|
||||
common: func(nd) nd.symbols.gs.setText(sprintf("%3.0f",nd.aircraft_source.get_gnd_spd() )),
|
||||
predicate: func(nd) nd.aircraft_source.get_gnd_spd() >= 30,
|
||||
is_true: func(nd) {
|
||||
#nd.symbols.gs.show();
|
||||
nd.symbols.gs.setFontSize(36);
|
||||
},
|
||||
is_false: func(nd) {},#nd.symbols.gs.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -1318,36 +1321,47 @@ canvas.NDStyles["Airbus"] = {
|
|||
is_false: func(nd) nd.symbols.dme.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
id:"curTrkPtr",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd) (nd.in_mode("toggle_display_mode", ["APP","VOR","MAP"]) and !nd.get_switch("toggle_centered")
|
||||
and (nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting))
|
||||
and abs(nd.aircraft_source.get_trk_mag() - nd.aircraft_source.get_hdg_mag()) <= 42),
|
||||
is_true: func(nd) {
|
||||
nd.symbols.curTrkPtr.setRotation((nd.aircraft_source.get_trk_mag()-nd.aircraft_source.get_hdg_mag())*D2R);
|
||||
nd.symbols.curTrkPtr.show();
|
||||
},
|
||||
is_false: func(nd) nd.symbols.curTrkPtr.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
id:"trkline",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd){
|
||||
nd.get_switch("toggle_display_mode") == "MAP" and !nd.get_switch("toggle_centered")
|
||||
and (nd.change_phase != 1)
|
||||
and (
|
||||
getprop(nd.options.defaults.lat_ctrl) != nd.options.defaults.managed_val or
|
||||
nd.get_switch("toggle_trk_line")
|
||||
)
|
||||
},
|
||||
predicate: func(nd) (nd.get_switch("toggle_display_mode") == "MAP" and
|
||||
!nd.get_switch("toggle_centered") and (nd.change_phase != 1) and
|
||||
getprop(nd.options.defaults.lat_ctrl) == 0 and abs(nd.aircraft_source.get_trk_mag() - nd.aircraft_source.get_hdg_mag()) <= 42 and
|
||||
(nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting))),
|
||||
is_true: func(nd) {
|
||||
nd.symbols.trkline.setRotation((nd.aircraft_source.get_trk_mag()-nd.aircraft_source.get_hdg_mag())*D2R);
|
||||
nd.symbols.trkline.show();
|
||||
},
|
||||
is_false: func(nd) nd.symbols.trkline.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
id:"trkInd2",
|
||||
id:"curTrkPtr2",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd) (nd.in_mode("toggle_display_mode", ["APP","VOR","MAP"]) and nd.get_switch("toggle_centered")
|
||||
and (nd.change_phase != 1)
|
||||
and (nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting))),
|
||||
and (nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting))
|
||||
and abs(nd.aircraft_source.get_trk_mag() - nd.aircraft_source.get_hdg_mag()) <= 42),
|
||||
is_true: func(nd) {
|
||||
nd.symbols.trkInd2.show();
|
||||
nd.symbols.trkInd2.setRotation((nd.aircraft_source.get_trk_mag()-nd.aircraft_source.get_hdg_mag())*D2R);
|
||||
nd.symbols.curTrkPtr2.setRotation((nd.aircraft_source.get_trk_mag()-nd.aircraft_source.get_hdg_mag())*D2R);
|
||||
nd.symbols.curTrkPtr2.show();
|
||||
},
|
||||
is_false: func(nd) nd.symbols.trkInd2.hide(),
|
||||
is_false: func(nd) nd.symbols.curTrkPtr2.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -1356,9 +1370,10 @@ canvas.NDStyles["Airbus"] = {
|
|||
init: func(nd,symbol),
|
||||
predicate: func(nd) (nd.get_switch("toggle_display_mode") == "MAP" and
|
||||
nd.get_switch("toggle_centered") and (nd.change_phase != 1) and
|
||||
getprop(nd.options.defaults.lat_ctrl) != nd.options.defaults.managed_val and
|
||||
getprop(nd.options.defaults.lat_ctrl) == 0 and abs(nd.aircraft_source.get_trk_mag() - nd.aircraft_source.get_hdg_mag()) <= 42 and
|
||||
(nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting))),
|
||||
is_true: func(nd) {
|
||||
nd.symbols.trkline2.setRotation((nd.aircraft_source.get_trk_mag()-nd.aircraft_source.get_hdg_mag())*D2R);
|
||||
nd.symbols.trkline2.show();
|
||||
},
|
||||
is_false: func(nd) nd.symbols.trkline2.hide(),
|
||||
|
@ -1515,35 +1530,24 @@ canvas.NDStyles["Airbus"] = {
|
|||
id:"wind",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: ALWAYS,
|
||||
predicate: func(nd) (getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 100),
|
||||
is_true: func(nd) {
|
||||
var windDir = getprop("environment/wind-from-heading-deg");
|
||||
if(!nd.get_switch("toggle_true_north"))
|
||||
windDir = windDir + getprop("environment/magnetic-variation-deg");
|
||||
nd.symbols.wind.setText(sprintf("%03.0f / %02.0f",windDir,getprop("environment/wind-speed-kt")));
|
||||
var windDir = pts.Instrumentation.PFD.windDirection.getValue() or 0;
|
||||
nd.symbols.wind.setText(sprintf("%03.0f / %02.0f",windDir,pts.Instrumentation.PFD.windSpeed.getValue() or 0));
|
||||
},
|
||||
is_false: NOTHING,
|
||||
is_false: func(nd) {
|
||||
nd.symbols.wind.setText("---/--");
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
id:"windArrow",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd) (!(nd.in_mode("toggle_display_mode", ["PLAN"]) and (nd.get_switch("toggle_display_type") == "LCD"))),
|
||||
predicate: func(nd) (!(nd.in_mode("toggle_display_mode", ["PLAN"]) and (nd.get_switch("toggle_display_type") == "LCD")) and (pts.Instrumentation.PFD.windSpeed.getValue() or 0) >= 2 and getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 100),
|
||||
is_true: func(nd) {
|
||||
nd.symbols.windArrow.show();
|
||||
var windArrowRot = getprop("environment/wind-from-heading-deg");
|
||||
if(nd.in_mode("toggle_display_mode", ["MAP","PLAN"])) {
|
||||
if(nd.get_switch("toggle_true_north"))
|
||||
windArrowRot = windArrowRot - nd.aircraft_source.get_trk_tru();
|
||||
else
|
||||
windArrowRot = windArrowRot - nd.aircraft_source.get_trk_mag();
|
||||
} else {
|
||||
if(nd.get_switch("toggle_true_north"))
|
||||
windArrowRot = windArrowRot - nd.aircraft_source.get_hdg_tru();
|
||||
else
|
||||
windArrowRot = windArrowRot - nd.aircraft_source.get_hdg_mag();
|
||||
}
|
||||
var windArrowRot = (pts.Instrumentation.PFD.windDirection.getValue() or 0) - nd.aircraft_source.get_hdg_tru();
|
||||
nd.symbols.windArrow.setRotation(windArrowRot*D2R);
|
||||
},
|
||||
is_false: func(nd) nd.symbols.windArrow.hide(),
|
||||
|
|
|
@ -7314,6 +7314,10 @@
|
|||
<command>nasal</command>
|
||||
<script>libraries.MechCallFunc();</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>libraries.pushbutton();</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
@ -7333,6 +7337,33 @@
|
|||
<command>nasal</command>
|
||||
<script>libraries.CabinCallFunc();</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>libraries.pushbutton();</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>AftCabinCall</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>libraries.CabinCallFunc();</script>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>libraries.pushbutton();</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
@ -7502,37 +7533,13 @@
|
|||
</action>
|
||||
</animation-->
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>PassOxyInd</object-name>
|
||||
<object-name>PassOxyInd1S</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</condition>
|
||||
<command>property-toggle</command>
|
||||
<property>controls/oxygen/masksSys</property>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>libraries.pushbutton();</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>PassOxyInd1S</object-name>
|
||||
<condition>
|
||||
<or>
|
||||
<equals>
|
||||
<property>controls/oxygen/masksSys</property>
|
||||
<property>/systems/oxygen/passenger-oxygen/sys-on-light</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -7558,7 +7565,7 @@
|
|||
</greater-than-equals>
|
||||
</condition>
|
||||
<command>property-toggle</command>
|
||||
<property>controls/oxygen/crewOxyPB</property>
|
||||
<property>controls/oxygen/cockpit-oxygen-supply-pb</property>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
|
@ -7573,7 +7580,7 @@
|
|||
<condition>
|
||||
<or>
|
||||
<equals>
|
||||
<property>controls/oxygen/crewOxyPB</property>
|
||||
<property>controls/oxygen/cockpit-oxygen-supply-pb</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
<equals>
|
||||
|
@ -7603,8 +7610,9 @@
|
|||
</greater-than-equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-toggle</command>
|
||||
<property>controls/oxygen/masksDeployMan</property>
|
||||
<command>property-assign</command>
|
||||
<property>controls/oxygen/passenger-mask-deploy-man</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
|
@ -7616,6 +7624,24 @@
|
|||
<command>nasal</command>
|
||||
<script>libraries.pushbutton();</script>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<equals>
|
||||
<property>controls/OH/protectors/maskman</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-assign</command>
|
||||
<property>controls/oxygen/passenger-mask-deploy-man</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<equals>
|
||||
|
@ -7627,6 +7653,7 @@
|
|||
<property>controls/OH/protectors/maskman</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
|
|
@ -219,9 +219,9 @@ 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",
|
||||
"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",
|
||||
"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",
|
||||
"ALT_digit_DN","ALT_digit_UP_metric","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",
|
||||
"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","vsFMArate"];
|
||||
"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","vsFMArate","tailstrikeInd","Metric_box","Metric_letter","Metric_cur_alt"];
|
||||
},
|
||||
off: 0,
|
||||
on: 0,
|
||||
|
@ -346,6 +346,7 @@ var canvas_PFD_base = {
|
|||
PFD_2_mismatch.page.show();
|
||||
}
|
||||
},
|
||||
showMetricAlt: 0,
|
||||
updateCommon: func () {
|
||||
# FMA MAN TOGA MCT FLX THR
|
||||
# Set properties used a lot to a variable to avoid calling getValue() multiple times
|
||||
|
@ -395,6 +396,12 @@ var canvas_PFD_base = {
|
|||
|
||||
me["AI_agl"].setText(sprintf("%s", math.round(math.clamp(gear_agl_cur, 0, 2500))));
|
||||
|
||||
if (gear_agl_cur < 400 and pts.Velocities.groundspeed.getValue() > 50 and pts.Controls.Engines.Engine.throttlePos[0].getValue() < 0.78 and pts.Controls.Engines.Engine.throttlePos[1].getValue() < 0.78) {
|
||||
me["tailstrikeInd"].show();
|
||||
} else {
|
||||
me["tailstrikeInd"].hide();
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.phase < 3 or fmgc.flightPlanController.arrivalDist >= 250) {
|
||||
me["FMA_dh_box"].hide();
|
||||
me["FMA_dh"].hide();
|
||||
|
@ -1033,7 +1040,6 @@ var canvas_PFD_base = {
|
|||
me["QNH_std"].hide();
|
||||
me["QNH_box"].hide();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
# Get Angle of Attack from ADR1 or, depending on Switching panel, ADR3
|
||||
|
@ -1696,6 +1702,18 @@ var canvas_PFD_1 = {
|
|||
me["ALT_scale"].show();
|
||||
|
||||
me.altitude = dmc.DMController.DMCs[0].outputs[1].getValue();
|
||||
|
||||
if (me.showMetricAlt) {
|
||||
me["Metric_box"].show();
|
||||
me["Metric_letter"].show();
|
||||
me["Metric_cur_alt"].show();
|
||||
me["Metric_cur_alt"].setText(sprintf("%5.0f", me.altitude * 0.3048));
|
||||
} else {
|
||||
me["Metric_box"].hide();
|
||||
me["Metric_letter"].hide();
|
||||
me["Metric_cur_alt"].hide();
|
||||
}
|
||||
|
||||
me.altOffset = me.altitude / 500 - int(me.altitude / 500);
|
||||
me.middleAltText = roundaboutAlt(me.altitude / 100);
|
||||
me.middleAltOffset = nil;
|
||||
|
@ -1723,6 +1741,14 @@ var canvas_PFD_1 = {
|
|||
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
||||
|
||||
ap_alt_cur = ap_alt.getValue();
|
||||
|
||||
if (me.showMetricAlt) {
|
||||
me["ALT_digit_UP_metric"].show();
|
||||
me["ALT_digit_UP_metric"].setText(sprintf("%5.0fM", ap_alt_cur * 0.3048));
|
||||
} else {
|
||||
me["ALT_digit_UP_metric"].hide();
|
||||
}
|
||||
|
||||
alt_diff_cur = dmc.DMController.DMCs[0].outputs[7].getValue();
|
||||
if (alt_diff_cur >= -565 and alt_diff_cur <= 565) {
|
||||
me["ALT_target"].setTranslation(0, (alt_diff_cur / 100) * -48.66856);
|
||||
|
@ -1832,6 +1858,10 @@ var canvas_PFD_1 = {
|
|||
me["ALT_box_flash"].hide();
|
||||
me["ALT_box_amber"].hide();
|
||||
me["ALT_box"].hide();
|
||||
me["Metric_box"].hide();
|
||||
me["Metric_letter"].hide();
|
||||
me["Metric_cur_alt"].hide();
|
||||
me["ALT_digit_UP_metric"].hide();
|
||||
}
|
||||
|
||||
me.updateCommon();
|
||||
|
@ -2468,6 +2498,18 @@ var canvas_PFD_2 = {
|
|||
me["ALT_scale"].show();
|
||||
|
||||
me.altitude = dmc.DMController.DMCs[1].outputs[1].getValue();
|
||||
|
||||
if (me.showMetricAlt) {
|
||||
me["Metric_box"].show();
|
||||
me["Metric_letter"].show();
|
||||
me["Metric_cur_alt"].show();
|
||||
me["Metric_cur_alt"].setText(sprintf("%5.0f", me.altitude * 0.3048));
|
||||
} else {
|
||||
me["Metric_box"].hide();
|
||||
me["Metric_letter"].hide();
|
||||
me["Metric_cur_alt"].hide();
|
||||
}
|
||||
|
||||
me.altOffset = me.altitude / 500 - int(me.altitude / 500);
|
||||
me.middleAltText = roundaboutAlt(me.altitude / 100);
|
||||
me.middleAltOffset = nil;
|
||||
|
@ -2495,6 +2537,14 @@ var canvas_PFD_2 = {
|
|||
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
||||
|
||||
ap_alt_cur = ap_alt.getValue();
|
||||
|
||||
if (me.showMetricAlt) {
|
||||
me["ALT_digit_UP_metric"].show();
|
||||
me["ALT_digit_UP_metric"].setText(sprintf("%5.0fM", ap_alt_cur * 0.3048));
|
||||
} else {
|
||||
me["ALT_digit_UP_metric"].hide();
|
||||
}
|
||||
|
||||
alt_diff_cur = dmc.DMController.DMCs[1].outputs[7].getValue();
|
||||
if (alt_diff_cur >= -565 and alt_diff_cur <= 565) {
|
||||
me["ALT_target"].setTranslation(0, (alt_diff_cur / 100) * -48.66856);
|
||||
|
@ -2604,6 +2654,10 @@ var canvas_PFD_2 = {
|
|||
me["ALT_box_flash"].hide();
|
||||
me["ALT_box_amber"].hide();
|
||||
me["ALT_box"].hide();
|
||||
me["Metric_box"].hide();
|
||||
me["Metric_letter"].hide();
|
||||
me["Metric_cur_alt"].hide();
|
||||
me["ALT_digit_UP_metric"].hide();
|
||||
}
|
||||
|
||||
me.updateCommon();
|
||||
|
|
|
@ -41,9 +41,9 @@
|
|||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:cy="683.12157"
|
||||
inkscape:cx="1026.1197"
|
||||
inkscape:zoom="1.8101934"
|
||||
inkscape:cy="1074.3176"
|
||||
inkscape:cx="955.3885"
|
||||
inkscape:zoom="2"
|
||||
showgrid="true"
|
||||
id="namedview371"
|
||||
inkscape:window-height="705"
|
||||
|
@ -580,6 +580,13 @@
|
|||
id="path886"
|
||||
d="m 448.25473,1194.8172 66.90422,59.142 h -59.49742 v -14.7583 h 11.11022 l -18.51702,-19.615 -18.51702,19.615 h 11.11022 v 14.7583 h -59.49741 z"
|
||||
style="fill:none;stroke:#ff0000;stroke-width:7.42499971;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="tailstrikeInd"
|
||||
d="m 408.59584,403.53091 h 13.2497 l 26.49939,39.11651 26.49939,-39.11651 h 13.2497 l -39.74909,57.25812 z"
|
||||
style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:label="#tailstrikeInd" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(0,97.082371)"
|
||||
|
@ -2262,11 +2269,11 @@
|
|||
id="QNH_setting"
|
||||
y="885.26117"
|
||||
x="907.61713"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;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:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-opacity:1;"
|
||||
xml:space="preserve"
|
||||
transform="scale(1.0000144,0.9999856)"
|
||||
inkscape:label="#text979"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3994px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3994px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.75;stroke:none;stroke-opacity:1;"
|
||||
y="885.26117"
|
||||
x="907.61713"
|
||||
id="tspan977"
|
||||
|
@ -6269,4 +6276,50 @@
|
|||
x="417.56354"
|
||||
y="34.634907"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35.99950027px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.65757698">-800</tspan></text>
|
||||
<rect
|
||||
inkscape:label="#rect4290"
|
||||
y="896.48456"
|
||||
x="788.52734"
|
||||
height="36.03083"
|
||||
width="153.94527"
|
||||
id="Metric_box"
|
||||
style="fill:none;fill-opacity:1;stroke:#c9d121;stroke-width:3.20831394;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||
<text
|
||||
id="Metric_cur_alt"
|
||||
y="928.04248"
|
||||
x="847.62854"
|
||||
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
transform="scale(1.0000144,0.9999856)"
|
||||
inkscape:label="#text979"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3993988px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="928.04248"
|
||||
x="852.95343"
|
||||
id="tspan977-3"
|
||||
sodipodi:role="line">11070 </tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3993988px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
x="909.43152"
|
||||
y="928.62128"
|
||||
id="Metric_letter"
|
||||
inkscape:label="#text1815"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1813"
|
||||
x="909.43152"
|
||||
y="928.62128"
|
||||
style="font-size:38.3993988px;fill:#179ab7;fill-opacity:1;stroke-width:0.75">M</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text975"
|
||||
transform="scale(0.95382559,1.0484097)"
|
||||
id="ALT_digit_UP_metric"
|
||||
y="218.16887"
|
||||
x="604.67737"
|
||||
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"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke-width:0.75"
|
||||
y="218.16887"
|
||||
x="604.67737"
|
||||
id="tspan5116-2"
|
||||
sodipodi:role="line">10000M</tspan></text>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 341 KiB After Width: | Height: | Size: 344 KiB |
|
@ -2176,9 +2176,9 @@
|
|||
<object-name>rmp-standby</object-name>
|
||||
<object-name>rmp-standby-test</object-name>
|
||||
<diffuse>
|
||||
<red>0.89</red>
|
||||
<green>0.37</green>
|
||||
<blue>0.08</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.355</green>
|
||||
<blue>0.00</blue>
|
||||
</diffuse>
|
||||
<ambient>
|
||||
<red>0</red>
|
||||
|
@ -2191,9 +2191,9 @@
|
|||
<blue>0</blue>
|
||||
</specular>
|
||||
<emission>
|
||||
<red>0.89</red>
|
||||
<green>0.37</green>
|
||||
<blue>0.08</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.355</green>
|
||||
<blue>0.00</blue>
|
||||
</emission>
|
||||
</animation>
|
||||
|
||||
|
|
|
@ -2176,9 +2176,9 @@
|
|||
<object-name>rmp-standby</object-name>
|
||||
<object-name>rmp-standby-test</object-name>
|
||||
<diffuse>
|
||||
<red>0.89</red>
|
||||
<green>0.37</green>
|
||||
<blue>0.08</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.355</green>
|
||||
<blue>0.00</blue>
|
||||
</diffuse>
|
||||
<ambient>
|
||||
<red>0</red>
|
||||
|
@ -2191,9 +2191,9 @@
|
|||
<blue>0</blue>
|
||||
</specular>
|
||||
<emission>
|
||||
<red>0.89</red>
|
||||
<green>0.37</green>
|
||||
<blue>0.08</blue>
|
||||
<red>1.00</red>
|
||||
<green>0.355</green>
|
||||
<blue>0.00</blue>
|
||||
</emission>
|
||||
</animation>
|
||||
|
||||
|
|
Before Width: | Height: | Size: 246 KiB After Width: | Height: | Size: 259 KiB |
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0"?>
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<PropertyList>
|
||||
|
||||
|
@ -7,17 +7,56 @@
|
|||
|
||||
<path>Douglas.ac</path>
|
||||
|
||||
<!-- Lights-->
|
||||
|
||||
<model>
|
||||
<name>warning light left</name>
|
||||
<path>Aircraft/A320-family/Models/Services/Pushback/warning-light.xml</path>
|
||||
<offsets>
|
||||
<x-m>-4.308</x-m>
|
||||
<y-m>-1.08</y-m>
|
||||
<z-m>2.23</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>warning light center</name>
|
||||
<path>Aircraft/A320-family/Models/Services/Pushback/warning-light.xml</path>
|
||||
<offsets>
|
||||
<x-m>-3.795</x-m>
|
||||
<y-m>-0.2683</y-m>
|
||||
<z-m>2.343</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>warning light right</name>
|
||||
<path>Aircraft/A320-family/Models/Services/Pushback/warning-light.xml</path>
|
||||
<offsets>
|
||||
<x-m>-4.308</x-m>
|
||||
<y-m>0.5438</y-m>
|
||||
<z-m>2.229</z-m>
|
||||
</offsets>
|
||||
</model>
|
||||
|
||||
<!-- switch to night/day textures -->
|
||||
<animation>
|
||||
<type>textranslate</type>
|
||||
<!--<object-name>Mesh</object-name>
|
||||
<object-name>Mesh.001</object-name>
|
||||
<object-name>Mesh.002</object-name>
|
||||
<object-name>wheelfl</object-name>
|
||||
<object-name>wheelfr</object-name>
|
||||
<object-name>wheelrl</object-name>
|
||||
<object-name>wheelrr</object-name>-->
|
||||
<property>sim/time/sun-angle-rad</property>
|
||||
<step>1.60</step>
|
||||
<step>1.57</step>
|
||||
<factor>0.318471338</factor>
|
||||
<center>
|
||||
<!--<center>
|
||||
<x-m>0</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>0</z-m>
|
||||
</center>
|
||||
</center>-->
|
||||
<axis>
|
||||
<x>-1</x>
|
||||
<y>0</y>
|
||||
|
@ -27,6 +66,13 @@
|
|||
|
||||
<animation>
|
||||
<type>material</type>
|
||||
<!--<object-name>Mesh</object-name>
|
||||
<object-name>Mesh.001</object-name>
|
||||
<object-name>Mesh.002</object-name>
|
||||
<object-name>wheelfl</object-name>
|
||||
<object-name>wheelfr</object-name>
|
||||
<object-name>wheelrl</object-name>
|
||||
<object-name>wheelrr</object-name>-->
|
||||
<condition>
|
||||
<greater-than>
|
||||
<property>sim/time/sun-angle-rad</property>
|
||||
|
@ -42,6 +88,13 @@
|
|||
|
||||
<animation>
|
||||
<type>material</type>
|
||||
<!--<object-name>Mesh</object-name>
|
||||
<object-name>Mesh.001</object-name>
|
||||
<object-name>Mesh.002</object-name>
|
||||
<object-name>wheelfl</object-name>
|
||||
<object-name>wheelfr</object-name>
|
||||
<object-name>wheelrl</object-name>
|
||||
<object-name>wheelrr</object-name>-->
|
||||
<condition>
|
||||
<less-than-equals>
|
||||
<property>sim/time/sun-angle-rad</property>
|
||||
|
@ -55,6 +108,48 @@
|
|||
</emission>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>spin</type>
|
||||
<object-name>wheelfl</object-name>
|
||||
<object-name>wheelfr</object-name>
|
||||
<property>velocities/uBody-fps</property>
|
||||
<factor>-4.973</factor>
|
||||
<center>
|
||||
<x-m>-1.4081</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>0.58458</z-m>
|
||||
<!--<x>0</x>
|
||||
<y>0</y>
|
||||
<z>0</z>
|
||||
<x-m>2.0501</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>0.5735</z-m>-->
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>spin</type>
|
||||
<object-name>wheelrl</object-name>
|
||||
<object-name>wheelrr</object-name>
|
||||
<property>velocities/uBody-fps</property>
|
||||
<factor>-4.973</factor>
|
||||
<center>
|
||||
<x-m>2.2942</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>0.44266</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<condition>
|
||||
|
@ -79,6 +174,24 @@
|
|||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- change heading of the pushback when driving the arc -->
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<property>sim/model/pushback/position-norm</property>
|
||||
<factor>-90</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<center>
|
||||
<x-m>0</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>0</z-m>
|
||||
</center>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<z>1</z>
|
||||
</axis>
|
||||
</animation>
|
||||
|
||||
<!-- compensate for gear compression -->
|
||||
<animation>
|
||||
<type>translate</type>
|
||||
|
@ -108,4 +221,4 @@
|
|||
</axis>
|
||||
</animation>
|
||||
|
||||
</PropertyList>
|
||||
</PropertyList>
|
||||
|
|
24
Models/Services/Pushback/warning-light.ac
Normal file
|
@ -0,0 +1,24 @@
|
|||
AC3Db
|
||||
MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
|
||||
MATERIAL "DefaultWhite.001" rgb 1 1 1 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.025 0.025 0.025 shi 50 trans 0.1
|
||||
OBJECT world
|
||||
kids 1
|
||||
OBJECT poly
|
||||
name "warning-als"
|
||||
data 8
|
||||
Mesh.005
|
||||
crease 30.000000
|
||||
numvert 4
|
||||
-0.090665 -0.991468 -0.999611
|
||||
-0.090663 1.008532 -0.999611
|
||||
-0.090662 -0.991468 1.000389
|
||||
-0.090661 1.008532 1.000389
|
||||
numsurf 1
|
||||
SURF 0x20
|
||||
mat 1
|
||||
refs 4
|
||||
1 0.0 0.0
|
||||
0 0.0 0.0
|
||||
2 0.0 0.0
|
||||
3 0.0 0.0
|
||||
kids 0
|
34
Models/Services/Pushback/warning-light.eff
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PropertyList>
|
||||
<name>Effects/warning-als</name>
|
||||
<inherits-from>Effects/procedural-light</inherits-from>
|
||||
|
||||
<parameters>
|
||||
<texture n="0">
|
||||
<type>white</type>
|
||||
</texture>
|
||||
|
||||
<light_color_base_r type="float">0.98</light_color_base_r>
|
||||
<light_color_base_g type="float">0.75</light_color_base_g>
|
||||
<light_color_base_b type="float">0.0</light_color_base_b>
|
||||
<light_color_center_r type="float">0.98</light_color_center_r>
|
||||
<light_color_center_g type="float">0.75</light_color_center_g>
|
||||
<light_color_center_b type="float">0.0</light_color_center_b>
|
||||
<intensity_scale type="float">0.8</intensity_scale>
|
||||
<!--<pointing_x type="float">0.0</pointing_x>
|
||||
<pointing_y type="float">0.0</pointing_y>
|
||||
<pointing_z type="float">0.0</pointing_z>-->
|
||||
<is_directional type="bool">false</is_directional>
|
||||
<is_strobe type="bool">true</is_strobe>
|
||||
<!--<inner_angle type="float">0.2</inner_angle>
|
||||
<outer_angle type="float">0.4</outer_angle>
|
||||
<zero_angle type="float">0.7</zero_angle>
|
||||
<outer_gain type="float">0.5</outer_gain>-->
|
||||
<visibility><use>environment/ground-visibility-m</use></visibility>
|
||||
<avisibility><use>environment/visibility-m</use></avisibility>
|
||||
<lthickness><use>environment/ground-haze-thickness-m</use></lthickness>
|
||||
<terrain_alt><use>environment/mean-terrain-elevation-m</use></terrain_alt>
|
||||
<eye_alt><use>sim/rendering/eye-altitude-m</use></eye_alt>
|
||||
<terminator><use>environment/terminator-relative-position-m</use></terminator>
|
||||
</parameters>
|
||||
</PropertyList>
|
40
Models/Services/Pushback/warning-light.xml
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<path>warning-light.ac</path>
|
||||
|
||||
<effect>
|
||||
<inherits-from>Aircraft/A320-family/Models/Services/Pushback/warning-light</inherits-from>
|
||||
<object-name>warning-als</object-name>
|
||||
</effect>
|
||||
|
||||
<animation>
|
||||
<type>scale</type>
|
||||
<x-offset>1.0</x-offset>
|
||||
<y-offset>1.0</y-offset>
|
||||
<z-offset>1.0</z-offset>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>dist-scale</type>
|
||||
<object-name>warning-als</object-name>
|
||||
<interpolation>
|
||||
<entry>
|
||||
<ind>0</ind>
|
||||
<dep>1</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>300</ind>
|
||||
<dep>4</dep>
|
||||
</entry>
|
||||
<entry>
|
||||
<ind>1500</ind>
|
||||
<dep>8</dep>
|
||||
</entry>
|
||||
</interpolation>
|
||||
</animation>
|
||||
|
||||
</PropertyList>
|
|
@ -36,6 +36,7 @@ var altAlertInhibit = nil;
|
|||
var alt200 = nil;
|
||||
var alt750 = nil;
|
||||
var bigThree = nil;
|
||||
var fltCtlLandAsap = 0;
|
||||
|
||||
var altAlertSteady = 0;
|
||||
var altAlertFlash = 0;
|
||||
|
@ -2098,7 +2099,7 @@ var messages_priority_2 = func {
|
|||
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")))) {
|
||||
if (!(systems.HYD.Warnings.greenAbnormLoPr.getValue() and (systems.HYD.Warnings.blueAbnormLoPr.getValue() or systems.HYD.Warnings.yellowAbnormLoPr.getValue()))) {
|
||||
altnLawMaxSpeed.active = 1;
|
||||
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
||||
} else {
|
||||
|
@ -2135,7 +2136,7 @@ var messages_priority_2 = func {
|
|||
if (getprop("/systems/thrust/thr-locked-flash") == 0) {
|
||||
athr_lock.msg = " ";
|
||||
} else {
|
||||
athr_lock.msg = msgSave
|
||||
athr_lock.msg = msgSave;
|
||||
}
|
||||
athr_lock.active = 1;
|
||||
athr_lock_1.active = 1;
|
||||
|
@ -3148,7 +3149,7 @@ var messages_config_memo = func {
|
|||
setprop("/ECAM/to-config-reset", 0);
|
||||
}
|
||||
|
||||
if (getprop("/controls/autobrake/mode") == 3) {
|
||||
if (systems.Autobrake.mode.getValue() == 3) {
|
||||
toMemoLine1.msg = "T.O AUTO BRK MAX";
|
||||
toMemoLine1.colour = "g";
|
||||
} else {
|
||||
|
@ -3411,14 +3412,20 @@ var messages_right_memo = func {
|
|||
ldg_inhibit.active = 0;
|
||||
}
|
||||
|
||||
if ((!pts.Gear.wow[1].getValue()) and (systems.ELEC.EmerElec.getValue() or getprop("/systems/fire/engine1/warning-active") == 1 or getprop("/systems/fire/engine2/warning-active") == 1 or getprop("/systems/fire/apu/warning-active") == 1 or getprop("/systems/failures/fire/cargo-aft-fire") == 1 or getprop("/systems/failures/fire/cargo-fwd-fire") == 1) or (((systems.HYD.Psi.green.getValue() < 1500 and pts.Engines.Engine.state[0].getValue() == 3) and (systems.HYD.Psi.yellow.getValue() < 1500 and pts.Engines.Engine.state[1].getValue() == 3)) or ((systems.HYD.Psi.green.getValue() < 1500 or systems.HYD.Psi.yellow.getValue() < 1500) and pts.Engines.Engine.state[0].getValue() == 3 and pts.Engines.Engine.state[1].getValue() == 3) and phaseVarMemo3 >= 3 and phaseVarMemo3 <= 8)) {
|
||||
# todo: emer elec
|
||||
if (!(FWC.Timer.gnd.getValue() == 1) and (systems.ELEC.EmerElec.getValue() or dualFailNode.getValue() == 1 or systems.eng1FireWarn.getValue() == 1 or systems.eng2FireWarn.getValue() == 1 or systems.apuFireWarn.getValue() == 1 or systems.aftCargoFireWarn.getValue() == 1 or systems.fwdCargoFireWarn.getValue() == 1 or (systems.HYD.Warnings.greenAbnormLoPr.getValue() and systems.HYD.Warnings.yellowAbnormLoPr.getValue()) or (systems.HYD.Warnings.greenAbnormLoPr.getValue() and systems.HYD.Warnings.blueAbnormLoPr.getValue()) or (systems.HYD.Warnings.blueAbnormLoPr.getValue() and systems.HYD.Warnings.yellowAbnormLoPr.getValue()))) {
|
||||
land_asap_r.active = 1;
|
||||
} else {
|
||||
land_asap_r.active = 0;
|
||||
}
|
||||
|
||||
if (land_asap_r.active == 0 and !pts.Gear.wow[1].getValue() and ((getprop("/fdm/jsbsim/propulsion/tank[0]/contents-lbs") < 1650 and getprop("/fdm/jsbsim/propulsion/tank[1]/contents-lbs") < 1650) or ((getprop("/systems/electrical/bus/dc-2") < 25 and (getprop("/systems/failures/fctl/elac1") == 1 or getprop("/systems/failures/fctl/sec1") == 1)) or (systems.HYD.Psi.green.getValue() < 1500 and (getprop("/systems/failures/fctl/elac1") == 1 and getprop("/systems/failures/fctl/sec1") == 1)) or (systems.HYD.Psi.yellow.getValue() < 1500 and (getprop("/systems/failures/fctl/elac1") == 1 and getprop("/systems/failures/fctl/sec1") == 1)) or (systems.HYD.Psi.blue.getValue() < 1500 and (getprop("/systems/failures/fctl/elac2") == 1 and getprop("/systems/failures/fctl/sec2") == 1))) or (phaseVarMemo3 >= 3 and phaseVarMemo3 <= 8 and (pts.Engines.Engine.state[0].getValue() != 3 or pts.Engines.Engine.state[1].getValue() != 3)))) {
|
||||
if ((systems.ELEC.Bus.dc2.getValue() < 25 and (fbw.FBW.Failures.elac1.getValue() == 1 or fbw.FBW.Failures.sec1.getValue() == 1)) or ((systems.HYD.Psi.yellow.getValue() < 1500 or systems.HYD.Psi.green.getValue() < 1500) and (fbw.FBW.Failures.elac1.getValue() == 1 and fbw.FBW.Failures.sec1.getValue() == 1)) or (systems.HYD.Psi.blue.getValue() < 1500 and (fbw.FBW.Failures.elac2.getValue() == 1 and fbw.FBW.Failures.sec2.getValue() == 1))) {
|
||||
fltCtlLandAsap = 1;
|
||||
} else {
|
||||
fltCtlLandAsap = 0;
|
||||
}
|
||||
|
||||
if (land_asap_r.active == 0 and !(FWC.Timer.gnd.getValue() == 1) and (warningNodes.Timers.lowLevelBoth.getValue() == 1 or warningNodes.Logic.eng1Shutdown.getValue() or warningNodes.Logic.eng2Shutdown.getValue() or warningNodes.Logic.eng1Fail.getValue() or warningNodes.Logic.eng2Fail.getValue() or warningNodes.Timers.dcEmerConfig.getValue() == 1 or fltCtlLandAsap)) {
|
||||
# todo avionics smoke and reverse unlocked
|
||||
land_asap_a.active = 1;
|
||||
} else {
|
||||
land_asap_a.active = 0;
|
||||
|
@ -3460,12 +3467,6 @@ var messages_right_memo = func {
|
|||
park_brk.colour = "g";
|
||||
}
|
||||
|
||||
if (getprop("/controls/gear/brake-fans") == 1) {
|
||||
brk_fan.active = 1;
|
||||
} else {
|
||||
brk_fan.active = 0;
|
||||
}
|
||||
|
||||
if (systems.HYD.Switch.ptu.getValue() == 1 and ((systems.HYD.Psi.yellow.getValue() < 1450 and systems.HYD.Psi.green.getValue() > 1450 and getprop("/controls/hydraulic/elec-pump-yellow") == 0) or (systems.HYD.Psi.yellow.getValue() > 1450 and systems.HYD.Psi.green.getValue() < 1450))) {
|
||||
ptu.active = 1;
|
||||
} else {
|
||||
|
@ -3502,12 +3503,18 @@ var messages_right_memo = func {
|
|||
nw_strg_disc.colour = "g";
|
||||
}
|
||||
|
||||
if (getprop("/controls/pneumatics/switches/ram-air") == 1) {
|
||||
if (systems.PNEU.Switch.ramAir.getValue() == 1) {
|
||||
ram_air.active = 1;
|
||||
} else {
|
||||
ram_air.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/systems/oxygen/passenger-oxygen/sys-on-light") == 1) {
|
||||
pax_oxy.active = 1;
|
||||
} else {
|
||||
pax_oxy.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/engines/engine[0]/igniter-a") == 1 or getprop("/controls/engines/engine[0]/igniter-b") == 1 or getprop("/controls/engines/engine[1]/igniter-a") == 1 or getprop("/controls/engines/engine[1]/igniter-b") == 1) {
|
||||
ignition.active = 1;
|
||||
} else {
|
||||
|
@ -3531,31 +3538,13 @@ var messages_right_memo = func {
|
|||
company_call.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/pneumatics/switches/apu") == 1 and pts.APU.rpm.getValue() >= 95) {
|
||||
apu_bleed.active = 1;
|
||||
} else {
|
||||
apu_bleed.active = 0;
|
||||
}
|
||||
|
||||
if (apu_bleed.active == 0 and pts.APU.rpm.getValue() >= 95) {
|
||||
apu_avail.active = 1;
|
||||
} else {
|
||||
apu_avail.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/lighting/landing-lights[1]") > 0 or getprop("/controls/lighting/landing-lights[2]") > 0) {
|
||||
ldg_lt.active = 1;
|
||||
} else {
|
||||
ldg_lt.active = 0;
|
||||
}
|
||||
|
||||
if (mcdu.ReceivedMessagesDatabase.firstUnviewed() != -99 and (phaseVarMemo2 <= 2 or phaseVarMemo2 == 6 or phaseVarMemo2 >= 9)) {
|
||||
company_msg.active = 1;
|
||||
} else {
|
||||
company_msg.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/ice-protection/leng") == 1 or getprop("/controls/ice-protection/reng") == 1 or getprop("/systems/electrical/bus/dc-1") == 0 or getprop("/systems/electrical/bus/dc-2") == 0) {
|
||||
if (getprop("/controls/ice-protection/leng") == 1 or getprop("/controls/ice-protection/reng") == 1 or systems.ELEC.Bus.dc1.getValue() < 25 or systems.ELEC.Bus.dc2.getValue() < 25) {
|
||||
eng_aice.active = 1;
|
||||
} else {
|
||||
eng_aice.active = 0;
|
||||
|
@ -3567,30 +3556,66 @@ var messages_right_memo = func {
|
|||
wing_aice.active = 0;
|
||||
}
|
||||
|
||||
if (!getprop("/systems/radio/vhf3-data-mode") and (phaseVarMemo3 == 1 or phaseVarMemo3 == 2 or phaseVarMemo3 == 6 or phaseVarMemo3 == 9 or phaseVarMemo3 == 10)) {
|
||||
if (systems.PNEU.Switch.apu.getValue() == 1 and pts.APU.rpm.getValue() >= 95) {
|
||||
apu_bleed.active = 1;
|
||||
} else {
|
||||
apu_bleed.active = 0;
|
||||
}
|
||||
|
||||
if (apu_bleed.active == 0 and pts.APU.rpm.getValue() >= 95) {
|
||||
apu_avail.active = 1;
|
||||
} else {
|
||||
apu_avail.active = 0;
|
||||
}
|
||||
|
||||
if (pts.Controls.Lighting.landingLights[1].getValue() > 0 or pts.Controls.Lighting.landingLights[2].getValue() > 0) {
|
||||
ldg_lt.active = 1;
|
||||
} else {
|
||||
ldg_lt.active = 0;
|
||||
}
|
||||
|
||||
if (systems.BrakeSys.brakeFans.getValue() == 1) {
|
||||
brk_fan.active = 1;
|
||||
} else {
|
||||
brk_fan.active = 0;
|
||||
}
|
||||
|
||||
if (pts.Instrumentation.MKVII.Inputs.Discretes.flap3Override.getValue() == 1) { # todo: emer elec
|
||||
gpws_flap3.active = 1;
|
||||
} else {
|
||||
gpws_flap3.active = 0;
|
||||
}
|
||||
|
||||
if (!rmp.vhf3_data_mode.getValue() and (phaseVarMemo3 == 1 or phaseVarMemo3 == 2 or phaseVarMemo3 == 6 or phaseVarMemo3 == 9 or phaseVarMemo3 == 10)) {
|
||||
vhf3_voice.active = 1;
|
||||
} else {
|
||||
vhf3_voice.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/autobrake/mode") == 1 and (phaseVarMemo3 == 7 or phaseVarMemo3 == 8)) {
|
||||
if (systems.Autobrake.mode.getValue() == 1 and (phaseVarMemo3 == 7 or phaseVarMemo3 == 8)) {
|
||||
auto_brk_lo.active = 1;
|
||||
} else {
|
||||
auto_brk_lo.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/autobrake/mode") == 2 and (phaseVarMemo3 == 7 or phaseVarMemo3 == 8)) {
|
||||
if (systems.Autobrake.mode.getValue() == 2 and (phaseVarMemo3 == 7 or phaseVarMemo3 == 8)) {
|
||||
auto_brk_med.active = 1;
|
||||
} else {
|
||||
auto_brk_med.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/autobrake/mode") == 3 and (phaseVarMemo3 == 7 or phaseVarMemo3 == 8)) {
|
||||
if (systems.Autobrake.mode.getValue() == 3 and (phaseVarMemo3 == 7 or phaseVarMemo3 == 8)) {
|
||||
auto_brk_max.active = 1;
|
||||
} else {
|
||||
auto_brk_max.active = 0;
|
||||
}
|
||||
|
||||
if (phaseVarMemo3 >= 2 and phaseVarMemo3 <= 9 and systems.ELEC.Bus.ac1.getValue() >= 110 and systems.ELEC.Bus.ac2.getValue() >= 110 and (getprop("/systems/fuel/feed-center-1") or getprop("/systems/fuel/feed-center-2"))) {
|
||||
ctr_tk_feedg.active = 1;
|
||||
} else {
|
||||
ctr_tk_feedg.active = 0;
|
||||
}
|
||||
|
||||
if (systems.FUEL.Valves.crossfeed.getValue() != 0 and systems.FUEL.Switches.crossfeed.getValue()) {
|
||||
fuelx.active = 1;
|
||||
} else {
|
||||
|
@ -3603,16 +3628,10 @@ var messages_right_memo = func {
|
|||
fuelx.colour = "g";
|
||||
}
|
||||
|
||||
if (getprop("instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override") == 1) { # todo: emer elec
|
||||
gpws_flap3.active = 1;
|
||||
if (systems.SwitchingPanel.Switches.airData.getValue() != 0 or systems.SwitchingPanel.Switches.attHdg.getValue() != 0) {
|
||||
adirs_switch.active = 1;
|
||||
} else {
|
||||
gpws_flap3.active = 0;
|
||||
}
|
||||
|
||||
if (phaseVarMemo3 >= 2 and phaseVarMemo3 <= 9 and systems.ELEC.Bus.ac1.getValue() >= 110 and systems.ELEC.Bus.ac2.getValue() >= 110 and (getprop("/systems/fuel/feed-center-1") or getprop("/systems/fuel/feed-center-2"))) {
|
||||
ctr_tk_feedg.active = 1;
|
||||
} else {
|
||||
ctr_tk_feedg.active = 0;
|
||||
adirs_switch.active = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -796,8 +796,11 @@ var memos = std.Vector.new([
|
|||
var rat = memo.new(msg: "RAT OUT" ),
|
||||
var emer_gen = memo.new(msg: "EMER GEN" ),
|
||||
var ram_air = memo.new(msg: "RAM AIR ON" ),
|
||||
var pax_oxy = memo.new(msg: "OXY PAX ON" ),
|
||||
var nw_strg_disc = memo.new(msg: "NW STRG DISC"),
|
||||
var ignition = memo.new(msg: "IGNITION" ),
|
||||
var eng1Cowl = memo.new(msg: "ENG 1 COWL" ), # Not yet implemented (NEO)
|
||||
var eng2Cowl = memo.new(msg: "ENG 2 COWL" ), # Not yet implemented (NEO)
|
||||
var cabin_ready = memo.new(msg: "CABIN READY" ), # Not yet implemented
|
||||
var pred_ws_off = memo.new(msg: "PRED W/S OFF"), # Not yet implemented
|
||||
var terr_stby = memo.new(msg: "TERR STBY" ), # Not yet implemented
|
||||
|
@ -825,7 +828,8 @@ var memos = std.Vector.new([
|
|||
var auto_brk_off = memo.new(msg: "AUTO BRK OFF"), # Not yet implemented
|
||||
var man_ldg_elev = memo.new(msg: "MAN LDG ELEV"), # Not yet implemented
|
||||
var ctr_tk_feedg = memo.new(msg: "CTR TK FEEDG"),
|
||||
var fuelx = memo.new(msg: "FUEL X FEED" )
|
||||
var fuelx = memo.new(msg: "FUEL X FEED" ),
|
||||
var adirs_switch = memo.new(msg: "ADIRS SWTG" ) # Not yet implemented
|
||||
]);
|
||||
|
||||
var clearWarnings = std.Vector.new();
|
||||
|
|
|
@ -460,6 +460,12 @@ var FCUController = {
|
|||
}
|
||||
}
|
||||
},
|
||||
MetricAlt: func() {
|
||||
if (me.FCUworking) {
|
||||
canvas_pfd.PFD_1.showMetricAlt = !canvas_pfd.PFD_1.showMetricAlt;
|
||||
canvas_pfd.PFD_2.showMetricAlt = !canvas_pfd.PFD_2.showMetricAlt;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
# Master / slave principle of operation depending on the autopilot / flight director engagement
|
||||
|
|
|
@ -653,7 +653,7 @@ var masterFMGC = maketimer(0.2, func {
|
|||
}
|
||||
} elsif (FMGCInternal.phase == 3) {
|
||||
if (FMGCInternal.crzFl >= 200) {
|
||||
if ((flightPlanController.arrivalDist <= 200 or altSel < 20000)) {
|
||||
if ((flightPlanController.arrivalDist <= 200 and altSel < 20000)) {
|
||||
newphase = 4;
|
||||
systems.PNEU.pressMode.setValue("DE");
|
||||
}
|
||||
|
@ -667,10 +667,6 @@ var masterFMGC = maketimer(0.2, func {
|
|||
if (getprop("/FMGC/internal/decel")) {
|
||||
newphase = 5;
|
||||
}
|
||||
elsif (altSel == (FMGCInternal.crzFl * 100)) { # back to CRZ state
|
||||
newphase = 3;
|
||||
systems.PNEU.pressMode.setValue("CR");
|
||||
}
|
||||
} elsif (FMGCInternal.phase == 5) {
|
||||
if (state1 == "TOGA" and state2 == "TOGA") {
|
||||
newphase = 6;
|
||||
|
@ -683,7 +679,6 @@ var masterFMGC = maketimer(0.2, func {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
if (flightPlanController.num[2].getValue() > 0 and getprop("/FMGC/flightplan[2]/active") == 1 and
|
||||
flightPlanController.arrivalDist <= 15 and (modelat == "NAV" or modelat == "LOC" or modelat == "LOC*") and pts.Position.gearAglFt.getValue() < 9500) { #todo decel pseudo waypoint
|
||||
setprop("/FMGC/internal/decel", 1);
|
||||
|
|
|
@ -47,6 +47,13 @@ var MessageQueueController = {
|
|||
me.messages.pop(index);
|
||||
}
|
||||
},
|
||||
deleteWithText: func(text) {
|
||||
foreach (var message; me.messages.vector) {
|
||||
if (message.msgText == text) {
|
||||
me.messages.remove(message);
|
||||
}
|
||||
}
|
||||
},
|
||||
clearQueue: func() {
|
||||
me.messages.clear();
|
||||
},
|
||||
|
@ -190,6 +197,7 @@ var MessageController = {
|
|||
TypeIIMessage.new("STEP NOW"),TypeIIMessage.new("TIME TO EXIT", "amb", 0),TypeIIMessage.new("V1/VR/V2 DISAGREE", "amb", 0),
|
||||
TypeIIMessage.new("TO SPEED TOO LOW", "amb", 0),
|
||||
TypeIIMessage.new("CHECK DEST DATA", "amb", 0), #p.533
|
||||
TypeIIMessage.new("GPS PRIMARY"),TypeIIMessage.new("GPS PRIMARY LOST", "amb", 0),
|
||||
]),
|
||||
|
||||
# to speed to low - new on a320, margin against vmcg / vs1g
|
||||
|
@ -202,7 +210,7 @@ var MessageController = {
|
|||
},
|
||||
getMsgByText: func(text, theVector) {
|
||||
foreach (var message; theVector) {
|
||||
if (message.msgText = text) {
|
||||
if (message.msgText == text) {
|
||||
return message;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,6 @@ var variousReset = func() {
|
|||
setprop("/controls/CVR/gndctl", 0);
|
||||
setprop("/controls/CVR/erase", 0);
|
||||
setprop("/controls/switches/pneumatics/cabin-fans", 1);
|
||||
setprop("/controls/oxygen/crewOxyPB", 0); # 0 = OFF 1 = AUTO
|
||||
setprop("/controls/switches/emerCallLtO", 0); # ON light, flashes white for 10s
|
||||
setprop("/controls/switches/emerCallLtC", 0); # CALL light, flashes amber for 10s
|
||||
setprop("/controls/switches/emerCall", 0);
|
||||
|
|
|
@ -176,7 +176,7 @@ var update_items = [
|
|||
];
|
||||
|
||||
var systemsLoop = func(notification) {
|
||||
if (!systemsInitialized) { return; }
|
||||
if (!systemsInitialized and getprop("/systems/acconfig/mismatch-code") != "0x000") { return; }
|
||||
systems.PNEU.loop(notification);
|
||||
systems.ADIRS.loop(notification);
|
||||
systems.BrakeSys.update(notification);
|
||||
|
|
|
@ -196,7 +196,7 @@ var Instrumentation = {
|
|||
MKVII: {
|
||||
Inputs: {
|
||||
Discretes: {
|
||||
flap3Override: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/momentary-flap3-override"),
|
||||
flap3Override: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override"),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -204,6 +204,10 @@ var Instrumentation = {
|
|||
gsDeflection: props.globals.getNode("/instrumentation/nav[0]/gs-needle-deflection-norm"),
|
||||
locDeflection: props.globals.getNode("/instrumentation/nav[0]/heading-needle-deflection-norm"),
|
||||
},
|
||||
PFD: {
|
||||
windDirection: props.globals.getNode("/instrumentation/pfd/wind-direction"),
|
||||
windSpeed: props.globals.getNode("/instrumentation/pfd/wind-speed"),
|
||||
},
|
||||
TCAS: {
|
||||
servicable: props.globals.getNode("/instrumentation/tcas/serviceable"),
|
||||
Inputs: {
|
||||
|
|
|
@ -86,7 +86,14 @@ var atisPage = {
|
|||
var pageMinusOne = (me.page - 1);
|
||||
var numberExtraChar = pageMinusOne * 210;
|
||||
me.L1 = [substr(message, numberExtraChar, 30), atsu.ATISInstances[me.index].station ~ "/" ~ (atsu.ATISInstances[me.index].type == 0 ? "ARR" : "DEP"), "wht"];
|
||||
me.R1 = [" ",atsu.DictionaryString.fetchString1(atsu.ATISInstances[me.index].receivedCode).string2 ~ " " ~ atsu.ATISInstances[me.index].receivedTime ~ "Z", "wht"];
|
||||
|
||||
var code = atsu.DictionaryString.fetchString1(atsu.ATISInstances[me.index].receivedCode);
|
||||
if (code != "") {
|
||||
me.R1 = [" ",code.string2 ~ " " ~ atsu.ATISInstances[me.index].receivedTime ~ "Z", "wht"];
|
||||
} else {
|
||||
me.R1 = [" ",atsu.ATISInstances[me.index].receivedCode ~ " " ~ atsu.ATISInstances[me.index].receivedTime ~ "Z", "wht"];
|
||||
}
|
||||
|
||||
if (size(message) > 30) {
|
||||
me.L2[1] = substr(message, numberExtraChar + 30, 30);
|
||||
}
|
||||
|
|
|
@ -60,3 +60,15 @@ var printInput2 = func(key, i) {
|
|||
setprop("FMGC/print/mcdu/page2/R4req", 1);
|
||||
}
|
||||
}
|
||||
|
||||
var data2Input = func(key, i) {
|
||||
if (key == "L5") {
|
||||
if (canvas_mcdu.myCLBWIND[i] == nil) {
|
||||
canvas_mcdu.myCLBWIND[i] = windCLBPage.new(i);
|
||||
} else {
|
||||
canvas_mcdu.myCLBWIND[i].reload();
|
||||
}
|
||||
fmgc.windController.accessPage[i] = "DATA2";
|
||||
setprop("MCDU[" ~ i ~ "]/page", "WINDCLB");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
# A3XX mCDU by Joshua Davidson (Octal450), Jonathan Redpath, and Matthew Maring (mattmaring)
|
||||
|
||||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
var data2Input = func(key, i) {
|
||||
if (key == "L5") {
|
||||
if (canvas_mcdu.myCLBWIND[i] == nil) {
|
||||
canvas_mcdu.myCLBWIND[i] = windCLBPage.new(i);
|
||||
} else {
|
||||
canvas_mcdu.myCLBWIND[i].reload();
|
||||
}
|
||||
fmgc.windController.accessPage[i] = "DATA2";
|
||||
setprop("MCDU[" ~ i ~ "]/page", "WINDCLB");
|
||||
}
|
||||
}
|
|
@ -168,6 +168,7 @@ var MCDU_reset = func(i) {
|
|||
setprop("/FMGC/internal/eng-out-reduc", "1500");
|
||||
setprop("/MCDUC/reducacc-set", 0);
|
||||
fmgc.FMGCInternal.transAlt = 18000;
|
||||
fmgc.FMGCInternal.transAltSet = 0;
|
||||
|
||||
# CLB PERF
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
|
@ -217,14 +218,14 @@ var lskbutton = func(btn, i) {
|
|||
setprop("/MCDU[" ~ i ~ "]/active", 1);
|
||||
settimer(func(){
|
||||
pageNode[i].setValue(getprop("/MCDU[" ~ i ~ "]/last-fmgc-page"));
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
mcdu_scratchpad.scratchpads[i].clear();
|
||||
setprop("/MCDU[" ~ i ~ "]/active", 2);
|
||||
setprop("/MCDU[" ~ i ~ "]/active-system","fmgc");
|
||||
}, 2);
|
||||
} else {
|
||||
pageNode[i].setValue(getprop("/MCDU[" ~ i ~ "]/last-fmgc-page"));
|
||||
setprop("/MCDU[" ~ i ~ "]/active-system","fmgc");
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
mcdu_scratchpad.scratchpads[i].clear();
|
||||
}
|
||||
}
|
||||
} else if (page == "IRSINIT") {
|
||||
|
@ -377,14 +378,14 @@ var lskbutton = func(btn, i) {
|
|||
setprop("/MCDU[" ~ i ~ "]/atsu-active", 1);
|
||||
settimer(func(){
|
||||
pageNode[i].setValue(getprop("/MCDU[" ~ i ~ "]/last-atsu-page"));
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
mcdu_scratchpad.scratchpads[i].clear();
|
||||
setprop("/MCDU[" ~ i ~ "]/atsu-active", 2);
|
||||
setprop("/MCDU[" ~ i ~ "]/active-system","atsu");
|
||||
}, 2);
|
||||
} else {
|
||||
pageNode[i].setValue(getprop("/MCDU[" ~ i ~ "]/last-atsu-page"));
|
||||
setprop("/MCDU[" ~ i ~ "]/active-system","atsu");
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
mcdu_scratchpad.scratchpads[i].clear();
|
||||
}
|
||||
}
|
||||
} else if (page == "INITA") {
|
||||
|
|
|
@ -48,6 +48,8 @@ var progCLBInput = func(key, i) {
|
|||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
fmgc.FMGCNodes.phase.setValue(3);
|
||||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
|
@ -60,6 +62,8 @@ var progCLBInput = func(key, i) {
|
|||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
fmgc.FMGCNodes.phase.setValue(3);
|
||||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
|
@ -80,6 +84,8 @@ var progCRZInput = func(key, i) {
|
|||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
fmgc.FMGCNodes.phase.setValue(3);
|
||||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
|
@ -92,6 +98,8 @@ var progCRZInput = func(key, i) {
|
|||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
fmgc.FMGCNodes.phase.setValue(3);
|
||||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
|
@ -112,6 +120,8 @@ var progDESInput = func(key, i) {
|
|||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
if (fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
fmgc.FMGCNodes.phase.setValue(3);
|
||||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
|
@ -124,6 +134,8 @@ var progDESInput = func(key, i) {
|
|||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (fmgc.FMGCInternal.phase == 4 or fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
fmgc.FMGCNodes.phase.setValue(3);
|
||||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
|
|
|
@ -110,7 +110,6 @@ var ADIRU = {
|
|||
}
|
||||
},
|
||||
stopAlignNoAlign: func() {
|
||||
print("Stopping alignment or setting unaligned state");
|
||||
me.inAlign = 0;
|
||||
me.aligned = 0;
|
||||
ADIRSnodesND[me.num].setValue(0);
|
||||
|
@ -154,7 +153,6 @@ var ADIRU = {
|
|||
if (me._gs > 5 or abs(me._pitch) > 5 or abs(me._roll) > 10) {
|
||||
me.stopAlignNoAlign();
|
||||
me._excessMotion = 1;
|
||||
print("Excessive motion, restarting");
|
||||
me.update(); # update operative
|
||||
me.align(calcAlignTime(pts.Position.latitude.getValue()));
|
||||
} elsif (me.operative == 0) {
|
||||
|
@ -324,6 +322,8 @@ var ADIRS = {
|
|||
}
|
||||
),
|
||||
],
|
||||
_hasGPSPrimLost: 0,
|
||||
_hasGPSPrim: 0,
|
||||
loop: func(notification) {
|
||||
if (me._init) {
|
||||
for (i = 0; i < _NUMADIRU; i = i + 1) {
|
||||
|
@ -345,7 +345,32 @@ var ADIRS = {
|
|||
me.Operating.adr[i].setValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (!me.Operating.aligned[0].getBoolValue() and !me.Operating.aligned[1].getBoolValue() and !me.Operating.aligned[2].getBoolValue()) {
|
||||
if (!me._hasGPSPrimLost) {
|
||||
mcdu_scratchpad.messageQueues[0].addNewMsg(mcdu_scratchpad.MessageController.getTypeIIMsgByText("GPS PRIMARY LOST"));
|
||||
mcdu_scratchpad.messageQueues[1].addNewMsg(mcdu_scratchpad.MessageController.getTypeIIMsgByText("GPS PRIMARY LOST"));
|
||||
me._hasGPSPrimLost = 1;
|
||||
}
|
||||
} else {
|
||||
if (me._hasGPSPrimLost) {
|
||||
mcdu_scratchpad.messageQueues[0].deleteWithText("GPS PRIMARY LOST");
|
||||
mcdu_scratchpad.messageQueues[1].deleteWithText("GPS PRIMARY LOST");
|
||||
me._hasGPSPrimLost = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (me.Operating.aligned[0].getBoolValue() or me.Operating.aligned[1].getBoolValue() or me.Operating.aligned[2].getBoolValue()) {
|
||||
if (!me._hasGPSPrim) {
|
||||
mcdu_scratchpad.messageQueues[0].addNewMsg(mcdu_scratchpad.MessageController.getTypeIIMsgByText("GPS PRIMARY"));
|
||||
mcdu_scratchpad.messageQueues[1].addNewMsg(mcdu_scratchpad.MessageController.getTypeIIMsgByText("GPS PRIMARY"));
|
||||
me._hasGPSPrim = 1;
|
||||
}
|
||||
} else {
|
||||
me._hasGPSPrim = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Update VFE
|
||||
foreach (var update_item; me.update_items) {
|
||||
|
|
|
@ -357,8 +357,8 @@ var ATIS = {
|
|||
raw = split('"}', raw)[0];
|
||||
} else {
|
||||
if (me.type == 0) {
|
||||
raw = split('{"arr":"', raw)[1];
|
||||
raw = split('","dep":', raw)[0];
|
||||
raw = split('"arr":"', raw)[1];
|
||||
raw = split('","dep":"', raw)[0];
|
||||
} else {
|
||||
raw = split('","dep":"', raw)[1];
|
||||
raw = split('"}', raw)[0];
|
||||
|
|
|
@ -32,8 +32,6 @@ var ELEC = {
|
|||
acEssBusFault: props.globals.getNode("/systems/failures/electrical/ac-ess-bus"),
|
||||
ac1BusFault: props.globals.getNode("/systems/failures/electrical/ac-1-bus"),
|
||||
ac2BusFault: props.globals.getNode("/systems/failures/electrical/ac-2-bus"),
|
||||
bat1Fault: props.globals.getNode("/systems/failures/electrical/bat-1"),
|
||||
bat2Fault: props.globals.getNode("/systems/failures/electrical/bat-2"),
|
||||
dcEssBusFault: props.globals.getNode("/systems/failures/electrical/dc-ess-bus"),
|
||||
dc1BusFault: props.globals.getNode("/systems/failures/electrical/dc-1-bus"),
|
||||
dc2BusFault: props.globals.getNode("/systems/failures/electrical/dc-2-bus"),
|
||||
|
@ -194,8 +192,6 @@ var ELEC = {
|
|||
me.Fail.acEssBusFault.setBoolValue(0);
|
||||
me.Fail.ac1BusFault.setBoolValue(0);
|
||||
me.Fail.ac2BusFault.setBoolValue(0);
|
||||
me.Fail.bat1Fault.setBoolValue(0);
|
||||
me.Fail.bat2Fault.setBoolValue(0);
|
||||
me.Fail.dcEssBusFault.setBoolValue(0);
|
||||
me.Fail.dc1BusFault.setBoolValue(0);
|
||||
me.Fail.dc2BusFault.setBoolValue(0);
|
||||
|
|
|
@ -7,7 +7,7 @@ var HYD = {
|
|||
lcont: 0,
|
||||
rcont: 0,
|
||||
Brakes: {
|
||||
accumPressPsi: props.globals.initNode("/systems/hydraulic/yellow-accumulator-psi-cmd", 0, "INT"),
|
||||
accumPressPsi: props.globals.initNode("/systems/hydraulic/yellow-accumulator-psi-cmd", 3000, "INT"),
|
||||
leftPressPsi: props.globals.initNode("/systems/hydraulic/brakes/pressure-left-psi", 0, "INT"),
|
||||
rightPressPsi: props.globals.initNode("/systems/hydraulic/brakes/pressure-right-psi", 0, "INT"),
|
||||
mode: props.globals.initNode("/systems/hydraulic/brakes/mode", 0, "INT"),
|
||||
|
@ -62,6 +62,11 @@ var HYD = {
|
|||
yellowFire: props.globals.getNode("/systems/hydraulic/sources/yellow-edp/fire-valve"),
|
||||
greenFire: props.globals.getNode("/systems/hydraulic/sources/green-edp/fire-valve"),
|
||||
},
|
||||
Warnings: {
|
||||
blueAbnormLoPr: props.globals.getNode("/ECAM/warnings/hyd/blue-abnorm-lo-pr"),
|
||||
greenAbnormLoPr: props.globals.getNode("/ECAM/warnings/hyd/green-abnorm-lo-pr"),
|
||||
yellowAbnormLoPr: props.globals.getNode("/ECAM/warnings/hyd/yellow-abnorm-lo-pr"),
|
||||
},
|
||||
init: func() {
|
||||
me.resetFail();
|
||||
me.Qty.blueInput.setValue(math.round((rand() * 2) + 6 , 0.1)); # Random between 6 and 8
|
||||
|
@ -74,6 +79,7 @@ var HYD = {
|
|||
me.Switch.rat.setValue(0);
|
||||
me.Switch.yellowEDP.setValue(1);
|
||||
me.Switch.yellowElec.setValue(0);
|
||||
me.Brakes.accumPressPsi.setValue(3000);
|
||||
},
|
||||
resetFail: func() {
|
||||
me.Fail.blueElec.setBoolValue(0);
|
||||
|
|
|
@ -140,10 +140,8 @@ var PNEU = {
|
|||
#setprop("/systems/ventilation/cabin/fans", 0); # aircon fans
|
||||
#setprop("/systems/ventilation/avionics/extractvalve", "0");
|
||||
#setprop("/systems/ventilation/avionics/inletvalve", "0");
|
||||
setprop("/controls/oxygen/masksDeploy", 0);
|
||||
setprop("/controls/oxygen/masksDeployMan", 0);
|
||||
setprop("/controls/oxygen/masksReset", 0); # this is the TMR RESET pb on the maintenance panel, needs 3D model
|
||||
setprop("/controls/oxygen/masksSys", 0);
|
||||
setprop("/controls/oxygen/passenger-mask-deploy-man", 0);
|
||||
setprop("/controls/oxygen/passenger-mask-reset", 0); # this is the TMR RESET pb on the maintenance panel, needs 3D model
|
||||
},
|
||||
resetFail: func() {
|
||||
me.Fail.apu.setBoolValue(0);
|
||||
|
@ -206,41 +204,5 @@ var PNEU = {
|
|||
#setprop("/systems/ventilation/avionics/extractvalve", "1");
|
||||
#setprop("/systems/ventilation/avionics/inletvalve", "1");
|
||||
#}
|
||||
|
||||
# Oxygen
|
||||
if (cabinalt > 13500) {
|
||||
setprop("/controls/oxygen/masksDeploy", 1);
|
||||
setprop("/controls/oxygen/masksSys", 1);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
# Oxygen (Cabin)
|
||||
|
||||
setlistener("/controls/oxygen/masksDeployMan", func {
|
||||
guard = getprop("/controls/oxygen/masksGuard");
|
||||
masks = getprop("/controls/oxygen/masksDeployMan");
|
||||
|
||||
if (guard and masks) {
|
||||
setprop("/controls/oxygen/masksDeployMan", 0);
|
||||
} else if (!guard and masks) {
|
||||
setprop("/controls/oxygen/masksDeployMan", 1);
|
||||
setprop("/controls/oxygen/masksDeploy", 1);
|
||||
setprop("/controls/oxygen/masksSys", 1);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/controls/oxygen/masksDeployMan", func {
|
||||
masks = getprop("/controls/oxygen/masksDeployMan");
|
||||
if (!masks) {
|
||||
setprop("/controls/oxygen/masksDeployMan", 1);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/controls/oxygen/masksDeploy", func {
|
||||
autoMasks = getprop("/controls/oxygen/masksDeploy");
|
||||
if (!autoMasks) {
|
||||
setprop("/controls/oxygen/masksDeploy", 1);
|
||||
}
|
||||
}, 0, 0);
|
|
@ -1490,7 +1490,7 @@
|
|||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>0.75</factor>
|
||||
<factor>1.5</factor>
|
||||
</volume>
|
||||
</switch>
|
||||
|
||||
|
@ -1516,7 +1516,7 @@
|
|||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>0.75</factor>
|
||||
<factor>1.5</factor>
|
||||
</volume>
|
||||
</switch>
|
||||
|
||||
|
@ -1529,7 +1529,7 @@
|
|||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>0.75</factor>
|
||||
<factor>1.5</factor>
|
||||
</volume>
|
||||
</switch>
|
||||
|
||||
|
@ -1542,7 +1542,7 @@
|
|||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>0.6</factor>
|
||||
<factor>1.0</factor>
|
||||
</volume>
|
||||
</switch>
|
||||
|
||||
|
@ -1555,7 +1555,7 @@
|
|||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>0.75</factor>
|
||||
<factor>1.5</factor>
|
||||
</volume>
|
||||
</switch>
|
||||
|
||||
|
@ -1929,6 +1929,22 @@
|
|||
</volume>
|
||||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>depressurization</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/depressurization.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/systems/oxygen/passenger-oxygen/sys-on-light</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>2.0</factor>
|
||||
</volume>
|
||||
</announcements>
|
||||
|
||||
<chime>
|
||||
<name>Click</name>
|
||||
<path>Aircraft/A320-family/Sounds/Cockpit/click.wav</path>
|
||||
|
|
BIN
Sounds/Announce/depressurization.wav
Normal file
|
@ -530,7 +530,7 @@
|
|||
<property>/systems/navigation/probes/tat-1/tat</property>
|
||||
<quotient>
|
||||
<pow>
|
||||
<property>/velocities/TAS</property>
|
||||
<property>/instrumentation/airspeed-indicator/true-speed-kt</property>
|
||||
<value>2</value>
|
||||
</pow>
|
||||
<value>7569</value>
|
||||
|
|
|
@ -25,14 +25,12 @@
|
|||
</difference>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/electrical/sources/bat-1/percent</independentVar>
|
||||
<independentVar lookup="column">/systems/failures/electrical/bat-1</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0.0 0.0
|
||||
10 24.0 4.0
|
||||
50 25.5 5.0
|
||||
85 26.5 6.0
|
||||
100 31.0 7.0
|
||||
0 0.0
|
||||
10 24.0
|
||||
50 25.5
|
||||
85 26.5
|
||||
100 31.0
|
||||
</tableData>
|
||||
</table>
|
||||
</sum>
|
||||
|
@ -270,14 +268,12 @@
|
|||
</difference>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/electrical/sources/bat-2/percent</independentVar>
|
||||
<independentVar lookup="column">/systems/failures/electrical/bat-2</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0.0 0.0
|
||||
10 24.0 4.0
|
||||
50 25.5 5.0
|
||||
85 26.5 6.0
|
||||
100 31.0 7.0
|
||||
0 0.0
|
||||
10 24.0
|
||||
50 25.5
|
||||
85 26.5
|
||||
100 31.0
|
||||
</tableData>
|
||||
</table>
|
||||
</sum>
|
||||
|
|
|
@ -146,7 +146,7 @@
|
|||
/systems/electrical/bus/ac-2 ge 110
|
||||
</test>
|
||||
<test logic="OR">
|
||||
/controls/flight/slats-cmd ge 0
|
||||
fcs/flap-pos-deg ge 15
|
||||
/gear/gear[2]/wow eq 1
|
||||
</test>
|
||||
</test>
|
||||
|
|
329
Systems/a320-oxygen.xml
Normal file
|
@ -0,0 +1,329 @@
|
|||
<!-- Airbus A320 Fuel -->
|
||||
|
||||
<!-- Copyright (c) 2019 Jonathan Redpath -->
|
||||
|
||||
<system name="A320: Oxygen">
|
||||
<property value="2183">/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<property value="15">/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
|
||||
<channel name="Cockpit Oxygen" execrate="8">
|
||||
|
||||
<!-- Bottle: 2183L @ 1850 psi NTPD -->
|
||||
|
||||
<!-- Regulator:
|
||||
HP - transducer to ECAM
|
||||
LP - 65 to 94 psi
|
||||
flow: 0 to 300 L / min
|
||||
Cyl PSI: 100 to 2030 psi
|
||||
-->
|
||||
|
||||
<switch name="/systems/oxygen/cockpit-oxygen/supply-valve-cmd">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1"> <!-- solenoid valve; when not energized, it shuts -->
|
||||
/controls/oxygen/cockpit-oxygen-supply-pb eq 1
|
||||
/systems/electrical/bus/dc-ess-shed ge 25
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<actuator name="/systems/oxygen/cockpit-oxygen/supply-valve">
|
||||
<input>/systems/oxygen/cockpit-oxygen/supply-valve-cmd</input>
|
||||
<rate_limit>10</rate_limit>
|
||||
</actuator>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/mask-1-flow-rate">
|
||||
<function>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>15</value>
|
||||
</quotient>
|
||||
<property>/controls/oxygen/cockpit-mask-1-on</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/pressurization/cabinalt</independentVar>
|
||||
<independentVar lookup="column">/controls/oxygen/cockpit-mask-1-selector</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0 29.5
|
||||
5000 0.0 31.0
|
||||
8000 0.17 36.4
|
||||
10000 0.71 36.9
|
||||
15000 5.60 37.9
|
||||
20000 15.9 38.9
|
||||
30000 30.4 39.9
|
||||
35000 40.9 40.9
|
||||
40000 41.9 41.9
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/mask-2-flow-rate">
|
||||
<function>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>15</value>
|
||||
</quotient>
|
||||
<property>/controls/oxygen/cockpit-mask-2-on</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/pressurization/cabinalt</independentVar>
|
||||
<independentVar lookup="column">/controls/oxygen/cockpit-mask-2-selector</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0 29.5
|
||||
5000 0.0 31.0
|
||||
8000 0.17 36.4
|
||||
10000 0.71 36.9
|
||||
15000 5.60 37.9
|
||||
20000 15.9 38.9
|
||||
30000 30.4 39.9
|
||||
35000 40.9 40.9
|
||||
40000 41.9 41.9
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/mask-3-flow-rate">
|
||||
<function>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>15</value>
|
||||
</quotient>
|
||||
<property>/controls/oxygen/cockpit-mask-3-on</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/pressurization/cabinalt</independentVar>
|
||||
<independentVar lookup="column">/controls/oxygen/cockpit-mask-3-selector</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0 29.5
|
||||
5000 0.0 31.0
|
||||
8000 0.17 36.4
|
||||
10000 0.71 36.9
|
||||
15000 5.60 37.9
|
||||
20000 15.9 38.9
|
||||
30000 30.4 39.9
|
||||
35000 40.9 40.9
|
||||
40000 41.9 41.9
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/mask-4-flow-rate">
|
||||
<function>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>15</value>
|
||||
</quotient>
|
||||
<property>/controls/oxygen/cockpit-mask-4-on</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/pressurization/cabinalt</independentVar>
|
||||
<independentVar lookup="column">/controls/oxygen/cockpit-mask-4-selector</independentVar>
|
||||
<tableData>
|
||||
0 1
|
||||
0 0 29.5
|
||||
5000 0.0 31.0
|
||||
8000 0.17 36.4
|
||||
10000 0.71 36.9
|
||||
15000 5.60 37.9
|
||||
20000 15.9 38.9
|
||||
30000 30.4 39.9
|
||||
35000 40.9 40.9
|
||||
40000 41.9 41.9
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="Cockpit Oxygen Bottle">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate</property>
|
||||
<value>60</value>
|
||||
</quotient>
|
||||
<property>simulation/channel-dt</property>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
<output>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</output>
|
||||
<clipto>
|
||||
<min>0.0</min>
|
||||
<max>2183.0</max>
|
||||
</clipto>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/bottle-psi">
|
||||
<function>
|
||||
<product>
|
||||
<value>58.58145</value>
|
||||
<pow>
|
||||
<property>/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</property>
|
||||
<value>0.4512568</value>
|
||||
</pow>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/bottle-flow-rate">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/oxygen/cockpit-oxygen/cockpit-bottle-L</independentVar>
|
||||
<tableData>
|
||||
0 0
|
||||
500 200
|
||||
1000 275
|
||||
2000 300
|
||||
2183 300
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/distributor-fill-rate">
|
||||
<function>
|
||||
<product>
|
||||
<property>/systems/oxygen/cockpit-oxygen/supply-valve</property>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/oxygen/cockpit-oxygen/distributor-manifold-L</independentVar>
|
||||
<tableData>
|
||||
0 300
|
||||
14.5 170
|
||||
15 0
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate-calc">
|
||||
<function>
|
||||
<product>
|
||||
<property>/systems/oxygen/cockpit-oxygen/bottle-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/supply-valve</property>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/oxygen/cockpit-oxygen/mask-1-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/mask-2-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/mask-3-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/mask-4-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-fill-rate</property>
|
||||
</sum>
|
||||
</function>
|
||||
<clipto>
|
||||
<min>0.0</min>
|
||||
<max>/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate-calc</max>
|
||||
</clipto>
|
||||
</fcs_function>
|
||||
|
||||
<!-- Distributor -->
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/distributor-manifold-rate">
|
||||
<function>
|
||||
<sum>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/mask-1-flow-rate</property>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/mask-2-flow-rate</property>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/mask-3-flow-rate</property>
|
||||
<property>-/systems/oxygen/cockpit-oxygen/mask-4-flow-rate</property>
|
||||
<property>/systems/oxygen/cockpit-oxygen/hp-regulator-flow-rate</property>
|
||||
</sum>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="Cockpit Oxygen Distributor">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<product>
|
||||
<quotient>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-rate</property>
|
||||
<value>60</value>
|
||||
</quotient>
|
||||
<property>simulation/channel-dt</property>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
<output>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</output>
|
||||
<clipto>
|
||||
<min>0.0</min>
|
||||
<max>15.0</max>
|
||||
</clipto>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="/systems/oxygen/cockpit-oxygen/distributor-psi">
|
||||
<function>
|
||||
<product>
|
||||
<value>75</value>
|
||||
<log10>
|
||||
<sum>
|
||||
<property>/systems/oxygen/cockpit-oxygen/distributor-manifold-L</property>
|
||||
<value>1</value>
|
||||
</sum>
|
||||
</log10>
|
||||
</product>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<switch name="/systems/oxygen/cockpit-oxygen/regul-lo-pr">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/oxygen/cockpit-oxygen/distributor-psi lt 50
|
||||
</test>
|
||||
</switch>
|
||||
</channel>
|
||||
|
||||
<channel name="Passenger Oxygen" execrate="8">
|
||||
|
||||
<switch name="/systems/oxygen/passenger-oxygen/pressure-switch">
|
||||
<defualt value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/systems/pressurization/cabinalt ge 14000
|
||||
/systems/electrical/bus/dc-ess ge 25
|
||||
</test>
|
||||
<!-- HI ALT 16000 -->
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/oxygen/passenger-oxygen/masks-deploy-cmd">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/oxygen/passenger-oxygen/pressure-switch eq 1
|
||||
/controls/oxygen/passenger-mask-deploy-man eq 1
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/oxygen/passenger-oxygen/masks-deploy">
|
||||
<default value="/systems/oxygen/passenger-oxygen/masks-deploy"/>
|
||||
<test logic="AND" value="1">
|
||||
/systems/oxygen/passenger-oxygen/masks-deploy-cmd eq 1
|
||||
/systems/electrical/bus/ac-ess-shed ge 110
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="Sys On Light">
|
||||
<default value="/systems/oxygen/passenger-oxygen/sys-on-light"/>
|
||||
<test logic="OR" value="0">
|
||||
/controls/oxygen/passenger-mask-reset eq 1
|
||||
/systems/electrical/bus/dc-ess lt 25
|
||||
</test>
|
||||
<test logic="AND" value="1">
|
||||
/systems/oxygen/passenger-oxygen/masks-deploy-cmd eq 1
|
||||
/systems/electrical/bus/dc-ess ge 25
|
||||
</test>
|
||||
<output>/systems/oxygen/passenger-oxygen/sys-on-light</output>
|
||||
</switch>
|
||||
</channel>
|
||||
|
||||
</system>
|
|
@ -608,14 +608,6 @@
|
|||
<output>/systems/pressurization/targetvs</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>TAS</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<input>/instrumentation/airspeed-indicator/true-speed-kt</input>
|
||||
<output>/velocities/TAS</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>LBtoKG</name>
|
||||
<type>gain</type>
|
||||
|
|
112
Systems/pfd.xml
|
@ -574,15 +574,107 @@
|
|||
<output>/instrumentation/iesi/pitch-deg</output>
|
||||
</filter>
|
||||
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<time>
|
||||
<value>1.5</value>
|
||||
</time>
|
||||
<S>
|
||||
<property>/instrumentation/pfd/lights/autoland-armed</property>
|
||||
</S>
|
||||
<output>/instrumentation/pfd/lights/autoland-sw-pulse</output>
|
||||
</flipflop>
|
||||
<filter>
|
||||
<name>Wind East</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<input>
|
||||
<expression>
|
||||
<difference>
|
||||
<product>
|
||||
<property>/velocities/speed-east-fps</property>
|
||||
<value>0.592484</value> <!-- fps to kt -->
|
||||
</product>
|
||||
<product>
|
||||
<cos><deg2rad><property>/orientation/pitch-deg</property></deg2rad></cos>
|
||||
<sin><deg2rad><property>/orientation/heading-deg</property></deg2rad></sin>
|
||||
<!--<floor>-->
|
||||
<property>/systems/navigation/adr/output/tas-3</property>
|
||||
<!--<value>100</value>
|
||||
</floor>-->
|
||||
</product>
|
||||
</difference>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/instrumentation/pfd/wind-speed-east</output>
|
||||
<min>-4096</min>
|
||||
<max>4096</max>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Wind North</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<input>
|
||||
<expression>
|
||||
<difference>
|
||||
<product>
|
||||
<property>/velocities/speed-north-fps</property>
|
||||
<value>0.592484</value> <!-- fps to kt -->
|
||||
</product>
|
||||
<product>
|
||||
<cos><deg2rad><property>/orientation/pitch-deg</property></deg2rad></cos>
|
||||
<cos><deg2rad><property>/orientation/heading-deg</property></deg2rad></cos>
|
||||
<!--<floor>-->
|
||||
<property>/systems/navigation/adr/output/tas-3</property>
|
||||
<!--<value>100</value>
|
||||
</floor>-->
|
||||
</product>
|
||||
</difference>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/instrumentation/pfd/wind-speed-north</output>
|
||||
<min>-4096</min>
|
||||
<max>4096</max>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Wind Direction</name>
|
||||
<type>exponential</type>
|
||||
<filter-time>1.28</filter-time>
|
||||
<input>
|
||||
<expression>
|
||||
<sum>
|
||||
<rad2deg>
|
||||
<atan2>
|
||||
<property>/instrumentation/pfd/wind-speed-east</property>
|
||||
<property>/instrumentation/pfd/wind-speed-north</property>
|
||||
</atan2>
|
||||
</rad2deg>
|
||||
<value>180</value>
|
||||
</sum>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/instrumentation/pfd/wind-direction</output>
|
||||
<period>
|
||||
<min>0</min>
|
||||
<max>360</max>
|
||||
</period>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Wind Speed</name>
|
||||
<type>exponential</type>
|
||||
<filter-time>1.28</filter-time>
|
||||
<input>
|
||||
<expression>
|
||||
<sqrt>
|
||||
<sum>
|
||||
<pow>
|
||||
<property>/instrumentation/pfd/wind-speed-east</property>
|
||||
<value>2</value>
|
||||
</pow>
|
||||
<pow>
|
||||
<property>/instrumentation/pfd/wind-speed-north</property>
|
||||
<value>2</value>
|
||||
</pow>
|
||||
</sum>
|
||||
</sqrt>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/instrumentation/pfd/wind-speed</output>
|
||||
<min>0</min>
|
||||
<max>256</max>
|
||||
</filter>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -1 +1 @@
|
|||
48
|
||||
49
|