Merge branch '3D' into cpdlc
This commit is contained in:
commit
9c7e8350df
102 changed files with 7119 additions and 3218 deletions
|
@ -1,230 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<PropertyList include="A320-main.xml">
|
||||
|
||||
<sim>
|
||||
<description>Airbus A320-111 (CFM56-5A1)</description>
|
||||
<flight-model>jsb</flight-model>
|
||||
<aero>A320-100-CFM</aero>
|
||||
<variant-of>A320-200-IAE</variant-of>
|
||||
<model>
|
||||
<path>Aircraft/A320-family/Models/A320-100-CFM.xml</path>
|
||||
<livery>
|
||||
<file>Airbus</file>
|
||||
</livery>
|
||||
<livery-dir type="string">Aircraft/A320-family/Models/Liveries/A320/CFM-100</livery-dir>
|
||||
</model>
|
||||
|
||||
<sound>
|
||||
<path>Aircraft/A320-family/Sounds/cfm56-sound.xml</path>
|
||||
</sound>
|
||||
|
||||
<chase-distance-m type="double" archive="y">-60.0</chase-distance-m>
|
||||
<view n="0">
|
||||
<name>Captain View</name>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
<x-offset-m archive="y">-0.45</x-offset-m>
|
||||
<y-offset-m archive="y">0.545</y-offset-m>
|
||||
<z-offset-m archive="y">-16.193</z-offset-m>
|
||||
<default-field-of-view-deg type="double">63</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">0</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="100">
|
||||
<name>First Officer View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">0.45</x-offset-m>
|
||||
<y-offset-m archive="y">0.545</y-offset-m>
|
||||
<z-offset-m archive="y">-16.193</z-offset-m>
|
||||
<default-field-of-view-deg type="double">63</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">0</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="101">
|
||||
<name>Overhead Panel View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">0</x-offset-m>
|
||||
<y-offset-m archive="y">0.545</y-offset-m>
|
||||
<z-offset-m archive="y">-16.163</z-offset-m>
|
||||
<default-field-of-view-deg type="double">115</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">0</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">65.5</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="102">
|
||||
<name>Forward Pedestal View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">0.545</y-offset-m>
|
||||
<z-offset-m archive="y">-16.593</z-offset-m>
|
||||
<default-field-of-view-deg type="double">63</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">0</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">-76</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="103">
|
||||
<name>Aft Pedestal View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">0.545</y-offset-m>
|
||||
<z-offset-m archive="y">-16.243</z-offset-m>
|
||||
<default-field-of-view-deg type="double">63</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">0</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">-82</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="104">
|
||||
<name>FCU Panel View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">0.545</y-offset-m>
|
||||
<z-offset-m archive="y">-16.193</z-offset-m>
|
||||
<default-field-of-view-deg type="double">52</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">0</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="105">
|
||||
<name>Left Front View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">-2.18</x-offset-m>
|
||||
<y-offset-m archive="y">0.488</y-offset-m>
|
||||
<z-offset-m archive="y">-6.79</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">117.488</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="106">
|
||||
<name>Right Front View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">2.18</x-offset-m>
|
||||
<y-offset-m archive="y">0.488</y-offset-m>
|
||||
<z-offset-m archive="y">-6.79</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">242.512</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="107">
|
||||
<name>Left Mid View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">-2.20</x-offset-m>
|
||||
<y-offset-m archive="y">0.448</y-offset-m>
|
||||
<z-offset-m archive="y">-1.69</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">111</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="108">
|
||||
<name>Right Mid View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">2.20</x-offset-m>
|
||||
<y-offset-m archive="y">0.448</y-offset-m>
|
||||
<z-offset-m archive="y">-1.69</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">249</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<view n="109">
|
||||
<name>Left Aft View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">-2.13</x-offset-m>
|
||||
<y-offset-m archive="y">0.450</y-offset-m>
|
||||
<z-offset-m archive="y">3.2</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">70</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
<!-- Walker is 110 and 111 -->
|
||||
<view n="112">
|
||||
<name>Right Aft View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
<config>
|
||||
<from-model type="bool">true</from-model>
|
||||
<x-offset-m archive="y">2.13</x-offset-m>
|
||||
<y-offset-m archive="y">0.450</y-offset-m>
|
||||
<z-offset-m archive="y">3.2</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">290</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
<systems n="0">
|
||||
<autopilot n="0">
|
||||
<path>Aircraft/A320-family/Systems/fadec-cfm.xml</path>
|
||||
</autopilot>
|
||||
<autopilot n="10">
|
||||
<path>Aircraft/A320-family/Systems/cfm56-sound.xml</path>
|
||||
</autopilot>
|
||||
</systems>
|
||||
|
||||
</sim>
|
||||
|
||||
<limits>
|
||||
<mass-and-balance> <!--Data source: TCDS WV 002 (Issue 12) -->
|
||||
<maximum-takeoff-mass-lbs>150000</maximum-takeoff-mass-lbs>
|
||||
<maximum-landing-mass-lbs>138900</maximum-landing-mass-lbs>
|
||||
<maximum-zero-fuel-mass-lbs>131840</maximum-zero-fuel-mass-lbs>
|
||||
</mass-and-balance>
|
||||
</limits>
|
||||
|
||||
<options n="0">
|
||||
<eng type="string">CFM</eng>
|
||||
<maxblock type="double">52.3</maxblock>
|
||||
<maxflap type="int">35</maxflap>
|
||||
</options>
|
||||
|
||||
</PropertyList>
|
298
A320-100-CFM.xml
298
A320-100-CFM.xml
|
@ -1,298 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<fdm_config name="A320" version="2.0" release="BETA">
|
||||
|
||||
<fileheader>
|
||||
<author>Joshua Davidson (Octal450)</author>
|
||||
<version>Pre V1.0</version>
|
||||
<description>A32X FDE</description>
|
||||
</fileheader>
|
||||
|
||||
<metrics file="Systems/a320-metrics"/>
|
||||
|
||||
<mass_balance>
|
||||
<ixx unit="SLUG*FT2">611903</ixx>
|
||||
<iyy unit="SLUG*FT2">1735389</iyy>
|
||||
<izz unit="SLUG*FT2">1401293</izz>
|
||||
<ixy unit="SLUG*FT2">0</ixy>
|
||||
<ixz unit="SLUG*FT2">0</ixz>
|
||||
<iyz unit="SLUG*FT2">0</iyz>
|
||||
<emptywt unit="LBS">95087.5</emptywt>
|
||||
|
||||
<location name="CG" unit="M">
|
||||
<x>-2.4335</x> <!-- 28.5% MAC -->
|
||||
<y>0</y>
|
||||
<z>-0.75</z>
|
||||
</location>
|
||||
|
||||
<pointmass name="Crew">
|
||||
<weight unit="LBS">320</weight>
|
||||
<location name="POINTMASS" unit="M">
|
||||
<x>-15.44</x>
|
||||
<y>0</y>
|
||||
<z>0.3</z>
|
||||
</location>
|
||||
</pointmass>
|
||||
|
||||
<pointmass name="Forward Cabin">
|
||||
<weight unit="LBS">3722</weight>
|
||||
<location name="POINTMASS" unit="M">
|
||||
<x>-11.8</x>
|
||||
<y>0</y>
|
||||
<z>0.3</z>
|
||||
</location>
|
||||
</pointmass>
|
||||
|
||||
<pointmass name="Center Cabin">
|
||||
<weight unit="LBS">11361</weight>
|
||||
<location name="POINTMASS" unit="M">
|
||||
<x>-3.3</x>
|
||||
<y>0</y>
|
||||
<z>0.3</z>
|
||||
</location>
|
||||
</pointmass>
|
||||
|
||||
<pointmass name="Aft Cabin">
|
||||
<weight unit="LBS">8422</weight>
|
||||
<location name="POINTMASS" unit="M">
|
||||
<x>4.3</x>
|
||||
<y>0</y>
|
||||
<z>0.3</z>
|
||||
</location>
|
||||
</pointmass>
|
||||
|
||||
<pointmass name="Fwd Cargo">
|
||||
<weight unit="LBS">3000</weight>
|
||||
<location name="POINTMASS" unit="M">
|
||||
<x>-7.8</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</location>
|
||||
</pointmass>
|
||||
|
||||
<pointmass name="Aft Cargo">
|
||||
<weight unit="LBS">3000</weight>
|
||||
<location name="POINTMASS" unit="M">
|
||||
<x>-2.1</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</location>
|
||||
</pointmass>
|
||||
|
||||
<pointmass name="Aft Bulk Cargo">
|
||||
<weight unit="LBS">0</weight>
|
||||
<location name="POINTMASS" unit="M">
|
||||
<x>7.1</x>
|
||||
<y>0</y>
|
||||
<z>-1</z>
|
||||
</location>
|
||||
</pointmass>
|
||||
</mass_balance>
|
||||
|
||||
<ground_reactions file="Systems/a320-ground-reactions"/>
|
||||
|
||||
<propulsion>
|
||||
<engine file="cfm56_5a1_1">
|
||||
<location unit="M">
|
||||
<x>-5.34904</x>
|
||||
<y>-5.755</y>
|
||||
<z>-1.04768</z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll>0.0</roll>
|
||||
<pitch>2.2</pitch>
|
||||
<yaw>1</yaw>
|
||||
</orient>
|
||||
<feed>5</feed>
|
||||
<thruster file="direct">
|
||||
<location unit="M">
|
||||
<x>-5.34904</x>
|
||||
<y>-5.755</y>
|
||||
<z>-1.04768</z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll>0.0</roll>
|
||||
<pitch>2.2</pitch>
|
||||
<yaw>1</yaw>
|
||||
</orient>
|
||||
</thruster>
|
||||
</engine>
|
||||
|
||||
<engine file="cfm56_5a1_2">
|
||||
<location unit="M">
|
||||
<x>-5.34904</x>
|
||||
<y>5.755</y>
|
||||
<z>-1.04768</z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll>0.0</roll>
|
||||
<pitch>2.2</pitch>
|
||||
<yaw>-1</yaw>
|
||||
</orient>
|
||||
<feed>6</feed>
|
||||
<thruster file="direct">
|
||||
<location unit="M">
|
||||
<x>-5.34904</x>
|
||||
<y>5.755</y>
|
||||
<z>-1.04768</z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll>0.0</roll>
|
||||
<pitch>2.2</pitch>
|
||||
<yaw>-1</yaw>
|
||||
</orient>
|
||||
</thruster>
|
||||
</engine>
|
||||
|
||||
<engine file="APS3200">
|
||||
<location unit="M">
|
||||
<x>38.9</x>
|
||||
<y>0</y>
|
||||
<z>0.95</z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll>0.0</roll>
|
||||
<pitch>0.0</pitch>
|
||||
<yaw>0.0</yaw>
|
||||
</orient>
|
||||
<feed>7</feed>
|
||||
<thruster file="direct">
|
||||
<location unit="M">
|
||||
<x>38.9</x>
|
||||
<y>0</y>
|
||||
<z>0.95</z>
|
||||
</location>
|
||||
<orient unit="DEG">
|
||||
<roll>0.0</roll>
|
||||
<pitch>0.0</pitch>
|
||||
<yaw>0.0</yaw>
|
||||
</orient>
|
||||
</thruster>
|
||||
</engine>
|
||||
|
||||
<tank type="FUEL"> <!-- Outer Left Wing Tank -->
|
||||
<location unit="M">
|
||||
<x>-2.4335</x>
|
||||
<y>-7.0291</y>
|
||||
<z>-0.75</z>
|
||||
</location>
|
||||
<capacity unit="LBS">1523</capacity>
|
||||
<contents unit="LBS">1523</contents>
|
||||
<unusable-volume unit="LTR">4</unusable-volume>
|
||||
<priority>1</priority>
|
||||
<density unit="LBS/GAL">6.71</density>
|
||||
<temperature>50</temperature>
|
||||
</tank>
|
||||
<tank type="FUEL"> <!-- Inner Left Wing Tank -->
|
||||
<location unit="M">
|
||||
<x>-2.4335</x>
|
||||
<y>-4.1029</y>
|
||||
<z>-0.75</z>
|
||||
</location>
|
||||
<capacity unit="LBS">12272.9</capacity>
|
||||
<contents unit="LBS">6000</contents>
|
||||
<unusable-volume unit="LTR">28</unusable-volume>
|
||||
<priority>1</priority>
|
||||
<density unit="LBS/GAL">6.71</density>
|
||||
<temperature>50</temperature>
|
||||
</tank>
|
||||
<tank type="FUEL"> <!-- Center Tank - wing box may be modified to center fuel tank on the -100 so we have a center tank. Or mostly because its easier... -->
|
||||
<location unit="M">
|
||||
<x>-2.4335</x>
|
||||
<y>0</y>
|
||||
<z>-0.75</z>
|
||||
</location>
|
||||
<capacity unit="LBS">14623</capacity>
|
||||
<contents unit="LBS">42</contents>
|
||||
<unusable-volume unit="LTR">23.2</unusable-volume>
|
||||
<priority>1</priority>
|
||||
<density unit="LBS/GAL">6.71</density>
|
||||
<temperature>50</temperature>
|
||||
</tank>
|
||||
<tank type="FUEL"> <!-- Inner Right Wing Tank -->
|
||||
<location unit="M">
|
||||
<x>-2.4335</x>
|
||||
<y>4.1029</y>
|
||||
<z>-0.75</z>
|
||||
</location>
|
||||
<capacity unit="LBS">12272.9</capacity>
|
||||
<contents unit="LBS">6000</contents>
|
||||
<unusable-volume unit="LTR">28</unusable-volume>
|
||||
<priority>1</priority>
|
||||
<density unit="LBS/GAL">6.71</density>
|
||||
<temperature>50</temperature>
|
||||
</tank>
|
||||
<tank type="FUEL"> <!-- Outer Right Wing Tank -->
|
||||
<location unit="M">
|
||||
<x>-2.4335</x>
|
||||
<y>7.0291</y>
|
||||
<z>-0.75</z>
|
||||
</location>
|
||||
<capacity unit="LBS">1523</capacity>
|
||||
<contents unit="LBS">1523</contents>
|
||||
<unusable-volume unit="LTR">4</unusable-volume>
|
||||
<priority>1</priority>
|
||||
<density unit="LBS/GAL">6.71</density>
|
||||
<temperature>50</temperature>
|
||||
</tank>
|
||||
<tank type="FUEL"> <!-- Engine 1 Pipes -->
|
||||
<location unit="M">
|
||||
<x>-2.4335</x>
|
||||
<y>0</y>
|
||||
<z>-0.75</z>
|
||||
</location>
|
||||
<capacity unit="LBS">10</capacity>
|
||||
<contents unit="LBS">0</contents>
|
||||
<priority>1</priority>
|
||||
<density unit="LBS/GAL">6.71</density>
|
||||
</tank>
|
||||
<tank type="FUEL"> <!-- Engine 2 Pipes -->
|
||||
<location unit="M">
|
||||
<x>-2.4335</x>
|
||||
<y>0</y>
|
||||
<z>-0.75</z>
|
||||
</location>
|
||||
<capacity unit="LBS">10</capacity>
|
||||
<contents unit="LBS">0</contents>
|
||||
<priority>1</priority>
|
||||
<density unit="LBS/GAL">6.71</density>
|
||||
</tank>
|
||||
<tank type="FUEL"> <!-- APU Pipes -->
|
||||
<location unit="M">
|
||||
<x>-2.4335</x>
|
||||
<y>0</y>
|
||||
<z>-0.75</z>
|
||||
</location>
|
||||
<capacity unit="LBS">10</capacity>
|
||||
<contents unit="LBS">0</contents>
|
||||
<priority>1</priority>
|
||||
<density unit="LBS/GAL">6.71</density>
|
||||
</tank>
|
||||
</propulsion>
|
||||
|
||||
<system file="a320-libraries"/>
|
||||
<system file="glass-effect"/>
|
||||
<system file="a320-fbw"/>
|
||||
<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"/>
|
||||
|
||||
</fdm_config>
|
|
@ -206,9 +206,9 @@
|
|||
<autopilot n="0">
|
||||
<path>Aircraft/A320-family/Systems/fadec-cfm.xml</path>
|
||||
</autopilot>
|
||||
<autopilot n="10">
|
||||
<property-rule n="100">
|
||||
<path>Aircraft/A320-family/Systems/cfm56-sound.xml</path>
|
||||
</autopilot>
|
||||
</property-rule>
|
||||
</systems>
|
||||
|
||||
</sim>
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
<ground_reactions file="Systems/a320-ground-reactions"/>
|
||||
|
||||
<propulsion>
|
||||
<engine file="cfm56_5b4_1">
|
||||
<engine file="cfm56-5b4_1">
|
||||
<location unit="M">
|
||||
<x>-5.34904</x>
|
||||
<y>-5.755</y>
|
||||
|
@ -120,7 +120,7 @@
|
|||
</thruster>
|
||||
</engine>
|
||||
|
||||
<engine file="cfm56_5b4_2">
|
||||
<engine file="cfm56-5b4_2">
|
||||
<location unit="M">
|
||||
<x>-5.34904</x>
|
||||
<y>5.755</y>
|
||||
|
@ -276,6 +276,7 @@
|
|||
<system file="glass-effect"/>
|
||||
<system file="a320-fbw"/>
|
||||
<system file="a320-fcs"/>
|
||||
<system file="a320-cfm56-5b4-engine-fadec"/>
|
||||
<system file="a320-fuel"/>
|
||||
<system file="a320-fwc"/>
|
||||
<system file="a320-fwc-phases"/>
|
||||
|
|
|
@ -206,9 +206,9 @@
|
|||
<autopilot n="0">
|
||||
<path>Aircraft/A320-family/Systems/fadec-iae.xml</path>
|
||||
</autopilot>
|
||||
<autopilot n="10">
|
||||
<property-rule n="100">
|
||||
<path>Aircraft/A320-family/Systems/v2500-sound.xml</path>
|
||||
</autopilot>
|
||||
</property-rule>
|
||||
</systems>
|
||||
|
||||
</sim>
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
<ground_reactions file="Systems/a320-ground-reactions"/>
|
||||
|
||||
<propulsion>
|
||||
<engine file="v2527_a5_1">
|
||||
<engine file="v2527-a5_1">
|
||||
<location unit="M">
|
||||
<x>-5.34904</x>
|
||||
<y>-5.755</y>
|
||||
|
@ -120,7 +120,7 @@
|
|||
</thruster>
|
||||
</engine>
|
||||
|
||||
<engine file="v2527_a5_2">
|
||||
<engine file="v2527-a5_2">
|
||||
<location unit="M">
|
||||
<x>-5.34904</x>
|
||||
<y>5.755</y>
|
||||
|
|
|
@ -253,15 +253,15 @@
|
|||
<path>Aircraft/A320-family/Systems/pfd.xml</path>
|
||||
</autopilot>
|
||||
<!-- 10 is sound -->
|
||||
<autopilot n="11">
|
||||
<property-rule n="101">
|
||||
<path>Aircraft/A320-family/Systems/sound-common.xml</path>
|
||||
</autopilot>
|
||||
<autopilot n="12">
|
||||
</property-rule>
|
||||
<property-rule n="110">
|
||||
<path>Aircraft/A320-family/Systems/a320-lights-proprules.xml</path>
|
||||
</autopilot>
|
||||
<autopilot n="13">
|
||||
</property-rule>
|
||||
<property-rule n="111">
|
||||
<path>Aircraft/A320-family/Systems/ecam-proprules.xml</path>
|
||||
</autopilot>
|
||||
</property-rule>
|
||||
<path>Aircraft/A320-family/Systems/pitot-static.xml</path>
|
||||
</systems>
|
||||
|
||||
|
@ -674,6 +674,14 @@
|
|||
<line8 type="string"></line8>
|
||||
</rightmsg>
|
||||
<warning-phase type="int">0</warning-phase>
|
||||
<phases>
|
||||
<timer>
|
||||
<ldg-inhibit type="int">0</ldg-inhibit>
|
||||
<ldg-inhibit-output type="double">0</ldg-inhibit-output>
|
||||
<to-inhibit type="int">0</to-inhibit>
|
||||
<to-inhibit-output type="double">0</to-inhibit-output>
|
||||
</timer>
|
||||
</phases>
|
||||
</ECAM>
|
||||
|
||||
<environment>
|
||||
|
@ -786,8 +794,9 @@
|
|||
|
||||
<FMGC n="0">
|
||||
<active-fmgc-channel type="int">0</active-fmgc-channel>
|
||||
<internal>
|
||||
<internal n="0">
|
||||
<cost-index type="int">0</cost-index>
|
||||
<flex type="int">45</flex>
|
||||
<to-state type="bool">0</to-state>
|
||||
</internal>
|
||||
<simbrief-username type="string"></simbrief-username>
|
||||
|
@ -801,6 +810,8 @@
|
|||
<atc>
|
||||
<system-knob type="int">0</system-knob>
|
||||
<mode-knob type="int">0</mode-knob>
|
||||
<abv-blw type="int">0</abv-blw>
|
||||
<thrt-all type="int">0</thrt-all>
|
||||
</atc>
|
||||
<apu>
|
||||
<agent-btn type="bool">0</agent-btn>
|
||||
|
@ -945,7 +956,7 @@
|
|||
</fuel>
|
||||
<gear>
|
||||
<brake-fans type="bool">0</brake-fans>
|
||||
<brake-parking type="bool">0</brake-parking>
|
||||
<brake-parking type="bool">1</brake-parking>
|
||||
<tiller-cmd-norm type="double">0</tiller-cmd-norm>
|
||||
<tiller-enabled type="bool">0</tiller-enabled>
|
||||
<nws-switch type="double">1</nws-switch>
|
||||
|
@ -1379,11 +1390,14 @@
|
|||
<spoiler-r4 type="bool">0</spoiler-r4>
|
||||
<spoiler-r5 type="bool">0</spoiler-r5>
|
||||
</spoilers>
|
||||
<fire>
|
||||
<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>
|
||||
<lavatory-fire type="bool">0</lavatory-fire>
|
||||
</fire>
|
||||
</failures>
|
||||
|
||||
<fctl n="0">
|
||||
|
@ -1416,6 +1430,9 @@
|
|||
<temperature type="double">0</temperature>
|
||||
</fwd>
|
||||
</cargo>
|
||||
<lavatory>
|
||||
<temperature type="double">0</temperature>
|
||||
</lavatory>
|
||||
</fire>
|
||||
<fuel n="0">
|
||||
<only-use-ctr-tank type="bool">0</only-use-ctr-tank>
|
||||
|
@ -1863,8 +1880,9 @@
|
|||
<az-limit-deg type="int">30</az-limit-deg>
|
||||
<elev-step-deg type="int">10</elev-step-deg>
|
||||
<elev-limit type="int">30</elev-limit>
|
||||
<max-range-m type="int">1219</max-range-m>
|
||||
<max-range-m type="int">1525</max-range-m>
|
||||
<serviceable type="bool">true</serviceable>
|
||||
<radar-altitude-ft type="double">0</radar-altitude-ft>
|
||||
</radar-altimeter>
|
||||
|
||||
<radar-altimeter n="1">
|
||||
|
@ -1877,8 +1895,9 @@
|
|||
<az-limit-deg type="int">30</az-limit-deg>
|
||||
<elev-step-deg type="int">10</elev-step-deg>
|
||||
<elev-limit type="int">30</elev-limit>
|
||||
<max-range-m type="int">1219</max-range-m>
|
||||
<max-range-m type="int">1525</max-range-m>
|
||||
<serviceable type="bool">true</serviceable>
|
||||
<radar-altitude-ft type="double">0</radar-altitude-ft>
|
||||
</radar-altimeter>
|
||||
|
||||
<wxr>
|
||||
|
@ -4713,10 +4732,7 @@
|
|||
<file>Aircraft/A320-family/Nasal/MCDU/ROUTESELECTION.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/INITB.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/FUELPRED.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/PROGTO.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/PROGCLB.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/PROGCRZ.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/PROGDES.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/PROG.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/PERFAPPR.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/PERFCLB.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/PERFCRZ.nas</file>
|
||||
|
@ -4728,6 +4744,11 @@
|
|||
<file>Aircraft/A320-family/Nasal/MCDU/DATA2.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/STATUS.nas</file>
|
||||
</mcdu>
|
||||
<!-- Traffic layer from E-jet -->
|
||||
<traffic>
|
||||
<file>Aircraft/A320-family/Nasal/Displays/projection.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Displays/traffic.nas</file>
|
||||
</traffic>
|
||||
<!-- Canvas -->
|
||||
<canvas_pfd>
|
||||
<file>Aircraft/A320-family/Models/Instruments/PFD/PFD.nas</file>
|
||||
|
|
|
@ -206,9 +206,9 @@
|
|||
<autopilot n="0">
|
||||
<path>Aircraft/A320-family/Systems/fadec-cfm.xml</path>
|
||||
</autopilot>
|
||||
<autopilot n="10">
|
||||
<property-rule n="100">
|
||||
<path>Aircraft/A320-family/Systems/leapx-sound.xml</path>
|
||||
</autopilot>
|
||||
</property-rule>
|
||||
</systems>
|
||||
|
||||
</sim>
|
||||
|
|
|
@ -206,9 +206,9 @@
|
|||
<autopilot n="0"> <!-- Apparently PW PurePower uses N1, not EPR.... sooo I use CFM FADEC -->
|
||||
<path>Aircraft/A320-family/Systems/fadec-cfm.xml</path>
|
||||
</autopilot>
|
||||
<autopilot n="10">
|
||||
<property-rule n="100">
|
||||
<path>Aircraft/A320-family/Systems/leapx-sound.xml</path>
|
||||
</autopilot>
|
||||
</property-rule>
|
||||
</systems>
|
||||
|
||||
</sim>
|
||||
|
|
|
@ -56,10 +56,12 @@ var failResetOld = func {
|
|||
setprop("/systems/failures/pump-green", 0);
|
||||
setprop("/systems/failures/pump-yellow-eng", 0);
|
||||
setprop("/systems/failures/pump-yellow-elec", 0);
|
||||
setprop("/systems/failures/cargo-aft-fire", 0);
|
||||
setprop("/systems/failures/cargo-fwd-fire", 0);
|
||||
setprop("/systems/failures/engine-left-fire", 0);
|
||||
setprop("/systems/failures/engine-right-fire", 0);
|
||||
setprop("/systems/failures/fire/cargo-aft-fire", 0);
|
||||
setprop("/systems/failures/fire/cargo-fwd-fire", 0);
|
||||
setprop("/systems/failures/fire/engine-left-fire", 0);
|
||||
setprop("/systems/failures/fire/apu-fire", 0);
|
||||
setprop("/systems/failures/fire/engine-right-fire", 0);
|
||||
setprop("/systems/failures/fire/lavatory-fire", 0);
|
||||
}
|
||||
|
||||
failResetOld();
|
||||
|
@ -80,6 +82,7 @@ setprop("/systems/acconfig/options/wxr-server", "noaa");
|
|||
setprop("/systems/acconfig/options/welcome-skip", 0);
|
||||
setprop("/systems/acconfig/options/no-rendering-warn", 0);
|
||||
setprop("/systems/acconfig/options/save-state", 0);
|
||||
setprop("/systems/acconfig/options/hide-canvas-outside", 0);
|
||||
setprop("/systems/acconfig/options/seperate-tiller-axis", 0);
|
||||
setprop("/systems/acconfig/options/pfd-rate", 1);
|
||||
setprop("/systems/acconfig/options/nd-rate", 1);
|
||||
|
@ -235,6 +238,7 @@ var readSettings = func {
|
|||
setprop("/FMGC/simbrief-username", getprop("/systems/acconfig/options/simbrief-username"));
|
||||
setprop("/systems/atsu/atis-server", getprop("/systems/acconfig/options/atis-server"));
|
||||
setprop("/systems/atsu/wxr-server", getprop("/systems/acconfig/options/wxr-server"));
|
||||
setprop("/options/hide-canvas-outside", getprop("/systems/acconfig/options/hide-canvas-outside"));
|
||||
}
|
||||
|
||||
var writeSettings = func {
|
||||
|
@ -249,6 +253,7 @@ var writeSettings = func {
|
|||
setprop("/systems/acconfig/options/simbrief-username", getprop("/FMGC/simbrief-username"));
|
||||
setprop("/systems/acconfig/options/atis-server", getprop("/systems/atsu/atis-server"));
|
||||
setprop("/systems/acconfig/options/wxr-server", getprop("/systems/atsu/wxr-server"));
|
||||
setprop("/systems/acconfig/options/hide-canvas-outside", getprop("/options/hide-canvas-outside"));
|
||||
io.write_properties(getprop("/sim/fg-home") ~ "/Export/A320-family-config.xml", "/systems/acconfig/options");
|
||||
}
|
||||
|
||||
|
@ -297,6 +302,7 @@ var colddark = func {
|
|||
setprop("/controls/lighting/overhead-panel-knb", 0);
|
||||
atc.transponderPanel.modeSwitch(1);
|
||||
libraries.systemsInit();
|
||||
libraries.variousReset();
|
||||
failResetOld();
|
||||
if (getprop("/engines/engine[1]/n2-actual") < 2) {
|
||||
colddark_b();
|
||||
|
@ -342,6 +348,7 @@ var beforestart = func {
|
|||
setprop("/controls/gear/gear-down", 1);
|
||||
setprop("/controls/flight/elevator-trim", 0);
|
||||
libraries.systemsInit();
|
||||
libraries.variousReset();
|
||||
failResetOld();
|
||||
|
||||
# Now the Startup!
|
||||
|
@ -399,6 +406,9 @@ var beforestart_b = func {
|
|||
setprop("/controls/adirs/mcducbtn", 1);
|
||||
setprop("/controls/switches/beacon", 1);
|
||||
setprop("/controls/lighting/nav-lights-switch", 1);
|
||||
setprop("/controls/switches/no-smoking-sign", 0.5);
|
||||
setprop("/controls/switches/seatbelt-sign", 1);
|
||||
setprop("/controls/switches/emer-lights", 0.5);
|
||||
setprop("/controls/radio/rmp[0]/on", 1);
|
||||
setprop("/controls/radio/rmp[1]/on", 1);
|
||||
setprop("/controls/radio/rmp[2]/on", 1);
|
||||
|
@ -433,6 +443,7 @@ var taxi = func {
|
|||
setprop("/controls/gear/gear-down", 1);
|
||||
setprop("/controls/flight/elevator-trim", 0);
|
||||
libraries.systemsInit();
|
||||
libraries.variousReset();
|
||||
failResetOld();
|
||||
|
||||
# Now the Startup!
|
||||
|
@ -491,6 +502,9 @@ var taxi_b = func {
|
|||
setprop("/controls/switches/beacon", 1);
|
||||
setprop("/controls/switches/wing-lights", 1);
|
||||
setprop("/controls/lighting/nav-lights-switch", 1);
|
||||
setprop("/controls/switches/no-smoking-sign", 0.5);
|
||||
setprop("/controls/switches/seatbelt-sign", 1);
|
||||
setprop("/controls/switches/emer-lights", 0.5);
|
||||
setprop("/controls/radio/rmp[0]/on", 1);
|
||||
setprop("/controls/radio/rmp[1]/on", 1);
|
||||
setprop("/controls/radio/rmp[2]/on", 1);
|
||||
|
|
|
@ -560,7 +560,7 @@
|
|||
<stretch type="bool">true</stretch>
|
||||
</hrule>
|
||||
<text>
|
||||
<label>Cargo Fire</label>
|
||||
<label>Fire</label>
|
||||
</text>
|
||||
<hrule>
|
||||
<stretch type="bool">true</stretch>
|
||||
|
@ -568,9 +568,9 @@
|
|||
</group>
|
||||
|
||||
<checkbox>
|
||||
<label>AFT</label>
|
||||
<label>AFT CRG</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/cargo-aft-fire</property>
|
||||
<property>/systems/failures/fire/cargo-aft-fire</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -578,14 +578,25 @@
|
|||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>FWD</label>
|
||||
<label>FWD CRG</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/cargo-fwd-fire</property>
|
||||
<property>/systems/failures/fire/cargo-fwd-fire</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>LAV</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/fire/lavatory-fire</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<group>
|
||||
<layout>hbox</layout>
|
||||
|
||||
|
@ -603,7 +614,7 @@
|
|||
<checkbox>
|
||||
<label>Left Engine</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/engine-left-fire</property>
|
||||
<property>/systems/failures/fire/engine-left-fire</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -613,7 +624,7 @@
|
|||
<checkbox>
|
||||
<label>APU</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/apu-fire</property>
|
||||
<property>/systems/failures/fire/apu-fire</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -623,7 +634,7 @@
|
|||
<checkbox>
|
||||
<label>Right Engine</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/engine-right-fire</property>
|
||||
<property>/systems/failures/fire/engine-right-fire</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
|
|
@ -343,6 +343,26 @@
|
|||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Disable Canvas in External Views</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/acconfig/options/hide-canvas-outside</property>
|
||||
<binding>
|
||||
<command>property-toggle</command>
|
||||
<property>options/hide-canvas-outside</property>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
acconfig.writeSettings();
|
||||
</script>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<!-- TODO there might be a better way to formulate this. -->
|
||||
<label>Save States Between Sessions</label>
|
||||
|
|
128
Engines/cfm56-5b4_1.xml
Normal file
128
Engines/cfm56-5b4_1.xml
Normal file
|
@ -0,0 +1,128 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
|
||||
|
||||
<turbine_engine name="CFM56-5B4">
|
||||
|
||||
<milthrust>27000</milthrust>
|
||||
<tsfc>0.445</tsfc>
|
||||
<bleed>0.03</bleed>
|
||||
<ignitionn1>0.6</ignitionn1>
|
||||
<ignitionn2>22.2</ignitionn2>
|
||||
<n1spinup>0.05</n1spinup>
|
||||
<n2spinup>1.85</n2spinup>
|
||||
<n1startrate>0.573</n1startrate>
|
||||
<n2startrate>1.127</n2startrate>
|
||||
<idlen1>18.9</idlen1>
|
||||
<idlen2>59.4</idlen2>
|
||||
<maxn1>104.0</maxn1>
|
||||
<maxn2>105.0</maxn2>
|
||||
<augmented>0</augmented>
|
||||
<injected>0</injected>
|
||||
|
||||
<function name="N1SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N1SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolUp"> <!-- N1 to N2 factor 0.535840188014101 -->
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 0.6
|
||||
28 1.6
|
||||
46 5.2
|
||||
68 8.3
|
||||
80 10.5
|
||||
94 11.5
|
||||
103 12.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolDown"> <!-- N1 to N2 factor 0.535840188014101 -->
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 0.6
|
||||
28 1.6
|
||||
46 5.2
|
||||
68 8.3
|
||||
80 10.5
|
||||
94 11.5
|
||||
103 12.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="IdleThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 0.0430 0.0458 0.0378 0.0684 0.0819 0.0793 0.0000
|
||||
0.2 0.0500 0.0291 0.0205 0.0514 0.0727 0.0729 0.0000
|
||||
0.4 0.0040 0.0047 0.0012 0.0412 0.0585 0.0671 0.0000
|
||||
0.6 0.0000 0.0000 0.0000 0.0000 0.0416 0.0518 0.0000
|
||||
0.8 0.0000 0.0000 0.0000 0.0000 0.0354 0.0468 0.0000
|
||||
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0352 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="MilThrust"> <!-- If you change this, make sure you update the table in the engine system file -->
|
||||
<product>
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
|
||||
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
|
||||
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
|
||||
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
|
||||
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
|
||||
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
|
||||
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
|
||||
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
<property>fadec/limit/rated-thrust-factor</property>
|
||||
<table> <!-- Thrust loss due to reverser angle -->
|
||||
<independentVar lookup="row">/engines/engine[0]/reverser-pos-norm</independentVar>
|
||||
<tableData>
|
||||
0.01 1.00
|
||||
1.00 0.65
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
</turbine_engine>
|
128
Engines/cfm56-5b4_2.xml
Normal file
128
Engines/cfm56-5b4_2.xml
Normal file
|
@ -0,0 +1,128 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
|
||||
|
||||
<turbine_engine name="CFM56-5B4">
|
||||
|
||||
<milthrust>27000</milthrust>
|
||||
<tsfc>0.445</tsfc>
|
||||
<bleed>0.03</bleed>
|
||||
<ignitionn1>0.6</ignitionn1>
|
||||
<ignitionn2>22.2</ignitionn2>
|
||||
<n1spinup>0.05</n1spinup>
|
||||
<n2spinup>1.85</n2spinup>
|
||||
<n1startrate>0.573</n1startrate>
|
||||
<n2startrate>1.127</n2startrate>
|
||||
<idlen1>18.9</idlen1>
|
||||
<idlen2>59.4</idlen2>
|
||||
<maxn1>104.0</maxn1>
|
||||
<maxn2>105.0</maxn2>
|
||||
<augmented>0</augmented>
|
||||
<injected>0</injected>
|
||||
|
||||
<function name="N1SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N1SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolUp"> <!-- N1 to N2 factor 0.535840188014101 -->
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 0.6
|
||||
28 1.6
|
||||
46 5.2
|
||||
68 8.3
|
||||
80 10.5
|
||||
94 11.5
|
||||
103 12.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolDown"> <!-- N1 to N2 factor 0.535840188014101 -->
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 0.6
|
||||
28 1.6
|
||||
46 5.2
|
||||
68 8.3
|
||||
80 10.5
|
||||
94 11.5
|
||||
103 12.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="IdleThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 0.0430 0.0458 0.0378 0.0684 0.0819 0.0793 0.0000
|
||||
0.2 0.0500 0.0291 0.0205 0.0514 0.0727 0.0729 0.0000
|
||||
0.4 0.0040 0.0047 0.0012 0.0412 0.0585 0.0671 0.0000
|
||||
0.6 0.0000 0.0000 0.0000 0.0000 0.0416 0.0518 0.0000
|
||||
0.8 0.0000 0.0000 0.0000 0.0000 0.0354 0.0468 0.0000
|
||||
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0352 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="MilThrust"> <!-- If you change this, make sure you update the table in the engine system file -->
|
||||
<product>
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
|
||||
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
|
||||
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
|
||||
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
|
||||
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
|
||||
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
|
||||
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
|
||||
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
<property>fadec/limit/rated-thrust-factor</property>
|
||||
<table> <!-- Thrust loss due to reverser angle -->
|
||||
<independentVar lookup="row">/engines/engine[1]/reverser-pos-norm</independentVar>
|
||||
<tableData>
|
||||
0.01 1.00
|
||||
1.00 0.65
|
||||
</tableData>
|
||||
</table>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
</turbine_engine>
|
|
@ -1,119 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<turbine_engine name="CFM56_5A1">
|
||||
|
||||
<!-- source https://www.youtube.com/watch?v=jnGfzv7Odh4 -->
|
||||
<milthrust> 25000 </milthrust>
|
||||
<tsfc> 0.445 </tsfc>
|
||||
<bleed> 0.03 </bleed>
|
||||
<ignitionn1> 0.6 </ignitionn1>
|
||||
<ignitionn2> 22.2</ignitionn2>
|
||||
<idlen1> 18.9 </idlen1>
|
||||
<idlen2> 59.4 </idlen2>
|
||||
<n1spinup> 0.05 </n1spinup>
|
||||
<n2spinup> 1.85 </n2spinup>
|
||||
<n1startrate> 0.573 </n1startrate>
|
||||
<n2startrate> 1.127 </n2startrate>
|
||||
<maxn1> 103.8 </maxn1>
|
||||
<maxn2> 101.4 </maxn2>
|
||||
<augmented> 0 </augmented>
|
||||
<injected> 0 </injected>
|
||||
|
||||
<function name="N1SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N1SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="IdleThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 0.0430 0.0458 0.0378 0.0684 0.0619 0.0693 0.0000
|
||||
0.2 0.0500 0.0291 0.0205 0.0514 0.0627 0.0629 0.0000
|
||||
0.4 0.0040 0.0047 0.0012 0.0412 0.0485 0.0571 0.0000
|
||||
0.6 0.0000 0.0000 0.0000 0.0000 0.0316 0.0418 0.0000
|
||||
0.8 0.0000 0.0000 0.0000 0.0000 0.0254 0.0368 0.0000
|
||||
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0252 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="MilThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
|
||||
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
|
||||
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
|
||||
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
|
||||
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
|
||||
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
|
||||
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
|
||||
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
</turbine_engine>
|
|
@ -1,119 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<turbine_engine name="CFM56_5A1">
|
||||
|
||||
<!-- source https://www.youtube.com/watch?v=jnGfzv7Odh4 -->
|
||||
<milthrust> 25000 </milthrust>
|
||||
<tsfc> 0.445 </tsfc>
|
||||
<bleed> 0.03 </bleed>
|
||||
<ignitionn1> 0.6 </ignitionn1>
|
||||
<ignitionn2> 22.2</ignitionn2>
|
||||
<idlen1> 18.9 </idlen1>
|
||||
<idlen2> 59.4 </idlen2>
|
||||
<n1spinup> 0.05 </n1spinup>
|
||||
<n2spinup> 1.85 </n2spinup>
|
||||
<n1startrate> 0.573 </n1startrate>
|
||||
<n2startrate> 1.127 </n2startrate>
|
||||
<maxn1> 103.8 </maxn1>
|
||||
<maxn2> 101.4 </maxn2>
|
||||
<augmented> 0 </augmented>
|
||||
<injected> 0 </injected>
|
||||
|
||||
<function name="N1SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N1SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="IdleThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 0.0430 0.0458 0.0378 0.0684 0.0619 0.0693 0.0000
|
||||
0.2 0.0500 0.0291 0.0205 0.0514 0.0627 0.0629 0.0000
|
||||
0.4 0.0040 0.0047 0.0012 0.0412 0.0485 0.0571 0.0000
|
||||
0.6 0.0000 0.0000 0.0000 0.0000 0.0316 0.0418 0.0000
|
||||
0.8 0.0000 0.0000 0.0000 0.0000 0.0254 0.0368 0.0000
|
||||
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0252 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="MilThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
|
||||
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
|
||||
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
|
||||
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
|
||||
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
|
||||
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
|
||||
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
|
||||
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
</turbine_engine>
|
|
@ -1,119 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<turbine_engine name="CFM56_5B4">
|
||||
|
||||
<!-- source https://www.youtube.com/watch?v=jnGfzv7Odh4 -->
|
||||
<milthrust> 27000 </milthrust>
|
||||
<tsfc> 0.445 </tsfc>
|
||||
<bleed> 0.03 </bleed>
|
||||
<ignitionn1> 0.6 </ignitionn1>
|
||||
<ignitionn2> 22.2</ignitionn2>
|
||||
<idlen1> 18.9 </idlen1>
|
||||
<idlen2> 59.4 </idlen2>
|
||||
<n1spinup> 0.05 </n1spinup>
|
||||
<n2spinup> 1.85 </n2spinup>
|
||||
<n1startrate> 0.573 </n1startrate>
|
||||
<n2startrate> 1.127 </n2startrate>
|
||||
<maxn1> 103.8 </maxn1>
|
||||
<maxn2> 101.4 </maxn2>
|
||||
<augmented> 0 </augmented>
|
||||
<injected> 0 </injected>
|
||||
|
||||
<function name="N1SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N1SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[0]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="IdleThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 0.0430 0.0458 0.0378 0.0684 0.0619 0.0693 0.0000
|
||||
0.2 0.0500 0.0291 0.0205 0.0514 0.0627 0.0629 0.0000
|
||||
0.4 0.0040 0.0047 0.0012 0.0412 0.0485 0.0571 0.0000
|
||||
0.6 0.0000 0.0000 0.0000 0.0000 0.0316 0.0418 0.0000
|
||||
0.8 0.0000 0.0000 0.0000 0.0000 0.0254 0.0368 0.0000
|
||||
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0252 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="MilThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
|
||||
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
|
||||
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
|
||||
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
|
||||
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
|
||||
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
|
||||
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
|
||||
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
</turbine_engine>
|
|
@ -1,119 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<turbine_engine name="CFM56_5B4">
|
||||
|
||||
<!-- source https://www.youtube.com/watch?v=jnGfzv7Odh4 -->
|
||||
<milthrust> 27000 </milthrust>
|
||||
<tsfc> 0.445 </tsfc>
|
||||
<bleed> 0.03 </bleed>
|
||||
<ignitionn1> 0.6 </ignitionn1>
|
||||
<ignitionn2> 22.2</ignitionn2>
|
||||
<idlen1> 18.9 </idlen1>
|
||||
<idlen2> 59.4 </idlen2>
|
||||
<n1spinup> 0.05 </n1spinup>
|
||||
<n2spinup> 1.85 </n2spinup>
|
||||
<n1startrate> 0.573 </n1startrate>
|
||||
<n2startrate> 1.127 </n2startrate>
|
||||
<maxn1> 103.8 </maxn1>
|
||||
<maxn2> 101.4 </maxn2>
|
||||
<augmented> 0 </augmented>
|
||||
<injected> 0 </injected>
|
||||
|
||||
<function name="N1SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N1SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolUp">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="N2SpoolDown">
|
||||
<table>
|
||||
<independentVar lookup="row">/engines/engine[1]/n1</independentVar>
|
||||
<tableData>
|
||||
24 1.1
|
||||
28 2.9
|
||||
46 9.7
|
||||
68 15.4
|
||||
80 19.6
|
||||
94 21.4
|
||||
103 23.6
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="IdleThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 0.0430 0.0458 0.0378 0.0684 0.0619 0.0693 0.0000
|
||||
0.2 0.0500 0.0291 0.0205 0.0514 0.0627 0.0629 0.0000
|
||||
0.4 0.0040 0.0047 0.0012 0.0412 0.0485 0.0571 0.0000
|
||||
0.6 0.0000 0.0000 0.0000 0.0000 0.0316 0.0418 0.0000
|
||||
0.8 0.0000 0.0000 0.0000 0.0000 0.0254 0.0368 0.0000
|
||||
1.0 0.0000 0.0000 0.0000 0.0000 0.0000 0.0252 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
<function name="MilThrust">
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
|
||||
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
|
||||
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
|
||||
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
|
||||
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
|
||||
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
|
||||
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
|
||||
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
|
||||
</turbine_engine>
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<turbine_engine name="V2527_A5">
|
||||
<turbine_engine name="V2527-A5">
|
||||
|
||||
<!-- data measured from https://www.youtube.com/watch?v=gPRQcYNRV_U -->
|
||||
<milthrust> 24800 </milthrust>
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<turbine_engine name="V2527_A5">
|
||||
<turbine_engine name="V2527-A5">
|
||||
|
||||
<!-- data measured from https://www.youtube.com/watch?v=gPRQcYNRV_U -->
|
||||
<milthrust> 24800 </milthrust>
|
|
@ -1,44 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<!-- Copyright (c) 2020 Josh Davidson (Octal450) -->
|
||||
|
||||
<PropertyList>
|
||||
<name>A320-100-CFM</name>
|
||||
<path>empty.ac</path> <!-- Livery system on MP multimodel -->
|
||||
|
||||
<model>
|
||||
<name>A320</name>
|
||||
<path>Aircraft/A320-family/Models/A320-common.xml</path>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>EnginesCFM</name>
|
||||
<path>Aircraft/A320-family/Models/Engines/XMLs/a320.cfm.xml</path>
|
||||
</model>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>Sharklet</object-name>
|
||||
<condition>
|
||||
<property>sim/multiplay/generic/int[12]</property>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>WingtipFence</object-name>
|
||||
<condition>
|
||||
<property>sim/multiplay/generic/int[12]</property>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<!-- Nasal code -->
|
||||
<nasal>
|
||||
<load>
|
||||
var livery_update = aircraft.livery_update.new("Aircraft/A320-family/Models/Liveries/A320/CFM-100");
|
||||
</load>
|
||||
<unload>
|
||||
livery_update.stop();
|
||||
</unload>
|
||||
</nasal>
|
||||
</PropertyList>
|
|
@ -3,14 +3,93 @@
|
|||
<name>reflection</name>
|
||||
<inherits-from>Effects/model-combined-deferred</inherits-from>
|
||||
<parameters>
|
||||
<reflection-enabled type="int">0</reflection-enabled>
|
||||
<reflection-dynamic type="int">0</reflection-dynamic>
|
||||
<reflection-enabled type="int">1</reflection-enabled>
|
||||
<reflection-dynamic type="int">1</reflection-dynamic>
|
||||
<reflect_map-enabled type="int">0</reflect_map-enabled>
|
||||
<reflection-correction type="float"><use>/sim/model/reflection/reflection-correction</use></reflection-correction>
|
||||
<reflection-type type="int">2</reflection-type>
|
||||
<ambient-correction type="float"><use>/sim/model/reflection/ambient-correction</use></ambient-correction>
|
||||
<lightmap-enabled type="int">0</lightmap-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-multi type="int">0</lightmap-multi>
|
||||
<normalmap-enabled type="int">0</normalmap-enabled>
|
||||
<normalmap-enabled type="int">1</normalmap-enabled>
|
||||
<texture n="2">
|
||||
<image>Aircraft/A320-family/Models/Effects/res/Fuse-Main-Normal.png</image>
|
||||
<filter>linear-mipmap-linear</filter>
|
||||
<wrap-s>clamp</wrap-s>
|
||||
<wrap-t>clamp</wrap-t>
|
||||
</texture>
|
||||
<lightmap-factor type="float" n="0"><use>sim/model/lights/logo-lights</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
<texture n="3">
|
||||
<image>Aircraft/A320-family/Models/Effects/res/fin-lightmap.png</image>
|
||||
<filter>linear-mipmap-linear</filter>
|
||||
<wrap-s>clamp</wrap-s>
|
||||
<wrap-t>clamp</wrap-t>
|
||||
<internal-format>normalized</internal-format>
|
||||
</texture>
|
||||
<texture n="5">
|
||||
<type>cubemap</type>
|
||||
<images>
|
||||
<positive-x>Aircraft/Generic/Effects/CubeMaps/fgfs-sky/1.png</positive-x>
|
||||
<negative-x>Aircraft/Generic/Effects/CubeMaps/fgfs-sky/4.png</negative-x>
|
||||
<positive-y>Aircraft/Generic/Effects/CubeMaps/fgfs-sky/2.png</positive-y>
|
||||
<negative-y>Aircraft/Generic/Effects/CubeMaps/fgfs-sky/3.png</negative-y>
|
||||
<positive-z>Aircraft/Generic/Effects/CubeMaps/fgfs-sky/6.png</positive-z>
|
||||
<negative-z>Aircraft/Generic/Effects/CubeMaps/fgfs-sky/5.png</negative-z>
|
||||
</images>
|
||||
</texture>
|
||||
</parameters>
|
||||
|
||||
<!-- ####################
|
||||
### NORMALMAP INCLUDE ###
|
||||
######################### -->
|
||||
<generate>
|
||||
<tangent type="int">6</tangent>
|
||||
<binormal type="int">7</binormal>
|
||||
</generate>
|
||||
<technique n="4">
|
||||
<pass>
|
||||
<program>
|
||||
<attribute>
|
||||
<name>tangent</name>
|
||||
<index>6</index>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>binormal</name>
|
||||
<index>7</index>
|
||||
</attribute>
|
||||
</program>
|
||||
</pass>
|
||||
</technique>
|
||||
<technique n="7">
|
||||
<pass>
|
||||
<program>
|
||||
<attribute>
|
||||
<name>tangent</name>
|
||||
<index>6</index>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>binormal</name>
|
||||
<index>7</index>
|
||||
</attribute>
|
||||
</program>
|
||||
</pass>
|
||||
</technique>
|
||||
<technique n="9">
|
||||
<pass>
|
||||
<program>
|
||||
<attribute>
|
||||
<name>tangent</name>
|
||||
<index>6</index>
|
||||
</attribute>
|
||||
<attribute>
|
||||
<name>binormal</name>
|
||||
<index>7</index>
|
||||
</attribute>
|
||||
</program>
|
||||
</pass>
|
||||
</technique>
|
||||
<!-- ########################
|
||||
### END NORMALMAP INCLUDE ###
|
||||
############################# -->
|
||||
</PropertyList>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<params>
|
||||
<n1>engines/engine[3]/n1</n1>
|
||||
<on-fire>systems/failures/engine-left-fire</on-fire>
|
||||
<on-fire>systems/failures/fire/engine-left-fire</on-fire>
|
||||
<contrail>engines/engine[0]/contrail</contrail>
|
||||
<reverser-pos-norm>sim/multiplay/generic/float[2]</reverser-pos-norm>
|
||||
</params>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
<params>
|
||||
<n1>engines/engine[4]/n1</n1>
|
||||
<on-fire>systems/failures/engine-right-fire</on-fire>
|
||||
<on-fire>systems/failures/fire/engine-right-fire</on-fire>
|
||||
<contrail>engines/engine[1]/contrail</contrail>
|
||||
<reverser-pos-norm>sim/multiplay/generic/float[3]</reverser-pos-norm>
|
||||
</params>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
<params>
|
||||
<n1>engines/engine[3]/n1</n1>
|
||||
<on-fire>systems/failures/engine-left-fire</on-fire>
|
||||
<on-fire>systems/failures/fire/engine-left-fire</on-fire>
|
||||
<contrail>engines/engine[0]/contrail</contrail>
|
||||
<reverser-pos-norm>sim/multiplay/generic/float[2]</reverser-pos-norm>
|
||||
</params>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
<params>
|
||||
<n1>engines/engine[4]/n1</n1>
|
||||
<on-fire>systems/failures/engine-right-fire</on-fire>
|
||||
<on-fire>systems/failures/fire/engine-right-fire</on-fire>
|
||||
<contrail>engines/engine[1]/contrail</contrail>
|
||||
<reverser-pos-norm>sim/multiplay/generic/float[3]</reverser-pos-norm>
|
||||
</params>
|
||||
|
|
|
@ -246,7 +246,7 @@
|
|||
<z-m>-2.22295</z-m>
|
||||
</offsets>
|
||||
<condition>
|
||||
<property>systems/failures/engine-left-fire</property>
|
||||
<property>systems/failures/fire/engine-left-fire</property>
|
||||
</condition>
|
||||
</model>
|
||||
|
||||
|
@ -259,7 +259,7 @@
|
|||
<z-m>-2.22295</z-m>
|
||||
</offsets>
|
||||
<condition>
|
||||
<property>systems/failures/engine-right-fire</property>
|
||||
<property>systems/failures/fire/engine-right-fire</property>
|
||||
</condition>
|
||||
</model>
|
||||
|
||||
|
|
|
@ -246,7 +246,7 @@
|
|||
<z-m>-2.22295</z-m>
|
||||
</offsets>
|
||||
<condition>
|
||||
<property>systems/failures/engine-left-fire</property>
|
||||
<property>systems/failures/fire/engine-left-fire</property>
|
||||
</condition>
|
||||
</model>
|
||||
|
||||
|
@ -259,7 +259,7 @@
|
|||
<z-m>-2.22295</z-m>
|
||||
</offsets>
|
||||
<condition>
|
||||
<property>systems/failures/engine-right-fire</property>
|
||||
<property>systems/failures/fire/engine-right-fire</property>
|
||||
</condition>
|
||||
</model>
|
||||
|
||||
|
@ -406,7 +406,7 @@
|
|||
|
||||
|
||||
|
||||
<!-- Effect
|
||||
<!-- Effect -->
|
||||
<effect>
|
||||
<inherits-from>Aircraft/A320-family/Models/Effects/reflection-engine-IAE</inherits-from>
|
||||
<object-name>EngineIAEV2500L</object-name>
|
||||
|
@ -425,5 +425,5 @@
|
|||
<inherits-from>Aircraft/A320-family/Models/Effects/reflection-chrome-engine-IAE</inherits-from>
|
||||
<object-name>IntakeIAEV2500L</object-name>
|
||||
<object-name>IntakeIAEV2500R</object-name>
|
||||
</effect>-->
|
||||
</effect>
|
||||
</PropertyList>
|
||||
|
|
|
@ -441,10 +441,12 @@
|
|||
|
||||
<!-- Multi-purpose Control and Display Units -->
|
||||
<model>
|
||||
<name>MCDU1</name>
|
||||
<path>Aircraft/A320-family/Models/Instruments/MCDU/MCDU1.xml</path>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>MCDU2</name>
|
||||
<path>Aircraft/A320-family/Models/Instruments/MCDU/MCDU2.xml</path>
|
||||
</model>
|
||||
|
||||
|
@ -876,6 +878,80 @@
|
|||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>atc_abv</object-name>
|
||||
<factor>35</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<axis>
|
||||
<object-name>atc_abv.axis</object-name>
|
||||
</axis>
|
||||
<property>controls/atc/abv-blw</property>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>atc_abv</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<button>3</button>
|
||||
<binding>
|
||||
<command>property-cycle</command>
|
||||
<property>controls/atc/abv-blw</property>
|
||||
<value>-1</value>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
<button>4</button>
|
||||
<binding>
|
||||
<command>property-cycle</command>
|
||||
<property>controls/atc/abv-blw</property>
|
||||
<value>1</value>
|
||||
<value>0</value>
|
||||
<value>-1</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>rotate</type>
|
||||
<object-name>atc_thrt</object-name>
|
||||
<factor>-30</factor>
|
||||
<offset-deg>0</offset-deg>
|
||||
<axis>
|
||||
<object-name>atc_thrt.axis</object-name>
|
||||
</axis>
|
||||
<property>controls/atc/thrt-all</property>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>atc_thrt</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<button>3</button>
|
||||
<binding>
|
||||
<command>property-cycle</command>
|
||||
<property>controls/atc/thrt-all</property>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
</action>
|
||||
<action>
|
||||
<button>1</button>
|
||||
<button>4</button>
|
||||
<binding>
|
||||
<command>property-cycle</command>
|
||||
<property>controls/atc/thrt-all</property>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<!-- Primary Flight Displays -->
|
||||
<model>
|
||||
<name>PFD1</name>
|
||||
|
@ -965,6 +1041,27 @@
|
|||
<path>Aircraft/A320-family/Models/Instruments/IESI/IESI.xml</path>
|
||||
</model>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>PFD1</object-name>
|
||||
<object-name>PFD2</object-name>
|
||||
<object-name>ND1</object-name>
|
||||
<object-name>ND2</object-name>
|
||||
<object-name>UECAM</object-name>
|
||||
<object-name>LECAM</object-name>
|
||||
<object-name>IESI</object-name>
|
||||
<object-name>MCDU1</object-name>
|
||||
<object-name>MCDU2</object-name>
|
||||
<object-name>dcduScreenL</object-name>
|
||||
<object-name>dcduScreenR</object-name>
|
||||
<condition>
|
||||
<or>
|
||||
<not><property>options/hide-canvas-outside</property></not>
|
||||
<property>sim/current-view/internal</property>
|
||||
</or>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<!-- No button lights without power! -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
|
@ -8676,6 +8773,74 @@
|
|||
</condition>
|
||||
</animation>
|
||||
|
||||
<!-- ND_L chrono -->
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>chrono_cpt</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-cycle</command>
|
||||
<property>/instrumentation/efis/inputs/CHRONO</property>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
<value>2</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<!-- ND_R chrono -->
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>chrono_fo</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-cycle</command>
|
||||
<property>/instrumentation/efis[1]/inputs/CHRONO</property>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
<value>2</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<!-- ND_L chrono -->
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>chrono_cpt</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-cycle</command>
|
||||
<property>/instrumentation/efis/inputs/CHRONO</property>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
<value>2</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<!-- ND_R chrono -->
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>chrono_fo</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>property-cycle</command>
|
||||
<property>/instrumentation/efis[1]/inputs/CHRONO</property>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
<value>2</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<!-- torch -->
|
||||
|
||||
<animation>
|
||||
|
@ -9116,3 +9281,4 @@
|
|||
</animation>
|
||||
|
||||
</PropertyList>
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<object-name>OutflowValveDoor2</object-name>
|
||||
<object-name>GPUServiceDoor</object-name>
|
||||
</effect>
|
||||
<!--<effect>
|
||||
<effect>
|
||||
<inherits-from>Aircraft/A320-family/Models/Effects/reflection-rudder</inherits-from>
|
||||
<object-name>Rudder</object-name>
|
||||
</effect>
|
||||
|
@ -112,7 +112,7 @@
|
|||
<object-name>SpoilerActuatorRodR3</object-name>
|
||||
<object-name>SpoilerActuatorRodR2</object-name>
|
||||
<object-name>SpoilerActuatorRodR1</object-name>
|
||||
</effect>-->
|
||||
</effect>
|
||||
|
||||
|
||||
<!-- Animations -->
|
||||
|
|
|
@ -261,8 +261,6 @@ var input = {
|
|||
"altitude_ind": "/instrumentation/altimeter/indicated-altitude-ft-pfd",
|
||||
"altimeter_mode": "/instrumentation/altimeter[0]/std",
|
||||
"attReset": "/instrumentation/iesi/att-reset",
|
||||
"dcEss": "/systems/electrical/bus/dc-ess",
|
||||
"dcHot1": "/systems/electrical/bus/dc-hot-1",
|
||||
"iesiBrt": "/controls/lighting/DU/iesi",
|
||||
"iesiInit": "/instrumentation/iesi/iesi-init",
|
||||
"mach": "/instrumentation/airspeed-indicator/indicated-mach",
|
||||
|
|
|
@ -3010,7 +3010,7 @@ var canvas_lowerECAM_wheel = {
|
|||
rightdoor = gear_door_R.getValue();
|
||||
nosedoor = gear_door_N.getValue();
|
||||
gearlvr = gear_down.getValue();
|
||||
askidsw = systems.HYD.Brakes.askidSw.getBoolValue();
|
||||
askidsw = systems.HYD.Switch.nwsSwitch.getBoolValue();
|
||||
brakemode = systems.HYD.Brakes.mode.getBoolValue();
|
||||
accum = systems.HYD.Brakes.accumPressPsi.getBoolValue();
|
||||
|
||||
|
|
|
@ -153,7 +153,6 @@ var baro = props.globals.getNode("/FMGC/internal/baro", 1);
|
|||
# GA PERF
|
||||
|
||||
# AOC - SENSORS
|
||||
var parking_brake = props.globals.getNode("/controls/gear/brake-parking", 1);
|
||||
var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1);
|
||||
var doorL1_pos = props.globals.getNode("/sim/model/door-positions/doorl1/position-norm", 1); #FWD door
|
||||
var doorR1_pos = props.globals.getNode("/sim/model/door-positions/doorr1/position-norm", 1); #FWD door
|
||||
|
@ -167,6 +166,7 @@ var activeAtsu = [props.globals.getNode("/MCDU[0]/atsu-active", 1), props.global
|
|||
props.globals.initNode("/MCDU[0]/active-system", "", "STRING");
|
||||
props.globals.initNode("/MCDU[1]/active-system", "", "STRING");
|
||||
|
||||
|
||||
# Conversion factor pounds to kilogram
|
||||
var LBS2KGS = 0.4535924;
|
||||
|
||||
|
@ -174,6 +174,17 @@ var LBS2KGS = 0.4535924;
|
|||
# Create Nodes:
|
||||
var pageSwitch = [props.globals.initNode("/MCDU[0]/internal/switch", 0, "BOOL"), props.globals.initNode("/MCDU[1]/internal/switch", 0, "BOOL")];
|
||||
|
||||
# Page freeze on POSMON
|
||||
var pageFreezed = [nil,nil];
|
||||
var togglePageFreeze = func(i) {
|
||||
if (pageFreezed[i] == nil) {
|
||||
pageFreezed[i] = sprintf("%02d%02d", getprop("/sim/time/utc/hour"), getprop("/sim/time/utc/minute"));
|
||||
} else {
|
||||
pageFreezed[i] = nil;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var canvas_MCDU_base = {
|
||||
init: func(canvas_group, file) {
|
||||
var font_mapper = func(family, weight) {
|
||||
|
@ -230,10 +241,12 @@ var canvas_MCDU_base = {
|
|||
|
||||
me.page = canvas_group;
|
||||
|
||||
me.updateretard = 0; # skip a few page update to save CPU
|
||||
|
||||
return me;
|
||||
},
|
||||
getKeys: func() {
|
||||
return ["Simple","Simple_Center","Scratchpad","Simple_Title","Simple_PageNum","ArrowLeft","ArrowRight","Simple_L1","Simple_L2","Simple_L3","Simple_L4",
|
||||
return ["Simple","Simple_Center","Scratchpad","Simple_Title","Simple_Title2","Simple_PageNum","ArrowLeft","ArrowRight","Simple_L1","Simple_L2","Simple_L3","Simple_L4",
|
||||
"Simple_L5","Simple_L6","Simple_L0S","Simple_L1S","Simple_L2S","Simple_L3S","Simple_L4S","Simple_L5S","Simple_L6S","Simple_L1_Arrow",
|
||||
"Simple_L2_Arrow","Simple_L3_Arrow","Simple_L4_Arrow","Simple_L5_Arrow","Simple_L6_Arrow","Simple_R1","Simple_R2","Simple_R3","Simple_R4","Simple_R5",
|
||||
"Simple_R6","Simple_R1S","Simple_R2S","Simple_R3S","Simple_R4S","Simple_R5S","Simple_R6S","Simple_R1_Arrow","Simple_R2_Arrow","Simple_R3_Arrow",
|
||||
|
@ -264,6 +277,7 @@ var canvas_MCDU_base = {
|
|||
defaultHide: func() {
|
||||
me["Simple"].show();
|
||||
me["Simple_Center"].hide();
|
||||
me["Simple_Title2"].hide();
|
||||
me["FPLN"].hide();
|
||||
me["DIRTO_TMPY_group"].hide();
|
||||
me["INITA"].hide();
|
||||
|
@ -281,6 +295,7 @@ var canvas_MCDU_base = {
|
|||
defaultHideWithCenter: func() {
|
||||
me["Simple"].show();
|
||||
me["Simple_Center"].show();
|
||||
me["Simple_Title2"].hide();
|
||||
me["FPLN"].hide();
|
||||
me["DIRTO_TMPY_group"].hide();
|
||||
me["INITA"].hide();
|
||||
|
@ -345,7 +360,13 @@ var canvas_MCDU_base = {
|
|||
me.fontRight(default, default, default, default, default, default);
|
||||
me.fontRightS(default, default, default, default, default, default);
|
||||
me.fontSizeLeft(normal, normal, normal, normal, normal, normal);
|
||||
me.fontSizeLeftS(small, small, small, small, small, small);
|
||||
me.fontSizeRight(normal, normal, normal, normal, normal, normal);
|
||||
me.fontSizeRightS(small, small, small, small, small, small);
|
||||
me.fontCenter(default, default, default, default, default, default);
|
||||
me.fontCenterS(default, default, default, default, default, default);
|
||||
me.fontSizeCenter(normal, normal, normal, normal, normal, normal);
|
||||
me.fontSizeCenterS(small, small, small, small, small, small);
|
||||
},
|
||||
standardFontColour: func() {
|
||||
me.colorLeft("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
|
@ -355,6 +376,43 @@ var canvas_MCDU_base = {
|
|||
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
},
|
||||
getLatLogFormatted: func(rootpropname) {
|
||||
var dms = getprop(rootpropname ~ "latitude-deg");
|
||||
var degrees = int(dms);
|
||||
var minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
||||
var sign = degrees >= 0 ? "N" : "S";
|
||||
var dms2 = getprop(rootpropname ~ "longitude-deg");
|
||||
var degrees2 = int(dms2);
|
||||
var minutes2 = sprintf("%.1f",abs((dms2 - degrees2) * 60));
|
||||
var sign2 = degrees2 >= 0 ? "E" : "W";
|
||||
return sprintf("%d%.1f%s/%07s%s",abs(degrees),minutes,sign,abs(degrees2) ~ minutes2,sign2);
|
||||
},
|
||||
getLatLogFormatted2: func(rootpropname) {
|
||||
var dms = getprop(rootpropname ~ "latitude-deg");
|
||||
var degrees = int(dms);
|
||||
var minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
||||
var sign = degrees >= 0 ? "N" : "S";
|
||||
var dms2 = getprop(rootpropname ~ "longitude-deg");
|
||||
var degrees2 = int(dms2);
|
||||
var minutes2 = sprintf("%.1f",abs((dms2 - degrees2) * 60));
|
||||
var sign2 = degrees2 >= 0 ? "E" : "W";
|
||||
return sprintf("%d %.1f%s/%03s %.1f%s",abs(degrees),minutes,sign,abs(degrees2),minutes2,sign2);
|
||||
},
|
||||
getIRSStatus: func(a,b = 0) {
|
||||
var irsstatus = "INVAL";
|
||||
if (systems.ADIRS.ADIRunits[a].operative) {
|
||||
if (systems.ADIRS.Operating.aligned[a].getValue()) {
|
||||
irsstatus = (systems.ADIRS.ADIRunits[a].mode == 2) ? "ATT" : "NAV";
|
||||
} else {
|
||||
if (b) {
|
||||
irsstatus = "ALIGN TTN" ~ sprintf("%2d",math.round(systems.ADIRS.ADIRunits[a]._alignTime) / 60);
|
||||
} else {
|
||||
irsstatus = "ALIGN";
|
||||
}
|
||||
}
|
||||
}
|
||||
return irsstatus;
|
||||
},
|
||||
updateCommon: func(i) {
|
||||
page = pageProp[i].getValue();
|
||||
if (page != "NOTIFICATION") {
|
||||
|
@ -389,6 +447,9 @@ var canvas_MCDU_base = {
|
|||
me["PRINTPAGE"].setColor(WHITE);
|
||||
}
|
||||
}
|
||||
|
||||
if (!pageSwitch[i].getBoolValue()) me.defaultHide();
|
||||
|
||||
if (page != "ATIS") {
|
||||
me["ATISSend1"].hide();
|
||||
me["ATISSend2"].hide();
|
||||
|
@ -737,6 +798,7 @@ var canvas_MCDU_base = {
|
|||
} else if (page == "SENSORS") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
me.defaultHide();
|
||||
me.standardFontSize();
|
||||
me["Simple_Title"].setText("SENSORS ");
|
||||
me.defaultPageNumbers();
|
||||
me["Simple_L0S"].hide();
|
||||
|
@ -783,8 +845,8 @@ var canvas_MCDU_base = {
|
|||
pageSwitch[i].setBoolValue(1);
|
||||
}
|
||||
|
||||
me["Simple_R1S"].setText(sprintf("%-10s",(parking_brake.getValue() == 1) ? "SET" : "RELEASED"));
|
||||
me["Simple_R1"].setText(sprintf("%-10s",(gear0_wow.getValue() == 1) ? "GROUND" : "FLIGHT"));
|
||||
me["Simple_R1S"].setText(sprintf("%-10s",(pts.Controls.Gear.parkingBrake.getValue() == 1) ? "SET" : "RELEASED"));
|
||||
me["Simple_R1"].setText(sprintf("%-10s",(pts.Gear.wow[0].getValue() == 1) ? "GROUND" : "FLIGHT"));
|
||||
me["Simple_R2S"].setText(sprintf("%-10s",(doorL1_pos.getValue() > 0.1) ? "OPEN" : "CLOSED"));
|
||||
me["Simple_R2"].setText(sprintf("%-10s",(doorR1_pos.getValue() > 0.1) ? "OPEN" : "CLOSED"));
|
||||
me["Simple_R3S"].setText(sprintf("%-10s",(doorL4_pos.getValue() > 0.1) ? "OPEN" : "CLOSED"));
|
||||
|
@ -2258,12 +2320,12 @@ var canvas_MCDU_base = {
|
|||
me["PERFAPPR"].hide();
|
||||
me["PERFGA"].hide();
|
||||
me["Simple_Title"].show();
|
||||
me["Simple_Title"].setText("POSITION MONITOR");
|
||||
me["Simple_Title2"].setColor(GREEN);
|
||||
me.defaultPageNumbers();
|
||||
|
||||
me.showLeft(1, 1, 1, 1, 1, 1);
|
||||
me["Simple_L0S"].hide();
|
||||
me.showLeftS(-1, -1, -1, -1, 1, -1);
|
||||
me.showLeftS(-1, 1, 1, -1, 1, -1);
|
||||
me.showLeftArrow(-1, -1, -1, -1, -1, 1);
|
||||
me.showCenter(-1, -1, -1, -1, 1, -1);
|
||||
me["Simple_C3B"].hide();
|
||||
|
@ -2281,26 +2343,228 @@ var canvas_MCDU_base = {
|
|||
me.colorRight("grn", "grn", "grn", "grn", "grn", "wht");
|
||||
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me["Simple_C5"].setColor(GREEN);
|
||||
me["Simple_L5"].setFontSize(small);
|
||||
me["Simple_C5"].setFontSize(small);
|
||||
me["Simple_R5"].setFontSize(small);
|
||||
|
||||
pageFreezed[i] = nil;
|
||||
|
||||
me.updateretard = 0;
|
||||
|
||||
pageSwitch[i].setBoolValue(1);
|
||||
}
|
||||
|
||||
if (me.updateretard <= 0) {
|
||||
if (pageFreezed[i] == nil) {
|
||||
|
||||
me["Simple_Title"].setText("POSITION MONITOR");
|
||||
me["Simple_Title2"].hide();
|
||||
me["Simple_L6"].setText(" FREEZE");
|
||||
|
||||
me["Simple_L1"].setText("FMGC1");
|
||||
me["Simple_L2"].setText("FMGC2");
|
||||
me["Simple_L3"].setText("GPIRS");
|
||||
me["Simple_L4"].setText("MIX IRS");
|
||||
me["Simple_L5"].setText("NAV -.-");
|
||||
me["Simple_L6"].setText(" FREEZE");
|
||||
me["Simple_L5S"].setText(" IRS1");
|
||||
me["Simple_R1"].setText("----.-X/-----.-X");
|
||||
me["Simple_R2"].setText("----.-X/-----.-X");
|
||||
me["Simple_R3"].setText("----.-X/-----.-X");
|
||||
me["Simple_R4"].setText("----.-X/-----.-X");
|
||||
me["Simple_R5"].setText("NAV -.-");
|
||||
me["Simple_R5S"].setText("IRS3 ");
|
||||
me["Simple_R6S"].setText("SEL ");
|
||||
me["Simple_C5"].setText("NAV -.-");
|
||||
me["Simple_R6"].setText("NAVAIDS ");
|
||||
me["Simple_C5S"].setText("IRS2");
|
||||
|
||||
var latlog = me.getLatLogFormatted("/position/"); # current sim lat/log (formatted) cached for fast excecution
|
||||
#TODO - IRS emulation
|
||||
|
||||
if (systems.ADIRS.Operating.aligned[0].getValue()) { # TODO real FMGC1 GPS data
|
||||
me["Simple_R1"].setText(latlog);
|
||||
me["Simple_R1"].setColor(GREEN);
|
||||
me["Simple_L2S"].setText(sprintf("%16s","3IRS/GPS"));
|
||||
} else {
|
||||
me["Simple_R1"].setText("----.--/-----.--");
|
||||
me["Simple_R1"].setColor(WHITE);
|
||||
me["Simple_L2S"].setText("");
|
||||
}
|
||||
|
||||
if (systems.ADIRS.Operating.aligned[1].getValue()) { # TODO real FMGC2 GPS data
|
||||
me["Simple_R2"].setText(latlog);
|
||||
me["Simple_R2"].setColor(GREEN);
|
||||
me["Simple_L3S"].setText(sprintf("%16s","3IRS/GPS"));
|
||||
} else {
|
||||
me["Simple_R2"].setText("----.--/-----.--");
|
||||
me["Simple_R2"].setColor(WHITE);
|
||||
me["Simple_L3S"].setText("");
|
||||
}
|
||||
|
||||
if (systems.ADIRS.Operating.aligned[0].getValue() or systems.ADIRS.Operating.aligned[1].getValue() or systems.ADIRS.Operating.aligned[2].getValue()) {
|
||||
me["Simple_R3"].setText(latlog); # GPIRS
|
||||
me["Simple_R3"].setColor(GREEN);
|
||||
me["Simple_R4"].setText(latlog); # MIXIRS
|
||||
me["Simple_R4"].setColor(GREEN);
|
||||
} else {
|
||||
me["Simple_R3"].setText("----.--/-----.--"); # GPIRS not available
|
||||
me["Simple_R3"].setColor(WHITE);
|
||||
me["Simple_R4"].setText("----.--/-----.--"); # MIXIRS not available
|
||||
me["Simple_R4"].setColor(WHITE);
|
||||
}
|
||||
|
||||
var Simple_row5 = ["Simple_L5","Simple_C5","Simple_R5"];
|
||||
|
||||
for ( var a=0; a<3; a+=1 ) {
|
||||
if (systems.ADIRS.Operating.aligned[a].getValue()) {
|
||||
me[Simple_row5[a]].setText(sprintf("%-8s",(systems.ADIRS.ADIRunits[a].mode == 2) ? "ATT" : "NAV 0.0"));
|
||||
} else {
|
||||
me[Simple_row5[a]].setText(sprintf("%-8s",me.getIRSStatus(a)));
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
me["Simple_Title"].setText("POSITION FROZEN AT ");
|
||||
me["Simple_Title2"].setText(sprintf("%23s ",pageFreezed[i]));
|
||||
me["Simple_Title2"].show();
|
||||
me["Simple_L6"].setText(" UNFREEZE");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (me.updateretard < 0) me.updateretard = 2;
|
||||
else me.updateretard -= 1;
|
||||
|
||||
} else if (page == "IRSMON") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
|
||||
me.defaultHideWithCenter();
|
||||
me.standardFontSize();
|
||||
|
||||
me.defaultPageNumbers();
|
||||
|
||||
me.showLeft(1, 1, 1, -1, -1, -1);
|
||||
me.showLeftS(-1, 1, 1, 1, -1, -1);
|
||||
me.showLeftArrow(1, 1, 1, -1, -1, -1);
|
||||
me.showCenter(-1, -1, -1, -1, -1, -1);
|
||||
me.showCenterS(-1, -1, -1, -1, -1, -1);
|
||||
me.showRight(-1, -1, -1, -1, -1, -1);
|
||||
me.showRightS(1, 1, 1, 1, -1, -1);
|
||||
me.showRightArrow(-1, -1, -1, -1, -1, -1);
|
||||
|
||||
me["arrowsDepArr"].hide();
|
||||
me["PERFAPPR"].hide();
|
||||
me["PERFGA"].hide();
|
||||
me["Simple_L0S"].hide();
|
||||
me["Simple_Title"].show();
|
||||
|
||||
me.colorLeft("wht", "wht", "wht", "ack", "ack", "ack");
|
||||
me.colorLeftS("ack", "grn", "grn", "grn", "ack", "ack");
|
||||
me.colorCenter("wht", "grn", "grn", "grn", "ack", "ack");
|
||||
me.colorRightS("amb", "grn", "grn", "grn", "ack", "ack");
|
||||
me.colorLeftArrow("wht", "wht", "wht", "ack", "ack", "ack");
|
||||
|
||||
me["Simple_Title"].setText("IRS MONITOR");
|
||||
|
||||
me["Simple_L1"].setText(" IRS1");
|
||||
me["Simple_L2"].setText(" IRS2");
|
||||
me["Simple_L3"].setText(" IRS3");
|
||||
me["Simple_C1"].setText("EXCESS MOTION");
|
||||
me["Simple_C2"].setText("EXCESS MOTION");
|
||||
me["Simple_C3"].setText("EXCESS MOTION");
|
||||
me["Simple_C1"].setFontSize(small);
|
||||
me["Simple_C2"].setFontSize(small);
|
||||
me["Simple_C3"].setFontSize(small);
|
||||
me["Simple_R1S"].setText("");
|
||||
|
||||
#TODO - Missing SET HDG on degraded operations
|
||||
|
||||
pageSwitch[i].setBoolValue(1);
|
||||
}
|
||||
|
||||
var rows = ["Simple_L2S","Simple_L3S","Simple_L4S"];
|
||||
var center = ["Simple_C1","Simple_C2","Simple_C3"];
|
||||
for (var a = 0; a<3; a+=1) {
|
||||
me[rows[a]].setText(" " ~ me.getIRSStatus(a,1));
|
||||
if (systems.ADIRS.ADIRunits[a]._excessMotion) {
|
||||
me[center[a]].show();
|
||||
} else {
|
||||
me[center[a]].hide();
|
||||
}
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.phase == 7) { # DONE phase
|
||||
if (fmgc.FMGCInternal.arrApt != nil and fmgc.flightPlanController.flightplans[2].departure_runway != nil) {
|
||||
me["Simple_R1S"].setText(sprintf("DRIFT AT %7s ",fmgc.FMGCInternal.arrApt ~ fmgc.flightPlanController.flightplans[2].departure_runway.id));
|
||||
}
|
||||
me["Simple_R2S"].setText(sprintf("DRIFT %2.1fNM/H ",0));
|
||||
me["Simple_R3S"].setText(sprintf("DRIFT %2.1fNM/H ",0));
|
||||
me["Simple_R4S"].setText(sprintf("DRIFT %2.1fNM/H ",0));
|
||||
} else {
|
||||
me["Simple_R1S"].setText("");
|
||||
me["Simple_R2S"].setText("");
|
||||
me["Simple_R3S"].setText("");
|
||||
me["Simple_R4S"].setText("");
|
||||
}
|
||||
} else if (page == "GPSMON") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
|
||||
me.defaultHideWithCenter();
|
||||
me.standardFontSize();
|
||||
|
||||
me.defaultPageNumbers();
|
||||
|
||||
me.showLeft(1, 1, 1, 1, 1, 1);
|
||||
me.showLeftS(1, 1, 1, 1, 1, 1);
|
||||
me.showLeftArrow(-1, -1, -1, -1, -1, -1);
|
||||
me.showCenter(-1, 1, 1, -1, 1, 1);
|
||||
me.showCenterS(-1, 1, 1, -1, 1, 1);
|
||||
me.showRight(-1, 1, 1, -1, 1, 1);
|
||||
me.showRightS(-1, 1, 1, -1, 1, 1);
|
||||
me.showRightArrow(-1, -1, -1, -1, -1, -1);
|
||||
|
||||
me["arrowsDepArr"].hide();
|
||||
me["PERFAPPR"].hide();
|
||||
me["PERFGA"].hide();
|
||||
me["Simple_L0S"].hide();
|
||||
me["Simple_Title"].show();
|
||||
|
||||
me.colorLeft("grn", "grn", "grn", "grn", "grn", "grn");
|
||||
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorCenter("grn", "grn", "grn", "grn", "grn", "grn");
|
||||
me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRight("grn", "grn", "grn", "grn", "grn", "grn");
|
||||
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
|
||||
me["Simple_Title"].setText("GPS MONITOR");
|
||||
|
||||
me["Simple_L1S"].setText("GPS1 POSITION");
|
||||
me["Simple_L2S"].setText("TTRK");
|
||||
me["Simple_L3S"].setText("MERIT");
|
||||
me["Simple_L3"].setText(sprintf("%3d",((rand() * 50) - 25) + 50) ~ "M");
|
||||
me["Simple_L4S"].setText("GPS2 POSITION");
|
||||
me["Simple_L5S"].setText("TTRK");
|
||||
me["Simple_L6S"].setText("MERIT");
|
||||
me["Simple_L6"].setText(sprintf("%3d",((rand() * 50) - 25) + 50) ~ "M");
|
||||
me["Simple_C2S"].setText("UTC");
|
||||
me["Simple_C3S"].setText("GPS ALT");
|
||||
me["Simple_C5S"].setText("UTC");
|
||||
me["Simple_C6S"].setText("GPS ALT");
|
||||
me["Simple_R2S"].setText("GS");
|
||||
me["Simple_R3S"].setText("MODE/SAT");
|
||||
me["Simple_R3"].setText("NAV/" ~ sprintf("%s",int((rand() * 2) - 1) + 6) ~ " ");
|
||||
me["Simple_R5S"].setText("GS");
|
||||
me["Simple_R6S"].setText("MODE/SAT");
|
||||
me["Simple_R6"].setText("NAV/" ~ sprintf("%s",int((rand() * 2) - 1) + 6) ~ " ");
|
||||
pageSwitch[i].setBoolValue(1);
|
||||
}
|
||||
me["Simple_L1"].setText(me.getLatLogFormatted2("/position/"));
|
||||
me["Simple_L2"].setText(sprintf("%-5.1f",pts.Instrumentation.GPS.trackMag.getValue() + magvar()));
|
||||
me["Simple_L4"].setText(me.getLatLogFormatted2("/position/"));
|
||||
me["Simple_L5"].setText(sprintf("%-5.1f",pts.Instrumentation.GPS.trackMag.getValue() + magvar()));
|
||||
var gmt = string.replace(pts.Sim.Time.gmtString.getValue(),":",".");
|
||||
me["Simple_C2"].setText(gmt);
|
||||
me["Simple_C5"].setText(gmt);
|
||||
me["Simple_C3"].setText(sprintf("%5.0f",pts.Instrumentation.GPS.altitude.getValue()));
|
||||
me["Simple_C6"].setText(sprintf("%5.0f",pts.Instrumentation.GPS.altitude.getValue()));
|
||||
me["Simple_R2"].setText(sprintf("%3.0f",pts.Instrumentation.GPS.gs.getValue()));
|
||||
me["Simple_R5"].setText(sprintf("%3.0f",pts.Instrumentation.GPS.gs.getValue()));
|
||||
} else if (page == "RADNAV") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
me.defaultHide();
|
||||
|
@ -2782,37 +3046,51 @@ var canvas_MCDU_base = {
|
|||
|
||||
} else if (page == "ROUTESELECTION") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
me.defaultHideWithCenter();
|
||||
me.defaultHide();
|
||||
me.standardFontSize();
|
||||
me["arrowsDepArr"].hide();
|
||||
me["PERFAPPR"].hide();
|
||||
me["PERFGA"].hide();
|
||||
me["Simple_Title"].show();
|
||||
me["Simple_Title"].setText("ROUTE SELECTION");
|
||||
me.defaultPageNumbers();
|
||||
me.showPageNumbers(1,1);
|
||||
|
||||
me.showLeft(1, -1, -1, -1, -1, 1);
|
||||
me.showLeft(1, 1, 1, 1, 1, 1);
|
||||
me["Simple_L0S"].hide();
|
||||
me.showLeftS(-1, -1, -1, -1, -1, -1);
|
||||
me.showLeftS(-1, 1, 1, 1, 1, -1);
|
||||
me.showLeftArrow(-1, -1, -1, -1, -1, 1);
|
||||
me.showRight(-1, -1, -1, -1, -1, -1);
|
||||
me.showRightS(-1, -1, -1, -1, -1, -1);
|
||||
me.showRight(-1, 1, 1, 1, 1, 1);
|
||||
me.showRightS(-1, 1, 1, 1, 1, -1);
|
||||
me.showRightArrow(-1, -1, -1, -1, -1, -1);
|
||||
me.showCenter(-1, -1, -1, -1, -1, -1);
|
||||
me["Simple_C3B"].hide();
|
||||
me["Simple_C4B"].hide();
|
||||
me.showCenterS(-1, -1, -1, -1, -1, -1);
|
||||
me.fontSizeLeftS(normal, normal, normal, normal, normal, normal);
|
||||
me.fontSizeRight(0, small, small, small, small, normal);
|
||||
me.fontSizeRightS(0, small, small, small, small, normal);
|
||||
|
||||
me.fontLeft(default, 0, 0, 0, 0, default);
|
||||
|
||||
me.fontSizeLeft(normal, 0, 0, 0, 0, normal);
|
||||
|
||||
me.colorLeft("grn", "ack", "ack", "ack", "ack", "wht");
|
||||
|
||||
pageSwitch[i].setBoolValue(1);
|
||||
}
|
||||
me.colorLeft("grn", "grn", "grn", "grn", "grn", "wht");
|
||||
me.colorLeftS("grn", "grn", "grn", "grn", "grn", "wht");
|
||||
me.colorRight("ack", "wht", "wht", "wht", "wht", "amb");
|
||||
me.colorRightS("ack", "wht", "wht", "wht", "wht", "wht");
|
||||
|
||||
me["Simple_L1"].setText("NONE");
|
||||
me["Simple_L6"].setText(" RETURN");
|
||||
me["Simple_R6"].setText("INSERT ");
|
||||
me["PRINTPAGE"].show();
|
||||
me["PRINTPAGE"].setColor(AMBER);
|
||||
|
||||
var rows = ["2S","2","3S","3","4S","4","5S","5"];
|
||||
|
||||
me["Simple_L1"].setText("DUBLHR1");
|
||||
|
||||
var r = 0;
|
||||
#for ( ; r < 8; r += 1) { # Example how formats rows with 4 cols
|
||||
# me["Simple_L" ~ rows[r]].setText(sprintf("%11s %11s","SELKA","NUGRA"));
|
||||
# me["Simple_R" ~ rows[r]].setText(sprintf("%-13s %-13s","UL975","UL975"));
|
||||
#}
|
||||
while (r<8) {
|
||||
me["Simple_L" ~ rows[r]].setText("");
|
||||
me["Simple_R" ~ rows[r]].setText("");
|
||||
r+=1;
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.toFromSet and !fmgc.FMGCInternal.altSelected) {
|
||||
me["Simple_Title"].setText(sprintf("%s", fmgc.FMGCInternal.depApt ~ "/" ~ fmgc.FMGCInternal.arrApt));
|
||||
|
@ -2824,6 +3102,9 @@ var canvas_MCDU_base = {
|
|||
me["Simple_Title"].setText("ROUTE SELECTION");
|
||||
}
|
||||
|
||||
pageSwitch[i].setBoolValue(1); # update on request only (left/right arrows)
|
||||
}
|
||||
|
||||
} else if (page == "INITB") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
me["Simple"].show();
|
||||
|
@ -3564,8 +3845,12 @@ var canvas_MCDU_base = {
|
|||
me["Simple_L6"].setFontSize(small);
|
||||
}
|
||||
|
||||
} else if (page == "PROGTO" or page == "PROGCLB" or page == "PROGCRZ" or page == "PROGDES") {
|
||||
if (fmgc.FMGCInternal.phase == 0 or fmgc.FMGCInternal.phase == 1) {
|
||||
} else if (page == "PROGPREF" or page == "PROGTO" or page == "PROGCLB" or page == "PROGCRZ" or page == "PROGDES" or page == "PROGAPPR" or page == "PROGDONE") {
|
||||
|
||||
if (fmgc.FMGCInternal.phase == 0) {
|
||||
setprop("/MCDU[" ~ i ~ "]/page", "PROGPREF");
|
||||
page = "PROGPREF";
|
||||
} else if (fmgc.FMGCInternal.phase == 1) {
|
||||
setprop("/MCDU[" ~ i ~ "]/page", "PROGTO");
|
||||
page = "PROGTO";
|
||||
} else if (fmgc.FMGCInternal.phase == 2) {
|
||||
|
@ -3574,9 +3859,15 @@ var canvas_MCDU_base = {
|
|||
} else if (fmgc.FMGCInternal.phase == 3) {
|
||||
setprop("/MCDU[" ~ i ~ "]/page", "PROGCRZ");
|
||||
page = "PROGCRZ";
|
||||
} else if (fmgc.FMGCInternal.phase == 4 or fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
} else if (fmgc.FMGCInternal.phase == 4) {
|
||||
setprop("/MCDU[" ~ i ~ "]/page", "PROGDES");
|
||||
page = "PROGDES";
|
||||
} else if (fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
setprop("/MCDU[" ~ i ~ "]/page", "PROGAPPR");
|
||||
page = "PROGAPPR";
|
||||
} else if (fmgc.FMGCInternal.phase == 7) {
|
||||
setprop("/MCDU[" ~ i ~ "]/page", "PROGDONE");
|
||||
page = "PROGDONE";
|
||||
}
|
||||
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
|
@ -3595,31 +3886,34 @@ var canvas_MCDU_base = {
|
|||
me["PERFAPPR"].hide();
|
||||
me["PERFGA"].hide();
|
||||
|
||||
if (fmgc.FMGCInternal.flightNumSet) {
|
||||
if (page == "PROGTO") {
|
||||
me["Simple_Title"].setText(sprintf("TAKE OFF %s", fmgc.FMGCInternal.flightNum));
|
||||
var colortext = ["",""];
|
||||
|
||||
if (page == "PROGPREF") {
|
||||
colortext[0] = "PREFLIGHT";
|
||||
} else if (page == "PROGTO") {
|
||||
colortext[0] = "TAKE OFF";
|
||||
} else if (page == "PROGCLB") {
|
||||
me["Simple_Title"].setText(sprintf("CLIMB %s", fmgc.FMGCInternal.flightNum));
|
||||
colortext[0] = "CLIMB";
|
||||
} else if (page == "PROGCRZ") {
|
||||
me["Simple_Title"].setText(sprintf("CRUISE %s", fmgc.FMGCInternal.flightNum));
|
||||
colortext[0] = "CRUISE";
|
||||
} else if (page == "PROGDES") {
|
||||
me["Simple_Title"].setText(sprintf("DESCENT %s", fmgc.FMGCInternal.flightNum));
|
||||
}
|
||||
} else {
|
||||
if (page == "PROGTO") {
|
||||
me["Simple_Title"].setText("TAKE OFF");
|
||||
} else if (page == "PROGCLB") {
|
||||
me["Simple_Title"].setText("CLIMB");
|
||||
} else if (page == "PROGCRZ") {
|
||||
me["Simple_Title"].setText("CRUISE");
|
||||
} else if (page == "PROGDES") {
|
||||
me["Simple_Title"].setText("DESCENT");
|
||||
}
|
||||
colortext[0] = "DESCENT";
|
||||
} else if (page == "PROGAPPR") {
|
||||
colortext[0] = "APPROACH";
|
||||
} else if (page == "PROGDONE") {
|
||||
colortext[0] = "DONE";
|
||||
}
|
||||
|
||||
colortext[1] = (fmgc.FMGCInternal.flightNumSet and page != "PROGDONE") ? fmgc.FMGCInternal.flightNum : ""; #CHECKME - condition useful?
|
||||
|
||||
me["Simple_Title"].setText(sprintf(" %-21s",colortext[0]));
|
||||
me["Simple_Title2"].setText(sprintf("%12s %-11s","",colortext[1]));
|
||||
|
||||
me["Simple_Title"].show();
|
||||
me["Simple_Title"].setColor(GREEN);
|
||||
me["Simple_PageNum"].setText("X/X");
|
||||
me["Simple_Title"].setColor((page != "PROGDONE") ? GREEN : WHITE);
|
||||
me["Simple_Title2"].show();
|
||||
me["Simple_Title2"].setColor(WHITE);
|
||||
#me["Simple_PageNum"].setText("X/X");
|
||||
me["Simple_PageNum"].hide();
|
||||
me["ArrowLeft"].hide();
|
||||
me["ArrowRight"].hide();
|
||||
|
@ -3641,30 +3935,47 @@ var canvas_MCDU_base = {
|
|||
me.fontRight(default, symbol, symbol, symbol, default, default);
|
||||
me.fontRightS(default, default, default, default, default, default);
|
||||
|
||||
me.fontSizeLeft(normal, normal, small, small, normal, small);
|
||||
me.fontSizeLeftS(small, small, small, small, small, small);
|
||||
me.fontSizeRight(normal, small, small, small, normal, small);
|
||||
me.fontSizeRightS(small, small, small, small, small, small);
|
||||
me.fontSizeCenter(small, normal, small, small, small, normal);
|
||||
me.fontSizeCenterS(normal, small, small, small, small, small);
|
||||
|
||||
me["Simple_C1S"].setFontSize(small);
|
||||
|
||||
me.colorLeft("blu", "wht", "blu", "wht", "wht", "blu");
|
||||
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRight("mag", "wht", "blu", "blu", "grn", "grn");
|
||||
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorCenter("grn", "grn", "wht", "wht", "wht", "grn");
|
||||
me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
|
||||
if (page == "PROGCRZ") {
|
||||
me.showLeftS(0, 0, -1, 0, 0, 0);
|
||||
me.showCenterS(0, 0, 1, 0, 0, 0);
|
||||
#me.showRight(0, 0, 1, 0, 0, 0); #Add when implement cruise phase
|
||||
me.fontLeft(0, 0, default, 0, 0, 0);
|
||||
} else if (page == "PROGDES") {
|
||||
} else if (page == "PROGDES" or page == "PROGAPPR") {
|
||||
me.showCenter(0, 1, 0, 0, 0, 0);
|
||||
me.showRight(0, 1, 0, 0, 0, 0);
|
||||
#me["Simple_C2"].setFontSize(normal);
|
||||
#me["Simple_R2"].setFontSize(normal);
|
||||
}
|
||||
|
||||
me.fontSizeLeft(normal, normal, small, small, normal, small);
|
||||
me.fontSizeLeftS(small, small, small, small, small, small);
|
||||
me.fontSizeRight(normal, small, small, small, normal, small);
|
||||
me.fontSizeRightS(small, small, small, small, small, small);
|
||||
me.fontSizeCenter(small, small, small, small, small, normal);
|
||||
me.fontSizeCenterS(normal, small, small, small, small, small);
|
||||
|
||||
me.colorLeft("blu", "wht", "blu", "wht", "wht", "blu");
|
||||
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRight("mag", "blu", "blu", "blu", "grn", "grn");
|
||||
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorCenter("grn", "wht", "wht", "wht", "wht", "grn");
|
||||
me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
#else if (page == "PROGAPPR") { # A/C without GPS
|
||||
# me["Simple_L5S"].setFontSize(small);
|
||||
# me["Simple_L5S"].setColor(GREEN);
|
||||
# me["Simple_L5"].setFontSize(small);
|
||||
# me["Simple_L5"].setColor(GREEN);
|
||||
# me["Simple_R5S"].setFontSize(small);
|
||||
# me["Simple_R5S"].setColor(WHITE);
|
||||
# me["Simple_R5S"].show();
|
||||
# me["Simple_R5"].setFontSize(small);
|
||||
# me["Simple_R5"].setColor(WHITE);
|
||||
# me.showLeftArrow(-1, 1, -1, -1, -1, -1);
|
||||
#}
|
||||
|
||||
pageSwitch[i].setBoolValue(1);
|
||||
}
|
||||
|
@ -3676,7 +3987,7 @@ var canvas_MCDU_base = {
|
|||
me["Simple_L1"].setText(sprintf("%s", "FL" ~ fmgc.FMGCInternal.crzProg));
|
||||
}
|
||||
} else {
|
||||
me["Simple_L1"].setText("----");
|
||||
me["Simple_L1"].setText("-----");
|
||||
}
|
||||
me["Simple_L2"].setText(" REPORT");
|
||||
if (page == "PROGCRZ") {
|
||||
|
@ -3687,7 +3998,6 @@ var canvas_MCDU_base = {
|
|||
me["PROG_UPDATE"].show();
|
||||
me["Simple_L3"].setText(" [ ]");
|
||||
}
|
||||
me["Simple_L4"].setText(" ---g /----.-");
|
||||
me["Simple_L5"].setText(" GPS");
|
||||
me["Simple_L6"].setText("----");
|
||||
me["Simple_L1S"].setText(" CRZ");
|
||||
|
@ -3695,19 +4005,61 @@ var canvas_MCDU_base = {
|
|||
me["Simple_L4S"].setText(" BRG /DIST");
|
||||
me["Simple_L5S"].setText(" PREDICTIVE");
|
||||
me["Simple_L6S"].setText("REQUIRED");
|
||||
|
||||
if (page != "PROGDONE") {
|
||||
me["Simple_R1"].setText("FL398 ");
|
||||
me["Simple_R2"].setText("VDEV = + 750 FT");
|
||||
} else {
|
||||
me["Simple_L1"].setText("_____");
|
||||
me["Simple_R1"].setText("----- ");
|
||||
me["Simple_L1"].setColor(AMBER);
|
||||
me["Simple_C1"].setColor(WHITE);
|
||||
me["Simple_R1"].setColor(WHITE);
|
||||
me["Simple_R5"].hide();
|
||||
}
|
||||
|
||||
if (page == "PROGDES" or page == "PROGAPPR") {
|
||||
var vdev = 750; #CHECKME i dunno the meaning, but I found this value in the source
|
||||
var vdev_sign = (vdev>=0) ? "+" : "-";
|
||||
me["Simple_C2"].setText(sprintf("%17s%4d ",vdev_sign,abs(vdev)));
|
||||
me["Simple_R2"].setText(sprintf("%30s","VDEV= FT "));
|
||||
}
|
||||
|
||||
if (mcdu.bearingDistances[i].displayID != nil) {
|
||||
me["Simple_R4"].setFont(default);
|
||||
me["Simple_R4"].setFontSize(normal);
|
||||
me["Simple_R4"].setText(mcdu.bearingDistances[i].displayID);
|
||||
} else {
|
||||
me["Simple_R4"].setFont(symbol);
|
||||
me["Simple_R4"].setFontSize(small);
|
||||
me["Simple_R4"].setText("[ ]");
|
||||
}
|
||||
|
||||
if (mcdu.bearingDistances[i].selectedPoint != nil) {
|
||||
me["Simple_L4"].setColor(GREEN);
|
||||
me["Simple_L4"].setText(sprintf("%3.0fg /%4.1f",mcdu.bearingDistances[i].bearing,mcdu.bearingDistances[i].distance));
|
||||
} else {
|
||||
me["Simple_L4"].setColor(WHITE);
|
||||
me["Simple_L4"].setText(" ---g /----.-");
|
||||
}
|
||||
|
||||
me["Simple_R5"].setText("GPS PRIMARY");
|
||||
me["Simple_R6"].setText("----");
|
||||
me["Simple_R1S"].setText("REC MAX ");
|
||||
me["Simple_R6S"].setText("ESTIMATED");
|
||||
me["Simple_C1"].setText("----");
|
||||
me["Simple_C1"].setText("-----");
|
||||
me["Simple_C1S"].setText("OPT");
|
||||
me["Simple_C3S"].setText("CONFIRM UPDATE AT");
|
||||
me["Simple_C4"].setText(" TO");
|
||||
me["Simple_C6S"].setText("ACCUR");
|
||||
me["Simple_C6"].setText("HIGH");
|
||||
if (systems.ADIRS.Operating.aligned[0].getValue() or systems.ADIRS.Operating.aligned[1].getValue()) me["Simple_C6"].setText("HIGH");
|
||||
else me["Simple_C6"].setText("LOW");
|
||||
|
||||
#if (page == "PROGAPPR") { # A/C without GPS
|
||||
# me["Simple_L5"].setText(sprintf(" DIR DIST TO DEST=%6d",0));
|
||||
# me["Simple_L5S"].setText(sprintf("REQD DIST TO LAND=%6d",0));
|
||||
# me["Simple_R5"].setText("MN");
|
||||
# me["Simple_R5S"].setText("MN");
|
||||
#}
|
||||
|
||||
} else if (page == "PERFTO") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
|
@ -3737,7 +4089,7 @@ var canvas_MCDU_base = {
|
|||
me.showLeftS(1, 1, 1, 1, 1, 1);
|
||||
me.showLeftArrow(-1, -1, -1, -1, -1, 1);
|
||||
me.showRight(-1, 1, 1, 1, 1, 1);
|
||||
me.showRightS(-1, 1, 1, 1, 1, 1);
|
||||
me.showRightS(1, 1, 1, 1, 1, 1);
|
||||
me.showRightArrow(-1, -1, -1, -1, -1, 1);
|
||||
me.showCenter(1, 1, 1, -1, -1, -1);
|
||||
me["Simple_C3B"].hide();
|
||||
|
@ -3756,12 +4108,14 @@ var canvas_MCDU_base = {
|
|||
me.colorLeft("blu", "blu", "blu", "blu", "blu", "wht");
|
||||
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRight("wht", "blu", "blu", "blu", "blu", "wht");
|
||||
me.colorRight("grn", "blu", "blu", "blu", "blu", "wht");
|
||||
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorCenter("grn", "grn", "grn", "wht", "wht", "wht");
|
||||
me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
|
||||
me["Simple_Title"].setText("TAKE OFF");
|
||||
|
||||
pageSwitch[i].setBoolValue(1);
|
||||
}
|
||||
|
||||
|
@ -3800,18 +4154,25 @@ var canvas_MCDU_base = {
|
|||
me["Simple_L6S"].hide();
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.phase == 1) {
|
||||
if (fmgc.FMGCInternal.phase == 1) { # GREEN title and not modifiable on TO phase
|
||||
me["Simple_Title"].setColor(GREEN);
|
||||
me.colorLeft("grn", "grn", "grn", "blu", "grn", "wht");
|
||||
me.colorRight("grn", "blu", "grn", "grn", "grn", "wht");
|
||||
} else {
|
||||
me["Simple_Title"].setColor(WHITE);
|
||||
me.colorLeft("blu", "blu", "blu", "blu", "blu", "wht");
|
||||
me.colorRight("grn", "blu", "blu", "blu", "blu", "wht");
|
||||
}
|
||||
|
||||
if (fmgc.flightPlanController.flightplans[2].departure_runway != nil) {
|
||||
me["Simple_Title"].setText(sprintf("TAKE OFF RWY %s", fmgc.flightPlanController.flightplans[2].departure_runway.id));
|
||||
me["Simple_R1"].setText(fmgc.flightPlanController.flightplans[2].departure_runway.id ~ " ");
|
||||
me["Simple_R1"].show();
|
||||
} else {
|
||||
me["Simple_Title"].setText("TAKE OFF");
|
||||
me["Simple_R1"].hide();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (fmgc.FMGCInternal.v1set) {
|
||||
me["PERFTO_V1"].hide();
|
||||
me["Simple_L1"].setText(sprintf("%3.0f", fmgc.FMGCInternal.v1));
|
||||
|
@ -3886,6 +4247,7 @@ var canvas_MCDU_base = {
|
|||
me["Simple_C1S"].setText("FLP RETR");
|
||||
me["Simple_C2S"].setText("SLT RETR");
|
||||
me["Simple_C3S"].setText("CLEAN ");
|
||||
|
||||
} else if (page == "PERFCLB") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
me.defaultHideWithCenter();
|
||||
|
@ -4040,6 +4402,7 @@ var canvas_MCDU_base = {
|
|||
|
||||
me["Simple_R6S"].setText("NEXT ");
|
||||
me["Simple_R6"].setText("PHASE ");
|
||||
|
||||
} else if (page == "PERFCRZ") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
me.defaultHideWithCenter();
|
||||
|
@ -4335,6 +4698,7 @@ var canvas_MCDU_base = {
|
|||
|
||||
me["Simple_R6S"].setText("NEXT ");
|
||||
me["Simple_R6"].setText("PHASE ");
|
||||
|
||||
} else if (page == "PERFAPPR") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
me.defaultHideWithCenter();
|
||||
|
@ -4518,6 +4882,7 @@ var canvas_MCDU_base = {
|
|||
me["Simple_C2S"].setText("SLT RETR");
|
||||
me["Simple_C3S"].setText("CLEAN ");
|
||||
me["Simple_C5S"].setText("VLS ");
|
||||
|
||||
} else if (page == "PERFGA") {
|
||||
if (!pageSwitch[i].getBoolValue()) {
|
||||
me.defaultHideWithCenter();
|
||||
|
@ -4835,6 +5200,8 @@ var canvas_MCDU_base = {
|
|||
|
||||
me.dynamicPageArrowFunc(myVertRev[i]);
|
||||
me.colorLeftArrow(myVertRev[i].arrowsColour[0][0],myVertRev[i].arrowsColour[0][1],myVertRev[i].arrowsColour[0][2],myVertRev[i].arrowsColour[0][3],myVertRev[i].arrowsColour[0][4],myVertRev[i].arrowsColour[0][5]);
|
||||
me.colorRightArrow(myVertRev[i].arrowsColour[1][0],myVertRev[i].arrowsColour[1][1],myVertRev[i].arrowsColour[1][2],myVertRev[i].arrowsColour[1][3],myVertRev[i].arrowsColour[1][4],myVertRev[i].arrowsColour[1][5]);
|
||||
|
||||
|
||||
me.dynamicPageFontFunc(myVertRev[i]);
|
||||
|
||||
|
@ -5896,6 +6263,46 @@ var canvas_MCDU_base = {
|
|||
me["Simple_L6S"].setFont(f);
|
||||
}
|
||||
},
|
||||
fontCenter: func (a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
me["Simple_C1"].setFont(a);
|
||||
}
|
||||
if (b != 0) {
|
||||
me["Simple_C2"].setFont(b);
|
||||
}
|
||||
if (c != 0) {
|
||||
me["Simple_C3"].setFont(c);
|
||||
}
|
||||
if (d != 0) {
|
||||
me["Simple_C4"].setFont(d);
|
||||
}
|
||||
if (e != 0) {
|
||||
me["Simple_C5"].setFont(e);
|
||||
}
|
||||
if (f != 0) {
|
||||
me["Simple_C6"].setFont(f);
|
||||
}
|
||||
},
|
||||
fontCenterS: func (a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
me["Simple_C1S"].setFont(a);
|
||||
}
|
||||
if (b != 0) {
|
||||
me["Simple_C2S"].setFont(b);
|
||||
}
|
||||
if (c != 0) {
|
||||
me["Simple_C3S"].setFont(c);
|
||||
}
|
||||
if (d != 0) {
|
||||
me["Simple_C4S"].setFont(d);
|
||||
}
|
||||
if (e != 0) {
|
||||
me["Simple_C5S"].setFont(e);
|
||||
}
|
||||
if (f != 0) {
|
||||
me["Simple_C6S"].setFont(f);
|
||||
}
|
||||
},
|
||||
fontRight: func (a, b, c, d, e, f) {
|
||||
if (a != 0) {
|
||||
me["Simple_R1"].setFont(a);
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
viewBox="0 0 1024 864"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||
sodipodi:docname="mcdu.svg">
|
||||
<metadata
|
||||
id="metadata375">
|
||||
|
@ -37,17 +37,17 @@
|
|||
guidetolerance="20"
|
||||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="705"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1017"
|
||||
id="namedview371"
|
||||
showgrid="true"
|
||||
inkscape:zoom="3.1578866"
|
||||
inkscape:cx="1122.1906"
|
||||
inkscape:cy="986.92422"
|
||||
inkscape:zoom="0.55824076"
|
||||
inkscape:cx="608.20261"
|
||||
inkscape:cy="690.7315"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2"
|
||||
inkscape:current-layer="Simple"
|
||||
showguides="false"
|
||||
inkscape:snap-global="false"
|
||||
units="px"
|
||||
|
@ -306,6 +306,19 @@
|
|||
y="539.16522"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:70px;line-height:1.25;font-family:BoeingCDULarge;-inkscape-font-specification:BoeingCDULarge;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:1px">TEXT</tspan></text>
|
||||
</g>
|
||||
<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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="521.74713"
|
||||
y="69.238266"
|
||||
id="Simple_Title2"
|
||||
transform="scale(0.99151607,1.0085565)"
|
||||
inkscape:label="#text4244b"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1367"
|
||||
x="521.74713"
|
||||
y="69.238266"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:70px;line-height:1.25;font-family:BoeingCDULarge;-inkscape-font-specification:BoeingCDULarge;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1">TITLE</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:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
|
@ -1016,7 +1029,7 @@
|
|||
inkscape:label="#g4241"
|
||||
id="g4241">
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
id="path4480-4"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1026,9 +1039,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path4482-0"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
id="path4484-0"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1069,7 +1082,7 @@
|
|||
inkscape:label="#g4324"
|
||||
id="g4324">
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 998.71909,284.70793 H 970.18944"
|
||||
id="path4490-7"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1079,9 +1092,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path4318-2"
|
||||
d="m 994.54102,294.79468 -20.17351,-20.1735"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 984.45427,298.97275 -10e-6,-28.52964"
|
||||
id="path4320-1"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1091,7 +1104,7 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path4322-2"
|
||||
d="m 974.36752,294.79468 20.17349,-20.1735"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
@ -1103,7 +1116,7 @@
|
|||
x="177.72771"
|
||||
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:#ffff00;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:51.20000076px;line-height:1.25;font-family:BoeingCDULarge;-inkscape-font-specification:BoeingCDULarge;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:51.2px;line-height:1.25;font-family:BoeingCDULarge;-inkscape-font-specification:BoeingCDULarge;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1"
|
||||
y="68.861366"
|
||||
x="177.72771"
|
||||
id="tspan1240"
|
||||
|
@ -1147,7 +1160,7 @@
|
|||
inkscape:label="#g4241"
|
||||
id="g186">
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
id="path180"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1157,9 +1170,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path182"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
id="path184"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1200,7 +1213,7 @@
|
|||
inkscape:label="#g4324"
|
||||
id="g205">
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 998.71909,284.70793 H 970.18944"
|
||||
id="path197"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1210,9 +1223,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path199"
|
||||
d="m 994.54102,294.79468 -20.17351,-20.1735"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 984.45427,298.97275 -10e-6,-28.52964"
|
||||
id="path201"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1222,7 +1235,7 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path203"
|
||||
d="m 974.36752,294.79468 20.17349,-20.1735"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
@ -1235,7 +1248,7 @@
|
|||
inkscape:label="arrow5L"
|
||||
id="arrow5L">
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
id="path301"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1245,9 +1258,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path303"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
id="path305"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1263,9 +1276,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path417"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
id="path419"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1275,7 +1288,7 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path421"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
style="stroke:#bb6100;stroke-opacity:1"
|
||||
|
@ -1283,7 +1296,7 @@
|
|||
inkscape:label="arrow3L"
|
||||
id="arrow3L">
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
id="path425"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1293,9 +1306,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path427"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
id="path429"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1311,9 +1324,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path433"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
id="path435"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1323,7 +1336,7 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path437"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
style="stroke:#bb6100;stroke-opacity:1"
|
||||
|
@ -1331,7 +1344,7 @@
|
|||
inkscape:label="arrow1L"
|
||||
id="arrow1L">
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
id="path471"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1341,9 +1354,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path473"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
id="path475"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1359,9 +1372,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path479"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
id="path481"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1371,7 +1384,7 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path483"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
style="stroke:#bb6100;stroke-opacity:1"
|
||||
|
@ -1379,7 +1392,7 @@
|
|||
inkscape:label="arrow4R"
|
||||
id="arrow4R">
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
id="path487"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1389,9 +1402,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path489"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
id="path491"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1407,9 +1420,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path495"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
id="path497"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1419,7 +1432,7 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path499"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
style="stroke:#bb6100;stroke-opacity:1"
|
||||
|
@ -1427,7 +1440,7 @@
|
|||
inkscape:label="arrow2R"
|
||||
id="arrow2R">
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
id="path503"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1437,9 +1450,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path505"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
id="path507"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1455,9 +1468,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path511"
|
||||
d="M 952.4036,47.432743 H 923.87395"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 936.70791,32.6968 921.8587,47.4328"
|
||||
id="path513"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1467,7 +1480,7 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path515"
|
||||
d="M 936.70791,62.1688 921.8587,47.4328"
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
|
@ -2617,7 +2630,7 @@
|
|||
id="tspan1088"
|
||||
x="478.87796"
|
||||
y="171.04486"
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:63.99240112px;line-height:1.25;font-family:'Helvetica Medium';-inkscape-font-specification:'Helvetica Medium, Medium';text-align:start;text-anchor:start;fill:#ffffff;fill-opacity:1">=</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:63.9924px;line-height:1.25;font-family:'Helvetica Medium';-inkscape-font-specification:'Helvetica Medium, Medium';text-align:start;text-anchor:start;fill:#ffffff;fill-opacity:1">=</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text4244"
|
||||
transform="scale(0.90642126,1.1032398)"
|
||||
|
@ -2626,7 +2639,7 @@
|
|||
x="478.87796"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#ffffff;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:500;font-stretch:normal;font-size:63.99240112px;line-height:1.25;font-family:'Helvetica Medium';-inkscape-font-specification:'Helvetica Medium, Medium';text-align:start;text-anchor:start;fill:#ffffff;fill-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:63.9924px;line-height:1.25;font-family:'Helvetica Medium';-inkscape-font-specification:'Helvetica Medium, Medium';text-align:start;text-anchor:start;fill:#ffffff;fill-opacity:1"
|
||||
y="278.32764"
|
||||
x="478.87796"
|
||||
id="tspan1091"
|
||||
|
@ -2643,7 +2656,7 @@
|
|||
id="tspan1094"
|
||||
x="478.87796"
|
||||
y="385.6102"
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:63.99240112px;line-height:1.25;font-family:'Helvetica Medium';-inkscape-font-specification:'Helvetica Medium, Medium';text-align:start;text-anchor:start;fill:#ffffff;fill-opacity:1">=</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:63.9924px;line-height:1.25;font-family:'Helvetica Medium';-inkscape-font-specification:'Helvetica Medium, Medium';text-align:start;text-anchor:start;fill:#ffffff;fill-opacity:1">=</tspan></text>
|
||||
<g
|
||||
style="stroke:#179ab7;stroke-opacity:1"
|
||||
id="PERFAPPR_LDG_3"
|
||||
|
@ -3010,7 +3023,7 @@
|
|||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<g
|
||||
style="opacity:0.97000002;stroke:#179ab7;stroke-opacity:1"
|
||||
style="opacity:0.97;stroke:#179ab7;stroke-opacity:1"
|
||||
id="COMM-ADS"
|
||||
inkscape:label="#g4324"
|
||||
transform="matrix(1.0807111,0,0,1.0807111,-1029.7034,213.33078)">
|
||||
|
@ -3019,9 +3032,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path1273"
|
||||
d="M 998.71909,284.70793 H 970.18944"
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 994.54102,294.79468 -20.17351,-20.1735"
|
||||
id="path1275"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -3031,9 +3044,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path1277"
|
||||
d="m 984.45427,298.97275 -10e-6,-28.52964"
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 974.36752,294.79468 20.17349,-20.1735"
|
||||
id="path1279"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -3229,9 +3242,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path1341"
|
||||
d="M 998.71909,284.70793 H 970.18944"
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 994.54102,294.79468 -20.17351,-20.1735"
|
||||
id="path1343"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -3241,9 +3254,9 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path1345"
|
||||
d="m 984.45427,298.97275 -10e-6,-28.52964"
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.07999992;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:none;stroke:#179ab7;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 974.36752,294.79468 20.17349,-20.1735"
|
||||
id="path1347"
|
||||
inkscape:connector-curvature="0"
|
||||
|
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 171 KiB |
|
@ -338,6 +338,41 @@ setlistener("sim/signals/fdm-initialized", func {
|
|||
ND_2 = canvas_ND_2.new(group_nd2);
|
||||
ND_2_test = canvas_ND_2_test.new(group_nd2_test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg");
|
||||
|
||||
setlistener("/instrumentation/efis[0]/inputs/range-nm", func() {
|
||||
canvas_nd.ND_1.NDCpt.trafficLayer.camera.range = getprop("/instrumentation/efis[0]/inputs/range-nm");
|
||||
}, 1, 0);
|
||||
|
||||
setlistener("/instrumentation/efis[1]/inputs/range-nm", func() {
|
||||
canvas_nd.ND_2.NDFo.trafficLayer.camera.range = getprop("/instrumentation/efis[1]/inputs/range-nm");
|
||||
}, 1, 0);
|
||||
|
||||
setlistener("/instrumentation/efis[0]/inputs/nd-centered", func() {
|
||||
canvas_nd.ND_1.NDCpt.trafficLayer.camera.screenRange = getprop("/instrumentation/efis[0]/inputs/nd-centered") ? 436.8545 : 710;
|
||||
canvas_nd.ND_1.NDCpt.trafficLayer.camera.screenCY = getprop("/instrumentation/efis[0]/inputs/nd-centered") ? 512 : 850;
|
||||
}, 1, 0);
|
||||
|
||||
setlistener("/instrumentation/efis[1]/inputs/nd-centered", func() {
|
||||
canvas_nd.ND_2.NDFo.trafficLayer.camera.screenRange = getprop("/instrumentation/efis[1]/inputs/nd-centered") ? 436.8545 : 710;
|
||||
canvas_nd.ND_2.NDFo.trafficLayer.camera.screenCY = getprop("/instrumentation/efis[1]/inputs/nd-centered") ? 512 : 850;
|
||||
}, 1, 0);
|
||||
|
||||
setlistener("/instrumentation/tcas/inputs/mode", func() {
|
||||
if (getprop("/instrumentation/efis[1]/nd/canvas-display-mode") != "PLAN") {
|
||||
canvas_nd.ND_1.NDCpt.trafficGroup.setVisible(pts.Instrumentation.TCAS.Inputs.mode.getValue() >= 2 ? 1 : 0);
|
||||
}
|
||||
if (getprop("/instrumentation/efis[1]/nd/canvas-display-mode") != "PLAN") {
|
||||
canvas_nd.ND_2.NDFo.trafficGroup.setVisible(pts.Instrumentation.TCAS.Inputs.mode.getValue() >= 2 ? 1 : 0);
|
||||
}
|
||||
}, 1, 0);
|
||||
|
||||
setlistener("/instrumentation/efis[0]/nd/canvas-display-mode", func() {
|
||||
canvas_nd.ND_1.NDCpt.trafficGroup.setVisible(getprop("/instrumentation/efis[0]/nd/canvas-display-mode") == "PLAN" ? 0 : 1);
|
||||
}, 1, 0);
|
||||
|
||||
setlistener("/instrumentation/efis[1]/nd/canvas-display-mode", func() {
|
||||
canvas_nd.ND_2.NDFo.trafficGroup.setVisible(getprop("/instrumentation/efis[1]/nd/canvas-display-mode") == "PLAN" ? 0 : 1);
|
||||
}, 1, 0);
|
||||
|
||||
nd_update.start();
|
||||
if (getprop("systems/acconfig/options/nd-rate") > 1) {
|
||||
rateApply();
|
||||
|
|
|
@ -32,8 +32,7 @@ canvas.NavDisplay.get_nav_path = func (type, idx) {
|
|||
return sprintf(path, name, idx);
|
||||
};
|
||||
|
||||
canvas.NavDisplay.newMFD = func(canvas_group, parent=nil, nd_options=nil, update_time=0.05)
|
||||
{
|
||||
canvas.NavDisplay.newMFD = func(canvas_group, parent=nil, nd_options=nil, update_time=0.05) {
|
||||
if (me.inited) die("MFD already was added to scene");
|
||||
me.range_dependant_layers = [];
|
||||
me.always_update_layers = {};
|
||||
|
@ -87,6 +86,8 @@ canvas.NavDisplay.newMFD = func(canvas_group, parent=nil, nd_options=nil, update
|
|||
.set("screen-range", 700)
|
||||
.set("z-index",-1);
|
||||
|
||||
me.compassHdgTrk = 0; # last compass rotation deg
|
||||
|
||||
me.update_sub(); # init some map properties based on switches
|
||||
|
||||
var vor1_path = "/instrumentation/nav[2]";
|
||||
|
@ -233,6 +234,17 @@ canvas.NavDisplay.newMFD = func(canvas_group, parent=nil, nd_options=nil, update
|
|||
event_handler();
|
||||
} # foreach layer
|
||||
|
||||
me.mapCamera = traffic.Camera.new({
|
||||
range: 20,
|
||||
screenRange: 436.8545,
|
||||
screenCX: 512,
|
||||
screenCY: 512,
|
||||
});
|
||||
me.trafficGroup = me.nd.createChild("group");
|
||||
me.trafficLayer = traffic.TrafficLayer.new(me.mapCamera, me.trafficGroup);
|
||||
me.trafficLayer.start();
|
||||
me.trafficGroup.set("z-index", -1);
|
||||
|
||||
#print("navdisplay.mfd:ND layer setup completed");
|
||||
|
||||
# TODO: move this to RTE.lcontroller ?
|
||||
|
@ -277,20 +289,38 @@ canvas.NavDisplay.update_sub = func(){
|
|||
me.userTrk=userHdg;
|
||||
}
|
||||
|
||||
var reqHdg = 0;
|
||||
|
||||
if((me.in_mode("toggle_display_mode", ["MAP"]) and me.get_switch("toggle_display_type") == "CRT")
|
||||
or (me.get_switch("toggle_track_heading") and me.get_switch("toggle_display_type") == "LCD"))
|
||||
{
|
||||
or (me.get_switch("toggle_track_heading") and me.get_switch("toggle_display_type") == "LCD")) {
|
||||
userHdgTrk = userTrk;
|
||||
me.userHdgTrk = userTrk;
|
||||
me.compassHdgTrk = userTrk;
|
||||
userHdgTrkTru = userTrkTru;
|
||||
me.symbols.hdgTrk.setText("TRK");
|
||||
} else {
|
||||
userHdgTrk = userHdg;
|
||||
me.userHdgTrk = userHdg;
|
||||
if (userHdg != me.compassHdgTrk) {
|
||||
var dist = userHdg - me.compassHdgTrk;
|
||||
if (dist>180) dist = dist - 360;
|
||||
elsif (dist<-180) dist = 360 + dist;
|
||||
if (dist>0) {
|
||||
dist = dist * 0.3;
|
||||
if (dist>10) dist = 10;
|
||||
me.compassHdgTrk = (dist<0.1) ? userHdg : math.mod(me.compassHdgTrk+dist,360);
|
||||
}
|
||||
elsif (dist<0) {
|
||||
dist = dist * 0.3;
|
||||
if (dist<-10) dist = -10;
|
||||
me.compassHdgTrk = (dist>-0.1) ? userHdg : math.mod(me.compassHdgTrk+dist,360);
|
||||
}
|
||||
}
|
||||
userHdgTrk = me.compassHdgTrk;
|
||||
me.userHdgTrk = me.compassHdgTrk;
|
||||
userHdgTrkTru = userHdgTru;
|
||||
me.symbols.hdgTrk.setText("HDG");
|
||||
}
|
||||
|
||||
|
||||
# First, update the display position of the map
|
||||
var oldRange = me.map.getRange();
|
||||
var pos = {
|
||||
|
@ -372,6 +402,13 @@ canvas.NavDisplay.update = func() # FIXME: This stuff is still too aircraft spec
|
|||
else
|
||||
me.map.setTranslation(512,824);
|
||||
}
|
||||
me.mapCamera.repositon(geo.aircraft_position(), me.aircraft_source.get_hdg_tru());
|
||||
me.pos = props.globals.getNode("position");
|
||||
me.trafficLayer.setRefAlt(me.pos.getValue("altitude-ft"));
|
||||
if (me.trafficGroup.getVisible()) {
|
||||
me.trafficLayer.update();
|
||||
me.trafficLayer.redraw();
|
||||
}
|
||||
var vor1_path = "/instrumentation/nav[2]";
|
||||
var vor2_path = "/instrumentation/nav[3]";
|
||||
var dme1_path = "/instrumentation/dme[2]";
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="airbusND_orig.svg"
|
||||
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||
sodipodi:docname="airbusND.svg"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15, custom)"
|
||||
xml:space="preserve"
|
||||
id="svg5180"
|
||||
height="1024"
|
||||
|
@ -23,16 +23,16 @@
|
|||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1056"
|
||||
inkscape:window-height="1017"
|
||||
id="namedview102"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.9002897"
|
||||
inkscape:cx="467.92702"
|
||||
inkscape:cy="538.03817"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="0"
|
||||
inkscape:zoom="1.2732019"
|
||||
inkscape:cx="406.21664"
|
||||
inkscape:cy="201.87587"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer8"
|
||||
inkscape:current-layer="layer3"
|
||||
inkscape:object-nodes="true"
|
||||
inkscape:snap-smooth-nodes="true"
|
||||
inkscape:snap-object-midpoints="true"
|
||||
|
@ -40,7 +40,8 @@
|
|||
inkscape:snap-to-guides="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:document-rotation="0"><sodipodi:guide
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:snap-text-baseline="true"><sodipodi:guide
|
||||
id="guide3167"
|
||||
orientation="1,0"
|
||||
position="512,811.5" /><sodipodi:guide
|
||||
|
@ -58,10 +59,28 @@
|
|||
id="guide3537" /><sodipodi:guide
|
||||
orientation="-0.8660254,0.5"
|
||||
position="512,200"
|
||||
id="guide3545" /></sodipodi:namedview><metadata
|
||||
id="guide3545" /><sodipodi:guide
|
||||
position="-3.9271069,171.8178"
|
||||
orientation="1,0"
|
||||
id="guide742" /><sodipodi:guide
|
||||
position="63.243533,882.27478"
|
||||
orientation="1,0"
|
||||
id="guide3109" /><sodipodi:guide
|
||||
position="59.703006,906.39896"
|
||||
orientation="0,-1"
|
||||
id="guide3111" /><sodipodi:guide
|
||||
position="70.197038,990.32506"
|
||||
orientation="0,-1"
|
||||
id="guide3113" /><sodipodi:guide
|
||||
position="211.67107,1010.2551"
|
||||
orientation="0,-1"
|
||||
id="guide3115" /><sodipodi:guide
|
||||
position="14.137585,913.25558"
|
||||
orientation="1,0"
|
||||
id="guide3498" /></sodipodi:namedview><metadata
|
||||
id="metadata5186"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title><dc:creator><cc:Agent><dc:title>Gijs de Rooy</dc:title></cc:Agent></dc:creator><cc:license
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /><dc:creator><cc:Agent><dc:title>Gijs de Rooy</dc:title></cc:Agent></dc:creator><cc:license
|
||||
rdf:resource="" /></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs5184"><marker
|
||||
style="overflow:visible"
|
||||
|
@ -240,26 +259,26 @@
|
|||
style="display:inline;fill:none;stroke:#f2f235;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><text
|
||||
inkscape:label="#text7243"
|
||||
id="wpActiveId"
|
||||
y="54.099972"
|
||||
x="766.04407"
|
||||
y="34.099972"
|
||||
x="788.04407"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#cecdce;fill-opacity:1;stroke:none"
|
||||
xml:space="preserve"><tspan
|
||||
y="54.099972"
|
||||
x="766.04407"
|
||||
y="34.099972"
|
||||
x="788.04407"
|
||||
id="tspan7245"
|
||||
sodipodi:role="line"
|
||||
style="font-size:36px;line-height:1.25">ABCD</tspan></text>
|
||||
<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:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#0dc04b;fill-opacity:1;stroke:none"
|
||||
x="844.04407"
|
||||
y="88.124893"
|
||||
x="866.04407"
|
||||
y="68.124893"
|
||||
id="wpActiveDist"
|
||||
inkscape:label="#text7243"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7251"
|
||||
x="844.04407"
|
||||
y="88.124893"
|
||||
x="866.04407"
|
||||
y="68.124893"
|
||||
style="font-size:36px;line-height:1.25">999.9</tspan></text>
|
||||
<path
|
||||
sodipodi:nodetypes="cccc"
|
||||
|
@ -267,13 +286,21 @@
|
|||
id="aplSymMap"
|
||||
d="m 512,866.4 v -68 m 34.5,24 h -70 m 50,32 h -30"
|
||||
style="fill:none;stroke:#f2f235;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:label="#path7253" /><path
|
||||
inkscape:label="#path3017"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:label="#path7253" /><g
|
||||
id="windArrow"
|
||||
d="m 75.2914,119.519 -2e-4,65.158 m 0,0 7.0125,-12.145 H 67.4945 l 7.7967,12.146"
|
||||
style="fill:#0dc04b;stroke:#0dc04b;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><g
|
||||
transform="matrix(0.81,0,0,0.81,-8.3843096,20.546412)"><path
|
||||
inkscape:label="#path3017"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3017"
|
||||
d="m 63.260317,138.7628 9.917949,-18.75435 -9.917949,18.75529 -9.969447,-18.75529 9.969447,18.75529"
|
||||
style="display:inline;fill:#0dc04b;stroke:#0dc04b;stroke-width:4.44444;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /><path
|
||||
inkscape:label="#path3017l"
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3107l"
|
||||
d="M 63.260505,77.514285 63.260317,138.7628"
|
||||
style="display:inline;fill:#0dc04b;stroke:#0dc04b;stroke-width:4.44444;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /></g><g
|
||||
inkscape:label="#g3124"
|
||||
id="compass"
|
||||
transform="rotate(0.34999975,516.49696,825.81379)"><path
|
||||
|
@ -784,63 +811,63 @@
|
|||
</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:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#0dc04b;fill-opacity:1;stroke:none"
|
||||
x="36.862175"
|
||||
y="92.904839"
|
||||
x="12.862175"
|
||||
y="72.904839"
|
||||
id="wind"
|
||||
inkscape:label="#text7243"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3801"
|
||||
x="36.862175"
|
||||
y="92.904839"
|
||||
x="12.862175"
|
||||
y="72.904839"
|
||||
style="font-size:36px;line-height:1.25">999°/ 99</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text7243"
|
||||
id="gs"
|
||||
y="53.306854"
|
||||
x="101.87437"
|
||||
y="33.306854"
|
||||
x="61.874367"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#0dc04b;fill-opacity:1;stroke:none"
|
||||
xml:space="preserve"><tspan
|
||||
y="53.306854"
|
||||
x="101.87437"
|
||||
y="33.306854"
|
||||
x="61.874367"
|
||||
id="tspan3809"
|
||||
sodipodi:role="line"
|
||||
style="font-size:36px;line-height:1.25">999</tspan></text>
|
||||
<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:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#0dc04b;fill-opacity:1;stroke:none"
|
||||
x="248.49673"
|
||||
y="53.306854"
|
||||
x="189.71132"
|
||||
y="33.306854"
|
||||
id="tas"
|
||||
inkscape:label="#text7243"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3813"
|
||||
x="248.49673"
|
||||
y="53.306854"
|
||||
x="189.71132"
|
||||
y="33.306854"
|
||||
style="font-size:36px;line-height:1.25">999</tspan></text>
|
||||
<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:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ededed;fill-opacity:1;stroke:none"
|
||||
x="38.276394"
|
||||
y="53.306854"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.32193px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ededed;fill-opacity:1;stroke:none;stroke-width:0.776827"
|
||||
x="13.895038"
|
||||
y="33.26786"
|
||||
id="gsLbl"
|
||||
inkscape:label="#text7243"><tspan
|
||||
style="font-size:36px;line-height:1.25"
|
||||
style="font-size:27.9658px;line-height:1.25;stroke-width:0.776827"
|
||||
sodipodi:role="line"
|
||||
id="tspan3817"
|
||||
x="38.276394"
|
||||
y="53.306854">GS</tspan></text>
|
||||
x="13.895038"
|
||||
y="33.26786">GS</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text7243"
|
||||
id="tasLbl"
|
||||
y="53.306854"
|
||||
x="170.17084"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ededed;fill-opacity:1;stroke:none"
|
||||
y="33.340725"
|
||||
x="129.95859"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.32191px;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ededed;fill-opacity:1;stroke:none;stroke-width:0.776826"
|
||||
xml:space="preserve"><tspan
|
||||
y="53.306854"
|
||||
x="170.17084"
|
||||
y="33.340725"
|
||||
x="129.95859"
|
||||
id="tspan3821"
|
||||
sodipodi:role="line"
|
||||
style="font-size:36px;line-height:1.25">TAS</tspan></text>
|
||||
style="font-size:27.9658px;line-height:1.25;stroke-width:0.776826">TAS</tspan></text>
|
||||
<g
|
||||
id="hdgGroup"
|
||||
inkscape:label="#g3141"><path
|
||||
|
@ -983,12 +1010,12 @@
|
|||
<text
|
||||
inkscape:label="#text7243"
|
||||
id="eta"
|
||||
y="126.06245"
|
||||
y="106.06245"
|
||||
x="892.04407"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#0dc04b;fill-opacity:1;stroke:none"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-size:36px;line-height:1.25"
|
||||
y="126.06245"
|
||||
y="106.06245"
|
||||
x="892.04407"
|
||||
id="tspan3092"
|
||||
sodipodi:role="line">08 34.4z</tspan></text>
|
||||
|
@ -1173,36 +1200,36 @@
|
|||
sodipodi:nodetypes="ccccccccc" /></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:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#179ab7;fill-opacity:1;stroke:none"
|
||||
x="945.04547"
|
||||
y="87.431412"
|
||||
x="967.04547"
|
||||
y="67.431412"
|
||||
id="wpActiveDistLbl"
|
||||
inkscape:label="#text7243"><tspan
|
||||
style="font-size:24px;line-height:1.25"
|
||||
sodipodi:role="line"
|
||||
id="tspan3179"
|
||||
x="945.04547"
|
||||
y="87.431412">NM</tspan></text>
|
||||
x="967.04547"
|
||||
y="67.431412">NM</tspan></text>
|
||||
<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:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#cecdce;fill-opacity:1;stroke:none"
|
||||
x="785.289"
|
||||
y="53.929054"
|
||||
x="807.289"
|
||||
y="33.929054"
|
||||
id="ilsLbl"
|
||||
inkscape:label="#text7243"><tspan
|
||||
style="font-size:32px;line-height:1.25;fill:#cecdce"
|
||||
sodipodi:role="line"
|
||||
id="tspan4172"
|
||||
x="785.289"
|
||||
y="53.929054">ILS </tspan></text>
|
||||
x="807.289"
|
||||
y="33.929054">ILS </tspan></text>
|
||||
<text
|
||||
inkscape:label="#text7243"
|
||||
id="ilsFreq"
|
||||
y="53.929054"
|
||||
x="888.28894"
|
||||
y="33.929054"
|
||||
x="910.28894"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#af0063;fill-opacity:1;stroke:none"
|
||||
xml:space="preserve"><tspan
|
||||
y="53.929054"
|
||||
x="888.28894"
|
||||
y="33.929054"
|
||||
x="910.28894"
|
||||
id="tspan4176"
|
||||
sodipodi:role="line"
|
||||
style="font-size:32px;line-height:125%;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#af0063;fill-opacity:1">999.99</tspan></text>
|
||||
|
@ -1224,14 +1251,14 @@
|
|||
inkscape:transform-center-y="-715.12894" /><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:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#0dc04b;fill-opacity:1;stroke:none"
|
||||
x="926.04407"
|
||||
y="54.099972"
|
||||
x="948.04407"
|
||||
y="34.099972"
|
||||
id="wpActiveCrs"
|
||||
inkscape:label="#text7243"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4501"
|
||||
x="926.04407"
|
||||
y="54.099972"
|
||||
x="948.04407"
|
||||
y="34.099972"
|
||||
style="font-size:36px;line-height:1.25">360</tspan></text>
|
||||
<g
|
||||
id="chrono_box"
|
||||
|
@ -1302,7 +1329,31 @@
|
|||
x="13.282043"
|
||||
y="739.28204"
|
||||
style="font-size:40px;line-height:1.25">OFST</tspan></text>
|
||||
</g><g
|
||||
<text
|
||||
inkscape:label="#text7243"
|
||||
id="hdgBug2ValL"
|
||||
y="174.13467"
|
||||
x="-97.01178"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#179ab7;fill-opacity:1;stroke:none"
|
||||
xml:space="preserve"
|
||||
transform="rotate(-35)"><tspan
|
||||
y="174.13467"
|
||||
x="-97.01178"
|
||||
id="tspan744"
|
||||
sodipodi:role="line"
|
||||
style="font-size:36px;line-height:1.25;fill:#179ab7;fill-opacity:1">999</tspan></text><text
|
||||
inkscape:label="#text7243"
|
||||
id="hdgBug2ValR"
|
||||
y="-418.00525"
|
||||
x="872.1673"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#179ab7;fill-opacity:1;stroke:none"
|
||||
xml:space="preserve"
|
||||
transform="rotate(35)"><tspan
|
||||
y="-418.00525"
|
||||
x="872.1673"
|
||||
id="tspan748"
|
||||
sodipodi:role="line"
|
||||
style="font-size:36px;line-height:1.25;fill:#179ab7;fill-opacity:1">999</tspan></text></g><g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
inkscape:label="CTR"
|
||||
|
@ -1368,20 +1419,22 @@
|
|||
id="vorCrsPtr2"
|
||||
inkscape:label="#g3266"
|
||||
inkscape:transform-center-y="5.4559828"
|
||||
transform="matrix(0.73371425,0,0,1.2956425,136.34805,-201.98371)"><path
|
||||
transform="matrix(0.73371425,0,0,1.2956425,136.34805,-201.98371)"
|
||||
style="stroke-width:0.999997;stroke-miterlimit:4;stroke-dasharray:none"><path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 519.27414,698 h -14.54828 v 194.49655 l 7.27414,1.9e-4 7.27414,-1.9e-4 z M 504.72586,432 v -23.89752 l -38.65179,-0.001 V 402 h 38.65179 V 225.04414 l 7.61514,-0.48629 6.93314,0.4863 V 402 h 38.65179 v 6.10148 l -38.65179,0.001 V 432 Z"
|
||||
style="fill:#009fd6;stroke:#009fd6;stroke-width:1.02564;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="fill:#009fd6;stroke:#009fd6;stroke-width:0.999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="vorCrsPtr2_line"
|
||||
sodipodi:nodetypes="cccccccccccccccccccc" /><g
|
||||
id="locPtr2"><path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;overflow:visible;visibility:visible;fill:#009fd6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.02564;marker:none;enable-background:accumulate"
|
||||
id="locPtr2"
|
||||
style="stroke-width:0.999997;stroke-miterlimit:4;stroke-dasharray:none"><path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;overflow:visible;visibility:visible;fill:#009fd6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.999997;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate"
|
||||
d="m 521.98396,447.79054 -17.26114,3.07727 0.01,235.98519 14.53528,0.01 -0.01,-235.98419 z"
|
||||
id="locPtr2_line"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:label="#locPtr"
|
||||
sodipodi:nodetypes="cccccc" /><path
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;overflow:visible;visibility:visible;fill:#009fd6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.02564;marker:none;enable-background:accumulate"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;overflow:visible;visibility:visible;fill:#009fd6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.999997;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate"
|
||||
d="m 511.04486,437.35427 9.61501,5.69001 -35.22401,17.6614 -9.61501,-5.69001 c 0,0 29.42519,-14.6957 35.22387,-17.66133 5.79867,-2.96563 1.4e-4,-7e-5 1.4e-4,-7e-5 z"
|
||||
id="locPtr2_arr2"
|
||||
inkscape:connector-curvature="0"
|
||||
|
@ -1392,14 +1445,14 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="locPtr2_arr1"
|
||||
d="m 512.69442,437.35427 -9.615,5.69 35.22401,17.6614 9.615,-5.69 c 0,0 -29.42519,-14.6957 -35.22387,-17.66133 -5.79867,-2.96563 -1.4e-4,-7e-5 -1.4e-4,-7e-5 z"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;overflow:visible;visibility:visible;fill:#009fd6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.02564;marker:none;enable-background:accumulate" /></g><circle
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:Sans;-inkscape-font-specification:Sans;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;baseline-shift:baseline;text-anchor:start;overflow:visible;visibility:visible;fill:#009fd6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.999997;stroke-miterlimit:4;stroke-dasharray:none;marker:none;enable-background:accumulate" /></g><circle
|
||||
transform="matrix(0.968853,0.690717,-0.690717,0.968853,437.361,-328.129)"
|
||||
id="path3951"
|
||||
style="fill:none;stroke:#ededed;stroke-width:4.20218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
style="fill:none;stroke:#ededed;stroke-width:0.840432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
cx="380.07001"
|
||||
cy="643.92999"
|
||||
r="6.7175102" /><circle
|
||||
style="fill:none;stroke:#ededed;stroke-width:4.20218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
style="fill:none;stroke:#ededed;stroke-width:0.840432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path3953"
|
||||
transform="matrix(0.968853,0.690717,-0.690717,0.968853,512.923,-328.129)"
|
||||
cx="380.07001"
|
||||
|
@ -1407,11 +1460,11 @@
|
|||
r="6.7175102" /><circle
|
||||
transform="matrix(0.968853,0.690717,-0.690717,0.968853,663.814,-328.129)"
|
||||
id="path3955"
|
||||
style="fill:none;stroke:#ededed;stroke-width:4.20218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
style="fill:none;stroke:#ededed;stroke-width:0.840432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
cx="380.07001"
|
||||
cy="643.92999"
|
||||
r="6.7175102" /><circle
|
||||
style="fill:none;stroke:#ededed;stroke-width:4.20218;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
style="fill:none;stroke:#ededed;stroke-width:0.840432;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="path3959"
|
||||
transform="matrix(0.968853,0.690717,-0.690717,0.968853,739.667,-328.128)"
|
||||
cx="380.07001"
|
||||
|
@ -1643,12 +1696,12 @@
|
|||
inkscape:transform-center-y="-363.559" /><text
|
||||
inkscape:label="#text7243"
|
||||
id="crsLbl"
|
||||
y="90.379868"
|
||||
x="812.72168"
|
||||
y="70.379868"
|
||||
x="834.72168"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#cecdce;fill-opacity:1;stroke:none"
|
||||
xml:space="preserve"><tspan
|
||||
y="90.379868"
|
||||
x="812.72168"
|
||||
y="70.379868"
|
||||
x="834.72168"
|
||||
id="tspan4007"
|
||||
sodipodi:role="line"
|
||||
style="font-size:36px;line-height:1.25">CRS</tspan></text>
|
||||
|
@ -1656,23 +1709,23 @@
|
|||
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:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ededed;fill-opacity:1;stroke:none"
|
||||
x="854.72168"
|
||||
y="124.87983"
|
||||
y="104.87983"
|
||||
id="dmeLbl"
|
||||
inkscape:label="#text7243"><tspan
|
||||
style="font-size:24px;line-height:1.25"
|
||||
sodipodi:role="line"
|
||||
id="tspan4011"
|
||||
x="854.72168"
|
||||
y="124.87983"> </tspan></text>
|
||||
y="104.87983"> </tspan></text>
|
||||
<text
|
||||
inkscape:label="#text7243"
|
||||
id="crs"
|
||||
y="90.062439"
|
||||
x="913.95801"
|
||||
y="70.062439"
|
||||
x="935.95801"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#179ab7;fill-opacity:1;stroke:none"
|
||||
xml:space="preserve"><tspan
|
||||
y="90.062439"
|
||||
x="913.95801"
|
||||
y="70.062439"
|
||||
x="935.95801"
|
||||
id="tspan4046"
|
||||
sodipodi:role="line"
|
||||
style="font-size:36px;line-height:1.25">999</tspan></text>
|
||||
|
@ -1680,13 +1733,13 @@
|
|||
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:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ededed;fill-opacity:1;stroke:none"
|
||||
x="913.95801"
|
||||
y="126.12444"
|
||||
y="106.12444"
|
||||
id="dme"
|
||||
inkscape:label="#text7243"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4071"
|
||||
x="913.95801"
|
||||
y="126.12444"
|
||||
y="106.12444"
|
||||
style="font-size:36px;line-height:1.25">99.9</tspan></text>
|
||||
<g
|
||||
id="gsGroup"
|
||||
|
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 137 KiB |
|
@ -10,6 +10,9 @@ var NOTHING = func nil;
|
|||
var att_switch = props.globals.getNode("/controls/navigation/switching/att-hdg", 1);
|
||||
var adirs_3 = props.globals.getNode("/instrumentation/efis[0]/nd/ir-3", 1);
|
||||
|
||||
var vhdg_bug = props.globals.getNode("/it-autoflight/input/hdg",0); # ND compass position deg
|
||||
|
||||
|
||||
canvas.NDStyles["Airbus"] = {
|
||||
font_mapper: func(family, weight) {
|
||||
if( family == "Liberation Sans" and weight == "normal" )
|
||||
|
@ -69,7 +72,7 @@ canvas.NDStyles["Airbus"] = {
|
|||
level_off_alt: "/autopilot/route-manager/vnav/level-off-alt",
|
||||
athr: "/it-autoflight/output/athr",
|
||||
app_mode: "/instrumentation/nd/app-mode",
|
||||
chrono_node: "/instrumentation/chrono",
|
||||
chrono_node: "/instrumentation/ndchrono",
|
||||
fpln_offset: "/autopilot/route-manager/offset",
|
||||
active_route_color: [0.0509,0.7529,0.2941],
|
||||
inactive_route_color: [0.95,0.95,0.21]
|
||||
|
@ -884,6 +887,42 @@ canvas.NDStyles["Airbus"] = {
|
|||
is_false: NOTHING,
|
||||
},
|
||||
},
|
||||
{
|
||||
id:"hdgBug2ValR", #"hdgBug2ValL"",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd) nd.in_mode("toggle_display_mode", ["MAP"]) and !nd.get_switch("toggle_centered"),
|
||||
is_true: func(nd) {
|
||||
var bugRot = vhdg_bug.getValue();
|
||||
var diffRot = (bugRot>=nd.userHdgTrk) ? (bugRot-nd.userHdgTrk) : (360+bugRot-nd.userHdgTrk);
|
||||
if (diffRot<180 and diffRot>48) {
|
||||
nd.symbols.hdgBug2ValR.setText(sprintf("%03d", bugRot+0.5)); #CHECKME - not sure about adding +.5 as "hdg" process
|
||||
nd.symbols.hdgBug2ValR.show();
|
||||
} else {
|
||||
nd.symbols.hdgBug2ValR.hide();
|
||||
}
|
||||
},
|
||||
is_false: func(nd) nd.symbols.hdgBug2ValR.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
id:"hdgBug2ValL",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd) nd.in_mode("toggle_display_mode", ["MAP"]) and !nd.get_switch("toggle_centered"),
|
||||
is_true: func(nd) {
|
||||
var bugRot = vhdg_bug.getValue();
|
||||
var diffRot = (bugRot>nd.userHdgTrk) ? (360+nd.userHdgTrk-bugRot) : (nd.userHdgTrk-bugRot);
|
||||
if (diffRot<180 and diffRot>48) {
|
||||
nd.symbols.hdgBug2ValL.setText(sprintf("%03d", bugRot-0.5)); #CHECKME - not sure about adding +.5 as "hdg" process
|
||||
nd.symbols.hdgBug2ValL.show();
|
||||
} else {
|
||||
nd.symbols.hdgBug2ValL.hide();
|
||||
}
|
||||
},
|
||||
is_false: func(nd) nd.symbols.hdgBug2ValL.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
id:"hdgGroup",
|
||||
impl: {
|
||||
|
|
|
@ -10,8 +10,6 @@ var PFD_1_mismatch = nil;
|
|||
var PFD_2_mismatch = nil;
|
||||
var PFD1_display = nil;
|
||||
var PFD2_display = nil;
|
||||
var updateL = 0;
|
||||
var updateR = 0;
|
||||
var et = 0;
|
||||
var altTens = 0;
|
||||
var track_diff = 0;
|
||||
|
@ -136,7 +134,6 @@ var adr_3_fault = props.globals.getNode("/controls/navigation/adirscp/lights/adr
|
|||
var air_data_switch = props.globals.getNode("/controls/navigation/switching/air-data", 1);
|
||||
|
||||
# Create Nodes:
|
||||
var alt_diff = props.globals.initNode("/instrumentation/pfd/alt-diff", 0.0, "DOUBLE");
|
||||
var heading = props.globals.initNode("/instrumentation/pfd/heading-deg", 0.0, "DOUBLE");
|
||||
var horizon_pitch = props.globals.initNode("/instrumentation/pfd/horizon-pitch", 0.0, "DOUBLE");
|
||||
var horizon_ground = props.globals.initNode("/instrumentation/pfd/horizon-ground", 0.0, "DOUBLE");
|
||||
|
@ -282,56 +279,40 @@ var canvas_PFD_base = {
|
|||
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;
|
||||
PFD_1.page.hide();
|
||||
PFD_1_test.page.show();
|
||||
} else if (du2_test_time.getValue() + du2_test_amount.getValue() >= elapsedtime_act and cpt_du_xfr.getValue() == 1) {
|
||||
PFD_1_test.update();
|
||||
updateL = 0;
|
||||
PFD_1.page.hide();
|
||||
PFD_1_test.page.show();
|
||||
} else {
|
||||
PFD_1.updateFast();
|
||||
if (!updateL) { # Update slow here once so that no flicker if timers don't perfectly align
|
||||
updateL = 1;
|
||||
PFD_1.update();
|
||||
}
|
||||
PFD_1_test.page.hide();
|
||||
PFD_1.page.show();
|
||||
}
|
||||
} else {
|
||||
updateL = 0;
|
||||
PFD_1_test.page.hide();
|
||||
PFD_1.page.hide();
|
||||
}
|
||||
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;
|
||||
PFD_2.page.hide();
|
||||
PFD_2_test.page.show();
|
||||
} else if (du5_test_time.getValue() + du5_test_amount.getValue() >= elapsedtime_act and fo_du_xfr.getValue() == 1) {
|
||||
PFD_2_test.update();
|
||||
updateR = 0;
|
||||
PFD_2.page.hide();
|
||||
PFD_2_test.page.show();
|
||||
} else {
|
||||
PFD_2.updateFast();
|
||||
if (!updateR) { # Update slow here once so that no flicker if timers don't perfectly align
|
||||
updateR = 1;
|
||||
PFD_2.update();
|
||||
}
|
||||
PFD_2_test.page.hide();
|
||||
PFD_2.page.show();
|
||||
}
|
||||
} else {
|
||||
updateR = 0;
|
||||
PFD_2_test.page.hide();
|
||||
PFD_2.page.hide();
|
||||
}
|
||||
} else {
|
||||
updateL = 0;
|
||||
updateR = 0;
|
||||
PFD_1_test.page.hide();
|
||||
PFD_1.page.hide();
|
||||
PFD_2_test.page.hide();
|
||||
|
@ -342,14 +323,6 @@ var canvas_PFD_base = {
|
|||
PFD_2_mismatch.page.show();
|
||||
}
|
||||
},
|
||||
updateSlow: func() {
|
||||
if (updateL) {
|
||||
PFD_1.update();
|
||||
}
|
||||
if (updateR) {
|
||||
PFD_2.update();
|
||||
}
|
||||
},
|
||||
updateCommon: func () {
|
||||
# FMA MAN TOGA MCT FLX THR
|
||||
# Set properties used a lot to a variable to avoid calling getValue() multiple times
|
||||
|
@ -360,6 +333,310 @@ var canvas_PFD_base = {
|
|||
toga_lk_act = toga_lk.getValue();
|
||||
thr1_act = thr1.getValue();
|
||||
thr2_act = thr2.getValue();
|
||||
|
||||
# Attitude Indicator
|
||||
pitch_cur = pitch.getValue();
|
||||
roll_cur = roll.getValue();
|
||||
|
||||
me.AI_horizon_trans.setTranslation(0, pitch_cur * 11.825);
|
||||
me.AI_horizon_rot.setRotation(-roll_cur * D2R, me["AI_center"].getCenter());
|
||||
me.AI_horizon_ground_trans.setTranslation(0, horizon_ground.getValue() * 11.825);
|
||||
me.AI_horizon_ground_rot.setRotation(-roll_cur * D2R, me["AI_center"].getCenter());
|
||||
me.AI_horizon_sky_rot.setRotation(-roll_cur * D2R, me["AI_center"].getCenter());
|
||||
|
||||
me["AI_slipskid"].setTranslation(math.clamp(slip_skid.getValue(), -15, 15) * 7, 0);
|
||||
me["AI_bank"].setRotation(-roll_cur * D2R);
|
||||
|
||||
if (fbw_law.getValue() == 0) {
|
||||
me["AI_bank_lim"].show();
|
||||
me["AI_pitch_lim"].show();
|
||||
me["AI_bank_lim_X"].hide();
|
||||
me["AI_pitch_lim_X"].hide();
|
||||
} else {
|
||||
me["AI_bank_lim"].hide();
|
||||
me["AI_pitch_lim"].hide();
|
||||
me["AI_bank_lim_X"].show();
|
||||
me["AI_pitch_lim_X"].show();
|
||||
}
|
||||
|
||||
fd_roll_cur = fd_roll.getValue();
|
||||
fd_pitch_cur = fd_pitch.getValue();
|
||||
if (fd_roll_cur != nil) {
|
||||
me["FD_roll"].setTranslation((fd_roll_cur) * 2.2, 0);
|
||||
}
|
||||
if (fd_pitch_cur != nil) {
|
||||
me["FD_pitch"].setTranslation(0, -(fd_pitch_cur) * 3.8);
|
||||
}
|
||||
|
||||
gear_agl_cur = gear_agl.getValue();
|
||||
|
||||
me["AI_agl"].setText(sprintf("%s", math.round(math.clamp(gear_agl_cur, 0, 2500))));
|
||||
|
||||
if (fmgc.FMGCInternal.phase < 3 or fmgc.flightPlanController.arrivalDist >= 250) {
|
||||
me["FMA_dh_box"].hide();
|
||||
me["FMA_dh"].hide();
|
||||
me["FMA_dhn"].hide();
|
||||
me["FMA_nodh"].hide();
|
||||
#me["dhReached"].hide();
|
||||
if (gear_agl_cur <= 2500) {
|
||||
me["AI_agl"].show();
|
||||
if (gear_agl_cur <= decision.getValue()) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
} else {
|
||||
me["AI_agl"].hide();
|
||||
}
|
||||
} else {
|
||||
if (gear_agl_cur <= 2500) {
|
||||
me["AI_agl"].show();
|
||||
me["FMA_dh_box"].hide(); #not implemented
|
||||
if (int(getprop("/FMGC/internal/radio")) != 99999) {
|
||||
me["FMA_dh"].setText("RADIO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText(sprintf("%.0f", getprop("/FMGC/internal/radio")));
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
hundredAbove.setValue(getprop("/FMGC/internal/radio") + 100);
|
||||
minimum.setValue(getprop("/FMGC/internal/radio"));
|
||||
if (gear_agl_cur <= getprop("/FMGC/internal/radio") + 100) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
} else if (int(getprop("/FMGC/internal/baro")) != 99999) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText(sprintf("%.0f", getprop("/FMGC/internal/baro")));
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
hundredAbove.setValue(getprop("/FMGC/internal/baro") + 100);
|
||||
minimum.setValue(getprop("/FMGC/internal/baro"));
|
||||
if (gear_agl_cur <= getprop("/FMGC/internal/baro") + 100) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
} else if (fmgc.FMGCInternal.radioNo) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText("100");
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
hundredAbove.setValue(100);
|
||||
minimum.setValue(0);
|
||||
if (gear_agl_cur <= 100) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
} else {
|
||||
me["FMA_dh"].hide();
|
||||
me["FMA_dhn"].hide();
|
||||
me["FMA_nodh"].show();
|
||||
hundredAbove.setValue(400);
|
||||
minimum.setValue(300);
|
||||
if (gear_agl_cur <= 400) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
me["AI_agl"].hide();
|
||||
me["FMA_nodh"].hide();
|
||||
me["FMA_dh_box"].hide(); #not implemented
|
||||
if (int(getprop("/FMGC/internal/radio")) != 99999) {
|
||||
me["FMA_dh"].setText("RADIO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText(sprintf("%.0f", getprop("/FMGC/internal/radio")));
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
} else if (int(getprop("/FMGC/internal/baro")) != 99999) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText(sprintf("%.0f", getprop("/FMGC/internal/baro")));
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
} else if (fmgc.FMGCInternal.radioNo) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText("100");
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
} else {
|
||||
me["FMA_dh"].hide();
|
||||
me["FMA_dhn"].hide();
|
||||
me["FMA_nodh"].show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
me["AI_agl_g"].setRotation(-roll_cur * D2R);
|
||||
|
||||
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();
|
||||
|
||||
} else if ((wow1.getValue() == 1 or wow2.getValue() == 1) and (FMGCphase_act == 0 or FMGCphase_act == 1) and (eng0_state.getValue() == 3 or eng1_state.getValue() == 3)) {
|
||||
me["AI_stick"].show();
|
||||
me["AI_stick_pos"].show();
|
||||
} else {
|
||||
me["AI_stick"].hide();
|
||||
me["AI_stick_pos"].hide();
|
||||
}
|
||||
|
||||
me["AI_stick_pos"].setTranslation(aileron_input.getValue() * 196.8, elevator_input.getValue() * 151.5);
|
||||
|
||||
# Vertical Speed
|
||||
me["VS_pointer"].setRotation(vs_needle.getValue() * D2R);
|
||||
|
||||
me["VS_box"].setTranslation(0, vs_digit.getValue());
|
||||
|
||||
var vs_pfd_cur = ap_vs_pfd.getValue();
|
||||
if (vs_pfd_cur < 2) {
|
||||
me["VS_box"].hide();
|
||||
} else {
|
||||
me["VS_box"].show();
|
||||
}
|
||||
|
||||
if (vs_pfd_cur < 10) {
|
||||
me["VS_digit"].setText(sprintf("%02d", "0" ~ vs_pfd_cur));
|
||||
} else {
|
||||
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);
|
||||
|
||||
# Heading
|
||||
me.heading = hdg_scale.getValue();
|
||||
me.headOffset = me.heading / 10 - int(me.heading / 10);
|
||||
me.middleText = roundabout(me.heading / 10);
|
||||
me.middleOffset = nil;
|
||||
if(me.middleText == 36) {
|
||||
me.middleText = 0;
|
||||
}
|
||||
me.leftText1 = me.middleText == 0?35:me.middleText - 1;
|
||||
me.rightText1 = me.middleText == 35?0:me.middleText + 1;
|
||||
me.leftText2 = me.leftText1 == 0?35:me.leftText1 - 1;
|
||||
me.rightText2 = me.rightText1 == 35?0:me.rightText1 + 1;
|
||||
me.leftText3 = me.leftText2 == 0?35:me.leftText2 - 1;
|
||||
me.rightText3 = me.rightText2 == 35?0:me.rightText2 + 1;
|
||||
if (me.headOffset > 0.5) {
|
||||
me.middleOffset = -(me.headOffset - 1) * 98.5416;
|
||||
} else {
|
||||
me.middleOffset = -me.headOffset * 98.5416;
|
||||
}
|
||||
me["HDG_scale"].setTranslation(me.middleOffset, 0);
|
||||
me["HDG_scale"].update();
|
||||
me["HDG_four"].setText(sprintf("%d", me.middleText));
|
||||
me["HDG_five"].setText(sprintf("%d", me.rightText1));
|
||||
me["HDG_three"].setText(sprintf("%d", me.leftText1));
|
||||
me["HDG_six"].setText(sprintf("%d", me.rightText2));
|
||||
me["HDG_two"].setText(sprintf("%d", me.leftText2));
|
||||
me["HDG_seven"].setText(sprintf("%d", me.rightText3));
|
||||
me["HDG_one"].setText(sprintf("%d", me.leftText3));
|
||||
|
||||
me["HDG_four"].setFontSize(fontSizeHDG(me.middleText), 1);
|
||||
me["HDG_five"].setFontSize(fontSizeHDG(me.rightText1), 1);
|
||||
me["HDG_three"].setFontSize(fontSizeHDG(me.leftText1), 1);
|
||||
me["HDG_six"].setFontSize(fontSizeHDG(me.rightText2), 1);
|
||||
me["HDG_two"].setFontSize(fontSizeHDG(me.leftText2), 1);
|
||||
me["HDG_seven"].setFontSize(fontSizeHDG(me.rightText3), 1);
|
||||
me["HDG_one"].setFontSize(fontSizeHDG(me.leftText3), 1);
|
||||
|
||||
show_hdg_act = show_hdg.getValue();
|
||||
hdg_diff_act = hdg_diff.getValue();
|
||||
if (show_hdg_act == 1 and hdg_diff_act >= -23.62 and hdg_diff_act <= 23.62) {
|
||||
me["HDG_target"].setTranslation((hdg_diff_act / 10) * 98.5416, 0);
|
||||
me["HDG_digit_L"].hide();
|
||||
me["HDG_digit_R"].hide();
|
||||
me["HDG_target"].show();
|
||||
} else if (show_hdg_act == 1 and hdg_diff_act < -23.62 and hdg_diff_act >= -180) {
|
||||
me["HDG_digit_L"].setText(sprintf("%3.0f", ap_hdg.getValue()));
|
||||
me["HDG_digit_L"].show();
|
||||
me["HDG_digit_R"].hide();
|
||||
me["HDG_target"].hide();
|
||||
} else if (show_hdg_act == 1 and hdg_diff_act > 23.62 and hdg_diff_act <= 180) {
|
||||
me["HDG_digit_R"].setText(sprintf("%3.0f", ap_hdg.getValue()));
|
||||
me["HDG_digit_R"].show();
|
||||
me["HDG_digit_L"].hide();
|
||||
me["HDG_target"].hide();
|
||||
} else {
|
||||
me["HDG_digit_L"].hide();
|
||||
me["HDG_digit_R"].hide();
|
||||
me["HDG_target"].hide();
|
||||
}
|
||||
|
||||
|
||||
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_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();
|
||||
me["ILS_HDG_L"].hide();
|
||||
me["CRS_pointer"].show();
|
||||
} else if (magnetic_hdg_dif < -23.62 and magnetic_hdg_dif >= -180) {
|
||||
if (int(magnetic_hdg) < 10) {
|
||||
me["ILS_left"].setText(sprintf("00%1.0f", int(magnetic_hdg)));
|
||||
} else if (int(magnetic_hdg) < 100) {
|
||||
me["ILS_left"].setText(sprintf("0%2.0f", int(magnetic_hdg)));
|
||||
} else {
|
||||
me["ILS_left"].setText(sprintf("%3.0f", int(magnetic_hdg)));
|
||||
}
|
||||
me["ILS_HDG_L"].show();
|
||||
me["ILS_HDG_R"].hide();
|
||||
me["CRS_pointer"].hide();
|
||||
} else if (magnetic_hdg_dif > 23.62 and magnetic_hdg_dif <= 180) {
|
||||
if (int(magnetic_hdg) < 10) {
|
||||
me["ILS_right"].setText(sprintf("00%1.0f", int(magnetic_hdg)));
|
||||
} else if (int(magnetic_hdg) < 100) {
|
||||
me["ILS_right"].setText(sprintf("0%2.0f", int(magnetic_hdg)));
|
||||
} else {
|
||||
me["ILS_right"].setText(sprintf("%3.0f", int(magnetic_hdg)));
|
||||
}
|
||||
me["ILS_HDG_R"].show();
|
||||
me["ILS_HDG_L"].hide();
|
||||
me["CRS_pointer"].hide();
|
||||
} else {
|
||||
me["ILS_HDG_R"].hide();
|
||||
me["ILS_HDG_L"].hide();
|
||||
me["CRS_pointer"].hide();
|
||||
}
|
||||
} else {
|
||||
me["ILS_HDG_R"].hide();
|
||||
me["ILS_HDG_L"].hide();
|
||||
me["CRS_pointer"].hide();
|
||||
}
|
||||
|
||||
# AI HDG
|
||||
me.AI_horizon_hdg_trans.setTranslation(me.middleOffset, horizon_pitch.getValue() * 11.825);
|
||||
me.AI_horizon_hdg_rot.setRotation(-roll_cur * D2R, me["AI_center"].getCenter());
|
||||
me["AI_heading"].update();
|
||||
|
||||
if (athr.getValue() == 1 and (state1_act == "TOGA" or state1_act == "MCT" or state1_act == "MAN THR" or state2_act == "TOGA" or state2_act == "MCT" or state2_act == "MAN THR") and eng_out.getValue() != 1 and alpha_floor_act != 1 and
|
||||
toga_lk_act != 1) {
|
||||
me["FMA_man"].show();
|
||||
|
@ -724,310 +1001,6 @@ var canvas_PFD_base = {
|
|||
}
|
||||
|
||||
},
|
||||
updateCommonFast: func() {
|
||||
# Attitude Indicator
|
||||
pitch_cur = pitch.getValue();
|
||||
roll_cur = roll.getValue();
|
||||
|
||||
me.AI_horizon_trans.setTranslation(0, pitch_cur * 11.825);
|
||||
me.AI_horizon_rot.setRotation(-roll_cur * D2R, me["AI_center"].getCenter());
|
||||
me.AI_horizon_ground_trans.setTranslation(0, horizon_ground.getValue() * 11.825);
|
||||
me.AI_horizon_ground_rot.setRotation(-roll_cur * D2R, me["AI_center"].getCenter());
|
||||
me.AI_horizon_sky_rot.setRotation(-roll_cur * D2R, me["AI_center"].getCenter());
|
||||
|
||||
me["AI_slipskid"].setTranslation(math.clamp(slip_skid.getValue(), -15, 15) * 7, 0);
|
||||
me["AI_bank"].setRotation(-roll_cur * D2R);
|
||||
|
||||
if (fbw_law.getValue() == 0) {
|
||||
me["AI_bank_lim"].show();
|
||||
me["AI_pitch_lim"].show();
|
||||
me["AI_bank_lim_X"].hide();
|
||||
me["AI_pitch_lim_X"].hide();
|
||||
} else {
|
||||
me["AI_bank_lim"].hide();
|
||||
me["AI_pitch_lim"].hide();
|
||||
me["AI_bank_lim_X"].show();
|
||||
me["AI_pitch_lim_X"].show();
|
||||
}
|
||||
|
||||
fd_roll_cur = fd_roll.getValue();
|
||||
fd_pitch_cur = fd_pitch.getValue();
|
||||
if (fd_roll_cur != nil) {
|
||||
me["FD_roll"].setTranslation((fd_roll_cur) * 2.2, 0);
|
||||
}
|
||||
if (fd_pitch_cur != nil) {
|
||||
me["FD_pitch"].setTranslation(0, -(fd_pitch_cur) * 3.8);
|
||||
}
|
||||
|
||||
gear_agl_cur = gear_agl.getValue();
|
||||
|
||||
me["AI_agl"].setText(sprintf("%s", math.round(math.clamp(gear_agl_cur, 0, 2500))));
|
||||
|
||||
if (fmgc.FMGCInternal.phase < 3 or fmgc.flightPlanController.arrivalDist >= 250) {
|
||||
me["FMA_dh_box"].hide();
|
||||
me["FMA_dh"].hide();
|
||||
me["FMA_dhn"].hide();
|
||||
me["FMA_nodh"].hide();
|
||||
#me["dhReached"].hide();
|
||||
if (gear_agl_cur <= 2500) {
|
||||
me["AI_agl"].show();
|
||||
if (gear_agl_cur <= decision.getValue()) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
} else {
|
||||
me["AI_agl"].hide();
|
||||
}
|
||||
} else {
|
||||
if (gear_agl_cur <= 2500) {
|
||||
me["AI_agl"].show();
|
||||
me["FMA_dh_box"].hide(); #not implemented
|
||||
if (int(getprop("/FMGC/internal/radio")) != 99999) {
|
||||
me["FMA_dh"].setText("RADIO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText(sprintf("%.0f", getprop("/FMGC/internal/radio")));
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
hundredAbove.setValue(getprop("/FMGC/internal/radio") + 100);
|
||||
minimum.setValue(getprop("/FMGC/internal/radio"));
|
||||
if (gear_agl_cur <= getprop("/FMGC/internal/radio") + 100) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
} else if (int(getprop("/FMGC/internal/baro")) != 99999) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText(sprintf("%.0f", getprop("/FMGC/internal/baro")));
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
hundredAbove.setValue(getprop("/FMGC/internal/baro") + 100);
|
||||
minimum.setValue(getprop("/FMGC/internal/baro"));
|
||||
if (gear_agl_cur <= getprop("/FMGC/internal/baro") + 100) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
} else if (fmgc.FMGCInternal.radioNo) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText("100");
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
hundredAbove.setValue(100);
|
||||
minimum.setValue(0);
|
||||
if (gear_agl_cur <= 100) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
} else {
|
||||
me["FMA_dh"].hide();
|
||||
me["FMA_dhn"].hide();
|
||||
me["FMA_nodh"].show();
|
||||
hundredAbove.setValue(400);
|
||||
minimum.setValue(300);
|
||||
if (gear_agl_cur <= 400) {
|
||||
me["AI_agl"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["AI_agl"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
me["AI_agl"].hide();
|
||||
me["FMA_nodh"].hide();
|
||||
me["FMA_dh_box"].hide(); #not implemented
|
||||
if (int(getprop("/FMGC/internal/radio")) != 99999) {
|
||||
me["FMA_dh"].setText("RADIO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText(sprintf("%.0f", getprop("/FMGC/internal/radio")));
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
} else if (int(getprop("/FMGC/internal/baro")) != 99999) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText(sprintf("%.0f", getprop("/FMGC/internal/baro")));
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
} else if (fmgc.FMGCInternal.radioNo) {
|
||||
me["FMA_dh"].setText("BARO");
|
||||
me["FMA_dh"].show();
|
||||
me["FMA_dhn"].setText("100");
|
||||
me["FMA_dhn"].show();
|
||||
me["FMA_nodh"].hide();
|
||||
} else {
|
||||
me["FMA_dh"].hide();
|
||||
me["FMA_dhn"].hide();
|
||||
me["FMA_nodh"].show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
me["AI_agl_g"].setRotation(-roll_cur * D2R);
|
||||
|
||||
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();
|
||||
|
||||
} else if ((wow1.getValue() == 1 or wow2.getValue() == 1) and (FMGCphase_act == 0 or FMGCphase_act == 1) and (eng0_state.getValue() == 3 or eng1_state.getValue() == 3)) {
|
||||
me["AI_stick"].show();
|
||||
me["AI_stick_pos"].show();
|
||||
} else {
|
||||
me["AI_stick"].hide();
|
||||
me["AI_stick_pos"].hide();
|
||||
}
|
||||
|
||||
me["AI_stick_pos"].setTranslation(aileron_input.getValue() * 196.8, elevator_input.getValue() * 151.5);
|
||||
|
||||
# Vertical Speed
|
||||
me["VS_pointer"].setRotation(vs_needle.getValue() * D2R);
|
||||
|
||||
me["VS_box"].setTranslation(0, vs_digit.getValue());
|
||||
|
||||
var vs_pfd_cur = ap_vs_pfd.getValue();
|
||||
if (vs_pfd_cur < 2) {
|
||||
me["VS_box"].hide();
|
||||
} else {
|
||||
me["VS_box"].show();
|
||||
}
|
||||
|
||||
if (vs_pfd_cur < 10) {
|
||||
me["VS_digit"].setText(sprintf("%02d", "0" ~ vs_pfd_cur));
|
||||
} else {
|
||||
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);
|
||||
|
||||
# Heading
|
||||
me.heading = hdg_scale.getValue();
|
||||
me.headOffset = me.heading / 10 - int(me.heading / 10);
|
||||
me.middleText = roundabout(me.heading / 10);
|
||||
me.middleOffset = nil;
|
||||
if(me.middleText == 36) {
|
||||
me.middleText = 0;
|
||||
}
|
||||
me.leftText1 = me.middleText == 0?35:me.middleText - 1;
|
||||
me.rightText1 = me.middleText == 35?0:me.middleText + 1;
|
||||
me.leftText2 = me.leftText1 == 0?35:me.leftText1 - 1;
|
||||
me.rightText2 = me.rightText1 == 35?0:me.rightText1 + 1;
|
||||
me.leftText3 = me.leftText2 == 0?35:me.leftText2 - 1;
|
||||
me.rightText3 = me.rightText2 == 35?0:me.rightText2 + 1;
|
||||
if (me.headOffset > 0.5) {
|
||||
me.middleOffset = -(me.headOffset - 1) * 98.5416;
|
||||
} else {
|
||||
me.middleOffset = -me.headOffset * 98.5416;
|
||||
}
|
||||
me["HDG_scale"].setTranslation(me.middleOffset, 0);
|
||||
me["HDG_scale"].update();
|
||||
me["HDG_four"].setText(sprintf("%d", me.middleText));
|
||||
me["HDG_five"].setText(sprintf("%d", me.rightText1));
|
||||
me["HDG_three"].setText(sprintf("%d", me.leftText1));
|
||||
me["HDG_six"].setText(sprintf("%d", me.rightText2));
|
||||
me["HDG_two"].setText(sprintf("%d", me.leftText2));
|
||||
me["HDG_seven"].setText(sprintf("%d", me.rightText3));
|
||||
me["HDG_one"].setText(sprintf("%d", me.leftText3));
|
||||
|
||||
me["HDG_four"].setFontSize(fontSizeHDG(me.middleText), 1);
|
||||
me["HDG_five"].setFontSize(fontSizeHDG(me.rightText1), 1);
|
||||
me["HDG_three"].setFontSize(fontSizeHDG(me.leftText1), 1);
|
||||
me["HDG_six"].setFontSize(fontSizeHDG(me.rightText2), 1);
|
||||
me["HDG_two"].setFontSize(fontSizeHDG(me.leftText2), 1);
|
||||
me["HDG_seven"].setFontSize(fontSizeHDG(me.rightText3), 1);
|
||||
me["HDG_one"].setFontSize(fontSizeHDG(me.leftText3), 1);
|
||||
|
||||
show_hdg_act = show_hdg.getValue();
|
||||
hdg_diff_act = hdg_diff.getValue();
|
||||
if (show_hdg_act == 1 and hdg_diff_act >= -23.62 and hdg_diff_act <= 23.62) {
|
||||
me["HDG_target"].setTranslation((hdg_diff_act / 10) * 98.5416, 0);
|
||||
me["HDG_digit_L"].hide();
|
||||
me["HDG_digit_R"].hide();
|
||||
me["HDG_target"].show();
|
||||
} else if (show_hdg_act == 1 and hdg_diff_act < -23.62 and hdg_diff_act >= -180) {
|
||||
me["HDG_digit_L"].setText(sprintf("%3.0f", ap_hdg.getValue()));
|
||||
me["HDG_digit_L"].show();
|
||||
me["HDG_digit_R"].hide();
|
||||
me["HDG_target"].hide();
|
||||
} else if (show_hdg_act == 1 and hdg_diff_act > 23.62 and hdg_diff_act <= 180) {
|
||||
me["HDG_digit_R"].setText(sprintf("%3.0f", ap_hdg.getValue()));
|
||||
me["HDG_digit_R"].show();
|
||||
me["HDG_digit_L"].hide();
|
||||
me["HDG_target"].hide();
|
||||
} else {
|
||||
me["HDG_digit_L"].hide();
|
||||
me["HDG_digit_R"].hide();
|
||||
me["HDG_target"].hide();
|
||||
}
|
||||
|
||||
|
||||
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_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();
|
||||
me["ILS_HDG_L"].hide();
|
||||
me["CRS_pointer"].show();
|
||||
} else if (magnetic_hdg_dif < -23.62 and magnetic_hdg_dif >= -180) {
|
||||
if (int(magnetic_hdg) < 10) {
|
||||
me["ILS_left"].setText(sprintf("00%1.0f", int(magnetic_hdg)));
|
||||
} else if (int(magnetic_hdg) < 100) {
|
||||
me["ILS_left"].setText(sprintf("0%2.0f", int(magnetic_hdg)));
|
||||
} else {
|
||||
me["ILS_left"].setText(sprintf("%3.0f", int(magnetic_hdg)));
|
||||
}
|
||||
me["ILS_HDG_L"].show();
|
||||
me["ILS_HDG_R"].hide();
|
||||
me["CRS_pointer"].hide();
|
||||
} else if (magnetic_hdg_dif > 23.62 and magnetic_hdg_dif <= 180) {
|
||||
if (int(magnetic_hdg) < 10) {
|
||||
me["ILS_right"].setText(sprintf("00%1.0f", int(magnetic_hdg)));
|
||||
} else if (int(magnetic_hdg) < 100) {
|
||||
me["ILS_right"].setText(sprintf("0%2.0f", int(magnetic_hdg)));
|
||||
} else {
|
||||
me["ILS_right"].setText(sprintf("%3.0f", int(magnetic_hdg)));
|
||||
}
|
||||
me["ILS_HDG_R"].show();
|
||||
me["ILS_HDG_L"].hide();
|
||||
me["CRS_pointer"].hide();
|
||||
} else {
|
||||
me["ILS_HDG_R"].hide();
|
||||
me["ILS_HDG_L"].hide();
|
||||
me["CRS_pointer"].hide();
|
||||
}
|
||||
} else {
|
||||
me["ILS_HDG_R"].hide();
|
||||
me["ILS_HDG_L"].hide();
|
||||
me["CRS_pointer"].hide();
|
||||
}
|
||||
|
||||
# AI HDG
|
||||
me.AI_horizon_hdg_trans.setTranslation(me.middleOffset, horizon_pitch.getValue() * 11.825);
|
||||
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() {
|
||||
|
@ -1235,9 +1208,6 @@ var canvas_PFD_1 = {
|
|||
me["ilsError"].hide();
|
||||
}
|
||||
|
||||
me.updateCommon();
|
||||
},
|
||||
updateFast: func() {
|
||||
# Airspeed
|
||||
# ind_spd = ind_spd_kt.getValue();
|
||||
# Subtract 30, since the scale starts at 30, but don"t allow less than 0, or more than 420 situations
|
||||
|
@ -1719,7 +1689,7 @@ var canvas_PFD_1 = {
|
|||
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
||||
|
||||
ap_alt_cur = ap_alt.getValue();
|
||||
alt_diff_cur = alt_diff.getValue();
|
||||
alt_diff_cur = dmc.DMController.DMCs[0].outputs[7].getValue();
|
||||
if (alt_diff_cur >= -565 and alt_diff_cur <= 565) {
|
||||
me["ALT_target"].setTranslation(0, (alt_diff_cur / 100) * -48.66856);
|
||||
me["ALT_target_digit"].setText(sprintf("%03d", math.round(ap_alt_cur / 100)));
|
||||
|
@ -1830,7 +1800,7 @@ var canvas_PFD_1 = {
|
|||
me["ALT_box"].hide();
|
||||
}
|
||||
|
||||
me.updateCommonFast();
|
||||
me.updateCommon();
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2010,9 +1980,6 @@ var canvas_PFD_2 = {
|
|||
me["ilsError"].hide();
|
||||
}
|
||||
|
||||
me.updateCommon();
|
||||
},
|
||||
updateFast: func() {
|
||||
# Airspeed
|
||||
# ind_spd = ind_spd_kt.getValue();
|
||||
# Subtract 30, since the scale starts at 30, but don"t allow less than 0, or more than 420 situations
|
||||
|
@ -2493,7 +2460,7 @@ var canvas_PFD_2 = {
|
|||
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
||||
|
||||
ap_alt_cur = ap_alt.getValue();
|
||||
alt_diff_cur = alt_diff.getValue();
|
||||
alt_diff_cur = dmc.DMController.DMCs[1].outputs[7].getValue();
|
||||
if (alt_diff_cur >= -565 and alt_diff_cur <= 565) {
|
||||
me["ALT_target"].setTranslation(0, (alt_diff_cur / 100) * -48.66856);
|
||||
me["ALT_target_digit"].setText(sprintf("%03d", math.round(ap_alt_cur / 100)));
|
||||
|
@ -2604,7 +2571,7 @@ var canvas_PFD_2 = {
|
|||
me["ALT_box"].hide();
|
||||
}
|
||||
|
||||
me.updateCommonFast();
|
||||
me.updateCommon();
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -2782,7 +2749,6 @@ setlistener("sim/signals/fdm-initialized", func {
|
|||
PFD_2_mismatch = canvas_PFD_2_mismatch.new(group_pfd2_mismatch, "Aircraft/A320-family/Models/Instruments/Common/res/mismatch.svg");
|
||||
|
||||
PFD_update.start();
|
||||
PFD_update_fast.start();
|
||||
|
||||
if (pfdrate.getValue() == 1) {
|
||||
rateApply();
|
||||
|
@ -2790,15 +2756,10 @@ setlistener("sim/signals/fdm-initialized", func {
|
|||
});
|
||||
|
||||
var rateApply = func {
|
||||
PFD_update.restart(0.15 * pfdrate.getValue());
|
||||
PFD_update_fast.restart(0.05 * pfdrate.getValue());
|
||||
PFD_update.restart(0.05 * pfdrate.getValue());
|
||||
}
|
||||
|
||||
var PFD_update = maketimer(0.15, func {
|
||||
canvas_PFD_base.updateSlow();
|
||||
});
|
||||
|
||||
var PFD_update_fast = maketimer(0.05, func {
|
||||
var PFD_update = maketimer(0.05, func {
|
||||
canvas_PFD_base.update();
|
||||
});
|
||||
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<PropertyList>
|
||||
<sim>
|
||||
<model>
|
||||
<livery>
|
||||
<name>ICAO Airline Name (Extra Info)</name>
|
||||
<texture-fuselage>Liveries/A320/CFM/texture.png</texture-fuselage>
|
||||
<texture-engine>Liveries/A320/CFM/texture.png</texture-engine>
|
||||
</livery>
|
||||
</model>
|
||||
</sim>
|
||||
|
||||
<options>
|
||||
<engine-name type="string">CFM56-5B4</engine-name>
|
||||
<model-number type="string">A320-214</model-number>
|
||||
<EIS2 type="bool">1</EIS2>
|
||||
<company-options>
|
||||
<idle-factor>+0.0</idle-factor>
|
||||
<perf-factor>+1.0</perf-factor> <!-- please see https://www.cockpitseeker.com/wp-content/uploads/goodies/ac/a320/pdf/data/PerfoMonitoring.pdf -->
|
||||
</company-options>
|
||||
<model-options>
|
||||
<registration type="string">AB-CDE</registration>
|
||||
<three-letter type="string">ABC</three-letter>
|
||||
<two-letter type="string">DE</two-letter>
|
||||
<sharklet type="bool">0</sharklet>
|
||||
<wifi-aft type="bool">0</wifi-aft>
|
||||
<wifi-fwd type="bool">0</wifi-fwd>
|
||||
</model-options>
|
||||
</options>
|
||||
</PropertyList>
|
|
@ -13,11 +13,12 @@ var DMC = {
|
|||
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.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
|
||||
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.altitudeDiffs = [props.globals.getNode("//instrumentation/pfd/alt-diff[0]", 1), props.globals.getNode("//instrumentation/pfd/alt-diff[1]", 1), props.globals.getNode("//instrumentation/pfd/alt-diff[2]", 1)];
|
||||
d.outputs = [nil, nil, nil, nil, nil, nil, nil, nil]; # airspeed, altitude, mach, pfd altitude, sat, tat, speed trend, altitudeDiffs
|
||||
return d;
|
||||
},
|
||||
changeActiveADIRS: func(newADIRS) {
|
||||
|
@ -32,6 +33,7 @@ var DMC = {
|
|||
me.outputs[4] = me.sats[ADIRS];
|
||||
me.outputs[5] = me.tats[ADIRS];
|
||||
me.outputs[6] = me.trends[ADIRS];
|
||||
me.outputs[7] = me.altitudeDiffs[ADIRS];
|
||||
},
|
||||
setOutputsNil: func() {
|
||||
me.outputs[0] = nil;
|
||||
|
@ -41,6 +43,7 @@ var DMC = {
|
|||
me.outputs[4] = nil;
|
||||
me.outputs[5] = nil;
|
||||
me.outputs[6] = nil;
|
||||
me.outputs[7] = nil;
|
||||
},
|
||||
update: func() {
|
||||
if (systems.ADIRS.ADIRunits[me.activeADIRS].operative and systems.ADIRS.ADIRunits[me.activeADIRS].outputOn) {
|
||||
|
@ -71,8 +74,8 @@ var DMController = {
|
|||
|
||||
# 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].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.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.DMCs[1].altitudeDiffs = [props.globals.getNode("//instrumentation/pfd/alt-diff[3]", 1), props.globals.getNode("//instrumentation/pfd/alt-diff[4]", 1), props.globals.getNode("//instrumentation/pfd/alt-diff[5]", 1)];
|
||||
me._init = 1;
|
||||
}
|
||||
},
|
||||
|
|
41
Nasal/Displays/projection.nas
Normal file
41
Nasal/Displays/projection.nas
Normal file
|
@ -0,0 +1,41 @@
|
|||
# Projection-related helper functions for the MFD maps
|
||||
|
||||
var Camera = {
|
||||
new: func(options) {
|
||||
var m = {
|
||||
parents: [Camera],
|
||||
|
||||
camGeo: options['camGeo'] or geo.aircraft_position(),
|
||||
camHdg: options['camHdg'] or 0,
|
||||
range: options['range'] or 10.0,
|
||||
screenRange: options['screenRange'] or 256.0,
|
||||
screenCX: options['screenCX'] or options['screenRange'] or 256.0,
|
||||
screenCY: options['screenCY'] or options['screenRange'] or 256.0,
|
||||
};
|
||||
return m;
|
||||
},
|
||||
|
||||
setRange: func(range) {
|
||||
me.range = range;
|
||||
},
|
||||
|
||||
repositon: func(geo, hdg) {
|
||||
me.camGeo = geo;
|
||||
me.camHdg = hdg;
|
||||
},
|
||||
|
||||
project: func(targetGeo) {
|
||||
var dist = me.camGeo.distance_to(targetGeo) * M2NM;
|
||||
var bearing = me.camGeo.course_to(targetGeo) - me.camHdg;
|
||||
return me.projectDistBearing(dist, bearing);
|
||||
},
|
||||
|
||||
projectDistBearing: func(dist, bearing) {
|
||||
var bearingRad = bearing * D2R;
|
||||
var tx = math.sin(bearingRad) * dist;
|
||||
var ty = -math.cos(bearingRad) * dist;
|
||||
var x = tx * me.screenRange / me.range + me.screenCX;
|
||||
var y = ty * me.screenRange / me.range + me.screenCY;
|
||||
return [x, y];
|
||||
},
|
||||
};
|
359
Nasal/Displays/traffic.nas
Normal file
359
Nasal/Displays/traffic.nas
Normal file
|
@ -0,0 +1,359 @@
|
|||
# Traffic layer
|
||||
|
||||
var ATCSwitchAbvBlw = props.globals.getNode("/controls/atc/abv-blw");
|
||||
var ATCSwitchThrtAll = props.globals.getNode("/controls/atc/thrt-all");
|
||||
|
||||
var colorByLevel = {
|
||||
# 0: other
|
||||
0: [0.8,0.8,0.8],
|
||||
# 1: proximity
|
||||
1: [0.8,0.8,0.8],
|
||||
# 2: traffic advisory (TA)
|
||||
2: [1,0.75,0],
|
||||
# 3: resolution advisory (RA)
|
||||
3: [1,0,0],
|
||||
};
|
||||
|
||||
var doFill = {
|
||||
0: 0,
|
||||
1: 1,
|
||||
2: 1,
|
||||
3: 1,
|
||||
};
|
||||
|
||||
var colorDefault = [0.8,0.8,0.8];
|
||||
|
||||
var drawBlip = func(elem, threatLvl) {
|
||||
if (threatLvl == 3) {
|
||||
# resolution advisory
|
||||
elem.reset()
|
||||
.setStrokeLineWidth(0)
|
||||
.moveTo(-17,-17)
|
||||
.horiz(34)
|
||||
.vert(34)
|
||||
.horiz(-34)
|
||||
.close();
|
||||
}
|
||||
elsif (threatLvl == 2) {
|
||||
# traffic advisory
|
||||
elem.reset()
|
||||
.moveTo(-17,0)
|
||||
.setStrokeLineWidth(0)
|
||||
.arcSmallCW(17,17,0,34,0)
|
||||
.arcSmallCW(17,17,0,-34,0);
|
||||
}
|
||||
elsif (threatLvl == 1) {
|
||||
# proximate traffic
|
||||
elem.reset()
|
||||
.setStrokeLineWidth(0)
|
||||
.moveTo(-14,0)
|
||||
.lineTo(0,-17)
|
||||
.lineTo(14,0)
|
||||
.lineTo(0,17)
|
||||
.close();
|
||||
}
|
||||
else {
|
||||
# other traffic
|
||||
elem.reset()
|
||||
.setStrokeLineWidth(4)
|
||||
.moveTo(-10,0)
|
||||
.lineTo(0,-14)
|
||||
.lineTo(10,0)
|
||||
.lineTo(0,14)
|
||||
.close();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var TrafficLayer = {
|
||||
new: func(camera, group) {
|
||||
var m = {
|
||||
parents: [TrafficLayer],
|
||||
camera: camera,
|
||||
refAlt: 0,
|
||||
group: group,
|
||||
items: {},
|
||||
sorted: {}, # TODO - only the most 8 relevant advisories
|
||||
values: {},
|
||||
updateKeys: [],
|
||||
addListener: nil,
|
||||
delListener: nil,
|
||||
};
|
||||
return m;
|
||||
},
|
||||
|
||||
makeElems: func () {
|
||||
if (me.group == nil) return nil;
|
||||
var elems = {};
|
||||
elems['master'] = me.group.createChild('group');
|
||||
elems['blip'] = elems.master.createChild('path')
|
||||
.setStrokeLineWidth(0);
|
||||
elems['text'] = elems.master.createChild('text')
|
||||
.setDrawMode(canvas.Text.TEXT)
|
||||
.setText(sprintf("0"))
|
||||
.setFont("LiberationFonts/LiberationSans-Regular.ttf")
|
||||
.setColor(1,1,1)
|
||||
.setFontSize(32)
|
||||
.setAlignment("center-center");
|
||||
elems['master'].hide();
|
||||
elems['arrowUp'] = elems.master.createChild("text")
|
||||
.setDrawMode(canvas.Text.TEXT)
|
||||
.setText(sprintf("↑"))
|
||||
.setFont("LiberationFonts/LiberationSans-Regular.ttf")
|
||||
.setColor(1,1,1)
|
||||
.setFontSize(50)
|
||||
.setTranslation(16, 2)
|
||||
.setAlignment("left-center");
|
||||
elems['arrowDown'] = elems.master.createChild("text")
|
||||
.setDrawMode(canvas.Text.TEXT)
|
||||
.setText(sprintf("↓"))
|
||||
.setFont("LiberationFonts/LiberationSans-Regular.ttf")
|
||||
.setColor(1,1,1)
|
||||
.setFontSize(50)
|
||||
.setTranslation(16, 2)
|
||||
.setAlignment("left-center");
|
||||
return elems;
|
||||
},
|
||||
|
||||
start: func() {
|
||||
me.stop();
|
||||
var self = me;
|
||||
me.addListener = setlistener('/ai/models/model-added', func(changed, listen, mode, is_child) {
|
||||
var path = changed.getValue();
|
||||
if (path == nil) return;
|
||||
#printf("ADD: %s", path);
|
||||
me.values[path] = nil;
|
||||
var masterProp = props.globals.getNode(path);
|
||||
var prop = {
|
||||
'master': masterProp,
|
||||
};
|
||||
if (me.items[path] == nil) {
|
||||
me.items[path] = {
|
||||
prop: prop,
|
||||
elems: me.makeElems(),
|
||||
data: {'threatLevel': -2},
|
||||
};
|
||||
}
|
||||
else {
|
||||
me.items[path].prop = prop;
|
||||
me.items[path].data = {'threatLevel': -2};
|
||||
}
|
||||
}, 1, 1);
|
||||
me.delListener = setlistener('/ai/models/model-removed', func(changed, listen, mode, is_child) {
|
||||
var path = changed.getValue();
|
||||
if (path == nil) return;
|
||||
#printf("DEL: %s", path);
|
||||
me.values[path] = nil;
|
||||
if (me.items[path] == nil) return;
|
||||
if (me.items[path] != nil) {
|
||||
me.items[path].prop = nil;
|
||||
me.items[path].elems.master.hide();
|
||||
me.items[path].data = {};
|
||||
}
|
||||
}, 1, 1);
|
||||
},
|
||||
|
||||
stop: func() {
|
||||
if (me.addListener != nil) {
|
||||
removelistener(me.addListener);
|
||||
me.addListener = nil;
|
||||
}
|
||||
if (me.delListener != nil) {
|
||||
removelistener(me.delListener);
|
||||
me.delListener = nil;
|
||||
}
|
||||
me.items = {};
|
||||
if (me.group != nil) {
|
||||
me.group.removeAllChildren();
|
||||
}
|
||||
},
|
||||
|
||||
nxtupdatetime: 0,
|
||||
|
||||
update: func() {
|
||||
var _tm = systime();
|
||||
if (me.nxtupdatetime != 0) {
|
||||
if (_tm<me.nxtupdatetime) return;
|
||||
}
|
||||
me.nxtupdatetime = _tm + 0.5; # refresh rate at 500ms
|
||||
|
||||
if (size(me.updateKeys) == 0) {
|
||||
me.updateKeys = keys(me.items);
|
||||
}
|
||||
var path = pop(me.updateKeys);
|
||||
foreach (var path; keys(me.items)) {
|
||||
me.updateItem(path);
|
||||
}
|
||||
},
|
||||
|
||||
redraw: func() {
|
||||
foreach (var path; keys(me.items)) {
|
||||
me.redrawItem(me.items[path],me.values[path]);
|
||||
}
|
||||
},
|
||||
|
||||
setRefAlt: func(alt) {
|
||||
me.refAlt = alt;
|
||||
},
|
||||
|
||||
proplist: ['lat', 'lon', 'alt', 'threatLevel', 'callsign', 'vspeed', 'tas'],
|
||||
|
||||
updateItem: func(path) {
|
||||
|
||||
var item = me.items[path];
|
||||
if (item == nil) return;
|
||||
if (item.prop == nil) {
|
||||
if (item.elems != nil) {
|
||||
item.elems.master.hide();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (item.prop['lat'] == nil) {
|
||||
item.prop['lat'] = item.prop.master.getNode('position/latitude-deg');
|
||||
item.prop['lon'] = item.prop.master.getNode('position/longitude-deg');
|
||||
item.prop['alt'] = item.prop.master.getNode('position/altitude-ft');
|
||||
}
|
||||
if (item.prop['threatLevel'] == nil) {
|
||||
item.prop['threatLevel'] = item.prop.master.getNode('tcas/threat-level');
|
||||
}
|
||||
if (item.prop['callsign'] == nil) {
|
||||
item.prop['callsign'] = item.prop.master.getNode('callsign');
|
||||
}
|
||||
if (item.prop['vspeed'] == nil) {
|
||||
item.prop['vspeed'] = item.prop.master.getNode('velocities/vertical-speed-fps');
|
||||
item.prop['tas'] = item.prop.master.getNode('velocities/true-airspeed-kt');
|
||||
}
|
||||
|
||||
# this item has a prop associated with it
|
||||
if (item.elems == nil) {
|
||||
item.elems = me.makeElems();
|
||||
}
|
||||
|
||||
var oldThreatLevel = item.data['threatLevel'];
|
||||
|
||||
foreach (var k; me.proplist) {
|
||||
if (item.prop[k] != nil) {
|
||||
item.data[k] = item.prop[k].getValue();
|
||||
}
|
||||
}
|
||||
|
||||
if (item.data['threatLevel'] == -1) { # airplane with TCAS not enabled or supported
|
||||
me.values[path] = {visible: 0};
|
||||
return;
|
||||
}
|
||||
|
||||
if (oldThreatLevel != item.data['threatLevel']) {
|
||||
item.data['threatLevelDirty'] = 1;
|
||||
}
|
||||
|
||||
var newThrtAll = ATCSwitchThrtAll.getValue();
|
||||
if (newThrtAll == 1) { # AUTO - display only proximate and higher advisories
|
||||
if (item.data['threatLevel']==0) {
|
||||
me.values[path] = {visible: 0};
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var _lat = item.data['lat'];
|
||||
var _lon = item.data['lon'];
|
||||
var alt = item.data['alt'];
|
||||
var vspeed = item.data['vspeed'];
|
||||
var tas = item.data['tas'];
|
||||
|
||||
me.values[path] = nil;
|
||||
|
||||
if (_lat != nil and _lon != nil and vspeed != nil) {
|
||||
|
||||
if (tas<80) { # flying airplane only
|
||||
me.values[path] = {visible: 0};
|
||||
return;
|
||||
}
|
||||
|
||||
var top = 27;
|
||||
var bottom = -27;
|
||||
if (ATCSwitchAbvBlw.getValue() == -1) {
|
||||
top = 99;
|
||||
}
|
||||
if (ATCSwitchAbvBlw.getValue() == 1) {
|
||||
bottom = -99;
|
||||
}
|
||||
|
||||
var altDiff100 = ((alt or me.refAlt) - me.refAlt) / 100;
|
||||
|
||||
if (altDiff100 > top or altDiff100 < bottom) { # check TCAS vertical range
|
||||
me.values[path] = {visible: 0};
|
||||
return;
|
||||
}
|
||||
|
||||
var _val = {visible:1, lat:_lat, lon:_lon, dirty:item.data['threatLevelDirty']};
|
||||
|
||||
var spd = vspeed * 60;
|
||||
_val.arrowup = (spd > 500);
|
||||
_val.arrowdown = (spd < -500);
|
||||
|
||||
if (math.abs(altDiff100) > 0.5) {
|
||||
_val.text = sprintf("%+03.0f ", altDiff100);
|
||||
} else {
|
||||
_val.text = "";
|
||||
}
|
||||
|
||||
_val.textpy = (altDiff100 < 0) ? 34 : -30;
|
||||
|
||||
me.values[path] = _val;
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
redrawItem: func (item,val) {
|
||||
#debug.dump("REDRAW ", item.data);
|
||||
|
||||
if (val != nil and val.visible == 1) {
|
||||
|
||||
var lat = val.lat;
|
||||
var lon = val.lon;
|
||||
|
||||
var coords = geo.Coord.new();
|
||||
coords.set_latlon(lat, lon);
|
||||
var (x, y) = me.camera.project(coords);
|
||||
item.elems.master.setTranslation(x, y);
|
||||
#printf("%f %f", x, y);
|
||||
if (val.dirty) {
|
||||
#printf('%s THREAT LVL: %i', item.data['callsign'] or '???', item.data['threatLevel']);
|
||||
var threatLevel = item.data['threatLevel'];
|
||||
#debug.dump(item.data, threatLevel);
|
||||
drawBlip(item.elems.blip, threatLevel);
|
||||
var rgb = colorByLevel[threatLevel];
|
||||
if (rgb == nil) rgb = colorDefault;
|
||||
var color = canvas._getColor(rgb);
|
||||
var (r, g, b) = rgb;
|
||||
if (threatLevel > 0) {
|
||||
item.elems.blip.setColorFill(r, g, b);
|
||||
} else {
|
||||
item.elems.blip.setColorFill(0,0,0);
|
||||
item.elems.blip.setColor(r, g, b);
|
||||
}
|
||||
item.elems.text.setColor(r, g, b);
|
||||
item.elems.arrowUp.setColor(r, g, b);
|
||||
item.elems.arrowDown.setColor(r, g, b);
|
||||
item.elems.master.set('z-index', threatLevel + 2);
|
||||
item.data['threatLevelDirty'] = 0;
|
||||
val.dirty = 0;
|
||||
}
|
||||
|
||||
item.elems.arrowUp.setVisible(val.arrowup);
|
||||
item.elems.arrowDown.setVisible(val.arrowdown);
|
||||
|
||||
item.elems.text.setText(val.text);
|
||||
item.elems.text.setTranslation(0, val.textpy);
|
||||
item.elems.master.show();
|
||||
|
||||
} else {
|
||||
|
||||
item.elems.master.hide();
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
};
|
|
@ -12,7 +12,6 @@ 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 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"), props.globals.initNode("/sim/sound/warnings/retard", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/cchord", 0, "BOOL")];
|
||||
|
@ -76,6 +75,33 @@ var warningNodes = {
|
|||
greenYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-fuel-consumpt"),
|
||||
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault"),
|
||||
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault"),
|
||||
flapNotZero: props.globals.initNode("/ECAM/warnings/fctl/flaps-not-zero"),
|
||||
slatsConfig: props.globals.initNode("/ECAM/warnings/fctl/slats-config-output"),
|
||||
flapsConfig: props.globals.initNode("/ECAM/warnings/fctl/flaps-config-output"),
|
||||
spdBrkConfig: props.globals.initNode("/ECAM/warnings/fctl/spd-brk-config-output"),
|
||||
pitchTrimConfig: props.globals.initNode("/ECAM/warnings/fctl/pitch-trim-config-output"),
|
||||
rudTrimConfig: props.globals.initNode("/ECAM/warnings/fctl/rudder-trim-config-output"),
|
||||
parkBrkConfig: props.globals.initNode("/ECAM/warnings/fctl/park-brk-config-output"),
|
||||
slatsConfig2: props.globals.initNode("/ECAM/warnings/fctl/slats-config-range"),
|
||||
flapsConfig2: props.globals.initNode("/ECAM/warnings/fctl/flaps-config-range"),
|
||||
spdBrkConfig2: props.globals.initNode("/ECAM/warnings/fctl/spd-brk-config-range"),
|
||||
pitchTrimConfig2: props.globals.initNode("/ECAM/warnings/fctl/pitch-trim-config-range"),
|
||||
rudTrimConfig2: props.globals.initNode("/ECAM/warnings/fctl/rudder-trim-config-range"),
|
||||
dcEssFuelConsumptionIncreased: props.globals.initNode("/ECAM/warnings/logic/dc-ess-fuel-consumption-increased"),
|
||||
dcEssFMSPredictions: props.globals.initNode("/ECAM/warnings/logic/dc-ess-fms-predictions-unreliable"),
|
||||
dc2FuelConsumptionIncreased: props.globals.initNode("/ECAM/warnings/logic/dc-2-fuel-consumption-increased"),
|
||||
dc2FMSPredictions: props.globals.initNode("/ECAM/warnings/logic/dc-2-fms-predictions-unreliable"),
|
||||
thrLeversNotSet: props.globals.initNode("/ECAM/warnings/logic/eng/thr-lever-not-set"),
|
||||
revSet: props.globals.initNode("/ECAM/warnings/logic/eng/reverse-set"),
|
||||
eng1Fail: props.globals.initNode("/ECAM/warnings/logic/eng/eng-1-fail"),
|
||||
eng2Fail: props.globals.initNode("/ECAM/warnings/logic/eng/eng-2-fail"),
|
||||
phase5Trans: props.globals.initNode("/ECAM/warnings/logic/eng/phase-5-output"),
|
||||
eng1Shutdown: props.globals.initNode("/ECAM/warnings/logic/eng/eng-1-shutdown"),
|
||||
eng2Shutdown: props.globals.initNode("/ECAM/warnings/logic/eng/eng-2-shutdown"),
|
||||
acEssBusAltn: props.globals.initNode("/ECAM/warnings/logic/ac-ess-bus-altn-feed"),
|
||||
gen1Off: props.globals.initNode("/ECAM/warnings/logic/elec/gen-1-off"),
|
||||
gen2Off: props.globals.initNode("/ECAM/warnings/logic/elec/gen-2-off"),
|
||||
spdBrkOut: props.globals.initNode("/ECAM/warnings/fctl/spd-brk-still-out"),
|
||||
},
|
||||
Timers: {
|
||||
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),
|
||||
|
@ -110,6 +136,20 @@ var warningNodes = {
|
|||
navTerrFault: props.globals.initNode("/ECAM/warnings/timer/nav-gpws-terr-fault"),
|
||||
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault-output"),
|
||||
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault-output"),
|
||||
staticInverter: props.globals.initNode("/systems/electrical/some-electric-thingie/static-inverter-timer"),
|
||||
dcEmerConfig: props.globals.initNode("/ECAM/warnings/logic/dc-emer-config-output"),
|
||||
dc12Fault: props.globals.initNode("/ECAM/warnings/logic/dc-1-2-output"),
|
||||
dcEssFault: props.globals.initNode("/ECAM/warnings/logic/dc-ess-output"),
|
||||
dc1Fault: props.globals.initNode("/ECAM/warnings/logic/dc-1-output"),
|
||||
dc2Fault: props.globals.initNode("/ECAM/warnings/logic/dc-2-output"),
|
||||
dcBatFault: props.globals.initNode("/ECAM/warnings/logic/dc-bat-output"),
|
||||
ac1Fault: props.globals.initNode("/ECAM/warnings/logic/ac-1-output"),
|
||||
ac2Fault: props.globals.initNode("/ECAM/warnings/logic/ac-2-output"),
|
||||
acEssFault: props.globals.initNode("/ECAM/warnings/logic/ac-ess-output"),
|
||||
dcEssShed: props.globals.initNode("/ECAM/warnings/logic/dc-ess-shed-output"),
|
||||
acEssShed: props.globals.initNode("/ECAM/warnings/logic/ac-ess-shed-output"),
|
||||
centerPumpsOff: props.globals.initNode("/ECAM/warnings/fuel/center-pumps-off-output"),
|
||||
lowLevelBoth: props.globals.initNode("/ECAM/warnings/fuel/lo-level-l-r-output"),
|
||||
},
|
||||
Flipflops: {
|
||||
apuGenFault: props.globals.initNode("/ECAM/warnings/flipflop/apu-gen-fault"),
|
||||
|
@ -389,6 +429,7 @@ var ECAM_controller = {
|
|||
m.active = 0;
|
||||
}
|
||||
}
|
||||
me._ready = 1;
|
||||
},
|
||||
clear: func() {
|
||||
hasCleared = 0;
|
||||
|
@ -479,7 +520,7 @@ var ECAM_controller = {
|
|||
};
|
||||
|
||||
setlistener("/systems/electrical/bus/dc-ess", func {
|
||||
if (dc_ess.getValue() < 25) {
|
||||
if (systems.ELEC.Bus.dcEss.getValue() < 25) {
|
||||
ECAM_controller.reset();
|
||||
}
|
||||
}, 0, 0);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -10,6 +10,7 @@
|
|||
# Left E/WD
|
||||
|
||||
var warnings = std.Vector.new([
|
||||
# LEVEL 3 WARN
|
||||
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, isMainMsg: 1),
|
||||
|
||||
|
@ -47,12 +48,12 @@ var warnings = std.Vector.new([
|
|||
var eng1FireFlAgent1Timer = warning.new(msg: " -AGENT 1 AFT 10 S.DISCH", colour: "w"),
|
||||
var eng1FireFlAgent1 = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
|
||||
var eng1FireFlATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
|
||||
var eng1FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w", isMainMsg: 1),
|
||||
var eng1FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w"),
|
||||
var eng1FireFlAgent2 = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
|
||||
|
||||
# ENG 1 FIRE (ground)
|
||||
var eng1FireGnlever = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
|
||||
var eng1FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", isMainMsg: 1),
|
||||
var eng1FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w"),
|
||||
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"),
|
||||
|
@ -70,12 +71,12 @@ var warnings = std.Vector.new([
|
|||
var eng2FireFlAgent1Timer = warning.new(msg: " -AGENT 1 AFT 10 S.DISCH", colour: "w"),
|
||||
var eng2FireFlAgent1 = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
|
||||
var eng2FireFlATC = warning.new(msg: " -ATC.............NOTIFY", colour: "c"),
|
||||
var eng2FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w", isMainMsg: 1),
|
||||
var eng2FireFl30Sec = warning.new(msg: " •IF FIRE AFTER 30 S:", colour: "w"),
|
||||
var eng2FireFlAgent2 = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
|
||||
|
||||
# ENG 2 FIRE (ground)
|
||||
var eng2FireGnlever = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
|
||||
var eng2FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w", isMainMsg: 1),
|
||||
var eng2FireGnstopped = warning.new(msg: " •WHEN A/C IS STOPPED:", colour: "w"),
|
||||
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"),
|
||||
|
@ -85,6 +86,20 @@ var warnings = std.Vector.new([
|
|||
var eng2FireGnAgent2 = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
|
||||
var eng2FireGnEvac = warning.new(msg: " -EMER EVAC PROC...APPLY", colour: "c"),
|
||||
|
||||
# ADR 1 + 2 + 3 FAULT
|
||||
var ADR123Fault = warning.new(msg: "NAV ADR1+2+3 FAULT ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var ADR123FaultAP = warning.new(msg: " -AP+FD..............OFF", colour: "c"),
|
||||
var ADR123FaultATHR = warning.new(msg: " -ATHR...............OFF", colour: "c"),
|
||||
var ADR123FaultPRBW = warning.new(msg: " -PROBE/WINDOW HEAT...ON", colour: "c"),
|
||||
var ADR123FaultBUSSC = warning.new(msg: " -CAPT BKUP SPD/ALT...ON", colour: "c"),
|
||||
var ADR123FaultBUSSF = warning.new(msg: " -FO BKUP SPD/ALT.....ON", colour: "c"),
|
||||
var ADR123FaultADRPB = warning.new(msg: " -ADR 1+2+3 P/B......OFF", colour: "c"),
|
||||
var ADR123FaultSPD = warning.new(msg: " -SPD......FLY THE GREEN", colour: "c"),
|
||||
var ADR123FaultAOADISAG = warning.new(msg: " •IF AOA DISAGREE: ", colour: "w"),
|
||||
var ADR123FaultBUSSINOP = warning.new(msg: " BKUP SPD/ALT.DO NOT USE", colour: "c"),
|
||||
var ADR123FaultSTBY = warning.new(msg: " -STBY INST.MAY BE UNREL", colour: "c"),
|
||||
var ADR123FaultPROC = warning.new(msg: " -ALL ADR OFF PROC.APPLY", colour: "c"),
|
||||
|
||||
# APU FIRE
|
||||
var apuFire = warning.new(msg: "APU FIRE ", colour: "r", aural: 0, light: 0, isMainMsg: 1, sdPage: "apu"),
|
||||
var apuFirePB = warning.new(msg: " -APU FIRE P/B......PUSH", colour: "c"),
|
||||
|
@ -105,6 +120,37 @@ 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),
|
||||
|
||||
# EXCESS CAB ALT
|
||||
var excessCabAlt = warning.new(msg: "CAB PR EXCESS CAB ALT", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var excessCabAltMask = warning.new(msg: " -CREW OXY MASKS.....USE", colour: "c"),
|
||||
var excessCabAltSigns = warning.new(msg: " -SIGNS...............ON", colour: "c"),
|
||||
var excessCabAltEmerD = warning.new(msg: " •EMER DESCENT:", colour: "w"),
|
||||
var excessCabAltDES = warning.new(msg: " -DESCENT.......INITIATE", colour: "c"),
|
||||
var excessCabAltTHRLVR = warning.new(msg: " -THR LEVERS........IDLE", colour: "c"),
|
||||
var excessCabAltSPDBRK = warning.new(msg: " -SPD BRK...........FULL", colour: "c"),
|
||||
var excessCabAltSPD = warning.new(msg: " SPD.....MAX/APPROPRIATE", colour: "c"),
|
||||
var excessCabAltENG = warning.new(msg: " -ENG MODE...........IGN", colour: "c"),
|
||||
var excessCabAltCAB = warning.new(msg: " -CABIN CREW......ADVISE", colour: "c"),
|
||||
var excessCabAltPA = warning.new(msg: " -EMER DES (PA).ANNOUNCE", colour: "c"),
|
||||
var excessCabAltXPDR = warning.new(msg: " -XPDR 7700.....CONSIDER", colour: "c"),
|
||||
var excessCabAltMEA = warning.new(msg: " MAX FL.....100/MEA-MORA", colour: "c"),
|
||||
var excessCabAltCabAlt = warning.new(msg: " •IF CAB ALT>14000 FT:", colour: "w"),
|
||||
var excessCabAltMasks = warning.new(msg: " -PAX OXY MASKS...MAN ON", colour: "c"),
|
||||
|
||||
# ENG 1 OIL LO PR
|
||||
var eng1OilLoPr = warning.new(msg: "ENG 1 OIL LO PR ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var eng1OilLoPrIf = warning.new(msg: " •IF OIL PR < 13 PSI :", colour: "w"),
|
||||
var eng1OilLoPrIf2 = warning.new(msg: " •IF OIL PR < 60 PSI :", colour: "w"),
|
||||
var eng1OilLoPrThrot = warning.new(msg: " -THR LEVER 1.......IDLE", colour: "c"),
|
||||
var eng1OilLoPrMaster = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
|
||||
|
||||
# ENG 2 OIL LO PR
|
||||
var eng2OilLoPr = warning.new(msg: "ENG 2 OIL LO PR ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var eng2OilLoPrIf = warning.new(msg: " •IF OIL PR < 13 PSI :", colour: "w"),
|
||||
var eng2OilLoPrIf2 = warning.new(msg: " •IF OIL PR < 60 PSI :", colour: "w"),
|
||||
var eng2OilLoPrThrot = warning.new(msg: " -THR LEVER 2.......IDLE", colour: "c"),
|
||||
var eng2OilLoPrMaster = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
|
||||
|
||||
# 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"),
|
||||
|
@ -116,8 +162,8 @@ var warnings = std.Vector.new([
|
|||
|
||||
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 gearNotDownLockedWork = warning.new(msg: " •IF UNSUCCESSFUL:", colour: "w"),
|
||||
var gearNotDownLocked120 = warning.new(msg: " AFTER 120S:", colour: "w"),
|
||||
var gearNotDownLockedGrav = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"),
|
||||
|
||||
# Autopilot off involuntary
|
||||
|
@ -125,18 +171,34 @@ var warnings = std.Vector.new([
|
|||
|
||||
# Cargo smoke
|
||||
var cargoSmokeFwd = warning.new(msg: "SMOKE FWD CARGO SMOKE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var cargoSmokeFwdFans = warning.new(msg: " -CAB FANS...........OFF", colour: "c"),
|
||||
var cargoSmokeFwdGrdClsd = warning.new(msg: " •IF FWD CRG CLSD:", colour: "w"),
|
||||
var cargoSmokeFwdAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
|
||||
var cargoSmokeFwdGrd = warning.new(msg: " •WHEN ON GROUND", colour: "w"),
|
||||
var cargoSmokeFwdDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
||||
var cargoSmokeFwdDisemb = warning.new(msg: "-PAX..........DISEMBARK", colour: "c"),
|
||||
var cargoSmokeAft = warning.new(msg: "SMOKE AFT CARGO SMOKE", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var cargoSmokeAftFans = warning.new(msg: " -CAB FANS...........OFF", colour: "c"),
|
||||
var cargoSmokeAftGrdClsd = warning.new(msg: " •IF AFT CRG CLSD:", colour: "w"),
|
||||
var cargoSmokeAftAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
|
||||
var cargoSmokeAftGrd = warning.new(msg: " •WHEN ON GROUND", colour: "w"),
|
||||
var cargoSmokeAftDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
||||
var cargoSmokeAftDisemb = warning.new(msg: "-PAX..........DISEMBARK", colour: "c"),
|
||||
|
||||
# Lavatory SMOKE
|
||||
var lavatorySmoke = warning.new(msg: "SMOKE LAVATORY SMOKE ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var lavatorySmokeComm = warning.new(msg: "-CKPT/CAB COM.ESTABLISH ", colour: "c"),
|
||||
|
||||
# EXCES RESID PR
|
||||
var excessResidPress = warning.new(msg: "CAB PR EXCES RESIDUAL PR ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var excessResidPressPack1 = warning.new(msg: "-PACK 1.............OFF", colour: "c"),
|
||||
var excessResidPressPack2 = warning.new(msg: "-PACK 2.............OFF", colour: "c"),
|
||||
var excessResidPressCabCr = warning.new(msg: "-CABIN CREW.......ALERT", colour: "c"),
|
||||
|
||||
# ESS Bus on Bat
|
||||
# NEW EMER CONFIG
|
||||
var essBusOnBat = warning.new(msg: "ELEC ESS BUSES ON BAT", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var essBusOnBatLGUplock = warning.new(msg: " •WHEN L/G UPLOCKED :", colour: "w"),
|
||||
var essBusOnBatManOn = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
|
||||
var essBusOnBatRetract = warning.new(msg: " •IF L/G RETRACT FAULT:", colour: "w"),
|
||||
var essBusOnBatMinSpeed = warning.new(msg: " MIN RAT SPD......180 KT", colour: "c"),
|
||||
var essBusOnBatLGCB = warning.new(msg: " -LGCIU1 C/B (C09)..PULL", colour: "c"),
|
||||
var essBusOnBatManOn2 = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
|
||||
var essBusOnBatMinSpeed = warning.new(msg: " MIN RAT SPD......140 KT", colour: "c"),
|
||||
|
||||
# Emer Config
|
||||
var emerconfig = warning.new(msg: "ELEC EMER CONFIG", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
|
@ -148,13 +210,14 @@ var warnings = std.Vector.new([
|
|||
var emerconfigManOn = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
|
||||
var emerconfigEngMode = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
|
||||
var emerconfigRadio = warning.new(msg: " -VHF1/ATC1..........USE", colour: "c"),
|
||||
var emerconfigIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
var emerconfigFuelG = warning.new(msg: " FUEL GRVTY FEED", colour: "c"),
|
||||
var emerconfigFuelG2 = warning.new(msg: " PROC:GRVTY FUEL FEEDING", colour: "c"),
|
||||
var emerconfigFAC = warning.new(msg: " -FAC 1......OFF THEN ON", colour: "c"),
|
||||
var emerconfigBusTie2 = warning.new(msg: " -BUS TIE...........AUTO", colour: "c"),
|
||||
var emerconfigAPU = warning.new(msg: " -APU (IF AVAIL)...START", colour: "c"),
|
||||
var emerconfigVent = warning.new(msg: " -BLOWER + EXTRACT..OVRD", colour: "c"),
|
||||
var emerconfigFuelIN = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
|
||||
var emerconfigFMSPRD = warning.new(msg: " FMS PRED UNRELIABLE", 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),
|
||||
|
@ -190,15 +253,140 @@ var warnings = std.Vector.new([
|
|||
var hydGYloPrFuelCnsmpt = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
|
||||
var hydGYloPrFmsPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
|
||||
|
||||
# AIR BLEED LEAK
|
||||
var airBleedLeak = warning.new(msg: "AIR BLEED LEAK ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var airBleedLeakShut = warning.new(msg: " -X BLEED..........SHUT", colour: "c"),
|
||||
|
||||
# LEVEL 2 WARN
|
||||
# THR LEVERS NOT SET
|
||||
var engThrustLvrNotSet = warning.new(msg: "ENG THR LEVERS NOT SET ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var engThrustLvrNotSetMCT = warning.new(msg: " -THR LEVERS ....MCT/FLX", colour: "c"),
|
||||
var engThrustLvrNotSetTO = warning.new(msg: " -THR LEVERS.......TO/GA", colour: "c"),
|
||||
|
||||
# REV SET
|
||||
var engRevSet = warning.new(msg: "ENG REV SET ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var engRevSetLevers = warning.new(msg: " -THR LEVER......FWD THR", colour: "c"),
|
||||
|
||||
# ENG 1 FAIL
|
||||
var eng1Fail = warning.new(msg: "ENG 1 FAIL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var thrustMalfunction1 = warning.new(msg: " THRUST MALFUNCTION ", colour: "a"),
|
||||
var shaftFailure1 = warning.new(msg: " SHAFT FAILURE ", colour: "a"),
|
||||
var eng1FailModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
|
||||
var eng1FailThrLvrIdle = warning.new(msg: " -THR LEVER 1.......IDLE", colour: "c"),
|
||||
var eng1FailNoRelight = warning.new(msg: "•IF NO RELIGHT AFTER 30S", colour: "w"),
|
||||
var eng1FailMasterOff = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
|
||||
var eng1FailDamage = warning.new(msg: " IF DAMAGE : ", colour: "w"),
|
||||
var eng1FailFirePB = warning.new(msg: " -ENG 1 FIRE P/B....PUSH", colour: "c"),
|
||||
var eng1FailAgent1DischT = warning.new(msg: " -AGENT1 AFTER 10S.DISCH", colour: "c"),
|
||||
var eng1FailAgent1Disch = warning.new(msg: " -AGENT 1..........DISCH", colour: "c"),
|
||||
var eng1FailNoDamage = warning.new(msg: " IF NO DAMAGE : ", colour: "w"),
|
||||
var eng1FailRelight = warning.new(msg: " -ENG 1 RELIGHT.CONSIDER", colour: "c"),
|
||||
|
||||
# ENG 1 OIL HI TEMP
|
||||
var eng1OilHiTemp = warning.new(msg: "ENG 1 OIL HI TEMP ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng1OilHiTempIdle = warning.new(msg: " -THR LEVER 1.......IDLE", colour: "c"),
|
||||
var eng1OilHiTempSuccess = warning.new(msg: " •IF UNSUCCESSFUL: ", colour: "w"),
|
||||
var eng1OilHiTempMaster = warning.new(msg: " -ENG MASTER 1.......OFF", colour: "c"),
|
||||
|
||||
# ENG 1 SHUT DOWN
|
||||
var eng1ShutDown = warning.new(msg: "ENG 1 SHUT DOWN ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng1ShutDownPack = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var eng1ShutDownXBleed = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
|
||||
var eng1ShutDownModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
|
||||
var eng1ShutDownFuelLeak = warning.new(msg: " •IF NO FUEL LEAK :", colour: "w"),
|
||||
var eng1ShutDownImbalance = warning.new(msg: " -IMBALANCE......MONITOR", colour: "c"),
|
||||
var eng1ShutDownTCAS = warning.new(msg: " -TCAS MODE SEL.......TA", colour: "c"),
|
||||
var eng1ShutDownBuffet = warning.new(msg: " •IF BUFFET : ", colour: "w"),
|
||||
var eng1ShutDownSpeed = warning.new(msg: " MAX SPEED...........240", colour: "c"),
|
||||
var eng1ShutDownXBleedS = warning.new(msg: " -X BLEED...........SHUT", colour: "c"),
|
||||
var eng1ShutDownWingAI = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
|
||||
var eng1ShutDownIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
|
||||
# ENG 2 FAIL
|
||||
var eng2Fail = warning.new(msg: "ENG 2 FAIL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var thrustMalfunction2 = warning.new(msg: " THRUST MALFUNCTION ", colour: "a"),
|
||||
var shaftFailure2 = warning.new(msg: " SHAFT FAILURE ", colour: "a"),
|
||||
var eng2FailModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
|
||||
var eng2FailThrLvrIdle = warning.new(msg: " -THR LEVER 2.......IDLE", colour: "c"),
|
||||
var eng2FailNoRelight = warning.new(msg: "•IF NO RELIGHT AFTER 30S", colour: "w"),
|
||||
var eng2FailMasterOff = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
|
||||
var eng2FailDamage = warning.new(msg: " IF DAMAGE : ", colour: "w"),
|
||||
var eng2FailFirePB = warning.new(msg: " -ENG 2 FIRE P/B....PUSH", colour: "c"),
|
||||
var eng2FailAgent1DischT = warning.new(msg: " -AGENT2 AFTER 10S.DISCH", colour: "c"),
|
||||
var eng2FailAgent1Disch = warning.new(msg: " -AGENT 2..........DISCH", colour: "c"),
|
||||
var eng2FailNoDamage = warning.new(msg: " IF NO DAMAGE : ", colour: "w"),
|
||||
var eng2FailRelight = warning.new(msg: " -ENG 2 RELIGHT.CONSIDER", colour: "c"),
|
||||
|
||||
# ENG 2 OIL HI TEMP
|
||||
var eng2OilHiTemp = warning.new(msg: "ENG 2 OIL HI TEMP ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng2OilHiTempIdle = warning.new(msg: " -THR LEVER 2.......IDLE", colour: "c"),
|
||||
var eng2OilHiTempSuccess = warning.new(msg: " •IF UNSUCCESSFUL: ", colour: "w"),
|
||||
var eng2OilHiTempMaster = warning.new(msg: " -ENG MASTER 2.......OFF", colour: "c"),
|
||||
|
||||
# ENG 2 SHUT DOWN
|
||||
var eng2ShutDown = warning.new(msg: "ENG 2 SHUT DOWN ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var eng2ShutDownPack1 = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var eng2ShutDownPack = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
|
||||
var eng2ShutDownXBleed = warning.new(msg: " -X BLEED...........OPEN", colour: "c"),
|
||||
var eng2ShutDownModeSel = warning.new(msg: " -ENG MODE SEL.......IGN", colour: "c"),
|
||||
var eng2ShutDownFuelLeak = warning.new(msg: " •IF NO FUEL LEAK :", colour: "w"),
|
||||
var eng2ShutDownImbalance = warning.new(msg: " -IMBALANCE......MONITOR", colour: "c"),
|
||||
var eng2ShutDownTCAS = warning.new(msg: " -TCAS MODE SEL.......TA", colour: "c"),
|
||||
var eng2ShutDownBuffet = warning.new(msg: " •IF BUFFET : ", colour: "w"),
|
||||
var eng2ShutDownSpeed = warning.new(msg: " MAX SPEED...........240", colour: "c"),
|
||||
var eng2ShutDownXBleedS = warning.new(msg: " -X BLEED...........SHUT", colour: "c"),
|
||||
var eng2ShutDownWingAI = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
|
||||
var eng2ShutDownIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
|
||||
# SAT ABOVE FLEX TEMP
|
||||
var satAbvFlexTemp = warning.new(msg: "ENG SAT ABOVE FLEX TEMP", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var satAbvFlexTempCheck = warning.new(msg: " -T.O DATA.........CHECK", colour: "c"),
|
||||
|
||||
# B RSVR LO LVL
|
||||
var hydBSysLoLvl = warning.new(msg: "HYD B RSVR LO LVL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var hydBSysLoLvlPump = warning.new(msg: " -BLUE ELEC PUMP.....OFF ", colour: "c"),
|
||||
|
||||
# G RSVR LO LVL
|
||||
var hydGSysLoLvl = warning.new(msg: "HYD G RSVR LO LVL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var hydGSysLoLvlPtu = warning.new(msg: " -PTU................OFF ", colour: "c"),
|
||||
var hydGSysLoLvlPump = warning.new(msg: " -GREEN ENG 1 PUMP...OFF ", colour: "c"),
|
||||
|
||||
# Y RSVR LO LVL
|
||||
var hydYSysLoLvl = warning.new(msg: "HYD Y RSVR LO LVL ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var hydYSysLoLvlPtu = warning.new(msg: " -PTU................OFF ", colour: "c"),
|
||||
var hydYSysLoLvlPump = warning.new(msg: " -YELLOW ENG 2 PUMP..OFF ", colour: "c"),
|
||||
var hydYSysLoLvlElec = warning.new(msg: " -YELLOW ELEC PUMP...OFF ", colour: "c"),
|
||||
|
||||
# B SYS LO PR
|
||||
var hydBSysLoPr = warning.new(msg: "HYD B SYS LO PR ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var hydBSysLoPrFuel = warning.new(msg: " FUEL CONSUMPT INCRSD ", colour: "c"),
|
||||
var hydBSysLoPrFmsPred = warning.new(msg: " FMS PRED UNRELIABLE ", colour: "c"),
|
||||
|
||||
# G SYS LO PR
|
||||
var hydGSysLoPr = warning.new(msg: "HYD G SYS LO PR ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var hydGSysLoPrFuel = warning.new(msg: " FUEL CONSUMPT INCRSD ", colour: "c"),
|
||||
var hydGSysLoPrFmsPred = warning.new(msg: " FMS PRED UNRELIABLE ", colour: "c"),
|
||||
var hydGSysLoPrEngPump = warning.new(msg: " G ENG 1 PUMP LO PR ", colour: "a"),
|
||||
|
||||
# Y SYS LO PR
|
||||
var hydYSysLoPr = warning.new(msg: "HYD Y SYS LO PR ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var hydYSysLoPrAccu = warning.new(msg: " BRK Y ACCU PR MONITOR ", colour: "c"),
|
||||
var hydYSysLoPrFuel = warning.new(msg: " FUEL CONSUMPT INCRSD ", colour: "c"),
|
||||
var hydYSysLoPrFmsPred = warning.new(msg: " FMS PRED UNRELIABLE ", colour: "c"),
|
||||
var hydYSysLoPrEngPump = warning.new(msg: " Y ENG 2 PUMP LO PR ", colour: "a"),
|
||||
|
||||
# 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"),
|
||||
var dcEmerconfigFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
|
||||
|
||||
# DC BUS 1 OR 2 FAULT
|
||||
var dcBus12Fault = warning.new(msg: "ELEC DC BUS 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var dcBus12FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"),
|
||||
var dcBus12FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
|
||||
var dcBus12FaultBaroRef = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
|
||||
var dcBus12FaultFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
|
||||
var dcBus12FaultPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
|
||||
var dcBus12FaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
var dcBus12FaultBrking = warning.new(msg: " MAX BRK........1000 PSI", colour: "c"),
|
||||
|
||||
|
@ -216,21 +404,30 @@ var warnings = std.Vector.new([
|
|||
var DcEssBusFaultRadio = warning.new(msg: " -VHF 2 OR 3.........USE", colour: "c"),
|
||||
var DcEssBusFaultRadio2 = warning.new(msg: " -AUDIO SWTG......SELECT", colour: "c"),
|
||||
var DcEssBusFaultBaro = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
|
||||
var DcEssBusFaultGPWS = warning.new(msg: " -GPWS...............OFF", colour: "c"),
|
||||
var DcEssBusFaultGear = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"),
|
||||
var DcEssBusFaultGPWS = warning.new(msg: " -GPWS SYS...........OFF", colour: "c"),
|
||||
var DcEssBusFaultFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
|
||||
var DcEssBusFaultPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
|
||||
var DcEssBusFaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
|
||||
# AC BUS 2 FAULT
|
||||
var AcBus2Fault = warning.new(msg: "ELEC AC BUS 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var AcBus2FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
|
||||
var AcBus2FaultAtc = warning.new(msg: " -ATC..............SYS 1", colour: "c"),
|
||||
|
||||
# DC BUS 1 FAULT
|
||||
var dcBus1Fault = warning.new(msg: "ELEC DC BUS 1 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var dcBus1FaultBlower = warning.new(msg: " -BLOWER............OVRD", colour: "c"),
|
||||
var dcBus1FaultExtract = warning.new(msg: " -EXTRACT...........OVRD", colour: "c"),
|
||||
var dcBus1FaultIcing = warning.new(msg: " AVOID ICING CONDITIONS", colour: "c"),
|
||||
|
||||
# DC BUS 2 FAULT
|
||||
var dcBus2Fault = warning.new(msg: "ELEC DC BUS 2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var dcBus2FaultAirData = warning.new(msg: " -AIR DATA SWTG......F/O", colour: "c"),
|
||||
var dcBus2FaultBaro = warning.new(msg: " -BARO REF.........CHECK", colour: "c"),
|
||||
var dcBus2FaultGear = warning.new(msg: " -L/G.........GRVTY EXTN", colour: "c"),
|
||||
var dcBus2FaultFuel = warning.new(msg: " FUEL CONSUMPT INCRSD", colour: "c"),
|
||||
var dcBus2FaultPredict = warning.new(msg: " FMS PRED UNRELIABLE", colour: "c"),
|
||||
|
||||
# DC BAT BUS FAULT
|
||||
var dcBusBatFault = warning.new(msg: "ELEC DC BAT BUS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
@ -244,12 +441,21 @@ var warnings = std.Vector.new([
|
|||
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"),
|
||||
|
||||
# IDG 1 DISCONNECTED
|
||||
var idg1Disc = warning.new(msg: "ELEC IDG 1 DISCONNECTED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
||||
# IDG 2 DISCONNECTED
|
||||
var idg2Disc = warning.new(msg: "ELEC IDG 2 DISCONNECTED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
||||
# 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"),
|
||||
|
||||
# ESS TR FAULT
|
||||
var essTRFault = warning.new(msg: "ELEC ESS TR FAULT ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
||||
# 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"),
|
||||
|
@ -262,6 +468,13 @@ var warnings = std.Vector.new([
|
|||
var apuGenfaultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||
var apuGenfaultGen3 = warning.new(msg: " -APU GEN............OFF", colour: "c"),
|
||||
|
||||
# GEN OFF
|
||||
var gen1Off = warning.new(msg: "ELEC GEN 1 OFF ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gen2Off = warning.new(msg: "ELEC GEN 2 OFF ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
||||
# APU GEN FAULT
|
||||
var acEssBusAltn = warning.new(msg: "ELEC AC ESS BUS ALTN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
||||
# L ELEV FAULT
|
||||
var lElevFault = warning.new(msg: "F/CTL L ELEV FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var lElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||
|
@ -272,6 +485,9 @@ var warnings = std.Vector.new([
|
|||
var rElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||
var rElevFaultPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
|
||||
|
||||
# F/CTL SPD BRK STILL OUT
|
||||
var fctlSpdBrkStillOut = warning.new(msg: "F/CTL SPD BRK STILL OUT ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
||||
# DIRECT LAW
|
||||
var directLaw = warning.new(msg: "F/CTL DIRECT LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var directLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
||||
|
@ -342,6 +558,24 @@ var warnings = std.Vector.new([
|
|||
var fcuFault2 = warning.new(msg: "AUTO FLT FCU 2 FAULT", colour: "a", isMainMsg: 1),
|
||||
var fcuFault2Baro = warning.new(msg: " -BARO REF.......X CHECK", colour: "c"),
|
||||
|
||||
# FUEL
|
||||
var wingLoLvl = warning.new(msg: "FUEL L+R WING TK LO LVL", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var wingLoLvlManMode = warning.new(msg: " -FUEL MODE SEL......MAN", colour: "c"),
|
||||
var wingLoLvlPumpL1 = warning.new(msg: " -L TK PUMP 1.........ON", colour: "c"),
|
||||
var wingLoLvlPumpL2 = warning.new(msg: " -L TK PUMP 2.........ON", colour: "c"),
|
||||
var wingLoLvlPumpC1 = warning.new(msg: " -CTR TK PUMP 1.......ON", colour: "c"),
|
||||
var wingLoLvlPumpR1 = warning.new(msg: " -R TK PUMP 1.........ON", colour: "c"),
|
||||
var wingLoLvlPumpR2 = warning.new(msg: " -R TK PUMP 2.........ON", colour: "c"),
|
||||
var wingLoLvlPumpC2 = warning.new(msg: " -CTR TK PUMP 2.......ON", colour: "c"),
|
||||
var wingLoLvlLeak = warning.new(msg: " •IF NO FUEL LEAK: ", colour: "w"),
|
||||
var wingLoLvlXFeed = warning.new(msg: " -FUEL X FEED.........ON", colour: "c"),
|
||||
var wingLoLvlGrav = warning.new(msg: " •IF GRVTY FEED: ", colour: "w"),
|
||||
var wingLoLvlXFeedOff = warning.new(msg: " -FUEL X FEED........OFF", colour: "c"),
|
||||
|
||||
var ctrPumpsOff = warning.new(msg: "FUEL CTR TK PUMPS OFF ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var ctrPumpsOffPump1 = warning.new(msg: " -CTR TK PUMP 1.......ON", colour: "c"),
|
||||
var ctrPumpsOffPump2 = warning.new(msg: " -CTR TK PUMP 2.......ON", colour: "c"),
|
||||
|
||||
# APU shutdown
|
||||
var apuEmerShutdown = warning.new(msg: "APU EMER SHUT DOWN", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var apuEmerShutdownMast = warning.new(msg: " -MASTER SW..........OFF", colour: "c"),
|
||||
|
@ -362,8 +596,8 @@ var warnings = std.Vector.new([
|
|||
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 xBleedFaultWAI = warning.new(msg: " -WING ANTI ICE......OFF", colour: "c"),
|
||||
var xBleedFaultICE = 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),
|
||||
|
@ -525,9 +759,11 @@ var leftmemos = std.Vector.new([
|
|||
var strobe_lt_off = warning.new(msg: "STROBE LT OFF" ),
|
||||
var outr_tk_fuel_xfrd = warning.new(msg: "OUTR TK FUEL XFRD" ),
|
||||
var fob_3T = warning.new(msg: "FOB BELOW 3T" ),
|
||||
var fob_66L = warning.new(msg: "FOB BELOW 6600LBS" ),
|
||||
var gpws_flap_mode_off = warning.new(msg: "GPWS FLAP MODE OFF" ),
|
||||
var atc_datalink_stby = warning.new(msg: "ATC DATALINK STBY" ), # Not yet implemented
|
||||
var company_datalink_stby = warning.new(msg: "COMPANY DATALINK STBY"), # Not yet implemented
|
||||
var acars_stby = warning.new(msg: "ACARS STBY" ), # Not yet implemented
|
||||
]);
|
||||
|
||||
# Right E/WD
|
||||
|
|
|
@ -66,7 +66,7 @@ var FCUController = {
|
|||
me.FCU2 = FCU.new(systems.ELEC.Bus.dc2);
|
||||
me._init = 1;
|
||||
},
|
||||
loop: func() {
|
||||
loop: func(notification) {
|
||||
if (me._init == 0) { return; }
|
||||
|
||||
# Update FCU Power
|
||||
|
@ -82,11 +82,11 @@ var FCUController = {
|
|||
}
|
||||
|
||||
foreach (var update_item; me.update_items) {
|
||||
update_item.update(nil);
|
||||
update_item.update(notification);
|
||||
}
|
||||
},
|
||||
update_items: [
|
||||
props.UpdateManager.FromPropertyHashList(["/it-autoflight/output/fd1","/it-autoflight/output/fd2", "/it-autoflight/output/ap1", "/it-autoflight/output/ap2"], 1, func(notification)
|
||||
props.UpdateManager.FromPropertyHashList(["/it-autoflight/output/fd1","/it-autoflight/output/fd2", "/it-autoflight/output/ap1", "/it-autoflight/output/ap2"], nil, func(notification)
|
||||
{
|
||||
updateActiveFMGC();
|
||||
}
|
||||
|
|
|
@ -248,7 +248,7 @@ var postInit = func() {
|
|||
var FMGCNodes = {
|
||||
costIndex: props.globals.initNode("/FMGC/internal/cost-index", 0, "DOUBLE"),
|
||||
flexSet: props.globals.initNode("/FMGC/internal/flex-set", 0, "BOOL"),
|
||||
flexTemp: props.globals.initNode("/FMGC/internal/flex", 0, "INT"),
|
||||
flexTemp: props.globals.initNode("/FMGC/internal/flex", 45, "INT"),
|
||||
mngSpdAlt: props.globals.getNode("/FMGC/internal/mng-alt-spd"),
|
||||
mngMachAlt: props.globals.getNode("/FMGC/internal/mng-alt-mach"),
|
||||
toFromSet: props.globals.initNode("/FMGC/internal/tofrom-set", 0, "BOOL"),
|
||||
|
@ -646,9 +646,15 @@ var masterFMGC = maketimer(0.2, func {
|
|||
}
|
||||
}
|
||||
|
||||
if (FMGCInternal.phase == 4 and getprop("/FMGC/internal/decel")) {
|
||||
if (FMGCInternal.phase == 4) {
|
||||
if (getprop("/FMGC/internal/decel")) {
|
||||
FMGCInternal.phase = 5;
|
||||
}
|
||||
else if (altSel == (FMGCInternal.crzFl * 100)) { # back to CRZ state
|
||||
FMGCInternal.phase = 3;
|
||||
systems.PNEU.pressMode.setValue("CR");
|
||||
}
|
||||
}
|
||||
|
||||
if (flightPlanController.num[2].getValue() > 0 and getprop("/FMGC/flightplan[2]/active") == 1 and flightPlanController.arrivalDist <= 15 and (modelat == "NAV" or modelat == "LOC" or modelat == "LOC*") and pts.Position.gearAglFt.getValue() < 9500) { #todo decel pseudo waypoint
|
||||
setprop("/FMGC/internal/decel", 1);
|
||||
|
@ -971,7 +977,7 @@ var reset_FMGC = func {
|
|||
mcdu.MCDU_reset(0);
|
||||
mcdu.MCDU_reset(1);
|
||||
mcdu.ReceivedMessagesDatabase.clearDatabase();
|
||||
mcdu.FlightLogDatabase.clearDatabase();
|
||||
mcdu.FlightLogDatabase.reset(); # track reset events without loosing recorded data
|
||||
|
||||
Input.fd1.setValue(fd1);
|
||||
Input.fd2.setValue(fd2);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# A3XX Simbrief Parser
|
||||
# Copyright (c) 2020 Jonathan Redpath (legoboyvdlp)
|
||||
# enhanceded 12/2020 - parse TOD & TOC psedo waypoints, set computer speeds on fix wps, fake coRoute name
|
||||
# enhanced 12/2020 - parse TOD & TOC psedo waypoints, set computer speeds on fix wps, fake coRoute name
|
||||
|
||||
var LBS2KGS = 0.4535924;
|
||||
|
||||
|
@ -14,7 +14,7 @@ var SimbriefParser = {
|
|||
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))
|
||||
.fail(func { me.failure(i) })
|
||||
.done(func {
|
||||
var errs = [];
|
||||
call(me.read, [(getprop('/sim/fg-home') ~ "/Export/A320-family-simbrief.xml"),i], SimbriefParser, {}, errs);
|
||||
|
@ -49,6 +49,33 @@ var SimbriefParser = {
|
|||
me.failure(i);
|
||||
}
|
||||
},
|
||||
validateFile: func(xml) {
|
||||
var data = io.readxml(xml);
|
||||
if (data != nil) {
|
||||
return (data.getChild("OFP") != nil);
|
||||
}
|
||||
return false;
|
||||
},
|
||||
readLegs: func(xml) { # lite OFP parser only for legs = wapoinst + airways
|
||||
var legs = [];
|
||||
var data = io.readxml(xml);
|
||||
if (data != nil) {
|
||||
var ofp = data.getChild("OFP");
|
||||
if (ofp != nil) {
|
||||
var ofpNavlog = ofp.getNode("navlog");
|
||||
var ofpFixes = ofpNavlog.getChildren("fix");
|
||||
var ident = "";
|
||||
foreach (var ofpFix; ofpFixes) {
|
||||
if (ofpFix.getNode("is_sid_star").getBoolValue()) continue;
|
||||
ident = ofpFix.getNode("ident").getValue();
|
||||
if (ident == "TOC" or ident == "TOD") continue;
|
||||
append(legs, [ ofpFix.getNode("ident").getValue() , ofpFix.getNode("via_airway").getValue() ] );
|
||||
}
|
||||
return legs;
|
||||
}
|
||||
}
|
||||
return nil;
|
||||
},
|
||||
tryFindByCoord: func(coords, id, type) {
|
||||
var result = nil;
|
||||
if (type == "nav") {
|
||||
|
@ -107,13 +134,15 @@ var SimbriefParser = {
|
|||
fmgc.flightPlanController.flightplans[3].destination_runway = runwayStore;
|
||||
}
|
||||
|
||||
var alternateID = me.OFP.getNode("alternate/icao_code").getValue();
|
||||
var alternateID = me.OFP.getNode("alternate/icao_code") == nil ? nil : me.OFP.getNode("alternate/icao_code").getValue();
|
||||
if (alternateID != nil) {
|
||||
var alternates = findAirportsByICAO(alternateID);
|
||||
if (alternates != nil and size(alternates) != 0) {
|
||||
if (size(alternates) != 0) {
|
||||
fmgc.FMGCInternal.altAirport = alternateID;
|
||||
atsu.ATISInstances[2].newStation(alternateID);
|
||||
fmgc.FMGCInternal.altAirportSet = 1;
|
||||
}
|
||||
}
|
||||
|
||||
var wps = [];
|
||||
var ofpNavlog = me.OFP.getNode("navlog");
|
||||
|
@ -161,6 +190,7 @@ var SimbriefParser = {
|
|||
#setprop("/autopilot/route-manager/vnav/tc/latitude-deg",ofpFix.getNode("pos_lat").getValue());
|
||||
#setprop("/autopilot/route-manager/vnav/tc/longitude-deg",ofpFix.getNode("pos_long").getValue());
|
||||
#ident = "(T/C)";
|
||||
continue; # restore skip TOC/TOD
|
||||
}
|
||||
|
||||
if (ident == "TOD") {
|
||||
|
@ -168,6 +198,7 @@ var SimbriefParser = {
|
|||
#setprop("/autopilot/route-manager/vnav/td/latitude-deg",ofpFix.getNode("pos_lat").getValue());
|
||||
#setprop("/autopilot/route-manager/vnav/td/longitude-deg",ofpFix.getNode("pos_long").getValue());
|
||||
#ident = "(T/D)";
|
||||
continue; # restore skip TOC/TOD
|
||||
}
|
||||
|
||||
coords = geo.Coord.new();
|
||||
|
|
|
@ -428,13 +428,14 @@ var flightPlanController = {
|
|||
# flag: is it a navaids DUPLICATENAMES page or not?
|
||||
# plan: plan
|
||||
# flagPBD: do we return back to PBD handler or to default waypoint handler?
|
||||
# flagPROG: do we return back to PROG handler or to default waypoint handler (only if flagPBD false)
|
||||
|
||||
createDuplicateNames: func(ghostContainer, index, flag, plan, flagPBD = 0, bearing = -999, distance = -99) {
|
||||
createDuplicateNames: func(ghostContainer, index, flag, plan, flagPBD = 0, bearing = -999, distance = -99, flagPROG = 0) {
|
||||
if (canvas_mcdu.myDuplicate[plan] != nil) {
|
||||
canvas_mcdu.myDuplicate[plan].del();
|
||||
}
|
||||
canvas_mcdu.myDuplicate[plan] = nil;
|
||||
canvas_mcdu.myDuplicate[plan] = mcdu.duplicateNamesPage.new(ghostContainer, index, flag, plan, flagPBD, bearing, distance);
|
||||
canvas_mcdu.myDuplicate[plan] = mcdu.duplicateNamesPage.new(ghostContainer, index, flag, plan, flagPBD, bearing, distance, flagPROG);
|
||||
setprop("MCDU[" ~ plan ~ "]/page", "DUPLICATENAMES");
|
||||
},
|
||||
|
||||
|
@ -639,9 +640,9 @@ var flightPlanController = {
|
|||
}
|
||||
} else {
|
||||
if (type == "navaid") {
|
||||
me.createDuplicateNames(wpGhostContainer, index, 1, plan, 1, num(textSplit[1]), num(textSplit[2]));
|
||||
me.createDuplicateNames(wpGhostContainer, index, 1, plan, 1, num(textSplit[1]), num(textSplit[2]), 0);
|
||||
} else {
|
||||
me.createDuplicateNames(wpGhostContainer, index, 0, plan, 1, num(textSplit[1]), num(textSplit[2]));
|
||||
me.createDuplicateNames(wpGhostContainer, index, 0, plan, 1, num(textSplit[1]), num(textSplit[2]), 0);
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
|
|
|
@ -180,7 +180,7 @@ var MessageController = {
|
|||
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"),
|
||||
TypeIMessage.new("NO ANSWER TO REQUEST"),TypeIMessage.new("NO D-ATIS AVAILABLE"),TypeIMessage.new("BAD SERVER RESPONSE"),
|
||||
TypeIMessage.new("NO ANSWER TO REQUEST"),TypeIMessage.new("NO D-ATIS AVAILABLE"),TypeIMessage.new("NO METAR AVAILABLE"),TypeIMessage.new("BAD SERVER RESPONSE"),
|
||||
TypeIMessage.new("WIND DATA UPLINK"),TypeIMessage.new("CHECK ALT WIND"),TypeIMessage.new("INVALID WIND UPLINK"),TypeIMessage.new("WIND UPLINK EXISTS"), #p.533
|
||||
TypeIMessage.new("FM DATALINK UNAVAIL"),TypeIMessage.new("NOT XMITTED TO ACARS"), #p.559
|
||||
TypeIMessage.new("PRINTER NOT AVAILABLE"),
|
||||
|
|
|
@ -32,7 +32,7 @@ var variousReset = func() {
|
|||
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/oxygen/crewOxyPB", 0); # 0 = OFF 1 = AUTO
|
||||
setprop("/controls/switches/emerCallLtO", 0); # ON light, flashes white for 10s
|
||||
setprop("/controls/switches/emerCallLtC", 0); # CALL light, flashes amber for 10s
|
||||
setprop("/controls/switches/emerCall", 0);
|
||||
|
@ -62,8 +62,9 @@ var variousReset = func() {
|
|||
setprop("/modes/fcu/hdg-time", -45);
|
||||
setprop("/controls/navigation/switching/att-hdg", 0);
|
||||
setprop("/controls/navigation/switching/air-data", 0);
|
||||
setprop("/controls/switches/no-smoking-sign", 0.5);
|
||||
setprop("/controls/switches/seatbelt-sign", 1);
|
||||
setprop("/controls/switches/no-smoking-sign", 0.0);
|
||||
setprop("/controls/switches/seatbelt-sign", 0);
|
||||
setprop("/controls/switches/emer-lights", 0);
|
||||
}
|
||||
|
||||
var BUTTONS = {
|
||||
|
|
|
@ -170,19 +170,18 @@ var update_items = [
|
|||
|
||||
var systemsLoop = func(notification) {
|
||||
if (!systemsInitialized) { return; }
|
||||
systems.ELEC.loop();
|
||||
systems.PNEU.loop();
|
||||
systems.HYD.loop();
|
||||
systems.ADIRS.loop();
|
||||
systems.PNEU.loop(notification);
|
||||
systems.ADIRS.loop(notification);
|
||||
systems.BrakeSys.update(notification);
|
||||
systems.HFLoop(notification);
|
||||
systems.APUController.loop();
|
||||
systems.BrakeSys.update();
|
||||
fadec.FADEC.loop();
|
||||
rmp.rmpUpdate();
|
||||
fcu.FCUController.loop();
|
||||
fcu.FCUController.loop(notification);
|
||||
atc.Transponders.vector[atc.transponderPanel.atcSel - 1].update(notification);
|
||||
dmc.DMController.loop();
|
||||
atsu.ATSU.loop();
|
||||
libraries.BUTTONS.update();
|
||||
systems.HFLoop(notification);
|
||||
|
||||
if ((notification.engine1State == 2 or notification.engine1State == 3) and collectorTankL.getValue() < 1) {
|
||||
systems.cutoff_one();
|
||||
|
@ -378,4 +377,51 @@ foreach (var name; keys(input)) {
|
|||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 Libraries", name, input[name]));
|
||||
}
|
||||
|
||||
var hideCanvas = props.globals.getNode("/options/hide-canvas-outside");
|
||||
var internal = props.globals.getNode("/sim/current-view/internal");
|
||||
var toggleScreen = func() {
|
||||
if (!internal.getValue() and hideCanvas.getValue()) {
|
||||
canvas_pfd.PFD_update.stop();
|
||||
canvas_ecam.lowerECAM_update.stop();
|
||||
canvas_nd.nd_update.stop();
|
||||
canvas_dcdu.DCDU_update.stop();
|
||||
canvas_mcdu.MCDU_update.stop();
|
||||
} else {
|
||||
canvas_pfd.rateApply();
|
||||
canvas_ecam.l_rateApply();
|
||||
canvas_nd.rateApply();
|
||||
canvas_dcdu.rateApply();
|
||||
canvas_mcdu.MCDU_update.start();
|
||||
}
|
||||
};
|
||||
|
||||
setlistener("/options/hide-canvas-outside", func() {
|
||||
toggleScreen();
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/sim/current-view/internal", func() {
|
||||
toggleScreen();
|
||||
}, 0, 0);
|
||||
|
||||
# TODO split EFIS altimeters
|
||||
var newinhg = nil;
|
||||
setlistener("/instrumentation/altimeter/setting-inhg", func() {
|
||||
newinhg = getprop("/instrumentation/altimeter/setting-inhg");
|
||||
setprop("/instrumentation/altimeter[1]/setting-inhg", newinhg);
|
||||
setprop("/instrumentation/altimeter[2]/setting-inhg", newinhg);
|
||||
setprop("/instrumentation/altimeter[3]/setting-inhg", newinhg);
|
||||
setprop("/instrumentation/altimeter[4]/setting-inhg", newinhg);
|
||||
setprop("/instrumentation/altimeter[5]/setting-inhg", newinhg);
|
||||
}, 0, 0);
|
||||
|
||||
var newhpa = nil;
|
||||
setlistener("/instrumentation/altimeter/setting-hpa", func() {
|
||||
newhpa = getprop("/instrumentation/altimeter/setting-hpa");
|
||||
setprop("/instrumentation/altimeter[1]/setting-hpa", newhpa);
|
||||
setprop("/instrumentation/altimeter[2]/setting-hpa", newhpa);
|
||||
setprop("/instrumentation/altimeter[3]/setting-hpa", newhpa);
|
||||
setprop("/instrumentation/altimeter[4]/setting-hpa", newhpa);
|
||||
setprop("/instrumentation/altimeter[5]/setting-hpa", newhpa);
|
||||
}, 0, 0);
|
||||
|
||||
setprop("/systems/acconfig/libraries-loaded", 1);
|
||||
|
|
|
@ -174,6 +174,13 @@ 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")],
|
||||
},
|
||||
},
|
||||
GPS: {
|
||||
altitude: props.globals.getNode("/instrumentation/gps/indicated-altitude-ft"),
|
||||
latitude: props.globals.getNode("/instrumentation/gps/indicated-latitude-deg"),
|
||||
longitude: props.globals.getNode("/instrumentation/gps/indicated-longitude-deg"),
|
||||
trackMag: props.globals.getNode("/instrumentation/gps/indicated-track-magnetic-deg"),
|
||||
gs: props.globals.getNode("/instrumentation/gps/indicated-ground-speed-kt"),
|
||||
},
|
||||
MKVII: {
|
||||
Inputs: {
|
||||
Discretes: {
|
||||
|
@ -246,6 +253,7 @@ var Sim = {
|
|||
Time: {
|
||||
deltaRealtimeSec: props.globals.getNode("/sim/time/delta-realtime-sec"),
|
||||
elapsedSec: props.globals.getNode("/sim/time/elapsed-sec"),
|
||||
gmtString: props.globals.getNode("/sim/time/gmt-string"),
|
||||
UTC: {
|
||||
day: props.globals.getNode("/sim/time/utc/day"),
|
||||
month: props.globals.getNode("/sim/time/utc/month"),
|
||||
|
|
|
@ -74,29 +74,44 @@ var closestAirportPage = {
|
|||
me._range += 250;
|
||||
}
|
||||
}
|
||||
|
||||
if (size(me.airports) >= 1) {
|
||||
me.L1 = [me.airports[0].id, nil, "grn"];
|
||||
me.R1 = ["----", "UTC ", "grn"];
|
||||
}
|
||||
if (size(me.airports) >= 2) {
|
||||
me.L2 = [me.airports[1].id, nil, "grn"];
|
||||
me.R2 = ["----", nil, "grn"];
|
||||
}
|
||||
if (size(me.airports) >= 3) {
|
||||
me.L3 = [me.airports[2].id, nil, "grn"];
|
||||
me.R3 = ["----", nil, "grn"];
|
||||
}
|
||||
if (size(me.airports) >= 4) {
|
||||
me.L4 = [me.airports[3].id, nil, "grn"];
|
||||
me.R4 = ["----", nil, "grn"];
|
||||
}
|
||||
me.listPopulated = 1;
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
updateBrgDist: func() {
|
||||
if (!me.listPopulated) { return; }
|
||||
me.cdVector[0] = courseAndDistance(me.airports[0]);
|
||||
me.cdVector[1] = courseAndDistance(me.airports[1]);
|
||||
me.cdVector[2] = courseAndDistance(me.airports[2]);
|
||||
me.cdVector[3] = courseAndDistance(me.airports[3]);
|
||||
var magvarLocal = magvar();
|
||||
if (size(me.airports) >= 1) {
|
||||
me.cdVector[0] = courseAndDistance(me.airports[0]);
|
||||
me.C1 = [math.round(me.cdVector[0][0] - magvarLocal) ~ " " ~ math.round(me.cdVector[0][1]), " BRG DIST", "grn"];
|
||||
}
|
||||
if (size(me.airports) >= 2) {
|
||||
me.cdVector[1] = courseAndDistance(me.airports[1]);
|
||||
me.C2 = [math.round(me.cdVector[1][0] - magvarLocal) ~ " " ~ math.round(me.cdVector[1][1]) , nil, "grn"];
|
||||
}
|
||||
if (size(me.airports) >= 3) {
|
||||
me.cdVector[2] = courseAndDistance(me.airports[2]);
|
||||
me.C3 = [math.round(me.cdVector[2][0] - magvarLocal) ~ " " ~ math.round(me.cdVector[2][1]), nil, "grn"];
|
||||
}
|
||||
if (size(me.airports) >= 4) {
|
||||
me.cdVector[3] = courseAndDistance(me.airports[3]);
|
||||
me.C4 = [math.round(me.cdVector[3][0] - magvarLocal) ~ " " ~ math.round(me.cdVector[3][1]), nil, "grn"];
|
||||
}
|
||||
if (me.manAirport != nil) {
|
||||
me.C5 = [math.round(courseAndDistance(me.manAirport)[0] - magvarLocal) ~ " " ~ math.round(courseAndDistance(me.manAirport)[1]), nil, "grn"];
|
||||
}
|
||||
|
|
|
@ -5,19 +5,18 @@
|
|||
var dataInput = func(key, i) {
|
||||
if (key == "L1") {
|
||||
setprop("MCDU[" ~ i ~ "]/page", "POSMON");
|
||||
}
|
||||
if (key == "L2") {
|
||||
} elsif (key == "L2") {
|
||||
setprop("MCDU[" ~ i ~ "]/page", "IRSMON");
|
||||
}
|
||||
if (key == "L5") {
|
||||
} elsif (key == "L3") {
|
||||
setprop("MCDU[" ~ i ~ "]/page", "GPSMON");
|
||||
} elsif (key == "L5") {
|
||||
if (canvas_mcdu.myClosestAirport[i] != nil) {
|
||||
canvas_mcdu.myClosestAirport[i].del();
|
||||
}
|
||||
canvas_mcdu.myClosestAirport[i] = nil;
|
||||
canvas_mcdu.myClosestAirport[i] = closestAirportPage.new(i);
|
||||
setprop("MCDU[" ~ i ~ "]/page", "CLOSESTAIRPORT");
|
||||
}
|
||||
if (key == "R5") {
|
||||
} elsif (key == "R5") {
|
||||
setprop("MCDU[" ~ i ~ "]/page", "PRINTFUNC");
|
||||
}
|
||||
}
|
||||
|
@ -25,23 +24,17 @@ var dataInput = func(key, i) {
|
|||
var printInput = func(key, i) {
|
||||
if (key == "L1") {
|
||||
setprop("FMGC/print/mcdu/page1/L1auto", 1);
|
||||
}
|
||||
if (key == "L2") {
|
||||
} elsif (key == "L2") {
|
||||
setprop("FMGC/print/mcdu/page1/L2auto", 1);
|
||||
}
|
||||
if (key == "L3") {
|
||||
} elsif (key == "L3") {
|
||||
setprop("FMGC/print/mcdu/page1/L3auto", 1);
|
||||
}
|
||||
if (key == "L5") {
|
||||
} elsif (key == "L5") {
|
||||
setprop("MCDU[" ~ i ~ "]/page", "DATA");
|
||||
}
|
||||
if (key == "R1") {
|
||||
} elsif (key == "R1") {
|
||||
setprop("FMGC/print/mcdu/page1/R1req", 1);
|
||||
}
|
||||
if (key == "R2") {
|
||||
} elsif (key == "R2") {
|
||||
setprop("FMGC/print/mcdu/page1/R2req", 1);
|
||||
}
|
||||
if (key == "R3") {
|
||||
} elsif (key == "R3") {
|
||||
setprop("FMGC/print/mcdu/page1/R3req", 1);
|
||||
}
|
||||
}
|
||||
|
@ -49,29 +42,21 @@ var printInput = func(key, i) {
|
|||
var printInput2 = func(key, i) {
|
||||
if (key == "L1") {
|
||||
setprop("FMGC/print/mcdu/page2/L1auto", 1);
|
||||
}
|
||||
if (key == "L2") {
|
||||
} elsif (key == "L2") {
|
||||
setprop("FMGC/print/mcdu/page2/L2auto", 1);
|
||||
}
|
||||
if (key == "L3") {
|
||||
} elsif (key == "L3") {
|
||||
setprop("FMGC/print/mcdu/page2/L3auto", 1);
|
||||
}
|
||||
if (key == "L4") {
|
||||
} elsif (key == "L4") {
|
||||
setprop("FMGC/print/mcdu/page2/L4auto", 1);
|
||||
}
|
||||
if (key == "L6") {
|
||||
} elsif (key == "L6") {
|
||||
setprop("MCDU[" ~ i ~ "]/page", "DATA");
|
||||
}
|
||||
if (key == "R1") {
|
||||
} elsif (key == "R1") {
|
||||
setprop("FMGC/print/mcdu/page2/R1req", 1);
|
||||
}
|
||||
if (key == "R2") {
|
||||
} elsif (key == "R2") {
|
||||
setprop("FMGC/print/mcdu/page2/R2req", 1);
|
||||
}
|
||||
if (key == "R3") {
|
||||
} elsif (key == "R3") {
|
||||
setprop("FMGC/print/mcdu/page2/R3req", 1);
|
||||
}
|
||||
if (key == "R4") {
|
||||
} elsif (key == "R4") {
|
||||
setprop("FMGC/print/mcdu/page2/R4req", 1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ var duplicateNamesPage = {
|
|||
enableScroll: 0,
|
||||
scroll: 0,
|
||||
distances: nil,
|
||||
new: func(vector, index, type, computer, flagPBD = 0, pbdBrg = -999, pbdDist = -99) {
|
||||
new: func(vector, index, type, computer, flagPBD = 0, pbdBrg = -999, pbdDist = -99, flagProg = 0) {
|
||||
var dn = {parents:[duplicateNamesPage]};
|
||||
dn.vector = vector;
|
||||
dn.index = index;
|
||||
|
@ -37,6 +37,7 @@ var duplicateNamesPage = {
|
|||
dn.bearing = pbdBrg;
|
||||
dn.distance = pbdDist;
|
||||
dn.computer = computer;
|
||||
dn.flagPROG = flagProg;
|
||||
dn._setupPageWithData();
|
||||
dn.distances = [];
|
||||
return dn;
|
||||
|
@ -134,7 +135,7 @@ var duplicateNamesPage = {
|
|||
},
|
||||
pushButtonLeft: func(indexSelect) {
|
||||
if (!dirToFlag) {
|
||||
if (!me.flagPBD) {
|
||||
if (!me.flagPBD and !me.flagPROG) {
|
||||
if (size(me.vector[0].id) == 5) {
|
||||
fmgc.flightPlanController.insertFix(me.vector[0].id, me.index, me.computer, 1, indexSelect - 1);
|
||||
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
|
||||
|
@ -145,9 +146,16 @@ var duplicateNamesPage = {
|
|||
fmgc.flightPlanController.insertNavaid(me.vector[0].id, me.index, me.computer, 1, indexSelect - 1);
|
||||
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
|
||||
}
|
||||
} else {
|
||||
} elsif (me.flagPBD) {
|
||||
fmgc.flightPlanController.getWPforPBD(me.vector[0].id ~ "/" ~ me.bearing ~ "/" ~ me.distance, me.index, me.computer, 1, indexSelect - 1);
|
||||
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
|
||||
} else {
|
||||
if (me.type == 0) {
|
||||
mcdu.bearingDistances[me.computer].newPointResult(me.vector, 1, indexSelect - 1);
|
||||
} else {
|
||||
mcdu.bearingDistances[me.computer].newPointNavaid(me.vector, 1, indexSelect - 1);
|
||||
}
|
||||
pagebutton("prog",me.computer);
|
||||
}
|
||||
} else {
|
||||
canvas_mcdu.myDirTo[me.computer].fieldL1(me.vector[0].id, 1, indexSelect - 1);
|
||||
|
|
|
@ -117,15 +117,15 @@ var fplnItem = {
|
|||
},
|
||||
getAlt: func() {
|
||||
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)), "grn"]; #fixed - aligned to right
|
||||
return [" " ~ sprintf("%5.0f", math.round(fmgc.flightPlanController.flightplans[me.plan].departure.elevation * M2FT)), "grn"];
|
||||
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1) and fmgc.flightPlanController.fromWptAlt != nil) {
|
||||
return [" " ~ fmgc.flightPlanController.fromWptAlt, "mag"];
|
||||
} elsif (me.wp.alt_cstr != nil and me.wp.alt_cstr > 0) {
|
||||
var tcol = (me.wp.alt_cstr_type == "computed" or me.wp.alt_cstr_type == "computed_mach") ? "grn" : "mag"; # TODO - check if only computed
|
||||
if (me.wp.alt_cstr > fmgc.FMGCInternal.transAlt) {
|
||||
return [" " ~ sprintf("%5s", "FL" ~ math.round(num(me.wp.alt_cstr) / 100)), tcol]; #fixed - aligned to right
|
||||
return [" " ~ sprintf("%5s", "FL" ~ math.round(num(me.wp.alt_cstr) / 100)), tcol];
|
||||
} else {
|
||||
return [" " ~ sprintf("%5.0f", me.wp.alt_cstr), tcol]; #fixed - aligned to right
|
||||
return [" " ~ sprintf("%5.0f", me.wp.alt_cstr), tcol];
|
||||
}
|
||||
} else {
|
||||
return ["------", "wht"];
|
||||
|
|
|
@ -2,12 +2,17 @@
|
|||
# Basic OOOI system implementation
|
||||
|
||||
var OOOIReport = {
|
||||
new: func(state,fob="",time="") {
|
||||
new: func(state,time=0,fob="") {
|
||||
var report = {parents:[OOOIReport]};
|
||||
report.state = state;
|
||||
report.fob = (fob != "") ? fob : fmgc.FMGCInternal.fob;
|
||||
report.time = (time != "") ? time : sprintf("%02d.%02d", getprop("/sim/time/utc/hour"), getprop("/sim/time/utc/minute"));
|
||||
if (time != 0) {
|
||||
report.time = formatSecToHHMM(time);
|
||||
report.elapsed = time;
|
||||
} else {
|
||||
report.time = sprintf("%02d.%02d", getprop("/sim/time/utc/hour"), getprop("/sim/time/utc/minute"));
|
||||
report.elapsed = int(getprop("/sim/time/elapsed-sec"));
|
||||
}
|
||||
report.gmt = getprop("/sim/time/gmt-string");
|
||||
report.date = getprop("/sim/time/utc/day");
|
||||
report.fltnum = (fmgc.FMGCInternal.flightNumSet == 1) ? fmgc.FMGCInternal.flightNum : "----";
|
||||
|
@ -42,12 +47,15 @@ var formatSecToHHMM = func(sec) {
|
|||
var FlightLogDatabase = {
|
||||
database: std.Vector.new(),
|
||||
pages: std.Vector.new(),
|
||||
currpageindex: 0,
|
||||
addReport: func(report) {
|
||||
if (report.state == 0) me.pages.append( OOOIReportPage.new(me.getSize()) );
|
||||
if (report.state == 0 or me.getPageSize()==0) me.addPage();
|
||||
me.database.append(report);
|
||||
var pg = me.pages.vector[me.pages.size()-1];
|
||||
pg.fltnum = report.fltnum;
|
||||
pg.tofrom = report.tofrom;
|
||||
if (report.state < 3) { # IN states (3/4) don't update page data
|
||||
if (report.fltnum != "") pg.fltnum = report.fltnum;
|
||||
if (report.tofrom != "") pg.tofrom = report.tofrom;
|
||||
}
|
||||
if (report.state == 0) {
|
||||
pg.fltstate = "OUT";
|
||||
pg.blkstart = report.elapsed;
|
||||
|
@ -64,6 +72,10 @@ var FlightLogDatabase = {
|
|||
pg.fltstate = "END";
|
||||
if (pg.blkstart > 0) pg.blktime = formatSecToHHMM(report.elapsed - pg.blkstart);
|
||||
}
|
||||
},
|
||||
reset: func() {
|
||||
#Actually reset occurs before IN state - I have no solution for this
|
||||
#if (me.getPageSize()>0 and me.currpageindex < me.getSize()) me.addPage();
|
||||
},
|
||||
getSize: func() {
|
||||
return me.database.size();
|
||||
|
@ -82,6 +94,10 @@ var FlightLogDatabase = {
|
|||
}
|
||||
return lst;
|
||||
},
|
||||
addPage: func() {
|
||||
me.currpageindex = me.getSize();
|
||||
me.pages.append( OOOIReportPage.new(me.getSize()) );
|
||||
},
|
||||
getPage: func(pg) {
|
||||
return (pg<=me.getPageSize()) ? me.pages.vector[pg-1] : OOOIReportPage.new(0);
|
||||
},
|
||||
|
@ -110,7 +126,12 @@ var doorR1_pos = props.globals.getNode("/sim/model/door-positions/doorr1/positio
|
|||
var doorL4_pos = props.globals.getNode("/sim/model/door-positions/doorl4/position-norm", 1);
|
||||
var doorR4_pos = props.globals.getNode("/sim/model/door-positions/doorr4/position-norm", 1);
|
||||
|
||||
#check for A/C state change - advice me for a better method, please :/
|
||||
# Detect OFF without IN
|
||||
var lastgs0 = 0;
|
||||
#var lastgear0 = 0;
|
||||
var lastgsrestart = 0;
|
||||
|
||||
# Check for A/C state change - advice me for a better method, please :/
|
||||
var waitingOOOIChange = maketimer(1, func(){ # 1sec precision
|
||||
|
||||
var phase = fmgc.FMGCInternal.phase;
|
||||
|
@ -141,14 +162,29 @@ var waitingOOOIChange = maketimer(1, func(){ # 1sec precision
|
|||
if (gear0 and (phase == 7 or phase == 0)) { #done or preflight
|
||||
FlightLogDatabase.addReport(OOOIReport.new(expectedOOOIState));
|
||||
expectedOOOIState = 3;
|
||||
lastgs0 = 0;
|
||||
lastgsrestart = 0;
|
||||
}
|
||||
} else if (expectedOOOIState == 3) { # IN
|
||||
if (gear0 and gs < 1) {
|
||||
if (lastgs0 == 0) {
|
||||
lastgs0 = int(getprop("/sim/time/elapsed-sec"));
|
||||
lastgsrestart = 0;
|
||||
}
|
||||
if (doorL1_pos.getValue()>0 or doorR1_pos.getValue()>0 or doorL4_pos.getValue()>0 or doorR4_pos.getValue()>0) {
|
||||
FlightLogDatabase.addReport(OOOIReport.new(expectedOOOIState));
|
||||
expectedOOOIState = 0;
|
||||
}
|
||||
}
|
||||
else if (!gear0) { # OFF without IN -> TO without stop and opening doors
|
||||
if (lastgs0>0) FlightLogDatabase.addReport(OOOIReport.new(expectedOOOIState,lastgs0)); # IN (estimated)
|
||||
FlightLogDatabase.addPage();
|
||||
if (lastgsrestart>0) FlightLogDatabase.addReport(OOOIReport.new(0,lastgsrestart)); # OUT (estimated)
|
||||
expectedOOOIState = 1; # go on to OFF state
|
||||
}
|
||||
else if (gs > 9 and lastgsrestart == 0) { # try to detect OFF without IN
|
||||
lastgsrestart = int(getprop("/sim/time/elapsed-sec"));
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -238,6 +238,7 @@ var initInputA = func(key, i) {
|
|||
fmgc.flightPlanController.reset(2);
|
||||
fmgc.flightPlanController.init();
|
||||
Simbrief.SimbriefParser.inhibit = 0;
|
||||
fmgc.updateARPT();
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
#} else if (scratchpad == "") {
|
||||
#fmgc.FMGCInternal.altSelected = 0;
|
||||
|
@ -264,6 +265,7 @@ var initInputA = func(key, i) {
|
|||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
fmgc.flightPlanController.updateAirports(fromto[0], fromto[1], 2);
|
||||
fmgc.FMGCInternal.altSelected = 0;
|
||||
fmgc.updateARPT();
|
||||
fmgc.updateArptLatLon();
|
||||
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
|
||||
} else {
|
||||
|
|
|
@ -237,9 +237,11 @@ var lskbutton = func(btn, i) {
|
|||
canvas_mcdu.myCRZWIND[i].pushButtonLeft(1);
|
||||
} else if (page == "WINDDES") {
|
||||
canvas_mcdu.myDESWIND[i].pushButtonLeft(1);
|
||||
} else if (page == "PROGPREF") {
|
||||
progTOInput("L1",i); # same fn as TO
|
||||
} else if (page == "PROGTO") {
|
||||
progTOInput("L1",i);
|
||||
} else if (page == "PROGCLB") {
|
||||
} else if (page == "PROGCLB" or page == "PROGAPPR") { # APPR restore to CLB
|
||||
progCLBInput("L1",i);
|
||||
} else if (page == "PROGCRZ") {
|
||||
progCRZInput("L1",i);
|
||||
|
@ -532,6 +534,8 @@ var lskbutton = func(btn, i) {
|
|||
statusInput("L3",i);
|
||||
} else if (page == "RADNAV") {
|
||||
radnavInput("L3",i);
|
||||
} else if (page == "DATA") {
|
||||
dataInput("L3",i);
|
||||
} else if (page == "PRINTFUNC") {
|
||||
printInput("L3",i);
|
||||
} else if (page == "PRINTFUNC2") {
|
||||
|
@ -632,6 +636,8 @@ var lskbutton = func(btn, i) {
|
|||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
}
|
||||
}
|
||||
} else if (page == "VERTREV") {
|
||||
canvas_mcdu.myVertRev[i].pushButtonLeft(3);
|
||||
} else if (page == "MCDUTEXT") {
|
||||
atsu.freeTexts[i].selection = 2;
|
||||
atsu.freeTexts[i].changed = 1;
|
||||
|
@ -851,7 +857,13 @@ var lskbutton = func(btn, i) {
|
|||
} else if (page == "F-PLNA" or page == "F-PLNB") {
|
||||
canvas_mcdu.myFpln[i].pushButtonLeft(6);
|
||||
} else if (page == "LATREV" or page == "VERTREV" or page == "DUPLICATENAMES") {
|
||||
if (page != "DUPLICATENAMES") {
|
||||
pageNode[i].setValue("F-PLNA");
|
||||
} else {
|
||||
if (canvas_mcdu.myDuplicate[i] != nil and canvas_mcdu.myDuplicate[i].flagPROG) {
|
||||
pagebutton("prog",i);
|
||||
}
|
||||
}
|
||||
} else if (page == "ARRIVAL") {
|
||||
canvas_mcdu.myArrival[i].arrPushbuttonLeft(6);
|
||||
} else if (page == "DEPARTURE" or page == "HOLD" or page == "AIRWAYS") {
|
||||
|
@ -885,6 +897,8 @@ var lskbutton = func(btn, i) {
|
|||
pageNode[i].setValue("ATIS");
|
||||
} else if (page == "AOCCONFIG") {
|
||||
pageNode[i].setValue("AOCMENU");
|
||||
} else if (page == "POSMON") {
|
||||
canvas_mcdu.togglePageFreeze(i);
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
@ -1080,6 +1094,8 @@ var rskbutton = func(btn, i) {
|
|||
atsu.freeTexts[i].changed = 1;
|
||||
} else if (page == "ATCMENU") {
|
||||
pageNode[i].setValue("MCDUTEXT");
|
||||
} else if (page == "VERTREV") {
|
||||
canvas_mcdu.myVertRev[i].pushButtonRight(3);
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
@ -1126,6 +1142,8 @@ var rskbutton = func(btn, i) {
|
|||
}
|
||||
}
|
||||
pageNode[i].setValue("WINDCRZ");
|
||||
} else if (find("PROG",page) != -1) {
|
||||
progGENInput("R4",i);
|
||||
} else if (page == "PERFTO") {
|
||||
perfTOInput("R4",i);
|
||||
} else if (page == "PERFAPPR") {
|
||||
|
@ -1420,21 +1438,27 @@ var pagebutton = func(btn, i) {
|
|||
|
||||
# A more flexible system/page tracking for future system expansion
|
||||
if (getprop("/MCDU[" ~ i ~ "]/active-system") == "fmgc") setprop("/MCDU[" ~ i ~ "]/last-fmgc-page", page);
|
||||
else setprop("/MCDU[" ~ i ~ "]/last-atsu-page", page);
|
||||
else if (getprop("/MCDU[" ~ i ~ "]/active-system") == "atsu") setprop("/MCDU[" ~ i ~ "]/last-atsu-page", page);
|
||||
if (btn == "atc") setprop("/MCDU[" ~ i ~ "]/active-system","atsu");
|
||||
else setprop("/MCDU[" ~ i ~ "]/active-system","fmgc");
|
||||
|
||||
if (btn == "radnav") {
|
||||
pageNode[i].setValue("RADNAV");
|
||||
} else if (btn == "prog") {
|
||||
if (fmgc.FMGCInternal.phase == 0 or fmgc.FMGCInternal.phase == 1) {
|
||||
if (fmgc.FMGCInternal.phase == 0) {
|
||||
pageNode[i].setValue("PROGPREF");
|
||||
} else if (fmgc.FMGCInternal.phase == 1) {
|
||||
pageNode[i].setValue("PROGTO");
|
||||
} else if (fmgc.FMGCInternal.phase == 2) {
|
||||
pageNode[i].setValue("PROGCLB");
|
||||
} else if (fmgc.FMGCInternal.phase == 3) {
|
||||
pageNode[i].setValue("PROGCRZ");
|
||||
} else if (fmgc.FMGCInternal.phase == 4 or fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
} else if (fmgc.FMGCInternal.phase == 4) {
|
||||
pageNode[i].setValue("PROGDES");
|
||||
} else if (fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
pageNode[i].setValue("PROGAPPR");
|
||||
} else if (fmgc.FMGCInternal.phase == 7) {
|
||||
pageNode[i].setValue("PROGDONE");
|
||||
}
|
||||
} else if (btn == "perf") {
|
||||
if (fmgc.FMGCInternal.phase == 0 or fmgc.FMGCInternal.phase == 1) {
|
||||
|
|
|
@ -20,9 +20,10 @@ var perfTOCheckVSpeeds = func(i) {
|
|||
}
|
||||
|
||||
var perfTOInput = func(key, i) {
|
||||
var modifiable = (fmgc.FMGCInternal.phase == 1) ? 0 : 1;
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") {
|
||||
if (fmgc.FMGCInternal.phase != 1) {
|
||||
|
||||
if (key == "L1" and modifiable) {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.v1 = 0;
|
||||
fmgc.FMGCInternal.v1set = 0;
|
||||
|
@ -49,11 +50,7 @@ var perfTOInput = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "L2") {
|
||||
if (fmgc.FMGCInternal.phase != 1) {
|
||||
} else if (key == "L2" and modifiable) {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.vr = 0;
|
||||
fmgc.FMGCInternal.vrset = 0;
|
||||
|
@ -74,11 +71,7 @@ var perfTOInput = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "L3") {
|
||||
if (fmgc.FMGCInternal.phase != 1) {
|
||||
} else if (key == "L3" and modifiable) {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.v2 = 0;
|
||||
fmgc.FMGCInternal.v2set = 0;
|
||||
|
@ -102,9 +95,6 @@ var perfTOInput = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (key == "L4") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.transAlt = 18000;
|
||||
|
@ -120,7 +110,7 @@ var perfTOInput = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else if (key == "L5") {
|
||||
} else if (key == "L5" and modifiable) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/systems/thrust/clbreduc-ft", 1500);
|
||||
setprop("/FMGC/internal/accel-agl-ft", 1500);
|
||||
|
@ -160,7 +150,7 @@ var perfTOInput = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else if (key == "R3") {
|
||||
} else if (key == "R3" and modifiable) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/to-flap", 0);
|
||||
setprop("/FMGC/internal/to-ths", "0.0");
|
||||
|
@ -230,9 +220,9 @@ var perfTOInput = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else if (key == "R4") {
|
||||
} else if (key == "R4" and modifiable) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/flex", 0);
|
||||
setprop("/FMGC/internal/flex", 45);
|
||||
setprop("/FMGC/internal/flex-set", 0);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
|
@ -241,8 +231,6 @@ var perfTOInput = func(key, i) {
|
|||
if (int(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 99) {
|
||||
setprop("/FMGC/internal/flex", scratchpad);
|
||||
setprop("/FMGC/internal/flex-set", 1);
|
||||
var flex_calc = getprop("/FMGC/internal/flex") - getprop("environment/temperature-degc");
|
||||
setprop("/FMGC/internal/flex-cmd", flex_calc);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -251,7 +239,7 @@ var perfTOInput = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
} else if (key == "R5") {
|
||||
} else if (key == "R5" and modifiable) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/eng-out-reduc", "1500");
|
||||
setprop("MCDUC/reducacc-set", 0);
|
||||
|
@ -268,5 +256,7 @@ var perfTOInput = func(key, i) {
|
|||
}
|
||||
} else if (key == "R6") {
|
||||
setprop("MCDU[" ~ i ~ "]/page", "PERFCLB");
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
|
|
284
Nasal/MCDU/PROG.nas
Normal file
284
Nasal/MCDU/PROG.nas
Normal file
|
@ -0,0 +1,284 @@
|
|||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
var altSet = props.globals.getNode("it-autoflight/input/alt", 1);
|
||||
var brgDistResult = nil;
|
||||
|
||||
var progGENInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "R4") {
|
||||
if (scratchpad == "CLR") {
|
||||
bearingDistances[i].selectedPoint = nil;
|
||||
bearingDistances[i].displayID = nil;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
brgDistResult = bearingDistances[i].newPoint(mcdu_scratchpad.scratchpads[i].scratchpad);
|
||||
if (brgDistResult != 1) {
|
||||
mcdu_message(i, "NOT IN DATA BASE");
|
||||
} else {
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var progTOInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
var crzs = size(scratchpad);
|
||||
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and fmgc.FMGCInternal.crzSet <= scratchpad * 100 and fmgc.FMGCInternal.crzSet) {
|
||||
fmgc.FMGCInternal.crzProg = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var progCLBInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
var crzs = size(scratchpad);
|
||||
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and fmgc.FMGCInternal.crzSet <= scratchpad * 100) {
|
||||
fmgc.FMGCInternal.crzProg = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var progCRZInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
var crzs = size(scratchpad);
|
||||
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and fmgc.FMGCInternal.crzSet <= scratchpad * 100) {
|
||||
fmgc.FMGCInternal.crzProg = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var progDESInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
if (fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
var crzs = size(scratchpad);
|
||||
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and fmgc.FMGCInternal.crzSet <= scratchpad * 100) {
|
||||
fmgc.FMGCInternal.crzProg = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (fmgc.FMGCInternal.phase == 4 or fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var _result = [nil, nil];
|
||||
var _courseAndDistance = [nil, nil];
|
||||
var bearingDistanceInstance = {
|
||||
new: func(id) {
|
||||
var bd = {parents: [bearingDistanceInstance]};
|
||||
bd.id = id;
|
||||
bd.bearing = 360;
|
||||
bd.distance = 0;
|
||||
bd.selectedPoint = nil;
|
||||
bd.displayID = nil;
|
||||
return bd;
|
||||
},
|
||||
newPointResult: func(result, duplicateNames = 0, duplicateNamesIndex = nil) {
|
||||
if (duplicateNames != 0) {
|
||||
me.selectedPoint = result[duplicateNamesIndex];
|
||||
me.displayID = result[duplicateNamesIndex].id;
|
||||
} elsif (size(result) > 1) {
|
||||
if (canvas_mcdu.myDuplicate[me.id] != nil) {
|
||||
canvas_mcdu.myDuplicate[me.id].del();
|
||||
}
|
||||
canvas_mcdu.myDuplicate[me.id] = nil;
|
||||
canvas_mcdu.myDuplicate[me.id] = mcdu.duplicateNamesPage.new(result, 0, 0, me.id, 0, -999, -999, 1);
|
||||
setprop("MCDU[" ~ me.id ~ "]/page", "DUPLICATENAMES");
|
||||
} else {
|
||||
me.selectedPoint = result[0];
|
||||
me.displayID = result[0].id;
|
||||
}
|
||||
return 1;
|
||||
},
|
||||
newPointNavaid: func(result, duplicateNames = 0, duplicateNamesIndex = nil) {
|
||||
if (duplicateNames != 0) {
|
||||
me.selectedPoint = result[duplicateNamesIndex];
|
||||
me.displayID = result[duplicateNamesIndex].id;
|
||||
} elsif (size(result) > 1) {
|
||||
if (canvas_mcdu.myDuplicate[me.id] != nil) {
|
||||
canvas_mcdu.myDuplicate[me.id].del();
|
||||
}
|
||||
canvas_mcdu.myDuplicate[me.id] = nil;
|
||||
canvas_mcdu.myDuplicate[me.id] = mcdu.duplicateNamesPage.new(result, 0, 1, me.id, 0, -999, -999, 1);
|
||||
setprop("MCDU[" ~ me.id ~ "]/page", "DUPLICATENAMES");
|
||||
} else {
|
||||
me.selectedPoint = result[0];
|
||||
me.displayID = result[0].id;
|
||||
print("YES");
|
||||
}
|
||||
return 1;
|
||||
},
|
||||
newPointRWY: func(result,ID) {
|
||||
if (size(result) > 1) {
|
||||
#spawnPAGE
|
||||
} else {
|
||||
var string = split(left(ID,4),ID)[1];
|
||||
if (find("C",string) != -1 or find("L",string) != -1 or find("R",string) != -1) {
|
||||
if (size(string) == 2) {
|
||||
string = "0" ~ string;
|
||||
}
|
||||
} else {
|
||||
if (size(string) == 1) {
|
||||
string = "0" ~ string;
|
||||
}
|
||||
}
|
||||
|
||||
if (contains(result[0].runways,string)) {
|
||||
me.selectedPoint = {lat: result[0].runways[string].lat, lon: result[0].runways[string].lon};
|
||||
me.displayID = left(ID,4) ~ string;
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
},
|
||||
newPointLatLon: func(result) {
|
||||
return 0;
|
||||
},
|
||||
newPoint: func(id) {
|
||||
_result[me.id] = fmgc.WaypointDatabase.getWP(id);
|
||||
if (_result[me.id] != nil) {
|
||||
me.selectedPoint = _result[me.id];
|
||||
me.displayID = _result[me.id].id;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (size(id) >= 2 and size(id) <= 3) {
|
||||
_result[me.id] = findNavaidsByID(id);
|
||||
if (size(_result[me.id]) != 0) {
|
||||
return me.newPointNavaid(_result[me.id]);
|
||||
} else {
|
||||
_result[me.id] = findAirportsByICAO(id); # consider 3 letter ICAOs
|
||||
if (size(_result[me.id]) != 0) {
|
||||
return me.newPointResult(_result[me.id]);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} elsif (size(id) == 4) {
|
||||
_result[me.id] = findAirportsByICAO(id);
|
||||
if (size(_result[me.id]) != 0) {
|
||||
return me.newPointResult(_result[me.id]);
|
||||
} else {
|
||||
_result[me.id] = findFixesByID(id);
|
||||
if (size(_result[me.id]) != 0) {
|
||||
return me.newPointResult(_result[me.id]);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} elsif (size(id) >= 5 and size(id) <= 7) {
|
||||
_result[me.id] = findFixesByID(id);
|
||||
if (size(_result[me.id]) != 0) {
|
||||
return me.newPointResult(_result[me.id]);
|
||||
} else {
|
||||
_result[me.id] = findAirportsByICAO(left(id,4));
|
||||
if (size(_result[me.id]) != 0) {
|
||||
return me.newPointRWY(_result[me.id],id);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} elsif (size(id) >= 12) {
|
||||
_result[me.id] = fetchLatLon(id);
|
||||
if (size(_result[me.id]) != 0) {
|
||||
return me.newPointLatLon(_result[me.id]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
},
|
||||
update: func() {
|
||||
if (me.selectedPoint == nil) {
|
||||
return;
|
||||
}
|
||||
if (find("PROG",canvas_mcdu.pageProp[me.id].getValue()) == -1) {
|
||||
return;
|
||||
}
|
||||
_courseAndDistance[me.id] = courseAndDistance(me.selectedPoint);
|
||||
me.bearing = _courseAndDistance[me.id][0];
|
||||
me.distance = _courseAndDistance[me.id][1];
|
||||
},
|
||||
};
|
||||
|
||||
var bearingDistances = [bearingDistanceInstance.new(0),bearingDistanceInstance.new(1)];
|
||||
|
||||
var BDTimer = maketimer(2, func(){
|
||||
bearingDistances[0].update();
|
||||
bearingDistances[1].update();
|
||||
});
|
||||
BDTimer.start();
|
|
@ -1,33 +0,0 @@
|
|||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
var progCLBInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
var crzs = size(scratchpad);
|
||||
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and fmgc.FMGCInternal.crzSet <= scratchpad * 100) {
|
||||
fmgc.FMGCInternal.crzProg = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
var progCRZInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
var crzs = size(scratchpad);
|
||||
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and fmgc.FMGCInternal.crzSet <= scratchpad * 100) {
|
||||
fmgc.FMGCInternal.crzProg = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (fmgc.FMGCInternal.phase == 5) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
var progDESInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
if (fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
var crzs = size(scratchpad);
|
||||
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and fmgc.FMGCInternal.crzSet <= scratchpad * 100) {
|
||||
fmgc.FMGCInternal.crzProg = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
if (fmgc.FMGCInternal.phase == 4 or fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) {
|
||||
fmgc.FMGCInternal.phase = 3;
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
var altSet = props.globals.getNode("it-autoflight/input/alt", 1);
|
||||
|
||||
var progTOInput = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFl;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
var crzs = size(scratchpad);
|
||||
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and fmgc.FMGCInternal.crzSet <= scratchpad * 100 and fmgc.FMGCInternal.crzSet) {
|
||||
fmgc.FMGCInternal.crzProg = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,3 +1,5 @@
|
|||
var scratchpadStore = nil;
|
||||
|
||||
var vertRev = {
|
||||
title: [nil, nil, nil],
|
||||
subtitle: [nil, nil],
|
||||
|
@ -42,6 +44,28 @@ var vertRev = {
|
|||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
}
|
||||
},
|
||||
getSpd: func() {
|
||||
if (me.wp.speed_cstr != nil and me.wp.speed_cstr > 0) {
|
||||
var tcol = (me.wp.speed_cstr_type == "computed" or me.wp.speed_cstr_type == "computed_mach") ? "grn" : "mag"; # TODO - check if only computed
|
||||
return [" " ~ sprintf("%3.0f", me.wp.speed_cstr), tcol];
|
||||
} else {
|
||||
return [nil,nil];
|
||||
}
|
||||
},
|
||||
getAlt: func() {
|
||||
if (me.wp.alt_cstr != nil and me.wp.alt_cstr > 0) {
|
||||
var tcol = (me.wp.alt_cstr_type == "computed" or me.wp.alt_cstr_type == "computed_mach") ? "grn" : "mag"; # TODO - check if only computed
|
||||
if (me.wp.alt_cstr > fmgc.FMGCInternal.transAlt) {
|
||||
return [sprintf("%5s", "FL" ~ math.round(num(me.wp.alt_cstr) / 100)) ~ " ", tcol];
|
||||
} else {
|
||||
return [sprintf("%5.0f", me.wp.alt_cstr) ~ " ", tcol];
|
||||
}
|
||||
} else {
|
||||
return [nil,nil];
|
||||
}
|
||||
},
|
||||
alt: nil,
|
||||
speed: nil,
|
||||
_setupPageWithData: func() {
|
||||
if (me.type == 3) {
|
||||
me.title = ["VERT REV", " AT ", "PPOS"];
|
||||
|
@ -57,15 +81,30 @@ var vertRev = {
|
|||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
} elsif (me.type == 2) {
|
||||
me.title = ["VERT REV", " AT ", me.id];
|
||||
me.fontMatrix = [[0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 0]];
|
||||
me.L1 = ["", " EFOB ---.-", "wht"];
|
||||
me.R1 = ["", "EXTRA ---.- ", "wht"];
|
||||
me.L2 = ["250/10000", " CLB SPD LIM", "mag"];
|
||||
me.speed = me.getSpd();
|
||||
if (me.speed[0] == nil) {
|
||||
me.L3 = [" [ ]", " SPD CSTR", "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
} else {
|
||||
me.L3 = [me.speed[0], " SPD CSTR", me.speed[1]];
|
||||
me.fontMatrix[0][2] = 0;
|
||||
}
|
||||
me.L4 = [" CONSTANT MACH", nil, "wht"];
|
||||
me.L5 = [" WIND DATA", nil, "wht"];
|
||||
me.L6 = [" CLB", nil, "amb"];
|
||||
me.R2 = ["RTA ", nil, "wht"];
|
||||
me.alt = me.getAlt();
|
||||
if (me.alt[0] == nil) {
|
||||
me.R3 = ["[ ] ", "ALT CSTR ", "blu"];
|
||||
me.fontMatrix[1][2] = 1;
|
||||
} else {
|
||||
me.R3 = [me.alt[0], "ALT CSTR ", me.alt[1]];
|
||||
me.fontMatrix[1][2] = 0;
|
||||
}
|
||||
me.R6 = ["DES ", nil, "amb"];
|
||||
# When the system does vertical planning, L6 should be RETURN and R6 not used if the MCDU knows the waypoint is during climb or descent.
|
||||
# The CLB or DES prompts should only be shown for a vertical revision in the cruise phase.
|
||||
|
@ -74,7 +113,6 @@ var vertRev = {
|
|||
# The 'arrows' for CLB/DES should actually be asterisks.
|
||||
me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 1]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "wht", "wht", "amb"], ["ack", "wht", "ack", "ack", "wht", "amb"]];
|
||||
me.fontMatrix = [[0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 0]];
|
||||
} else {
|
||||
me.title = ["VERT REV", " AT ", me.id];
|
||||
|
||||
|
@ -135,8 +173,22 @@ var vertRev = {
|
|||
}
|
||||
},
|
||||
pushButtonLeft: func(index) {
|
||||
if (index == 5) {
|
||||
#print("role: ", me.wp.wp_role, ", type: ", me.wp.wp_type);
|
||||
scratchpadStore = mcdu_scratchpad.scratchpads[me.computer].scratchpad;
|
||||
if (index == 3 and me.type == 2) {
|
||||
if (scratchpadStore == "CLR") {
|
||||
me.wp.setSpeed("delete");
|
||||
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||
me._setupPageWithData();
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
} 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();
|
||||
me._setupPageWithData();
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
} else {
|
||||
mcdu_message(me.computer, "FORMAT ERROR");
|
||||
}
|
||||
} elsif (index == 5) {
|
||||
if (me.wp.wp_role == "sid") {
|
||||
if (canvas_mcdu.myCLBWIND[me.computer] == nil) {
|
||||
canvas_mcdu.myCLBWIND[me.computer] = windCLBPage.new(me.computer);
|
||||
|
@ -182,6 +234,24 @@ var vertRev = {
|
|||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
}
|
||||
},
|
||||
pushButtonRight: func(index) {
|
||||
scratchpadStore = mcdu_scratchpad.scratchpads[me.computer].scratchpad;
|
||||
if (index == 3 and me.type == 2) {
|
||||
if (scratchpadStore == "CLR") {
|
||||
me.wp.setAltitude("delete");
|
||||
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||
me._setupPageWithData();
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
} elsif (num(scratchpadStore) != nil and (size(scratchpadStore) == 4 or size(scratchpadStore) == 5) and scratchpadStore >= 0 and scratchpadStore <= 39000) {
|
||||
me.wp.setAltitude(math.round(scratchpadStore, 10), "at");
|
||||
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||
me._setupPageWithData();
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
} else {
|
||||
mcdu_message(me.computer, "FORMAT ERROR");
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var updateCrzLvlCallback = func () {
|
||||
|
|
|
@ -20,13 +20,12 @@ var Transponder = {
|
|||
activeADIRS: 1,
|
||||
condition: 0,
|
||||
failed: 0,
|
||||
codeDigitsNodes: [props.globals.getNode("instrumentation/transponder/inputs/digit[0]", 1), props.globals.getNode("instrumentation/transponder/inputs/digit[1]", 1), props.globals.getNode("instrumentation/transponder/inputs/digit[2]", 1), props.globals.getNode("instrumentation/transponder/inputs/digit[3]", 1)],
|
||||
serviceableNode: props.globals.getNode("instrumentation/transponder/serviceable", 1),
|
||||
knobNode: props.globals.getNode("instrumentation/transponder/inputs/knob-mode", 1),
|
||||
identNode: props.globals.getNode("instrumentation/transponder/inputs/ident-btn", 1),
|
||||
ac1Node: props.globals.getNode("/systems/electrical/bus/ac-1", 1),
|
||||
tcasNode: props.globals.getNode("instrumentation/tcas/inputs/mode"),
|
||||
aglNode: props.globals.getNode("position/gear-agl-ft", 1),
|
||||
codeDigitsNodes: [props.globals.getNode("/instrumentation/transponder/inputs/digit[0]", 1), props.globals.getNode("/instrumentation/transponder/inputs/digit[1]", 1), props.globals.getNode("/instrumentation/transponder/inputs/digit[2]", 1), props.globals.getNode("instrumentation/transponder/inputs/digit[3]", 1)],
|
||||
serviceableNode: props.globals.getNode("/instrumentation/transponder/serviceable", 1),
|
||||
knobNode: props.globals.getNode("/instrumentation/transponder/inputs/knob-mode", 1),
|
||||
identNode: props.globals.getNode("/instrumentation/transponder/inputs/ident-btn", 1),
|
||||
tcasNode: props.globals.getNode("/instrumentation/tcas/inputs/mode"),
|
||||
aglNode: props.globals.getNode("/position/gear-agl-ft", 1),
|
||||
electricNode: props.globals.getNode("/systems/electrical/outputs/transponder", 1), # communicate to generic systems
|
||||
new: func(elecSrc, ADIRS) {
|
||||
var t = {parents:[Transponder]};
|
||||
|
@ -40,9 +39,9 @@ var Transponder = {
|
|||
|
||||
return t;
|
||||
},
|
||||
update: func() {
|
||||
update: func(notification) {
|
||||
# TCAS - on seperate electrical source, so has to be before transponder electrical checking
|
||||
if (me.ac1Node.getValue() < 110) {
|
||||
if (notification.elecAC1 < 110) {
|
||||
me.tcasNode.setValue(0); # off
|
||||
} else {
|
||||
if (me.mode >= 1 and me.mode <= 3) {
|
||||
|
@ -285,7 +284,6 @@ var transponderPanel = {
|
|||
var init = func() {
|
||||
transponderPanel.atcSwitch(1);
|
||||
transponderPanel.updateAirData();
|
||||
transponderTimer.start();
|
||||
}
|
||||
|
||||
# Handler for code change from generic dialog
|
||||
|
@ -297,9 +295,6 @@ setlistener("/instrumentation/transponder/id-code", func {
|
|||
|
||||
var Transponders = std.Vector.new([Transponder.new("/systems/electrical/bus/ac-ess-shed", 1), Transponder.new("/systems/electrical/bus/ac-2", 2)]);
|
||||
|
||||
var transponderTimer = maketimer(0.1, func() {
|
||||
Transponders.vector[transponderPanel.atcSel - 1].update();
|
||||
});
|
||||
|
||||
setlistener("/systems/navigation/adr/operating-1", func() {
|
||||
transponderPanel.updateADR1(systems.ADIRS.Operating.adr[0].getValue());
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
#
|
||||
# Chrono - Clock - ET
|
||||
# Chrono - Clock - ET
|
||||
#
|
||||
var chr = aircraft.timer.new("instrumentation/chrono[0]/elapsetime-sec",1);
|
||||
var clk = aircraft.timer.new("instrumentation/clock/elapsetime-sec",1);
|
||||
var chrono_cpt = aircraft.timer.new("instrumentation/ndchrono[0]/elapsetime-sec",1);
|
||||
var chrono_fo = aircraft.timer.new("instrumentation/ndchrono[1]/elapsetime-sec",1);
|
||||
|
||||
var chr_min = nil;
|
||||
var chr_sec = nil;
|
||||
|
@ -36,7 +38,6 @@ var clock = {
|
|||
hhMM: props.globals.initNode("/instrumentation/clock/clock_hh_mm", 0, "STRING"),
|
||||
utcDate: [props.globals.initNode("/instrumentation/clock/utc-date", "", "STRING"), props.globals.initNode("/instrumentation/clock/utc-date1", "", "STRING"),
|
||||
props.globals.initNode("/instrumentation/clock/utc-date2", "", "STRING"),props.globals.initNode("/instrumentation/clock/utc-date3", "", "STRING")],
|
||||
|
||||
};
|
||||
|
||||
var chrono = {
|
||||
|
@ -49,6 +50,22 @@ var chrono = {
|
|||
started: props.globals.getNode("/instrumentation/chrono[0]/started"),
|
||||
};
|
||||
|
||||
#Cpt chrono
|
||||
var cpt_chrono = {
|
||||
etHh_cpt: props.globals.initNode("/instrumentation/ndchrono[0]/etHh_cpt", 0, "INT"),
|
||||
etMin_cpt: props.globals.initNode("/instrumentation/ndchrono[0]/etMin_cpt", 0, "INT"),
|
||||
etSec_cpt: props.globals.initNode("/instrumentation/ndchrono[0]/etSec_cpt", 0, "INT"),
|
||||
text: props.globals.initNode("/instrumentation/ndchrono[0]/text", "0' 00''", "STRING"),
|
||||
};
|
||||
|
||||
#Fo chrono
|
||||
var fo_chrono = {
|
||||
etHh_fo: props.globals.initNode("/instrumentation/ndchrono[1]/etHh_fo", 0, "INT"),
|
||||
etMin_fo: props.globals.initNode("/instrumentation/ndchrono[1]/etMin_fo", 0, "INT"),
|
||||
etSec_fo: props.globals.initNode("/instrumentation/ndchrono[1]/etSec_fo", 0, "INT"),
|
||||
text: props.globals.initNode("/instrumentation/ndchrono[1]/text", "0' 00''", "STRING"),
|
||||
};
|
||||
|
||||
var rudderTrim = {
|
||||
rudderTrimDisplay: props.globals.initNode("/controls/flight/rudder-trim-display", 0, "STRING"),
|
||||
rudderTrimDisplayLetter: props.globals.initNode("/controls/flight/rudder-trim-letter-display", "", "STRING"),
|
||||
|
@ -59,6 +76,8 @@ setlistener("sim/signals/fdm-initialized", func {
|
|||
chr.reset();
|
||||
clk.stop();
|
||||
clk.reset();
|
||||
chrono_cpt.reset();
|
||||
chrono_fo.reset();
|
||||
rudderTrim.rudderTrimDisplay.setValue(sprintf("%2.1f", pts.Fdm.JSBsim.Hydraulics.Rudder.trimDeg.getValue()));
|
||||
start_loop.start();
|
||||
});
|
||||
|
@ -120,6 +139,31 @@ setlistener("/instrumentation/chrono[0]/chrono-reset", func(et){
|
|||
};
|
||||
}, 0, 0);
|
||||
|
||||
#Chrono
|
||||
setlistener("instrumentation/efis[0]/inputs/CHRONO", func(et){
|
||||
chrono0 = et.getValue();
|
||||
if (chrono0 == 1){
|
||||
chrono_cpt.start();
|
||||
} elsif (chrono0 == 2) {
|
||||
chrono_cpt.stop();
|
||||
} elsif (chrono0 == 0) {
|
||||
chrono_cpt.reset();
|
||||
setprop("instrumentation/ndchrono[0]/elapsetime-sec", 0);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("instrumentation/efis[1]/inputs/CHRONO", func(et){
|
||||
chrono1 = et.getValue();
|
||||
if (chrono1 == 1){
|
||||
chrono_fo.start();
|
||||
} elsif (chrono1 == 2) {
|
||||
chrono_fo.stop();
|
||||
} elsif (chrono1 == 0) {
|
||||
chrono_fo.reset();
|
||||
setprop("instrumentation/ndchrono[1]/elapsetime-sec", 0);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("instrumentation/clock/et-selector", func(et){
|
||||
tmp1 = et.getValue();
|
||||
if (tmp1 == 2){
|
||||
|
@ -131,6 +175,31 @@ setlistener("instrumentation/clock/et-selector", func(et){
|
|||
}
|
||||
}, 0, 0);
|
||||
|
||||
#Chrono
|
||||
setlistener("instrumentation/efis[0]/inputs/CHRONO", func(et){
|
||||
chrono0 = et.getValue();
|
||||
if (chrono0 == 1){
|
||||
chrono_cpt.start();
|
||||
} elsif (chrono0 == 2) {
|
||||
chrono_cpt.stop();
|
||||
} elsif (chrono0 == 0) {
|
||||
chrono_cpt.reset();
|
||||
setprop("instrumentation/ndchrono[0]/elapsetime-sec", 0);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("instrumentation/efis[1]/inputs/CHRONO", func(et){
|
||||
chrono1 = et.getValue();
|
||||
if (chrono1 == 1){
|
||||
chrono_fo.start();
|
||||
} elsif (chrono1 == 2) {
|
||||
chrono_fo.stop();
|
||||
} elsif (chrono1 == 0) {
|
||||
chrono_fo.reset();
|
||||
setprop("instrumentation/ndchrono[1]/elapsetime-sec", 0);
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
var start_loop = maketimer(0.1, func {
|
||||
if (systems.ELEC.Bus.dcEss.getValue() < 25) { return; }
|
||||
|
||||
|
@ -225,6 +294,40 @@ var start_loop = maketimer(0.1, func {
|
|||
item.update(nil);
|
||||
}
|
||||
}
|
||||
|
||||
#Cpt Chrono
|
||||
chr0_tmp = getprop("instrumentation/ndchrono[0]/elapsetime-sec");
|
||||
if (chr0_tmp >= 360000) {
|
||||
setprop("instrumentation/ndchrono[0]/elapsetime-sec", getprop("instrumentation/ndchrono[0]/elapsetime-sec") - 360000);
|
||||
};
|
||||
chr0_hh = int(chr0_tmp * 0.000277777777778);
|
||||
chr0_min = int((chr0_tmp * 0.0166666666667) - (chr0_hh * 60));
|
||||
chr0_sec = int(chr0_tmp - (chr0_min * 60) - (chr0_hh * 3600));
|
||||
setprop("instrumentation/ndchrono[0]/etHh_cpt", chr0_hh);
|
||||
setprop("instrumentation/ndchrono[0]/etMin_cpt", chr0_min);
|
||||
setprop("instrumentation/ndchrono[0]/etSec_cpt", chr0_sec);
|
||||
if (chr0_tmp >= 3600) {
|
||||
setprop("instrumentation/ndchrono[0]/text", sprintf("%02d H %02d'", chr0_hh, chr0_min));
|
||||
} else {
|
||||
setprop("instrumentation/ndchrono[0]/text", sprintf("%02d' %02d''", chr0_min, chr0_sec));
|
||||
}
|
||||
|
||||
#Fo Chrono
|
||||
chr1_tmp = getprop("instrumentation/ndchrono[1]/elapsetime-sec");
|
||||
if (chr1_tmp >= 360000) {
|
||||
setprop("instrumentation/ndchrono[1]/elapsetime-sec", getprop("instrumentation/ndchrono[1]/elapsetime-sec") - 360000);
|
||||
};
|
||||
chr1_hh = int(chr1_tmp * 0.000277777777778);
|
||||
chr1_min = int(chr1_tmp * 0.0166666666667);
|
||||
chr1_sec = int(chr1_tmp - (chr1_min * 60) - (chr1_hh * 3600));
|
||||
setprop("instrumentation/ndchrono[1]/etHh_fo", chr1_hh);
|
||||
setprop("instrumentation/ndchrono[1]/etMin_fo", chr1_min);
|
||||
setprop("instrumentation/ndchrono[1]/etSec_fo", chr1_sec);
|
||||
if (chr1_tmp >= 3600) {
|
||||
setprop("instrumentation/ndchrono[1]/text", sprintf("%02d H %02d'", chr1_hh, chr1_min));
|
||||
} else {
|
||||
setprop("instrumentation/ndchrono[1]/text", sprintf("%02d' %02d''", chr1_min, chr1_sec));
|
||||
}
|
||||
});
|
||||
|
||||
var updateRudderTrim = func() {
|
||||
|
|
|
@ -144,6 +144,7 @@ var ADIRU = {
|
|||
call(canvas_nd.ND_2.NDFo.predicates[predicate]);
|
||||
}
|
||||
},
|
||||
_excessMotion: 0,
|
||||
alignLoop: func() {
|
||||
me._roll = pts.Orientation.roll.getValue();
|
||||
me._pitch = pts.Orientation.pitch.getValue();
|
||||
|
@ -152,13 +153,18 @@ var ADIRU = {
|
|||
# todo use IR values
|
||||
if (me._gs > 5 or abs(me._pitch) > 5 or abs(me._roll) > 10) {
|
||||
me.stopAlignNoAlign();
|
||||
me._excessMotion = 1;
|
||||
print("Excessive motion, restarting");
|
||||
me.update(); # update operative
|
||||
me.align(calcAlignTime(pts.Position.latitude.getValue()));
|
||||
} elsif (me.operative == 0) {
|
||||
me.stopAlignNoAlign();
|
||||
me._excessMotion = 0;
|
||||
} elsif (pts.Sim.Time.elapsedSec.getValue() >= me._alignTime) {
|
||||
me.stopAlignAligned();
|
||||
me._excessMotion = 0;
|
||||
} else {
|
||||
me._excessMotion = 0;
|
||||
}
|
||||
|
||||
if (!me.operating and pts.Sim.Time.elapsedSec.getValue() >= me._pfdTime) {
|
||||
|
@ -318,7 +324,7 @@ var ADIRS = {
|
|||
}
|
||||
),
|
||||
],
|
||||
loop: func() {
|
||||
loop: func(notification) {
|
||||
if (me._init) {
|
||||
for (i = 0; i < _NUMADIRU; i = i + 1) {
|
||||
# update ADR units power
|
||||
|
@ -342,7 +348,6 @@ var ADIRS = {
|
|||
}
|
||||
|
||||
# Update VFE
|
||||
notification = nil;
|
||||
foreach (var update_item; me.update_items) {
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
|
|
@ -101,7 +101,7 @@ var APU = {
|
|||
me.inletFlap.open();
|
||||
me.listenSignals = 1;
|
||||
settimer(func() {
|
||||
if (APUNodes.Controls.master.getValue() and !getprop("/systems/acconfig/autoconfig-running")) {
|
||||
if (APUNodes.Controls.master.getValue() and !pts.Acconfig.running.getValue()) {
|
||||
me.setState(2);
|
||||
}
|
||||
}, 3);
|
||||
|
@ -131,7 +131,7 @@ var APU = {
|
|||
apuStartTimer.start();
|
||||
},
|
||||
waitStart: func() {
|
||||
if (pts.APU.rpm.getValue() >= 4.9) {
|
||||
if (pts.APU.rpm.getValue() >= 4.9 or me.fastStart) {
|
||||
me.GenericControls.cutoff.setValue(0);
|
||||
if (me.fastStart) {
|
||||
setprop("/fdm/jsbsim/propulsion/set-running", 2);
|
||||
|
|
|
@ -169,12 +169,12 @@ var AOC = {
|
|||
|
||||
var serverString = "";
|
||||
if (me.server.getValue() == "vatsim") {
|
||||
serverString = "https://api.flybywiresim.com/metar?source=vatsim&icao=";
|
||||
serverString = "https://api.flybywiresim.com/metar/" ~ airport ~ "?source=vatsim";
|
||||
} else {
|
||||
serverString = defaultServer;
|
||||
serverString = defaultServer ~ airport;
|
||||
}
|
||||
|
||||
http.load(serverString ~ airport)
|
||||
http.load(serverString)
|
||||
.fail(func(r) me.downloadFail(i, r))
|
||||
.done(func(r) {
|
||||
var errs = [];
|
||||
|
@ -213,7 +213,23 @@ var AOC = {
|
|||
},
|
||||
processMETAR: func(r, i) {
|
||||
var raw = r.response;
|
||||
if (find('"statusCode":404',raw) != -1) {
|
||||
me.received = 0;
|
||||
me.sent = 0;
|
||||
mcdu.mcdu_message(i, "NO METAR AVAILABLE");
|
||||
return;
|
||||
}
|
||||
|
||||
if (me.server.getValue() == "vatsim") {
|
||||
if (find("metar", raw) != -1) {
|
||||
raw = split('"metar":"', raw)[1];
|
||||
raw = split('","source":"Vatsim"}', raw)[0];
|
||||
} else {
|
||||
me.received = 0;
|
||||
me.sent = 0;
|
||||
mcdu.mcdu_message(i, "BAD SERVER RESPONSE");
|
||||
return;
|
||||
}
|
||||
me.lastMETAR = raw;
|
||||
} else if (find("<raw_text>", raw) != -1) {
|
||||
raw = split("<raw_text>", raw)[1];
|
||||
|
@ -331,7 +347,7 @@ var ATIS = {
|
|||
},
|
||||
processATIS: func(r, i) {
|
||||
var raw = r.response;
|
||||
if (r.response == "FBW_ERROR: D-ATIS not available at this airport" or find("atis not avail",r.response) != -1 or find('"statusCode":404',r.response) != -1) {
|
||||
if (raw == "FBW_ERROR: D-ATIS not available at this airport" or find("atis not avail",raw) != -1 or find('"statusCode":404',raw) != -1) {
|
||||
me.received = 0;
|
||||
me.sent = 0;
|
||||
mcdu.mcdu_message(i,"NO D-ATIS AVAILABLE");
|
||||
|
|
|
@ -111,7 +111,7 @@ var BrakeSystem =
|
|||
},
|
||||
|
||||
# update brake energy
|
||||
update : func()
|
||||
update : func(notification)
|
||||
{
|
||||
if (me.counter == 0) {
|
||||
me.counter = 1;
|
||||
|
@ -122,10 +122,10 @@ var BrakeSystem =
|
|||
|
||||
LThermalEnergy = me.thermalEnergy[0];
|
||||
RThermalEnergy = me.thermalEnergy[1];
|
||||
me.CurrentTime = pts.Sim.Time.elapsedSec.getValue();
|
||||
me.CurrentTime = notification.elapsedTime;
|
||||
dt = me.CurrentTime - me.LastSimTime;
|
||||
LBrakeLevel = pts.Fdm.JSBsim.Fcs.brake[0].getValue();
|
||||
RBrakeLevel = pts.Fdm.JSBsim.Fcs.brake[1].getValue();
|
||||
LBrakeLevel = notification.leftBrakeFCS;
|
||||
RBrakeLevel = notification.rightBrakeFCS;
|
||||
tatdegc = pts.Fdm.JSBsim.Propulsion.tatC.getValue() or 0;
|
||||
|
||||
if (pts.Sim.replayState.getValue() == 0 and dt < 1.0) {
|
||||
|
@ -137,7 +137,7 @@ var BrakeSystem =
|
|||
LCoolingRatio = LCoolingRatio * 3;
|
||||
RCoolingRatio = RCoolingRatio * 3;
|
||||
};
|
||||
airspeed = pts.Velocities.airspeed.getValue();
|
||||
airspeed = notification.airspeedV;
|
||||
if (pts.Gear.position[1].getValue()) {
|
||||
#increase CoolingRatio if gear down according to airspeed
|
||||
LCoolingRatio = LCoolingRatio * airspeed;
|
||||
|
@ -168,7 +168,7 @@ var BrakeSystem =
|
|||
L_Thrust = 0;
|
||||
R_Thrust = 0;
|
||||
|
||||
if (pts.Gear.wow[1].getValue()) {
|
||||
if (notification.gear1Wow) {
|
||||
var V1 = pts.Velocities.groundspeed.getValue();
|
||||
var Mass = pts.Fdm.JSBsim.Inertia.weightLbs.getValue() * me.ScalingDivisor;
|
||||
|
||||
|
@ -179,7 +179,7 @@ var BrakeSystem =
|
|||
|
||||
LThermalEnergy += (Mass * pts.Gear.compression[1].getValue() * (math.pow(V1, 2) - math.pow(V2_L, 2)) / 2);
|
||||
if (pts.Controls.Gear.chocks.getValue()) {
|
||||
if (!pts.Controls.Gear.parkingBrake.getValue()) {
|
||||
if (!notification.parkingBrake) {
|
||||
# cooling effect: reduce thermal energy by (LnCoolFactor) * dt
|
||||
LThermalEnergy = LThermalEnergy * math.exp(LnCoolFactor * dt);
|
||||
} else {
|
||||
|
@ -188,7 +188,7 @@ var BrakeSystem =
|
|||
LThermalEnergy = (LThermalEnergy * math.exp(LnCoolFactor * dt)) + (L_Thrust * dt);
|
||||
};
|
||||
} else {
|
||||
if (!pts.Controls.Gear.parkingBrake.getValue()) {
|
||||
if (!notification.parkingBrake) {
|
||||
if (LBrakeLevel>0) {
|
||||
if (V2_L>0) {
|
||||
#LThermalEnergy += (Mass * (math.pow(V1, 2) - math.pow(V2_L, 2)) / 2) + L_thrust;
|
||||
|
@ -212,7 +212,7 @@ var BrakeSystem =
|
|||
|
||||
RThermalEnergy += (Mass * pts.Gear.compression[2].getValue() * (math.pow(V1, 2) - math.pow(V2_R, 2)) / 2);
|
||||
if (pts.Controls.Gear.chocks.getValue()) {
|
||||
if (!pts.Controls.Gear.parkingBrake.getValue()) {
|
||||
if (!notification.parkingBrake) {
|
||||
# cooling effect: reduce thermal energy by (RnCoolFactor) * dt
|
||||
RThermalEnergy = RThermalEnergy * math.exp(RnCoolFactor * dt);
|
||||
} else {
|
||||
|
@ -221,7 +221,7 @@ var BrakeSystem =
|
|||
RThermalEnergy = (RThermalEnergy * math.exp(RnCoolFactor * dt)) + (R_Thrust * dt);
|
||||
};
|
||||
} else {
|
||||
if (!pts.Controls.Gear.parkingBrake.getValue()) {
|
||||
if (!notification.parkingBrake) {
|
||||
if (RBrakeLevel>0) {
|
||||
if (V2_R>0) {
|
||||
#RThermalEnergy += (Mass * (math.pow(V1, 2) - math.pow(V2_R, 2)) / 2) + R_thrust;
|
||||
|
@ -271,7 +271,7 @@ var BrakeSystem =
|
|||
if (LThermalEnergy>1 and !me.LSmokeActive) {
|
||||
# start smoke processing
|
||||
me.LSmokeActive = 1;
|
||||
settimer(func { BrakeSys.Lsmoke(); },0);
|
||||
settimer(func { BrakeSys.Lsmoke(); },0); # is settimer needed?
|
||||
};
|
||||
if (RThermalEnergy>1 and !me.RSmokeActive) {
|
||||
# start smoke processing
|
||||
|
@ -406,7 +406,7 @@ var Autobrake = {
|
|||
me._mode = me.mode.getValue();
|
||||
me._active = me.active.getBoolValue();
|
||||
if (me._gnd_speed > 72) {
|
||||
if (me._mode != 0 and pts.Controls.Engines.Engine.throttle[0].getValue() < 0.15 and pts.Controls.Engines.Engine.throttle[1].getValue() < 0.15 and me._wow0 and systems.HYD.Brakes.askidSw.getValue() and systems.HYD.Psi.green.getValue() >= 2500 ) {
|
||||
if (me._mode != 0 and pts.Controls.Engines.Engine.throttle[0].getValue() < 0.15 and pts.Controls.Engines.Engine.throttle[1].getValue() < 0.15 and me._wow0 and systems.HYD.Switch.nwsSwitch.getBoolValue() and systems.HYD.Psi.green.getValue() >= 2500 ) {
|
||||
me.active.setBoolValue(1);
|
||||
} elsif (me._active) {
|
||||
me.active.setBoolValue(0);
|
||||
|
|
|
@ -13,8 +13,6 @@ var dc2 = 0;
|
|||
|
||||
# Main class
|
||||
var ELEC = {
|
||||
_timer1On: 0,
|
||||
_timer2On: 0,
|
||||
EmerElec: props.globals.getNode("/systems/electrical/some-electric-thingie/emer-elec-config"),
|
||||
Bus: {
|
||||
acEss: props.globals.getNode("/systems/electrical/bus/ac-ess"),
|
||||
|
@ -121,6 +119,7 @@ var ELEC = {
|
|||
volts: props.globals.getNode("/systems/electrical/sources/emer-gen/output-volt"),
|
||||
hertz: props.globals.getNode("/systems/electrical/sources/emer-gen/output-hertz"),
|
||||
voltsRelay: props.globals.getNode("/systems/electrical/relay/emer-glc/output"),
|
||||
relayPos: props.globals.getNode("/systems/electrical/relay/emer-glc/contact-pos"),
|
||||
},
|
||||
Ext: {
|
||||
volts: props.globals.getNode("/systems/electrical/sources/ext/output-volt"),
|
||||
|
@ -206,36 +205,65 @@ var ELEC = {
|
|||
me.Fail.tr1Fault.setBoolValue(0);
|
||||
me.Fail.tr2Fault.setBoolValue(0);
|
||||
},
|
||||
loop: func() {
|
||||
_FMGC1: 0,
|
||||
_FMGC2: 0,
|
||||
_activeFMGC: nil,
|
||||
_timer1On: 0,
|
||||
_timer2On: 0,
|
||||
loop: func(notification) {
|
||||
# Autopilot Disconnection routines
|
||||
if (me.Bus.dcEssShed.getValue() < 25) {
|
||||
if (fmgc.Output.ap1.getValue() and !me._timer1On) {
|
||||
me._activeFMGC = fcu.FCUController.activeFMGC.getValue();
|
||||
me._FMGC1 = fmgc.Output.ap1.getValue();
|
||||
me._FMGC2 = fmgc.Output.ap2.getValue();
|
||||
|
||||
if (notification.dcEssShed < 25) {
|
||||
if (me._FMGC1 and !me._timer1On) { # delay 1 cycle to avoid spurious
|
||||
me._timer1On = 1;
|
||||
settimer(func() {
|
||||
if (me.Bus.dcEssShed.getValue() < 25) {
|
||||
} elsif (me._FMGC1) {
|
||||
if (notification.dcEssShed < 25) {
|
||||
fcu.apOff("hard", 1);
|
||||
if (fcu.FCUController.activeFMGC.getValue() == 1) {
|
||||
if (me._activeFMGC == 1) {
|
||||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
me._timer1On = 0;
|
||||
}, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
if (me.Bus.dc2.getValue() < 25) {
|
||||
if (fmgc.Output.ap2.getValue() and !me._timer2On) {
|
||||
if (notification.dc2 < 25) {
|
||||
if (me._FMGC2 and !me._timer2On) { # delay 1 cycle to avoid spurious
|
||||
me._timer2On = 1;
|
||||
settimer(func() {
|
||||
if (me.Bus.dc2.getValue() < 25) {
|
||||
} elsif (me._FMGC2) {
|
||||
if (notification.dc2 < 25) {
|
||||
fcu.apOff("hard", 2);
|
||||
if (fcu.FCUController.activeFMGC.getValue() == 2) {
|
||||
if (me._activeFMGC == 2) {
|
||||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
me._timer2On = 0;
|
||||
}, 0.1);
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
# Emesary
|
||||
var A320Electrical = notifications.SystemRecipient.new("A320 Electrical",ELEC.loop,ELEC);
|
||||
emesary.GlobalTransmitter.Register(A320Electrical);
|
||||
|
||||
var input = {
|
||||
"elecAC1": "/systems/electrical/bus/ac-1",
|
||||
"elecAC2": "/systems/electrical/bus/ac-2",
|
||||
"elecACEss": "/systems/electrical/bus/ac-ess",
|
||||
"elecACEssShed": "/systems/electrical/bus/ac-ess-shed",
|
||||
"dc1": "/systems/electrical/bus/dc-1",
|
||||
"dc2": "/systems/electrical/bus/dc-2",
|
||||
"dcBat": "/systems/electrical/bus/dc-bat",
|
||||
"dcEss": "/systems/electrical/bus/dc-ess",
|
||||
"dcEssShed": "/systems/electrical/bus/dc-ess-shed",
|
||||
"dcHot1": "/systems/electrical/bus/dc-hot-1",
|
||||
"dcHot2": "/systems/electrical/bus/dc-hot-2",
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 Electrical", name, input[name]));
|
||||
}
|
|
@ -17,6 +17,7 @@ var cargoTestBtnOff = props.globals.initNode("/controls/fire/cargo/test-off", 0,
|
|||
var eng1FireWarn = props.globals.initNode("/systems/fire/engine1/warning-active", 0, "BOOL");
|
||||
var eng2FireWarn = props.globals.initNode("/systems/fire/engine2/warning-active", 0, "BOOL");
|
||||
var apuFireWarn = props.globals.initNode("/systems/fire/apu/warning-active", 0, "BOOL");
|
||||
var lavatoryFireWarn = props.globals.getNode("/systems/fire/lavatory/warning", 1);
|
||||
var eng1Inop = props.globals.initNode("/systems/fire/engine1/det-inop", 0, "BOOL");
|
||||
var eng2Inop = props.globals.initNode("/systems/fire/engine2/det-inop", 0, "BOOL");
|
||||
var apuInop = props.globals.initNode("/systems/fire/apu/det-inop", 0, "BOOL");
|
||||
|
@ -33,13 +34,15 @@ var eng1Agent2TimerTime = props.globals.initNode("/systems/fire/engine1/agent2-t
|
|||
var eng2Agent2TimerTime = props.globals.initNode("/systems/fire/engine2/agent2-timer-time", 0, "INT");
|
||||
var apuAgentTimerTime = props.globals.initNode("/systems/fire/apu/agent-timer-time", 0, "INT");
|
||||
|
||||
var fireButtons = [props.globals.getNode("/controls/engines/engine[0]/fire-btn"),props.globals.getNode("/controls/engines/engine[1]/fire-btn"),props.globals.getNode("/controls/apu/fire-btn")];
|
||||
|
||||
var fire_init = func {
|
||||
setprop("/controls/OH/protectors/fwddisch", 0);
|
||||
setprop("/controls/OH/protectors/aftdisch", 0);
|
||||
setprop("/controls/fire/cargo/fwddisch", 0);
|
||||
setprop("/controls/fire/cargo/aftdisch", 0);
|
||||
setprop("/systems/failures/cargo-fwd-fire", 0);
|
||||
setprop("/systems/failures/cargo-aft-fire", 0);
|
||||
setprop("/systems/failures/fire/cargo-fwd-fire", 0);
|
||||
setprop("/systems/failures/fire/cargo-aft-fire", 0);
|
||||
setprop("/controls/fire/cargo/test", 0);
|
||||
fire_timer.start();
|
||||
}
|
||||
|
@ -276,9 +279,9 @@ var detectorLoop = {
|
|||
}
|
||||
},
|
||||
sendSignal: func(system, typeLoop) {
|
||||
if (system == 0 and !getprop("/systems/failures/engine-left-fire")) { return; }
|
||||
elsif (system == 1 and !getprop("/systems/failures/engine-right-fire")) { return; }
|
||||
elsif (system == 2 and !getprop("/systems/failures/apu-fire")) { return; }
|
||||
if (system == 0 and !getprop("/systems/failures/fire/engine-left-fire")) { return; }
|
||||
elsif (system == 1 and !getprop("/systems/failures/fire/engine-right-fire")) { return; }
|
||||
elsif (system == 2 and !getprop("/systems/failures/fire/apu-fire")) { return; }
|
||||
engFireDetectorUnits.vector[system].receiveSignal(typeLoop);
|
||||
}
|
||||
};
|
||||
|
@ -303,8 +306,8 @@ var cargoDetectorLoop = {
|
|||
}
|
||||
},
|
||||
sendSignal: func(system, typeLoop) {
|
||||
if ((system == 0 or system == 1) and !getprop("/systems/failures/cargo-aft-fire")) { return; }
|
||||
elsif (system == 2 and !getprop("/systems/failures/cargo-fwd-fire")) { return; }
|
||||
if ((system == 0 or system == 1) and !getprop("/systems/failures/fire/cargo-aft-fire")) { return; }
|
||||
elsif (system == 2 and !getprop("/systems/failures/fire/cargo-fwd-fire")) { return; }
|
||||
|
||||
cargoSmokeDetectorUnits.vector[system].receiveSignal(typeLoop);
|
||||
}
|
||||
|
@ -488,29 +491,29 @@ var checkTwoInop2Timer = maketimer(0.1, checkTwoInop2);
|
|||
var checkTwoInop3Timer = maketimer(0.1, checkTwoInop3);
|
||||
|
||||
# Create fire systems
|
||||
var engFireDetectorUnits = std.Vector.new([ engFireDetectorUnit.new(0, "/systems/failures/engine-left-fire", "/controls/fire/test-btn-1"), engFireDetectorUnit.new(1, "/systems/failures/engine-right-fire", "/controls/fire/test-btn-2"), engFireDetectorUnit.new(2, "/systems/failures/apu-fire", "/controls/fire/apu-test-btn") ]);
|
||||
var cargoSmokeDetectorUnits = std.Vector.new([cargoSmokeDetectorUnit.new(0, "/systems/failures/cargo-aft-fire"), cargoSmokeDetectorUnit.new(1, "/systems/failures/cargo-aft-fire"), cargoSmokeDetectorUnit.new(1, "/systems/failures/cargo-fwd-fire")]);
|
||||
var engFireDetectorUnits = std.Vector.new([ engFireDetectorUnit.new(0, "/systems/failures/fire/engine-left-fire", "/controls/fire/test-btn-1"), engFireDetectorUnit.new(1, "/systems/failures/fire/engine-right-fire", "/controls/fire/test-btn-2"), engFireDetectorUnit.new(2, "/systems/failures/fire/apu-fire", "/controls/fire/apu-test-btn") ]);
|
||||
var cargoSmokeDetectorUnits = std.Vector.new([cargoSmokeDetectorUnit.new(0, "/systems/failures/fire/cargo-aft-fire"), cargoSmokeDetectorUnit.new(1, "/systems/failures/fire/cargo-aft-fire"), cargoSmokeDetectorUnit.new(1, "/systems/failures/fire/cargo-fwd-fire")]);
|
||||
|
||||
# Create detector loops
|
||||
var engDetectorLoops = std.Vector.new([
|
||||
detectorLoop.new(0, 1, "/systems/fire/engine1/temperature", "/systems/electrical/bus/dc-ess", "/systems/failures/engine-left-fire"), detectorLoop.new(0, 2, "/systems/fire/engine1/temperature", "/systems/electrical/bus/dc-2", "/systems/failures/engine-left-fire"),
|
||||
detectorLoop.new(1, 1, "/systems/fire/engine2/temperature", "/systems/electrical/bus/dc-2", "/systems/failures/engine-right-fire"), detectorLoop.new(1, 2, "/systems/fire/engine2/temperature", "/systems/electrical/bus/dc-ess", "/systems/failures/engine-right-fire"),
|
||||
detectorLoop.new(2, 1, "/systems/fire/apu/temperature", "/systems/electrical/bus/dc-bat", "/systems/failures/apu-fire"), detectorLoop.new(2, 2, "/systems/fire/apu/temperature", "/systems/electrical/bus/dc-bat", "/systems/failures/apu-fire")
|
||||
detectorLoop.new(0, 1, "/systems/fire/engine1/temperature", "/systems/electrical/bus/dc-ess", "/systems/failures/fire/engine-left-fire"), detectorLoop.new(0, 2, "/systems/fire/engine1/temperature", "/systems/electrical/bus/dc-2", "/systems/failures/fire/engine-left-fire"),
|
||||
detectorLoop.new(1, 1, "/systems/fire/engine2/temperature", "/systems/electrical/bus/dc-2", "/systems/failures/fire/engine-right-fire"), detectorLoop.new(1, 2, "/systems/fire/engine2/temperature", "/systems/electrical/bus/dc-ess", "/systems/failures/fire/engine-right-fire"),
|
||||
detectorLoop.new(2, 1, "/systems/fire/apu/temperature", "/systems/electrical/bus/dc-bat", "/systems/failures/fire/apu-fire"), detectorLoop.new(2, 2, "/systems/fire/apu/temperature", "/systems/electrical/bus/dc-bat", "/systems/failures/fire/apu-fire")
|
||||
]);
|
||||
|
||||
var cargoDetectorLoops = std.Vector.new([
|
||||
cargoDetectorLoop.new(0, 1, "/systems/fire/cargo/aft/temperature", "/systems/failures/cargo-aft-fire"), cargoDetectorLoop.new(0, 2, "/systems/fire/cargo/aft/temperature", "/systems/failures/cargo-aft-fire"),
|
||||
cargoDetectorLoop.new(1, 1, "/systems/fire/cargo/aft/temperature", "/systems/failures/cargo-aft-fire"), cargoDetectorLoop.new(1, 2, "/systems/fire/cargo/aft/temperature", "/systems/failures/cargo-aft-fire"),
|
||||
cargoDetectorLoop.new(2, 1, "/systems/fire/cargo/fwd/temperature", "/systems/failures/cargo-fwd-fire"), cargoDetectorLoop.new(2, 2, "/systems/fire/cargo/fwd/temperature", "/systems/failures/cargo-fwd-fire")
|
||||
cargoDetectorLoop.new(0, 1, "/systems/fire/cargo/aft/temperature", "/systems/failures/fire/cargo-aft-fire"), cargoDetectorLoop.new(0, 2, "/systems/fire/cargo/aft/temperature", "/systems/failures/fire/cargo-aft-fire"),
|
||||
cargoDetectorLoop.new(1, 1, "/systems/fire/cargo/aft/temperature", "/systems/failures/fire/cargo-aft-fire"), cargoDetectorLoop.new(1, 2, "/systems/fire/cargo/aft/temperature", "/systems/failures/fire/cargo-aft-fire"),
|
||||
cargoDetectorLoop.new(2, 1, "/systems/fire/cargo/fwd/temperature", "/systems/failures/fire/cargo-fwd-fire"), cargoDetectorLoop.new(2, 2, "/systems/fire/cargo/fwd/temperature", "/systems/failures/fire/cargo-fwd-fire")
|
||||
]);
|
||||
|
||||
# Create extinguisher bottles
|
||||
var extinguisherBottles = std.Vector.new([extinguisherBottle.new(0, "/systems/fire/engine1/disch1", "/systems/electrical/bus/dc-hot-1", "/systems/failures/engine-left-fire", "/systems/fire/engine1/warning-active"), extinguisherBottle.new(1, "/systems/fire/engine1/disch2", "/systems/electrical/bus/dc-2", "/systems/failures/engine-left-fire", "/systems/fire/engine1/warning-active"),
|
||||
extinguisherBottle.new(0, "/systems/fire/engine2/disch1", "/systems/electrical/bus/dc-hot-2", "/systems/failures/engine-right-fire", "/systems/fire/engine2/warning-active"), extinguisherBottle.new(1, "/systems/fire/engine2/disch2", "/systems/electrical/bus/dc-2", "/systems/failures/engine-right-fire", "/systems/fire/engine2/warning-active"),
|
||||
extinguisherBottle.new(9, "/systems/fire/apu/disch", "/systems/electrical/bus/dc-bat", "/systems/failures/apu-fire", "/systems/fire/apu/warning-active") ]);
|
||||
var extinguisherBottles = std.Vector.new([extinguisherBottle.new(0, "/systems/fire/engine1/disch1", "/systems/electrical/bus/dc-hot-1", "/systems/failures/fire/engine-left-fire", "/systems/fire/engine1/warning-active"), extinguisherBottle.new(1, "/systems/fire/engine1/disch2", "/systems/electrical/bus/dc-2", "/systems/failures/fire/engine-left-fire", "/systems/fire/engine1/warning-active"),
|
||||
extinguisherBottle.new(0, "/systems/fire/engine2/disch1", "/systems/electrical/bus/dc-hot-2", "/systems/failures/fire/engine-right-fire", "/systems/fire/engine2/warning-active"), extinguisherBottle.new(1, "/systems/fire/engine2/disch2", "/systems/electrical/bus/dc-2", "/systems/failures/fire/engine-right-fire", "/systems/fire/engine2/warning-active"),
|
||||
extinguisherBottle.new(9, "/systems/fire/apu/disch", "/systems/electrical/bus/dc-bat", "/systems/failures/fire/apu-fire", "/systems/fire/apu/warning-active") ]);
|
||||
|
||||
# There is only one bottle but the system will think there are two, so other parts work
|
||||
var cargoExtinguisherBottles = std.Vector.new([extinguisherBottle.new(8, "/systems/fire/cargo/disch", "/systems/electrical/bus/dc-bat", "/systems/failures/cargo-aft-fire", "/systems/fire/cargo/aft/warning-active", 250), extinguisherBottle.new(7, "/systems/fire/cargo/disch", "/systems/electrical/bus/dc-bat", "/systems/failures/cargo-fwd-fire", "/systems/fire/cargo/fwd/warning-active", 250)]);
|
||||
var cargoExtinguisherBottles = std.Vector.new([extinguisherBottle.new(8, "/systems/fire/cargo/disch", "/systems/electrical/bus/dc-bat", "/systems/failures/fire/cargo-aft-fire", "/systems/fire/cargo/aft/warning-active", 250), extinguisherBottle.new(7, "/systems/fire/cargo/disch", "/systems/electrical/bus/dc-bat", "/systems/failures/fire/cargo-fwd-fire", "/systems/fire/cargo/fwd/warning-active", 250)]);
|
||||
|
||||
# Create CIDS channels
|
||||
var CIDSchannels = std.Vector.new([CIDSchannel.new("/systems/electrical/bus/dc-ess"), CIDSchannel.new("/systems/electrical/bus/dc-2")]);
|
||||
|
@ -544,7 +547,7 @@ var createCargoFireBottleListener = func(prop, index) {
|
|||
|
||||
# Listeners
|
||||
setlistener("/controls/engines/engine[0]/fire-btn", func() {
|
||||
if (getprop("/controls/engines/engine[0]/fire-btn") == 1) {
|
||||
if (systems.fireButtons[0].getValue() == 1) {
|
||||
ecam.shutUpYou();
|
||||
eng1AgentTimerMakeTimer.stop();
|
||||
eng1AgentTimer.setValue(10);
|
||||
|
@ -587,7 +590,7 @@ eng1Agent2TimerMakeTimerFunc = func() {
|
|||
}
|
||||
|
||||
setlistener("/controls/engines/engine[1]/fire-btn", func() {
|
||||
if (getprop("/controls/engines/engine[1]/fire-btn") == 1) {
|
||||
if (systems.fireButtons[1].getValue() == 1) {
|
||||
ecam.shutUpYou();
|
||||
eng2AgentTimerMakeTimer.stop();
|
||||
eng2AgentTimer.setValue(10);
|
||||
|
@ -652,7 +655,7 @@ apuAgentTimerMakeTimerFunc = func() {
|
|||
}
|
||||
|
||||
setlistener("/controls/fire/test-btn-1", func() {
|
||||
if (getprop("/systems/failures/engine-left-fire")) { return; }
|
||||
if (getprop("/systems/failures/fire/engine-left-fire")) { return; }
|
||||
|
||||
if (testBtn.getValue() == 1) {
|
||||
if (systems.ELEC.Bus.dcBat.getValue() > 25 or systems.ELEC.Bus.dcEss.getValue() > 25) {
|
||||
|
@ -665,7 +668,7 @@ setlistener("/controls/fire/test-btn-1", func() {
|
|||
}, 0, 0);
|
||||
|
||||
setlistener("/controls/fire/test-btn-2", func() {
|
||||
if (getprop("/systems/failures/engine-right-fire")) { return; }
|
||||
if (getprop("/systems/failures/fire/engine-right-fire")) { return; }
|
||||
if (testBtn2.getValue() == 1) {
|
||||
if (systems.ELEC.Bus.dcBat.getValue() > 25 or systems.ELEC.Bus.dcEss.getValue() > 25) {
|
||||
eng2FireWarn.setBoolValue(1);
|
||||
|
@ -677,7 +680,7 @@ setlistener("/controls/fire/test-btn-2", func() {
|
|||
}, 0, 0);
|
||||
|
||||
setlistener("/controls/fire/apu-test-btn", func() {
|
||||
if (getprop("/systems/failures/apu-fire")) { return; }
|
||||
if (getprop("/systems/failures/fire/apu-fire")) { return; }
|
||||
if (apuTestBtn.getValue() == 1) {
|
||||
if (systems.ELEC.Bus.dcBat.getValue() > 25 or systems.ELEC.Bus.dcEss.getValue() > 25) {
|
||||
apuFireWarn.setBoolValue(1);
|
||||
|
@ -689,7 +692,7 @@ setlistener("/controls/fire/apu-test-btn", func() {
|
|||
}, 0, 0);
|
||||
|
||||
setlistener("/controls/fire/cargo/test", func() {
|
||||
if (getprop("/systems/failures/aft-cargo-fire") or getprop("/systems/failures/fwd-cargo-fire") or systems.ELEC.Bus.dcBat.getValue() < 25 or systems.ELEC.Bus.dcEss.getValue() < 25) { return; }
|
||||
if (getprop("/systems/failures/fire/aft-cargo-fire") or getprop("/systems/failures/fire/fwd-cargo-fire") or systems.ELEC.Bus.dcBat.getValue() < 25 or systems.ELEC.Bus.dcEss.getValue() < 25) { return; }
|
||||
if (cargoTestBtn.getBoolValue()) {
|
||||
cargoTestTime.setValue(elapsedTime.getValue());
|
||||
cargoTestChecker.start();
|
||||
|
|
|
@ -10,7 +10,6 @@ var HYD = {
|
|||
accumPressPsi: props.globals.initNode("/systems/hydraulic/yellow-accumulator-psi-cmd", 0, "INT"),
|
||||
leftPressPsi: props.globals.initNode("/systems/hydraulic/brakes/pressure-left-psi", 0, "INT"),
|
||||
rightPressPsi: props.globals.initNode("/systems/hydraulic/brakes/pressure-right-psi", 0, "INT"),
|
||||
askidSw: props.globals.initNode("/systems/hydraulic/brakes/askidnwssw", 1, "BOOL"),
|
||||
mode: props.globals.initNode("/systems/hydraulic/brakes/mode", 0, "INT"),
|
||||
leftbrake: props.globals.getNode("/controls/gear/brake-left"),
|
||||
rightbrake: props.globals.getNode("/controls/gear/brake-right"),
|
||||
|
@ -57,6 +56,7 @@ var HYD = {
|
|||
rat: props.globals.getNode("/controls/hydraulic/switches/rat-man"),
|
||||
yellowEDP: props.globals.getNode("/controls/hydraulic/switches/yellow-edp"),
|
||||
yellowElec: props.globals.getNode("/controls/hydraulic/switches/yellow-elec"),
|
||||
nwsSwitch: props.globals.getNode("/controls/gear/nws-switch"),
|
||||
},
|
||||
Valve: {
|
||||
yellowFire: props.globals.getNode("/systems/hydraulic/sources/yellow-edp/fire-valve"),
|
||||
|
@ -85,97 +85,91 @@ var HYD = {
|
|||
me.Fail.yellowElec.setBoolValue(0);
|
||||
me.Fail.yellowLeak.setBoolValue(0);
|
||||
},
|
||||
loop: func() {
|
||||
if (props.globals.getValue("/controls/gear/nws-switch") == 1) {
|
||||
me.Brakes.askidSw.setBoolValue(1); #true
|
||||
} else {
|
||||
me.Brakes.askidSw.setBoolValue(0); #false
|
||||
}
|
||||
|
||||
loop: func(notification) {
|
||||
# Decrease accumPressPsi when green and yellow hydraulic's aren't pressurized
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or notification.brakesMode == 0) {
|
||||
lcont = lcont + 1;
|
||||
} else {
|
||||
lcont = 0;
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
if (me.Brakes.rightbrake.getValue() > 0 or notification.brakesMode == 0) {
|
||||
rcont = rcont + 1;
|
||||
} else {
|
||||
rcont = 0;
|
||||
}
|
||||
if (me.Psi.yellow.getValue() < me.Brakes.accumPressPsi.getValue() and me.Brakes.accumPressPsi.getValue() > 0) {
|
||||
if (notification.yellow < notification.accumPressPsi and notification.accumPressPsi > 0) {
|
||||
if (lcont == 1) {
|
||||
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - 200);
|
||||
me.Brakes.accumPressPsi.setValue(notification.accumPressPsi - 200);
|
||||
}
|
||||
if (rcont == 1) {
|
||||
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - 200);
|
||||
me.Brakes.accumPressPsi.setValue(notification.accumPressPsi - 200);
|
||||
}
|
||||
if (me.Brakes.accumPressPsi.getValue() < 0) {
|
||||
if (notification.accumPressPsi < 0) {
|
||||
me.Brakes.accumPressPsi.setValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
# Braking Pressure
|
||||
if (me.Brakes.mode.getValue() == 1 or (me.Brakes.mode.getValue() == 2 and me.Psi.green.getValue() >= 2500)) {
|
||||
if (notification.brakesMode == 1 or (notification.brakesMode == 2 and notification.green >= 2500)) {
|
||||
# Normal braking - Green OK
|
||||
if (me.Brakes.leftbrake.getValue() > 0) {
|
||||
me.Brakes.leftPressPsi.setValue(me.Psi.green.getValue() * pts.Fdm.JSBsim.Fcs.brake[0].getValue());
|
||||
if (notification.leftBrake > 0) {
|
||||
me.Brakes.leftPressPsi.setValue(notification.green * notification.leftBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.leftPressPsi.setValue(0);
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0) {
|
||||
me.Brakes.rightPressPsi.setValue(me.Psi.green.getValue() * pts.Fdm.JSBsim.Fcs.brake[1].getValue());
|
||||
if (notification.rightBrake > 0) {
|
||||
me.Brakes.rightPressPsi.setValue(notification.green * notification.rightBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.rightPressPsi.setValue(0);
|
||||
}
|
||||
} else {
|
||||
if ((me.Brakes.mode.getValue() == 2 and me.Psi.green.getValue() < 2500) or me.Brakes.mode.getValue() == 0) {
|
||||
if ((notification.brakesMode == 2 and notification.green < 2500) or notification.brakesMode == 0) {
|
||||
# Alternate Braking (Yellow OK + Antiskid ON + electric OK) - missing condition: BSCU OK-KO
|
||||
if (me.Psi.yellow.getValue() >= 2500 and me.Brakes.askidSw.getValue() and (systems.ELEC.Bus.dc1.getValue() >= 24 or systems.ELEC.Bus.dc2.getValue() >= 24 or systems.ELEC.Bus.dcEss.getValue() >= 24)) {
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(me.Psi.yellow.getValue() * pts.Fdm.JSBsim.Fcs.brake[0].getValue());
|
||||
if (notification.yellow >= 2500 and notification.NWSSwitch and (notification.dc1 >= 24 or notification.dc2 >= 24 or notification.dcEss >= 24)) {
|
||||
if (notification.leftBrake > 0 or notification.brakesMode == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(notification.yellow * notification.leftBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.leftPressPsi.setValue(0);
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(me.Psi.yellow.getValue() * pts.Fdm.JSBsim.Fcs.brake[1].getValue());
|
||||
if (notification.rightBrake > 0 or notification.brakesMode == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(notification.yellow * notification.rightBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.rightPressPsi.setValue(0);
|
||||
}
|
||||
} else {
|
||||
# Alternate Braking (Yellow OK + Antiskid OFF + electric OK) - missing condition: BSCU OK-KO
|
||||
if (me.Psi.yellow.getValue() >= 2500 and !me.Brakes.askidSw.getValue() and (systems.ELEC.Bus.dc1.getValue() >= 24 or systems.ELEC.Bus.dc2.getValue() >= 24 or systems.ELEC.Bus.dcEss.getValue() >= 24)) {
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(1000 * pts.Fdm.JSBsim.Fcs.brake[0].getValue());
|
||||
if (notification.yellow >= 2500 and !notification.NWSSwitch and (notification.dc1 >= 24 or notification.dc2 >= 24 or notification.dcEss >= 24)) {
|
||||
if (notification.leftBrake > 0 or notification.brakesMode == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(1000 * notification.leftBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.leftPressPsi.setValue(0);
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(1000 * pts.Fdm.JSBsim.Fcs.brake[1].getValue());
|
||||
if (notification.rightBrake > 0 or notification.brakesMode == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(1000 * notification.rightBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.rightPressPsi.setValue(0);
|
||||
}
|
||||
} else {
|
||||
# Alternate Braking (Yellow KO or Antiskid KO or electric KO) - missing condition: BSCU OK-KO
|
||||
if (me.Brakes.accumPressPsi.getValue() < 1000 and (me.Psi.yellow.getValue() < 2500 or !me.Brakes.askidSw.getValue() or (systems.ELEC.Bus.dc1.getValue() < 24 and systems.ELEC.Bus.dc2.getValue() < 24 and systems.ELEC.Bus.dcEss.getValue() < 24))) {
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(me.Brakes.accumPressPsi.getValue() * pts.Fdm.JSBsim.Fcs.brake[0].getValue());
|
||||
if (notification.accumPressPsi < 1000 and (notification.yellow < 2500 or !notification.NWSSwitch or (notification.dc1 < 24 and notification.dc2 < 24 and notification.dcEss < 24))) {
|
||||
if (notification.leftBrake > 0 or notification.brakesMode == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(notification.accumPressPsi * notification.leftBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.leftPressPsi.setValue(0);
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(me.Brakes.accumPressPsi.getValue() * pts.Fdm.JSBsim.Fcs.brake[1].getValue());
|
||||
if (notification.rightBrake > 0 or notification.brakesMode == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(notification.accumPressPsi * notification.rightBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.rightPressPsi.setValue(0);
|
||||
}
|
||||
} else {
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(1000 * pts.Fdm.JSBsim.Fcs.brake[0].getValue());
|
||||
if (notification.leftBrake > 0 or notification.brakesMode == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(1000 * notification.leftBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.leftPressPsi.setValue(0);
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(1000 * pts.Fdm.JSBsim.Fcs.brake[1].getValue());
|
||||
if (notification.rightBrake > 0 or notification.brakesMode == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(1000 * notification.rightBrakeFCS);
|
||||
} else {
|
||||
me.Brakes.rightPressPsi.setValue(0);
|
||||
}
|
||||
|
@ -192,3 +186,25 @@ setlistener("/controls/gear/gear-down", func {
|
|||
pts.Controls.Gear.gearDown.setValue(1);
|
||||
}
|
||||
});
|
||||
|
||||
# Emesary
|
||||
var A320Hydraulic = notifications.SystemRecipient.new("A320 Hydraulic",HYD.loop,HYD);
|
||||
emesary.GlobalTransmitter.Register(A320Hydraulic);
|
||||
|
||||
var input = {
|
||||
"blue": "/systems/hydraulic/blue-psi",
|
||||
"green": "/systems/hydraulic/green-psi",
|
||||
"yellow": "/systems/hydraulic/yellow-psi",
|
||||
|
||||
"brakesMode": "/systems/hydraulic/brakes/mode",
|
||||
"accumPressPsi": "/systems/hydraulic/yellow-accumulator-psi-cmd",
|
||||
"leftBrake": "/controls/gear/brake-left",
|
||||
"rightBrake": "/controls/gear/brake-right",
|
||||
"leftBrakeFCS": "/fdm/jsbsim/fcs/left-brake-cmd-norm",
|
||||
"rightBrakeFCS": "/fdm/jsbsim/fcs/right-brake-cmd-norm",
|
||||
"NWSSwitch": "/controls/gear/nws-switch",
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 Hydraulic", name, input[name]));
|
||||
}
|
|
@ -99,6 +99,8 @@ var PNEU = {
|
|||
hotAir: props.globals.getNode("/systems/air-conditioning/valves/hot-air"),
|
||||
starter1: props.globals.getNode("/systems/pneumatics/valves/starter-valve-1"),
|
||||
starter2: props.globals.getNode("/systems/pneumatics/valves/starter-valve-2"),
|
||||
wingLeft: props.globals.getNode("/systems/pneumatics/valves/wing-ice-1"),
|
||||
wingRight: props.globals.getNode("/systems/pneumatics/valves/wing-ice-2"),
|
||||
},
|
||||
pressMode: props.globals.getNode("/systems/pressurization/mode", 1),
|
||||
init: func() {
|
||||
|
@ -159,9 +161,9 @@ var PNEU = {
|
|||
me.Fail.trimValveFwd.setBoolValue(0);
|
||||
me.Fail.xbleed.setBoolValue(0);
|
||||
},
|
||||
loop: func() {
|
||||
wowl = getprop("gear/gear[1]/wow");
|
||||
wowr = getprop("gear/gear[2]/wow");
|
||||
loop: func(notification) {
|
||||
wowl = notification.gear1Wow;
|
||||
wowr = notification.gear2Wow;
|
||||
|
||||
# Legacy pressurization
|
||||
cabinalt = getprop("/systems/pressurization/cabinalt");
|
||||
|
|
|
@ -101,3 +101,27 @@ var frameNotification = FrameNotification.new(1);
|
|||
# 5 = ECAM
|
||||
# 7 = FWC phases
|
||||
# 10 = ECAM messages
|
||||
|
||||
|
||||
var SystemRecipient =
|
||||
{
|
||||
new: func(_ident,loopFunc, instance)
|
||||
{
|
||||
var NewSystemRecipient = emesary.Recipient.new(_ident);
|
||||
NewSystemRecipient.Receive = func(notification)
|
||||
{
|
||||
if (notification.NotificationType == "FrameNotification")
|
||||
{
|
||||
if (math.mod(notifications.frameNotification.FrameCount,5) == 0) {
|
||||
call(loopFunc,[notification],instance, nil, var errors = []);
|
||||
if (size(errors) > 0) {
|
||||
debug.printerror(errors);
|
||||
}
|
||||
}
|
||||
return emesary.Transmitter.ReceiptStatus_OK;
|
||||
}
|
||||
return emesary.Transmitter.ReceiptStatus_NotProcessed;
|
||||
};
|
||||
return NewSystemRecipient;
|
||||
},
|
||||
};
|
|
@ -42,13 +42,14 @@ input = {
|
|||
frame_rate: "/sim/frame-rate",
|
||||
elapsedTime: "/sim/time/elapsed-sec",
|
||||
FWCPhase: "/ECAM/warning-phase",
|
||||
gear0Wow: "/gear/gear[0]/wow",
|
||||
|
||||
# Just about everything uses these properties at some stage, lets add them here!
|
||||
elecAC1: "/systems/electrical/bus/ac-1",
|
||||
elecAC2: "/systems/electrical/bus/ac-2",
|
||||
elecACEss: "/systems/electrical/bus/ac-ess",
|
||||
elecACEssShed: "/systems/electrical/bus/ac-ess-shed",
|
||||
gear0Wow: "/gear/gear[0]/wow",
|
||||
gear1Wow: "/gear/gear[1]/wow",
|
||||
gear2Wow: "/gear/gear[2]/wow",
|
||||
parkingBrake: "/controls/gear/brake-parking",
|
||||
airspeedV: "/velocities/airspeed-kt",
|
||||
groundspeed: "/velocities/groundspeed-kt",
|
||||
engine1State: "/engines/engine[0]/state",
|
||||
engine2State: "/engines/engine[1]/state",
|
||||
};
|
||||
|
|
|
@ -2153,14 +2153,26 @@
|
|||
<condition>
|
||||
<and>
|
||||
<or>
|
||||
<and>
|
||||
<greater-than>
|
||||
<property>/fdm/jsbsim/fcs/left-brake-cmd-norm</property>
|
||||
<value>0.95</value>
|
||||
</greater-than>
|
||||
<equals>
|
||||
<property>/gear/gear[1]/wow</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
<and>
|
||||
<greater-than>
|
||||
<property>/fdm/jsbsim/fcs/right-brake-cmd-norm</property>
|
||||
<value>0.95</value>
|
||||
</greater-than>
|
||||
<equals>
|
||||
<property>/gear/gear[2]/wow</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</and>
|
||||
</or>
|
||||
<greater-than>
|
||||
<property>/velocities/groundspeed-kt</property>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -18,8 +18,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -39,8 +39,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -60,8 +60,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -81,8 +81,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -103,8 +103,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -125,8 +125,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -147,8 +147,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -169,8 +169,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -191,8 +191,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -213,8 +213,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -235,8 +235,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -257,8 +257,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -279,8 +279,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -301,8 +301,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -323,8 +323,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -345,8 +345,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -367,8 +367,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -389,8 +389,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -411,8 +411,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -433,8 +433,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -471,8 +471,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -501,8 +501,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -531,8 +531,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -561,8 +561,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -591,8 +591,8 @@
|
|||
</orientation>
|
||||
<reference-dist>60</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -621,8 +621,8 @@
|
|||
</orientation>
|
||||
<reference-dist>60</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -655,8 +655,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -689,8 +689,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -723,8 +723,8 @@
|
|||
</orientation>
|
||||
<reference-dist>60</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -757,8 +757,8 @@
|
|||
</orientation>
|
||||
<reference-dist>60</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -791,8 +791,8 @@
|
|||
</orientation>
|
||||
<reference-dist>500</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -825,8 +825,8 @@
|
|||
</orientation>
|
||||
<reference-dist>500</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -859,8 +859,8 @@
|
|||
</orientation>
|
||||
<reference-dist>300</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -893,8 +893,8 @@
|
|||
</orientation>
|
||||
<reference-dist>300</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -927,8 +927,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -961,8 +961,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -986,7 +986,7 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<orientation>
|
||||
<x>0</x>
|
||||
<x>-5</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
<inner-angle>195</inner-angle>
|
||||
|
@ -995,8 +995,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1020,7 +1020,7 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<orientation>
|
||||
<x>0</x>
|
||||
<x>-5</x>
|
||||
<y>-1</y>
|
||||
<z>0</z>
|
||||
<inner-angle>15</inner-angle>
|
||||
|
@ -1029,8 +1029,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1063,8 +1063,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1097,8 +1097,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1131,8 +1131,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1165,8 +1165,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1199,8 +1199,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1233,8 +1233,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1264,8 +1264,8 @@
|
|||
</orientation>
|
||||
<reference-dist>1000</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1295,8 +1295,8 @@
|
|||
</orientation>
|
||||
<reference-dist>1000</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1329,8 +1329,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1363,8 +1363,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1397,8 +1397,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1431,8 +1431,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1456,7 +1456,7 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<orientation>
|
||||
<x>0</x>
|
||||
<x>-5</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
<inner-angle>100</inner-angle>
|
||||
|
@ -1465,8 +1465,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1490,7 +1490,7 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<orientation>
|
||||
<x>0</x>
|
||||
<x>-5</x>
|
||||
<y>-1</y>
|
||||
<z>0</z>
|
||||
<inner-angle>280</inner-angle>
|
||||
|
@ -1499,8 +1499,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1533,8 +1533,8 @@
|
|||
</orientation>
|
||||
<reference-dist>500</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1567,8 +1567,8 @@
|
|||
</orientation>
|
||||
<reference-dist>500</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1598,8 +1598,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1623,8 +1623,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1648,8 +1648,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1673,8 +1673,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1698,8 +1698,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1723,8 +1723,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1748,8 +1748,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1773,8 +1773,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1798,8 +1798,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1823,8 +1823,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1848,8 +1848,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1873,8 +1873,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1898,8 +1898,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1923,8 +1923,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1948,8 +1948,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1973,8 +1973,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1998,8 +1998,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2023,8 +2023,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2059,8 +2059,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2084,8 +2084,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2109,8 +2109,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2134,8 +2134,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2159,8 +2159,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2184,8 +2184,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2209,8 +2209,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2234,8 +2234,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2259,8 +2259,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2284,8 +2284,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2309,8 +2309,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2334,8 +2334,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2359,8 +2359,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2384,8 +2384,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2409,8 +2409,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -2434,8 +2434,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -39,8 +39,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -60,8 +60,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -81,8 +81,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -102,8 +102,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -123,8 +123,8 @@
|
|||
<factor>1</factor>
|
||||
</volume>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -145,8 +145,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -167,8 +167,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -189,8 +189,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -211,8 +211,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -233,8 +233,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -255,8 +255,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -277,8 +277,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -299,8 +299,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -321,8 +321,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -343,8 +343,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -374,8 +374,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -404,8 +404,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -434,8 +434,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -464,8 +464,8 @@
|
|||
</orientation>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -486,8 +486,8 @@
|
|||
</volume>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -508,8 +508,8 @@
|
|||
</volume>
|
||||
<reference-dist>30</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -538,8 +538,8 @@
|
|||
</orientation>
|
||||
<reference-dist>60</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -568,8 +568,8 @@
|
|||
</orientation>
|
||||
<reference-dist>60</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -602,8 +602,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -636,8 +636,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -670,8 +670,8 @@
|
|||
</orientation>
|
||||
<reference-dist>60</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -704,8 +704,8 @@
|
|||
</orientation>
|
||||
<reference-dist>60</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -738,8 +738,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -772,8 +772,8 @@
|
|||
</orientation>
|
||||
<reference-dist>90</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -806,8 +806,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -840,8 +840,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -874,8 +874,8 @@
|
|||
</orientation>
|
||||
<reference-dist>150</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -908,8 +908,8 @@
|
|||
</orientation>
|
||||
<reference-dist>150</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -942,8 +942,8 @@
|
|||
</orientation>
|
||||
<reference-dist>150</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -976,8 +976,8 @@
|
|||
</orientation>
|
||||
<reference-dist>150</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1007,8 +1007,8 @@
|
|||
</orientation>
|
||||
<reference-dist>1500</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1038,8 +1038,8 @@
|
|||
</orientation>
|
||||
<reference-dist>1500</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1072,8 +1072,8 @@
|
|||
</orientation>
|
||||
<reference-dist>200</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1106,8 +1106,8 @@
|
|||
</orientation>
|
||||
<reference-dist>200</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1140,8 +1140,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1174,8 +1174,8 @@
|
|||
</orientation>
|
||||
<reference-dist>120</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1199,7 +1199,7 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<orientation>
|
||||
<x>0</x>
|
||||
<x>-5</x>
|
||||
<y>1</y>
|
||||
<z>0</z>
|
||||
<inner-angle>95</inner-angle>
|
||||
|
@ -1208,8 +1208,8 @@
|
|||
</orientation>
|
||||
<reference-dist>110</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1233,7 +1233,7 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<orientation>
|
||||
<x>0</x>
|
||||
<x>-5</x>
|
||||
<y>-1</y>
|
||||
<z>0</z>
|
||||
<inner-angle>275</inner-angle>
|
||||
|
@ -1242,8 +1242,8 @@
|
|||
</orientation>
|
||||
<reference-dist>110</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1276,8 +1276,8 @@
|
|||
</orientation>
|
||||
<reference-dist>500</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1310,8 +1310,8 @@
|
|||
</orientation>
|
||||
<reference-dist>500</reference-dist>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1338,8 +1338,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1363,8 +1363,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1388,8 +1388,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1413,8 +1413,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1438,8 +1438,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1463,8 +1463,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1488,8 +1488,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1513,8 +1513,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1538,8 +1538,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1563,8 +1563,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1588,8 +1588,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1613,8 +1613,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1649,8 +1649,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1674,8 +1674,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1699,8 +1699,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1724,8 +1724,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1749,8 +1749,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1774,8 +1774,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1799,8 +1799,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1824,8 +1824,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1849,8 +1849,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1874,8 +1874,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1899,8 +1899,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>20</y>
|
||||
<x>-5</x>
|
||||
<y>5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
@ -1924,8 +1924,8 @@
|
|||
<offset>0</offset>
|
||||
</pitch>
|
||||
<position>
|
||||
<x>0</x>
|
||||
<y>-20</y>
|
||||
<x>-5</x>
|
||||
<y>-5.5</y>
|
||||
<z>0</z>
|
||||
</position>
|
||||
</engine>
|
||||
|
|
|
@ -914,7 +914,7 @@
|
|||
</clipto>
|
||||
</pure_gain>
|
||||
|
||||
<pure_gain name="/instrumentation/radar-altimeter[1]/radar-altitude-ft">
|
||||
<pure_gain name="/instrumentation/radar-altimeter[1]/radar-altitude-ft-corrected">
|
||||
<input>/instrumentation/radar-altimeter[1]/radar-altitude-ft</input>
|
||||
<gain>1</gain>
|
||||
<clipto>
|
||||
|
|
|
@ -152,7 +152,7 @@
|
|||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<toradians><property>hydraulics/elevator-l/final-deg</property></toradians>
|
||||
<value>0.0936445</value>
|
||||
<value>0.0233096</value>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
|
@ -162,7 +162,7 @@
|
|||
<property>aero/qbar-psf</property>
|
||||
<property>metrics/Sw-sqft</property>
|
||||
<toradians><property>hydraulics/elevator-r/final-deg</property></toradians>
|
||||
<value>0.0936445</value>
|
||||
<value>0.0233096</value>
|
||||
</product>
|
||||
</function>
|
||||
|
||||
|
@ -306,9 +306,7 @@
|
|||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<tableData>
|
||||
0.00 0.000
|
||||
0.20 0.000
|
||||
0.82 0.002
|
||||
0.82 0.000
|
||||
1.10 0.016
|
||||
1.80 0.012
|
||||
</tableData>
|
||||
|
|
223
Systems/a320-cfm56-5b4-engine-fadec.xml
Normal file
223
Systems/a320-cfm56-5b4-engine-fadec.xml
Normal file
|
@ -0,0 +1,223 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- Airbus A320 CFM56-5B4 Engine -->
|
||||
<!-- Copyright (c) 2021 Josh Davidson (Octal450) -->
|
||||
|
||||
<system name="A320: CFM56 Engine">
|
||||
|
||||
<property value="45">fadec/limit/rated-temp</property>
|
||||
<property value="30">fadec/limit/flex-rated-temp</property>
|
||||
<property value="27000">fadec/limit/rated-thrust</property>
|
||||
|
||||
<channel name="Thrust Limits">
|
||||
|
||||
<fcs_function name="fadec/limit/rated-thrust-n1"> <!-- Vs 98.7, 104.8 (-15 bias + 1), 103.2 -->
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">/position/altitude-ft</independentVar>
|
||||
<independentVar lookup="column">propulsion/tat-c</independentVar>
|
||||
<tableData>
|
||||
-45 -15 15 45 75
|
||||
0 79.5 84.6 89.2 93.8 98.3
|
||||
10000 90.1 94.8 99.1 100.6 99.3
|
||||
43000 88.7 89.1 94.2 99.3 104.3
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="fadec/limit/milthrust-unmodified"> <!-- Copy of MilThrust table in engines file -->
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">velocities/mach</independentVar>
|
||||
<independentVar lookup="column">atmosphere/density-altitude</independentVar>
|
||||
<tableData>
|
||||
-10000 0 10000 20000 30000 40000 50000
|
||||
0.0 1.2600 1.0000 0.7400 0.5640 0.3920 0.2710 0.0000
|
||||
0.2 1.1710 0.9740 0.6970 0.5360 0.3850 0.2610 0.0000
|
||||
0.4 1.1500 0.9570 0.6920 0.5460 0.3870 0.2530 0.0000
|
||||
0.6 1.1810 0.9410 0.7210 0.5660 0.3580 0.2180 0.0000
|
||||
0.8 1.2290 1.0200 0.7820 0.5570 0.3040 0.1930 0.0000
|
||||
0.9 1.2580 1.0200 0.7820 0.5220 0.2710 0.1140 0.0000
|
||||
1.0 1.1810 0.9510 0.7210 0.4410 0.1740 0.0450 0.0000
|
||||
1.2 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
1.4 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<!-- Following functions fix a FGTurbine inaccuracy... rated thrust N1% should be rated thrust lbs -->
|
||||
<!-- These calculations change it so that the rated power at sea level is at the correct N1% value. It still changes with altitude and mach as it should -->
|
||||
<fcs_function name="fadec/limit/fgturbine-thrust-lbs">
|
||||
<function>
|
||||
<sum>
|
||||
<product>
|
||||
<property>propulsion/engine/IdleThrust</property>
|
||||
<property>fadec/limit/rated-thrust</property>
|
||||
</product>
|
||||
<product>
|
||||
<difference>
|
||||
<property>fadec/limit/rated-thrust</property>
|
||||
<product>
|
||||
<property>propulsion/engine[0]/IdleThrust</property> <!-- It doesn't matter which engine, its same for all -->
|
||||
<property>fadec/limit/rated-thrust</property>
|
||||
</product>
|
||||
</difference>
|
||||
<property>fadec/limit/milthrust-unmodified</property>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="fadec/limit/rated-thrust-lbs">
|
||||
<function>
|
||||
<sum>
|
||||
<product>
|
||||
<property>propulsion/engine[0]/IdleThrust</property> <!-- It doesn't matter which engine, its same for all -->
|
||||
<property>fadec/limit/rated-thrust</property>
|
||||
</product>
|
||||
<product>
|
||||
<product>
|
||||
<difference>
|
||||
<property>fadec/limit/rated-thrust</property>
|
||||
<product>
|
||||
<property>propulsion/engine[0]/IdleThrust</property> <!-- It doesn't matter which engine, its same for all -->
|
||||
<property>fadec/limit/rated-thrust</property>
|
||||
</product>
|
||||
</difference>
|
||||
<property>fadec/limit/milthrust-unmodified</property>
|
||||
</product>
|
||||
<quotient>
|
||||
<difference>
|
||||
<property>fadec/limit/rated-thrust-n1</property>
|
||||
<value>18.9</value>
|
||||
</difference>
|
||||
<value>85.1</value>
|
||||
</quotient>
|
||||
<quotient>
|
||||
<difference>
|
||||
<property>fadec/limit/rated-thrust-n1</property>
|
||||
<value>18.9</value>
|
||||
</difference>
|
||||
<value>85.1</value>
|
||||
</quotient>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="fadec/limit/rated-thrust-factor"> <!-- Normalize -->
|
||||
<function>
|
||||
<ifthen>
|
||||
<eq>
|
||||
<property>/systems/acconfig/autoconfig-running</property>
|
||||
<value>1</value>
|
||||
</eq>
|
||||
<value>0</value>
|
||||
<ifthen>
|
||||
<nq> <!-- Prevent divide by 0 -->
|
||||
<property>fadec/limit/rated-thrust-lbs</property>
|
||||
<value>0</value>
|
||||
</nq>
|
||||
<quotient>
|
||||
<property>fadec/limit/fgturbine-thrust-lbs</property>
|
||||
<property>fadec/limit/rated-thrust-lbs</property>
|
||||
</quotient>
|
||||
<value>1</value>
|
||||
</ifthen>
|
||||
</ifthen>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="fadec/limit/toga-ref"> <!-- Vs 98.7, 104.8 (-15 bias + 1), 103.2 -->
|
||||
<function>
|
||||
<table> <!-- TODO: Figure out how to integrate FCOM table with this one -->
|
||||
<independentVar lookup="row">/position/altitude-ft</independentVar>
|
||||
<independentVar lookup="column">propulsion/tat-c</independentVar>
|
||||
<tableData>
|
||||
-45 -15 15 45 75
|
||||
0 79.5 84.6 89.2 93.8 89.1
|
||||
10000 90.1 94.8 99.1 100.6 96.2
|
||||
43000 88.7 89.1 94.2 99.3 97.2
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="fadec/limit/toga">
|
||||
<function>
|
||||
<quotient>
|
||||
<integer>
|
||||
<sum>
|
||||
<product>
|
||||
<property>fadec/limit/toga-ref</property>
|
||||
<value>10</value>
|
||||
</product>
|
||||
<value>0.5</value> <!-- Make it round correctly -->
|
||||
</sum>
|
||||
</integer>
|
||||
<value>10</value>
|
||||
</quotient>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<summer name="fadec/limit/flex-temp-input"> <!-- (Rated - Flex) + TAT -->
|
||||
<input>fadec/limit/flex-rated-temp</input> <!-- Fix the calculations -->
|
||||
<input>-/FMGC/internal/flex</input>
|
||||
<input>propulsion/tat-c</input>
|
||||
</summer>
|
||||
|
||||
<fcs_function name="fadec/limit/flex-ref">
|
||||
<function>
|
||||
<min> <!-- FLEX can not increase thrust past TOGA -->
|
||||
<property>fadec/limit/toga-ref</property>
|
||||
<table> <!-- TODO: Figure out how to integrate FCOM table with this one -->
|
||||
<independentVar lookup="row">/position/altitude-ft</independentVar>
|
||||
<independentVar lookup="column">fadec/limit/flex-temp-input</independentVar>
|
||||
<tableData>
|
||||
-45 -15 15 45 75
|
||||
0 79.5 84.6 89.2 93.8 89.1
|
||||
10000 90.1 94.8 99.1 100.6 96.2
|
||||
43000 88.7 89.1 94.2 99.3 97.2
|
||||
</tableData>
|
||||
</table>
|
||||
</min>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="fadec/limit/flex">
|
||||
<function>
|
||||
<quotient>
|
||||
<integer>
|
||||
<sum>
|
||||
<product>
|
||||
<property>fadec/limit/flex-ref</property>
|
||||
<value>10</value>
|
||||
</product>
|
||||
<value>0.5</value> <!-- Make it round correctly -->
|
||||
</sum>
|
||||
</integer>
|
||||
<value>10</value>
|
||||
</quotient>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<!--
|
||||
TODO: need to figure out how to make MCT work, 24370lbs
|
||||
<switch name="fadec/limit/mct-final-ref">
|
||||
<default value="fadec/limit/mct-ref"/>
|
||||
<test value="fadec/limit/flex-ref">
|
||||
fadec/limit/flex-active eq 1
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<fcs_function name="fadec/limit/mct-ref">
|
||||
<function>
|
||||
</function>
|
||||
</fcs_function>
|
||||
-->
|
||||
|
||||
</channel>
|
||||
|
||||
</system>
|
|
@ -1848,6 +1848,7 @@
|
|||
<test logic="AND" value="1">
|
||||
/systems/electrical/some-electric-thingie/emer-elec-config eq 1
|
||||
/systems/electrical/some-electric-thingie/generator-1-pb eq 1
|
||||
/controls/electrical/switches/gen-1 eq 1
|
||||
/controls/electrical/switches/bus-tie eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
@ -1857,6 +1858,7 @@
|
|||
<test logic="AND" value="1">
|
||||
/systems/electrical/some-electric-thingie/emer-elec-config eq 1
|
||||
/systems/electrical/some-electric-thingie/generator-2-pb eq 1
|
||||
/controls/electrical/switches/gen-2 eq 1
|
||||
/controls/electrical/switches/bus-tie eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
@ -1866,6 +1868,7 @@
|
|||
<test logic="AND" value="1">
|
||||
/systems/electrical/some-electric-thingie/emer-elec-config eq 1
|
||||
/systems/electrical/some-electric-thingie/generator-1-pb eq 1
|
||||
/controls/electrical/switches/gen-1 eq 1
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
|
@ -1874,6 +1877,7 @@
|
|||
<test logic="AND" value="1">
|
||||
/systems/electrical/some-electric-thingie/emer-elec-config eq 1
|
||||
/systems/electrical/some-electric-thingie/generator-2-pb eq 1
|
||||
/controls/electrical/switches/gen-2 eq 1
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
|
|
|
@ -5,13 +5,13 @@
|
|||
<system name="A320: Engine Fire">
|
||||
|
||||
<channel name="Engine Fire" execrate="8">
|
||||
<fcs_function name="enginefire1">
|
||||
<fcs_function name="rubbish/enginefire1">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/fire/engine1/temperature</property>
|
||||
<product>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/failures/engine-left-fire</independentVar>
|
||||
<independentVar lookup="row">/systems/failures/fire/engine-left-fire</independentVar>
|
||||
<tableData>
|
||||
0 -5
|
||||
1 30
|
||||
|
@ -28,13 +28,13 @@
|
|||
<output>/systems/fire/engine1/temperature</output>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="enginefire2">
|
||||
<fcs_function name="rubbish/enginefire2">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/fire/engine2/temperature</property>
|
||||
<product>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/failures/engine-right-fire</independentVar>
|
||||
<independentVar lookup="row">/systems/failures/fire/engine-right-fire</independentVar>
|
||||
<tableData>
|
||||
0 -5
|
||||
1 30
|
||||
|
@ -51,13 +51,13 @@
|
|||
<output>/systems/fire/engine2/temperature</output>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="apufire">
|
||||
<fcs_function name="rubbish/apufire">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/fire/apu/temperature</property>
|
||||
<product>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/failures/apu-fire</independentVar>
|
||||
<independentVar lookup="row">/systems/failures/fire/apu-fire</independentVar>
|
||||
<tableData>
|
||||
0 -5
|
||||
1 45
|
||||
|
@ -76,13 +76,13 @@
|
|||
</channel>
|
||||
|
||||
<channel name="Cargo Fire" execrate="8">
|
||||
<fcs_function name="fwdfire">
|
||||
<fcs_function name="rubbish/fwdfire">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/fire/cargo/fwd/temperature</property>
|
||||
<product>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/failures/cargo-fwd-fire</independentVar>
|
||||
<independentVar lookup="row">/systems/failures/fire/cargo-fwd-fire</independentVar>
|
||||
<tableData>
|
||||
0 -5
|
||||
1 30
|
||||
|
@ -99,13 +99,13 @@
|
|||
<output>/systems/fire/cargo/fwd/temperature</output>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="aftfire">
|
||||
<fcs_function name="rubbish/aftfire">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/fire/cargo/aft/temperature</property>
|
||||
<product>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/failures/cargo-aft-fire</independentVar>
|
||||
<independentVar lookup="row">/systems/failures/fire/cargo-aft-fire</independentVar>
|
||||
<tableData>
|
||||
0 -5
|
||||
1 45
|
||||
|
@ -121,5 +121,35 @@
|
|||
</clipto>
|
||||
<output>/systems/fire/cargo/aft/temperature</output>
|
||||
</fcs_function>
|
||||
|
||||
<fcs_function name="rubbish/lavatory">
|
||||
<function>
|
||||
<sum>
|
||||
<property>/systems/fire/lavatory/temperature</property>
|
||||
<product>
|
||||
<table>
|
||||
<independentVar lookup="row">/systems/failures/fire/lavatory-fire</independentVar>
|
||||
<tableData>
|
||||
0 -5
|
||||
1 45
|
||||
</tableData>
|
||||
</table>
|
||||
<property>simulation/channel-dt</property>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
<clipto>
|
||||
<min>0</min>
|
||||
<max>300</max>
|
||||
</clipto>
|
||||
<output>/systems/fire/lavatory/temperature</output>
|
||||
</fcs_function>
|
||||
|
||||
<switch name="/systems/fire/lavatory/warning">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/fire/lavatory/temperature ge 295
|
||||
</test>
|
||||
</switch>
|
||||
</channel>
|
||||
</system>
|
||||
|
|
|
@ -979,8 +979,13 @@
|
|||
</table>
|
||||
</scheduled_gain>
|
||||
|
||||
<lag_filter name="fbw/tiller-handle">
|
||||
<actuator name="fbw/tiller-handle-cmd">
|
||||
<input>fbw/tiller-handle-scheduled</input>
|
||||
<rate_limit>0.16</rate_limit> <!-- 12/75 -->
|
||||
</actuator>
|
||||
|
||||
<lag_filter name="fbw/tiller-handle">
|
||||
<input>fbw/tiller-handle-cmd</input>
|
||||
<c1>20</c1>
|
||||
</lag_filter>
|
||||
|
||||
|
|
|
@ -633,9 +633,9 @@
|
|||
/systems/fuel/quantity/center-low eq 1
|
||||
/systems/fuel/feed-center-2 eq 0
|
||||
</test>
|
||||
/systems/fuel/feed-left-inner eq 0
|
||||
/systems/fuel/feed-right-inner eq 1
|
||||
/systems/fuel/valves/crossfeed-valve eq 1
|
||||
/consumables/fuel/tank[1]/level-gal_us le /consumables/fuel/tank[3]/unusable-gal_us
|
||||
/consumables/fuel/tank[3]/level-gal_us gt /consumables/fuel/tank[3]/unusable-gal_us
|
||||
propulsion/tank[5]/contents-lbs lt 9
|
||||
</test>
|
||||
|
@ -649,9 +649,9 @@
|
|||
/systems/fuel/feed-center-1 eq 0
|
||||
</test>
|
||||
/systems/fuel/feed-left-inner eq 1
|
||||
/systems/fuel/feed-right-inner eq 0
|
||||
/systems/fuel/valves/crossfeed-valve eq 1
|
||||
/consumables/fuel/tank[1]/level-gal_us gt /consumables/fuel/tank[1]/unusable-gal_us
|
||||
/consumables/fuel/tank[3]/level-gal_us le /consumables/fuel/tank[3]/unusable-gal_us
|
||||
propulsion/tank[6]/contents-lbs lt 9
|
||||
</test>
|
||||
</switch>
|
||||
|
|
|
@ -229,6 +229,14 @@
|
|||
</test>
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/ECAM/phases/monostable/phase-8">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/ECAM/warning-phase eq 8
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
</channel>
|
||||
|
||||
</system>
|
||||
|
|
1394
Systems/a320-fwc.xml
1394
Systems/a320-fwc.xml
File diff suppressed because it is too large
Load diff
|
@ -72,7 +72,6 @@
|
|||
<rolling_friction>0.02</rolling_friction>
|
||||
<spring_coeff unit="LBS/FT">59785</spring_coeff>
|
||||
<damping_coeff unit="LBS/FT/SEC">23957</damping_coeff>
|
||||
<damping_coeff_rebound unit="LBS/FT/SEC">25</damping_coeff_rebound>
|
||||
<max_steer unit="DEG">0</max_steer>
|
||||
<table name="CORNERING_COEFF" type="internal">
|
||||
<tableData> <!-- jsbsim-pacejka.py 3.0 0.06 2.8 0.4 1.03 0.4 -->
|
||||
|
@ -129,7 +128,6 @@
|
|||
<rolling_friction>0.02</rolling_friction>
|
||||
<spring_coeff unit="LBS/FT">59785</spring_coeff>
|
||||
<damping_coeff unit="LBS/FT/SEC">23957</damping_coeff>
|
||||
<damping_coeff_rebound unit="LBS/FT/SEC">25</damping_coeff_rebound>
|
||||
<max_steer unit="DEG">0</max_steer>
|
||||
<table name="CORNERING_COEFF" type="internal">
|
||||
<tableData> <!-- jsbsim-pacejka.py 3.0 0.06 2.8 0.4 1.03 0.4 -->
|
||||
|
|
|
@ -589,12 +589,12 @@
|
|||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/controls/gear/brake-parking ne 1
|
||||
/systems/hydraulic/brakes/askidnwssw eq 1
|
||||
/controls/gear/nws-switch eq 1
|
||||
/systems/hydraulic/green-psi ge 2500
|
||||
</test>
|
||||
<test logic="AND" value="2">
|
||||
/controls/gear/brake-parking ne 1
|
||||
/systems/hydraulic/brakes/askidnwssw eq 1
|
||||
/controls/gear/nws-switch eq 1
|
||||
/systems/hydraulic/yellow-psi ge 2500
|
||||
</test>
|
||||
<test logic="AND" value="2">
|
||||
|
@ -671,34 +671,34 @@
|
|||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/hydraulics/warnings/blue-lo-pr">
|
||||
<switch name="/systems/hydraulic/warnings/blue-lo-pr">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
<test logic="AND">
|
||||
/systems/hydraulic/blue-psi lt 1750
|
||||
/systems/hydraulics/warnings/blue-lo-pr eq 1
|
||||
/systems/hydraulic/warnings/blue-lo-pr eq 1
|
||||
</test>
|
||||
/systems/hydraulic/blue-psi lt 1450
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/hydraulics/warnings/green-lo-pr">
|
||||
<switch name="/systems/hydraulic/warnings/green-lo-pr">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
<test logic="AND">
|
||||
/systems/hydraulic/green-psi lt 1750
|
||||
/systems/hydraulics/warnings/green-lo-pr eq 1
|
||||
/systems/hydraulic/warnings/green-lo-pr eq 1
|
||||
</test>
|
||||
/systems/hydraulic/green-psi lt 1450
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/hydraulics/warnings/yellow-lo-pr">
|
||||
<switch name="/systems/hydraulic/warnings/yellow-lo-pr">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
<test logic="AND">
|
||||
/systems/hydraulic/yellow-psi lt 1750
|
||||
/systems/hydraulics/warnings/yellow-lo-pr eq 1
|
||||
/systems/hydraulic/warnings/yellow-lo-pr eq 1
|
||||
</test>
|
||||
/systems/hydraulic/yellow-psi lt 1450
|
||||
</test>
|
||||
|
|
|
@ -1183,28 +1183,47 @@
|
|||
<rate_limit sense="decr">120</rate_limit>
|
||||
</actuator>
|
||||
|
||||
<switch name="/systems/pneumatics/warnings/crossbleed-disag-open">
|
||||
<switch name="/systems/pneumatics/warnings/crossbleed-disag-open-man">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/systems/pneumatics/valves/crossbleed-valve-cmd eq 1
|
||||
/systems/pneumatics/valves/crossbleed-valve ne 1
|
||||
/controls/pneumatics/switches/x-bleed eq 2
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/pneumatics/warnings/crossbleed-disag-open-auto">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/systems/pneumatics/valves/crossbleed-valve-cmd eq 1
|
||||
/systems/pneumatics/valves/crossbleed-valve ne 1
|
||||
/controls/pneumatics/switches/x-bleed eq 1
|
||||
/systems/electrical/bus/dc-2 ge 25
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/pneumatics/warnings/crossbleed-disag">
|
||||
<switch name="/systems/pneumatics/warnings/crossbleed-disag-open">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/pneumatics/warnings/crossbleed-disag-open-man eq 1
|
||||
<test logic="AND">
|
||||
/systems/pneumatics/warnings/crossbleed-disag-open-auto eq 1
|
||||
/systems/electrical/bus/dc-2 ge 25
|
||||
</test>
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/pneumatics/warnings/crossbleed-disag-closed">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/systems/pneumatics/valves/crossbleed-valve-cmd eq 0
|
||||
/systems/pneumatics/valves/crossbleed-valve ne 0
|
||||
</test>
|
||||
<test logic="AND" value="1">
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/pneumatics/warnings/crossbleed-disag">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/pneumatics/warnings/crossbleed-disag-closed eq 1
|
||||
/systems/pneumatics/warnings/crossbleed-disag-open eq 1
|
||||
</test>
|
||||
</switch>
|
||||
|
|
|
@ -6,24 +6,22 @@
|
|||
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<inverted type="bool">true</inverted>
|
||||
<time>
|
||||
<value>0.1</value>
|
||||
<value>1.0</value>
|
||||
</time>
|
||||
<S>
|
||||
<property>/controls/electrical/switches/gen-1</property>
|
||||
<not><property>/controls/electrical/switches/gen-1</property></not>
|
||||
</S>
|
||||
<output>/systems/electrical/some-electric-thingie/generator-1-pb</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<inverted type="bool">true</inverted>
|
||||
<time>
|
||||
<value>0.1</value>
|
||||
<value>1.0</value>
|
||||
</time>
|
||||
<S>
|
||||
<property>/controls/electrical/switches/gen-2</property>
|
||||
<not><property>/controls/electrical/switches/gen-2</property></not>
|
||||
</S>
|
||||
<output>/systems/electrical/some-electric-thingie/generator-2-pb</output>
|
||||
</flipflop>
|
||||
|
@ -80,6 +78,29 @@
|
|||
<output>/systems/electrical/some-electric-thingie/generator-2-reset</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<time>
|
||||
<value>10.0</value>
|
||||
</time>
|
||||
<S>
|
||||
<not><property>/systems/electrical/some-electric-thingie/emer-elec-config</property></not>
|
||||
</S>
|
||||
<output>/systems/electrical/some-electric-thingie/emer-elec-config-10-sec</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<time>
|
||||
<value>20.0</value>
|
||||
</time>
|
||||
<S>
|
||||
<not><property>/systems/electrical/some-electric-thingie/emer-elec-config</property></not>
|
||||
</S>
|
||||
<output>/systems/electrical/some-electric-thingie/emer-elec-config-20-sec</output>
|
||||
</flipflop>
|
||||
|
||||
|
||||
<flipflop>
|
||||
<type>RS</type>
|
||||
<S>
|
||||
|
@ -303,7 +324,7 @@
|
|||
<output>ECAM/warnings/altitude-alert/gear-downlocked-output</output>
|
||||
</flipflop>
|
||||
|
||||
<!-- falling edge detector - take inverse of following -->
|
||||
<!-- falling edge detector - switch and output both false -->
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<inverted type="bool">true</inverted>
|
||||
|
@ -311,9 +332,9 @@
|
|||
<value>4.5</value>
|
||||
</time>
|
||||
<S>
|
||||
<property>ECAM/phases/monostable/phase-8</property>
|
||||
<property>/ECAM/phases/monostable/phase-8</property>
|
||||
</S>
|
||||
<output>ECAM/phases/monostable/phase-8-output</output>
|
||||
<output>/ECAM/phases/monostable/phase-8-output</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
|
@ -412,30 +433,6 @@
|
|||
</flipflop>
|
||||
|
||||
<!-- falling edge detectors -->
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<inverted type="bool">true</inverted>
|
||||
<time>
|
||||
<value>10.0</value>
|
||||
</time>
|
||||
<S>
|
||||
<property>/ECAM/warnings/timer/xbleed-fault-output</property>
|
||||
</S>
|
||||
<output>/ECAM/warnings/timer/xbleed-fault-output-10</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<inverted type="bool">true</inverted>
|
||||
<time>
|
||||
<value>15.0</value>
|
||||
</time>
|
||||
<S>
|
||||
<property>/controls/engines/engine[0]/fire-btn</property>
|
||||
</S>
|
||||
<output>/ECAM/warnings/timer/xbleed-fault-output-15</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>SR</type>
|
||||
<S>
|
||||
|
@ -926,7 +923,7 @@
|
|||
<value>1.0</value>
|
||||
</time>
|
||||
<S>
|
||||
<property>/ECAM/warnings/logic/stall/phase-8</property>
|
||||
<property>/ECAM/phases/monostable/phase-8</property>
|
||||
</S>
|
||||
<output>/ECAM/warnings/logic/stall/phase-8-output</output>
|
||||
</flipflop>
|
||||
|
@ -1029,4 +1026,139 @@
|
|||
</R>
|
||||
<output>/ECAM/phases/phase-calculation/altitude-ge-800</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>SR</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/fctl/flaps-config-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/fctl/flaps-config-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/fctl/flaps-config-output</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>SR</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/fctl/slats-config-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/fctl/slats-config-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/fctl/slats-config-output</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>SR</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/fctl/spd-brk-config-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/fctl/spd-brk-config-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/fctl/spd-brk-config-output</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>SR</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/fctl/pitch-trim-config-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/fctl/pitch-trim-config-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/fctl/pitch-trim-config-output</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>SR</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/fctl/rudder-trim-config-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/fctl/rudder-trim-config-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/fctl/rudder-trim-config-output</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>SR</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/fctl/park-brk-config-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/fctl/park-brk-config-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/fctl/park-brk-config-output</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>RS</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/logic/eng/eng-1-fail-cond-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/logic/eng/eng-1-fail-cond-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/logic/eng/eng-1-fail-cond</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>RS</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/logic/eng/eng-2-fail-cond-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/logic/eng/eng-2-fail-cond-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/logic/eng/eng-2-fail-cond</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>RS</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/logic/eng/eng-1-fail-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/logic/eng/eng-1-fail-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/logic/eng/eng-1-fail-output</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>RS</type>
|
||||
<S>
|
||||
<property>/ECAM/warnings/logic/eng/eng-2-fail-set</property>
|
||||
</S>
|
||||
<R>
|
||||
<property>/ECAM/warnings/logic/eng/eng-2-fail-reset</property>
|
||||
</R>
|
||||
<output>/ECAM/warnings/logic/eng/eng-2-fail-output</output>
|
||||
</flipflop>
|
||||
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<inverted type="bool">true</inverted>
|
||||
<time>
|
||||
<value>30.0</value>
|
||||
</time>
|
||||
<S>
|
||||
<property>/ECAM/warnings/logic/eng/phase-5</property>
|
||||
</S>
|
||||
<output>/ECAM/warnings/logic/eng/phase-5-output</output>
|
||||
</flipflop>
|
||||
|
||||
|
||||
<flipflop>
|
||||
<type>monostable</type>
|
||||
<inverted type="bool">true</inverted>
|
||||
<time>
|
||||
<value>1.0</value>
|
||||
</time>
|
||||
<S>
|
||||
<property>/ECAM/warnings/logic/eng/phase-5-output</property>
|
||||
</S>
|
||||
<output>/ECAM/warnings/logic/eng/phase-5-output-2</output>
|
||||
</flipflop>
|
||||
</PropertyList>
|
||||
|
|
|
@ -10,14 +10,13 @@
|
|||
<name>OAT Thrust Scale</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/environment/temperature-degc</property>
|
||||
<entry><ind> 70</ind><dep>0.788</dep></entry>
|
||||
<entry><ind> 40</ind><dep>0.813</dep></entry>
|
||||
<entry><ind>-60</ind><dep>1.000</dep></entry>
|
||||
<property>/fdm/jsbsim/fadec/limit/toga</property>
|
||||
<entry><ind> 18.9</ind><dep>0</dep></entry>
|
||||
<entry><ind>104.0</ind><dep>1</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
|
@ -28,11 +27,11 @@
|
|||
<name>FLX Thrust Scale</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/FMGC/internal/flex</property>
|
||||
<property>/fdm/jsbsim/fadec/limit/flex</property>
|
||||
<entry><ind> 70</ind><dep>0.788</dep></entry>
|
||||
<entry><ind> 40</ind><dep>0.813</dep></entry>
|
||||
<entry><ind>-60</ind><dep>1.000</dep></entry>
|
||||
|
@ -46,7 +45,7 @@
|
|||
<name>IDLE Limit</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<condition>
|
||||
<and>
|
||||
|
@ -81,11 +80,44 @@
|
|||
<output>/controls/engines/idle-limit</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Engines At Idle Stage 1</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<input>
|
||||
<expression>
|
||||
<difference>
|
||||
<table>
|
||||
<max>
|
||||
<property>/engines/engine[0]/n1-actual</property>
|
||||
<property>/engines/engine[1]/n1-actual</property>
|
||||
</max>
|
||||
<entry><ind> 18.9</ind><dep>0</dep></entry>
|
||||
<entry><ind>103.8</ind><dep>1</dep></entry>
|
||||
</table>
|
||||
<value>0.005</value>
|
||||
</difference>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/engines/highest-n1-buffer</output>
|
||||
</filter>
|
||||
|
||||
<logic>
|
||||
<name>Engines At Idle Stage 2</name>
|
||||
<input>
|
||||
<less-than-equals>
|
||||
<property>/engines/highest-n1-buffer</property>
|
||||
<property>/controls/engines/idle-limit</property>
|
||||
</less-than-equals>
|
||||
</input>
|
||||
<output>/engines/both-at-idle</output>
|
||||
</logic>
|
||||
|
||||
<filter>
|
||||
<name>MAN One</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -107,7 +139,7 @@
|
|||
<name>MAN Two</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -129,7 +161,7 @@
|
|||
<name>MAN CMD One</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<product>
|
||||
|
@ -154,7 +186,7 @@
|
|||
<name>MAN CMD Two</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<product>
|
||||
|
@ -179,7 +211,7 @@
|
|||
<name>N1 CMD 1</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<condition>
|
||||
<and>
|
||||
|
@ -220,7 +252,7 @@
|
|||
<name>N1 CMD 2</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<condition>
|
||||
<and>
|
||||
|
@ -1057,19 +1089,8 @@
|
|||
<name>N1 Limit TOGA</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
<product>
|
||||
<value>0.99</value>
|
||||
<property>/controls/engines/throttle-scale</property>
|
||||
</product>
|
||||
<entry><ind>0.00</ind><dep> 18.9</dep></entry>
|
||||
<entry><ind>1.00</ind><dep>103.8</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>/fdm/jsbsim/fadec/limit/toga</input>
|
||||
<output>/systems/thrust/n1/toga-lim</output>
|
||||
</filter>
|
||||
|
||||
|
@ -1077,7 +1098,7 @@
|
|||
<name>N1 Limit MCT</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -1097,19 +1118,8 @@
|
|||
<name>N1 Limit FLX</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
<product>
|
||||
<value>0.99</value>
|
||||
<property>/engines/flx-throttle</property>
|
||||
</product>
|
||||
<entry><ind>0.00</ind><dep> 18.9</dep></entry>
|
||||
<entry><ind>1.00</ind><dep>103.8</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>/fdm/jsbsim/fadec/limit/flex</input>
|
||||
<output>/systems/thrust/n1/flx-lim</output>
|
||||
</filter>
|
||||
|
||||
|
@ -1117,7 +1127,7 @@
|
|||
<name>N1 Limit CLB</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<name>OAT Thrust Scale</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -28,7 +28,7 @@
|
|||
<name>FLX Thrust Scale</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -46,7 +46,7 @@
|
|||
<name>IDLE Limit</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<condition>
|
||||
<and>
|
||||
|
@ -81,11 +81,44 @@
|
|||
<output>/controls/engines/idle-limit</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Engines At Idle Stage 1</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<input>
|
||||
<expression>
|
||||
<difference>
|
||||
<table>
|
||||
<max>
|
||||
<property>/engines/engine[0]/n1-actual</property>
|
||||
<property>/engines/engine[1]/n1-actual</property>
|
||||
</max>
|
||||
<entry><ind> 22.4</ind><dep>0</dep></entry>
|
||||
<entry><ind>103.8</ind><dep>1</dep></entry>
|
||||
</table>
|
||||
<value>0.005</value>
|
||||
</difference>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/engines/highest-n1-buffer</output>
|
||||
</filter>
|
||||
|
||||
<logic>
|
||||
<name>Engines At Idle Stage 2</name>
|
||||
<input>
|
||||
<less-than-equals>
|
||||
<property>/engines/highest-n1-buffer</property>
|
||||
<property>/controls/engines/idle-limit</property>
|
||||
</less-than-equals>
|
||||
</input>
|
||||
<output>/engines/both-at-idle</output>
|
||||
</logic>
|
||||
|
||||
<filter>
|
||||
<name>MAN One</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -107,7 +140,7 @@
|
|||
<name>MAN Two</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -129,7 +162,7 @@
|
|||
<name>MAN CMD One</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<product>
|
||||
|
@ -154,7 +187,7 @@
|
|||
<name>MAN CMD Two</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<product>
|
||||
|
@ -1328,7 +1361,7 @@
|
|||
<name>EPR Limit TOGA</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -1356,7 +1389,7 @@
|
|||
<name>EPR CMD TOGA</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<sum>
|
||||
|
@ -1372,7 +1405,7 @@
|
|||
<name>EPR Limit MCT</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -1400,7 +1433,7 @@
|
|||
<name>EPR CMD MCT</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<sum>
|
||||
|
@ -1416,7 +1449,7 @@
|
|||
<name>EPR Limit FLX</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -1444,7 +1477,7 @@
|
|||
<name>EPR CMD FLX</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<sum>
|
||||
|
@ -1460,7 +1493,7 @@
|
|||
<name>EPR Limit CLB</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<table>
|
||||
|
@ -1488,7 +1521,7 @@
|
|||
<name>EPR CMD CLB</name>
|
||||
<type>gain</type>
|
||||
<gain>1.0</gain>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<update-interval-secs>0.05</update-interval-secs>
|
||||
<input>
|
||||
<expression>
|
||||
<sum>
|
||||
|
|
|
@ -136,9 +136,79 @@
|
|||
<property>/it-autoflight/internal/alt</property>
|
||||
</input>
|
||||
<reference>
|
||||
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
|
||||
<property>/instrumentation/altimeter[0]/indicated-altitude-ft</property>
|
||||
</reference>
|
||||
<output>/instrumentation/pfd/alt-diff</output>
|
||||
<output>/instrumentation/pfd/alt-diff[0]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Altitude bug diff</name>
|
||||
<type>gain</type>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<gain>1.0</gain>
|
||||
<input>
|
||||
<property>/it-autoflight/internal/alt</property>
|
||||
</input>
|
||||
<reference>
|
||||
<property>/instrumentation/altimeter[1]/indicated-altitude-ft</property>
|
||||
</reference>
|
||||
<output>/instrumentation/pfd/alt-diff[1]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Altitude bug diff</name>
|
||||
<type>gain</type>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<gain>1.0</gain>
|
||||
<input>
|
||||
<property>/it-autoflight/internal/alt</property>
|
||||
</input>
|
||||
<reference>
|
||||
<property>/instrumentation/altimeter[2]/indicated-altitude-ft</property>
|
||||
</reference>
|
||||
<output>/instrumentation/pfd/alt-diff[2]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Altitude bug diff</name>
|
||||
<type>gain</type>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<gain>1.0</gain>
|
||||
<input>
|
||||
<property>/it-autoflight/internal/alt</property>
|
||||
</input>
|
||||
<reference>
|
||||
<property>/instrumentation/altimeter[3]/indicated-altitude-ft</property>
|
||||
</reference>
|
||||
<output>/instrumentation/pfd/alt-diff[3]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Altitude bug diff</name>
|
||||
<type>gain</type>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<gain>1.0</gain>
|
||||
<input>
|
||||
<property>/it-autoflight/internal/alt</property>
|
||||
</input>
|
||||
<reference>
|
||||
<property>/instrumentation/altimeter[4]/indicated-altitude-ft</property>
|
||||
</reference>
|
||||
<output>/instrumentation/pfd/alt-diff[4]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Altitude bug diff</name>
|
||||
<type>gain</type>
|
||||
<update-interval-secs type="double">0.05</update-interval-secs>
|
||||
<gain>1.0</gain>
|
||||
<input>
|
||||
<property>/it-autoflight/internal/alt</property>
|
||||
</input>
|
||||
<reference>
|
||||
<property>/instrumentation/altimeter[5]/indicated-altitude-ft</property>
|
||||
</reference>
|
||||
<output>/instrumentation/pfd/alt-diff[5]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue