Merge branch 'dev' into maint
|
@ -14,6 +14,7 @@
|
|||
<livery>
|
||||
<file>Airbus</file>
|
||||
</livery>
|
||||
<livery-dir type="string">Aircraft/A320-family/Models/Liveries/A320/CFM-100</livery-dir>
|
||||
</model>
|
||||
|
||||
<sound>
|
||||
|
@ -171,10 +172,4 @@
|
|||
<eng>CFM56-5A1</eng>
|
||||
</MCDUC>
|
||||
|
||||
<nasal>
|
||||
<specific>
|
||||
<file>Aircraft/A320-family/Nasal/Libraries/a320livery-cfm-100.nas</file>
|
||||
</specific>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -202,17 +202,20 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
<system file="a320-fwc"/>
|
||||
<system file="a320-fwc-phases"/>
|
||||
<system file="a320-spoiler"/>
|
||||
<system file="a320-electrical"/>
|
||||
<system file="a320-hydraulic"/>
|
||||
<system file="a320-pneumatic"/>
|
||||
<system file="a320-aircond"/> <!-- after pneu -->
|
||||
<system file="a320-lights"/>
|
||||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
<flight_control name="none"/>
|
||||
|
||||
<aerodynamics file="Systems/a320-aerodynamics.xml"/>
|
||||
<external_reactions file="Systems/a320-external-reactions"/>
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<livery>
|
||||
<file>Airbus</file>
|
||||
</livery>
|
||||
<livery-dir type="string">Aircraft/A320-family/Models/Liveries/A320/CFM</livery-dir>
|
||||
</model>
|
||||
|
||||
<sound>
|
||||
|
@ -170,10 +171,4 @@
|
|||
<eng>CFM56-5B4</eng>
|
||||
</MCDUC>
|
||||
|
||||
<nasal>
|
||||
<specific>
|
||||
<file>Aircraft/A320-family/Nasal/Libraries/a320livery-cfm.nas</file>
|
||||
</specific>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -201,17 +201,20 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
<system file="a320-fwc"/>
|
||||
<system file="a320-fwc-phases"/>
|
||||
<system file="a320-spoiler"/>
|
||||
<system file="a320-electrical"/>
|
||||
<system file="a320-hydraulic"/>
|
||||
<system file="a320-pneumatic"/>
|
||||
<system file="a320-aircond"/> <!-- after pneu -->
|
||||
<system file="a320-lights"/>
|
||||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
<flight_control name="none"/>
|
||||
|
||||
<aerodynamics file="Systems/a320-aerodynamics.xml"/>
|
||||
<external_reactions file="Systems/a320-external-reactions"/>
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<livery>
|
||||
<file>Airbus</file>
|
||||
</livery>
|
||||
<livery-dir type="string">Aircraft/A320-family/Models/Liveries/A320/IAE</livery-dir>
|
||||
</model>
|
||||
|
||||
<sound>
|
||||
|
@ -170,10 +171,4 @@
|
|||
<eng>V2527-A5</eng>
|
||||
</MCDUC>
|
||||
|
||||
<nasal>
|
||||
<specific>
|
||||
<file>Aircraft/A320-family/Nasal/Libraries/a320livery-iae.nas</file>
|
||||
</specific>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -201,14 +201,18 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
<system file="a320-fwc"/>
|
||||
<system file="a320-fwc-phases"/>
|
||||
<system file="a320-spoiler"/>
|
||||
<system file="a320-electrical"/>
|
||||
<system file="a320-hydraulic"/>
|
||||
<system file="a320-pneumatic"/>
|
||||
<system file="a320-aircond"/> <!-- after pneu -->
|
||||
<system file="a320-lights"/>
|
||||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
<flight_control name="none"/>
|
||||
<aerodynamics file="Systems/a320-aerodynamics.xml"/>
|
||||
|
|
413
A320-main.xml
|
@ -6,6 +6,10 @@
|
|||
<PropertyList include="Aircraft/Generic/Human/Include/walker-include.xml">
|
||||
<sim>
|
||||
|
||||
<animation>
|
||||
<fire-services type="bool">0</fire-services>
|
||||
</animation>
|
||||
|
||||
<author>Josh Davidson/Octal450 (Flight Dynamics, Systems, Displays), Jonathan Redpath/legoboyvdlp, merspieler, Matthew Maring/mattmaring (Systems, Displays), Thorsten Herrmann/TH-555, Semir Gebran/CaptB (3D, Textures)</author>
|
||||
|
||||
<checklists include="A32X-Checklists.xml"/>
|
||||
|
@ -24,60 +28,74 @@
|
|||
<display-contrast type="double">0.7</display-contrast>
|
||||
<icing>
|
||||
<iceable>
|
||||
<name>Wing</name>
|
||||
<name>WingLeft</name>
|
||||
<ice-inches>0.0</ice-inches>
|
||||
<salvage-control>/controls/deice/wing</salvage-control>
|
||||
<salvage-control>/systems/pneumatics/valves/wing-ice-1</salvage-control>
|
||||
<sensitivity type="double">0.8</sensitivity>
|
||||
<output-property>/fdm/jsbsim/ice/wing</output-property>
|
||||
<output-property>/fdm/jsbsim/ice/wingL</output-property>
|
||||
</iceable>
|
||||
<iceable>
|
||||
<name>WingRight</name>
|
||||
<ice-inches>0.0</ice-inches>
|
||||
<salvage-control>/systems/pneumatics/valves/wing-ice-2</salvage-control>
|
||||
<sensitivity type="double">0.8</sensitivity>
|
||||
<output-property>/fdm/jsbsim/ice/wingR</output-property>
|
||||
</iceable>
|
||||
<iceable>
|
||||
<name>LeftEngine</name>
|
||||
<ice-inches>0.0</ice-inches>
|
||||
<salvage-control>/controls/deice/lengine</salvage-control>
|
||||
<salvage-control>/systems/pneumatics/valves/engine-ice-1</salvage-control>
|
||||
<sensitivity type="double">0.5</sensitivity>
|
||||
<output-property>/fdm/jsbsim/ice/lengine</output-property>
|
||||
</iceable>
|
||||
<iceable>
|
||||
<name>RightEngine</name>
|
||||
<ice-inches>0.0</ice-inches>
|
||||
<salvage-control>/controls/deice/rengine</salvage-control>
|
||||
<salvage-control>/systems/pneumatics/valves/engine-ice-2</salvage-control>
|
||||
<sensitivity type="double">0.5</sensitivity>
|
||||
<output-property>/fdm/jsbsim/ice/rengine</output-property>
|
||||
</iceable>
|
||||
<iceable>
|
||||
<name>Windshield</name>
|
||||
<ice-inches>0.0</ice-inches>
|
||||
<salvage-control>/controls/deice/windowprobeheat</salvage-control>
|
||||
<salvage-control>/controls/ice-protection/windowprobeheat-output</salvage-control>
|
||||
<sensitivity type="double">0.5</sensitivity>
|
||||
<output-property>/environment/aircraft-effects/frost-inch</output-property>
|
||||
</iceable>
|
||||
<iceable>
|
||||
<name>Fuselage</name>
|
||||
<ice-inches>0.0</ice-inches>
|
||||
<!-- salvage control: de-icing truck -->
|
||||
<sensitivity type="double">0.3</sensitivity>
|
||||
<!-- salvage control: de-icing truck -->
|
||||
<salvage-control>services/deicing_truck/deicing/position-norm</salvage-control>
|
||||
<output-property>/fdm/jsbsim/ice/fuselage</output-property>
|
||||
</iceable>
|
||||
<iceable>
|
||||
<name>Pitot tube</name>
|
||||
<ice-inches>0.0</ice-inches>
|
||||
<sensitivity type="double">1</sensitivity>
|
||||
<salvage-control>/controls/deice/windowprobeheat</salvage-control>
|
||||
<output-property>/systems/pitot/icing</output-property>
|
||||
<sensitivity type="double">0.99</sensitivity>
|
||||
<salvage-control>/controls/ice-protection/windowprobeheat-output</salvage-control>
|
||||
<output-property>/systems/pitot[0]/icing</output-property>
|
||||
</iceable>
|
||||
<iceable>
|
||||
<name>Pitot tube</name>
|
||||
<ice-inches>0.0</ice-inches>
|
||||
<sensitivity type="double">0.99</sensitivity>
|
||||
<salvage-control>/controls/ice-protection/windowprobeheat-output</salvage-control>
|
||||
<output-property>/systems/pitot[1]/icing</output-property>
|
||||
</iceable>
|
||||
<iceable>
|
||||
<name>Pitot tube</name>
|
||||
<ice-inches>0.0</ice-inches>
|
||||
<sensitivity type="double">0.98</sensitivity>
|
||||
<salvage-control>/controls/ice-protection/windowprobeheat-output</salvage-control>
|
||||
<output-property>/systems/pitot[2]/icing</output-property>
|
||||
</iceable>
|
||||
</icing>
|
||||
<flame>
|
||||
<red-high type="double">1.0</red-high>
|
||||
<red-low type="double">0.95</red-low>
|
||||
<red-base type="double">1.0</red-base>
|
||||
<green-high type="double">0.741</green-high>
|
||||
<green-low type="double">0.32</green-low>
|
||||
<green-base type="double">0.741</green-base>
|
||||
<blue-high type="double">0.10</blue-high>
|
||||
<blue-low type="double">0.02</blue-low>
|
||||
<blue-base type="double">0.09</blue-base>
|
||||
</flame>
|
||||
<lights>
|
||||
<dome-light type="double">0</dome-light>
|
||||
<nose-lights type="double">0</nose-lights>
|
||||
</lights>
|
||||
</model>
|
||||
|
||||
<previews>
|
||||
|
@ -177,11 +195,6 @@
|
|||
<autopilot n="13">
|
||||
<path>Aircraft/A320-family/Systems/ecam-proprules.xml</path>
|
||||
</autopilot>
|
||||
<wingflexer include="Systems/wingflexer-params.xml"/>
|
||||
<property-rule n="100">
|
||||
<name>Generic Wing Flexer</name>
|
||||
<path>Aircraft/Generic/wingflexer.xml</path>
|
||||
</property-rule>
|
||||
<path>Aircraft/A320-family/Systems/pitot-static.xml</path>
|
||||
</systems>
|
||||
|
||||
|
@ -199,6 +212,12 @@
|
|||
<oh-btn type="bool">0</oh-btn>
|
||||
<switch1 type="bool">0</switch1>
|
||||
<flaps-click type="bool">0</flaps-click>
|
||||
<pushbutton type="bool">0</pushbutton>
|
||||
<spdbrk-click type="bool">0</spdbrk-click>
|
||||
<relay-batt-1 type="bool">0</relay-batt-1>
|
||||
<relay-batt-2 type="bool">0</relay-batt-2>
|
||||
<relay-apu type="bool">0</relay-apu>
|
||||
<relay-ext type="bool">0</relay-ext>
|
||||
</sounde>
|
||||
|
||||
<instrumentation>
|
||||
|
@ -254,6 +273,15 @@
|
|||
</script>
|
||||
</binding>
|
||||
</item>
|
||||
<item>
|
||||
<label>Simbrief</label>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
acconfig.simbrief_dlg.open();
|
||||
</script>
|
||||
</binding>
|
||||
</item>
|
||||
</menu>
|
||||
<menu n="103">
|
||||
<label>DU</label>
|
||||
|
@ -439,6 +467,15 @@
|
|||
<value>1</value>
|
||||
</binding>
|
||||
</item>
|
||||
<item>
|
||||
<label>Canvas QRH</label>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_qrh.createCanvasQRH();
|
||||
</script>
|
||||
</binding>
|
||||
</item>
|
||||
</menu>
|
||||
</default>
|
||||
</menubar>
|
||||
|
@ -528,6 +565,11 @@
|
|||
<y alias="/sim/model/autopush/force-y"/>
|
||||
</tractor>
|
||||
</external_reactions>
|
||||
<fbw>
|
||||
<yaw>
|
||||
<max-deg-switch type="double">25</max-deg-switch>
|
||||
</yaw>
|
||||
</fbw>
|
||||
<zero type="int">0</zero>
|
||||
</jsbsim>
|
||||
</fdm>
|
||||
|
@ -601,6 +643,8 @@
|
|||
<alpha-hld type="bool">0</alpha-hld>
|
||||
<degrade-law type="int">0</degrade-law>
|
||||
<law type="int">0</law>
|
||||
<degrade-yaw-law type="int">0</degrade-yaw-law>
|
||||
<yaw-law type="int">0</yaw-law>
|
||||
<roll-lim type="string">33</roll-lim>
|
||||
<roll-back type="bool">0</roll-back>
|
||||
<override type="bool">0</override>
|
||||
|
@ -618,10 +662,9 @@
|
|||
<active-fmgc-channel type="int">0</active-fmgc-channel>
|
||||
<internal>
|
||||
<cost-index type="int">0</cost-index>
|
||||
<to-state type="bool">0</to-state>
|
||||
</internal>
|
||||
<status>
|
||||
<to-state type="bool">1</to-state>
|
||||
</status>
|
||||
<simbrief-username type="string"></simbrief-username>
|
||||
</FMGC>
|
||||
|
||||
<controls>
|
||||
|
@ -680,6 +723,9 @@
|
|||
</electrical>
|
||||
<engines>
|
||||
<engine-start-switch type="int">1</engine-start-switch>
|
||||
<epr-limit type="double">0.0</epr-limit>
|
||||
<n1-limit type="double">0.0</n1-limit>
|
||||
<thrust-limit type="string">TOGA</thrust-limit>
|
||||
<engine n="0">
|
||||
<cutoff type="bool">true</cutoff>
|
||||
<cutoff-switch type="bool">true</cutoff-switch>
|
||||
|
@ -692,6 +738,11 @@
|
|||
<max-athr-thrust type="double">0.94</max-athr-thrust>
|
||||
<throttle-output type="double">0</throttle-output>
|
||||
<throttle-fdm type="double">0</throttle-fdm>
|
||||
<throttle-rev type="double">0</throttle-rev>
|
||||
<reverser type="double">0</reverser>
|
||||
<igniter-a type="bool">0</igniter-a>
|
||||
<igniter-b type="bool">0</igniter-b>
|
||||
<last-igniter type="string">B</last-igniter>
|
||||
</engine>
|
||||
<engine n="1">
|
||||
<cutoff type="bool">true</cutoff>
|
||||
|
@ -705,6 +756,11 @@
|
|||
<max-athr-thrust type="double">0.94</max-athr-thrust>
|
||||
<throttle-output type="double">0</throttle-output>
|
||||
<throttle-fdm type="double">0</throttle-fdm>
|
||||
<throttle-rev type="double">0</throttle-rev>
|
||||
<reverser type="double">0</reverser>
|
||||
<igniter-a type="bool">0</igniter-a>
|
||||
<igniter-b type="bool">0</igniter-b>
|
||||
<last-igniter type="string">B</last-igniter>
|
||||
</engine>
|
||||
<engine n="2">
|
||||
<cutoff type="bool">true</cutoff>
|
||||
|
@ -714,15 +770,6 @@
|
|||
</engine>
|
||||
</engines>
|
||||
<fctl>
|
||||
<lights>
|
||||
<elac1-fault type="bool">0</elac1-fault>
|
||||
<elac2-fault type="bool">0</elac2-fault>
|
||||
<sec1-fault type="bool">0</sec1-fault>
|
||||
<sec2-fault type="bool">0</sec2-fault>
|
||||
<sec3-fault type="bool">0</sec3-fault>
|
||||
<fac1-fault type="bool">0</fac1-fault>
|
||||
<fac2-fault type="bool">0</fac2-fault>
|
||||
</lights>
|
||||
<switches>
|
||||
<elac1 type="bool">0</elac1>
|
||||
<elac2 type="bool">0</elac2>
|
||||
|
@ -771,6 +818,7 @@
|
|||
</refuel>
|
||||
</fuel>
|
||||
<gear>
|
||||
<brake-fans type="bool">0</brake-fans>
|
||||
<brake-parking type="bool">0</brake-parking>
|
||||
<tiller-cmd-norm type="double">0</tiller-cmd-norm>
|
||||
<tiller-enabled type="bool">0</tiller-enabled>
|
||||
|
@ -787,6 +835,16 @@
|
|||
<yellow-elec type="bool">0</yellow-elec>
|
||||
</switches>
|
||||
</hydraulic>
|
||||
<ice-protection>
|
||||
<leng type="bool">0</leng>
|
||||
<reng type="bool">0</reng>
|
||||
<wing type="bool">0</wing>
|
||||
<lengfault type="bool">0</lengfault>
|
||||
<rengfault type="bool">0</rengfault>
|
||||
<wingfault type="bool">0</wingfault>
|
||||
<windowprobeheat type="bool">0</windowprobeheat>
|
||||
<windowprobeheat-output type="bool">0</windowprobeheat-output>
|
||||
</ice-protection>
|
||||
<lighting>
|
||||
<DU>
|
||||
<du1 type="double">1</du1>
|
||||
|
@ -822,6 +880,9 @@
|
|||
<no-smoking-sign type="bool">1</no-smoking-sign>
|
||||
<seatbelt-sign type="bool">0</seatbelt-sign>
|
||||
<taxi-light-switch type="float">0</taxi-light-switch>
|
||||
<turnoff-light-switch type="bool">0</turnoff-light-switch>
|
||||
<leftturnoff type="bool">0</leftturnoff>
|
||||
<rightturnoff type="bool">0</rightturnoff>
|
||||
</lighting>
|
||||
<navigation>
|
||||
<adirscp>
|
||||
|
@ -865,26 +926,38 @@
|
|||
<eng2-manstart type="bool">0</eng2-manstart>
|
||||
<eng1-n1 type="bool">0</eng1-n1>
|
||||
<eng2-n1 type="bool">0</eng2-n1>
|
||||
<IDG1 type="bool">0</IDG1>
|
||||
<IDG2 type="bool">0</IDG2>
|
||||
<idg1 type="bool">0</idg1>
|
||||
<idg2 type="bool">0</idg2>
|
||||
<maskman type="bool">0</maskman>
|
||||
<ramair type="bool">0</ramair>
|
||||
<ratman type="bool">0</ratman>
|
||||
</protectors>
|
||||
</OH>
|
||||
<pneumatic n="0">
|
||||
<pneumatics n="0">
|
||||
<switches n="0">
|
||||
<aft-temp type="double">0.5</aft-temp>
|
||||
<cockpit-temp type="double">0.5</cockpit-temp>
|
||||
<fwd-temp type="double">0.5</fwd-temp>
|
||||
<apu type="bool">0</apu>
|
||||
<bleed-1 type="bool">1</bleed-1>
|
||||
<bleed-2 type="bool">1</bleed-2>
|
||||
<blower type="bool">0</blower>
|
||||
<cabin-fans type="bool">0</cabin-fans>
|
||||
<extract type="bool">0</extract>
|
||||
<groundair type="bool">0</groundair>
|
||||
<hot-air type="bool">1</hot-air>
|
||||
<pack-1 type="bool">0</pack-1>
|
||||
<pack-2 type="bool">0</pack-2>
|
||||
<pack-flow type="double">1.0</pack-flow>
|
||||
<ram-air type="bool">0</ram-air>
|
||||
<temp-cabin-aft type="double">0.5</temp-cabin-aft>
|
||||
<temp-cabin-fwd type="double">0.5</temp-cabin-fwd>
|
||||
<temp-cockpit type="double">0.5</temp-cockpit>
|
||||
<x-bleed type="int">1</x-bleed> <!-- auto -->
|
||||
</switches>
|
||||
</pneumatic>
|
||||
</pneumatics>
|
||||
<switches>
|
||||
<!-- Smoking is bad :P -->
|
||||
<no-smoking-sign type="double">0.5</no-smoking-sign>
|
||||
<seatbelt-sign type="double">0.0</seatbelt-sign>
|
||||
<annun-test>0</annun-test>
|
||||
<windowprobeheat type="double">0.5</windowprobeheat>
|
||||
<annun-test type="int">0</annun-test>
|
||||
<qnh-knb>100000</qnh-knb>
|
||||
<strobe type="double">0.0</strobe>
|
||||
<beacon type="bool">0</beacon>
|
||||
|
@ -906,6 +979,7 @@
|
|||
</controls>
|
||||
|
||||
<engines>
|
||||
<ready type="bool">0</ready>
|
||||
<engine n="0">
|
||||
<egt-actual type="double">0</egt-actual>
|
||||
<epr-actual type="double">1</epr-actual>
|
||||
|
@ -931,7 +1005,7 @@
|
|||
<n1 type="double">0</n1>
|
||||
<n-actual type="double">0</n-actual>
|
||||
<running type="bool">0</running>
|
||||
<servicable type="bool">1</servicable>
|
||||
<serviceable type="bool">1</serviceable>
|
||||
</engine>
|
||||
</engines>
|
||||
|
||||
|
@ -943,12 +1017,18 @@
|
|||
<caster-angle-deg-damped type="double">0</caster-angle-deg-damped>
|
||||
</gear>
|
||||
<gear n="1">
|
||||
<Lbrake-smoke type="double">0</Lbrake-smoke>
|
||||
<L1brake-temp-degc type="double">15</L1brake-temp-degc>
|
||||
<L2brake-temp-degc type="double">15</L2brake-temp-degc>
|
||||
<tyre-smoke type="int">0</tyre-smoke>
|
||||
<sprayspeed-ms type="double">0</sprayspeed-ms>
|
||||
<spray-density type="double">0</spray-density>
|
||||
<caster-angle-deg-damped type="double">0</caster-angle-deg-damped>
|
||||
</gear>
|
||||
<gear n="2">
|
||||
<Rbrake-smoke type="double">0</Rbrake-smoke>
|
||||
<R3brake-temp-degc type="double">15</R3brake-temp-degc>
|
||||
<R4brake-temp-degc type="double">15</R4brake-temp-degc>
|
||||
<tyre-smoke type="int">0</tyre-smoke>
|
||||
<sprayspeed-ms type="double">0</sprayspeed-ms>
|
||||
<spray-density type="double">0</spray-density>
|
||||
|
@ -958,9 +1038,7 @@
|
|||
|
||||
<services n="0">
|
||||
<chocks n="0">
|
||||
<nose type="bool">0</nose>
|
||||
<left type="bool">0</left>
|
||||
<right type="bool">0</right>
|
||||
<enable type="bool">0</enable>
|
||||
</chocks>
|
||||
<fuel-truck>
|
||||
<connect type="bool">0</connect>
|
||||
|
@ -978,6 +1056,38 @@
|
|||
<seperate-tiller-axis type="bool">0</seperate-tiller-axis>
|
||||
</options>
|
||||
</acconfig>
|
||||
<air-conditioning>
|
||||
<packs>
|
||||
<pack-1-output-temp type="double">0</pack-1-output-temp>
|
||||
<pack-2-output-temp type="double">0</pack-2-output-temp>
|
||||
<pack-1-outlet-temp type="double">0</pack-1-outlet-temp>
|
||||
<pack-2-outlet-temp type="double">0</pack-2-outlet-temp>
|
||||
<pack-flow-1 type="double">0</pack-flow-1>
|
||||
<pack-flow-2 type="double">0</pack-flow-2>
|
||||
</packs>
|
||||
<temperatures>
|
||||
<cabin-overall-temp-kelvin type="double">297</cabin-overall-temp-kelvin>
|
||||
<cockpit-duct type="double">0</cockpit-duct>
|
||||
<cabin-aft-duct type="double">0</cabin-aft-duct>
|
||||
<cabin-fwd-duct type="double">0</cabin-fwd-duct>
|
||||
<cockpit-temp type="double">0</cockpit-temp>
|
||||
<cabin-aft-temp type="double">0</cabin-aft-temp>
|
||||
<cabin-fwd-temp type="double">0</cabin-fwd-temp>
|
||||
</temperatures>
|
||||
<valves>
|
||||
<flow-control-valve-1 type="double">0</flow-control-valve-1>
|
||||
<flow-control-valve-2 type="double">0</flow-control-valve-2>
|
||||
<ram-air type="double">0</ram-air>
|
||||
</valves>
|
||||
<warnings>
|
||||
<pack-1-disagree type="bool">0</pack-1-disagree>
|
||||
<pack-2-disagree type="bool">0</pack-2-disagree>
|
||||
<pack-1-fault-light type="bool">0</pack-1-fault-light>
|
||||
<pack-2-fault-light type="bool">0</pack-2-fault-light>
|
||||
<pack-1-ovht type="bool">0</pack-1-ovht>
|
||||
<pack-2-ovht type="bool">0</pack-2-ovht>
|
||||
</warnings>
|
||||
</air-conditioning>
|
||||
<atc>
|
||||
<transponder-code type="string">2000</transponder-code>
|
||||
<failed type="bool">0</failed>
|
||||
|
@ -1015,6 +1125,7 @@
|
|||
</ess-tr-contactor>
|
||||
</relay>
|
||||
<some-electric-thingie>
|
||||
<emer-elec-config type="bool">0</emer-elec-config>
|
||||
<emer-gen-operate type="bool">0</emer-gen-operate>
|
||||
</some-electric-thingie>
|
||||
<sources>
|
||||
|
@ -1028,6 +1139,12 @@
|
|||
</bat-2>
|
||||
</sources>
|
||||
</electrical>
|
||||
|
||||
<fadec>
|
||||
<n1mode1 type="bool">0</n1mode1>
|
||||
<n1mode2 type="bool">0</n1mode2>
|
||||
</fadec>
|
||||
|
||||
<failures n="0">
|
||||
<aileron-left type="bool">0</aileron-left>
|
||||
<aileron-right type="bool">0</aileron-right>
|
||||
|
@ -1062,7 +1179,20 @@
|
|||
<sec3 type="bool">0</sec3>
|
||||
<fac1 type="bool">0</fac1>
|
||||
<fac2 type="bool">0</fac2>
|
||||
<rtlu-1 type="bool">0</rtlu-1>
|
||||
<rtlu-2 type="bool">0</rtlu-2>
|
||||
<yaw-damper-1 type="bool">0</yaw-damper-1>
|
||||
<yaw-damper-2 type="bool">0</yaw-damper-2>
|
||||
</fctl>
|
||||
<fuel>
|
||||
<left-tank-pump-1 type="bool">0</left-tank-pump-1>
|
||||
<left-tank-pump-2 type="bool">0</left-tank-pump-2>
|
||||
<center-tank-pump-1 type="bool">0</center-tank-pump-1>
|
||||
<center-tank-pump-2 type="bool">0</center-tank-pump-2>
|
||||
<right-tank-pump-1 type="bool">0</right-tank-pump-1>
|
||||
<right-tank-pump-2 type="bool">0</right-tank-pump-2>
|
||||
</fuel>
|
||||
<gear type="bool">0</gear>
|
||||
<hydraulic>
|
||||
<blue-edp type="bool">0</blue-edp>
|
||||
<blue-elec type="bool">0</blue-elec>
|
||||
|
@ -1074,7 +1204,31 @@
|
|||
<yellow-elec type="bool">0</yellow-elec>
|
||||
<yellow-leak type="bool">0</yellow-leak>
|
||||
</hydraulic>
|
||||
<rudder type="bool">0</rudder>
|
||||
<icing>
|
||||
<wing-left-valve type="bool">0</wing-left-valve>
|
||||
<wing-right-valve type="bool">0</wing-right-valve>
|
||||
<engine-left-valve type="bool">0</engine-left-valve>
|
||||
<engine-right-valve type="bool">0</engine-right-valve>
|
||||
</icing>
|
||||
<pneumatics>
|
||||
<apu-valve type="bool">0</apu-valve>
|
||||
<bleed-1-valve type="bool">0</bleed-1-valve>
|
||||
<bleed-2-valve type="bool">0</bleed-2-valve>
|
||||
<bmc-1 type="bool">0</bmc-1>
|
||||
<bmc-2 type="bool">0</bmc-2>
|
||||
<cabin-fans type="bool">0</cabin-fans>
|
||||
<hot-air-valve type="bool">0</hot-air-valve>
|
||||
<hp-1-valve type="bool">0</hp-1-valve>
|
||||
<hp-2-valve type="bool">0</hp-2-valve>
|
||||
<pack-1-valve type="bool">0</pack-1-valve>
|
||||
<pack-2-valve type="bool">0</pack-2-valve>
|
||||
<ram-air-valve type="bool">0</ram-air-valve>
|
||||
<trim-valve-cockpit type="bool">0</trim-valve-cockpit>
|
||||
<trim-valve-cabin-aft type="bool">0</trim-valve-cabin-aft>
|
||||
<trim-valve-cabin-fwd type="bool">0</trim-valve-cabin-fwd>
|
||||
<x-bleed-valve type="bool">0</x-bleed-valve>
|
||||
</pneumatics>
|
||||
<spoilers>
|
||||
<spoiler-l1 type="bool">0</spoiler-l1>
|
||||
<spoiler-l2 type="bool">0</spoiler-l2>
|
||||
<spoiler-l3 type="bool">0</spoiler-l3>
|
||||
|
@ -1085,12 +1239,14 @@
|
|||
<spoiler-r3 type="bool">0</spoiler-r3>
|
||||
<spoiler-r4 type="bool">0</spoiler-r4>
|
||||
<spoiler-r5 type="bool">0</spoiler-r5>
|
||||
</spoilers>
|
||||
<engine-left-fire type="bool">0</engine-left-fire>
|
||||
<engine-right-fire type="bool">0</engine-right-fire>
|
||||
<apu-fire type="bool">0</apu-fire>
|
||||
<cargo-fwd-fire type="bool">0</cargo-fwd-fire>
|
||||
<cargo-aft-fire type="bool">0</cargo-aft-fire>
|
||||
</failures>
|
||||
|
||||
<fctl n="0">
|
||||
<elac1 type="bool">0</elac1>
|
||||
<elac2 type="bool">0</elac2>
|
||||
|
@ -1099,7 +1255,9 @@
|
|||
<sec3 type="bool">0</sec3>
|
||||
<fac1 type="bool">0</fac1>
|
||||
<fac2 type="bool">0</fac2>
|
||||
<yawdamper-active type="bool">0</yawdamper-active>
|
||||
</fctl>
|
||||
|
||||
<fire n="0">
|
||||
<apu>
|
||||
<temperature type="double">0</temperature>
|
||||
|
@ -1141,9 +1299,13 @@
|
|||
<valves>
|
||||
<apu-lp-valve-cmd type="bool">0</apu-lp-valve-cmd>
|
||||
</valves>
|
||||
<offset-left type="double">0</offset-left>
|
||||
<offset-right type="double">0</offset-right>
|
||||
<fuel-used-1 type="double">0</fuel-used-1>
|
||||
<fuel-used-2 type="double">0</fuel-used-2>
|
||||
<mode-fault type="bool">0</mode-fault>
|
||||
</fuel>
|
||||
|
||||
<hydraulic n="0">
|
||||
<sources>
|
||||
<ptu>
|
||||
|
@ -1156,22 +1318,120 @@
|
|||
<yellow-psi>0</yellow-psi>
|
||||
</hydraulic>
|
||||
|
||||
<pneumatics>
|
||||
<egt-1-factor type="double">0.36</egt-1-factor>
|
||||
<egt-2-factor type="double">0.36</egt-2-factor>
|
||||
<indicating>
|
||||
<bmc1-working type="bool">0</bmc1-working>
|
||||
<bmc2-working type="bool">0</bmc2-working>
|
||||
</indicating>
|
||||
<pack-1-bypass type="bool">0</pack-1-bypass>
|
||||
<pack-2-bypass type="bool">0</pack-2-bypass>
|
||||
<pack-1-flow type="double">0</pack-1-flow>
|
||||
<pack-2-flow type="double">0</pack-2-flow>
|
||||
<precooler>
|
||||
<temp-1 type="double">0</temp-1>
|
||||
<temp-2 type="double">0</temp-2>
|
||||
<ovht-1 type="double">0</ovht-1>
|
||||
<ovht-2 type="double">0</ovht-2>
|
||||
</precooler>
|
||||
<psi>
|
||||
<crossbleed-duct-left type="double">0</crossbleed-duct-left>
|
||||
<crossbleed-duct-right type="double">0</crossbleed-duct-right>
|
||||
<crossbleed-duct-left-src type="int">0</crossbleed-duct-left-src>
|
||||
<crossbleed-duct-right-src type="int">0</crossbleed-duct-right-src>
|
||||
<engine-1-psi type="double">0</engine-1-psi>
|
||||
<engine-2-psi type="double">0</engine-2-psi>
|
||||
<engine-1-downstream-prv type="double">0</engine-1-downstream-prv>
|
||||
<engine-2-downstream-prv type="double">0</engine-2-downstream-prv>
|
||||
<engine-1-downstream-opv type="double">0</engine-1-downstream-opv>
|
||||
<engine-2-downstream-opv type="double">0</engine-2-downstream-opv>
|
||||
<engine-1-upstream-src type="double">0</engine-1-upstream-src>
|
||||
<engine-2-upstream-src type="double">0</engine-2-upstream-src>
|
||||
</psi>
|
||||
<source>
|
||||
<apu-psi type="double">0</apu-psi>
|
||||
<gnd-psi type="double">0</gnd-psi>
|
||||
<engine-1-lp-psi type="double">0</engine-1-lp-psi>
|
||||
<engine-2-lp-psi type="double">0</engine-2-lp-psi>
|
||||
<engine-1-hp-psi type="double">0</engine-1-hp-psi>
|
||||
<engine-2-hp-psi type="double">0</engine-2-hp-psi>
|
||||
</source>
|
||||
<valves>
|
||||
<apu-bleed-valve type="double">0</apu-bleed-valve>
|
||||
<crossbleed-valve type="double">0</crossbleed-valve>
|
||||
<engine-1-lp-valve type="double">0</engine-1-lp-valve>
|
||||
<engine-2-lp-valve type="double">0</engine-2-lp-valve>
|
||||
<engine-1-hp-valve type="double">0</engine-1-hp-valve>
|
||||
<engine-2-hp-valve type="double">0</engine-2-hp-valve>
|
||||
<engine-1-opv-valve type="double">0</engine-1-opv-valve>
|
||||
<engine-2-opv-valve type="double">0</engine-2-opv-valve>
|
||||
<engine-1-prv-valve type="double">0</engine-1-prv-valve>
|
||||
<engine-2-prv-valve type="double">0</engine-2-prv-valve>
|
||||
<engine-1-prv-valve-disag type="bool">0</engine-1-prv-valve-disag>
|
||||
<engine-2-prv-valve-disag type="bool">0</engine-2-prv-valve-disag>
|
||||
<wing-ice-1 type="double">0</wing-ice-1>
|
||||
<wing-ice-2 type="double">0</wing-ice-2>
|
||||
<pack-1 type="double">0</pack-1>
|
||||
<pack-2 type="double">0</pack-2>
|
||||
<starter-valve-1 type="bool">0</starter-valve-1>
|
||||
<starter-valve-2 type="bool">0</starter-valve-2>
|
||||
</valves>
|
||||
<warnings>
|
||||
<apu-bleed-not-on-cmd type="bool">0</apu-bleed-not-on-cmd>
|
||||
<apu-bleed-not-on type="double">0</apu-bleed-not-on>
|
||||
<bleed1-fault type="bool">0</bleed1-fault>
|
||||
<bleed2-fault type="bool">0</bleed2-fault>
|
||||
<crossbleed-disag type="bool">0</crossbleed-disag>
|
||||
<crossbleed-disag-open type="bool">0</crossbleed-disag-open>
|
||||
</warnings>
|
||||
</pneumatics>
|
||||
|
||||
<pressurization>
|
||||
<cabinpsi type="double">14.7</cabinpsi>
|
||||
<ditchingpb type="double">14.7</ditchingpb>
|
||||
</pressurization>
|
||||
|
||||
<pitot n="0">
|
||||
<icing type="double">0</icing>
|
||||
<serviceable type="bool">1</serviceable>
|
||||
</pitot>
|
||||
|
||||
<pitot n="1">
|
||||
<serviceable>1</serviceable>
|
||||
<icing type="double">0</icing>
|
||||
<serviceable type="bool">1</serviceable>
|
||||
</pitot>
|
||||
|
||||
<pitot n="2">
|
||||
<serviceable>1</serviceable>
|
||||
<icing type="double">0</icing>
|
||||
<serviceable type="bool">1</serviceable>
|
||||
</pitot>
|
||||
|
||||
<static n="1">
|
||||
<serviceable>1</serviceable>
|
||||
<serviceable type="bool">1</serviceable>
|
||||
</static>
|
||||
|
||||
<static n="2">
|
||||
<serviceable>1</serviceable>
|
||||
<serviceable type="bool">1</serviceable>
|
||||
</static>
|
||||
|
||||
<thrust>
|
||||
<alpha-floor type="bool">0</alpha-floor>
|
||||
<clbreduc-ft type="double">1500</clbreduc-ft>
|
||||
<eng-out type="bool">0</eng-out>
|
||||
<lim-flex type="bool">0</lim-flex>
|
||||
<lvrclb type="bool">0</lvrclb>
|
||||
<state1 type="string">IDLE</state1>
|
||||
<state2 type="string">IDLE</state2>
|
||||
<toga-lk type="bool">0</toga-lk>
|
||||
<thr-locked type="bool">0</thr-locked>
|
||||
<thr-locked-alert type="bool">0</thr-locked-alert>
|
||||
<thr-lock-cmd n="0" type="double">0</thr-lock-cmd>
|
||||
<thr-lock-cmd n="1" type="double">0</thr-lock-cmd>
|
||||
<thr-locked-flash type="bool">0</thr-locked-flash>
|
||||
<thr-locked-time type="double">0</thr-locked-time>
|
||||
</thrust>
|
||||
|
||||
<navigation>
|
||||
<aligned-1 type="bool">0</aligned-1>
|
||||
<aligned-2 type="bool">0</aligned-2>
|
||||
|
@ -1192,6 +1452,14 @@
|
|||
<steep-ils-avail type="bool">0</steep-ils-avail>
|
||||
<enable-ecam-actions>0</enable-ecam-actions>
|
||||
<test-canvas type="bool">0</test-canvas>
|
||||
<model-options>
|
||||
<registration type="string">G-EZTB</registration>
|
||||
<three-letter type="string">EZY</three-letter>
|
||||
<two-letter type="string">U2</two-letter>
|
||||
<sharklet type="bool">0</sharklet>
|
||||
<wifi-aft type="bool">0</wifi-aft> <!-- Iridium / inmarsat satcom + wireless -->
|
||||
<wifi-fwd type="bool">0</wifi-fwd> <!-- Fly-fy-->
|
||||
</model-options>
|
||||
</options>
|
||||
|
||||
<instrumentation n="0">
|
||||
|
@ -4001,10 +4269,16 @@
|
|||
<file>Aircraft/A320-family/Nasal/Libraries/buttons.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Libraries/shake.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Libraries/zoom-views.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Libraries/custom-views.nas</file>
|
||||
</libraries>
|
||||
<acconfig>
|
||||
<file>Aircraft/A320-family/AircraftConfig/acconfig.nas</file>
|
||||
</acconfig>
|
||||
<effects>
|
||||
<file>Aircraft/A320-family/Nasal/Effects/light-manager.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Effects/thunder-effects.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Effects/icing.nas</file>
|
||||
</effects>
|
||||
<systems>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/APU.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/electrical.nas</file>
|
||||
|
@ -4013,15 +4287,13 @@
|
|||
<file>Aircraft/A320-family/Nasal/Systems/fuel.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/FADEC/engines-common.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/ADIRS/ADR.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/ADIRS/SwitchingPanel.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Panels/SwitchingPanel.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/Comm/HF.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/brakes.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/brakesystem.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Instruments/clock.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/fire.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/ground_services.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/icing.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/payload.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Panels/clock.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/tyresmoke.nas</file>
|
||||
</systems>
|
||||
<ecam>
|
||||
|
@ -4031,11 +4303,6 @@
|
|||
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-messages.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-phases.nas</file>
|
||||
</ecam>
|
||||
<effects>
|
||||
<file>Aircraft/A320-family/Nasal/Effects/light-manager.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Effects/effects.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Effects/thunder-effects.nas</file>
|
||||
</effects>
|
||||
<fadec>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/FADEC/fadec-common.nas</file>
|
||||
</fadec>
|
||||
|
@ -4052,6 +4319,7 @@
|
|||
<file>Aircraft/A320-family/Nasal/FMGC/FMGC.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/FMGC/FMGC-b.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/FMGC/FMGC-c.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/FMGC/winds.nas</file>
|
||||
</fmgc>
|
||||
<mcdu>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/DUPLICATE.nas</file> <!-- dynamic page - init before others as used in various pages -->
|
||||
|
@ -4062,9 +4330,14 @@
|
|||
<file>Aircraft/A320-family/Nasal/MCDU/ARRIVAL.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/AIRWAYS.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/CLOSESTAIRPORT.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/RECEIVEDMESSAGES.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/PILOTWAYPOINT.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/HOLD.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/F-PLN.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/WINDCLB.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/WINDCRZ.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/WINDDES.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/WINDHIST.nas</file> <!-- dynamic page - init before MCDU -->
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/MCDU.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/INITA.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/IRSINIT.nas</file>
|
||||
|
@ -4083,6 +4356,7 @@
|
|||
<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>
|
||||
<!-- Canvas -->
|
||||
|
@ -4102,6 +4376,9 @@
|
|||
<canvas_mcdu>
|
||||
<file>Aircraft/A320-family/Models/Instruments/MCDU/MCDU.nas</file>
|
||||
</canvas_mcdu>
|
||||
<canvas_qrh>
|
||||
<file>Aircraft/A320-family/Nasal/QRH/QRH.nas</file>
|
||||
</canvas_qrh>
|
||||
<mcdu_scratchpad> <!-- delay till after canvas mcdu -->
|
||||
<file>Aircraft/A320-family/Nasal/FMGC/mcdu-messages.nas</file>
|
||||
</mcdu_scratchpad>
|
||||
|
@ -4128,6 +4405,9 @@
|
|||
<atc>
|
||||
<file>Aircraft/A320-family/Nasal/Panels/atc.nas</file>
|
||||
</atc>
|
||||
<atsu>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/Comm/Notification.nas</file>
|
||||
</atsu>
|
||||
<dmc>
|
||||
<file>Aircraft/A320-family/Nasal/Displays/DMC.nas</file>
|
||||
</dmc>
|
||||
|
@ -4139,6 +4419,9 @@
|
|||
<save>
|
||||
<file>Aircraft/A320-family/Nasal/Systems/save.nas</file>
|
||||
</save>
|
||||
<Simbrief>
|
||||
<file>Aircraft/A320-family/Nasal/FMGC/SimbriefParser.nas</file>
|
||||
</Simbrief>
|
||||
</nasal>
|
||||
|
||||
<maintainance>
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<livery>
|
||||
<file>Airbus</file>
|
||||
</livery>
|
||||
<livery-dir type="string">Aircraft/A320-family/Models/Liveries/A320/CFM-NEO</livery-dir>
|
||||
</model>
|
||||
|
||||
<sound>
|
||||
|
@ -170,10 +171,4 @@
|
|||
<eng>LEAP-1A26</eng>
|
||||
</MCDUC>
|
||||
|
||||
<nasal>
|
||||
<specific>
|
||||
<file>Aircraft/A320-family/Nasal/Libraries/a320livery-neocfm.nas</file>
|
||||
</specific>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -201,17 +201,20 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
<system file="a320-fwc"/>
|
||||
<system file="a320-fwc-phases"/>
|
||||
<system file="a320-spoiler"/>
|
||||
<system file="a320-electrical"/>
|
||||
<system file="a320-hydraulic"/>
|
||||
<system file="a320-pneumatic"/>
|
||||
<system file="a320-aircond"/> <!-- after pneu -->
|
||||
<system file="a320-lights"/>
|
||||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
<flight_control name="none"/>
|
||||
|
||||
<aerodynamics file="Systems/a320-aerodynamics.xml"/>
|
||||
<external_reactions file="Systems/a320-external-reactions"/>
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<livery>
|
||||
<file>Airbus</file>
|
||||
</livery>
|
||||
<livery-dir type="string">Aircraft/A320-family/Models/Liveries/A320/PW-NEO</livery-dir>
|
||||
</model>
|
||||
|
||||
<sound>
|
||||
|
@ -170,10 +171,4 @@
|
|||
<eng>PW1133-JM</eng>
|
||||
</MCDUC>
|
||||
|
||||
<nasal>
|
||||
<specific>
|
||||
<file>Aircraft/A320-family/Nasal/Libraries/a320livery-neopw.nas</file>
|
||||
</specific>
|
||||
</nasal>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -201,17 +201,20 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
<system file="a320-fwc"/>
|
||||
<system file="a320-fwc-phases"/>
|
||||
<system file="a320-spoiler"/>
|
||||
<system file="a320-electrical"/>
|
||||
<system file="a320-hydraulic"/>
|
||||
<system file="a320-pneumatic"/>
|
||||
<system file="a320-aircond"/> <!-- after pneu -->
|
||||
<system file="a320-lights"/>
|
||||
<system file="a320-engine-fire"/>
|
||||
<system file="a320-adr"/>
|
||||
<system file="a320-apu"/>
|
||||
<system file="a320-fmgc"/>
|
||||
<system file="a320-misc"/>
|
||||
|
||||
<flight_control name="none"/>
|
||||
|
||||
<aerodynamics file="Systems/a320-aerodynamics.xml"/>
|
||||
<external_reactions file="Systems/a320-external-reactions"/>
|
||||
|
||||
|
|
|
@ -21,60 +21,41 @@ var spinning = maketimer(0.05, func {
|
|||
});
|
||||
|
||||
var failReset = func {
|
||||
# Put IntegratedSystems Fail Reset Functions here
|
||||
systems.ELEC.resetFail();
|
||||
systems.PNEU.resetFail();
|
||||
}
|
||||
|
||||
var failResetOld = func {
|
||||
setprop("/systems/failures/elac1", 0);
|
||||
setprop("/systems/failures/elac2", 0);
|
||||
setprop("/systems/failures/sec1", 0);
|
||||
setprop("/systems/failures/sec2", 0);
|
||||
setprop("/systems/failures/sec3", 0);
|
||||
setprop("/systems/failures/fac1", 0);
|
||||
setprop("/systems/failures/fac2", 0);
|
||||
setprop("/systems/failures/fctl/elac1", 0);
|
||||
setprop("/systems/failures/fctl/elac2", 0);
|
||||
setprop("/systems/failures/fctl/sec1", 0);
|
||||
setprop("/systems/failures/fctl/sec2", 0);
|
||||
setprop("/systems/failures/fctl/sec3", 0);
|
||||
setprop("/systems/failures/fctl/fac1", 0);
|
||||
setprop("/systems/failures/fctl/fac2", 0);
|
||||
setprop("/systems/failures/fctl/rtlu-1", 0);
|
||||
setprop("/systems/failures/fctl/rtlu-2", 0);
|
||||
setprop("/systems/failures/aileron-left", 0);
|
||||
setprop("/systems/failures/aileron-right", 0);
|
||||
setprop("/systems/failures/elevator-left", 0);
|
||||
setprop("/systems/failures/elevator-right", 0);
|
||||
setprop("/systems/failures/rudder", 0);
|
||||
setprop("/systems/failures/spoiler-l1", 0);
|
||||
setprop("/systems/failures/spoiler-l2", 0);
|
||||
setprop("/systems/failures/spoiler-l3", 0);
|
||||
setprop("/systems/failures/spoiler-l4", 0);
|
||||
setprop("/systems/failures/spoiler-l5", 0);
|
||||
setprop("/systems/failures/spoiler-r1", 0);
|
||||
setprop("/systems/failures/spoiler-r2", 0);
|
||||
setprop("/systems/failures/spoiler-r3", 0);
|
||||
setprop("/systems/failures/spoiler-r4", 0);
|
||||
setprop("/systems/failures/spoiler-r5", 0);
|
||||
setprop("/systems/failures/elec-ac-ess", 0);
|
||||
setprop("/systems/failures/elec-batt1", 0);
|
||||
setprop("/systems/failures/elec-batt2", 0);
|
||||
setprop("/systems/failures/elec-galley", 0);
|
||||
setprop("/systems/failures/elec-genapu", 0);
|
||||
setprop("/systems/failures/elec-gen1", 0);
|
||||
setprop("/systems/failures/elec-gen2", 0);
|
||||
setprop("/systems/failures/bleed-apu", 0);
|
||||
setprop("/systems/failures/bleed-ext", 0);
|
||||
setprop("/systems/failures/bleed-eng1", 0);
|
||||
setprop("/systems/failures/bleed-eng2", 0);
|
||||
setprop("/systems/failures/pack1", 0);
|
||||
setprop("/systems/failures/pack2", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l1", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l2", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l3", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l4", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-l5", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r1", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r2", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r3", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r4", 0);
|
||||
setprop("/systems/failures/spoilers/spoiler-r5", 0);
|
||||
setprop("/systems/failures/hyd-blue", 0);
|
||||
setprop("/systems/failures/hyd-green", 0);
|
||||
setprop("/systems/failures/hyd-yellow", 0);
|
||||
setprop("/systems/failures/ptu", 0);
|
||||
setprop("/systems/failures/pump-blue", 0);
|
||||
setprop("/systems/failures/pump-green", 0);
|
||||
setprop("/systems/failures/pump-yellow-eng", 0);
|
||||
setprop("/systems/failures/pump-yellow-elec", 0);
|
||||
setprop("/systems/failures/tank0pump1", 0);
|
||||
setprop("/systems/failures/tank0pump2", 0);
|
||||
setprop("/systems/failures/tank1pump1", 0);
|
||||
setprop("/systems/failures/tank1pump2", 0);
|
||||
setprop("/systems/failures/tank2pump1", 0);
|
||||
setprop("/systems/failures/tank2pump2", 0);
|
||||
setprop("/systems/failures/fuelmode", 0);
|
||||
setprop("/systems/failures/cargo-aft-fire", 0);
|
||||
setprop("/systems/failures/cargo-fwd-fire", 0);
|
||||
setprop("/systems/failures/engine-left-fire", 0);
|
||||
|
@ -121,6 +102,7 @@ var error_mismatch = gui.Dialog.new("/sim/gui/dialogs/acconfig/error/mismatch/di
|
|||
var fuel_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/fuel/dialog", "Aircraft/A320-family/AircraftConfig/fuel.xml");
|
||||
var groundservices_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/groundsrvc/dialog", "Aircraft/A320-family/AircraftConfig/groundservices.xml");
|
||||
var loadflightplan_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/loadfpln/dialog","Aircraft/A320-family/AircraftConfig/load-flightplan.xml");
|
||||
var simbrief_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/simbrief/dialog","Aircraft/A320-family/AircraftConfig/simbrief.xml");
|
||||
var du_quality = gui.Dialog.new("/sim/gui/dialogs/acconfig/du-quality/dialog", "Aircraft/A320-family/AircraftConfig/du-quality.xml");
|
||||
var rendering_dlg = gui.Dialog.new("/sim/gui/dialogs/rendering/dialog", "Aircraft/A320-family/AircraftConfig/rendering.xml");
|
||||
spinning.start();
|
||||
|
@ -131,6 +113,7 @@ var current_revision = io.readfile(revisionFile);
|
|||
print("A320-family Revision: " ~ current_revision);
|
||||
setprop("/systems/acconfig/revision", current_revision);
|
||||
setprop("/systems/acconfig/options/fo-view", 0);
|
||||
setprop("/systems/acconfig/options/simbrief-username", "");
|
||||
|
||||
setlistener("/systems/acconfig/new-revision", func {
|
||||
if (getprop("/systems/acconfig/new-revision") > current_revision) {
|
||||
|
@ -247,6 +230,7 @@ var readSettings = func {
|
|||
setprop("/sim/model/autopush/route/show", getprop("/systems/acconfig/options/autopush/show-route"));
|
||||
setprop("/sim/model/autopush/route/show-wingtip", getprop("/systems/acconfig/options/autopush/show-wingtip"));
|
||||
setprop("/options/system/fo-view", getprop("/systems/acconfig/options/fo-view"));
|
||||
setprop("/FMGC/simbrief-username", getprop("/systems/acconfig/options/simbrief-username"));
|
||||
}
|
||||
|
||||
var writeSettings = func {
|
||||
|
@ -258,6 +242,7 @@ var writeSettings = func {
|
|||
setprop("/systems/acconfig/options/autopush/show-route", getprop("/sim/model/autopush/route/show"));
|
||||
setprop("/systems/acconfig/options/autopush/show-wingtip", getprop("/sim/model/autopush/route/show-wingtip"));
|
||||
setprop("/systems/acconfig/options/fo-view", getprop("/options/system/fo-view"));
|
||||
setprop("/systems/acconfig/options/simbrief-username", getprop("/FMGC/simbrief-username"));
|
||||
io.write_properties(getprop("/sim/fg-home") ~ "/Export/A320-family-config.xml", "/systems/acconfig/options");
|
||||
}
|
||||
|
||||
|
@ -375,11 +360,11 @@ var beforestart_b = func {
|
|||
setprop("/controls/electrical/switches/galley", 1);
|
||||
setprop("/controls/electrical/switches/gen-1", 1);
|
||||
setprop("/controls/electrical/switches/gen-2", 1);
|
||||
setprop("/controls/pneumatic/switches/bleedapu", 1);
|
||||
setprop("/controls/pneumatic/switches/bleed1", 1);
|
||||
setprop("/controls/pneumatic/switches/bleed2", 1);
|
||||
setprop("/controls/pneumatic/switches/pack1", 1);
|
||||
setprop("/controls/pneumatic/switches/pack2", 1);
|
||||
setprop("/controls/pneumatics/switches/apu", 1);
|
||||
setprop("/controls/pneumatics/switches/bleed-1", 1);
|
||||
setprop("/controls/pneumatics/switches/bleed-2", 1);
|
||||
setprop("/controls/pneumatics/switches/pack-1", 1);
|
||||
setprop("/controls/pneumatics/switches/pack-2", 1);
|
||||
setprop("/controls/adirs/ir[0]/knob","1");
|
||||
setprop("/controls/adirs/ir[1]/knob","1");
|
||||
setprop("/controls/adirs/ir[2]/knob","1");
|
||||
|
@ -462,11 +447,11 @@ var taxi_b = func {
|
|||
setprop("/controls/electrical/switches/galley", 1);
|
||||
setprop("/controls/electrical/switches/gen-1", 1);
|
||||
setprop("/controls/electrical/switches/gen-2", 1);
|
||||
setprop("/controls/pneumatic/switches/bleedapu", 1);
|
||||
setprop("/controls/pneumatic/switches/bleed1", 1);
|
||||
setprop("/controls/pneumatic/switches/bleed2", 1);
|
||||
setprop("/controls/pneumatic/switches/pack1", 1);
|
||||
setprop("/controls/pneumatic/switches/pack2", 1);
|
||||
setprop("/controls/pneumatics/switches/apu", 1);
|
||||
setprop("/controls/pneumatics/switches/bleed-1", 1);
|
||||
setprop("/controls/pneumatics/switches/bleed-2", 1);
|
||||
setprop("/controls/pneumatics/switches/pack-1", 1);
|
||||
setprop("/controls/pneumatics/switches/pack-2", 1);
|
||||
setprop("/controls/adirs/ir[0]/knob","1");
|
||||
setprop("/controls/adirs/ir[1]/knob","1");
|
||||
setprop("/controls/adirs/ir[2]/knob","1");
|
||||
|
@ -497,7 +482,7 @@ var taxi_b = func {
|
|||
if (pts.Instrumentation.Altimeter.std.getBoolValue()) {
|
||||
libraries.toggleSTD();
|
||||
}
|
||||
setprop("/instrumentation/altimeter[0]/setting-inhg", getprop("/environment/pressure-sea-level-inhg"));
|
||||
setprop("/instrumentation/altimeter[0]/setting-inhg", getprop("/environment/metar[0]/pressure-inhg") or 29.92);
|
||||
settimer(taxi_c, 2);
|
||||
}
|
||||
var taxi_c = func {
|
||||
|
@ -512,7 +497,7 @@ var taxi_d = func {
|
|||
# After Start items.
|
||||
setprop("/controls/engines/engine-start-switch", 1);
|
||||
setprop("/controls/apu/master", 0);
|
||||
setprop("/controls/pneumatic/switches/bleedapu", 0);
|
||||
setprop("/controls/pneumatics/switches/apu", 0);
|
||||
setprop("/controls/gear/brake-left", 0);
|
||||
setprop("/controls/gear/brake-right", 0);
|
||||
setprop("/systems/acconfig/autoconfig-running", 0);
|
||||
|
@ -527,7 +512,7 @@ var takeoff = func {
|
|||
# The same as taxi, except we set some things afterwards.
|
||||
taxi();
|
||||
var eng_one_chk_c = setlistener("/engines/engine[0]/state", func {
|
||||
if (getprop("/engines/engine[0]/state") == 3) {
|
||||
if (pts.Engines.Engine.state[0].getValue() == 3) {
|
||||
removelistener(eng_one_chk_c);
|
||||
setprop("/controls/switches/strobe", 1.0);
|
||||
setprop("/controls/lighting/taxi-light-switch", 1);
|
||||
|
@ -538,7 +523,7 @@ var takeoff = func {
|
|||
setprop("/controls/atc/mode-knob", 4);
|
||||
atc.transponderPanel.modeSwitch(5);
|
||||
setprop("/controls/flight/elevator-trim", -0.07);
|
||||
systems.arm_autobrake(3);
|
||||
systems.Autobrake.arm_autobrake(3);
|
||||
setprop("/ECAM/to-config-test", 1);
|
||||
settimer(func {
|
||||
setprop("/ECAM/to-config-test", 0);
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<pitch-deg type="float">0.0</pitch-deg>
|
||||
<min-turn-radius-m type="float">15</min-turn-radius-m>
|
||||
<stopping-distance-m type="float">5.0</stopping-distance-m>
|
||||
<chocks alias="/services/chocks/nose"/>
|
||||
<chocks alias="/services/chocks/enable"/>
|
||||
<available type="int">1</available>
|
||||
<enabled type="int"/>
|
||||
<connected type="bool">false</connected>
|
||||
|
|
|
@ -124,6 +124,46 @@
|
|||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>RTLU1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/fctl/rtlu-1</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>RTLU2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/fctl/rtlu-2</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Yaw Damper 1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/fctl/yaw-damper-1</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Yaw Damper 2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/fctl/yaw-damper-2</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
|
||||
|
@ -138,30 +178,10 @@
|
|||
</hrule>
|
||||
</group>
|
||||
|
||||
<checkbox>
|
||||
<label>Bleed APU</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/bleed-apu</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Bleed EXT</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/bleed-ext</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Bleed ENG 1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/bleed-eng1</property>
|
||||
<property>/systems/failures/pneumatics/bleed-1-valve</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -171,7 +191,47 @@
|
|||
<checkbox>
|
||||
<label>Bleed ENG 2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/bleed-eng2</property>
|
||||
<property>/systems/failures/pneumatics/bleed-2-valve</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>HP Valve ENG 1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pneumatics/hp-1-valve</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>HP Valve ENG 2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pneumatics/hp-2-valve</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Hot Air Valve</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pneumatics/hot-air-valve</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Ram Air Valve</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pneumatics/ram-air-valve</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -181,7 +241,7 @@
|
|||
<checkbox>
|
||||
<label>Pack 1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pack1</property>
|
||||
<property>/systems/failures/pneumatics/pack-1-valve</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -191,13 +251,22 @@
|
|||
<checkbox>
|
||||
<label>Pack 2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pack2</property>
|
||||
<property>/systems/failures/pneumatics/pack-2-valve</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>X Bleed</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pneumatics/x-bleed-valve</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
</group>
|
||||
|
||||
<vrule/>
|
||||
|
@ -222,7 +291,7 @@
|
|||
<checkbox>
|
||||
<label>Blue HYD Leak</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/hyd-blue</property>
|
||||
<property>/systems/failures/hydraulic/blue-leak</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -232,7 +301,7 @@
|
|||
<checkbox>
|
||||
<label>Blue ELEC Pump</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pump-blue</property>
|
||||
<property>/systems/failures/hydraulic/blue-elec</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -242,7 +311,7 @@
|
|||
<checkbox>
|
||||
<label>Green HYD Leak</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/hyd-green</property>
|
||||
<property>/systems/failures/hydraulic/green-leak</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -252,7 +321,7 @@
|
|||
<checkbox>
|
||||
<label>Green ENG 1 Pump</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pump-green</property>
|
||||
<property>/systems/failures/hydraulic/green-edp</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -262,7 +331,7 @@
|
|||
<checkbox>
|
||||
<label>Yellow HYD Leak</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/hyd-yellow</property>
|
||||
<property>/systems/failures/hydraulic/yellow-leak</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -272,7 +341,7 @@
|
|||
<checkbox>
|
||||
<label>Yellow ENG 2 Pump</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pump-yellow-eng</property>
|
||||
<property>/systems/failures/hydraulic/yellow-edp</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -282,7 +351,17 @@
|
|||
<checkbox>
|
||||
<label>Yellow ELEC Pump</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/pump-yellow-elec</property>
|
||||
<property>/systems/failures/hydraulic/yellow-elec</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>PTU</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/hydraulic/ptu</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -306,7 +385,7 @@
|
|||
<checkbox>
|
||||
<label>AC ESS Bus</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/elec-ac-ess</property>
|
||||
<property>/systems/failures/electrical/ac-ess-bus</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -316,7 +395,7 @@
|
|||
<checkbox>
|
||||
<label>APU GEN</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/elec-genapu</property>
|
||||
<property>/systems/failures/electrical/apu</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -326,7 +405,7 @@
|
|||
<checkbox>
|
||||
<label>BATTERY 1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/elec-batt1</property>
|
||||
<property>/systems/failures/electrical/bat-1</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -336,7 +415,27 @@
|
|||
<checkbox>
|
||||
<label>BATTERY 2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/elec-batt2</property>
|
||||
<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>
|
||||
<property>/systems/failures/electrical/dc-ess-bus</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>EMER GEN</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/electrical/emer-gen</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -346,7 +445,7 @@
|
|||
<checkbox>
|
||||
<label>ENG 1 GEN</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/elec-gen1</property>
|
||||
<property>/systems/failures/electrical/gen-1</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -356,17 +455,7 @@
|
|||
<checkbox>
|
||||
<label>ENG 2 GEN</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/elec-gen2</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Galley Bus</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/elec-galley</property>
|
||||
<property>/systems/failures/electrical/gen-2</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -397,7 +486,7 @@
|
|||
<checkbox>
|
||||
<label>Tank L Pump 1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/tank0pump1</property>
|
||||
<property>/systems/failures/fuel/left-tank-pump-1</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -407,7 +496,7 @@
|
|||
<checkbox>
|
||||
<label>Tank L Pump 2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/tank0pump2</property>
|
||||
<property>/systems/failures/fuel/left-tank-pump-2</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -417,7 +506,7 @@
|
|||
<checkbox>
|
||||
<label>Tank C Pump 1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/tank1pump1</property>
|
||||
<property>/systems/failures/fuel/center-tank-pump-1</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -427,7 +516,7 @@
|
|||
<checkbox>
|
||||
<label>Tank C Pump 2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/tank1pump2</property>
|
||||
<property>/systems/failures/fuel/center-tank-pump-2</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -437,7 +526,7 @@
|
|||
<checkbox>
|
||||
<label>Tank R Pump 1</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/tank2pump1</property>
|
||||
<property>/systems/failures/fuel/right-tank-pump-1</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -447,7 +536,7 @@
|
|||
<checkbox>
|
||||
<label>Tank R Pump 2</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/tank2pump2</property>
|
||||
<property>/systems/failures/fuel/right-tank-pump-2</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
|
|
@ -51,8 +51,11 @@
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
setprop("it-fbw/degrade-law", 0);
|
||||
setprop("it-fbw/law", 0);
|
||||
setprop("/it-fbw/degrade-law", 0);
|
||||
setprop("/it-fbw/law", 0);
|
||||
setprop("/it-fbw/degrade-yaw-law", 0);
|
||||
setprop("/it-fbw/yaw-law", 0);
|
||||
fbw.FBW.apOff = 0;
|
||||
gui.popupTip("Fly By Wire switched to NORMAL law!");
|
||||
</script>
|
||||
</binding>
|
||||
|
@ -67,8 +70,11 @@
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
setprop("it-fbw/degrade-law", 1);
|
||||
setprop("it-fbw/law", 1);
|
||||
setprop("/it-fbw/degrade-law", 1);
|
||||
setprop("/it-fbw/law", 1);
|
||||
setprop("/it-fbw/degrade-yaw-law", 1);
|
||||
setprop("/it-fbw/yaw-law", 1);
|
||||
fbw.FBW.apOff = 1;
|
||||
gui.popupTip("Fly By Wire switched to ALTERNATE law!");
|
||||
</script>
|
||||
</binding>
|
||||
|
@ -83,8 +89,11 @@
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
setprop("it-fbw/degrade-law", 2);
|
||||
setprop("it-fbw/law", 2);
|
||||
setprop("/it-fbw/degrade-law", 2);
|
||||
setprop("/it-fbw/law", 2);
|
||||
setprop("/it-fbw/degrade-yaw-law", 2);
|
||||
setprop("/it-fbw/yaw-law", 2);
|
||||
fbw.FBW.apOff = 1;
|
||||
gui.popupTip("Fly By Wire switched to DIRECT law!");
|
||||
</script>
|
||||
</binding>
|
||||
|
@ -99,8 +108,11 @@
|
|||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
setprop("it-fbw/degrade-law", 3);
|
||||
setprop("it-fbw/law", 3);
|
||||
setprop("/it-fbw/degrade-law", 3);
|
||||
setprop("/it-fbw/law", 3);
|
||||
setprop("/it-fbw/degrade-yaw-law", 2);
|
||||
setprop("/it-fbw/yaw-law", 2);
|
||||
fbw.FBW.apOff = 1;
|
||||
gui.popupTip("Fly By Wire switched to MECHANICAL BACKUP law!");
|
||||
</script>
|
||||
</binding>
|
||||
|
|
|
@ -32,100 +32,181 @@
|
|||
<group>
|
||||
<layout>vbox</layout>
|
||||
|
||||
<checkbox>
|
||||
<label>Enable De-icing Truck</label>
|
||||
<halign>left</halign>
|
||||
<property>/services/deicing_truck/enable</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
<text>
|
||||
<label>Landing Gear</label>
|
||||
</text>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
</group>
|
||||
|
||||
<button>
|
||||
<legend>De-ice Aircraft</legend>
|
||||
<halign>center</halign>
|
||||
<padding>5</padding>
|
||||
<group>
|
||||
<layout>vbox</layout>
|
||||
<checkbox>
|
||||
<label>Enable Gear Chocks</label>
|
||||
<halign>left</halign>
|
||||
<enable>
|
||||
<property>/services/deicing_truck/enable</property>
|
||||
<and>
|
||||
<property>/gear/gear[0]/wow</property>
|
||||
<property>/gear/gear[1]/wow</property>
|
||||
<property>/gear/gear[2]/wow</property>
|
||||
</and>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/services/deicing_truck/de-ice</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<hrule />
|
||||
|
||||
<button>
|
||||
<legend>Fuel Truck</legend>
|
||||
<halign>center</halign>
|
||||
<padding>5</padding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
acconfig.fuel_dlg.open();
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<hrule />
|
||||
|
||||
<checkbox>
|
||||
<label>Enable Catering Truck</label>
|
||||
<halign>left</halign>
|
||||
<property>/services/catering/enable</property>
|
||||
<property>/services/chocks/enable</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
<button>
|
||||
<legend>Toggle Catering</legend>
|
||||
<halign>center</halign>
|
||||
<padding>5</padding>
|
||||
<enable>
|
||||
<property>/services/catering/enable</property>
|
||||
</enable>
|
||||
<binding>
|
||||
<condition>
|
||||
<less-than>
|
||||
<property>/services/catering/position-norm</property>
|
||||
<value>0.1</value>
|
||||
</less-than>
|
||||
</condition><command>property-interpolate</command>
|
||||
<property>/services/catering/position-norm</property>
|
||||
<value>0.68</value>
|
||||
<time>5</time>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
<property>/services/catering/position-norm</property>
|
||||
<value>0.1</value>
|
||||
</greater-than-equals>
|
||||
</condition><command>property-interpolate</command>
|
||||
<property>/services/catering/position-norm</property>
|
||||
<value>0.0</value>
|
||||
<time>5</time>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<checkbox>
|
||||
<label>Enable Baggage Ramp</label>
|
||||
<halign>left</halign>
|
||||
<property>/services/baggage/enable</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
<group>
|
||||
<layout>vbox</layout>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
<text>
|
||||
<label>APU / EPU / AIR / HYD</label>
|
||||
</text>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
</group>
|
||||
|
||||
<text>
|
||||
<label>APU Oil Level</label>
|
||||
</text>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<slider>
|
||||
<enable>
|
||||
<property>/systems/apu/oil/allow-oil-consumption</property>
|
||||
</enable>
|
||||
<x>10</x>
|
||||
<y>50</y>
|
||||
<width>200</width>
|
||||
<property>/systems/apu/oil/level-l</property>
|
||||
<min>3.9</min>
|
||||
<max>5.4</max>
|
||||
<live>true</live>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</slider>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>200</y>
|
||||
<label>8.8 litres</label><!-- placeholder for width -->
|
||||
<format>%.1f litres</format>
|
||||
<property>/systems/apu/oil/level-l</property>
|
||||
<live>true</live>
|
||||
</text>
|
||||
</group>
|
||||
|
||||
<checkbox>
|
||||
<label>Enable External Power Box</label>
|
||||
<halign>left</halign>
|
||||
<property>/controls/electrical/ground-cart</property>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/controls/electrical/switches/ext-pwr</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<enable>
|
||||
<and>
|
||||
<or>
|
||||
<property>/controls/gear/brake-parking</property>
|
||||
<property>/services/chocks/enable</property>
|
||||
</or>
|
||||
<less-than>
|
||||
<property>/velocities/groundspeed-kt</property>
|
||||
<value>2</value>
|
||||
</less-than>
|
||||
</and>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Enable External Air</label>
|
||||
<halign>left</halign>
|
||||
<property>/controls/pneumatics/switches/groundair</property>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/pneumatics/switches/groundair</property>
|
||||
</binding>
|
||||
<enable>
|
||||
<and>
|
||||
<or>
|
||||
<property>/controls/gear/brake-parking</property>
|
||||
<property>/services/chocks/enable</property>
|
||||
</or>
|
||||
<less-than>
|
||||
<property>/velocities/groundspeed-kt</property>
|
||||
<value>2</value>
|
||||
</less-than>
|
||||
</and>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Yellow HYD Hand Pump</label>
|
||||
<halign>left</halign>
|
||||
<property>/controls/hydraulic/hand-pump-yellow</property>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/hydraulic/hand-pump-yellow</property>
|
||||
</binding>
|
||||
<enable>
|
||||
<and>
|
||||
<or>
|
||||
<property>/controls/gear/brake-parking</property>
|
||||
<property>/services/chocks/enable</property>
|
||||
</or>
|
||||
<less-than>
|
||||
<property>/velocities/groundspeed-kt</property>
|
||||
<value>2</value>
|
||||
</less-than>
|
||||
<less-than>
|
||||
<property>/systems/electrical/bus/ac-2</property>
|
||||
<value>115</value>
|
||||
</less-than>
|
||||
<equals>
|
||||
<property>/controls/electrical/switches/ext-pwr</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<layout>vbox</layout>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
|
@ -169,45 +250,144 @@
|
|||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
<text>
|
||||
<label>APU Oil Level</label>
|
||||
<label>Baggage</label>
|
||||
</text>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<slider>
|
||||
<enable>
|
||||
<property>/systems/apu/oil/allow-oil-consumption</property>
|
||||
</enable>
|
||||
<x>10</x>
|
||||
<y>50</y>
|
||||
<width>200</width>
|
||||
<property>/systems/apu/oil/level-l</property>
|
||||
<min>3.9</min>
|
||||
<max>5.4</max>
|
||||
<live>true</live>
|
||||
<checkbox>
|
||||
<label>Enable Baggage Ramp</label>
|
||||
<halign>left</halign>
|
||||
<property>/services/baggage/enable</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
</slider>
|
||||
|
||||
<text>
|
||||
<x>10</x>
|
||||
<y>200</y>
|
||||
<label>8.8 litres</label> <!-- placeholder for width -->
|
||||
<format>%.1f litres</format>
|
||||
<property>/systems/apu/oil/level-l</property>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
<text>
|
||||
<label>Catering</label>
|
||||
</text>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
</group>
|
||||
|
||||
<checkbox>
|
||||
<label>Enable Catering Truck</label>
|
||||
<halign>left</halign>
|
||||
<property>/services/catering/enable</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<button>
|
||||
<legend>Toggle Catering</legend>
|
||||
<halign>center</halign>
|
||||
<padding>5</padding>
|
||||
<enable>
|
||||
<property>/services/catering/enable</property>
|
||||
</enable>
|
||||
<binding>
|
||||
<condition>
|
||||
<less-than>
|
||||
<property>/services/catering/position-norm</property>
|
||||
<value>0.1</value>
|
||||
</less-than>
|
||||
</condition>
|
||||
<command>property-interpolate</command>
|
||||
<property>/services/catering/position-norm</property>
|
||||
<value>0.68</value>
|
||||
<time>5</time>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
<property>/services/catering/position-norm</property>
|
||||
<value>0.1</value>
|
||||
</greater-than-equals>
|
||||
</condition>
|
||||
<command>property-interpolate</command>
|
||||
<property>/services/catering/position-norm</property>
|
||||
<value>0.0</value>
|
||||
<time>5</time>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
<text>
|
||||
<label>Fuel</label>
|
||||
</text>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
</group>
|
||||
|
||||
<button>
|
||||
<legend>Fuel Truck</legend>
|
||||
<halign>center</halign>
|
||||
<padding>5</padding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
acconfig.fuel_dlg.open();
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
<text>
|
||||
<label>De-icing</label>
|
||||
</text>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
</group>
|
||||
|
||||
<checkbox>
|
||||
<label>Enable De-icing Truck</label>
|
||||
<halign>left</halign>
|
||||
<property>/services/deicing_truck/enable</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<button>
|
||||
<legend>De-ice Aircraft</legend>
|
||||
<halign>center</halign>
|
||||
<padding>5</padding>
|
||||
<enable>
|
||||
<property>/services/deicing_truck/enable</property>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/services/deicing_truck/de-ice</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
</PropertyList>
|
||||
|
|
|
@ -74,6 +74,10 @@
|
|||
<halign>left</halign>
|
||||
<label>If you have a NAVIGRAPH subcription, we reccomend to load them in the MCDU instead of here.</label>
|
||||
</text>
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>Minimum FGFS version for use of this feature (due to bugs in prior versions) is 2020.1.3.</label>
|
||||
</text>
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<text>
|
||||
|
@ -85,7 +89,29 @@
|
|||
<legend>Load flightplan</legend>
|
||||
<equal>true</equal>
|
||||
<enable>
|
||||
<and>
|
||||
<property>FMGC/internal/tofrom-set</property>
|
||||
<not>
|
||||
<or>
|
||||
<equals>
|
||||
<property>/sim/version/flightgear</property>
|
||||
<value>2019.2.0</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>/sim/version/flightgear</property>
|
||||
<value>2020.1.0</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>/sim/version/flightgear</property>
|
||||
<value>2020.1.1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>/sim/version/flightgear</property>
|
||||
<value>2020.1.2</value>
|
||||
</equals>
|
||||
</or>
|
||||
</not>
|
||||
</and>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
|
|
|
@ -220,150 +220,6 @@
|
|||
</binding>
|
||||
</button>
|
||||
|
||||
<checkbox>
|
||||
<label>Nose Gear Chock</label>
|
||||
<halign>left</halign>
|
||||
<enable>
|
||||
<and>
|
||||
<property>/gear/gear[0]/wow</property>
|
||||
<property>/gear/gear[1]/wow</property>
|
||||
<property>/gear/gear[2]/wow</property>
|
||||
</and>
|
||||
</enable>
|
||||
<property>/services/chocks/nose</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Main Left Gear Chock</label>
|
||||
<halign>left</halign>
|
||||
<enable>
|
||||
<and>
|
||||
<property>/gear/gear[0]/wow</property>
|
||||
<property>/gear/gear[1]/wow</property>
|
||||
<property>/gear/gear[2]/wow</property>
|
||||
</and>
|
||||
</enable>
|
||||
<property>/services/chocks/left</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Main Right Gear Chock</label>
|
||||
<halign>left</halign>
|
||||
<enable>
|
||||
<and>
|
||||
<property>/gear/gear[0]/wow</property>
|
||||
<property>/gear/gear[1]/wow</property>
|
||||
<property>/gear/gear[2]/wow</property>
|
||||
</and>
|
||||
</enable>
|
||||
<property>/services/chocks/right</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Enable External Power Box</label>
|
||||
<halign>left</halign>
|
||||
<property>/controls/electrical/ground-cart</property>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>/controls/electrical/switches/ext-pwr</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<enable>
|
||||
<and>
|
||||
<or>
|
||||
<property>/controls/gear/brake-parking</property>
|
||||
<property>/services/chocks/nose</property>
|
||||
<property>/services/chocks/left</property>
|
||||
<property>/services/chocks/right</property>
|
||||
</or>
|
||||
<less-than>
|
||||
<property>/velocities/groundspeed-kt</property>
|
||||
<value>2</value>
|
||||
</less-than>
|
||||
</and>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Enable External Air</label>
|
||||
<halign>left</halign>
|
||||
<property>/controls/pneumatic/switches/groundair</property>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/pneumatic/switches/groundair</property>
|
||||
</binding>
|
||||
<enable>
|
||||
<and>
|
||||
<or>
|
||||
<property>/controls/gear/brake-parking</property>
|
||||
<property>/services/chocks/nose</property>
|
||||
<property>/services/chocks/left</property>
|
||||
<property>/services/chocks/right</property>
|
||||
</or>
|
||||
<less-than>
|
||||
<property>/velocities/groundspeed-kt</property>
|
||||
<value>2</value>
|
||||
</less-than>
|
||||
</and>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Yellow HYD Hand Pump</label>
|
||||
<halign>left</halign>
|
||||
<property>/controls/hydraulic/hand-pump-yellow</property>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>/controls/hydraulic/hand-pump-yellow</property>
|
||||
</binding>
|
||||
<enable>
|
||||
<and>
|
||||
<or>
|
||||
<property>/controls/gear/brake-parking</property>
|
||||
<property>/services/chocks/nose</property>
|
||||
<property>/services/chocks/left</property>
|
||||
<property>/services/chocks/right</property>
|
||||
</or>
|
||||
<less-than>
|
||||
<property>/velocities/groundspeed-kt</property>
|
||||
<value>2</value>
|
||||
</less-than>
|
||||
<less-than>
|
||||
<property>/systems/electrical/bus/ac-2</property>
|
||||
<value>115</value>
|
||||
</less-than>
|
||||
<equals>
|
||||
<property>/controls/electrical/switches/ext-pwr</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</enable>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<hrule/>
|
||||
|
||||
<checkbox>
|
||||
|
@ -387,7 +243,7 @@
|
|||
</checkbox>
|
||||
|
||||
<!-- TODO Comment back in, when fully implemented -->
|
||||
<!-- checkbox>
|
||||
<checkbox>
|
||||
<label>Weight in KG</label>
|
||||
<halign>left</halign>
|
||||
<property>/options/system/weight-kgs</property>
|
||||
|
@ -405,7 +261,7 @@
|
|||
</script>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox -->
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>ADIRS Aligns Instantly</label>
|
||||
|
|
84
AircraftConfig/simbrief.xml
Normal file
|
@ -0,0 +1,84 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<!-- A3XX Load Flightplans -->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<name>simbrief</name>
|
||||
<layout>vbox</layout>
|
||||
|
||||
<nasal>
|
||||
<close>
|
||||
acconfig.writeSettings();
|
||||
</close>
|
||||
</nasal>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>Simbrief API</label>
|
||||
</text>
|
||||
<button>
|
||||
<halign>right</halign>
|
||||
<pref-width>20</pref-width>
|
||||
<pref-height>20</pref-height>
|
||||
<legend>X</legend>
|
||||
<key>Esc</key>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
<hrule/>
|
||||
|
||||
<group>
|
||||
<layout>vbox</layout>
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>This dialog allows users to pull their flightplan from simbrief.</label>
|
||||
</text>
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>1. ACARS is only available if VHF3 is not in voice mode, and the appropriate electrical power is available.</label>
|
||||
</text>
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>2. Flightplan uplink is only available before engine start, if a flightplan is not yet entered in the MCDU</label>
|
||||
</text>
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>3. GIGO... there is no sanity check on inputs!</label>
|
||||
</text>
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>4. Please enter your username in the following text field (not case sensitive)</label>
|
||||
</text>
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
<input>
|
||||
<width>200</width>
|
||||
<height>25</height>
|
||||
<label>Username</label>
|
||||
<property>/FMGC/simbrief-username</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live type="bool">true</live>
|
||||
</input>
|
||||
</group>
|
||||
|
||||
<button>
|
||||
<x>40</x>
|
||||
<y>10</y>
|
||||
<legend>Apply / Exit</legend>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
</button>
|
||||
</group>
|
||||
|
||||
</PropertyList>
|
|
@ -3,9 +3,9 @@
|
|||
These examples will show the Guidelines for contributing. Please follow this at all times, or your contribution will not be merged.
|
||||
|
||||
## Basic Guidelines:
|
||||
- Use Tabs to indent code, DO NOT USE SPACE.
|
||||
- Use lowerCamelCase or underscores for naming Nasal variables/functions (someFunction, some_function).
|
||||
- Comments optional for XML, mandatory for Nasal.
|
||||
- Use Tabs to indent code
|
||||
- Use lowerCamelCase for naming Nasal variables/functions (someFunction)
|
||||
- Please document your code!
|
||||
- Do not add a comment to every line, only to functions/groups of code.
|
||||
- Remove .bak or .blend files, unless absolutely needed.
|
||||
- Leave one extra line at the bottom of each file.
|
||||
|
|
|
@ -132,7 +132,7 @@
|
|||
<path>Aircraft/A320-family/Models/Services/Chocks/chock_nose.ac</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>services/chocks/nose</property>
|
||||
<property>services/chocks/enable</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
|
@ -147,7 +147,7 @@
|
|||
<path>Aircraft/A320-family/Models/Services/Chocks/chock_left.ac</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>services/chocks/left</property>
|
||||
<property>services/chocks/enable</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
|
@ -163,7 +163,7 @@
|
|||
<path>Aircraft/A320-family/Models/Services/Chocks/chock_right.ac</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>services/chocks/right</property>
|
||||
<property>services/chocks/enable</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
|
|
BIN
Models/FlightDeck/QRH/1.jpeg
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
Models/FlightDeck/QRH/2.jpeg
Normal file
After Width: | Height: | Size: 166 KiB |
BIN
Models/FlightDeck/QRH/3.jpeg
Normal file
After Width: | Height: | Size: 69 KiB |
|
@ -1157,6 +1157,11 @@
|
|||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<not>
|
||||
<property>/it-autoflight/output/ap1</property>
|
||||
<property>/it-autoflight/output/ap2</property>
|
||||
</not>
|
||||
<or>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
|
@ -1167,6 +1172,7 @@
|
|||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</or>
|
||||
</and>
|
||||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
|
@ -1235,6 +1241,11 @@
|
|||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<not>
|
||||
<property>/it-autoflight/output/ap1</property>
|
||||
<property>/it-autoflight/output/ap2</property>
|
||||
</not>
|
||||
<or>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
|
@ -1245,6 +1256,7 @@
|
|||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</or>
|
||||
</and>
|
||||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
|
@ -1618,10 +1630,10 @@
|
|||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
if (getprop("controls/autobrake/mode") != 1) {
|
||||
systems.arm_autobrake(1);
|
||||
if (systems.Autobrake.mode.getValue() != 1) {
|
||||
systems.Autobrake.arm_autobrake(1);
|
||||
} else {
|
||||
systems.arm_autobrake(0);
|
||||
systems.Autobrake.arm_autobrake(0);
|
||||
}
|
||||
setprop("sim/sounde/oh-btn", 1);
|
||||
</script>
|
||||
|
@ -1645,10 +1657,10 @@
|
|||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
if (getprop("controls/autobrake/mode") != 2) {
|
||||
systems.arm_autobrake(2);
|
||||
if (systems.Autobrake.mode.getValue() != 2) {
|
||||
systems.Autobrake.arm_autobrake(2);
|
||||
} else {
|
||||
systems.arm_autobrake(0);
|
||||
systems.Autobrake.arm_autobrake(0);
|
||||
}
|
||||
setprop("sim/sounde/oh-btn", 1);
|
||||
</script>
|
||||
|
@ -1672,10 +1684,10 @@
|
|||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
if (getprop("controls/autobrake/mode") != 3) {
|
||||
systems.arm_autobrake(3);
|
||||
if (systems.Autobrake.mode.getValue() != 3) {
|
||||
systems.Autobrake.arm_autobrake(3);
|
||||
} else {
|
||||
systems.arm_autobrake(0);
|
||||
systems.Autobrake.arm_autobrake(0);
|
||||
}
|
||||
setprop("sim/sounde/oh-btn", 1);
|
||||
</script>
|
||||
|
@ -4323,7 +4335,7 @@
|
|||
<axis-alignment>xy-plane</axis-alignment>
|
||||
<type type="string">number-value</type>
|
||||
<format type="string">%3.0f</format>
|
||||
<property>it-autoflight/input/spd-kts</property>
|
||||
<property>it-autoflight/input/kts</property>
|
||||
<truncate>false</truncate>
|
||||
<font type="string">led.txf</font>
|
||||
<draw-text>true</draw-text>
|
||||
|
@ -4349,7 +4361,7 @@
|
|||
<axis-alignment>xy-plane</axis-alignment>
|
||||
<type type="string">number-value</type>
|
||||
<format type="string">%0.3f</format>
|
||||
<property>it-autoflight/input/spd-mach</property>
|
||||
<property>it-autoflight/input/mach</property>
|
||||
<truncate>false</truncate>
|
||||
<font type="string">led.txf</font>
|
||||
<draw-text>true</draw-text>
|
||||
|
@ -6162,9 +6174,8 @@
|
|||
<button>3</button>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>controls/flight/elevator-trim</property>
|
||||
<step>0.01</step>
|
||||
<command>nasal</command>
|
||||
<script>libraries.slewPitchWheel(1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
|
@ -6172,9 +6183,8 @@
|
|||
<button>4</button>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
<property>controls/flight/elevator-trim</property>
|
||||
<step>-0.01</step>
|
||||
<command>nasal</command>
|
||||
<script>libraries.slewPitchWheel(-1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -6231,7 +6241,7 @@
|
|||
<type>rotate</type>
|
||||
<object-name>LRudderPedalL</object-name>
|
||||
<object-name>LRudderPedalR</object-name>
|
||||
<property>controls/gear/brake-left</property>
|
||||
<property>/fdm/jsbsim/fcs/brake-left</property>
|
||||
<factor>15</factor>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
|
@ -6249,7 +6259,7 @@
|
|||
<type>rotate</type>
|
||||
<object-name>RRudderPedalL</object-name>
|
||||
<object-name>RRudderPedalR</object-name>
|
||||
<property>controls/gear/brake-right</property>
|
||||
<property>/fdm/jsbsim/fcs/brake-right</property>
|
||||
<factor>15</factor>
|
||||
<axis>
|
||||
<x>0</x>
|
||||
|
|
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
|
@ -72761,7 +72761,7 @@ name "ecam_glare_down"
|
|||
data 15
|
||||
CU1_curve_.1252
|
||||
crease 40.0
|
||||
texture "ECAM_glare.png"
|
||||
texture "ecam_glare_tex.png"
|
||||
texrep 1 1
|
||||
numvert 8
|
||||
-0.40392 -0.06108 -0.10745
|
||||
|
@ -72793,7 +72793,7 @@ name "ecam_glare_up"
|
|||
data 15
|
||||
CU1_curve_.1253
|
||||
crease 40.0
|
||||
texture "ECAM_glare.png"
|
||||
texture "ecam_glare_tex.png"
|
||||
texrep 1 1
|
||||
numvert 4
|
||||
-0.40892 -0.06801 0.10755
|
||||
|
|
|
@ -18,9 +18,6 @@ var iesi_rate = props.globals.getNode("/systems/acconfig/options/iesi-rate", 1);
|
|||
var et = props.globals.getNode("/sim/time/elapsed-sec", 1);
|
||||
var aconfig = props.globals.getNode("/systems/acconfig/autoconfig-running", 1);
|
||||
|
||||
var dcess = 0;
|
||||
var dchot1 = 0;
|
||||
|
||||
var airspeed = props.globals.getNode("/instrumentation/airspeed-indicator/indicated-speed-kt", 1);
|
||||
var mach = props.globals.getNode("/instrumentation/airspeed-indicator/indicated-mach", 1);
|
||||
var pitch = props.globals.getNode("/orientation/pitch-deg", 1);
|
||||
|
@ -29,7 +26,7 @@ var skid = props.globals.getNode("/instrumentation/slip-skid-ball/indicated-slip
|
|||
var altitude = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1);
|
||||
var altitude_ind = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft-pfd", 1);
|
||||
|
||||
var altimeter_mode = props.globals.getNode("/modes/altimeter/std", 1);
|
||||
var altimeter_mode = props.globals.getNode("/instrumentation/altimeter[0]/std", 1);
|
||||
var qnh_hpa = props.globals.getNode("/instrumentation/altimeter/setting-hpa", 1);
|
||||
var qnh_inhg = props.globals.getNode("/instrumentation/altimeter/setting-inhg", 1);
|
||||
|
||||
|
@ -77,11 +74,8 @@ var canvas_IESI_base = {
|
|||
return [];
|
||||
},
|
||||
update: func() {
|
||||
dcess = systems.ELEC.Bus.dcEss.getValue();
|
||||
dchot1 = systems.ELEC.Bus.dcHot1.getValue();
|
||||
|
||||
cur_time = et.getValue();
|
||||
if (dcess >= 25 or (dchot1 >= 25 and airspeed.getValue() >= 50 and cur_time >= 5)) {
|
||||
if (systems.ELEC.Bus.dcEss.getValue() >= 25 or (systems.ELEC.Bus.dcHot1.getValue() >= 25 and airspeed.getValue() >= 50 and cur_time >= 5)) {
|
||||
IESI.page.show();
|
||||
IESI.update();
|
||||
|
||||
|
@ -103,6 +97,7 @@ var canvas_IESI = {
|
|||
new: func(canvas_group, file) {
|
||||
var m = {parents: [canvas_IESI, canvas_IESI_base]};
|
||||
m.init(canvas_group, file);
|
||||
m._cachedInhg = -99;
|
||||
|
||||
return m;
|
||||
},
|
||||
|
@ -113,6 +108,7 @@ var canvas_IESI = {
|
|||
if (iesi_time.getValue() + 90 >= et.getValue()) {
|
||||
me["IESI"].hide();
|
||||
me["IESI_Init"].show();
|
||||
return;
|
||||
} else {
|
||||
me["IESI_Init"].hide();
|
||||
me["IESI"].show();
|
||||
|
@ -175,8 +171,13 @@ var canvas_IESI = {
|
|||
altTens = num(right(sprintf("%02d", altitude.getValue()), 2));
|
||||
me["ALT_tens"].setTranslation(0, altTens * 3.16);
|
||||
|
||||
# QNH
|
||||
if (altimeter_mode.getValue() == 1) {
|
||||
if (qnh_inhg.getValue() != me._cachedInhg) {
|
||||
me._cachedInhg = qnh_inhg.getValue();
|
||||
me.updateQNH();
|
||||
}
|
||||
},
|
||||
updateQNH: func() {
|
||||
if (altimeter_mode.getBoolValue()) {
|
||||
me["QNH_setting"].hide();
|
||||
me["QNH_std"].show();
|
||||
} else {
|
||||
|
@ -184,7 +185,7 @@ var canvas_IESI = {
|
|||
me["QNH_setting"].show();
|
||||
me["QNH_std"].hide();
|
||||
}
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
setlistener("sim/signals/fdm-initialized", func {
|
||||
|
@ -199,12 +200,16 @@ setlistener("sim/signals/fdm-initialized", func {
|
|||
|
||||
IESI = canvas_IESI.new(group_IESI, "Aircraft/A320-family/Models/Instruments/IESI/res/iesi.svg");
|
||||
|
||||
IESI.updateQNH();
|
||||
|
||||
IESI_update.start();
|
||||
if (iesi_rate.getValue() > 1) {
|
||||
rateApply();
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/instrumentation/altimeter[0]/std", func() { if (IESI != nil) { IESI.updateQNH(); } }, 0, 0);
|
||||
|
||||
var rateApply = func {
|
||||
IESI_update.restart(0.05 * iesi_rate.getValue());
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="bleed.svg">
|
||||
<metadata
|
||||
id="metadata375">
|
||||
|
@ -40,10 +40,10 @@
|
|||
inkscape:window-width="1366"
|
||||
inkscape:window-height="705"
|
||||
id="namedview371"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.4773733"
|
||||
inkscape:cx="843.6625"
|
||||
inkscape:cy="621.84897"
|
||||
showgrid="true"
|
||||
inkscape:zoom="0.73868665"
|
||||
inkscape:cx="272.22904"
|
||||
inkscape:cy="280.96379"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
|
@ -70,14 +70,6 @@
|
|||
id="rect5105-2"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:4.09363317;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-5"
|
||||
width="5.3955846"
|
||||
height="367.33694"
|
||||
x="463.6044"
|
||||
y="-581.08691"
|
||||
transform="rotate(90)" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.18700027px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:2.68228626px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
|
||||
|
@ -301,25 +293,30 @@
|
|||
transform="rotate(90)"
|
||||
inkscape:label="#rect5105-6-4-5-0" />
|
||||
<g
|
||||
id="BLEED-APU-LINES"
|
||||
inkscape:label="#g4686">
|
||||
<g
|
||||
transform="rotate(-90,880.67779,539.2177)"
|
||||
id="BLEED-APU"
|
||||
inkscape:label="#g3445"
|
||||
id="BLEED-APU">
|
||||
transform="rotate(-90,880.67779,539.2177)" />
|
||||
<g
|
||||
id="BLEED-APU-LINES"
|
||||
inkscape:label="#g1035">
|
||||
<g
|
||||
id="BLEED-APU-CIRCLE"
|
||||
inkscape:label="#g1015">
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#0dc04b;stroke-width:4.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 872.14551,172.28989 c 0,15.58192 -12.63164,28.21356 -28.21356,28.21356 -15.58192,0 -28.21356,-12.63164 -28.21356,-28.21356 0,-15.58192 12.63164,-28.21356 28.21356,-28.21356 15.58192,0 28.21356,12.63164 28.21356,28.21356 z"
|
||||
id="path5107-1-44-0"
|
||||
transform="rotate(-90,880.67777,539.21767)"
|
||||
sodipodi:nodetypes="zzzzz"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="zzzzz" />
|
||||
id="path5107-1-44-0"
|
||||
d="m 872.14551,172.28989 c 0,15.58192 -12.63164,28.21356 -28.21356,28.21356 -15.58192,0 -28.21356,-12.63164 -28.21356,-28.21356 0,-15.58192 12.63164,-28.21356 28.21356,-28.21356 15.58192,0 28.21356,12.63164 28.21356,28.21356 z"
|
||||
style="fill:none;fill-opacity:1;stroke:#0dc04b;stroke-width:4.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-2-5-3-6"
|
||||
width="53.195583"
|
||||
height="5.1203089"
|
||||
transform="rotate(-90,880.67777,539.21767)"
|
||||
y="169.28328"
|
||||
x="817.61298"
|
||||
y="169.28328" />
|
||||
height="5.1203089"
|
||||
width="53.195583"
|
||||
id="rect5105-2-5-3-6"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<rect
|
||||
y="602.28253"
|
||||
|
@ -328,14 +325,6 @@
|
|||
width="5.3955846"
|
||||
id="rect5105-6-4-5-1"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.27201295;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
inkscape:label="#rect5105-6-4-5-3"
|
||||
y="465.25"
|
||||
x="510.46811"
|
||||
height="83.83696"
|
||||
width="5.3955846"
|
||||
id="BLEED-APU-connection"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.95566499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="BLEED-GND"
|
||||
|
@ -360,13 +349,31 @@
|
|||
style="fill:none;stroke:#cecdce;stroke-width:2.87359571;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.66503072;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-5-7"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.91679168;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="BLEED-APU-connectionTop"
|
||||
width="5.3955846"
|
||||
height="80.537186"
|
||||
x="510.46811"
|
||||
y="465.25"
|
||||
inkscape:label="#rect5105-6-4-5-3" />
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.71239424;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="BLEED-xbleedLeft"
|
||||
width="5.3955846"
|
||||
height="302.10294"
|
||||
x="463.6044"
|
||||
y="-515.85291"
|
||||
transform="rotate(90)"
|
||||
inkscape:label="#rect5105-5" />
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.64573288;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="BLEED-xbleedRight"
|
||||
width="4.7754087"
|
||||
height="175.90536"
|
||||
height="173.36708"
|
||||
x="464.18976"
|
||||
y="-813.75"
|
||||
transform="rotate(90)" />
|
||||
transform="rotate(90)"
|
||||
inkscape:label="#rect5105-5-7" />
|
||||
<g
|
||||
id="BLEED-Pack-1-Flow-Valve"
|
||||
inkscape:label="#g3445"
|
||||
|
@ -599,7 +606,7 @@
|
|||
x="212.20123"
|
||||
height="28.975597"
|
||||
width="4.1129341"
|
||||
id="BLEED-Pack-1-Packflow-needel"
|
||||
id="BLEED-Pack-1-Packflow-needle"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.00380528;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:transform-center-x="-0.06117064"
|
||||
inkscape:transform-center-y="-30.783886" />
|
||||
|
@ -610,7 +617,7 @@
|
|||
x="-218.12874"
|
||||
height="32.696423"
|
||||
width="4.1145287"
|
||||
id="BLEED-Pack-1-Bypass-needel"
|
||||
id="BLEED-Pack-1-Bypass-needle"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.0665164;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:transform-center-x="-0.13399155"
|
||||
inkscape:transform-center-y="-28.056774" />
|
||||
|
@ -802,7 +809,7 @@
|
|||
x="209.9595"
|
||||
height="31.200571"
|
||||
width="4.1151652"
|
||||
id="BLEED-Pack-2-Packflow-needel"
|
||||
id="BLEED-Pack-2-Packflow-needle"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.04191506;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:transform-center-x="1.3492459"
|
||||
inkscape:transform-center-y="-34.314208" />
|
||||
|
@ -813,7 +820,7 @@
|
|||
x="-213.51646"
|
||||
height="32.714966"
|
||||
width="4.1114964"
|
||||
id="BLEED-Pack-2-Bypass-needel"
|
||||
id="BLEED-Pack-2-Bypass-needle"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.06642556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:transform-center-x="0.24542415"
|
||||
inkscape:transform-center-y="-28.143827" />
|
||||
|
@ -1063,7 +1070,7 @@
|
|||
y="537.82135">PSI</tspan></text>
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.35079527;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="BLEED-HP-1-connection-0"
|
||||
id="BLEED-HP-2-connection"
|
||||
width="5.3955846"
|
||||
height="39.996841"
|
||||
x="797.35443"
|
||||
|
@ -1138,12 +1145,12 @@
|
|||
transform="scale(0.94655352,1.0564643)"
|
||||
inkscape:label="#text3720"
|
||||
id="APUGentext-7-2-1-3-6-1"
|
||||
y="426.34195"
|
||||
x="148.62262"
|
||||
y="417.6925"
|
||||
x="130.38766"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.18700027px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.68228602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="426.34195"
|
||||
x="148.62262"
|
||||
y="417.6925"
|
||||
x="130.38766"
|
||||
id="tspan5816-7"
|
||||
sodipodi:role="line">ANTI</tspan></text>
|
||||
<path
|
||||
|
@ -1156,12 +1163,12 @@
|
|||
transform="scale(0.94655352,1.0564643)"
|
||||
inkscape:label="#text3720"
|
||||
id="APUGentext-7-2-1-3-6-7-5"
|
||||
y="457.41693"
|
||||
x="171.19373"
|
||||
y="448.76749"
|
||||
x="152.95877"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.18700027px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.68228602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
y="457.41693"
|
||||
x="171.19373"
|
||||
y="448.76749"
|
||||
x="152.95877"
|
||||
id="tspan5836-7"
|
||||
sodipodi:role="line">ICE</tspan></text>
|
||||
</g>
|
||||
|
@ -1346,4 +1353,13 @@
|
|||
x="560.88452"
|
||||
y="976.25214"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b">00</tspan></text>
|
||||
<rect
|
||||
transform="rotate(90)"
|
||||
y="-580.51971"
|
||||
x="463.6044"
|
||||
height="64.666832"
|
||||
width="5.3955846"
|
||||
id="BLEED-xbleedCenter"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.71758175;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:label="#rect1024" />
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
|
@ -12,7 +12,7 @@
|
|||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="cond.svg">
|
||||
<metadata
|
||||
id="metadata375">
|
||||
|
@ -41,9 +41,9 @@
|
|||
inkscape:window-height="705"
|
||||
id="namedview371"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.5"
|
||||
inkscape:cx="935.0004"
|
||||
inkscape:cy="859.89724"
|
||||
inkscape:zoom="163.84"
|
||||
inkscape:cx="931.44175"
|
||||
inkscape:cy="894.81836"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
|
@ -119,19 +119,6 @@
|
|||
id="rect5105-2"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.64407849px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="418.23062"
|
||||
y="52.832542"
|
||||
id="CONDZoneFault"
|
||||
inkscape:label="#text5149"
|
||||
transform="scale(0.92294741,1.0834854)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan95"
|
||||
x="418.23062"
|
||||
y="52.832542"
|
||||
style="font-size:31.72893906px;line-height:0;fill:#0dc04b;fill-opacity:1;stroke-width:2.64407849px">ALTN MODE</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
|
@ -375,7 +362,9 @@
|
|||
<g
|
||||
id="CONDTrimValveCKPT"
|
||||
inkscape:label="#g4870"
|
||||
transform="matrix(1.0008336,0,0,1.0076569,-0.20693166,-2.7123511)">
|
||||
transform="matrix(1.0008336,0,0,1.0076569,-0.20693166,-2.7123511)"
|
||||
inkscape:transform-center-x="0.34849792"
|
||||
inkscape:transform-center-y="-35.397308">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4844"
|
||||
|
@ -438,7 +427,9 @@
|
|||
<g
|
||||
transform="translate(224.8544,-0.57971191)"
|
||||
id="CONDTrimValveFWD"
|
||||
inkscape:label="#g4870">
|
||||
inkscape:label="#g4870"
|
||||
inkscape:transform-center-x="0.27914252"
|
||||
inkscape:transform-center-y="-35.133687">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4844-7"
|
||||
|
@ -501,7 +492,9 @@
|
|||
<g
|
||||
transform="translate(449.85443,-0.57974243)"
|
||||
id="CONDTrimValveAFT"
|
||||
inkscape:label="#g4870">
|
||||
inkscape:label="#g4870"
|
||||
inkscape:transform-center-x="0.17680135"
|
||||
inkscape:transform-center-y="-35.128738">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4844-7-1"
|
||||
|
@ -572,263 +565,267 @@
|
|||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<g
|
||||
transform="translate(453.74998,318.74089)"
|
||||
id="CargoCond"
|
||||
inkscape:label="#g1002">
|
||||
<g
|
||||
inkscape:label="#g4925"
|
||||
id="CONDHeat-scale-3-3-7"
|
||||
inkscape:label="#g4925">
|
||||
transform="translate(453.74998,318.74089)">
|
||||
<path
|
||||
inkscape:label="#APUN-scale"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="1234-9-9-8"
|
||||
style="fill:none;fill-opacity:1;stroke:#cecdce;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 192.74999,303.24999 c 27.03805,-27.40296 77.25,-33 110.25,0"
|
||||
style="fill:none;fill-opacity:1;stroke:#cecdce;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="1234-9-9-8"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:label="#APUN-scale" />
|
||||
<rect
|
||||
transform="scale(-1)"
|
||||
y="-282.70255"
|
||||
x="-251.25"
|
||||
height="12.452538"
|
||||
width="5.3955846"
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.75371224;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-1-7-2-4-0-4"
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.75371224;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
width="5.3955846"
|
||||
height="12.452538"
|
||||
x="-251.25"
|
||||
y="-282.70255"
|
||||
transform="scale(-1)" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.62508571"
|
||||
x="221.56564"
|
||||
y="279.96747"
|
||||
transform="scale(0.83344761,1.1998355)"
|
||||
id="text4971-8-8-5"
|
||||
transform="scale(0.83344761,1.1998355)"><tspan
|
||||
sodipodi:role="line"
|
||||
x="221.56564"
|
||||
y="279.96747"
|
||||
x="221.56564"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.62508571"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4973-1-8-0"
|
||||
style="font-size:25.00342751px;line-height:1.25;fill:#cecdce;fill-opacity:1;stroke-width:0.62508571"
|
||||
id="tspan4973-1-8-0">C</tspan></text>
|
||||
y="279.96747"
|
||||
x="221.56564"
|
||||
sodipodi:role="line">C</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.6385085"
|
||||
x="343.26071"
|
||||
y="285.13028"
|
||||
transform="scale(0.8513447,1.1746123)"
|
||||
id="text4979-2-5-3"
|
||||
transform="scale(0.8513447,1.1746123)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4977-9-0-6"
|
||||
x="343.26071"
|
||||
y="285.13028"
|
||||
style="font-size:25.54034042px;line-height:1.25;fill:#cecdce;fill-opacity:1;stroke-width:0.6385085">H</tspan></text>
|
||||
x="343.26071"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.6385085"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:25.54034042px;line-height:1.25;fill:#cecdce;fill-opacity:1;stroke-width:0.6385085"
|
||||
y="285.13028"
|
||||
x="343.26071"
|
||||
id="tspan4977-9-0-6"
|
||||
sodipodi:role="line">H</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="734.49084"
|
||||
y="474.75494"
|
||||
inkscape:label="#text5149"
|
||||
id="CONDTempCargoAFT"
|
||||
inkscape:label="#text5149"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5151-3-3"
|
||||
x="734.49084"
|
||||
y="474.75494"
|
||||
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:end;text-anchor:end;fill:#0dc04b;stroke-width:1px">34</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
x="734.49084"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="721.77655"
|
||||
y="514.75751"
|
||||
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:end;text-anchor:end;fill:#0dc04b;stroke-width:1px"
|
||||
y="474.75494"
|
||||
x="734.49084"
|
||||
id="tspan5151-3-3"
|
||||
sodipodi:role="line">34</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text5149"
|
||||
id="CONDDuctTempCargoAFT"
|
||||
inkscape:label="#text5149"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5151-3-9-0"
|
||||
x="721.77655"
|
||||
y="514.75751"
|
||||
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:end;text-anchor:end;fill:#0dc04b;stroke-width:1px">34</tspan></text>
|
||||
x="721.77655"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
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:end;text-anchor:end;fill:#0dc04b;stroke-width:1px"
|
||||
y="514.75751"
|
||||
x="721.77655"
|
||||
id="tspan5151-3-9-0"
|
||||
sodipodi:role="line">34</tspan></text>
|
||||
<g
|
||||
id="CONDOutletValve"
|
||||
transform="translate(-71.362998,288.46671)"
|
||||
inkscape:label="#g3445"
|
||||
transform="translate(-71.362998,288.46671)">
|
||||
id="CONDOutletValve">
|
||||
<path
|
||||
sodipodi:nodetypes="zzzzz"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;fill-opacity:1;stroke:#0dc04b;stroke-width:4.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 872.14551,172.28989 c 0,15.58192 -12.63164,28.21356 -28.21356,28.21356 -15.58192,0 -28.21356,-12.63164 -28.21356,-28.21356 0,-15.58192 12.63164,-28.21356 28.21356,-28.21356 15.58192,0 28.21356,12.63164 28.21356,28.21356 z"
|
||||
id="path5107-1"
|
||||
d="m 872.14551,172.28989 c 0,15.58192 -12.63164,28.21356 -28.21356,28.21356 -15.58192,0 -28.21356,-12.63164 -28.21356,-28.21356 0,-15.58192 12.63164,-28.21356 28.21356,-28.21356 15.58192,0 28.21356,12.63164 28.21356,28.21356 z"
|
||||
style="fill:none;fill-opacity:1;stroke:#0dc04b;stroke-width:4.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
y="169.28328"
|
||||
x="817.61298"
|
||||
height="5.1203089"
|
||||
width="53.195583"
|
||||
id="rect5105-2-5"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="CONDHotAirCargoValve"
|
||||
inkscape:label="#g3445"
|
||||
transform="translate(-9.6455357,523.96681)">
|
||||
<path
|
||||
sodipodi:nodetypes="zzzzz"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5107-1-4"
|
||||
d="m 872.14551,172.28989 c 0,15.58192 -12.63164,28.21356 -28.21356,28.21356 -15.58192,0 -28.21356,-12.63164 -28.21356,-28.21356 0,-15.58192 12.63164,-28.21356 28.21356,-28.21356 15.58192,0 28.21356,12.63164 28.21356,28.21356 z"
|
||||
style="fill:none;fill-opacity:1;stroke:#0dc04b;stroke-width:4.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
y="169.28328"
|
||||
x="817.61298"
|
||||
height="5.1203089"
|
||||
width="53.195583"
|
||||
id="rect5105-2-5-7"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
sodipodi:nodetypes="zzzzz" />
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6"
|
||||
width="5.3955846"
|
||||
height="21.920309"
|
||||
x="693.10443"
|
||||
y="-885.17029"
|
||||
transform="rotate(90)" />
|
||||
<g
|
||||
transform="translate(-8.4626824,314.74572)"
|
||||
id="CONDHotAir-text-5"
|
||||
inkscape:label="#g5063">
|
||||
<text
|
||||
transform="scale(0.89370291,1.1189401)"
|
||||
id="text5049-6"
|
||||
y="332.37225"
|
||||
x="1004.2363"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.73987794"
|
||||
xml:space="preserve"><tspan
|
||||
y="332.37225"
|
||||
x="1004.2363"
|
||||
id="tspan5053-9"
|
||||
sodipodi:role="line"
|
||||
style="font-size:29.59499741px;line-height:1.25">HOT</tspan></text>
|
||||
<text
|
||||
transform="scale(0.99117946,1.008899)"
|
||||
id="text5057-3"
|
||||
y="408.18839"
|
||||
x="907.98334"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.83926964"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:33.57078552px;line-height:1.25;fill:#cecdce;fill-opacity:1;stroke-width:0.83926964"
|
||||
y="408.18839"
|
||||
x="907.98334"
|
||||
id="tspan5055-7"
|
||||
sodipodi:role="line">AIR</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.18858266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6-4"
|
||||
width="5.3955846"
|
||||
height="104.99595"
|
||||
x="693.25"
|
||||
y="-804"
|
||||
transform="rotate(90)" />
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.11282313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6-4-5"
|
||||
width="5.3955846"
|
||||
height="27.145565"
|
||||
x="699.00403"
|
||||
y="671.5" />
|
||||
<g
|
||||
transform="matrix(1,0,0,0.97190814,453.00403,328.09597)"
|
||||
id="CONDTrimValveCargoAFT"
|
||||
inkscape:label="#g4870">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4844-7-1-5"
|
||||
d="m 248.50536,283.25445 7.99463,31.99554 h -16.5 z"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:#0dc04b;stroke-width:0.75px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
sodipodi:nodetypes="cccc" />
|
||||
<rect
|
||||
transform="scale(-1)"
|
||||
y="-353.32971"
|
||||
x="-251.39558"
|
||||
height="38.079739"
|
||||
width="5.3955846"
|
||||
id="rect5105-1-7-2-9-7-5-4"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.31802487;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="CONDInletValve"
|
||||
inkscape:label="#g3445"
|
||||
transform="rotate(-90,966.83923,436.0927)">
|
||||
<path
|
||||
sodipodi:nodetypes="zzzzz"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5107-1-44"
|
||||
d="m 872.14551,172.28989 c 0,15.58192 -12.63164,28.21356 -28.21356,28.21356 -15.58192,0 -28.21356,-12.63164 -28.21356,-28.21356 0,-15.58192 12.63164,-28.21356 28.21356,-28.21356 15.58192,0 28.21356,12.63164 28.21356,28.21356 z"
|
||||
style="fill:none;fill-opacity:1;stroke:#0dc04b;stroke-width:4.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
y="169.28328"
|
||||
x="817.61298"
|
||||
height="5.1203089"
|
||||
id="rect5105-2-5"
|
||||
width="53.195583"
|
||||
id="rect5105-2-5-3"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
height="5.1203089"
|
||||
x="817.61298"
|
||||
y="169.28328" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(-9.6455357,523.96681)"
|
||||
inkscape:label="#g3445"
|
||||
id="CONDHotAirCargoValve">
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#0dc04b;stroke-width:4.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 872.14551,172.28989 c 0,15.58192 -12.63164,28.21356 -28.21356,28.21356 -15.58192,0 -28.21356,-12.63164 -28.21356,-28.21356 0,-15.58192 12.63164,-28.21356 28.21356,-28.21356 15.58192,0 28.21356,12.63164 28.21356,28.21356 z"
|
||||
id="path5107-1-4"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="zzzzz" />
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-2-5-7"
|
||||
width="53.195583"
|
||||
height="5.1203089"
|
||||
x="817.61298"
|
||||
y="169.28328" />
|
||||
</g>
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.77140373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6-0"
|
||||
transform="rotate(90)"
|
||||
y="-885.17029"
|
||||
x="693.10443"
|
||||
height="21.920309"
|
||||
width="5.3955846"
|
||||
height="13.04398"
|
||||
x="699.60443"
|
||||
y="519.70599" />
|
||||
<rect
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.77140373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6-0-7"
|
||||
width="5.3955846"
|
||||
height="13.04398"
|
||||
x="768.60443"
|
||||
y="493.45602" />
|
||||
<rect
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1.47977984;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6-0-7-8"
|
||||
width="5.3955846"
|
||||
height="47.999954"
|
||||
x="501.1044"
|
||||
y="-774"
|
||||
transform="rotate(90)" />
|
||||
<rect
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.31769943;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6-0-7-8-6"
|
||||
width="5.3955846"
|
||||
height="117.74998"
|
||||
x="501.10443"
|
||||
y="-675"
|
||||
transform="rotate(90)" />
|
||||
<rect
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1.99221587;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6-0-7-8-6-8"
|
||||
width="5.3955846"
|
||||
height="87.000038"
|
||||
x="557.25"
|
||||
y="419.5" />
|
||||
<rect
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:3.13363338;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6-0-7-8-6-8-8"
|
||||
width="5.3955846"
|
||||
height="215.24992"
|
||||
x="-421.1456"
|
||||
y="557.25"
|
||||
transform="rotate(-90)" />
|
||||
<rect
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.73988998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-6-0-7-4"
|
||||
width="5.3955846"
|
||||
height="11.99999"
|
||||
x="768.75"
|
||||
y="415.75" />
|
||||
id="rect5105-6"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
inkscape:label="#g5063"
|
||||
id="CONDHotAir-text-5"
|
||||
transform="translate(-8.4626824,314.74572)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.68228602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="597.97925"
|
||||
y="448.3699"
|
||||
id="APUGentext-7-2-1-3"
|
||||
inkscape:label="#text3720"
|
||||
transform="scale(0.94655352,1.0564643)"><tspan
|
||||
style="font-size:32.18700027px;line-height:0;stroke-width:2.68228602px"
|
||||
y="448.3699"
|
||||
x="597.97925"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.73987794"
|
||||
x="1004.2363"
|
||||
y="332.37225"
|
||||
id="text5049-6"
|
||||
transform="scale(0.89370291,1.1189401)"><tspan
|
||||
style="font-size:29.59499741px;line-height:1.25"
|
||||
sodipodi:role="line"
|
||||
id="tspan4769-1">AFT</tspan></text>
|
||||
id="tspan5053-9"
|
||||
x="1004.2363"
|
||||
y="332.37225">HOT</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.83926964"
|
||||
x="907.98334"
|
||||
y="408.18839"
|
||||
id="text5057-3"
|
||||
transform="scale(0.99117946,1.008899)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5055-7"
|
||||
x="907.98334"
|
||||
y="408.18839"
|
||||
style="font-size:33.57078552px;line-height:1.25;fill:#cecdce;fill-opacity:1;stroke-width:0.83926964">AIR</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
transform="rotate(90)"
|
||||
y="-804"
|
||||
x="693.25"
|
||||
height="104.99595"
|
||||
width="5.3955846"
|
||||
id="rect5105-6-4"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.18858266;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
y="671.5"
|
||||
x="699.00403"
|
||||
height="27.145565"
|
||||
width="5.3955846"
|
||||
id="rect5105-6-4-5"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.11282313;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
inkscape:label="#g4870"
|
||||
id="CONDTrimValveCargoAFT"
|
||||
transform="matrix(1,0,0,0.97190814,453.00403,328.09597)">
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:#0dc04b;stroke-width:0.75px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 248.50536,283.25445 7.99463,31.99554 h -16.5 z"
|
||||
id="path4844-7-1-5"
|
||||
inkscape:connector-curvature="0" />
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.31802487;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-1-7-2-9-7-5-4"
|
||||
width="5.3955846"
|
||||
height="38.079739"
|
||||
x="-251.39558"
|
||||
y="-353.32971"
|
||||
transform="scale(-1)" />
|
||||
</g>
|
||||
<g
|
||||
transform="rotate(-90,966.83923,436.0927)"
|
||||
inkscape:label="#g3445"
|
||||
id="CONDInletValve">
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#0dc04b;stroke-width:4.80000019;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 872.14551,172.28989 c 0,15.58192 -12.63164,28.21356 -28.21356,28.21356 -15.58192,0 -28.21356,-12.63164 -28.21356,-28.21356 0,-15.58192 12.63164,-28.21356 28.21356,-28.21356 15.58192,0 28.21356,12.63164 28.21356,28.21356 z"
|
||||
id="path5107-1-44"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="zzzzz" />
|
||||
<rect
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect5105-2-5-3"
|
||||
width="53.195583"
|
||||
height="5.1203089"
|
||||
x="817.61298"
|
||||
y="169.28328" />
|
||||
</g>
|
||||
<rect
|
||||
y="519.70599"
|
||||
x="699.60443"
|
||||
height="13.04398"
|
||||
width="5.3955846"
|
||||
id="rect5105-6-0"
|
||||
style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.77140373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
y="493.45602"
|
||||
x="768.60443"
|
||||
height="13.04398"
|
||||
width="5.3955846"
|
||||
id="rect5105-6-0-7"
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.77140373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
transform="rotate(90)"
|
||||
y="-774"
|
||||
x="501.1044"
|
||||
height="47.999954"
|
||||
width="5.3955846"
|
||||
id="rect5105-6-0-7-8"
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1.47977984;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
transform="rotate(90)"
|
||||
y="-675"
|
||||
x="501.10443"
|
||||
height="117.74998"
|
||||
width="5.3955846"
|
||||
id="rect5105-6-0-7-8-6"
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.31769943;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
y="419.5"
|
||||
x="557.25"
|
||||
height="87.000038"
|
||||
width="5.3955846"
|
||||
id="rect5105-6-0-7-8-6-8"
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:1.99221587;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
transform="rotate(-90)"
|
||||
y="557.25"
|
||||
x="-421.1456"
|
||||
height="215.24992"
|
||||
width="5.3955846"
|
||||
id="rect5105-6-0-7-8-6-8-8"
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:3.13363338;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
y="415.75"
|
||||
x="768.75"
|
||||
height="11.99999"
|
||||
width="5.3955846"
|
||||
id="rect5105-6-0-7-4"
|
||||
style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:0.73988998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
transform="scale(0.94655352,1.0564643)"
|
||||
inkscape:label="#text3720"
|
||||
id="APUGentext-7-2-1-3"
|
||||
y="448.3699"
|
||||
x="597.97925"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.68228602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
id="tspan4769-1"
|
||||
sodipodi:role="line"
|
||||
x="597.97925"
|
||||
y="448.3699"
|
||||
style="font-size:32.18700027px;line-height:0;stroke-width:2.68228602px">AFT</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g913">
|
||||
<rect
|
||||
|
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
@ -534,7 +534,7 @@
|
|||
style="font-size:57.48457718px;line-height:1.25;fill:#0dbe4a;fill-opacity:1;stroke-width:1.43711448">-</tspan></text>
|
||||
<rect
|
||||
style="fill:#0dbe4a;fill-opacity:1;stroke:none;stroke-width:1.60198247;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="PRESS-Alt-needel"
|
||||
id="PRESS-Alt-needle"
|
||||
width="2.9978156"
|
||||
height="101.25005"
|
||||
x="353.5022"
|
||||
|
@ -543,7 +543,7 @@
|
|||
inkscape:label="#rect5105-6-0-7-4-5-6-7" />
|
||||
<rect
|
||||
style="fill:#0dbe4a;fill-opacity:1;stroke:none;stroke-width:1.60198259;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="PRESS-VS-needel"
|
||||
id="PRESS-VS-needle"
|
||||
width="2.9978156"
|
||||
height="101.25005"
|
||||
x="331.0022"
|
||||
|
@ -559,7 +559,7 @@
|
|||
inkscape:label="#APUN-scale" />
|
||||
<rect
|
||||
style="fill:#0dbe4a;fill-opacity:1;stroke:none;stroke-width:1.60198259;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="PRESS-deltaP-needel"
|
||||
id="PRESS-deltaP-needle"
|
||||
width="2.9978156"
|
||||
height="101.25005"
|
||||
x="352.75"
|
||||
|
@ -849,7 +849,7 @@
|
|||
y="861.18341"
|
||||
transform="rotate(-67.5)" />
|
||||
<g
|
||||
id="PRESS-Inlet-Needel"
|
||||
id="PRESS-Inlet-needle"
|
||||
inkscape:label="#g5744">
|
||||
<rect
|
||||
transform="rotate(90)"
|
||||
|
@ -868,7 +868,7 @@
|
|||
</g>
|
||||
<g
|
||||
transform="matrix(-1,0,0,1,739.49999,-0.75002256)"
|
||||
id="PRESS-Outlet-Needel"
|
||||
id="PRESS-Outlet-needle"
|
||||
inkscape:label="#g5744">
|
||||
<rect
|
||||
transform="rotate(90)"
|
||||
|
@ -887,7 +887,7 @@
|
|||
</g>
|
||||
<g
|
||||
transform="translate(455.99998,-24.145591)"
|
||||
id="PRESS-Man-Needel"
|
||||
id="PRESS-Man-needle"
|
||||
inkscape:label="#g5744">
|
||||
<rect
|
||||
transform="rotate(90)"
|
||||
|
@ -906,7 +906,7 @@
|
|||
</g>
|
||||
<g
|
||||
transform="rotate(-90,502.87498,368.875)"
|
||||
id="PRESS-Safety-Needel"
|
||||
id="PRESS-Safety-needle"
|
||||
inkscape:label="#g5744">
|
||||
<rect
|
||||
transform="rotate(90)"
|
||||
|
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
|
@ -58,7 +58,7 @@
|
|||
<object-name>BRT</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
|
@ -70,7 +70,7 @@
|
|||
<property>controls/lighting/DU/mcdu1</property>
|
||||
<min>0.0</min>
|
||||
<max>1.0</max>
|
||||
<step>0.2</step>
|
||||
<step>0.05</step>
|
||||
<wrap>false</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
|
@ -81,7 +81,7 @@
|
|||
<object-name>DIM</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
|
@ -93,7 +93,7 @@
|
|||
<property>controls/lighting/DU/mcdu1</property>
|
||||
<min>0.0</min>
|
||||
<max>1.0</max>
|
||||
<step>-0.2</step>
|
||||
<step>-0.05</step>
|
||||
<wrap>false</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
|
@ -174,6 +174,31 @@
|
|||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>atc_comm</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>mcdu.pagebutton("atc", 0);</script>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/ac-1</property>
|
||||
<value>110</value>
|
||||
</greater-than-equals>
|
||||
<greater-than>
|
||||
<property>controls/lighting/DU/mcdu1</property>
|
||||
<value>0.01</value>
|
||||
</greater-than>
|
||||
</and>
|
||||
</condition>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>mcdu</object-name>
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
<object-name>BRT</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
|
@ -70,7 +70,7 @@
|
|||
<property>controls/lighting/DU/mcdu2</property>
|
||||
<min>0.0</min>
|
||||
<max>1.0</max>
|
||||
<step>0.2</step>
|
||||
<step>0.05</step>
|
||||
<wrap>false</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
|
@ -81,7 +81,7 @@
|
|||
<object-name>DIM</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<repeatable>true</repeatable>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
|
@ -93,7 +93,7 @@
|
|||
<property>controls/lighting/DU/mcdu2</property>
|
||||
<min>0.0</min>
|
||||
<max>1.0</max>
|
||||
<step>-0.2</step>
|
||||
<step>-0.05</step>
|
||||
<wrap>false</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
|
@ -174,6 +174,31 @@
|
|||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>atc_comm</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>mcdu.pagebutton("atc", 1);</script>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/ac-2</property>
|
||||
<value>110</value>
|
||||
</greater-than-equals>
|
||||
<greater-than>
|
||||
<property>controls/lighting/DU/mcdu2</property>
|
||||
<value>0.01</value>
|
||||
</greater-than>
|
||||
</and>
|
||||
</condition>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>mcdu</object-name>
|
||||
|
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 162 KiB |
|
@ -14,11 +14,11 @@
|
|||
<condition>
|
||||
<or>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc1</property>
|
||||
<property>systems/electrical/bus/dc-1</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc2</property>
|
||||
<property>systems/electrical/bus/dc-2</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</or>
|
||||
|
@ -42,11 +42,11 @@
|
|||
</equals>
|
||||
<or>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc1</property>
|
||||
<property>systems/electrical/bus/dc-1</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc2</property>
|
||||
<property>systems/electrical/bus/dc-2</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</or>
|
||||
|
@ -55,6 +55,11 @@
|
|||
<command>property-toggle</command>
|
||||
<property>controls/fadec/n1mode1</property>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>controls/OH/protectors/eng1-n1</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<equals>
|
||||
|
@ -63,35 +68,30 @@
|
|||
</equals>
|
||||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/oh-btn", 1);</script>
|
||||
<script>libraries.pushbutton();</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>Eng1N1Btn</object-name>
|
||||
<object-name>Eng1N1Btn2O</object-name>
|
||||
<object-name>Eng1N1Prot</object-name>
|
||||
<action>
|
||||
<button>1</button>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<command>property-toggle</command>
|
||||
<property>controls/OH/protectors/eng1-n1</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>controls/OH/protectors/eng1-n1</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<not>
|
||||
<property>controls/OH/protectors/eng1-n1</property>
|
||||
</not>
|
||||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/oh-cover", 1);</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
@ -143,11 +143,11 @@
|
|||
</equals>
|
||||
<or>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc1</property>
|
||||
<property>systems/electrical/bus/dc-1</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc2</property>
|
||||
<property>systems/electrical/bus/dc-2</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</or>
|
||||
|
@ -156,6 +156,11 @@
|
|||
<command>property-toggle</command>
|
||||
<property>controls/fadec/n1mode2</property>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>controls/OH/protectors/eng2-n1</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<equals>
|
||||
|
@ -164,35 +169,30 @@
|
|||
</equals>
|
||||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/oh-btn", 1);</script>
|
||||
<script>libraries.pushbutton();</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>Eng2N1Btn</object-name>
|
||||
<object-name>Eng2N1Btn2O</object-name>
|
||||
<object-name>Eng2N1Prot</object-name>
|
||||
<action>
|
||||
<button>1</button>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<command>property-toggle</command>
|
||||
<property>controls/OH/protectors/eng2-n1</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>controls/OH/protectors/eng2-n1</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<not>
|
||||
<property>controls/OH/protectors/eng2-n1</property>
|
||||
</not>
|
||||
</condition>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/oh-cover", 1);</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
|
|
@ -14,11 +14,11 @@
|
|||
<condition>
|
||||
<or>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc1</property>
|
||||
<property>systems/electrical/bus/dc-1</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc2</property>
|
||||
<property>systems/electrical/bus/dc-2</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</or>
|
||||
|
@ -39,11 +39,11 @@
|
|||
<condition>
|
||||
<or>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc1</property>
|
||||
<property>systems/electrical/bus/dc-1</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc2</property>
|
||||
<property>systems/electrical/bus/dc-2</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</or>
|
||||
|
@ -53,7 +53,7 @@
|
|||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/oh-btn", 1);</script>
|
||||
<script>libraries.pushbutton();</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
|
|
@ -15,6 +15,8 @@ var updateR = 0;
|
|||
var elapsedtime = 0;
|
||||
var altTens = 0;
|
||||
var altPolarity = "";
|
||||
var track_diff = 0;
|
||||
var AICenter = nil;
|
||||
|
||||
# Fetch nodes:
|
||||
var state1 = props.globals.getNode("/systems/thrust/state1", 1);
|
||||
|
@ -37,8 +39,6 @@ var wow2 = props.globals.getNode("/gear/gear[2]/wow");
|
|||
var pitch = props.globals.getNode("/orientation/pitch-deg", 1);
|
||||
var roll = props.globals.getNode("/orientation/roll-deg", 1);
|
||||
var elapsedtime = props.globals.getNode("/sim/time/elapsed-sec", 1);
|
||||
var acess = props.globals.getNode("/systems/electrical/bus/ac-ess", 1);
|
||||
var ac2 = props.globals.getNode("/systems/electrical/bus/ac-2", 1);
|
||||
var du1_lgt = props.globals.getNode("/controls/lighting/DU/du1", 1);
|
||||
var du6_lgt = props.globals.getNode("/controls/lighting/DU/du6", 1);
|
||||
var acconfig = props.globals.getNode("/systems/acconfig/autoconfig-running", 1);
|
||||
|
@ -73,22 +73,19 @@ var alt_diff = props.globals.getNode("/instrumentation/pfd/alt-diff", 1);
|
|||
var ground_diff = props.globals.getNode("/instrumentation/pfd/ground-diff", 1);
|
||||
var landing_diff = props.globals.getNode("/instrumentation/pfd/landing-diff", 1);
|
||||
var ap_alt = props.globals.getNode("/it-autoflight/internal/alt", 1);
|
||||
var alt_agl = props.globals.getNode("/position/altitude-agl-ft", 1);
|
||||
var vs_needle = props.globals.getNode("/instrumentation/pfd/vs-needle", 1);
|
||||
var vs_digit = props.globals.getNode("/instrumentation/pfd/vs-digit-trans", 1);
|
||||
var ap_vs_pfd = props.globals.getNode("/it-autoflight/internal/vert-speed-fpm-pfd", 1);
|
||||
var athr_arm = props.globals.getNode("/modes/pfd/fma/athr-armed", 1);
|
||||
var FMGC_max_spd = props.globals.getNode("/FMGC/internal/maxspeed", 1);
|
||||
var ind_spd_kt = props.globals.getNode("/instrumentation/airspeed-indicator/indicated-speed-kt", 1);
|
||||
var ind_spd_mach = props.globals.getNode("/instrumentation/airspeed-indicator/indicated-mach", 1);
|
||||
var at_mach_mode = props.globals.getNode("/it-autoflight/input/kts-mach", 1);
|
||||
var at_input_spd_mach = props.globals.getNode("/it-autoflight/input/spd-mach", 1);
|
||||
var at_input_spd_kts = props.globals.getNode("/it-autoflight/input/spd-kts", 1);
|
||||
var at_input_spd_mach = props.globals.getNode("/it-autoflight/input/mach", 1);
|
||||
var at_input_spd_kts = props.globals.getNode("/it-autoflight/input/kts", 1);
|
||||
var fd_roll = props.globals.getNode("/it-autoflight/fd/roll-bar", 1);
|
||||
var fd_pitch = props.globals.getNode("/it-autoflight/fd/pitch-bar", 1);
|
||||
var decision = props.globals.getNode("/instrumentation/mk-viii/inputs/arinc429/decision-height", 1);
|
||||
var slip_skid = props.globals.getNode("/instrumentation/pfd/slip-skid", 1);
|
||||
var FMGCphase = props.globals.getNode("/FMGC/status/phase", 1);
|
||||
var loc = props.globals.getNode("/instrumentation/nav[0]/heading-needle-deflection-norm", 1);
|
||||
var gs = props.globals.getNode("/instrumentation/nav[0]/gs-needle-deflection-norm", 1);
|
||||
var show_hdg = props.globals.getNode("/it-autoflight/custom/show-hdg", 1);
|
||||
|
@ -128,19 +125,21 @@ var ils1_crs_set = props.globals.getNode("/FMGC/internal/ils1crs-set/", 1);
|
|||
var outer_marker = props.globals.getNode("/instrumentation/marker-beacon/outer", 1);
|
||||
var middle_marker = props.globals.getNode("/instrumentation/marker-beacon/middle", 1);
|
||||
var inner_marker = props.globals.getNode("/instrumentation/marker-beacon/inner", 1);
|
||||
var v1 = props.globals.getNode("/FMGC/internal/v1", 1);
|
||||
var v1_set = props.globals.getNode("/FMGC/internal/v1-set", 1);
|
||||
var vr = props.globals.getNode("/FMGC/internal/vr", 1);
|
||||
var vr_set = props.globals.getNode("/FMGC/internal/vr-set", 1);
|
||||
var v2 = props.globals.getNode("/FMGC/internal/v2", 1);
|
||||
var v2_set = props.globals.getNode("/FMGC/internal/v2-set", 1);
|
||||
var flap_config = props.globals.getNode("/controls/flight/flaps-input", 1);
|
||||
var hundredAbove = props.globals.getNode("/instrumentation/pfd/hundred-above", 1);
|
||||
var minimum = props.globals.getNode("/instrumentation/pfd/minimums", 1);
|
||||
var aoa_1 = props.globals.getNode("/systems/navigation/adr/output/aoa-1", 1);
|
||||
var aoa_2 = props.globals.getNode("/systems/navigation/adr/output/aoa-2", 1);
|
||||
var aoa_3 = props.globals.getNode("/systems/navigation/adr/output/aoa-3", 1);
|
||||
var adr_1_switch = props.globals.getNode("/controls/navigation/adirscp/switches/adr-1", 1);
|
||||
var adr_2_switch = props.globals.getNode("/controls/navigation/adirscp/switches/adr-2", 1);
|
||||
var adr_3_switch = props.globals.getNode("/controls/navigation/adirscp/switches/adr-3", 1);
|
||||
var adr_1_fault = props.globals.getNode("/controls/navigation/adirscp/lights/adr-1-fault", 1);
|
||||
var adr_2_fault = props.globals.getNode("/controls/navigation/adirscp/lights/adr-2-fault", 1);
|
||||
var adr_3_fault = props.globals.getNode("/controls/navigation/adirscp/lights/adr-3-fault", 1);
|
||||
var air_data_switch = props.globals.getNode("/controls/navigation/switching/air-data", 1);
|
||||
|
||||
# Create Nodes:
|
||||
var vs_needle = props.globals.initNode("/instrumentation/pfd/vs-needle", 0.0, "DOUBLE");
|
||||
var vs_needle_trans = props.globals.initNode("/instrumentation/pfd/vs-digit-trans", 0.0, "DOUBLE");
|
||||
var alt_diff = props.globals.initNode("/instrumentation/pfd/alt-diff", 0.0, "DOUBLE");
|
||||
var ground_diff = props.globals.initNode("/instrumentation/pfd/ground-diff", 0.0, "DOUBLE");
|
||||
var landing_diff = props.globals.initNode("/instrumentation/pfd/landing-diff", 0.0, "DOUBLE");
|
||||
|
@ -150,7 +149,7 @@ var horizon_ground = props.globals.initNode("/instrumentation/pfd/horizon-ground
|
|||
var hdg_diff = props.globals.initNode("/instrumentation/pfd/hdg-diff", 0.0, "DOUBLE");
|
||||
var hdg_scale = props.globals.initNode("/instrumentation/pfd/heading-scale", 0.0, "DOUBLE");
|
||||
var track = props.globals.initNode("/instrumentation/pfd/track-deg", 0.0, "DOUBLE");
|
||||
var track_diff = props.globals.initNode("/instrumentation/pfd/track-hdg-diff", 0.0, "DOUBLE");
|
||||
#var track_diff = props.globals.initNode("/instrumentation/pfd/track-hdg-diff", 0.0, "DOUBLE"); # returns incorrect value
|
||||
var du1_test = props.globals.initNode("/instrumentation/du/du1-test", 0, "BOOL");
|
||||
var du1_test_time = props.globals.initNode("/instrumentation/du/du1-test-time", 0.0, "DOUBLE");
|
||||
var du1_offtime = props.globals.initNode("/instrumentation/du/du1-off-time", 0.0, "DOUBLE");
|
||||
|
@ -213,6 +212,9 @@ var canvas_PFD_base = {
|
|||
me.AI_horizon_hdg_trans = me["AI_heading"].createTransform();
|
||||
me.AI_horizon_hdg_rot = me["AI_heading"].createTransform();
|
||||
|
||||
me.AI_fpv_trans = me["FPV"].createTransform();
|
||||
me.AI_fpv_rot = me["FPV"].createTransform();
|
||||
|
||||
me.page = canvas_group;
|
||||
|
||||
return me;
|
||||
|
@ -225,11 +227,11 @@ var canvas_PFD_base = {
|
|||
"AI_agl_g","AI_agl","AI_error","AI_group","FD_roll","FD_pitch","ALT_box_flash","ALT_box","ALT_box_amber","ALT_scale","ALT_target","ALT_target_digit","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_digit_UP",
|
||||
"ALT_digit_DN","ALT_error","ALT_group","ALT_group2","ALT_frame","VS_pointer","VS_box","VS_digit","VS_error","VS_group","QNH","QNH_setting","QNH_std","QNH_box","LOC_pointer","LOC_scale","GS_scale","GS_pointer","CRS_pointer","HDG_target","HDG_scale",
|
||||
"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"];
|
||||
"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"];
|
||||
},
|
||||
updateDu1: func() {
|
||||
var elapsedtime_act = elapsedtime.getValue();
|
||||
if (acess.getValue() >= 110) {
|
||||
if (systems.ELEC.Bus.acEss.getValue() >= 110) {
|
||||
if (du1_offtime.getValue() + 3 < elapsedtime_act) {
|
||||
if (wow0.getValue() == 1) {
|
||||
if (acconfig.getValue() != 1 and du1_test.getValue() != 1) {
|
||||
|
@ -254,7 +256,7 @@ var canvas_PFD_base = {
|
|||
},
|
||||
updateDu6: func() {
|
||||
var elapsedtime_act = elapsedtime.getValue();
|
||||
if (ac2.getValue() >= 110) {
|
||||
if (systems.ELEC.Bus.ac2.getValue() >= 110) {
|
||||
if (du6_offtime.getValue() + 3 < elapsedtime_act) {
|
||||
if (wow0.getValue() == 1) {
|
||||
if (acconfig.getValue() != 1 and du6_test.getValue() != 1) {
|
||||
|
@ -283,7 +285,7 @@ var canvas_PFD_base = {
|
|||
if (acconfig_mismatch.getValue() == "0x000") {
|
||||
PFD_1_mismatch.page.hide();
|
||||
PFD_2_mismatch.page.hide();
|
||||
if (acess.getValue() >= 110 and du1_lgt.getValue() > 0.01) {
|
||||
if (systems.ELEC.Bus.acEss.getValue() >= 110 and du1_lgt.getValue() > 0.01) {
|
||||
if (du1_test_time.getValue() + du1_test_amount.getValue() >= elapsedtime_act and cpt_du_xfr.getValue() != 1) {
|
||||
PFD_1_test.update();
|
||||
updateL = 0;
|
||||
|
@ -306,7 +308,7 @@ var canvas_PFD_base = {
|
|||
PFD_1_test.page.hide();
|
||||
PFD_1.page.hide();
|
||||
}
|
||||
if (ac2.getValue() >= 110 and du6_lgt.getValue() > 0.01) {
|
||||
if (systems.ELEC.Bus.ac2.getValue() >= 110 and du6_lgt.getValue() > 0.01) {
|
||||
if (du6_test_time.getValue() + du6_test_amount.getValue() >= elapsedtime_act and fo_du_xfr.getValue() != 1) {
|
||||
PFD_2_test.update();
|
||||
updateR = 0;
|
||||
|
@ -644,7 +646,7 @@ var canvas_PFD_base = {
|
|||
me["QNH"].hide();
|
||||
me["QNH_setting"].hide();
|
||||
|
||||
if (altitude.getValue() < fmgc.FMGCInternal.transAlt and FMGCphase.getValue() == '4') {
|
||||
if (altitude.getValue() < fmgc.FMGCInternal.transAlt and fmgc.FMGCInternal.phase == 4) {
|
||||
if (qnh_going == 0) {
|
||||
qnh_going = 1;
|
||||
}
|
||||
|
@ -669,7 +671,7 @@ var canvas_PFD_base = {
|
|||
me["QNH_std"].hide();
|
||||
me["QNH_box"].hide();
|
||||
|
||||
if (altitude.getValue() >= fmgc.FMGCInternal.transAlt and FMGCphase.getValue() == '2') {
|
||||
if (altitude.getValue() >= fmgc.FMGCInternal.transAlt and fmgc.FMGCInternal.phase == 2) {
|
||||
if (qnh_going == 0) {
|
||||
qnh_going = 1;
|
||||
}
|
||||
|
@ -694,7 +696,7 @@ var canvas_PFD_base = {
|
|||
|
||||
} else if (alt_inhg_mode.getValue() == 1) {
|
||||
|
||||
if (altitude.getValue() >= fmgc.FMGCInternal.transAlt and FMGCphase.getValue() == '2') {
|
||||
if (altitude.getValue() >= fmgc.FMGCInternal.transAlt and fmgc.FMGCInternal.phase == 2) {
|
||||
if (qnh_going == 0) {
|
||||
qnh_going = 1;
|
||||
}
|
||||
|
@ -761,7 +763,7 @@ var canvas_PFD_base = {
|
|||
|
||||
me["AI_agl"].setText(sprintf("%s", math.round(math.clamp(gear_agl_cur, 0, 2500))));
|
||||
|
||||
if (FMGCphase.getValue() < 3 or fmgc.flightPlanController.arrivalDist >= 250) {
|
||||
if (fmgc.FMGCInternal.phase < 3 or fmgc.flightPlanController.arrivalDist >= 250) {
|
||||
me["FMA_dh_box"].hide();
|
||||
me["FMA_dh"].hide();
|
||||
me["FMA_dhn"].hide();
|
||||
|
@ -807,7 +809,7 @@ var canvas_PFD_base = {
|
|||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
} else if (getprop("/FMGC/internal/radio-no")) {
|
||||
} else if (fmgc.FMGCInternal.radioNo) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText("100");
|
||||
|
@ -848,7 +850,7 @@ var canvas_PFD_base = {
|
|||
me["FMA_dhn"].setText(sprintf("%.0f", getprop("/FMGC/internal/baro")));
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
} else if (getprop("/FMGC/internal/radio-no")) {
|
||||
} else if (fmgc.FMGCInternal.radioNo) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText("100");
|
||||
|
@ -864,7 +866,7 @@ var canvas_PFD_base = {
|
|||
|
||||
me["AI_agl_g"].setRotation(-roll_cur * D2R);
|
||||
|
||||
FMGCphase_act = FMGCphase.getValue();
|
||||
FMGCphase_act = fmgc.FMGCInternal.phase;
|
||||
if ((wow1.getValue() == 1 or wow2.getValue() == 1) and FMGCphase_act != 0 and FMGCphase_act != 1) {
|
||||
me["AI_stick"].show();
|
||||
me["AI_stick_pos"].show();
|
||||
|
@ -897,6 +899,19 @@ var canvas_PFD_base = {
|
|||
me["VS_digit"].setText(sprintf("%02d", vs_pfd_cur));
|
||||
}
|
||||
|
||||
var vs_itaf = fmgc.Internal.vs.getValue();
|
||||
var gearAgl = gear_agl.getValue();
|
||||
|
||||
if (abs(vs_itaf) >= 6000 or (vs_itaf <= -2000 and gearAgl <= 2500) or (vs_itaf <= -1200 and gearAgl <= 1000)) {
|
||||
me["VS_digit"].setColor(0.7333,0.3803,0);
|
||||
me["VS_pointer"].setColor(0.7333,0.3803,0);
|
||||
me["VS_pointer"].setColorFill(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["VS_digit"].setColor(0.0509,0.7529,0.2941);
|
||||
me["VS_pointer"].setColor(0.0509,0.7529,0.2941);
|
||||
me["VS_pointer"].setColorFill(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
# ILS
|
||||
me["LOC_pointer"].setTranslation(loc.getValue() * 197, 0);
|
||||
me["GS_pointer"].setTranslation(0, gs.getValue() * -197);
|
||||
|
@ -961,12 +976,15 @@ var canvas_PFD_base = {
|
|||
me["HDG_target"].hide();
|
||||
}
|
||||
|
||||
me["TRK_pointer"].setTranslation((math.clamp(track_diff.getValue(), -23.62, 23.62) / 10) * 98.5416, 0);
|
||||
|
||||
var heading_deg = heading.getValue();
|
||||
track_diff = geo.normdeg180(track.getValue() - heading_deg);
|
||||
me["TRK_pointer"].setTranslation(me.getTrackDiffPixels(track_diff),0);
|
||||
split_ils = split("/", ils_data1.getValue());
|
||||
|
||||
if (ap_ils_mode.getValue() == 1 and size(split_ils) == 2) {
|
||||
magnetic_hdg = ils_crs.getValue();
|
||||
magnetic_hdg_dif = geo.normdeg180(magnetic_hdg - heading.getValue());
|
||||
magnetic_hdg_dif = geo.normdeg180(magnetic_hdg - heading_deg);
|
||||
if (magnetic_hdg_dif >= -23.62 and magnetic_hdg_dif <= 23.62) {
|
||||
me["CRS_pointer"].setTranslation((magnetic_hdg_dif / 10) * 98.5416, 0);
|
||||
me["ILS_HDG_R"].hide();
|
||||
|
@ -1010,6 +1028,28 @@ var canvas_PFD_base = {
|
|||
me.AI_horizon_hdg_rot.setRotation(-roll_cur * D2R, me["AI_center"].getCenter());
|
||||
me["AI_heading"].update();
|
||||
},
|
||||
|
||||
# Get Angle of Attack from ADR1 or, depending on Switching panel, ADR3
|
||||
getAOAForPFD1: func() {
|
||||
if (air_data_switch.getValue() != -1 and adr_1_switch.getValue() and !adr_1_fault.getValue()) return aoa_1.getValue();
|
||||
if (air_data_switch.getValue() == -1 and adr_3_switch.getValue() and !adr_3_fault.getValue()) return aoa_3.getValue();
|
||||
return nil;
|
||||
},
|
||||
|
||||
# Get Angle of Attack from ADR2 or, depending on Switching panel, ADR3
|
||||
getAOAForPFD2: func() {
|
||||
if (air_data_switch.getValue() != 1 and adr_2_switch.getValue() and !adr_2_fault.getValue()) return aoa_2.getValue();
|
||||
if (air_data_switch.getValue() == 1 and adr_3_switch.getValue() and !adr_3_fault.getValue()) return aoa_3.getValue();
|
||||
return nil;
|
||||
},
|
||||
|
||||
# Convert difference between magnetic heading and track measured in degrees to pixel for display on PFDs
|
||||
# And set max and minimum values
|
||||
getTrackDiffPixels: func(track_diff_deg) {
|
||||
return ((math.clamp(track_diff_deg, -23.62, 23.62) / 10) * 98.5416);
|
||||
},
|
||||
|
||||
|
||||
};
|
||||
|
||||
var canvas_PFD_1 = {
|
||||
|
@ -1032,7 +1072,6 @@ var canvas_PFD_1 = {
|
|||
SPDftrgtdiff: 0,
|
||||
SPDflaptrgtdiff: 0,
|
||||
SPDcleantrgtdiff: 0,
|
||||
FMGC_max: 0,
|
||||
new: func(canvas_group, file) {
|
||||
var m = {parents: [canvas_PFD_1, canvas_PFD_base]};
|
||||
m.init(canvas_group, file);
|
||||
|
@ -1067,6 +1106,14 @@ var canvas_PFD_1 = {
|
|||
me["VS_group"].hide();
|
||||
}
|
||||
|
||||
# Apparently SPD LIM only on captains PFD. I find this odd. But manual says it.
|
||||
# Spd Lim Error
|
||||
if (!fbw.FBW.Computers.fac1.getValue() and !fbw.FBW.Computers.fac2.getValue()) {
|
||||
me["spdLimError"].show();
|
||||
} else {
|
||||
me["spdLimError"].hide();
|
||||
}
|
||||
|
||||
# FD
|
||||
if (fd1_act == 1 and ((!wow1_act and !wow2_act and roll_mode_cur != " ") or roll_mode_cur != " ") and ap_trk_sw.getValue() == 0 and pitch_cur < 25 and pitch_cur > -13 and roll_cur < 45 and roll_cur > -45) {
|
||||
me["FD_roll"].show();
|
||||
|
@ -1080,6 +1127,26 @@ var canvas_PFD_1 = {
|
|||
me["FD_pitch"].hide();
|
||||
}
|
||||
|
||||
# If TRK FPA selected, display FPV on PFD1
|
||||
if (ap_trk_sw.getValue() == 0 ) {
|
||||
me["FPV"].hide();
|
||||
} else {
|
||||
var aoa = me.getAOAForPFD1();
|
||||
if (aoa == nil or (systems.ADIRS.ADIRunits[0].aligned != 1 and att_switch.getValue() == 0) or (systems.ADIRS.ADIRunits[2].aligned != 1 and att_switch.getValue() == -1)){
|
||||
me["FPV"].hide();
|
||||
} else {
|
||||
var roll_deg = roll.getValue() or 0;
|
||||
AICenter = me["AI_center"].getCenter();
|
||||
var track_x_translation = me.getTrackDiffPixels(track_diff);
|
||||
|
||||
me.AI_fpv_trans.setTranslation(track_x_translation, math.clamp(aoa, -20, 20) * 12.5);
|
||||
me.AI_fpv_rot.setRotation(-roll_deg * D2R, AICenter);
|
||||
me["FPV"].setRotation(roll_deg * D2R); # It shouldn't be rotated, only the axis should be
|
||||
me["FPV"].show();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# ILS
|
||||
if (ap_ils_mode.getValue() == 1) {
|
||||
me["LOC_scale"].show();
|
||||
|
@ -1193,7 +1260,7 @@ var canvas_PFD_1 = {
|
|||
me.ASI = ind_spd - 30;
|
||||
}
|
||||
|
||||
me.FMGC_max = FMGC_max_spd.getValue();
|
||||
me.FMGC_max = fmgc.FMGCInternal.maxspeed;
|
||||
if (me.FMGC_max <= 30) {
|
||||
me.ASImax = 0 - me.ASI;
|
||||
} else if (me.FMGC_max >= 420) {
|
||||
|
@ -1203,10 +1270,16 @@ var canvas_PFD_1 = {
|
|||
}
|
||||
|
||||
me["ASI_scale"].setTranslation(0, me.ASI * 6.6);
|
||||
me["ASI_max"].setTranslation(0, me.ASImax * -6.6);
|
||||
|
||||
if (!getprop("/FMGC/status/to-state") and FMGCphase.getValue() >= 1 and !wow1.getValue() and !wow2.getValue()) {
|
||||
me.FMGC_vls = getprop("/FMGC/internal/computed-speeds/vls_min");
|
||||
if (fbw.FBW.Computers.fac1.getValue() or fbw.FBW.Computers.fac2.getValue()) {
|
||||
me["ASI_max"].setTranslation(0, me.ASImax * -6.6);
|
||||
me["ASI_max"].show();
|
||||
} else {
|
||||
me["ASI_max"].hide();
|
||||
}
|
||||
|
||||
if (!fmgc.FMGCInternal.takeoffState and fmgc.FMGCInternal.phase >= 1 and !wow1.getValue() and !wow2.getValue()) {
|
||||
me.FMGC_vls = fmgc.FMGCInternal.vls_min;
|
||||
if (me.FMGC_vls <= 30) {
|
||||
me.VLSmin = 0 - me.ASI;
|
||||
} else if (me.FMGC_vls >= 420) {
|
||||
|
@ -1214,7 +1287,7 @@ var canvas_PFD_1 = {
|
|||
} else {
|
||||
me.VLSmin = me.FMGC_vls - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_prot = getprop("/FMGC/internal/computed-speeds/alpha_prot");
|
||||
me.FMGC_prot = fmgc.FMGCInternal.alpha_prot;
|
||||
if (me.FMGC_prot <= 30) {
|
||||
me.ALPHAprot = 0 - me.ASI;
|
||||
} else if (me.FMGC_prot >= 420) {
|
||||
|
@ -1222,7 +1295,7 @@ var canvas_PFD_1 = {
|
|||
} else {
|
||||
me.ALPHAprot = me.FMGC_prot - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_max = getprop("/FMGC/internal/computed-speeds/alpha_max");
|
||||
me.FMGC_max = fmgc.FMGCInternal.alpha_max;
|
||||
if (me.FMGC_max <= 30) {
|
||||
me.ALPHAmax = 0 - me.ASI;
|
||||
} else if (me.FMGC_max >= 420) {
|
||||
|
@ -1230,7 +1303,7 @@ var canvas_PFD_1 = {
|
|||
} else {
|
||||
me.ALPHAmax = me.FMGC_max - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_vsw = getprop("/FMGC/internal/computed-speeds/vsw");
|
||||
me.FMGC_vsw = fmgc.FMGCInternal.vsw;
|
||||
if (me.FMGC_vsw <= 30) {
|
||||
me.ALPHAvsw = 0 - me.ASI;
|
||||
} else if (me.FMGC_vsw >= 420) {
|
||||
|
@ -1238,20 +1311,28 @@ var canvas_PFD_1 = {
|
|||
} else {
|
||||
me.ALPHAvsw = me.FMGC_vsw - 30 - me.ASI;
|
||||
}
|
||||
|
||||
if (fbw.FBW.Computers.fac1.getValue() or fbw.FBW.Computers.fac2.getValue()) {
|
||||
me["VLS_min"].setTranslation(0, me.VLSmin * -6.6);
|
||||
me["VLS_min"].show();
|
||||
if (getprop("/it-fbw/law") == 0) {
|
||||
me["ALPHA_PROT"].setTranslation(0, me.ALPHAprot * -6.6);
|
||||
me["ALPHA_MAX"].setTranslation(0, me.ALPHAmax * -6.6);
|
||||
me["ALPHA_SW"].setTranslation(0, me.ALPHAvsw * -6.6);
|
||||
if (getprop("/it-fbw/law") == 0) {
|
||||
me["ALPHA_PROT"].show();
|
||||
me["ALPHA_MAX"].show();
|
||||
me["ALPHA_SW"].hide();
|
||||
} else {
|
||||
me["ALPHA_PROT"].hide();
|
||||
me["ALPHA_MAX"].hide();
|
||||
me["ALPHA_SW"].setTranslation(0, me.ALPHAvsw * -6.6);
|
||||
me["ALPHA_SW"].show();
|
||||
}
|
||||
} else {
|
||||
me["VLS_min"].hide();
|
||||
me["ALPHA_PROT"].hide();
|
||||
me["ALPHA_MAX"].hide();
|
||||
me["ALPHA_SW"].hide();
|
||||
}
|
||||
}
|
||||
|
||||
tgt_ias = at_tgt_ias.getValue();
|
||||
|
@ -1260,15 +1341,15 @@ var canvas_PFD_1 = {
|
|||
|
||||
if (managed_spd.getValue() == 1) {
|
||||
if (getprop("/FMGC/internal/decel") == 1) {
|
||||
if (getprop("/FMGC/internal/vapp-speed-set")) {
|
||||
vapp = getprop("/FMGC/internal/computed-speeds/vapp_appr");
|
||||
if (fmgc.FMGCInternal.vappSpeedSet) {
|
||||
vapp = fmgc.FMGCInternal.vapp_appr;
|
||||
} else {
|
||||
vapp = getprop("/FMGC/internal/computed-speeds/vapp");
|
||||
vapp = fmgc.FMGCInternal.vapp;
|
||||
}
|
||||
tgt_ias = vapp;
|
||||
tgt_kts = vapp;
|
||||
} else if (FMGCphase.getValue() == 6) {
|
||||
clean = getprop("/FMGC/internal/computed-speeds/clean");
|
||||
} else if (fmgc.FMGCInternal.phase == 6) {
|
||||
clean = fmgc.FMGCInternal.clean;
|
||||
tgt_ias = clean;
|
||||
tgt_kts = clean;
|
||||
}
|
||||
|
@ -1331,8 +1412,8 @@ var canvas_PFD_1 = {
|
|||
me["ASI_target"].hide();
|
||||
}
|
||||
|
||||
if (v1_set.getValue() == '1') {
|
||||
tgt_v1 = v1.getValue();
|
||||
if (fmgc.FMGCInternal.v1set) {
|
||||
tgt_v1 = fmgc.FMGCInternal.v1;
|
||||
if (tgt_v1 <= 30) {
|
||||
me.V1trgt = 0 - me.ASI;
|
||||
} else if (tgt_v1 >= 420) {
|
||||
|
@ -1343,14 +1424,14 @@ var canvas_PFD_1 = {
|
|||
|
||||
me.SPDv1trgtdiff = tgt_v1 - ind_spd;
|
||||
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2 and me.SPDv1trgtdiff >= -42 and me.SPDv1trgtdiff <= 42) {
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2 and me.SPDv1trgtdiff >= -42 and me.SPDv1trgtdiff <= 42) {
|
||||
me["v1_group"].show();
|
||||
me["v1_text"].hide();
|
||||
me["v1_group"].setTranslation(0, me.V1trgt * -6.6);
|
||||
} else if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2) {
|
||||
} else if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2) {
|
||||
me["v1_group"].hide();
|
||||
me["v1_text"].show();
|
||||
me["v1_text"].setText(sprintf("%3.0f", v1.getValue()));
|
||||
me["v1_text"].setText(sprintf("%3.0f", fmgc.FMGCInternal.v1));
|
||||
} else {
|
||||
me["v1_group"].hide();
|
||||
me["v1_text"].hide();
|
||||
|
@ -1360,8 +1441,8 @@ var canvas_PFD_1 = {
|
|||
me["v1_text"].hide();
|
||||
}
|
||||
|
||||
if (vr_set.getValue() == '1') {
|
||||
tgt_vr = vr.getValue();
|
||||
if (fmgc.FMGCInternal.vrset) {
|
||||
tgt_vr = fmgc.FMGCInternal.vr;
|
||||
if (tgt_vr <= 30) {
|
||||
me.VRtrgt = 0 - me.ASI;
|
||||
} else if (tgt_vr >= 420) {
|
||||
|
@ -1372,7 +1453,7 @@ var canvas_PFD_1 = {
|
|||
|
||||
me.SPDvrtrgtdiff = tgt_vr - ind_spd;
|
||||
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2 and me.SPDvrtrgtdiff >= -42 and me.SPDvrtrgtdiff <= 42) {
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2 and me.SPDvrtrgtdiff >= -42 and me.SPDvrtrgtdiff <= 42) {
|
||||
me["vr_speed"].show();
|
||||
me["vr_speed"].setTranslation(0, me.VRtrgt * -6.6);
|
||||
} else {
|
||||
|
@ -1382,8 +1463,8 @@ var canvas_PFD_1 = {
|
|||
me["vr_speed"].hide();
|
||||
}
|
||||
|
||||
if (v2_set.getValue() == '1') {
|
||||
tgt_v2 = v2.getValue();
|
||||
if (fmgc.FMGCInternal.v2set) {
|
||||
tgt_v2 = fmgc.FMGCInternal.v2;
|
||||
if (tgt_v2 <= 30) {
|
||||
me.V2trgt = 0 - me.ASI;
|
||||
} else if (tgt_v2 >= 420) {
|
||||
|
@ -1394,21 +1475,22 @@ var canvas_PFD_1 = {
|
|||
|
||||
me.SPDv2trgtdiff = tgt_v2 - ind_spd;
|
||||
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2 and me.SPDv2trgtdiff >= -42 and me.SPDv2trgtdiff <= 42) {
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2 and me.SPDv2trgtdiff >= -42 and me.SPDv2trgtdiff <= 42) {
|
||||
me["ASI_target"].show();
|
||||
me["ASI_target"].setTranslation(0, me.V2trgt * -6.6);
|
||||
me["ASI_digit_UP"].setText(sprintf("%3.0f", v2.getValue()));
|
||||
} else if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2) {
|
||||
me["ASI_digit_UP"].setText(sprintf("%3.0f", fmgc.FMGCInternal.v2));
|
||||
} else if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2) {
|
||||
me["ASI_target"].hide();
|
||||
me["ASI_digit_UP"].setText(sprintf("%3.0f", v2.getValue()));
|
||||
me["ASI_digit_UP"].setText(sprintf("%3.0f", fmgc.FMGCInternal.v2));
|
||||
}
|
||||
}
|
||||
|
||||
if (fbw.FBW.Computers.fac1.getValue() or fbw.FBW.Computers.fac2.getValue()) {
|
||||
if (flap_config.getValue() == '1') {
|
||||
me["F_target"].hide();
|
||||
me["clean_speed"].hide();
|
||||
|
||||
tgt_S = getprop("/FMGC/internal/computed-speeds/slat");
|
||||
tgt_S = fmgc.FMGCInternal.slat;
|
||||
|
||||
if (tgt_S <= 30) {
|
||||
me.Strgt = 0 - me.ASI;
|
||||
|
@ -1420,7 +1502,7 @@ var canvas_PFD_1 = {
|
|||
|
||||
me.SPDstrgtdiff = tgt_S - ind_spd;
|
||||
|
||||
if (me.SPDstrgtdiff >= -42 and me.SPDstrgtdiff <= 42) {
|
||||
if (me.SPDstrgtdiff >= -42 and me.SPDstrgtdiff <= 42 and gear_agl.getValue() >= 400) {
|
||||
me["S_target"].show();
|
||||
me["S_target"].setTranslation(0, me.Strgt * -6.6);
|
||||
} else {
|
||||
|
@ -1442,7 +1524,7 @@ var canvas_PFD_1 = {
|
|||
me["S_target"].hide();
|
||||
me["clean_speed"].hide();
|
||||
|
||||
tgt_F = getprop("/FMGC/internal/computed-speeds/flap2");
|
||||
tgt_F = fmgc.FMGCInternal.flap2;
|
||||
|
||||
if (tgt_F <= 30) {
|
||||
me.Ftrgt = 0 - me.ASI;
|
||||
|
@ -1454,7 +1536,7 @@ var canvas_PFD_1 = {
|
|||
|
||||
me.SPDftrgtdiff = tgt_F - ind_spd;
|
||||
|
||||
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42) {
|
||||
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42 and gear_agl.getValue() >= 400) {
|
||||
me["F_target"].show();
|
||||
me["F_target"].setTranslation(0, me.Ftrgt * -6.6);
|
||||
} else {
|
||||
|
@ -1476,7 +1558,7 @@ var canvas_PFD_1 = {
|
|||
me["S_target"].hide();
|
||||
me["clean_speed"].hide();
|
||||
|
||||
tgt_F = getprop("/FMGC/internal/computed-speeds/flap3");
|
||||
tgt_F = fmgc.FMGCInternal.flap3;
|
||||
|
||||
if (tgt_F <= 30) {
|
||||
me.Ftrgt = 0 - me.ASI;
|
||||
|
@ -1488,7 +1570,7 @@ var canvas_PFD_1 = {
|
|||
|
||||
me.SPDftrgtdiff = tgt_F - ind_spd;
|
||||
|
||||
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42) {
|
||||
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42 and gear_agl.getValue() >= 400) {
|
||||
me["F_target"].show();
|
||||
me["F_target"].setTranslation(0, me.Ftrgt * -6.6);
|
||||
} else {
|
||||
|
@ -1515,7 +1597,7 @@ var canvas_PFD_1 = {
|
|||
me["S_target"].hide();
|
||||
me["F_target"].hide();
|
||||
|
||||
tgt_clean = getprop("/FMGC/internal/computed-speeds/clean");
|
||||
tgt_clean = fmgc.FMGCInternal.clean;
|
||||
|
||||
me.cleantrgt = tgt_clean - 30 - me.ASI;
|
||||
me.SPDcleantrgtdiff = tgt_clean - ind_spd;
|
||||
|
@ -1539,10 +1621,11 @@ var canvas_PFD_1 = {
|
|||
me["flap_max"].hide();
|
||||
}
|
||||
}
|
||||
|
||||
if (alt_agl.getValue() < 400) {
|
||||
} else {
|
||||
me["S_target"].hide();
|
||||
me["F_target"].hide();
|
||||
me["clean_speed"].hide();
|
||||
me["flap_max"].hide();
|
||||
}
|
||||
|
||||
me.ASItrend = dmc.DMController.DMCs[0].outputs[6].getValue() - me.ASI;
|
||||
|
@ -1681,7 +1764,7 @@ var canvas_PFD_1 = {
|
|||
|
||||
landing_diff_cur = landing_diff.getValue();
|
||||
if (landing_diff_cur >= -565 and landing_diff_cur <= 565) {
|
||||
if ((FMGCphase.getValue() == 5 or FMGCphase.getValue() == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
||||
if ((fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
||||
me["ground"].setTranslation(0, (landing_diff_cur / 100) * -48.66856);
|
||||
me["ground"].show();
|
||||
} else {
|
||||
|
@ -1691,13 +1774,13 @@ var canvas_PFD_1 = {
|
|||
me["ground"].hide();
|
||||
}
|
||||
|
||||
if (!getprop("/ECAM/alt-alert-flash") and !getprop("/ECAM/alt-alert-steady")) {
|
||||
if (!ecam.altAlertFlash and !ecam.altAlertSteady) {
|
||||
alt_going1 = 0;
|
||||
amber_going1 = 0;
|
||||
me["ALT_box_flash"].hide();
|
||||
me["ALT_box_amber"].hide();
|
||||
} else {
|
||||
if (getprop("/ECAM/alt-alert-flash")) {
|
||||
if (ecam.altAlertFlash) {
|
||||
if (alt_going1 == 1) {
|
||||
me["ALT_box_flash"].hide();
|
||||
altTimer1.stop();
|
||||
|
@ -1715,7 +1798,7 @@ var canvas_PFD_1 = {
|
|||
} else {
|
||||
me["ALT_box_amber"].show();
|
||||
}
|
||||
} elsif (getprop("/ECAM/alt-alert-steady")) {
|
||||
} elsif (ecam.altAlertSteady) {
|
||||
if (amber_going1 == 1) {
|
||||
me["ALT_box"].show();
|
||||
me["ALT_box_amber"].hide();
|
||||
|
@ -1804,6 +1887,7 @@ var canvas_PFD_2 = {
|
|||
me["VS_error"].show();
|
||||
me["VS_group"].hide();
|
||||
}
|
||||
me["spdLimError"].hide();
|
||||
|
||||
# FD
|
||||
if (fd2_act == 1 and ((!wow1_act and !wow2_act and roll_mode_cur != " ") or roll_mode_cur != " ") and ap_trk_sw.getValue() == 0 and pitch_cur < 25 and pitch_cur > -13 and roll_cur < 45 and roll_cur > -45) {
|
||||
|
@ -1818,6 +1902,25 @@ var canvas_PFD_2 = {
|
|||
me["FD_pitch"].hide();
|
||||
}
|
||||
|
||||
# If TRK FPA selected, display FPV on PFD2
|
||||
if (ap_trk_sw.getValue() == 0 ) {
|
||||
me["FPV"].hide();
|
||||
} else {
|
||||
var aoa = me.getAOAForPFD2();
|
||||
if (aoa == nil or (systems.ADIRS.ADIRunits[1].aligned != 1 and att_switch.getValue() == 0) or (systems.ADIRS.ADIRunits[2].aligned != 1 and att_switch.getValue() == 1)) {
|
||||
me["FPV"].hide();
|
||||
} else {
|
||||
var roll_deg = roll.getValue() or 0;
|
||||
AICenter = me["AI_center"].getCenter();
|
||||
var track_x_translation = me.getTrackDiffPixels(track_diff);
|
||||
|
||||
me.AI_fpv_trans.setTranslation(track_x_translation, math.clamp(aoa, -20, 20) * 12.5);
|
||||
me.AI_fpv_rot.setRotation(-roll_deg * D2R, AICenter);
|
||||
me["FPV"].setRotation(roll_deg * D2R); # It shouldn't be rotated, only the axis should be
|
||||
me["FPV"].show();
|
||||
}
|
||||
}
|
||||
|
||||
# ILS
|
||||
if (ap_ils_mode2.getValue() == 1) {
|
||||
me["LOC_scale"].show();
|
||||
|
@ -1931,7 +2034,7 @@ var canvas_PFD_2 = {
|
|||
me.ASI = ind_spd - 30;
|
||||
}
|
||||
|
||||
me.FMGC_max = FMGC_max_spd.getValue();
|
||||
me.FMGC_max = fmgc.FMGCInternal.maxspeed;
|
||||
if (me.FMGC_max <= 30) {
|
||||
me.ASImax = 0 - me.ASI;
|
||||
} else if (me.FMGC_max >= 420) {
|
||||
|
@ -1941,10 +2044,16 @@ var canvas_PFD_2 = {
|
|||
}
|
||||
|
||||
me["ASI_scale"].setTranslation(0, me.ASI * 6.6);
|
||||
me["ASI_max"].setTranslation(0, me.ASImax * -6.6);
|
||||
|
||||
if (!getprop("/FMGC/status/to-state") and FMGCphase.getValue() >= 1 and !wow1.getValue() and !wow2.getValue()) {
|
||||
me.FMGC_vls = getprop("/FMGC/internal/computed-speeds/vls_min");
|
||||
if (fbw.FBW.Computers.fac1.getValue() or fbw.FBW.Computers.fac2.getValue()) {
|
||||
me["ASI_max"].setTranslation(0, me.ASImax * -6.6);
|
||||
me["ASI_max"].show();
|
||||
} else {
|
||||
me["ASI_max"].hide();
|
||||
}
|
||||
|
||||
if (!fmgc.FMGCInternal.takeoffState and fmgc.FMGCInternal.phase >= 1 and !wow1.getValue() and !wow2.getValue()) {
|
||||
me.FMGC_vls = fmgc.FMGCInternal.vls_min;
|
||||
if (me.FMGC_vls <= 30) {
|
||||
me.VLSmin = 0 - me.ASI;
|
||||
} else if (me.FMGC_vls >= 420) {
|
||||
|
@ -1952,7 +2061,7 @@ var canvas_PFD_2 = {
|
|||
} else {
|
||||
me.VLSmin = me.FMGC_vls - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_prot = getprop("/FMGC/internal/computed-speeds/alpha_prot");
|
||||
me.FMGC_prot = fmgc.FMGCInternal.alpha_prot;
|
||||
if (me.FMGC_prot <= 30) {
|
||||
me.ALPHAprot = 0 - me.ASI;
|
||||
} else if (me.FMGC_prot >= 420) {
|
||||
|
@ -1960,7 +2069,7 @@ var canvas_PFD_2 = {
|
|||
} else {
|
||||
me.ALPHAprot = me.FMGC_prot - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_max = getprop("/FMGC/internal/computed-speeds/alpha_max");
|
||||
me.FMGC_max = fmgc.FMGCInternal.alpha_max;
|
||||
if (me.FMGC_max <= 30) {
|
||||
me.ALPHAmax = 0 - me.ASI;
|
||||
} else if (me.FMGC_max >= 420) {
|
||||
|
@ -1968,7 +2077,7 @@ var canvas_PFD_2 = {
|
|||
} else {
|
||||
me.ALPHAmax = me.FMGC_max - 30 - me.ASI;
|
||||
}
|
||||
me.FMGC_vsw = getprop("/FMGC/internal/computed-speeds/vsw");
|
||||
me.FMGC_vsw = fmgc.FMGCInternal.vsw;
|
||||
if (me.FMGC_vsw <= 30) {
|
||||
me.ALPHAvsw = 0 - me.ASI;
|
||||
} else if (me.FMGC_vsw >= 420) {
|
||||
|
@ -1976,20 +2085,28 @@ var canvas_PFD_2 = {
|
|||
} else {
|
||||
me.ALPHAvsw = me.FMGC_vsw - 30 - me.ASI;
|
||||
}
|
||||
|
||||
if (fbw.FBW.Computers.fac1.getValue() or fbw.FBW.Computers.fac2.getValue()) {
|
||||
me["VLS_min"].setTranslation(0, me.VLSmin * -6.6);
|
||||
me["VLS_min"].show();
|
||||
if (getprop("/it-fbw/law") == 0) {
|
||||
me["ALPHA_PROT"].setTranslation(0, me.ALPHAprot * -6.6);
|
||||
me["ALPHA_MAX"].setTranslation(0, me.ALPHAmax * -6.6);
|
||||
me["ALPHA_SW"].setTranslation(0, me.ALPHAvsw * -6.6);
|
||||
if (getprop("/it-fbw/law") == 0) {
|
||||
me["ALPHA_PROT"].show();
|
||||
me["ALPHA_MAX"].show();
|
||||
me["ALPHA_SW"].hide();
|
||||
} else {
|
||||
me["ALPHA_PROT"].hide();
|
||||
me["ALPHA_MAX"].hide();
|
||||
me["ALPHA_SW"].setTranslation(0, me.ALPHAvsw * -6.6);
|
||||
me["ALPHA_SW"].show();
|
||||
}
|
||||
} else {
|
||||
me["VLS_min"].hide();
|
||||
me["ALPHA_PROT"].hide();
|
||||
me["ALPHA_MAX"].hide();
|
||||
me["ALPHA_SW"].hide();
|
||||
}
|
||||
}
|
||||
|
||||
tgt_ias = at_tgt_ias.getValue();
|
||||
|
@ -1998,15 +2115,15 @@ var canvas_PFD_2 = {
|
|||
|
||||
if (managed_spd.getValue() == 1) {
|
||||
if (getprop("/FMGC/internal/decel") == 1) {
|
||||
if (getprop("/FMGC/internal/vapp-speed-set")) {
|
||||
vapp = getprop("/FMGC/internal/computed-speeds/vapp_appr");
|
||||
if (fmgc.FMGCInternal.vappSpeedSet) {
|
||||
vapp = fmgc.FMGCInternal.vapp_appr;
|
||||
} else {
|
||||
vapp = getprop("/FMGC/internal/computed-speeds/vapp");
|
||||
vapp = fmgc.FMGCInternal.vapp;
|
||||
}
|
||||
tgt_ias = vapp;
|
||||
tgt_kts = vapp;
|
||||
} else if (FMGCphase.getValue() == 6) {
|
||||
clean = getprop("/FMGC/internal/computed-speeds/clean");
|
||||
} else if (fmgc.FMGCInternal.phase == 6) {
|
||||
clean = fmgc.FMGCInternal.clean;
|
||||
tgt_ias = clean;
|
||||
tgt_kts = clean;
|
||||
}
|
||||
|
@ -2024,7 +2141,6 @@ var canvas_PFD_2 = {
|
|||
me["ASI_decimal_DN"].setColor(0.0901,0.6039,0.7176);
|
||||
}
|
||||
|
||||
tgt_ias = at_tgt_ias.getValue();
|
||||
if (tgt_ias <= 30) {
|
||||
me.ASItrgt = 0 - me.ASI;
|
||||
} else if (tgt_ias >= 420) {
|
||||
|
@ -2070,8 +2186,8 @@ var canvas_PFD_2 = {
|
|||
me["ASI_target"].hide();
|
||||
}
|
||||
|
||||
if (v1_set.getValue() == '1') {
|
||||
tgt_v1 = v1.getValue();
|
||||
if (fmgc.FMGCInternal.v1set) {
|
||||
tgt_v1 = fmgc.FMGCInternal.v1;
|
||||
if (tgt_v1 <= 30) {
|
||||
me.V1trgt = 0 - me.ASI;
|
||||
} else if (tgt_v1 >= 420) {
|
||||
|
@ -2082,14 +2198,14 @@ var canvas_PFD_2 = {
|
|||
|
||||
me.SPDv1trgtdiff = tgt_v1 - ind_spd;
|
||||
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2 and me.SPDv1trgtdiff >= -42 and me.SPDv1trgtdiff <= 42) {
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2 and me.SPDv1trgtdiff >= -42 and me.SPDv1trgtdiff <= 42) {
|
||||
me["v1_group"].show();
|
||||
me["v1_text"].hide();
|
||||
me["v1_group"].setTranslation(0, me.V1trgt * -6.6);
|
||||
} else if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2) {
|
||||
} else if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2) {
|
||||
me["v1_group"].hide();
|
||||
me["v1_text"].show();
|
||||
me["v1_text"].setText(sprintf("%3.0f", v1.getValue()));
|
||||
me["v1_text"].setText(sprintf("%3.0f", fmgc.FMGCInternal.v1));
|
||||
} else {
|
||||
me["v1_group"].hide();
|
||||
me["v1_text"].hide();
|
||||
|
@ -2099,8 +2215,8 @@ var canvas_PFD_2 = {
|
|||
me["v1_text"].hide();
|
||||
}
|
||||
|
||||
if (vr_set.getValue() == '1') {
|
||||
tgt_vr = vr.getValue();
|
||||
if (fmgc.FMGCInternal.vrset) {
|
||||
tgt_vr = fmgc.FMGCInternal.vr;
|
||||
if (tgt_vr <= 30) {
|
||||
me.VRtrgt = 0 - me.ASI;
|
||||
} else if (tgt_vr >= 420) {
|
||||
|
@ -2111,7 +2227,7 @@ var canvas_PFD_2 = {
|
|||
|
||||
me.SPDvrtrgtdiff = tgt_vr - ind_spd;
|
||||
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2 and me.SPDvrtrgtdiff >= -42 and me.SPDvrtrgtdiff <= 42) {
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2 and me.SPDvrtrgtdiff >= -42 and me.SPDvrtrgtdiff <= 42) {
|
||||
me["vr_speed"].show();
|
||||
me["vr_speed"].setTranslation(0, me.VRtrgt * -6.6);
|
||||
} else {
|
||||
|
@ -2121,8 +2237,8 @@ var canvas_PFD_2 = {
|
|||
me["vr_speed"].hide();
|
||||
}
|
||||
|
||||
if (v2_set.getValue() == '1') {
|
||||
tgt_v2 = v2.getValue();
|
||||
if (fmgc.FMGCInternal.v2set) {
|
||||
tgt_v2 = fmgc.FMGCInternal.v2;
|
||||
if (tgt_v2 <= 30) {
|
||||
me.V2trgt = 0 - me.ASI;
|
||||
} else if (tgt_v2 >= 420) {
|
||||
|
@ -2133,21 +2249,22 @@ var canvas_PFD_2 = {
|
|||
|
||||
me.SPDv2trgtdiff = tgt_v2 - ind_spd;
|
||||
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2 and me.SPDv2trgtdiff >= -42 and me.SPDv2trgtdiff <= 42) {
|
||||
if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2 and me.SPDv2trgtdiff >= -42 and me.SPDv2trgtdiff <= 42) {
|
||||
me["ASI_target"].show();
|
||||
me["ASI_target"].setTranslation(0, me.V2trgt * -6.6);
|
||||
me["ASI_digit_UP"].setText(sprintf("%3.0f", v2.getValue()));
|
||||
} else if (pts.Position.gearAglFt.getValue() < 55 and FMGCphase.getValue() <= 2) {
|
||||
me["ASI_digit_UP"].setText(sprintf("%3.0f", fmgc.FMGCInternal.v2));
|
||||
} else if (pts.Position.gearAglFt.getValue() < 55 and fmgc.FMGCInternal.phase <= 2) {
|
||||
me["ASI_target"].hide();
|
||||
me["ASI_digit_UP"].setText(sprintf("%3.0f", v2.getValue()));
|
||||
me["ASI_digit_UP"].setText(sprintf("%3.0f", fmgc.FMGCInternal.v2));
|
||||
}
|
||||
}
|
||||
|
||||
if (fbw.FBW.Computers.fac1.getValue() or fbw.FBW.Computers.fac2.getValue()) {
|
||||
if (flap_config.getValue() == '1') {
|
||||
me["F_target"].hide();
|
||||
me["clean_speed"].hide();
|
||||
|
||||
tgt_S = tgt_S = getprop("/FMGC/internal/computed-speeds/slat");
|
||||
tgt_S = fmgc.FMGCInternal.slat;
|
||||
|
||||
if (tgt_S <= 30) {
|
||||
me.Strgt = 0 - me.ASI;
|
||||
|
@ -2159,7 +2276,7 @@ var canvas_PFD_2 = {
|
|||
|
||||
me.SPDstrgtdiff = tgt_S - ind_spd;
|
||||
|
||||
if (me.SPDstrgtdiff >= -42 and me.SPDstrgtdiff <= 42) {
|
||||
if (me.SPDstrgtdiff >= -42 and me.SPDstrgtdiff <= 42 and gear_agl.getValue() >= 400) {
|
||||
me["S_target"].show();
|
||||
me["S_target"].setTranslation(0, me.Strgt * -6.6);
|
||||
} else {
|
||||
|
@ -2181,7 +2298,7 @@ var canvas_PFD_2 = {
|
|||
me["S_target"].hide();
|
||||
me["clean_speed"].hide();
|
||||
|
||||
tgt_F = tgt_S = getprop("/FMGC/internal/computed-speeds/flap2");
|
||||
tgt_F = fmgc.FMGCInternal.flap2;
|
||||
|
||||
if (tgt_F <= 30) {
|
||||
me.Ftrgt = 0 - me.ASI;
|
||||
|
@ -2193,7 +2310,7 @@ var canvas_PFD_2 = {
|
|||
|
||||
me.SPDftrgtdiff = tgt_F - ind_spd;
|
||||
|
||||
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42) {
|
||||
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42 and gear_agl.getValue() >= 400) {
|
||||
me["F_target"].show();
|
||||
me["F_target"].setTranslation(0, me.Ftrgt * -6.6);
|
||||
} else {
|
||||
|
@ -2215,7 +2332,7 @@ var canvas_PFD_2 = {
|
|||
me["S_target"].hide();
|
||||
me["clean_speed"].hide();
|
||||
|
||||
tgt_F = tgt_S = getprop("/FMGC/internal/computed-speeds/flap3");
|
||||
tgt_F = fmgc.FMGCInternal.flap3;
|
||||
|
||||
if (tgt_F <= 30) {
|
||||
me.Ftrgt = 0 - me.ASI;
|
||||
|
@ -2227,7 +2344,7 @@ var canvas_PFD_2 = {
|
|||
|
||||
me.SPDftrgtdiff = tgt_F - ind_spd;
|
||||
|
||||
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42) {
|
||||
if (me.SPDftrgtdiff >= -42 and me.SPDftrgtdiff <= 42 and gear_agl.getValue() >= 400) {
|
||||
me["F_target"].show();
|
||||
me["F_target"].setTranslation(0, me.Ftrgt * -6.6);
|
||||
} else {
|
||||
|
@ -2254,7 +2371,7 @@ var canvas_PFD_2 = {
|
|||
me["S_target"].hide();
|
||||
me["F_target"].hide();
|
||||
|
||||
tgt_clean = tgt_S = getprop("/FMGC/internal/computed-speeds/clean");
|
||||
tgt_clean = fmgc.FMGCInternal.clean;
|
||||
|
||||
me.cleantrgt = tgt_clean - 30 - me.ASI;
|
||||
me.SPDcleantrgtdiff = tgt_clean - ind_spd;
|
||||
|
@ -2278,10 +2395,11 @@ var canvas_PFD_2 = {
|
|||
me["flap_max"].hide();
|
||||
}
|
||||
}
|
||||
|
||||
if (alt_agl.getValue() < 400) {
|
||||
} else {
|
||||
me["S_target"].hide();
|
||||
me["F_target"].hide();
|
||||
me["clean_speed"].hide();
|
||||
me["flap_max"].hide();
|
||||
}
|
||||
|
||||
me.ASItrend = dmc.DMController.DMCs[1].outputs[6].getValue() - me.ASI;
|
||||
|
@ -2419,7 +2537,7 @@ var canvas_PFD_2 = {
|
|||
|
||||
landing_diff_cur = landing_diff.getValue();
|
||||
if (landing_diff_cur >= -565 and landing_diff_cur <= 565) {
|
||||
if ((FMGCphase.getValue() == 5 or FMGCphase.getValue() == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
||||
if ((fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
||||
me["ground"].setTranslation(0, (landing_diff_cur / 100) * -48.66856);
|
||||
me["ground"].show();
|
||||
} else {
|
||||
|
@ -2429,13 +2547,13 @@ var canvas_PFD_2 = {
|
|||
me["ground"].hide();
|
||||
}
|
||||
|
||||
if (!getprop("/ECAM/alt-alert-flash") and !getprop("/ECAM/alt-alert-steady")) {
|
||||
if (!ecam.altAlertFlash and !ecam.altAlertSteady) {
|
||||
alt_going2 = 0;
|
||||
amber_going2 = 0;
|
||||
me["ALT_box_flash"].hide();
|
||||
me["ALT_box_amber"].hide();
|
||||
} else {
|
||||
if (getprop("/ECAM/alt-alert-flash")) {
|
||||
if (ecam.altAlertFlash) {
|
||||
if (alt_going2 == 1) {
|
||||
me["ALT_box_flash"].hide();
|
||||
altTimer2.stop();
|
||||
|
@ -2453,7 +2571,7 @@ var canvas_PFD_2 = {
|
|||
} else {
|
||||
me["ALT_box_amber"].hide();
|
||||
}
|
||||
} elsif (getprop("/ECAM/alt-alert-steady")) {
|
||||
} elsif (ecam.altAlertSteady) {
|
||||
if (amber_going2 == 1) {
|
||||
me["ALT_box"].show();
|
||||
me["ALT_box_amber"].hide();
|
||||
|
|
13
Models/Instruments/PFD/res/info.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
Heading Tape:
|
||||
123.177
|
||||
61.5885
|
||||
|
||||
98.5416 is 123.177 in 1024
|
||||
49.2708 is 61.5885 in 1024
|
||||
|
||||
Altitude Tape:
|
||||
304.178
|
||||
60.8357
|
||||
|
||||
243.3424 is 304.178 in 1024
|
||||
48.66856 is 60.8357 in 1024
|
|
@ -8,7 +8,7 @@
|
|||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="pfd.svg"
|
||||
inkscape:version="1.0beta2 (2b71d25, 2019-12-03)"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
viewBox="0 0 1024 1024"
|
||||
|
@ -39,14 +39,14 @@
|
|||
showguides="true"
|
||||
inkscape:current-layer="svg2"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="23"
|
||||
inkscape:window-x="0"
|
||||
inkscape:cy="886.5494"
|
||||
inkscape:cx="916.44902"
|
||||
inkscape:zoom="2.1546825"
|
||||
inkscape:window-y="18"
|
||||
inkscape:window-x="3840"
|
||||
inkscape:cy="557.03495"
|
||||
inkscape:cx="619.57094"
|
||||
inkscape:zoom="0.53867065"
|
||||
showgrid="true"
|
||||
id="namedview371"
|
||||
inkscape:window-height="1035"
|
||||
inkscape:window-height="1062"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="1"
|
||||
|
@ -1396,9 +1396,10 @@
|
|||
<path
|
||||
sodipodi:nodetypes="cccccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect4760-1"
|
||||
id="fixed_aircraft_outline_1"
|
||||
d="m 279.39676,473.84829 20.67975,-1.3e-4 v 15.43882 0 l 1.8e-4,25.65723 h -15.4389 l -0.14628,-25.65723 v 0 l -81.2588,-5e-5 v -15.43891 l 76.16405,2.1e-4 z"
|
||||
style="fill:none;fill-opacity:1;stroke:#c9d121;stroke-width:3.54375;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;fill-opacity:1;stroke:#c9d121;stroke-width:3.54375;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:label="fixed_aircraft_outline_1" />
|
||||
</g>
|
||||
<g
|
||||
id="g4856"
|
||||
|
@ -1420,9 +1421,10 @@
|
|||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#c9d121;stroke-width:3.54375;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 279.39676,473.84829 20.67975,-1.3e-4 v 15.43882 0 l 1.8e-4,25.65723 h -15.4389 l -0.14628,-25.65723 v 0 l -81.2588,-5e-5 v -15.43891 l 76.16405,2.1e-4 z"
|
||||
id="path4854"
|
||||
id="fixed_aircraft_outline_2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccccccc" />
|
||||
sodipodi:nodetypes="cccccccccccc"
|
||||
inkscape:label="fixed_aircraft_outline_2" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3.19995;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
|
@ -2607,14 +2609,6 @@
|
|||
width="33.21196"
|
||||
id="LOC_pointer"
|
||||
style="fill:none;fill-opacity:1;stroke:#b055be;stroke-width:4.0350337;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="display:inline;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:3.22735;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="ground_ref"
|
||||
width="16.287683"
|
||||
height="2088.8245"
|
||||
x="857.0014"
|
||||
y="512.75592"
|
||||
inkscape:label="ground_ref" />
|
||||
<g
|
||||
inkscape:label="#g4828"
|
||||
id="ALT_group2">
|
||||
|
@ -2872,17 +2866,12 @@
|
|||
</g>
|
||||
<text
|
||||
id="ALT_tens"
|
||||
y="289.66925"
|
||||
y="317.73038"
|
||||
x="898.703"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text913"
|
||||
transform="scale(0.96366556,1.0377044)"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:95%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="289.66925"
|
||||
x="898.703"
|
||||
id="tspan911"
|
||||
sodipodi:role="line" /><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="317.73038"
|
||||
x="898.703"
|
||||
|
@ -6503,6 +6492,14 @@
|
|||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<rect
|
||||
style="display:inline;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:3.22735;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="ground_ref"
|
||||
width="16.287683"
|
||||
height="2088.8245"
|
||||
x="857.0014"
|
||||
y="512.75592"
|
||||
inkscape:label="ground_ref" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
|
@ -6656,4 +6653,54 @@
|
|||
x="61.095329"
|
||||
y="74.429939"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35.9995px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577">FLX</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text1607"
|
||||
id="spdLimError"
|
||||
y="742.30011"
|
||||
x="135.06754"
|
||||
style="font-style:normal;font-weight:normal;font-size:30px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;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:0.5;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ff0000;fill-opacity:1;stroke-width:0.75"
|
||||
y="742.30011"
|
||||
x="135.06754"
|
||||
id="tspan1605-4"
|
||||
sodipodi:role="line">SPD</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:42px;line-height:0.5;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ff0000;fill-opacity:1;stroke-width:0.75"
|
||||
y="779.80011"
|
||||
x="135.06754"
|
||||
sodipodi:role="line"
|
||||
id="tspan1860">LIM</tspan></text>
|
||||
<g
|
||||
id="FPV"
|
||||
inkscape:label="#g4866"
|
||||
transform="matrix(1.1096488,0,0,1.1096488,-44.149294,-44.038907)">
|
||||
<rect
|
||||
transform="rotate(90)"
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:none;stroke-width:4.32775;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4864"
|
||||
width="11.546137"
|
||||
height="4.3256927"
|
||||
x="471.68945"
|
||||
y="-445.96243" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#00ff00;stroke-width:4.32569;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 461.34624,502.24844 c 0,9.69662 -7.86065,17.55727 -17.55727,17.55727 -9.69662,0 -17.55727,-7.86065 -17.55727,-17.55727 0,-9.69662 7.86065,-17.55727 17.55727,-17.55727 9.69662,0 17.55727,7.86065 17.55727,17.55727 z"
|
||||
id="path4858"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="zzzzz" />
|
||||
<rect
|
||||
y="500.03757"
|
||||
x="399.82227"
|
||||
height="4.3256927"
|
||||
width="25.012779"
|
||||
id="rect4860"
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:none;stroke-width:6.36979;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
style="fill:#00ff00;fill-opacity:1;stroke:none;stroke-width:6.36977;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="rect4862"
|
||||
width="25.012671"
|
||||
height="4.3256927"
|
||||
x="462.76437"
|
||||
y="500.03757" />
|
||||
</g>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 367 KiB After Width: | Height: | Size: 369 KiB |
|
@ -240,7 +240,6 @@
|
|||
</animation>
|
||||
|
||||
<!-- Knob -->
|
||||
<!-- TODO add bindings for VOR, LS and ADF -->
|
||||
<!-- We use a little hack to get 8.33MHz spacing working:
|
||||
First we assign our current STBY freq we want to adjust to the default instrument.
|
||||
Then we change the channel there.
|
||||
|
@ -514,6 +513,144 @@
|
|||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/frequencies/standby-mhz</property>
|
||||
<step>0.05</step>
|
||||
<min>108.00</min>
|
||||
<max>112.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/radials/selected-deg</property>
|
||||
<step>1</step>
|
||||
<min>1</min>
|
||||
<max>361</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[2]/frequencies/standby-mhz</property>
|
||||
<step>0.05</step>
|
||||
<min>108.00</min>
|
||||
<max>118.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[2]/radials/selected-deg</property>
|
||||
<step>1</step>
|
||||
<min>1</min>
|
||||
<max>361</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">adf</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/adf[0]/frequencies/standby-khz</property>
|
||||
<step>1</step>
|
||||
<min>190</min>
|
||||
<max>1751</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
|
@ -780,8 +917,147 @@
|
|||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/frequencies/standby-mhz</property>
|
||||
<step>-0.05</step>
|
||||
<min>108.00</min>
|
||||
<max>112.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/radials/selected-deg</property>
|
||||
<step>-1</step>
|
||||
<min>1</min>
|
||||
<max>361</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[2]/frequencies/standby-mhz</property>
|
||||
<step>-0.05</step>
|
||||
<min>108.00</min>
|
||||
<max>118.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[2]/radials/selected-deg</property>
|
||||
<step>-1</step>
|
||||
<min>1</min>
|
||||
<max>361</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">adf</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/adf[0]/frequencies/standby-khz</property>
|
||||
<step>-1</step>
|
||||
<min>190</min>
|
||||
<max>1751</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>radio_rot0</object-name>
|
||||
|
@ -926,6 +1202,63 @@
|
|||
<mask>integer</mask>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/frequencies/standby-mhz</property>
|
||||
<step>1.00</step>
|
||||
<min>108.00</min>
|
||||
<max>112.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[2]/frequencies/standby-mhz</property>
|
||||
<step>1.00</step>
|
||||
<min>108.00</min>
|
||||
<max>118.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
|
@ -1068,6 +1401,63 @@
|
|||
<mask>integer</mask>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/frequencies/standby-mhz</property>
|
||||
<step>-1.00</step>
|
||||
<min>108.00</min>
|
||||
<max>112.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[0]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[0]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[2]/frequencies/standby-mhz</property>
|
||||
<step>-1</step>
|
||||
<min>108.00</min>
|
||||
<max>118.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
@ -1076,23 +1466,15 @@
|
|||
<type>pick</type>
|
||||
<object-name>radio_nav_lit</object-name>
|
||||
<action>
|
||||
<button>1</button>
|
||||
<button>0</button>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<command>property-toggle</command>
|
||||
<property>controls/radio/rmp[0]/nav-protect</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>controls/radio/rmp[0]/nav-protect</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/oh-cover", 1);</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -1111,7 +1493,7 @@
|
|||
<object-name>radio_nav</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>true</repeatable>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>systems/radio/rmp[0]/nav</property>
|
||||
|
@ -1132,6 +1514,15 @@
|
|||
</and>
|
||||
</condition>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>controls/radio/rmp[0]/nav-protect</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/oh-cover", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
|
|
@ -240,7 +240,6 @@
|
|||
</animation>
|
||||
|
||||
<!-- Knob -->
|
||||
<!-- TODO add bindings for VOR, LS and ADF -->
|
||||
<!-- We use a little hack to get 8.33MHz spacing working:
|
||||
First we assign our current STBY freq we want to adjust to the default instrument.
|
||||
Then we change the channel there.
|
||||
|
@ -514,6 +513,145 @@
|
|||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/frequencies/standby-mhz</property>
|
||||
<step>0.05</step>
|
||||
<min>108.00</min>
|
||||
<max>112.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/radials/selected-deg</property>
|
||||
<step>1</step>
|
||||
<min>1</min>
|
||||
<max>361</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[3]/frequencies/standby-mhz</property>
|
||||
<step>0.05</step>
|
||||
<min>108.00</min>
|
||||
<max>118.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[3]/radials/selected-deg</property>
|
||||
<step>1</step>
|
||||
<min>1</min>
|
||||
<max>361</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">adf</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/adf[1]/frequencies/standby-khz</property>
|
||||
<step>1</step>
|
||||
<min>190</min>
|
||||
<max>1751</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
|
@ -780,6 +918,144 @@
|
|||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/frequencies/standby-mhz</property>
|
||||
<step>-0.05</step>
|
||||
<min>108.00</min>
|
||||
<max>112.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/radials/selected-deg</property>
|
||||
<step>-1</step>
|
||||
<min>1</min>
|
||||
<max>361</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[3]/frequencies/standby-mhz</property>
|
||||
<step>-0.05</step>
|
||||
<min>108.00</min>
|
||||
<max>118.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[3]/radials/selected-deg</property>
|
||||
<step>-1</step>
|
||||
<min>1</min>
|
||||
<max>361</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">adf</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/adf[1]/frequencies/standby-khz</property>
|
||||
<step>-1</step>
|
||||
<min>190</min>
|
||||
<max>1751</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -926,6 +1202,63 @@
|
|||
<mask>integer</mask>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/frequencies/standby-mhz</property>
|
||||
<step>1.00</step>
|
||||
<min>108.00</min>
|
||||
<max>112.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[3]/frequencies/standby-mhz</property>
|
||||
<step>1.00</step>
|
||||
<min>108.00</min>
|
||||
<max>118.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
|
@ -1068,6 +1401,63 @@
|
|||
<mask>integer</mask>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">ls</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[0]/frequencies/standby-mhz</property>
|
||||
<step>-1.00</step>
|
||||
<min>108.00</min>
|
||||
<max>112.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
|
||||
<binding>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
<equals>
|
||||
<property>controls/radio/rmp[1]/on</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/sel_chan</property>
|
||||
<value type="string">vor</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/radio/rmp[1]/select-crs</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
</condition>
|
||||
<command>property-adjust</command>
|
||||
<property>instrumentation/nav[3]/frequencies/standby-mhz</property>
|
||||
<step>-1</step>
|
||||
<min>108.00</min>
|
||||
<max>118.00</max>
|
||||
<wrap>true</wrap>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
@ -1076,23 +1466,15 @@
|
|||
<type>pick</type>
|
||||
<object-name>radio_nav_lit</object-name>
|
||||
<action>
|
||||
<button>1</button>
|
||||
<button>0</button>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<command>property-toggle</command>
|
||||
<property>controls/radio/rmp[1]/nav-protect</property>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
<mod-up>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>controls/radio/rmp[1]/nav-protect</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/oh-cover", 1);</script>
|
||||
</binding>
|
||||
</mod-up>
|
||||
</action>
|
||||
</animation>
|
||||
<animation>
|
||||
|
@ -1111,7 +1493,7 @@
|
|||
<object-name>radio_nav</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>true</repeatable>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>systems/radio/rmp[1]/nav</property>
|
||||
|
@ -1132,6 +1514,15 @@
|
|||
</and>
|
||||
</condition>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>property-assign</command>
|
||||
<property>controls/radio/rmp[1]/nav-protect</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>setprop("sim/sounde/oh-cover", 1);</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ MATERIAL "radio" rgb 0.800 0.800 0.800 amb 1.000 1.000 1.000 emis 0.100 0.100
|
|||
MATERIAL "radio_emit" rgb 0.640 0.640 0.640 amb 1.000 1.000 1.000 emis 0.850 0.850 0.850 spec 0.400 0.400 0.400 shi 12 trans 0.000
|
||||
MATERIAL "DefaultWhite" rgb 1.000 1.000 1.000 amb 0.200 0.200 0.200 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 10 trans 0.000
|
||||
OBJECT world
|
||||
name "Blender_exporter_v2.26__Radio.ac"
|
||||
name "Blender_exporter_v3.3__Radio.ac"
|
||||
kids 37
|
||||
OBJECT poly
|
||||
name "radio_active.screen"
|
||||
|
@ -14746,9 +14746,9 @@ SURF 0X0
|
|||
mat 0
|
||||
refs 4
|
||||
5 0.993212 0.944859
|
||||
4 0.931324 0.944859
|
||||
10 0.931324 0.943492
|
||||
11 0.993212 0.943492
|
||||
10 0.931324 0.943492
|
||||
4 0.931324 0.944859
|
||||
SURF 0X0
|
||||
mat 0
|
||||
refs 4
|
||||
|
@ -14760,9 +14760,9 @@ SURF 0X0
|
|||
mat 0
|
||||
refs 4
|
||||
1 0.965523 0.925681
|
||||
0 0.997855 0.925681
|
||||
4 0.997855 0.935702
|
||||
5 0.965523 0.935702
|
||||
4 0.997855 0.935702
|
||||
0 0.997855 0.925681
|
||||
SURF 0X0
|
||||
mat 0
|
||||
refs 4
|
||||
|
@ -14792,9 +14792,9 @@ SURF 0X0
|
|||
mat 0
|
||||
refs 4
|
||||
0 0.931324 0.94175
|
||||
1 0.993212 0.94175
|
||||
3 0.993212 0.942381
|
||||
2 0.931324 0.942381
|
||||
3 0.993212 0.942381
|
||||
1 0.993212 0.94175
|
||||
kids 0
|
||||
OBJECT poly
|
||||
name "radio_nav_lit.axis"
|
||||
|
|
Before Width: | Height: | Size: 311 KiB After Width: | Height: | Size: 320 KiB |
|
@ -3,7 +3,7 @@ MATERIAL "radio" rgb 0.800 0.800 0.800 amb 1.000 1.000 1.000 emis 0.100 0.100
|
|||
MATERIAL "radio_emit" rgb 0.640 0.640 0.640 amb 1.000 1.000 1.000 emis 0.850 0.850 0.850 spec 0.400 0.400 0.400 shi 12 trans 0.000
|
||||
MATERIAL "DefaultWhite" rgb 1.000 1.000 1.000 amb 0.200 0.200 0.200 emis 0.000 0.000 0.000 spec 0.500 0.500 0.500 shi 10 trans 0.000
|
||||
OBJECT world
|
||||
name "Blender_exporter_v2.26__Radio1.ac"
|
||||
name "Blender_exporter_v3.3__Radio1.ac"
|
||||
kids 37
|
||||
OBJECT poly
|
||||
name "radio_active.screen"
|
||||
|
@ -14746,9 +14746,9 @@ SURF 0X0
|
|||
mat 0
|
||||
refs 4
|
||||
5 0.993212 0.944859
|
||||
4 0.931324 0.944859
|
||||
10 0.931324 0.943492
|
||||
11 0.993212 0.943492
|
||||
10 0.931324 0.943492
|
||||
4 0.931324 0.944859
|
||||
SURF 0X0
|
||||
mat 0
|
||||
refs 4
|
||||
|
@ -14760,9 +14760,9 @@ SURF 0X0
|
|||
mat 0
|
||||
refs 4
|
||||
1 0.965523 0.925681
|
||||
0 0.997855 0.925681
|
||||
4 0.997855 0.935702
|
||||
5 0.965523 0.935702
|
||||
4 0.997855 0.935702
|
||||
0 0.997855 0.925681
|
||||
SURF 0X0
|
||||
mat 0
|
||||
refs 4
|
||||
|
@ -14792,9 +14792,9 @@ SURF 0X0
|
|||
mat 0
|
||||
refs 4
|
||||
0 0.931324 0.94175
|
||||
1 0.993212 0.94175
|
||||
3 0.993212 0.942381
|
||||
2 0.931324 0.942381
|
||||
3 0.993212 0.942381
|
||||
1 0.993212 0.94175
|
||||
kids 0
|
||||
OBJECT poly
|
||||
name "radio_nav_lit.axis"
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="cfm-eis2.svg">
|
||||
<metadata
|
||||
id="metadata375">
|
||||
|
@ -40,10 +40,10 @@
|
|||
inkscape:window-width="1366"
|
||||
inkscape:window-height="705"
|
||||
id="namedview371"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.50000001"
|
||||
inkscape:cx="659.36853"
|
||||
inkscape:cy="512.09207"
|
||||
showgrid="true"
|
||||
inkscape:zoom="1"
|
||||
inkscape:cx="718.57047"
|
||||
inkscape:cy="505.8628"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
|
@ -76,11 +76,6 @@
|
|||
height="8.496521"
|
||||
x="691.55396"
|
||||
y="692.57446" />
|
||||
<path
|
||||
id="path4447"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#575757;stroke-width:5.19999981;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 718.11442,596.89138 11.4047,16.81213 m -36.4425,-17.34853 -10.5797,15.51213 m 11.1047,-15.46213 24.4703,0.46213 m -35.5703,14.98787 47.0582,1.94289"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
inkscape:label="#text4219"
|
||||
id="FlapTxt"
|
||||
|
@ -94,6 +89,13 @@
|
|||
x="729.04968"
|
||||
id="tspan4331"
|
||||
sodipodi:role="line">1+F</tspan></text>
|
||||
<path
|
||||
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0dc04b;stroke-width:5.23279285;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 917.38445,644.30596 720.66027,597.47244"
|
||||
id="FlapLine"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:label="#path1103"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
id="FlapDots"
|
||||
inkscape:label="#g4344"
|
||||
|
@ -102,11 +104,11 @@
|
|||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect4346"
|
||||
d="m 636.15001,595.05001 9.50347,-2.225 -1.075,3.72508 -9.90347,2.525 z"
|
||||
d="m 636.16173,590.75725 9.50347,-2.225 -1.075,3.72508 -9.90347,2.525 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 590.60001,606.45001 9.50347,-2.225 -1.075,3.72508 -9.90347,2.525 z"
|
||||
d="m 590.60001,605.24377 9.50347,-2.225 -1.075,3.72508 -9.90347,2.525 z"
|
||||
id="path4349"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
|
@ -118,7 +120,7 @@
|
|||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 821.6363,589.13181 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
d="m 821.6363,592.59471 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
id="path4353"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
|
@ -126,11 +128,11 @@
|
|||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4355"
|
||||
d="m 867.18574,600.69907 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
d="m 867.18574,603.7664 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 913.00626,612.50775 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
d="m 913.00626,615.19254 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
id="path4357"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
|
@ -1264,485 +1266,6 @@
|
|||
y="943.73566"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#cecdce">LINE 8</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="TO_Memo"
|
||||
inkscape:label="#g4517">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4412"
|
||||
y="686.0564"
|
||||
x="14.033532"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="686.0564"
|
||||
x="14.033532"
|
||||
id="tspan4414"
|
||||
sodipodi:role="line">T.O</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#0dc04b;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 13.8216,741.99564 77.932201,0"
|
||||
id="path4556"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="686.0564"
|
||||
id="TO_Autobrake"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4421"
|
||||
x="104.6523"
|
||||
y="686.0564"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">AUTO BRK</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="TO_Signs"
|
||||
y="722.50458"
|
||||
x="104.6523"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="722.50458"
|
||||
x="104.6523"
|
||||
id="tspan4425"
|
||||
sodipodi:role="line">SIGNS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="759.67883"
|
||||
id="TO_Spoilers"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4429"
|
||||
x="104.6523"
|
||||
y="759.67883"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">SPLRS</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="TO_Flaps"
|
||||
y="796.12726"
|
||||
x="104.6523"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="796.12726"
|
||||
x="104.6523"
|
||||
id="tspan4436"
|
||||
sodipodi:role="line">FLAPS </tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="833.30151"
|
||||
id="TO_Config"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4440"
|
||||
x="104.6523"
|
||||
y="833.30151"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">T.O CONFIG</tspan></text>
|
||||
<g
|
||||
inkscape:label="#g4487"
|
||||
id="TO_Autobrake_B">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="686.41925"
|
||||
id="text4442"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4444"
|
||||
x="489.9281"
|
||||
y="686.41925"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">MAX</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4462"
|
||||
y="686.41925"
|
||||
x="403.6488"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="686.41925"
|
||||
x="403.6488"
|
||||
id="tspan4465"
|
||||
sodipodi:role="line">. . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4493"
|
||||
id="TO_Signs_B">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4446"
|
||||
y="722.50458"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="722.50458"
|
||||
x="489.9281"
|
||||
id="tspan4448"
|
||||
sodipodi:role="line"> ON</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="424.27417"
|
||||
y="722.86768"
|
||||
id="text4471"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:transform-center-y="-46.367479"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4473"
|
||||
x="424.27417"
|
||||
y="722.86768"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4499"
|
||||
id="TO_Spoilers_B">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="760.04193"
|
||||
id="text4450"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4452"
|
||||
x="489.9281"
|
||||
y="760.04193"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">ARM</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="403.6488"
|
||||
y="760.04193"
|
||||
id="text4475"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4477"
|
||||
x="403.6488"
|
||||
y="760.04193"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4505"
|
||||
id="TO_Flaps_B">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4454"
|
||||
y="796.12726"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="796.12726"
|
||||
x="489.9281"
|
||||
id="tspan4456"
|
||||
sodipodi:role="line">T.O</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="424.27417"
|
||||
y="796.49036"
|
||||
id="text4479"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4481"
|
||||
x="424.27417"
|
||||
y="796.49036"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4511"
|
||||
id="TO_Config_B">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="833.30151"
|
||||
id="text4458"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4460"
|
||||
x="489.9281"
|
||||
y="833.30151"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">TEST</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4483"
|
||||
y="833.66461"
|
||||
x="383.02429"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="833.66461"
|
||||
x="383.02429"
|
||||
id="tspan4485"
|
||||
sodipodi:role="line">. . .</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4517"
|
||||
id="LDG_Memo">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="14.033532"
|
||||
y="686.0564"
|
||||
id="text4418"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan233"
|
||||
x="14.033532"
|
||||
y="686.0564"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">LDG</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4424"
|
||||
d="M 13.8216,741.99564 H 91.753801"
|
||||
style="fill:none;stroke:#0dc04b;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="LDG_Gear"
|
||||
y="686.0564"
|
||||
x="104.6523"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="686.0564"
|
||||
x="104.6523"
|
||||
id="tspan4428"
|
||||
sodipodi:role="line">LDG GEAR</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="722.50458"
|
||||
id="LDG_Signs"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4432"
|
||||
x="104.6523"
|
||||
y="722.50458"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">SIGNS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="759.37872"
|
||||
id="LDG_Cabin"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan241"
|
||||
x="104.6523"
|
||||
y="759.37872"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">CABIN READY</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="LDG_Spoilers"
|
||||
y="796.12726"
|
||||
x="104.6523"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="796.12726"
|
||||
x="104.6523"
|
||||
id="tspan4438"
|
||||
sodipodi:role="line">SPLRS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="833.30151"
|
||||
id="LDG_Flaps"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4442"
|
||||
x="104.6523"
|
||||
y="833.30151"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">FLAPS </tspan></text>
|
||||
<g
|
||||
id="LDG_Gear_B"
|
||||
inkscape:label="#g4487">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4451"
|
||||
y="686.41925"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="686.41925"
|
||||
x="489.9281"
|
||||
id="tspan4453"
|
||||
sodipodi:role="line">DN</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="424.27417"
|
||||
y="686.41925"
|
||||
id="text4455"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4457"
|
||||
x="424.27417"
|
||||
y="686.41925"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="LDG_Signs_B"
|
||||
inkscape:label="#g4493">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="722.50458"
|
||||
id="text4461"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4463"
|
||||
x="489.9281"
|
||||
y="722.50458"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"> ON</tspan></text>
|
||||
<text
|
||||
inkscape:transform-center-y="-46.367479"
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4465"
|
||||
y="722.86768"
|
||||
x="424.27417"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="722.86768"
|
||||
x="424.27417"
|
||||
id="tspan4467"
|
||||
sodipodi:role="line">. . . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="LDG_Spoilers_B"
|
||||
inkscape:label="#g4499">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4472"
|
||||
y="796.49036"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="796.49036"
|
||||
x="489.9281"
|
||||
id="tspan4474"
|
||||
sodipodi:role="line">ARM</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4476"
|
||||
y="796.49036"
|
||||
x="403.6488"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="796.49036"
|
||||
x="403.6488"
|
||||
id="tspan4478"
|
||||
sodipodi:role="line">. . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="LDG_Flaps_B"
|
||||
inkscape:label="#g4505"
|
||||
transform="translate(0,39.990378)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="796.12726"
|
||||
id="text4482"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4484"
|
||||
x="489.9281"
|
||||
y="796.12726"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">FULL</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4486"
|
||||
y="796.49036"
|
||||
x="383.02411"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="796.49036"
|
||||
x="383.02411"
|
||||
id="tspan4488"
|
||||
sodipodi:role="line">. . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4505"
|
||||
id="LDG_Flaps_B3">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text5125"
|
||||
y="833.30151"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="833.30151"
|
||||
x="489.9281"
|
||||
id="tspan5127"
|
||||
sodipodi:role="line">3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="465.52426"
|
||||
y="833.66461"
|
||||
id="text5129"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5131"
|
||||
x="465.52426"
|
||||
y="833.66461"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4376"
|
||||
id="ECAM_Right"
|
||||
|
@ -1852,4 +1375,57 @@
|
|||
id="tspan1108"
|
||||
sodipodi:role="line">LINE 8</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:'Liberation Sabs';-inkscape-font-specification:'Liberation Sabs';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
x="650.08069"
|
||||
y="575.68427"
|
||||
id="SlatAlphaLock"
|
||||
inkscape:label="#text4800"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4798"
|
||||
x="650.08069"
|
||||
y="575.68427"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.25px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75">A-LOCK</tspan></text>
|
||||
<path
|
||||
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0dc04b;stroke-width:5.44862556;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
d="M 555.26245,639.8335 691.24239,597.33411"
|
||||
id="SlatLine"
|
||||
inkscape:original-d="m 555.22993,639.86602 135.34892,-43.9598"
|
||||
inkscape:label="#path1119"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
id="path4447"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#575757;stroke-width:5.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
|
||||
d="m 718.11442,596.89138 11.4047,16.81213 m -35.92874,-17.24909 -11.09346,15.41269 m 11.13785,-15.41241 24.43715,0.41241 m -35.5703,14.98787 47.0582,1.94289"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0dc04b;stroke-width:5.2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||
d="m 928.84849,661.23101 -11.44541,-16.90649 38.53701,7.25587 v 15.15993 l -27.0916,-5.50931"
|
||||
id="FlapIndicator"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:label="#path1093" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0dc04b;stroke-width:5.2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||
d="m 530.43575,645.52404 24.69434,-5.55908 -11.10498,15.46142 -24.69434,5.56055 z"
|
||||
id="SlatIndicator"
|
||||
inkscape:label="#path1114" />
|
||||
<rect
|
||||
style="opacity:0.5;fill:none;fill-opacity:1;stroke:none;stroke-width:4.08072662;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
|
||||
id="FlapLine_clip"
|
||||
width="195.52469"
|
||||
height="50.843338"
|
||||
x="718.86694"
|
||||
y="594.42938"
|
||||
inkscape:label="#rect1023" />
|
||||
<rect
|
||||
inkscape:label="#rect1023"
|
||||
y="594.05438"
|
||||
x="554.93781"
|
||||
height="48.089657"
|
||||
width="137.63597"
|
||||
id="SlatLine_clip"
|
||||
style="opacity:0.5;fill:none;fill-opacity:1;stroke:none;stroke-width:3.34691048;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 86 KiB |
|
@ -12,7 +12,7 @@
|
|||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="iae-eis2.svg">
|
||||
<metadata
|
||||
id="metadata375">
|
||||
|
@ -42,7 +42,7 @@
|
|||
id="namedview371"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.43942712"
|
||||
inkscape:cx="568.82143"
|
||||
inkscape:cx="180.81625"
|
||||
inkscape:cy="433.53356"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
|
@ -97,11 +97,6 @@
|
|||
height="8.496521"
|
||||
x="691.55396"
|
||||
y="692.57446" />
|
||||
<path
|
||||
id="path4447"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#575757;stroke-width:5.19999981;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 718.11442,596.89138 11.4047,16.81213 m -36.4425,-17.34853 -10.5797,15.51213 m 11.1047,-15.46213 24.4703,0.46213 m -35.5703,14.98787 47.0582,1.94289"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
inkscape:label="#text4219"
|
||||
id="FlapTxt"
|
||||
|
@ -115,6 +110,13 @@
|
|||
x="729.04968"
|
||||
id="tspan4331"
|
||||
sodipodi:role="line">1+F</tspan></text>
|
||||
<path
|
||||
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0dc04b;stroke-width:5.23279285;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 917.38445,644.30596 720.66027,597.47244"
|
||||
id="FlapLine"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:label="#path1103"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
id="FlapDots"
|
||||
inkscape:label="#g4344"
|
||||
|
@ -123,11 +125,11 @@
|
|||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect4346"
|
||||
d="m 636.15001,595.05001 9.50347,-2.225 -1.075,3.72508 -9.90347,2.525 z"
|
||||
d="m 636.16173,590.75725 9.50347,-2.225 -1.075,3.72508 -9.90347,2.525 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 590.60001,606.45001 9.50347,-2.225 -1.075,3.72508 -9.90347,2.525 z"
|
||||
d="m 590.60001,605.24377 9.50347,-2.225 -1.075,3.72508 -9.90347,2.525 z"
|
||||
id="path4349"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
|
@ -139,7 +141,7 @@
|
|||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 821.6363,589.13181 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
d="m 821.6363,592.59471 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
id="path4353"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
|
@ -147,11 +149,11 @@
|
|||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4355"
|
||||
d="m 867.18574,600.69907 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
d="m 867.18574,603.7664 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||
<path
|
||||
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#cecdce;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
||||
d="m 913.00626,612.50775 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
d="m 913.00626,615.19254 -9.50347,-2.225 1.075,3.72508 9.90347,2.525 z"
|
||||
id="path4357"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
|
@ -1632,485 +1634,6 @@
|
|||
y="943.73566"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#cecdce">LINE 8</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="TO_Memo"
|
||||
inkscape:label="#g4517">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4412"
|
||||
y="686.0564"
|
||||
x="14.033532"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="686.0564"
|
||||
x="14.033532"
|
||||
id="tspan4414"
|
||||
sodipodi:role="line">T.O</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#0dc04b;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 13.8216,741.99564 77.932201,0"
|
||||
id="path4556"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="686.0564"
|
||||
id="TO_Autobrake"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4421"
|
||||
x="104.6523"
|
||||
y="686.0564"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">AUTO BRK</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="TO_Signs"
|
||||
y="722.50458"
|
||||
x="104.6523"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="722.50458"
|
||||
x="104.6523"
|
||||
id="tspan4425"
|
||||
sodipodi:role="line">SIGNS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="759.67883"
|
||||
id="TO_Spoilers"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4429"
|
||||
x="104.6523"
|
||||
y="759.67883"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">SPLRS</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="TO_Flaps"
|
||||
y="796.12726"
|
||||
x="104.6523"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="796.12726"
|
||||
x="104.6523"
|
||||
id="tspan4436"
|
||||
sodipodi:role="line">FLAPS </tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="833.30151"
|
||||
id="TO_Config"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4440"
|
||||
x="104.6523"
|
||||
y="833.30151"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">T.O CONFIG</tspan></text>
|
||||
<g
|
||||
inkscape:label="#g4487"
|
||||
id="TO_Autobrake_B">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="686.41925"
|
||||
id="text4442"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4444"
|
||||
x="489.9281"
|
||||
y="686.41925"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">MAX</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4462"
|
||||
y="686.41925"
|
||||
x="403.6488"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="686.41925"
|
||||
x="403.6488"
|
||||
id="tspan4465"
|
||||
sodipodi:role="line">. . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4493"
|
||||
id="TO_Signs_B">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4446"
|
||||
y="722.50458"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="722.50458"
|
||||
x="489.9281"
|
||||
id="tspan4448"
|
||||
sodipodi:role="line"> ON</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="424.27417"
|
||||
y="722.86768"
|
||||
id="text4471"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:transform-center-y="-46.367479"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4473"
|
||||
x="424.27417"
|
||||
y="722.86768"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4499"
|
||||
id="TO_Spoilers_B">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="760.04193"
|
||||
id="text4450"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4452"
|
||||
x="489.9281"
|
||||
y="760.04193"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">ARM</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="403.6488"
|
||||
y="760.04193"
|
||||
id="text4475"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4477"
|
||||
x="403.6488"
|
||||
y="760.04193"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4505"
|
||||
id="TO_Flaps_B">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4454"
|
||||
y="796.12726"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="796.12726"
|
||||
x="489.9281"
|
||||
id="tspan4456"
|
||||
sodipodi:role="line">T.O</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="424.27417"
|
||||
y="796.49036"
|
||||
id="text4479"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4481"
|
||||
x="424.27417"
|
||||
y="796.49036"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4511"
|
||||
id="TO_Config_B">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="833.30151"
|
||||
id="text4458"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4460"
|
||||
x="489.9281"
|
||||
y="833.30151"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">TEST</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4483"
|
||||
y="833.66461"
|
||||
x="383.02429"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="833.66461"
|
||||
x="383.02429"
|
||||
id="tspan4485"
|
||||
sodipodi:role="line">. . .</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4517"
|
||||
id="LDG_Memo">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="14.033532"
|
||||
y="686.0564"
|
||||
id="text4418"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4422"
|
||||
x="14.033532"
|
||||
y="686.0564"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">LDG</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4424"
|
||||
d="m 13.8216,741.99564 77.932201,0"
|
||||
style="fill:none;stroke:#0dc04b;stroke-width:2.4000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="LDG_Gear"
|
||||
y="686.0564"
|
||||
x="104.6523"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="686.0564"
|
||||
x="104.6523"
|
||||
id="tspan4428"
|
||||
sodipodi:role="line">LDG GEAR</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="722.50458"
|
||||
id="LDG_Signs"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4432"
|
||||
x="104.6523"
|
||||
y="722.50458"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">SIGNS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="759.37872"
|
||||
id="LDG_Cabin"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4455"
|
||||
x="104.6523"
|
||||
y="759.37872"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">CABIN READY</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="LDG_Spoilers"
|
||||
y="796.12726"
|
||||
x="104.6523"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1"
|
||||
y="796.12726"
|
||||
x="104.6523"
|
||||
id="tspan4438"
|
||||
sodipodi:role="line">SPLRS</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="104.6523"
|
||||
y="833.30151"
|
||||
id="LDG_Flaps"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4442"
|
||||
x="104.6523"
|
||||
y="833.30151"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1">FLAPS </tspan></text>
|
||||
<g
|
||||
id="LDG_Gear_B"
|
||||
inkscape:label="#g4487">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4451"
|
||||
y="686.41925"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="686.41925"
|
||||
x="489.9281"
|
||||
id="tspan4453"
|
||||
sodipodi:role="line">DN</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="424.27417"
|
||||
y="686.41925"
|
||||
id="text4455"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4457"
|
||||
x="424.27417"
|
||||
y="686.41925"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="LDG_Signs_B"
|
||||
inkscape:label="#g4493">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="722.50458"
|
||||
id="text4461"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4463"
|
||||
x="489.9281"
|
||||
y="722.50458"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"> ON</tspan></text>
|
||||
<text
|
||||
inkscape:transform-center-y="-46.367479"
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4465"
|
||||
y="722.86768"
|
||||
x="424.27417"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="722.86768"
|
||||
x="424.27417"
|
||||
id="tspan4467"
|
||||
sodipodi:role="line">. . . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="LDG_Spoilers_B"
|
||||
inkscape:label="#g4499">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4472"
|
||||
y="796.49036"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="796.49036"
|
||||
x="489.9281"
|
||||
id="tspan4474"
|
||||
sodipodi:role="line">ARM</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4476"
|
||||
y="796.49036"
|
||||
x="403.6488"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="796.49036"
|
||||
x="403.6488"
|
||||
id="tspan4478"
|
||||
sodipodi:role="line">. . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="LDG_Flaps_B"
|
||||
inkscape:label="#g4505"
|
||||
transform="translate(0,39.990378)">
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="489.9281"
|
||||
y="796.12726"
|
||||
id="text4482"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4484"
|
||||
x="489.9281"
|
||||
y="796.12726"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">FULL</tspan></text>
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text4486"
|
||||
y="796.49036"
|
||||
x="383.02411"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="796.49036"
|
||||
x="383.02411"
|
||||
id="tspan4488"
|
||||
sodipodi:role="line">. . . . . . . .</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4505"
|
||||
id="LDG_Flaps_B3">
|
||||
<text
|
||||
transform="scale(0.92957935,1.0757554)"
|
||||
inkscape:label="#text4314"
|
||||
id="text5125"
|
||||
y="833.30151"
|
||||
x="489.9281"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1"
|
||||
y="833.30151"
|
||||
x="489.9281"
|
||||
id="tspan5127"
|
||||
sodipodi:role="line">3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
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:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="465.52426"
|
||||
y="833.66461"
|
||||
id="text5129"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.92957935,1.0757554)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5131"
|
||||
x="465.52426"
|
||||
y="833.66461"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.1831665px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1">. . . . . . . . . . . .</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
inkscape:label="#g4376"
|
||||
id="ECAM_Right"
|
||||
|
@ -2220,4 +1743,57 @@
|
|||
id="tspan1162"
|
||||
sodipodi:role="line">LINE 8</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:'Liberation Sabs';-inkscape-font-specification:'Liberation Sabs';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
x="650.08069"
|
||||
y="575.68427"
|
||||
id="SlatAlphaLock"
|
||||
inkscape:label="#text4800"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4798"
|
||||
x="650.08069"
|
||||
y="575.68427"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.25px;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75">A-LOCK</tspan></text>
|
||||
<path
|
||||
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0dc04b;stroke-width:5.44862556;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
d="M 555.26245,639.8335 691.24239,597.33411"
|
||||
id="SlatLine"
|
||||
inkscape:original-d="m 555.22993,639.86602 135.34892,-43.9598"
|
||||
inkscape:label="#path1119"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
id="path4447"
|
||||
style="fill:none;fill-rule:evenodd;stroke:#575757;stroke-width:5.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
|
||||
d="m 718.11442,596.89138 11.4047,16.81213 m -35.92874,-17.24909 -11.09346,15.41269 m 11.13785,-15.41241 24.43715,0.41241 m -35.5703,14.98787 47.0582,1.94289"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0dc04b;stroke-width:5.2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||
d="m 928.84849,661.23101 -11.44541,-16.90649 38.53701,7.25587 v 15.15993 l -27.0916,-5.50931"
|
||||
id="FlapIndicator"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:label="#path1093" />
|
||||
<path
|
||||
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0dc04b;stroke-width:5.2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
|
||||
d="m 530.43575,645.52404 24.69434,-5.55908 -11.10498,15.46142 -24.69434,5.56055 z"
|
||||
id="SlatIndicator"
|
||||
inkscape:label="#path1114" />
|
||||
<rect
|
||||
style="opacity:0.5;fill:none;fill-opacity:1;stroke:none;stroke-width:4.08072662;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
|
||||
id="FlapLine_clip"
|
||||
width="195.52469"
|
||||
height="50.843338"
|
||||
x="718.86694"
|
||||
y="594.42938"
|
||||
inkscape:label="#rect1023" />
|
||||
<rect
|
||||
inkscape:label="#rect1023"
|
||||
y="594.05438"
|
||||
x="554.93781"
|
||||
height="48.089657"
|
||||
width="137.63597"
|
||||
id="SlatLine_clip"
|
||||
style="opacity:0.5;fill:none;fill-opacity:1;stroke:none;stroke-width:3.34691048;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 109 KiB |
|
@ -1,6 +1,6 @@
|
|||
AC3Db
|
||||
MATERIAL "ac3dmat0" rgb 0 0 0 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.2 0.2 0.2 shi 128 trans 0
|
||||
MATERIAL "ac3dmat1" rgb 1 1 1 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.2 0.2 0.2 shi 128 trans 0
|
||||
MATERIAL "ac3dmat0" rgb 0 0 0 amb 0.0 0.0 0.0 emis 0 0 0 spec 1.0 1.0 1.0 shi 128 trans 0
|
||||
MATERIAL "ac3dmat1" rgb 1 1 1 amb 1.0 1.0 1.0 emis 0 0 0 spec 1.0 1.0 1.0 shi 128 trans 0
|
||||
MATERIAL "ac3dmat13" rgb 0.533333 0.533333 0.533333 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.2 0.2 0.2 shi 128 trans 0
|
||||
OBJECT world
|
||||
kids 2
|
||||
|
|
|
@ -26,7 +26,7 @@ var _unitconv = M2FT / 3.6;
|
|||
var _debug = nil;
|
||||
|
||||
var _loop = func() {
|
||||
if (!getprop("sim/model/autopush/available")) {
|
||||
if (!getprop("/sim/model/autopush/available")) {
|
||||
_stop();
|
||||
return;
|
||||
}
|
||||
|
@ -37,9 +37,9 @@ var _loop = func() {
|
|||
# Rollspeed is only adequate if the wheel is touching the ground.
|
||||
if (getprop("gear/gear[0]/wow")) {
|
||||
var V = getprop("gear/gear[0]/rollspeed-ms") * 3.6;
|
||||
var deltaV = getprop("sim/model/autopush/target-speed-km_h") - V;
|
||||
var deltaV = getprop("/sim/model/autopush/target-speed-km_h") - V;
|
||||
var minus_dV = _V - V;
|
||||
var time = getprop("sim/time/elapsed-sec");
|
||||
var time = getprop("/sim/time/elapsed-sec");
|
||||
var prop = math.min(math.max(_K_p * deltaV, -_F_p), _F_p);
|
||||
var dt = time - _time;
|
||||
var deriv = 0.0;
|
||||
|
@ -63,24 +63,24 @@ var _loop = func() {
|
|||
} else {
|
||||
force = accel * getprop("fdm/yasim/gross-weight-lbs") * _unitconv;
|
||||
}
|
||||
var pitch = getprop("sim/model/autopush/pitch-deg") * D2R;
|
||||
var pitch = getprop("/sim/model/autopush/pitch-deg") * D2R;
|
||||
z = math.sin(pitch);
|
||||
var pz = math.cos(pitch);
|
||||
var yaw = getprop("sim/model/autopush/yaw") * _K_yaw;
|
||||
var yaw = getprop("/sim/model/autopush/yaw") * _K_yaw;
|
||||
x = math.cos(yaw) * pz;
|
||||
y = math.sin(yaw) * pz;
|
||||
setprop("sim/model/autopush/force-x", x);
|
||||
setprop("sim/model/autopush/force-y", y);
|
||||
setprop("/sim/model/autopush/force-x", x);
|
||||
setprop("/sim/model/autopush/force-y", y);
|
||||
# JSBSim force's z is down.
|
||||
setprop("sim/model/autopush/force-z", -z);
|
||||
setprop("/sim/model/autopush/force-z", -z);
|
||||
}
|
||||
setprop("sim/model/autopush/force-lbf", force);
|
||||
setprop("/sim/model/autopush/force-lbf", force);
|
||||
if (_yasim) {
|
||||
# The force is divided by YASim thrust="100000.0" setting.
|
||||
setprop("sim/model/autopush/force-x-yasim", x * force * 0.00001);
|
||||
setprop("/sim/model/autopush/force-x-yasim", x * force * 0.00001);
|
||||
# YASim force's y is to the left.
|
||||
setprop("sim/model/autopush/force-y-yasim", -y * force * 0.00001);
|
||||
setprop("sim/model/autopush/force-z-yasim", z * force * 0.00001);
|
||||
setprop("/sim/model/autopush/force-y-yasim", -y * force * 0.00001);
|
||||
setprop("/sim/model/autopush/force-z-yasim", z * force * 0.00001);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,26 +89,26 @@ var _timer = maketimer(0.0167, func{_loop()});
|
|||
var _start = func() {
|
||||
# Else overwritten by dialog.
|
||||
settimer(func() {
|
||||
setprop("sim/model/autopush/target-speed-km_h", 0.0)
|
||||
setprop("/sim/model/autopush/target-speed-km_h", 0.0)
|
||||
}, 0.1);
|
||||
_K_p = getprop("sim/model/autopush/K_p");
|
||||
_F_p = getprop("sim/model/autopush/F_p");
|
||||
_K_i = getprop("sim/model/autopush/K_i");
|
||||
_F_i = getprop("sim/model/autopush/F_i");
|
||||
_K_d = getprop("sim/model/autopush/K_d");
|
||||
_F_d = getprop("sim/model/autopush/F_d");
|
||||
_F = getprop("sim/model/autopush/F");
|
||||
_T_f = getprop("sim/model/autopush/T_f");
|
||||
_K_yaw = getprop("sim/model/autopush/yaw-mult") * D2R;
|
||||
_yasim = (getprop("sim/flight-model") == "yasim");
|
||||
_debug = getprop("sim/model/autopush/debug") or 0;
|
||||
_K_p = getprop("/sim/model/autopush/K_p");
|
||||
_F_p = getprop("/sim/model/autopush/F_p");
|
||||
_K_i = getprop("/sim/model/autopush/K_i");
|
||||
_F_i = getprop("/sim/model/autopush/F_i");
|
||||
_K_d = getprop("/sim/model/autopush/K_d");
|
||||
_F_d = getprop("/sim/model/autopush/F_d");
|
||||
_F = getprop("/sim/model/autopush/F");
|
||||
_T_f = getprop("/sim/model/autopush/T_f");
|
||||
_K_yaw = getprop("/sim/model/autopush/yaw-mult") * D2R;
|
||||
_yasim = (getprop("/sim/flight-model") == "yasim");
|
||||
_debug = getprop("/sim/model/autopush/debug") or 0;
|
||||
_int = 0.0;
|
||||
_V = 0.0;
|
||||
_time = getprop("sim/time/elapsed-sec");
|
||||
setprop("sim/model/autopush/connected", 1);
|
||||
_time = getprop("/sim/time/elapsed-sec");
|
||||
setprop("/sim/model/autopush/connected", 1);
|
||||
if (!_timer.isRunning) {
|
||||
if (getprop("sim/model/autopush/chocks")) {
|
||||
setprop("sim/model/autopush/chocks", 0);
|
||||
if (getprop("/sim/model/autopush/chocks")) {
|
||||
setprop("/sim/model/autopush/chocks", 0);
|
||||
screen.log.write("(pushback): Pushback connected, chocks removed. Please release brakes.");
|
||||
} else {
|
||||
screen.log.write("(pushback): Pushback connected, please release brakes.");
|
||||
|
@ -122,18 +122,18 @@ var _stop = func() {
|
|||
screen.log.write("(pushback): Pushback and bypass pin removed.");
|
||||
}
|
||||
_timer.stop();
|
||||
setprop("sim/model/autopush/force-lbf", 0.0);
|
||||
setprop("/sim/model/autopush/force-lbf", 0.0);
|
||||
if (_yasim) {
|
||||
setprop("sim/model/autopush/force-x-yasim", 0.0);
|
||||
setprop("sim/model/autopush/force-y-yasim", 0.0);
|
||||
setprop("/sim/model/autopush/force-x-yasim", 0.0);
|
||||
setprop("/sim/model/autopush/force-y-yasim", 0.0);
|
||||
}
|
||||
setprop("sim/model/autopush/connected", 0);
|
||||
setprop("sim/model/autopush/enabled", 0);
|
||||
setprop("/sim/model/autopush/connected", 0);
|
||||
setprop("/sim/model/autopush/enabled", 0);
|
||||
}
|
||||
|
||||
setlistener("/sim/model/autopush/enabled", func(p) {
|
||||
var enabled = p.getValue();
|
||||
if ((enabled) and getprop("sim/model/autopush/available")) {
|
||||
if ((enabled) and getprop("/sim/model/autopush/available")) {
|
||||
_start();
|
||||
} else {
|
||||
_stop();
|
||||
|
|
|
@ -46,7 +46,7 @@ var _advance_wp = func(flip_sign = 0) {
|
|||
}
|
||||
|
||||
var _loop = func() {
|
||||
if (!getprop("sim/model/autopush/connected")) {
|
||||
if (!getprop("/sim/model/autopush/connected")) {
|
||||
stop();
|
||||
return;
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ var _loop = func() {
|
|||
var deltapsi = geo.normdeg180(A - psi_leg);
|
||||
var psi = getprop("orientation/heading-deg") + _push * 180.0;
|
||||
var deltaA = math.min(math.max(_K_psi * geo.normdeg180(A - psi), -_F_psi), _F_psi);
|
||||
var time = getprop("sim/time/elapsed-sec");
|
||||
var time = getprop("/sim/time/elapsed-sec");
|
||||
var dt = time - _time;
|
||||
var minus_psidot = (dt > 0.002) * math.min(math.max(_K_psidot * (_psi - psi) / dt, -_F_psidot), _F_psidot);
|
||||
_psi = psi;
|
||||
|
@ -83,8 +83,8 @@ var _loop = func() {
|
|||
if (_debug > 1) {
|
||||
print("autopush_driver to_wp " ~ _to_wp ~ ", A " ~ geo.normdeg(A) ~ ", deltaA " ~ deltaA ~ ", minus_psidot " ~ minus_psidot);
|
||||
}
|
||||
setprop("sim/model/autopush/target-speed-km_h", _sign * V);
|
||||
setprop("sim/model/autopush/steer-cmd-norm", steering);
|
||||
setprop("/sim/model/autopush/target-speed-km_h", _sign * V);
|
||||
setprop("/sim/model/autopush/steer-cmd-norm", steering);
|
||||
}
|
||||
|
||||
var _timer = maketimer(0.051, func{_loop()});
|
||||
|
@ -100,7 +100,7 @@ var start = func() {
|
|||
gui.popupTip("Already moving");
|
||||
return;
|
||||
}
|
||||
if (!getprop("sim/model/autopush/connected")) {
|
||||
if (!getprop("/sim/model/autopush/connected")) {
|
||||
gui.popupTip("Pushback not connected");
|
||||
return;
|
||||
}
|
||||
|
@ -112,15 +112,15 @@ var start = func() {
|
|||
} else {
|
||||
autopush_route.done();
|
||||
}
|
||||
_K_V = getprop("sim/model/autopush/driver/K_V");
|
||||
_F_V = getprop("sim/model/autopush/driver/F_V");
|
||||
_R_turn_min = getprop("sim/model/autopush/min-turn-radius-m");
|
||||
_D_stop = getprop("sim/model/autopush/stopping-distance-m");
|
||||
_K_psi = getprop("sim/model/autopush/driver/K_psi");
|
||||
_F_psi = getprop("sim/model/autopush/driver/F_psi");
|
||||
_K_psidot = getprop("sim/model/autopush/driver/K_psidot");
|
||||
_F_psidot = getprop("sim/model/autopush/driver/F_psidot");
|
||||
_debug = getprop("sim/model/autopush/debug") or 0;
|
||||
_K_V = getprop("/sim/model/autopush/driver/K_V");
|
||||
_F_V = getprop("/sim/model/autopush/driver/F_V");
|
||||
_R_turn_min = getprop("/sim/model/autopush/min-turn-radius-m");
|
||||
_D_stop = getprop("/sim/model/autopush/stopping-distance-m");
|
||||
_K_psi = getprop("/sim/model/autopush/driver/K_psi");
|
||||
_F_psi = getprop("/sim/model/autopush/driver/F_psi");
|
||||
_K_psidot = getprop("/sim/model/autopush/driver/K_psidot");
|
||||
_F_psidot = getprop("/sim/model/autopush/driver/F_psidot");
|
||||
_debug = getprop("/sim/model/autopush/debug") or 0;
|
||||
if (!_to_wp) {
|
||||
var (psi_park, D_park) = courseAndDistance(_route[0], _route[1]);
|
||||
_push = (abs(geo.normdeg180(getprop("orientation/heading-deg") - psi_park)) > 90.0);
|
||||
|
@ -128,7 +128,7 @@ var start = func() {
|
|||
_advance_wp();
|
||||
_psi = 0.0;
|
||||
}
|
||||
_time = getprop("sim/time/elapsed-sec");
|
||||
_time = getprop("/sim/time/elapsed-sec");
|
||||
_timer.start();
|
||||
var endsign = _sign;
|
||||
for (ii = _to_wp; ii < size(_route_reverse); ii += 1) {
|
||||
|
@ -146,7 +146,7 @@ var start = func() {
|
|||
|
||||
var pause = func() {
|
||||
_timer.stop();
|
||||
setprop("sim/model/autopush/target-speed-km_h", 0.0);
|
||||
setprop("/sim/model/autopush/target-speed-km_h", 0.0);
|
||||
}
|
||||
|
||||
var stop = func() {
|
||||
|
|
|
@ -29,7 +29,7 @@ var _R_turn_min = 0;
|
|||
var _invalid = 0;
|
||||
|
||||
# Make top-down view point north in old FG.
|
||||
var __fg_version = num(string.replace(getprop("sim/version/flightgear"),".",""));
|
||||
var __fg_version = num(string.replace(getprop("/sim/version/flightgear"),".",""));
|
||||
if (__fg_version < 201920) {
|
||||
_top_view_heading_offset_deg = 94.5;
|
||||
}
|
||||
|
@ -144,14 +144,14 @@ var top_view = func() {
|
|||
return;
|
||||
}
|
||||
_top_view_index = view.indexof("Chase View Without Yaw");
|
||||
_reset_view_index = getprop("sim/current-view/view-number");
|
||||
setprop("sim/current-view/view-number", _top_view_index);
|
||||
_view_pitch_offset_deg = getprop("sim/current-view/pitch-offset-deg");
|
||||
_view_heading_offset_deg = getprop("sim/current-view/heading-offset-deg");
|
||||
_view_z_offset = getprop("sim/current-view/z-offset-m");
|
||||
setprop("sim/current-view/z-offset-m", -500.0);
|
||||
setprop("sim/current-view/heading-offset-deg", _top_view_heading_offset_deg);
|
||||
setprop("sim/current-view/pitch-offset-deg", 90.0);
|
||||
_reset_view_index = getprop("/sim/current-view/view-number");
|
||||
setprop("/sim/current-view/view-number", _top_view_index);
|
||||
_view_pitch_offset_deg = getprop("/sim/current-view/pitch-offset-deg");
|
||||
_view_heading_offset_deg = getprop("/sim/current-view/heading-offset-deg");
|
||||
_view_z_offset = getprop("/sim/current-view/z-offset-m");
|
||||
setprop("/sim/current-view/z-offset-m", -500.0);
|
||||
setprop("/sim/current-view/heading-offset-deg", _top_view_heading_offset_deg);
|
||||
setprop("/sim/current-view/pitch-offset-deg", 90.0);
|
||||
_view_listener = setlistener("/sim/current-view/name", func {
|
||||
_finalize_top_view();
|
||||
}, 0, 0);
|
||||
|
@ -164,11 +164,11 @@ var _finalize_top_view = func() {
|
|||
removelistener(_view_listener);
|
||||
_view_listener = nil;
|
||||
# Go back to the view to restore settings, in case user has switched away.
|
||||
setprop("sim/current-view/view-number", _top_view_index);
|
||||
setprop("sim/current-view/z-offset-m", _view_z_offset);
|
||||
setprop("sim/current-view/heading-offset-deg", _view_heading_offset_deg);
|
||||
setprop("sim/current-view/pitch-offset-deg", _view_pitch_offset_deg);
|
||||
setprop("sim/current-view/view-number", _reset_view_index);
|
||||
setprop("/sim/current-view/view-number", _top_view_index);
|
||||
setprop("/sim/current-view/z-offset-m", _view_z_offset);
|
||||
setprop("/sim/current-view/heading-offset-deg", _view_heading_offset_deg);
|
||||
setprop("/sim/current-view/pitch-offset-deg", _view_pitch_offset_deg);
|
||||
setprop("/sim/current-view/view-number", _reset_view_index);
|
||||
if (!_show) {
|
||||
_clear_user_point_models();
|
||||
_clear_waypoint_models();
|
||||
|
@ -330,7 +330,7 @@ var _check_turn_radius = func() {
|
|||
}
|
||||
}
|
||||
|
||||
setprop("sim/model/autopush/route/invalid", _invalid);
|
||||
setprop("/sim/model/autopush/route/invalid", _invalid);
|
||||
}
|
||||
|
||||
setlistener("/sim/model/autopush/route/show", func(p) {
|
||||
|
@ -351,7 +351,7 @@ setlistener("/sim/model/autopush/route/show", func(p) {
|
|||
var enter = func() {
|
||||
clear();
|
||||
top_view();
|
||||
_R_turn_min = getprop("sim/model/autopush/min-turn-radius-m");
|
||||
_R_turn_min = getprop("/sim/model/autopush/min-turn-radius-m");
|
||||
var wp = geo.aircraft_position();
|
||||
var H = geo.elevation(wp.lat(), wp.lon());
|
||||
if (H != nil) {
|
||||
|
@ -362,7 +362,7 @@ var enter = func() {
|
|||
_add(geo.click_position());
|
||||
});
|
||||
# This property can be overridden manually, if needed.
|
||||
var wingspan = getprop("sim/model/autopush/route/wingspan-m");
|
||||
var wingspan = getprop("/sim/model/autopush/route/wingspan-m");
|
||||
if ((wingspan == nil) or (wingspan == 0.0)) {
|
||||
# JSBSim
|
||||
wingspan = getprop("fdm/jsbsim/metrics/bw-ft");
|
||||
|
@ -372,7 +372,7 @@ var enter = func() {
|
|||
# YAsim
|
||||
wingspan = getprop("fdm/yasim/model/wings/wing/wing-span");
|
||||
}
|
||||
setprop("sim/model/autopush/route/wingspan-m", wingspan);
|
||||
setprop("/sim/model/autopush/route/wingspan-m", wingspan);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,21 +7,17 @@ var DMC = {
|
|||
_set: 0,
|
||||
_setNil: 0,
|
||||
|
||||
activeADIRS: -9,
|
||||
|
||||
airspeeds: [props.globals.getNode("systems/navigation/adr/output/cas-1", 1), props.globals.getNode("systems/navigation/adr/output/cas-2", 1), props.globals.getNode("systems/navigation/adr/output/cas-3", 1)],
|
||||
altitudes: [props.globals.getNode("systems/navigation/adr/output/baro-alt-corrected-1-capt", 1), props.globals.getNode("systems/navigation/adr/output/baro-alt-corrected-2-capt", 1), props.globals.getNode("systems/navigation/adr/output/baro-alt-corrected-3-capt", 1)],
|
||||
machs: [props.globals.getNode("systems/navigation/adr/output/mach-1", 1), props.globals.getNode("systems/navigation/adr/output/mach-2", 1), props.globals.getNode("systems/navigation/adr/output/mach-3", 1)],
|
||||
altitudesPfd: [props.globals.getNode("instrumentation/altimeter[0]/indicated-altitude-ft-pfd", 1), props.globals.getNode("instrumentation/altimeter[1]/indicated-altitude-ft-pfd", 1), props.globals.getNode("instrumentation/altimeter[2]/indicated-altitude-ft-pfd", 1)],
|
||||
sats: [props.globals.getNode("systems/navigation/adr/output/sat-1", 1), props.globals.getNode("systems/navigation/adr/output/sat-2", 1), props.globals.getNode("systems/navigation/adr/output/sat-3", 1)],
|
||||
tats: [props.globals.getNode("systems/navigation/adr/output/tat-1", 1), props.globals.getNode("systems/navigation/adr/output/tat-2", 1), props.globals.getNode("systems/navigation/adr/output/tat-3", 1)],
|
||||
trends: [props.globals.getNode("instrumentation/pfd/speed-lookahead-1", 1), props.globals.getNode("instrumentation/pfd/speed-lookahead-2", 1), props.globals.getNode("instrumentation/pfd/speed-lookahead-3", 1)],
|
||||
outputs: [nil, nil, nil, nil, nil, nil, nil], # airspeed, altitude, mach, pfd altitude, sat, tat, speed trend
|
||||
|
||||
new: func(num) {
|
||||
var d = { parents:[DMC] };
|
||||
d.activeADIRS = num;
|
||||
d.outputs = [nil, nil, nil, nil, nil, nil, nil];
|
||||
d.airspeeds = [props.globals.getNode("/systems/navigation/adr/output/cas-1", 1), props.globals.getNode("/systems/navigation/adr/output/cas-2", 1), props.globals.getNode("/systems/navigation/adr/output/cas-3", 1)];
|
||||
d.altitudes = [props.globals.getNode("/systems/navigation/adr/output/baro-alt-corrected-1-capt", 1), props.globals.getNode("/systems/navigation/adr/output/baro-alt-corrected-2-capt", 1), props.globals.getNode("/systems/navigation/adr/output/baro-alt-corrected-3-capt", 1)];
|
||||
d.machs = [props.globals.getNode("/systems/navigation/adr/output/mach-1", 1), props.globals.getNode("/systems/navigation/adr/output/mach-2", 1), props.globals.getNode("/systems/navigation/adr/output/mach-3", 1)];
|
||||
d.altitudesPfd = [props.globals.getNode("instrumentation/altimeter[0]/indicated-altitude-ft-pfd", 1), props.globals.getNode("instrumentation/altimeter[1]/indicated-altitude-ft-pfd", 1), props.globals.getNode("instrumentation/altimeter[2]/indicated-altitude-ft-pfd", 1)];
|
||||
d.sats = [props.globals.getNode("/systems/navigation/adr/output/sat-1", 1), props.globals.getNode("/systems/navigation/adr/output/sat-2", 1), props.globals.getNode("/systems/navigation/adr/output/sat-3", 1)];
|
||||
d.tats = [props.globals.getNode("/systems/navigation/adr/output/tat-1", 1), props.globals.getNode("/systems/navigation/adr/output/tat-2", 1), props.globals.getNode("/systems/navigation/adr/output/tat-3", 1)];
|
||||
d.trends = [props.globals.getNode("instrumentation/pfd/speed-lookahead-1", 1), props.globals.getNode("instrumentation/pfd/speed-lookahead-2", 1), props.globals.getNode("instrumentation/pfd/speed-lookahead-3", 1)];
|
||||
d.outputs = [nil, nil, nil, nil, nil, nil, nil]; # airspeed, altitude, mach, pfd altitude, sat, tat, speed trend
|
||||
return d;
|
||||
},
|
||||
changeActiveADIRS: func(newADIRS) {
|
||||
|
@ -74,7 +70,7 @@ var DMController = {
|
|||
me.DMCs = [DMC.new(0), DMC.new(1), DMC.new(2)];
|
||||
|
||||
# update DMC2 to correct properties for first officer PFD
|
||||
me.DMCs[1].altitudes = [props.globals.getNode("systems/navigation/adr/output/baro-alt-corrected-1-fo", 1), props.globals.getNode("systems/navigation/adr/output/baro-alt-corrected-2-fo", 1), props.globals.getNode("systems/navigation/adr/output/baro-alt-corrected-3-fo", 1)];
|
||||
me.DMCs[1].altitudes = [props.globals.getNode("/systems/navigation/adr/output/baro-alt-corrected-1-fo", 1), props.globals.getNode("/systems/navigation/adr/output/baro-alt-corrected-2-fo", 1), props.globals.getNode("/systems/navigation/adr/output/baro-alt-corrected-3-fo", 1)];
|
||||
me.DMCs[1].altitudesPfd = [props.globals.getNode("instrumentation/altimeter[3]/indicated-altitude-ft-pfd", 1), props.globals.getNode("instrumentation/altimeter[4]/indicated-altitude-ft-pfd", 1), props.globals.getNode("instrumentation/altimeter[5]/indicated-altitude-ft-pfd", 1)];
|
||||
|
||||
me._init = 1;
|
||||
|
|
|
@ -12,10 +12,10 @@ var leftOverflow = props.globals.initNode("/ECAM/warnings/overflow-left", 0, "B
|
|||
var rightOverflow = props.globals.initNode("/ECAM/warnings/overflow-right", 0, "BOOL");
|
||||
var overflow = props.globals.initNode("/ECAM/warnings/overflow", 0, "BOOL");
|
||||
|
||||
var dc_ess = props.globals.getNode("systems/electrical/bus/dc-ess", 1);
|
||||
var dc_ess = props.globals.getNode("/systems/electrical/bus/dc-ess", 1);
|
||||
|
||||
var lights = [props.globals.initNode("/ECAM/warnings/master-warning-light", 0, "BOOL"), props.globals.initNode("/ECAM/warnings/master-caution-light", 0, "BOOL")];
|
||||
var aural = [props.globals.initNode("/sim/sound/warnings/crc", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/chime", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/cricket", 0, "BOOL")];
|
||||
var aural = [props.globals.initNode("/sim/sound/warnings/crc", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/chime", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/cricket", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/retard", 0, "BOOL")];
|
||||
var warningFlash = props.globals.initNode("/ECAM/warnings/master-warning-flash", 0, "BOOL");
|
||||
|
||||
var lineIndex = 0;
|
||||
|
@ -29,6 +29,95 @@ var counter = 0;
|
|||
var noMainMsg = 0;
|
||||
var storeFirstWarning = nil;
|
||||
|
||||
var warningNodes = {
|
||||
Logic: {
|
||||
crossbleedFault: props.globals.initNode("/ECAM/warnings/logic/crossbleed-fault"),
|
||||
crossbleedWai: props.globals.initNode("/ECAM/warnings/logic/crossbleed-wai"),
|
||||
bleed1LoTempUnsuc: props.globals.initNode("/ECAM/warnings/logic/bleed-1-lo-temp-unsucc"),
|
||||
bleed1LoTempXbleed: props.globals.initNode("/ECAM/warnings/logic/bleed-1-lo-temp-xbleed"),
|
||||
bleed1LoTempBleed: props.globals.initNode("/ECAM/warnings/logic/bleed-1-lo-temp-bleed"),
|
||||
bleed1LoTempPack: props.globals.initNode("/ECAM/warnings/logic/bleed-1-lo-temp-pack"),
|
||||
bleed1WaiAvail: props.globals.initNode("/ECAM/warnings/logic/bleed-1-wai-avail"),
|
||||
bleed2LoTempUnsuc: props.globals.initNode("/ECAM/warnings/logic/bleed-2-lo-temp-unsucc"),
|
||||
bleed2LoTempXbleed: props.globals.initNode("/ECAM/warnings/logic/bleed-2-lo-temp-xbleed"),
|
||||
bleed2LoTempBleed: props.globals.initNode("/ECAM/warnings/logic/bleed-2-lo-temp-bleed"),
|
||||
bleed2LoTempPack: props.globals.initNode("/ECAM/warnings/logic/bleed-2-lo-temp-pack"),
|
||||
bleed2WaiAvail: props.globals.initNode("/ECAM/warnings/logic/bleed-2-wai-avail"),
|
||||
waiSysfault: props.globals.initNode("/ECAM/warnings/logic/wing-anti-ice-sys-fault"),
|
||||
waiLclosed: props.globals.initNode("/ECAM/warnings/flipflop/wing-anti-ice-left-closed"),
|
||||
waiRclosed: props.globals.initNode("/ECAM/warnings/flipflop/wing-anti-ice-right-closed"),
|
||||
procWaiShutdown: props.globals.initNode("/ECAM/warnings/logic/proc-wai-shutdown-output"),
|
||||
waiGndFlight: props.globals.initNode("/ECAM/warnings/logic/wing-anti-ice-gnd-fault"),
|
||||
pack12Fault: props.globals.initNode("/ECAM/warnings/logic/pack-1-2-fault"),
|
||||
pack1ResetPb: props.globals.initNode("/ECAM/warnings/logic/reset-pack-1-switch-cmd"),
|
||||
pack2ResetPb: props.globals.initNode("/ECAM/warnings/logic/reset-pack-2-switch-cmd"),
|
||||
cabinFans: props.globals.initNode("/ECAM/warnings/logic/cabin-fans-fault"),
|
||||
rtlu1Fault: props.globals.initNode("/ECAM/warnings/logic/rud-trav-lim-sys-1-fault"),
|
||||
rtlu2Fault: props.globals.initNode("/ECAM/warnings/logic/rud-trav-lim-sys-2-fault"),
|
||||
rtlu12Fault: props.globals.initNode("/ECAM/warnings/logic/rud-trav-lim-sys-fault"),
|
||||
fac12Fault: props.globals.initNode("/ECAM/warnings/logic/fac-12-fault"),
|
||||
fac1Fault: props.globals.initNode("/ECAM/warnings/logic/fac-1-fault"),
|
||||
fac2Fault: props.globals.initNode("/ECAM/warnings/logic/fac-2-fault"),
|
||||
stallWarn: props.globals.initNode("/ECAM/warnings/logic/stall/stall-warn-on"),
|
||||
yawDamper12Fault: props.globals.initNode("/ECAM/warnings/logic/yaw-damper-12-fault"),
|
||||
gearNotDown1: props.globals.initNode("/ECAM/warnings/fctl/gear-not-down-not-cancellable"),
|
||||
gearNotDown2: props.globals.initNode("/ECAM/warnings/fctl/gear-not-down-cancellable"),
|
||||
gearNotDownLocked: props.globals.initNode("/ECAM/warnings/fctl/gear-not-down-locked"),
|
||||
gearNotDownLockedFlipflop: props.globals.initNode("/ECAM/warnings/fctl/gear-not-downlocked-output"),
|
||||
blueGreen: props.globals.initNode("/ECAM/warnings/hyd/blue-green-failure"),
|
||||
blueGreenFuel: props.globals.initNode("/ECAM/warnings/hyd/blue-green-fuel-consumpt"),
|
||||
blueYellow: props.globals.initNode("/ECAM/warnings/hyd/blue-yellow-failure"),
|
||||
blueYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/blue-yellow-fuel-consumpt"),
|
||||
greenYellow: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-failure"),
|
||||
greenYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-fuel-consumpt"),
|
||||
},
|
||||
Timers: {
|
||||
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),
|
||||
bleed1Fault: props.globals.initNode("/ECAM/warnings/timer/bleed-1-fault"),
|
||||
bleed1FaultOutput: props.globals.initNode("/ECAM/warnings/timer/bleed-1-fault-output"),
|
||||
bleed2Fault: props.globals.initNode("/ECAM/warnings/timer/bleed-2-fault"),
|
||||
bleed2FaultOutput: props.globals.initNode("/ECAM/warnings/timer/bleed-2-fault-output"),
|
||||
bleed1NotShutOutput: props.globals.initNode("/ECAM/warnings/timer/prv-1-not-shut-output"),
|
||||
bleed2NotShutOutput: props.globals.initNode("/ECAM/warnings/timer/prv-2-not-shut-output"),
|
||||
bleed1And2LoTemp: props.globals.initNode("/ECAM/warnings/timer/bleed-1-and-2-low-temp"),
|
||||
bleed1And2LoTempOutput: props.globals.initNode("/ECAM/warnings/timer/bleed-1-and-2-low-temp-output"),
|
||||
bleed1Off60Output: props.globals.initNode("/ECAM/warnings/logic/bleed-1-off-60-output"),
|
||||
bleed1Off5Output: props.globals.initNode("/ECAM/warnings/logic/bleed-1-off-5-output"),
|
||||
bleed2Off60Output: props.globals.initNode("/ECAM/warnings/logic/bleed-2-off-60-output"),
|
||||
bleed2Off5Output: props.globals.initNode("/ECAM/warnings/logic/bleed-2-off-5-output"),
|
||||
eng1AiceNotClsd: props.globals.initNode("/ECAM/warnings/timer/eng-aice-1-open-output"),
|
||||
eng2AiceNotClsd: props.globals.initNode("/ECAM/warnings/timer/eng-aice-2-open-output"),
|
||||
eng1AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-1-closed-output"),
|
||||
eng2AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-2-closed-output"),
|
||||
LRElevFault: props.globals.initNode("/ECAM/warnings/fctl/lrElevFault-output"),
|
||||
waiLhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-left"),
|
||||
waiRhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-right"),
|
||||
pack1Fault: props.globals.initNode("/ECAM/warnings/timer/pack-1-fault-2"),
|
||||
pack2Fault: props.globals.initNode("/ECAM/warnings/timer/pack-2-fault-2"),
|
||||
pack1Off: props.globals.initNode("/ECAM/warnings/timer/pack-1-off"),
|
||||
pack2Off: props.globals.initNode("/ECAM/warnings/timer/pack-2-off"),
|
||||
trimAirFault: props.globals.initNode("/ECAM/warnings/timer/trim-air-fault"),
|
||||
yawDamper1Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-1-fault"),
|
||||
yawDamper2Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-2-fault"),
|
||||
navTerrFault: props.globals.initNode("/ECAM/warnings/timer/nav-gpws-terr-fault"),
|
||||
},
|
||||
Flipflops: {
|
||||
apuGenFault: props.globals.initNode("/ECAM/warnings/flipflop/apu-gen-fault"),
|
||||
apuGenFaultOnOff: props.globals.initNode("/ECAM/warnings/flipflop/apu-gen-fault-on-off"),
|
||||
bleed1LowTemp: props.globals.initNode("/ECAM/warnings/logic/bleed-1-low-temp-flipflop-output"),
|
||||
bleed2LowTemp: props.globals.initNode("/ECAM/warnings/logic/bleed-2-low-temp-flipflop-output"),
|
||||
gen1Fault: props.globals.initNode("/ECAM/warnings/flipflop/gen-1-fault"),
|
||||
gen2Fault: props.globals.initNode("/ECAM/warnings/flipflop/gen-2-fault"),
|
||||
gen1FaultOnOff: props.globals.initNode("/ECAM/warnings/flipflop/gen-1-fault-on-off"),
|
||||
gen2FaultOnOff: props.globals.initNode("/ECAM/warnings/flipflop/gen-2-fault-on-off"),
|
||||
pack1Ovht: props.globals.initNode("/ECAM/warnings/flipflop/pack-1-ovht"),
|
||||
pack2Ovht: props.globals.initNode("/ECAM/warnings/flipflop/pack-2-ovht"),
|
||||
parkBrk: props.globals.initNode("/ECAM/warnings/config/park-brk/park-brk-output"),
|
||||
eng1ThrLvrAbvIdle: props.globals.initNode("/ECAM/warnings/logic/eng/eng-1-thr-lvr-abv-idle"),
|
||||
eng2ThrLvrAbvIdle: props.globals.initNode("/ECAM/warnings/logic/eng/eng-2-thr-lvr-abv-idle"),
|
||||
},
|
||||
};
|
||||
|
||||
var warning = {
|
||||
new: func(msg,colour = "g",aural = 9,light = 9,isMainMsg = 0,lastSubmsg = 0, sdPage = "nil", isMemo = 0) {
|
||||
var t = {parents:[warning]};
|
||||
|
@ -84,7 +173,7 @@ var warning = {
|
|||
me.noRepeat = 1;
|
||||
},
|
||||
sound: func() {
|
||||
if (me.aural > 2) { return; }
|
||||
if (me.aural > 3) { return; }
|
||||
if (me.active == 0 and me.wasActive == 1) {
|
||||
aural[me.aural].setBoolValue(0);
|
||||
me.wasActive = 0;
|
||||
|
@ -168,14 +257,21 @@ var status = {
|
|||
var ECAM_controller = {
|
||||
_recallCounter: 0,
|
||||
_noneActive: 0,
|
||||
counter: 0,
|
||||
init: func() {
|
||||
ECAMloopTimer.start();
|
||||
me.counter = 0;
|
||||
me.reset();
|
||||
},
|
||||
loop: func() {
|
||||
if ((systems.ELEC.Bus.acEss.getValue() >= 110 or systems.ELEC.Bus.ac2.getValue() >= 110) and !getprop("systems/acconfig/acconfig-running")) {
|
||||
if ((systems.ELEC.Bus.acEss.getValue() >= 110 or systems.ELEC.Bus.ac2.getValue() >= 110) and !pts.Acconfig.running.getBoolValue()) {
|
||||
# update FWC phases
|
||||
if (me.counter == 0) {
|
||||
phaseLoop();
|
||||
me.counter = 1;
|
||||
return;
|
||||
}
|
||||
me.counter = 0;
|
||||
|
||||
# check active messages
|
||||
messages_priority_3();
|
||||
|
@ -206,7 +302,7 @@ var ECAM_controller = {
|
|||
# write to ECAM
|
||||
var counter = 0;
|
||||
|
||||
if (!getprop("systems/acconfig/autoconfig-running")) {
|
||||
if (!pts.Acconfig.running.getBoolValue()) {
|
||||
foreach (var w; warnings.vector) {
|
||||
if (w.active == 1) {
|
||||
if (counter < 9) {
|
||||
|
|
|
@ -20,8 +20,6 @@ var apOffTime = 0;
|
|||
var athrOffTime = 0;
|
||||
var apWarnNode = 0;
|
||||
var athrWarnNode = 0;
|
||||
var leftMsg = 0;
|
||||
var rightMsg = 0;
|
||||
var engStrtTimeSw = 0;
|
||||
var engStrtTime = 0;
|
||||
var page = 0;
|
||||
|
@ -42,7 +40,7 @@ var clrLight = 0;
|
|||
var ECAM = {
|
||||
_cachePage: "",
|
||||
init: func() {
|
||||
setprop("systems/gear/landing-gear-warning-light", 0);
|
||||
setprop("/systems/gear/landing-gear-warning-light", 0);
|
||||
page = props.globals.initNode("/ECAM/Lower/page", "door", "STRING");
|
||||
apuLight = props.globals.initNode("/ECAM/Lower/light/apu", 0, "BOOL");
|
||||
bleedLight = props.globals.initNode("/ECAM/Lower/light/bleed", 0, "BOOL");
|
||||
|
@ -61,8 +59,6 @@ var ECAM = {
|
|||
phase = props.globals.initNode("/ECAM/warning-phase", 0, "INT");
|
||||
apOffTime = props.globals.initNode("/ECAM/ap-off-time", 0, "INT");
|
||||
athrOffTime = props.globals.initNode("/ECAM/athr-off-time", 0, "INT");
|
||||
leftMsg = props.globals.initNode("/ECAM/left-msg", "MSG", "STRING");
|
||||
rightMsg = props.globals.initNode("/ECAM/right-msg", "MSG", "STRING");
|
||||
engStrtTimeSw = props.globals.initNode("/ECAM/engine-start-time-switch", 0, "BOOL");
|
||||
engStrtTime = props.globals.initNode("/ECAM/engine-start-time", 0.0, "DOUBLE");
|
||||
apWarnNode = props.globals.initNode("/it-autoflight/output/ap-warning", 0, "INT");
|
||||
|
@ -223,7 +219,7 @@ var SystemDisplay = {
|
|||
},
|
||||
update: func() {
|
||||
phase = pts.ECAM.fwcWarningPhase.getValue();
|
||||
APUMaster = pts.APU.masterSw.getValue();
|
||||
APUMaster = systems.APUNodes.Controls.master.getValue();
|
||||
APURPM = pts.APU.rpm.getValue();
|
||||
engModeSel = pts.Controls.Engines.startSw.getValue();
|
||||
elapsedSec = pts.Sim.Time.elapsedSec.getValue();
|
||||
|
|
|
@ -11,42 +11,33 @@
|
|||
|
||||
var warnings = std.Vector.new([
|
||||
var stall = warning.new(msg: "", aural: 2),
|
||||
var flap_not_zero = warning.new(msg: "F/CTL FLAP LVR NOT ZERO", colour: "r", aural: 0, light: 0),
|
||||
var flap_not_zero = warning.new(msg: "F/CTL FLAP LVR NOT ZERO", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
|
||||
var overspeed = warning.new(msg: "OVER SPEED", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var overspeedVMO = warning.new(msg: "-VMO/MMO.......350 /.82", colour: "r"),
|
||||
var overspeedGear = warning.new(msg: "-VLE...........280 /.67", colour: "r"),
|
||||
var overspeedFlap = warning.new(msg: "-VFE................XXX", colour: "r"),
|
||||
|
||||
# DUAL ENG FAIL
|
||||
var dualFail = warning.new(msg: "ENG DUAL FAILURE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var dualFailModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
|
||||
var dualFailLevers = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
|
||||
var dualFailRelightSPD = warning.new(msg: " OPTIMUM RELIGHT SPD.280", colour: "c"),
|
||||
var dualFailRelightSPDCFM = warning.new(msg: " OPTIMUM RELIGHT SPD.300", colour: "c"),
|
||||
var dualFailElec = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
|
||||
var dualFailRadio = warning.new(msg: " -VHF1/ATC1..........USE", colour: "c"),
|
||||
var dualFailFAC = warning.new(msg: " -FAC 1......OFF THEN ON", colour: "c"),
|
||||
var dualFailRelight = warning.new(msg: "•IF NO RELIGHT AFTER 30S", colour: "w", isMainMsg: 1),
|
||||
var dualFailMasters = warning.new(msg: " -ENG MASTERS.OFF 30S/ON", colour: "c"),
|
||||
var dualFailSuccess = warning.new(msg: " •IF UNSUCCESSFUL : ", colour: "w", isMainMsg: 1),
|
||||
var dualFailAPU = warning.new(msg: " -APU (IF AVAIL)...START", colour: "c"),
|
||||
var dualFailAPUwing = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
|
||||
var dualFailAPUbleed = warning.new(msg: " -APU BLEED...........ON", colour: "c"),
|
||||
var dualFailMastersAPU = warning.new(msg: " -ENG MASTERS.OFF 30S/ON", colour: "c"),
|
||||
var dualFailSPDGD = warning.new(msg: " OPTIMUM SPEED.....G DOT", colour: "c"),
|
||||
var dualFailAPPR = warning.new(msg: " •EARLY IN APPR : ", colour: "w", isMainMsg: 1),
|
||||
var dualFailcabin = warning.new(msg: " -CAB SECURE.......ORDER", colour: "c"),
|
||||
var dualFailrudd = warning.new(msg: " -USE RUDDER WITH CARE ", colour: "c"),
|
||||
var dualFailflap = warning.new(msg: " -FOR LDG.....USE FLAP 3", colour: "c"),
|
||||
var dualFail5000 = warning.new(msg: " •AT 5000 FT AGL : ", colour: "w", isMainMsg: 1),
|
||||
var dualFailgear = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"),
|
||||
var dualFailfinalspeed = warning.new(msg: " TARGET SPEED.....150 KT", colour: "c"),
|
||||
var dualFailtouch = warning.new(msg: " •AT TOUCH DOWN : ", colour: "w", isMainMsg: 1),
|
||||
var dualFailmasteroff = warning.new(msg: " -ENG MASTERS........OFF", colour: "c"),
|
||||
var dualFailapuoff = warning.new(msg: " -APU MASTER SW......OFF", colour: "c"),
|
||||
var dualFailevac = warning.new(msg: " -EVAC..........INITIATE", colour: "c"),
|
||||
var dualFailbatt = warning.new(msg: " -BAT 1+2............OFF", colour: "c"),
|
||||
var allEngFail = warning.new(msg: "ENG ALL ENGINES FAILURE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var allEngFailElec = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
|
||||
var allEngFailSPD1 = warning.new(msg: " OPT RELIGHT SPD.260/.77", colour: "c"),
|
||||
var allEngFailSPD2 = warning.new(msg: " OPT RELIGHT SPD.270/.77", colour: "c"),
|
||||
var allEngFailSPD3 = warning.new(msg: " OPT RELIGHT SPD.280/.77", colour: "c"),
|
||||
var allEngFailSPD4 = warning.new(msg: " OPT RELIGHT SPD.300/.77", colour: "c"),
|
||||
var allEngFailAPU = warning.new(msg: " -APU..............START", colour: "c"),
|
||||
var allEngFailLevers = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
|
||||
var allEngFailFAC = warning.new(msg: " -FAC 1......OFF THEN ON", colour: "c"),
|
||||
var allEngFailGlide = warning.new(msg: " GLDG DIST: 2NM/1000FT", colour: "c"),
|
||||
var allEngFailDiversion = warning.new(msg: " -DIVERSION.....INITIATE", colour: "c"),
|
||||
var allEngFailProc = warning.new(msg: " -ALL ENG FAIL PROC.APPLY", colour: "c"),
|
||||
|
||||
# ENG 1 THR LEVER ABV IDLE
|
||||
var eng1ThrLvrAbvIdle = warning.new(msg: "ENG 1 THR LEVER ABV IDLE", colour: "r", aural: 3, light: 0, isMainMsg: 1),
|
||||
var eng1ThrLvrAbvIdle2 = warning.new(msg: " -THR LEVER 1.......IDLE", colour: "c"),
|
||||
|
||||
# ENG 2 THR LEVER ABV IDLE
|
||||
var eng2ThrLvrAbvIdle = warning.new(msg: "ENG 2 THR LEVER ABV IDLE", colour: "r", aural: 3, light: 0, isMainMsg: 1),
|
||||
var eng2ThrLvrAbvIdle2 = warning.new(msg: " -THR LEVER 2.......IDLE", colour: "c"),
|
||||
|
||||
# ENG 1 FIRE (flight)
|
||||
var eng1Fire = warning.new(msg: "ENG 1 FIRE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
|
@ -63,17 +54,13 @@ var warnings = std.Vector.new([
|
|||
var eng1FireGnlever = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
|
||||
var eng1FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", isMainMsg: 1),
|
||||
var eng1FireGnparkbrk = warning.new(msg: " -PARKING BRK.........ON", colour: "c"),
|
||||
var eng1FireGnATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
|
||||
var eng1FireGncrew = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
|
||||
var eng1FireGnmaster = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
|
||||
var eng1FireGnPB = warning.new(msg: " -ENG 1 FIRE P/B....PUSH", colour: "c"),
|
||||
var eng1FireGnAgent1 = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
|
||||
var eng1FireGnAgent2 = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
|
||||
var eng1FireGnmaster2 = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
|
||||
var eng1FireGnATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
|
||||
var eng1FireGncrew = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
|
||||
var eng1FireGnevac = warning.new(msg: " •IF EVAC RQRD:", colour: "w", isMainMsg: 1),
|
||||
var eng1FireGnevacSw = warning.new(msg: " -EVAC COMMAND........ON", colour: "c"),
|
||||
var eng1FireGnevacApu = warning.new(msg: " -APU MASTER SW......OFF", colour: "c"),
|
||||
var eng1FireGnevacBat = warning.new(msg: " -BAT 1+2............OFF", colour: "c"),
|
||||
var eng1FireGnEvac = warning.new(msg: " -EMER EVAC PROC...APPLY", colour: "c"),
|
||||
|
||||
# ENG 2 FIRE (flight)
|
||||
var eng2Fire = warning.new(msg: "ENG 2 FIRE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
|
@ -90,17 +77,13 @@ var warnings = std.Vector.new([
|
|||
var eng2FireGnlever = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
|
||||
var eng2FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", isMainMsg: 1),
|
||||
var eng2FireGnparkbrk = warning.new(msg: " -PARKING BRK.........ON", colour: "c"),
|
||||
var eng2FireGnATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
|
||||
var eng2FireGncrew = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
|
||||
var eng2FireGnmaster = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
|
||||
var eng2FireGnPB = warning.new(msg: " -ENG 2 FIRE P/B....PUSH", colour: "c"),
|
||||
var eng2FireGnAgent1 = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
|
||||
var eng2FireGnAgent2 = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
|
||||
var eng2FireGnmaster2 = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
|
||||
var eng2FireGnATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
|
||||
var eng2FireGncrew = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
|
||||
var eng2FireGnevac = warning.new(msg: " •IF EVAC RQRD:", colour: "w", isMainMsg: 1),
|
||||
var eng2FireGnevacSw = warning.new(msg: " -EVAC COMMAND........ON", colour: "c"),
|
||||
var eng2FireGnevacApu = warning.new(msg: " -APU MASTER SW......OFF", colour: "c"),
|
||||
var eng2FireGnevacBat = warning.new(msg: " -BAT 1+2............OFF", colour: "c"),
|
||||
var eng2FireGnEvac = warning.new(msg: " -EMER EVAC PROC...APPLY", colour: "c"),
|
||||
|
||||
# APU FIRE
|
||||
var apuFire = warning.new(msg: "APU FIRE ", colour: "r", aural: 0, light: 0, isMainMsg: 1, sdPage: "apu"),
|
||||
|
@ -122,6 +105,21 @@ var warnings = std.Vector.new([
|
|||
var rud_trim_config_1 = warning.new(msg: " NOT IN T.O. RANGE", colour: "r", aural: 0, light: 0),
|
||||
var park_brk_config = warning.new(msg: "CONFIG PARK BRK ON", colour: "r", aural: 0, light: 0),
|
||||
|
||||
# FCTL L+R ELEV FAULT
|
||||
var lrElevFault = warning.new(msg: "F/CTL L+R ELEV FAULT", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var lrElevFaultSpeed = warning.new(msg: " MAX SPEED.......320/.77", colour: "c"),
|
||||
var lrElevFaultTrim = warning.new(msg: " -MAN PITCH TRIM.....USE", colour: "c"),
|
||||
var lrElevFaultSpdBrk = warning.new(msg: " SPD BRK......DO NOT USE", colour: "c"),
|
||||
|
||||
# Gear not down
|
||||
var gearNotDown = warning.new(msg: "L/G GEAR NOT DOWN", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
|
||||
var gearNotDownLocked = warning.new(msg: "L/G GEAR NOT DOWNLOCKED", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var gearNotDownLockedRec = warning.new(msg: " -L/G LEVER......RECYCLE", colour: "c"),
|
||||
var gearNotDownLockedWork = warning.new(msg: " •IF UNSUCCESSFUL:", colour: "c"),
|
||||
var gearNotDownLocked120 = warning.new(msg: " AFTER 120S:", colour: "c"),
|
||||
var gearNotDownLockedGrav = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"),
|
||||
|
||||
# Autopilot off involuntary
|
||||
var ap_offw = warning.new(msg: "AUTO FLT AP OFF", colour: "r", light: 0, isMainMsg: 1),
|
||||
|
||||
|
@ -161,6 +159,40 @@ var warnings = std.Vector.new([
|
|||
var emerconfigProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
||||
var emerconfigMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
|
||||
|
||||
# B + Y LO PR
|
||||
var hydBYloPr = warning.new(msg: "HYD B+Y SYS LO PR", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var hydBYloPrRat = warning.new(msg: " MIN RAT SPD......140 KT", colour: "c"),
|
||||
var hydBYloPrYElec = warning.new(msg: " -YELLOW ELEC PUMP....ON", colour: "c"),
|
||||
var hydBYloPrRatOn = warning.new(msg: " -RAT.............MAN ON", colour: "c"),
|
||||
var hydBYloPrBElec = warning.new(msg: " -BLUE ELEC PUMP.....OFF", colour: "c"),
|
||||
var hydBYloPrYEng = warning.new(msg: " -YELLOW ENG 2 PUMP..OFF", colour: "c"),
|
||||
var hydBYloPrMaxSpd = warning.new(msg: " MAX SPEED.......320/.77", colour: "c"),
|
||||
var hydBYloPrMnvrCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||
var hydBYloPrGaPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
|
||||
var hydBYloPrFuelCnsmpt = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
|
||||
var hydBYloPrFmsPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
|
||||
|
||||
# G + B LO PR
|
||||
var hydGBloPr = warning.new(msg: "HYD G+B SYS LO PR", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var hydGBloPrRat = warning.new(msg: " MIN RAT SPD......140 KT", colour: "c"),
|
||||
var hydGBloPrRatOn = warning.new(msg: " -RAT.............MAN ON", colour: "c"),
|
||||
var hydGBloPrBElec = warning.new(msg: " -BLUE ELEC PUMP.....OFF", colour: "c"),
|
||||
var hydGBloPrGEng = warning.new(msg: " -GREEN ENG 1 PUMP...OFF", colour: "c"),
|
||||
var hydGBloPrMnvrCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||
var hydGBloPrGaPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
|
||||
var hydGBloPrFuelCnsmpt = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
|
||||
var hydGBloPrFmsPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
|
||||
|
||||
# G + Y LO PR
|
||||
var hydGYloPr = warning.new(msg: "HYD G+Y SYS LO PR", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var hydGYloPrPtu = warning.new(msg: " -PTU................OFF", colour: "c"),
|
||||
var hydGYloPrGEng = warning.new(msg: " -GREEN ENG 1 PUMP...OFF", colour: "c"),
|
||||
var hydGYloPrYEng = warning.new(msg: " -YELLOW ENG 2 PUMP..OFF", colour: "c"),
|
||||
var hydGYloPrYElec = warning.new(msg: " -YELLOW ELEC PUMP....ON", colour: "c"),
|
||||
var hydGYloPrMnvrCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||
var hydGYloPrFuelCnsmpt = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
|
||||
var hydGYloPrFmsPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
|
||||
|
||||
# DC EMER CONFIG
|
||||
var dcEmerconfig = warning.new(msg: "ELEC DC EMER CONFIG", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var dcEmerconfigManOn = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
|
||||
|
@ -212,9 +244,27 @@ var warnings = std.Vector.new([
|
|||
var dcBusEssShedIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
|
||||
# AC ESS BUS SHED
|
||||
var acBusEssShed = warning.new(msg: "ELEC DC ESS BUS SHED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var acBusEssShed = warning.new(msg: "ELEC AC ESS BUS SHED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var acBusEssShedAtc = warning.new(msg: " -ATC..............SYS 2", colour: "c"),
|
||||
|
||||
# GEN 1 FAULT
|
||||
var gen1fault = warning.new(msg: "ELEC GEN 1 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gen1faultGen = warning.new(msg: "-GEN 1......OFF THEN ON", colour: "c"),
|
||||
var gen1faultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||
var gen1faultGen3 = warning.new(msg: "-GEN 1..............OFF", colour: "c"),
|
||||
|
||||
# GEN 2 FAULT
|
||||
var gen2fault = warning.new(msg: "ELEC GEN 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gen2faultGen = warning.new(msg: "-GEN 2......OFF THEN ON", colour: "c"),
|
||||
var gen2faultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||
var gen2faultGen3 = warning.new(msg: "-GEN 2..............OFF", colour: "c"),
|
||||
|
||||
# APU GEN FAULT
|
||||
var apuGenfault = warning.new(msg: "ELEC APU GEN FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var apuGenfaultGen = warning.new(msg: "-APU GEN....OFF THEN ON", colour: "c"),
|
||||
var apuGenfaultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||
var apuGenfaultGen3 = warning.new(msg: "-APU GEN............OFF", colour: "c"),
|
||||
|
||||
# Autothrust
|
||||
var athr_offw = warning.new(msg: "AUTO FLT A/THR OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var athr_offw_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
|
||||
|
@ -225,6 +275,39 @@ var warnings = std.Vector.new([
|
|||
|
||||
# TCAS FAULT
|
||||
var tcasFault = warning.new(msg: "NAV TCAS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gpwsFault = warning.new(msg: "NAV GPWS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gpwsFaultOff = warning.new(msg: "-GPWS...............OFF", colour: "c"),
|
||||
var gpwsTerrFault = warning.new(msg: "NAV GPWS TERR DET FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gpwsTerrFaultOff = warning.new(msg: "-GPWS TERR..........OFF", colour: "c"),
|
||||
|
||||
# FAC and Rudder System
|
||||
var fac12Fault = warning.new(msg: "AUTO FLT FAC 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var fac12FaultRud = warning.new(msg: "RUD WITH CARE ABV 160 KT", colour: "c"),
|
||||
var fac12FaultFac = warning.new(msg: " -FAC 1+2....OFF THEN ON", colour: "c"),
|
||||
var fac12FaultSuccess = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||
var fac12FaultFacOff = warning.new(msg: " -FAC 1+2............OFF", colour: "c"),
|
||||
var yawDamperSysFault = warning.new(msg: "AUTO FLT YAW DAMPER SYS", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var yawDamperSysFaultFac = warning.new(msg: " -FAC 1+2....OFF THEN ON", colour: "c"),
|
||||
# var rudderTrimSysFault = warning.new(msg: "AUTO FLT RUD TRIM SYS", colour: "a", aural: 1, light: 1, isMainMsg: 1), not implemented
|
||||
# var rudderTrimSysFaultFac = warning.new(msg: " -FAC 1+2....OFF THEN ON", colour: "c"),
|
||||
var rudTravLimSysFault = warning.new(msg: "AUTO FLT RUD TRV LIM SYS", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var rudTravLimSysFaultRud = warning.new(msg: "RUD WITH CARE ABV 160 KT", colour: "c"),
|
||||
var rudTravLimSysFaultFac = warning.new(msg: " -FAC 1+2....OFF THEN ON", colour: "c"),
|
||||
var fac1Fault = warning.new(msg: "AUTO FLT FAC 1 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var fac1FaultFac = warning.new(msg: " -FAC 1......OFF THEN ON", colour: "c"),
|
||||
var fac1FaultSuccess = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||
var fac1FaultFacOff = warning.new(msg: " -FAC 1..............OFF", colour: "c"),
|
||||
var fac2Fault = warning.new(msg: "AUTO FLT FAC 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var fac2FaultFac = warning.new(msg: " -FAC 2......OFF THEN ON", colour: "c"),
|
||||
var fac2FaultSuccess = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||
var fac2FaultFacOff = warning.new(msg: " -FAC 2..............OFF", colour: "c"),
|
||||
|
||||
var yawDamper1Fault = warning.new(msg: "AUTO FLT YAW DAMPER 1", colour: "a", isMainMsg: 1),
|
||||
var yawDamper2Fault = warning.new(msg: "AUTO FLT YAW DAMPER 2", colour: "a", isMainMsg: 1),
|
||||
# var rudTrim1Fault = warning.new(msg: "AUTO FLT RUD TRIM1 FAULT", colour: "a", isMainMsg: 1), not implemented
|
||||
# var rudTrim2Fault = warning.new(msg: "AUTO FLT RUD TRIM2 FAULT", colour: "a", isMainMsg: 1), not implemented
|
||||
var rudTravLimSys1Fault = warning.new(msg: "AUTO FLT RUD TRV LIM 1", colour: "a", isMainMsg: 1),
|
||||
var rudTravLimSys2Fault = warning.new(msg: "AUTO FLT RUD TRV LIM 2", colour: "a", isMainMsg: 1),
|
||||
|
||||
# FCU fault
|
||||
var fcuFault = warning.new(msg: "AUTO FLT FCU 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
@ -240,6 +323,137 @@ var warnings = std.Vector.new([
|
|||
var apuAutoShutdown = warning.new(msg: "APU AUTO SHUT DOWN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var apuAutoShutdownMast = warning.new(msg: " -MASTER SW..........OFF", colour: "c"),
|
||||
|
||||
# Bleed
|
||||
var bleed1Fault = warning.new(msg: "AIR ENG 1 BLEED FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var bleed1FaultOff = warning.new(msg: " -ENG 1 BLEED........OFF", colour: "c"),
|
||||
var bleed1FaultPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var bleed1FaultXBleed = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
|
||||
var bleed2Fault = warning.new(msg: "AIR ENG 2 BLEED FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var bleed2FaultOff = warning.new(msg: " -ENG 2 BLEED........OFF", colour: "c"),
|
||||
var bleed2FaultPack = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
|
||||
var bleed2FaultXBleed = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
|
||||
var apuBleedFault = warning.new(msg: "AIR APU BLEED FAULT", colour: "a", aural: 1, light: 1),
|
||||
var hpValve1Fault = warning.new(msg: "AIR ENG 1 HP VALVE FAULT", colour: "a"),
|
||||
var hpValve2Fault = warning.new(msg: "AIR ENG 2 HP VALVE FAULT", colour: "a"),
|
||||
var xBleedFault = warning.new(msg: "AIR X BLEED FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var xBleedFaultMan = warning.new(msg: " -X BLEED........MAN CTL", colour: "c"),
|
||||
var xBleedOff = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
|
||||
var xBleedIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
var bleed1Off = warning.new(msg: "AIR BLEED 1 OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var bleed2Off = warning.new(msg: "AIR BLEED 2 OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var engBleedLowTemp = warning.new(msg: "AIR ENG 1+2 BLEED LO TEMP", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var engBleedLowTempAthr = warning.new(msg: " -A/THR..............OFF", colour: "c"),
|
||||
var engBleedLowTempAdv = warning.new(msg: " -THR LEVERS.....ADVANCE", colour: "c"),
|
||||
var engBleedLowTempSucc = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "c"),
|
||||
var engBleedLowTempIce = warning.new(msg: " -WING A.ICE.........OFF", colour: "c"),
|
||||
var engBleedLowTempIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
var eng1BleedLowTemp = warning.new(msg: "AIR ENG 1 BLEED LO TEMP", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng1BleedLowTempAthr = warning.new(msg: " -A/THR..............OFF", colour: "c"),
|
||||
var eng1BleedLowTempAdv = warning.new(msg: " -THR LEVER 1....ADVANCE", colour: "c"),
|
||||
var eng1BleedLowTempSucc = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "c"),
|
||||
var eng1BleedLowTempXBld = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
|
||||
var eng1BleedLowTempOff = warning.new(msg: " -ENG 1 BLEED........OFF", colour: "c"),
|
||||
var eng1BleedLowTempPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var eng1BleedLowTempIce = warning.new(msg: " -WING A.ICE.........OFF", colour: "c"),
|
||||
var eng1BleedLowTempIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
var eng2BleedLowTemp = warning.new(msg: "AIR ENG 2 BLEED LO TEMP", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng2BleedLowTempAthr = warning.new(msg: " -A/THR..............OFF", colour: "c"),
|
||||
var eng2BleedLowTempAdv = warning.new(msg: " -THR LEVER 2....ADVANCE", colour: "c"),
|
||||
var eng2BleedLowTempSucc = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "c"),
|
||||
var eng2BleedLowTempXBld = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
|
||||
var eng2BleedLowTempOff = warning.new(msg: " -ENG 2 BLEED........OFF", colour: "c"),
|
||||
var eng2BleedLowTempPack = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
|
||||
var eng2BleedLowTempIce = warning.new(msg: " -WING A.ICE.........OFF", colour: "c"),
|
||||
var eng2BleedLowTempIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
var eng1BleedAbPress = warning.new(msg: "AIR ENG 1 BLEED ABNORM PR", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng1BleedAbPressPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var eng1BleedAbPressXBld = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
|
||||
var eng2BleedAbPress = warning.new(msg: "AIR ENG 2 BLEED ABNORM PR", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng2BleedAbPressPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var eng2BleedAbPressXBld = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
|
||||
var eng1BleedNotClsd = warning.new(msg: "AIR ENG 1 BLEED NOT CLSD", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng1BleedNotClsdOff = warning.new(msg: " -ENG 1 BLEED........OFF", colour: "c"),
|
||||
var eng2BleedNotClsd = warning.new(msg: "AIR ENG 2 BLEED NOT CLSD", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng2BleedNotClsdOff = warning.new(msg: " -ENG 2 BLEED........OFF", colour: "c"),
|
||||
var bleedMonFault = warning.new(msg: "BLEED MONITORING FAULT", colour: "a", isMainMsg: 1),
|
||||
var bleedMon1Fault = warning.new(msg: "BLEED MONIT SYS 1 FAULT", colour: "a", isMainMsg: 1),
|
||||
var bleedMon2Fault = warning.new(msg: "BLEED MONIT SYS 2 FAULT", colour: "a", isMainMsg: 1),
|
||||
|
||||
# PACK
|
||||
var pack12Fault = warning.new(msg: "AIR PACK 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var pack12FaultPackOff1 = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var pack12FaultPackOff2 = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
|
||||
var pack12FaultDescend = warning.new(msg: " -DESCENT TO FL 100/MEA ", colour: "c"),
|
||||
var pack12FaultDiffPr = warning.new(msg: " •WHEN DIFF PR <1 PSI", colour: "w"),
|
||||
var pack12FaultDiffPr2 = warning.new(msg: " AND FL BELOW 100 :", colour: "w"),
|
||||
var pack12FaultRam = warning.new(msg: " -RAM AIR...........OPEN", colour: "c"),
|
||||
var pack12FaultMax = warning.new(msg: " MAX FL..........100/MEA", colour: "c"),
|
||||
var pack12FaultOvht = warning.new(msg: " •WHEN PACK OVHT OUT:", colour: "w"),
|
||||
var pack12FaultPackOn1 = warning.new(msg: " -PACK 1..............ON", colour: "c"),
|
||||
var pack12FaultPackOn2 = warning.new(msg: " -PACK 2..............ON", colour: "c"),
|
||||
var pack1Ovht = warning.new(msg: "AIR PACK 1 OVHT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var pack1OvhtOff = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var pack1OvhtOut = warning.new(msg: " •WHEN PACK OVHT OUT:", colour: "w"),
|
||||
var pack1OvhtPack = warning.new(msg: " -PACK 1..............ON", colour: "c"),
|
||||
var pack2Ovht = warning.new(msg: "AIR PACK 2 OVHT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var pack2OvhtOff = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
|
||||
var pack2OvhtOut = warning.new(msg: " •WHEN PACK OVHT OUT:", colour: "w"),
|
||||
var pack2OvhtPack = warning.new(msg: " -PACK 2..............ON", colour: "c"),
|
||||
var pack1Fault = warning.new(msg: "AIR PACK 1 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var pack1FaultOff = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var pack2Fault = warning.new(msg: "AIR PACK 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var pack2FaultOff = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
|
||||
var pack1Off = warning.new(msg: "AIR PACK 1 OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var pack2Off = warning.new(msg: "AIR PACK 2 OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var cabFanFault = warning.new(msg: "COND L+R CAB FAN FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var cabFanFaultFlow = warning.new(msg: " -PACK FLOW...........HI", colour: "c"),
|
||||
var trimAirFault = warning.new(msg: "COND TRIM AIR SYS FAULT", colour: "a", isMainMsg: 1),
|
||||
var trimAirFaultAft = warning.new(msg: " -AFT CAB TRIM VALVE", colour: "c"),
|
||||
var trimAirFaultFwd = warning.new(msg: " -FWD CAB TRIM VALVE", colour: "c"),
|
||||
var trimAirFaultCkpt = warning.new(msg: " -CKPT TRIM VALVE", colour: "c"),
|
||||
|
||||
# Eng AICE
|
||||
var eng1IceClosed = warning.new(msg: "ANTI ICE ENG1 VALVE CLSD", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng1IceClosedIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
var eng2IceClosed = warning.new(msg: "ANTI ICE ENG2 VALVE CLSD", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng2IceClosedIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
var eng1IceOpen = warning.new(msg: "ANTI ICE ENG1 VALVE OPEN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng1IceOpenThrust = warning.new(msg: " THRUST LIM PENALTY", colour: "c"),
|
||||
var eng2IceOpen = warning.new(msg: "ANTI ICE ENG2 VALVE OPEN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng2IceOpenThrust = warning.new(msg: " THRUST LIM PENALTY", colour: "c"),
|
||||
|
||||
# Wing AICE
|
||||
var wingIceSysFault = warning.new(msg: "WING A.ICE SYS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var wingIceSysFaultXbld = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
|
||||
var wingIceSysFaultOff = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
|
||||
var wingIceSysFaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
var wingIceLOpen = warning.new(msg: "WING A.ICE L VALVE OPEN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var wingIceLOpenOff = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
|
||||
var wingIceLOpenEngOff = warning.new(msg: " -ENG1 BLEED.........OFF", colour: "c"),
|
||||
var wingIceLOpenXbld = warning.new(msg: " -X BLEED...........SHUT", colour: "c"),
|
||||
var wingIceLOpenApuOff = warning.new(msg: " -APU BLEED..........OFF", colour: "c"),
|
||||
var wingIceLOpenSpacer = warning.new(msg: " ", colour: "c"),
|
||||
var wingIceLOpenFlt = warning.new(msg: " WAI AVAIL IN FLT", colour: "c"),
|
||||
var wingIceLOpenEngOn = warning.new(msg: " -ENG1 BLEED.........OFF", colour: "c"),
|
||||
var wingIceLOpenIceReq = warning.new(msg: " -WING ANTI ICE..AS RQRD", colour: "c"),
|
||||
var wingIceLOpenThrust = warning.new(msg: " THRUST LIM PENALTY", colour: "c"),
|
||||
var wingIceROpen = warning.new(msg: "WING A.ICE R VALVE OPEN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var wingIceROpenOff = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
|
||||
var wingIceROpenEngOff = warning.new(msg: " -ENG2 BLEED.........OFF", colour: "c"),
|
||||
var wingIceROpenXbld = warning.new(msg: " -X BLEED...........SHUT", colour: "c"),
|
||||
var wingIceROpenApuOff = warning.new(msg: " -APU BLEED..........OFF", colour: "c"),
|
||||
var wingIceROpenSpacer = warning.new(msg: " ", colour: "c"),
|
||||
var wingIceROpenFlt = warning.new(msg: " WAI AVAIL IN FLT", colour: "c"),
|
||||
var wingIceROpenEngOn = warning.new(msg: " -ENG2 BLEED.........OFF", colour: "c"),
|
||||
var wingIceROpenIceReq = warning.new(msg: " -WING ANTI ICE..AS RQRD", colour: "c"),
|
||||
var wingIceROpenThrust = warning.new(msg: " THRUST LIM PENALTY", colour: "c"),
|
||||
var wingIceOpenGnd = warning.new(msg: "WING A.ICE OPEN ON GND", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var wingIceOpenGndShut = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
|
||||
var wingIceLHiPr = warning.new(msg: "WING A.ICE L HI PR", colour: "a", isMainMsg: 1),
|
||||
var wingIceLHiPrThrust = warning.new(msg: " THRUST LIM PENTALTY", colour: "c"),
|
||||
var wingIceRHiPr = warning.new(msg: "WING A.ICE R HI PR", colour: "a", isMainMsg: 1),
|
||||
var wingIceRHiPrThrust = warning.new(msg: " THRUST LIM PENTALTY", colour: "c"),
|
||||
|
||||
# FIRE det fault
|
||||
var eng1FireDetFault = warning.new(msg: "ENG 1 FIRE DET FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng1LoopAFault = warning.new(msg: "ENG 1 FIRE LOOP A FAULT", colour: "a", isMainMsg: 1),
|
||||
|
@ -329,7 +543,7 @@ var memos = std.Vector.new([
|
|||
var terr_stby = memo.new(msg: "TERR STBY" ), # Not yet implemented
|
||||
var tcas_stby = memo.new(msg: "TCAS STBY" ), # Not yet implemented
|
||||
var acars_call = memo.new(msg: "ACARS CALL" ), # Not yet implemented
|
||||
var company_call = memo.new(msg: "COMPANY CALL"), # Not yet implemented
|
||||
var company_call = memo.new(msg: "COMPANY CALL"),
|
||||
var satcom_alert = memo.new(msg: "SATCOM ALERT"), # Not yet implemented
|
||||
var acars_msg = memo.new(msg: "ACARS MSG" ), # Not yet implemented
|
||||
var company_msg = memo.new(msg: "COMPANY MSG" ), # Not yet implemented
|
||||
|
|
|
@ -2,10 +2,7 @@
|
|||
|
||||
# Copyright (c) 2019 Jonathan Redpath (legoboyvdlp)
|
||||
|
||||
var gnd = 0;
|
||||
var twoEngOff = 0;
|
||||
var gear_agl = nil;
|
||||
var gear_comp = nil;
|
||||
var myPhase = nil;
|
||||
var eng = nil;
|
||||
var eng1epr = nil;
|
||||
|
@ -22,62 +19,63 @@ var gear_agl_cur = nil;
|
|||
|
||||
var FWC = {
|
||||
Btn: {
|
||||
clr: props.globals.initNode("ECAM/buttons/clear-btn", 0, "BOOL"),
|
||||
recall: props.globals.initNode("ECAM/buttons/recall-btn", 0, "BOOL"),
|
||||
recallStsNormal: props.globals.initNode("ECAM/buttons/recall-status-normal", 0, "BOOL"),
|
||||
recallStsNormalOutput: props.globals.initNode("ECAM/buttons/recall-status-normal-output", 0, "BOOL"),
|
||||
clr: props.globals.initNode("/ECAM/buttons/clear-btn", 0, "BOOL"),
|
||||
recall: props.globals.initNode("/ECAM/buttons/recall-btn", 0, "BOOL"),
|
||||
recallStsNormal: props.globals.initNode("/ECAM/buttons/recall-status-normal", 0, "BOOL"),
|
||||
recallStsNormalOutput: props.globals.initNode("/ECAM/buttons/recall-status-normal-output", 0, "BOOL"),
|
||||
},
|
||||
Monostable: {
|
||||
phase1: props.globals.initNode("ECAM/phases/monostable/phase-1-300", 0, "BOOL"),
|
||||
phase5: props.globals.initNode("ECAM/phases/monostable/phase-5", 0, "BOOL"),
|
||||
phase7: props.globals.initNode("ECAM/phases/monostable/phase-7", 0, "BOOL"),
|
||||
phase9: props.globals.initNode("ECAM/phases/monostable/phase-9", 0, "BOOL"),
|
||||
phase1Output: props.globals.initNode("ECAM/phases/monostable/phase-1-output"),
|
||||
phase5Output: props.globals.initNode("ECAM/phases/monostable/phase-5-output"),
|
||||
phase7Output: props.globals.initNode("ECAM/phases/monostable/phase-7-output"),
|
||||
phase9Output: props.globals.initNode("ECAM/phases/monostable/phase-9-output"),
|
||||
toPowerOutput: props.globals.getNode("ECAM/phases/monostable/to-power-set-output"),
|
||||
m80kt: props.globals.getNode("ECAM/phases/monostable-80kt"),
|
||||
altAlert1: props.globals.initNode("ECAM/altitude-alert-monostable-set", 0, "BOOL"),
|
||||
altAlert1Output: props.globals.initNode("ECAM/altitude-alert-monostable-output"),
|
||||
altAlert2: props.globals.initNode("ECAM/flipflop/altitude-alert-rs-set", 0, "BOOL"),
|
||||
phase1: props.globals.initNode("/ECAM/phases/monostable/phase-1-300", 0, "BOOL"),
|
||||
phase5: props.globals.initNode("/ECAM/phases/monostable/phase-5", 0, "BOOL"),
|
||||
phase7: props.globals.initNode("/ECAM/phases/monostable/phase-7", 0, "BOOL"),
|
||||
phase9: props.globals.initNode("/ECAM/phases/monostable/phase-9", 0, "BOOL"),
|
||||
phase1Output: props.globals.initNode("/ECAM/phases/monostable/phase-1-output"),
|
||||
phase5Output: props.globals.initNode("/ECAM/phases/monostable/phase-5-output"),
|
||||
phase7Output: props.globals.initNode("/ECAM/phases/monostable/phase-7-output"),
|
||||
phase9Output: props.globals.initNode("/ECAM/phases/monostable/phase-9-output"),
|
||||
toPowerOutput: props.globals.getNode("/ECAM/phases/monostable/to-power-set-output"),
|
||||
m80kt: props.globals.getNode("/ECAM/phases/monostable-80kt"),
|
||||
altAlert1: props.globals.initNode("/ECAM/altitude-alert-monostable-set", 0, "BOOL"),
|
||||
altAlert1Output: props.globals.initNode("/ECAM/altitude-alert-monostable-output"),
|
||||
altAlert2: props.globals.initNode("/ECAM/flipflop/altitude-alert-rs-set", 0, "BOOL"),
|
||||
},
|
||||
Flipflop: {
|
||||
gearSet: props.globals.initNode("ECAM/phases/flipflop/gear-set", 0, "BOOL"),
|
||||
gearReset: props.globals.initNode("ECAM/phases/flipflop/gear-reset", 0, "BOOL"),
|
||||
gearOutput: props.globals.initNode("ECAM/phases/flipflop/gear-output", 0, "BOOL"),
|
||||
phase2Set: props.globals.initNode("ECAM/phases/flipflop/phase-2-set", 0, "BOOL"),
|
||||
phase2Reset: props.globals.initNode("ECAM/phases/flipflop/phase-2-reset", 0, "BOOL"),
|
||||
phase2Output: props.globals.initNode("ECAM/phases/flipflop/phase-2-output", 0, "BOOL"),
|
||||
phase10Set: props.globals.initNode("ECAM/phases/flipflop/phase-10-set", 0, "BOOL"),
|
||||
phase10Reset: props.globals.initNode("ECAM/phases/flipflop/phase-10-reset", 0, "BOOL"),
|
||||
phase10Output: props.globals.initNode("ECAM/phases/flipflop/phase-10-output", 0, "BOOL"),
|
||||
recallSet: props.globals.initNode("ECAM/flipflop/recall-set", 0, "BOOL"),
|
||||
recallReset: props.globals.initNode("ECAM/flipflop/recall-reset", 0, "BOOL"),
|
||||
recallOutput: props.globals.initNode("ECAM/flipflop/recall-output", 0, "BOOL"),
|
||||
phase2Set: props.globals.initNode("/ECAM/phases/flipflop/phase-2-set", 0, "BOOL"),
|
||||
phase2Reset: props.globals.initNode("/ECAM/phases/flipflop/phase-2-reset", 0, "BOOL"),
|
||||
phase2Output: props.globals.initNode("/ECAM/phases/flipflop/phase-2-output", 0, "BOOL"),
|
||||
phase10Set: props.globals.initNode("/ECAM/phases/flipflop/phase-10-set", 0, "BOOL"),
|
||||
phase10Reset: props.globals.initNode("/ECAM/phases/flipflop/phase-10-reset", 0, "BOOL"),
|
||||
phase10Output: props.globals.initNode("/ECAM/phases/flipflop/phase-10-output", 0, "BOOL"),
|
||||
recallSet: props.globals.initNode("/ECAM/flipflop/recall-set", 0, "BOOL"),
|
||||
recallReset: props.globals.initNode("/ECAM/flipflop/recall-reset", 0, "BOOL"),
|
||||
recallOutput: props.globals.initNode("/ECAM/flipflop/recall-output", 0, "BOOL"),
|
||||
},
|
||||
Logic: {
|
||||
gnd: props.globals.getNode("/ECAM/ground-calc-immediate"),
|
||||
IRSinAlign: props.globals.initNode("/ECAM/irs-in-align", 0, "BOOL"),
|
||||
},
|
||||
Timer: {
|
||||
eng1idle: props.globals.initNode("ECAM/phases/timer/eng1idle", 0, "INT"),
|
||||
eng2idle: props.globals.initNode("ECAM/phases/timer/eng2idle", 0, "INT"),
|
||||
eng1or2: props.globals.initNode("ECAM/phases/timer/eng1or2", 0, "INT"),
|
||||
toInhibit: props.globals.initNode("ECAM/phases/timer/to-inhibit", 0, "INT"),
|
||||
ldgInhibit: props.globals.initNode("ECAM/phases/timer/ldg-inhibit", 0, "INT"),
|
||||
eng1idleOutput: props.globals.getNode("ECAM/phases/timer/eng1idle-output"),
|
||||
eng2idleOutput: props.globals.getNode("ECAM/phases/timer/eng2idle-output"),
|
||||
eng1or2Output: props.globals.initNode("ECAM/phases/timer/eng1or2-output", 0, "INT"),
|
||||
toInhibitOutput: props.globals.getNode("ECAM/phases/timer/to-inhibit-output"),
|
||||
ldgInhibitOutput: props.globals.getNode("ECAM/phases/timer/ldg-inhibit-output"),
|
||||
eng1idle: props.globals.initNode("/ECAM/phases/timer/eng1idle", 0, "INT"),
|
||||
eng2idle: props.globals.initNode("/ECAM/phases/timer/eng2idle", 0, "INT"),
|
||||
eng1or2: props.globals.initNode("/ECAM/phases/timer/eng1or2", 0, "INT"),
|
||||
toInhibit: props.globals.initNode("/ECAM/phases/timer/to-inhibit", 0, "INT"),
|
||||
ldgInhibit: props.globals.initNode("/ECAM/phases/timer/ldg-inhibit", 0, "INT"),
|
||||
eng1idleOutput: props.globals.getNode("/ECAM/phases/timer/eng1idle-output"),
|
||||
eng2idleOutput: props.globals.getNode("/ECAM/phases/timer/eng2idle-output"),
|
||||
eng1or2Output: props.globals.initNode("/ECAM/phases/timer/eng1or2-output", 0, "INT"),
|
||||
toInhibitOutput: props.globals.getNode("/ECAM/phases/timer/to-inhibit-output"),
|
||||
ldgInhibitOutput: props.globals.getNode("/ECAM/phases/timer/ldg-inhibit-output"),
|
||||
gnd: props.globals.getNode("/ECAM/timer/ground-calc"),
|
||||
gnd2Sec: props.globals.getNode("/ECAM/phases/monostable/gnd-output"),
|
||||
},
|
||||
speed80: props.globals.initNode("ECAM/phases/speed-gt-80", 0, "BOOL"),
|
||||
toPower: props.globals.initNode("ECAM/phases/to-power-set", 0, "BOOL"),
|
||||
speed80: props.globals.initNode("/ECAM/phases/speed-gt-80", 0, "BOOL"),
|
||||
toPower: props.globals.initNode("/ECAM/phases/to-power-set", 0, "BOOL"),
|
||||
altChg: props.globals.getNode("it-autoflight/input/alt-is-changing", 1),
|
||||
};
|
||||
|
||||
var phaseLoop = func() {
|
||||
if (pts.Sim.Replay.replayActive.getBoolValue()) { return; }
|
||||
|
||||
gear_agl = pts.Position.gearAglFt.getValue();
|
||||
gear_comp = pts.Gear.compression[1].getValue();
|
||||
myPhase = pts.ECAM.fwcWarningPhase.getValue();
|
||||
eng = pts.Options.eng.getValue();
|
||||
eng1epr = pts.Engines.Engine.eprActual[0].getValue();
|
||||
|
@ -92,31 +90,13 @@ var phaseLoop = func() {
|
|||
FWC.Flipflop.recallReset.setValue(0);
|
||||
|
||||
# Various things
|
||||
if (gear_agl < 5) {
|
||||
FWC.Flipflop.gearSet.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Flipflop.gearSet.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (!gear_comp) {
|
||||
FWC.Flipflop.gearReset.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Flipflop.gearReset.setBoolValue(0);
|
||||
}
|
||||
|
||||
if ((gear_agl < 5 or FWC.Flipflop.gearOutput.getBoolValue()) and gear_comp > 0) {
|
||||
gnd = 1;
|
||||
} else {
|
||||
gnd = 0;
|
||||
}
|
||||
|
||||
if (eng1n2 < 59.4) {
|
||||
if (eng1n2 >= 59.4 and !master1) {
|
||||
FWC.Timer.eng1idle.setValue(1);
|
||||
} else {
|
||||
FWC.Timer.eng1idle.setValue(0);
|
||||
}
|
||||
|
||||
if (eng2n2 < 59.4) {
|
||||
if (eng2n2 >= 59.4 and !master2) {
|
||||
FWC.Timer.eng2idle.setValue(1);
|
||||
} else {
|
||||
FWC.Timer.eng2idle.setValue(0);
|
||||
|
@ -128,34 +108,28 @@ var phaseLoop = func() {
|
|||
FWC.Timer.eng1or2.setValue(0);
|
||||
}
|
||||
|
||||
if ((FWC.Timer.eng1idleOutput.getBoolValue() or master1) and (FWC.Timer.eng2idleOutput.getBoolValue() or master2)) {
|
||||
if ((FWC.Timer.eng1idleOutput.getBoolValue() == 0 or master1) and (FWC.Timer.eng2idleOutput.getBoolValue() == 0 or master2)) {
|
||||
twoEngOff = 1;
|
||||
} else {
|
||||
twoEngOff = 0;
|
||||
}
|
||||
|
||||
if (eng == "IAE") {
|
||||
eprlim = getprop("controls/engines/epr-limit");
|
||||
if ((!getprop("controls/engines/engine[0]/reverser") and !getprop("controls/engines/engine[1]/reverser")) and (((pts.Controls.Engines.Engine.throttle[0].getValue() >= 0.78 or pts.Controls.Engines.Engine.throttle[1].getValue() >= 0.78) and fadec.Output.limFlex.getBoolValue()) or (pts.Controls.Engines.Engine.throttle[0].getValue() == 1.0 or pts.Controls.Engines.Engine.throttle[1].getValue() == 1.0))) {
|
||||
eprlim = getprop("/controls/engines/epr-limit");
|
||||
if ((!pts.Controls.Engines.Engine.reverser[0].getBoolValue() and !pts.Controls.Engines.Engine.reverser[1].getBoolValue()) and (((pts.Controls.Engines.Engine.throttle[0].getValue() >= 0.78 or pts.Controls.Engines.Engine.throttle[1].getValue() >= 0.779) and fadec.Thrust.limFlex.getBoolValue()) or (pts.Controls.Engines.Engine.throttle[0].getValue() >= 0.99 or pts.Controls.Engines.Engine.throttle[1].getValue() >= 0.99))) {
|
||||
FWC.toPower.setBoolValue(1);
|
||||
} else {
|
||||
FWC.toPower.setBoolValue(0);
|
||||
}
|
||||
} else {
|
||||
n1lim = getprop("controls/engines/n1-limit");
|
||||
if ((!getprop("controls/engines/engine[0]/reverser") and !getprop("controls/engines/engine[1]/reverser")) and (((pts.Controls.Engines.Engine.throttle[0].getValue() >= 0.78 or pts.Controls.Engines.Engine.throttle[1].getValue() >= 0.78) and fadec.Output.limFlex.getBoolValue()) or (pts.Controls.Engines.Engine.throttle[0].getValue() == 1.0 or pts.Controls.Engines.Engine.throttle[1].getValue() == 1.0))) {
|
||||
n1lim = getprop("/controls/engines/n1-limit");
|
||||
if ((!pts.Controls.Engines.Engine.reverser[0].getBoolValue() and !pts.Controls.Engines.Engine.reverser[1].getBoolValue()) and (((pts.Controls.Engines.Engine.throttle[0].getValue() >= 0.78 or pts.Controls.Engines.Engine.throttle[1].getValue() >= 0.779) and fadec.Thrust.limFlex.getBoolValue()) or (pts.Controls.Engines.Engine.throttle[0].getValue() >= 0.99 or pts.Controls.Engines.Engine.throttle[1].getValue() >= 0.99))) {
|
||||
FWC.toPower.setBoolValue(1);
|
||||
} else {
|
||||
FWC.toPower.setBoolValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (pts.Instrumentation.AirspeedIndicator.indicatedSpdKt.getValue() > 80 and pts.Sim.Time.elapsedSec.getValue() > 5) {
|
||||
FWC.speed80.setBoolValue(1);
|
||||
} else {
|
||||
FWC.speed80.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (myPhase == 9) {
|
||||
FWC.Monostable.phase9.setBoolValue(1);
|
||||
} else {
|
||||
|
@ -169,13 +143,13 @@ var phaseLoop = func() {
|
|||
FWC.Flipflop.phase10Set.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (gnd and pts.Controls.Engines.Engine.firePb[0].getBoolValue()) {
|
||||
if (FWC.Timer.gnd.getValue() == 1 and pts.Controls.Engines.Engine.firePb[0].getBoolValue()) {
|
||||
FWC.Flipflop.phase10Reset.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Flipflop.phase10Reset.setBoolValue(0);
|
||||
}
|
||||
|
||||
if ((gnd and twoEngOff and myPhase == 9) and FWC.Flipflop.phase10Output.getBoolValue()) {
|
||||
if ((FWC.Logic.gnd.getBoolValue() and twoEngOff and myPhase == 9) and FWC.Flipflop.phase10Output.getBoolValue()) {
|
||||
FWC.Monostable.phase1.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Monostable.phase1.setBoolValue(0);
|
||||
|
@ -188,7 +162,7 @@ var phaseLoop = func() {
|
|||
FWC.Flipflop.phase2Set.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (!FWC.Monostable.m80kt.getBoolValue() and myPhase != 9 and ((!FWC.Monostable.phase9Output.getBoolValue() and gnd) or (!FWC.Monostable.toPowerOutput.getBoolValue() and gnd))) {
|
||||
if (!FWC.Monostable.m80kt.getBoolValue() and myPhase != 9 and ((!FWC.Monostable.phase9Output.getBoolValue() and FWC.Timer.gnd.getValue() == 1) or (!FWC.Monostable.toPowerOutput.getBoolValue() and FWC.Timer.gnd.getValue() == 1))) {
|
||||
FWC.Flipflop.phase2Reset.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Flipflop.phase2Reset.setBoolValue(0);
|
||||
|
@ -197,33 +171,33 @@ var phaseLoop = func() {
|
|||
gear_agl_cur = pts.Position.gearAglFt.getValue();
|
||||
|
||||
# Phase 5 monostable
|
||||
if (FWC.toPower.getBoolValue() and (gear_agl_cur <= 1500 and !gnd)) {
|
||||
if (FWC.toPower.getBoolValue() and (gear_agl_cur <= 1500 and !FWC.Logic.gnd.getBoolValue() and FWC.Timer.gnd2Sec.getValue() != 1)) {
|
||||
FWC.Monostable.phase5.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Monostable.phase5.setBoolValue(0);
|
||||
}
|
||||
|
||||
# Phase 7 monostable
|
||||
if (!FWC.toPower.getBoolValue() and gear_agl_cur <= 1500 and gear_agl_cur <= 800 and !gnd) {
|
||||
if (!FWC.toPower.getBoolValue() and gear_agl_cur <= 1500 and gear_agl_cur <= 800 and !FWC.Logic.gnd.getBoolValue() and FWC.Timer.gnd2Sec.getValue() != 1) {
|
||||
FWC.Monostable.phase7.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Monostable.phase7.setBoolValue(0);
|
||||
}
|
||||
|
||||
# Actual Phases
|
||||
if ((gnd and twoEngOff and myPhase != 9) and !FWC.Monostable.phase1Output.getBoolValue()) {
|
||||
if ((!FWC.Logic.gnd.getBoolValue() and FWC.Timer.gnd2Sec.getValue() != 1 and twoEngOff and myPhase != 9) and !FWC.Monostable.phase1Output.getBoolValue()) {
|
||||
setPhase(1);
|
||||
}
|
||||
|
||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (gnd and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and !FWC.Flipflop.phase2Output.getBoolValue()) {
|
||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (FWC.Logic.gnd.getBoolValue() and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and !FWC.Flipflop.phase2Output.getBoolValue()) {
|
||||
setPhase(2);
|
||||
}
|
||||
|
||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (gnd and FWC.toPower.getBoolValue()) and !FWC.speed80.getBoolValue()) {
|
||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (FWC.Timer.gnd.getValue() == 1 and FWC.toPower.getBoolValue()) and !FWC.speed80.getBoolValue()) {
|
||||
setPhase(3);
|
||||
}
|
||||
|
||||
if ((gnd and FWC.toPower.getBoolValue()) and FWC.speed80.getBoolValue()) {
|
||||
if ((FWC.Timer.gnd.getValue() == 1 and FWC.toPower.getBoolValue()) and FWC.speed80.getBoolValue()) {
|
||||
setPhase(4);
|
||||
}
|
||||
|
||||
|
@ -231,7 +205,7 @@ var phaseLoop = func() {
|
|||
setPhase(5);
|
||||
}
|
||||
|
||||
if (!gnd and !(FWC.Monostable.phase5.getBoolValue() and FWC.Monostable.phase5Output.getBoolValue()) and !(FWC.Monostable.phase7.getBoolValue() and FWC.Monostable.phase7Output.getBoolValue())) {
|
||||
if (!FWC.Logic.gnd.getValue() and FWC.Timer.gnd2Sec.getValue() != 1 and !(FWC.Monostable.phase5.getBoolValue() and FWC.Monostable.phase5Output.getBoolValue()) and !(FWC.Monostable.phase7.getBoolValue() and FWC.Monostable.phase7Output.getBoolValue())) {
|
||||
setPhase(6);
|
||||
}
|
||||
|
||||
|
@ -239,15 +213,15 @@ var phaseLoop = func() {
|
|||
setPhase(7);
|
||||
}
|
||||
|
||||
if (!FWC.toPower.getBoolValue() and FWC.speed80.getBoolValue() and gnd) {
|
||||
if (!FWC.toPower.getBoolValue() and FWC.speed80.getBoolValue() and (FWC.Logic.gnd.getBoolValue() or FWC.Timer.gnd2Sec.getValue == 1)) {
|
||||
setPhase(8);
|
||||
}
|
||||
|
||||
if (FWC.Flipflop.phase2Output.getBoolValue() and (gnd and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and FWC.Timer.eng1or2.getBoolValue()) {
|
||||
if (FWC.Flipflop.phase2Output.getBoolValue() and (FWC.Logic.gnd.getBoolValue() and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and FWC.Timer.eng1or2.getBoolValue()) {
|
||||
setPhase(9);
|
||||
}
|
||||
|
||||
if ((gnd and twoEngOff and myPhase == 9) and FWC.Monostable.phase1Output.getBoolValue()) {
|
||||
if ((FWC.Logic.gnd.getBoolValue() and twoEngOff and myPhase == 9) and FWC.Monostable.phase1Output.getBoolValue()) {
|
||||
setPhase(10);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
#============================ Tyre Smoke ===================================
|
||||
aircraft.tyresmoke_system.new(0, 1, 2);
|
||||
|
||||
aircraft.rain.init();
|
161
Nasal/Effects/icing.nas
Normal file
|
@ -0,0 +1,161 @@
|
|||
# A3XX Icing System
|
||||
# Jonathan Redpath (legoboyvdlp)
|
||||
|
||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
|
||||
|
||||
### Ice sensitive components definition.
|
||||
var Iceable = {
|
||||
new: func(node) {
|
||||
var m = { parents: [Iceable] };
|
||||
m.ice_inches = node.getNode("ice-inches", 1);
|
||||
m.sensitivity = node.getNode("sensitivity", 1);
|
||||
|
||||
var deice_prop = node.getValue("salvage-control");
|
||||
m.deice = deice_prop ? props.globals.getNode(deice_prop, 1) : nil;
|
||||
var output_prop = node.getValue("output-property");
|
||||
m.output = output_prop ? props.globals.getNode(output_prop, 1): nil;
|
||||
|
||||
return m;
|
||||
},
|
||||
|
||||
update: func(factor, melt) {
|
||||
var icing = me.ice_inches.getValue();
|
||||
if(me.deice != nil and me.deice.getBoolValue()) {
|
||||
icing += melt;
|
||||
} else {
|
||||
icing += factor * me.sensitivity.getValue();
|
||||
}
|
||||
if(icing < 0) icing = 0;
|
||||
|
||||
me.ice_inches.setValue(icing);
|
||||
if(me.output != nil) me.output.setValue(icing);
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
### Icing parameters computation.
|
||||
# Environmental parameters of the icing model.
|
||||
var environment = {
|
||||
dewpoint: props.globals.getNode("/environment/dewpoint-degc"),
|
||||
temperature: props.globals.getNode("/environment/temperature-degc"),
|
||||
visibility: props.globals.getNode("/environment/effective-visibility-m"),
|
||||
visibLclWx: props.globals.getNode("/environment/visibility-m"),
|
||||
};
|
||||
|
||||
var effects = {
|
||||
frost_inch: props.globals.getNode("/environment/aircraft-effects/frost-inch", 1),
|
||||
frost_norm: props.globals.getNode("/environment/aircraft-effects/frost-level"),
|
||||
};
|
||||
|
||||
|
||||
# Icing factor computation.
|
||||
|
||||
var severity_factor_table = [
|
||||
-0.00000166,
|
||||
0.00000277,
|
||||
0.00000277,
|
||||
0.00000554,
|
||||
0.00001108,
|
||||
0.00002216,
|
||||
];
|
||||
|
||||
var melt_factor = -0.00005;
|
||||
|
||||
var temperature = 0;
|
||||
var spread = 0;
|
||||
var icingCond = 0;
|
||||
var severity = 0;
|
||||
|
||||
var icing_factor = func() {
|
||||
temperature = environment.temperature.getValue();
|
||||
|
||||
# Do we create ice?
|
||||
spread = temperature - environment.dewpoint.getValue();
|
||||
# freezing fog or low temp and below dp or in advanced wx cloud
|
||||
icingCond = ((spread < 0.1 or environment.visibility.getValue() < 1000 or environment.visibLclWx.getValue() < 5000)
|
||||
and temperature < 0);
|
||||
|
||||
severity = 0;
|
||||
if (icingCond) {
|
||||
if (temperature >= -2) {
|
||||
severity = 1;
|
||||
} else if (temperature >= -12) {
|
||||
severity = 3;
|
||||
} else if (temperature >= -30) {
|
||||
severity = 5;
|
||||
} else if (temperature >= -40) {
|
||||
severity = 3;
|
||||
} else if (temperature >= -99) {
|
||||
severity = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return severity_factor_table[severity];
|
||||
}
|
||||
|
||||
|
||||
var speed = 0;
|
||||
var windowprobe = 0;
|
||||
var wingBtn = 0;
|
||||
var wingFault = 0;
|
||||
var PSI = 0;
|
||||
var wowl = 0;
|
||||
var wowr = 0;
|
||||
var PitotIcing = 0;
|
||||
var PitotFailed = 0;
|
||||
var lengBtn = 0;
|
||||
var lengFault = 0;
|
||||
var rengBtn = 0;
|
||||
var rengFault = 0;
|
||||
var WingHasBeenTurnedOff = 0;
|
||||
var GroundModeFinished = 0;
|
||||
var windowprb = 0;
|
||||
var stateL = 0;
|
||||
var stateR = 0;
|
||||
|
||||
var iceables = [];
|
||||
|
||||
var PitotIcing = [props.globals.getNode("/systems/pitot[0]/icing"),props.globals.getNode("/systems/pitot[1]/icing"),props.globals.getNode("/systems/pitot[2]/icing")];
|
||||
var PitotServicable = [props.globals.getNode("/systems/pitot[0]/serviceable", 1),props.globals.getNode("/systems/pitot[1]/serviceable", 1),props.globals.getNode("/systems/pitot[2]/serviceable"), 1];
|
||||
|
||||
var icingInit = func {
|
||||
iceables = props.globals.getNode("/sim/model/icing", 1).getChildren("iceable");
|
||||
forindex(var i; iceables) {
|
||||
iceables[i] = Iceable.new(iceables[i]);
|
||||
}
|
||||
|
||||
icing_timer.start();
|
||||
}
|
||||
|
||||
var icingModel = func {
|
||||
var factor = icing_factor();
|
||||
foreach(iceable; iceables) {
|
||||
iceable.update(factor, melt_factor);
|
||||
}
|
||||
|
||||
effects.frost_norm.setDoubleValue(effects.frost_inch.getValue() * 50);
|
||||
|
||||
for (var i = 0; i <= 2; i = i + 1) {
|
||||
if (PitotIcing[i].getValue() > 0.03) {
|
||||
if (PitotServicable[i].getBoolValue()) {
|
||||
PitotServicable[i].setBoolValue(0);
|
||||
}
|
||||
} else {
|
||||
if (!PitotServicable[i].getBoolValue()) {
|
||||
PitotServicable[i].setBoolValue(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
###################
|
||||
# Update Function #
|
||||
###################
|
||||
|
||||
var update_Icing = func {
|
||||
icingModel();
|
||||
}
|
||||
|
||||
var icing_timer = maketimer(0.2, update_Icing);
|
||||
icing_timer.simulatedTime = 1;
|
|
@ -3,7 +3,7 @@
|
|||
# Thanks to BAWV12 / Thorsten
|
||||
|
||||
|
||||
var als_on = props.globals.getNode("sim/rendering/shaders/skydome");
|
||||
var als_on = props.globals.getNode("/sim/rendering/shaders/skydome");
|
||||
var alt_agl = props.globals.getNode("position/gear-agl-ft");
|
||||
var cur_alt = 0;
|
||||
|
||||
|
@ -67,30 +67,30 @@ var light_manager = {
|
|||
flcpt: 0,
|
||||
prev_view : 1,
|
||||
|
||||
nd_ref_light1_x: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-x-m", 1),
|
||||
nd_ref_light1_y: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-y-m", 1),
|
||||
nd_ref_light1_z: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-z-m", 1),
|
||||
nd_ref_light1_dir: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/dir", 1),
|
||||
nd_ref_light1_x: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-x-m", 1),
|
||||
nd_ref_light1_y: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-y-m", 1),
|
||||
nd_ref_light1_z: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-z-m", 1),
|
||||
nd_ref_light1_dir: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/dir", 1),
|
||||
|
||||
nd_ref_light2_x: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-x-m[1]", 1),
|
||||
nd_ref_light2_y: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-y-m[1]", 1),
|
||||
nd_ref_light2_z: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-z-m[1]", 1),
|
||||
nd_ref_light2_dir: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/dir[1]", 1),
|
||||
nd_ref_light2_x: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-x-m[1]", 1),
|
||||
nd_ref_light2_y: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-y-m[1]", 1),
|
||||
nd_ref_light2_z: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-z-m[1]", 1),
|
||||
nd_ref_light2_dir: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/dir[1]", 1),
|
||||
|
||||
nd_ref_light3_x: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-x-m[2]", 1),
|
||||
nd_ref_light3_y: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-y-m[2]", 1),
|
||||
nd_ref_light3_z: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-z-m[2]", 1),
|
||||
nd_ref_light3_dir: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/dir[2]", 1),
|
||||
nd_ref_light3_x: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-x-m[2]", 1),
|
||||
nd_ref_light3_y: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-y-m[2]", 1),
|
||||
nd_ref_light3_z: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-z-m[2]", 1),
|
||||
nd_ref_light3_dir: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/dir[2]", 1),
|
||||
|
||||
nd_ref_light4_x: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-x-m[3]", 1),
|
||||
nd_ref_light4_y: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-y-m[3]", 1),
|
||||
nd_ref_light4_z: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-z-m[3]", 1),
|
||||
nd_ref_light4_dir: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/dir[3]", 1),
|
||||
nd_ref_light4_x: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-x-m[3]", 1),
|
||||
nd_ref_light4_y: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-y-m[3]", 1),
|
||||
nd_ref_light4_z: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-z-m[3]", 1),
|
||||
nd_ref_light4_dir: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/dir[3]", 1),
|
||||
|
||||
nd_ref_light5_x: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-x-m[4]", 1),
|
||||
nd_ref_light5_y: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-y-m[4]", 1),
|
||||
nd_ref_light5_z: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/eyerel-z-m[4]", 1),
|
||||
nd_ref_light5_dir: props.globals.getNode("sim/rendering/als-secondary-lights/lightspot/dir[4]", 1),
|
||||
nd_ref_light5_x: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-x-m[4]", 1),
|
||||
nd_ref_light5_y: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-y-m[4]", 1),
|
||||
nd_ref_light5_z: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/eyerel-z-m[4]", 1),
|
||||
nd_ref_light5_dir: props.globals.getNode("/sim/rendering/als-secondary-lights/lightspot/dir[4]", 1),
|
||||
|
||||
init: func {
|
||||
# define your lights here
|
||||
|
@ -146,22 +146,22 @@ var light_manager = {
|
|||
me.light5_size = 5;
|
||||
|
||||
|
||||
setprop("sim/rendering/als-secondary-lights/flash-radius", 13);
|
||||
setprop("/sim/rendering/als-secondary-lights/flash-radius", 13);
|
||||
|
||||
me.start();
|
||||
},
|
||||
|
||||
start: func {
|
||||
setprop("sim/rendering/als-secondary-lights/num-lightspots", 5);
|
||||
setprop("/sim/rendering/als-secondary-lights/num-lightspots", 5);
|
||||
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/size", me.light1_size);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/size[1]", me.light2_size);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/size[2]", me.light3_size);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/size[3]", me.light4_size);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/size[4]", me.light5_size);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/size", me.light1_size);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/size[1]", me.light2_size);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/size[2]", me.light3_size);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/size[3]", me.light4_size);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/size[4]", me.light5_size);
|
||||
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/stretch", me.light1_stretch);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/stretch[1]", me.light2_stretch);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/stretch", me.light1_stretch);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/stretch[1]", me.light2_stretch);
|
||||
|
||||
me.run = 1;
|
||||
me.update();
|
||||
|
@ -178,10 +178,10 @@ var light_manager = {
|
|||
|
||||
cur_alt = alt_agl.getValue();
|
||||
if (als_on.getValue() == 1 and alt_agl.getValue() < 100.0) {
|
||||
ll1 = getprop("controls/lighting/landing-lights[1]");
|
||||
ll2 = getprop("controls/lighting/landing-lights[2]");
|
||||
ll3 = getprop("sim/model/lights/nose-lights");
|
||||
nav = getprop("sim/model/lights/nav-lights");
|
||||
ll1 = getprop("/controls/lighting/landing-lights[1]");
|
||||
ll2 = getprop("/controls/lighting/landing-lights[2]");
|
||||
ll3 = getprop("/sim/model/lights/nose-lights");
|
||||
nav = getprop("/sim/model/lights/nav-lights");
|
||||
|
||||
var apos = geo.aircraft_position();
|
||||
var vpos = geo.viewer_position();
|
||||
|
@ -197,15 +197,15 @@ var light_manager = {
|
|||
var sh = math.sin(heading);
|
||||
var ch = math.cos(heading);
|
||||
|
||||
if ((ll1 == 1 and getprop("systems/electrical/bus/ac-1") != 0) and (ll2 == 1 and getprop("systems/electrical/bus/ac-2") !=0)) {
|
||||
if ((ll1 == 1 and systems.ELEC.Bus.ac1.getValue() != 0) and (ll2 == 1 and systems.ELEC.Bus.ac2.getValue() != 0)) {
|
||||
me.light1_ypos = 0.0;
|
||||
me.light1_setSize(16);
|
||||
me.light1_on();
|
||||
} else if (ll1 == 1 and getprop("systems/electrical/bus/ac-1") != 0) {
|
||||
} else if (ll1 == 1 and systems.ELEC.Bus.ac1.getValue() != 0) {
|
||||
me.light1_ypos = 3.0;
|
||||
me.light1_setSize(12);
|
||||
me.light1_on();
|
||||
} else if (ll2 == 1 and getprop("systems/electrical/bus/ac-2") !=0) {
|
||||
} else if (ll2 == 1 and systems.ELEC.Bus.ac2.getValue() != 0) {
|
||||
me.light1_ypos = -3.0;
|
||||
me.light1_setSize(12);
|
||||
me.light1_on();
|
||||
|
@ -320,89 +320,89 @@ var light_manager = {
|
|||
|
||||
light1_on : func {
|
||||
if (me.light1_is_on == 1) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r", me.light1_r);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g", me.light1_g);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b", me.light1_b);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r", me.light1_r);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g", me.light1_g);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b", me.light1_b);
|
||||
me.light1_is_on = 1;
|
||||
},
|
||||
|
||||
light1_off : func {
|
||||
if (me.light1_is_on == 0) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b", 0.0);
|
||||
me.light1_is_on = 0;
|
||||
},
|
||||
|
||||
light1_setSize : func(size) {
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/size[0]", size);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/size[0]", size);
|
||||
},
|
||||
|
||||
light2_on : func {
|
||||
if (me.light2_is_on == 1) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r[1]", me.light2_r);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g[1]", me.light2_g);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b[1]", me.light2_b);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r[1]", me.light2_r);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g[1]", me.light2_g);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b[1]", me.light2_b);
|
||||
me.light2_is_on = 1;
|
||||
},
|
||||
|
||||
light2_off : func {
|
||||
if (me.light2_is_on == 0) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r[1]", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g[1]", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b[1]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r[1]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g[1]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b[1]", 0.0);
|
||||
me.light2_is_on = 0;
|
||||
},
|
||||
|
||||
light2_setSize : func(size) {
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/size[1]", size);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/size[1]", size);
|
||||
},
|
||||
|
||||
light3_on : func {
|
||||
if (me.light3_is_on == 1) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r[2]", me.light3_r);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g[2]", me.light3_g);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b[2]", me.light3_b);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r[2]", me.light3_r);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g[2]", me.light3_g);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b[2]", me.light3_b);
|
||||
me.light3_is_on = 1;
|
||||
},
|
||||
|
||||
light3_off : func {
|
||||
if (me.light3_is_on == 0) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r[2]", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g[2]", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b[2]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r[2]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g[2]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b[2]", 0.0);
|
||||
me.light3_is_on = 0;
|
||||
},
|
||||
|
||||
light4_on : func {
|
||||
if (me.light4_is_on == 1) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r[3]", me.light4_r);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g[3]", me.light4_g);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b[3]", me.light4_b);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r[3]", me.light4_r);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g[3]", me.light4_g);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b[3]", me.light4_b);
|
||||
me.light4_is_on = 1;
|
||||
},
|
||||
|
||||
light4_off : func {
|
||||
if (me.light4_is_on == 0) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r[3]", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g[3]", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b[3]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r[3]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g[3]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b[3]", 0.0);
|
||||
me.light4_is_on = 0;
|
||||
},
|
||||
|
||||
light5_on : func {
|
||||
if (me.light5_is_on == 1) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r[4]", me.light5_r);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g[4]", me.light5_g);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b[4]", me.light5_b);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r[4]", me.light5_r);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g[4]", me.light5_g);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b[4]", me.light5_b);
|
||||
me.light5_is_on = 1;
|
||||
},
|
||||
|
||||
light5_off : func {
|
||||
if (me.light5_is_on == 0) {return;}
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-r[4]", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-g[4]", 0.0);
|
||||
setprop("sim/rendering/als-secondary-lights/lightspot/lightspot-b[4]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-r[4]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-g[4]", 0.0);
|
||||
setprop("/sim/rendering/als-secondary-lights/lightspot/lightspot-b[4]", 0.0);
|
||||
me.light5_is_on = 0;
|
||||
},
|
||||
};
|
|
@ -38,26 +38,26 @@ var thunder_listener = func {
|
|||
var lightning_distance_norm = std.min(1.0, 1 / math.pow(lightning_distance / 5000.0, 2));
|
||||
|
||||
settimer(func {
|
||||
var thunder1 = getprop("sim/sound/thunder1");
|
||||
var thunder2 = getprop("sim/sound/thunder2");
|
||||
var thunder3 = getprop("sim/sound/thunder3");
|
||||
var thunder4 = getprop("sim/sound/thunder4");
|
||||
var vol = getprop("sim/current-view/internal");
|
||||
var thunder1 = getprop("/sim/sound/thunder1");
|
||||
var thunder2 = getprop("/sim/sound/thunder2");
|
||||
var thunder3 = getprop("/sim/sound/thunder3");
|
||||
var thunder4 = getprop("/sim/sound/thunder4");
|
||||
var vol = getprop("/sim/current-view/internal");
|
||||
if (!thunder1) {
|
||||
thunderCalls = 1;
|
||||
setprop("sim/sound/dist-thunder1", lightning_distance_norm * vol * 1.75);
|
||||
setprop("/sim/sound/dist-thunder1", lightning_distance_norm * vol * 1.75);
|
||||
}
|
||||
else if (!thunder2) {
|
||||
thunderCalls = 2;
|
||||
setprop("sim/sound/dist-thunder2", lightning_distance_norm * vol * 1.75);
|
||||
setprop("/sim/sound/dist-thunder2", lightning_distance_norm * vol * 1.75);
|
||||
}
|
||||
else if (!thunder3) {
|
||||
thunderCalls = 3;
|
||||
setprop("sim/sound/dist-thunder3", lightning_distance_norm * vol * 1.75);
|
||||
setprop("/sim/sound/dist-thunder3", lightning_distance_norm * vol * 1.75);
|
||||
}
|
||||
else if (!thunder4) {
|
||||
thunderCalls = 4;
|
||||
setprop("sim/sound/dist-thunder4", lightning_distance_norm * vol * 1.75);
|
||||
setprop("/sim/sound/dist-thunder4", lightning_distance_norm * vol * 1.75);
|
||||
}
|
||||
else
|
||||
return;
|
||||
|
|
|
@ -3,90 +3,87 @@
|
|||
|
||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
|
||||
# If All ELACs Fail, Alternate Law
|
||||
|
||||
var mmoIAS = 0;
|
||||
var cas = 0;
|
||||
|
||||
var elac1_sw = 0;
|
||||
var elac2_sw = 0;
|
||||
var sec1_sw = 0;
|
||||
var sec2_sw = 0;
|
||||
var sec3_sw = 0;
|
||||
var fac1_sw = 0;
|
||||
var fac2_sw = 0;
|
||||
var elac1 = 0;
|
||||
var elac2 = 0;
|
||||
var sec1 = 0;
|
||||
var sec2 = 0;
|
||||
var sec3 = 0;
|
||||
var fac1 = 0;
|
||||
var fac2 = 0;
|
||||
|
||||
var elac1_fail = 0;
|
||||
var elac2_fail = 0;
|
||||
var sec1_fail = 0;
|
||||
var sec2_fail = 0;
|
||||
var sec3_fail = 0;
|
||||
var fac1_fail = 0;
|
||||
var fac2_fail = 0;
|
||||
|
||||
var ac_ess = 0;
|
||||
var dc_ess = 0;
|
||||
var dc_ess_shed = 0;
|
||||
var ac1 = 0;
|
||||
var ac2 = 0;
|
||||
var dc1 = 0;
|
||||
var dc2 = 0;
|
||||
var dcHot1 = 0;
|
||||
var dcHot2 = 0;
|
||||
var blue = 0;
|
||||
var green = 0;
|
||||
var yellow = 0;
|
||||
var ail = 0;
|
||||
var roll = 0;
|
||||
var rollback = 0;
|
||||
var battery1_sw = 0;
|
||||
var battery2_sw = 0;
|
||||
|
||||
var law = 0;
|
||||
var lawyaw = 0;
|
||||
|
||||
var FBW = {
|
||||
degradeLaw: props.globals.getNode("it-fbw/degrade-law"),
|
||||
activeLaw: props.globals.getNode("it-fbw/law"),
|
||||
override: props.globals.getNode("it-fbw/override"),
|
||||
rollBack: props.globals.getNode("it-fbw/roll-back"),
|
||||
rollLim: props.globals.getNode("it-fbw/roll-lim"),
|
||||
apOff: 0,
|
||||
degradeLaw: props.globals.getNode("/it-fbw/degrade-law"),
|
||||
degradeYawLaw: props.globals.getNode("/it-fbw/degrade-yaw-law"),
|
||||
activeLaw: props.globals.getNode("/it-fbw/law"),
|
||||
activeYawLaw: props.globals.getNode("/it-fbw/yaw-law"),
|
||||
override: props.globals.getNode("/it-fbw/override"),
|
||||
rollBack: props.globals.getNode("/it-fbw/roll-back"),
|
||||
rollLim: props.globals.getNode("/it-fbw/roll-lim"),
|
||||
yawdamper: props.globals.getNode("/systems/fctl/yawdamper-active"),
|
||||
Computers: {
|
||||
elac1: props.globals.getNode("systems/fctl/elac1"),
|
||||
elac2: props.globals.getNode("systems/fctl/elac2"),
|
||||
sec1: props.globals.getNode("systems/fctl/sec1"),
|
||||
sec2: props.globals.getNode("systems/fctl/sec2"),
|
||||
sec3: props.globals.getNode("systems/fctl/sec3"),
|
||||
fac1: props.globals.getNode("systems/fctl/fac1"),
|
||||
fac2: props.globals.getNode("systems/fctl/fac2"),
|
||||
elac1: props.globals.getNode("/systems/fctl/elac1"),
|
||||
elac2: props.globals.getNode("/systems/fctl/elac2"),
|
||||
sec1: props.globals.getNode("/systems/fctl/sec1"),
|
||||
sec2: props.globals.getNode("/systems/fctl/sec2"),
|
||||
sec3: props.globals.getNode("/systems/fctl/sec3"),
|
||||
fac1: props.globals.getNode("/systems/fctl/fac1-healthy-signal"),
|
||||
fac2: props.globals.getNode("/systems/fctl/fac2-healthy-signal"),
|
||||
},
|
||||
Failures: {
|
||||
elac1: props.globals.getNode("systems/failures/fctl/elac1"),
|
||||
elac2: props.globals.getNode("systems/failures/fctl/elac2"),
|
||||
sec1: props.globals.getNode("systems/failures/fctl/sec1"),
|
||||
sec2: props.globals.getNode("systems/failures/fctl/sec2"),
|
||||
sec3: props.globals.getNode("systems/failures/fctl/sec3"),
|
||||
fac1: props.globals.getNode("systems/failures/fctl/fac1"),
|
||||
fac2: props.globals.getNode("systems/failures/fctl/fac2"),
|
||||
elac1: props.globals.getNode("/systems/failures/fctl/elac1"),
|
||||
elac2: props.globals.getNode("/systems/failures/fctl/elac2"),
|
||||
sec1: props.globals.getNode("/systems/failures/fctl/sec1"),
|
||||
sec2: props.globals.getNode("/systems/failures/fctl/sec2"),
|
||||
sec3: props.globals.getNode("/systems/failures/fctl/sec3"),
|
||||
fac1: props.globals.getNode("/systems/failures/fctl/fac1"),
|
||||
fac2: props.globals.getNode("/systems/failures/fctl/fac2"),
|
||||
spoilerl1: props.globals.getNode("/systems/failures/spoilers/spoiler-l1"),
|
||||
spoilerl2: props.globals.getNode("/systems/failures/spoilers/spoiler-l2"),
|
||||
spoilerl3: props.globals.getNode("/systems/failures/spoilers/spoiler-l3"),
|
||||
spoilerl4: props.globals.getNode("/systems/failures/spoilers/spoiler-l4"),
|
||||
spoilerl5: props.globals.getNode("/systems/failures/spoilers/spoiler-l5"),
|
||||
spoilerr1: props.globals.getNode("/systems/failures/spoilers/spoiler-r1"),
|
||||
spoilerr2: props.globals.getNode("/systems/failures/spoilers/spoiler-r2"),
|
||||
spoilerr3: props.globals.getNode("/systems/failures/spoilers/spoiler-r3"),
|
||||
spoilerr4: props.globals.getNode("/systems/failures/spoilers/spoiler-r4"),
|
||||
spoilerr5: props.globals.getNode("/systems/failures/spoilers/spoiler-r5"),
|
||||
yawDamper1: props.globals.getNode("/systems/failures/fctl/yaw-damper-1"),
|
||||
yawDamper2: props.globals.getNode("/systems/failures/fctl/yaw-damper-2"),
|
||||
},
|
||||
Lights: {
|
||||
elac1: props.globals.getNode("controls/fctl/lights/elac1-fault"),
|
||||
elac2: props.globals.getNode("controls/fctl/lights/elac2-fault"),
|
||||
sec1: props.globals.getNode("controls/fctl/lights/sec1-fault"),
|
||||
sec2: props.globals.getNode("controls/fctl/lights/sec2-fault"),
|
||||
sec2: props.globals.getNode("controls/fctl/lights/sec3-fault"),
|
||||
fac1: props.globals.getNode("controls/fctl/lights/fac1-fault"),
|
||||
fac2: props.globals.getNode("controls/fctl/lights/fac2-fault"),
|
||||
elac1: props.globals.getNode("/systems/fctl/lights/elac1-fault"),
|
||||
elac2: props.globals.getNode("/systems/fctl/lights/elac2-fault"),
|
||||
sec1: props.globals.getNode("/systems/fctl/lights/sec1-fault"),
|
||||
sec2: props.globals.getNode("/systems/fctl/lights/sec2-fault"),
|
||||
sec2: props.globals.getNode("/systems/fctl/lights/sec3-fault"),
|
||||
fac1: props.globals.getNode("/systems/fctl/lights/fac1-fault"),
|
||||
fac2: props.globals.getNode("/systems/fctl/lights/fac2-fault"),
|
||||
},
|
||||
Protections: {
|
||||
overspeedRoll: props.globals.getNode("it-fbw/protections/overspeed-roll-back"),
|
||||
overspeedRoll: props.globals.getNode("/it-fbw/protections/overspeed-roll-back"),
|
||||
overspeed: props.globals.getNode("/it-fbw/protections/overspeed"),
|
||||
},
|
||||
Switches: {
|
||||
elac1Sw: props.globals.getNode("controls/fctl/switches/elac1"),
|
||||
elac2Sw: props.globals.getNode("controls/fctl/switches/elac2"),
|
||||
sec1Sw: props.globals.getNode("controls/fctl/switches/sec1"),
|
||||
sec2Sw: props.globals.getNode("controls/fctl/switches/sec2"),
|
||||
sec3Sw: props.globals.getNode("controls/fctl/switches/sec3"),
|
||||
fac1Sw: props.globals.getNode("controls/fctl/switches/fac1"),
|
||||
fac2Sw: props.globals.getNode("controls/fctl/switches/fac2"),
|
||||
elac1Sw: props.globals.getNode("/controls/fctl/switches/elac1"),
|
||||
elac2Sw: props.globals.getNode("/controls/fctl/switches/elac2"),
|
||||
sec1Sw: props.globals.getNode("/controls/fctl/switches/sec1"),
|
||||
sec2Sw: props.globals.getNode("/controls/fctl/switches/sec2"),
|
||||
sec3Sw: props.globals.getNode("/controls/fctl/switches/sec3"),
|
||||
fac1Sw: props.globals.getNode("/controls/fctl/switches/fac1"),
|
||||
fac2Sw: props.globals.getNode("/controls/fctl/switches/fac2"),
|
||||
},
|
||||
init: func() {
|
||||
if (updatet.isRunning) {
|
||||
|
@ -115,6 +112,7 @@ var FBW = {
|
|||
me.degradeLaw.setValue(0);
|
||||
me.activeLaw.setValue(0);
|
||||
me.override.setValue(0);
|
||||
me.apOff = 0;
|
||||
|
||||
if (!updatet.isRunning) {
|
||||
updatet.start();
|
||||
|
@ -131,170 +129,98 @@ var FBW = {
|
|||
me.Failures.sec3.setBoolValue(0);
|
||||
me.Failures.fac1.setBoolValue(0);
|
||||
me.Failures.fac2.setBoolValue(0);
|
||||
me.Failures.spoilerl1.setBoolValue(0);
|
||||
me.Failures.spoilerl2.setBoolValue(0);
|
||||
me.Failures.spoilerl3.setBoolValue(0);
|
||||
me.Failures.spoilerl4.setBoolValue(0);
|
||||
me.Failures.spoilerl5.setBoolValue(0);
|
||||
me.Failures.spoilerr1.setBoolValue(0);
|
||||
me.Failures.spoilerr2.setBoolValue(0);
|
||||
me.Failures.spoilerr3.setBoolValue(0);
|
||||
me.Failures.spoilerr4.setBoolValue(0);
|
||||
me.Failures.spoilerr5.setBoolValue(0);
|
||||
me.Failures.yawDamper1.setBoolValue(0);
|
||||
me.Failures.yawDamper2.setBoolValue(0);
|
||||
},
|
||||
};
|
||||
|
||||
var update_loop = func {
|
||||
elac1_sw = FBW.Switches.elac1Sw.getValue();
|
||||
elac2_sw = FBW.Switches.elac2Sw.getValue();
|
||||
sec1_sw = FBW.Switches.sec1Sw.getValue();
|
||||
sec2_sw = FBW.Switches.sec2Sw.getValue();
|
||||
sec3_sw = FBW.Switches.sec3Sw.getValue();
|
||||
fac1_sw = FBW.Switches.fac1Sw.getValue();
|
||||
fac2_sw = FBW.Switches.fac2Sw.getValue();
|
||||
|
||||
elac1_fail = FBW.Failures.elac1.getValue();
|
||||
elac2_fail = FBW.Failures.elac2.getValue();
|
||||
sec1_fail = FBW.Failures.sec1.getValue();
|
||||
sec2_fail = FBW.Failures.sec2.getValue();
|
||||
sec3_fail = FBW.Failures.sec3.getValue();
|
||||
fac1_fail = FBW.Failures.fac1.getValue();
|
||||
fac2_fail = FBW.Failures.fac2.getValue();
|
||||
|
||||
ac_ess = systems.ELEC.Bus.acEss.getValue();
|
||||
dc_ess = systems.ELEC.Bus.dcEss.getValue();
|
||||
dc_ess_shed = systems.ELEC.Bus.dcEssShed.getValue();
|
||||
ac1 = systems.ELEC.Bus.ac1.getValue();
|
||||
ac2 = systems.ELEC.Bus.ac2.getValue();
|
||||
dc1 = systems.ELEC.Bus.dc1.getValue();
|
||||
dc2 = systems.ELEC.Bus.dc2.getValue();
|
||||
dcHot1 = systems.ELEC.Bus.dcHot1.getValue();
|
||||
dcHot2 = systems.ELEC.Bus.dcHot2.getValue();
|
||||
battery1_sw = systems.ELEC.Switch.bat1.getValue();
|
||||
battery2_sw = systems.ELEC.Switch.bat2.getValue();
|
||||
|
||||
if (elac1_sw and !elac1_fail and (dc_ess >= 25 or dcHot1 >= 25)) {
|
||||
FBW.Computers.elac1.setValue(1);
|
||||
FBW.Lights.elac1.setValue(0);
|
||||
} else if (elac1_sw and (elac1_fail or (dc_ess < 25 and dcHot1 < 25))) {
|
||||
FBW.Computers.elac1.setValue(0);
|
||||
FBW.Lights.elac1.setValue(1);
|
||||
}
|
||||
|
||||
if (elac2_sw and !elac2_fail and (dc2 >= 25 or dcHot2 >= 25)) {
|
||||
FBW.Computers.elac2.setValue(1);
|
||||
FBW.Lights.elac2.setValue(0);
|
||||
} else if (elac1_sw and (elac2_fail or (dc2 < 25 and dcHot2 < 25))) {
|
||||
FBW.Computers.elac2.setValue(0);
|
||||
FBW.Lights.elac2.setValue(1);
|
||||
}
|
||||
|
||||
if (sec1_sw and !sec1_fail and dc_ess >= 25) {
|
||||
setprop("systems/fctl/sec1", 1);
|
||||
setprop("systems/failures/spoiler-l3", 0);
|
||||
setprop("systems/failures/spoiler-r3", 0);
|
||||
setprop("systems/failures/spoiler-l4", 0);
|
||||
setprop("systems/failures/spoiler-r4", 0);
|
||||
} else {
|
||||
setprop("systems/fctl/sec1", 0);
|
||||
setprop("systems/failures/spoiler-l3", 1);
|
||||
setprop("systems/failures/spoiler-r3", 1);
|
||||
setprop("systems/failures/spoiler-l4", 1);
|
||||
setprop("systems/failures/spoiler-r4", 1);
|
||||
}
|
||||
|
||||
if (sec2_sw and !sec2_fail and dc2 >= 25) {
|
||||
setprop("systems/fctl/sec2", 1);
|
||||
setprop("systems/failures/spoiler-l5", 0);
|
||||
setprop("systems/failures/spoiler-r5", 0);
|
||||
} else {
|
||||
setprop("systems/fctl/sec2", 0);
|
||||
setprop("systems/failures/spoiler-l5", 1);
|
||||
setprop("systems/failures/spoiler-r5", 1);
|
||||
}
|
||||
|
||||
if (sec3_sw and !sec3_fail and dc2 >= 25) {
|
||||
setprop("systems/fctl/sec3", 1);
|
||||
setprop("systems/failures/spoiler-l1", 0);
|
||||
setprop("systems/failures/spoiler-r1", 0);
|
||||
setprop("systems/failures/spoiler-l2", 0);
|
||||
setprop("systems/failures/spoiler-r2", 0);
|
||||
} else {
|
||||
setprop("systems/fctl/sec3", 0);
|
||||
setprop("systems/failures/spoiler-l1", 1);
|
||||
setprop("systems/failures/spoiler-r1", 1);
|
||||
setprop("systems/failures/spoiler-l2", 1);
|
||||
setprop("systems/failures/spoiler-r2", 1);
|
||||
}
|
||||
|
||||
if (fac1_sw and !fac1_fail and (ac_ess >= 110 or dc_ess_shed >= 25)) {
|
||||
setprop("systems/fctl/fac1", 1);
|
||||
setprop("systems/failures/rudder", 0);
|
||||
setprop("systems/failures/fac1-fault", 0);
|
||||
} else if (fac1_sw and (battery1_sw or battery2_sw) and (fac1_fail or ac_ess < 110 or dc_ess_shed < 25)) {
|
||||
setprop("systems/failures/fac1-fault", 1);
|
||||
setprop("systems/fctl/fac1", 0);
|
||||
if (!fac2_sw or fac2_fail) {
|
||||
setprop("systems/failures/rudder", 1);
|
||||
}
|
||||
} else {
|
||||
setprop("systems/failures/fac1-fault", 0);
|
||||
setprop("systems/fctl/fac1", 0);
|
||||
if (!fac2_sw or fac2_fail) {
|
||||
setprop("systems/failures/rudder", 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (fac2_sw and !fac2_fail and (ac2 >= 110 or dc2 >= 25)) {
|
||||
setprop("systems/fctl/fac2", 1);
|
||||
setprop("systems/failures/fac2-fault", 0);
|
||||
} else if (fac2_sw and (fac2_fail or ac2 < 110 or dc2 < 25)) {
|
||||
setprop("systems/failures/fac2-fault", 1);
|
||||
setprop("systems/fctl/fac2", 0);
|
||||
if (!fac1_sw or fac1_fail) {
|
||||
setprop("systems/failures/rudder", 1);
|
||||
}
|
||||
} else {
|
||||
setprop("systems/fctl/fac2", 0);
|
||||
setprop("systems/failures/fac2-fault", 0);
|
||||
if (!fac1_sw or fac1_fail) {
|
||||
setprop("systems/failures/rudder", 1);
|
||||
}
|
||||
}
|
||||
|
||||
var elac1 = getprop("systems/fctl/elac1");
|
||||
var elac2 = getprop("systems/fctl/elac2");
|
||||
var sec1 = getprop("systems/fctl/sec1");
|
||||
var sec2 = getprop("systems/fctl/sec2");
|
||||
var sec3 = getprop("systems/fctl/sec3");
|
||||
var fac1 = getprop("systems/fctl/fac1");
|
||||
var fac2 = getprop("systems/fctl/fac2");
|
||||
elac1 = FBW.Computers.elac1.getBoolValue();
|
||||
elac2 = FBW.Computers.elac2.getBoolValue();
|
||||
sec1 = FBW.Computers.sec1.getBoolValue();
|
||||
sec2 = FBW.Computers.sec2.getBoolValue();
|
||||
sec3 = FBW.Computers.sec3.getBoolValue();
|
||||
fac1 = FBW.Computers.fac1.getBoolValue();
|
||||
fac2 = FBW.Computers.fac2.getBoolValue();
|
||||
law = FBW.activeLaw.getValue();
|
||||
lawyaw = FBW.activeYawLaw.getValue();
|
||||
|
||||
# Degrade logic, all failures which degrade FBW need to go here. -JD
|
||||
blue = systems.HYD.Psi.blue.getValue();
|
||||
green = systems.HYD.Psi.green.getValue();
|
||||
yellow = systems.HYD.Psi.yellow.getValue();
|
||||
if (getprop("gear/gear[1]/wow") == 0 and getprop("gear/gear[2]/wow") == 0) {
|
||||
if (!pts.Gear.wow[1].getBoolValue() and !pts.Gear.wow[2].getBoolValue()) {
|
||||
if (!elac1 and !elac2) {
|
||||
if (lawyaw == 0) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
fcu.apOff("hard", 0);
|
||||
fcu.athrOff("hard");
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if (getprop("systems/electrical/some-electric-thingie/emer-elec-config") == 1) {
|
||||
if ((!elac1 and elac2 and ((green < 1500 and yellow >= 1500) or (green >= 1500 and yellow < 1500))) or (!elac2 and elac1 and blue < 1500)) {
|
||||
if (lawyaw == 0) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
fcu.apOff("hard", 0);
|
||||
fcu.athrOff("hard");
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if ((blue >= 1500 and green < 1500 and yellow < 1500) or (blue < 1500 and green < 1500 and yellow >= 1500)) {
|
||||
if (law == 0 or law == 1) {
|
||||
FBW.degradeLaw.setValue(2);
|
||||
fcu.apOff("hard", 0);
|
||||
fcu.athrOff("hard");
|
||||
if (!sec1 and !sec2 and !sec3) {
|
||||
if (lawyaw == 0) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
}
|
||||
}
|
||||
if (dc_ess < 25 and dc2 < 25) {
|
||||
if (systems.ELEC.EmerElec.getBoolValue()) {
|
||||
if (lawyaw == 0 or lawyaw == 1) {
|
||||
} elsif (fac1 and lawyaw == 2) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if (blue < 1500 and green < 1500 and yellow >= 1500) {
|
||||
if (lawyaw == 0) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if ((!fac1 and !fac2) or !FBW.yawdamper.getValue() or (blue >= 1500 and green < 1500 and yellow < 1500)) {
|
||||
if (lawyaw == 0 or lawyaw == 1) {
|
||||
FBW.degradeYawLaw.setValue(2);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if (!elac1 and !elac2 and !sec1 and !sec2 and !sec3 and !fac1 and !fac2) {
|
||||
FBW.degradeLaw.setValue(3);
|
||||
fcu.apOff("hard", 0);
|
||||
fcu.athrOff("hard");
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (getprop("controls/gear/gear-down") == 1 and getprop("it-autoflight/output/ap1") == 0 and getprop("it-autoflight/output/ap2") == 0) {
|
||||
if (pts.Controls.Gear.gearDown.getBoolValue() and !fmgc.Input.ap1.getBoolValue() and !fmgc.Input.ap2.getBoolValue()) {
|
||||
if (law == 1) {
|
||||
FBW.degradeLaw.setValue(2);
|
||||
}
|
||||
|
@ -304,27 +230,28 @@ var update_loop = func {
|
|||
law = FBW.activeLaw.getValue();
|
||||
|
||||
# Mech Backup can always return to direct, if it can.
|
||||
if (law == 3 and ac_ess >= 110 and (green >= 1500 or blue >= 1500 or yellow >= 1500)) {
|
||||
if (law == 3 and (elac1 or elac2 or sec1 or sec2 or sec3 or fac1 or fac2) and systems.ELEC.Bus.acEss.getValue() >= 110 and (green >= 1500 or blue >= 1500 or yellow >= 1500)) {
|
||||
FBW.degradeLaw.setValue(2);
|
||||
}
|
||||
|
||||
mmoIAS = (getprop("instrumentation/airspeed-indicator/indicated-speed-kt") / getprop("instrumentation/airspeed-indicator/indicated-mach")) * 0.82;
|
||||
cas = pts.Instrumentation.AirspeedIndicator.indicatedSpdKt.getValue();
|
||||
mmoIAS = (cas / pts.Instrumentation.AirspeedIndicator.indicatedMach.getValue()) * 0.82;
|
||||
if (mmoIAS < 350) {
|
||||
setprop("it-fbw/speeds/vmo-mmo", mmoIAS);
|
||||
fmgc.FMGCInternal.vmo_mmo = mmoIAS;
|
||||
} else {
|
||||
setprop("it-fbw/speeds/vmo-mmo", 350);
|
||||
fmgc.FMGCInternal.vmo_mmo = 350;
|
||||
}
|
||||
|
||||
if (getprop("instrumentation/airspeed-indicator/indicated-speed-kt") > getprop("it-fbw/speeds/vmo-mmo") + 6 and (law == 0 or law == 1)) {
|
||||
if (getprop("it-autoflight/input/ap1") == 1 or getprop("it-autoflight/input/ap2") == 1) {
|
||||
if (cas > (fmgc.FMGCInternal.vmo_mmo + 6) and (law == 0 or law == 1)) {
|
||||
if (fmgc.Input.ap1.getBoolValue() or fmgc.Input.ap2.getBoolValue()) {
|
||||
fcu.apOff("hard", 0);
|
||||
}
|
||||
if (getprop("it-fbw/protections/overspeed") != 1) {
|
||||
setprop("it-fbw/protections/overspeed", 1);
|
||||
if (!FBW.Protections.overspeed.getBoolValue()) {
|
||||
FBW.Protections.overspeed.setBoolValue(1);
|
||||
}
|
||||
} else {
|
||||
if (getprop("it-fbw/protections/overspeed") != 0) {
|
||||
setprop("it-fbw/protections/overspeed", 0);
|
||||
if (FBW.Protections.overspeed.getBoolValue()) {
|
||||
FBW.Protections.overspeed.setBoolValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -361,7 +288,7 @@ var fbw_loop = func {
|
|||
FBW.Protections.overspeedRoll.setValue(1);
|
||||
}
|
||||
|
||||
if (getprop("it-fbw/override") == 0) {
|
||||
if (!FBW.override.getBoolValue()) {
|
||||
var active = FBW.activeLaw.getValue();
|
||||
var degrade = FBW.degradeLaw.getValue();
|
||||
if (degrade == 0) {
|
||||
|
@ -381,15 +308,69 @@ var fbw_loop = func {
|
|||
FBW.activeLaw.setValue(3);
|
||||
}
|
||||
}
|
||||
|
||||
active = FBW.activeYawLaw.getValue();
|
||||
degrade = FBW.degradeYawLaw.getValue();
|
||||
if (degrade == 0) {
|
||||
if (active != 0) {
|
||||
FBW.activeYawLaw.setValue(0);
|
||||
}
|
||||
} else if (degrade == 1) {
|
||||
if (active != 1) {
|
||||
FBW.activeYawLaw.setValue(1);
|
||||
}
|
||||
} else if (degrade == 2) {
|
||||
if (active != 2) {
|
||||
FBW.activeYawLaw.setValue(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (FBW.activeLaw.getValue() != 0) {
|
||||
if (getprop("it-autoflight/output/ap1") == 1 or getprop("it-autoflight/output/ap2") == 1) {
|
||||
if (FBW.apOff) {
|
||||
if (fmgc.Input.ap1.getBoolValue() or fmgc.Input.ap2.getBoolValue()) {
|
||||
fcu.apOff("hard", 0);
|
||||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setlistener("systems/fctl/sec1", func() {
|
||||
if (FBW.Computers.sec1.getBoolValue()) {
|
||||
FBW.Failures.spoilerl3.setBoolValue(0);
|
||||
FBW.Failures.spoilerr3.setBoolValue(0);
|
||||
FBW.Failures.spoilerl4.setBoolValue(0);
|
||||
FBW.Failures.spoilerr4.setBoolValue(0);
|
||||
} else {
|
||||
FBW.Failures.spoilerl3.setBoolValue(1);
|
||||
FBW.Failures.spoilerr3.setBoolValue(1);
|
||||
FBW.Failures.spoilerl4.setBoolValue(1);
|
||||
FBW.Failures.spoilerr4.setBoolValue(1);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("systems/fctl/sec2", func() {
|
||||
if (FBW.Computers.sec2.getBoolValue()) {
|
||||
FBW.Failures.spoilerl5.setBoolValue(0);
|
||||
FBW.Failures.spoilerr5.setBoolValue(0);
|
||||
} else {
|
||||
FBW.Failures.spoilerl5.setBoolValue(1);
|
||||
FBW.Failures.spoilerr5.setBoolValue(1);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("systems/fctl/sec3", func() {
|
||||
if (FBW.Computers.sec3.getBoolValue()) {
|
||||
FBW.Failures.spoilerl1.setBoolValue(0);
|
||||
FBW.Failures.spoilerr1.setBoolValue(0);
|
||||
FBW.Failures.spoilerl2.setBoolValue(0);
|
||||
FBW.Failures.spoilerr2.setBoolValue(0);
|
||||
} else {
|
||||
FBW.Failures.spoilerl1.setBoolValue(1);
|
||||
FBW.Failures.spoilerr1.setBoolValue(1);
|
||||
FBW.Failures.spoilerl2.setBoolValue(1);
|
||||
FBW.Failures.spoilerr2.setBoolValue(1);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
var updatet = maketimer(0.1, update_loop);
|
||||
var fbwt = maketimer(0.03, fbw_loop);
|
||||
|
|
|
@ -2,37 +2,37 @@
|
|||
# Copyright (c) 2020 Josh Davidson (Octal450), Jonathan Redpath (legoboyvdlp)
|
||||
|
||||
# Nodes
|
||||
var fd1 = props.globals.getNode("it-autoflight/output/fd1", 1);
|
||||
var fd2 = props.globals.getNode("it-autoflight/output/fd2", 1);
|
||||
var ap1 = props.globals.getNode("it-autoflight/output/ap1", 1);
|
||||
var ap2 = props.globals.getNode("it-autoflight/output/ap2", 1);
|
||||
var athr = props.globals.getNode("it-autoflight/output/athr", 1);
|
||||
var fd1Input = props.globals.getNode("it-autoflight/input/fd1", 1);
|
||||
var fd2Input = props.globals.getNode("it-autoflight/input/fd2", 1);
|
||||
var ap1Input = props.globals.getNode("it-autoflight/input/ap1", 1);
|
||||
var ap2Input = props.globals.getNode("it-autoflight/input/ap2", 1);
|
||||
var athrInput = props.globals.getNode("it-autoflight/input/athr", 1);
|
||||
var ktsMach = props.globals.getNode("it-autoflight/input/kts-mach", 1);
|
||||
var iasSet = props.globals.getNode("it-autoflight/input/spd-kts", 1);
|
||||
var machSet = props.globals.getNode("it-autoflight/input/spd-mach", 1);
|
||||
var hdgSet = props.globals.getNode("it-autoflight/input/hdg", 1);
|
||||
var altSet = props.globals.getNode("it-autoflight/input/alt", 1);
|
||||
var altSetMode = props.globals.getNode("it-autoflight/config/altitude-dial-mode", 1);
|
||||
var vsSet = props.globals.getNode("it-autoflight/input/vs", 1);
|
||||
var fpaSet = props.globals.getNode("it-autoflight/input/fpa", 1);
|
||||
var iasNow = props.globals.getNode("instrumentation/airspeed-indicator/indicated-speed-kt", 1);
|
||||
var machNow = props.globals.getNode("instrumentation/airspeed-indicator/indicated-mach", 1);
|
||||
var spdManaged = props.globals.getNode("it-autoflight/input/spd-managed", 1);
|
||||
var showHDG = props.globals.getNode("it-autoflight/custom/show-hdg", 1);
|
||||
var trkFpaSW = props.globals.getNode("it-autoflight/custom/trk-fpa", 1);
|
||||
var latMode = props.globals.getNode("it-autoflight/output/lat", 1);
|
||||
var vertMode = props.globals.getNode("it-autoflight/output/vert", 1);
|
||||
var fpaModeInput = props.globals.getNode("it-autoflight/input/fpa", 1);
|
||||
var latModeInput = props.globals.getNode("it-autoflight/input/lat", 1);
|
||||
var vertModeInput = props.globals.getNode("it-autoflight/input/vert", 1);
|
||||
var vsModeInput = props.globals.getNode("it-autoflight/input/vs", 1);
|
||||
var locArm = props.globals.getNode("it-autoflight/output/loc-armed", 1);
|
||||
var apprArm = props.globals.getNode("it-autoflight/output/appr-armed", 1);
|
||||
var fd1 = props.globals.getNode("/it-autoflight/output/fd1", 1);
|
||||
var fd2 = props.globals.getNode("/it-autoflight/output/fd2", 1);
|
||||
var ap1 = props.globals.getNode("/it-autoflight/output/ap1", 1);
|
||||
var ap2 = props.globals.getNode("/it-autoflight/output/ap2", 1);
|
||||
var athr = props.globals.getNode("/it-autoflight/output/athr", 1);
|
||||
var fd1Input = props.globals.getNode("/it-autoflight/input/fd1", 1);
|
||||
var fd2Input = props.globals.getNode("/it-autoflight/input/fd2", 1);
|
||||
var ap1Input = props.globals.getNode("/it-autoflight/input/ap1", 1);
|
||||
var ap2Input = props.globals.getNode("/it-autoflight/input/ap2", 1);
|
||||
var athrInput = props.globals.getNode("/it-autoflight/input/athr", 1);
|
||||
var ktsMach = props.globals.getNode("/it-autoflight/input/kts-mach", 1);
|
||||
var iasSet = props.globals.getNode("/it-autoflight/input/kts", 1);
|
||||
var machSet = props.globals.getNode("/it-autoflight/input/mach", 1);
|
||||
var hdgSet = props.globals.getNode("/it-autoflight/input/hdg", 1);
|
||||
var altSet = props.globals.getNode("/it-autoflight/input/alt", 1);
|
||||
var altSetMode = props.globals.getNode("/it-autoflight/config/altitude-dial-mode", 1);
|
||||
var vsSet = props.globals.getNode("/it-autoflight/input/vs", 1);
|
||||
var fpaSet = props.globals.getNode("/it-autoflight/input/fpa", 1);
|
||||
var iasNow = props.globals.getNode("/instrumentation/airspeed-indicator/indicated-speed-kt", 1);
|
||||
var machNow = props.globals.getNode("/instrumentation/airspeed-indicator/indicated-mach", 1);
|
||||
var spdManaged = props.globals.getNode("/it-autoflight/input/spd-managed", 1);
|
||||
var showHDG = props.globals.getNode("/it-autoflight/custom/show-hdg", 1);
|
||||
var trkFpaSW = props.globals.getNode("/it-autoflight/custom/trk-fpa", 1);
|
||||
var latMode = props.globals.getNode("/it-autoflight/output/lat", 1);
|
||||
var vertMode = props.globals.getNode("/it-autoflight/output/vert", 1);
|
||||
var fpaModeInput = props.globals.getNode("/it-autoflight/input/fpa", 1);
|
||||
var latModeInput = props.globals.getNode("/it-autoflight/input/lat", 1);
|
||||
var vertModeInput = props.globals.getNode("/it-autoflight/input/vert", 1);
|
||||
var vsModeInput = props.globals.getNode("/it-autoflight/input/vs", 1);
|
||||
var locArm = props.globals.getNode("/it-autoflight/output/loc-armed", 1);
|
||||
var apprArm = props.globals.getNode("/it-autoflight/output/appr-armed", 1);
|
||||
var FCUworkingNode = props.globals.initNode("/FMGC/FCU-working", 0, "BOOL");
|
||||
|
||||
var FCU = {
|
||||
|
@ -103,6 +103,7 @@ var FCUController = {
|
|||
if (!ap1.getBoolValue()) {
|
||||
ap1Input.setValue(1);
|
||||
ecam.apWarnNode.setValue(0);
|
||||
pts.Controls.Flight.rudderTrim.setValue(0);
|
||||
} else {
|
||||
apOff("hard", 1);
|
||||
}
|
||||
|
@ -112,6 +113,7 @@ var FCUController = {
|
|||
if (me.FCUworking and fbw.FBW.activeLaw.getValue() == 0) {
|
||||
if (!ap2.getBoolValue()) {
|
||||
ap2Input.setValue(1);
|
||||
pts.Controls.Flight.rudderTrim.setValue(0);
|
||||
} else {
|
||||
apOff("hard", 2);
|
||||
}
|
||||
|
@ -155,13 +157,13 @@ var FCUController = {
|
|||
if (ap1.getBoolValue() or ap2.getBoolValue()) {
|
||||
apOff("soft", 0);
|
||||
} else {
|
||||
if (getprop("it-autoflight/sound/apoffsound") == 1 or getprop("it-autoflight/sound/apoffsound2") == 1) {
|
||||
setprop("it-autoflight/sound/apoffsound", 0);
|
||||
setprop("it-autoflight/sound/apoffsound2", 0);
|
||||
if (getprop("/it-autoflight/sound/apoffsound") == 1 or getprop("/it-autoflight/sound/apoffsound2") == 1) {
|
||||
setprop("/it-autoflight/sound/apoffsound", 0);
|
||||
setprop("/it-autoflight/sound/apoffsound2", 0);
|
||||
}
|
||||
if (getprop("it-autoflight/output/ap-warning") != 0) {
|
||||
setprop("it-autoflight/output/ap-warning", 0);
|
||||
setprop("ECAM/warnings/master-warning-light", 0);
|
||||
if (getprop("/it-autoflight/output/ap-warning") != 0) {
|
||||
setprop("/it-autoflight/output/ap-warning", 0);
|
||||
ecam.lights[0].setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -176,11 +178,11 @@ var FCUController = {
|
|||
if (me.FCUworking) {
|
||||
if (athr.getBoolValue()) {
|
||||
athrOff("soft");
|
||||
setprop("ECAM/warnings/master-caution-light", 1);
|
||||
ecam.lights[1].setValue(1);
|
||||
} else {
|
||||
if (getprop("it-autoflight/output/athr-warning") == 1) {
|
||||
setprop("it-autoflight/output/athr-warning", 0);
|
||||
setprop("ECAM/warnings/master-caution-light", 0);
|
||||
if (getprop("/it-autoflight/output/athr-warning") == 1) {
|
||||
setprop("/it-autoflight/output/athr-warning", 0);
|
||||
ecam.lights[1].setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -196,7 +198,7 @@ var FCUController = {
|
|||
},
|
||||
SPDPush: func() {
|
||||
if (me.FCUworking) {
|
||||
if (getprop("FMGC/internal/cruise-lvl-set") == 1 and getprop("FMGC/internal/cost-index-set") == 1) {
|
||||
if (fmgc.FMGCInternal.crzSet and fmgc.FMGCInternal.costIndexSet) {
|
||||
spdManaged.setBoolValue(1);
|
||||
fmgc.ManagedSPD.start();
|
||||
}
|
||||
|
@ -329,6 +331,7 @@ var FCUController = {
|
|||
fmgc.ITAF.disarmGS();
|
||||
}
|
||||
} else {
|
||||
if (pts.Position.gearAglFt.getValue() >= 400 and vertTemp != 7) {
|
||||
latModeInput.setValue(2);
|
||||
if (vertTemp == 2 or vertTemp == 6) {
|
||||
me.VSPull();
|
||||
|
@ -337,6 +340,7 @@ var FCUController = {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
TRKFPA: func() {
|
||||
if (me.FCUworking) {
|
||||
|
@ -345,7 +349,7 @@ var FCUController = {
|
|||
},
|
||||
ALTPush: func() {
|
||||
if (me.FCUworking) {
|
||||
# setprop("it-autoflight/input/vert", 8); # He don't work yet m8
|
||||
# setprop("/it-autoflight/input/vert", 8); # He don't work yet m8
|
||||
}
|
||||
},
|
||||
ALTPull: func() {
|
||||
|
@ -465,9 +469,11 @@ var FCUController = {
|
|||
fmgc.ITAF.disarmGS();
|
||||
}
|
||||
} else {
|
||||
if (pts.Position.gearAglFt.getValue() >= 400 and vertTemp != 7) {
|
||||
vertModeInput.setValue(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -517,7 +523,7 @@ var athrOff = func(type) {
|
|||
var hdgInput = func {
|
||||
if (latMode.getValue() != 0) {
|
||||
showHDG.setBoolValue(1);
|
||||
var hdgnow = getprop("it-autoflight/input/hdg");
|
||||
setprop("modes/fcu/hdg-time", getprop("sim/time/elapsed-sec"));
|
||||
var hdgnow = fmgc.Input.hdg.getValue();
|
||||
fmgc.Custom.hdgTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,55 +4,18 @@
|
|||
|
||||
# Initialize all used variables and property nodes
|
||||
# Sim
|
||||
var Velocities = {
|
||||
airspeedKt: props.globals.getNode("velocities/airspeed-kt", 1), # Only used for gain scheduling
|
||||
groundspeedKt: props.globals.getNode("velocities/groundspeed-kt", 1),
|
||||
groundspeedMps: 0,
|
||||
indicatedAirspeedKt: props.globals.getNode("instrumentation/airspeed-indicator/indicated-speed-kt", 1),
|
||||
indicatedMach: props.globals.getNode("instrumentation/airspeed-indicator/indicated-mach", 1),
|
||||
trueAirspeedKt: props.globals.getNode("instrumentation/airspeed-indicator/true-speed-kt", 1),
|
||||
trueAirspeedKtTemp: 0,
|
||||
};
|
||||
|
||||
var Position = {
|
||||
gearAglFtTemp: 0,
|
||||
gearAglFt: props.globals.getNode("position/gear-agl-ft", 1),
|
||||
indicatedAltitudeFt: props.globals.getNode("instrumentation/altimeter/indicated-altitude-ft", 1),
|
||||
indicatedAltitudeFtTemp: 0,
|
||||
};
|
||||
|
||||
var Gear = {
|
||||
wow0: props.globals.getNode("gear/gear[0]/wow", 1),
|
||||
wow1: props.globals.getNode("gear/gear[1]/wow", 1),
|
||||
wow1Temp: 1,
|
||||
wow2: props.globals.getNode("gear/gear[2]/wow", 1),
|
||||
wow2Temp: 1,
|
||||
};
|
||||
|
||||
var Control = {
|
||||
aileron: props.globals.getNode("controls/flight/aileron", 1),
|
||||
elevator: props.globals.getNode("controls/flight/elevator", 1),
|
||||
rudder: props.globals.getNode("controls/flight/rudder", 1),
|
||||
};
|
||||
|
||||
var Radio = {
|
||||
gsDefl: [props.globals.getNode("instrumentation/nav[0]/gs-needle-deflection-norm", 1), props.globals.getNode("instrumentation/nav[1]/gs-needle-deflection-norm", 1)],
|
||||
gsDeflTemp: 0,
|
||||
inRange: [props.globals.getNode("instrumentation/nav[0]/in-range", 1), props.globals.getNode("instrumentation/nav[1]/in-range", 1)],
|
||||
inRangeTemp: 0,
|
||||
locDefl: [props.globals.getNode("instrumentation/nav[0]/heading-needle-deflection-norm", 1), props.globals.getNode("instrumentation/nav[1]/heading-needle-deflection-norm", 1)],
|
||||
locDeflTemp: 0,
|
||||
radioSel: 0,
|
||||
signalQuality: [props.globals.getNode("instrumentation/nav[0]/signal-quality-norm", 1), props.globals.getNode("instrumentation/nav[1]/signal-quality-norm", 1)],
|
||||
signalQualityTemp: 0,
|
||||
var Controls = {
|
||||
aileron: props.globals.getNode("/controls/flight/aileron", 1),
|
||||
elevator: props.globals.getNode("/controls/flight/elevator", 1),
|
||||
rudder: props.globals.getNode("/controls/flight/rudder", 1),
|
||||
};
|
||||
|
||||
var FPLN = {
|
||||
active: props.globals.getNode("/FMGC/flightplan[2]/active", 1),
|
||||
activeTemp: 0,
|
||||
currentCourse: 0,
|
||||
currentWP: props.globals.getNode("/FMGC/flightplan[2]/current-wp", 1),
|
||||
currentWPTemp: 0,
|
||||
currentWp: props.globals.getNode("/FMGC/flightplan[2]/current-wp", 1),
|
||||
currentWpTemp: 0,
|
||||
deltaAngle: 0,
|
||||
deltaAngleRad: 0,
|
||||
distCoeff: 0,
|
||||
|
@ -67,12 +30,48 @@ var FPLN = {
|
|||
wpFlyTo: 0,
|
||||
};
|
||||
|
||||
var Gear = {
|
||||
wow0: props.globals.getNode("/gear/gear[0]/wow", 1),
|
||||
wow1: props.globals.getNode("/gear/gear[1]/wow", 1),
|
||||
wow1Temp: 1,
|
||||
wow2: props.globals.getNode("/gear/gear[2]/wow", 1),
|
||||
wow2Temp: 1,
|
||||
};
|
||||
|
||||
var Misc = {
|
||||
acEss: props.globals.getNode("systems/electrical/bus/ac-ess", 1),
|
||||
elapsedSec: props.globals.getNode("sim/time/elapsed-sec", 1),
|
||||
fbwLaw: props.globals.getNode("it-fbw/law", 1),
|
||||
flapNorm: props.globals.getNode("surface-positions/flap-pos-norm", 1),
|
||||
pfdHeadingScale: props.globals.getNode("instrumentation/pfd/heading-scale", 1),
|
||||
elapsedSec: props.globals.getNode("/sim/time/elapsed-sec", 1),
|
||||
fbwLaw: props.globals.getNode("/it-fbw/law", 1),
|
||||
flapNorm: props.globals.getNode("/surface-positions/flap-pos-norm", 1),
|
||||
pfdHeadingScale: props.globals.getNode("/instrumentation/pfd/heading-scale", 1),
|
||||
};
|
||||
|
||||
var Position = {
|
||||
gearAglFtTemp: 0,
|
||||
gearAglFt: props.globals.getNode("/position/gear-agl-ft", 1),
|
||||
indicatedAltitudeFt: props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1),
|
||||
indicatedAltitudeFtTemp: 0,
|
||||
};
|
||||
|
||||
var Radio = {
|
||||
gsDefl: [props.globals.getNode("/instrumentation/nav[0]/gs-needle-deflection-norm", 1), props.globals.getNode("instrumentation/nav[1]/gs-needle-deflection-norm", 1)],
|
||||
gsDeflTemp: 0,
|
||||
inRange: [props.globals.getNode("/instrumentation/nav[0]/in-range", 1), props.globals.getNode("instrumentation/nav[1]/in-range", 1)],
|
||||
inRangeTemp: 0,
|
||||
locDefl: [props.globals.getNode("/instrumentation/nav[0]/heading-needle-deflection-norm", 1), props.globals.getNode("instrumentation/nav[1]/heading-needle-deflection-norm", 1)],
|
||||
locDeflTemp: 0,
|
||||
radioSel: 0,
|
||||
signalQuality: [props.globals.getNode("/instrumentation/nav[0]/signal-quality-norm", 1), props.globals.getNode("instrumentation/nav[1]/signal-quality-norm", 1)],
|
||||
signalQualityTemp: 0,
|
||||
};
|
||||
|
||||
var Velocities = {
|
||||
airspeedKt: props.globals.getNode("/velocities/airspeed-kt", 1), # Only used for gain scheduling
|
||||
groundspeedKt: props.globals.getNode("/velocities/groundspeed-kt", 1),
|
||||
groundspeedMps: 0,
|
||||
indicatedAirspeedKt: props.globals.getNode("/instrumentation/airspeed-indicator/indicated-speed-kt", 1),
|
||||
indicatedMach: props.globals.getNode("/instrumentation/airspeed-indicator/indicated-mach", 1),
|
||||
trueAirspeedKt: props.globals.getNode("/instrumentation/airspeed-indicator/true-speed-kt", 1),
|
||||
trueAirspeedKtTemp: 0,
|
||||
};
|
||||
|
||||
# IT-AUTOFLIGHT
|
||||
|
@ -87,17 +86,19 @@ var Input = {
|
|||
fd1: props.globals.initNode("/it-autoflight/input/fd1", 1, "BOOL"),
|
||||
fd2: props.globals.initNode("/it-autoflight/input/fd2", 1, "BOOL"),
|
||||
fpa: props.globals.initNode("/it-autoflight/input/fpa", 0, "DOUBLE"),
|
||||
fpaAbs: props.globals.initNode("/it-autoflight/input/fpa-abs", 0, "DOUBLE"), # Set by property rule
|
||||
hdg: props.globals.initNode("/it-autoflight/input/hdg", 0, "INT"),
|
||||
hdgCalc: 0,
|
||||
ias: props.globals.initNode("/it-autoflight/input/spd-kts", 250, "INT"),
|
||||
kts: props.globals.initNode("/it-autoflight/input/kts", 100, "INT"),
|
||||
ktsMach: props.globals.initNode("/it-autoflight/input/kts-mach", 0, "BOOL"),
|
||||
lat: props.globals.initNode("/it-autoflight/input/lat", 5, "INT"),
|
||||
latTemp: 5,
|
||||
mach: props.globals.initNode("/it-autoflight/input/spd-mach", 0.5, "DOUBLE"),
|
||||
mach: props.globals.initNode("/it-autoflight/input/mach", 0.5, "DOUBLE"),
|
||||
toga: props.globals.initNode("/it-autoflight/input/toga", 0, "BOOL"),
|
||||
trk: props.globals.initNode("/it-autoflight/input/trk", 0, "BOOL"),
|
||||
trueCourse: props.globals.initNode("/it-autoflight/input/true-course", 0, "BOOL"),
|
||||
vs: props.globals.initNode("/it-autoflight/input/vs", 0, "INT"),
|
||||
vsAbs: props.globals.initNode("/it-autoflight/input/vs-abs", 0, "INT"), # Set by property rule
|
||||
vert: props.globals.initNode("/it-autoflight/input/vert", 7, "INT"),
|
||||
vertTemp: 7,
|
||||
};
|
||||
|
@ -110,17 +111,15 @@ var Internal = {
|
|||
altPredicted: props.globals.initNode("/it-autoflight/internal/altitude-predicted", 0, "DOUBLE"),
|
||||
bankLimit: props.globals.initNode("/it-autoflight/internal/bank-limit", 30, "INT"),
|
||||
bankLimitAuto: 30,
|
||||
captVS: 0,
|
||||
captVs: 0,
|
||||
driftAngle: props.globals.initNode("/it-autoflight/internal/drift-angle-deg", 0, "DOUBLE"),
|
||||
flchActive: 0,
|
||||
fpa: props.globals.initNode("/it-autoflight/internal/fpa", 0, "DOUBLE"),
|
||||
hdg: props.globals.initNode("/it-autoflight/internal/heading-deg", 0, "DOUBLE"),
|
||||
hdgErrorDeg: props.globals.initNode("/it-autoflight/internal/heading-error-deg", 0, "DOUBLE"),
|
||||
hdgPredicted: props.globals.initNode("/it-autoflight/internal/heading-predicted", 0, "DOUBLE"),
|
||||
lnavAdvanceNm: props.globals.initNode("/it-autoflight/internal/lnav-advance-nm", 0, "DOUBLE"),
|
||||
minVS: props.globals.initNode("/it-autoflight/internal/min-vs", -500, "INT"),
|
||||
maxVS: props.globals.initNode("/it-autoflight/internal/max-vs", 500, "INT"),
|
||||
trk: props.globals.initNode("/it-autoflight/internal/track-deg", 0, "DOUBLE"),
|
||||
minVs: props.globals.initNode("/it-autoflight/internal/min-vs", -500, "INT"),
|
||||
maxVs: props.globals.initNode("/it-autoflight/internal/max-vs", 500, "INT"),
|
||||
vs: props.globals.initNode("/it-autoflight/internal/vert-speed-fpm", 0, "DOUBLE"),
|
||||
vsTemp: 0,
|
||||
};
|
||||
|
@ -155,7 +154,7 @@ var Text = {
|
|||
};
|
||||
|
||||
var Setting = {
|
||||
reducAglFt: props.globals.initNode("/it-autoflight/settings/accel-agl-ft", 1500, "INT"), # Changable from MCDU #eventually set to 1500 above runway
|
||||
reducAglFt: props.globals.initNode("/it-autoflight/settings/accel-agl-ft", 1500, "INT"), # Changable from MCDU, eventually set to 1500 above runway
|
||||
};
|
||||
|
||||
var Sound = {
|
||||
|
@ -166,12 +165,12 @@ var Sound = {
|
|||
# A3XX Custom
|
||||
var Custom = {
|
||||
apFdOn: 0,
|
||||
hdgTime: props.globals.getNode("modes/fcu/hdg-time", 1),
|
||||
ndTrkSel: [props.globals.getNode("instrumentation/efis[0]/trk-selected", 1), props.globals.getNode("instrumentation/efis[1]/trk-selected", 1)],
|
||||
hdgTime: props.globals.getNode("/modes/fcu/hdg-time", 1),
|
||||
ndTrkSel: [props.globals.getNode("/instrumentation/efis[0]/trk-selected", 1), props.globals.getNode("/instrumentation/efis[1]/trk-selected", 1)],
|
||||
showHdg: props.globals.initNode("/it-autoflight/custom/show-hdg", 1, "BOOL"),
|
||||
trkFpa: props.globals.initNode("/it-autoflight/custom/trk-fpa", 0, "BOOL"),
|
||||
Input: {
|
||||
spdManaged: props.globals.getNode("it-autoflight/input/spd-managed", 1),
|
||||
spdManaged: props.globals.getNode("/it-autoflight/input/spd-managed", 1),
|
||||
},
|
||||
Output: {
|
||||
fmaPower: props.globals.initNode("/it-autoflight/output/fma-pwr", 0, "BOOL"),
|
||||
|
@ -180,7 +179,7 @@ var Custom = {
|
|||
athrOff: props.globals.initNode("/it-autoflight/sound/athrsound", 0, "BOOL"),
|
||||
enableAthrOff: 0,
|
||||
},
|
||||
ThrLock: props.globals.getNode("systems/thrust/thr-locked", 1)
|
||||
ThrLock: props.globals.getNode("/systems/thrust/thr-locked", 1)
|
||||
};
|
||||
|
||||
var ITAF = {
|
||||
|
@ -215,13 +214,13 @@ var ITAF = {
|
|||
Output.thrMode.setValue(0);
|
||||
Output.lat.setValue(9);
|
||||
Output.vert.setValue(9);
|
||||
Internal.minVS.setValue(-500);
|
||||
Internal.maxVS.setValue(500);
|
||||
Internal.minVs.setValue(-500);
|
||||
Internal.maxVs.setValue(500);
|
||||
Internal.bankLimit.setValue(30);
|
||||
Internal.bankLimitAuto = 30;
|
||||
Internal.alt.setValue(10000);
|
||||
Internal.altCaptureActive = 0;
|
||||
Input.ias.setValue(100);
|
||||
Input.kts.setValue(100);
|
||||
Input.mach.setValue(0.5);
|
||||
Text.thr.setValue("THRUST");
|
||||
Text.arm.setValue(" ");
|
||||
|
@ -270,17 +269,18 @@ var ITAF = {
|
|||
|
||||
# Autoland Logic
|
||||
if (Output.latTemp == 2) {
|
||||
if (Position.gearAglFtTemp <= 150) {
|
||||
if (Position.gearAglFtTemp <= 50) { # ALIGN
|
||||
me.setLatMode(4);
|
||||
}
|
||||
}
|
||||
if (Output.vertTemp == 2) {
|
||||
if (Position.gearAglFtTemp <= 300 and Position.gearAglFtTemp >= 5) {
|
||||
if (Position.gearAglFtTemp <= 400 and Position.gearAglFtTemp >= 5) {
|
||||
Text.vert.setValue("LAND");
|
||||
}
|
||||
if (Position.gearAglFtTemp <= 100 and Position.gearAglFtTemp >= 5) {
|
||||
|
||||
if (Position.gearAglFtTemp <= 100) { # switch to internal flare logic at 100 feet -- but on FMA at 50!
|
||||
me.setVertMode(6);
|
||||
}
|
||||
}
|
||||
} else if (Output.vertTemp == 6) {
|
||||
if (Position.gearAglFtTemp <= 50 and Position.gearAglFtTemp >= 5) {
|
||||
Text.vert.setValue("FLARE");
|
||||
|
@ -304,9 +304,9 @@ var ITAF = {
|
|||
Internal.altDiff = Internal.altTemp - Position.indicatedAltitudeFtTemp;
|
||||
|
||||
if (Output.vertTemp != 0 and Output.vertTemp != 2 and Output.vertTemp != 6 and Output.vertTemp != 9) {
|
||||
Internal.captVS = math.clamp(math.round(abs(Internal.vs.getValue()) / 5, 100), 50, 2500); # Capture limits
|
||||
Internal.captVs = math.clamp(math.round(abs(Internal.vs.getValue()) / 5, 100), 50, 2500); # Capture limits
|
||||
Custom.apFdOn = Output.ap1Temp or Output.ap2Temp or Output.fd1.getBoolValue() or Output.fd2.getBoolValue();
|
||||
if (abs(Internal.altDiff) <= Internal.captVS and !Gear.wow1Temp and !Gear.wow2Temp and Custom.apFdOn) {
|
||||
if (abs(Internal.altDiff) <= Internal.captVs and !Gear.wow1Temp and !Gear.wow2Temp and Custom.apFdOn) {
|
||||
if (Internal.altTemp >= Position.indicatedAltitudeFtTemp and Internal.vsTemp >= -25) { # Don't capture if we are going the wrong way
|
||||
me.setVertMode(3);
|
||||
} else if (Internal.altTemp < Position.indicatedAltitudeFtTemp and Internal.vsTemp <= 25) { # Don't capture if we are going the wrong way
|
||||
|
@ -317,14 +317,15 @@ var ITAF = {
|
|||
|
||||
# Altitude Hold Min/Max Reset
|
||||
if (Internal.altCaptureActive) {
|
||||
if (abs(Internal.altDiff) <= 25) {
|
||||
if (abs(Internal.altDiff) <= 20) {
|
||||
me.resetClimbRateLim();
|
||||
Text.vert.setValue("ALT HLD");
|
||||
}
|
||||
}
|
||||
|
||||
# Thrust Mode Selector
|
||||
if (Output.athr.getBoolValue() and Output.vertTemp != 7 and (Output.ap1Temp or Output.ap2Temp) and Position.gearAglFt.getValue() <= 18 and (Output.vertTemp == 2 or Output.vertTemp == 6)) {
|
||||
if (Output.athr.getBoolValue() and Output.vertTemp != 7 and (Output.ap1Temp or Output.ap2Temp) and Position.gearAglFt.getValue() <= 30 and (Output.vertTemp == 2 or Output.vertTemp == 6)) {
|
||||
# Manual says 40 feet -- but video reference shows 30!
|
||||
Output.thrMode.setValue(1);
|
||||
Text.thr.setValue("RETARD");
|
||||
} else if (Output.vertTemp == 4) {
|
||||
|
@ -366,16 +367,15 @@ var ITAF = {
|
|||
|
||||
# Misc
|
||||
if (Output.ap1Temp == 1 or Output.ap2Temp == 1) { # Trip AP off
|
||||
if (abs(Control.aileron.getValue()) >= 0.2 or abs(Control.elevator.getValue()) >= 0.2 or abs(Control.rudder.getValue()) >= 0.2) {
|
||||
if (abs(Controls.aileron.getValue()) >= 0.2 or abs(Controls.elevator.getValue()) >= 0.2 or abs(Controls.rudder.getValue()) >= 0.2) {
|
||||
fcu.apOff("hard", 0);
|
||||
}
|
||||
}
|
||||
},
|
||||
slowLoop: func() {
|
||||
Input.bankLimitSWTemp = Input.bankLimitSW.getValue();
|
||||
Velocities.trueAirspeedKtTemp = Velocities.trueAirspeedKt.getValue();
|
||||
FPLN.activeTemp = FPLN.active.getValue();
|
||||
FPLN.currentWPTemp = FPLN.currentWP.getValue();
|
||||
FPLN.currentWpTemp = FPLN.currentWp.getValue();
|
||||
|
||||
# Bank Limit
|
||||
if (Velocities.trueAirspeedKtTemp >= 420) {
|
||||
|
@ -383,7 +383,7 @@ var ITAF = {
|
|||
} else if (Velocities.trueAirspeedKtTemp >= 340) {
|
||||
Internal.bankLimitAuto = 20;
|
||||
} else {
|
||||
Internal.bankLimitAuto = 25;
|
||||
Internal.bankLimitAuto = 30;
|
||||
}
|
||||
|
||||
Internal.bankLimit.setValue(Internal.bankLimitAuto);
|
||||
|
@ -397,14 +397,14 @@ var ITAF = {
|
|||
|
||||
# Waypoint Advance Logic
|
||||
if (flightPlanController.num[2].getValue() > 0 and FPLN.activeTemp == 1) {
|
||||
if ((FPLN.currentWPTemp + 1) < flightPlanController.num[2].getValue()) {
|
||||
if ((FPLN.currentWpTemp + 1) < flightPlanController.num[2].getValue()) {
|
||||
Velocities.groundspeedMps = Velocities.groundspeedKt.getValue() * 0.5144444444444;
|
||||
FPLN.wpFlyFrom = FPLN.currentWPTemp;
|
||||
FPLN.wpFlyFrom = FPLN.currentWpTemp;
|
||||
if (FPLN.wpFlyFrom < 0) {
|
||||
FPLN.wpFlyFrom = 0;
|
||||
}
|
||||
FPLN.currentCourse = fmgc.wpCourse[2][FPLN.wpFlyFrom].getValue();
|
||||
FPLN.wpFlyTo = FPLN.currentWPTemp + 1;
|
||||
FPLN.wpFlyTo = FPLN.currentWpTemp + 1;
|
||||
FPLN.nextCourse = fmgc.wpCourse[2][FPLN.wpFlyTo].getValue();
|
||||
FPLN.maxBankLimit = Internal.bankLimit.getValue();
|
||||
|
||||
|
@ -430,12 +430,18 @@ var ITAF = {
|
|||
if (FPLN.wp0Dist.getValue() <= FPLN.turnDist and !Gear.wow1.getBoolValue()) {
|
||||
flightPlanController.autoSequencing();
|
||||
}
|
||||
|
||||
#if (FPLN.wp0Dist.getValue() <= FPLN.turnDist and !Gear.wow1.getBoolValue() and fmgc.flightPlanController.flightplans[2].getWP(FPLN.currentWpTemp).fly_type == "flyBy") {
|
||||
# flightPlanController.autoSequencing();
|
||||
#} elsif (FPLN.wp0Dist.getValue() <= 0.1) {
|
||||
# flightPlanController.autoSequencing();
|
||||
#}
|
||||
}
|
||||
}
|
||||
},
|
||||
ap1Master: func(s) {
|
||||
if (s == 1) {
|
||||
if (Output.vert.getValue() != 6 and !Gear.wow1.getBoolValue() and !Gear.wow2.getBoolValue() and Misc.acEss.getValue() >= 110 and Misc.fbwLaw.getValue() == 0 and Position.gearAglFt.getValue() >= 100) {
|
||||
if (Output.vert.getValue() != 6 and !Gear.wow1.getBoolValue() and !Gear.wow2.getBoolValue() and systems.ELEC.Bus.acEss.getValue() >= 110 and Misc.fbwLaw.getValue() == 0 and Position.gearAglFt.getValue() >= 100) {
|
||||
me.revertBasicMode();
|
||||
Output.ap1.setBoolValue(1);
|
||||
Output.latTemp = Output.lat.getValue();
|
||||
|
@ -456,7 +462,7 @@ var ITAF = {
|
|||
},
|
||||
ap2Master: func(s) {
|
||||
if (s == 1) {
|
||||
if (Output.vert.getValue() != 6 and !Gear.wow1.getBoolValue() and !Gear.wow2.getBoolValue() and Misc.acEss.getValue() >= 110 and Misc.fbwLaw.getValue() == 0 and Position.gearAglFt.getValue() >= 100) {
|
||||
if (Output.vert.getValue() != 6 and !Gear.wow1.getBoolValue() and !Gear.wow2.getBoolValue() and systems.ELEC.Bus.acEss.getValue() >= 110 and Misc.fbwLaw.getValue() == 0 and Position.gearAglFt.getValue() >= 100) {
|
||||
me.revertBasicMode();
|
||||
Output.ap2.setBoolValue(1);
|
||||
Output.latTemp = Output.lat.getValue();
|
||||
|
@ -486,7 +492,7 @@ var ITAF = {
|
|||
},
|
||||
athrMaster: func(s) {
|
||||
if (s == 1) {
|
||||
if (Misc.acEss.getValue() >= 110) {
|
||||
if (systems.ELEC.Bus.acEss.getValue() >= 110) {
|
||||
Output.athr.setBoolValue(1);
|
||||
Custom.ThrLock.setValue(0);
|
||||
Custom.Sound.enableAthrOff = 1;
|
||||
|
@ -558,7 +564,7 @@ var ITAF = {
|
|||
Output.lnavArm.setBoolValue(0);
|
||||
Output.locArm.setBoolValue(0);
|
||||
Output.apprArm.setBoolValue(0);
|
||||
me.syncHDG();
|
||||
me.syncHdg();
|
||||
Output.lat.setValue(0);
|
||||
Custom.showHdg.setBoolValue(1);
|
||||
Text.lat.setValue("HDG");
|
||||
|
@ -603,7 +609,7 @@ var ITAF = {
|
|||
me.armTextCheck();
|
||||
}
|
||||
} else if (n == 3) {
|
||||
me.syncHDG();
|
||||
me.syncHdg();
|
||||
Output.lnavArm.setBoolValue(0);
|
||||
Custom.showHdg.setBoolValue(1);
|
||||
me.armTextCheck();
|
||||
|
@ -618,7 +624,7 @@ var ITAF = {
|
|||
Output.vert.setValue(0);
|
||||
me.resetClimbRateLim();
|
||||
Text.vert.setValue("ALT HLD");
|
||||
me.syncALT();
|
||||
me.syncAlt();
|
||||
me.armTextCheck();
|
||||
} else if (n == 1) { # V/S
|
||||
if (abs(Input.altDiff) >= 25) {
|
||||
|
@ -627,7 +633,7 @@ var ITAF = {
|
|||
Output.apprArm.setBoolValue(0);
|
||||
Output.vert.setValue(1);
|
||||
Text.vert.setValue("V/S");
|
||||
me.syncVS();
|
||||
me.syncVs();
|
||||
me.armTextCheck();
|
||||
} else {
|
||||
Output.apprArm.setBoolValue(0);
|
||||
|
@ -671,7 +677,7 @@ var ITAF = {
|
|||
Output.apprArm.setBoolValue(0);
|
||||
Output.vert.setValue(5);
|
||||
Text.vert.setValue("FPA");
|
||||
me.syncFPA();
|
||||
me.syncFpa();
|
||||
me.armTextCheck();
|
||||
} else {
|
||||
Output.apprArm.setBoolValue(0);
|
||||
|
@ -796,29 +802,29 @@ var ITAF = {
|
|||
setClimbRateLim: func() {
|
||||
Internal.vsTemp = Internal.vs.getValue();
|
||||
if (Internal.alt.getValue() >= Position.indicatedAltitudeFt.getValue()) {
|
||||
Internal.maxVS.setValue(math.round(Internal.vsTemp));
|
||||
Internal.minVS.setValue(-500);
|
||||
Internal.maxVs.setValue(math.round(Internal.vsTemp));
|
||||
Internal.minVs.setValue(-500);
|
||||
} else {
|
||||
Internal.maxVS.setValue(500);
|
||||
Internal.minVS.setValue(math.round(Internal.vsTemp));
|
||||
Internal.maxVs.setValue(500);
|
||||
Internal.minVs.setValue(math.round(Internal.vsTemp));
|
||||
}
|
||||
},
|
||||
resetClimbRateLim: func() {
|
||||
Internal.minVS.setValue(-500);
|
||||
Internal.maxVS.setValue(500);
|
||||
Internal.minVs.setValue(-500);
|
||||
Internal.maxVs.setValue(500);
|
||||
},
|
||||
takeoffGoAround: func() {
|
||||
Output.vertTemp = Output.vert.getValue();
|
||||
if ((Output.vertTemp == 2 or Output.vertTemp == 6) and Velocities.indicatedAirspeedKt.getValue() >= 80) {
|
||||
me.setLatMode(3);
|
||||
me.setVertMode(7); # Must be before kicking AP off
|
||||
Text.vert.setValue("G/A CLB");
|
||||
Input.ktsMach.setBoolValue(0);
|
||||
me.syncKtsGa();
|
||||
if (Gear.wow1.getBoolValue() or Gear.wow2.getBoolValue()) {
|
||||
me.ap1Master(0);
|
||||
me.ap2Master(0);
|
||||
}
|
||||
me.setLatMode(3);
|
||||
me.setVertMode(7);
|
||||
Text.vert.setValue("G/A CLB");
|
||||
Input.ktsMach.setBoolValue(0);
|
||||
me.syncIAS();
|
||||
} else if (Gear.wow1Temp or Gear.wow2Temp) {
|
||||
me.athrMaster(1);
|
||||
if (Output.lat.getValue() != 5) { # Don't accidently disarm LNAV
|
||||
|
@ -839,23 +845,26 @@ var ITAF = {
|
|||
Text.arm.setValue(" ");
|
||||
}
|
||||
},
|
||||
syncIAS: func() {
|
||||
Input.ias.setValue(math.clamp(math.round(Velocities.indicatedAirspeedKt.getValue()), 100, 350));
|
||||
syncKts: func() {
|
||||
Input.kts.setValue(math.clamp(math.round(Velocities.indicatedAirspeedKt.getValue()), 100, 350));
|
||||
},
|
||||
syncKtsGa: func() { # Same as syncKts, except doesn't go below V2
|
||||
Input.kts.setValue(math.clamp(math.round(Velocities.indicatedAirspeedKt.getValue()), FMGCInternal.v2, 350));
|
||||
},
|
||||
syncMach: func() {
|
||||
Input.mach.setValue(math.clamp(math.round(Velocities.indicatedMach.getValue(), 0.001), 0.5, 0.82));
|
||||
},
|
||||
syncHDG: func() {
|
||||
syncHdg: func() {
|
||||
Input.hdg.setValue(math.round(Internal.hdgPredicted.getValue())); # Switches to track automatically
|
||||
},
|
||||
syncALT: func() {
|
||||
syncAlt: func() {
|
||||
Input.alt.setValue(math.clamp(math.round(Internal.altPredicted.getValue(), 100), 0, 50000));
|
||||
Internal.alt.setValue(math.clamp(math.round(Internal.altPredicted.getValue(), 100), 0, 50000));
|
||||
},
|
||||
syncVS: func() {
|
||||
syncVs: func() {
|
||||
Input.vs.setValue(math.clamp(math.round(Internal.vs.getValue(), 100), -6000, 6000));
|
||||
},
|
||||
syncFPA: func() {
|
||||
syncFpa: func() {
|
||||
Input.fpa.setValue(math.clamp(math.round(Internal.fpa.getValue(), 0.1), -9.9, 9.9));
|
||||
},
|
||||
# Custom Stuff Below
|
||||
|
@ -972,7 +981,7 @@ setlistener("/it-autoflight/input/kts-mach", func {
|
|||
if (Input.ktsMach.getBoolValue()) {
|
||||
ITAF.syncMach();
|
||||
} else {
|
||||
ITAF.syncIAS();
|
||||
ITAF.syncKts();
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
|
@ -1018,12 +1027,12 @@ setlistener("/sim/signals/fdm-initialized", func {
|
|||
|
||||
# For Canvas Nav Display.
|
||||
setlistener("/it-autoflight/input/hdg", func {
|
||||
setprop("autopilot/settings/heading-bug-deg", getprop("it-autoflight/input/hdg"));
|
||||
});
|
||||
setprop("/autopilot/settings/heading-bug-deg", Input.hdg.getValue());
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/it-autoflight/internal/alt", func {
|
||||
setprop("autopilot/settings/target-altitude-ft", getprop("it-autoflight/internal/alt"));
|
||||
});
|
||||
setprop("/autopilot/settings/target-altitude-ft", Internal.alt.getValue());
|
||||
}, 0, 0);
|
||||
|
||||
var loopTimer = maketimer(0.1, ITAF, ITAF.loop);
|
||||
var slowLoopTimer = maketimer(1, ITAF, ITAF.slowLoop);
|
||||
|
|
|
@ -3,92 +3,166 @@
|
|||
|
||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
|
||||
setprop("FMGC/internal/cruise-ft", 10000);
|
||||
setprop("it-autoflight/internal/alt", 10000);
|
||||
setprop("modes/pfd/fma/throttle-mode", " ");
|
||||
setprop("modes/pfd/fma/pitch-mode", " ");
|
||||
setprop("modes/pfd/fma/pitch-mode-armed", " ");
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", " ");
|
||||
setprop("modes/pfd/fma/roll-mode", " ");
|
||||
setprop("modes/pfd/fma/roll-mode-armed", " ");
|
||||
setprop("modes/pfd/fma/ap-mode", " ");
|
||||
setprop("modes/pfd/fma/fd-mode", " ");
|
||||
setprop("modes/pfd/fma/at-mode", " ");
|
||||
setprop("modes/pfd/fma/athr-armed", 0);
|
||||
setprop("modes/pfd/fma/throttle-mode-box", 0);
|
||||
setprop("modes/pfd/fma/pitch-mode-box", 0);
|
||||
setprop("modes/pfd/fma/pitch-mode-armed-box", 0);
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed-box", 0);
|
||||
setprop("modes/pfd/fma/roll-mode-box", 0);
|
||||
setprop("modes/pfd/fma/roll-mode-armed-box", 0);
|
||||
setprop("modes/pfd/fma/ap-mode-box", 0);
|
||||
setprop("modes/pfd/fma/fd-mode-box", 0);
|
||||
setprop("modes/pfd/fma/athr-mode-box", 0);
|
||||
setprop("modes/pfd/fma/throttle-mode-time", 0);
|
||||
setprop("modes/pfd/fma/pitch-mode-time", 0);
|
||||
setprop("modes/pfd/fma/pitch-mode-armed-time", 0);
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed-time", 0);
|
||||
setprop("modes/pfd/fma/roll-mode-time", 0);
|
||||
setprop("modes/pfd/fma/roll-mode-armed-time", 0);
|
||||
setprop("modes/pfd/fma/ap-mode-time", 0);
|
||||
setprop("modes/pfd/fma/fd-mode-time", 0);
|
||||
setprop("modes/pfd/fma/athr-mode-time", 0);
|
||||
setprop("modes/fcu/hdg-time", -45);
|
||||
var at = nil;
|
||||
var athr = nil;
|
||||
var ap1 = nil;
|
||||
var ap2 = nil;
|
||||
var elapsedtime = nil;
|
||||
var engout = nil;
|
||||
var engstate1 = nil;
|
||||
var engstate2 = nil;
|
||||
var fd1 = nil;
|
||||
var fd2 = nil;
|
||||
var flx = nil;
|
||||
var gear1 = nil;
|
||||
var gear2 = nil;
|
||||
var gs_defl = nil;
|
||||
var latText = nil;
|
||||
var MCPalt = nil;
|
||||
var nav_defl = nil;
|
||||
var newfd = nil;
|
||||
var newarm = nil;
|
||||
var newap = nil;
|
||||
var newlat = nil;
|
||||
var newvert = nil;
|
||||
var newvert2arm = nil;
|
||||
var newvertarm = nil;
|
||||
var newthr = nil;
|
||||
var state1 = nil;
|
||||
var state2 = nil;
|
||||
var thr = nil;
|
||||
var thr1 = nil;
|
||||
var thr2 = nil;
|
||||
var trk = nil;
|
||||
var vert = nil;
|
||||
var vertText = nil;
|
||||
|
||||
setlistener("sim/signals/fdm-initialized", func {
|
||||
|
||||
var Modes = {
|
||||
FCU: {
|
||||
hdgTime: props.globals.initNode("/modes/fcu/hdg-time", -45, "DOUBLE")
|
||||
},
|
||||
PFD: {
|
||||
FMA: {
|
||||
athr: props.globals.initNode("/modes/pfd/fma/athr-armed", 0, "BOOL"),
|
||||
athrBox: props.globals.initNode("/modes/pfd/fma/athr-armed-box", 0, "BOOL"),
|
||||
athrMode: props.globals.initNode("/modes/pfd/fma/at-mode", " ", "STRING"),
|
||||
athrModeBox: props.globals.initNode("/modes/pfd/fma/athr-mode-box", 0, "BOOL"),
|
||||
apMode: props.globals.initNode("/modes/pfd/fma/ap-mode", " ", "STRING"),
|
||||
apModeBox: props.globals.initNode("/modes/pfd/fma/ap-mode-box", 0, "BOOL"),
|
||||
apModeTime: props.globals.initNode("/modes/pfd/fma/ap-mode-time", 0, "DOUBLE"),
|
||||
athrModeTime: props.globals.initNode("/modes/pfd/fma/athr-mode-time", 0, "DOUBLE"),
|
||||
fdMode: props.globals.initNode("/modes/pfd/fma/fd-mode", " ", "STRING"),
|
||||
fdModeBox: props.globals.initNode("/modes/pfd/fma/fd-mode-box", 0, "BOOL"),
|
||||
fdModeTime: props.globals.initNode("/modes/pfd/fma/fd-mode-time", 0, "DOUBLE"),
|
||||
rollMode: props.globals.initNode("/modes/pfd/fma/roll-mode", " ", "STRING"),
|
||||
rollModeBox: props.globals.initNode("/modes/pfd/fma/roll-mode-box", 0, "BOOL"),
|
||||
rollModeArmed: props.globals.initNode("/modes/pfd/fma/roll-mode-armed", " ", "STRING"),
|
||||
rollModeArmedBox: props.globals.initNode("/modes/pfd/fma/roll-mode-armed-box", 0, "BOOL"),
|
||||
rollModeTime: props.globals.initNode("/modes/pfd/fma/roll-mode-time", 0, "DOUBLE"),
|
||||
rollModeArmedTime: props.globals.initNode("/modes/pfd/fma/roll-mode-armed-time", 0, "DOUBLE"),
|
||||
pitchMode: props.globals.initNode("/modes/pfd/fma/pitch-mode", " ", "STRING"),
|
||||
pitchModeBox: props.globals.initNode("/modes/pfd/fma/pitch-mode-box", 0, "BOOL"),
|
||||
pitchModeArmed: props.globals.initNode("/modes/pfd/fma/pitch-mode-armed", " ", "STRING"),
|
||||
pitchModeArmedBox: props.globals.initNode("/modes/pfd/fma/pitch-mode-armed-box", 0, "BOOL"),
|
||||
pitchMode2Armed: props.globals.initNode("/modes/pfd/fma/pitch-mode2-armed", " ", "STRING"),
|
||||
pitchModeTime: props.globals.initNode("/modes/pfd/fma/pitch-mode-time", 0, "DOUBLE"),
|
||||
pitchModeArmedTime: props.globals.initNode("/modes/pfd/fma/pitch-mode-armed-time", 0, "DOUBLE"),
|
||||
pitchMode2ArmedTime: props.globals.initNode("/modes/pfd/fma/pitch-mode2-armed-time", 0, "DOUBLE"),
|
||||
pitchMode2ArmedBox: props.globals.initNode("/modes/pfd/fma/pitch-mode2-armed-box", 0, "BOOL"),
|
||||
throttle: props.globals.initNode("/modes/pfd/fma/throttle-mode", " ", "STRING"),
|
||||
throttleModeBox: props.globals.initNode("/modes/pfd/fma/throttle-mode-box", 0, "BOOL"),
|
||||
throttleModeTime: props.globals.initNode("/modes/pfd/fma/throttle-mode-time", 0, "DOUBLE"),
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
var init = func() {
|
||||
Internal.alt.setValue(10000);
|
||||
Modes.PFD.FMA.throttle.setValue(" ");
|
||||
Modes.PFD.FMA.pitchMode.setValue(" ");
|
||||
Modes.PFD.FMA.pitchModeArmed.setValue(" ");
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue(" ");
|
||||
Modes.PFD.FMA.rollMode.setValue(" ");
|
||||
Modes.PFD.FMA.rollModeArmed.setValue(" ");
|
||||
Modes.PFD.FMA.apMode.setValue(" ");
|
||||
Modes.PFD.FMA.fdMode.setValue(" ");
|
||||
Modes.PFD.FMA.athrMode.setValue(" ");
|
||||
Modes.PFD.FMA.athr.setValue(0);
|
||||
Modes.PFD.FMA.throttleModeBox.setValue(0);
|
||||
Modes.PFD.FMA.pitchModeBox.setValue(0);
|
||||
Modes.PFD.FMA.pitchModeArmedBox.setValue(0);
|
||||
Modes.PFD.FMA.pitchMode2ArmedBox.setValue(0);
|
||||
Modes.PFD.FMA.rollModeBox.setValue(0);
|
||||
Modes.PFD.FMA.rollModeArmedBox.setValue(0);
|
||||
Modes.PFD.FMA.apModeBox.setValue(0);
|
||||
Modes.PFD.FMA.fdModeBox.setValue(0);
|
||||
Modes.PFD.FMA.athrModeBox.setValue(0);
|
||||
Modes.PFD.FMA.throttleModeTime.setValue(0);
|
||||
Modes.PFD.FMA.pitchModeTime.setValue(0);
|
||||
Modes.PFD.FMA.pitchModeArmedTime.setValue(0);
|
||||
Modes.PFD.FMA.pitchMode2ArmedTime.setValue(0);
|
||||
Modes.PFD.FMA.rollModeTime.setValue(0);
|
||||
Modes.PFD.FMA.rollModeArmedTime.setValue(0);
|
||||
Modes.PFD.FMA.apModeTime.setValue(0);
|
||||
Modes.PFD.FMA.fdModeTime.setValue(0);
|
||||
Modes.PFD.FMA.athrModeTime.setValue(0);
|
||||
loopFMA.start();
|
||||
});
|
||||
};
|
||||
|
||||
# Master Thrust
|
||||
var loopFMA = maketimer(0.05, func {
|
||||
var state1 = getprop("systems/thrust/state1");
|
||||
var state2 = getprop("systems/thrust/state2");
|
||||
var newthr = getprop("modes/pfd/fma/throttle-mode");
|
||||
var thr1 = getprop("controls/engines/engine[0]/throttle-pos");
|
||||
var thr2 = getprop("controls/engines/engine[1]/throttle-pos");
|
||||
state1 = pts.Systems.Thrust.state[0].getValue();
|
||||
state2 = pts.Systems.Thrust.state[1].getValue();
|
||||
thr1 = pts.Controls.Engines.Engine.throttlePos[0].getValue();
|
||||
thr2 = pts.Controls.Engines.Engine.throttlePos[1].getValue();
|
||||
newthr = Modes.PFD.FMA.throttle.getValue();
|
||||
engout = pts.Systems.Thrust.engOut.getValue();
|
||||
|
||||
if (state1 == "TOGA" or state2 == "TOGA") {
|
||||
if (newthr != " ") {
|
||||
setprop("modes/pfd/fma/throttle-mode", " ");
|
||||
Modes.PFD.FMA.throttle.setValue(" ");
|
||||
}
|
||||
} else if ((state1 == "MAN THR" and thr1 >= 0.83) or (state2 == "MAN THR" and thr2 >= 0.83)) {
|
||||
if (newthr != " ") {
|
||||
setprop("modes/pfd/fma/throttle-mode", " ");
|
||||
Modes.PFD.FMA.throttle.setValue(" ");
|
||||
}
|
||||
} else if ((state1 == "MCT" or state2 == "MCT") and getprop("systems/thrust/eng-out") != 1) {
|
||||
} else if ((state1 == "MCT" or state2 == "MCT") and !engout) {
|
||||
if (newthr != " ") {
|
||||
setprop("modes/pfd/fma/throttle-mode", " ");
|
||||
Modes.PFD.FMA.throttle.setValue(" ");
|
||||
}
|
||||
} else if (((state1 == "MAN THR" and thr1 < 0.83) or (state2 == "MAN THR" and thr2 < 0.83)) and getprop("systems/thrust/eng-out") != 1) {
|
||||
} else if (((state1 == "MAN THR" and thr1 < 0.83) or (state2 == "MAN THR" and thr2 < 0.83)) and !engout) {
|
||||
if (newthr != " ") {
|
||||
setprop("modes/pfd/fma/throttle-mode", " ");
|
||||
Modes.PFD.FMA.throttle.setValue(" ");
|
||||
}
|
||||
} else {
|
||||
if ((getprop("it-autoflight/output/vert") == 4) or (getprop("it-autoflight/output/vert") == 6) or (getprop("it-autoflight/output/vert") == 7) or (getprop("it-autoflight/output/vert") == 8)) {
|
||||
if (getprop("it-autoflight/output/fd1") == 0 and getprop("it-autoflight/output/fd2") == 0 and getprop("it-autoflight/output/ap1") == 0 and getprop("it-autoflight/output/ap2") == 0) {
|
||||
loopFMA_b();
|
||||
} else {
|
||||
var thr = getprop("it-autoflight/output/thr-mode");
|
||||
vert = Output.vert.getValue();
|
||||
if (vert == 4 or vert >= 6 or vert <= 8) {
|
||||
if (Output.ap1.getBoolValue() or Output.ap2.getBoolValue() or Output.fd1.getBoolValue() or Output.fd2.getBoolValue()) {
|
||||
thr = Output.thrMode.getValue();
|
||||
if (thr == 0) {
|
||||
loopFMA_b();
|
||||
} else if (thr == 1) {
|
||||
if (newthr != "THR IDLE") {
|
||||
setprop("modes/pfd/fma/throttle-mode", "THR IDLE");
|
||||
Modes.PFD.FMA.throttle.setValue("THR IDLE");
|
||||
}
|
||||
} else if (thr == 2) {
|
||||
if (state1 == "MCT" or state2 == "MCT" and getprop("systems/thrust/eng-out") == 1) {
|
||||
if (state1 == "MCT" or state2 == "MCT" and engout) {
|
||||
if (newthr != "THR MCT") {
|
||||
setprop("modes/pfd/fma/throttle-mode", "THR MCT");
|
||||
Modes.PFD.FMA.throttle.setValue("THR MCT");
|
||||
}
|
||||
} else if (state1 == "CL" or state2 == "CL") {
|
||||
if (newthr != "THR CLB") {
|
||||
setprop("modes/pfd/fma/throttle-mode", "THR CLB");
|
||||
Modes.PFD.FMA.throttle.setValue("THR CLB");
|
||||
}
|
||||
} else {
|
||||
if (newthr != "THR LVR") {
|
||||
setprop("modes/pfd/fma/throttle-mode", "THR LVR");
|
||||
Modes.PFD.FMA.throttle.setValue("THR LVR");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
loopFMA_b();
|
||||
}
|
||||
} else {
|
||||
loopFMA_b();
|
||||
|
@ -96,164 +170,161 @@ var loopFMA = maketimer(0.05, func {
|
|||
}
|
||||
|
||||
# A/THR Armed/Active
|
||||
if (getprop("it-autoflight/output/athr") == 1 and (state1 == "MAN THR" or state2 == "MAN THR" or state1 == "MCT" or state2 == "MCT" or state1 == "TOGA" or state2 == "TOGA") and getprop("systems/thrust/eng-out") != 1) {
|
||||
if (getprop("modes/pfd/fma/athr-armed") != 1) {
|
||||
setprop("modes/pfd/fma/athr-armed", 1);
|
||||
athr = Output.athr.getValue();
|
||||
|
||||
if (athr and (state1 == "MAN THR" or state2 == "MAN THR" or state1 == "MCT" or state2 == "MCT" or state1 == "TOGA" or state2 == "TOGA") and engout != 1) {
|
||||
if (!Modes.PFD.FMA.athr.getValue()) {
|
||||
Modes.PFD.FMA.athr.setValue(1);
|
||||
}
|
||||
} else if (getprop("it-autoflight/output/athr") == 1 and ((state1 == "MAN THR" and thr1 >= 0.83) or (state2 == "MAN THR" and thr2 >= 0.83) or (state1 == "MCT" and getprop("controls/engines/thrust-limit") == "FLX") or
|
||||
(state2 == "MCT" and getprop("controls/engines/thrust-limit") == "FLX") or state1 == "TOGA" or state2 == "TOGA") and getprop("systems/thrust/eng-out") == 1) {
|
||||
if (getprop("modes/pfd/fma/athr-armed") != 1) {
|
||||
setprop("modes/pfd/fma/athr-armed", 1);
|
||||
} else if (athr and ((state1 == "MAN THR" and thr1 >= 0.83) or (state2 == "MAN THR" and thr2 >= 0.83) or (fadec.Thrust.thrustLimit.getValue() == "FLX" and (state1 == "MCT" or state2 == "MCT"))
|
||||
or state1 == "TOGA" or state2 == "TOGA") and engout) {
|
||||
if (!Modes.PFD.FMA.athr.getValue()) {
|
||||
Modes.PFD.FMA.athr.setValue(1);
|
||||
}
|
||||
} else {
|
||||
if (getprop("modes/pfd/fma/athr-armed") != 0) {
|
||||
setprop("modes/pfd/fma/athr-armed", 0);
|
||||
if (Modes.PFD.FMA.athr.getValue()) {
|
||||
Modes.PFD.FMA.athr.setValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
# SRS RWY Engagement
|
||||
var flx = getprop("systems/thrust/lim-flex");
|
||||
var lat = getprop("it-autoflight/mode/lat");
|
||||
var newlat = getprop("modes/pfd/fma/roll-mode");
|
||||
var vert = getprop("it-autoflight/mode/vert");
|
||||
var newvert = getprop("modes/pfd/fma/pitch-mode");
|
||||
var newvertarm = getprop("modes/pfd/fma/pitch-mode2-armed");
|
||||
var thr1 = getprop("controls/engines/engine[0]/throttle-pos");
|
||||
var thr2 = getprop("controls/engines/engine[1]/throttle-pos");
|
||||
var wow = getprop("gear/gear[0]/wow");
|
||||
var engstate1 = getprop("engines/engine[0]/state");
|
||||
var engstate2 = getprop("engines/engine[1]/state");
|
||||
flx = fadec.Thrust.limFlex.getValue();
|
||||
newlat = Modes.PFD.FMA.rollMode.getValue();
|
||||
engstate1 = pts.Engines.Engine.state[0].getValue();
|
||||
engstate2 = pts.Engines.Engine.state[1].getValue();
|
||||
if (((state1 == "TOGA" or state2 == "TOGA") or (flx == 1 and (state1 == "MCT" or state2 == "MCT")) or (flx == 1 and ((state1 == "MAN THR" and thr1 >= 0.83) or (state2 == "MAN THR" and thr2 >= 0.83)))) and (engstate1 == 3 or engstate2 == 3)) {
|
||||
# RWY Engagement would go here, but automatic ILS selection is not simulated yet.
|
||||
if (wow and getprop("FMGC/internal/v2-set") == 1 and getprop("it-autoflight/output/vert") != 7) {
|
||||
gear1 = pts.Gear.wow[0].getValue();
|
||||
if (gear1 and FMGCInternal.v2set and Output.vert.getValue() != 7) {
|
||||
ITAF.setVertMode(7);
|
||||
setprop("it-autoflight/mode/vert", "T/O CLB");
|
||||
Text.vert.setValue("T/O CLB");
|
||||
}
|
||||
} else {
|
||||
var gear1 = getprop("gear/gear[1]/wow");
|
||||
var gear2 = getprop("gear/gear[2]/wow");
|
||||
if (getprop("it-autoflight/input/lat") == 5 and (gear1 or gear2)) {
|
||||
gear1 = pts.Gear.wow[0].getValue();
|
||||
gear2 = pts.Gear.wow[2].getValue();
|
||||
if (Input.lat.getValue() == 5 and (gear1 or gear2)) {
|
||||
ITAF.setLatMode(9);
|
||||
}
|
||||
if (getprop("it-autoflight/output/vert") == 7 and (gear1 or gear2)) {
|
||||
if (Input.vert.getValue() == 7 and (gear1 or gear2)) {
|
||||
ITAF.setVertMode(9);
|
||||
}
|
||||
}
|
||||
|
||||
var trk = getprop("it-autoflight/custom/trk-fpa");
|
||||
if (lat == "HDG" and trk == 0) {
|
||||
trk = Custom.trkFpa.getValue();
|
||||
latText = Text.lat.getValue();
|
||||
if (latText == "HDG" and trk == 0) {
|
||||
if (newlat != "HDG") {
|
||||
setprop("modes/pfd/fma/roll-mode", "HDG");
|
||||
Modes.PFD.FMA.rollMode.setValue("HDG");
|
||||
}
|
||||
} else if (lat == "HDG" and trk == 1) {
|
||||
} else if (latText == "HDG" and trk == 1) {
|
||||
if (newlat != "TRACK") {
|
||||
setprop("modes/pfd/fma/roll-mode", "TRACK");
|
||||
Modes.PFD.FMA.rollMode.setValue("TRACK");
|
||||
}
|
||||
}
|
||||
|
||||
# Boxes
|
||||
var elapsedtime = getprop("sim/time/elapsed-sec");
|
||||
if (getprop("modes/pfd/fma/ap-mode-time") + 10 >= elapsedtime) {
|
||||
setprop("modes/pfd/fma/ap-mode-box", 1);
|
||||
elapsedtime = pts.Sim.Time.elapsedSec.getValue();
|
||||
if (Modes.PFD.FMA.apModeTime.getValue() + 10 >= elapsedtime) {
|
||||
Modes.PFD.FMA.apModeBox.setValue(1);
|
||||
} else {
|
||||
setprop("modes/pfd/fma/ap-mode-box", 0);
|
||||
Modes.PFD.FMA.apModeBox.setValue(0);
|
||||
}
|
||||
if (getprop("modes/pfd/fma/fd-mode-time") + 10 >= elapsedtime) {
|
||||
setprop("modes/pfd/fma/fd-mode-box", 1);
|
||||
if (Modes.PFD.FMA.fdModeTime.getValue() + 10 >= elapsedtime) {
|
||||
Modes.PFD.FMA.fdModeBox.setValue(1);
|
||||
} else {
|
||||
setprop("modes/pfd/fma/fd-mode-box", 0);
|
||||
Modes.PFD.FMA.fdModeBox.setValue(0);
|
||||
}
|
||||
if (getprop("modes/pfd/fma/athr-mode-time") + 10 >= elapsedtime) {
|
||||
setprop("modes/pfd/fma/athr-mode-box", 1);
|
||||
if (Modes.PFD.FMA.athrModeTime.getValue() + 10 >= elapsedtime) {
|
||||
Modes.PFD.FMA.athrModeBox.setValue(1);
|
||||
} else {
|
||||
setprop("modes/pfd/fma/athr-mode-box", 0);
|
||||
Modes.PFD.FMA.athrModeBox.setValue(0);
|
||||
}
|
||||
if (getprop("modes/pfd/fma/throttle-mode-time") + 10 >= elapsedtime) {
|
||||
setprop("modes/pfd/fma/throttle-mode-box", 1);
|
||||
if (Modes.PFD.FMA.throttleModeTime.getValue() + 10 >= elapsedtime) {
|
||||
Modes.PFD.FMA.throttleModeBox.setValue(1);
|
||||
} else {
|
||||
setprop("modes/pfd/fma/throttle-mode-box", 0);
|
||||
Modes.PFD.FMA.throttleModeBox.setValue(0);
|
||||
}
|
||||
if (getprop("modes/pfd/fma/roll-mode-time") + 10 >= elapsedtime) {
|
||||
setprop("modes/pfd/fma/roll-mode-box", 1);
|
||||
if (Modes.PFD.FMA.rollModeTime.getValue() + 10 >= elapsedtime) {
|
||||
Modes.PFD.FMA.rollModeBox.setValue(1);
|
||||
} else {
|
||||
setprop("modes/pfd/fma/roll-mode-box", 0);
|
||||
Modes.PFD.FMA.rollModeBox.setValue(0);
|
||||
}
|
||||
if (getprop("modes/pfd/fma/pitch-mode-time") + 10 >= elapsedtime) {
|
||||
setprop("modes/pfd/fma/pitch-mode-box", 1);
|
||||
if (Modes.PFD.FMA.pitchModeTime.getValue() + 10 >= elapsedtime) {
|
||||
Modes.PFD.FMA.pitchModeBox.setValue(1);
|
||||
} else {
|
||||
setprop("modes/pfd/fma/pitch-mode-box", 0);
|
||||
Modes.PFD.FMA.pitchModeBox.setValue(0);
|
||||
}
|
||||
if (getprop("modes/pfd/fma/roll-mode-armed-time") + 10 >= elapsedtime) {
|
||||
setprop("modes/pfd/fma/roll-mode-armed-box", 1);
|
||||
if (Modes.PFD.FMA.rollModeArmedTime.getValue() + 10 >= elapsedtime) {
|
||||
Modes.PFD.FMA.rollModeArmedBox.setValue(1);
|
||||
} else {
|
||||
setprop("modes/pfd/fma/roll-mode-armed-box", 0);
|
||||
Modes.PFD.FMA.rollModeArmedBox.setValue(0);
|
||||
}
|
||||
if (getprop("modes/pfd/fma/pitch-mode-armed-time") + 10 >= elapsedtime) {
|
||||
setprop("modes/pfd/fma/pitch-mode-armed-box", 1);
|
||||
if (Modes.PFD.FMA.pitchModeArmedTime.getValue() + 10 >= elapsedtime) {
|
||||
Modes.PFD.FMA.pitchModeArmedBox.setValue(1);
|
||||
} else {
|
||||
setprop("modes/pfd/fma/pitch-mode-armed-box", 0);
|
||||
Modes.PFD.FMA.pitchModeArmedBox.setValue(0);
|
||||
}
|
||||
if (getprop("modes/pfd/fma/pitch-mode2-armed-time") + 10 >= elapsedtime) {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed-box", 1);
|
||||
if (Modes.PFD.FMA.pitchMode2ArmedTime.getValue() + 10 >= elapsedtime) {
|
||||
Modes.PFD.FMA.pitchMode2ArmedBox.setValue(1);
|
||||
} else {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed-box", 0);
|
||||
Modes.PFD.FMA.pitchMode2ArmedBox.setValue(0);
|
||||
}
|
||||
});
|
||||
|
||||
var loopFMA_b = func {
|
||||
var newthr = getprop("modes/pfd/fma/throttle-mode");
|
||||
if (getprop("it-autoflight/input/kts-mach") == 0) {
|
||||
newthr = Modes.PFD.FMA.throttle.getValue();
|
||||
if (!Input.ktsMach.getValue()) {
|
||||
if (newthr != "SPEED") {
|
||||
setprop("modes/pfd/fma/throttle-mode", "SPEED");
|
||||
Modes.PFD.FMA.throttle.setValue("SPEED");
|
||||
}
|
||||
} else if (getprop("it-autoflight/input/kts-mach") == 1) {
|
||||
} else {
|
||||
if (newthr != "MACH") {
|
||||
setprop("modes/pfd/fma/throttle-mode", "MACH");
|
||||
Modes.PFD.FMA.throttle.setValue("MACH");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Master Lateral
|
||||
setlistener("/it-autoflight/mode/lat", func {
|
||||
var lat = getprop("it-autoflight/mode/lat");
|
||||
var newlat = getprop("modes/pfd/fma/roll-mode");
|
||||
if (lat == "LNAV") {
|
||||
latText = Text.lat.getValue();
|
||||
newlat = Modes.PFD.FMA.rollMode.getValue();
|
||||
if (latText == "LNAV") {
|
||||
if (newlat != "NAV") {
|
||||
setprop("modes/pfd/fma/roll-mode", "NAV");
|
||||
Modes.PFD.FMA.rollMode.setValue("NAV");
|
||||
}
|
||||
} else if (lat == "LOC") {
|
||||
} else if (latText == "LOC") {
|
||||
if (newlat != "LOC*" and newlat != "LOC") {
|
||||
setprop("modes/pfd/fma/roll-mode", "LOC*");
|
||||
Modes.PFD.FMA.rollMode.setValue("LOC*");
|
||||
locupdate.start();
|
||||
}
|
||||
} else if (lat == "ALGN") {
|
||||
} else if (latText == "ALGN") {
|
||||
if (newlat != " ") {
|
||||
setprop("modes/pfd/fma/roll-mode", " ");
|
||||
Modes.PFD.FMA.rollMode.setValue(" ");
|
||||
}
|
||||
} else if (lat == "RLOU") {
|
||||
} else if (latText == "RLOU") {
|
||||
if (newlat != " ") {
|
||||
setprop("modes/pfd/fma/roll-mode", " ");
|
||||
Modes.PFD.FMA.rollMode.setValue(" ");
|
||||
}
|
||||
} else if (lat == "T/O") {
|
||||
} else if (latText == "T/O") {
|
||||
if (newlat != "RWY") {
|
||||
setprop("modes/pfd/fma/roll-mode", "RWY");
|
||||
Modes.PFD.FMA.rollMode.setValue("RWY");
|
||||
}
|
||||
} else if (lat == " ") {
|
||||
} else if (latText == " ") {
|
||||
if (newlat != " ") {
|
||||
setprop("modes/pfd/fma/roll-mode", " ");
|
||||
Modes.PFD.FMA.rollMode.setValue(" ");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var locupdate = maketimer(0.5, func {
|
||||
var lat = getprop("it-autoflight/mode/lat");
|
||||
var newlat = getprop("modes/pfd/fma/roll-mode");
|
||||
var nav_defl = getprop("instrumentation/nav[0]/heading-needle-deflection-norm");
|
||||
if (lat == "LOC") {
|
||||
latText = Text.lat.getValue();
|
||||
newlat = Modes.PFD.FMA.rollMode.getValue();
|
||||
nav_defl = pts.Instrumentation.Nav.locDeflection.getValue();
|
||||
if (latText == "LOC") {
|
||||
if (nav_defl > -0.06 and nav_defl < 0.06) {
|
||||
locupdate.stop();
|
||||
if (newlat != "LOC") {
|
||||
setprop("modes/pfd/fma/roll-mode", "LOC");
|
||||
Modes.PFD.FMA.rollMode.setValue("LOC");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -261,265 +332,250 @@ var locupdate = maketimer(0.5, func {
|
|||
|
||||
# Master Vertical
|
||||
setlistener("/it-autoflight/mode/vert", func {
|
||||
var vert = getprop("it-autoflight/mode/vert");
|
||||
var newvert = getprop("modes/pfd/fma/pitch-mode");
|
||||
var newvertarm = getprop("modes/pfd/fma/pitch-mode2-armed");
|
||||
if (vert == "ALT HLD") {
|
||||
vertText = Text.vert.getValue();
|
||||
newvert = Modes.PFD.FMA.pitchMode.getValue();
|
||||
newvertarm = Modes.PFD.FMA.pitchMode2Armed.getValue();
|
||||
if (vertText == "ALT HLD") {
|
||||
altvert();
|
||||
if (newvertarm != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", " ");
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue(" ");
|
||||
}
|
||||
} else if (vert == "ALT CAP") {
|
||||
} else if (vertText == "ALT CAP") {
|
||||
altvert();
|
||||
if (newvertarm != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", " ");
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue(" ");
|
||||
}
|
||||
} else if (vert == "V/S") {
|
||||
} else if (vertText == "V/S") {
|
||||
if (newvert != "V/S") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "V/S");
|
||||
Modes.PFD.FMA.pitchMode.setValue("V/S");
|
||||
}
|
||||
if (newvertarm != "ALT") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", "ALT");
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue("ALT");
|
||||
}
|
||||
} else if (vert == "G/S") {
|
||||
} else if (vertText == "G/S") {
|
||||
if (newvert != "G/S*" and newvert != "G/S") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "G/S*");
|
||||
Modes.PFD.FMA.pitchMode.setValue("G/S*");
|
||||
gsupdate.start();
|
||||
}
|
||||
if (newvertarm != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", " ");
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue(" ");
|
||||
}
|
||||
} else if (vert == "SPD CLB") {
|
||||
} else if (vertText == "SPD CLB") {
|
||||
if (newvert != "OP CLB") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "OP CLB");
|
||||
Modes.PFD.FMA.pitchMode.setValue("OP CLB");
|
||||
}
|
||||
if (newvertarm != "ALT") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", "ALT");
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue("ALT");
|
||||
}
|
||||
} else if (vert == "SPD DES") {
|
||||
} else if (vertText == "SPD DES") {
|
||||
if (newvert != "OP DES") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "OP DES");
|
||||
Modes.PFD.FMA.pitchMode.setValue("OP DES");
|
||||
}
|
||||
if (newvertarm != "ALT") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", "ALT");
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue("ALT");
|
||||
}
|
||||
} else if (vert == "FPA") {
|
||||
} else if (vertText == "FPA") {
|
||||
if (newvert != "FPA") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "FPA");
|
||||
Modes.PFD.FMA.pitchMode.setValue("FPA");
|
||||
}
|
||||
if (newvertarm != "ALT") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", "ALT");
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue("ALT");
|
||||
}
|
||||
} else if (vert == "LAND") {
|
||||
} else if (vertText == "LAND") {
|
||||
if (newvert != "LAND") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "LAND");
|
||||
Modes.PFD.FMA.pitchMode.setValue("LAND");
|
||||
}
|
||||
} else if (vert == "FLARE") {
|
||||
} else if (vertText == "FLARE") {
|
||||
if (newvert != "FLARE") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "FLARE");
|
||||
Modes.PFD.FMA.pitchMode.setValue("FLARE");
|
||||
}
|
||||
} else if (vert == "ROLLOUT") {
|
||||
} else if (vertText == "ROLLOUT") {
|
||||
if (newvert != "ROLL OUT") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "ROLL OUT");
|
||||
Modes.PFD.FMA.pitchMode.setValue("ROLL OUT");
|
||||
}
|
||||
} else if (vert == "T/O CLB") {
|
||||
} else if (vertText == "T/O CLB") {
|
||||
if (newvert != "SRS") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "SRS");
|
||||
Modes.PFD.FMA.pitchMode.setValue("SRS");
|
||||
}
|
||||
updatePitchArm2();
|
||||
} else if (vert == "G/A CLB") {
|
||||
} else if (vertText == "G/A CLB") {
|
||||
if (newvert != "SRS") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "SRS");
|
||||
Modes.PFD.FMA.pitchMode.setValue("SRS");
|
||||
}
|
||||
if (newvertarm != "ALT") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", "ALT");
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue("ALT");
|
||||
}
|
||||
} else if (vert == " ") {
|
||||
} else if (vertText == " ") {
|
||||
if (newvert != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode", " ");
|
||||
Modes.PFD.FMA.pitchMode.setValue(" ");
|
||||
}
|
||||
updatePitchArm2();
|
||||
}
|
||||
altvert();
|
||||
});
|
||||
|
||||
setlistener("/FMGC/internal/v2-set", func {
|
||||
updatePitchArm2();
|
||||
});
|
||||
|
||||
var updatePitchArm2 = func {
|
||||
var newvertarm = getprop("modes/pfd/fma/pitch-mode2-armed");
|
||||
if (newvertarm != "CLB" and getprop("FMGC/internal/v2-set") == 1) {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", "CLB");
|
||||
} else if (newvertarm != " " and getprop("FMGC/internal/v2-set") != 1) {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed", " ");
|
||||
newvertarm = Modes.PFD.FMA.pitchMode2Armed.getValue();
|
||||
if (newvertarm != "CLB" and FMGCInternal.v2set) {
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue("CLB");
|
||||
} else if (newvertarm != " " and !FMGCInternal.v2set) {
|
||||
Modes.PFD.FMA.pitchMode2Armed.setValue(" ");
|
||||
}
|
||||
}
|
||||
|
||||
var gsupdate = maketimer(0.5, func {
|
||||
var vert = getprop("it-autoflight/mode/vert");
|
||||
var newvert = getprop("modes/pfd/fma/pitch-mode");
|
||||
var gs_defl = getprop("instrumentation/nav[0]/gs-needle-deflection-norm");
|
||||
if (vert == "G/S") {
|
||||
vertText = Text.vert.getValue();
|
||||
newvert = Modes.PFD.FMA.pitchMode.getValue();
|
||||
gs_defl = pts.Instrumentation.Nav.gsDeflection.getValue();
|
||||
if (vertText == "G/S") {
|
||||
if (gs_defl > -0.06 and gs_defl < 0.06) {
|
||||
gsupdate.stop();
|
||||
if (newvert != "G/S") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "G/S");
|
||||
Modes.PFD.FMA.pitchMode.setValue("G/S");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var altvert = func {
|
||||
var FMGCalt = getprop("FMGC/internal/cruise-ft");
|
||||
var MCPalt = getprop("it-autoflight/internal/alt");
|
||||
var ALTdif = abs(FMGCalt - MCPalt);
|
||||
var vert = getprop("it-autoflight/mode/vert");
|
||||
var newvert = getprop("modes/pfd/fma/pitch-mode");
|
||||
if (ALTdif <= 20) {
|
||||
if (vert == "ALT HLD") {
|
||||
MCPalt = Internal.alt.getValue();
|
||||
vertText = Text.vert.getValue();
|
||||
newvert = Modes.PFD.FMA.pitchMode.getValue();
|
||||
|
||||
if (abs(fmgc.FMGCInternal.crzFt - MCPalt) <= 20) {
|
||||
if (vertText == "ALT HLD") {
|
||||
if (newvert != "ALT CRZ") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "ALT CRZ");
|
||||
Modes.PFD.FMA.pitchMode.setValue("ALT CRZ");
|
||||
}
|
||||
} else if (vert == "ALT CAP") {
|
||||
} else if (vertText == "ALT CAP") {
|
||||
if (newvert != "ALT CRZ*") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "ALT CRZ*");
|
||||
Modes.PFD.FMA.pitchMode.setValue("ALT CRZ*");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (vert == "ALT HLD") {
|
||||
if (vertText == "ALT HLD") {
|
||||
if (newvert != "ALT") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "ALT");
|
||||
Modes.PFD.FMA.pitchMode.setValue("ALT");
|
||||
}
|
||||
} else if (vert == "ALT CAP") {
|
||||
} else if (vertText == "ALT CAP") {
|
||||
if (newvert != "ALT*") {
|
||||
setprop("modes/pfd/fma/pitch-mode", "ALT*");
|
||||
Modes.PFD.FMA.pitchMode.setValue("ALT*");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setlistener("/FMGC/internal/cruise-ft", altvert);
|
||||
|
||||
# Arm HDG or NAV
|
||||
setlistener("/it-autoflight/mode/arm", func {
|
||||
var arm = getprop("it-autoflight/mode/arm");
|
||||
var newarm = getprop("modes/pfd/fma/roll-mode-armed");
|
||||
arm = Text.arm.getValue();
|
||||
newarm = Modes.PFD.FMA.rollModeArmed.getValue();
|
||||
if (arm == "HDG") {
|
||||
if (newarm != "HDG") {
|
||||
setprop("modes/pfd/fma/roll-mode-armed", " ");
|
||||
Modes.PFD.FMA.rollModeArmed.setValue(" ");
|
||||
}
|
||||
} else if (arm == "LNV") {
|
||||
if (newarm != "NAV") {
|
||||
setprop("modes/pfd/fma/roll-mode-armed", "NAV");
|
||||
Modes.PFD.FMA.rollModeArmed.setValue("NAV");
|
||||
}
|
||||
} else if (arm == " ") {
|
||||
if (newarm != " ") {
|
||||
setprop("modes/pfd/fma/roll-mode-armed", " ");
|
||||
Modes.PFD.FMA.rollModeArmed.setValue(" ");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
# Arm LOC
|
||||
setlistener("/it-autoflight/output/loc-armed", func {
|
||||
var loca = getprop("it-autoflight/output/loc-armed");
|
||||
var newarm = getprop("modes/pfd/fma/roll-mode-armed");
|
||||
if (loca) {
|
||||
newarm = Modes.PFD.FMA.rollModeArmed.getValue();
|
||||
if (Output.locArm.getValue()) {
|
||||
if (newarm != "LOC") {
|
||||
setprop("modes/pfd/fma/roll-mode-armed", "LOC");
|
||||
Modes.PFD.FMA.rollModeArmed.setValue("LOC");
|
||||
}
|
||||
} else {
|
||||
if (newarm != " ") {
|
||||
setprop("modes/pfd/fma/roll-mode-armed", " ");
|
||||
Modes.PFD.FMA.rollModeArmed.setValue(" ");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
# Arm G/S
|
||||
setlistener("/it-autoflight/output/appr-armed", func {
|
||||
var appa = getprop("it-autoflight/output/appr-armed");
|
||||
var newvert2arm = getprop("modes/pfd/fma/pitch-mode-armed");
|
||||
if (appa) {
|
||||
newvert2arm = Modes.PFD.FMA.pitchModeArmed.getValue();
|
||||
if (Output.apprArm.getValue()) {
|
||||
if (newvert2arm != "G/S") {
|
||||
setprop("modes/pfd/fma/pitch-mode-armed", "G/S");
|
||||
Modes.PFD.FMA.pitchModeArmed.setValue("G/S");
|
||||
}
|
||||
} else {
|
||||
if (newvert2arm != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode-armed", " ");
|
||||
Modes.PFD.FMA.pitchModeArmed.setValue(" ");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
# AP
|
||||
var ap = func {
|
||||
var ap1 = getprop("it-autoflight/output/ap1");
|
||||
var ap2 = getprop("it-autoflight/output/ap2");
|
||||
var newap = getprop("modes/pfd/fma/ap-mode");
|
||||
ap1 = Output.ap1.getValue();
|
||||
ap2 = Output.ap2.getValue();
|
||||
newap = Modes.PFD.FMA.apMode.getValue();
|
||||
if (ap1 and ap2 and newap != "AP1+2") {
|
||||
setprop("modes/pfd/fma/ap-mode", "AP 1+2");
|
||||
Modes.PFD.FMA.apMode.setValue("AP 1+2");
|
||||
} else if (ap1 and !ap2 and newap != "AP 1") {
|
||||
setprop("modes/pfd/fma/ap-mode", "AP 1");
|
||||
Modes.PFD.FMA.apMode.setValue("AP 1");
|
||||
} else if (ap2 and !ap1 and newap != "AP 2") {
|
||||
setprop("modes/pfd/fma/ap-mode", "AP 2");
|
||||
Modes.PFD.FMA.apMode.setValue("AP 2");
|
||||
} else if (!ap1 and !ap2) {
|
||||
setprop("modes/pfd/fma/ap-mode", " ");
|
||||
Modes.PFD.FMA.apMode.setValue(" ");
|
||||
}
|
||||
}
|
||||
|
||||
# FD
|
||||
var fd = func {
|
||||
var fd1 = getprop("it-autoflight/output/fd1");
|
||||
var fd2 = getprop("it-autoflight/output/fd2");
|
||||
var newfd = getprop("modes/pfd/fma/fd-mode");
|
||||
fd1 = Output.fd1.getValue();
|
||||
fd2 = Output.fd2.getValue();
|
||||
newfd = Modes.PFD.FMA.fdMode.getValue();
|
||||
if (fd1 and fd2 and newfd != "1FD2") {
|
||||
setprop("modes/pfd/fma/fd-mode", "1 FD 2");
|
||||
Modes.PFD.FMA.fdMode.setValue("1 FD 2");
|
||||
} else if (fd1 and !fd2 and newfd != "1 FD -") {
|
||||
setprop("modes/pfd/fma/fd-mode", "1 FD -");
|
||||
Modes.PFD.FMA.fdMode.setValue("1 FD -");
|
||||
} else if (fd2 and !fd1 and newfd != "- FD 2") {
|
||||
setprop("modes/pfd/fma/fd-mode", "- FD 2");
|
||||
Modes.PFD.FMA.fdMode.setValue("- FD 2");
|
||||
} else if (!fd1 and !fd2) {
|
||||
setprop("modes/pfd/fma/fd-mode", " ");
|
||||
Modes.PFD.FMA.fdMode.setValue(" ");
|
||||
}
|
||||
}
|
||||
|
||||
# AT
|
||||
var at = func {
|
||||
var at = getprop("it-autoflight/output/athr");
|
||||
var newat = getprop("modes/pfd/fma/at-mode");
|
||||
if (at and newat != "A/THR") {
|
||||
setprop("modes/pfd/fma/at-mode", "A/THR");
|
||||
var atMode = func {
|
||||
at = Output.athr.getValue();
|
||||
if (at and Modes.PFD.FMA.athrMode.getValue() != "A/THR") {
|
||||
Modes.PFD.FMA.athrMode.setValue("A/THR");
|
||||
} else if (!at) {
|
||||
setprop("modes/pfd/fma/at-mode", " ");
|
||||
Modes.PFD.FMA.athrMode.setValue(" ");
|
||||
}
|
||||
}
|
||||
|
||||
var boxchk = func {
|
||||
if ((getprop("it-autoflight/output/ap1") or getprop("it-autoflight/output/ap2") or getprop("it-autoflight/output/fd1") or getprop("it-autoflight/output/fd2")) and getprop("it-autoflight/output/fma-pwr") == 0) {
|
||||
setprop("it-autoflight/input/lat", 3);
|
||||
if ((Output.ap1.getValue() or Output.ap2.getValue() or Output.fd1.getValue() or Output.fd2.getValue()) and !Custom.Output.fmaPower.getValue()) {
|
||||
Input.lat.setValue(3);
|
||||
boxchk_b();
|
||||
}
|
||||
}
|
||||
|
||||
var boxchk_b = func {
|
||||
var newlat = getprop("modes/pfd/fma/roll-mode");
|
||||
if (newlat != " ") {
|
||||
setprop("modes/pfd/fma/roll-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.rollMode.getValue() != " ") {
|
||||
Modes.PFD.FMA.rollModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
var newvert = getprop("modes/pfd/fma/pitch-mode");
|
||||
if (newvert != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.pitchMode.getValue() != " ") {
|
||||
Modes.PFD.FMA.pitchModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
var newarmr = getprop("modes/pfd/fma/roll-mode-armed");
|
||||
if (newarmr != " ") {
|
||||
setprop("modes/pfd/fma/roll-mode-armed-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.rollModeArmed.getValue() != " ") {
|
||||
Modes.PFD.FMA.rollModeArmedTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
var newarmp = getprop("modes/pfd/fma/pitch-mode-armed");
|
||||
if (newarmp != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode-armed-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.pitchModeArmed.getValue() != " ") {
|
||||
Modes.PFD.FMA.pitchModeArmedTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
var newarmp2 = getprop("modes/pfd/fma/pitch-mode2-armed");
|
||||
if (newarmp2 != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.pitchMode2Armed.getValue() != " ") {
|
||||
Modes.PFD.FMA.pitchMode2ArmedTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -541,79 +597,79 @@ setlistener("/it-autoflight/output/fd2", func {
|
|||
boxchk();
|
||||
});
|
||||
setlistener("/it-autoflight/output/athr", func {
|
||||
at();
|
||||
atMode();
|
||||
});
|
||||
|
||||
# Boxes
|
||||
setlistener("/modes/pfd/fma/ap-mode", func {
|
||||
if (getprop("modes/pfd/fma/ap-mode") != " ") {
|
||||
setprop("modes/pfd/fma/ap-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.apMode.getValue() != " ") {
|
||||
Modes.PFD.FMA.apModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/modes/pfd/fma/fd-mode", func {
|
||||
if (getprop("modes/pfd/fma/fd-mode") != " ") {
|
||||
setprop("modes/pfd/fma/fd-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.fdMode.getValue() != " ") {
|
||||
Modes.PFD.FMA.fdModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/modes/pfd/fma/at-mode", func {
|
||||
if (getprop("modes/pfd/fma/at-mode") != " ") {
|
||||
setprop("modes/pfd/fma/throttle-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
setprop("modes/pfd/fma/athr-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.athrMode.getValue() != " ") {
|
||||
Modes.PFD.FMA.throttleModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
Modes.PFD.FMA.athrModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/modes/pfd/fma/athr-armed", func {
|
||||
if (getprop("modes/pfd/fma/at-mode") != " ") {
|
||||
setprop("modes/pfd/fma/athr-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.athrMode.getValue() != " ") {
|
||||
Modes.PFD.FMA.athrModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/modes/pfd/fma/throttle-mode", func {
|
||||
var state1 = getprop("systems/thrust/state1");
|
||||
var state2 = getprop("systems/thrust/state2");
|
||||
if (getprop("it-autoflight/output/athr") == 1 and state1 != "MCT" and state2 != "MCT" and state1 != "MAN THR" and state2 != "MAN THR" and state1 != "TOGA" and state2 != "TOGA" and state1 != "IDLE" and state2 != "IDLE" and
|
||||
getprop("systems/thrust/eng-out") != 1) {
|
||||
setprop("modes/pfd/fma/throttle-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
} else if (getprop("it-autoflight/output/athr") == 1 and state1 != "TOGA" and state2 != "TOGA" and state1 != "IDLE" and state2 != "IDLE" and getprop("systems/thrust/eng-out") == 1) {
|
||||
if (getprop("controls/engines/engine[0]/throttle-pos") < 0.83 and getprop("controls/engines/engine[1]/throttle-pos") < 0.83) {
|
||||
setprop("modes/pfd/fma/throttle-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
state1 = pts.Systems.Thrust.state[0].getValue();
|
||||
state2 = pts.Systems.Thrust.state[1].getValue();
|
||||
athr = Output.athr.getValue();
|
||||
if (athr == 1 and state1 != "MCT" and state2 != "MCT" and state1 != "MAN THR" and state2 != "MAN THR" and state1 != "TOGA" and state2 != "TOGA" and state1 != "IDLE" and state2 != "IDLE" and
|
||||
!pts.Systems.Thrust.engOut.getValue()) {
|
||||
Modes.PFD.FMA.throttleModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
} else if (athr == 1 and state1 != "TOGA" and state2 != "TOGA" and state1 != "IDLE" and state2 != "IDLE" and pts.Systems.Thrust.engOut.getValue()) {
|
||||
if (pts.Controls.Engines.Engine.throttlePos[0].getValue() < 0.83 and pts.Controls.Engines.Engine.throttlePos[1].getValue() < 0.83) {
|
||||
Modes.PFD.FMA.throttleModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/modes/pfd/fma/roll-mode", func {
|
||||
var newlat = getprop("modes/pfd/fma/roll-mode");
|
||||
if (newlat != " ") {
|
||||
setprop("modes/pfd/fma/roll-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.rollMode.getValue() != " ") {
|
||||
Modes.PFD.FMA.rollModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/modes/pfd/fma/pitch-mode", func {
|
||||
var newvert = getprop("modes/pfd/fma/pitch-mode");
|
||||
if (newvert != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.pitchMode.getValue() != " ") {
|
||||
Modes.PFD.FMA.pitchModeTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/modes/pfd/fma/roll-mode-armed", func {
|
||||
var newarm = getprop("modes/pfd/fma/roll-mode-armed");
|
||||
if (newarm != " ") {
|
||||
setprop("modes/pfd/fma/roll-mode-armed-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.rollModeArmed.getValue() != " ") {
|
||||
Modes.PFD.FMA.rollModeArmedTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/modes/pfd/fma/pitch-mode-armed", func {
|
||||
var newarm = getprop("modes/pfd/fma/pitch-mode-armed");
|
||||
if (newarm != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode-armed-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.pitchModeArmed.getValue() != " ") {
|
||||
Modes.PFD.FMA.pitchModeArmedTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("/modes/pfd/fma/pitch-mode2-armed", func {
|
||||
var newarm = getprop("modes/pfd/fma/pitch-mode2-armed");
|
||||
if (newarm != " ") {
|
||||
setprop("modes/pfd/fma/pitch-mode2-armed-time", getprop("sim/time/elapsed-sec"));
|
||||
if (Modes.PFD.FMA.pitchMode2Armed != " ") {
|
||||
Modes.PFD.FMA.pitchMode2ArmedTime.setValue(pts.Sim.Time.elapsedSec.getValue());
|
||||
}
|
||||
});
|
||||
|
||||
setlistener("sim/signals/fdm-initialized", func {
|
||||
init();
|
||||
});
|
||||
|
|
1279
Nasal/FMGC/FMGC.nas
210
Nasal/FMGC/SimbriefParser.nas
Normal file
|
@ -0,0 +1,210 @@
|
|||
# A3XX Simbrief Parser
|
||||
# Copyright (c) 2020 Jonathan Redpath (legoboyvdlp)
|
||||
|
||||
var LBS2KGS = 0.4535924;
|
||||
|
||||
var SimbriefParser = {
|
||||
node: nil,
|
||||
OFP: nil,
|
||||
store1: nil,
|
||||
store2: nil,
|
||||
inhibit: 0,
|
||||
fetch: func(username, i) {
|
||||
me.inhibit = 1;
|
||||
var stamp = systime();
|
||||
http.save("https://www.simbrief.com/api/xml.fetcher.php?username=" ~ username, getprop('/sim/fg-home') ~ "/Export/A320-family-simbrief.xml")
|
||||
.fail(func me.failure(i))
|
||||
.done(func me.read(getprop('/sim/fg-home') ~ "/Export/A320-family-simbrief.xml", i));
|
||||
},
|
||||
failure: func(i) {
|
||||
mcdu.mcdu_message(i, "SIMBRIEF DOWNLOAD FAILED");
|
||||
me.inhibit = 0;
|
||||
},
|
||||
read: func(xml, i) {
|
||||
var data = io.readxml(xml);
|
||||
if (data != nil) {
|
||||
if (data.getChild("OFP") == nil) {
|
||||
print("XML file " ~ xml ~ " not a valid Simbrief file");
|
||||
} else {
|
||||
me.node = data;
|
||||
me.parseOFP();
|
||||
mcdu.mcdu_message(i, "AOC ACT F-PLN UPLINK");
|
||||
}
|
||||
} else {
|
||||
print("Error reading " ~ xml);
|
||||
}
|
||||
},
|
||||
parseOFP: func() {
|
||||
me.OFP = me.node.getChild("OFP");
|
||||
me.store1 = nil;
|
||||
me.store2 = nil;
|
||||
|
||||
me.store1 = me.OFP.getChild("params");
|
||||
var units = me.store1.getChild("units").getValue();
|
||||
|
||||
me.store1 = me.OFP.getChild("general");
|
||||
me.store2 = me.OFP.getChild("alternate");
|
||||
fmgc.FMGCInternal.flightNum = (me.store1.getChild("icao_airline").getValue() or "") ~ (me.store1.getChild("flight_number").getValue() or "");
|
||||
fmgc.FMGCInternal.flightNumSet = 1;
|
||||
fmgc.FMGCInternal.costIndex = me.store1.getChild("costindex").getValue();
|
||||
fmgc.FMGCInternal.costIndexSet = 1;
|
||||
fmgc.FMGCNodes.costIndex.setValue(fmgc.FMGCInternal.costIndex);
|
||||
fmgc.FMGCInternal.tropo = me.store1.getChild("avg_tropopause").getValue();
|
||||
fmgc.FMGCInternal.tropoSet = 1;
|
||||
fmgc.FMGCInternal.crzFt = me.store1.getChild("initial_altitude").getValue();
|
||||
fmgc.FMGCInternal.crzFl = me.store1.getChild("initial_altitude").getValue() / 100;
|
||||
fmgc.altvert();
|
||||
fmgc.FMGCInternal.crzSet = 1;
|
||||
mcdu.updateCrzLvlCallback();
|
||||
fmgc.FMGCInternal.crzTemp = (((me.store1.getChild("initial_altitude").getValue() / 1000) * -2) + 15) + me.store1.getChild("avg_temp_dev").getValue();
|
||||
fmgc.FMGCInternal.crzTempSet = 1;
|
||||
fmgc.FMGCInternal.crzProg = me.store1.getChild("initial_altitude").getValue() / 100;
|
||||
if (num(me.store1.getChild("avg_wind_comp").getValue()) >= 0) {
|
||||
fmgc.FMGCInternal.tripWind = "TL" ~ abs(me.store1.getChild("avg_wind_comp").getValue());
|
||||
} else {
|
||||
fmgc.FMGCInternal.tripWind = "HD" ~ abs(me.store1.getChild("avg_wind_comp").getValue());
|
||||
}
|
||||
fmgc.FMGCInternal.tripWindValue = abs(me.store1.getChild("avg_wind_comp").getValue());
|
||||
|
||||
fmgc.FMGCInternal.altAirport = me.store2.getChild("icao_code").getValue();
|
||||
fmgc.FMGCInternal.altAirportSet = 1;
|
||||
|
||||
# Flightplan stuff
|
||||
fmgc.flightPlanController.flightplans[3] = createFlightplan();
|
||||
|
||||
# INITA
|
||||
me.store1 = me.OFP.getChild("origin");
|
||||
me.store2 = me.OFP.getChild("destination");
|
||||
|
||||
fmgc.FMGCInternal.depApt = me.store1.getChild("icao_code").getValue();
|
||||
fmgc.FMGCInternal.arrApt = me.store2.getChild("icao_code").getValue();
|
||||
fmgc.FMGCInternal.toFromSet = 1;
|
||||
fmgc.FMGCNodes.toFromSet.setValue(1);
|
||||
fmgc.flightPlanController.flightplans[3].departure = airportinfo(fmgc.FMGCInternal.depApt);
|
||||
fmgc.flightPlanController.flightplans[3].destination = airportinfo(fmgc.FMGCInternal.arrApt);
|
||||
fmgc.FMGCInternal.altSelected = 0;
|
||||
fmgc.updateArptLatLon();
|
||||
fmgc.updateARPT();
|
||||
call(func() {
|
||||
fmgc.flightPlanController.flightplans[3].departure_runway = airportinfo(fmgc.FMGCInternal.depApt).runways[me.store1.getChild("plan_rwy").getValue()];
|
||||
fmgc.flightPlanController.flightplans[3].destination_runway = airportinfo(fmgc.FMGCInternal.arrApt).runways[me.store2.getChild("plan_rwy").getValue()];
|
||||
});
|
||||
|
||||
me.store1 = me.OFP.getChild("navlog").getChildren();
|
||||
if (size(me.store1) != 0) {
|
||||
var firstIsSID = 0;
|
||||
var SIDID = "";
|
||||
if (me.store1[0].getChild("is_sid_star").getValue() == 1) {
|
||||
if (fmgc.flightPlanController.flightplans[3].departure.getSid(me.store1[0].getChild("via_airway").getValue()) != nil) {
|
||||
firstIsSID = 1;
|
||||
SIDID = me.store1[0].getChild("via_airway").getValue();
|
||||
}
|
||||
}
|
||||
var lastIsSTAR = 0;
|
||||
var STARID = "";
|
||||
if (me.store1[-1].getChild("is_sid_star").getValue() == 1) {
|
||||
if (fmgc.flightPlanController.flightplans[3].destination.getStar(me.store1[-1].getChild("via_airway").getValue()) != nil) {
|
||||
lastIsSTAR = 1;
|
||||
STARID = me.store1[-1].getChild("via_airway").getValue();
|
||||
}
|
||||
}
|
||||
|
||||
var lastSIDIndex = -999;
|
||||
var firstSTARIndex = -999;
|
||||
var TOCinSIDflag = 0;
|
||||
var TODinSTARflag = 0;
|
||||
for (var i = 0; i < size(me.store1); i = i + 1) {
|
||||
if (firstIsSID) {
|
||||
if (me.store1[i].getChild("is_sid_star").getValue() == 0 or me.store1[i].getChild("via_airway").getValue() != SIDID) {
|
||||
lastSIDIndex = i - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = lastSIDIndex == -999 ? 0 : lastSIDIndex; i < size(me.store1); i = i + 1) {
|
||||
if (STARID != "") {
|
||||
if (me.store1[i].getChild("is_sid_star").getValue() == 1 and me.store1[i].getChild("via_airway").getValue() == STARID) {
|
||||
firstSTARIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var max = firstSTARIndex == -999 ? size(me.store1) - 1 : firstSTARIndex - 1;
|
||||
for (var i = lastSIDIndex == -999 ? 0 : lastSIDIndex + 2; i < max; i = i + 1) {
|
||||
if (me.store1[i].getChild("ident").getValue() == "TOC" or me.store1[i].getChild("ident").getValue() == "TOD") { continue; }
|
||||
var coord = geo.Coord.new();
|
||||
coord.set_latlon(me.store1[i].getChild("pos_lat").getValue(), me.store1[i].getChild("pos_long").getValue());
|
||||
var fixes = findFixesByID(coord, me.store1[i].getChild("ident").getValue());
|
||||
var navaids = findNavaidsByID(coord, me.store1[i].getChild("ident").getValue());
|
||||
if (size(fixes) > 0) {
|
||||
fmgc.flightPlanController.flightplans[3].appendWP(createWPFrom(fixes[0]));
|
||||
} else if (size(navaids) > 0) {
|
||||
fmgc.flightPlanController.flightplans[3].appendWP(createWPFrom(navaids[0]));
|
||||
} else {
|
||||
var WP = createWP(coord, me.store1[i].getChild("ident").getValue());
|
||||
fmgc.flightPlanController.flightplans[3].appendWP(WP);
|
||||
}
|
||||
}
|
||||
fmgc.flightPlanController.flightplans[3].sid = fmgc.flightPlanController.flightplans[3].departure.getSid(SIDID);
|
||||
fmgc.flightPlanController.flightplans[3].star = fmgc.flightPlanController.flightplans[3].destination.getStar(STARID);
|
||||
}
|
||||
fmgc.flightPlanController.destroyTemporaryFlightPlan(3, 1);
|
||||
|
||||
fmgc.windController.updatePlans();
|
||||
fmgc.updateRouteManagerAlt();
|
||||
|
||||
|
||||
# INITB
|
||||
me.store1 = me.OFP.getChild("fuel");
|
||||
me.store2 = me.OFP.getChild("weights");
|
||||
if (units == "lbs") {
|
||||
fmgc.FMGCInternal.taxiFuel = me.store1.getChild("taxi").getValue() / 1000;
|
||||
fmgc.FMGCInternal.taxiFuelSet = 1;
|
||||
fmgc.FMGCInternal.altFuel = me.store1.getChild("alternate_burn").getValue() / 1000;
|
||||
fmgc.FMGCInternal.altFuelSet = 1;
|
||||
fmgc.FMGCInternal.finalFuel = me.store1.getChild("reserve").getValue() / 1000;
|
||||
fmgc.FMGCInternal.finalFuelSet = 1;
|
||||
fmgc.FMGCInternal.rteRsv = me.store1.getChild("contingency").getValue() / 1000;
|
||||
fmgc.FMGCInternal.rteRsvSet = 1;
|
||||
if ((me.store1.getChild("contingency").getValue() / 1000) / num(fmgc.FMGCInternal.tripFuel) * 100 <= 15.0) {
|
||||
fmgc.FMGCInternal.rtePercent = (me.store1.getChild("contingency").getValue() / 1000) / num(fmgc.FMGCInternal.tripFuel) * 100;
|
||||
} else {
|
||||
fmgc.FMGCInternal.rtePercent = 15.0
|
||||
}
|
||||
fmgc.FMGCInternal.rtePercentSet = 0;
|
||||
fmgc.FMGCInternal.block = me.store1.getChild("plan_ramp").getValue() / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.zfw = me.store2.getChild("est_zfw").getValue() / 1000;
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
} else {
|
||||
fmgc.FMGCInternal.taxiFuel = (me.store1.getChild("taxi").getValue() / LBS2KGS) / 1000;
|
||||
fmgc.FMGCInternal.taxiFuelSet = 1;
|
||||
fmgc.FMGCInternal.altFuel = (me.store1.getChild("alternate_burn").getValue() / LBS2KGS) / 1000;
|
||||
fmgc.FMGCInternal.altFuelSet = 1;
|
||||
fmgc.FMGCInternal.finalFuel = (me.store1.getChild("reserve").getValue() / LBS2KGS) / 1000;
|
||||
fmgc.FMGCInternal.finalFuelSet = 1;
|
||||
fmgc.FMGCInternal.rteRsv = (me.store1.getChild("contingency").getValue() / LBS2KGS) / 1000;
|
||||
fmgc.FMGCInternal.rteRsvSet = 1;
|
||||
if (((me.store1.getChild("contingency").getValue() / LBS2KGS) / 1000) / num(fmgc.FMGCInternal.tripFuel) * 100 <= 15.0) {
|
||||
fmgc.FMGCInternal.rtePercent = ((me.store1.getChild("contingency").getValue() / LBS2KGS) / 1000) / num(fmgc.FMGCInternal.tripFuel) * 100;
|
||||
} else {
|
||||
fmgc.FMGCInternal.rtePercent = 15.0
|
||||
}
|
||||
fmgc.FMGCInternal.rtePercentSet = 0;
|
||||
fmgc.FMGCInternal.block = (me.store1.getChild("plan_ramp").getValue() / LBS2KGS) / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.zfw = (me.store2.getChild("est_zfw").getValue() / LBS2KGS) / 1000;
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
}
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
},
|
||||
};
|
|
@ -7,7 +7,6 @@ var pos = nil;
|
|||
var geoPosPrev = geo.Coord.new();
|
||||
var currentLegCourseDist = nil;
|
||||
var courseDistanceFrom = nil;
|
||||
var courseDistanceFromPrev = nil;
|
||||
var sizeWP = nil;
|
||||
var magTrueError = 0;
|
||||
var storeCourse = nil;
|
||||
|
@ -17,9 +16,6 @@ var DEBUG_DISCONT = 0;
|
|||
# Props.getNode
|
||||
var magHDG = props.globals.getNode("/orientation/heading-magnetic-deg", 1);
|
||||
var trueHDG = props.globals.getNode("/orientation/heading-deg", 1);
|
||||
var FMGCdep = props.globals.getNode("/FMGC/internal/dep-arpt", 1);
|
||||
var FMGCarr = props.globals.getNode("/FMGC/internal/arr-arpt", 1);
|
||||
var toFromSet = props.globals.getNode("/FMGC/internal/tofrom-set", 1);
|
||||
|
||||
# Props.initNode
|
||||
var wpID = [[props.globals.initNode("/FMGC/flightplan[0]/wp[0]/id", "", "STRING")], [props.globals.initNode("/FMGC/flightplan[1]/wp[0]/id", "", "STRING")], [props.globals.initNode("/FMGC/flightplan[2]/wp[0]/id", "", "STRING")]];
|
||||
|
@ -77,6 +73,11 @@ var flightPlanController = {
|
|||
me.flightplans[n].cleanPlan();
|
||||
me.flightplans[n].departure = nil;
|
||||
me.flightplans[n].destination = nil;
|
||||
mcdu.isNoTransArr[n] = 0;
|
||||
mcdu.isNoTransDep[n] = 0;
|
||||
mcdu.isNoSid[n] = 0;
|
||||
mcdu.isNoStar[n] = 0;
|
||||
mcdu.isNoVia[n] = 0;
|
||||
},
|
||||
|
||||
createTemporaryFlightPlan: func(n) {
|
||||
|
@ -92,6 +93,7 @@ var flightPlanController = {
|
|||
if (canvas_mcdu.myAirways[n] != nil) {
|
||||
canvas_mcdu.myAirways[n].updateTmpy();
|
||||
}
|
||||
fmgc.windController.createTemporaryWinds(n);
|
||||
me.flightPlanChanged(n);
|
||||
},
|
||||
|
||||
|
@ -101,8 +103,6 @@ var flightPlanController = {
|
|||
print(err[0]);
|
||||
print("Load failed.");
|
||||
}
|
||||
# try to fix fgfp
|
||||
me.flightplans[3].destination = airportinfo(getprop("/FMGC/internal/arr-arpt"));
|
||||
me.destroyTemporaryFlightPlan(3, 1);
|
||||
},
|
||||
|
||||
|
@ -111,6 +111,39 @@ var flightPlanController = {
|
|||
flightPlanTimer.stop();
|
||||
me.resetFlightplan(2);
|
||||
me.flightplans[2] = me.flightplans[n].clone();
|
||||
|
||||
if (n != 3) {
|
||||
if (mcdu.isNoSid[n] == 1) {
|
||||
mcdu.isNoSid[2] = 1;
|
||||
} else {
|
||||
mcdu.isNoSid[2] = 0;
|
||||
}
|
||||
|
||||
if (mcdu.isNoStar[n] == 1) {
|
||||
mcdu.isNoStar[2] = 1;
|
||||
} else {
|
||||
mcdu.isNoStar[2] = 0;
|
||||
}
|
||||
|
||||
if (mcdu.isNoVia[n] == 1) {
|
||||
mcdu.isNoVia[2] = 1;
|
||||
} else {
|
||||
mcdu.isNoVia[2] = 0;
|
||||
}
|
||||
|
||||
if (mcdu.isNoTransDep[n] == 1) {
|
||||
mcdu.isNoTransDep[2] = 1;
|
||||
} else {
|
||||
mcdu.isNoTransDep[2] = 0;
|
||||
}
|
||||
|
||||
if (mcdu.isNoTransArr[n] == 1) {
|
||||
mcdu.isNoTransArr[2] = 1;
|
||||
} else {
|
||||
mcdu.isNoTransArr[2] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
me.flightPlanChanged(2);
|
||||
flightPlanTimer.start();
|
||||
}
|
||||
|
@ -120,6 +153,8 @@ var flightPlanController = {
|
|||
if (canvas_mcdu.myDirTo[n] != nil) {
|
||||
canvas_mcdu.myDirTo[n].updateTmpy();
|
||||
}
|
||||
fmgc.windController.destroyTemporaryWinds(n, a);
|
||||
me.flightPlanChanged(n);
|
||||
},
|
||||
|
||||
updateAirports: func(dep, arr, plan) {
|
||||
|
@ -130,8 +165,8 @@ var flightPlanController = {
|
|||
me.destroyTemporaryFlightPlan(0, 0);
|
||||
me.destroyTemporaryFlightPlan(1, 0);
|
||||
me.currentToWptIndex.setValue(0);
|
||||
me.arrivalIndex = [0, 0, 0]; # reset arrival index calculations
|
||||
}
|
||||
|
||||
me.addDiscontinuity(1, plan);
|
||||
# reset mcdu if it exists
|
||||
if (canvas_mcdu.myFpln[0] != nil) { canvas_mcdu.myFpln[0].scroll = 0; }
|
||||
|
@ -222,15 +257,25 @@ var flightPlanController = {
|
|||
if (force) {
|
||||
me.flightplans[plan].insertWP(createDiscontinuity(), index);
|
||||
}
|
||||
if (index > 0) {
|
||||
|
||||
if (me.flightplans[plan].getWP(index) != nil) { # index is not nil
|
||||
if (me.flightplans[plan].getWP(index - 1) != nil) { # index -1 is also not nil
|
||||
if (me.flightplans[plan].getWP(index).wp_name != "DISCONTINUITY" and me.flightplans[plan].getWP(index - 1).wp_name != "DISCONTINUITY") {
|
||||
me.flightplans[plan].insertWP(createDiscontinuity(), index);
|
||||
}
|
||||
} else {
|
||||
} else { # -1 is nil
|
||||
if (me.flightplans[plan].getWP(index).wp_name != "DISCONTINUITY") {
|
||||
me.flightplans[plan].insertWP(createDiscontinuity(), index);
|
||||
}
|
||||
}
|
||||
} elsif (me.flightplans[plan].getWP(index - 1) != nil) { # index is nil, -1 is not
|
||||
if (me.flightplans[plan].getWP(index - 1).wp_name != "DISCONTINUITY") {
|
||||
me.flightplans[plan].insertWP(createDiscontinuity(), index);
|
||||
}
|
||||
} else { # both are nil??
|
||||
print("Possible error in discontinuities!");
|
||||
me.flightplans[plan].insertWP(createDiscontinuity(), index);
|
||||
}
|
||||
},
|
||||
|
||||
# insertTP - insert PPOS waypoint denoted "T-P" at specified index
|
||||
|
@ -241,10 +286,12 @@ var flightPlanController = {
|
|||
|
||||
insertTP: func(n, index = 1) {
|
||||
me.flightplans[n].insertWP(createWP(geo.aircraft_position(), "T-P"), index);
|
||||
fmgc.windController.insertWind(n, index, 0, "T-P");
|
||||
},
|
||||
|
||||
insertPPOS: func(n, index = 0) {
|
||||
me.flightplans[n].insertWP(createWP(geo.aircraft_position(), "PPOS"), index);
|
||||
fmgc.windController.insertWind(n, index, 0, "PPOS");
|
||||
},
|
||||
|
||||
# childWPBearingDistance - return waypoint at bearing and distance from specified waypoint ghost
|
||||
|
@ -274,6 +321,7 @@ var flightPlanController = {
|
|||
|
||||
# fudge the altitude since we cannot create a hdgtoAlt from nasal. Assume 600 feet per mile - 2.5 miles
|
||||
me.flightplans[n].insertWP(createWP(me.childWPBearingDistance(wptStore, me.flightplans[n].departure_runway.heading, 2.5), "1500", "sid"), 1);
|
||||
fmgc.windController.insertWind(n, 1, 0, "1500");
|
||||
}
|
||||
me.flightPlanChanged(n);
|
||||
},
|
||||
|
@ -294,6 +342,7 @@ var flightPlanController = {
|
|||
hdg = hdg - 360;
|
||||
}
|
||||
me.flightplans[n].insertWP(createWP(me.childWPBearingDistance(wptStore, hdg, 5), "CF", "star"), me.arrivalIndex[n]);
|
||||
fmgc.windController.insertWind(n, me.arrivalIndex[n], 0, "CF");
|
||||
}
|
||||
me.flightPlanChanged(n);
|
||||
},
|
||||
|
@ -315,7 +364,8 @@ var flightPlanController = {
|
|||
|
||||
# use createWP here as createWPFrom doesn't accept waypoints
|
||||
# createWPFrom worked before... but be sure!
|
||||
me.flightplans[plan].insertWP(createWP(waypointGhost, waypointGhost.wp_name), 2);
|
||||
me.flightplans[plan].insertWP(createWP(waypointGhost, waypointGhost.id), 2);
|
||||
fmgc.windController.insertWind(plan, 2, 0, waypointGhost.id);
|
||||
me.addDiscontinuity(3, plan);
|
||||
} else {
|
||||
# we want to delete the intermediate waypoints up to but not including the waypoint. Leave index 0, we delete it later.
|
||||
|
@ -338,9 +388,10 @@ var flightPlanController = {
|
|||
|
||||
deleteWP: func(index, n, a = 0, s = 0) { # a = 1, means adding a waypoint via deleting intermediate. s = 1, means autosequencing
|
||||
var wp = wpID[n][index].getValue();
|
||||
if (((s == 0 and left(wp, 4) != FMGCdep.getValue() and left(wp, 4) != FMGCarr.getValue()) or (s == 1)) and me.flightplans[n].getPlanSize() > 2) {
|
||||
if (((s == 0 and left(wp, 4) != FMGCInternal.depApt and left(wp, 4) != FMGCInternal.arrApt) or (s == 1)) and me.flightplans[n].getPlanSize() > 2) {
|
||||
if (me.flightplans[n].getWP(index).id != "DISCONTINUITY" and a == 0) { # if it is a discont, don't make a new one
|
||||
me.flightplans[n].deleteWP(index);
|
||||
fmgc.windController.deleteWind(n, index);
|
||||
if (me.flightplans[n].getWP(index) != nil and s == 0) {
|
||||
if (me.flightplans[n].getWP(index).id != "DISCONTINUITY") { # else, if the next one isn't a discont, add one
|
||||
me.addDiscontinuity(index, n);
|
||||
|
@ -348,6 +399,7 @@ var flightPlanController = {
|
|||
}
|
||||
} else {
|
||||
me.flightplans[n].deleteWP(index);
|
||||
fmgc.windController.deleteWind(n, index);
|
||||
}
|
||||
me.flightPlanChanged(n);
|
||||
canvas_nd.A3XXRouteDriver.triggerSignal("fp-removed");
|
||||
|
@ -407,6 +459,7 @@ var flightPlanController = {
|
|||
var indexPresent = me.flightplans[plan].indexOfWP(airport[indexToInsert]);
|
||||
if (me.flightplans[plan].indexOfWP(airport[indexToInsert]) == -1) {
|
||||
me.flightplans[plan].insertWP(createWPFrom(airport[indexToInsert]), index);
|
||||
fmgc.windController.insertWind(plan, index, 0, text);
|
||||
me.addDiscontinuity(index + 1, plan);
|
||||
me.flightPlanChanged(plan);
|
||||
return 2;
|
||||
|
@ -440,6 +493,7 @@ var flightPlanController = {
|
|||
var indexPresent = me.flightplans[plan].indexOfWP(fix[indexToInsert]);
|
||||
if (me.flightplans[plan].indexOfWP(fix[indexToInsert]) == -1) {
|
||||
me.flightplans[plan].insertWP(createWPFrom(fix[indexToInsert]), index);
|
||||
fmgc.windController.insertWind(plan, index, 1, text);
|
||||
me.addDiscontinuity(index + 1, plan);
|
||||
me.flightPlanChanged(plan);
|
||||
return 2;
|
||||
|
@ -473,6 +527,7 @@ var flightPlanController = {
|
|||
var indexPresent = me.flightplans[plan].indexOfWP(navaid[indexToInsert]);
|
||||
if (me.flightplans[plan].indexOfWP(navaid[indexToInsert]) == -1) {
|
||||
me.flightplans[plan].insertWP(createWPFrom(navaid[indexToInsert]), index);
|
||||
fmgc.windController.insertWind(plan, index, 1, text);
|
||||
me.addDiscontinuity(index + 1, plan);
|
||||
me.flightPlanChanged(plan);
|
||||
return 2;
|
||||
|
@ -493,6 +548,7 @@ var flightPlanController = {
|
|||
if (me.flightplans[plan].indexOfWP(wpGhost) == -1) {
|
||||
# use createWP here as createWPFrom doesn't accept waypoints
|
||||
me.flightplans[plan].insertWP(createWP(wpGhost, wpGhost.wp_name), index);
|
||||
fmgc.windController.insertWind(plan, index, 1, wpGhost.wp_name);
|
||||
me.addDiscontinuity(index + 1, plan);
|
||||
me.flightPlanChanged(plan);
|
||||
return 2;
|
||||
|
@ -522,6 +578,7 @@ var flightPlanController = {
|
|||
}
|
||||
|
||||
me.flightplans[plan].insertWP(waypoint.wpGhost, index);
|
||||
fmgc.windController.insertWind(plan, index, 1, "LL");
|
||||
me.addDiscontinuity(index + 1, plan);
|
||||
me.flightPlanChanged(plan);
|
||||
return 2;
|
||||
|
@ -593,6 +650,37 @@ var flightPlanController = {
|
|||
return me.insertPlaceBearingDistance(wpGhost, textSplit[1] + localMagvar, textSplit[2], index, plan); # magnetic to true? I don't know. But this works!
|
||||
},
|
||||
|
||||
getNavCount: func(plan) {
|
||||
var count = 0;
|
||||
for (var wpt = 0; wpt < me.flightplans[plan].getPlanSize(); wpt += 1) {
|
||||
#print(me.flightplans[plan].getWP(wpt).wp_type);
|
||||
if (me.flightplans[plan].getWP(wpt).wp_type == "navaid") {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
},
|
||||
|
||||
getDepartureCount: func(plan) {
|
||||
var count = 0;
|
||||
for (var wpt = 0; wpt < me.flightplans[plan].getPlanSize(); wpt += 1) {
|
||||
#print(me.flightplans[plan].getWP(wpt).wp_role);
|
||||
if (me.flightplans[plan].getWP(wpt).wp_role == "sid") {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
},
|
||||
|
||||
getArrivalCount: func(plan) {
|
||||
var count = 0;
|
||||
for (var wpt = 0; wpt < me.flightplans[plan].getPlanSize(); wpt += 1) {
|
||||
if (me.flightplans[plan].getWP(wpt).wp_role == "star" or me.flightplans[plan].getWP(wpt).wp_role == "approach" or me.flightplans[plan].getWP(wpt).wp_role == "missed") {
|
||||
count += 1;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
},
|
||||
|
||||
# insertPlaceBearingDistance - insert PBD waypoint at specified index,
|
||||
# at some specified bearing, distance from a specified location
|
||||
|
@ -609,6 +697,7 @@ var flightPlanController = {
|
|||
}
|
||||
|
||||
me.flightplans[plan].insertWP(waypoint.wpGhost, index);
|
||||
fmgc.windController.insertWind(plan, index, 0, "PBD");
|
||||
me.addDiscontinuity(index + 1, plan);
|
||||
me.flightPlanChanged(plan);
|
||||
return 2;
|
||||
|
@ -664,11 +753,16 @@ var flightPlanController = {
|
|||
append(wpCoursePrev[n], props.globals.initNode("/FMGC/flightplan[" ~ n ~ "]/wp[" ~ counter ~ "]/course-from-prev", 0, "DOUBLE"));
|
||||
append(wpDistancePrev[n], props.globals.initNode("/FMGC/flightplan[" ~ n ~ "]/wp[" ~ counter ~ "]/distance-from-prev", 0, "DOUBLE"));
|
||||
}
|
||||
|
||||
me.updatePlans();
|
||||
fmgc.windController.updatePlans();
|
||||
|
||||
# push update to fuel
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
canvas_nd.A3XXRouteDriver.triggerSignal("fp-added");
|
||||
},
|
||||
|
@ -696,32 +790,24 @@ var flightPlanController = {
|
|||
}
|
||||
}
|
||||
|
||||
if (left(wpID[n][wpt].getValue(), 4) == FMGCarr.getValue() and wpt != 0) {
|
||||
if (me.arrivalIndex[n] != wpt) {
|
||||
me.arrivalIndex[n] = wpt;
|
||||
}
|
||||
}
|
||||
|
||||
if (wpt > 0) {
|
||||
geoPosPrev.set_latlon(me.flightplans[n].getWP(wpt - 1).lat, me.flightplans[n].getWP(wpt - 1).lon);
|
||||
|
||||
courseDistanceFromPrev = waypointHashStore.courseAndDistanceFrom(geoPosPrev);
|
||||
wpCoursePrev[n][wpt].setValue(courseDistanceFromPrev[0]);
|
||||
wpDistancePrev[n][wpt].setValue(courseDistanceFromPrev[1]);
|
||||
if (wpt > 1) {
|
||||
if (me.flightplans[n].getWP(wpt - 1).wp_name != "DISCONTINUITY" and me.flightplans[n].getWP(wpt).wp_name != "DISCONTINUITY" and me.flightplans[n].getWP(wpt - 1).wp_type != "vectors" and me.flightplans[n].getWP(wpt - 1).wp_type != "hdgToAlt" and me.flightplans[n].getWP(wpt).wp_type != "vectors" and me.flightplans[n].getWP(wpt).wp_type != "hdgToAlt" and wpt <= me.arrivalIndex[n]) {
|
||||
# print("Adding " ~ courseDistanceFromPrev[1] ~ " miles for waypoint " ~ me.flightplans[n].getWP(wpt).wp_name);
|
||||
me._arrivalDist += courseDistanceFromPrev[1];
|
||||
}
|
||||
}
|
||||
wpCoursePrev[n][wpt].setValue(me.flightplans[n].getWP(wpt).leg_bearing);
|
||||
wpDistancePrev[n][wpt].setValue(me.flightplans[n].getWP(wpt).leg_distance);
|
||||
#if (wpt > 1) {
|
||||
# if (me.flightplans[n].getWP(wpt - 1).wp_name != "DISCONTINUITY" and me.flightplans[n].getWP(wpt).wp_name != "DISCONTINUITY" and me.flightplans[n].getWP(wpt - 1).wp_type != "vectors" and me.flightplans[n].getWP(wpt - 1).wp_type != "hdgToAlt" and me.flightplans[n].getWP(wpt).wp_type != "vectors" and me.flightplans[n].getWP(wpt).wp_type != "hdgToAlt" and wpt <= me.arrivalIndex[n]) {
|
||||
# me._arrivalDist += courseDistanceFromPrev[1];
|
||||
# }
|
||||
#}
|
||||
} else {
|
||||
# use PPOS for the first waypoint
|
||||
wpCoursePrev[n][wpt].setValue(courseDistanceFrom[0]);
|
||||
wpDistancePrev[n][wpt].setValue(courseDistanceFrom[1]);
|
||||
}
|
||||
|
||||
if (left(wpID[n][wpt].getValue(), 4) == FMGCarr.getValue() and wpt != 0) {
|
||||
if (me.arrivalIndex[n] != wpt) { # don't merge line 397 and 398 if statements
|
||||
if (left(wpID[n][wpt].getValue(), 4) == fmgc.FMGCInternal.arrApt and wpt != 0) {
|
||||
if (me.arrivalIndex[n] != wpt) {
|
||||
me.arrivalIndex[n] = wpt;
|
||||
|
||||
if (canvas_mcdu.myFpln[0] != nil) {
|
||||
canvas_mcdu.myFpln[0].destInfo();
|
||||
}
|
||||
|
@ -732,14 +818,20 @@ var flightPlanController = {
|
|||
}
|
||||
}
|
||||
}
|
||||
# print("Total: " ~ me._arrivalDist);
|
||||
me.arrivalDist = me._arrivalDist;
|
||||
|
||||
if (me.flightplans[2].getWP(me.arrivalIndex[2]) == nil or me.flightplans[2].getWP(1) == nil) {
|
||||
me.arrivalDist = 9999;
|
||||
#print(me.arrivalIndex[2]);
|
||||
} else {
|
||||
me.arrivalDist = me.flightplans[2].getWP(me.arrivalIndex[2]).distance_along_route - me.flightplans[2].getWP(1).leg_distance + me._arrivalDist;
|
||||
}
|
||||
|
||||
me.updateMCDUDriver(n);
|
||||
},
|
||||
|
||||
updateCurrentWaypoint: func() {
|
||||
for (var india = 0; india <= 2; india += 1) {
|
||||
if (toFromSet.getBoolValue() and me.flightplans[india].departure != nil and me.flightplans[india].destination != nil) { # check if flightplan exists
|
||||
if (FMGCInternal.toFromSet and me.flightplans[india].departure != nil and me.flightplans[india].destination != nil) { # check if flightplan exists
|
||||
var curAircraftPos = geo.aircraft_position(); # don't want to get this corrupted so make sure it is a local variable
|
||||
|
||||
if (india == 2) { # main plan
|
||||
|
|
|
@ -170,13 +170,18 @@ var MessageController = {
|
|||
TypeIMessage.new("LIST OF 20 IN USE"),TypeIMessage.new("PILOT ELEMENT RETAINED"),TypeIMessage.new("NOT ALLOWED"),
|
||||
TypeIMessage.new("NOT IN DATA BASE"),TypeIMessage.new("ONLY SPD ENTRY ALLOWED"),TypeIMessage.new("REVISION IN PROGRESS"),
|
||||
TypeIMessage.new("TMPY F-PLN EXISTS", 1),TypeIMessage.new("SELECT DESIRED SYSTEM"),TypeIMessage.new("SELECT HDG/TRK FIRST"),
|
||||
TypeIMessage.new("USING COST INDEX N", 1),TypeIMessage.new("WAIT FOR SYSTEM RESPONSE"),
|
||||
TypeIMessage.new("USING COST INDEX N", 1),TypeIMessage.new("WAIT FOR SYSTEM RESPONSE"),TypeIMessage.new("RWY/LS MISMATCH"),
|
||||
TypeIMessage.new("VHF3 VOICE MSG NOT GEN"),TypeIMessage.new("NO COMM MSG NOT GEN"),TypeIMessage.new("WX UPLINK"),
|
||||
TypeIMessage.new("SIMBRIEF DOWNLOAD FAILED"),TypeIMessage.new("MISSING USERNAME"),TypeIMessage.new("AOC ACT F-PLN UPLINK"),
|
||||
]),
|
||||
typeIIMessages: std.Vector.new([
|
||||
TypeIIMessage.new("LAT DISCONT AHEAD", "amb", 0),TypeIIMessage.new("MORE DRAG"),TypeIIMessage.new("RWY/LS MISMATCH", "amb", 0),TypeIIMessage.new("STEP DELETED"),
|
||||
TypeIIMessage.new("STEP NOW"),TypeIIMessage.new("TIME TO EXIT", "amb", 0),
|
||||
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),
|
||||
]),
|
||||
|
||||
# to speed to low - new on a320, margin against vmcg / vs1g
|
||||
|
||||
getTypeIMsgByText: func(text) {
|
||||
return me.getMsgByText(text, me.typeIMessages.vector);
|
||||
},
|
||||
|
|
486
Nasal/FMGC/winds.nas
Normal file
|
@ -0,0 +1,486 @@
|
|||
# A3XX FMGC Wind Driver
|
||||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
var wind = {
|
||||
new: func() {
|
||||
var w = {parents: [wind]};
|
||||
w.heading = -1;
|
||||
w.magnitude = -1;
|
||||
w.altitude = "";
|
||||
w.set = 0;
|
||||
return w;
|
||||
},
|
||||
|
||||
newcopy: func(heading, magnitude, altitude, set) {
|
||||
var w = {parents: [wind]};
|
||||
w.heading = heading;
|
||||
w.magnitude = magnitude;
|
||||
w.altitude = altitude;
|
||||
w.set = set;
|
||||
return w;
|
||||
}
|
||||
};
|
||||
|
||||
var alt_wind = {
|
||||
new: func() {
|
||||
var aw = {parents: [alt_wind]};
|
||||
aw.heading = -1;
|
||||
aw.magnitude = -1;
|
||||
aw.set = 0;
|
||||
return aw;
|
||||
},
|
||||
|
||||
newcopy: func(heading, magnitude, set) {
|
||||
var aw = {parents: [alt_wind]};
|
||||
aw.heading = heading;
|
||||
aw.magnitude = magnitude;
|
||||
aw.set = set;
|
||||
return aw;
|
||||
}
|
||||
};
|
||||
|
||||
var sat_temp = {
|
||||
new: func() {
|
||||
var st = {parents: [sat_temp]};
|
||||
st.temp = -999;
|
||||
st.altitude = "";
|
||||
st.set = 0;
|
||||
return st;
|
||||
},
|
||||
|
||||
newcopy: func(temp, altitude, set) {
|
||||
var st = {parents: [sat_temp]};
|
||||
st.temp = temp;
|
||||
st.altitude = altitude;
|
||||
st.set = set;
|
||||
return st;
|
||||
}
|
||||
};
|
||||
|
||||
var waypoint_winds = {
|
||||
new: func(id, type, includeWind) {
|
||||
var ww = {parents: [waypoint_winds]};
|
||||
ww.id = id;
|
||||
ww.type = type; #departure, waypoint, arrival
|
||||
ww.includeWind = includeWind;
|
||||
ww.wind1 = wind.new();
|
||||
ww.wind2 = wind.new();
|
||||
ww.wind3 = wind.new();
|
||||
ww.wind4 = wind.new();
|
||||
ww.wind5 = wind.new();
|
||||
ww.sat1 = sat_temp.new();
|
||||
ww.alt1 = alt_wind.new();
|
||||
return ww;
|
||||
},
|
||||
|
||||
newcopy: func(id, type, includeWind, wind1, wind2, wind3, wind4, wind5, sat1, alt1) {
|
||||
var ww = {parents: [waypoint_winds]};
|
||||
ww.id = id;
|
||||
ww.type = type; #departure, waypoint, arrival
|
||||
ww.includeWind = includeWind;
|
||||
ww.wind1 = wind1;
|
||||
ww.wind2 = wind2;
|
||||
ww.wind3 = wind3;
|
||||
ww.wind4 = wind4;
|
||||
ww.wind5 = wind5;
|
||||
ww.sat1 = sat1;
|
||||
ww.alt1 = alt1;
|
||||
return ww;
|
||||
}
|
||||
};
|
||||
|
||||
var windController = {
|
||||
clb_winds: [0, 0, 0],
|
||||
crz_winds: [0, 0, 0],
|
||||
des_winds: [0, 0, 0],
|
||||
hist_winds: 0,
|
||||
fl50_wind: [-1, -1, ""],
|
||||
fl150_wind: [-1, -1, ""],
|
||||
fl250_wind: [-1, -1, ""],
|
||||
flcrz_wind: [-1, -1, ""],
|
||||
winds: [[], [], []], #waypoint winds used if route includes navaids
|
||||
nav_indicies: [[], [], []],
|
||||
windSizes: [0, 0, 0],
|
||||
accessPage: ["", ""],
|
||||
#temporaryFlag: [0, 0],
|
||||
|
||||
init: func() {
|
||||
me.resetWind(2);
|
||||
me.clb_winds[2] = waypoint_winds.new("climb", "waypoint", 1);
|
||||
me.crz_winds[2] = waypoint_winds.new("cruize", "waypoint", 1);
|
||||
me.des_winds[2] = waypoint_winds.new("descent", "waypoint", 1);
|
||||
me.hist_winds = waypoint_winds.new("history", "waypoint", 1);
|
||||
me.read();
|
||||
},
|
||||
|
||||
reset: func() {
|
||||
#me.temporaryFlag[0] = 0;
|
||||
#me.temporaryFlag[1] = 0;
|
||||
me.resetWind(0);
|
||||
me.resetWind(1);
|
||||
me.resetWind(2);
|
||||
},
|
||||
|
||||
resetWind: func(n) {
|
||||
me.clb_winds[n] = 0;
|
||||
me.crz_winds[n] = 0;
|
||||
me.des_winds[n] = 0;
|
||||
me.winds[n] = [];
|
||||
me.nav_indicies[n] = [];
|
||||
me.windSizes[n] = 0;
|
||||
},
|
||||
|
||||
resetDesWinds: func() {
|
||||
me.des_winds[0] = 0;
|
||||
me.des_winds[1] = 0;
|
||||
me.des_winds[2] = waypoint_winds.new("descent", "waypoint", 1);
|
||||
},
|
||||
|
||||
copyClbWind: func(n) {
|
||||
var id = me.clb_winds[n].id;
|
||||
var type = me.clb_winds[n].type;
|
||||
var includeWind = me.clb_winds[n].includeWind;
|
||||
var wind1 = wind.newcopy(me.clb_winds[n].wind1.heading, me.clb_winds[n].wind1.magnitude, me.clb_winds[n].wind1.altitude, me.clb_winds[n].wind1.set);
|
||||
var wind2 = wind.newcopy(me.clb_winds[n].wind2.heading, me.clb_winds[n].wind2.magnitude, me.clb_winds[n].wind2.altitude, me.clb_winds[n].wind2.set);
|
||||
var wind3 = wind.newcopy(me.clb_winds[n].wind3.heading, me.clb_winds[n].wind3.magnitude, me.clb_winds[n].wind3.altitude, me.clb_winds[n].wind3.set);
|
||||
var wind4 = wind.newcopy(me.clb_winds[n].wind4.heading, me.clb_winds[n].wind4.magnitude, me.clb_winds[n].wind4.altitude, me.clb_winds[n].wind4.set);
|
||||
var wind5 = wind.newcopy(me.clb_winds[n].wind5.heading, me.clb_winds[n].wind5.magnitude, me.clb_winds[n].wind5.altitude, me.clb_winds[n].wind5.set);
|
||||
var sat1 = sat_temp.newcopy(me.clb_winds[n].sat1.temp, me.clb_winds[n].sat1.altitude, me.clb_winds[n].sat1.set);
|
||||
var alt1 = alt_wind.newcopy(me.clb_winds[n].alt1.heading, me.clb_winds[n].alt1.magnitude, me.clb_winds[n].alt1.set);
|
||||
return waypoint_winds.newcopy(id, type, includeWind, wind1, wind2, wind3, wind4, wind5, sat1, alt1);
|
||||
},
|
||||
|
||||
copyCrzWind: func(n) {
|
||||
var id = me.crz_winds[n].id;
|
||||
var type = me.crz_winds[n].type;
|
||||
var includeWind = me.crz_winds[n].includeWind;
|
||||
var wind1 = wind.newcopy(me.crz_winds[n].wind1.heading, me.crz_winds[n].wind1.magnitude, me.crz_winds[n].wind1.altitude, me.crz_winds[n].wind1.set);
|
||||
var wind2 = wind.newcopy(me.crz_winds[n].wind2.heading, me.crz_winds[n].wind2.magnitude, me.crz_winds[n].wind2.altitude, me.crz_winds[n].wind2.set);
|
||||
var wind3 = wind.newcopy(me.crz_winds[n].wind3.heading, me.crz_winds[n].wind3.magnitude, me.crz_winds[n].wind3.altitude, me.crz_winds[n].wind3.set);
|
||||
var wind4 = wind.newcopy(me.crz_winds[n].wind4.heading, me.crz_winds[n].wind4.magnitude, me.crz_winds[n].wind4.altitude, me.crz_winds[n].wind4.set);
|
||||
var wind5 = wind.newcopy(me.crz_winds[n].wind5.heading, me.crz_winds[n].wind5.magnitude, me.crz_winds[n].wind5.altitude, me.crz_winds[n].wind5.set);
|
||||
var sat1 = sat_temp.newcopy(me.crz_winds[n].sat1.temp, me.crz_winds[n].sat1.altitude, me.crz_winds[n].sat1.set);
|
||||
var alt1 = alt_wind.newcopy(me.crz_winds[n].alt1.heading, me.crz_winds[n].alt1.magnitude, me.crz_winds[n].alt1.set);
|
||||
return waypoint_winds.newcopy(id, type, includeWind, wind1, wind2, wind3, wind4, wind5, sat1, alt1);
|
||||
},
|
||||
|
||||
copyDesWind: func(n) {
|
||||
var id = me.des_winds[n].id;
|
||||
var type = me.des_winds[n].type;
|
||||
var includeWind = me.des_winds[n].includeWind;
|
||||
var wind1 = wind.newcopy(me.des_winds[n].wind1.heading, me.des_winds[n].wind1.magnitude, me.des_winds[n].wind1.altitude, me.des_winds[n].wind1.set);
|
||||
var wind2 = wind.newcopy(me.des_winds[n].wind2.heading, me.des_winds[n].wind2.magnitude, me.des_winds[n].wind2.altitude, me.des_winds[n].wind2.set);
|
||||
var wind3 = wind.newcopy(me.des_winds[n].wind3.heading, me.des_winds[n].wind3.magnitude, me.des_winds[n].wind3.altitude, me.des_winds[n].wind3.set);
|
||||
var wind4 = wind.newcopy(me.des_winds[n].wind4.heading, me.des_winds[n].wind4.magnitude, me.des_winds[n].wind4.altitude, me.des_winds[n].wind4.set);
|
||||
var wind5 = wind.newcopy(me.des_winds[n].wind5.heading, me.des_winds[n].wind5.magnitude, me.des_winds[n].wind5.altitude, me.des_winds[n].wind5.set);
|
||||
var sat1 = sat_temp.newcopy(me.des_winds[n].sat1.temp, me.des_winds[n].sat1.altitude, me.des_winds[n].sat1.set);
|
||||
var alt1 = alt_wind.newcopy(me.des_winds[n].alt1.heading, me.des_winds[n].alt1.magnitude, me.des_winds[n].alt1.set);
|
||||
return waypoint_winds.newcopy(id, type, includeWind, wind1, wind2, wind3, wind4, wind5, sat1, alt1);
|
||||
},
|
||||
|
||||
copyWinds: func(n) {
|
||||
var tempWind = [];
|
||||
for (i = 0; i < size(me.winds[n]); i += 1) {
|
||||
var id = me.winds[n][i].id;
|
||||
var type = me.winds[n][i].type;
|
||||
var includeWind = me.winds[n][i].includeWind;
|
||||
var wind1 = wind.newcopy(me.winds[n][i].wind1.heading, me.winds[n][i].wind1.magnitude, me.winds[n][i].wind1.altitude, me.winds[n][i].wind1.set);
|
||||
var wind2 = wind.newcopy(me.winds[n][i].wind2.heading, me.winds[n][i].wind2.magnitude, me.winds[n][i].wind2.altitude, me.winds[n][i].wind2.set);
|
||||
var wind3 = wind.newcopy(me.winds[n][i].wind3.heading, me.winds[n][i].wind3.magnitude, me.winds[n][i].wind3.altitude, me.winds[n][i].wind3.set);
|
||||
var wind4 = wind.newcopy(me.winds[n][i].wind4.heading, me.winds[n][i].wind4.magnitude, me.winds[n][i].wind4.altitude, me.winds[n][i].wind4.set);
|
||||
var wind5 = wind.newcopy(me.winds[n][i].wind5.heading, me.winds[n][i].wind5.magnitude, me.winds[n][i].wind5.altitude, me.winds[n][i].wind5.set);
|
||||
var sat1 = sat_temp.newcopy(me.winds[n][i].sat1.temp, me.winds[n][i].sat1.altitude, me.winds[n][i].sat1.set);
|
||||
var alt1 = alt_wind.newcopy(me.winds[n][i].alt1.heading, me.winds[n][i].alt1.magnitude, me.winds[n][i].alt1.set);
|
||||
append(tempWind, waypoint_winds.newcopy(id, type, includeWind, wind1, wind2, wind3, wind4, wind5, sat1, alt1));
|
||||
}
|
||||
return tempWind;
|
||||
},
|
||||
|
||||
createTemporaryWinds: func(n) {
|
||||
me.resetWind(n);
|
||||
me.clb_winds[n] = me.copyClbWind(2);
|
||||
me.crz_winds[n] = me.copyCrzWind(2);
|
||||
me.des_winds[n] = me.copyDesWind(2);
|
||||
me.winds[n] = me.copyWinds(2);
|
||||
me.nav_indicies[n] = me.nav_indicies[2];
|
||||
me.windSizes[n] = me.windSizes[2];
|
||||
#me.waypointsChanged();
|
||||
#me.temporaryFlag[n] = 1;
|
||||
},
|
||||
|
||||
destroyTemporaryWinds: func(n, a) { # a = 1 activate, a = 0 erase
|
||||
#print("destroying temporary ", n);
|
||||
if (a == 1) {
|
||||
me.resetWind(2);
|
||||
me.clb_winds[2] = me.copyClbWind(n);
|
||||
me.crz_winds[2] = me.copyCrzWind(n);
|
||||
me.des_winds[2] = me.copyDesWind(n);
|
||||
me.winds[2] = me.copyWinds(n);
|
||||
me.nav_indicies[2] = me.nav_indicies[n];
|
||||
me.windSizes[2] = me.windSizes[n];
|
||||
}
|
||||
if (n == 3) { return; }
|
||||
me.resetWind(n);
|
||||
me.waypointsChanged();
|
||||
#me.temporaryFlag[n] = 0;
|
||||
},
|
||||
# read - read from hist wind file, create one if it doesn't exist
|
||||
read: func() {
|
||||
var path = getprop("/sim/fg-home") ~ "/Export/A320SavedWinds.txt";
|
||||
# create file if it doesn't exist
|
||||
if (io.stat(path) == nil) {
|
||||
me.write();
|
||||
}
|
||||
var file = io.open(path);
|
||||
if (file != nil) {
|
||||
var line = io.readln(file);
|
||||
var temp_line = split(",", line);
|
||||
me.hist_winds.wind1.heading = temp_line[0];
|
||||
me.hist_winds.wind1.magnitude = temp_line[1];
|
||||
me.hist_winds.wind1.altitude = temp_line[2];
|
||||
|
||||
line = io.readln(file);
|
||||
temp_line = split(",", line);
|
||||
me.hist_winds.wind2.heading = temp_line[0];
|
||||
me.hist_winds.wind2.magnitude = temp_line[1];
|
||||
me.hist_winds.wind2.altitude = temp_line[2];
|
||||
|
||||
line = io.readln(file);
|
||||
temp_line = split(",", line);
|
||||
me.hist_winds.wind3.heading = temp_line[0];
|
||||
me.hist_winds.wind3.magnitude = temp_line[1];
|
||||
me.hist_winds.wind3.altitude = temp_line[2];
|
||||
|
||||
line = io.readln(file);
|
||||
temp_line = split(",", line);
|
||||
me.hist_winds.wind4.heading = temp_line[0];
|
||||
me.hist_winds.wind4.magnitude = temp_line[1];
|
||||
me.hist_winds.wind4.altitude = temp_line[2];
|
||||
|
||||
line = io.readln(file);
|
||||
temp_line = split(",", line);
|
||||
me.hist_winds.wind5.heading = temp_line[0];
|
||||
me.hist_winds.wind5.magnitude = temp_line[1];
|
||||
me.hist_winds.wind5.altitude = temp_line[2];
|
||||
}
|
||||
},
|
||||
# write - write to hist wind file, called whenever winds changed
|
||||
write: func() {
|
||||
if (me.des_winds[2] != 0) {
|
||||
var path = getprop("/sim/fg-home") ~ "/Export/A320SavedWinds.txt";
|
||||
var file = io.open(path, "wb");
|
||||
var winds_added = 0;
|
||||
|
||||
if (me.fl50_wind[2] != "") {
|
||||
io.write(file, me.fl50_wind[0] ~ "," ~ me.fl50_wind[1] ~ "," ~ me.fl50_wind[2] ~ "\n");
|
||||
winds_added += 1;
|
||||
}
|
||||
|
||||
if (me.fl150_wind[2] != "") {
|
||||
io.write(file, me.fl150_wind[0] ~ "," ~ me.fl150_wind[1] ~ "," ~ me.fl150_wind[2] ~ "\n");
|
||||
winds_added += 1;
|
||||
}
|
||||
|
||||
if (me.fl250_wind[2] != "") {
|
||||
io.write(file, me.fl250_wind[0] ~ "," ~ me.fl250_wind[1] ~ "," ~ me.fl250_wind[2] ~ "\n");
|
||||
winds_added += 1;
|
||||
}
|
||||
|
||||
if (me.flcrz_wind[2] != "") {
|
||||
io.write(file, me.flcrz_wind[0] ~ "," ~ me.flcrz_wind[1] ~ "," ~ me.flcrz_wind[2] ~ "\n");
|
||||
winds_added += 1;
|
||||
}
|
||||
|
||||
while (winds_added < 5) {
|
||||
io.write(file, "-1,-1,\n");
|
||||
winds_added += 1;
|
||||
}
|
||||
|
||||
io.close(file);
|
||||
} else {
|
||||
print("no wind data");
|
||||
}
|
||||
},
|
||||
|
||||
insertWind: func(plan, index, value, id) {
|
||||
if (me.windSizes[plan] == index) {
|
||||
if (value == 3) {
|
||||
append(me.winds[plan], waypoint_winds.new(id, "arrival", 0));
|
||||
} else if (value == 2) {
|
||||
append(me.winds[plan], waypoint_winds.new(id, "departure", 0));
|
||||
} else if (value == 1) {
|
||||
append(me.winds[plan], waypoint_winds.new(id, "waypoint", 1));
|
||||
} else {
|
||||
append(me.winds[plan], waypoint_winds.new(id, "waypoint", 0));
|
||||
}
|
||||
me.windSizes[plan] += 1;
|
||||
} else if (me.windSizes[plan] > index and index >= 0) {
|
||||
append(me.winds[plan], waypoint_winds.new(id, "waypoint", 0));
|
||||
me.windSizes[plan] += 1;
|
||||
for (i = me.windSizes[plan] - 1; i > index; i -= 1) {
|
||||
me.winds[plan][i] = me.winds[plan][i - 1];
|
||||
}
|
||||
if (value == 3) {
|
||||
me.winds[plan][index] = waypoint_winds.new(id, "arrival", 0);
|
||||
} else if (value == 2) {
|
||||
me.winds[plan][index] = waypoint_winds.new(id, "departure", 0);
|
||||
} else if (value == 1) {
|
||||
me.winds[plan][index] = waypoint_winds.new(id, "waypoint", 1);
|
||||
} else {
|
||||
me.winds[plan][index] = waypoint_winds.new(id, "waypoint", 0);
|
||||
}
|
||||
} else {
|
||||
#print("insert invalid id: ", id, ", plan: ", plan, ", index: ", index, ", size: ", me.windSizes[plan]);
|
||||
#debug.dump(me.winds);
|
||||
#debug.dump(me.windSizes);
|
||||
return;
|
||||
}
|
||||
#print("insert plan: ", plan, ", index: ", index);
|
||||
#debug.dump(me.winds);
|
||||
#debug.dump(me.windSizes);
|
||||
me.waypointsChanged();
|
||||
},
|
||||
|
||||
deleteWind: func(plan, index) {
|
||||
if (me.windSizes[plan] == index) {
|
||||
pop(me.winds[plan]);
|
||||
me.windSizes[plan] -= 1;
|
||||
} else if (me.windSizes[plan] > index and index >= 0) {
|
||||
for (i = index; i < me.windSizes[plan] - 1; i += 1) {
|
||||
me.winds[plan][i] = me.winds[plan][i + 1];
|
||||
}
|
||||
pop(me.winds[plan]);
|
||||
me.windSizes[plan] -= 1;
|
||||
} else {
|
||||
#print("delete invalid plan: ", plan, ", index: ", index, ", size: ", me.windSizes[plan]);
|
||||
#debug.dump(me.winds);
|
||||
#debug.dump(me.windSizes);
|
||||
return;
|
||||
}
|
||||
#print("delete plan: ", plan, ", index: ", index);
|
||||
#debug.dump(me.winds);
|
||||
#debug.dump(me.windSizes);
|
||||
me.waypointsChanged();
|
||||
},
|
||||
|
||||
waypointsChanged: func() {
|
||||
if (canvas_mcdu.myCRZWIND[1] != nil) {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[1]) {
|
||||
if (fmgc.FMGCInternal.toFromSet and size(fmgc.windController.nav_indicies[2]) > 0) {
|
||||
canvas_mcdu.myCRZWIND[1].waypoint = fmgc.flightPlanController.flightplans[2].getWP(me.nav_indicies[2][0]);
|
||||
canvas_mcdu.myCRZWIND[1].singleCRZ = 0;
|
||||
canvas_mcdu.myCRZWIND[1].cur_location = 0;
|
||||
} else {
|
||||
canvas_mcdu.myCRZWIND[1].waypoint = nil;
|
||||
canvas_mcdu.myCRZWIND[1].singleCRZ = 1;
|
||||
canvas_mcdu.myCRZWIND[1].cur_location = 0;
|
||||
}
|
||||
} else {
|
||||
if (fmgc.FMGCInternal.toFromSet and size(fmgc.windController.nav_indicies[1]) > 0) {
|
||||
canvas_mcdu.myCRZWIND[1].waypoint = fmgc.flightPlanController.flightplans[1].getWP(me.nav_indicies[1][0]);
|
||||
canvas_mcdu.myCRZWIND[1].singleCRZ = 0;
|
||||
canvas_mcdu.myCRZWIND[1].cur_location = 0;
|
||||
} else {
|
||||
canvas_mcdu.myCRZWIND[1].waypoint = nil;
|
||||
canvas_mcdu.myCRZWIND[1].singleCRZ = 1;
|
||||
canvas_mcdu.myCRZWIND[1].cur_location = 0;
|
||||
}
|
||||
}
|
||||
canvas_mcdu.myCRZWIND[1].reload();
|
||||
}
|
||||
if (canvas_mcdu.myCRZWIND[0] != nil) {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[0]) {
|
||||
if (fmgc.FMGCInternal.toFromSet and size(fmgc.windController.nav_indicies[2]) > 0) {
|
||||
canvas_mcdu.myCRZWIND[0].waypoint = fmgc.flightPlanController.flightplans[2].getWP(me.nav_indicies[2][0]);
|
||||
canvas_mcdu.myCRZWIND[0].singleCRZ = 0;
|
||||
canvas_mcdu.myCRZWIND[0].cur_location = 0;
|
||||
} else {
|
||||
canvas_mcdu.myCRZWIND[0].waypoint = nil;
|
||||
canvas_mcdu.myCRZWIND[0].singleCRZ = 1;
|
||||
canvas_mcdu.myCRZWIND[0].cur_location = 0;
|
||||
}
|
||||
} else {
|
||||
if (fmgc.FMGCInternal.toFromSet and size(fmgc.windController.nav_indicies[0]) > 0) {
|
||||
canvas_mcdu.myCRZWIND[0].waypoint = fmgc.flightPlanController.flightplans[0].getWP(me.nav_indicies[0][0]);
|
||||
canvas_mcdu.myCRZWIND[0].singleCRZ = 0;
|
||||
canvas_mcdu.myCRZWIND[0].cur_location = 0;
|
||||
} else {
|
||||
canvas_mcdu.myCRZWIND[0].waypoint = nil;
|
||||
canvas_mcdu.myCRZWIND[0].singleCRZ = 1;
|
||||
canvas_mcdu.myCRZWIND[0].cur_location = 0;
|
||||
}
|
||||
}
|
||||
canvas_mcdu.myCRZWIND[0].reload();
|
||||
}
|
||||
},
|
||||
|
||||
updatePlans: func() {
|
||||
var winds_copy = me.winds;
|
||||
var windSizes_copy = me.windSizes;
|
||||
me.winds = [[], [], []];
|
||||
me.nav_indicies = [[], [], []];
|
||||
me.windSizes = [0, 0, 0];
|
||||
|
||||
# loop through waypoints
|
||||
for (plan = 0; plan <= 2; plan += 1) {
|
||||
for (i = 0; i < fmgc.flightPlanController.flightplans[plan].getPlanSize(); i += 1) {
|
||||
var waypoint = fmgc.flightPlanController.flightplans[plan].getWP(i);
|
||||
#print(waypoint.wp_role, "| : |", waypoint.wp_type);
|
||||
if (waypoint.wp_role == "sid") {
|
||||
append(me.winds[plan], waypoint_winds.new(waypoint.id, "departure", 0));
|
||||
me.windSizes[plan] += 1;
|
||||
} else if (waypoint.wp_role == "star" or waypoint.wp_role == "approach" or waypoint.wp_role == "missed") {
|
||||
append(me.winds[plan], waypoint_winds.new(waypoint.id, "arrival", 0));
|
||||
me.windSizes[plan] += 1;
|
||||
} else if (waypoint.wp_role == nil and waypoint.wp_type == "navaid") {
|
||||
var found = 0;
|
||||
for (index = 0; index < windSizes_copy[plan]; index += 1) {
|
||||
#print(waypoint.id, " : ", winds_copy[plan][index].id);
|
||||
if (waypoint.id == winds_copy[plan][index].id) {
|
||||
append(me.winds[plan], winds_copy[plan][index]);
|
||||
append(me.nav_indicies[plan], i);
|
||||
me.windSizes[plan] += 1;
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
if (found != 1) {
|
||||
append(me.winds[plan], waypoint_winds.new(waypoint.id, "waypoint", 0));
|
||||
me.windSizes[plan] += 1;
|
||||
}
|
||||
} else {
|
||||
append(me.winds[plan], waypoint_winds.new(waypoint.id, "waypoint", 0));
|
||||
me.windSizes[plan] += 1;
|
||||
}
|
||||
#print("insert plan: ", plan, ", index: ", i);
|
||||
#debug.dump(me.winds);
|
||||
#debug.dump(me.nav_indicies);
|
||||
#debug.dump(me.windSizes);
|
||||
}
|
||||
}
|
||||
|
||||
if (canvas_mcdu.myCLBWIND[1] != nil) {
|
||||
canvas_mcdu.myCLBWIND[1].reload();
|
||||
}
|
||||
if (canvas_mcdu.myCLBWIND[0] != nil) {
|
||||
canvas_mcdu.myCLBWIND[0].reload();
|
||||
}
|
||||
if (canvas_mcdu.myCRZWIND[1] != nil) {
|
||||
canvas_mcdu.myCRZWIND[1].reload();
|
||||
}
|
||||
if (canvas_mcdu.myCRZWIND[0] != nil) {
|
||||
canvas_mcdu.myCRZWIND[0].reload();
|
||||
}
|
||||
if (canvas_mcdu.myDESWIND[1] != nil) {
|
||||
canvas_mcdu.myDESWIND[1].reload();
|
||||
}
|
||||
if (canvas_mcdu.myDESWIND[0] != nil) {
|
||||
canvas_mcdu.myDESWIND[0].reload();
|
||||
}
|
||||
if (canvas_mcdu.myHISTWIND[1] != nil) {
|
||||
canvas_mcdu.myHISTWIND[1].reload();
|
||||
}
|
||||
if (canvas_mcdu.myHISTWIND[0] != nil) {
|
||||
canvas_mcdu.myHISTWIND[0].reload();
|
||||
}
|
||||
}
|
||||
};
|
|
@ -1,201 +0,0 @@
|
|||
#
|
||||
# Chrono - Clock - ET
|
||||
#
|
||||
var chr = aircraft.timer.new("instrumentation/chrono[0]/elapsetime-sec",1);
|
||||
var clk = aircraft.timer.new("instrumentation/clock/elapsetime-sec",1);
|
||||
|
||||
setlistener("sim/signals/fdm-initialized", func {
|
||||
chr.stop();
|
||||
chr.reset();
|
||||
clk.stop();
|
||||
clk.reset();
|
||||
props.globals.initNode("instrumentation/clock/clock_hh_mm", 0,"STRING");
|
||||
props.globals.initNode("instrumentation/clock/indicated-string",0,"STRING");
|
||||
props.globals.initNode("instrumentation/clock/elapsed-string",0,"STRING");
|
||||
props.globals.initNode("instrumentation/clock/elapsetime-sec",0,"INT");
|
||||
props.globals.initNode("instrumentation/clock/et-selector",1,"INT");
|
||||
props.globals.initNode("instrumentation/clock/utc-selector",0,"INT");
|
||||
props.globals.initNode("instrumentation/clock/set-knob",0,"INT");
|
||||
props.globals.initNode("instrumentation/clock/et-hr",0,"INT");
|
||||
props.globals.initNode("instrumentation/clock/et-min",0,"INT");
|
||||
props.globals.initNode("instrumentation/chrono[0]/chr-et-string",0,"STRING");
|
||||
props.globals.initNode("instrumentation/chrono[0]/elapsetime-sec",0,"INT");
|
||||
props.globals.initNode("instrumentation/chrono[0]/chrono-reset",1,"INT");
|
||||
props.globals.initNode("instrumentation/chrono[0]/chr-et-min",0,"INT");
|
||||
props.globals.initNode("instrumentation/chrono[0]/chr-et-sec",0,"INT");
|
||||
props.globals.initNode("controls/flight/rudder-trim-display",0,"STRING");
|
||||
setprop("controls/flight/rudder-trim-display", sprintf("%2.1f", getprop("fdm/jsbsim/hydraulics/rudder/trim-cmd-deg")));
|
||||
start_loop.start();
|
||||
});
|
||||
|
||||
setlistener("instrumentation/chrono[0]/chrono-reset", func(et){
|
||||
var tmp = et.getValue();
|
||||
if (tmp == 2) {
|
||||
if (getprop("instrumentation/chrono[0]/started") == 1) {
|
||||
if (getprop("instrumentation/chrono[0]/paused") == 0) {
|
||||
setprop("instrumentation/chrono[0]/elapsetime-sec", 0);
|
||||
setprop("instrumentation/chrono[0]/chrono-reset", 0);
|
||||
} else {
|
||||
chr.stop();
|
||||
chr.reset();
|
||||
setprop("instrumentation/chrono[0]/chrono-reset", 1);
|
||||
setprop("instrumentation/chrono[0]/started", 0);
|
||||
setprop("instrumentation/chrono[0]/paused", 0);
|
||||
};
|
||||
} else {
|
||||
if (getprop("instrumentation/chrono[0]/paused") == 0) {
|
||||
# No action required
|
||||
} else {
|
||||
setprop("instrumentation/chrono[0]/paused", 0);
|
||||
};
|
||||
};
|
||||
} elsif (tmp == 1) {
|
||||
if (getprop("instrumentation/chrono[0]/started") == 1) {
|
||||
if (getprop("instrumentation/chrono[0]/paused") == 0) {
|
||||
chr.stop();
|
||||
setprop("instrumentation/chrono[0]/paused", 1);
|
||||
} else {
|
||||
chr.stop();
|
||||
};
|
||||
} else {
|
||||
if (getprop("instrumentation/chrono[0]/paused") == 0) {
|
||||
chr.stop();
|
||||
} else {
|
||||
chr.stop();
|
||||
setprop("instrumentation/chrono[0]/paused", 0);
|
||||
};
|
||||
};
|
||||
} elsif (tmp == 0) {
|
||||
if (getprop("instrumentation/chrono[0]/started") == 0) {
|
||||
if (getprop("instrumentation/chrono[0]/paused") == 0) {
|
||||
chr.start();
|
||||
setprop("instrumentation/chrono[0]/started", 1);
|
||||
} else {
|
||||
chr.start();
|
||||
setprop("instrumentation/chrono[0]/paused", 0);
|
||||
};
|
||||
} else {
|
||||
if (getprop("instrumentation/chrono[0]/paused") == 0) {
|
||||
# No action required
|
||||
} else {
|
||||
chr.start();
|
||||
setprop("instrumentation/chrono[0]/paused", 0);
|
||||
};
|
||||
};
|
||||
};
|
||||
},0,0);
|
||||
|
||||
setlistener("instrumentation/clock/et-selector", func(et){
|
||||
var tmp1 = et.getValue();
|
||||
if(tmp1 == 2){
|
||||
clk.reset();
|
||||
}elsif(tmp1==1){
|
||||
clk.stop();
|
||||
}elsif(tmp1==0){
|
||||
clk.start();
|
||||
}
|
||||
},0,0);
|
||||
|
||||
var start_loop = maketimer(0.1, func {
|
||||
if (systems.ELEC.Bus.dcEss.getValue() < 25) { return; }
|
||||
# Annun-test
|
||||
if (getprop("controls/switches/annun-test") == 1) {
|
||||
var UTC_date = sprintf("%02d %02d %02d", "88", "88", "88");
|
||||
var UTC_date1 = sprintf("%02d", "88");
|
||||
var UTC_date2 = sprintf("%02d", "88");
|
||||
var UTC_date3 = sprintf("%02d", "88");
|
||||
var clock2_1 = "88:88";
|
||||
var clock2_2 = sprintf("%02d", 88);
|
||||
setprop("instrumentation/clock/clock_hh_mm", clock2_1);
|
||||
setprop("instrumentation/clock/indicated-seconds", clock2_2);
|
||||
setprop("instrumentation/clock/utc-date", UTC_date);
|
||||
setprop("instrumentation/clock/utc-date1", UTC_date1);
|
||||
setprop("instrumentation/clock/utc-date2", UTC_date2);
|
||||
setprop("instrumentation/clock/utc-date3", UTC_date3);
|
||||
setprop("instrumentation/chrono[0]/chr-et-string", "88 88");
|
||||
setprop("instrumentation/clock/elapsed-string", "88:88");
|
||||
} else {
|
||||
# Clock
|
||||
var UTC_date = sprintf("%02d %02d %02d", getprop("sim/time/utc/month"), getprop("sim/time/utc/day"), substr(sprintf("%2d", getprop("sim/time/utc/year")),1,2));
|
||||
setprop("instrumentation/clock/utc-date", UTC_date);
|
||||
var UTC_date1 = sprintf("%02d", getprop("sim/time/utc/month"));
|
||||
var UTC_date2 = sprintf("%02d", getprop("sim/time/utc/day"));
|
||||
var UTC_date3 = substr(sprintf("%2d", getprop("sim/time/utc/year")),2,2);
|
||||
var clock2_1 = getprop("instrumentation/clock/indicated-short-string");
|
||||
var clock2_2 = sprintf("%02d", substr(getprop("instrumentation/clock/indicated-string"),6,2));
|
||||
setprop("instrumentation/clock/clock_hh_mm", clock2_1);
|
||||
setprop("instrumentation/clock/indicated-seconds", clock2_2);
|
||||
setprop("instrumentation/clock/utc-date", UTC_date);
|
||||
setprop("instrumentation/clock/utc-date1", UTC_date1);
|
||||
setprop("instrumentation/clock/utc-date2", UTC_date2);
|
||||
setprop("instrumentation/clock/utc-date3", UTC_date3);
|
||||
if (getprop("instrumentation/clock/set-knob") == "") {
|
||||
setprop("instrumentation/clock/set-knob", 0);
|
||||
};
|
||||
if (getprop("instrumentation/clock/utc-selector") == "") {
|
||||
setprop("instrumentation/clock/utc-selector", 0);
|
||||
};
|
||||
# if (getprop("instrumentation/clock/utc-selector") == 0) {
|
||||
# # To do - GPS mode
|
||||
# };
|
||||
# if (getprop("instrumentation/clock/utc-selector") == 1) {
|
||||
# # To do - INT mode
|
||||
# };
|
||||
# if (getprop("instrumentation/clock/utc-selector") == 2) {
|
||||
# # To do - SET mode
|
||||
# };
|
||||
|
||||
# Chrono
|
||||
var chr_tmp = getprop("instrumentation/chrono[0]/elapsetime-sec");
|
||||
if (chr_tmp >= 6000) {
|
||||
setprop("instrumentation/chrono[0]/elapsetime-sec", chr_tmp-6000);
|
||||
};
|
||||
var chr_min = int(chr_tmp * 0.0166666666667);
|
||||
if (chr_tmp >= 60) {
|
||||
var chr_sec = int(chr_tmp - (chr_min * 60));
|
||||
} else {
|
||||
var chr_sec = int(chr_tmp);
|
||||
};
|
||||
setprop("instrumentation/chrono[0]/chr-et-min",chr_min);
|
||||
setprop("instrumentation/chrono[0]/chr-et-sec",chr_sec);
|
||||
chr_tmp = sprintf("%02d:%02d", chr_min, chr_sec);
|
||||
setprop("instrumentation/chrono[0]/chr-et-string", chr_tmp);
|
||||
|
||||
# ET clock
|
||||
var et_tmp = getprop("instrumentation/clock/elapsetime-sec");
|
||||
if (et_tmp >= 360000) {
|
||||
setprop("instrumentation/clock/elapsetime-sec", et_tmp-360000);
|
||||
};
|
||||
var et_min = int(et_tmp * 0.0166666666667);
|
||||
var et_hr = int(et_min * 0.0166666666667);
|
||||
et_min = et_min - (et_hr * 60);
|
||||
setprop("instrumentation/clock/et-hr",et_hr);
|
||||
setprop("instrumentation/clock/et-min",et_min);
|
||||
et_tmp = sprintf("%02d:%02d", et_hr, et_min);
|
||||
setprop("instrumentation/clock/elapsed-string", et_tmp);
|
||||
};
|
||||
});
|
||||
|
||||
setlistener("fdm/jsbsim/hydraulics/rudder/trim-cmd-deg", func() {
|
||||
if (systems.ELEC.Bus.dcEss.getValue() < 25 and systems.ELEC.Bus.dc2.getValue() < 25) { return; }
|
||||
var rudder_val = getprop("fdm/jsbsim/hydraulics/rudder/trim-cmd-deg");
|
||||
if (getprop("controls/switches/annun-test") == 1) {
|
||||
setprop("controls/flight/rudder-trim-display", "88.8");
|
||||
setprop("controls/flight/rudder-trim-letter-display", "8");
|
||||
} else {
|
||||
if (rudder_val > -0.05 and rudder_val < 0.05) {
|
||||
setprop("controls/flight/rudder-trim-display", sprintf("%2.1f", abs(rudder_val)));
|
||||
setprop("controls/flight/rudder-trim-letter-display", "");
|
||||
} else {
|
||||
if (rudder_val >= 0.05) {
|
||||
setprop("controls/flight/rudder-trim-display", sprintf("%2.1f", abs(rudder_val)));
|
||||
setprop("controls/flight/rudder-trim-letter-display", "R");
|
||||
} else {
|
||||
if (rudder_val <= -0.05) {
|
||||
setprop("controls/flight/rudder-trim-display", sprintf("%2.1f", abs(rudder_val)));
|
||||
setprop("controls/flight/rudder-trim-letter-display", "L");
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
},0, 0);
|
|
@ -1 +0,0 @@
|
|||
aircraft.livery.init("Aircraft/A320-family/Models/Liveries/A320/CFM-100");
|
|
@ -1 +0,0 @@
|
|||
aircraft.livery.init("Aircraft/A320-family/Models/Liveries/A320/CFM");
|
|
@ -1 +0,0 @@
|
|||
aircraft.livery.init("Aircraft/A320-family/Models/Liveries/A320/IAE");
|
|
@ -1 +0,0 @@
|
|||
aircraft.livery.init("Aircraft/A320-family/Models/Liveries/A320/CFM-NEO");
|
|
@ -1 +0,0 @@
|
|||
aircraft.livery.init("Aircraft/A320-family/Models/Liveries/A320/PW-NEO");
|
|
@ -5,77 +5,71 @@
|
|||
|
||||
var wow = nil;
|
||||
var wowr = nil;
|
||||
var Lrain = props.globals.getNode("/controls/switches/LrainRpt");
|
||||
var Rrain = props.globals.getNode("/controls/switches/RrainRpt");
|
||||
var OnLt = props.globals.getNode("/controls/switches/emerCallLtO");
|
||||
var CallLt = props.globals.getNode("/controls/switches/emerCallLtC");
|
||||
var EmerCall = props.globals.getNode("/controls/switches/emerCall");
|
||||
var CabinCall = props.globals.getNode("/controls/switches/cabinCall");
|
||||
var MechCall = props.globals.getNode("/controls/switches/mechCall");
|
||||
var cvr_gndCtl = props.globals.getNode("/controls/CVR/gndctl");
|
||||
var cvr_power = props.globals.getNode("/controls/CVR/power");
|
||||
var cvr_tone = props.globals.getNode("/controls/CVR/tone");
|
||||
|
||||
# Resets buttons to the default values
|
||||
var variousReset = func {
|
||||
setprop("modes/cpt-du-xfr", 0);
|
||||
setprop("modes/fo-du-xfr", 0);
|
||||
setprop("controls/fadec/n1mode1", 0);
|
||||
setprop("controls/fadec/n1mode2", 0);
|
||||
setprop("/controls/fadec/n1mode1", 0);
|
||||
setprop("/controls/fadec/n1mode2", 0);
|
||||
setprop("instrumentation/mk-viii/serviceable", 1);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/terr-inhibit", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/gpws-inhibit", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/glideslope-cancel", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/glideslope-inhibit", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/momentary-flap-all-override", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override", 0);
|
||||
setprop("controls/switches/cabinCall", 0);
|
||||
setprop("controls/switches/mechCall", 0);
|
||||
setprop("controls/switches/emer-lights", 0.5);
|
||||
setprop("/controls/switches/cabinCall", 0);
|
||||
setprop("/controls/switches/mechCall", 0);
|
||||
setprop("/controls/switches/emer-lights", 0.5);
|
||||
# cockpit voice recorder stuff
|
||||
setprop("controls/CVR/power", 0);
|
||||
setprop("controls/CVR/test", 0);
|
||||
setprop("controls/CVR/tone", 0);
|
||||
setprop("controls/CVR/gndctl", 0);
|
||||
setprop("controls/CVR/erase", 0);
|
||||
setprop("controls/switches/cabinfan", 1);
|
||||
setprop("controls/oxygen/crewOxyPB", 1); # 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);
|
||||
setprop("controls/switches/LrainRpt", 0);
|
||||
setprop("controls/switches/RrainRpt", 0);
|
||||
setprop("controls/switches/wiperLspd", 0); # -1 = INTM 0 = OFF 1 = LO 2 = HI
|
||||
setprop("controls/switches/wiperRspd", 0); # -1 = INTM 0 = OFF 1 = LO 2 = HI
|
||||
setprop("controls/lighting/strobe", 0);
|
||||
setprop("controls/lighting/beacon", 0);
|
||||
setprop("controls/switches/beacon", 0);
|
||||
setprop("controls/switches/wing-lights", 0);
|
||||
setprop("controls/switches/landing-lights-l", 0);
|
||||
setprop("controls/switches/landing-lights-r", 0);
|
||||
setprop("controls/lighting/wing-lights", 0);
|
||||
setprop("controls/lighting/nav-lights-switch", 0);
|
||||
setprop("controls/lighting/landing-lights[1]", 0);
|
||||
setprop("controls/lighting/landing-lights[2]", 0);
|
||||
setprop("controls/lighting/taxi-light-switch", 0);
|
||||
setprop("controls/lighting/DU/du1", 1);
|
||||
setprop("controls/lighting/DU/du2", 1);
|
||||
setprop("controls/lighting/DU/du3", 1);
|
||||
setprop("controls/lighting/DU/du4", 1);
|
||||
setprop("controls/lighting/DU/du5", 1);
|
||||
setprop("controls/lighting/DU/du6", 1);
|
||||
setprop("controls/lighting/DU/mcdu1", 1);
|
||||
setprop("controls/lighting/DU/mcdu2", 1);
|
||||
setprop("/controls/CVR/power", 0);
|
||||
setprop("/controls/CVR/test", 0);
|
||||
setprop("/controls/CVR/tone", 0);
|
||||
setprop("/controls/CVR/gndctl", 0);
|
||||
setprop("/controls/CVR/erase", 0);
|
||||
setprop("/controls/switches/pneumatics/cabin-fans", 1);
|
||||
setprop("/controls/oxygen/crewOxyPB", 1); # 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);
|
||||
setprop("/controls/switches/LrainRpt", 0);
|
||||
setprop("/controls/switches/RrainRpt", 0);
|
||||
setprop("/controls/switches/wiperLspd", 0); # -1 = INTM 0 = OFF 1 = LO 2 = HI
|
||||
setprop("/controls/switches/wiperRspd", 0); # -1 = INTM 0 = OFF 1 = LO 2 = HI
|
||||
setprop("/controls/lighting/strobe", 0);
|
||||
setprop("/controls/lighting/beacon", 0);
|
||||
setprop("/controls/switches/beacon", 0);
|
||||
setprop("/controls/switches/wing-lights", 0);
|
||||
setprop("/controls/switches/landing-lights-l", 0);
|
||||
setprop("/controls/switches/landing-lights-r", 0);
|
||||
setprop("/controls/lighting/wing-lights", 0);
|
||||
setprop("/controls/lighting/nav-lights-switch", 0);
|
||||
setprop("/controls/lighting/landing-lights[1]", 0);
|
||||
setprop("/controls/lighting/landing-lights[2]", 0);
|
||||
setprop("/controls/lighting/taxi-light-switch", 0);
|
||||
setprop("/controls/lighting/DU/du1", 1);
|
||||
setprop("/controls/lighting/DU/du2", 1);
|
||||
setprop("/controls/lighting/DU/du3", 1);
|
||||
setprop("/controls/lighting/DU/du4", 1);
|
||||
setprop("/controls/lighting/DU/du5", 1);
|
||||
setprop("/controls/lighting/DU/du6", 1);
|
||||
setprop("/controls/lighting/DU/mcdu1", 1);
|
||||
setprop("/controls/lighting/DU/mcdu2", 1);
|
||||
setprop("modes/fcu/hdg-time", -45);
|
||||
setprop("controls/switching/ATTHDG", 0);
|
||||
setprop("controls/switching/AIRDATA", 0);
|
||||
setprop("controls/switches/no-smoking-sign", 1);
|
||||
setprop("controls/switches/seatbelt-sign", 1);
|
||||
setprop("/controls/switching/ATTHDG", 0);
|
||||
setprop("/controls/switching/AIRDATA", 0);
|
||||
setprop("/controls/switches/no-smoking-sign", 1);
|
||||
setprop("/controls/switches/seatbelt-sign", 1);
|
||||
}
|
||||
|
||||
var BUTTONS = {
|
||||
update: func() {
|
||||
rainRepel();
|
||||
CVR_master();
|
||||
if (EmerCall.getValue()) {
|
||||
EmerCallOnLight();
|
||||
EmerCallLight();
|
||||
|
@ -83,17 +77,6 @@ var BUTTONS = {
|
|||
},
|
||||
};
|
||||
|
||||
var rainRepel = func() {
|
||||
if (pts.Engines.Engine.state[0].getValue() != 3 and pts.Engines.Engine.state[1].getValue() != 3 and pts.Gear.wow[0].getValue()) {
|
||||
if (Lrain.getValue()) {
|
||||
Lrain.setValue(0);
|
||||
}
|
||||
if (Rrain.getValue()) {
|
||||
Rrain.setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var _OnLt = nil;
|
||||
var _EmerCall = nil;
|
||||
|
||||
|
@ -120,18 +103,6 @@ var EmerCallLight = func() {
|
|||
}
|
||||
}
|
||||
|
||||
var CVR_master = func() {
|
||||
wow = pts.Gear.wow[0].getValue();
|
||||
wowr = pts.Gear.wow[1].getValue();
|
||||
if (systems.ELEC.Bus.acEss.getValue() > 0 and wow and wowr and (cvr_gndCtl.getValue() or (pts.Engines.Engine.state[0].getValue() == 3 or pts.Engines.Engine.state[1].getValue() == 3))) {
|
||||
cvr_power.setValue(1);
|
||||
} else if (!wow and !wowr and systems.ELEC.Bus.acEss.getValue() > 0) {
|
||||
cvr_power.setValue(1);
|
||||
} else {
|
||||
cvr_power.setValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
var EmerCallFunc = func {
|
||||
EmerCall.setValue(1);
|
||||
settimer(func() {
|
||||
|
@ -179,3 +150,9 @@ var toggleSTD = func {
|
|||
pts.Instrumentation.Altimeter.std.setBoolValue(1);
|
||||
}
|
||||
}
|
||||
|
||||
var pushbuttonSound = props.globals.getNode("/sim/sounde/pushbutton");
|
||||
var pushbutton = func {
|
||||
pushbuttonSound.setValue(1);
|
||||
settimer(func {pushbuttonSound.setValue(0);},0.20);
|
||||
}
|
150
Nasal/Libraries/custom-views.nas
Normal file
|
@ -0,0 +1,150 @@
|
|||
# Custom view positions
|
||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
|
||||
#########
|
||||
# Views #
|
||||
#########
|
||||
var resetView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 360;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", -14.6, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var autopilotView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 341.7;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", -16.4, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var overheadView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 348;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 105.8, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", 65.25, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0,0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.12, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var pedestalView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 315;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", -46.3, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var lightsView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 329;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", 17.533, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,8 +7,6 @@ print("------------------------------------------------");
|
|||
print("Copyright (c) 2016-2020 Josh Davidson (Octal450)");
|
||||
print("------------------------------------------------");
|
||||
|
||||
setprop("/sim/replay/was-active", 0);
|
||||
|
||||
setprop("/sim/menubar/default/menu[0]/item[0]/enabled", 0);
|
||||
setprop("/sim/menubar/default/menu[2]/item[0]/enabled", 0);
|
||||
setprop("/sim/menubar/default/menu[2]/item[2]/enabled", 0);
|
||||
|
@ -17,18 +15,6 @@ setprop("/sim/menubar/default/menu[5]/item[9]/enabled", 0);
|
|||
setprop("/sim/menubar/default/menu[5]/item[10]/enabled", 0);
|
||||
setprop("/sim/menubar/default/menu[5]/item[11]/enabled", 0);
|
||||
|
||||
# Dimmers
|
||||
setprop("/controls/lighting/ndl-norm", 1);
|
||||
setprop("/controls/lighting/ndr-norm", 1);
|
||||
setprop("/controls/lighting/upper-norm", 1);
|
||||
|
||||
# Lights
|
||||
setprop("/sim/model/lights/nose-lights", 0);
|
||||
setprop("/sim/model/lights/turnoffsw", 0);
|
||||
setprop("/controls/lighting/turnoff-light-switch", 0);
|
||||
setprop("/controls/lighting/leftturnoff", 0);
|
||||
setprop("/controls/lighting/rightturnoff", 0);
|
||||
|
||||
# Oil Qty
|
||||
var qty1 = math.round((rand() * 5 ) + 20, 0.1);
|
||||
var qty2 = math.round((rand() * 5 ) + 20, 0.1);
|
||||
|
@ -38,41 +24,22 @@ setprop("/engines/engine[1]/oil-qt-actual", qty2);
|
|||
##########
|
||||
# Lights #
|
||||
##########
|
||||
|
||||
var beacon_switch = props.globals.getNode("controls/switches/beacon", 1);
|
||||
var beacon_ctl = props.globals.getNode("controls/lighting/beacon", 1);
|
||||
var beacon = aircraft.light.new("/sim/model/lights/beacon", [0.1, 1], "/controls/lighting/beacon");
|
||||
var strobe_switch = props.globals.getNode("controls/switches/strobe", 1);
|
||||
var strobe_light = props.globals.getNode("controls/lighting/strobe", 1);
|
||||
var strobe = aircraft.light.new("/sim/model/lights/strobe", [0.05, 0.06, 0.05, 1], "/controls/lighting/strobe");
|
||||
var tail_strobe = aircraft.light.new("/sim/model/lights/tailstrobe", [0.1, 1], "/controls/lighting/strobe");
|
||||
var logo_lights = getprop("/sim/model/lights/logo-lights");
|
||||
var nav_lights = props.globals.getNode("sim/model/lights/nav-lights");
|
||||
var wing_switch = props.globals.getNode("controls/switches/wing-lights", 1);
|
||||
var wing_ctl = props.globals.getNode("controls/lighting/wing-lights", 1);
|
||||
var dome_light = props.globals.initNode("/sim/model/lights/dome-light", 0.0, "DOUBLE");
|
||||
var wow = getprop("/gear/gear[2]/wow");
|
||||
var slats = getprop("/controls/flight/slats");
|
||||
var gear = getprop("/gear/gear[0]/position-norm");
|
||||
var nose_lights = getprop("/sim/model/lights/nose-lights");
|
||||
var left_turnoff_light = props.globals.getNode("controls/lighting/leftturnoff");
|
||||
var right_turnoff_light = props.globals.getNode("controls/lighting/rightturnoff");
|
||||
var settingT = getprop("/controls/lighting/taxi-light-switch");
|
||||
var settingTurnoff = getprop("/controls/lighting/turnoff-light-switch");
|
||||
var setting = getprop("/controls/lighting/nav-lights-switch");
|
||||
var domeSetting = getprop("/controls/lighting/dome-norm");
|
||||
var landL = props.globals.getNode("controls/lighting/landing-lights[1]", 1);
|
||||
var landR = props.globals.getNode("controls/lighting/landing-lights[2]", 1);
|
||||
var landlSw = props.globals.getNode("controls/switches/landing-lights-l", 1);
|
||||
var landrSw = props.globals.getNode("controls/switches/landing-lights-r", 1);
|
||||
|
||||
###################
|
||||
# Tire Smoke/Rain #
|
||||
###################
|
||||
var stateL = 0;
|
||||
var stateR = 0;
|
||||
|
||||
###########
|
||||
# Effects #
|
||||
###########
|
||||
|
||||
var tiresmoke_system = aircraft.tyresmoke_system.new(0, 1, 2);
|
||||
aircraft.rain.init();
|
||||
|
||||
aircraft.livery.init(getprop("/sim/model/livery-dir"));
|
||||
|
||||
##########
|
||||
# Sounds #
|
||||
##########
|
||||
|
@ -82,7 +49,7 @@ setlistener("/sim/sounde/btn1", func {
|
|||
return;
|
||||
}
|
||||
settimer(func {
|
||||
props.globals.getNode("sim/sounde/btn1").setBoolValue(0);
|
||||
props.globals.getNode("/sim/sounde/btn1").setBoolValue(0);
|
||||
}, 0.05);
|
||||
});
|
||||
|
||||
|
@ -91,7 +58,7 @@ setlistener("/sim/sounde/oh-btn", func {
|
|||
return;
|
||||
}
|
||||
settimer(func {
|
||||
props.globals.getNode("sim/sounde/oh-btn").setBoolValue(0);
|
||||
props.globals.getNode("/sim/sounde/oh-btn").setBoolValue(0);
|
||||
}, 0.05);
|
||||
});
|
||||
|
||||
|
@ -100,7 +67,7 @@ setlistener("/sim/sounde/btn3", func {
|
|||
return;
|
||||
}
|
||||
settimer(func {
|
||||
props.globals.getNode("sim/sounde/btn3").setBoolValue(0);
|
||||
props.globals.getNode("/sim/sounde/btn3").setBoolValue(0);
|
||||
}, 0.05);
|
||||
});
|
||||
|
||||
|
@ -109,7 +76,7 @@ setlistener("/sim/sounde/knb1", func {
|
|||
return;
|
||||
}
|
||||
settimer(func {
|
||||
props.globals.getNode("sim/sounde/knb1").setBoolValue(0);
|
||||
props.globals.getNode("/sim/sounde/knb1").setBoolValue(0);
|
||||
}, 0.05);
|
||||
});
|
||||
|
||||
|
@ -118,36 +85,76 @@ setlistener("/sim/sounde/switch1", func {
|
|||
return;
|
||||
}
|
||||
settimer(func {
|
||||
props.globals.getNode("sim/sounde/switch1").setBoolValue(0);
|
||||
props.globals.getNode("/sim/sounde/switch1").setBoolValue(0);
|
||||
}, 0.05);
|
||||
});
|
||||
|
||||
setlistener("/controls/lighting/seatbelt-sign", func {
|
||||
props.globals.getNode("sim/sounde/seatbelt-sign").setBoolValue(1);
|
||||
props.globals.getNode("/sim/sounde/seatbelt-sign").setBoolValue(1);
|
||||
settimer(func {
|
||||
props.globals.getNode("sim/sounde/seatbelt-sign").setBoolValue(0);
|
||||
props.globals.getNode("/sim/sounde/seatbelt-sign").setBoolValue(0);
|
||||
}, 2);
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/controls/lighting/no-smoking-sign", func {
|
||||
props.globals.getNode("sim/sounde/no-smoking-sign").setBoolValue(1);
|
||||
props.globals.getNode("/sim/sounde/no-smoking-sign").setBoolValue(1);
|
||||
settimer(func {
|
||||
props.globals.getNode("sim/sounde/no-smoking-sign").setBoolValue(0);
|
||||
props.globals.getNode("/sim/sounde/no-smoking-sign").setBoolValue(0);
|
||||
}, 1);
|
||||
}, 0, 0);
|
||||
|
||||
var flaps_click = props.globals.getNode("/sim/sounde/flaps-click");
|
||||
|
||||
setlistener("/controls/flight/flaps-input", func {
|
||||
props.globals.getNode("sim/sounde/flaps-click").setBoolValue(1);
|
||||
flaps_click.setBoolValue(1);
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/sim/sounde/flaps-click", func {
|
||||
if (!getprop("/sim/sounde/flaps-click")) {
|
||||
if (!flaps_click.getValue()) {
|
||||
return;
|
||||
}
|
||||
settimer(func {
|
||||
props.globals.getNode("sim/sounde/flaps-click").setBoolValue(0);
|
||||
flaps_click.setBoolValue(0);
|
||||
}, 0.4);
|
||||
});
|
||||
|
||||
var spdbrk_click = props.globals.getNode("/sim/sounde/spdbrk-click");
|
||||
|
||||
setlistener("/controls/flight/speedbrake", func {
|
||||
spdbrk_click.setBoolValue(1);
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/sim/sounde/spdbrk-click", func {
|
||||
if (!spdbrk_click.getValue()) {
|
||||
return;
|
||||
}
|
||||
settimer(func {
|
||||
spdbrk_click.setBoolValue(0);
|
||||
}, 0.4);
|
||||
});
|
||||
|
||||
var relayBatt1 = func {
|
||||
setprop("/sim/sounde/relay-batt-1",1);
|
||||
settimer(func {setprop("/sim/sounde/relay-batt-1",0);},0.35);
|
||||
}
|
||||
var relayBatt2 = func {
|
||||
setprop("/sim/sounde/relay-batt-2",1);
|
||||
settimer(func {setprop("/sim/sounde/relay-batt-2",0);},0.35);
|
||||
}
|
||||
var relayApu = func {
|
||||
setprop("/sim/sounde/relay-apu",1);
|
||||
settimer(func {setprop("/sim/sounde/relay-apu",0);},0.35);
|
||||
}
|
||||
var relayExt = func {
|
||||
setprop("/sim/sounde/relay-ext",1);
|
||||
settimer(func {setprop("/sim/sounde/relay-ext",0);},0.35);
|
||||
}
|
||||
|
||||
setlistener("/systems/electrical/sources/bat-1/contact", relayBatt1, nil, 0);
|
||||
setlistener("/systems/electrical/sources/bat-2/contact", relayBatt2, nil, 0);
|
||||
setlistener("/systems/electrical/relay/apu-glc/contact-pos", relayApu, nil, 0);
|
||||
setlistener("/systems/electrical/relay/ext-epc/contact-pos", relayExt, nil, 0);
|
||||
|
||||
#########
|
||||
# Doors #
|
||||
#########
|
||||
|
@ -189,10 +196,9 @@ var triggerDoor = func(door, doorName, doorDesc) {
|
|||
}
|
||||
};
|
||||
|
||||
#######################
|
||||
# Various Other Stuff #
|
||||
#######################
|
||||
|
||||
###########
|
||||
# Systems #
|
||||
###########
|
||||
var systemsInit = func {
|
||||
fbw.FBW.init();
|
||||
effects.light_manager.init();
|
||||
|
@ -203,10 +209,11 @@ var systemsInit = func {
|
|||
systems.ADIRS.init();
|
||||
systems.eng_init();
|
||||
systems.APUController.init();
|
||||
systems.autobrake_init();
|
||||
systems.BrakeSys.reset();
|
||||
systems.Autobrake.init();
|
||||
systems.fire_init();
|
||||
systems.icingInit();
|
||||
fmgc.flightPlanController.reset();
|
||||
fmgc.windController.reset();
|
||||
fadec.FADEC.init();
|
||||
fmgc.ITAF.init();
|
||||
fmgc.FMGCinit();
|
||||
|
@ -215,6 +222,7 @@ var systemsInit = func {
|
|||
mcdu_scratchpad.mcduMsgtimer1.start();
|
||||
mcdu_scratchpad.mcduMsgtimer2.start();
|
||||
systemsLoop.start();
|
||||
effects.icingInit();
|
||||
lightsLoop.start();
|
||||
ecam.ECAM.init();
|
||||
libraries.variousReset();
|
||||
|
@ -225,82 +233,123 @@ var systemsInit = func {
|
|||
fcu.FCUController.init();
|
||||
dmc.DMController.init();
|
||||
fmgc.flightPlanController.init();
|
||||
fmgc.windController.init();
|
||||
atsu.CompanyCall.init();
|
||||
}
|
||||
|
||||
setlistener("/sim/signals/fdm-initialized", func {
|
||||
systemsInit();
|
||||
fmgc.postInit();
|
||||
fmgc.flightPlanTimer.start();
|
||||
fmgc.WaypointDatabase.read();
|
||||
});
|
||||
|
||||
var collectorTankL = props.globals.getNode("/fdm/jsbsim/propulsion/tank[5]/contents-lbs");
|
||||
var collectorTankR = props.globals.getNode("/fdm/jsbsim/propulsion/tank[6]/contents-lbs");
|
||||
var groundAir = props.globals.getNode("/controls/pneumatics/switches/groundair");
|
||||
var groundCart = props.globals.getNode("/controls/electrical/ground-cart");
|
||||
var chocks = props.globals.getNode("/services/chocks/enable");
|
||||
var engRdy = props.globals.getNode("/engines/ready");
|
||||
var groundspeed = 0;
|
||||
|
||||
var systemsLoop = maketimer(0.1, func {
|
||||
systems.ELEC.loop();
|
||||
systems.PNEU.loop();
|
||||
systems.HYD.loop();
|
||||
systems.FUEL.loop();
|
||||
systems.ADIRS.loop();
|
||||
systems.APUController.loop();
|
||||
systems.BrakeSys.update();
|
||||
ecam.ECAM.loop();
|
||||
libraries.BUTTONS.update();
|
||||
fadec.FADEC.loop();
|
||||
rmp.rmpUpdate();
|
||||
fcu.FCUController.loop();
|
||||
dmc.DMController.loop();
|
||||
systems.APUController.loop();
|
||||
atsu.ATSU.loop();
|
||||
libraries.BUTTONS.update();
|
||||
systems.HFLoop();
|
||||
|
||||
if ((getprop("/controls/pneumatic/switches/groundair") or getprop("/controls/electrical/ground-cart")) and ((getprop("/velocities/groundspeed-kt") > 2) or (getprop("/controls/gear/brake-parking") == 0 and getprop("/services/chocks/nose") == 0 and getprop("/services/chocks/left") == 0 and getprop("/services/chocks/right") == 0))) {
|
||||
setprop("/controls/electrical/ground-cart", 0);
|
||||
setprop("/controls/pneumatic/switches/groundair", 0);
|
||||
groundspeed = pts.Velocities.groundspeed.getValue();
|
||||
if ((groundAir.getBoolValue() or groundCart.getBoolValue()) and ((groundspeed > 2) or (!pts.Controls.Gear.parkingBrake.getBoolValue() and !chocks.getBoolValue()))) {
|
||||
groundAir.setBoolValue(0);
|
||||
groundCart.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (getprop("/velocities/groundspeed-kt") > 15) {
|
||||
setprop("/systems/shake/effect", 1);
|
||||
if (groundspeed > 15) {
|
||||
shakeEffectA3XX.setBoolValue(1);
|
||||
} else {
|
||||
setprop("/systems/shake/effect", 0);
|
||||
shakeEffectA3XX.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (getprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap-all-override") == 1 or (getprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override") == 1 and getprop("/controls/flight/flaps-pos") >= 4)) {
|
||||
setprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap-override", 1);
|
||||
stateL = pts.Engines.Engine.state[0].getValue();
|
||||
stateR = pts.Engines.Engine.state[1].getValue();
|
||||
|
||||
if (stateL == 3 and stateR == 3) {
|
||||
engRdy.setBoolValue(1);
|
||||
} else {
|
||||
setprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap-override", 0);
|
||||
engRdy.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (getprop("/instrumentation/mk-viii/inputs/discretes/gpws-inhibit") == 1) {
|
||||
setprop("/instrumentation/mk-viii/speaker/volume", 0);
|
||||
} else {
|
||||
setprop("/instrumentation/mk-viii/speaker/volume", 2);
|
||||
}
|
||||
|
||||
if (getprop("/engines/engine[0]/state") == 3 and getprop("/engines/engine[1]/state") == 3) {
|
||||
setprop("/engines/ready", 1);
|
||||
} else {
|
||||
setprop("/engines/ready", 0);
|
||||
}
|
||||
|
||||
if ((getprop("/engines/engine[0]/state") == 2 or getprop("/engines/engine[0]/state") == 3) and getprop("/fdm/jsbsim/propulsion/tank[5]/contents-lbs") < 1) {
|
||||
if ((stateL == 2 or stateL == 3) and collectorTankL.getValue() < 1) {
|
||||
systems.cutoff_one();
|
||||
}
|
||||
if ((getprop("/engines/engine[1]/state") == 2 or getprop("/engines/engine[1]/state") == 3) and getprop("/fdm/jsbsim/propulsion/tank[6]/contents-lbs") < 1) {
|
||||
if ((stateR == 2 or stateR == 3) and collectorTankR.getValue() < 1) {
|
||||
systems.cutoff_two();
|
||||
}
|
||||
|
||||
if (getprop("/sim/replay/replay-state") == 1) {
|
||||
setprop("/sim/replay/was-active", 1);
|
||||
} else if (getprop("/sim/replay/replay-state") == 0 and getprop("/sim/replay/was-active") == 1) {
|
||||
setprop("/sim/replay/was-active", 0);
|
||||
acconfig.colddark();
|
||||
gui.popupTip("Replay Ended: Setting Cold and Dark state...");
|
||||
}
|
||||
});
|
||||
|
||||
# GPWS
|
||||
var GPWS = {
|
||||
inhibitNode: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/gpws-inhibit"),
|
||||
volume: props.globals.getNode("/instrumentation/mk-viii/speaker/volume"),
|
||||
flapAllOverride: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/momentary-flap-all-override"),
|
||||
flap3Override: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override"),
|
||||
flapOverride: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/momentary-flap-override"),
|
||||
};
|
||||
|
||||
setlistener("/instrumentation/mk-viii/inputs/discretes/gpws-inhibit", func() {
|
||||
if (GPWS.inhibitNode.getBoolValue()) {
|
||||
GPWS.volume.setValue(2);
|
||||
} else {
|
||||
GPWS.volume.setValue(0);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
var updateGPWSFlap = func() {
|
||||
if (GPWS.flapAllOverride.getBoolValue() or (GPWS.flap3Override.getBoolValue() and pts.Controls.Flight.flapsPos.getValue() >= 4)) {
|
||||
GPWS.flapOverride.setBoolValue(1);
|
||||
} else {
|
||||
GPWS.flapOverride.setBoolValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
setlistener("/instrumentation/mk-viii/inputs/discretes/momentary-flap-all-override", func() {
|
||||
updateGPWSFlap();
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override", func() {
|
||||
updateGPWSFlap();
|
||||
}, 0, 0);
|
||||
|
||||
# Replay
|
||||
var replayState = props.globals.getNode("/sim/replay/replay-state");
|
||||
setlistener("/sim/replay/replay-state", func() {
|
||||
if (replayState.getBoolValue()) {
|
||||
} else {
|
||||
acconfig.colddark();
|
||||
gui.popupTip("Replay Ended: Setting Cold and Dark state...");
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
# Steep ILS
|
||||
setlistener("/options/steep-ils", func {
|
||||
if (getprop("/options/steep-ils") == 1) {
|
||||
setprop("/instrumentation/mk-viii/inputs/discretes/steep-approach", 1);
|
||||
} else {
|
||||
setprop("/instrumentation/mk-viii/inputs/discretes/steep-approach", 0);
|
||||
}
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
# hackCanvas
|
||||
canvas.Text._lastText = canvas.Text["_lastText"];
|
||||
canvas.Text.setText = func(text) {
|
||||
if (text == me._lastText and text != nil and size(text) == size(me._lastText)) {return me;}
|
||||
|
@ -324,8 +373,12 @@ canvas.Element.setVisible = func(vis) {
|
|||
me.setBool("visible", vis);
|
||||
};
|
||||
|
||||
############
|
||||
# Controls #
|
||||
############
|
||||
|
||||
controls.stepSpoilers = func(step) {
|
||||
setprop("/controls/flight/speedbrake-arm", 0);
|
||||
pts.Controls.Flight.speedbrakeArm.setValue(0);
|
||||
if (step == 1) {
|
||||
deploySpeedbrake();
|
||||
} else if (step == -1) {
|
||||
|
@ -334,37 +387,40 @@ controls.stepSpoilers = func(step) {
|
|||
}
|
||||
|
||||
var deploySpeedbrake = func {
|
||||
if (getprop("/gear/gear[1]/wow") == 1 or getprop("/gear/gear[2]/wow") == 1) {
|
||||
if (getprop("/controls/flight/speedbrake") < 1.0) {
|
||||
setprop("/controls/flight/speedbrake", 1.0);
|
||||
if (pts.Gear.Wow[1].getBoolValue() or pts.Gear.Wow[2].getBoolValue()) {
|
||||
if (pts.Controls.Flight.speedbrake.getValue() < 1.0) {
|
||||
pts.Controls.Flight.speedbrake.setValue(1.0);
|
||||
}
|
||||
} else {
|
||||
if (getprop("/controls/flight/speedbrake") < 0.5) {
|
||||
setprop("/controls/flight/speedbrake", 0.5);
|
||||
} else if (getprop("/controls/flight/speedbrake") < 1.0) {
|
||||
setprop("/controls/flight/speedbrake", 1.0);
|
||||
if (pts.Controls.Flight.speedbrake.getValue() < 0.5) {
|
||||
pts.Controls.Flight.speedbrake.setValue(0.5);
|
||||
} else if (pts.Controls.Flight.speedbrake.getValue() < 1.0) {
|
||||
pts.Controls.Flight.speedbrake.setValue(1.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var retractSpeedbrake = func {
|
||||
if (getprop("/gear/gear[1]/wow") == 1 or getprop("/gear/gear[2]/wow") == 1) {
|
||||
if (getprop("/controls/flight/speedbrake") > 0.0) {
|
||||
setprop("/controls/flight/speedbrake", 0.0);
|
||||
if (pts.Gear.Wow[1].getBoolValue() or pts.Gear.Wow[2].getBoolValue()) {
|
||||
if (pts.Controls.Flight.speedbrake.getValue() > 0.0) {
|
||||
pts.Controls.Flight.speedbrake.setValue(0.0);
|
||||
}
|
||||
} else {
|
||||
if (getprop("/controls/flight/speedbrake") > 0.5) {
|
||||
setprop("/controls/flight/speedbrake", 0.5);
|
||||
} else if (getprop("/controls/flight/speedbrake") > 0.0) {
|
||||
setprop("/controls/flight/speedbrake", 0.0);
|
||||
if (pts.Controls.Flight.speedbrake.getValue() > 0.5) {
|
||||
pts.Controls.Flight.speedbrake.setValue(0.5);
|
||||
} else if (pts.Controls.Flight.speedbrake.getValue() > 0.0) {
|
||||
pts.Controls.Flight.speedbrake.setValue(0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var delta = 0;
|
||||
var output = 0;
|
||||
var slewProp = func(prop, delta) {
|
||||
delta *= getprop("/sim/time/delta-realtime-sec");
|
||||
setprop(prop, getprop(prop) + delta);
|
||||
return getprop(prop);
|
||||
delta *= pts.Sim.Time.deltaRealtimeSec.getValue();
|
||||
output = props.globals.getNode(prop).getValue() + delta;
|
||||
props.globals.getNode(prop).setValue(output);
|
||||
return output;
|
||||
}
|
||||
|
||||
controls.flapsDown = func(step) {
|
||||
|
@ -392,135 +448,42 @@ controls.flapsDown = func(step) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
controls.elevatorTrim = func(speed) {
|
||||
if (getprop("/systems/hydraulic/green-psi") >= 1500) {
|
||||
slewprop("/controls/flight/elevator-trim", speed * 0.0185); # Rate in JSB normalized (0.25 / 13.5)
|
||||
controls.elevatorTrim = func(d) {
|
||||
if (systems.HYD.Psi.green.getValue() >= 1500) {
|
||||
slewProp("/controls/flight/elevator-trim", d * 0.0185); # Rate in JSB normalized (0.125 / 13.5)
|
||||
} else {
|
||||
slewprop("/controls/flight/elevator-trim", speed * 0.0092); # Rate in JSB normalized (0.125 / 13.5)
|
||||
slewProp("/controls/flight/elevator-trim", d * 0.0092) # Rate in JSB normalized (0.125 / 13.5)
|
||||
}
|
||||
}
|
||||
|
||||
setlistener("/controls/flight/elevator-trim", func {
|
||||
if (getprop("/controls/flight/elevator-trim") > 0.296296) {
|
||||
setprop("/controls/flight/elevator-trim", 0.296296);
|
||||
if (pts.Controls.Flight.elevatorTrim.getValue() > 0.296296) {
|
||||
pts.Controls.Flight.elevatorTrim.setValue(0.296296);
|
||||
}
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
# For the cockpit rotation and anywhere else you want to use it
|
||||
var cmdDegCalc = 0;
|
||||
var slewPitchWheel = func(d) {
|
||||
cmdDegCalc = math.round(pts.Fdm.JSBsim.Hydraulics.ElevatorTrim.cmdDeg.getValue(), 0.1);
|
||||
if (d > 0) { # DN
|
||||
if (cmdDegCalc < 4) {
|
||||
cmdDegCalc = (cmdDegCalc + 0.1) / 13.5; # Add and normalize, NOT 4! 13.5 = 1 on either polarity
|
||||
pts.Controls.Flight.elevatorTrim.setValue(cmdDegCalc);
|
||||
}
|
||||
} else { # UP
|
||||
if (cmdDegCalc > -13.5) {
|
||||
cmdDegCalc = (cmdDegCalc - 0.1) / 13.5; # Subtract and normalize
|
||||
pts.Controls.Flight.elevatorTrim.setValue(cmdDegCalc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##########
|
||||
# Lights #
|
||||
##########
|
||||
|
||||
var lightsLoop = maketimer(0.2, func {
|
||||
gear = getprop("/gear/gear[0]/position-norm");
|
||||
nose_lights = getprop("/sim/model/lights/nose-lights");
|
||||
settingT = getprop("/controls/lighting/taxi-light-switch");
|
||||
domeSetting = getprop("/controls/lighting/dome-norm");
|
||||
|
||||
# nose lights
|
||||
|
||||
if (settingT == 0.5 and gear > 0.9 and (getprop("/systems/electrical/bus/ac-1") > 0 or getprop("/systems/electrical/bus/ac-2") > 0)) {
|
||||
setprop("/sim/model/lights/nose-lights", 0.85);
|
||||
} else if (settingT == 1 and gear > 0.9 and (getprop("/systems/electrical/bus/ac-1") > 0 or getprop("/systems/electrical/bus/ac-2") > 0)) {
|
||||
setprop("/sim/model/lights/nose-lights", 1);
|
||||
} else {
|
||||
setprop("/sim/model/lights/nose-lights", 0);
|
||||
}
|
||||
|
||||
# turnoff lights
|
||||
settingTurnoff = getprop("/controls/lighting/turnoff-light-switch");
|
||||
left_turnoff_light = props.globals.getNode("controls/lighting/leftturnoff");
|
||||
right_turnoff_light = props.globals.getNode("controls/lighting/rightturnoff");
|
||||
|
||||
if (settingTurnoff == 1 and gear > 0.9 and getprop("/systems/electrical/bus/ac-1") > 0) {
|
||||
left_turnoff_light.setBoolValue(1);
|
||||
} else {
|
||||
left_turnoff_light.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (settingTurnoff == 1 and gear > 0.9 and getprop("/systems/electrical/bus/ac-2") > 0) {
|
||||
right_turnoff_light.setBoolValue(1);
|
||||
} else {
|
||||
right_turnoff_light.setBoolValue(0);
|
||||
}
|
||||
|
||||
# logo and navigation lights
|
||||
setting = getprop("/controls/lighting/nav-lights-switch");
|
||||
nav_lights = props.globals.getNode("sim/model/lights/nav-lights");
|
||||
logo_lights = props.globals.getNode("sim/model/lights/logo-lights");
|
||||
wow = getprop("/gear/gear[2]/wow");
|
||||
slats = getprop("/controls/flight/slats");
|
||||
|
||||
if (getprop("/systems/electrical/bus/ac-1") > 0 or getprop("/systems/electrical/bus/ac-2") > 0 or getprop("/systems/electrical/bus/dc-1") > 0 or getprop("/systems/electrical/bus/dc-2") > 0) {
|
||||
setprop("/systems/electrical/nav-lights-power", 1);
|
||||
} else {
|
||||
setprop("/systems/electrical/nav-lights-power", 0);
|
||||
}
|
||||
|
||||
if (setting == 0 and logo_lights == 1) {
|
||||
logo_lights.setBoolValue(0);
|
||||
} else if (setting == 1 or setting == 2 and (getprop("/systems/electrical/bus/ac-1") > 0 or getprop("/systems/electrical/bus/ac-2") > 0)) {
|
||||
if ((wow) or (!wow and slats > 0)) {
|
||||
logo_lights.setBoolValue(1);
|
||||
} else {
|
||||
logo_lights.setBoolValue(0);
|
||||
}
|
||||
} else {
|
||||
logo_lights.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (setting == 1 or setting == 2 and (getprop("/systems/electrical/bus/ac-1") > 0 or getprop("/systems/electrical/bus/ac-2") > 0 or getprop("/systems/electrical/bus/dc-1") > 0 or getprop("/systems/electrical/bus/dc-2") > 0)) {
|
||||
nav_lights.setBoolValue(1);
|
||||
} else {
|
||||
nav_lights.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (domeSetting == 0.5 and getprop("/systems/electrical/bus/dc-ess") > 0) {
|
||||
dome_light.setValue(0.5);
|
||||
} elsif (domeSetting == 1 and getprop("/systems/electrical/bus/dc-ess") > 0) {
|
||||
dome_light.setValue(1);
|
||||
} else {
|
||||
dome_light.setValue(0);
|
||||
}
|
||||
|
||||
# strobe
|
||||
strobe_sw = strobe_switch.getValue();
|
||||
|
||||
if (strobe_sw == 1 and getprop("/systems/electrical/bus/ac-2") > 0) {
|
||||
strobe_light.setValue(1);
|
||||
} elsif (strobe_sw == 0.5 and getprop("/gear/gear[1]/wow") == 0 and getprop("/gear/gear[2]/wow") == 0 and getprop("/systems/electrical/bus/ac-2") > 0) {
|
||||
# todo: use lgciu output 5
|
||||
strobe_light.setValue(1);
|
||||
} else {
|
||||
strobe_light.setValue(0);
|
||||
}
|
||||
|
||||
# beacon
|
||||
|
||||
if (beacon_switch.getValue() == 1 and (getprop("/systems/electrical/bus/ac-1") > 0 or getprop("/systems/electrical/bus/ac-2") > 0)) {
|
||||
beacon_ctl.setValue(1);
|
||||
} else {
|
||||
beacon_ctl.setValue(0);
|
||||
}
|
||||
|
||||
# wing
|
||||
|
||||
if (wing_switch.getValue() == 1 and (getprop("/systems/electrical/bus/ac-1") > 0 or getprop("/systems/electrical/bus/ac-2") > 0)) {
|
||||
wing_ctl.setValue(1);
|
||||
} else {
|
||||
wing_ctl.setValue(0);
|
||||
}
|
||||
|
||||
# landL
|
||||
|
||||
if (landlSw.getValue() == 1 and getprop("/systems/electrical/bus/ac-1") > 0) {
|
||||
landL.setValue(1);
|
||||
} else {
|
||||
landL.setValue(0);
|
||||
}
|
||||
|
||||
if (landrSw.getValue() == 1 and getprop("/systems/electrical/bus/ac-2") > 0) {
|
||||
landR.setValue(1);
|
||||
} else {
|
||||
landR.setValue(0);
|
||||
}
|
||||
|
||||
# signs
|
||||
|
||||
if (getprop("/systems/pressurization/cabinalt-norm") > 11300) {
|
||||
|
@ -549,86 +512,70 @@ var lightsLoop = maketimer(0.2, func {
|
|||
setprop("/controls/lighting/no-smoking-sign", 0); # sign stays on in cabin but sound still occurs
|
||||
}
|
||||
}
|
||||
|
||||
if (getprop("/controls/lighting/landing-lights[1]") >= 0.5) {
|
||||
setprop("/fdm/jsbsim/rubbish/landL", 1);
|
||||
} else {
|
||||
setprop("/fdm/jsbsim/rubbish/landL", 0);
|
||||
}
|
||||
|
||||
if (getprop("/controls/lighting/landing-lights[2]") >= 0.5) {
|
||||
setprop("/fdm/jsbsim/rubbish/landR", 1);
|
||||
} else {
|
||||
setprop("/fdm/jsbsim/rubbish/landR", 0);
|
||||
}
|
||||
});
|
||||
|
||||
var lTray = func {
|
||||
var lTrayCMD = getprop("/controls/tray/lefttrayext");
|
||||
if (lTrayCMD < 0.5) {
|
||||
interpolate("/controls/tray/lefttrayext", 0.5, 0.5);
|
||||
} else if (lTrayCMD == 0.5) {
|
||||
interpolate("/controls/tray/lefttrayext", 1.0, 0.5);
|
||||
var pilotComfortTwoPos = func(prop) {
|
||||
var item = getprop(prop);
|
||||
if (item < 0.5) {
|
||||
interpolate(prop, 0.5, 0.5);
|
||||
} elsif (item == 0.5) {
|
||||
interpolate(prop, 1.0, 0.5);
|
||||
} else {
|
||||
interpolate("/controls/tray/lefttrayext", 0.0, 1.0);
|
||||
interpolate(prop, 0.0, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
var rTray = func {
|
||||
var rTrayCMD = getprop("/controls/tray/righttrayext");
|
||||
if (rTrayCMD < 0.5) {
|
||||
interpolate("/controls/tray/righttrayext", 0.5, 0.5);
|
||||
} else if (rTrayCMD == 0.5) {
|
||||
interpolate("/controls/tray/righttrayext", 1.0, 0.5);
|
||||
var pilotComfortOnePos = func(prop) {
|
||||
var item = getprop(prop);
|
||||
if (item < 1.0) {
|
||||
interpolate(prop, 1.0, 1.0);
|
||||
} else {
|
||||
interpolate("/controls/tray/righttrayext", 0.0, 1.0);
|
||||
interpolate(prop, 0.0, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
var lTray = func {
|
||||
pilotComfortTwoPos("/controls/tray/lefttrayext");
|
||||
}
|
||||
var rTray = func {
|
||||
pilotComfortTwoPos("/controls/tray/righttrayext");
|
||||
}
|
||||
|
||||
var l1Pedal = func {
|
||||
var lPedalCMD = getprop("/controls/footrest-cpt[0]");
|
||||
if (lPedalCMD < 1.0) {
|
||||
interpolate("/controls/footrest-cpt[0]", 1.0, 0.5);
|
||||
} else {
|
||||
interpolate("/controls/footrest-cpt[0]", 0.0, 0.5);
|
||||
pilotComfortOnePos("/controls/footrest-cpt[0]");
|
||||
}
|
||||
}
|
||||
|
||||
var l2Pedal = func {
|
||||
var l2PedalCMD = getprop("/controls/footrest-cpt[1]");
|
||||
if (l2PedalCMD < 1.0) {
|
||||
interpolate("/controls/footrest-cpt[1]", 1.0, 0.5);
|
||||
} else {
|
||||
interpolate("/controls/footrest-cpt[1]", 0.0, 0.5);
|
||||
}
|
||||
pilotComfortOnePos("/controls/footrest-cpt[1]");
|
||||
}
|
||||
|
||||
var r1Pedal = func {
|
||||
var rPedalCMD = getprop("/controls/footrest-fo[0]");
|
||||
if (rPedalCMD < 1.0) {
|
||||
interpolate("/controls/footrest-fo[0]", 1.0, 0.5);
|
||||
} else {
|
||||
interpolate("/controls/footrest-fo[0]", 0.0, 0.5);
|
||||
pilotComfortOnePos("/controls/footrest-fo[0]");
|
||||
}
|
||||
}
|
||||
|
||||
var r2Pedal = func {
|
||||
var r2PedalCMD = getprop("/controls/footrest-fo[1]");
|
||||
if (r2PedalCMD < 1.0) {
|
||||
interpolate("/controls/footrest-fo[1]", 1.0, 0.5);
|
||||
} else {
|
||||
interpolate("/controls/footrest-fo[1]", 0.0, 0.5);
|
||||
}
|
||||
pilotComfortOnePos("/controls/footrest-fo[1]");
|
||||
}
|
||||
|
||||
if (getprop("/controls/flight/auto-coordination") == 1) {
|
||||
setprop("/controls/flight/auto-coordination", 0);
|
||||
#####################
|
||||
# Auto-coordination #
|
||||
#####################
|
||||
|
||||
if (pts.Controls.Flight.autoCoordination.getBoolValue()) {
|
||||
pts.Controls.Flight.autoCoordination.setBoolValue(0);
|
||||
pts.Controls.Flight.aileronDrivesTiller.setBoolValue(1);
|
||||
} else {
|
||||
pts.Controls.Flight.aileronDrivesTiller.setBoolValue(0);
|
||||
}
|
||||
|
||||
setlistener("/controls/flight/auto-coordination", func {
|
||||
pts.Controls.Flight.autoCoordination.setBoolValue(0);
|
||||
print("System: Auto Coordination has been turned off as it is not compatible with the fly-by-wire of this aircraft.");
|
||||
screen.log.write("Auto Coordination has been disabled as it is not compatible with the fly-by-wire of this aircraft", 1, 0, 0);
|
||||
}
|
||||
|
||||
setprop("/controls/flight/aileron-drives-tiller", 0);
|
||||
}, 0, 0);
|
||||
|
||||
##############
|
||||
# Legacy FCU #
|
||||
##############
|
||||
var APPanel = {
|
||||
APDisc: func() {
|
||||
fcu.FCUController.APDisc();
|
||||
|
@ -638,149 +585,4 @@ var APPanel = {
|
|||
},
|
||||
};
|
||||
|
||||
var resetView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 360;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", -14.6, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var autopilotView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 341.7;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", -16.4, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var overheadView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 348;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 105.8, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", 65.25, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0,0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.12, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var pedestalView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 315;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", -46.3, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var lightsView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 329;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", 17.533, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setprop("/systems/acconfig/libraries-loaded", 1);
|
||||
|
|
|
@ -4,8 +4,11 @@
|
|||
# Anything that says Temp is set by another file to avoid multiple getValue calls
|
||||
# Usage Example: pts.Class.SubClass.node.getValue()
|
||||
|
||||
var Acconfig = {
|
||||
running: props.globals.getNode("/systems/acconfig/autoconfig-running"),
|
||||
};
|
||||
|
||||
var APU = {
|
||||
masterSw: props.globals.getNode("/controls/apu/master"),
|
||||
rpm: props.globals.getNode("/engines/engine[2]/n1"),
|
||||
};
|
||||
|
||||
|
@ -22,17 +25,35 @@ var Controls = {
|
|||
cutoffSw: [props.globals.getNode("/controls/engines/engine[0]/cutoff-switch"), props.globals.getNode("/controls/engines/engine[1]/cutoff-switch")],
|
||||
firePb: [props.globals.getNode("/controls/engines/engine[0]/fire-btn"), props.globals.getNode("/controls/engines/engine[1]/fire-btn")],
|
||||
throttle: [props.globals.getNode("/controls/engines/engine[0]/throttle"), props.globals.getNode("/controls/engines/engine[1]/throttle")],
|
||||
throttleFdm: [props.globals.getNode("/controls/engines/engine[0]/throttle-fdm"), props.globals.getNode("/controls/engines/engine[1]/throttle-fdm")],
|
||||
throttleLever: [props.globals.getNode("/controls/engines/engine[0]/throttle-lever"), props.globals.getNode("/controls/engines/engine[1]/throttle-lever")],
|
||||
throttleOutput: [props.globals.getNode("/controls/engines/engine[0]/throttle-output"), props.globals.getNode("/controls/engines/engine[1]/throttle-output")],
|
||||
throttlePos: [props.globals.getNode("/controls/engines/engine[0]/throttle-pos"), props.globals.getNode("/controls/engines/engine[1]/throttle-pos")],
|
||||
throttleRev: [props.globals.getNode("/controls/engines/engine[0]/throttle-rev"), props.globals.getNode("/controls/engines/engine[1]/throttle-rev")],
|
||||
reverser: [props.globals.getNode("/controls/engines/engine[0]/reverser"), props.globals.getNode("/controls/engines/engine[1]/reverser")],
|
||||
},
|
||||
},
|
||||
Flight: {
|
||||
aileron: props.globals.getNode("/controls/flight/aileron"),
|
||||
aileronDrivesTiller: props.globals.getNode("/controls/flight/aileron-drives-tiller"),
|
||||
autoCoordination: props.globals.getNode("/controls/flight/auto-coordination"),
|
||||
elevatorTrim: props.globals.getNode("/controls/flight/elevator-trim"),
|
||||
flaps: props.globals.getNode("/controls/flight/flaps"),
|
||||
flapsTemp: 0,
|
||||
flapsInput: props.globals.getNode("/controls/flight/flaps-input"),
|
||||
flapsPos: props.globals.getNode("/controls/flight/flaps-pos"),
|
||||
speedbrake: props.globals.getNode("/controls/flight/speedbrake"),
|
||||
speedbrakeArm: props.globals.getNode("/controls/flight/speedbrake-arm"),
|
||||
rudderTrim: props.globals.getNode("/controls/flight/rudder-trim"),
|
||||
},
|
||||
Gear: {
|
||||
brake: [props.globals.getNode("/controls/gear/brake-left"),props.globals.getNode("/controls/gear/brake-right")],
|
||||
gearDown: props.globals.getNode("/controls/gear/gear-down"),
|
||||
parkingBrake: props.globals.getNode("/controls/gear/brake-parking"),
|
||||
chocks: props.globals.getNode("/services/chocks/enable"),
|
||||
},
|
||||
Switches: {
|
||||
annunTest: props.globals.getNode("/controls/switches/annun-test"),
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -42,30 +63,59 @@ var ECAM = {
|
|||
|
||||
var Engines = {
|
||||
Engine: {
|
||||
egtActual: [props.globals.getNode("/engines/engine[0]/egt-actual"), props.globals.getNode("/engines/engine[1]/egt-actual")],
|
||||
eprActual: [props.globals.getNode("/engines/engine[0]/epr-actual"), props.globals.getNode("/engines/engine[1]/epr-actual")],
|
||||
fuelFlow: [props.globals.getNode("/engines/engine[0]/fuel-flow_actual"), props.globals.getNode("/engines/engine[1]/fuel-flow_actual")],
|
||||
n1Actual: [props.globals.getNode("/engines/engine[0]/n1-actual"), props.globals.getNode("/engines/engine[1]/n1-actual")],
|
||||
n2Actual: [props.globals.getNode("/engines/engine[0]/n2-actual"), props.globals.getNode("/engines/engine[1]/n2-actual")],
|
||||
oilPsi: [props.globals.getNode("/engines/engine[0]/oil-psi-actual"), props.globals.getNode("/engines/engine[1]/oil-psi-actual")],
|
||||
thrust: [props.globals.getNode("/engines/engine[0]/thrust-lb"), props.globals.getNode("/engines/engine[1]/thrust-lb")],
|
||||
reverser: [props.globals.getNode("/engines/engine[0]/reverser-pos-norm"), props.globals.getNode("/engines/engine[1]/reverser-pos-norm")],
|
||||
state: [props.globals.getNode("/engines/engine[0]/state"), props.globals.getNode("/engines/engine[1]/state")],
|
||||
},
|
||||
};
|
||||
|
||||
var Environment = {
|
||||
magVar: props.globals.getNode("/environment/magnetic-variation-deg"),
|
||||
tempDegC: props.globals.getNode("/environment/temperature-degc"),
|
||||
windFromHdg: props.globals.getNode("/environment/wind-from-heading-deg"),
|
||||
windSpeedKt: props.globals.getNode("/environment/wind-speed-kt"),
|
||||
};
|
||||
|
||||
var Fdm = {
|
||||
JSBsim: {
|
||||
Aero: {
|
||||
alpha: props.globals.getNode("/fdm/jsbsim/aero/alpha-deg"),
|
||||
},
|
||||
Fcs: {
|
||||
brake: [props.globals.getNode("/fdm/jsbsim/fcs/left-brake-cmd-norm"),props.globals.getNode("/fdm/jsbsim/fcs/right-brake-cmd-norm")],
|
||||
flapDeg: props.globals.getNode("/fdm/jsbsim/fcs/flap-pos-deg"),
|
||||
slatDeg: props.globals.getNode("/fdm/jsbsim/fcs/slat-pos-deg"),
|
||||
slatLocked: props.globals.getNode("/fdm/jsbsim/fcs/slat-locked"),
|
||||
},
|
||||
Fbw: {
|
||||
aileron: props.globals.getNode("/fdm/jsbsim/fbw/aileron-sidestick"),
|
||||
elevator: props.globals.getNode("/fdm/jsbsim/fbw/elevator-sidestick"),
|
||||
},
|
||||
Hydraulics: {
|
||||
ElevatorTrim: {
|
||||
cmdDeg: props.globals.getNode("/fdm/jsbsim/hydraulics/elevator-trim/cmd-deg"),
|
||||
},
|
||||
Rudder: {
|
||||
trimDeg: props.globals.getNode("/fdm/jsbsim/hydraulics/rudder/trim-deg"),
|
||||
},
|
||||
},
|
||||
Inertia: {
|
||||
weightLbs: props.globals.getNode("/fdm/jsbsim/inertia/weight-lbs"),
|
||||
},
|
||||
Position: {
|
||||
wow: props.globals.getNode("/fdm/jsbsim/position/wow"),
|
||||
},
|
||||
Propulsion: {
|
||||
tatC: props.globals.getNode("/fdm/jsbsim/propulsion/tat-c"),
|
||||
Engine: {
|
||||
fuelUsed: [props.globals.getNode("/fdm/jsbsim/propulsion/engine[0]/fuel-used-lbs"), props.globals.getNode("/fdm/jsbsim/propulsion/engine[1]/fuel-used-lbs")],
|
||||
reverserAngle: [props.globals.getNode("/fdm/jsbsim/propulsion/engine[0]/reverser-angle-rad"), props.globals.getNode("/fdm/jsbsim/propulsion/engine[1]/reverser-angle-rad")],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -79,14 +129,15 @@ var FMGC = {
|
|||
|
||||
var Gear = {
|
||||
compression: [props.globals.getNode("/gear/gear[0]/compression-norm"), props.globals.getNode("/gear/gear[1]/compression-norm"), props.globals.getNode("/gear/gear[2]/compression-norm")],
|
||||
wow: [props.globals.getNode("/gear/gear[0]/wow"), props.globals.getNode("/gear/gear[1]/wow"), props.globals.getNode("/gear/gear[2]/wow")],
|
||||
position: [props.globals.getNode("/gear/gear[0]/position-norm"), props.globals.getNode("/gear/gear[1]/position-norm"), props.globals.getNode("/gear/gear[2]/position-norm")],
|
||||
rollspeed: [props.globals.getNode("/gear/gear[0]/rollspeed-ms"), props.globals.getNode("/gear/gear[1]/rollspeed-ms"), props.globals.getNode("/gear/gear[2]/rollspeed-ms")],
|
||||
wow: [props.globals.getNode("/gear/gear[0]/wow"), props.globals.getNode("/gear/gear[1]/wow"), props.globals.getNode("/gear/gear[2]/wow")],
|
||||
};
|
||||
|
||||
var Instrumentation = {
|
||||
AirspeedIndicator: {
|
||||
indicatedSpdKt: props.globals.getNode("/instrumentation/airspeed-indicator/indicated-speed-kt"),
|
||||
indicatedMach: props.globals.getNode("/instrumentation/airspeed-indicator/indicated-mach"),
|
||||
},
|
||||
Altimeter: {
|
||||
indicatedFt: props.globals.getNode("/instrumentation/altimeter[0]/indicated-altitude-ft"),
|
||||
|
@ -94,6 +145,10 @@ var Instrumentation = {
|
|||
settingInhg: props.globals.getNode("/instrumentation/altimeter[0]/setting-inhg"),
|
||||
std: props.globals.getNode("/instrumentation/altimeter[0]/std"),
|
||||
},
|
||||
Clock: {
|
||||
indicatedString: props.globals.getNode("/instrumentation/clock/indicated-string"),
|
||||
indicatedStringShort: props.globals.getNode("/instrumentation/clock/indicated-short-string"),
|
||||
},
|
||||
Efis: {
|
||||
Inputs: {
|
||||
arpt: [props.globals.initNode("/instrumentation/efis[0]/inputs/arpt", 0, "BOOL"), props.globals.initNode("/instrumentation/efis[1]/inputs/arpt", 0, "BOOL")],
|
||||
|
@ -112,6 +167,17 @@ var Instrumentation = {
|
|||
pnlModeNum: [props.globals.initNode("/instrumentation/efis[0]/mfd/pnl_mode-num", 2, "INT"), props.globals.initNode("/instrumentation/efis[1]/mfd/pnl_mode-num", 2, "INT")],
|
||||
},
|
||||
},
|
||||
MKVII: {
|
||||
Inputs: {
|
||||
Discretes: {
|
||||
flap3Override: props.globals.getNode("/instrumentation/mk-viii/inputs/discretes/momentary-flap3-override"),
|
||||
},
|
||||
},
|
||||
},
|
||||
Nav: {
|
||||
gsDeflection: props.globals.getNode("/instrumentation/nav[0]/gs-needle-deflection-norm"),
|
||||
locDeflection: props.globals.getNode("/instrumentation/nav[0]/heading-needle-deflection-norm"),
|
||||
},
|
||||
TCAS: {
|
||||
Inputs: {
|
||||
mode: props.globals.getNode("/instrumentation/tcas/inputs/mode"),
|
||||
|
@ -137,16 +203,42 @@ var Position = {
|
|||
|
||||
var Sim = {
|
||||
aero: props.globals.getNode("/sim/aero"),
|
||||
Input: {
|
||||
Selected: {
|
||||
engine: [props.globals.getNode("/sim/input/selected/engine[0]", 1),props.globals.getNode("/sim/input/selected/engine[1]", 1)],
|
||||
}
|
||||
},
|
||||
Multiplay: {
|
||||
online: props.globals.getNode("/sim/multiplay/online"),
|
||||
},
|
||||
pause: props.globals.getNode("/sim/freeze/master"),
|
||||
replayState: props.globals.getNode("/sim/freeze/replay-state"),
|
||||
Replay: {
|
||||
replayActive: props.globals.getNode("/sim/replay/replay-state"),
|
||||
},
|
||||
Time: {
|
||||
deltaRealtimeSec: props.globals.getNode("/sim/time/delta-realtime-sec"),
|
||||
elapsedSec: props.globals.getNode("/sim/time/elapsed-sec"),
|
||||
UTC: {
|
||||
day: props.globals.getNode("/sim/time/utc/day"),
|
||||
month: props.globals.getNode("/sim/time/utc/month"),
|
||||
year: props.globals.getNode("/sim/time/utc/year"),
|
||||
},
|
||||
},
|
||||
Version: props.globals.getNode("/sim/version/flightgear"),
|
||||
};
|
||||
|
||||
var Systems = {
|
||||
Thrust: {
|
||||
engOut: props.globals.getNode("/systems/thrust/eng-out"),
|
||||
state: [props.globals.getNode("/systems/thrust/state1"), props.globals.getNode("/systems/thrust/state2")],
|
||||
},
|
||||
};
|
||||
|
||||
var Velocities = {
|
||||
airspeed: props.globals.getNode("/velocities/airspeed-kt"),
|
||||
groundspeed: props.globals.getNode("/velocities/groundspeed-kt"),
|
||||
mach: props.globals.getNode("/velocities/mach"),
|
||||
};
|
||||
|
||||
setprop("/systems/acconfig/property-tree-setup-loaded", 1);
|
||||
|
|
|
@ -11,16 +11,16 @@ var incStep = 1;
|
|||
var viewName = "XX";
|
||||
|
||||
var fovZoom = func(d) {
|
||||
viewName = getprop("sim/current-view/name");
|
||||
canChangeZOffset = getprop("sim/current-view/type") == "lookat" and viewName != "Tower View" and viewName != "Tower View AGL" and viewName != "Fly-By View" and viewName != "Chase View" and viewName != "Chase View Without Yaw" and viewName != "Walk View" and viewName != "Walker Orbit View";
|
||||
viewName = getprop("/sim/current-view/name");
|
||||
canChangeZOffset = getprop("/sim/current-view/type") == "lookat" and viewName != "Tower View" and viewName != "Tower View AGL" and viewName != "Fly-By View" and viewName != "Chase View" and viewName != "Chase View Without Yaw" and viewName != "Walk View" and viewName != "Walker Orbit View";
|
||||
|
||||
if (getprop("sim/current-view/z-offset-m") <= -20) {
|
||||
if (getprop("/sim/current-view/z-offset-m") <= -20) {
|
||||
decStep = -2;
|
||||
} else {
|
||||
decStep = -1;
|
||||
}
|
||||
|
||||
if (getprop("sim/current-view/z-offset-m") < -20) { # Not a typo, the conditions are different
|
||||
if (getprop("/sim/current-view/z-offset-m") < -20) { # Not a typo, the conditions are different
|
||||
incStep = 2;
|
||||
} else {
|
||||
incStep = 1;
|
||||
|
@ -28,11 +28,11 @@ var fovZoom = func(d) {
|
|||
|
||||
if (d == -1) {
|
||||
if (canChangeZOffset) {
|
||||
distance = getprop("sim/current-view/z-offset-m");
|
||||
min_dist = getprop("sim/current-view/z-offset-min-m");
|
||||
distance = getprop("/sim/current-view/z-offset-m");
|
||||
min_dist = getprop("/sim/current-view/z-offset-min-m");
|
||||
|
||||
distance = math.round(std.min(-min_dist, distance + incStep) / incStep, 0.1) * incStep;
|
||||
setprop("sim/current-view/z-offset-m", distance);
|
||||
setprop("/sim/current-view/z-offset-m", distance);
|
||||
|
||||
gui.popupTip(sprintf("%d meters", abs(distance)));
|
||||
} else {
|
||||
|
@ -40,11 +40,11 @@ var fovZoom = func(d) {
|
|||
}
|
||||
} else if (d == 1) {
|
||||
if (canChangeZOffset) {
|
||||
distance = getprop("sim/current-view/z-offset-m");
|
||||
max_dist = getprop("sim/current-view/z-offset-max-m");
|
||||
distance = getprop("/sim/current-view/z-offset-m");
|
||||
max_dist = getprop("/sim/current-view/z-offset-max-m");
|
||||
|
||||
distance = math.round(std.max(-max_dist, distance + decStep) / decStep, 0.1) * decStep;
|
||||
setprop("sim/current-view/z-offset-m", distance);
|
||||
setprop("/sim/current-view/z-offset-m", distance);
|
||||
|
||||
gui.popupTip(sprintf("%d meters", abs(distance)));
|
||||
} else {
|
||||
|
@ -52,11 +52,11 @@ var fovZoom = func(d) {
|
|||
}
|
||||
} else if (d == 0) {
|
||||
if (canChangeZOffset) {
|
||||
setprop("sim/current-view/z-offset-m", getprop("sim/current-view/z-offset-default") * -1);
|
||||
gui.popupTip(sprintf("%d meters", getprop("sim/current-view/z-offset-default")));
|
||||
setprop("/sim/current-view/z-offset-m", getprop("/sim/current-view/z-offset-default") * -1);
|
||||
gui.popupTip(sprintf("%d meters", getprop("/sim/current-view/z-offset-default")));
|
||||
} else {
|
||||
setprop("sim/current-view/field-of-view", getprop("sim/view/config/default-field-of-view-deg"));
|
||||
gui.popupTip(sprintf("FOV: %.1f", getprop("sim/current-view/field-of-view")))
|
||||
setprop("/sim/current-view/field-of-view", getprop("/sim/view/config/default-field-of-view-deg"));
|
||||
gui.popupTip(sprintf("FOV: %.1f", getprop("/sim/current-view/field-of-view")))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
var isNoStar = [0, 0];
|
||||
var isNoStar = [0, 0, 0];
|
||||
var isNoTransArr = [0, 0, 0];
|
||||
var isNoVia = [0, 0, 0];
|
||||
|
||||
var version = nil;
|
||||
|
||||
var arrivalPage = {
|
||||
title: [nil, nil, nil],
|
||||
|
@ -31,17 +35,20 @@ var arrivalPage = {
|
|||
selectedVIA: nil,
|
||||
selectedSTAR: nil,
|
||||
selectedTransition: nil,
|
||||
stars: nil,
|
||||
transitions: nil,
|
||||
vias: nil,
|
||||
stars: [],
|
||||
transitions: [],
|
||||
vias: [],
|
||||
computer: nil,
|
||||
enableScrollApproach: 0,
|
||||
enableScrollStars: 0,
|
||||
enableScrollVias: 0,
|
||||
scrollApproach: 0,
|
||||
scrollStars: 0,
|
||||
activePage: 0, # runways, stars, trans
|
||||
hasPressNoTrans: 0, # temporary
|
||||
scrollVias: 0,
|
||||
activePage: 0, # runways, stars, vias
|
||||
oldPage: 0,
|
||||
_approaches: nil,
|
||||
_vias: nil,
|
||||
_stars: nil,
|
||||
_transitions: nil,
|
||||
new: func(icao, computer) {
|
||||
|
@ -56,39 +63,78 @@ var arrivalPage = {
|
|||
return nil;
|
||||
},
|
||||
reset: func() {
|
||||
isNoStar[me.computer] = 0;
|
||||
me.selectedApproach = nil;
|
||||
me.selectedSTAR = nil;
|
||||
me.hasPressNoTrans = 0;
|
||||
me.selectedTransition = nil;
|
||||
me.selectedVIA = nil;
|
||||
isNoStar[me.computer] = 0;
|
||||
isNoTransArr[me.computer] = 0;
|
||||
isNoVia[me.computer] = 0;
|
||||
},
|
||||
_setupFirstTime: func() {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.flightplans[2].approach != nil) {
|
||||
me.selectedApproach = fmgc.flightPlanController.flightplans[2].approach;
|
||||
|
||||
version = pts.Sim.Version.getValue();
|
||||
if (version == "2020.2.0" or version == "2020.2.1" or version == "2020.3.0") {
|
||||
if (fmgc.flightPlanController.flightplans[2].approach_trans != nil) {
|
||||
me.selectedVIA = fmgc.flightPlanController.flightplans[2].approach_trans;
|
||||
} elsif (isNoVia[2] == 1) {
|
||||
me.selectedVIA = "NO VIA";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (fmgc.flightPlanController.flightplans[2].star != nil) {
|
||||
me.selectedSTAR = fmgc.flightPlanController.flightplans[2].star;
|
||||
isNoStar[me.computer] = 0;
|
||||
} elsif (isNoStar[me.computer] == 1) {
|
||||
isNoStar[2] = 0;
|
||||
} elsif (isNoStar[2] == 1) {
|
||||
me.selectedSTAR = "NO STAR";
|
||||
me.hasPressNoTrans = 1;
|
||||
}
|
||||
|
||||
if (isNoTransArr[2]) {
|
||||
me.selectedTransition = "NO TRANS";
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].star != nil) {
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[2].star_trans;
|
||||
}
|
||||
} else {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].approach != nil) {
|
||||
me.selectedApproach = fmgc.flightPlanController.flightplans[me.computer].approach;
|
||||
version = pts.Sim.Version.getValue();
|
||||
if (version == "2020.2.0" or version == "2020.2.1" or version == "2020.3.0") {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].approach_trans != nil) {
|
||||
me.selectedVIA = fmgc.flightPlanController.flightplans[me.computer].approach_trans;
|
||||
} elsif (isNoVia[me.computer] == 1) {
|
||||
me.selectedVIA = "NO VIA";
|
||||
}
|
||||
}
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].approach != nil) {
|
||||
me.selectedApproach = fmgc.flightPlanController.flightplans[2].approach;
|
||||
version = pts.Sim.Version.getValue();
|
||||
if (version == "2020.2.0" or version == "2020.2.1" or version == "2020.3.0") {
|
||||
if (fmgc.flightPlanController.flightplans[2].approach_trans != nil) {
|
||||
me.selectedVIA = fmgc.flightPlanController.flightplans[2].approach_trans;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].star != nil) {
|
||||
me.selectedSTAR = fmgc.flightPlanController.flightplans[me.computer].star;
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[me.computer].star_trans;
|
||||
isNoStar[me.computer] = 0;
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].star != nil) {
|
||||
me.selectedSTAR = fmgc.flightPlanController.flightplans[2].star;
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[2].star_trans;
|
||||
isNoStar[me.computer] = 0;
|
||||
isNoStar[2] = 0;
|
||||
} elsif (isNoStar[me.computer] == 1) {
|
||||
me.selectedSTAR = "NO STAR";
|
||||
me.hasPressNoTrans = 1;
|
||||
}
|
||||
|
||||
if (isNoTransArr[me.computer] or isNoTransArr[2]) {
|
||||
me.selectedTransition = "NO TRANS";
|
||||
} elsif (fmgc.flightPlanController.flightplans[me.computer].star != nil) {
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[me.computer].star_trans;
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].star != nil) {
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[2].star_trans;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -99,8 +145,8 @@ var arrivalPage = {
|
|||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
me.L6 = [" RETURN END", nil, "wht"];
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer] or me.activePage == 2) {
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
} else {
|
||||
me.L6 = [" F-PLN", " TMPY", "yel"];
|
||||
me.arrowsColour[0][5] = "yel";
|
||||
|
@ -108,11 +154,17 @@ var arrivalPage = {
|
|||
|
||||
if (me.activePage == 0) {
|
||||
me.updateApproaches();
|
||||
} else {
|
||||
} elsif (me.activePage == 1) {
|
||||
me.updateSTARs();
|
||||
me.updateTransitions();
|
||||
} else {
|
||||
me.updateVIAs();
|
||||
}
|
||||
|
||||
me.checkPageType();
|
||||
|
||||
me.updateActiveApproach();
|
||||
me.updateActiveVIAs();
|
||||
me.updateActiveSTARs();
|
||||
me.updateActiveTransitions();
|
||||
},
|
||||
|
@ -143,101 +195,148 @@ var arrivalPage = {
|
|||
me._clearPage();
|
||||
me._setupPageWithData();
|
||||
},
|
||||
|
||||
# Functions to populate top row
|
||||
updateActiveApproach: func() {
|
||||
if (me.apprIsRwyFlag) {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].destination_runway != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[me.computer].destination_runway.id, " APPR", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].destination_runway != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[2].destination_runway.id, " APPR", "grn"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].destination_runway != nil and fmgc.flightPlanController.flightplans[2].destination_runway.id == me.selectedApproach.id) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[2].destination_runway.id, " APPR", "yel"];
|
||||
} else {
|
||||
me.L1 = ["---", " APPR", "wht"];
|
||||
me.L1 = ["-----", " APPR", "wht"];
|
||||
}
|
||||
} else {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].destination_runway != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[me.computer].destination_runway.id, " APPR", "yel"];
|
||||
if (fmgc.flightPlanController.flightplans[2].destination_runway != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[2].destination_runway.id, " APPR", "grn"];
|
||||
} else {
|
||||
me.L1 = ["---", " APPR", "wht"];
|
||||
me.L1 = ["-----", " APPR", "wht"];
|
||||
}
|
||||
}
|
||||
} elsif (me.selectedApproach != nil) {
|
||||
if (fmgc.flightPlanController.flightplans[2].approach != nil) {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].approach != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[me.computer].approach.id, " APPR", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].approach.id == me.selectedApproach.id) {
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].approach != nil and fmgc.flightPlanController.flightplans[2].approach.id == me.selectedApproach.id) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[2].approach.id, " APPR", "yel"];
|
||||
} else {
|
||||
me.L1 = ["-----", " APPR", "wht"];
|
||||
}
|
||||
} else {
|
||||
if (fmgc.flightPlanController.flightplans[2].approach != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[2].approach.id, " APPR", "grn"];
|
||||
} else {
|
||||
me.L1 = ["---", " APPR", "wht"];
|
||||
me.L1 = ["-----", " APPR", "wht"];
|
||||
}
|
||||
} elsif (fmgc.flightPlanController.flightplans[me.computer].approach != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[me.computer].approach.id, " APPR", "yel"];
|
||||
} else {
|
||||
me.L1 = ["---", " APPR", "wht"];
|
||||
}
|
||||
} else {
|
||||
me.L1 = ["---", " APPR", "wht"];
|
||||
me.L1 = ["-----", " APPR", "wht"];
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
|
||||
updateActiveVIAs: func() {
|
||||
version = pts.Sim.Version.getValue();
|
||||
if (version != "2020.2.0" and version != "2020.2.1" and version != "2020.3.0") { return; }
|
||||
|
||||
if (me.selectedVIA == "NO VIA") {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
me.C1 = ["NONE", "VIA", "grn"];
|
||||
} else {
|
||||
me.C1 = ["NONE", "VIA", "yel"];
|
||||
}
|
||||
} elsif (me.selectedVIA != nil) {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].approach_trans != nil) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[me.computer].approach_trans.id, "VIA", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].approach_trans != nil and fmgc.flightPlanController.flightplans[2].approach_trans.id == me.selectedVIA.id) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[2].approach_trans.id, "VIA", "yel"];
|
||||
} else {
|
||||
me.C1 = ["-------", "VIA", "wht"];
|
||||
}
|
||||
} else {
|
||||
if (fmgc.flightPlanController.flightplans[2].approach_trans != nil) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[2].approach_trans.id, "VIA", "grn"];
|
||||
} else {
|
||||
me.C1 = ["-------", "VIA", "wht"];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
me.C1 = ["-------", "VIA", "wht"];
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
|
||||
updateActiveSTARs: func() {
|
||||
if (me.selectedSTAR == "NO STAR") {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
me.C1 = ["NONE", "STAR", "grn"];
|
||||
me.R1 = ["NONE", "STAR ", "grn"];
|
||||
} else {
|
||||
me.C1 = ["NONE", "STAR", "yel"];
|
||||
me.R1 = ["NONE", "STAR ", "yel"];
|
||||
}
|
||||
} elsif (me.selectedSTAR != nil) {
|
||||
if (fmgc.flightPlanController.flightplans[2].star != nil) {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].star != nil) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[me.computer].star.id, "STAR", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].star.id == me.selectedSTAR.id) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[2].star.id, "STAR", "grn"];
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[me.computer].star.id, "STAR ", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].star != nil and fmgc.flightPlanController.flightplans[2].star.id == me.selectedSTAR.id) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[2].star.id, "STAR ", "yel"];
|
||||
} else {
|
||||
me.C1 = ["------- ", "STAR", "wht"];
|
||||
}
|
||||
} elsif (fmgc.flightPlanController.flightplans[me.computer].star.id != nil) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[me.computer].star.id, "STAR", "yel"];
|
||||
} else {
|
||||
me.C1 = ["------- ", "STAR", "wht"];
|
||||
me.R1 = ["-------", "STAR ", "wht"];
|
||||
}
|
||||
} else {
|
||||
me.C1 = ["------- ", "STAR", "wht"];
|
||||
if (fmgc.flightPlanController.flightplans[2].star != nil) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[2].star.id, "STAR ", "grn"];
|
||||
} else {
|
||||
me.R1 = ["-------", "STAR ", "wht"];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
me.R1 = ["-------", "STAR ", "wht"];
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
|
||||
updateActiveTransitions: func() {
|
||||
if (!me.hasPressNoTrans) {
|
||||
if (me.selectedTransition != nil) {
|
||||
if (fmgc.flightPlanController.flightplans[2].star_trans != nil) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].star_trans != nil) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[me.computer].star_trans.id, "TRANS", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].star_trans.id == me.selectedTransition.id) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[2].star_trans.id, "TRANS", "grn"];
|
||||
} else {
|
||||
me.R1 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
} elsif (fmgc.flightPlanController.flightplans[me.computer].star_trans != nil) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[me.computer].star_trans.id, "STAR", "yel"];
|
||||
} else {
|
||||
me.R1 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
} else {
|
||||
me.R1 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
} else {
|
||||
if (me.selectedTransition == "NO TRANS") {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
me.R1 = ["NONE", "TRANS ", "grn"];
|
||||
me.R2 = ["NONE", "TRANS ", "grn"];
|
||||
} else {
|
||||
me.R1 = ["NONE", "TRANS ", "yel"];
|
||||
me.R2 = ["NONE", "TRANS ", "yel"];
|
||||
}
|
||||
} else {
|
||||
if (me.selectedTransition != nil) {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].star_trans != nil) {
|
||||
me.R2 = [fmgc.flightPlanController.flightplans[me.computer].star_trans.id, "TRANS ", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].star_trans != nil and fmgc.flightPlanController.flightplans[2].star_trans.id == me.selectedTransition.id) {
|
||||
me.R2 = [fmgc.flightPlanController.flightplans[2].star_trans.id, "TRANS ", "yel"];
|
||||
} else {
|
||||
me.R2 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
} else {
|
||||
if (fmgc.flightPlanController.flightplans[2].star_trans != nil) {
|
||||
me.R2 = [fmgc.flightPlanController.flightplans[2].star_trans.id, "TRANS ", "grn"];
|
||||
} else {
|
||||
me.R2 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
me.R2 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
|
||||
updateApproaches: func() {
|
||||
me.apprIsRwyFlag = 0;
|
||||
if (me.arrAirport == nil) {
|
||||
me.arrAirport = findAirportsByICAO(left(me.id, 4));
|
||||
}
|
||||
|
||||
me.approaches = [];
|
||||
me._approaches = nil;
|
||||
|
||||
me._approaches = me.arrAirport[0].getApproachList();
|
||||
me.approaches = sort(me._approaches,func(a,b) cmp(a,b));
|
||||
if (me.approaches == nil or size(me.approaches) == 0) {
|
||||
|
@ -353,6 +452,10 @@ var arrivalPage = {
|
|||
if (me.arrAirport == nil) {
|
||||
me.arrAirport = findAirportsByICAO(left(me.id, 4));
|
||||
}
|
||||
|
||||
me.stars = [];
|
||||
me._stars = nil;
|
||||
|
||||
if (me.selectedApproach != nil) {
|
||||
me._stars = me.arrAirport[0].stars(me.selectedApproach.runways[0]);
|
||||
} else {
|
||||
|
@ -367,18 +470,8 @@ var arrivalPage = {
|
|||
}
|
||||
|
||||
if (size(me.stars) >= 1) {
|
||||
me.L2 = [" " ~ me.stars[0 + me.scrollStars], "STARS", "blu"];
|
||||
me.L3 = [" " ~ me.stars[0 + me.scrollStars], "STARS", "blu"];
|
||||
if (me.stars[0 + me.scrollStars] != me.selectedSTAR) {
|
||||
me.arrowsMatrix[0][1] = 1;
|
||||
me.arrowsColour[0][1] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[0][1] = 0;
|
||||
me.arrowsColour[0][1] = "ack";
|
||||
}
|
||||
}
|
||||
if (size(me.stars) >= 2) {
|
||||
me.L3 = [" " ~ me.stars[1 + me.scrollStars], nil, "blu"];
|
||||
if (me.stars[1 + me.scrollStars] != me.selectedSTAR) {
|
||||
me.arrowsMatrix[0][2] = 1;
|
||||
me.arrowsColour[0][2] = "blu";
|
||||
} else {
|
||||
|
@ -386,9 +479,9 @@ var arrivalPage = {
|
|||
me.arrowsColour[0][2] = "ack";
|
||||
}
|
||||
}
|
||||
if (size(me.stars) >= 3) {
|
||||
me.L4 = [" " ~ me.stars[2 + me.scrollStars], nil, "blu"];
|
||||
if (me.stars[2 + me.scrollStars] != me.selectedSTAR) {
|
||||
if (size(me.stars) >= 2) {
|
||||
me.L4 = [" " ~ me.stars[1 + me.scrollStars], nil, "blu"];
|
||||
if (me.stars[1 + me.scrollStars] != me.selectedSTAR) {
|
||||
me.arrowsMatrix[0][3] = 1;
|
||||
me.arrowsColour[0][3] = "blu";
|
||||
} else {
|
||||
|
@ -396,9 +489,9 @@ var arrivalPage = {
|
|||
me.arrowsColour[0][3] = "ack";
|
||||
}
|
||||
}
|
||||
if (size(me.stars) >= 4) {
|
||||
me.L5 = [" " ~ me.stars[3 + me.scrollStars], nil, "blu"];
|
||||
if (me.stars[3 + me.scrollStars] != me.selectedSTAR) {
|
||||
if (size(me.stars) >= 3) {
|
||||
me.L5 = [" " ~ me.stars[2 + me.scrollStars], nil, "blu"];
|
||||
if (me.stars[2 + me.scrollStars] != me.selectedSTAR) {
|
||||
me.arrowsMatrix[0][4] = 1;
|
||||
me.arrowsColour[0][4] = "blu";
|
||||
} else {
|
||||
|
@ -407,21 +500,76 @@ var arrivalPage = {
|
|||
}
|
||||
}
|
||||
|
||||
me.C2 = [nil, "AVAILABLE", "wht"];
|
||||
me.R2 = [nil, "TRANS ", "wht"];
|
||||
me.C3[1] = "AVAILABLE";
|
||||
me.R3[1] = "TRANS ";
|
||||
|
||||
if (size(me.stars) > 4) {
|
||||
if (size(me.stars) > 3) {
|
||||
me.enableScrollStars = 1;
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
updateVIAs: func() {
|
||||
version = pts.Sim.Version.getValue();
|
||||
if (version != "2020.2.0" and version != "2020.2.1" and version != "2020.3.0") { return; }
|
||||
if (me.selectedApproach == nil or me.activePage != 2) {
|
||||
me.clearVias();
|
||||
return;
|
||||
}
|
||||
me.vias = [];
|
||||
me._vias = nil;
|
||||
me._vias = me.selectedApproach.transitions;
|
||||
me.vias = sort(me._vias, func(a,b) cmp(a,b));
|
||||
append(me.vias, "NO VIA");
|
||||
|
||||
if (size(me.vias) >= 1) {
|
||||
me.L2 = [" " ~ me.vias[0 + me.scrollVias], " APP VIAS", "blu"];
|
||||
if (me.vias[0 + me.scrollVias] != me.selectedVIA) {
|
||||
me.arrowsMatrix[0][1] = 1;
|
||||
me.arrowsColour[0][1] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[0][1] = 0;
|
||||
me.arrowsColour[0][1] = "ack";
|
||||
}
|
||||
}
|
||||
if (size(me.vias) >= 2) {
|
||||
me.L3 = [" " ~ me.vias[1 + me.scrollVias], nil, "blu"];
|
||||
if (me.vias[1 + me.scrollVias] != me.selectedVIA) {
|
||||
me.arrowsMatrix[0][2] = 1;
|
||||
me.arrowsColour[0][2] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[0][2] = 0;
|
||||
me.arrowsColour[0][2] = "ack";
|
||||
}
|
||||
}
|
||||
if (size(me.vias) >= 3) {
|
||||
me.L4 = [" " ~ me.vias[2 + me.scrollVias], nil, "blu"];
|
||||
if (me.vias[2 + me.scrollVias] != me.selectedVIA) {
|
||||
me.arrowsMatrix[0][3] = 1;
|
||||
me.arrowsColour[0][3] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[0][3] = 0;
|
||||
me.arrowsColour[0][3] = "ack";
|
||||
}
|
||||
}
|
||||
if (size(me.vias) >= 4) {
|
||||
me.L5 = [" " ~ me.vias[3 + me.scrollVias], nil, "blu"];
|
||||
if (me.vias[3 + me.scrollVias] != me.selectedVIA) {
|
||||
me.arrowsMatrix[0][4] = 1;
|
||||
me.arrowsColour[0][4] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[0][4] = 0;
|
||||
me.arrowsColour[0][4] = "ack";
|
||||
}
|
||||
}
|
||||
|
||||
if (size(me.vias) > 3) {
|
||||
me.enableScrollVias = 1;
|
||||
}
|
||||
},
|
||||
clearTransitions: func() {
|
||||
me.R2 = [nil, "TRANS", "wht"];
|
||||
me.R3 = [nil, "TRANS", "wht"];
|
||||
me.R4 = [nil, "TRANS", "wht"];
|
||||
me.R5 = [nil, "TRANS", "wht"];
|
||||
me.arrowsMatrix[1][1] = 0;
|
||||
me.arrowsColour[1][1] = "ack";
|
||||
me.R3 = [nil, nil, "wht"];
|
||||
me.R4 = [nil, nil, "wht"];
|
||||
me.R5 = [nil, nil, "wht"];
|
||||
me.arrowsMatrix[1][2] = 0;
|
||||
me.arrowsColour[1][2] = "ack";
|
||||
me.arrowsMatrix[1][3] = 0;
|
||||
|
@ -429,67 +577,68 @@ var arrivalPage = {
|
|||
me.arrowsMatrix[1][4] = 0;
|
||||
me.arrowsColour[1][4] = "ack";
|
||||
},
|
||||
clearVias: func() {
|
||||
me.L2 = [nil, nil, "wht"];
|
||||
me.L3 = [nil, nil, "wht"];
|
||||
me.L4 = [nil, nil, "wht"];
|
||||
me.L5 = [nil, nil, "wht"];
|
||||
me.arrowsMatrix[0][1] = 0;
|
||||
me.arrowsColour[0][1] = "ack";
|
||||
me.arrowsMatrix[0][2] = 0;
|
||||
me.arrowsColour[0][2] = "ack";
|
||||
me.arrowsMatrix[0][3] = 0;
|
||||
me.arrowsColour[0][3] = "ack";
|
||||
me.arrowsMatrix[0][4] = 0;
|
||||
me.arrowsColour[0][4] = "ack";
|
||||
if (me.activePage == 2) {
|
||||
me.activePage = me.oldPage;
|
||||
}
|
||||
},
|
||||
updateTransitions: func() {
|
||||
if (me.arrAirport == nil) {
|
||||
me.arrAirport = findAirportsByICAO(left(me.id, 4));
|
||||
}
|
||||
if (me.selectedSTAR == nil) {
|
||||
me.R2 = ["NO TRANS ", "TRANS", "blu"];
|
||||
if (!me.hasPressNoTrans) {
|
||||
me.arrowsMatrix[1][1] = 1;
|
||||
me.arrowsColour[1][1] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[1][1] = 0;
|
||||
me.arrowsColour[1][1] = "ack";
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (me.selectedSTAR == "NO STAR") {
|
||||
|
||||
me.transitions = [];
|
||||
me._transitions = nil;
|
||||
|
||||
me.clearTransitions();
|
||||
if (me.selectedSTAR == nil or me.selectedSTAR == "NO STAR") {
|
||||
append(me.transitions, "NO TRANS");
|
||||
return;
|
||||
}
|
||||
|
||||
if (isghost(me.selectedSTAR)) {
|
||||
me._transitions = me.arrAirport[0].getStar(me.selectedSTAR.id).transitions;
|
||||
} else {
|
||||
me._transitions = me.arrAirport[0].getStar(me.selectedSTAR).transitions;
|
||||
}
|
||||
me.transitions = sort(me._transitions,func(a,b) cmp(a,b));
|
||||
append(me.transitions, "NO TRANS");
|
||||
|
||||
if (size(me.transitions) == 0) {
|
||||
me.R2 = ["NO TRANS ", "TRANS", "blu"];
|
||||
if (!me.hasPressNoTrans) {
|
||||
me.arrowsMatrix[1][1] = 1;
|
||||
me.arrowsColour[1][1] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[1][1] = 0;
|
||||
me.arrowsColour[1][1] = "ack";
|
||||
}
|
||||
} elsif (size(me.transitions) >= 1) {
|
||||
me.R2 = [me.transitions[0] ~ " ", "TRANS", "blu"];
|
||||
if (size(me.transitions) >= 1) {
|
||||
me.R3 = [me.transitions[0] ~ " ", "TRANS", "blu"];
|
||||
if (me.transitions[0] != me.selectedTransition) {
|
||||
me.arrowsMatrix[1][1] = 1;
|
||||
me.arrowsColour[1][1] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[1][1] = 0;
|
||||
me.arrowsColour[1][1] = "ack";
|
||||
}
|
||||
} elsif (size(me.transitions) >= 2) {
|
||||
me.R3 = [me.transitions[1] ~ " ", nil, "blu"];
|
||||
if (me.transitions[1] != me.selectedTransition) {
|
||||
me.arrowsMatrix[1][2] = 1;
|
||||
me.arrowsColour[1][2] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[1][2] = 0;
|
||||
me.arrowsColour[1][2] = "ack";
|
||||
}
|
||||
} elsif (size(me.transitions) >= 3) {
|
||||
me.R4 = [me.transitions[2] ~ " ", nil, "blu"];
|
||||
if (me.transitions[2] != me.selectedTransition) {
|
||||
}
|
||||
if (size(me.transitions) >= 2) {
|
||||
me.R4 = [me.transitions[1] ~ " ", nil, "blu"];
|
||||
if (me.transitions[1] != me.selectedTransition) {
|
||||
me.arrowsMatrix[1][3] = 1;
|
||||
me.arrowsColour[1][3] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[1][3] = 0;
|
||||
me.arrowsColour[1][3] = "ack";
|
||||
}
|
||||
} elsif (size(me.transitions) >= 4) {
|
||||
me.R5 = [me.transitions[3] ~ " ", nil, "blu"];
|
||||
if (me.transitions[3] != me.selectedTransition) {
|
||||
}
|
||||
if (size(me.transitions) >= 3) {
|
||||
me.R5 = [me.transitions[2] ~ " ", nil, "blu"];
|
||||
if (me.transitions[2] != me.selectedTransition) {
|
||||
me.arrowsMatrix[1][4] = 1;
|
||||
me.arrowsColour[1][4] = "blu";
|
||||
} else {
|
||||
|
@ -497,6 +646,9 @@ var arrivalPage = {
|
|||
me.arrowsColour[1][4] = "ack";
|
||||
}
|
||||
}
|
||||
|
||||
# no indication it is scrollable...
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
makeTmpy: func() {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
|
@ -510,6 +662,17 @@ var arrivalPage = {
|
|||
}
|
||||
}
|
||||
},
|
||||
checkPageType: func() {
|
||||
if (me.activePage == 0) {
|
||||
me.L2 = [nil, nil, "wht"];
|
||||
me.arrowsMatrix[0][1] = 0;
|
||||
me.arrowsColour[0][1] = "wht";
|
||||
} elsif (me.activePage == 1) {
|
||||
me.L2 = [" VIAS", " APPR", "wht"];
|
||||
me.arrowsMatrix[0][1] = 1;
|
||||
me.arrowsColour[0][1] = "wht";
|
||||
}
|
||||
},
|
||||
scrollUp: func() {
|
||||
if (me.activePage == 0) {
|
||||
if (me.enableScrollApproach) {
|
||||
|
@ -519,10 +682,10 @@ var arrivalPage = {
|
|||
}
|
||||
me.updateApproaches();
|
||||
}
|
||||
} else {
|
||||
} elsif (me.activePage == 1) {
|
||||
if (me.enableScrollStars) {
|
||||
me.scrollStars += 1;
|
||||
if (me.scrollStars > size(me.stars) - 4) {
|
||||
if (me.scrollStars > size(me.stars) - 3) {
|
||||
me.scrollStars = 0;
|
||||
}
|
||||
me.updateSTARs();
|
||||
|
@ -531,7 +694,15 @@ var arrivalPage = {
|
|||
} else {
|
||||
me.updateTransitions();
|
||||
}
|
||||
me.hasPressNoTrans = 0;
|
||||
}
|
||||
} elsif (me.activePage == 2) {
|
||||
if (me.enableScrollVias) {
|
||||
me.scrollVias += 1;
|
||||
if (me.scrollVias > size(me.vias) - 4) {
|
||||
me.scrollVias = 0;
|
||||
}
|
||||
me.updateActiveVIAs();
|
||||
me.updateVIAs();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -544,11 +715,11 @@ var arrivalPage = {
|
|||
}
|
||||
me.updateApproaches();
|
||||
}
|
||||
} else {
|
||||
} elsif (me.activePage == 1) {
|
||||
if (me.enableScrollStars) {
|
||||
me.scrollStars -= 1;
|
||||
if (me.scrollStars < 0) {
|
||||
me.scrollStars = size(me.stars) - 4;
|
||||
me.scrollStars = size(me.stars) - 3;
|
||||
}
|
||||
me.updateSTARs();
|
||||
if (me.selectedSTAR == nil or me.selectedSTAR == "NO STAR") {
|
||||
|
@ -556,24 +727,53 @@ var arrivalPage = {
|
|||
} else {
|
||||
me.updateTransitions();
|
||||
}
|
||||
me.hasPressNoTrans = 0;
|
||||
}
|
||||
} elsif (me.activePage == 2) {
|
||||
if (me.enableScrollVias) {
|
||||
me.scrollVias -= 1;
|
||||
if (me.scrollVias < 0) {
|
||||
me.scrollVias = size(me.vias) - 4;
|
||||
}
|
||||
me.updateActiveVIAs();
|
||||
me.updateVIAs();
|
||||
}
|
||||
}
|
||||
},
|
||||
scrollLeft: func() {
|
||||
if (me.activePage == 2) { return; }
|
||||
me.activePage = !me.activePage;
|
||||
me.checkPageType();
|
||||
me.updatePage();
|
||||
},
|
||||
scrollRight: func() {
|
||||
if (me.activePage == 2) { return; }
|
||||
me.activePage = !me.activePage;
|
||||
me.checkPageType();
|
||||
me.updatePage();
|
||||
},
|
||||
arrPushbuttonLeft: func(index) {
|
||||
if (me.activePage == 0) {
|
||||
if (size(me.approaches) >= (index - 2) and index != 2) {
|
||||
if (index == 2 and me.activePage == 1 and me.selectedApproach != nil) {
|
||||
version = pts.Sim.Version.getValue();
|
||||
if (version != "2020.2.0" and version != "2020.2.1" and version != "2020.3.0") { return; }
|
||||
me.oldPage = me.activePage;
|
||||
me.activePage = 2;
|
||||
me.updatePage();
|
||||
me.updateVIAs();
|
||||
} elsif (index == 6 and me.activePage == 2) {
|
||||
me.activePage = me.oldPage;
|
||||
me.oldPage = 0;
|
||||
me.updatePage();
|
||||
} elsif (index == 6 and me.activePage != 2) {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
setprop("/MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
|
||||
} else {
|
||||
setprop("/MCDU[" ~ me.computer ~ "]/page", "LATREV");
|
||||
}
|
||||
} elsif (me.activePage == 0 and index != 6) {
|
||||
if (size(me.approaches) >= (index - 2) and index != 2) { # index = 3, size = 1
|
||||
if (!dirToFlag) {
|
||||
me.selectedSTAR = nil;
|
||||
me.hasPressNoTrans = 0;
|
||||
me.selectedVIA = nil;
|
||||
isNoTransArr[me.computer] = 0;
|
||||
isNoStar[me.computer] = 0;
|
||||
me.makeTmpy();
|
||||
if (!me.apprIsRwyFlag) {
|
||||
|
@ -586,21 +786,23 @@ var arrivalPage = {
|
|||
}
|
||||
setprop("FMGC/internal/baro", 99999);
|
||||
setprop("FMGC/internal/radio", 99999);
|
||||
setprop("FMGC/internal/radio-no", 0);
|
||||
me.updateActiveApproach();
|
||||
fmgc.FMGCInternal.radioNo = 0;
|
||||
me.updateApproaches();
|
||||
me.updatePage();
|
||||
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
||||
me.scrollRight();
|
||||
me.checkPageType();
|
||||
} else {
|
||||
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
if (size(me.stars) >= (index - 2)) {
|
||||
} elsif (me.activePage == 1 and index != 6) {
|
||||
if (size(me.stars) >= (index - 2) and index != 2) {
|
||||
if (!dirToFlag) {
|
||||
me.selectedSTAR = me.stars[index - 2 + me.scrollStars];
|
||||
me.selectedTransition = nil;
|
||||
me.selectedSTAR = me.stars[index - 3 + me.scrollStars];
|
||||
me.makeTmpy();
|
||||
if (me.selectedSTAR != "NO STAR") {
|
||||
isNoStar[me.computer] = 0;
|
||||
|
@ -612,15 +814,14 @@ var arrivalPage = {
|
|||
fmgc.flightPlanController.insertNOSTAR(me.computer);
|
||||
}
|
||||
}
|
||||
me.updateActiveSTARs();
|
||||
me.updateSTARs();
|
||||
if (me.selectedSTAR != "NO STAR") {
|
||||
me.hasPressNoTrans = 0;
|
||||
me.updateTransitions();
|
||||
isNoTransArr[me.computer] = 0;
|
||||
} else {
|
||||
me.hasPressNoTrans = 1;
|
||||
isNoTransArr[me.computer] = 1;
|
||||
me.selectedTransition = "NO TRANS";
|
||||
}
|
||||
me.updateActiveTransitions();
|
||||
me.updatePage();
|
||||
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
||||
} else {
|
||||
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
||||
|
@ -628,24 +829,44 @@ var arrivalPage = {
|
|||
} else {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
},
|
||||
arrPushbuttonRight: func(index) {
|
||||
if (index == 2 and size(me.transitions) == 0) {
|
||||
} elsif (me.activePage == 2 and index != 6) {
|
||||
if (size(me.vias) >= (index - 1)) { # different!!
|
||||
if (!dirToFlag) {
|
||||
me.hasPressNoTrans = 1;
|
||||
me.updateActiveTransitions();
|
||||
me.updateTransitions();
|
||||
me.selectedVIA = me.vias[index - 2 + me.scrollVias];
|
||||
me.makeTmpy();
|
||||
if (me.selectedVIA != "NO VIA") {
|
||||
isNoVia[me.computer] = 0;
|
||||
fmgc.flightPlanController.flightplans[me.computer].approach_trans = me.selectedVIA;
|
||||
} else {
|
||||
isNoVia[me.computer] = 1;
|
||||
fmgc.flightPlanController.flightplans[me.computer].approach_trans = nil;
|
||||
}
|
||||
me.updateVIAs();
|
||||
me.updatePage();
|
||||
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
||||
} else {
|
||||
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
||||
}
|
||||
} elsif (size(me.transitions) >= (index - 1)) {
|
||||
} else {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
}
|
||||
},
|
||||
arrPushbuttonRight: func(index) {
|
||||
if (size(me.transitions) >= (index - 2)) {
|
||||
if (!dirToFlag) {
|
||||
me.selectedTransition = me.transitions[index - 2];
|
||||
me.selectedTransition = me.transitions[index - 3];
|
||||
me.makeTmpy();
|
||||
if (me.selectedTransition != "NO TRANS") {
|
||||
isNoTransArr[me.computer] = 0;
|
||||
fmgc.flightPlanController.flightplans[me.computer].star_trans = me.selectedTransition;
|
||||
me.updateActiveTransitions();
|
||||
me.updateTransitions();
|
||||
} else {
|
||||
isNoTransArr[me.computer] = 1;
|
||||
fmgc.flightPlanController.flightplans[me.computer].star_trans = nil;
|
||||
}
|
||||
me.updatePage();
|
||||
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
||||
} else {
|
||||
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
||||
|
|
33
Nasal/MCDU/ATC.nas
Normal file
|
@ -0,0 +1,33 @@
|
|||
var latReq = {
|
||||
title: [nil, nil, nil],
|
||||
titleColour: "wht",
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
L2: [nil, nil, "ack"],
|
||||
L3: [nil, nil, "ack"],
|
||||
L4: [nil, nil, "ack"],
|
||||
L5: [nil, nil, "ack"],
|
||||
L6: [nil, nil, "ack"],
|
||||
R1: [nil, nil, "ack"],
|
||||
R2: [nil, nil, "ack"],
|
||||
R3: [nil, nil, "ack"],
|
||||
R4: [nil, nil, "ack"],
|
||||
R5: [nil, nil, "ack"],
|
||||
R6: [nil, nil, "ack"],
|
||||
computer: nil,
|
||||
new: func(computer) {
|
||||
var lr = {parents:[latReq]};
|
||||
lr.computer = computer;
|
||||
lr._setupPageWithData();
|
||||
return lr;
|
||||
},
|
||||
del: func() {
|
||||
return nil;
|
||||
},
|
||||
_setupPageWithData: func() {
|
||||
|
||||
},
|
||||
}
|
|
@ -112,13 +112,13 @@ var closestAirportPage = {
|
|||
}
|
||||
if (size(id) > 4) {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
}
|
||||
if (airportinfo(id) == nil) {
|
||||
notInDataBase(me.computer);
|
||||
}
|
||||
} elsif (airportinfo(id) == nil) {
|
||||
mcdu_message(me.computer, "NOT IN DATA BASE");
|
||||
} else {
|
||||
me.manAirport = airportinfo(id);
|
||||
me.L5 = [id, nil, "grn"];
|
||||
me.R5 = ["----", nil, "grn"];
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
}
|
||||
};
|
||||
|
|
15
Nasal/MCDU/DATA2.nas
Normal file
|
@ -0,0 +1,15 @@
|
|||
# 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");
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
var isNoSid = [0, 0];
|
||||
var isNoSid = [0, 0, 0];
|
||||
var isNoTransDep = [0, 0, 0];
|
||||
|
||||
var departurePage = {
|
||||
title: [nil, nil, nil],
|
||||
|
@ -29,18 +30,18 @@ var departurePage = {
|
|||
selectedRunway: nil,
|
||||
selectedSID: nil,
|
||||
selectedTransition: nil,
|
||||
sids: nil,
|
||||
transitions: nil,
|
||||
computer: nil,
|
||||
enableScrollRwy: 0,
|
||||
enableScrollSids: 0,
|
||||
scrollRwy: 0,
|
||||
scrollSids: 0,
|
||||
activePage: 0, # runways, sids, trans
|
||||
hasPressNoTrans: 0, # temporary
|
||||
_runways: nil,
|
||||
_sids: nil,
|
||||
_transitions: nil,
|
||||
runways: [],
|
||||
sids: [],
|
||||
transitions: [],
|
||||
new: func(icao, computer) {
|
||||
var page = {parents:[departurePage]};
|
||||
page.id = icao;
|
||||
|
@ -54,8 +55,9 @@ var departurePage = {
|
|||
},
|
||||
reset: func() {
|
||||
isNoSid[me.computer] = 0;
|
||||
isNoTransDep[me.computer] = 0;
|
||||
me.selectedSID = nil;
|
||||
me.hasPressNoTrans = 0;
|
||||
me.selectedTransition = nil;
|
||||
},
|
||||
_setupFirstTime: func() {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
|
@ -65,9 +67,14 @@ var departurePage = {
|
|||
if (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
||||
me.selectedSID = fmgc.flightPlanController.flightplans[2].sid;
|
||||
isNoSid[me.computer] = 0;
|
||||
} elsif (isNoSid[me.computer] == 1) {
|
||||
} elsif (isNoSid[2] == 1) {
|
||||
me.selectedSID = "NO SID";
|
||||
me.hasPressNoTrans = 1;
|
||||
}
|
||||
|
||||
if (isNoTransDep[2]) {
|
||||
me.selectedTransition = "NO TRANS";
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[2].sid_trans;
|
||||
}
|
||||
} else {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].departure_runway != nil) {
|
||||
|
@ -77,15 +84,20 @@ var departurePage = {
|
|||
}
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].sid != nil) {
|
||||
me.selectedSID = fmgc.flightPlanController.flightplans[me.computer].sid;
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[me.computer].sid_trans;
|
||||
isNoSid[me.computer] = 0;
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
||||
me.selectedSID = fmgc.flightPlanController.flightplans[2].sid;
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[2].sid_trans;
|
||||
isNoSid[me.computer] = 0;
|
||||
} elsif (isNoSid[me.computer] == 1) {
|
||||
me.selectedSID = "NO SID";
|
||||
me.hasPressNoTrans = 1;
|
||||
}
|
||||
|
||||
if (isNoTransDep[me.computer] or isNoTransDep[2]) {
|
||||
me.selectedTransition = "NO TRANS";
|
||||
} elsif (fmgc.flightPlanController.flightplans[me.computer].sid != nil) {
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[me.computer].sid_trans;
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
||||
me.selectedTransition = fmgc.flightPlanController.flightplans[2].sid_trans;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -107,6 +119,7 @@ var departurePage = {
|
|||
me.updateRunways();
|
||||
} else {
|
||||
me.updateSIDs();
|
||||
me.updateTransitions();
|
||||
}
|
||||
|
||||
me.updateActiveRunway();
|
||||
|
@ -142,18 +155,20 @@ var departurePage = {
|
|||
},
|
||||
updateActiveRunway: func() {
|
||||
if (me.selectedRunway != nil) {
|
||||
if (fmgc.flightPlanController.flightplans[2].departure_runway != nil) {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].departure_runway != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[me.computer].departure_runway.id, " RWY", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].departure_runway.id == me.selectedRunway.id) {
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].departure_runway != nil and fmgc.flightPlanController.flightplans[2].departure_runway.id == me.selectedRunway.id) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[2].departure_runway.id, " RWY", "yel"];
|
||||
} else {
|
||||
me.L1 = ["---", " RWY", "wht"];
|
||||
}
|
||||
} else {
|
||||
if (fmgc.flightPlanController.flightplans[2].departure_runway != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[2].departure_runway.id, " RWY", "grn"];
|
||||
} else {
|
||||
me.L1 = ["---", " RWY", "wht"];
|
||||
}
|
||||
} elsif (fmgc.flightPlanController.flightplans[me.computer].departure_runway != nil) {
|
||||
me.L1 = [fmgc.flightPlanController.flightplans[me.computer].departure_runway.id, " RWY", "yel"];
|
||||
} else {
|
||||
me.L1 = ["---", " RWY", "wht"];
|
||||
}
|
||||
} else {
|
||||
me.L1 = ["---", " RWY", "wht"];
|
||||
|
@ -168,18 +183,20 @@ var departurePage = {
|
|||
me.C1 = ["NONE", "SID", "yel"];
|
||||
}
|
||||
} elsif (me.selectedSID != nil) {
|
||||
if (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].sid != nil) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[me.computer].sid.id, "SID", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].sid.id == me.selectedSID.id) {
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].sid != nil and fmgc.flightPlanController.flightplans[2].sid.id == me.selectedSID.id) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[2].sid.id, "SID", "yel"];
|
||||
} else {
|
||||
me.C1 = ["------- ", "SID", "wht"];
|
||||
}
|
||||
} else {
|
||||
if (fmgc.flightPlanController.flightplans[2].sid != nil) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[2].sid.id, "SID", "grn"];
|
||||
} else {
|
||||
me.C1 = ["------- ", "SID", "wht"];
|
||||
}
|
||||
} elsif (fmgc.flightPlanController.flightplans[me.computer].sid != nil) {
|
||||
me.C1 = [fmgc.flightPlanController.flightplans[me.computer].sid.id, "SID", "yel"];
|
||||
} else {
|
||||
me.C1 = ["------- ", "SID", "wht"];
|
||||
}
|
||||
} else {
|
||||
me.C1 = ["------- ", "SID", "wht"];
|
||||
|
@ -187,30 +204,32 @@ var departurePage = {
|
|||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
updateActiveTransitions: func() {
|
||||
if (!me.hasPressNoTrans) {
|
||||
if (me.selectedTransition != nil) {
|
||||
if (fmgc.flightPlanController.flightplans[2].sid_trans != nil) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].sid_trans != nil) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[me.computer].sid_trans.id, "TRANS", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].sid_trans.id == me.selectedTransition.id) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[2].sid_trans.id, "TRANS", "grn"];
|
||||
} else {
|
||||
me.R1 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
} elsif (fmgc.flightPlanController.flightplans[me.computer].sid_trans != nil) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[me.computer].sid_trans.id, "SID", "yel"];
|
||||
} else {
|
||||
me.R1 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
} else {
|
||||
me.R1 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
} else {
|
||||
if (me.selectedTransition == "NO TRANS") {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
me.R1 = ["NONE", "TRANS ", "grn"];
|
||||
} else {
|
||||
me.R1 = ["NONE", "TRANS ", "yel"];
|
||||
}
|
||||
} else {
|
||||
if (me.selectedTransition != nil) {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (fmgc.flightPlanController.flightplans[me.computer].sid_trans != nil) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[me.computer].sid_trans.id, "TRANS", "yel"];
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].sid_trans != nil and fmgc.flightPlanController.flightplans[2].sid_trans.id == me.selectedTransition.id) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[2].sid_trans.id, "TRANS", "yel"];
|
||||
} else {
|
||||
me.R1 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
} else {
|
||||
if (fmgc.flightPlanController.flightplans[2].sid_trans != nil) {
|
||||
me.R1 = [fmgc.flightPlanController.flightplans[2].sid_trans.id, "SID", "grn"];
|
||||
} else {
|
||||
me.R1 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
me.R1 = ["-------", "TRANS ", "wht"];
|
||||
}
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
|
@ -218,6 +237,10 @@ var departurePage = {
|
|||
if (me.depAirport == nil) {
|
||||
me.depAirport = findAirportsByICAO(left(me.id, 4));
|
||||
}
|
||||
|
||||
me.runways = [];
|
||||
me._runways = nil;
|
||||
|
||||
me._runways = keys(me.depAirport[0].runways);
|
||||
me.runways = sort(me._runways,func(a,b) cmp(a,b));
|
||||
|
||||
|
@ -279,6 +302,10 @@ var departurePage = {
|
|||
if (me.depAirport == nil) {
|
||||
me.depAirport = findAirportsByICAO(left(me.id, 4));
|
||||
}
|
||||
|
||||
me.sids = [];
|
||||
me._sids = nil;
|
||||
|
||||
if (me.selectedRunway != nil) {
|
||||
me._sids = me.depAirport[0].sids(me.selectedRunway.id);
|
||||
} else {
|
||||
|
@ -334,8 +361,8 @@ var departurePage = {
|
|||
}
|
||||
}
|
||||
|
||||
me.C2 = [nil, "AVAILABLE", "wht"];
|
||||
me.R2 = [nil, "TRANS ", "wht"];
|
||||
me.C2[1] = "AVAILABLE";
|
||||
me.R2[1] = "TRANS ";
|
||||
|
||||
if (size(me.sids) > 4) {
|
||||
me.enableScrollSids = 1;
|
||||
|
@ -361,30 +388,22 @@ var departurePage = {
|
|||
me.depAirport = findAirportsByICAO(left(me.id, 4));
|
||||
}
|
||||
|
||||
if (me.selectedSID == nil) {
|
||||
me.R2 = ["NO TRANS ", "TRANS", "blu"];
|
||||
if (!me.hasPressNoTrans) {
|
||||
me.arrowsMatrix[1][1] = 1;
|
||||
me.arrowsColour[1][1] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[1][1] = 0;
|
||||
me.arrowsColour[1][1] = "ack";
|
||||
}
|
||||
me.clearTransitions();
|
||||
if (me.selectedSID == nil or me.selectedSID == "NO SID") {
|
||||
append(me.transitions, "NO TRANS");
|
||||
return;
|
||||
}
|
||||
|
||||
if (isghost(me.selectedSID)) {
|
||||
me._transitions = me.depAirport[0].getSid(me.selectedSID.id).transitions;
|
||||
} else {
|
||||
me._transitions = me.depAirport[0].getSid(me.selectedSID).transitions;
|
||||
}
|
||||
me._transitions = me.depAirport[0].getSid(me.selectedSID).transitions;
|
||||
me.transitions = sort(me._transitions,func(a,b) cmp(a,b));
|
||||
append(me.transitions, "NO TRANS");
|
||||
|
||||
if (size(me.transitions) == 0) {
|
||||
me.R2 = ["NO TRANS ", "TRANS", "blu"];
|
||||
if (!me.hasPressNoTrans) {
|
||||
me.arrowsMatrix[1][1] = 1;
|
||||
me.arrowsColour[1][1] = "blu";
|
||||
} else {
|
||||
me.arrowsMatrix[1][1] = 0;
|
||||
me.arrowsColour[1][1] = "ack";
|
||||
}
|
||||
} elsif (size(me.transitions) >= 1) {
|
||||
if (size(me.transitions) >= 1) {
|
||||
me.R2 = [me.transitions[0] ~ " ", "TRANS", "blu"];
|
||||
if (me.transitions[0] != me.selectedTransition) {
|
||||
me.arrowsMatrix[1][1] = 1;
|
||||
|
@ -421,6 +440,7 @@ var departurePage = {
|
|||
me.arrowsColour[1][4] = "ack";
|
||||
}
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
makeTmpy: func() {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
|
@ -455,7 +475,6 @@ var departurePage = {
|
|||
} else {
|
||||
me.updateTransitions();
|
||||
}
|
||||
me.hasPressNoTrans = 0;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -480,7 +499,6 @@ var departurePage = {
|
|||
} else {
|
||||
me.updateTransitions();
|
||||
}
|
||||
me.hasPressNoTrans = 0;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -498,12 +516,12 @@ var departurePage = {
|
|||
if (!dirToFlag) {
|
||||
me.selectedSID = nil;
|
||||
isNoSid[me.computer] = 0;
|
||||
me.hasPressNoTrans = 0;
|
||||
isNoTransDep[me.computer] = 0;
|
||||
me.selectedRunway = me.depAirport[0].runway(me.runways[index - 2 + me.scrollRwy]);
|
||||
me.makeTmpy();
|
||||
fmgc.flightPlanController.flightplans[me.computer].departure_runway = me.selectedRunway;
|
||||
me.updateActiveRunway();
|
||||
me.updateRunways();
|
||||
me.updatePage();
|
||||
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
||||
me.scrollRight();
|
||||
} else {
|
||||
|
@ -519,21 +537,20 @@ var departurePage = {
|
|||
me.makeTmpy();
|
||||
if (me.selectedSID != "NO SID") {
|
||||
isNoSid[me.computer] = 0;
|
||||
fmgc.flightPlanController.flightplans[me.computer].sid = me.selectedSID;
|
||||
fmgc.flightPlanController.flightplans[me.computer].sid = me.depAirport[0].getSid(me.selectedSID);
|
||||
} else {
|
||||
isNoSid[me.computer] = 1;
|
||||
fmgc.flightPlanController.flightplans[me.computer].sid = nil;
|
||||
fmgc.flightPlanController.insertNOSID(me.computer);
|
||||
}
|
||||
me.updateActiveSIDs();
|
||||
me.updateSIDs();
|
||||
if (me.selectedSID != "NO SID") {
|
||||
me.hasPressNoTrans = 0;
|
||||
me.updateTransitions();
|
||||
isNoTransDep[me.computer] = 0;
|
||||
} else {
|
||||
me.hasPressNoTrans = 1;
|
||||
isNoTransDep[me.computer] = 1;
|
||||
me.selectedTransition = "NO TRANS";
|
||||
}
|
||||
me.updateActiveTransitions();
|
||||
me.updatePage();
|
||||
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
||||
} else {
|
||||
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
||||
|
@ -544,21 +561,18 @@ var departurePage = {
|
|||
}
|
||||
},
|
||||
depPushbuttonRight: func(index) {
|
||||
if (index == 2 and size(me.transitions) == 0) {
|
||||
if (!dirToFlag) {
|
||||
me.hasPressNoTrans = 1;
|
||||
me.updateActiveTransitions();
|
||||
me.updateTransitions();
|
||||
} else {
|
||||
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
||||
}
|
||||
} elsif (size(me.transitions) >= (index - 1)) {
|
||||
if (size(me.transitions) >= (index - 1)) {
|
||||
if (!dirToFlag) {
|
||||
me.selectedTransition = me.transitions[index - 2];
|
||||
me.makeTmpy();
|
||||
fmgc.flightPlanController.flightplans[me.computer].sid_trans = me.depAirport[0].getSid(me.selectedSID).transition(me.selectedTransition);
|
||||
me.updateActiveTransitions();
|
||||
me.updateTransitions();
|
||||
if (me.selectedTransition != "NO TRANS") {
|
||||
isNoTransDep[me.computer] = 0;
|
||||
fmgc.flightPlanController.flightplans[me.computer].sid_trans = me.selectedTransition;
|
||||
} else {
|
||||
isNoTransDep[me.computer] = 1;
|
||||
fmgc.flightPlanController.flightplans[me.computer].sid_trans = nil;
|
||||
}
|
||||
me.updatePage();
|
||||
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
||||
} else {
|
||||
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
||||
|
|
|
@ -167,7 +167,7 @@ var dirTo = {
|
|||
# fix
|
||||
var fix = findFixesByID(text);
|
||||
if (size(fix) == 0) {
|
||||
notInDataBase(me.computer);
|
||||
mcdu_message(me.computer, "NOT IN DATA BASE");
|
||||
}
|
||||
|
||||
if (size(fix) == 1 or override) {
|
||||
|
@ -189,7 +189,7 @@ var dirTo = {
|
|||
# airport
|
||||
var airport = findAirportsByICAO(text);
|
||||
if (size(airport) == 0) {
|
||||
notInDataBase(me.computer);
|
||||
mcdu_message(me.computer, "NOT IN DATA BASE");
|
||||
}
|
||||
|
||||
if (size(airport) == 1 or override) {
|
||||
|
@ -211,7 +211,7 @@ var dirTo = {
|
|||
# navaid
|
||||
var navaid = findNavaidsByID(text);
|
||||
if (size(navaid) == 0) {
|
||||
notInDataBase(me.computer);
|
||||
mcdu_message(me.computer, "NOT IN DATA BASE");
|
||||
}
|
||||
|
||||
if (size(navaid) == 1 or override) {
|
||||
|
@ -254,6 +254,7 @@ var dirTo = {
|
|||
dirToFlag = 0;
|
||||
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 0);
|
||||
me.L1 = [" [ ]", " WAYPOINT", "blu"];
|
||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
||||
me.R1 = ["---- --- ", "UTC DIST ", "wht"];
|
||||
} else {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
|
@ -264,6 +265,7 @@ var dirTo = {
|
|||
dirToFlag = 0;
|
||||
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 1);
|
||||
me.L1 = [" [ ]", " WAYPOINT", "blu"];
|
||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
||||
me.R1 = ["---- --- ", "UTC DIST ", "wht"];
|
||||
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA"); # todo - remember horizontal srcoll of f-plna?
|
||||
} else {
|
||||
|
|
|
@ -7,6 +7,7 @@ var fplnItem = {
|
|||
fI.computer = computer;
|
||||
fI.colour = colour;
|
||||
fI.assembledStr = [nil, nil, colour];
|
||||
fI._colour = "wht";
|
||||
return fI;
|
||||
},
|
||||
updateLeftText: func() {
|
||||
|
@ -39,8 +40,10 @@ var fplnItem = {
|
|||
if (me.wp.wp_name != "DISCONTINUITY") {
|
||||
if (me.index == fmgc.flightPlanController.currentToWptIndex.getValue() - 1 and fmgc.flightPlanController.fromWptTime != nil) {
|
||||
me.assembledStr[0] = fmgc.flightPlanController.fromWptTime ~ " ";
|
||||
me.assembledStr[2] = "grn";
|
||||
} else {
|
||||
me.assembledStr[0] = "---- ";
|
||||
me.assembledStr[2] = "wht";
|
||||
}
|
||||
|
||||
if (me.index == fmgc.flightPlanController.currentToWptIndex.getValue()) {
|
||||
|
@ -65,7 +68,11 @@ var fplnItem = {
|
|||
me.spd = me.getSpd();
|
||||
me.alt = me.getAlt();
|
||||
me.dist = me.getDist();
|
||||
return [me.spd ~ "/" ~ me.alt, " " ~ me.dist ~ "NM ", me.colour];
|
||||
me._colour = "wht";
|
||||
if (me.spd[1] != "wht" or me.alt[1] != "wht") {
|
||||
me._colour = "mag";
|
||||
}
|
||||
return [me.spd[0] ~ "/" ~ me.alt[0], " " ~ me.dist ~ "NM ", me._colour];
|
||||
} else {
|
||||
return [nil, nil, "ack"];
|
||||
}
|
||||
|
@ -87,19 +94,27 @@ var fplnItem = {
|
|||
return sprintf("%03.0f", math.round(me.trk));
|
||||
},
|
||||
getSpd: func() {
|
||||
if (me.index == 0 and getprop("FMGC/internal/v1-set")) {
|
||||
return sprintf("%3.0f", math.round(getprop("FMGC/internal/v1")));
|
||||
if (me.index == 0 and left(me.wp.wp_name, 4) == fmgc.FMGCInternal.depApt and fmgc.FMGCInternal.v1set) {
|
||||
return [sprintf("%3.0f", math.round(fmgc.FMGCInternal.v1)), "mag"];
|
||||
} elsif (me.wp.speed_cstr != nil and me.wp.speed_cstr != 0) {
|
||||
return [sprintf("%3.0f", me.wp.speed_cstr), "mag"];
|
||||
} else {
|
||||
return "---";
|
||||
return ["---", "wht"];
|
||||
}
|
||||
},
|
||||
getAlt: func() {
|
||||
if (me.index == 0 and left(me.wp.wp_name, 4) == getprop("/FMGC/internal/dep-arpt") and fmgc.flightPlanController.flightplans[me.plan].departure != nil) {
|
||||
return sprintf("%6.0f", math.round(fmgc.flightPlanController.flightplans[me.plan].departure.elevation * M2FT));
|
||||
if (me.index == 0 and left(me.wp.wp_name, 4) == fmgc.FMGCInternal.depApt and fmgc.flightPlanController.flightplans[me.plan].departure != nil) {
|
||||
return [" " ~ sprintf("%-5.0f", math.round(fmgc.flightPlanController.flightplans[me.plan].departure.elevation * M2FT)), "mag"];
|
||||
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1) and fmgc.flightPlanController.fromWptAlt != nil) {
|
||||
return " " ~ fmgc.flightPlanController.fromWptAlt;
|
||||
return [" " ~ fmgc.flightPlanController.fromWptAlt, "mag"];
|
||||
} elsif (me.wp.alt_cstr != nil and me.wp.alt_cstr != 0) {
|
||||
if (me.wp.alt_cstr > fmgc.FMGCInternal.transAlt) {
|
||||
return [" " ~ sprintf("%-5s", "FL" ~ math.round(num(me.wp.alt_cstr) / 100)), "mag"];
|
||||
} else {
|
||||
return "------";
|
||||
return [" " ~ sprintf("%-5.0f", me.wp.alt_cstr), "mag"];
|
||||
}
|
||||
} else {
|
||||
return ["------", "wht"];
|
||||
}
|
||||
},
|
||||
getDist: func() {
|
||||
|
@ -141,6 +156,7 @@ var fplnItem = {
|
|||
setprop("MCDU[" ~ me.computer ~ "]/page", "LATREV");
|
||||
},
|
||||
pushButtonRight: func() {
|
||||
if (size(mcdu_scratchpad.scratchpads[me.computer].scratchpad) == 0) {
|
||||
if (canvas_mcdu.myVertRev[me.computer] != nil) {
|
||||
canvas_mcdu.myVertRev[me.computer].del();
|
||||
}
|
||||
|
@ -148,26 +164,65 @@ var fplnItem = {
|
|||
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer);
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} if (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[me.computer].departure.id) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer);
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer);
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
||||
} else {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer);
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
||||
}
|
||||
} else {
|
||||
if (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer);
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} elsif (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[2].departure.id) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer);
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer);
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
||||
} else {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer);
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
||||
}
|
||||
}
|
||||
setprop("MCDU[" ~ me.computer ~ "]/page", "VERTREV");
|
||||
} elsif (me.index != 0) { # todo - only apply to climb, descent, or missed waypoints
|
||||
var scratchpadStore = mcdu_scratchpad.scratchpads[me.computer].scratchpad;
|
||||
|
||||
if (scratchpadStore == "CLR") {
|
||||
me.wp.setSpeed("delete");
|
||||
me.wp.setAltitude("delete");
|
||||
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||
} elsif (find("/", scratchpadStore) != -1) {
|
||||
var scratchpadSplit = split("/", scratchpadStore);
|
||||
|
||||
if (size(scratchpadSplit[0]) == 0) {
|
||||
if (num(scratchpadSplit[1]) != nil and (size(scratchpadSplit[1]) == 4 or size(scratchpadSplit[1]) == 5) and scratchpadSplit[1] >= 0 and scratchpadSplit[1] <= 39000) {
|
||||
me.wp.setAltitude(math.round(scratchpadSplit[1], 10), "at");
|
||||
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||
} else {
|
||||
mcdu_message(me.computer, "FORMAT ERROR");
|
||||
}
|
||||
} else {
|
||||
if (num(scratchpadSplit[0]) != nil and size(scratchpadSplit[0]) == 3 and scratchpadSplit[0] >= 100 and scratchpadSplit[0] <= 350 and
|
||||
num(scratchpadSplit[1]) != nil and (size(scratchpadSplit[1]) == 4 or size(scratchpadSplit[1]) == 5) and scratchpadSplit[1] >= 0 and scratchpadSplit[1] <= 39000) {
|
||||
me.wp.setSpeed(scratchpadSplit[0], "at");
|
||||
me.wp.setAltitude(math.round(scratchpadSplit[1], 10), "at");
|
||||
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||
} elsif (num(scratchpadSplit[0]) != nil and size(scratchpadSplit[0]) == 3 and scratchpadSplit[0] >= 100 and scratchpadSplit[0] <= 350 and size(scratchpadSplit[1]) == 0) {
|
||||
me.wp.setSpeed(scratchpadSplit[0], "at");
|
||||
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||
} else {
|
||||
mcdu_message(me.computer, "FORMAT ERROR");
|
||||
}
|
||||
}
|
||||
} elsif (num(scratchpadStore) != nil and size(scratchpadStore) == 3 and scratchpadStore >= 100 and scratchpadStore <= 350) {
|
||||
me.wp.setSpeed(scratchpadStore, "at");
|
||||
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||
} else {
|
||||
mcdu_message(me.computer, "FORMAT ERROR");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -216,17 +271,6 @@ var fplnPage = { # this one is only created once, and then updated - remember th
|
|||
R5: [nil, nil, "ack"],
|
||||
R6: [nil, nil, "ack"],
|
||||
|
||||
# init conditions
|
||||
# line 1 = FROM
|
||||
# line 2 = TO
|
||||
# line 6 = DEST
|
||||
# neither pseudo nor markers may be FROM waypoint
|
||||
# bearing between FROM and TO waypoints
|
||||
# track between line 2 and line 3 waypoints
|
||||
# name of LEG above TO waypoint - is airway identifier, or waypoint name
|
||||
|
||||
# DEST in LINE 6 time prediction, distance along flightplan, and EFOB
|
||||
# dashes if no predictions
|
||||
planList: [],
|
||||
outputList: [],
|
||||
scroll: 0,
|
||||
|
@ -275,7 +319,7 @@ var fplnPage = { # this one is only created once, and then updated - remember th
|
|||
colour = "grn";
|
||||
}
|
||||
for (var i = 0; i < me.plan.getPlanSize(); i += 1) {
|
||||
if (!me.temporaryFlagFpln and i > fmgc.flightPlanController.arrivalIndex[me.planIndex] and getprop("/FMGC/status/phase") != 6) {
|
||||
if (!me.temporaryFlagFpln and i > fmgc.flightPlanController.arrivalIndex[me.planIndex] and fmgc.FMGCInternal.phase != 6) {
|
||||
append(me.planList, fplnItem.new(me.plan.getWP(i), i, me.planIndex, me.computer, "blu"));
|
||||
} else {
|
||||
append(me.planList, fplnItem.new(me.plan.getWP(i), i, me.planIndex, me.computer, colour));
|
||||
|
@ -392,9 +436,11 @@ var fplnPage = { # this one is only created once, and then updated - remember th
|
|||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 0);
|
||||
# push update to fuel
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
} else {
|
||||
if (canvas_mcdu.myLatRev[me.computer] != nil) {
|
||||
|
@ -433,20 +479,18 @@ var fplnPage = { # this one is only created once, and then updated - remember th
|
|||
if (dirToFlag) { dirToFlag = 0; }
|
||||
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 1);
|
||||
# push update to fuel
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
} else {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
if (size(me.outputList) >= index) {
|
||||
if (size(mcdu_scratchpad.scratchpads[me.computer].scratchpad) > 0) {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
} else {
|
||||
me.outputList[index - 1].pushButtonRight();
|
||||
}
|
||||
} else {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
}
|
||||
|
|
|
@ -3,58 +3,45 @@
|
|||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
# From INIT-B
|
||||
var zfwcg = props.globals.getNode("FMGC/internal/zfwcg", 1);
|
||||
var zfwcgSet = props.globals.getNode("FMGC/internal/zfwcg-set", 1);
|
||||
var zfw = props.globals.getNode("FMGC/internal/zfw", 1);
|
||||
var zfwSet = props.globals.getNode("FMGC/internal/zfw-set", 1);
|
||||
var block = props.globals.getNode("FMGC/internal/block", 1);
|
||||
var blockSet = props.globals.getNode("FMGC/internal/block-set", 1);
|
||||
var taxi_fuel = props.globals.getNode("FMGC/internal/taxi-fuel", 1);
|
||||
var trip_fuel = props.globals.getNode("FMGC/internal/trip-fuel", 1);
|
||||
var trip_time = props.globals.getNode("FMGC/internal/trip-time", 1);
|
||||
var rte_rsv = props.globals.getNode("FMGC/internal/rte-rsv", 1);
|
||||
var rte_percent = props.globals.getNode("FMGC/internal/rte-percent", 1);
|
||||
var alt_fuel = props.globals.getNode("FMGC/internal/alt-fuel", 1);
|
||||
var alt_time = props.globals.getNode("FMGC/internal/alt-time", 1);
|
||||
var final_fuel = props.globals.getNode("FMGC/internal/final-fuel", 1);
|
||||
var final_time = props.globals.getNode("FMGC/internal/final-time", 1);
|
||||
var min_dest_fob = props.globals.getNode("FMGC/internal/min-dest-fob", 1);
|
||||
var tow = props.globals.getNode("FMGC/internal/tow", 1);
|
||||
var lw = props.globals.getNode("FMGC/internal/lw", 1);
|
||||
var trip_wind = props.globals.getNode("FMGC/internal/trip-wind", 1);
|
||||
var trip_wind_value = props.globals.getNode("FMGC/internal/trip-wind", 1);
|
||||
var fob = props.globals.getNode("FMGC/internal/fob", 1);
|
||||
var fffq_sensor = props.globals.getNode("FMGC/internal/fffq-sensor", 1);
|
||||
var extra_fuel = props.globals.getNode("FMGC/internal/extra-fuel", 1);
|
||||
var extra_time = props.globals.getNode("FMGC/internal/extra-time", 1);
|
||||
|
||||
var fuelPredInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L3" and getprop("/FMGC/internal/block-confirmed") and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
if (key == "L3" and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/rte-rsv", 0.05 * num(getprop("/FMGC/internal/trip-fuel")));
|
||||
setprop("/FMGC/internal/rte-percent", 5.0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.rteRsv = 0.05 * fmgc.FMGCInternal.tripFuel;
|
||||
fmgc.FMGCInternal.rteRsvSet = 0;
|
||||
fmgc.FMGCInternal.rtePercent = 5.0;
|
||||
fmgc.FMGCInternal.rtePercentSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (getprop("/FMGC/internal/trip-fuel") != 0) {
|
||||
} else if (fmgc.FMGCInternal.tripFuel != 0) {
|
||||
var tf = num(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
tf = tf / LBS2KGS;
|
||||
}
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs >= 2 and tfs <= 5 and find("/", scratchpad) == 0) {
|
||||
var perc = num(split("/", scratchpad)[1]);
|
||||
if (perc != nil and perc >= 0.0 and perc <= 15.0) {
|
||||
setprop("/FMGC/internal/rte-rsv", num(perc) / 100 * num(getprop("/FMGC/internal/trip-fuel")));
|
||||
setprop("/FMGC/internal/rte-percent", perc);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.rteRsv = perc / 100 * fmgc.FMGCInternal.tripFuel;
|
||||
fmgc.FMGCInternal.rteRsvSet = 0;
|
||||
fmgc.FMGCInternal.rtePercent = perc;
|
||||
fmgc.FMGCInternal.rtePercentSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
}
|
||||
} else if (tfs >= 1 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 21.7) {
|
||||
setprop("/FMGC/internal/rte-rsv", scratchpad);
|
||||
if (scratchpad / num(getprop("/FMGC/internal/trip-fuel")) * 100 <= 15.0) {
|
||||
setprop("/FMGC/internal/rte-percent", scratchpad / num(getprop("/FMGC/internal/trip-fuel")) * 100);
|
||||
fmgc.FMGCInternal.rteRsv = scratchpad;
|
||||
fmgc.FMGCInternal.rteRsvSet = 1;
|
||||
if (scratchpad / fmgc.FMGCInternal.tripFuel * 100 <= 15.0) {
|
||||
fmgc.FMGCInternal.rtePercent = scratchpad / fmgc.FMGCInternal.tripFuel * 100;
|
||||
} else {
|
||||
setprop("/FMGC/internal/rte-percent", 15.0); # need reasearch on this value
|
||||
fmgc.FMGCInternal.rtePercent = 15.0; # need reasearch on this value
|
||||
}
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.rtePercentSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -62,21 +49,26 @@ var fuelPredInput = func(key, i) {
|
|||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "L4" and getprop("/FMGC/internal/block-confirmed") and !getprop("/FMGC/internal/fuel-calculating") and getprop("/FMGC/internal/alt-set")) {
|
||||
} else if (key == "L4" and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and fmgc.FMGCInternal.altAirportSet) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/alt-fuel", 0.0);
|
||||
setprop("/FMGC/internal/alt-time", "0000");
|
||||
setprop("/FMGC/internal/alt-fuel-set", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.altFuel = 0.0;
|
||||
fmgc.FMGCInternal.altTime = "0000";
|
||||
fmgc.FMGCInternal.altFuelSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find(".", scratchpad) != -1) {
|
||||
var tf = num(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
tf = tf / LBS2KGS;
|
||||
}
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0) {
|
||||
setprop("/FMGC/internal/alt-fuel", tf);
|
||||
setprop("/FMGC/internal/alt-time", "0000");
|
||||
setprop("/FMGC/internal/alt-fuel-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.altFuel = tf;
|
||||
fmgc.FMGCInternal.altTime = "0000";
|
||||
fmgc.FMGCInternal.altFuelSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -84,53 +76,67 @@ var fuelPredInput = func(key, i) {
|
|||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "L5" and getprop("/FMGC/internal/block-confirmed") and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
} else if (key == "L5" and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/final-fuel", 0.0);
|
||||
setprop("/FMGC/internal/final-time", "0030");
|
||||
setprop("/FMGC/internal/final-fuel-set", 0);
|
||||
setprop("/FMGC/internal/final-time-set", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.finalFuel = 0.0;
|
||||
fmgc.FMGCInternal.finalTime = "0030";
|
||||
fmgc.FMGCInternal.finalFuelSet = 0;
|
||||
fmgc.FMGCInternal.finalTimeSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find(".", scratchpad) != -1) {
|
||||
var tf = num(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
tf = tf / LBS2KGS;
|
||||
}
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0) {
|
||||
setprop("/FMGC/internal/final-fuel", tf);
|
||||
setprop("/FMGC/internal/final-fuel-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.finalFuel = tf;
|
||||
fmgc.FMGCInternal.finalFuelSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
var tf = num(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
tf = tf / LBS2KGS;
|
||||
}
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs == 4 and tf != nil and ((tf >= 0 and tf <= 59) or (tf >= 100 and tf <= 130))) {
|
||||
setprop("/FMGC/internal/final-time", scratchpad);
|
||||
setprop("/FMGC/internal/final-time-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.finalTime = scratchpad;
|
||||
fmgc.FMGCInternal.finalTimeSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else if (key == "L6" and getprop("/FMGC/internal/block-confirmed") and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
} else if (key == "L6" and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/min-dest-fob", 0);
|
||||
setprop("/FMGC/internal/min-dest-fob-set", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.minDestFob = 0;
|
||||
fmgc.FMGCInternal.minDestFobSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find(".", scratchpad) != -1) {
|
||||
var tf = num(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
tf = tf / LBS2KGS;
|
||||
}
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs >= 3 and tfs <= 5 and tf != nil and tf >= 0 and tf <= 80.0) {
|
||||
setprop("/FMGC/internal/min-dest-fob", tf);
|
||||
setprop("/FMGC/internal/min-dest-fob-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.minDestFob = tf;
|
||||
fmgc.FMGCInternal.minDestFobSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (num(getprop("/FMGC/internal/min-dest-fob")) < num(getprop("/FMGC/internal/final-fuel") + getprop("/FMGC/internal/alt-fuel"))) {
|
||||
genericMessage(i, "CHECK MIN DEST FOB", "wht");
|
||||
if (fmgc.FMGCInternal.minDestFob < fmgc.FMGCInternal.finalFuel + fmgc.FMGCInternal.altFuel) {
|
||||
mcdu_message(i, "CHECK MIN DEST FOB");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -138,96 +144,119 @@ var fuelPredInput = func(key, i) {
|
|||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "R3" and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
} else if (key == "R3" and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
} else {
|
||||
if (!getprop("/FMGC/internal/cost-index-set")) {
|
||||
mcdu_message(i, "USING COST INDEX N", getprop("/FMGC/internal/last-cost-index"));
|
||||
setprop("/FMGC/internal/cost-index-set", 1);
|
||||
setprop("/FMGC/internal/cost-index", getprop("/FMGC/internal/last-cost-index"));
|
||||
var zfw_min = 80.6; #make based on performance
|
||||
var zfw_max = 134.5; #61,000 kg, make based on performance
|
||||
if (size(scratchpad) == 0) {
|
||||
var zfw = pts.Fdm.JSBsim.Inertia.weightLbs.getValue() - pts.Consumables.Fuel.totalFuelLbs.getValue();
|
||||
fmgc.FMGCInternal.zfw = sprintf("%3.1f", math.round(zfw / 1000, 0.1));
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
if (fmgc.FMGCInternal.blockSet != 1) {
|
||||
fmgc.FMGCInternal.block = pts.Consumables.Fuel.totalFuelLbs.getValue() / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
} else if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find("/", scratchpad) != -1) {
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
scratchpad = scratchpad / LBS2KGS;
|
||||
}
|
||||
var zfwi = split("/", scratchpad);
|
||||
var zfw = num(zfwi[0]);
|
||||
var zfwcg = num(zfwi[1]);
|
||||
var zfws = size(zfwi[0]);
|
||||
var zfwcgs = size(zfwi[1]);
|
||||
if (zfw != nil and zfws > 0 and zfws <= 5 and (find(".", zfwi[0]) == -1 or size(split(".", zfwi[0])[1]) <= 1) and zfwcg != nil and zfwcgs > 0 and zfwcgs <= 4 and (find(".", zfwi[1]) == -1 or size(split(".", zfwi[1])[1]) <= 1)) {
|
||||
if (zfw >= zfw_min and zfw <= zfw_max and zfwcg >= 8.0 and zfwcg <= 45.0) {
|
||||
fmgc.FMGCInternal.zfw = zfw;
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
fmgc.FMGCInternal.zfwcg = zfwcg;
|
||||
fmgc.FMGCInternal.zfwcgSet = 1;
|
||||
if (fmgc.FMGCInternal.blockSet != 1) {
|
||||
fmgc.FMGCInternal.block = pts.Consumables.Fuel.totalFuelLbs.getValue() / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
} else if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
} else if (zfws == 0 and zfwcg != nil and zfwcgs > 0 and zfwcgs <= 4 and (find(".", zfwi[1]) == -1 or size(split(".", zfwi[1])[1]) <= 1)) {
|
||||
if (zfwcg >= 8.0 and zfwcg <= 45.0) {
|
||||
fmgc.FMGCInternal.zfwcg = zfwcg;
|
||||
fmgc.FMGCInternal.zfwcgSet = 1;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (num(scratchpad) != nil and size(scratchpad) > 0 and size(scratchpad) <= 5 and (find(".", scratchpad) == -1 or size(split(".", scratchpad)[1]) <= 1)) {
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
scratchpad = scratchpad / LBS2KGS;
|
||||
}
|
||||
if (scratchpad >= zfw_min and scratchpad <= zfw_max) {
|
||||
fmgc.FMGCInternal.zfw = scratchpad;
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
if (fmgc.FMGCInternal.blockSet != 1) {
|
||||
fmgc.FMGCInternal.block = pts.Consumables.Fuel.totalFuelLbs.getValue() / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
} else if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs == 0) {
|
||||
var zfw = getprop("/fdm/jsbsim/inertia/weight-lbs") - getprop("/consumables/fuel/total-fuel-lbs");
|
||||
setprop("/FMGC/internal/zfw", sprintf("%3.1f", math.round(zfw / 1000, 0.1)));
|
||||
setprop("/FMGC/internal/zfw-set", 1);
|
||||
if (getprop("/FMGC/internal/block-set") != 1) {
|
||||
setprop("/FMGC/internal/block", num(getprop("consumables/fuel/total-fuel-lbs") / 1000));
|
||||
setprop("/FMGC/internal/block-set", 1);
|
||||
setprop("/FMGC/internal/fuel-request-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
setprop("/FMGC/internal/block-calculating", 0);
|
||||
setprop("/FMGC/internal/block-confirmed", 1);
|
||||
}
|
||||
} else if (tfs >= 2 and tfs <= 11 and find("/", scratchpad) != -1) {
|
||||
var zfwi = split("/", scratchpad);
|
||||
var zfwcg = num(zfwi[0]);
|
||||
var zfw = num(zfwi[1]);
|
||||
var zfwcgs = size(zfwi[0]);
|
||||
var zfws = size(zfwi[1]);
|
||||
if (zfwcg != nil and zfwcgs >= 1 and zfwcgs <= 5 and zfwcg > 0 and zfwcg <= 99.9) {
|
||||
setprop("/FMGC/internal/zfwcg", zfwcg);
|
||||
setprop("/FMGC/internal/zfwcg-set", 1);
|
||||
if (getprop("/FMGC/internal/block-set") != 1) {
|
||||
setprop("/FMGC/internal/block", num(getprop("consumables/fuel/total-fuel-lbs") / 1000));
|
||||
setprop("/FMGC/internal/block-set", 1);
|
||||
setprop("/FMGC/internal/fuel-request-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
setprop("/FMGC/internal/block-calculating", 0);
|
||||
setprop("/FMGC/internal/block-confirmed", 1);
|
||||
}
|
||||
}
|
||||
if (zfw != nil and zfws >= 1 and zfws <= 5 and zfw > 0 and zfw <= 999.9) {
|
||||
setprop("/FMGC/internal/zfw", zfw);
|
||||
setprop("/FMGC/internal/zfw-set", 1);
|
||||
if (getprop("/FMGC/internal/block-set") != 1) {
|
||||
setprop("/FMGC/internal/block", num(getprop("consumables/fuel/total-fuel-lbs") / 1000));
|
||||
setprop("/FMGC/internal/block-set", 1);
|
||||
setprop("/FMGC/internal/fuel-request-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
setprop("/FMGC/internal/block-calculating", 0);
|
||||
setprop("/FMGC/internal/block-confirmed", 1);
|
||||
}
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
}
|
||||
}
|
||||
if ((zfwcg != nil and zfwcgs >= 1 and zfwcgs <= 5 and zfwcg > 0 and zfwcg <= 99.9) or (zfw != nil and zfws >= 1 and zfws <= 5 and zfw > 0 and zfw <= 999.9)) {
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (tfs >= 1 and tfs <= 5) {
|
||||
var zfwcg = size(scratchpad);
|
||||
if (num(scratchpad) != nil and zfwcg >= 1 and zfwcg <= 5 and scratchpad > 0 and scratchpad <= 99.9) {
|
||||
setprop("/FMGC/internal/zfwcg", scratchpad);
|
||||
setprop("/FMGC/internal/zfwcg-set", 1);
|
||||
if (getprop("/FMGC/internal/block-set") != 1) {
|
||||
setprop("/FMGC/internal/block", num(getprop("consumables/fuel/total-fuel-lbs") / 1000));
|
||||
setprop("/FMGC/internal/block-set", 1);
|
||||
setprop("/FMGC/internal/fuel-request-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
setprop("/FMGC/internal/block-calculating", 0);
|
||||
setprop("/FMGC/internal/block-confirmed", 1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
if (!fmgc.FMGCInternal.costIndexSet and fmgc.FMGCInternal.toFromSet) {
|
||||
mcdu_message(i, "USING COST INDEX N", getprop("/FMGC/internal/last-cost-index") or 0);
|
||||
fmgc.FMGCInternal.costIndexSet = 1;
|
||||
fmgc.FMGCInternal.costIndex = getprop("/FMGC/internal/last-cost-index") or 0;
|
||||
fmgc.FMGCNodes.costIndex.setValue(fmgc.FMGCInternal.costIndex);
|
||||
}
|
||||
}
|
||||
} else if (key == "R4") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/fffq-sensor", "FF+FQ");
|
||||
fmgc.FMGCInternal.fffqSensor = "FF+FQ";
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find("/", scratchpad) == 0) {
|
||||
var sensor = substr(scratchpad, 1);
|
||||
if (sensor == "FF+FQ" or sensor == "FQ+FF" or sensor == "FF" or sensor == "FQ") {
|
||||
setprop("FMGC/internal/fffq-sensor", sensor);
|
||||
fmgc.FMGCInternal.fffqSensor = sensor;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
|
|
@ -40,21 +40,42 @@ var holdPage = {
|
|||
_setupPageWithData: func() {
|
||||
me.title = ["HOLD", " AT ", me.waypoint.wp_name];
|
||||
me.titleColour = "wht";
|
||||
me.L1 = [" [ ]", "INB CRS", "blu"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["wht", "wht", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
if (me.waypoint.fly_type == "Hold") {
|
||||
me.makeTmpy();
|
||||
me.L1 = [" " ~ sprintf("%03.0f", me.waypoint.hold_inbound_radial), "INB CRS", "blu"];
|
||||
me.fontMatrix[0][0] = 0;
|
||||
|
||||
if (me.waypoint.hold_is_left_handed) {
|
||||
me.L2 = [" L", " TURN", "blu"];
|
||||
} else {
|
||||
me.L2 = [" R", " TURN", "blu"];
|
||||
}
|
||||
|
||||
if (me.waypoint.hold_is_distance) {
|
||||
me.L2 = [" -.-/" ~ me.waypoint.hold_time_or_distance, "TIME/DIST", "blu"];
|
||||
} else {
|
||||
me.L2 = [" " ~ sprintf("%3.1f", (me.waypoint.hold_time_or_distance / 60)) ~ "/----", "TIME/DIST", "blu"];
|
||||
}
|
||||
me.R1 = ["COMPUTED ", nil, "wht"];
|
||||
me.R2 = ["DATABASE ", nil, "yel"];
|
||||
me.arrowsMatrix[1][1] = 0;
|
||||
} else {
|
||||
me.L1 = [" 100", "INB CRS", "blu"];
|
||||
me.L2 = [" R", " TURN", "blu"];
|
||||
if (pts.Instrumentation.Altimeter.indicatedFt.getValue() >= 14000) {
|
||||
me.L2 = [" 1.5/----", "TIME/DIST", "blu"];
|
||||
} else {
|
||||
me.L2 = [" 1.0/----", "TIME/DIST", "blu"];
|
||||
}
|
||||
me.R1 = ["COMPUTED ", nil, "wht"];
|
||||
me.R2 = ["DATABASE ", nil, "wht"];
|
||||
}
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.C4 = ["LAST EXIT", nil, "wht"];
|
||||
me.C5 = ["---- ---.-", "UTC FUEL", "wht"];
|
||||
me.R1 = ["COMPUTED ", nil, "wht"];
|
||||
me.R2 = ["DATABASE ", nil, "wht"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["wht", "wht", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
makeTmpy: func() {
|
||||
|
@ -67,7 +88,7 @@ var holdPage = {
|
|||
me.L1[2] = "yel";
|
||||
me.L2[2] = "yel";
|
||||
me.L6 = [" F-PLN", " TMPY", "yel"];
|
||||
me.R6 = ["INSERT* ", " TMPY", "yel"];
|
||||
me.R6 = ["INSERT ", " TMPY", "yel"];
|
||||
me.arrowsColour[0][5] = "yel";
|
||||
me.titleColour = "yel";
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
|
|
|
@ -7,30 +7,36 @@ var initInputA = func(key, i) {
|
|||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L2") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/alt-airport", "");
|
||||
setprop("/FMGC/internal/alt-set", 0);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.altAirport = "";
|
||||
fmgc.FMGCInternal.altAirportSet = 0;
|
||||
fmgc.windController.updatePlans();
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
fmgc.updateARPT();
|
||||
#} else if (scratchpad == "") {
|
||||
#setprop("/FMGC/internal/alt-selected", 1);
|
||||
#fmgc.FMGCInternal.altSelected = 1;
|
||||
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
|
||||
} else if (getprop("/FMGC/internal/tofrom-set") == 1) {
|
||||
} else if (fmgc.FMGCInternal.toFromSet) {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[i]) {
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs == 4) {
|
||||
setprop("/FMGC/internal/alt-airport", scratchpad);
|
||||
setprop("/FMGC/internal/alt-set", 1);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.altAirport = scratchpad;
|
||||
fmgc.FMGCInternal.altAirportSet = 1;
|
||||
fmgc.windController.updatePlans();
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
fmgc.updateARPT();
|
||||
#setprop("/FMGC/internal/alt-selected", 1);
|
||||
#fmgc.FMGCInternal.altSelected = 1;
|
||||
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -43,14 +49,14 @@ var initInputA = func(key, i) {
|
|||
}
|
||||
} else if (key == "L3") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("MCDUC/flight-num", "");
|
||||
setprop("MCDUC/flight-num-set", 0);
|
||||
fmgc.FMGCInternal.flightNum = "";
|
||||
fmgc.FMGCInternal.flightNumSet = 0;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
var flts = size(scratchpad);
|
||||
if (flts >= 1 and flts <= 8) {
|
||||
setprop("MCDUC/flight-num", scratchpad);
|
||||
setprop("MCDUC/flight-num-set", 1);
|
||||
fmgc.FMGCInternal.flightNum = scratchpad;
|
||||
fmgc.FMGCInternal.flightNumSet = 1;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -58,16 +64,18 @@ var initInputA = func(key, i) {
|
|||
}
|
||||
} else if (key == "L5") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/cost-index", 0);
|
||||
setprop("/FMGC/internal/cost-index-set", 0);
|
||||
fmgc.FMGCInternal.costIndex = 0;
|
||||
fmgc.FMGCInternal.costIndexSet = 0;
|
||||
fmgc.FMGCNodes.costIndex.setValue(0);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
var ci = int(scratchpad);
|
||||
var cis = size(scratchpad);
|
||||
if (cis >= 1 and cis <= 3) {
|
||||
if (ci != nil and ci >= 0 and ci <= 999) {
|
||||
setprop("/FMGC/internal/cost-index", ci);
|
||||
setprop("/FMGC/internal/cost-index-set", 1);
|
||||
fmgc.FMGCInternal.costIndex = ci;
|
||||
fmgc.FMGCInternal.costIndexSet = 1;
|
||||
fmgc.FMGCNodes.costIndex.setValue(fmgc.FMGCInternal.costIndex);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -78,14 +86,19 @@ var initInputA = func(key, i) {
|
|||
}
|
||||
} else if (key == "L6") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/cruise-ft", 10000);
|
||||
setprop("/FMGC/internal/cruise-fl", 100);
|
||||
setprop("/FMGC/internal/cruise-lvl-set", 0);
|
||||
setprop("/FMGC/internal/cruise-temp", 15);
|
||||
setprop("/FMGC/internal/cruise-temp-set", 0);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.crzFt = 10000;
|
||||
fmgc.FMGCInternal.crzFl = 100;
|
||||
fmgc.altvert();
|
||||
fmgc.updateRouteManagerAlt();
|
||||
fmgc.FMGCInternal.crzSet = 0;
|
||||
updateCrzLvlCallback();
|
||||
fmgc.FMGCInternal.crzTemp = 15;
|
||||
fmgc.FMGCInternal.crzTempSet = 0;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find("/", scratchpad) != -1) {
|
||||
|
@ -99,12 +112,15 @@ var initInputA = func(key, i) {
|
|||
}
|
||||
var temp = int(crztemp[1]);
|
||||
var temps = size(crztemp[1]);
|
||||
if (crzs == 0 and temps >= 1 and temps <= 3 and temp != nil and getprop("/FMGC/internal/cruise-lvl-set")) {
|
||||
if (crzs == 0 and temps >= 1 and temps <= 3 and temp != nil and fmgc.FMGCInternal.crzSet) {
|
||||
if (temp >= -99 and temp <= 99) {
|
||||
setprop("/FMGC/internal/cruise-temp", temp);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.crzTemp = temp;
|
||||
fmgc.FMGCInternal.crzTempSet = 1;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
|
@ -112,15 +128,20 @@ var initInputA = func(key, i) {
|
|||
}
|
||||
} else if (crzs >= 1 and crzs <= 3 and crz != nil and temps >= 1 and temps <= 3 and temp != nil) {
|
||||
if (crz > 0 and crz <= 390 and temp >= -99 and temp <= 99) {
|
||||
setprop("/FMGC/internal/cruise-ft", crz * 100);
|
||||
setprop("/FMGC/internal/cruise-fl", crz);
|
||||
setprop("/FMGC/internal/cruise-fl-prog", crz);
|
||||
setprop("/FMGC/internal/cruise-lvl-set", 1);
|
||||
setprop("/FMGC/internal/cruise-temp", temp);
|
||||
setprop("/FMGC/internal/cruise-temp-set", 1);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.crzFt = crz * 100;
|
||||
fmgc.FMGCInternal.crzFl = crz;
|
||||
fmgc.altvert();
|
||||
fmgc.updateRouteManagerAlt();
|
||||
fmgc.FMGCInternal.crzSet = 1;
|
||||
updateCrzLvlCallback();
|
||||
fmgc.FMGCInternal.crzTemp = temp;
|
||||
fmgc.FMGCInternal.crzTempSet = 1;
|
||||
fmgc.FMGCInternal.crzProg = crz;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
|
@ -139,13 +160,18 @@ var initInputA = func(key, i) {
|
|||
}
|
||||
if (crzs >= 1 and crzs <= 3 and crz != nil) {
|
||||
if (crz > 0 and crz <= 390) {
|
||||
setprop("/FMGC/internal/cruise-ft", crz * 100);
|
||||
setprop("/FMGC/internal/cruise-fl", crz);
|
||||
setprop("/FMGC/internal/cruise-fl-prog", crz);
|
||||
setprop("/FMGC/internal/cruise-lvl-set", 1);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.crzFt = crz * 100;
|
||||
fmgc.FMGCInternal.crzFl = crz;
|
||||
fmgc.altvert();
|
||||
fmgc.updateRouteManagerAlt();
|
||||
fmgc.FMGCInternal.crzSet = 1;
|
||||
updateCrzLvlCallback();
|
||||
fmgc.FMGCInternal.crzProg = crz;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
|
@ -157,22 +183,27 @@ var initInputA = func(key, i) {
|
|||
}
|
||||
} else if (key == "R1") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/dep-arpt", "");
|
||||
setprop("/FMGC/internal/arr-arpt", "");
|
||||
setprop("/FMGC/internal/tofrom-set", 0);
|
||||
fmgc.FMGCInternal.depApt = "";
|
||||
fmgc.FMGCInternal.arrApt = "";
|
||||
fmgc.FMGCInternal.toFromSet = 0;
|
||||
fmgc.FMGCNodes.toFromSet.setValue(0);
|
||||
fmgc.windController.resetDesWinds();
|
||||
setprop("/FMGC/internal/align-ref-lat", 0);
|
||||
setprop("/FMGC/internal/align-ref-long", 0);
|
||||
setprop("/FMGC/internal/align-ref-lat-edit", 0);
|
||||
setprop("/FMGC/internal/align-ref-long-edit", 0);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
fmgc.flightPlanController.reset(2);
|
||||
fmgc.flightPlanController.init();
|
||||
Simbrief.SimbriefParser.inhibit = 0;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
#} else if (scratchpad == "") {
|
||||
#setprop("/FMGC/internal/alt-selected", 0);
|
||||
#fmgc.FMGCInternal.altSelected = 0;
|
||||
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
|
||||
} else {
|
||||
if (!fmgc.flightPlanController.temporaryFlag[i]) {
|
||||
|
@ -183,32 +214,18 @@ var initInputA = func(key, i) {
|
|||
var tos = size(fromto[1]);
|
||||
if (froms == 4 and tos == 4) {
|
||||
#route
|
||||
setprop("/FMGC/internal/dep-arpt", fromto[0]);
|
||||
setprop("/FMGC/internal/arr-arpt", fromto[1]);
|
||||
setprop("/FMGC/internal/tofrom-set", 1);
|
||||
if (fmgc.FMGCInternal.toFromSet == 1 and fmgc.FMGCInternal.arrApt != fromto[1]) {
|
||||
fmgc.windController.resetDesWinds();
|
||||
}
|
||||
fmgc.FMGCInternal.depApt = fromto[0];
|
||||
fmgc.FMGCInternal.arrApt = fromto[1];
|
||||
fmgc.FMGCInternal.toFromSet = 1;
|
||||
fmgc.FMGCNodes.toFromSet.setValue(1);
|
||||
#scratchpad
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
fmgc.flightPlanController.updateAirports(fromto[0], fromto[1], 2);
|
||||
setprop("/FMGC/internal/alt-selected", 0);
|
||||
#ref lat
|
||||
dms = getprop("/FMGC/flightplan[2]/wp[0]/lat");
|
||||
degrees = int(dms);
|
||||
minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
||||
sign = degrees >= 0 ? "N" : "S";
|
||||
setprop("/FMGC/internal/align-ref-lat-degrees", degrees);
|
||||
setprop("/FMGC/internal/align-ref-lat-minutes", minutes);
|
||||
setprop("/FMGC/internal/align-ref-lat-sign", sign);
|
||||
#ref long
|
||||
dms = getprop("/FMGC/flightplan[2]/wp[0]/lon");
|
||||
degrees = int(dms);
|
||||
minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
||||
sign = degrees >= 0 ? "E" : "W";
|
||||
setprop("/FMGC/internal/align-ref-long-degrees", degrees);
|
||||
setprop("/FMGC/internal/align-ref-long-minutes", minutes);
|
||||
setprop("/FMGC/internal/align-ref-long-sign", sign);
|
||||
#ref edit
|
||||
setprop("/FMGC/internal/align-ref-lat-edit", 0);
|
||||
setprop("/FMGC/internal/align-ref-long-edit", 0);
|
||||
fmgc.FMGCInternal.altSelected = 0;
|
||||
fmgc.updateArptLatLon();
|
||||
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -220,18 +237,46 @@ var initInputA = func(key, i) {
|
|||
mcdu_message(i, "TMPY F-PLN EXISTS");
|
||||
}
|
||||
}
|
||||
} else if (key == "R2") {
|
||||
if (pts.Engines.Engine.state[0].getValue() != 3 and pts.Engines.Engine.state[1].getValue() != 3) {
|
||||
if (!ecam.vhf3_voice.active) {
|
||||
if (atsu.ATSU.working) {
|
||||
if (getprop("/FMGC/simbrief-username") == "") {
|
||||
mcdu.mcdu_message(i, "MISSING USERNAME")
|
||||
} elsif (!Simbrief.SimbriefParser.inhibit) {
|
||||
Simbrief.SimbriefParser.fetch(getprop("/FMGC/simbrief-username"), i);
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NO COMM MSG NOT GEN");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "VHF3 VOICE MSG NOT GEN");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "R3") {
|
||||
setprop("MCDU[" ~ i ~ "]/page", "IRSINIT");
|
||||
} else if (key == "R4") {
|
||||
if (canvas_mcdu.myCLBWIND[i] == nil) {
|
||||
canvas_mcdu.myCLBWIND[i] = windCLBPage.new(i);
|
||||
} else {
|
||||
canvas_mcdu.myCLBWIND[i].reload();
|
||||
}
|
||||
fmgc.windController.accessPage[i] = "INITA";
|
||||
setprop("MCDU[" ~ i ~ "]/page", "WINDCLB");
|
||||
} else if (key == "R5") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/tropo", 36090);
|
||||
setprop("/FMGC/internal/tropo-set", 0);
|
||||
fmgc.FMGCInternal.tropo = 36090;
|
||||
fmgc.FMGCInternal.tropoSet = 0;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
var tropo = size(scratchpad);
|
||||
if (tropo == 5 and scratchpad <= 99990) {
|
||||
setprop("FMGC/internal/tropo-set", 1);
|
||||
setprop("FMGC/internal/tropo", scratchpad);
|
||||
fmgc.FMGCInternal.tropo = scratchpad;
|
||||
fmgc.FMGCInternal.tropoSet = 1;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -239,11 +284,11 @@ var initInputA = func(key, i) {
|
|||
}
|
||||
} else if (key == "R6") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/gndtemp-set", 0);
|
||||
fmgc.FMGCInternal.gndTempSet = 0;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil and getprop("/FMGC/status/phase") == 0 and size(scratchpad) >= 1 and size(scratchpad) <= 3 and scratchpad >= -99 and scratchpad <= 99) {
|
||||
setprop("/FMGC/internal/gndtemp", scratchpad);
|
||||
setprop("/FMGC/internal/gndtemp-set", 1);
|
||||
} else if (int(scratchpad) != nil and fmgc.FMGCInternal.phase == 0 and size(scratchpad) >= 1 and size(scratchpad) <= 3 and scratchpad >= -99 and scratchpad <= 99) {
|
||||
fmgc.FMGCInternal.gndTemp = scratchpad;
|
||||
fmgc.FMGCInternal.gndTempSet = 1;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
|
|
@ -2,27 +2,41 @@
|
|||
|
||||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
var acconfig_weight_kgs = props.globals.getNode("/systems/acconfig/options/weight-kgs", 1);
|
||||
# Conversion factor pounds to kilogram
|
||||
var LBS2KGS = 0.4535924;
|
||||
|
||||
var initInputB = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1" and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
if (key == "L1" and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/taxi-fuel", 0.4);
|
||||
setprop("/FMGC/internal/taxi-fuel-set", 0);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
} else if (getprop("/FMGC/internal/fuel-request-set")) {
|
||||
setprop("/FMGC/internal/block-calculating", 1);
|
||||
fmgc.FMGCInternal.taxiFuel = 0.4;
|
||||
fmgc.FMGCInternal.taxiFuelSet = 0;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
} else if (fmgc.FMGCInternal.fuelRequest) {
|
||||
fmgc.FMGCInternal.blockCalculating = 1;
|
||||
fmgc.blockCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
var tfs = size(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
scratchpad = scratchpad / LBS2KGS;
|
||||
}
|
||||
if (tfs >= 1 and tfs <= 4) {
|
||||
if (num(scratchpad) != nil and scratchpad >= 0.0 and scratchpad <= 9.9) {
|
||||
setprop("/FMGC/internal/taxi-fuel", scratchpad);
|
||||
setprop("/FMGC/internal/taxi-fuel-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.taxiFuel = scratchpad;
|
||||
fmgc.FMGCInternal.taxiFuelSet = 1;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
} else if (fmgc.FMGCInternal.fuelRequest) {
|
||||
fmgc.FMGCInternal.blockCalculating = 1;
|
||||
fmgc.blockCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
fmgc.updateFuel();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
@ -30,37 +44,43 @@ var initInputB = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else if (key == "L3" and getprop("/FMGC/internal/block-confirmed") and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
} else if (key == "L3" and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/rte-rsv", 0.05 * num(getprop("/FMGC/internal/trip-fuel")));
|
||||
setprop("/FMGC/internal/rte-rsv-set", 0);
|
||||
setprop("/FMGC/internal/rte-percent", 5.0);
|
||||
setprop("/FMGC/internal/rte-percent-set", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.rteRsv = 0.05 * fmgc.FMGCInternal.tripFuel;
|
||||
fmgc.FMGCInternal.rteRsvSet = 0;
|
||||
fmgc.FMGCInternal.rtePercent = 5.0;
|
||||
fmgc.FMGCInternal.rtePercentSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (getprop("/FMGC/internal/trip-fuel") != 0) {
|
||||
} else if (fmgc.FMGCInternal.tripFuel != 0) {
|
||||
var tf = num(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
tf = tf / LBS2KGS;
|
||||
}
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs >= 2 and tfs <= 5 and find("/", scratchpad) == 0) {
|
||||
var perc = num(split("/", scratchpad)[1]);
|
||||
if (perc != nil and perc >= 0.0 and perc <= 15.0) {
|
||||
setprop("/FMGC/internal/rte-rsv", num(perc) / 100 * num(getprop("/FMGC/internal/trip-fuel")));
|
||||
setprop("/FMGC/internal/rte-rsv-set", 0);
|
||||
setprop("/FMGC/internal/rte-percent", perc);
|
||||
setprop("/FMGC/internal/rte-percent-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.rteRsv = perc / 100 * fmgc.FMGCInternal.tripFuel;
|
||||
fmgc.FMGCInternal.rteRsvSet = 0;
|
||||
fmgc.FMGCInternal.rtePercent = perc;
|
||||
fmgc.FMGCInternal.rtePercentSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
}
|
||||
} else if (tfs >= 1 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 21.7) {
|
||||
setprop("/FMGC/internal/rte-rsv", scratchpad);
|
||||
setprop("/FMGC/internal/rte-rsv-set", 1);
|
||||
if (scratchpad / num(getprop("/FMGC/internal/trip-fuel")) * 100 <= 15.0) {
|
||||
setprop("/FMGC/internal/rte-percent", scratchpad / num(getprop("/FMGC/internal/trip-fuel")) * 100);
|
||||
fmgc.FMGCInternal.rteRsv = scratchpad;
|
||||
fmgc.FMGCInternal.rteRsvSet = 1;
|
||||
if (scratchpad / fmgc.FMGCInternal.tripFuel * 100 <= 15.0) {
|
||||
fmgc.FMGCInternal.rtePercent = scratchpad / fmgc.FMGCInternal.tripFuel * 100;
|
||||
} else {
|
||||
setprop("/FMGC/internal/rte-percent", 15.0); # need reasearch on this value
|
||||
fmgc.FMGCInternal.rtePercent = 15.0; # need reasearch on this value
|
||||
}
|
||||
setprop("/FMGC/internal/rte-percent-set", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.rtePercentSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -68,21 +88,26 @@ var initInputB = func(key, i) {
|
|||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "L4" and getprop("/FMGC/internal/block-confirmed") and !getprop("/FMGC/internal/fuel-calculating") and getprop("/FMGC/internal/alt-set")) {
|
||||
} else if (key == "L4" and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and fmgc.FMGCInternal.altAirportSet) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/alt-fuel", 0.0);
|
||||
setprop("/FMGC/internal/alt-time", "0000");
|
||||
setprop("/FMGC/internal/alt-fuel-set", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.altFuel = 0.0;
|
||||
fmgc.FMGCInternal.altTime = "0000";
|
||||
fmgc.FMGCInternal.altFuelSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find(".", scratchpad) != -1) {
|
||||
var tf = num(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
tf = tf / LBS2KGS;
|
||||
}
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0) {
|
||||
setprop("/FMGC/internal/alt-fuel", tf);
|
||||
setprop("/FMGC/internal/alt-time", "0000");
|
||||
setprop("/FMGC/internal/alt-fuel-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.altFuel = tf;
|
||||
fmgc.FMGCInternal.altTime = "0000";
|
||||
fmgc.FMGCInternal.altFuelSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -90,21 +115,26 @@ var initInputB = func(key, i) {
|
|||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "L5" and getprop("/FMGC/internal/block-confirmed") and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
} else if (key == "L5" and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/final-fuel", 0.0);
|
||||
setprop("/FMGC/internal/final-time", "0030");
|
||||
setprop("/FMGC/internal/final-fuel-set", 0);
|
||||
setprop("/FMGC/internal/final-time-set", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.finalFuel = 0.0;
|
||||
fmgc.FMGCInternal.finalTime = "0030";
|
||||
fmgc.FMGCInternal.finalFuelSet = 0;
|
||||
fmgc.FMGCInternal.finalTimeSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find(".", scratchpad) != -1) {
|
||||
var tf = num(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
tf = tf / LBS2KGS;
|
||||
}
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0) {
|
||||
setprop("/FMGC/internal/final-fuel", tf);
|
||||
setprop("/FMGC/internal/final-fuel-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.finalFuel = tf;
|
||||
fmgc.FMGCInternal.finalFuelSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -113,30 +143,36 @@ var initInputB = func(key, i) {
|
|||
var tf = num(scratchpad);
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs == 4 and tf != nil and ((tf >= 0 and tf <= 59) or (tf >= 100 and tf <= 130))) {
|
||||
setprop("/FMGC/internal/final-time", scratchpad);
|
||||
setprop("/FMGC/internal/final-time-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.finalTime = scratchpad;
|
||||
fmgc.FMGCInternal.finalTimeSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else if (key == "L6" and getprop("/FMGC/internal/block-confirmed") and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
} else if (key == "L6" and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/min-dest-fob", 0);
|
||||
setprop("/FMGC/internal/min-dest-fob-set", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.minDestFob = 0;
|
||||
fmgc.FMGCInternal.minDestFobSet = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find(".", scratchpad) != -1) {
|
||||
var tf = num(scratchpad);
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
tf = tf / LBS2KGS;
|
||||
}
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs >= 3 and tfs <= 5 and tf != nil and tf >= 0 and tf <= 80.0) {
|
||||
setprop("/FMGC/internal/min-dest-fob", tf);
|
||||
setprop("/FMGC/internal/min-dest-fob-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.minDestFob = tf;
|
||||
fmgc.FMGCInternal.minDestFobSet = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (num(getprop("/FMGC/internal/min-dest-fob")) < num(getprop("/FMGC/internal/final-fuel") + getprop("/FMGC/internal/alt-fuel"))) {
|
||||
genericMessage(i, "CHECK MIN DEST FOB", "wht");
|
||||
if (fmgc.FMGCInternal.minDestFob < fmgc.FMGCInternal.finalFuel + fmgc.FMGCInternal.altFuel) {
|
||||
mcdu_message(i, "CHECK MIN DEST FOB");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -144,135 +180,181 @@ var initInputB = func(key, i) {
|
|||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "R1" and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
} else if (key == "R1" and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
} else {
|
||||
if (!getprop("/FMGC/internal/cost-index-set")) {
|
||||
mcdu_message(i, "USING COST INDEX N", getprop("/FMGC/internal/last-cost-index"));
|
||||
setprop("/FMGC/internal/cost-index-set", 1);
|
||||
setprop("/FMGC/internal/cost-index", getprop("/FMGC/internal/last-cost-index"));
|
||||
var zfw_min = 80.6; #make based on performance
|
||||
var zfw_max = 134.5; #61,000 kg, make based on performance
|
||||
|
||||
if (size(scratchpad) == 0) {
|
||||
var zfw = pts.Fdm.JSBsim.Inertia.weightLbs.getValue() - pts.Consumables.Fuel.totalFuelLbs.getValue();
|
||||
fmgc.FMGCInternal.zfw = sprintf("%3.1f", math.round(zfw / 1000, 0.1));
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
if (!fmgc.FMGCInternal.blockConfirmed and fmgc.FMGCInternal.blockSet) {
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
} else if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
} else if (fmgc.FMGCInternal.fuelRequest) {
|
||||
fmgc.FMGCInternal.blockCalculating = 1;
|
||||
fmgc.blockCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (find("/", scratchpad) != -1) {
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
scratchpad = scratchpad / LBS2KGS;
|
||||
}
|
||||
var zfwi = split("/", scratchpad);
|
||||
var zfw = num(zfwi[0]);
|
||||
var zfwcg = num(zfwi[1]);
|
||||
var zfws = size(zfwi[0]);
|
||||
var zfwcgs = size(zfwi[1]);
|
||||
if (zfw != nil and zfws > 0 and zfws <= 5 and (find(".", zfwi[0]) == -1 or size(split(".", zfwi[0])[1]) <= 1) and zfwcg != nil and zfwcgs > 0 and zfwcgs <= 4 and (find(".", zfwi[1]) == -1 or size(split(".", zfwi[1])[1]) <= 1)) {
|
||||
if (zfw >= zfw_min and zfw <= zfw_max and zfwcg >= 8.0 and zfwcg <= 45.0) {
|
||||
fmgc.FMGCInternal.zfw = zfw;
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
fmgc.FMGCInternal.zfwcg = zfwcg;
|
||||
fmgc.FMGCInternal.zfwcgSet = 1;
|
||||
if (!fmgc.FMGCInternal.blockConfirmed and fmgc.FMGCInternal.blockSet) {
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
} else if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
} else if (fmgc.FMGCInternal.fuelRequest) {
|
||||
fmgc.FMGCInternal.blockCalculating = 1;
|
||||
fmgc.blockCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
} else if (zfws == 0 and zfwcg != nil and zfwcgs > 0 and zfwcgs <= 4 and (find(".", zfwi[1]) == -1 or size(split(".", zfwi[1])[1]) <= 1)) {
|
||||
if (zfwcg >= 8.0 and zfwcg <= 45.0) {
|
||||
fmgc.FMGCInternal.zfwcg = zfwcg;
|
||||
fmgc.FMGCInternal.zfwcgSet = 1;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (num(scratchpad) != nil and size(scratchpad) > 0 and size(scratchpad) <= 5 and (find(".", scratchpad) == -1 or size(split(".", scratchpad)[1]) <= 1)) {
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
scratchpad = scratchpad / LBS2KGS;
|
||||
}
|
||||
if (scratchpad >= zfw_min and scratchpad <= zfw_max) {
|
||||
fmgc.FMGCInternal.zfw = scratchpad;
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
if (!fmgc.FMGCInternal.blockConfirmed and fmgc.FMGCInternal.blockSet) {
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
} else if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
} else if (fmgc.FMGCInternal.fuelRequest) {
|
||||
fmgc.FMGCInternal.blockCalculating = 1;
|
||||
fmgc.blockCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
||||
var tfs = size(scratchpad);
|
||||
if (tfs == 0) {
|
||||
var zfw = getprop("/fdm/jsbsim/inertia/weight-lbs") - getprop("/consumables/fuel/total-fuel-lbs");
|
||||
setprop("/FMGC/internal/zfw", sprintf("%3.1f", math.round(zfw / 1000, 0.1)));
|
||||
setprop("/FMGC/internal/zfw-set", 1);
|
||||
if (!getprop("/FMGC/internal/block-confirmed") and getprop("/FMGC/internal/block-set")) {
|
||||
setprop("/FMGC/internal/tow", num(getprop("/FMGC/internal/zfw") + getprop("/FMGC/internal/block") - getprop("/FMGC/internal/taxi-fuel")));
|
||||
setprop("/FMGC/internal/tow-set", 1);
|
||||
setprop("/FMGC/internal/fuel-request-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
setprop("/FMGC/internal/block-calculating", 0);
|
||||
setprop("/FMGC/internal/block-confirmed", 1);
|
||||
} else if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
} else if (getprop("/FMGC/internal/fuel-request-set")) {
|
||||
setprop("/FMGC/internal/block-calculating", 1);
|
||||
}
|
||||
} else if (tfs >= 2 and tfs <= 11 and find("/", scratchpad) != -1) {
|
||||
var zfwi = split("/", scratchpad);
|
||||
var zfwcg = num(zfwi[0]);
|
||||
var zfw = num(zfwi[1]);
|
||||
var zfwcgs = size(zfwi[0]);
|
||||
var zfws = size(zfwi[1]);
|
||||
if (zfwcg != nil and zfwcgs >= 1 and zfwcgs <= 5 and zfwcg > 0 and zfwcg <= 99.9) {
|
||||
setprop("/FMGC/internal/zfwcg", zfwi[0]);
|
||||
setprop("/FMGC/internal/zfwcg-set", 1);
|
||||
}
|
||||
if (zfw != nil and zfws >= 1 and zfws <= 5 and zfw > 0 and zfw <= 999.9) {
|
||||
setprop("/FMGC/internal/zfw", zfwi[1]);
|
||||
setprop("/FMGC/internal/zfw-set", 1);
|
||||
if (!getprop("/FMGC/internal/block-confirmed") and getprop("/FMGC/internal/block-set")) {
|
||||
setprop("/FMGC/internal/tow", num(getprop("/FMGC/internal/zfw") + getprop("/FMGC/internal/block") - getprop("/FMGC/internal/taxi-fuel")));
|
||||
setprop("/FMGC/internal/tow-set", 1);
|
||||
setprop("/FMGC/internal/fuel-request-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
setprop("/FMGC/internal/block-calculating", 0);
|
||||
setprop("/FMGC/internal/block-confirmed", 1);
|
||||
} else if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
} else if (getprop("/FMGC/internal/fuel-request-set")) {
|
||||
setprop("/FMGC/internal/block-calculating", 1);
|
||||
if (!fmgc.FMGCInternal.costIndexSet and fmgc.FMGCInternal.toFromSet) {
|
||||
mcdu_message(i, "USING COST INDEX N", getprop("/FMGC/internal/last-cost-index") or 0);
|
||||
fmgc.FMGCInternal.costIndexSet = 1;
|
||||
fmgc.FMGCInternal.costIndex = getprop("/FMGC/internal/last-cost-index") or 0;
|
||||
fmgc.FMGCNodes.costIndex.setValue(fmgc.FMGCInternal.costIndex);
|
||||
}
|
||||
}
|
||||
if ((zfwcg != nil and zfwcgs >= 1 and zfwcgs <= 5 and zfwcg > 0 and zfwcg <= 99.9) or (zfw != nil and zfws >= 1 and zfws <= 5 and zfw > 0 and zfw <= 999.9)) {
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (tfs >= 1 and tfs <= 5) {
|
||||
var zfwcg = size(scratchpad);
|
||||
if (num(scratchpad) != nil and zfwcg >= 1 and zfwcg <= 5 and scratchpad > 0 and scratchpad <= 99.9) {
|
||||
setprop("/FMGC/internal/zfwcg", scratchpad);
|
||||
setprop("/FMGC/internal/zfwcg-set", 1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else if (key == "R2" and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
} else if (key == "R2" and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/block", 0.0);
|
||||
setprop("/FMGC/internal/block-set", 0);
|
||||
setprop("/FMGC/internal/taxi-fuel", 0.4);
|
||||
setprop("/FMGC/internal/taxi-fuel-set", 0);
|
||||
setprop("/FMGC/internal/trip-fuel", 0);
|
||||
setprop("/FMGC/internal/trip-time", "0000");
|
||||
setprop("/FMGC/internal/rte-rsv", 0);
|
||||
setprop("/FMGC/internal/rte-rsv-set", 0);
|
||||
setprop("/FMGC/internal/rte-percent", 5.0);
|
||||
setprop("/FMGC/internal/rte-percent-set", 0);
|
||||
setprop("/FMGC/internal/alt-fuel", 0);
|
||||
setprop("/FMGC/internal/alt-fuel-set", 0);
|
||||
setprop("/FMGC/internal/alt-time", "0000");
|
||||
setprop("/FMGC/internal/final-fuel", 0);
|
||||
setprop("/FMGC/internal/final-fuel-set", 0);
|
||||
setprop("/FMGC/internal/final-time", "0030");
|
||||
setprop("/FMGC/internal/final-time-set", 0);
|
||||
setprop("/FMGC/internal/min-dest-fob", 0);
|
||||
setprop("/FMGC/internal/min-dest-fob-set", 0);
|
||||
setprop("/FMGC/internal/tow", 0);
|
||||
setprop("/FMGC/internal/lw", 0);
|
||||
setprop("/FMGC/internal/trip-wind", "HD000");
|
||||
setprop("/FMGC/internal/trip-wind-value", 0);
|
||||
setprop("/FMGC/internal/fffq-sensor", "FF+FQ");
|
||||
setprop("/FMGC/internal/extra-fuel", 0);
|
||||
setprop("/FMGC/internal/extra-time", "0000");
|
||||
setprop("/FMGC/internal/fuel-request-set", 0);
|
||||
setprop("/FMGC/internal/fuel-calculating", 0);
|
||||
setprop("/FMGC/internal/block-calculating", 0);
|
||||
setprop("/FMGC/internal/block-confirmed", 0);
|
||||
fmgc.FMGCInternal.block = 0.0;
|
||||
fmgc.FMGCInternal.blockSet = 0;
|
||||
fmgc.FMGCInternal.taxiFuel = 0.4;
|
||||
fmgc.FMGCInternal.taxiFuelSet = 0;
|
||||
fmgc.FMGCInternal.tripFuel = 0;
|
||||
fmgc.FMGCInternal.tripTime = "0000";
|
||||
fmgc.FMGCInternal.rteRsv = 0;
|
||||
fmgc.FMGCInternal.rteRsvSet = 0;
|
||||
fmgc.FMGCInternal.rtePercent = 5.0;
|
||||
fmgc.FMGCInternal.rtePercentSet = 0;
|
||||
fmgc.FMGCInternal.altFuel = 0;
|
||||
fmgc.FMGCInternal.altFuelSet = 0;
|
||||
fmgc.FMGCInternal.altTime = "0000";
|
||||
fmgc.FMGCInternal.finalFuel = 0;
|
||||
fmgc.FMGCInternal.finalFuelSet = 0;
|
||||
fmgc.FMGCInternal.finalTime = "0030";
|
||||
fmgc.FMGCInternal.finalTimeSet = 0;
|
||||
fmgc.FMGCInternal.minDestFob = 0;
|
||||
fmgc.FMGCInternal.minDestFobSet = 0;
|
||||
fmgc.FMGCInternal.tow = 0;
|
||||
fmgc.FMGCInternal.lw = 0;
|
||||
fmgc.FMGCInternal.tripWind = "HD000";
|
||||
fmgc.FMGCInternal.tripWindValue = 0;
|
||||
fmgc.FMGCInternal.fffqSensor = "FF+FQ";
|
||||
fmgc.FMGCInternal.extraFuel = 0;
|
||||
fmgc.FMGCInternal.extraTime = "0000";
|
||||
fmgc.FMGCInternal.fuelRequest = 0;
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 0;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
var tfs = size(scratchpad);
|
||||
var maxblock = getprop("/options/maxblock");
|
||||
if (tfs == 0) {
|
||||
setprop("/FMGC/internal/block", sprintf("%3.1f", math.round(getprop("/consumables/fuel/total-fuel-lbs") / 1000, 0.1)));
|
||||
setprop("/FMGC/internal/block-set", 1);
|
||||
if (getprop("/FMGC/internal/zfw-set")) {
|
||||
setprop("/FMGC/internal/tow", num(getprop("/FMGC/internal/zfw") + getprop("/FMGC/internal/block") - getprop("/FMGC/internal/taxi-fuel")));
|
||||
setprop("/FMGC/internal/tow-set", 1);
|
||||
setprop("/FMGC/internal/fuel-request-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
setprop("/FMGC/internal/block-calculating", 0);
|
||||
setprop("/FMGC/internal/block-confirmed", 1);
|
||||
fmgc.FMGCInternal.block = sprintf("%3.1f", math.round(pts.Consumables.Fuel.totalFuelLbs.getValue() / 1000, 0.1));
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
if (fmgc.FMGCInternal.zfwSet) {
|
||||
fmgc.FMGCInternal.tow = num(fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
}
|
||||
} else if (tfs >= 1 and tfs <= 5) {
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
scratchpad = scratchpad / LBS2KGS;
|
||||
}
|
||||
|
||||
if (num(scratchpad) != nil and scratchpad >= 1.0 and scratchpad <= maxblock) {
|
||||
setprop("/FMGC/internal/block", scratchpad);
|
||||
setprop("/FMGC/internal/block-set", 1);
|
||||
if (getprop("/FMGC/internal/zfw-set")) {
|
||||
setprop("/FMGC/internal/tow", num(getprop("/FMGC/internal/zfw") + getprop("/FMGC/internal/block") - getprop("/FMGC/internal/taxi-fuel")));
|
||||
setprop("/FMGC/internal/tow-set", 1);
|
||||
setprop("/FMGC/internal/fuel-request-set", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
setprop("/FMGC/internal/block-calculating", 0);
|
||||
setprop("/FMGC/internal/block-confirmed", 1);
|
||||
fmgc.FMGCInternal.block = scratchpad;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
if (fmgc.FMGCInternal.zfwSet) {
|
||||
fmgc.FMGCInternal.tow = num(fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
fmgc.FMGCInternal.blockCalculating = 0;
|
||||
fmgc.blockCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
|
@ -283,31 +365,35 @@ var initInputB = func(key, i) {
|
|||
}
|
||||
}
|
||||
} else if (key == "R3") {
|
||||
if (scratchpad == "" and getprop("/FMGC/internal/zfw-set") and !getprop("/FMGC/internal/fuel-request-set")) {
|
||||
setprop("/FMGC/internal/fuel-request-set", 1);
|
||||
setprop("/FMGC/internal/block-calculating", 1);
|
||||
} else if (scratchpad == "" and getprop("/FMGC/internal/zfw-set") and getprop("/FMGC/internal/fuel-request-set") and !getprop("/FMGC/internal/block-confirmed") and !getprop("/FMGC/internal/block-calculating")) {
|
||||
setprop("/FMGC/internal/block-confirmed", 1);
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
if (scratchpad == "" and fmgc.FMGCInternal.zfwSet and !fmgc.FMGCInternal.fuelRequest) {
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.blockCalculating = 1;
|
||||
fmgc.blockCalculating.setValue(1);
|
||||
} else if (scratchpad == "" and fmgc.FMGCInternal.zfwSet and fmgc.FMGCInternal.fuelRequest and !fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.blockCalculating) {
|
||||
fmgc.FMGCInternal.blockConfirmed = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "R5" and !getprop("/FMGC/internal/fuel-calculating")) {
|
||||
} else if (key == "R5" and !fmgc.FMGCInternal.fuelCalculating) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/trip-wind", "HD000");
|
||||
setprop("/FMGC/internal/trip-wind-value", 0);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.tripWind = "HD000";
|
||||
fmgc.FMGCInternal.tripWindValue = 0;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
if (find("TL", scratchpad) != -1 or find("HD", scratchpad) != -1) {
|
||||
var effwind = substr(scratchpad, 2);
|
||||
if (int(effwind) != nil and effwind >= 0 and effwind <= 500) {
|
||||
setprop("/FMGC/internal/trip-wind", scratchpad);
|
||||
setprop("/FMGC/internal/trip-wind-value", effwind);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.tripWind = scratchpad;
|
||||
fmgc.FMGCInternal.tripWindValue = effwind;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
|
@ -316,10 +402,11 @@ var initInputB = func(key, i) {
|
|||
} else if (find("-", scratchpad) != -1 or find("+", scratchpad) != -1 or find("T", scratchpad) != -1 or find("H", scratchpad) != -1) {
|
||||
var effwind = substr(scratchpad, 1);
|
||||
if (int(effwind) != nil and effwind >= 0 and effwind <= 500) {
|
||||
setprop("/FMGC/internal/trip-wind", scratchpad);
|
||||
setprop("/FMGC/internal/trip-wind-value", effwind);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.tripWind = scratchpad;
|
||||
fmgc.FMGCInternal.tripWindValue = effwind;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
|
@ -327,10 +414,11 @@ var initInputB = func(key, i) {
|
|||
}
|
||||
} else {
|
||||
if (num(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 500) {
|
||||
setprop("/FMGC/internal/trip-wind", scratchpad);
|
||||
setprop("/FMGC/internal/trip-wind-value", scratchpad);
|
||||
if (getprop("/FMGC/internal/block-confirmed")) {
|
||||
setprop("/FMGC/internal/fuel-calculating", 1);
|
||||
fmgc.FMGCInternal.tripWind = scratchpad;
|
||||
fmgc.FMGCInternal.tripWindValue = scratchpad;
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
|
|
|
@ -62,7 +62,7 @@ var initInputIRS = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "L1") {
|
||||
if (getprop("FMGC/internal/tofrom-set")) {
|
||||
if (fmgc.FMGCInternal.toFromSet) {
|
||||
setprop("FMGC/internal/align-ref-lat-edit", 1);
|
||||
setprop("FMGC/internal/align-ref-long-edit", 0);
|
||||
} else {
|
||||
|
@ -73,7 +73,7 @@ var initInputIRS = func(key, i) {
|
|||
setprop("FMGC/internal/align-ref-long-edit", 0);
|
||||
setprop("MCDU[" ~ i ~ "]/page", "INITA");
|
||||
} else if (key == "R1") {
|
||||
if (getprop("FMGC/internal/tofrom-set")) {
|
||||
if (fmgc.FMGCInternal.toFromSet) {
|
||||
setprop("FMGC/internal/align-ref-lat-edit", 0);
|
||||
setprop("FMGC/internal/align-ref-long-edit", 1);
|
||||
} else {
|
||||
|
@ -82,17 +82,17 @@ var initInputIRS = func(key, i) {
|
|||
} else if (key == "R6") {
|
||||
setprop("FMGC/internal/align-ref-lat-edit", 0);
|
||||
setprop("FMGC/internal/align-ref-long-edit", 0);
|
||||
if (getprop("FMGC/internal/tofrom-set") == 1 and getprop("systems/navigation/adr/any-adr-on") == 1) {
|
||||
if (fmgc.FMGCInternal.toFromSet and getprop("/systems/navigation/adr/any-adr-on") == 1) {
|
||||
if (getprop("FMGC/internal/align-set") == 0) {
|
||||
setprop("FMGC/internal/align-set", 1);
|
||||
} else {
|
||||
setprop("controls/adirs/mcducbtn", 1);
|
||||
setprop("/controls/adirs/mcducbtn", 1);
|
||||
setprop("FMGC/internal/align-set", 0);
|
||||
setprop("MCDU[" ~ i ~ "]/page", "INITA");
|
||||
}
|
||||
} else if (getprop("FMGC/internal/tofrom-set") == 0) {
|
||||
} else if (!fmgc.FMGCInternal.toFromSet) {
|
||||
# setprop("MCDU[" ~ i ~ "]/scratchpad", "SELECT REFERENCE");
|
||||
} else if (getprop("systems/navigation/adr/any-adr-on") == 0) {
|
||||
} else if (getprop("/systems/navigation/adr/any-adr-on") == 0) {
|
||||
# setprop("MCDU[" ~ i ~ "]/scratchpad", "IRS NOT ALIGNED");
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
var latRev = {
|
||||
title: [nil, nil, nil],
|
||||
titleColour: "wht",
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
|
@ -36,6 +37,7 @@ var latRev = {
|
|||
_checkTmpy: func() {
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
me.L6 = [" F-PLN", " TMPY", "yel"];
|
||||
me.titleColour = "yel";
|
||||
me.arrowsColour[0][5] = "yel";
|
||||
me.R2[2] = "yel";
|
||||
me.R3[2] = "yel";
|
||||
|
@ -130,7 +132,7 @@ var latRev = {
|
|||
|
||||
var returny = fmgc.flightPlanController.scratchpad(mcdu_scratchpad.scratchpads[me.computer].scratchpad, me.index + 1, me.computer);
|
||||
if (returny == 0) {
|
||||
notInDataBase(me.computer);
|
||||
mcdu_message(me.computer, "NOT IN DATA BASE");
|
||||
} elsif (returny == 1) {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
} else {
|
||||
|
|
1046
Nasal/MCDU/MCDU.nas
|
@ -1,8 +1,6 @@
|
|||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
# APPR PERF
|
||||
var ldg_config_3_set = props.globals.getNode("/FMGC/internal/ldg-config-3-set", 1);
|
||||
var ldg_config_f_set = props.globals.getNode("/FMGC/internal/ldg-config-f-set", 1);
|
||||
|
||||
var perfAPPRInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
|
@ -30,19 +28,21 @@ var perfAPPRInput = func(key, i) {
|
|||
} else if (key == "L3") {
|
||||
var tfs = size(scratchpad);
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/dest-mag", -1);
|
||||
setprop("/FMGC/internal/dest-wind", -1);
|
||||
fmgc.FMGCInternal.destMag = 0;
|
||||
fmgc.FMGCInternal.destMagSet = 0;
|
||||
fmgc.FMGCInternal.destWind = 0;
|
||||
fmgc.FMGCInternal.destWindSet = 0;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (tfs >= 3 and tfs <= 7 and find("/", scratchpad) != -1) {
|
||||
var weather = split("/", scratchpad);
|
||||
var mag = int(weather[0]);
|
||||
var mags = size(weather[0]);
|
||||
var wind = int(weather[1]);
|
||||
var winds = size(weather[1]);
|
||||
if (mags >= 1 and mags <= 3 and winds >= 1 and winds <= 3) {
|
||||
if (mag != nil and wind != nil and mag >= 0 and mag <= 360 and wind >= 0 and wind <= 200) {
|
||||
setprop("/FMGC/internal/dest-mag", weather[0]);
|
||||
setprop("/FMGC/internal/dest-wind", weather[1]);
|
||||
if (num(weather[0]) != nil and num(weather[1]) != nil and int(weather[0]) >= 0 and int(weather[0]) <= 360 and int(weather[1]) >= 0 and int(weather[1]) <= 200) {
|
||||
fmgc.FMGCInternal.destMag = weather[0];
|
||||
fmgc.FMGCInternal.destMagSet = 1;
|
||||
fmgc.FMGCInternal.destWind = weather[1];
|
||||
fmgc.FMGCInternal.destWindSet = 1;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
fmgc.updateARPT();
|
||||
} else {
|
||||
|
@ -75,11 +75,11 @@ var perfAPPRInput = func(key, i) {
|
|||
}
|
||||
} else if (key == "L5") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/vapp-speed-set", 0);
|
||||
fmgc.FMGCInternal.vappSpeedSet = 0;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil and scratchpad >= 100 and scratchpad <= 350) {
|
||||
setprop("/FMGC/internal/vapp-speed-set", 1);
|
||||
setprop("/FMGC/internal/computed-speeds/vapp_appr", scratchpad);
|
||||
fmgc.FMGCInternal.vappSpeedSet = 1;
|
||||
fmgc.FMGCInternal.vapp_appr = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -91,7 +91,7 @@ var perfAPPRInput = func(key, i) {
|
|||
setprop("/FMGC/internal/baro", 99999);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil and scratchpad >= getprop("/FMGC/internal/ldg-elev") and scratchpad <= 5000 + getprop("/FMGC/internal/ldg-elev")) {
|
||||
if (getprop("/FMGC/internal/radio-no") == 0) {
|
||||
if (!fmgc.FMGCInternal.radioNo) {
|
||||
setprop("/FMGC/internal/radio", 99999);
|
||||
}
|
||||
setprop("/FMGC/internal/baro", scratchpad);
|
||||
|
@ -102,31 +102,31 @@ var perfAPPRInput = func(key, i) {
|
|||
} else if (key == "R3") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/radio", 99999);
|
||||
setprop("/FMGC/internal/radio-no", 0);
|
||||
fmgc.FMGCInternal.radioNo = 0;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (scratchpad == "NO") {
|
||||
setprop("/FMGC/internal/radio", 99999);
|
||||
setprop("/FMGC/internal/radio-no", 1);
|
||||
fmgc.FMGCInternal.radioNo = 1;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 700) {
|
||||
setprop("/FMGC/internal/baro", 99999);
|
||||
setprop("/FMGC/internal/radio-no", 0);
|
||||
fmgc.FMGCInternal.radioNo = 0;
|
||||
setprop("/FMGC/internal/radio", scratchpad);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "R4") {
|
||||
if (scratchpad == "" and ldg_config_f_set.getValue() == 1 and ldg_config_3_set.getValue() == 0) {
|
||||
setprop("/FMGC/internal/ldg-config-3-set", 1);
|
||||
setprop("/FMGC/internal/ldg-config-f-set", 0);
|
||||
if (scratchpad == "" and fmgc.FMGCInternal.ldgConfigFull == 1 and fmgc.FMGCInternal.ldgConfig3 == 0) {
|
||||
fmgc.FMGCInternal.ldgConfig3 = 1;
|
||||
fmgc.FMGCInternal.ldgConfigFull = 0;
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "R5") {
|
||||
if (scratchpad == "" and ldg_config_3_set.getValue() == 1 and ldg_config_f_set.getValue() == 0) {
|
||||
setprop("/FMGC/internal/ldg-config-3-set", 0);
|
||||
setprop("/FMGC/internal/ldg-config-f-set", 1);
|
||||
if (scratchpad == "" and fmgc.FMGCInternal.ldgConfig3 == 1 and fmgc.FMGCInternal.ldgConfigFull == 0) {
|
||||
fmgc.FMGCInternal.ldgConfig3 = 0;
|
||||
fmgc.FMGCInternal.ldgConfigFull = 1;
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
|
|
@ -6,16 +6,18 @@ var perfCLBInput = func(key, i) {
|
|||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L2") {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/cost-index", 0);
|
||||
setprop("/FMGC/internal/cost-index-set", 0);
|
||||
fmgc.FMGCInternal.costIndex = 0;
|
||||
fmgc.FMGCInternal.costIndexSet = 0;
|
||||
fmgc.FMGCNodes.costIndex.setValue(0);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
var ci = int(scratchpad);
|
||||
var cis = size(scratchpad);
|
||||
if (cis >= 1 and cis <= 3) {
|
||||
if (ci != nil and ci >= 0 and ci <= 999) {
|
||||
setprop("/FMGC/internal/cost-index", ci);
|
||||
setprop("/FMGC/internal/cost-index-set", 1);
|
||||
fmgc.FMGCInternal.costIndex = ci;
|
||||
fmgc.FMGCInternal.costIndexSet = 1;
|
||||
fmgc.FMGCNodes.costIndex.setValue(fmgc.FMGCInternal.costIndex);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -25,17 +27,17 @@ var perfCLBInput = func(key, i) {
|
|||
}
|
||||
}
|
||||
} else if (key == "L5") {
|
||||
if (getprop("/FMGC/status/phase") == 2) {
|
||||
if (fmgc.FMGCInternal.phase == 2) {
|
||||
setprop("MCDU[" ~ i ~ "]/page", "PERFTO");
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "L6") {
|
||||
if (getprop("/FMGC/status/phase") == 2) {
|
||||
if (fmgc.FMGCInternal.phase == 2) {
|
||||
if (getprop("/FMGC/internal/activate-once") == 1) {
|
||||
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
||||
setprop("/FMGC/internal/activate-twice", 1);
|
||||
setprop("/FMGC/status/phase", 5);
|
||||
fmgc.FMGCInternal.phase = 5;
|
||||
setprop("/FMGC/internal/decel", 1);
|
||||
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
||||
} else {
|
||||
|
|