Merge branch 'dev' into new-electrical
This commit is contained in:
commit
f247d9f4fd
113 changed files with 2240 additions and 1195 deletions
|
@ -21,21 +21,22 @@
|
|||
<path>Aircraft/A320-family/Sounds/cfm56-sound.xml</path>
|
||||
</sound>
|
||||
|
||||
|
||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
||||
<view>
|
||||
<name>Pilot View</name>
|
||||
<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">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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>Copilot View</name>
|
||||
<name>First Officer View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
|
@ -43,8 +44,10 @@
|
|||
<x-offset-m archive="y">0.45</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -56,8 +59,10 @@
|
|||
<x-offset-m archive="y">0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.72</z-offset-m>
|
||||
<pitch-offset-deg archive="y">65.5</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -69,8 +74,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-14.15</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-76</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -82,8 +89,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.8</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-82</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -95,8 +104,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -108,11 +119,43 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<heading-offset-deg>129</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">129</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">231</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">103</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>
|
||||
|
@ -121,11 +164,13 @@
|
|||
<x-offset-m archive="y">2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<heading-offset-deg>257</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">257</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">
|
||||
<view n="109">
|
||||
<name>Left Aft View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
|
@ -134,8 +179,25 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<heading-offset-deg>63</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">63</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="110">
|
||||
<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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">297</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
|
|
|
@ -21,20 +21,22 @@
|
|||
<path>Aircraft/A320-family/Sounds/cfm56-sound.xml</path>
|
||||
</sound>
|
||||
|
||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
||||
<view>
|
||||
<name>Pilot View</name>
|
||||
<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">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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>Copilot View</name>
|
||||
<name>First Officer View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
|
@ -42,8 +44,10 @@
|
|||
<x-offset-m archive="y">0.45</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -55,8 +59,10 @@
|
|||
<x-offset-m archive="y">0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.72</z-offset-m>
|
||||
<pitch-offset-deg archive="y">65.5</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -68,8 +74,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-14.15</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-76</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -81,8 +89,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.8</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-82</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -94,8 +104,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -107,11 +119,43 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<heading-offset-deg>129</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">129</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">231</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">103</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>
|
||||
|
@ -120,11 +164,13 @@
|
|||
<x-offset-m archive="y">2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<heading-offset-deg>257</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">257</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">
|
||||
<view n="109">
|
||||
<name>Left Aft View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
|
@ -133,19 +179,27 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<heading-offset-deg>63</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">63</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="110">
|
||||
<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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">297</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>
|
||||
|
||||
|
|
|
@ -21,20 +21,22 @@
|
|||
<path>Aircraft/A320-family/Sounds/v2500-sound.xml</path>
|
||||
</sound>
|
||||
|
||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
||||
<view>
|
||||
<name>Pilot View</name>
|
||||
<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">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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>Copilot View</name>
|
||||
<name>First Officer View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
|
@ -42,8 +44,10 @@
|
|||
<x-offset-m archive="y">0.45</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -55,8 +59,10 @@
|
|||
<x-offset-m archive="y">0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.72</z-offset-m>
|
||||
<pitch-offset-deg archive="y">65.5</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -68,8 +74,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-14.15</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-76</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -81,8 +89,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.8</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-82</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -94,8 +104,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -107,11 +119,43 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<heading-offset-deg>129</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">129</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">231</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">103</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>
|
||||
|
@ -120,11 +164,13 @@
|
|||
<x-offset-m archive="y">2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<heading-offset-deg>257</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">257</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">
|
||||
<view n="109">
|
||||
<name>Left Aft View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
|
@ -133,8 +179,25 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<heading-offset-deg>63</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">63</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="110">
|
||||
<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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">297</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
|
|
|
@ -278,6 +278,18 @@
|
|||
|
||||
<menubar>
|
||||
<default>
|
||||
<menu n="9">
|
||||
<item n="2">
|
||||
<key>?</key>
|
||||
<label>Aircraft Help</label>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
acconfig.help_dlg.open();
|
||||
</script>
|
||||
</binding>
|
||||
</item>
|
||||
</menu>
|
||||
<menu n="100">
|
||||
<label>|</label>
|
||||
<enabled type="bool">false</enabled>
|
||||
|
@ -554,12 +566,12 @@
|
|||
<gui n="0" include="gui/it-gui.xml"/>
|
||||
|
||||
<current-view>
|
||||
<z-offset-default type="float">80.0</z-offset-default>
|
||||
<z-offset-default type="float">60.0</z-offset-default>
|
||||
<z-offset-min-m type="float">10.0</z-offset-min-m>
|
||||
<z-offset-max-m type="float">300.0</z-offset-max-m>
|
||||
</current-view>
|
||||
|
||||
<minimum-fg-version>2019.2.0</minimum-fg-version>
|
||||
<minimum-fg-version>2019.2.0</minimum-fg-version>
|
||||
|
||||
<navdb>
|
||||
<min-runway-length-ft>3000</min-runway-length-ft>
|
||||
|
@ -647,6 +659,7 @@
|
|||
<line7 type="string"></line7>
|
||||
<line8 type="string"></line8>
|
||||
</rightmsg>
|
||||
<warning-phase type="int">0</warning-phase>
|
||||
</ECAM>
|
||||
|
||||
<environment>
|
||||
|
@ -752,9 +765,6 @@
|
|||
<overspeed-roll-back type="bool">0</overspeed-roll-back>
|
||||
</protections>
|
||||
<spd-hld type="bool">0</spd-hld>
|
||||
<speeds>
|
||||
<vmo-mmo type="int">350</vmo-mmo>
|
||||
</speeds>
|
||||
</it-fbw>
|
||||
|
||||
<FMGC n="0">
|
||||
|
@ -1286,6 +1296,7 @@
|
|||
<fac2 type="bool">0</fac2>
|
||||
<rtlu-1 type="bool">0</rtlu-1>
|
||||
<rtlu-2 type="bool">0</rtlu-2>
|
||||
<ths-jam type="bool">0</ths-jam>
|
||||
<yaw-damper-1 type="bool">0</yaw-damper-1>
|
||||
<yaw-damper-2 type="bool">0</yaw-damper-2>
|
||||
</fctl>
|
||||
|
@ -1571,8 +1582,8 @@
|
|||
<instrumentation n="0">
|
||||
<altimeter n="0">
|
||||
<inhg type="bool">0</inhg>
|
||||
<indicated-altitude-ft tyep="double">0</indicated-altitude-ft>
|
||||
<indicated-altitude-ft-pfd tyep="double">0</indicated-altitude-ft-pfd>
|
||||
<indicated-altitude-ft type="double">0</indicated-altitude-ft>
|
||||
<indicated-altitude-ft-pfd type="double">0</indicated-altitude-ft-pfd>
|
||||
<oldqnh type="double">29.92</oldqnh>
|
||||
<serviceable type="bool">true</serviceable>
|
||||
<std type="bool">0</std>
|
||||
|
@ -4507,13 +4518,13 @@
|
|||
<file>Aircraft/A320-family/Nasal/Autopush/autopush.nas</file>
|
||||
</autopush>
|
||||
<autopush_driver>
|
||||
<file>Aircraft/A320-family/Nasal/Autopush/autopush_driver.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Autopush/driver.nas</file>
|
||||
</autopush_driver>
|
||||
<dynarr>
|
||||
<file>Aircraft/A320-family/Nasal/Autopush/dynarr.nas</file>
|
||||
</dynarr>
|
||||
<autopush_route>
|
||||
<file>Aircraft/A320-family/Nasal/Autopush/autopush_route.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/Autopush/route.nas</file>
|
||||
</autopush_route>
|
||||
<!-- Panels -->
|
||||
<rmp>
|
||||
|
|
|
@ -21,20 +21,22 @@
|
|||
<path>Aircraft/A320-family/Sounds/leapx-sound.xml</path>
|
||||
</sound>
|
||||
|
||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
||||
<view>
|
||||
<name>Pilot View</name>
|
||||
<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">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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>Copilot View</name>
|
||||
<name>First Officer View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
|
@ -42,8 +44,10 @@
|
|||
<x-offset-m archive="y">0.45</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -55,8 +59,10 @@
|
|||
<x-offset-m archive="y">0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.72</z-offset-m>
|
||||
<pitch-offset-deg archive="y">65.5</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -68,8 +74,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-14.15</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-76</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -81,8 +89,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.8</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-82</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -94,8 +104,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -107,11 +119,43 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<heading-offset-deg>129</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">129</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">231</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">103</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>
|
||||
|
@ -120,11 +164,13 @@
|
|||
<x-offset-m archive="y">2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<heading-offset-deg>257</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">257</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">
|
||||
<view n="109">
|
||||
<name>Left Aft View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
|
@ -133,8 +179,25 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<heading-offset-deg>63</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">63</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="110">
|
||||
<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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">297</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
|
|
|
@ -21,20 +21,22 @@
|
|||
<path>Aircraft/A320-family/Sounds/leapx-sound.xml</path>
|
||||
</sound>
|
||||
|
||||
<chase-distance-m type="double" archive="y">-80.0</chase-distance-m>
|
||||
<view>
|
||||
<name>Pilot View</name>
|
||||
<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">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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>Copilot View</name>
|
||||
<name>First Officer View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">true</internal>
|
||||
<config>
|
||||
|
@ -42,8 +44,10 @@
|
|||
<x-offset-m archive="y">0.45</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -55,8 +59,10 @@
|
|||
<x-offset-m archive="y">0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.72</z-offset-m>
|
||||
<pitch-offset-deg archive="y">65.5</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -68,8 +74,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-14.15</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-76</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -81,8 +89,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.8</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-82</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -94,8 +104,10 @@
|
|||
<x-offset-m archive="y">0.0</x-offset-m>
|
||||
<y-offset-m archive="y">2.34</y-offset-m>
|
||||
<z-offset-m archive="y">-13.75</z-offset-m>
|
||||
<pitch-offset-deg archive="y">-14.6</pitch-offset-deg>
|
||||
<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">
|
||||
|
@ -107,11 +119,43 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<heading-offset-deg>129</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">129</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">-6.49</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">231</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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">103</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>
|
||||
|
@ -120,11 +164,13 @@
|
|||
<x-offset-m archive="y">2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">0</z-offset-m>
|
||||
<heading-offset-deg>257</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">257</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">
|
||||
<view n="109">
|
||||
<name>Left Aft View</name>
|
||||
<type>lookfrom</type>
|
||||
<internal archive="y">false</internal>
|
||||
|
@ -133,8 +179,25 @@
|
|||
<x-offset-m archive="y">-2.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<heading-offset-deg>63</heading-offset-deg>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">63</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="110">
|
||||
<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.81</x-offset-m>
|
||||
<y-offset-m archive="y">2.44</y-offset-m>
|
||||
<z-offset-m archive="y">6.8</z-offset-m>
|
||||
<default-field-of-view-deg type="double">85</default-field-of-view-deg>
|
||||
<heading-offset-deg archive="y">297</heading-offset-deg>
|
||||
<pitch-offset-deg archive="y">0</pitch-offset-deg>
|
||||
<roll-offset-deg archive="y">0</roll-offset-deg>
|
||||
</config>
|
||||
</view>
|
||||
|
||||
|
|
|
@ -72,8 +72,7 @@ setprop("/systems/acconfig/out-of-date", 0);
|
|||
setprop("/systems/acconfig/mismatch-code", "0x000");
|
||||
setprop("/systems/acconfig/mismatch-reason", "XX");
|
||||
setprop("/systems/acconfig/options/keyboard-mode", 0);
|
||||
# TODO Revert default weight-kgs to 1, when fully implemented
|
||||
setprop("/systems/acconfig/options/weight-kgs", 0);
|
||||
setprop("/systems/acconfig/options/weight-kgs", 1);
|
||||
setprop("/systems/acconfig/options/adirs-skip", 0);
|
||||
setprop("/systems/acconfig/options/allow-oil-consumption", 0);
|
||||
setprop("/systems/acconfig/options/atis-server", "faa");
|
||||
|
|
|
@ -36,9 +36,9 @@
|
|||
<layout>vbox</layout>
|
||||
|
||||
<checkbox>
|
||||
<label>Welcome (F/A)</label>
|
||||
<label>F/A - Boarding</label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/welcomefa</property>
|
||||
<property>/sim/sounde/fa_boarding</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -46,9 +46,9 @@
|
|||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Welcome (Capt)</label>
|
||||
<label>F/A - Welcome</label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/welcomecapt</property>
|
||||
<property>/sim/sounde/fa_welcome</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -56,9 +56,9 @@
|
|||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Doors Departure</label>
|
||||
<label>Cpt - Welcome</label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/doors</property>
|
||||
<property>/sim/sounde/cpt_welcome</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -66,9 +66,9 @@
|
|||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>SafetyBrief</label>
|
||||
<label>Cpt - Doors Check</label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/safety</property>
|
||||
<property>/sim/sounde/cpt_doors</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -76,9 +76,9 @@
|
|||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Prepare for Takeoff</label>
|
||||
<label>F/A - Safety Brief </label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/prepareto</property>
|
||||
<property>/sim/sounde/fa_safety</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
@ -86,9 +86,49 @@
|
|||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Seatbelt Turned Off</label>
|
||||
<label>Cpt - Prepare for Takeoff</label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/seatbelt-10k</property>
|
||||
<property>/sim/sounde/cpt_takeoff</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>F/A - Seatbelt Turned Off</label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/fa_seatbelt10k</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>F/A - Descent</label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/fa_descent</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Cpt - Prepare for Landing</label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/cpt_landing</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>F/A - Landed</label>
|
||||
<halign>left</halign>
|
||||
<property>/sim/sounde/fa_landed</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
|
|
|
@ -27,9 +27,7 @@
|
|||
acconfig.writeSettings();
|
||||
canvas_pfd.rateApply();
|
||||
canvas_nd.rateApply();
|
||||
canvas_ecam.u_rateApply();
|
||||
canvas_ecam.l_rateApply();
|
||||
canvas_iesi.rateApply();
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
|
@ -225,9 +223,7 @@
|
|||
acconfig.writeSettings();
|
||||
canvas_pfd.rateApply();
|
||||
canvas_nd.rateApply();
|
||||
canvas_ecam.u_rateApply();
|
||||
canvas_ecam.l_rateApply();
|
||||
canvas_iesi.rateApply();
|
||||
</script>
|
||||
</binding>
|
||||
</button>
|
||||
|
@ -241,9 +237,7 @@
|
|||
acconfig.writeSettings();
|
||||
canvas_pfd.rateApply();
|
||||
canvas_nd.rateApply();
|
||||
canvas_ecam.u_rateApply();
|
||||
canvas_ecam.l_rateApply();
|
||||
canvas_iesi.rateApply();
|
||||
</script>
|
||||
</binding>
|
||||
<binding>
|
||||
|
|
|
@ -144,6 +144,16 @@
|
|||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>THS</label>
|
||||
<halign>left</halign>
|
||||
<property>/systems/failures/fctl/ths-jam</property>
|
||||
<binding>
|
||||
<command>dialog-apply</command>
|
||||
</binding>
|
||||
<live>true</live>
|
||||
</checkbox>
|
||||
|
||||
<checkbox>
|
||||
<label>Yaw Damper 1</label>
|
||||
<halign>left</halign>
|
||||
|
|
59
Announcements.txt
Normal file
59
Announcements.txt
Normal file
|
@ -0,0 +1,59 @@
|
|||
All voices created at http://www.fromtexttospeech.com/
|
||||
Captain voice: US English - John
|
||||
Mechanic voice: US English - George
|
||||
Flight attendant voice: US English - Daisy
|
||||
|
||||
|
||||
BOARDING (F/A) - fa_boarding
|
||||
Ladies and gentlemen, the Captain has turned on the Fasten Seat Belt sign. If you haven’t already done so, please stow your carry-on luggage underneath the seat in front of you or in an overhead bin. Please take your seat and fasten your seat belt. And also make sure your seat back and folding trays are in their full upright position.
|
||||
If you are seated next to an emergency exit, please read carefully the special instructions card located by your seat. If you do not wish to perform the functions described in the event of an emergency, please ask a flight attendant to reseat you.
|
||||
We remind you that this is a non-smoking flight. Smoking is prohibited on the entire aircraft, including the lavatories. Tampering with, disabling or destroying the lavatory smoke detectors is prohibited by law.
|
||||
If you have any questions about our flight today, please don’t hesitate to ask one of our flight attendants. Thank you.
|
||||
|
||||
|
||||
WELCOME (F/A) - fa_welcome
|
||||
Ladies and gentlemen, my name is Daisy and I’m your chief flight attendant. On behalf of the entire crew, welcome aboard this flight.
|
||||
At this time, make sure your seat backs and tray tables are in their full upright position and that your seat belt is correctly fastened. Also, your portable electronic devices must be set to ‘airplane’ mode until an announcement is made upon arrival. Thank you.
|
||||
|
||||
WELCOME (CPT) - cpt_welcome
|
||||
Ladies and gentlemen, this is your captain speaking. Welcome on board. We are all set and ready to go, just waiting for clearance to depart the gate. Please, make yourself comfortable, and I wish you a very pleasant flight.
|
||||
|
||||
DOORS CHECK (CPT) - cpt_doors
|
||||
Cabin Crew, doors on automatic, arm slides, cross-check and report. Thank you.
|
||||
|
||||
|
||||
SAFETY (F/A) - fa_safety
|
||||
Now we request your full attention as the flight attendants demonstrate the safety features of this aircraft.
|
||||
When the seat belt sign illuminates, you must fasten your seat belt. Insert the metal fittings one into the other, and tighten by pulling on the loose end of the strap. To release your seat belt, lift the upper portion of the buckle. We suggest that you keep your seat belt fastened throughout the flight, as we may experience turbulence.
|
||||
There are several emergency exits on this aircraft, two forward, two aft and two over each wing. Please take a few moments now to locate your nearest exit. In some cases, your nearest exit may be behind you. If we need to evacuate the aircraft, floor-level lighting will guide you towards the exit. Doors can be opened by moving the handle in the direction of the arrow. Each door is equipped with an inflatable slide which may also be detached and used as a life raft.
|
||||
Oxygen and the air pressure are always being monitored. In the event of a decompression, an oxygen mask will automatically appear in front of you. To start the flow of oxygen, pull the mask towards you. Place it firmly over your nose and mouth, secure the elastic band behind your head, and breathe normally. Although the bag does not inflate, oxygen is flowing to the mask. If you are travelling with a child or someone who requires assistance, secure your mask on first, and then assist the other person. Keep your mask on until a uniformed crew member advises you to remove it.
|
||||
In the event of an emergency, please assume the bracing position. Lean forward with your hands on top of your head and your elbows against your thighs. Ensure your feet are flat on the floor.
|
||||
A life vest is located in a pouch under your seat or between the armrests. When instructed to do so, open the plastic pouch and remove the vest. Slip it over your head. Pass the straps around your waist and adjust at the front. To inflate the vest, pull firmly on the red cord, only when leaving the aircraft. If you need to refill the vest, blow into the mouthpieces. Use the whistle and light to attract attention. Also, your seat bottom cushion can be used as a flotation device. Pull the cushion from the seat, slip your arms into the straps, and hug the cushion to your chest.
|
||||
At this time, your portable electronic devices must be set to ‘airplane’ mode until an announcement is made upon arrival.
|
||||
We remind you that this is a non-smoking flight. Tampering with, disabling, or destroying the smoke detectors located in the lavatories is prohibited by law.
|
||||
You will find this and all the other safety information in the card located in the seat pocket in front of you. We strongly suggest you read it before take-off. If you have any questions, please don’t hesitate to ask one of our crew members. We wish you all an enjoyable flight.
|
||||
|
||||
|
||||
TAKEOFF (CPT) - cpt_takeoff
|
||||
Cabin crew, prepare for take-off.
|
||||
|
||||
|
||||
SEATBELT OFF (F/A) - fa_seatbelt10k.wav
|
||||
Ladies and gentlemen, the Captain has turned off the Fasten Seat Belt sign, and you may now move around the cabin. However we always recommend to keep your seat belt fastened while you’re seated.
|
||||
In a few moments, the flight attendants will be passing around the cabin to offer you hot or cold drinks, as well as a snack. Alcoholic drinks are also available at a nominal charge. Now, sit back, relax, and enjoy the flight. Thank you.
|
||||
|
||||
|
||||
DESCENT (F/A) - fa_descent
|
||||
Ladies and gentlemen, as we start our descent, please make sure your seat backs and tray tables are in their full upright position. Make sure your seat belt is securely fastened and all carry-on luggage is stowed underneath the seat in front of you or in the overhead bins. Thank you.
|
||||
|
||||
|
||||
LANDING (CPT) - cpt_landing
|
||||
Cabin crew, prepare for landing.
|
||||
|
||||
|
||||
LANDED (F/A) - fa_landed
|
||||
Ladies and gentlemen, welcome to your destination Airport.
|
||||
For your safety and comfort, please remain seated with your seat belt fastened until the Captain turns off the Fasten Seat Belt sign. This will indicate that we have parked at the gate and that it is safe for you to move about. At this time, you may use your cellular phones if you wish.
|
||||
Please check around your seat for any personal belongings you may have brought on board with you and please use caution when opening the overhead bins, as heavy articles may have shifted around during the flight.
|
||||
If you require deplaning assistance, please remain in your seat until all other passengers have deplaned. One of our crew members will then be pleased to assist you.
|
||||
On behalf of the entire crew, I’d like to thank you for joining us on this trip and we are looking forward to seeing you on board again in the near future. Have a nice stay.
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<irradiance-map-type type="int">2</irradiance-map-type>
|
||||
<irradiance-map-strength type="float">0.33</irradiance-map-strength>
|
||||
<texture n="4">
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<irradiance-map-type type="int">1</irradiance-map-type>
|
||||
<irradiance-map-strength type="float">0.33</irradiance-map-strength>
|
||||
<texture n="4">
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>panel</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/pedestal-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<name>tiller</name>
|
||||
<inherits-from>Effects/model-interior</inherits-from>
|
||||
<parameters>
|
||||
<shadow-mapping-enabled type="bool">true</shadow-mapping-enabled>
|
||||
<lightmap-enabled type="int">1</lightmap-enabled>
|
||||
<lightmap-factor type="float" n="0"><use>/controls/lighting/panel-light</use></lightmap-factor>
|
||||
<lightmap-color type="vec3d" n="0">1.0 1.0 1.0</lightmap-color>
|
||||
|
|
|
@ -365,12 +365,28 @@
|
|||
<type>rotate</type>
|
||||
<object-name>brakes_lb_psi</object-name>
|
||||
<property>systems/hydraulic/brakes/pressure-left-psi</property>
|
||||
<factor>0.03</factor>
|
||||
<factor>-0.03</factor>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/mode</property>
|
||||
<value>2</value>
|
||||
</equals>
|
||||
<or>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/mode</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/mode</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/pressure-left-psi</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/mode</property>
|
||||
<value>2</value>
|
||||
</equals>
|
||||
</or>
|
||||
</condition>
|
||||
<axis>
|
||||
<object-name>brakes_lb_psi.axis</object-name>
|
||||
|
@ -381,12 +397,28 @@
|
|||
<type>rotate</type>
|
||||
<object-name>brakes_rb_psi</object-name>
|
||||
<property>systems/hydraulic/brakes/pressure-right-psi</property>
|
||||
<factor>-0.03</factor>
|
||||
<factor>0.03</factor>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/mode</property>
|
||||
<value>2</value>
|
||||
</equals>
|
||||
<or>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/mode</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
<and>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/mode</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/pressure-right-psi</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
</and>
|
||||
<equals>
|
||||
<property>systems/hydraulic/brakes/mode</property>
|
||||
<value>2</value>
|
||||
</equals>
|
||||
</or>
|
||||
</condition>
|
||||
<axis>
|
||||
<object-name>brakes_rb_psi.axis</object-name>
|
||||
|
@ -399,9 +431,9 @@
|
|||
<property>systems/hydraulic/brakes/accumulator-pressure-psi</property>
|
||||
<interpolation>
|
||||
<entry><ind>0</ind><dep>0</dep></entry>
|
||||
<entry><ind>700</ind><dep>66</dep></entry>
|
||||
<entry><ind>2000</ind><dep>78</dep></entry>
|
||||
<entry><ind>3000</ind><dep>90</dep></entry>
|
||||
<entry><ind>700</ind><dep>-20</dep></entry>
|
||||
<entry><ind>2000</ind><dep>-44</dep></entry>
|
||||
<entry><ind>3000</ind><dep>-66</dep></entry>
|
||||
</interpolation>
|
||||
<axis>
|
||||
<object-name>brakes_accum_psi.axis</object-name>
|
||||
|
@ -5438,18 +5470,64 @@
|
|||
<type>select</type>
|
||||
<object-name>gear_lever_down_arrow</object-name>
|
||||
<condition>
|
||||
<or>
|
||||
<equals>
|
||||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>systems/gear/landing-gear-warning-light</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</or>
|
||||
<and>
|
||||
<or>
|
||||
<greater-than>
|
||||
<property>systems/electrical/bus/ac-ess</property>
|
||||
<value>110</value>
|
||||
</greater-than>
|
||||
<greater-than>
|
||||
<property>systems/electrical/bus/ac-2</property>
|
||||
<value>110</value>
|
||||
</greater-than>
|
||||
</or>
|
||||
<or>
|
||||
<equals>
|
||||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>ECAM/warnings/landing-gear-warning-light</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</or>
|
||||
</and>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>material</type>
|
||||
<object-name>gear_lever_down_arrow</object-name>
|
||||
<condition>
|
||||
<and>
|
||||
<or>
|
||||
<greater-than>
|
||||
<property>systems/electrical/bus/ac-ess</property>
|
||||
<value>110</value>
|
||||
</greater-than>
|
||||
<greater-than>
|
||||
<property>systems/electrical/bus/ac-2</property>
|
||||
<value>110</value>
|
||||
</greater-than>
|
||||
</or>
|
||||
<or>
|
||||
<equals>
|
||||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>ECAM/warnings/landing-gear-warning-light</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</or>
|
||||
</and>
|
||||
</condition>
|
||||
<emission>
|
||||
<red>1.00</red>
|
||||
<green>0.0</green>
|
||||
<blue>0.0</blue>
|
||||
</emission>
|
||||
</animation>
|
||||
|
||||
<!-- Landing Gear Lights -->
|
||||
<animation>
|
||||
|
|
|
@ -162,7 +162,7 @@ var canvas_IESI = {
|
|||
return;
|
||||
}
|
||||
|
||||
if (_IESITime + 90 >= notification.elapsed_seconds) {
|
||||
if (_IESITime + 90 >= notification.elapsedTime) {
|
||||
me["IESI"].hide();
|
||||
me["IESI_Init"].show();
|
||||
return;
|
||||
|
@ -190,7 +190,7 @@ var canvas_IESI = {
|
|||
updatePower: func(notification) {
|
||||
# todo 20W power consumption
|
||||
if (notification.attReset == 1) {
|
||||
if (notification.iesiInit and _IESITime + 90 >= notification.elapsed_seconds) {
|
||||
if (notification.iesiInit and _IESITime + 90 >= notification.elapsedTime) {
|
||||
_fast = 1;
|
||||
} else {
|
||||
_fast = 0;
|
||||
|
@ -203,14 +203,14 @@ var canvas_IESI = {
|
|||
if (notification.acconfig != 1 and notification.iesiInit != 1) {
|
||||
iesi_init.setBoolValue(1);
|
||||
if (_fast) {
|
||||
_IESITime = notification.elapsed_seconds - 80;
|
||||
_IESITime = notification.elapsedTime - 80;
|
||||
_fast = 0;
|
||||
} else {
|
||||
_IESITime = notification.elapsed_seconds;
|
||||
_IESITime = notification.elapsedTime;
|
||||
}
|
||||
} else if (notification.acconfig == 1 and notification.iesiInit != 1) {
|
||||
iesi_init.setBoolValue(1);
|
||||
_IESITime = notification.elapsed_seconds - 87;
|
||||
_IESITime = notification.elapsedTime - 87;
|
||||
}
|
||||
} elsif (notification.iesiInit) {
|
||||
if (!me._transientVar) {
|
||||
|
@ -239,24 +239,24 @@ var IESIRecipient =
|
|||
{
|
||||
new: func(_ident)
|
||||
{
|
||||
var IESIRecipient = emesary.Recipient.new(_ident);
|
||||
IESIRecipient.MainScreen = nil;
|
||||
IESIRecipient.Receive = func(notification)
|
||||
var NewIESIRecipient = emesary.Recipient.new(_ident);
|
||||
NewIESIRecipient.MainScreen = nil;
|
||||
NewIESIRecipient.Receive = func(notification)
|
||||
{
|
||||
if (notification.NotificationType == "FrameNotification")
|
||||
{
|
||||
if (IESIRecipient.MainScreen == nil) {
|
||||
IESIRecipient.MainScreen = canvas_IESI.new("Aircraft/A320-family/Models/Instruments/IESI/res/iesi.svg", "A320 IESI");
|
||||
if (NewIESIRecipient.MainScreen == nil) {
|
||||
NewIESIRecipient.MainScreen = canvas_IESI.new("Aircraft/A320-family/Models/Instruments/IESI/res/iesi.svg", "A320 IESI");
|
||||
}
|
||||
|
||||
#if (!math.mod(notifications.frameNotification.FrameCount,2)){
|
||||
IESIRecipient.MainScreen.update(notification);
|
||||
#}
|
||||
if (math.mod(notifications.frameNotification.FrameCount,2) == 0) {
|
||||
NewIESIRecipient.MainScreen.update(notification);
|
||||
}
|
||||
return emesary.Transmitter.ReceiptStatus_OK;
|
||||
}
|
||||
return emesary.Transmitter.ReceiptStatus_NotProcessed;
|
||||
};
|
||||
return IESIRecipient;
|
||||
return NewIESIRecipient;
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -36,6 +36,15 @@ var tr2_v = 0;
|
|||
var tr2_a = 0;
|
||||
var essTramps = 0;
|
||||
var essTrvolts = 0;
|
||||
var elac1Node = 0;
|
||||
var elac2Node = 0;
|
||||
var sec1Node = 0;
|
||||
var sec2Node = 0;
|
||||
var eng_valve_state = 0;
|
||||
var bleed_valve_cur = 0;
|
||||
var hp_valve_state = 0;
|
||||
var xbleedcmdstate = 0;
|
||||
var ramAirState = 0;
|
||||
|
||||
# Conversion factor pounds to kilogram
|
||||
LBS2KGS = 0.4535924;
|
||||
|
@ -92,6 +101,8 @@ var precooler1_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-
|
|||
var precooler2_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-2", 1);
|
||||
var bmc1working = props.globals.getNode("/systems/pneumatics/indicating/bmc1-working", 1);
|
||||
var bmc2working = props.globals.getNode("/systems/pneumatics/indicating/bmc2-working", 1);
|
||||
var bmc1 = 0;
|
||||
var bmc2 = 0;
|
||||
var gs_kt = props.globals.getNode("/velocities/groundspeed-kt", 1);
|
||||
var switch_wing_aice = props.globals.getNode("/controls/ice-protection/wing", 1);
|
||||
var pack1_bypass = props.globals.getNode("/systems/pneumatics/pack-1-bypass", 1);
|
||||
|
@ -650,14 +661,15 @@ var canvas_lowerECAM_bleed = {
|
|||
update: func() {
|
||||
# X BLEED
|
||||
xbleedstate = xbleed.getValue();
|
||||
if (xbleedcmd.getBoolValue() != xbleedstate) {
|
||||
xbleedcmdstate = xbleedcmd.getBoolValue();
|
||||
if (xbleedcmdstate != xbleedstate) {
|
||||
me["BLEED-XFEED"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["BLEED-XFEED"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
if (xbleedcmd.getBoolValue() == xbleedstate) {
|
||||
if (xbleedcmd.getBoolValue()) {
|
||||
if (xbleedcmdstate == xbleedstate) {
|
||||
if (xbleedcmdstate) {
|
||||
me["BLEED-XFEED"].setRotation(0);
|
||||
} else {
|
||||
me["BLEED-XFEED"].setRotation(90 * D2R);
|
||||
|
@ -675,7 +687,7 @@ var canvas_lowerECAM_bleed = {
|
|||
}
|
||||
|
||||
# HP valve 1
|
||||
var hp_valve_state = hp_valve1_state.getValue();
|
||||
hp_valve_state = hp_valve1_state.getValue();
|
||||
|
||||
if (hp_valve_state == 1) {
|
||||
me["BLEED-HP-Valve-1"].setRotation(90 * D2R);
|
||||
|
@ -692,8 +704,8 @@ var canvas_lowerECAM_bleed = {
|
|||
}
|
||||
|
||||
# HP valve 2
|
||||
var hp_valve_state = hp_valve2_state.getValue();
|
||||
|
||||
hp_valve_state = hp_valve2_state.getValue();
|
||||
|
||||
if (hp_valve_state == 1) {
|
||||
me["BLEED-HP-Valve-2"].setRotation(90 * D2R);
|
||||
me["BLEED-HP-2-connection"].show();
|
||||
|
@ -709,15 +721,16 @@ var canvas_lowerECAM_bleed = {
|
|||
}
|
||||
|
||||
# ENG BLEED valve 1
|
||||
var eng_valve_state = systems.PNEU.Switch.bleed1.getValue();
|
||||
eng_valve_state = systems.PNEU.Switch.bleed1.getValue();
|
||||
bleed_valve_cur = eng_valve1.getValue();
|
||||
|
||||
if (eng_valve1.getValue() == 0) {
|
||||
if (bleed_valve_cur == 0) {
|
||||
me["BLEED-ENG-1"].setRotation(0);
|
||||
} else {
|
||||
me["BLEED-ENG-1"].setRotation(90 * D2R);
|
||||
}
|
||||
|
||||
if (eng_valve_state == eng_valve1.getValue()) {
|
||||
if (eng_valve_state == bleed_valve_cur) {
|
||||
me["BLEED-ENG-1"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["BLEED-ENG-1"].setColor(0.7333,0.3803,0);
|
||||
|
@ -758,21 +771,25 @@ var canvas_lowerECAM_bleed = {
|
|||
|
||||
# ENG BLEED valve 2
|
||||
eng_valve_state = systems.PNEU.Switch.bleed2.getValue();
|
||||
|
||||
if (eng_valve2.getValue() == 0) {
|
||||
bleed_valve_cur = eng_valve2.getValue();
|
||||
|
||||
if (bleed_valve_cur == 0) {
|
||||
me["BLEED-ENG-2"].setRotation(0);
|
||||
} else {
|
||||
me["BLEED-ENG-2"].setRotation(90 * D2R);
|
||||
}
|
||||
|
||||
if (eng_valve_state == eng_valve1.getValue()) {
|
||||
if (eng_valve_state == bleed_valve_cur) {
|
||||
me["BLEED-ENG-2"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["BLEED-ENG-2"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
# Precooler inlet 1
|
||||
if (bmc1working.getValue()) {
|
||||
bmc1 = bmc1working.getValue();
|
||||
bmc2 = bmc2working.getValue();
|
||||
|
||||
if (bmc1) {
|
||||
var precooler_psi = precooler1_psi.getValue();
|
||||
me["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", math.round(precooler_psi)));
|
||||
if (precooler_psi < 4 or precooler_psi > 57) {
|
||||
|
@ -786,7 +803,7 @@ var canvas_lowerECAM_bleed = {
|
|||
}
|
||||
|
||||
# Precooler inlet 2
|
||||
if (bmc2working.getValue()) {
|
||||
if (bmc2) {
|
||||
var precooler_psi = precooler2_psi.getValue();
|
||||
me["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", math.round(precooler_psi)));
|
||||
if (precooler_psi < 4 or precooler_psi > 57) {
|
||||
|
@ -800,7 +817,7 @@ var canvas_lowerECAM_bleed = {
|
|||
}
|
||||
|
||||
# Precooler outlet 1
|
||||
if (bmc1working.getValue()) {
|
||||
if (bmc1) {
|
||||
var precooler_temp = precooler1_temp.getValue();
|
||||
me["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", math.round(precooler_temp, 5)));
|
||||
if (systems.PNEU.Switch.bleed1.getValue() and (precooler_temp < 150 or precooler1_ovht.getValue())) {
|
||||
|
@ -814,7 +831,7 @@ var canvas_lowerECAM_bleed = {
|
|||
}
|
||||
|
||||
# Precooler outlet 2
|
||||
if (bmc2working.getValue()) {
|
||||
if (bmc2) {
|
||||
var precooler_temp = precooler2_temp.getValue();
|
||||
me["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", math.round(precooler_temp, 5)));
|
||||
if (systems.PNEU.Switch.bleed2.getValue() and (precooler_temp < 150 or precooler2_ovht.getValue())) {
|
||||
|
@ -858,6 +875,7 @@ var canvas_lowerECAM_bleed = {
|
|||
}
|
||||
|
||||
# PACK 1 -----------------------------------------
|
||||
packValveState = systems.PNEU.Valves.pack1.getValue();
|
||||
me["BLEED-Pack-1-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack1OutTemp.getValue(), 5)));
|
||||
me["BLEED-Pack-1-Comp-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack1OutletTemp.getValue(), 5)));
|
||||
|
||||
|
@ -867,9 +885,8 @@ var canvas_lowerECAM_bleed = {
|
|||
me["BLEED-Pack-1-Out-Temp"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
var bypass_pos = pack1_bypass.getValue() - 50; # `-50` cause the middel position from where we move the needle is at 50
|
||||
bypass_pos = bypass_pos * D2R;
|
||||
me["BLEED-Pack-1-Bypass-needle"].setRotation(bypass_pos);
|
||||
# `-50` cause the middel position from where we move the needle is at 50
|
||||
me["BLEED-Pack-1-Bypass-needle"].setRotation((pack1_bypass.getValue() - 50) * D2R);
|
||||
|
||||
if (systems.PNEU.Packs.pack1OutletTemp.getValue() > 230) {
|
||||
me["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.7333,0.3803,0);
|
||||
|
@ -877,29 +894,24 @@ var canvas_lowerECAM_bleed = {
|
|||
me["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
var flow_pos = systems.PNEU.Packs.packFlow1.getValue() * D2R;
|
||||
me["BLEED-Pack-1-Packflow-needle"].setRotation(flow_pos);
|
||||
me["BLEED-Pack-1-Packflow-needle"].setRotation(systems.PNEU.Packs.packFlow1.getValue() * D2R);
|
||||
|
||||
if (systems.PNEU.Valves.pack1.getValue() == 0) {
|
||||
if (packValveState == 0) {
|
||||
me["BLEED-Pack-1-Packflow-needle"].setColorFill(0.7333,0.3803,0);
|
||||
me["BLEED-Pack-1-Flow-Valve"].setRotation(90 * D2R);
|
||||
} else {
|
||||
me["BLEED-Pack-1-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
var pack_state = systems.PNEU.Valves.pack1.getValue();
|
||||
if (pack_state == 1) {
|
||||
me["BLEED-Pack-1-Flow-Valve"].setRotation(0);
|
||||
} else {
|
||||
me["BLEED-Pack-1-Flow-Valve"].setRotation(90 * D2R);
|
||||
}
|
||||
|
||||
if (pack_state == systems.PNEU.Switch.pack1.getValue()) {
|
||||
if (packValveState == systems.PNEU.Switch.pack1.getValue()) {
|
||||
me["BLEED-Pack-1-Flow-Valve"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["BLEED-Pack-1-Flow-Valve"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
# PACK 2 -----------------------------------------
|
||||
packValveState = systems.PNEU.Valves.pack2.getValue();
|
||||
me["BLEED-Pack-2-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack2OutTemp.getValue(), 5)));
|
||||
me["BLEED-Pack-2-Comp-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack2OutletTemp.getValue(), 5)));
|
||||
|
||||
|
@ -909,9 +921,7 @@ var canvas_lowerECAM_bleed = {
|
|||
me["BLEED-Pack-2-Out-Temp"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
var bypass_pos = pack2_bypass.getValue() - 50; # `-50` cause the middel position from where we move the needle is at 50
|
||||
bypass_pos = bypass_pos * D2R;
|
||||
me["BLEED-Pack-2-Bypass-needle"].setRotation(bypass_pos);
|
||||
me["BLEED-Pack-2-Bypass-needle"].setRotation((pack2_bypass.getValue() - 50) * D2R);
|
||||
|
||||
if (systems.PNEU.Packs.pack2OutletTemp.getValue() > 230) {
|
||||
me["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.7333,0.3803,0);
|
||||
|
@ -919,35 +929,30 @@ var canvas_lowerECAM_bleed = {
|
|||
me["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
flow_pos = systems.PNEU.Packs.packFlow2.getValue() * D2R;
|
||||
me["BLEED-Pack-2-Packflow-needle"].setRotation(flow_pos);
|
||||
me["BLEED-Pack-2-Packflow-needle"].setRotation(systems.PNEU.Packs.packFlow2.getValue() * D2R);
|
||||
|
||||
if (systems.PNEU.Valves.pack2.getValue() == 0) {
|
||||
if (packValveState == 0) {
|
||||
me["BLEED-Pack-2-Packflow-needle"].setColorFill(0.7333,0.3803,0);
|
||||
me["BLEED-Pack-2-Flow-Valve"].setRotation(90 * D2R);
|
||||
} else {
|
||||
me["BLEED-Pack-2-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
var pack_state = systems.PNEU.Valves.pack2.getValue();
|
||||
if (pack_state == 1) {
|
||||
me["BLEED-Pack-2-Flow-Valve"].setRotation(0);
|
||||
} else {
|
||||
me["BLEED-Pack-2-Flow-Valve"].setRotation(90 * D2R);
|
||||
}
|
||||
|
||||
if (pack_state == systems.PNEU.Switch.pack2.getValue()) {
|
||||
if (packValveState == systems.PNEU.Switch.pack2.getValue()) {
|
||||
me["BLEED-Pack-2-Flow-Valve"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["BLEED-Pack-2-Flow-Valve"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
# Ram Air
|
||||
if (systems.PNEU.Valves.ramAir.getValue() == 0) {
|
||||
ramAirState = systems.PNEU.Valves.ramAir.getValue();
|
||||
if (ramAirState == 0) {
|
||||
me["BLEED-Ram-Air"].setRotation(90 * D2R);
|
||||
me["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941);
|
||||
me["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941);
|
||||
me["BLEED-Ram-Air-connection"].hide();
|
||||
} elsif (systems.PNEU.Valves.ramAir.getValue()) {
|
||||
} elsif (ramAirState) {
|
||||
me["BLEED-Ram-Air"].setRotation(0);
|
||||
if (pts.Gear.wow[1].getValue()) {
|
||||
me["BLEED-Ram-Air"].setColor(0.7333,0.3803,0);
|
||||
|
@ -966,7 +971,7 @@ var canvas_lowerECAM_bleed = {
|
|||
|
||||
# Triangles
|
||||
if (systems.PNEU.Valves.pack1.getValue() == 0 and systems.PNEU.Valves.pack2.getValue() == 0) {
|
||||
if (pts.Gear.wow[1].getValue() or systems.PNEU.Valves.ramAir.getValue() != 1) {
|
||||
if (pts.Gear.wow[1].getValue() or ramAirState != 1) {
|
||||
me["BLEED-cond-1"].setColor(0.7333,0.3803,0);
|
||||
me["BLEED-cond-2"].setColor(0.7333,0.3803,0);
|
||||
me["BLEED-cond-3"].setColor(0.7333,0.3803,0);
|
||||
|
@ -1951,12 +1956,16 @@ var canvas_lowerECAM_fctl = {
|
|||
return["TAT","SAT","GW","UTCh","UTCm","GW-weight-unit","ailL","ailR","elevL","elevR","PTcc","PT","PTupdn","elac1","elac2","sec1","sec2","sec3","ailLblue","ailRblue","elevLblue","elevRblue","rudderblue","ailLgreen","ailRgreen","elevLgreen","ruddergreen","PTgreen",
|
||||
"elevRyellow","rudderyellow","PTyellow","rudder","spdbrkblue","spdbrkgreen","spdbrkyellow","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex","spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex",
|
||||
"spoiler1Lrt","spoiler2Lex","spoiler2Lrt","spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf","spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf",
|
||||
"spoiler5Lf","ailLscale","ailRscale","path4249","path4249-3","path4249-3-6-7","path4249-3-6-7-5","path4249-3-6"];
|
||||
"spoiler5Lf","ailLscale","ailRscale","path4249","path4249-3","path4249-3-6-7","path4249-3-6-7-5","path4249-3-6","text4343"];
|
||||
},
|
||||
update: func() {
|
||||
blue_psi = systems.HYD.Psi.blue.getValue();
|
||||
green_psi = systems.HYD.Psi.green.getValue();
|
||||
yellow_psi = systems.HYD.Psi.yellow.getValue();
|
||||
elac1Node = fbw.FBW.Computers.elac1.getValue();
|
||||
elac2Node = fbw.FBW.Computers.elac2.getValue();
|
||||
sec1Node = fbw.FBW.Computers.sec1.getValue();
|
||||
sec2Node = fbw.FBW.Computers.sec2.getValue();
|
||||
|
||||
# Pitch Trim
|
||||
me["PT"].setText(sprintf("%2.1f", math.round(elevator_trim_deg.getValue(), 0.1)));
|
||||
|
@ -1976,16 +1985,26 @@ var canvas_lowerECAM_fctl = {
|
|||
me["PTupdn"].setColor(0.0509,0.7529,0.2941);
|
||||
me["PTcc"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
if (fbw.FBW.Failures.ths.getBoolValue()) {
|
||||
me["text4343"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["text4343"].setColor(0.8078,0.8039,0.8078);
|
||||
}
|
||||
|
||||
# Ailerons
|
||||
me["ailL"].setTranslation(0, aileron_ind_left.getValue() * 100);
|
||||
me["ailR"].setTranslation(0, aileron_ind_right.getValue() * (-100));
|
||||
|
||||
if (blue_psi < 1500 and green_psi < 1500) {
|
||||
if ((blue_psi < 1500 or !elac1Node) and (green_psi < 1500 or !elac2Node)) {
|
||||
me["ailL"].setColor(0.7333,0.3803,0);
|
||||
me["ailR"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["ailL"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
if ((green_psi < 1500 or !elac1Node) and (blue_psi < 1500 or !elac2Node)) {
|
||||
me["ailR"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["ailR"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
|
@ -1993,13 +2012,13 @@ var canvas_lowerECAM_fctl = {
|
|||
me["elevL"].setTranslation(0, elevator_ind_left.getValue() * 100);
|
||||
me["elevR"].setTranslation(0, elevator_ind_right.getValue() * 100);
|
||||
|
||||
if (blue_psi < 1500 and green_psi < 1500) {
|
||||
if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (green_psi < 1500 or (!elac2Node and !sec2Node))) {
|
||||
me["elevL"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["elevL"].setColor(0.0509,0.7529,0.2941);
|
||||
}
|
||||
|
||||
if (blue_psi < 1500 and yellow_psi < 1500) {
|
||||
if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (yellow_psi < 1500 or (!elac2Node and !sec2Node))) {
|
||||
me["elevR"].setColor(0.7333,0.3803,0);
|
||||
} else {
|
||||
me["elevR"].setColor(0.0509,0.7529,0.2941);
|
||||
|
@ -2237,34 +2256,34 @@ var canvas_lowerECAM_fctl = {
|
|||
}
|
||||
|
||||
# Flight Computers
|
||||
if (fbw.FBW.Computers.elac1.getValue()) {
|
||||
if (elac1Node) {
|
||||
me["elac1"].setColor(0.0509,0.7529,0.2941);
|
||||
me["path4249"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (!fbw.FBW.Computers.elac1.getValue() or fbw.FBW.Failures.elac1.getValue()) {
|
||||
} else if (!elac1Node or fbw.FBW.Failures.elac1.getValue()) {
|
||||
me["elac1"].setColor(0.7333,0.3803,0);
|
||||
me["path4249"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (fbw.FBW.Computers.elac2.getValue()) {
|
||||
if (elac2Node) {
|
||||
me["elac2"].setColor(0.0509,0.7529,0.2941);
|
||||
me["path4249-3"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (!fbw.FBW.Computers.elac2.getValue() or fbw.FBW.Failures.elac2.getValue()) {
|
||||
} else if (!elac2Node or fbw.FBW.Failures.elac2.getValue()) {
|
||||
me["elac2"].setColor(0.7333,0.3803,0);
|
||||
me["path4249-3"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (fbw.FBW.Computers.sec1.getValue()) {
|
||||
if (sec1Node) {
|
||||
me["sec1"].setColor(0.0509,0.7529,0.2941);
|
||||
me["path4249-3-6-7"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (!fbw.FBW.Computers.sec1.getValue() or fbw.FBW.Failures.sec1.getValue()) {
|
||||
} else if (!sec1Node or fbw.FBW.Failures.sec1.getValue()) {
|
||||
me["sec1"].setColor(0.7333,0.3803,0);
|
||||
me["path4249-3-6-7"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (fbw.FBW.Computers.sec2.getValue()) {
|
||||
if (sec2Node) {
|
||||
me["sec2"].setColor(0.0509,0.7529,0.2941);
|
||||
me["path4249-3-6-7-5"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (!fbw.FBW.Computers.sec2.getValue() or fbw.FBW.Failures.sec2.getValue()) {
|
||||
} else if (!sec2Node or fbw.FBW.Failures.sec2.getValue()) {
|
||||
me["sec2"].setColor(0.7333,0.3803,0);
|
||||
me["path4249-3-6-7-5"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
@ -2279,10 +2298,23 @@ var canvas_lowerECAM_fctl = {
|
|||
|
||||
# Hydraulic Indicators
|
||||
if (blue_psi >= 1500) {
|
||||
me["ailLblue"].setColor(0.0509,0.7529,0.2941);
|
||||
me["ailRblue"].setColor(0.0509,0.7529,0.2941);
|
||||
me["elevLblue"].setColor(0.0509,0.7529,0.2941);
|
||||
me["elevRblue"].setColor(0.0509,0.7529,0.2941);
|
||||
if (elac1Node) {
|
||||
me["ailLblue"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["ailLblue"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
if (elac1Node or sec1Node) {
|
||||
me["elevLblue"].setColor(0.0509,0.7529,0.2941);
|
||||
me["elevRblue"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["elevLblue"].setColor(0.7333,0.3803,0);
|
||||
me["elevRblue"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
if (elac2Node) {
|
||||
me["ailRblue"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["ailRblue"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
me["rudderblue"].setColor(0.0509,0.7529,0.2941);
|
||||
me["spdbrkblue"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
|
@ -2295,9 +2327,22 @@ var canvas_lowerECAM_fctl = {
|
|||
}
|
||||
|
||||
if (green_psi >= 1500) {
|
||||
me["ailLgreen"].setColor(0.0509,0.7529,0.2941);
|
||||
me["ailRgreen"].setColor(0.0509,0.7529,0.2941);
|
||||
me["elevLgreen"].setColor(0.0509,0.7529,0.2941);
|
||||
if (elac2Node or sec2Node) {
|
||||
me["elevLgreen"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["elevLgreen"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
|
||||
if (elac2Node) {
|
||||
me["ailLgreen"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["ailLgreen"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
if (elac1Node) {
|
||||
me["ailRgreen"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["ailRgreen"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
me["ruddergreen"].setColor(0.0509,0.7529,0.2941);
|
||||
me["PTgreen"].setColor(0.0509,0.7529,0.2941);
|
||||
me["spdbrkgreen"].setColor(0.0509,0.7529,0.2941);
|
||||
|
@ -2311,7 +2356,11 @@ var canvas_lowerECAM_fctl = {
|
|||
}
|
||||
|
||||
if (yellow_psi >= 1500) {
|
||||
me["elevRyellow"].setColor(0.0509,0.7529,0.2941);
|
||||
if (elac2Node or sec2Node) {
|
||||
me["elevRyellow"].setColor(0.0509,0.7529,0.2941);
|
||||
} else {
|
||||
me["elevRyellow"].setColor(0.7333,0.3803,0);
|
||||
}
|
||||
me["rudderyellow"].setColor(0.0509,0.7529,0.2941);
|
||||
me["PTyellow"].setColor(0.0509,0.7529,0.2941);
|
||||
me["spdbrkyellow"].setColor(0.0509,0.7529,0.2941);
|
||||
|
|
|
@ -2993,16 +2993,16 @@ var canvas_MCDU_base = {
|
|||
|
||||
me.fontSizeLeft(normal, normal, small, small, small, small);
|
||||
me.fontSizeCenter(small, small, normal, small, small, small);
|
||||
me.fontSizeRight(normal, normal, normal, small, small, small);
|
||||
me.fontSizeRight(small, small, normal, small, small, small);
|
||||
me["Simple_C3B"].setFontSize(small);
|
||||
|
||||
me.colorLeft("grn", "grn", "wht", "wht", "wht", "wht");
|
||||
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorCenter("grn", "grn", "blu", "grn", "blu", "wht");
|
||||
me.colorCenter("wht", "wht", "blu", "grn", "blu", "wht");
|
||||
me["Simple_C3B"].setColor(BLUE);
|
||||
me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRight("grn", "grn", "blu", "wht", "wht", "wht");
|
||||
me.colorRight("wht", "wht", "blu", "wht", "wht", "wht");
|
||||
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
|
||||
|
||||
|
@ -3010,12 +3010,12 @@ var canvas_MCDU_base = {
|
|||
}
|
||||
|
||||
if (!engrdy.getBoolValue() or !fmgc.FMGCInternal.toFromSet) {
|
||||
me["Simple_L1"].setText("----");
|
||||
me["Simple_L1"].setText("NONE");
|
||||
} else {
|
||||
me["Simple_L1"].setText(fmgc.FMGCInternal.arrApt);
|
||||
}
|
||||
if (!engrdy.getBoolValue() or !fmgc.FMGCInternal.altAirportSet) {
|
||||
me["Simple_L2"].setText("----");
|
||||
me["Simple_L2"].setText("NONE");
|
||||
} else {
|
||||
me["Simple_L2"].setText(fmgc.FMGCInternal.altAirport);
|
||||
}
|
||||
|
@ -3023,7 +3023,7 @@ var canvas_MCDU_base = {
|
|||
me["Simple_L1S"].setText("AT");
|
||||
me["Simple_L2S"].setText("X");
|
||||
me["Simple_L3S"].setText("RTE RSV/PCT");
|
||||
me["Simple_L4S"].setText("ALTN/TIME");
|
||||
me["Simple_L4S"].setText("ALTN /TIME");
|
||||
me["Simple_L5S"].setText("FINAL/TIME");
|
||||
me["Simple_L6S"].setText("MIN DEST FOB");
|
||||
|
||||
|
@ -3031,11 +3031,11 @@ var canvas_MCDU_base = {
|
|||
me["Simple_C1"].setText("----");
|
||||
me["Simple_C2"].setText("----");
|
||||
|
||||
me["Simple_R1"].setText("-.-");
|
||||
me["Simple_R2"].setText("-.-");
|
||||
me["Simple_R1"].setText("---.-");
|
||||
me["Simple_R2"].setText("---.-");
|
||||
me["Simple_R1S"].setText("EFOB");
|
||||
me["Simple_R2S"].setText("X");
|
||||
me["Simple_R4S"].setText("FOB ");
|
||||
me["Simple_R4S"].setText("FOB ");
|
||||
me["Simple_R5S"].setText(" GW/ CG");
|
||||
me["Simple_R6S"].setText("EXTRA/TIME");
|
||||
|
||||
|
@ -3059,7 +3059,7 @@ var canvas_MCDU_base = {
|
|||
me["Simple_L6"].setText("---.-");
|
||||
|
||||
me["Simple_R4"].setText("---.-/FF+FQ");
|
||||
me["Simple_R5"].setText("---.-/---.-");
|
||||
me["Simple_R5"].setText("---.-/ --.-");
|
||||
me["Simple_R6"].setText("---.-/----");
|
||||
|
||||
me.colorLeft("ack", "ack", "wht", "wht", "wht", "wht");
|
||||
|
|
|
@ -14,7 +14,6 @@ var updateL = 0;
|
|||
var updateR = 0;
|
||||
var elapsedtime = 0;
|
||||
var altTens = 0;
|
||||
var altPolarity = "";
|
||||
var track_diff = 0;
|
||||
var AICenter = nil;
|
||||
|
||||
|
@ -69,9 +68,6 @@ var alt_inhg = props.globals.getNode("/instrumentation/altimeter/setting-inhg",
|
|||
var target_altitude = props.globals.getNode("/autopilot/settings/target-altitude-ft", 1);
|
||||
var altitude = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1);
|
||||
var altitude_pfd = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft-pfd", 1);
|
||||
var alt_diff = props.globals.getNode("/instrumentation/pfd/alt-diff", 1);
|
||||
var ground_diff = props.globals.getNode("/instrumentation/pfd/ground-diff", 1);
|
||||
var landing_diff = props.globals.getNode("/instrumentation/pfd/landing-diff", 1);
|
||||
var ap_alt = props.globals.getNode("/it-autoflight/internal/alt", 1);
|
||||
var vs_needle = props.globals.getNode("/instrumentation/pfd/vs-needle", 1);
|
||||
var vs_digit = props.globals.getNode("/instrumentation/pfd/vs-digit-trans", 1);
|
||||
|
@ -141,8 +137,6 @@ var air_data_switch = props.globals.getNode("/controls/navigation/switching/air-
|
|||
|
||||
# Create Nodes:
|
||||
var alt_diff = props.globals.initNode("/instrumentation/pfd/alt-diff", 0.0, "DOUBLE");
|
||||
var ground_diff = props.globals.initNode("/instrumentation/pfd/ground-diff", 0.0, "DOUBLE");
|
||||
var landing_diff = props.globals.initNode("/instrumentation/pfd/landing-diff", 0.0, "DOUBLE");
|
||||
var heading = props.globals.initNode("/instrumentation/pfd/heading-deg", 0.0, "DOUBLE");
|
||||
var 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");
|
||||
|
@ -225,7 +219,7 @@ var canvas_PFD_base = {
|
|||
"FMA_athr_box","FMA_Middle1","FMA_Middle2","ALPHA_MAX","ALPHA_PROT","ALPHA_SW","ALPHA_bars","VLS_min","ASI_max","ASI_scale","ASI_target","ASI_mach","ASI_mach_decimal","ASI_trend_up","ASI_trend_down","ASI_digit_UP","ASI_digit_DN","ASI_decimal_UP",
|
||||
"ASI_decimal_DN","ASI_index","ASI_error","ASI_group","ASI_frame","AI_center","AI_bank","AI_bank_lim","AI_bank_lim_X","AI_pitch_lim","AI_pitch_lim_X","AI_slipskid","AI_horizon","AI_horizon_ground","AI_horizon_sky","AI_stick","AI_stick_pos","AI_heading",
|
||||
"AI_agl_g","AI_agl","AI_error","AI_group","FD_roll","FD_pitch","ALT_box_flash","ALT_box","ALT_box_amber","ALT_scale","ALT_target","ALT_target_digit","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_digit_UP",
|
||||
"ALT_digit_DN","ALT_error","ALT_group","ALT_group2","ALT_frame","VS_pointer","VS_box","VS_digit","VS_error","VS_group","QNH","QNH_setting","QNH_std","QNH_box","LOC_pointer","LOC_scale","GS_scale","GS_pointer","CRS_pointer","HDG_target","HDG_scale",
|
||||
"ALT_digit_DN","ALT_error","ALT_neg","ALT_group","ALT_group2","ALT_frame","VS_pointer","VS_box","VS_digit","VS_error","VS_group","QNH","QNH_setting","QNH_std","QNH_box","LOC_pointer","LOC_scale","GS_scale","GS_pointer","CRS_pointer","HDG_target","HDG_scale",
|
||||
"HDG_one","HDG_two","HDG_three","HDG_four","HDG_five","HDG_six","HDG_seven","HDG_digit_L","HDG_digit_R","HDG_error","HDG_group","HDG_frame","TRK_pointer","machError","ilsError","ils_code","ils_freq","dme_dist","dme_dist_legend","ILS_HDG_R","ILS_HDG_L",
|
||||
"ILS_right","ILS_left","outerMarker","middleMarker","innerMarker","v1_group","v1_text","vr_speed","F_target","S_target","FS_targets","flap_max","clean_speed","ground","ground_ref","FPV","spdLimError"];
|
||||
},
|
||||
|
@ -298,8 +292,10 @@ var canvas_PFD_base = {
|
|||
PFD_1_test.page.show();
|
||||
} else {
|
||||
PFD_1.updateFast();
|
||||
PFD_1.update();
|
||||
updateL = 1;
|
||||
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();
|
||||
}
|
||||
|
@ -321,8 +317,10 @@ var canvas_PFD_base = {
|
|||
PFD_2_test.page.show();
|
||||
} else {
|
||||
PFD_2.updateFast();
|
||||
PFD_2.update();
|
||||
updateR = 1;
|
||||
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();
|
||||
}
|
||||
|
@ -514,7 +512,8 @@ var canvas_PFD_base = {
|
|||
me["FMA_rollarm_box"].hide();
|
||||
me["FMA_Middle1"].hide();
|
||||
me["FMA_Middle2"].hide();
|
||||
if (fbw_curlaw == 2) {
|
||||
|
||||
if (ecam.directLaw.active) {
|
||||
me["FMA_ctr_msg"].setText("USE MAN PITCH TRIM");
|
||||
me["FMA_ctr_msg"].setColor(0.7333,0.3803,0);
|
||||
me["FMA_ctr_msg"].show();
|
||||
|
@ -525,6 +524,7 @@ var canvas_PFD_base = {
|
|||
} else {
|
||||
me["FMA_ctr_msg"].hide();
|
||||
}
|
||||
|
||||
me["FMA_combined"].show();
|
||||
if (pitch_box.getValue() == 1 and pitch_mode_act != " ") {
|
||||
me["FMA_combined_box"].show();
|
||||
|
@ -534,7 +534,7 @@ var canvas_PFD_base = {
|
|||
} else {
|
||||
me["FMA_combined"].hide();
|
||||
me["FMA_combined_box"].hide();
|
||||
if (fbw_curlaw == 2) {
|
||||
if (ecam.directLaw.active) {
|
||||
me["FMA_ctr_msg"].setText("USE MAN PITCH TRIM");
|
||||
me["FMA_ctr_msg"].setColor(0.7333,0.3803,0);
|
||||
me["FMA_Middle1"].hide();
|
||||
|
@ -1088,7 +1088,7 @@ var canvas_PFD_1 = {
|
|||
wow2_act = wow2.getValue();
|
||||
|
||||
# Errors
|
||||
if (systems.ADIRS.ADIRunits[0].aligned == 1 or (systems.ADIRS.ADIRunits[2].aligned == 1 and att_switch.getValue() == -1)) {
|
||||
if (systems.ADIRS.ADIRunits[0].operating == 1 or (systems.ADIRS.ADIRunits[2].operating == 1 and att_switch.getValue() == -1)) {
|
||||
me["AI_group"].show();
|
||||
me["HDG_group"].show();
|
||||
me["AI_error"].hide();
|
||||
|
@ -1132,7 +1132,7 @@ var canvas_PFD_1 = {
|
|||
me["FPV"].hide();
|
||||
} else {
|
||||
var aoa = me.getAOAForPFD1();
|
||||
if (aoa == nil or (systems.ADIRS.ADIRunits[0].aligned != 1 and att_switch.getValue() == 0) or (systems.ADIRS.ADIRunits[2].aligned != 1 and att_switch.getValue() == -1)){
|
||||
if (aoa == nil or (systems.ADIRS.ADIRunits[0].operating != 1 and att_switch.getValue() == 0) or (systems.ADIRS.ADIRunits[2].operating != 1 and att_switch.getValue() == -1)){
|
||||
me["FPV"].hide();
|
||||
} else {
|
||||
var roll_deg = roll.getValue() or 0;
|
||||
|
@ -1270,7 +1270,6 @@ var canvas_PFD_1 = {
|
|||
}
|
||||
|
||||
me["ASI_scale"].setTranslation(0, me.ASI * 6.6);
|
||||
|
||||
if (fbw.FBW.Computers.fac1.getValue() or fbw.FBW.Computers.fac2.getValue()) {
|
||||
me["ASI_max"].setTranslation(0, me.ASImax * -6.6);
|
||||
me["ASI_max"].show();
|
||||
|
@ -1687,6 +1686,7 @@ var canvas_PFD_1 = {
|
|||
me["ALT_error"].hide();
|
||||
me["ALT_frame"].setColor(1,1,1);
|
||||
me["ALT_group"].show();
|
||||
me["ALT_tens"].show();
|
||||
me["ALT_box"].show();
|
||||
me["ALT_group2"].show();
|
||||
me["ALT_scale"].show();
|
||||
|
@ -1708,13 +1708,13 @@ var canvas_PFD_1 = {
|
|||
me["ALT_two"].setText(sprintf("%03d", abs(me.middleAltText-5)));
|
||||
me["ALT_one"].setText(sprintf("%03d", abs(me.middleAltText-10)));
|
||||
|
||||
if (altitude.getValue() < 0) {
|
||||
altPolarity = "-";
|
||||
if (me.altitude < 0) {
|
||||
me["ALT_neg"].show();
|
||||
} else {
|
||||
altPolarity = "";
|
||||
me["ALT_neg"].hide();
|
||||
}
|
||||
|
||||
me["ALT_digits"].setText(sprintf("%s%d", altPolarity, dmc.DMController.DMCs[0].outputs[3].getValue()));
|
||||
me["ALT_digits"].setText(sprintf("%d", dmc.DMController.DMCs[0].outputs[3].getValue()));
|
||||
altTens = num(right(sprintf("%02d", me.altitude), 2));
|
||||
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
||||
|
||||
|
@ -1754,7 +1754,7 @@ var canvas_PFD_1 = {
|
|||
me["ALT_target"].hide();
|
||||
}
|
||||
|
||||
ground_diff_cur = ground_diff.getValue();
|
||||
ground_diff_cur = -gear_agl.getValue();
|
||||
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
||||
me["ground_ref"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
||||
me["ground_ref"].show();
|
||||
|
@ -1762,10 +1762,9 @@ var canvas_PFD_1 = {
|
|||
me["ground_ref"].hide();
|
||||
}
|
||||
|
||||
landing_diff_cur = landing_diff.getValue();
|
||||
if (landing_diff_cur >= -565 and landing_diff_cur <= 565) {
|
||||
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
||||
if ((fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
||||
me["ground"].setTranslation(0, (landing_diff_cur / 100) * -48.66856);
|
||||
me["ground"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
||||
me["ground"].show();
|
||||
} else {
|
||||
me["ground"].hide();
|
||||
|
@ -1822,6 +1821,8 @@ var canvas_PFD_1 = {
|
|||
me["ALT_error"].show();
|
||||
me["ALT_frame"].setColor(1,0,0);
|
||||
me["ALT_group"].hide();
|
||||
me["ALT_tens"].hide();
|
||||
me["ALT_neg"].hide();
|
||||
me["ALT_group2"].hide();
|
||||
me["ALT_scale"].hide();
|
||||
me["ALT_box_flash"].hide();
|
||||
|
@ -1870,7 +1871,7 @@ var canvas_PFD_2 = {
|
|||
wow2_act = wow2.getValue();
|
||||
|
||||
# Errors
|
||||
if (systems.ADIRS.ADIRunits[1].aligned == 1 or (systems.ADIRS.ADIRunits[2].aligned == 1 and att_switch.getValue() == 1)) {
|
||||
if (systems.ADIRS.ADIRunits[1].operating == 1 or (systems.ADIRS.ADIRunits[2].operating == 1 and att_switch.getValue() == 1)) {
|
||||
me["AI_group"].show();
|
||||
me["HDG_group"].show();
|
||||
me["AI_error"].hide();
|
||||
|
@ -1907,7 +1908,7 @@ var canvas_PFD_2 = {
|
|||
me["FPV"].hide();
|
||||
} else {
|
||||
var aoa = me.getAOAForPFD2();
|
||||
if (aoa == nil or (systems.ADIRS.ADIRunits[1].aligned != 1 and att_switch.getValue() == 0) or (systems.ADIRS.ADIRunits[2].aligned != 1 and att_switch.getValue() == 1)) {
|
||||
if (aoa == nil or (systems.ADIRS.ADIRunits[1].operating != 1 and att_switch.getValue() == 0) or (systems.ADIRS.ADIRunits[2].operating != 1 and att_switch.getValue() == 1)) {
|
||||
me["FPV"].hide();
|
||||
} else {
|
||||
var roll_deg = roll.getValue() or 0;
|
||||
|
@ -2456,15 +2457,16 @@ var canvas_PFD_2 = {
|
|||
me["machError"].show();
|
||||
}
|
||||
|
||||
if (dmc.DMController.DMCs[0].outputs[1] != nil) {
|
||||
if (dmc.DMController.DMCs[1].outputs[1] != nil) {
|
||||
me["ALT_error"].hide();
|
||||
me["ALT_frame"].setColor(1,1,1);
|
||||
me["ALT_group"].show();
|
||||
me["ALT_tens"].show();
|
||||
me["ALT_box"].show();
|
||||
me["ALT_group2"].show();
|
||||
me["ALT_scale"].show();
|
||||
|
||||
me.altitude = dmc.DMController.DMCs[0].outputs[1].getValue();
|
||||
me.altitude = dmc.DMController.DMCs[1].outputs[1].getValue();
|
||||
me.altOffset = me.altitude / 500 - int(me.altitude / 500);
|
||||
me.middleAltText = roundaboutAlt(me.altitude / 100);
|
||||
me.middleAltOffset = nil;
|
||||
|
@ -2481,13 +2483,13 @@ var canvas_PFD_2 = {
|
|||
me["ALT_two"].setText(sprintf("%03d", abs(me.middleAltText-5)));
|
||||
me["ALT_one"].setText(sprintf("%03d", abs(me.middleAltText-10)));
|
||||
|
||||
if (altitude.getValue() < 0) {
|
||||
altPolarity = "-";
|
||||
if (me.altitude < 0) {
|
||||
me["ALT_neg"].show();
|
||||
} else {
|
||||
altPolarity = "";
|
||||
me["ALT_neg"].hide();
|
||||
}
|
||||
|
||||
me["ALT_digits"].setText(sprintf("%s%d", altPolarity, dmc.DMController.DMCs[0].outputs[3].getValue()));
|
||||
me["ALT_digits"].setText(sprintf("%d", dmc.DMController.DMCs[1].outputs[3].getValue()));
|
||||
altTens = num(right(sprintf("%02d", me.altitude), 2));
|
||||
me["ALT_tens"].setTranslation(0, altTens * 1.392);
|
||||
|
||||
|
@ -2527,7 +2529,7 @@ var canvas_PFD_2 = {
|
|||
me["ALT_target"].hide();
|
||||
}
|
||||
|
||||
ground_diff_cur = ground_diff.getValue();
|
||||
ground_diff_cur = -gear_agl.getValue();
|
||||
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
||||
me["ground_ref"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
||||
me["ground_ref"].show();
|
||||
|
@ -2535,10 +2537,9 @@ var canvas_PFD_2 = {
|
|||
me["ground_ref"].hide();
|
||||
}
|
||||
|
||||
landing_diff_cur = landing_diff.getValue();
|
||||
if (landing_diff_cur >= -565 and landing_diff_cur <= 565) {
|
||||
if (ground_diff_cur >= -565 and ground_diff_cur <= 565) {
|
||||
if ((fmgc.FMGCInternal.phase == 5 or fmgc.FMGCInternal.phase == 6) and !wow1.getValue() and !wow2.getValue()) { #add std too
|
||||
me["ground"].setTranslation(0, (landing_diff_cur / 100) * -48.66856);
|
||||
me["ground"].setTranslation(0, (ground_diff_cur / 100) * -48.66856);
|
||||
me["ground"].show();
|
||||
} else {
|
||||
me["ground"].hide();
|
||||
|
@ -2595,6 +2596,8 @@ var canvas_PFD_2 = {
|
|||
me["ALT_error"].show();
|
||||
me["ALT_frame"].setColor(1,0,0);
|
||||
me["ALT_group"].hide();
|
||||
me["ALT_tens"].hide();
|
||||
me["ALT_neg"].hide();
|
||||
me["ALT_group2"].hide();
|
||||
me["ALT_scale"].hide();
|
||||
me["ALT_box_flash"].hide();
|
||||
|
|
|
@ -41,9 +41,9 @@
|
|||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:cy="259.23779"
|
||||
inkscape:cx="201.84998"
|
||||
inkscape:zoom="2.56"
|
||||
inkscape:cy="683.12157"
|
||||
inkscape:cx="1026.1197"
|
||||
inkscape:zoom="1.8101934"
|
||||
showgrid="true"
|
||||
id="namedview371"
|
||||
inkscape:window-height="705"
|
||||
|
@ -2380,78 +2380,20 @@
|
|||
inkscape:connector-curvature="0"
|
||||
id="path1283"
|
||||
d="m 856.4002,481.90842 2.2e-4,-15.92813 h 52.07464 v 93.34657 h -52.07457 v -15.26583"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#ffff00;stroke-width:3.19995;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||
style="fill:#000000;fill-opacity:1;stroke:#ffff00;stroke-width:3.19994998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path1285"
|
||||
d="m 770.31078,481.90873 86.08971,-3.1e-4"
|
||||
style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:3.19995;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||
style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:3.19994998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:3.19995;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
style="fill:none;fill-opacity:1;stroke:#ffff00;stroke-width:3.19994998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
d="m 770.31078,544.06163 86.08971,-6e-4"
|
||||
id="path1287"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<text
|
||||
id="ALT_tens"
|
||||
y="317.73038"
|
||||
x="898.703"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text913"
|
||||
transform="scale(0.96366556,1.0377044)"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="317.73038"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan919">40</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="344.55804"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan4300">20</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="371.38571"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan931">00</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="398.21338"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan927">80</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="425.04105"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan925">60</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="451.86871"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan923">40</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="478.69638"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan921">20</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="505.52405"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan917">00</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="532.35168"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan915">80</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="559.17938"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan4302">60</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
|
@ -2464,8 +2406,16 @@
|
|||
id="tspan973"
|
||||
x="890.99316"
|
||||
y="506.23941"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.8348px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">00</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.83480072px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">00</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
style="display:inline;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:3.22735;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="ground_ref"
|
||||
width="16.287683"
|
||||
height="2088.8245"
|
||||
x="860.0014"
|
||||
y="512.75592"
|
||||
inkscape:label="ground_ref" />
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#515256;stroke-width:3.19995403;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
d="m 216.77826,137.60788 0,-135.9564208"
|
||||
|
@ -6000,6 +5950,64 @@
|
|||
x="680.1095"
|
||||
id="tspan773-9-9"
|
||||
sodipodi:role="line">IM</tspan></text>
|
||||
<text
|
||||
id="ALT_tens"
|
||||
y="317.73038"
|
||||
x="898.703"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text913"
|
||||
transform="scale(0.96366556,1.0377044)"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="317.73038"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan919">40</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="344.55804"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan4300">20</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="371.38571"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan931">00</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="398.21338"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan927">80</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="425.04105"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan925">60</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="451.86871"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan923">40</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="478.69638"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan921">20</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="505.52405"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan917">00</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="532.35175"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan915">80</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="559.17938"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan4302">60</tspan></text>
|
||||
<g
|
||||
inkscape:label="#g5173"
|
||||
id="ALT_box_flash">
|
||||
|
@ -6022,14 +6030,6 @@
|
|||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</g>
|
||||
<rect
|
||||
style="display:inline;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:3.22735;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="ground_ref"
|
||||
width="16.287683"
|
||||
height="2088.8245"
|
||||
x="857.0014"
|
||||
y="512.75592"
|
||||
inkscape:label="ground_ref" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:12px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
|
@ -6233,4 +6233,27 @@
|
|||
x="462.76437"
|
||||
y="500.03757" />
|
||||
</g>
|
||||
<text
|
||||
inkscape:label="#text975"
|
||||
transform="scale(0.95383278,1.0484018)"
|
||||
id="ALT_neg"
|
||||
y="453.28622"
|
||||
x="823.7511"
|
||||
style="font-style:normal;font-weight:normal;line-height:1.10000002;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.10000002;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="453.28622"
|
||||
x="823.7511"
|
||||
id="tspan1791"
|
||||
sodipodi:role="line">N</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.10000002;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="506.08621"
|
||||
x="823.7511"
|
||||
sodipodi:role="line"
|
||||
id="tspan1795">E</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.10000002;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="558.88623"
|
||||
x="823.7511"
|
||||
sodipodi:role="line"
|
||||
id="tspan1797">G</tspan></text>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 339 KiB After Width: | Height: | Size: 340 KiB |
|
@ -972,15 +972,14 @@ var UpperECAMRecipient =
|
|||
EWDRecipient.MainScreen = canvas_upperECAM.new("Aircraft/A320-family/Models/Instruments/Upper-ECAM/res/cfm-eis2.svg", "A320 E/WD CFM", "CFM");
|
||||
}
|
||||
}
|
||||
|
||||
#if (!math.mod(notifications.frameNotification.FrameCount,2)){
|
||||
if (math.mod(notifications.frameNotification.FrameCount,2) == 0) {
|
||||
if (EWDRecipient.type) {
|
||||
EWDRecipient.MainScreen.updateIAE(notification);
|
||||
} else {
|
||||
EWDRecipient.MainScreen.updateCFM(notification);
|
||||
|
||||
}
|
||||
#}
|
||||
}
|
||||
return emesary.Transmitter.ReceiptStatus_OK;
|
||||
}
|
||||
return emesary.Transmitter.ReceiptStatus_NotProcessed;
|
||||
|
|
BIN
Models/Liveries/A320/PW-NEO/Alitalia-eng.png
Normal file
BIN
Models/Liveries/A320/PW-NEO/Alitalia-eng.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 131 KiB |
BIN
Models/Liveries/A320/PW-NEO/Alitalia.png
Normal file
BIN
Models/Liveries/A320/PW-NEO/Alitalia.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 509 KiB |
14
Models/Liveries/A320/PW-NEO/Alitalia.xml
Normal file
14
Models/Liveries/A320/PW-NEO/Alitalia.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<PropertyList>
|
||||
<sim>
|
||||
<model>
|
||||
<livery>
|
||||
<name>Alitalia EI-MSK</name>
|
||||
<texture>Liveries/A320/PW-NEO/Alitalia.png</texture>
|
||||
</livery>
|
||||
<eng>
|
||||
<texture>Liveries/A320/PW-NEO/Alitalia-eng.png</texture>
|
||||
</eng>
|
||||
</model>
|
||||
</sim>
|
||||
</PropertyList>
|
|
@ -35,8 +35,8 @@ var _loop = func() {
|
|||
var y = 0.0;
|
||||
var z = 0.0;
|
||||
# Rollspeed is only adequate if the wheel is touching the ground.
|
||||
if (getprop("gear/gear[0]/wow")) {
|
||||
var V = getprop("gear/gear[0]/rollspeed-ms") * 3.6;
|
||||
if (getprop("/gear/gear[0]/wow")) {
|
||||
var V = getprop("/gear/gear[0]/rollspeed-ms") * 3.6;
|
||||
var deltaV = getprop("/sim/model/autopush/target-speed-km_h") - V;
|
||||
var minus_dV = _V - V;
|
||||
var time = getprop("/sim/time/elapsed-sec");
|
||||
|
@ -59,9 +59,9 @@ var _loop = func() {
|
|||
_V = V;
|
||||
_time = time;
|
||||
if (!_yasim) {
|
||||
force = accel * getprop("fdm/jsbsim/inertia/weight-lbs") * _unitconv;
|
||||
force = accel * getprop("/fdm/jsbsim/inertia/weight-lbs") * _unitconv;
|
||||
} else {
|
||||
force = accel * getprop("fdm/yasim/gross-weight-lbs") * _unitconv;
|
||||
force = accel * getprop("/fdm/yasim/gross-weight-lbs") * _unitconv;
|
||||
}
|
||||
var pitch = getprop("/sim/model/autopush/pitch-deg") * D2R;
|
||||
z = math.sin(pitch);
|
||||
|
@ -85,12 +85,13 @@ var _loop = func() {
|
|||
}
|
||||
|
||||
var _timer = maketimer(0.0167, func{_loop()});
|
||||
_timer.simulatedTime = 1;
|
||||
|
||||
var _start = func() {
|
||||
# Else overwritten by dialog.
|
||||
settimer(func() {
|
||||
setprop("/sim/model/autopush/target-speed-km_h", 0.0)
|
||||
}, 0.1);
|
||||
}, 0.1, 1);
|
||||
_K_p = getprop("/sim/model/autopush/K_p");
|
||||
_F_p = getprop("/sim/model/autopush/F_p");
|
||||
_K_i = getprop("/sim/model/autopush/K_i");
|
||||
|
|
|
@ -54,7 +54,7 @@ var _loop = func() {
|
|||
D *= NM2M;
|
||||
var (psi_leg, D_leg) = courseAndDistance(_route[_to_wp - 1], _route[_to_wp]);
|
||||
var deltapsi = geo.normdeg180(A - psi_leg);
|
||||
var psi = getprop("orientation/heading-deg") + _push * 180.0;
|
||||
var psi = getprop("/orientation/heading-deg") + _push * 180.0;
|
||||
var deltaA = math.min(math.max(_K_psi * geo.normdeg180(A - psi), -_F_psi), _F_psi);
|
||||
var time = getprop("/sim/time/elapsed-sec");
|
||||
var dt = time - _time;
|
||||
|
@ -88,6 +88,7 @@ var _loop = func() {
|
|||
}
|
||||
|
||||
var _timer = maketimer(0.051, func{_loop()});
|
||||
_timer.simulatedTime = 1;
|
||||
|
||||
var _done = func() {
|
||||
stop();
|
||||
|
@ -123,7 +124,7 @@ var start = func() {
|
|||
_debug = getprop("/sim/model/autopush/debug") or 0;
|
||||
if (!_to_wp) {
|
||||
var (psi_park, D_park) = courseAndDistance(_route[0], _route[1]);
|
||||
_push = (abs(geo.normdeg180(getprop("orientation/heading-deg") - psi_park)) > 90.0);
|
||||
_push = (abs(geo.normdeg180(getprop("/orientation/heading-deg") - psi_park)) > 90.0);
|
||||
_sign = 1.0 - 2.0 * _push;
|
||||
_advance_wp();
|
||||
_psi = 0.0;
|
|
@ -89,7 +89,7 @@ var _stop = func(fail = 0) {
|
|||
settimer(func() {
|
||||
_finalize_top_view();
|
||||
gui.popupTip("Done");
|
||||
}, 1.0);
|
||||
}, 1.0, 1);
|
||||
} else {
|
||||
_finalize_top_view();
|
||||
}
|
||||
|
@ -365,12 +365,12 @@ var enter = func() {
|
|||
var wingspan = getprop("/sim/model/autopush/route/wingspan-m");
|
||||
if ((wingspan == nil) or (wingspan == 0.0)) {
|
||||
# JSBSim
|
||||
wingspan = getprop("fdm/jsbsim/metrics/bw-ft");
|
||||
wingspan = getprop("/fdm/jsbsim/metrics/bw-ft");
|
||||
if (wingspan != nil) {
|
||||
wingspan *= FT2M;
|
||||
} else {
|
||||
# YAsim
|
||||
wingspan = getprop("fdm/yasim/model/wings/wing/wing-span");
|
||||
wingspan = getprop("/fdm/yasim/model/wings/wing/wing-span");
|
||||
}
|
||||
setprop("/sim/model/autopush/route/wingspan-m", wingspan);
|
||||
}
|
|
@ -26,6 +26,7 @@ var flash = 0;
|
|||
var hasCleared = 0;
|
||||
var statusFlag = 0;
|
||||
var counter = 0;
|
||||
var counterClear = 0;
|
||||
var noMainMsg = 0;
|
||||
var storeFirstWarning = nil;
|
||||
|
||||
|
@ -73,6 +74,8 @@ var warningNodes = {
|
|||
blueYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/blue-yellow-fuel-consumpt"),
|
||||
greenYellow: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-failure"),
|
||||
greenYellowFuel: props.globals.initNode("/ECAM/warnings/hyd/green-yellow-fuel-consumpt"),
|
||||
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault"),
|
||||
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault"),
|
||||
},
|
||||
Timers: {
|
||||
apuFaultOutput: props.globals.initNode("/ECAM/warnings/timer/apu-fault-output"),
|
||||
|
@ -93,6 +96,8 @@ var warningNodes = {
|
|||
eng1AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-1-closed-output"),
|
||||
eng2AiceNotOpen: props.globals.initNode("/ECAM/warnings/timer/eng-aice-2-closed-output"),
|
||||
LRElevFault: props.globals.initNode("/ECAM/warnings/fctl/lrElevFault-output"),
|
||||
altnLaw: props.globals.initNode("/ECAM/warnings/fctl/altn-law-output"),
|
||||
directLaw: props.globals.initNode("/ECAM/warnings/fctl/direct-law-output"),
|
||||
waiLhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-left"),
|
||||
waiRhiPr: props.globals.initNode("/ECAM/warnings/timer/wing-hi-pr-right"),
|
||||
pack1Fault: props.globals.initNode("/ECAM/warnings/timer/pack-1-fault-2"),
|
||||
|
@ -103,6 +108,8 @@ var warningNodes = {
|
|||
yawDamper1Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-1-fault"),
|
||||
yawDamper2Fault: props.globals.initNode("/ECAM/warnings/timer/yaw-damper-2-fault"),
|
||||
navTerrFault: props.globals.initNode("/ECAM/warnings/timer/nav-gpws-terr-fault"),
|
||||
leftElevFail: props.globals.initNode("/ECAM/warnings/fctl/leftElevFault-output"),
|
||||
rightElevFail: props.globals.initNode("/ECAM/warnings/fctl/rightElevFault-output"),
|
||||
},
|
||||
Flipflops: {
|
||||
apuGenFault: props.globals.initNode("/ECAM/warnings/flipflop/apu-gen-fault"),
|
||||
|
@ -260,22 +267,16 @@ var status = {
|
|||
var ECAM_controller = {
|
||||
_recallCounter: 0,
|
||||
_noneActive: 0,
|
||||
counter: 0,
|
||||
_ready: 0,
|
||||
init: func() {
|
||||
ECAMloopTimer.start();
|
||||
me.counter = 0;
|
||||
me.reset();
|
||||
me._ready = 1;
|
||||
},
|
||||
loop: func() {
|
||||
loop: func(notification) {
|
||||
if (!me._ready) {
|
||||
return;
|
||||
}
|
||||
if ((systems.ELEC.Bus.acEss.getValue() >= 110 or systems.ELEC.Bus.ac2.getValue() >= 110) and !pts.Acconfig.running.getBoolValue()) {
|
||||
# update FWC phases
|
||||
if (me.counter == 0) {
|
||||
phaseLoop();
|
||||
me.counter = 1;
|
||||
return;
|
||||
}
|
||||
me.counter = 0;
|
||||
|
||||
# check active messages
|
||||
messages_priority_3();
|
||||
messages_priority_2();
|
||||
|
@ -303,7 +304,7 @@ var ECAM_controller = {
|
|||
}
|
||||
|
||||
# write to ECAM
|
||||
var counter = 0;
|
||||
counter = 0;
|
||||
|
||||
if (!pts.Acconfig.running.getBoolValue()) {
|
||||
foreach (var w; warnings.vector) {
|
||||
|
@ -352,6 +353,7 @@ var ECAM_controller = {
|
|||
}
|
||||
},
|
||||
reset: func() {
|
||||
me._ready = 0;
|
||||
foreach (var w; warnings.vector) {
|
||||
if (w.active == 1) {
|
||||
w.active = 0;
|
||||
|
@ -390,15 +392,15 @@ var ECAM_controller = {
|
|||
},
|
||||
clear: func() {
|
||||
hasCleared = 0;
|
||||
counter = 0;
|
||||
counterClear = 0;
|
||||
noMainMsg = 0;
|
||||
storeFirstWarning = nil;
|
||||
|
||||
# first go through the first eight, see how many mainMsg there are
|
||||
foreach (var w; warnings.vector) {
|
||||
if (counter >= 8) { break; }
|
||||
if (counterClear >= 8) { break; }
|
||||
if (w.active == 1 and w.clearFlag != 1 and w.isMemo != 1) {
|
||||
counter += 1;
|
||||
counterClear += 1;
|
||||
if (w.isMainMsg == 1) {
|
||||
if (noMainMsg == 0) {
|
||||
storeFirstWarning = w;
|
||||
|
@ -410,11 +412,11 @@ var ECAM_controller = {
|
|||
|
||||
# then, if there is an overflow and noMainMsg == 1, we clear the first shown ones
|
||||
if (leftOverflow.getBoolValue() and noMainMsg == 1) {
|
||||
counter = 0;
|
||||
counterClear = 0;
|
||||
foreach (var w; warnings.vector) {
|
||||
if (counter >= 8) { break; }
|
||||
if (counterClear >= 8) { break; }
|
||||
if (w.active == 1 and w.clearFlag != 1 and w.isMemo != 1) {
|
||||
counter += 1;
|
||||
counterClear += 1;
|
||||
if (w.isMainMsg == 1) { continue; }
|
||||
w.clearFlag = 1;
|
||||
hasCleared = 1;
|
||||
|
@ -482,10 +484,6 @@ setlistener("/systems/electrical/bus/dc-ess", func {
|
|||
}
|
||||
}, 0, 0);
|
||||
|
||||
var ECAMloopTimer = maketimer(0.15, func {
|
||||
ECAM_controller.loop();
|
||||
});
|
||||
|
||||
# Flash Master Warning Light
|
||||
var shutUpYou = func() {
|
||||
lights[0].setBoolValue(0);
|
||||
|
|
|
@ -653,8 +653,14 @@ var messages_priority_3 = func {
|
|||
}
|
||||
|
||||
if (gearNotDown.clearFlag == 0 and (warningNodes.Logic.gearNotDown1.getBoolValue() or warningNodes.Logic.gearNotDown2.getBoolValue()) and phaseVar3 != 3 and phaseVar3 != 4 and phaseVar3 != 5) {
|
||||
if (!gearNotDown.active) {
|
||||
gearWarnLight.setValue(1);
|
||||
}
|
||||
gearNotDown.active = 1;
|
||||
} else {
|
||||
if (gearNotDown.active) {
|
||||
gearWarnLight.setValue(0);
|
||||
}
|
||||
ECAM_controller.warningReset(gearNotDown);
|
||||
}
|
||||
|
||||
|
@ -869,23 +875,6 @@ var messages_priority_3 = func {
|
|||
ECAM_controller.warningReset(emerconfigVent);
|
||||
}
|
||||
|
||||
if (emerconfigAltn.clearFlag == 0) {
|
||||
emerconfigAltn.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(emerconfigAltn);
|
||||
}
|
||||
|
||||
if (emerconfigProt.clearFlag == 0) {
|
||||
emerconfigProt.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(emerconfigProt);
|
||||
}
|
||||
|
||||
if (emerconfigMaxSpeed.clearFlag == 0) {
|
||||
emerconfigMaxSpeed.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(emerconfigMaxSpeed);
|
||||
}
|
||||
} else {
|
||||
ECAM_controller.warningReset(emerconfig);
|
||||
ECAM_controller.warningReset(emerconfigMinRat);
|
||||
|
@ -903,9 +892,6 @@ var messages_priority_3 = func {
|
|||
ECAM_controller.warningReset(emerconfigBusTie2);
|
||||
ECAM_controller.warningReset(emerconfigAPU);
|
||||
ECAM_controller.warningReset(emerconfigVent);
|
||||
ECAM_controller.warningReset(emerconfigAltn);
|
||||
ECAM_controller.warningReset(emerconfigProt);
|
||||
ECAM_controller.warningReset(emerconfigMaxSpeed);
|
||||
}
|
||||
|
||||
if (hydBYloPr.clearFlag == 0 and phaseVar3 != 4 and phaseVar3 != 5 and warningNodes.Logic.blueYellow.getValue()) {
|
||||
|
@ -1284,6 +1270,109 @@ var messages_priority_2 = func {
|
|||
ECAM_controller.warningReset(apuGenfaultGen3);
|
||||
}
|
||||
|
||||
if (lElevFault.clearFlag == 0 and warningNodes.Timers.leftElevFail.getValue() and phaseVar2 != 4 and phaseVar2 != 5) {
|
||||
lElevFault.active = 1;
|
||||
if (lElevFaultCare.clearFlag == 0) {
|
||||
lElevFaultCare.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(lElevFaultCare);
|
||||
}
|
||||
if (lElevFaultPitch.clearFlag == 0) {
|
||||
lElevFaultPitch.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(lElevFaultPitch);
|
||||
}
|
||||
} else {
|
||||
ECAM_controller.warningReset(lElevFault);
|
||||
ECAM_controller.warningReset(lElevFaultCare);
|
||||
ECAM_controller.warningReset(lElevFaultPitch);
|
||||
}
|
||||
|
||||
if (rElevFault.clearFlag == 0 and warningNodes.Timers.rightElevFail.getValue() and phaseVar2 != 4 and phaseVar2 != 5) {
|
||||
rElevFault.active = 1;
|
||||
if (rElevFaultCare.clearFlag == 0) {
|
||||
rElevFaultCare.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(rElevFaultCare);
|
||||
}
|
||||
if (rElevFaultPitch.clearFlag == 0) {
|
||||
rElevFaultPitch.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(rElevFaultPitch);
|
||||
}
|
||||
} else {
|
||||
ECAM_controller.warningReset(rElevFault);
|
||||
ECAM_controller.warningReset(rElevFaultCare);
|
||||
ECAM_controller.warningReset(rElevFaultPitch);
|
||||
}
|
||||
|
||||
if (directLaw.clearFlag == 0 and warningNodes.Timers.directLaw.getValue() and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
|
||||
directLaw.active = 1;
|
||||
directLawProt.active = 1;
|
||||
if (directLawMaxSpeed.clearFlag == 0 and !fbw.tripleADRFail and pts.Gear.position[1].getValue() == 1) {
|
||||
directLawMaxSpeed.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(directLawMaxSpeed);
|
||||
}
|
||||
if (directLawTrim.clearFlag == 0 and (systems.HYD.Psi.green.getValue() >= 1500 or systems.HYD.Psi.yellow.getValue() >= 1500) and !fbw.FBW.Failures.ths.getValue()) {
|
||||
directLawTrim.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(directLawTrim);
|
||||
}
|
||||
if (directLawCare.clearFlag == 0 and (fbw.tripleADRFail or pts.Gear.position[1].getValue() == 1)) {
|
||||
directLawCare.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(directLawCare);
|
||||
}
|
||||
if (directLawSpdBrk.clearFlag == 0 and !fbw.tripleADRFail and pts.Gear.position[1].getValue() == 1) {
|
||||
directLawSpdBrk.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(directLawSpdBrk);
|
||||
}
|
||||
if (directLawSpdBrk2.clearFlag == 0 and fbw.tripleADRFail) {
|
||||
directLawSpdBrk2.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(directLawSpdBrk2);
|
||||
}
|
||||
} else {
|
||||
ECAM_controller.warningReset(directLaw);
|
||||
ECAM_controller.warningReset(directLawProt);
|
||||
ECAM_controller.warningReset(directLawMaxSpeed);
|
||||
ECAM_controller.warningReset(directLawTrim);
|
||||
ECAM_controller.warningReset(directLawCare);
|
||||
ECAM_controller.warningReset(directLawSpdBrk);
|
||||
ECAM_controller.warningReset(directLawSpdBrk2);
|
||||
}
|
||||
|
||||
if (altnLaw.clearFlag == 0 and warningNodes.Timers.altnLaw.getValue() and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
|
||||
altnLaw.active = 1;
|
||||
altnLawProt.active = 1;
|
||||
if (altnLawMaxSpeed.clearFlag == 0 and altnLawMaxSpeed2.clearFlag == 0 and !fbw.tripleADRFail) {
|
||||
if (!(getprop("/ECAM/warnings/hyd/green-abnorm-lo-pr") and (getprop("/ECAM/warnings/hyd/blue-abnorm-lo-pr") or getprop("/ECAM/warnings/hyd/yellow-abnorm-lo-pr")))) {
|
||||
altnLawMaxSpeed.active = 1;
|
||||
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
||||
} else {
|
||||
altnLawMaxSpeed2.active = 1;
|
||||
ECAM_controller.warningReset(altnLawMaxSpeed);
|
||||
}
|
||||
} else {
|
||||
ECAM_controller.warningReset(altnLawMaxSpeed);
|
||||
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
||||
}
|
||||
|
||||
if (altnLawMaxSpdBrk.clearFlag == 0 and (fbw.tripleADRFail or warningNodes.Logic.leftElevFail.getValue() or warningNodes.Logic.rightElevFail.getValue())) {
|
||||
altnLawMaxSpdBrk.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(altnLawMaxSpdBrk);
|
||||
}
|
||||
} else {
|
||||
ECAM_controller.warningReset(altnLaw);
|
||||
ECAM_controller.warningReset(altnLawProt);
|
||||
ECAM_controller.warningReset(altnLawMaxSpeed);
|
||||
ECAM_controller.warningReset(altnLawMaxSpeed2);
|
||||
ECAM_controller.warningReset(altnLawMaxSpdBrk);
|
||||
}
|
||||
|
||||
if ((athr_offw.clearFlag == 0) and athrWarn.getValue() == 2 and phaseVar2 != 4 and phaseVar2 != 8 and phaseVar2 != 10) {
|
||||
athr_offw.active = 1;
|
||||
athr_offw_1.active = 1;
|
||||
|
@ -1314,12 +1403,18 @@ var messages_priority_2 = func {
|
|||
ECAM_controller.warningReset(athr_lim_1);
|
||||
}
|
||||
|
||||
if (getprop("instrumentation/tcas/serviceable") == 0 and phaseVar2 != 3 and phaseVar2 != 4 and phaseVar2 != 7 and systems.ELEC.Bus.ac1.getValue() >= 110 and pts.Instrumentation.TCAS.Inputs.mode.getValue() != 1 and tcasFault.clearFlag == 0) {
|
||||
if (getprop("/instrumentation/tcas/serviceable") == 0 and phaseVar2 != 1 and phaseVar2 != 3 and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8 and phaseVar2 != 10 and systems.ELEC.Bus.ac1.getValue() >= 110 and pts.Instrumentation.TCAS.Inputs.mode.getValue() != 1 and tcasFault.clearFlag == 0) {
|
||||
tcasFault.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(tcasFault);
|
||||
}
|
||||
|
||||
if (phaseVar2 == 6 and pts.Instrumentation.TCAS.Inputs.mode.getValue() == 1 and !tcasFault.active and (atc.Transponders.vector[0].condition != 0 and atc.Transponders.vector[1].condition != 0) and tcasStby.clearFlag == 0) {
|
||||
tcasStby.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(tcasStby);
|
||||
}
|
||||
|
||||
if (gpwsTerrFault.clearFlag == 0 and warningNodes.Timers.navTerrFault.getValue() == 1 and (phaseVar2 == 2 or phaseVar2 == 6 or phaseVar2 == 7 or phaseVar2 == 9)) {
|
||||
gpwsTerrFault.active = 1;
|
||||
|
||||
|
@ -2552,6 +2647,17 @@ var messages_right_memo = func {
|
|||
ignition.active = 0;
|
||||
}
|
||||
|
||||
if ((atc.Transponders.vector[0].condition == 0 and atc.Transponders.vector[1].condition == 0) or (!getprop("/systems/navigation/adr/operating-1") and !getprop("/systems/navigation/adr/operating-2") and !getprop("/systems/navigation/adr/operating-3")) or pts.Instrumentation.TCAS.Inputs.mode.getValue() == 1) {
|
||||
if (phaseVarMemo3 == 6) {
|
||||
tcas_stby.colour = "a";
|
||||
} else {
|
||||
tcas_stby.colour = "g";
|
||||
}
|
||||
tcas_stby.active = 1;
|
||||
} else {
|
||||
tcas_stby.active = 0;
|
||||
}
|
||||
|
||||
if ((phaseVarMemo3 <= 2 or phaseVarMemo3 == 6 or phaseVarMemo3 >= 9) and atsu.CompanyCall.frequency != 999.99 and !atsu.CompanyCall.received) {
|
||||
company_call.active = 1;
|
||||
} else {
|
||||
|
|
|
@ -5,17 +5,12 @@
|
|||
|
||||
var ap_active = 0;
|
||||
var athr_active = 0;
|
||||
var phase = 0;
|
||||
var aileron = 0;
|
||||
var elevator = 0;
|
||||
var stateL = 0;
|
||||
var stateR = 0;
|
||||
var engModeSel = 0;
|
||||
var APUMaster = 0;
|
||||
var APURPM = 0;
|
||||
var elapsedSec = 0;
|
||||
var gearDown = 0;
|
||||
var agl = 0;
|
||||
var apOffTime = 0;
|
||||
var athrOffTime = 0;
|
||||
var apWarnNode = 0;
|
||||
|
@ -23,165 +18,129 @@ var athrWarnNode = 0;
|
|||
var engStrtTimeSw = 0;
|
||||
var engStrtTime = 0;
|
||||
var page = 0;
|
||||
var apuLight = 0;
|
||||
var bleedLight = 0;
|
||||
var condLight = 0;
|
||||
var doorLight = 0;
|
||||
var elecLight = 0;
|
||||
var engLight = 0;
|
||||
var fctlLight = 0;
|
||||
var fuelLight = 0;
|
||||
var hydLight = 0;
|
||||
var pressLight = 0;
|
||||
var stsLight = 0;
|
||||
var wheelLight = 0;
|
||||
var clrLight = 0;
|
||||
|
||||
var gearWarnLight = props.globals.initNode("/ECAM/warnings/landing-gear-warning-light", 0, "BOOL");
|
||||
|
||||
var ECAM = {
|
||||
_cachePage: "",
|
||||
init: func() {
|
||||
setprop("/systems/gear/landing-gear-warning-light", 0);
|
||||
page = props.globals.initNode("/ECAM/Lower/page", "door", "STRING");
|
||||
apuLight = props.globals.initNode("/ECAM/Lower/light/apu", 0, "BOOL");
|
||||
bleedLight = props.globals.initNode("/ECAM/Lower/light/bleed", 0, "BOOL");
|
||||
condLight = props.globals.initNode("/ECAM/Lower/light/cond", 0, "BOOL");
|
||||
doorLight = props.globals.initNode("/ECAM/Lower/light/door", 0, "BOOL");
|
||||
elecLight = props.globals.initNode("/ECAM/Lower/light/elec", 0, "BOOL");
|
||||
engLight = props.globals.initNode("/ECAM/Lower/light/eng", 0, "BOOL");
|
||||
fctlLight = props.globals.initNode("/ECAM/Lower/light/fctl", 0, "BOOL");
|
||||
fuelLight = props.globals.initNode("/ECAM/Lower/light/fuel", 0, "BOOL");
|
||||
hydLight = props.globals.initNode("/ECAM/Lower/light/hyd", 0, "BOOL");
|
||||
pressLight = props.globals.initNode("/ECAM/Lower/light/press", 0, "BOOL");
|
||||
stsLight = props.globals.initNode("/ECAM/Lower/light/sts", 0, "BOOL");
|
||||
wheelLight = props.globals.initNode("/ECAM/Lower/light/wheel", 0, "BOOL");
|
||||
clrLight = props.globals.initNode("/ECAM/Lower/light/clr", 0, "BOOL");
|
||||
|
||||
phase = props.globals.initNode("/ECAM/warning-phase", 0, "INT");
|
||||
apOffTime = props.globals.initNode("/ECAM/ap-off-time", 0, "INT");
|
||||
athrOffTime = props.globals.initNode("/ECAM/athr-off-time", 0, "INT");
|
||||
apOffTime = props.globals.initNode("/ECAM/warnings/ap-off-time", 0, "INT");
|
||||
athrOffTime = props.globals.initNode("/ECAM/warnings/athr-off-time", 0, "INT");
|
||||
engStrtTimeSw = props.globals.initNode("/ECAM/engine-start-time-switch", 0, "BOOL");
|
||||
engStrtTime = props.globals.initNode("/ECAM/engine-start-time", 0.0, "DOUBLE");
|
||||
apWarnNode = props.globals.initNode("/it-autoflight/output/ap-warning", 0, "INT");
|
||||
athrWarnNode = props.globals.initNode("/it-autoflight/output/athr-warning", 0, "INT");
|
||||
me.reset();
|
||||
},
|
||||
reset: func() {
|
||||
setprop("ECAM/msg/line1", "");
|
||||
setprop("ECAM/msg/line2", "");
|
||||
setprop("ECAM/msg/line3", "");
|
||||
setprop("ECAM/msg/line4", "");
|
||||
setprop("ECAM/msg/line5", "");
|
||||
setprop("ECAM/msg/line6", "");
|
||||
setprop("ECAM/msg/line7", "");
|
||||
setprop("ECAM/msg/line8", "");
|
||||
setprop("ECAM/msg/linec1", "w");
|
||||
setprop("ECAM/msg/linec2", "w");
|
||||
setprop("ECAM/msg/linec3", "w");
|
||||
setprop("ECAM/msg/linec4", "w");
|
||||
setprop("ECAM/msg/linec5", "w");
|
||||
setprop("ECAM/msg/linec6", "w");
|
||||
setprop("ECAM/msg/linec7", "w");
|
||||
setprop("ECAM/msg/linec8", "w");
|
||||
setprop("ECAM/rightmsg/line1", "");
|
||||
setprop("ECAM/rightmsg/line2", "");
|
||||
setprop("ECAM/rightmsg/line3", "");
|
||||
setprop("ECAM/rightmsg/line4", "");
|
||||
setprop("ECAM/rightmsg/line5", "");
|
||||
setprop("ECAM/rightmsg/line6", "");
|
||||
setprop("ECAM/rightmsg/line7", "");
|
||||
setprop("ECAM/rightmsg/line8", "");
|
||||
setprop("ECAM/rightmsg/linec1", "w");
|
||||
setprop("ECAM/rightmsg/linec2", "w");
|
||||
setprop("ECAM/rightmsg/linec3", "w");
|
||||
setprop("ECAM/rightmsg/linec4", "w");
|
||||
setprop("ECAM/rightmsg/linec5", "w");
|
||||
setprop("ECAM/rightmsg/linec6", "w");
|
||||
setprop("ECAM/rightmsg/linec7", "w");
|
||||
setprop("ECAM/rightmsg/linec8", "w");
|
||||
|
||||
page.setValue("door");
|
||||
apuLight.setValue(0);
|
||||
bleedLight.setValue(0);
|
||||
condLight.setValue(0);
|
||||
doorLight.setValue(0);
|
||||
elecLight.setValue(0);
|
||||
engLight.setValue(0);
|
||||
fctlLight.setValue(0);
|
||||
fuelLight.setValue(0);
|
||||
hydLight.setValue(0);
|
||||
pressLight.setValue(0);
|
||||
stsLight.setValue(0);
|
||||
wheelLight.setValue(0);
|
||||
clrLight.setValue(0);
|
||||
},
|
||||
loop: func() {
|
||||
stateL = pts.Engines.Engine.state[0].getValue();
|
||||
stateR = pts.Engines.Engine.state[1].getValue();
|
||||
wow = pts.Gear.wow[0].getValue();
|
||||
elapsedTime = pts.Sim.Time.elapsedSec.getValue();
|
||||
|
||||
if (stateL != 3 or stateR != 3) {
|
||||
if (engStrtTimeSw.getBoolValue()) {
|
||||
update_items: [
|
||||
props.UpdateManager.FromHashList(["ap1","ap2","apWarn"], nil, func(val) {
|
||||
if (val.apWarn == 2 and (val.ap1 or val.ap2)) {
|
||||
apWarnNode.setValue(0);
|
||||
ecam.lights[0].setBoolValue(0);
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashList(["athr","athrWarn"], nil, func(val) {
|
||||
if (val.athrWarn == 2 and val.athr) {
|
||||
athrWarnNode.setValue(0);
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashList(["engine1State","engine2State","gear0Wow"], nil, func(val) {
|
||||
if (val.engine1State != 3 or val.engine2State != 3) {
|
||||
engStrtTimeSw.setBoolValue(0);
|
||||
engStrtTime.setValue(0);
|
||||
}
|
||||
} else if (stateL == 3 and stateR == 3 and wow == 1) {
|
||||
if (!engStrtTimeSw.getBoolValue()) {
|
||||
engStrtTime.setValue(elapsedTime);
|
||||
} else if (val.engine1State == 3 and val.engine2State == 3 and val.gear0Wow) {
|
||||
engStrtTime.setValue(val.elapsedTime);
|
||||
engStrtTimeSw.setBoolValue(1);
|
||||
}
|
||||
} else if (wow == 1) {
|
||||
if (engStrtTimeSw.getBoolValue()) {
|
||||
} else if (val.gear0Wow) {
|
||||
engStrtTimeSw.setBoolValue(0);
|
||||
}
|
||||
}),
|
||||
],
|
||||
lights: {
|
||||
"apu": props.globals.initNode("/ECAM/Lower/light/apu", 0, "BOOL"),
|
||||
"bleed": props.globals.initNode("/ECAM/Lower/light/bleed", 0, "BOOL"),
|
||||
"cond": props.globals.initNode("/ECAM/Lower/light/cond", 0, "BOOL"),
|
||||
"door": props.globals.initNode("/ECAM/Lower/light/door", 0, "BOOL"),
|
||||
"elec": props.globals.initNode("/ECAM/Lower/light/elec", 0, "BOOL"),
|
||||
"eng": props.globals.initNode("/ECAM/Lower/light/eng", 0, "BOOL"),
|
||||
"fctl": props.globals.initNode("/ECAM/Lower/light/fctl", 0, "BOOL"),
|
||||
"fuel": props.globals.initNode("/ECAM/Lower/light/fuel", 0, "BOOL"),
|
||||
"hyd": props.globals.initNode("/ECAM/Lower/light/hyd", 0, "BOOL"),
|
||||
"press": props.globals.initNode("/ECAM/Lower/light/press", 0, "BOOL"),
|
||||
"sts": props.globals.initNode("/ECAM/Lower/light/sts", 0, "BOOL"),
|
||||
"wheel": props.globals.initNode("/ECAM/Lower/light/wheel", 0, "BOOL"),
|
||||
"clr": props.globals.initNode("/ECAM/Lower/light/clr", 0, "BOOL"),
|
||||
},
|
||||
reset: func() {
|
||||
for (var i = 0; i <= 8; i = i + 1) {
|
||||
setprop("ECAM/msg/line" ~ i, "");
|
||||
setprop("ECAM/rightmsg/line" ~ i, "");
|
||||
setprop("ECAM/msg/linec" ~ i, "w");
|
||||
setprop("ECAM/rightmsg/linec" ~ i, "w");
|
||||
}
|
||||
|
||||
page.setValue("door");
|
||||
me.lights.apu.setValue(0);
|
||||
me.lights.bleed.setValue(0);
|
||||
me.lights.cond.setValue(0);
|
||||
me.lights.door.setValue(0);
|
||||
me.lights.elec.setValue(0);
|
||||
me.lights.eng.setValue(0);
|
||||
me.lights.fctl.setValue(0);
|
||||
me.lights.fuel.setValue(0);
|
||||
me.lights.hyd.setValue(0);
|
||||
me.lights.press.setValue(0);
|
||||
me.lights.sts.setValue(0);
|
||||
me.lights.wheel.setValue(0);
|
||||
me.lights.clr.setValue(0);
|
||||
},
|
||||
loop: func(notification) {
|
||||
# AP / ATHR warnings
|
||||
if (ap_active == 1 and apWarnNode.getValue() == 0) {
|
||||
if (ap_active == 1 and !notification.apWarn) {
|
||||
ap_active = 0;
|
||||
} elsif (ap_active == 1 and apWarnNode.getValue() == 1 and elapsedTime > (apOffTime.getValue() + 9)) {
|
||||
} elsif (ap_active == 1 and notification.apWarn == 1 and notification.elapsedTime > (notification.apOffTime + 9)) {
|
||||
ap_active = 0;
|
||||
apWarnNode.setValue(0);
|
||||
} elsif (ap_active == 0 and apWarnNode.getValue() != 0) {
|
||||
} elsif (ap_active == 0 and notification.apWarn != 0) {
|
||||
ap_active = 1;
|
||||
}
|
||||
|
||||
if (ap_active == 1 and apWarnNode.getValue() == 1 and elapsedTime > (apOffTime.getValue() + 3) and ecam.lights[0].getBoolValue()) {
|
||||
if (ap_active == 1 and notification.apWarn == 1 and notification.elapsedTime > (notification.apOffTime + 3) and notification.masterWarn) {
|
||||
ecam.lights[0].setBoolValue(0);
|
||||
}
|
||||
|
||||
if (apWarnNode.getValue() == 2 and (fmgc.Output.ap1.getValue() == 1 or fmgc.Output.ap2.getValue() == 1)) {
|
||||
apWarnNode.setValue(0);
|
||||
}
|
||||
|
||||
if (athr_active == 1 and athrWarnNode.getValue() == 0) {
|
||||
if (athr_active == 1 and !notification.athrWarn) {
|
||||
athr_active = 0;
|
||||
} elsif (athr_active == 1 and athrWarnNode.getValue() == 1 and elapsedTime > (athrOffTime.getValue() + 9)) {
|
||||
} elsif (athr_active == 1 and notification.athrWarn == 1 and notification.elapsedTime > (notification.athrOffTime + 9)) {
|
||||
athr_active = 0;
|
||||
athrWarnNode.setValue(0);
|
||||
} elsif (athr_active == 0 and athrWarnNode.getValue() != 0) {
|
||||
} elsif (athr_active == 0 and notification.athrWarn != 0) {
|
||||
athr_active = 1;
|
||||
}
|
||||
|
||||
|
||||
if (athr_active == 1 and athrWarnNode.getValue() == 1 and elapsedTime > (athrOffTime.getValue() + 3) and ecam.lights[1].getBoolValue()) {
|
||||
if (athr_active == 1 and notification.athrWarn == 1 and notification.elapsedTime > (notification.athrOffTime + 3) and notification.masterCaution) {
|
||||
ecam.lights[1].setValue(0);
|
||||
}
|
||||
|
||||
if (athrWarnNode.getValue() == 2 and fmgc.Output.athr.getValue() == 1) {
|
||||
athrWarnNode.setValue(0);
|
||||
foreach (var update_item; me.update_items) {
|
||||
update_item.update(notification);
|
||||
}
|
||||
|
||||
SystemDisplay.update();
|
||||
SystemDisplay.update(notification);
|
||||
|
||||
if (me._cachePage != SystemDisplay.page) {
|
||||
me._cachePage = SystemDisplay.page;
|
||||
page.setValue(SystemDisplay.page);
|
||||
me.updateSDPage(SystemDisplay.page);
|
||||
}
|
||||
},
|
||||
updateSDPage: func(newPage) {
|
||||
me._cachePage = newPage;
|
||||
page.setValue(newPage);
|
||||
},
|
||||
clrLight: func() {
|
||||
clrLight.setValue(1);
|
||||
}
|
||||
me.lights.clr.setValue(1);
|
||||
},
|
||||
};
|
||||
|
||||
var SystemDisplay = {
|
||||
|
@ -217,12 +176,10 @@ var SystemDisplay = {
|
|||
me.page = page;
|
||||
}
|
||||
},
|
||||
update: func() {
|
||||
phase = pts.ECAM.fwcWarningPhase.getValue();
|
||||
update: func(notification) {
|
||||
APUMaster = systems.APUNodes.Controls.master.getValue();
|
||||
APURPM = pts.APU.rpm.getValue();
|
||||
engModeSel = pts.Controls.Engines.startSw.getValue();
|
||||
elapsedSec = pts.Sim.Time.elapsedSec.getValue();
|
||||
|
||||
if (APUMaster == 1 and me.APU10sec != 1) {
|
||||
me.autoCall("apu");
|
||||
|
@ -230,10 +187,10 @@ var SystemDisplay = {
|
|||
|
||||
if (me.APU10sec == 9 and APURPM >= 95.0) {
|
||||
me.APU10sec = 0;
|
||||
me._apuTime = elapsedSec;
|
||||
me._apuTime = notification.elapsedTime;
|
||||
}
|
||||
|
||||
if (me.APU10sec != 9 and elapsedSec > me._apuTime + 10) {
|
||||
if (me.APU10sec != 9 and notification.elapsedTime > me._apuTime + 10) {
|
||||
me.APU10sec = 1;
|
||||
}
|
||||
} elsif (engModeSel == 0 or engModeSel == 2 or (engModeSel == 1 and me.eng10sec == 0)) {
|
||||
|
@ -242,10 +199,10 @@ var SystemDisplay = {
|
|||
|
||||
if (me.eng10sec == 9 and engModeSel == 1) {
|
||||
me.eng10sec = 0;
|
||||
me._engTime = elapsedSec;
|
||||
me._engTime = notification.elapsedTime;
|
||||
}
|
||||
|
||||
if (me.eng10sec != 9 and elapsedSec > me._engTime + 10) {
|
||||
if (me.eng10sec != 9 and notification.elapsedTime > me._engTime + 10) {
|
||||
me.eng10sec = 1;
|
||||
}
|
||||
} else {
|
||||
|
@ -256,49 +213,43 @@ var SystemDisplay = {
|
|||
me.eng10sec = 9;
|
||||
|
||||
# Phase logic
|
||||
if (phase == 1) {
|
||||
if (notification.FWCPhase == 1) {
|
||||
me.autoCall("door");
|
||||
me.fctl20sec = 9;
|
||||
} elsif (phase == 2) {
|
||||
aileron = pts.Fdm.JSBsim.Fbw.aileron.getValue();
|
||||
elevator = pts.Fdm.JSBsim.Fbw.elevator.getValue();
|
||||
|
||||
if (abs(aileron) >= 0.15 or abs(elevator) >= 0.15 and me.fctl20sec == 9) {
|
||||
} elsif (notification.FWCPhase == 2) {
|
||||
if (notification.aileronFBW >= 0.15 or notification.elevatorFBW >= 0.15 and me.fctl20sec == 9) {
|
||||
me.autoCall("fctl");
|
||||
|
||||
if (me.fctl20sec == 9) {
|
||||
me.fctl20sec = 0;
|
||||
me._fctlTime = elapsedSec;
|
||||
me._fctlTime = notification.elapsedTime;
|
||||
}
|
||||
|
||||
if (me.fctl20sec != 9 and elapsedSec > me._fctlTime + 20) {
|
||||
if (me.fctl20sec != 9 and notification.elapsedTime > me._fctlTime + 20) {
|
||||
me.fctl20sec = 1;
|
||||
}
|
||||
} elsif (me.fctl20sec == 0) {
|
||||
if (me.fctl20sec != 9 and elapsedSec > me._fctlTime + 20) {
|
||||
if (me.fctl20sec != 9 and notification.elapsedTime > me._fctlTime + 20) {
|
||||
me.fctl20sec = 1;
|
||||
}
|
||||
} else {
|
||||
me.autoCall("wheel");
|
||||
me.fctl20sec = 9;
|
||||
}
|
||||
} elsif (phase >= 3 and phase <= 5) {
|
||||
} elsif (notification.FWCPhase >= 3 and notification.FWCPhase <= 5) {
|
||||
me.autoCall("eng");
|
||||
me.fctl20sec = 9;
|
||||
} elsif (phase == 6) {
|
||||
gearLever = pts.Controls.Gear.gearDown.getValue();
|
||||
agl = pts.Position.gearAglFt.getValue();
|
||||
|
||||
if (gearLever and agl <= 16000) {
|
||||
} elsif (notification.FWCPhase == 6) {
|
||||
if (notification.gearLever and notification.agl <= 16000) {
|
||||
me.autoCall("wheel");
|
||||
} else {
|
||||
me.autoCall("crz");
|
||||
}
|
||||
me.fctl20sec = 9;
|
||||
} elsif (phase >= 7 and phase <= 9) {
|
||||
} elsif (notification.FWCPhase >= 7 and notification.FWCPhase <= 9) {
|
||||
me.autoCall("wheel");
|
||||
me.fctl20sec = 9;
|
||||
} elsif (phase == 10) {
|
||||
} elsif (notification.FWCPhase == 10) {
|
||||
me.autoCall("door");
|
||||
me.fctl20sec = 9;
|
||||
}
|
||||
|
@ -357,35 +308,13 @@ var ECAMControlPanel = {
|
|||
emerCancBtn: func() {
|
||||
# todo
|
||||
},
|
||||
lightOff: func(page) {
|
||||
if (page == "clr") { clrLight.setBoolValue(0); }
|
||||
elsif (page == "apu") { apuLight.setBoolValue(0); }
|
||||
elsif (page == "bleed") { bleedLight.setBoolValue(0); }
|
||||
elsif (page == "cond") { condLight.setBoolValue(0); }
|
||||
elsif (page == "door") { doorLight.setBoolValue(0); }
|
||||
elsif (page == "elec") { elecLight.setBoolValue(0); }
|
||||
elsif (page == "eng") { engLight.setBoolValue(0); }
|
||||
elsif (page == "fctl") { fctlLight.setBoolValue(0); }
|
||||
elsif (page == "fuel") { fuelLight.setBoolValue(0); }
|
||||
elsif (page == "hyd") { hydLight.setBoolValue(0); }
|
||||
elsif (page == "press") { pressLight.setBoolValue(0); }
|
||||
elsif (page == "sts") { stsLight.setBoolValue(0); }
|
||||
elsif (page == "wheel") { wheelLight.setBoolValue(0); }
|
||||
lightOff: func(pageLightOff) {
|
||||
if (pageLightOff == "crz") { return; }
|
||||
ECAM.lights[pageLightOff].setBoolValue(0);
|
||||
},
|
||||
lightOn: func(page) {
|
||||
if (page == "clr") { clrLight.setBoolValue(1); }
|
||||
elsif (page == "apu") { apuLight.setBoolValue(1); }
|
||||
elsif (page == "bleed") { bleedLight.setBoolValue(1); }
|
||||
elsif (page == "cond") { condLight.setBoolValue(1); }
|
||||
elsif (page == "door") { doorLight.setBoolValue(1); }
|
||||
elsif (page == "elec") { elecLight.setBoolValue(1); }
|
||||
elsif (page == "eng") { engLight.setBoolValue(1); }
|
||||
elsif (page == "fctl") { fctlLight.setBoolValue(1); }
|
||||
elsif (page == "fuel") { fuelLight.setBoolValue(1); }
|
||||
elsif (page == "hyd") { hydLight.setBoolValue(1); }
|
||||
elsif (page == "press") { pressLight.setBoolValue(1); }
|
||||
elsif (page == "sts") { stsLight.setBoolValue(1); }
|
||||
elsif (page == "wheel") { wheelLight.setBoolValue(1); }
|
||||
lightOn: func(pageLightOn) {
|
||||
if (pageLightOn == "crz") { return; }
|
||||
ECAM.lights[pageLightOn].setBoolValue(1);
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -414,4 +343,54 @@ var doApWarn = func(type) {
|
|||
apWarnNode.setValue(2);
|
||||
# master warning handled by warning system in this case
|
||||
}
|
||||
}
|
||||
|
||||
# Emesary
|
||||
var ECAMRecipient =
|
||||
{
|
||||
new: func(_ident)
|
||||
{
|
||||
var NewECAMRecipient = emesary.Recipient.new(_ident);
|
||||
NewECAMRecipient.Receive = func(notification)
|
||||
{
|
||||
if (notification.NotificationType == "FrameNotification")
|
||||
{
|
||||
if (math.mod(notifications.frameNotification.FrameCount,5) == 0) {
|
||||
ECAM.loop(notification);
|
||||
}
|
||||
if (math.mod(notifications.frameNotification.FrameCount,10) == 0) {
|
||||
phaseLoop();
|
||||
}
|
||||
if (math.mod(notifications.frameNotification.FrameCount,10) == 5) {
|
||||
ECAM_controller.loop(notification);
|
||||
}
|
||||
return emesary.Transmitter.ReceiptStatus_OK;
|
||||
}
|
||||
return emesary.Transmitter.ReceiptStatus_NotProcessed;
|
||||
};
|
||||
return NewECAMRecipient;
|
||||
},
|
||||
};
|
||||
|
||||
var A320ECAM = ECAMRecipient.new("A320 ECAM");
|
||||
emesary.GlobalTransmitter.Register(A320ECAM);
|
||||
|
||||
var input = {
|
||||
"aileronFBW": "/fdm/jsbsim/fbw/aileron-sidestick",
|
||||
"agl": "/position/gear-agl-ft",
|
||||
"athr": "/it-autoflight/output/athr",
|
||||
"athrWarn": "/it-autoflight/output/athr-warning",
|
||||
"athrOffTime": "/ECAM/warnings/athr-off-time",
|
||||
"ap1": "/it-autoflight/output/ap1",
|
||||
"ap2": "/it-autoflight/output/ap2",
|
||||
"apWarn": "/it-autoflight/output/ap-warning",
|
||||
"apOffTime": "/ECAM/warnings/ap-off-time",
|
||||
"elevatorFBW": "/fdm/jsbsim/fbw/elevator-sidestick",
|
||||
"gearLever": "/controls/gear/gear-down",
|
||||
"masterCaution": "/ECAM/warnings/master-caution-light",
|
||||
"masterWarn": "/ECAM/warnings/master-warning-light",
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 ECAM", name, input[name]));
|
||||
}
|
|
@ -155,9 +155,6 @@ var warnings = std.Vector.new([
|
|||
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 emerconfigAltn = warning.new(msg: "F/CTL ALTN LAW", colour: "a"),
|
||||
var emerconfigProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
||||
var emerconfigMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
|
||||
|
||||
# B + Y LO PR
|
||||
var hydBYloPr = warning.new(msg: "HYD B+Y SYS LO PR", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
|
@ -260,10 +257,36 @@ var warnings = std.Vector.new([
|
|||
var gen2faultGen3 = warning.new(msg: "-GEN 2..............OFF", colour: "c"),
|
||||
|
||||
# APU GEN FAULT
|
||||
var apuGenfault = warning.new(msg: "ELEC APU GEN FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var apuGenfaultGen = warning.new(msg: "-APU GEN....OFF THEN ON", colour: "c"),
|
||||
var apuGenfaultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||
var apuGenfaultGen3 = warning.new(msg: "-APU GEN............OFF", colour: "c"),
|
||||
var apuGenfault = warning.new(msg: "ELEC APU GEN FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var apuGenfaultGen = warning.new(msg: "-APU GEN....OFF THEN ON", colour: "c"),
|
||||
var apuGenfaultGen2 = warning.new(msg: " •IF UNSUCCESSFUL :", colour: "w"),
|
||||
var apuGenfaultGen3 = warning.new(msg: "-APU GEN............OFF", colour: "c"),
|
||||
|
||||
# L ELEV FAULT
|
||||
var lElevFault = warning.new(msg: "F/CTL L ELEV FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var lElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||
var lElevFaultPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
|
||||
|
||||
# R ELEV FAULT
|
||||
var rElevFault = warning.new(msg: "F/CTL R ELEV FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var rElevFaultCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||
var rElevFaultPitch = warning.new(msg: " FOR GA:MAX PITCH 15 DEG", colour: "c"),
|
||||
|
||||
# DIRECT LAW
|
||||
var directLaw = warning.new(msg: "F/CTL DIRECT LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var directLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
||||
var directLawMaxSpeed = warning.new(msg: " MAX SPEED........320/.77", colour: "c"),
|
||||
var directLawTrim = warning.new(msg: " -MAN PITCH TRIM.....USE", colour: "c"),
|
||||
var directLawCare = warning.new(msg: " MANEUVER WITH CARE", colour: "c"),
|
||||
var directLawSpdBrk = warning.new(msg: " USE SPD BRK WITH CARE", colour: "c"),
|
||||
var directLawSpdBrk2 = warning.new(msg: " SPD BRK.......DO NOT USE", colour: "c"),
|
||||
|
||||
# ALTN LAW
|
||||
var altnLaw = warning.new(msg: "F/CTL ALTN LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var altnLawProt = warning.new(msg: " (PROT LOST)", colour: "a"),
|
||||
var altnLawMaxSpeed = warning.new(msg: " MAX SPEED........320 KT", colour: "c"),
|
||||
var altnLawMaxSpeed2 = warning.new(msg: " MAX SPEED........320/.77", colour: "c"),
|
||||
var altnLawMaxSpdBrk = warning.new(msg: " SPD BRK.......DO NOT USE", colour: "c"),
|
||||
|
||||
# Autothrust
|
||||
var athr_offw = warning.new(msg: "AUTO FLT A/THR OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
@ -275,6 +298,7 @@ var warnings = std.Vector.new([
|
|||
|
||||
# TCAS FAULT
|
||||
var tcasFault = warning.new(msg: "NAV TCAS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var tcasStby = warning.new(msg: "NAV TCAS STBY", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gpwsFault = warning.new(msg: "NAV GPWS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gpwsFaultOff = warning.new(msg: "-GPWS...............OFF", colour: "c"),
|
||||
var gpwsTerrFault = warning.new(msg: "NAV GPWS TERR DET FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
@ -542,7 +566,7 @@ var memos = std.Vector.new([
|
|||
var cabin_ready = memo.new(msg: "CABIN READY" ), # Not yet implemented
|
||||
var pred_ws_off = memo.new(msg: "PRED W/S OFF"), # Not yet implemented
|
||||
var terr_stby = memo.new(msg: "TERR STBY" ), # Not yet implemented
|
||||
var tcas_stby = memo.new(msg: "TCAS STBY" ), # Not yet implemented
|
||||
var tcas_stby = memo.new(msg: "TCAS STBY" ),
|
||||
var company_call = memo.new(msg: "COMPANY CALL"),
|
||||
var satcom_alert = memo.new(msg: "SATCOM ALERT"), # Not yet implemented
|
||||
var company_msg = memo.new(msg: "COMPANY MSG" ),
|
||||
|
|
|
@ -46,7 +46,7 @@ var FWC = {
|
|||
recallOutput: props.globals.initNode("/ECAM/flipflop/recall-output", 0, "BOOL"),
|
||||
},
|
||||
Logic: {
|
||||
gnd: props.globals.getNode("/ECAM/ground-calc-immediate"),
|
||||
gnd: props.globals.getNode("/ECAM/logic/ground-calc-immediate"),
|
||||
IRSinAlign: props.globals.initNode("/ECAM/irs-in-align", 0, "BOOL"),
|
||||
feet1500: props.globals.getNode("/ECAM/phases/phase-calculation/altitude-ge-1500"),
|
||||
feet800: props.globals.getNode("/ECAM/phases/phase-calculation/altitude-ge-800"),
|
||||
|
@ -72,7 +72,11 @@ var FWC = {
|
|||
altChg: props.globals.getNode("/it-autoflight/input/alt-is-changing", 1),
|
||||
};
|
||||
|
||||
var gnd = nil;
|
||||
var gndTimer = nil;
|
||||
|
||||
var phaseLoop = func() {
|
||||
if ((systems.ELEC.Bus.acEss.getValue() < 110 and systems.ELEC.Bus.ac2.getValue() < 110) or pts.Acconfig.running.getBoolValue()) { return; }
|
||||
if (pts.Sim.Replay.replayActive.getBoolValue()) { return; }
|
||||
|
||||
myPhase = pts.ECAM.fwcWarningPhase.getValue();
|
||||
|
@ -83,7 +87,8 @@ var phaseLoop = func() {
|
|||
eng2n1 = pts.Engines.Engine.n1Actual[1].getValue();
|
||||
master1 = pts.Controls.Engines.Engine.cutoffSw[0].getBoolValue();
|
||||
master2 = pts.Controls.Engines.Engine.cutoffSw[1].getBoolValue();
|
||||
|
||||
gnd = FWC.Logic.gnd.getBoolValue();
|
||||
gndTimer = FWC.Timer.gnd.getValue();
|
||||
FWC.Flipflop.recallReset.setValue(0);
|
||||
|
||||
# Various things
|
||||
|
@ -101,13 +106,13 @@ var phaseLoop = func() {
|
|||
FWC.Flipflop.phase10Set.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (FWC.Timer.gnd.getValue() == 1 and pts.Controls.Engines.Engine.firePb[0].getBoolValue()) {
|
||||
if (gndTimer == 1 and pts.Controls.Engines.Engine.firePb[0].getBoolValue()) {
|
||||
FWC.Flipflop.phase10Reset.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Flipflop.phase10Reset.setBoolValue(0);
|
||||
}
|
||||
|
||||
if ((FWC.Logic.gnd.getBoolValue() and FWC.Timer.eng1and2Off.getValue() and myPhase == 9) and FWC.Flipflop.phase10Output.getBoolValue()) {
|
||||
if ((gnd and FWC.Timer.eng1and2Off.getValue() and myPhase == 9) and FWC.Flipflop.phase10Output.getBoolValue()) {
|
||||
FWC.Monostable.phase1.setBoolValue(1); # true for 300 sec then false
|
||||
} else {
|
||||
FWC.Monostable.phase1.setBoolValue(0);
|
||||
|
@ -120,7 +125,7 @@ var phaseLoop = func() {
|
|||
FWC.Flipflop.phase2Set.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (!FWC.Monostable.m80kt.getBoolValue() and myPhase != 9 and ((!FWC.Monostable.phase9Output.getBoolValue() and FWC.Timer.gnd.getValue() == 1) or (!FWC.Monostable.toPowerOutput.getBoolValue() and FWC.Timer.gnd.getValue() == 1))) {
|
||||
if (!FWC.Monostable.m80kt.getBoolValue() and myPhase != 9 and ((!FWC.Monostable.phase9Output.getBoolValue() and gndTimer == 1) or (!FWC.Monostable.toPowerOutput.getBoolValue() and gndTimer == 1))) {
|
||||
FWC.Flipflop.phase2Reset.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Flipflop.phase2Reset.setBoolValue(0);
|
||||
|
@ -129,33 +134,33 @@ var phaseLoop = func() {
|
|||
gear_agl_cur = pts.Position.gearAglFt.getValue();
|
||||
|
||||
# Phase 5 monostable
|
||||
if (FWC.toPower.getBoolValue() and (!FWC.Logic.feet1500.getBoolValue() and !FWC.Logic.gnd.getBoolValue() and FWC.Timer.gnd2Sec.getValue() != 1)) {
|
||||
if (FWC.toPower.getBoolValue() and (!FWC.Logic.feet1500.getBoolValue() and !gnd and FWC.Timer.gnd2Sec.getValue() != 1)) {
|
||||
FWC.Monostable.phase5.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Monostable.phase5.setBoolValue(0);
|
||||
}
|
||||
|
||||
# Phase 7 monostable
|
||||
if (!FWC.toPower.getBoolValue() and !FWC.Logic.feet1500.getBoolValue() and !FWC.Logic.feet800.getBoolValue() and !FWC.Logic.gnd.getBoolValue() and FWC.Timer.gnd2Sec.getValue() != 1) {
|
||||
if (!FWC.toPower.getBoolValue() and !FWC.Logic.feet1500.getBoolValue() and !FWC.Logic.feet800.getBoolValue() and !gnd and FWC.Timer.gnd2Sec.getValue() != 1) {
|
||||
FWC.Monostable.phase7.setBoolValue(1);
|
||||
} else {
|
||||
FWC.Monostable.phase7.setBoolValue(0);
|
||||
}
|
||||
|
||||
# Actual Phases
|
||||
if ((!FWC.Logic.gnd.getBoolValue() and FWC.Timer.gnd2Sec.getValue() != 1 and FWC.Timer.eng1and2Off.getValue() and myPhase != 9) and !FWC.Monostable.phase1Output.getBoolValue()) {
|
||||
if ((gnd and FWC.Timer.eng1and2Off.getValue() and myPhase != 9) and !FWC.Monostable.phase1Output.getBoolValue()) {
|
||||
setPhase(1);
|
||||
}
|
||||
|
||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (FWC.Logic.gnd.getBoolValue() and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and !FWC.Flipflop.phase2Output.getBoolValue()) {
|
||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (gnd and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and !FWC.Flipflop.phase2Output.getBoolValue()) {
|
||||
setPhase(2);
|
||||
}
|
||||
|
||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (FWC.Timer.gnd.getValue() == 1 and FWC.toPower.getBoolValue()) and !FWC.speed80.getBoolValue()) {
|
||||
if (FWC.Timer.eng1or2Output.getBoolValue() and (gndTimer == 1 and FWC.toPower.getBoolValue()) and !FWC.speed80.getBoolValue()) {
|
||||
setPhase(3);
|
||||
}
|
||||
|
||||
if ((FWC.Timer.gnd.getValue() == 1 and FWC.toPower.getBoolValue()) and FWC.speed80.getBoolValue()) {
|
||||
if ((gndTimer == 1 and FWC.toPower.getBoolValue()) and FWC.speed80.getBoolValue()) {
|
||||
setPhase(4);
|
||||
}
|
||||
|
||||
|
@ -163,7 +168,7 @@ var phaseLoop = func() {
|
|||
setPhase(5);
|
||||
}
|
||||
|
||||
if (!FWC.Logic.gnd.getValue() and FWC.Timer.gnd2SecHalf.getValue() != 1 and (!FWC.Monostable.phase5.getBoolValue() or !FWC.Monostable.phase5Output.getBoolValue()) and (!FWC.Monostable.phase7.getBoolValue() or !FWC.Monostable.phase7Output.getBoolValue())) {
|
||||
if (!gnd and FWC.Timer.gnd2SecHalf.getValue() != 1 and (!FWC.Monostable.phase5.getBoolValue() or !FWC.Monostable.phase5Output.getBoolValue()) and (!FWC.Monostable.phase7.getBoolValue() or !FWC.Monostable.phase7Output.getBoolValue())) {
|
||||
setPhase(6);
|
||||
}
|
||||
|
||||
|
@ -171,15 +176,15 @@ var phaseLoop = func() {
|
|||
setPhase(7);
|
||||
}
|
||||
|
||||
if (!FWC.toPower.getBoolValue() and FWC.speed80.getBoolValue() and (FWC.Logic.gnd.getBoolValue() or FWC.Timer.gnd2Sec.getValue == 1)) {
|
||||
if (!FWC.toPower.getBoolValue() and FWC.speed80.getBoolValue() and (gnd or FWC.Timer.gnd2Sec.getValue == 1)) {
|
||||
setPhase(8);
|
||||
}
|
||||
|
||||
if (FWC.Flipflop.phase2Output.getBoolValue() and (FWC.Logic.gnd.getBoolValue() and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and FWC.Timer.eng1or2.getBoolValue()) {
|
||||
if (FWC.Flipflop.phase2Output.getBoolValue() and (gnd and !FWC.toPower.getBoolValue() and !FWC.speed80.getBoolValue()) and FWC.Timer.eng1or2.getBoolValue()) {
|
||||
setPhase(9);
|
||||
}
|
||||
|
||||
if ((FWC.Logic.gnd.getBoolValue() and FWC.Timer.eng1and2Off.getValue() and myPhase == 9) and FWC.Monostable.phase1Output.getBoolValue()) {
|
||||
if ((gnd and FWC.Timer.eng1and2Off.getValue() and myPhase == 9) and FWC.Monostable.phase1Output.getBoolValue()) {
|
||||
setPhase(10);
|
||||
}
|
||||
|
||||
|
|
|
@ -13,10 +13,24 @@ var sec2 = 0;
|
|||
var sec3 = 0;
|
||||
var fac1 = 0;
|
||||
var fac2 = 0;
|
||||
|
||||
var dualELACFault = 0;
|
||||
var tripleSECFault = 0;
|
||||
var dualFACFault = 0;
|
||||
var adr1 = 0;
|
||||
var adr2 = 0;
|
||||
var adr3 = 0;
|
||||
var tripleADRFail = 0;
|
||||
var doubleADRFail = 0;
|
||||
var ir1 = 0;
|
||||
var ir2 = 0;
|
||||
var ir3 = 0;
|
||||
var tripleIRFail = 0;
|
||||
var doubleIRFail = 0;
|
||||
var blue = 0;
|
||||
var green = 0;
|
||||
var yellow = 0;
|
||||
var blueGreenFail = 0;
|
||||
var greenYellowFail = 0;
|
||||
var ail = 0;
|
||||
var roll = 0;
|
||||
var rollback = 0;
|
||||
|
@ -50,6 +64,7 @@ var FBW = {
|
|||
sec3: props.globals.getNode("/systems/failures/fctl/sec3"),
|
||||
fac1: props.globals.getNode("/systems/failures/fctl/fac1"),
|
||||
fac2: props.globals.getNode("/systems/failures/fctl/fac2"),
|
||||
ths: props.globals.getNode("/systems/failures/fctl/ths-jam"),
|
||||
spoilerl1: props.globals.getNode("/systems/failures/spoilers/spoiler-l1"),
|
||||
spoilerl2: props.globals.getNode("/systems/failures/spoilers/spoiler-l2"),
|
||||
spoilerl3: props.globals.getNode("/systems/failures/spoilers/spoiler-l3"),
|
||||
|
@ -129,6 +144,7 @@ var FBW = {
|
|||
me.Failures.sec3.setBoolValue(0);
|
||||
me.Failures.fac1.setBoolValue(0);
|
||||
me.Failures.fac2.setBoolValue(0);
|
||||
me.Failures.ths.setBoolValue(0);
|
||||
me.Failures.spoilerl1.setBoolValue(0);
|
||||
me.Failures.spoilerl2.setBoolValue(0);
|
||||
me.Failures.spoilerl3.setBoolValue(0);
|
||||
|
@ -154,86 +170,74 @@ var update_loop = func {
|
|||
fac2 = FBW.Computers.fac2.getBoolValue();
|
||||
law = FBW.activeLaw.getValue();
|
||||
lawyaw = FBW.activeYawLaw.getValue();
|
||||
adr1 = systems.ADIRS.Operating.adr[0].getValue();
|
||||
adr2 = systems.ADIRS.Operating.adr[1].getValue();
|
||||
adr3 = systems.ADIRS.Operating.adr[2].getValue();
|
||||
ir1 = systems.ADIRS.ADIRunits[0].operating;
|
||||
ir2 = systems.ADIRS.ADIRunits[1].operating;
|
||||
ir3 = systems.ADIRS.ADIRunits[2].operating;
|
||||
|
||||
# Degrade logic, all failures which degrade FBW need to go here. -JD
|
||||
blue = systems.HYD.Psi.blue.getValue();
|
||||
green = systems.HYD.Psi.green.getValue();
|
||||
yellow = systems.HYD.Psi.yellow.getValue();
|
||||
if (!pts.Gear.wow[1].getBoolValue() and !pts.Gear.wow[2].getBoolValue()) {
|
||||
if (!elac1 and !elac2) {
|
||||
if (lawyaw == 0) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if ((!elac1 and elac2 and ((green < 1500 and yellow >= 1500) or (green >= 1500 and yellow < 1500))) or (!elac2 and elac1 and blue < 1500)) {
|
||||
if (lawyaw == 0) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if (!sec1 and !sec2 and !sec3) {
|
||||
if (lawyaw == 0) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
}
|
||||
}
|
||||
if (systems.ELEC.EmerElec.getBoolValue()) {
|
||||
if (lawyaw == 0 or lawyaw == 1) {
|
||||
} elsif (fac1 and lawyaw == 2) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if (blue < 1500 and green < 1500 and yellow >= 1500) {
|
||||
if (lawyaw == 0) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if ((!fac1 and !fac2) or !FBW.yawdamper.getValue() or (blue >= 1500 and green < 1500 and yellow < 1500)) {
|
||||
|
||||
dualELACFault = !elac1 and !elac2;
|
||||
tripleSECFault = !sec1 and !sec2 and !sec3;
|
||||
dualFACFault = !fac1 and !fac2;
|
||||
|
||||
blueGreenFail = blue < 1500 and green < 1500 and yellow >= 1500;
|
||||
greenYellowFail = blue >= 1500 and green < 1500 and yellow < 1500;
|
||||
tripleADRFail = !adr1 and !adr2 and !adr3;
|
||||
doubleADRFail = (!adr1 and !adr2 and adr3) or (adr1 and !adr2 and !adr3) or (!adr1 and adr2 and !adr3);
|
||||
tripleIRFail = !ir1 and !ir2 and !ir3;
|
||||
doubleIRFail = (!ir1 and !ir2 and ir3) or (ir1 and !ir2 and !ir3) or (!ir1 and ir2 and !ir3);
|
||||
|
||||
if (dualELACFault and !sec1 and !sec2) {
|
||||
FBW.degradeLaw.setValue(3);
|
||||
FBW.apOff = 1;
|
||||
} elsif (tripleADRFail or doubleADRFail or doubleIRFail or tripleIRFail or dualFACFault or !FBW.yawdamper.getValue() or greenYellowFail or blueGreenFail or dualELACFault or (!elac1 and elac2 and ((green < 1500 and yellow >= 1500) or (green >= 1500 and yellow < 1500))) or (!elac2 and elac1 and blue < 1500) or tripleSECFault or systems.ELEC.EmerElec.getBoolValue()) {
|
||||
if (dualFACFault or !FBW.yawdamper.getValue() or greenYellowFail or (systems.ELEC.EmerElec.getBoolValue() and !fac1) or tripleIRFail) {
|
||||
if (lawyaw == 0 or lawyaw == 1) {
|
||||
FBW.degradeYawLaw.setValue(2);
|
||||
}
|
||||
if (law == 0) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
} elsif (fac1 and lawyaw == 2 and systems.ELEC.EmerElec.getBoolValue()) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
} elsif (lawyaw == 0) {
|
||||
FBW.degradeYawLaw.setValue(1);
|
||||
}
|
||||
|
||||
if (law == 0 and !tripleIRFail) {
|
||||
FBW.degradeLaw.setValue(1);
|
||||
if (!tripleSECFault) {
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
}
|
||||
if (!elac1 and !elac2 and !sec1 and !sec2 and !sec3 and !fac1 and !fac2) {
|
||||
FBW.degradeLaw.setValue(3);
|
||||
} elsif (tripleIRFail and (law == 0 or law == 1)) {
|
||||
FBW.degradeLaw.setValue(2);
|
||||
FBW.apOff = 1;
|
||||
}
|
||||
} else {
|
||||
FBW.degradeYawLaw.setValue(0);
|
||||
FBW.degradeLaw.setValue(0);
|
||||
FBW.apOff = 0;
|
||||
}
|
||||
|
||||
if (pts.Controls.Gear.gearDown.getBoolValue() and !fmgc.Input.ap1.getBoolValue() and !fmgc.Input.ap2.getBoolValue()) {
|
||||
if (law == 1) {
|
||||
FBW.degradeLaw.setValue(2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# degrade loop runs faster; reset this variable
|
||||
law = FBW.activeLaw.getValue();
|
||||
|
||||
# Mech Backup can always return to direct, if it can.
|
||||
if (law == 3 and (elac1 or elac2 or sec1 or sec2 or sec3 or fac1 or fac2) and systems.ELEC.Bus.acEss.getValue() >= 110 and (green >= 1500 or blue >= 1500 or yellow >= 1500)) {
|
||||
FBW.degradeLaw.setValue(2);
|
||||
if (!pts.Gear.wow[1].getBoolValue() and !pts.Gear.wow[2].getBoolValue()) {
|
||||
if (pts.Controls.Gear.gearDown.getBoolValue()) {
|
||||
if (law == 1) {
|
||||
FBW.degradeLaw.setValue(2); # todo 3 sec timer
|
||||
}
|
||||
} else {
|
||||
if (law == 2 and !tripleIRFail) {
|
||||
FBW.degradeLaw.setValue(1); # todo 3 sec timer
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cas = pts.Instrumentation.AirspeedIndicator.indicatedSpdKt.getValue();
|
||||
mmoIAS = (cas / pts.Instrumentation.AirspeedIndicator.indicatedMach.getValue()) * 0.82;
|
||||
if (mmoIAS < 350) {
|
||||
|
|
|
@ -381,10 +381,10 @@ var FCUController = {
|
|||
} else if (d == -10) {
|
||||
altTemp = altTemp - 1000;
|
||||
}
|
||||
if (altTemp < 0) {
|
||||
altSet.setValue(0);
|
||||
} else if (altTemp > 50000) {
|
||||
altSet.setValue(50000);
|
||||
if (altTemp < 100) {
|
||||
altSet.setValue(100);
|
||||
} else if (altTemp > 49000) {
|
||||
altSet.setValue(49000);
|
||||
} else {
|
||||
altSet.setValue(altTemp);
|
||||
}
|
||||
|
|
|
@ -669,7 +669,7 @@ var masterFMGC = maketimer(0.2, func {
|
|||
} elsif (pts.Gear.position[0].getValue() != 0 or pts.Gear.position[1].getValue() != 0 or pts.Gear.position[2].getValue() != 0) {
|
||||
FMGCInternal.maxspeed = 284;
|
||||
} else {
|
||||
FMGCInternal.maxspeed = getprop("/it-fbw/speeds/vmo-mmo");
|
||||
FMGCInternal.maxspeed = fmgc.FMGCInternal.vmo_mmo;
|
||||
}
|
||||
|
||||
############################
|
||||
|
|
|
@ -161,7 +161,7 @@ var SimbriefParser = {
|
|||
}
|
||||
|
||||
if (ident == "TOD") {
|
||||
_foundTOC = 1;
|
||||
_foundTOD = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,16 +14,16 @@ var cvr_tone = props.globals.getNode("/controls/CVR/tone");
|
|||
|
||||
# Resets buttons to the default values
|
||||
var variousReset = func {
|
||||
setprop("modes/cpt-du-xfr", 0);
|
||||
setprop("modes/fo-du-xfr", 0);
|
||||
setprop("/modes/cpt-du-xfr", 0);
|
||||
setprop("/modes/fo-du-xfr", 0);
|
||||
setprop("/controls/fadec/n1mode1", 0);
|
||||
setprop("/controls/fadec/n1mode2", 0);
|
||||
setprop("instrumentation/mk-viii/serviceable", 1);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/gpws-inhibit", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/glideslope-inhibit", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/momentary-flap-all-override", 0);
|
||||
setprop("instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override", 0);
|
||||
setprop("/instrumentation/mk-viii/serviceable", 1);
|
||||
setprop("/instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit", 0);
|
||||
setprop("/instrumentation/mk-viii/inputs/discretes/gpws-inhibit", 0);
|
||||
setprop("/instrumentation/mk-viii/inputs/discretes/glideslope-inhibit", 0);
|
||||
setprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap-all-override", 0);
|
||||
setprop("/instrumentation/mk-viii/inputs/discretes/momentary-flap-3-override", 0);
|
||||
setprop("/controls/switches/cabinCall", 0);
|
||||
setprop("/controls/switches/mechCall", 0);
|
||||
setprop("/controls/switches/emer-lights", 0.5);
|
||||
|
@ -61,7 +61,7 @@ var variousReset = func {
|
|||
setprop("/controls/lighting/DU/du6", 1);
|
||||
setprop("/controls/lighting/DU/mcdu1", 1);
|
||||
setprop("/controls/lighting/DU/mcdu2", 1);
|
||||
setprop("modes/fcu/hdg-time", -45);
|
||||
setprop("/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", 1);
|
||||
|
|
|
@ -4,147 +4,120 @@
|
|||
#########
|
||||
# Views #
|
||||
#########
|
||||
var viewNumberRaw = 0;
|
||||
var shakeFlag = 0;
|
||||
var resetView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
viewNumberRaw = pts.Sim.CurrentView.viewNumberRaw.getValue();
|
||||
if (viewNumberRaw == 0 or (viewNumberRaw >= 100 and viewNumberRaw <= 110)) {
|
||||
if (pts.Sim.Rendering.Headshake.enabled.getBoolValue()) {
|
||||
shakeFlag = 1;
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 360;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
pts.Sim.CurrentView.fieldOfView.setValue(props.globals.getNode("/sim/view[" ~ viewNumberRaw ~ "]/config/default-field-of-view-deg").getValue());
|
||||
pts.Sim.CurrentView.headingOffsetDeg.setValue(props.globals.getNode("/sim/view[" ~ viewNumberRaw ~ "]/config/heading-offset-deg").getValue());
|
||||
pts.Sim.CurrentView.pitchOffsetDeg.setValue(props.globals.getNode("/sim/view[" ~ viewNumberRaw ~ "]/config/pitch-offset-deg").getValue());
|
||||
pts.Sim.CurrentView.rollOffsetDeg.setValue(props.globals.getNode("/sim/view[" ~ viewNumberRaw ~ "]/config/roll-offset-deg").getValue());
|
||||
pts.Sim.CurrentView.xOffsetM.setValue(props.globals.getNode("/sim/view[" ~ viewNumberRaw ~ "]/config/x-offset-m").getValue());
|
||||
pts.Sim.CurrentView.yOffsetM.setValue(props.globals.getNode("/sim/view[" ~ viewNumberRaw ~ "]/config/y-offset-m").getValue());
|
||||
pts.Sim.CurrentView.zOffsetM.setValue(props.globals.getNode("/sim/view[" ~ viewNumberRaw ~ "]/config/z-offset-m").getValue());
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", -14.6, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
if (shakeFlag) {
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var autopilotView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
if (pts.Sim.CurrentView.viewNumberRaw.getValue() == 0) {
|
||||
if (pts.Sim.Rendering.Headshake.enabled.getBoolValue()) {
|
||||
shakeFlag = 1;
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 341.7;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
pts.Sim.CurrentView.fieldOfView.setValue(63);
|
||||
pts.Sim.CurrentView.headingOffsetDeg.setValue(341.7);
|
||||
pts.Sim.CurrentView.pitchOffsetDeg.setValue(-16.4);
|
||||
pts.Sim.CurrentView.rollOffsetDeg.setValue(0);
|
||||
pts.Sim.CurrentView.xOffsetM.setValue(-0.45);
|
||||
pts.Sim.CurrentView.yOffsetM.setValue(2.34);
|
||||
pts.Sim.CurrentView.zOffsetM.setValue(-13.75);
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", -16.4, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
if (shakeFlag) {
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var overheadView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
if (pts.Sim.CurrentView.viewNumberRaw.getValue() == 0) {
|
||||
if (pts.Sim.Rendering.Headshake.enabled.getBoolValue()) {
|
||||
shakeFlag = 1;
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 348;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
pts.Sim.CurrentView.fieldOfView.setValue(105.8);
|
||||
pts.Sim.CurrentView.headingOffsetDeg.setValue(348);
|
||||
pts.Sim.CurrentView.pitchOffsetDeg.setValue(65.25);
|
||||
pts.Sim.CurrentView.rollOffsetDeg.setValue(0,0.66);
|
||||
pts.Sim.CurrentView.xOffsetM.setValue(-0.12);
|
||||
pts.Sim.CurrentView.yOffsetM.setValue(2.34);
|
||||
pts.Sim.CurrentView.zOffsetM.setValue(-13.75);
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 105.8, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", 65.25, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0,0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.12, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
if (shakeFlag) {
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var pedestalView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
if (pts.Sim.CurrentView.viewNumberRaw.getValue() == 0) {
|
||||
if (pts.Sim.Rendering.Headshake.enabled.getBoolValue()) {
|
||||
shakeFlag = 1;
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 315;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
pts.Sim.CurrentView.fieldOfView.setValue(63);
|
||||
pts.Sim.CurrentView.headingOffsetDeg.setValue(315);
|
||||
pts.Sim.CurrentView.pitchOffsetDeg.setValue(-46.3);
|
||||
pts.Sim.CurrentView.rollOffsetDeg.setValue(0);
|
||||
pts.Sim.CurrentView.xOffsetM.setValue(-0.45);
|
||||
pts.Sim.CurrentView.yOffsetM.setValue(2.34);
|
||||
pts.Sim.CurrentView.zOffsetM.setValue(-13.75);
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", -46.3, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
if (shakeFlag) {
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var lightsView = func() {
|
||||
if (getprop("/sim/current-view/view-number") == 0) {
|
||||
if (getprop("/sim/rendering/headshake/enabled")) {
|
||||
var _shakeFlag = 1;
|
||||
setprop("/sim/rendering/headshake/enabled", 0);
|
||||
if (pts.Sim.CurrentView.viewNumberRaw.getValue() == 0) {
|
||||
if (pts.Sim.Rendering.Headshake.enabled.getBoolValue()) {
|
||||
shakeFlag = 1;
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(0);
|
||||
} else {
|
||||
var _shakeFlag = 0;
|
||||
shakeFlag = 0;
|
||||
}
|
||||
|
||||
var hd = getprop("/sim/current-view/heading-offset-deg");
|
||||
var hd_t = 329;
|
||||
if (hd < 180) {
|
||||
hd_t = hd_t - 360;
|
||||
}
|
||||
pts.Sim.CurrentView.fieldOfView.setValue(63);
|
||||
pts.Sim.CurrentView.headingOffsetDeg.setValue(329);
|
||||
pts.Sim.CurrentView.pitchOffsetDeg.setValue(17.533);
|
||||
pts.Sim.CurrentView.rollOffsetDeg.setValue(0);
|
||||
pts.Sim.CurrentView.xOffsetM.setValue(-0.45);
|
||||
pts.Sim.CurrentView.yOffsetM.setValue(2.34);
|
||||
pts.Sim.CurrentView.zOffsetM.setValue(-13.75);
|
||||
|
||||
interpolate("sim/current-view/field-of-view", 63, 0.66);
|
||||
interpolate("sim/current-view/heading-offset-deg", hd_t, 0.66);
|
||||
interpolate("sim/current-view/pitch-offset-deg", 17.533, 0.66);
|
||||
interpolate("sim/current-view/roll-offset-deg", 0, 0.66);
|
||||
interpolate("sim/current-view/x-offset-m", -0.45, 0.66);
|
||||
interpolate("sim/current-view/y-offset-m", 2.34, 0.66);
|
||||
interpolate("sim/current-view/z-offset-m", -13.75, 0.66);
|
||||
|
||||
if (_shakeFlag) {
|
||||
setprop("/sim/rendering/headshake/enabled", 1);
|
||||
if (shakeFlag) {
|
||||
pts.Sim.Rendering.Headshake.enabled.setBoolValue(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -259,7 +259,6 @@ var systemsLoop = maketimer(0.1, func {
|
|||
systems.ADIRS.loop();
|
||||
systems.APUController.loop();
|
||||
systems.BrakeSys.update();
|
||||
ecam.ECAM.loop();
|
||||
fadec.FADEC.loop();
|
||||
rmp.rmpUpdate();
|
||||
fcu.FCUController.loop();
|
||||
|
|
|
@ -22,6 +22,7 @@ var Controls = {
|
|||
Engines: {
|
||||
startSw: props.globals.getNode("/controls/engines/engine-start-switch"),
|
||||
Engine: {
|
||||
cutoff: [props.globals.getNode("/controls/engines/engine[0]/cutoff"), props.globals.getNode("/controls/engines/engine[1]/cutoff")],
|
||||
cutoffSw: [props.globals.getNode("/controls/engines/engine[0]/cutoff-switch"), props.globals.getNode("/controls/engines/engine[1]/cutoff-switch")],
|
||||
firePb: [props.globals.getNode("/controls/engines/engine[0]/fire-btn"), props.globals.getNode("/controls/engines/engine[1]/fire-btn")],
|
||||
throttle: [props.globals.getNode("/controls/engines/engine[0]/throttle"), props.globals.getNode("/controls/engines/engine[1]/throttle")],
|
||||
|
@ -30,6 +31,7 @@ var Controls = {
|
|||
throttleOutput: [props.globals.getNode("/controls/engines/engine[0]/throttle-output"), props.globals.getNode("/controls/engines/engine[1]/throttle-output")],
|
||||
throttlePos: [props.globals.getNode("/controls/engines/engine[0]/throttle-pos"), props.globals.getNode("/controls/engines/engine[1]/throttle-pos")],
|
||||
throttleRev: [props.globals.getNode("/controls/engines/engine[0]/throttle-rev"), props.globals.getNode("/controls/engines/engine[1]/throttle-rev")],
|
||||
starter: [props.globals.getNode("/controls/engines/engine[0]/starter"), props.globals.getNode("/controls/engines/engine[1]/starter")],
|
||||
reverser: [props.globals.getNode("/controls/engines/engine[0]/reverser"), props.globals.getNode("/controls/engines/engine[1]/reverser")],
|
||||
},
|
||||
},
|
||||
|
@ -58,7 +60,7 @@ var Controls = {
|
|||
};
|
||||
|
||||
var ECAM = {
|
||||
fwcWarningPhase: props.globals.initNode("/ECAM/warning-phase", 1, "INT"),
|
||||
fwcWarningPhase: props.globals.getNode("/ECAM/warning-phase"),
|
||||
};
|
||||
|
||||
var Engines = {
|
||||
|
@ -203,6 +205,21 @@ var Position = {
|
|||
|
||||
var Sim = {
|
||||
aero: props.globals.getNode("/sim/aero"),
|
||||
CurrentView: {
|
||||
fieldOfView: props.globals.getNode("/sim/current-view/field-of-view", 1),
|
||||
headingOffsetDeg: props.globals.getNode("/sim/current-view/heading-offset-deg", 1),
|
||||
name: props.globals.getNode("/sim/current-view/name", 1),
|
||||
pitchOffsetDeg: props.globals.getNode("/sim/current-view/pitch-offset-deg", 1),
|
||||
rollOffsetDeg: props.globals.getNode("/sim/current-view/roll-offset-deg", 1),
|
||||
type: props.globals.getNode("/sim/current-view/type", 1),
|
||||
viewNumberRaw: props.globals.getNode("/sim/current-view/view-number-raw", 1),
|
||||
zOffsetDefault: props.globals.getNode("/sim/current-view/z-offset-default", 1),
|
||||
xOffsetM: props.globals.getNode("/sim/current-view/x-offset-m", 1),
|
||||
yOffsetM: props.globals.getNode("/sim/current-view/y-offset-m", 1),
|
||||
zOffsetM: props.globals.getNode("/sim/current-view/z-offset-m", 1),
|
||||
zOffsetMaxM: props.globals.getNode("/sim/current-view/z-offset-max-m", 1),
|
||||
zOffsetMinM: props.globals.getNode("/sim/current-view/z-offset-min-m", 1),
|
||||
},
|
||||
Input: {
|
||||
Selected: {
|
||||
engine: [props.globals.getNode("/sim/input/selected/engine[0]", 1),props.globals.getNode("/sim/input/selected/engine[1]", 1)],
|
||||
|
@ -212,6 +229,11 @@ var Sim = {
|
|||
online: props.globals.getNode("/sim/multiplay/online"),
|
||||
},
|
||||
pause: props.globals.getNode("/sim/freeze/master"),
|
||||
Rendering: {
|
||||
Headshake: {
|
||||
enabled: props.globals.getNode("/sim/rendering/headshake/enabled"),
|
||||
},
|
||||
},
|
||||
replayState: props.globals.getNode("/sim/freeze/replay-state"),
|
||||
Replay: {
|
||||
replayActive: props.globals.getNode("/sim/replay/replay-state"),
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Distance Zooming
|
||||
# Octal's Distance Zooming
|
||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
# Based on PropertyRule file by onox
|
||||
|
||||
|
@ -6,33 +6,33 @@ var distance = 0;
|
|||
var min_dist = 0;
|
||||
var max_dist = 0;
|
||||
var canChangeZOffset = 0;
|
||||
var decStep = -1;
|
||||
var incStep = 1;
|
||||
var decStep = -5;
|
||||
var incStep = 5;
|
||||
var viewName = "XX";
|
||||
|
||||
var fovZoom = func(d) {
|
||||
viewName = getprop("/sim/current-view/name");
|
||||
canChangeZOffset = getprop("/sim/current-view/type") == "lookat" and viewName != "Tower View" and viewName != "Tower View AGL" and viewName != "Fly-By View" and viewName != "Chase View" and viewName != "Chase View Without Yaw" and viewName != "Walk View" and viewName != "Walker Orbit View";
|
||||
viewName = pts.Sim.CurrentView.name.getValue();
|
||||
canChangeZOffset = pts.Sim.CurrentView.type.getValue() == "lookat" and viewName != "Tower View" and viewName != "Fly-By View" and viewName != "Chase View" and viewName != "Chase View Without Yaw" and viewName != "Walk View";
|
||||
|
||||
if (getprop("/sim/current-view/z-offset-m") <= -20) {
|
||||
decStep = -2;
|
||||
if (pts.Sim.CurrentView.zOffsetM.getValue() <= -50) {
|
||||
decStep = -10;
|
||||
} else {
|
||||
decStep = -1;
|
||||
decStep = -5;
|
||||
}
|
||||
|
||||
if (getprop("/sim/current-view/z-offset-m") < -20) { # Not a typo, the conditions are different
|
||||
incStep = 2;
|
||||
if (pts.Sim.CurrentView.zOffsetM.getValue() < -50) { # Not a typo, the conditions are different
|
||||
incStep = 10;
|
||||
} else {
|
||||
incStep = 1;
|
||||
incStep = 5;
|
||||
}
|
||||
|
||||
if (d == -1) {
|
||||
if (canChangeZOffset) {
|
||||
distance = getprop("/sim/current-view/z-offset-m");
|
||||
min_dist = getprop("/sim/current-view/z-offset-min-m");
|
||||
distance = pts.Sim.CurrentView.zOffsetM.getValue();
|
||||
min_dist = pts.Sim.CurrentView.zOffsetMinM.getValue();
|
||||
|
||||
distance = math.round(std.min(-min_dist, distance + incStep) / incStep, 0.1) * incStep;
|
||||
setprop("/sim/current-view/z-offset-m", distance);
|
||||
pts.Sim.CurrentView.zOffsetM.setValue(distance);
|
||||
|
||||
gui.popupTip(sprintf("%d meters", abs(distance)));
|
||||
} else {
|
||||
|
@ -40,11 +40,11 @@ var fovZoom = func(d) {
|
|||
}
|
||||
} else if (d == 1) {
|
||||
if (canChangeZOffset) {
|
||||
distance = getprop("/sim/current-view/z-offset-m");
|
||||
max_dist = getprop("/sim/current-view/z-offset-max-m");
|
||||
distance = pts.Sim.CurrentView.zOffsetM.getValue();
|
||||
max_dist = pts.Sim.CurrentView.zOffsetMaxM.getValue();
|
||||
|
||||
distance = math.round(std.max(-max_dist, distance + decStep) / decStep, 0.1) * decStep;
|
||||
setprop("/sim/current-view/z-offset-m", distance);
|
||||
pts.Sim.CurrentView.zOffsetM.setValue(distance);
|
||||
|
||||
gui.popupTip(sprintf("%d meters", abs(distance)));
|
||||
} else {
|
||||
|
@ -52,11 +52,11 @@ var fovZoom = func(d) {
|
|||
}
|
||||
} else if (d == 0) {
|
||||
if (canChangeZOffset) {
|
||||
setprop("/sim/current-view/z-offset-m", getprop("/sim/current-view/z-offset-default") * -1);
|
||||
gui.popupTip(sprintf("%d meters", getprop("/sim/current-view/z-offset-default")));
|
||||
pts.Sim.CurrentView.zOffsetM.setValue(pts.Sim.CurrentView.zOffsetDefault.getValue() * -1);
|
||||
gui.popupTip(sprintf("%d meters", pts.Sim.CurrentView.zOffsetDefault.getValue()));
|
||||
} else {
|
||||
setprop("/sim/current-view/field-of-view", getprop("/sim/view/config/default-field-of-view-deg"));
|
||||
gui.popupTip(sprintf("FOV: %.1f", getprop("/sim/current-view/field-of-view")))
|
||||
pts.Sim.CurrentView.fieldOfView.setValue(pts.Sim.View.Config.defaultFieldOfViewDeg.getValue());
|
||||
gui.popupTip(sprintf("FOV: %.1f", pts.Sim.CurrentView.fieldOfView.getValue()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -412,7 +412,8 @@ var departurePage = {
|
|||
me.arrowsMatrix[1][1] = 0;
|
||||
me.arrowsColour[1][1] = "ack";
|
||||
}
|
||||
} elsif (size(me.transitions) >= 2) {
|
||||
}
|
||||
if (size(me.transitions) >= 2) {
|
||||
me.R3 = [me.transitions[1] ~ " ", nil, "blu"];
|
||||
if (me.transitions[1] != me.selectedTransition) {
|
||||
me.arrowsMatrix[1][2] = 1;
|
||||
|
@ -421,7 +422,8 @@ var departurePage = {
|
|||
me.arrowsMatrix[1][2] = 0;
|
||||
me.arrowsColour[1][2] = "ack";
|
||||
}
|
||||
} elsif (size(me.transitions) >= 3) {
|
||||
}
|
||||
if (size(me.transitions) >= 3) {
|
||||
me.R4 = [me.transitions[2] ~ " ", nil, "blu"];
|
||||
if (me.transitions[2] != me.selectedTransition) {
|
||||
me.arrowsMatrix[1][3] = 1;
|
||||
|
@ -430,7 +432,8 @@ var departurePage = {
|
|||
me.arrowsMatrix[1][3] = 0;
|
||||
me.arrowsColour[1][3] = "ack";
|
||||
}
|
||||
} elsif (size(me.transitions) >= 4) {
|
||||
}
|
||||
if (size(me.transitions) >= 4) {
|
||||
me.R5 = [me.transitions[3] ~ " ", nil, "blu"];
|
||||
if (me.transitions[3] != me.selectedTransition) {
|
||||
me.arrowsMatrix[1][4] = 1;
|
||||
|
|
|
@ -17,7 +17,7 @@ var Transponder = {
|
|||
code: "2000",
|
||||
selected: 0,
|
||||
electricalSrc: "",
|
||||
activeADIRS: 0,
|
||||
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)],
|
||||
|
@ -244,6 +244,41 @@ var transponderPanel = {
|
|||
Transponders.vector[1].switchADIRS(2);
|
||||
}
|
||||
}
|
||||
|
||||
if (Transponders.vector[me.atcSel - 1].activeADIRS == 1) {
|
||||
me.updateADR1(systems.ADIRS.Operating.adr[0].getValue());
|
||||
} elsif (Transponders.vector[me.atcSel - 1].activeADIRS == 2) {
|
||||
me.updateADR2(systems.ADIRS.Operating.adr[1].getValue());
|
||||
} elsif (Transponders.vector[me.atcSel - 1].activeADIRS == 3) {
|
||||
me.updateADR3(systems.ADIRS.Operating.adr[2].getValue());
|
||||
}
|
||||
},
|
||||
updateADR1: func(val) {
|
||||
if (Transponders.vector[me.atcSel - 1].activeADIRS == 1) {
|
||||
if (val) {
|
||||
setprop("/instrumentation/tcas/serviceable", 1);
|
||||
} else {
|
||||
setprop("/instrumentation/tcas/serviceable", 0);
|
||||
}
|
||||
}
|
||||
},
|
||||
updateADR2: func(val) {
|
||||
if (Transponders.vector[me.atcSel - 1].activeADIRS == 2) {
|
||||
if (val) {
|
||||
setprop("/instrumentation/tcas/serviceable", 1);
|
||||
} else {
|
||||
setprop("/instrumentation/tcas/serviceable", 0);
|
||||
}
|
||||
}
|
||||
},
|
||||
updateADR3: func(val) {
|
||||
if (Transponders.vector[me.atcSel - 1].activeADIRS == 3) {
|
||||
if (val) {
|
||||
setprop("/instrumentation/tcas/serviceable", 1);
|
||||
} else {
|
||||
setprop("/instrumentation/tcas/serviceable", 0);
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -265,3 +300,15 @@ var Transponders = std.Vector.new([Transponder.new("/systems/electrical/bus/ac-e
|
|||
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, 0);
|
||||
|
||||
setlistener("/systems/navigation/adr/operating-2", func() {
|
||||
transponderPanel.updateADR2(systems.ADIRS.Operating.adr[1].getValue());
|
||||
}, 1, 0);
|
||||
|
||||
setlistener("/systems/navigation/adr/operating-3", func() {
|
||||
transponderPanel.updateADR3(systems.ADIRS.Operating.adr[2].getValue());
|
||||
}, 1, 0);
|
|
@ -10,32 +10,31 @@ var _selfTestTime = nil;
|
|||
var ADIRSnodesND = [props.globals.getNode("/instrumentation/efis[0]/nd/ir-1", 1),props.globals.getNode("/instrumentation/efis[1]/nd/ir-2", 1),props.globals.getNode("/instrumentation/efis[0]/nd/ir-3", 1)];
|
||||
|
||||
var ADIRU = {
|
||||
# local vars
|
||||
_alignTime: 0,
|
||||
_voltageMain: 0,
|
||||
_voltageBackup: 0,
|
||||
_voltageLimitedTime: 0,
|
||||
_noPowerTime: 0,
|
||||
_timeVar: 0,
|
||||
_roll: 0,
|
||||
_pitch: 0,
|
||||
_gs: 0,
|
||||
|
||||
num: 0,
|
||||
aligned: 0,
|
||||
inAlign: 0,
|
||||
outputOn: 1, # 0 = disc, 1 = normal
|
||||
mode: 0, # 0 = off, 1 = nav, 2 = att
|
||||
energised: 0, # 0 = off, 1 = on
|
||||
operative: 0, # 0 = off,
|
||||
alignTimer: nil,
|
||||
input: [],
|
||||
output: [],
|
||||
|
||||
# methods
|
||||
new: func(n) {
|
||||
var adiru = { parents:[ADIRU] };
|
||||
adiru.num = n;
|
||||
adiru._alignTime = 0;
|
||||
adiru._pfdTime = 0;
|
||||
adiru._voltageMain = 0;
|
||||
adiru._voltageBackup = 0;
|
||||
adiru._voltageLimitedTime = 0;
|
||||
adiru._noPowerTime = 0;
|
||||
adiru._timeVar = 0;
|
||||
adiru._roll = 0;
|
||||
adiru._pitch = 0;
|
||||
adiru._gs = 0;
|
||||
|
||||
adiru.aligned = 0;
|
||||
adiru.operating = 0; # ir operating - used for PFD + fbw failure
|
||||
adiru.inAlign = 0;
|
||||
adiru.outputOn = 1; # 0 = disc; 1 = normal
|
||||
adiru.mode = 0; # 0 = off; 1 = nav; 2 = att
|
||||
adiru.energised = 0; # 0 = off; 1 = on
|
||||
adiru.operative = 0; # 0 = off;
|
||||
adiru.alignTimer = nil;
|
||||
adiru.input = [];
|
||||
adiru.output = [];
|
||||
adiru.alignTimer = maketimer(0.1, adiru, me.alignLoop);
|
||||
|
||||
return adiru;
|
||||
|
@ -93,6 +92,7 @@ var ADIRU = {
|
|||
if (!ADIRS.skip.getValue()) {
|
||||
if (time > 0 and me.aligned == 0 and me.inAlign == 0 and me.operative == 1) {
|
||||
me._alignTime = pts.Sim.Time.elapsedSec.getValue() + time;
|
||||
me._pfdTime = pts.Sim.Time.elapsedSec.getValue() + 20 + (rand() * 5);
|
||||
me.inAlign = 1;
|
||||
if (me.alignTimer != nil) {
|
||||
me.alignTimer.start();
|
||||
|
@ -101,6 +101,7 @@ var ADIRU = {
|
|||
} else {
|
||||
if (me.aligned == 0 and me.inAlign == 0 and me.operative == 1) {
|
||||
me._alignTime = pts.Sim.Time.elapsedSec.getValue() + 5;
|
||||
me._pfdTime = pts.Sim.Time.elapsedSec.getValue() + 1;
|
||||
me.inAlign = 1;
|
||||
if (me.alignTimer != nil) {
|
||||
me.alignTimer.start();
|
||||
|
@ -114,6 +115,7 @@ var ADIRU = {
|
|||
me.aligned = 0;
|
||||
ADIRSnodesND[me.num].setValue(0);
|
||||
ADIRS.Operating.aligned[me.num].setValue(0);
|
||||
me.operating = 0;
|
||||
if (me.alignTimer != nil) {
|
||||
me.alignTimer.stop();
|
||||
}
|
||||
|
@ -124,6 +126,9 @@ var ADIRU = {
|
|||
call(canvas_nd.ND_2.NDFo.predicates[predicate]);
|
||||
}
|
||||
},
|
||||
irOperating: func() {
|
||||
me.operating = 1;
|
||||
},
|
||||
stopAlignAligned: func() {
|
||||
me.inAlign = 0;
|
||||
me.aligned = 1;
|
||||
|
@ -155,9 +160,14 @@ var ADIRU = {
|
|||
} elsif (pts.Sim.Time.elapsedSec.getValue() >= me._alignTime) {
|
||||
me.stopAlignAligned();
|
||||
}
|
||||
|
||||
if (!me.operating and pts.Sim.Time.elapsedSec.getValue() >= me._pfdTime) {
|
||||
me.irOperating();
|
||||
}
|
||||
},
|
||||
instAlign: func() {
|
||||
me.stopAlignAligned();
|
||||
me.irOperating();
|
||||
},
|
||||
# Update loop
|
||||
update: func() {
|
||||
|
|
|
@ -312,9 +312,9 @@ var ATIS = {
|
|||
return 1;
|
||||
}
|
||||
|
||||
var serverString = "https://api.flybywiresim.com/atis?source=" ~ me.serverSel.getValue() ~ "&icao=";
|
||||
var serverString = "https://api.flybywiresim.com/atis/" ~ airport ~ "?source=" ~ me.serverSel.getValue();
|
||||
|
||||
http.load(serverString ~ airport)
|
||||
http.load(serverString)
|
||||
.fail(func(r) return 3)
|
||||
.done(func(r) {
|
||||
var errs = [];
|
||||
|
@ -330,14 +330,14 @@ 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) {
|
||||
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) {
|
||||
me.received = 0;
|
||||
me.sent = 0;
|
||||
mcdu.mcdu_message(i,"NO D-ATIS AVAILABLE");
|
||||
return;
|
||||
}
|
||||
if (find("combined", raw) != -1) {
|
||||
raw = split('{"combined":"', raw)[1];
|
||||
raw = split('"combined":"', raw)[1];
|
||||
raw = split('"}', raw)[0];
|
||||
} else {
|
||||
if (me.type == 0) {
|
||||
|
|
|
@ -18,45 +18,43 @@ var shutdown_time = 20;
|
|||
var egt_shutdown_time = 20;
|
||||
|
||||
var eng_init = func {
|
||||
setprop("/controls/engines/engine[0]/man-start", 0);
|
||||
setprop("/controls/engines/engine[1]/man-start", 0);
|
||||
eng_common_init();
|
||||
}
|
||||
|
||||
# Trigger Startups and Stops
|
||||
setlistener("/controls/engines/engine[0]/cutoff-switch", func {
|
||||
if (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
||||
if (getprop("/systems/acconfig/autoconfig-running") == 1) {
|
||||
if (!pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||
if (pts.Acconfig.running.getValue()) {
|
||||
fast_start_one();
|
||||
} else {
|
||||
if (getprop("/controls/engines/engine[0]/man-start") == 0) {
|
||||
if (!manStart[0].getValue()) {
|
||||
start_one_check();
|
||||
} else if (getprop("/controls/engines/engine[0]/man-start") == 1) {
|
||||
} else {
|
||||
eng_one_man_start.start();
|
||||
}
|
||||
}
|
||||
} else if (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1) {
|
||||
} else if (pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||
cutoff_one();
|
||||
}
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
var cutoff_one = func {
|
||||
eng_one_auto_start.stop();
|
||||
eng_one_man_start.stop();
|
||||
eng_one_n2_check.stop();
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
||||
setprop("/controls/engines/engine[0]/man-start", 0);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/controls/engines/engine[0]/starter", 0);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
||||
setprop("/engines/engine[0]/state", 0);
|
||||
igniterA[0].setValue(0);
|
||||
igniterB[0].setValue(0);
|
||||
manStart[0].setValue(0);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||
pts.Engines.Engine.state[0].setValue(0);
|
||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
eng_one_n2_check.stop();
|
||||
}
|
||||
|
||||
var fast_start_one = func {
|
||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||
setprop("/engines/engine[0]/out-of-fuel", 0);
|
||||
setprop("/engines/engine[0]/run", 1);
|
||||
|
||||
|
@ -65,81 +63,81 @@ var fast_start_one = func {
|
|||
|
||||
setprop("/fdm/jsbsim/propulsion/set-running", 0);
|
||||
|
||||
setprop("/engines/engine[0]/state", 3);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
pts.Engines.Engine.state[0].setValue(3);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
}
|
||||
|
||||
setlistener("/controls/engines/engine[0]/man-start", func {
|
||||
start_one_mancheck();
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
var start_one_mancheck = func {
|
||||
if (getprop("/controls/engines/engine[0]/man-start") == 1) {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1)) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 1);
|
||||
if (manStart[0].getValue()) {
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1)) {
|
||||
systems.PNEU.Valves.starter1.setValue(1);
|
||||
settimer(start_one_mancheck_b, 0.5);
|
||||
}
|
||||
} else {
|
||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/engines/engine[0]/state", 0);
|
||||
setprop("/controls/engines/engine[0]/starter", 0);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Engines.Engine.state[0].setValue(0);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var start_one_mancheck_b = func {
|
||||
if (systems.PNEU.Psi.engine1.getValue() >= 25) {
|
||||
setprop("/engines/engine[0]/state", 1);
|
||||
setprop("/controls/engines/engine[0]/starter", 1);
|
||||
pts.Engines.Engine.state[0].setValue(1);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(1);
|
||||
}
|
||||
}
|
||||
|
||||
var start_one_check = func {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 1);
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
||||
systems.PNEU.Valves.starter1.setValue(1);
|
||||
settimer(start_one_check_b, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
var start_one_check_b = func {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and systems.PNEU.Psi.engine1.getValue() and !pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and systems.PNEU.Psi.engine1.getValue() >= 25and !pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||
auto_start_one();
|
||||
}
|
||||
}
|
||||
|
||||
setlistener("/controls/engines/engine[1]/cutoff-switch", func {
|
||||
if (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
||||
if (getprop("/systems/acconfig/autoconfig-running") == 1) {
|
||||
if (!pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||
if (pts.Acconfig.running.getValue()) {
|
||||
fast_start_two();
|
||||
} else {
|
||||
if (getprop("/controls/engines/engine[1]/man-start") == 0) {
|
||||
if (!manStart[1].getValue()) {
|
||||
start_two_check();
|
||||
} else if (getprop("/controls/engines/engine[1]/man-start") == 1) {
|
||||
} else {
|
||||
eng_two_man_start.start();
|
||||
}
|
||||
}
|
||||
} else if (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1) {
|
||||
} else if (pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||
cutoff_two();
|
||||
}
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
var cutoff_two = func {
|
||||
eng_two_auto_start.stop();
|
||||
eng_two_man_start.stop();
|
||||
eng_two_n2_check.stop();
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
||||
setprop("/controls/engines/engine[1]/man-start", 0);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/controls/engines/engine[1]/starter", 0);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
||||
setprop("/engines/engine[1]/state", 0);
|
||||
igniterA[1].setValue(0);
|
||||
igniterB[1].setValue(0);
|
||||
manStart[1].setValue(0);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||
pts.Engines.Engine.state[1].setValue(0);
|
||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
|
||||
var fast_start_two = func {
|
||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||
setprop("/engines/engine[1]/out-of-fuel", 0);
|
||||
setprop("/engines/engine[1]/run", 1);
|
||||
|
||||
|
@ -148,69 +146,69 @@ var fast_start_two = func {
|
|||
|
||||
setprop("/fdm/jsbsim/propulsion/set-running", 1);
|
||||
|
||||
setprop("/engines/engine[1]/state", 3);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
pts.Engines.Engine.state[1].setValue(3);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
}
|
||||
|
||||
setlistener("/controls/engines/engine[1]/man-start", func {
|
||||
start_two_mancheck();
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
var start_two_mancheck = func {
|
||||
if (getprop("/controls/engines/engine[1]/man-start") == 1) {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1)) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 1);
|
||||
if (manStart[1].getValue() == 1) {
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1)) {
|
||||
systems.PNEU.Valves.starter2.setValue(1);
|
||||
settimer(start_two_mancheck_b, 0.5);
|
||||
}
|
||||
} else {
|
||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/engines/engine[1]/state", 0);
|
||||
setprop("/controls/engines/engine[1]/starter", 0);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Engines.Engine.state[1].setValue(0);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var start_two_mancheck_b = func {
|
||||
if (systems.PNEU.Psi.engine2.getValue() >= 25) {
|
||||
setprop("/engines/engine[1]/state", 1);
|
||||
setprop("/controls/engines/engine[1]/starter", 1);
|
||||
pts.Engines.Engine.state[1].setValue(1);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(1);
|
||||
}
|
||||
}
|
||||
|
||||
var start_two_check = func {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 1);
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
||||
systems.PNEU.Valves.starter2.setValue(1);
|
||||
settimer(start_two_check_b, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
var start_two_check_b = func {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and systems.PNEU.Psi.engine2.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and systems.PNEU.Psi.engine2.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||
auto_start_two();
|
||||
}
|
||||
}
|
||||
|
||||
# Start Engine One
|
||||
var auto_start_one = func {
|
||||
setprop("/engines/engine[0]/state", 1);
|
||||
setprop("/controls/engines/engine[0]/starter", 1);
|
||||
pts.Engines.Engine.state[0].setValue(1);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(1);
|
||||
eng_one_auto_start.start();
|
||||
}
|
||||
|
||||
var eng_one_auto_start = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 22) {
|
||||
eng_one_auto_start.stop();
|
||||
setprop("/engines/engine[0]/state", 2);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
||||
if (getprop("/controls/engines/engine[0]/last-igniter") == "B") {
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 1);
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
||||
setprop("/controls/engines/engine[0]/last-igniter", "A");
|
||||
} else if (getprop("/controls/engines/engine[0]/last-igniter") == "A") {
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 1);
|
||||
setprop("/controls/engines/engine[0]/last-igniter", "B");
|
||||
pts.Engines.Engine.state[0].setValue(2);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||
if (lastIgniter[0].getValue() == "B") {
|
||||
igniterA[0].setValue(1);
|
||||
igniterB[0].setValue(0);
|
||||
lastIgniter[0].setValue("A");
|
||||
} else if (lastIgniter[0].getValue() == "A") {
|
||||
igniterA[0].setValue(0);
|
||||
igniterB[0].setValue(1);
|
||||
lastIgniter[0].setValue("B");
|
||||
}
|
||||
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||
eng_one_egt_check.start();
|
||||
|
@ -221,10 +219,10 @@ var eng_one_auto_start = maketimer(0.5, func {
|
|||
var eng_one_man_start = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 16.7) {
|
||||
eng_one_man_start.stop();
|
||||
setprop("/engines/engine[0]/state", 2);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 1);
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 1);
|
||||
pts.Engines.Engine.state[0].setValue(2);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||
igniterA[0].setValue(1);
|
||||
igniterB[0].setValue(1);
|
||||
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||
eng_one_egt_check.start();
|
||||
eng_one_n2_check.start();
|
||||
|
@ -232,7 +230,7 @@ var eng_one_man_start = maketimer(0.5, func {
|
|||
});
|
||||
|
||||
var eng_one_egt_check = maketimer(0.5, func {
|
||||
if (getprop("/engines/engine[0]/egt-actual") >= egt_start) {
|
||||
if (pts.Engines.Engine.egtActual[0].getValue() >= egt_start) {
|
||||
eng_one_egt_check.stop();
|
||||
interpolate(engines[0].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
||||
}
|
||||
|
@ -240,40 +238,40 @@ var eng_one_egt_check = maketimer(0.5, func {
|
|||
|
||||
var eng_one_n2_check = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 43.0) {
|
||||
if (getprop("/controls/engines/engine[0]/igniter-a") != 0) {
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
||||
if (igniterA[0].getValue() != 0) {
|
||||
igniterA[0].setValue(0);
|
||||
}
|
||||
if (getprop("/controls/engines/engine[0]/igniter-b") != 0) {
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
||||
if (igniterB[0].getValue() != 0) {
|
||||
igniterB[0].setValue(0);
|
||||
}
|
||||
}
|
||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 57.0) {
|
||||
eng_one_n2_check.stop();
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/engines/engine[0]/state", 3);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Engines.Engine.state[0].setValue(3);
|
||||
}
|
||||
});
|
||||
|
||||
# Start Engine Two
|
||||
var auto_start_two = func {
|
||||
setprop("/engines/engine[1]/state", 1);
|
||||
setprop("/controls/engines/engine[1]/starter", 1);
|
||||
pts.Engines.Engine.state[1].setValue(1);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(1);
|
||||
eng_two_auto_start.start();
|
||||
}
|
||||
|
||||
var eng_two_auto_start = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 22) {
|
||||
eng_two_auto_start.stop();
|
||||
setprop("/engines/engine[1]/state", 2);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
||||
if (getprop("/controls/engines/engine[1]/last-igniter") == "B") {
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 1);
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
||||
setprop("/controls/engines/engine[1]/last-igniter", "A");
|
||||
} else if (getprop("/controls/engines/engine[1]/last-igniter") == "A") {
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 1);
|
||||
setprop("/controls/engines/engine[1]/last-igniter", "B");
|
||||
pts.Engines.Engine.state[1].setValue(2);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||
if (lastIgniter[1].getValue() == "B") {
|
||||
igniterA[1].setValue(1);
|
||||
igniterB[1].setValue(0);
|
||||
lastIgniter[1].setValue("A");
|
||||
} else if (lastIgniter[1].getValue() == "A") {
|
||||
igniterA[1].setValue(0);
|
||||
igniterB[1].setValue(1);
|
||||
lastIgniter[1].setValue("B");
|
||||
}
|
||||
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||
eng_two_egt_check.start();
|
||||
|
@ -284,10 +282,10 @@ var eng_two_auto_start = maketimer(0.5, func {
|
|||
var eng_two_man_start = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 16.7) {
|
||||
eng_two_man_start.stop();
|
||||
setprop("/engines/engine[1]/state", 2);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 1);
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 1);
|
||||
pts.Engines.Engine.state[1].setValue(2);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||
igniterA[1].setValue(1);
|
||||
igniterB[1].setValue(1);
|
||||
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||
eng_two_egt_check.start();
|
||||
eng_two_n2_check.start();
|
||||
|
@ -295,7 +293,7 @@ var eng_two_man_start = maketimer(0.5, func {
|
|||
});
|
||||
|
||||
var eng_two_egt_check = maketimer(0.5, func {
|
||||
if (getprop("/engines/engine[1]/egt-actual") >= egt_start) {
|
||||
if (pts.Engines.Engine.egtActual[1].getValue() >= egt_start) {
|
||||
eng_two_egt_check.stop();
|
||||
interpolate(engines[1].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
||||
}
|
||||
|
@ -303,17 +301,17 @@ var eng_two_egt_check = maketimer(0.5, func {
|
|||
|
||||
var eng_two_n2_check = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 50.0) {
|
||||
if (getprop("/controls/engines/engine[1]/igniter-a") != 0) {
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
||||
if (igniterA[1].getValue() != 0) {
|
||||
igniterA[1].setValue(0);
|
||||
}
|
||||
if (getprop("/controls/engines/engine[1]/igniter-b") != 0) {
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
||||
if (igniterB[1].getValue() != 0) {
|
||||
igniterB[1].setValue(0);
|
||||
}
|
||||
}
|
||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 57.0) {
|
||||
eng_two_n2_check.stop();
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/engines/engine[1]/state", 3);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Engines.Engine.state[1].setValue(3);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -327,31 +325,31 @@ setlistener("/controls/engines/engine-start-switch", func {
|
|||
start_two_check();
|
||||
start_two_mancheck();
|
||||
}
|
||||
if ((getprop("/controls/engines/engine-start-switch") == 0) or (getprop("/controls/engines/engine-start-switch") == 1)) {
|
||||
if ((pts.Controls.Engines.startSw.getValue() == 0) or (pts.Controls.Engines.startSw.getValue() == 1)) {
|
||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||
setprop("/controls/engines/engine[0]/starter", 0);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/engines/engine[0]/state", 0);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Engines.Engine.state[0].setValue(0);
|
||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||
setprop("/controls/engines/engine[1]/starter", 0);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/engines/engine[1]/state", 0);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Engines.Engine.state[1].setValue(0);
|
||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
}
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
||||
if (systems.PNEU.Psi.engine1.getValue() < 24.5) {
|
||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||
setprop("/controls/engines/engine[0]/starter", 0);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/engines/engine[0]/state", 0);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Engines.Engine.state[0].setValue(0);
|
||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
}
|
||||
|
@ -360,10 +358,10 @@ setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
|||
setlistener("/systems/pneumatics/psi/engine-2-psi", func {
|
||||
if (systems.PNEU.Psi.engine2.getValue() < 24.5) {
|
||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||
setprop("/controls/engines/engine[1]/starter", 0);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/engines/engine[1]/state", 0);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Engines.Engine.state[1].setValue(0);
|
||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,11 @@
|
|||
|
||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
|
||||
var manStart = [props.globals.initNode("/controls/engines/engine[0]/man-start", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/man-start", 0, "BOOL")];
|
||||
var lastIgniter = [props.globals.getNode("/controls/engines/engine[0]/last-igniter"),props.globals.initNode("/controls/engines/engine[1]/last-igniter")];
|
||||
var igniterA = [props.globals.initNode("/controls/engines/engine[0]/igniter-a", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/igniter-a", 0, "BOOL")];
|
||||
var igniterB = [props.globals.initNode("/controls/engines/engine[0]/igniter-b", 0, "BOOL"),props.globals.initNode("/controls/engines/engine[1]/igniter-b", 0, "BOOL")];
|
||||
|
||||
if (pts.Options.eng.getValue() == "IAE") {
|
||||
io.include("engines-iae.nas");
|
||||
} else {
|
||||
|
@ -10,7 +15,8 @@ if (pts.Options.eng.getValue() == "IAE") {
|
|||
}
|
||||
|
||||
var eng_common_init = func {
|
||||
# nada
|
||||
manStart[0].setValue(0);
|
||||
manStart[1].setValue(0);
|
||||
}
|
||||
|
||||
# Engine thrust commands
|
||||
|
|
|
@ -17,46 +17,45 @@ var egt_lightdn_time = 10;
|
|||
var shutdown_time = 20;
|
||||
var egt_shutdown_time = 20;
|
||||
|
||||
|
||||
var eng_init = func {
|
||||
setprop("/controls/engines/engine[0]/man-start", 0);
|
||||
setprop("/controls/engines/engine[1]/man-start", 0);
|
||||
eng_common_init();
|
||||
}
|
||||
|
||||
# Trigger Startups and Stops
|
||||
setlistener("/controls/engines/engine[0]/cutoff-switch", func {
|
||||
if (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
||||
if (getprop("/systems/acconfig/autoconfig-running") == 1) {
|
||||
if (!pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||
if (pts.Acconfig.running.getValue()) {
|
||||
fast_start_one();
|
||||
} else {
|
||||
if (getprop("/controls/engines/engine[0]/man-start") == 0) {
|
||||
if (!manStart[0].getValue()) {
|
||||
start_one_check();
|
||||
} else if (getprop("/controls/engines/engine[0]/man-start") == 1) {
|
||||
} else if (manStart[0].getValue()) {
|
||||
eng_one_man_start.start();
|
||||
}
|
||||
}
|
||||
} else if (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1) {
|
||||
} else if (pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||
cutoff_one();
|
||||
}
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
var cutoff_one = func {
|
||||
eng_one_auto_start.stop();
|
||||
eng_one_man_start.stop();
|
||||
eng_one_n2_check.stop();
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
||||
setprop("/controls/engines/engine[0]/man-start", 0);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/controls/engines/engine[0]/starter", 0);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
||||
setprop("/engines/engine[0]/state", 0);
|
||||
igniterA[0].setValue(0);
|
||||
igniterB[0].setValue(0);
|
||||
manStart[0].setValue(0);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||
pts.Engines.Engine.state[0].setValue(0);
|
||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
eng_one_n2_check.stop();
|
||||
}
|
||||
|
||||
var fast_start_one = func {
|
||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||
setprop("/engines/engine[0]/out-of-fuel", 0);
|
||||
setprop("/engines/engine[0]/run", 1);
|
||||
|
||||
|
@ -65,81 +64,81 @@ var fast_start_one = func {
|
|||
|
||||
setprop("/fdm/jsbsim/propulsion/set-running", 0);
|
||||
|
||||
setprop("/engines/engine[0]/state", 3);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
pts.Engines.Engine.state[0].setValue(3);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
}
|
||||
|
||||
setlistener("/controls/engines/engine[0]/man-start", func {
|
||||
start_one_mancheck();
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
var start_one_mancheck = func {
|
||||
if (getprop("/controls/engines/engine[0]/man-start") == 1) {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1)) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 1);
|
||||
if (manStart[0].getValue()) {
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and (pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 1)) {
|
||||
systems.PNEU.Valves.starter1.setValue(1);
|
||||
settimer(start_one_mancheck_b, 0.5);
|
||||
}
|
||||
} else {
|
||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/engines/engine[0]/state", 0);
|
||||
setprop("/controls/engines/engine[0]/starter", 0);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Engines.Engine.state[0].setValue(0);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var start_one_mancheck_b = func {
|
||||
if (systems.PNEU.Psi.engine1.getValue() >= 25) {
|
||||
setprop("/engines/engine[0]/state", 1);
|
||||
setprop("/controls/engines/engine[0]/starter", 1);
|
||||
pts.Engines.Engine.state[0].setValue(1);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(1);
|
||||
}
|
||||
}
|
||||
|
||||
var start_one_check = func {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 1);
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and pts.Controls.Engines.Engine.cutoffSw[0].getValue() == 0) {
|
||||
systems.PNEU.Valves.starter1.setValue(1);
|
||||
settimer(start_one_check_b, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
var start_one_check_b = func {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and systems.PNEU.Psi.engine1.getValue() and !pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and systems.PNEU.Psi.engine1.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[0].getValue()) {
|
||||
auto_start_one();
|
||||
}
|
||||
}
|
||||
|
||||
setlistener("/controls/engines/engine[1]/cutoff-switch", func {
|
||||
if (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
||||
if (getprop("/systems/acconfig/autoconfig-running") == 1) {
|
||||
if (!pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||
if (pts.Acconfig.running.getValue()) {
|
||||
fast_start_two();
|
||||
} else {
|
||||
if (getprop("/controls/engines/engine[1]/man-start") == 0) {
|
||||
if (!manStart[1].getValue()) {
|
||||
start_two_check();
|
||||
} else if (getprop("/controls/engines/engine[1]/man-start") == 1) {
|
||||
} else if (manStart[1].getValue()) {
|
||||
eng_two_man_start.start();
|
||||
}
|
||||
}
|
||||
} else if (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1) {
|
||||
} else if (pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||
cutoff_two();
|
||||
}
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
var cutoff_two = func {
|
||||
eng_two_auto_start.stop();
|
||||
eng_two_man_start.stop();
|
||||
eng_two_n2_check.stop();
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
||||
setprop("/controls/engines/engine[1]/man-start", 0);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/controls/engines/engine[1]/starter", 0);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
||||
setprop("/engines/engine[1]/state", 0);
|
||||
igniterA[1].setValue(0);
|
||||
igniterB[1].setValue(0);
|
||||
manStart[1].setValue(0);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||
pts.Engines.Engine.state[1].setValue(0);
|
||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
|
||||
var fast_start_two = func {
|
||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||
setprop("/engines/engine[1]/out-of-fuel", 0);
|
||||
setprop("/engines/engine[1]/run", 1);
|
||||
|
||||
|
@ -148,69 +147,69 @@ var fast_start_two = func {
|
|||
|
||||
setprop("/fdm/jsbsim/propulsion/set-running", 1);
|
||||
|
||||
setprop("/engines/engine[1]/state", 3);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
pts.Engines.Engine.state[1].setValue(3);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
}
|
||||
|
||||
setlistener("/controls/engines/engine[1]/man-start", func {
|
||||
start_two_mancheck();
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
var start_two_mancheck = func {
|
||||
if (getprop("/controls/engines/engine[1]/man-start") == 1) {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1)) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 1);
|
||||
if (manStart[1].getValue() == 1) {
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and (pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 1)) {
|
||||
systems.PNEU.Valves.starter2.setValue(1);
|
||||
settimer(start_two_mancheck_b, 0.5);
|
||||
}
|
||||
} else {
|
||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/engines/engine[1]/state", 0);
|
||||
setprop("/controls/engines/engine[1]/starter", 0);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Engines.Engine.state[1].setValue(0);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var start_two_mancheck_b = func {
|
||||
if (systems.PNEU.Psi.engine1.getValue() >= 25) {
|
||||
setprop("/engines/engine[1]/state", 1);
|
||||
setprop("/controls/engines/engine[1]/starter", 1);
|
||||
pts.Engines.Engine.state[1].setValue(1);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(1);
|
||||
}
|
||||
}
|
||||
|
||||
var start_two_check = func {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 1);
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and pts.Controls.Engines.Engine.cutoffSw[1].getValue() == 0) {
|
||||
systems.PNEU.Valves.starter2.setValue(1);
|
||||
settimer(start_two_check_b, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
var start_two_check_b = func {
|
||||
if (getprop("/controls/engines/engine-start-switch") == 2 and systems.PNEU.Psi.engine2.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||
if (pts.Controls.Engines.startSw.getValue() == 2 and systems.PNEU.Psi.engine2.getValue() >= 25 and !pts.Controls.Engines.Engine.cutoffSw[1].getValue()) {
|
||||
auto_start_two();
|
||||
}
|
||||
}
|
||||
|
||||
# Start Engine One
|
||||
var auto_start_one = func {
|
||||
setprop("/engines/engine[0]/state", 1);
|
||||
setprop("/controls/engines/engine[0]/starter", 1);
|
||||
pts.Engines.Engine.state[0].setValue(1);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(1);
|
||||
eng_one_auto_start.start();
|
||||
}
|
||||
|
||||
var eng_one_auto_start = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n1Actual[0].getValue() >= 4.7) {
|
||||
eng_one_auto_start.stop();
|
||||
setprop("/engines/engine[0]/state", 2);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
||||
if (getprop("/controls/engines/engine[0]/last-igniter") == "B") {
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 1);
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
||||
setprop("/controls/engines/engine[0]/last-igniter", "A");
|
||||
} else if (getprop("/controls/engines/engine[0]/last-igniter") == "A") {
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 1);
|
||||
setprop("/controls/engines/engine[0]/last-igniter", "B");
|
||||
pts.Engines.Engine.state[0].setValue(2);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||
if (lastIgniter[0].getValue() == "B") {
|
||||
igniterA[0].setValue(1);
|
||||
igniterB[0].setValue(0);
|
||||
lastIgniter[0].setValue("A");
|
||||
} else if (lastIgniter[0].getValue() == "A") {
|
||||
igniterA[0].setValue(0);
|
||||
igniterB[0].setValue(1);
|
||||
lastIgniter[0].setValue("B");
|
||||
}
|
||||
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||
eng_one_egt_check.start();
|
||||
|
@ -221,10 +220,10 @@ var eng_one_auto_start = maketimer(0.5, func {
|
|||
var eng_one_man_start = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 16.7) {
|
||||
eng_one_man_start.stop();
|
||||
setprop("/engines/engine[0]/state", 2);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 0);
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 1);
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 1);
|
||||
pts.Engines.Engine.state[0].setValue(2);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(0);
|
||||
igniterA[0].setValue(1);
|
||||
igniterB[0].setValue(1);
|
||||
interpolate(engines[0].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||
eng_one_egt_check.start();
|
||||
eng_one_n2_check.start();
|
||||
|
@ -232,7 +231,7 @@ var eng_one_man_start = maketimer(0.5, func {
|
|||
});
|
||||
|
||||
var eng_one_egt_check = maketimer(0.5, func {
|
||||
if (getprop("/engines/engine[0]/egt-actual") >= egt_start) {
|
||||
if (pts.Engines.Engine.egtActual[0].getValue() >= egt_start) {
|
||||
eng_one_egt_check.stop();
|
||||
interpolate(engines[0].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
||||
}
|
||||
|
@ -240,40 +239,40 @@ var eng_one_egt_check = maketimer(0.5, func {
|
|||
|
||||
var eng_one_n2_check = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 43.0) {
|
||||
if (getprop("/controls/engines/engine[0]/igniter-a") != 0) {
|
||||
setprop("/controls/engines/engine[0]/igniter-a", 0);
|
||||
if (igniterA[0].getValue() != 0) {
|
||||
igniterA[0].setValue(0);
|
||||
}
|
||||
if (getprop("/controls/engines/engine[0]/igniter-b") != 0) {
|
||||
setprop("/controls/engines/engine[0]/igniter-b", 0);
|
||||
if (igniterB[0].getValue() != 0) {
|
||||
igniterB[0].setValue(0);
|
||||
}
|
||||
}
|
||||
if (pts.Engines.Engine.n2Actual[0].getValue() >= 57.0) {
|
||||
eng_one_n2_check.stop();
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/engines/engine[0]/state", 3);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Engines.Engine.state[0].setValue(3);
|
||||
}
|
||||
});
|
||||
|
||||
# Start Engine Two
|
||||
var auto_start_two = func {
|
||||
setprop("/engines/engine[1]/state", 1);
|
||||
setprop("/controls/engines/engine[1]/starter", 1);
|
||||
pts.Engines.Engine.state[1].setValue(1);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(1);
|
||||
eng_two_auto_start.start();
|
||||
}
|
||||
|
||||
var eng_two_auto_start = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n1Actual[1].getValue() >= 4.7) {
|
||||
eng_two_auto_start.stop();
|
||||
setprop("/engines/engine[1]/state", 2);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
||||
if (getprop("/controls/engines/engine[1]/last-igniter") == "B") {
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 1);
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
||||
setprop("/controls/engines/engine[1]/last-igniter", "A");
|
||||
} else if (getprop("/controls/engines/engine[1]/last-igniter") == "A") {
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 1);
|
||||
setprop("/controls/engines/engine[1]/last-igniter", "B");
|
||||
pts.Engines.Engine.state[1].setValue(2);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||
if (lastIgniter[1].getValue() == "B") {
|
||||
igniterA[1].setValue(1);
|
||||
igniterB[1].setValue(0);
|
||||
lastIgniter[1].setValue("A");
|
||||
} else if (lastIgniter[1].getValue() == "A") {
|
||||
igniterA[1].setValue(0);
|
||||
igniterB[1].setValue(1);
|
||||
lastIgniter[1].setValue("B");
|
||||
}
|
||||
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||
eng_two_egt_check.start();
|
||||
|
@ -284,10 +283,10 @@ var eng_two_auto_start = maketimer(0.5, func {
|
|||
var eng_two_man_start = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 16.7) {
|
||||
eng_two_man_start.stop();
|
||||
setprop("/engines/engine[1]/state", 2);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 0);
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 1);
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 1);
|
||||
pts.Engines.Engine.state[1].setValue(2);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(0);
|
||||
igniterA[1].setValue(1);
|
||||
igniterB[1].setValue(1);
|
||||
interpolate(engines[1].getNode("egt-actual"), egt_start, egt_lightup_time);
|
||||
eng_two_egt_check.start();
|
||||
eng_two_n2_check.start();
|
||||
|
@ -295,7 +294,7 @@ var eng_two_man_start = maketimer(0.5, func {
|
|||
});
|
||||
|
||||
var eng_two_egt_check = maketimer(0.5, func {
|
||||
if (getprop("/engines/engine[1]/egt-actual") >= egt_start) {
|
||||
if (pts.Engines.Engine.egtActual[1].getValue() >= egt_start) {
|
||||
eng_two_egt_check.stop();
|
||||
interpolate(engines[1].getNode("egt-actual"), egt_min, egt_lightdn_time);
|
||||
}
|
||||
|
@ -303,17 +302,17 @@ var eng_two_egt_check = maketimer(0.5, func {
|
|||
|
||||
var eng_two_n2_check = maketimer(0.5, func {
|
||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 43.0) {
|
||||
if (getprop("/controls/engines/engine[1]/igniter-a") != 0) {
|
||||
setprop("/controls/engines/engine[1]/igniter-a", 0);
|
||||
if (igniterA[1].getValue() != 0) {
|
||||
igniterA[1].setValue(0);
|
||||
}
|
||||
if (getprop("/controls/engines/engine[1]/igniter-b") != 0) {
|
||||
setprop("/controls/engines/engine[1]/igniter-b", 0);
|
||||
if (igniterB[1].getValue() != 0) {
|
||||
igniterB[1].setValue(0);
|
||||
}
|
||||
}
|
||||
if (pts.Engines.Engine.n2Actual[1].getValue() >= 57.0) {
|
||||
eng_two_n2_check.stop();
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/engines/engine[1]/state", 3);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Engines.Engine.state[1].setValue(3);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -327,31 +326,31 @@ setlistener("/controls/engines/engine-start-switch", func {
|
|||
start_two_check();
|
||||
start_two_mancheck();
|
||||
}
|
||||
if ((getprop("/controls/engines/engine-start-switch") == 0) or (getprop("/controls/engines/engine-start-switch") == 1)) {
|
||||
if ((pts.Controls.Engines.startSw.getValue() == 0) or (pts.Controls.Engines.startSw.getValue() == 1)) {
|
||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||
setprop("/controls/engines/engine[0]/starter", 0);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/engines/engine[0]/state", 0);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Engines.Engine.state[0].setValue(0);
|
||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||
setprop("/controls/engines/engine[1]/starter", 0);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/engines/engine[1]/state", 0);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Engines.Engine.state[1].setValue(0);
|
||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
}
|
||||
});
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
||||
if (systems.PNEU.Psi.engine1.getValue() < 24.5) {
|
||||
if (pts.Engines.Engine.state[0].getValue() == 1 or pts.Engines.Engine.state[0].getValue() == 2) {
|
||||
setprop("/controls/engines/engine[0]/starter", 0);
|
||||
setprop("/controls/engines/engine[0]/cutoff", 1);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-1", 0);
|
||||
setprop("/engines/engine[0]/state", 0);
|
||||
pts.Controls.Engines.Engine.starter[0].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[0].setValue(1);
|
||||
systems.PNEU.Valves.starter1.setValue(0);
|
||||
pts.Engines.Engine.state[0].setValue(0);
|
||||
interpolate(engines[0].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
}
|
||||
|
@ -360,10 +359,10 @@ setlistener("/systems/pneumatics/psi/engine-1-psi", func {
|
|||
setlistener("/systems/pneumatics/psi/engine-2-psi", func {
|
||||
if (systems.PNEU.Psi.engine2.getValue() < 24.5) {
|
||||
if (pts.Engines.Engine.state[1].getValue() == 1 or pts.Engines.Engine.state[1].getValue() == 2) {
|
||||
setprop("/controls/engines/engine[1]/starter", 0);
|
||||
setprop("/controls/engines/engine[1]/cutoff", 1);
|
||||
setprop("/systems/pneumatics/valves/starter-valve-2", 0);
|
||||
setprop("/engines/engine[1]/state", 0);
|
||||
pts.Controls.Engines.Engine.starter[1].setValue(0);
|
||||
pts.Controls.Engines.Engine.cutoff[1].setValue(1);
|
||||
systems.PNEU.Valves.starter2.setValue(0);
|
||||
pts.Engines.Engine.state[1].setValue(0);
|
||||
interpolate(engines[1].getNode("egt-actual"), 0, egt_shutdown_time);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
if (me._mode != 0 and pts.Controls.Engines.Engine.throttle[0].getValue() < 0.15 and pts.Controls.Engines.Engine.throttle[1].getValue() < 0.15 and me._wow0 and systems.HYD.Brakes.askidSw.getValue() and systems.HYD.Psi.green.getValue() >= 2500 ) {
|
||||
me.active.setBoolValue(1);
|
||||
} elsif (me._active) {
|
||||
me.active.setBoolValue(0);
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
# Jonathan Redpath
|
||||
|
||||
# Copyright (c) 2019 Jonathan Redpath
|
||||
var lcont = 0;
|
||||
var rcont = 0;
|
||||
|
||||
var HYD = {
|
||||
Brakes: {
|
||||
|
@ -10,10 +12,9 @@ var HYD = {
|
|||
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"),
|
||||
lbrake: props.globals.initNode("/systems/hydraulic/brakes/lbrake", 0, "INT"),
|
||||
rbrake: props.globals.initNode("/systems/hydraulic/brakes/rbrake", 0, "INT"),
|
||||
leftbrake: props.globals.getNode("/controls/gear/brake-left"),
|
||||
rightbrake: props.globals.getNode("/controls/gear/brake-right"),
|
||||
noserubber: props.globals.initNode("/systems/hydraulic/brakes/nose-rubber", 0, "INT"),
|
||||
counter: props.globals.initNode("/systems/hydraulic/brakes/counter", 0, "INT"),
|
||||
},
|
||||
Fail: {
|
||||
blueElec: props.globals.getNode("/systems/failures/hydraulic/blue-elec"),
|
||||
|
@ -85,9 +86,96 @@ var HYD = {
|
|||
me.Fail.yellowLeak.setBoolValue(0);
|
||||
},
|
||||
loop: func() {
|
||||
if (me.Brakes.mode.getValue() == 2) {
|
||||
if (me.Psi.yellow.getValue() > 2500 and me.Brakes.accumPressPsi.getValue() < 700) {
|
||||
if (props.globals.getValue("/controls/gear/nws-switch") == 1) {
|
||||
me.Brakes.askidSw.setBoolValue(1); #true
|
||||
} else {
|
||||
me.Brakes.askidSw.setBoolValue(0); #false
|
||||
}
|
||||
if (me.Psi.yellow.getValue() > 0 and me.Brakes.accumPressPsi.getValue() < 3000 and me.Psi.yellow.getValue() > me.Brakes.accumPressPsi.getValue()) {
|
||||
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() + 50);
|
||||
}
|
||||
|
||||
# Decrease accumPressPsi when green and yellow hydraulic's aren't pressurized
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
lcont = lcont + 1;
|
||||
} else {
|
||||
lcont = 0;
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
rcont = rcont + 1;
|
||||
} else {
|
||||
rcont = 0;
|
||||
}
|
||||
if ((me.Psi.green.getValue() == 0) and (me.Psi.yellow.getValue() == 0) and (me.Brakes.accumPressPsi.getValue()) > 0) {
|
||||
if (lcont == 1) {
|
||||
#me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - (35 * me.Brakes.leftbrake.getValue()));
|
||||
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - 200);
|
||||
}
|
||||
if (rcont == 1) {
|
||||
#me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - (35 * me.Brakes.leftbrake.getValue()));
|
||||
me.Brakes.accumPressPsi.setValue(me.Brakes.accumPressPsi.getValue() - 200);
|
||||
}
|
||||
if (me.Brakes.accumPressPsi.getValue() < 0) {
|
||||
me.Brakes.accumPressPsi.setValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
# Braking Pressure
|
||||
if (me.Brakes.mode.getValue() == 1 or (me.Brakes.mode.getValue() == 2 and me.Psi.green.getValue() >= 2500)) {
|
||||
# Normal braking - Green OK
|
||||
if (me.Brakes.leftbrake.getValue() > 0) {
|
||||
me.Brakes.leftPressPsi.setValue(props.globals.getValue("/systems/hydraulic/green-psi-ptu"));
|
||||
} else {
|
||||
me.Brakes.leftPressPsi.setValue(0);
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0) {
|
||||
me.Brakes.rightPressPsi.setValue(props.globals.getValue("/systems/hydraulic/green-psi-ptu"));
|
||||
} else {
|
||||
me.Brakes.rightPressPsi.setValue(0);
|
||||
}
|
||||
} else {
|
||||
if ((me.Brakes.mode.getValue() == 2 and me.Psi.green.getValue() < 2500) or me.Brakes.mode.getValue() == 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 props.globals.getValue("/systems/electrical/serviceable")) {
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(props.globals.getValue("/systems/hydraulic/yellow-psi-ptu"));
|
||||
} else {
|
||||
me.Brakes.leftPressPsi.setValue(0);
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(props.globals.getValue("/systems/hydraulic/yellow-psi-ptu"));
|
||||
} else {
|
||||
me.Brakes.rightPressPsi.setValue(0);
|
||||
}
|
||||
} else {
|
||||
# Alternate Braking (Yellow OK + Antiskid OFF + electric OK) - missing condition: BSCU OK-KO
|
||||
if (me.Psi.yellow.getValue() >= 2500 and !me.Brakes.askidSw.getValue() and props.globals.getValue("/systems/electrical/serviceable")) {
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(1000);
|
||||
} else {
|
||||
me.Brakes.leftPressPsi.setValue(0);
|
||||
}
|
||||
if (me.Brakes.rightbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.rightPressPsi.setValue(1000);
|
||||
} else {
|
||||
me.Brakes.rightPressPsi.setValue(0);
|
||||
}
|
||||
} else {
|
||||
# Alternate Braking (Yellow KO or Antiskid KO or electric KO) - missing condition: BSCU OK-KO
|
||||
if (me.Psi.yellow.getValue() < 2500 or !me.Brakes.askidSw.getValue() or !props.globals.getValue("/systems/electrical/serviceable")) {
|
||||
if (me.Brakes.leftbrake.getValue() > 0 or me.Brakes.mode.getValue() == 0) {
|
||||
me.Brakes.leftPressPsi.setValue(me.Brakes.accumPressPsi.getValue());
|
||||
} 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());
|
||||
} else {
|
||||
me.Brakes.rightPressPsi.setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -97,6 +97,8 @@ var PNEU = {
|
|||
pack2: props.globals.getNode("/systems/air-conditioning/valves/flow-control-valve-2"),
|
||||
ramAir: props.globals.getNode("/systems/air-conditioning/valves/ram-air"),
|
||||
hotAir: props.globals.getNode("/systems/air-conditioning/valves/hot-air"),
|
||||
starter1: props.globals.getNode("/systems/pneumatics/valves/starter-valve-1"),
|
||||
starter2: props.globals.getNode("/systems/pneumatics/valves/starter-valve-2"),
|
||||
},
|
||||
pressMode: props.globals.getNode("/systems/pressurization/mode", 1),
|
||||
init: func() {
|
||||
|
|
|
@ -96,3 +96,8 @@ var FrameNotificationAddProperty =
|
|||
#
|
||||
var frameNotification = FrameNotification.new(1);
|
||||
|
||||
|
||||
# Frame count
|
||||
# 5 = ECAM
|
||||
# 7 = FWC phases
|
||||
# 10 = ECAM messages
|
|
@ -23,32 +23,14 @@ var frame_inc = 0;
|
|||
var cur_frame_inc = 0.05;
|
||||
var execLoop = func
|
||||
{
|
||||
#
|
||||
notifications.frameNotification.fetchvars();
|
||||
if (notifications.frameNotification.FrameCount >= 4) {
|
||||
if (notifications.frameNotification.FrameCount > 20) {
|
||||
notifications.frameNotification.FrameCount = 0;
|
||||
}
|
||||
emesary.GlobalTransmitter.NotifyAll(notifications.frameNotification);
|
||||
#
|
||||
|
||||
notifications.frameNotification.FrameCount = notifications.frameNotification.FrameCount + 1;
|
||||
|
||||
if (notifications.frameNotification.frame_rate < 5) {
|
||||
frame_inc = 0.25;#4 Hz
|
||||
} elsif (notifications.frameNotification.frame_rate < 10) {
|
||||
frame_inc = 0.125;#8 Hz
|
||||
} elsif (notifications.frameNotification.frame_rate < 15) {
|
||||
frame_inc = 0.10;#10 Hz
|
||||
} elsif (notifications.frameNotification.frame_rate < 20) {
|
||||
frame_inc = 0.075;#13.3 Hz
|
||||
} elsif (notifications.frameNotification.frame_rate < 25) {
|
||||
frame_inc = 0.05;#20 Hz
|
||||
} elsif (notifications.frameNotification.frame_rate < 40) {
|
||||
frame_inc = 0.0333;#30 Hz
|
||||
} else {
|
||||
frame_inc = 0.02;#50 Hz
|
||||
}
|
||||
|
||||
frame_inc = 0.0333; #30 Hz
|
||||
if (frame_inc != cur_frame_inc) {
|
||||
cur_frame_inc = frame_inc;
|
||||
}
|
||||
|
@ -57,8 +39,12 @@ var execLoop = func
|
|||
|
||||
# setup the properties to monitor for this system
|
||||
input = {
|
||||
frame_rate : "/sim/frame-rate",
|
||||
elapsed_seconds : "/sim/time/elapsed-sec",
|
||||
frame_rate: "/sim/frame-rate",
|
||||
elapsedTime: "/sim/time/elapsed-sec",
|
||||
FWCPhase: "/ECAM/warning-phase",
|
||||
gear0Wow: "/gear/gear[0]/wow",
|
||||
engine1State: "/engines/engine[0]/state",
|
||||
engine2State: "/engines/engine[1]/state",
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
|
|
|
@ -89,9 +89,9 @@
|
|||
</hyd>
|
||||
|
||||
<announcement>
|
||||
<name>PurserSnacks</name>
|
||||
<name>cab_call</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/purserSnacks.wav</path>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/cab_call.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/controls/switches/cabinCall</property>
|
||||
|
@ -1432,7 +1432,7 @@
|
|||
<sb>
|
||||
<mode>once</mode>
|
||||
<name>sb</name>
|
||||
<path>seatbelt.wav</path>
|
||||
<path>cabin-chime.wav</path>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than>
|
||||
|
@ -1450,7 +1450,7 @@
|
|||
<ns>
|
||||
<mode>once</mode>
|
||||
<name>ns</name>
|
||||
<path>nosmoko.wav</path>
|
||||
<path>cabin-chime.wav</path>
|
||||
<condition>
|
||||
<and>
|
||||
<greater-than>
|
||||
|
@ -1754,12 +1754,12 @@
|
|||
</relay>
|
||||
|
||||
<announcements>
|
||||
<name>welcomeFA</name>
|
||||
<name>fa_boarding</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/welcome.wav</path>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/fa_boarding.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/welcomefa</property>
|
||||
<property>/sim/sounde/fa_boarding</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
|
@ -1770,12 +1770,12 @@
|
|||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>welcomeCA</name>
|
||||
<name>fa_welcome</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/captwelcome.wav</path>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/fa_welcome.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/welcomecapt</property>
|
||||
<property>/sim/sounde/fa_welcome</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
|
@ -1786,12 +1786,12 @@
|
|||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>doorsDep</name>
|
||||
<name>cpt_welcome</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/doorsdepart.wav</path>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/cpt_welcome.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/doors</property>
|
||||
<property>/sim/sounde/cpt_welcome</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
|
@ -1802,12 +1802,12 @@
|
|||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>PrepTo</name>
|
||||
<name>cpt_doors</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/takeoff.wav</path>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/cpt_doors.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/prepareto</property>
|
||||
<property>/sim/sounde/cpt_doors</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
|
@ -1818,12 +1818,12 @@
|
|||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>seatbeltOff</name>
|
||||
<name>fa_safety</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/belt10k.wav</path>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/fa_safety.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/seatbelt-10k</property>
|
||||
<property>/sim/sounde/fa_safety</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
|
@ -1834,12 +1834,76 @@
|
|||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>safety</name>
|
||||
<name>cpt_takeoff</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/safety.wav</path>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/cpt_takeoff.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/safety</property>
|
||||
<property>/sim/sounde/cpt_takeoff</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>0.6</factor>
|
||||
</volume>
|
||||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>fa_seatbelt10k</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/fa_seatbelt10k.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/fa_seatbelt10k</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>0.6</factor>
|
||||
</volume>
|
||||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>fa_descent</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/fa_descent.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/fa_descent</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>0.6</factor>
|
||||
</volume>
|
||||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>cpt_landing</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/cpt_landing.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/cpt_landing</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
<volume>
|
||||
<property>/sim/current-view/internal</property>
|
||||
<factor>0.6</factor>
|
||||
</volume>
|
||||
</announcements>
|
||||
|
||||
<announcements>
|
||||
<name>fa_landed</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Announce/fa_landed.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/sim/sounde/fa_landed</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</condition>
|
||||
|
@ -1888,6 +1952,7 @@
|
|||
<path>Aircraft/A320-family/Sounds/Cockpit/cricket.wav</path>
|
||||
<mode>looped</mode>
|
||||
<type>avionics</type>
|
||||
<delay-sec>1.5</delay-sec>
|
||||
<condition>
|
||||
<property>/sim/sound/warnings/cricket</property>
|
||||
</condition>
|
||||
|
@ -1917,7 +1982,7 @@
|
|||
|
||||
<stall-voice>
|
||||
<name>stall-voice</name>
|
||||
<mode>looped</mode>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Cockpit/stall_voice.wav</path>
|
||||
<type>avionics</type>
|
||||
<condition>
|
||||
|
@ -2125,4 +2190,4 @@
|
|||
<max-dist>200.0</max-dist>
|
||||
</gear-screech-looped>
|
||||
</fx>
|
||||
</PropertyList>
|
||||
</PropertyList>
|
||||
|
|
Binary file not shown.
BIN
Sounds/Announce/cab_call.wav
Normal file
BIN
Sounds/Announce/cab_call.wav
Normal file
Binary file not shown.
Binary file not shown.
BIN
Sounds/Announce/cpt_doors.wav
Normal file
BIN
Sounds/Announce/cpt_doors.wav
Normal file
Binary file not shown.
BIN
Sounds/Announce/cpt_landing.wav
Normal file
BIN
Sounds/Announce/cpt_landing.wav
Normal file
Binary file not shown.
BIN
Sounds/Announce/cpt_takeoff.wav
Normal file
BIN
Sounds/Announce/cpt_takeoff.wav
Normal file
Binary file not shown.
BIN
Sounds/Announce/cpt_welcome.wav
Normal file
BIN
Sounds/Announce/cpt_welcome.wav
Normal file
Binary file not shown.
Binary file not shown.
BIN
Sounds/Announce/fa_boarding.wav
Normal file
BIN
Sounds/Announce/fa_boarding.wav
Normal file
Binary file not shown.
BIN
Sounds/Announce/fa_descent.wav
Normal file
BIN
Sounds/Announce/fa_descent.wav
Normal file
Binary file not shown.
BIN
Sounds/Announce/fa_landed.wav
Normal file
BIN
Sounds/Announce/fa_landed.wav
Normal file
Binary file not shown.
BIN
Sounds/Announce/fa_safety.wav
Normal file
BIN
Sounds/Announce/fa_safety.wav
Normal file
Binary file not shown.
BIN
Sounds/Announce/fa_seatbelt10k.wav
Normal file
BIN
Sounds/Announce/fa_seatbelt10k.wav
Normal file
Binary file not shown.
BIN
Sounds/Announce/fa_welcome.wav
Normal file
BIN
Sounds/Announce/fa_welcome.wav
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue