1
0
Fork 0

Final V3.6.0 version of c172p-detailed.

https://github.com/Juanvvc/c172p-detailed
commit 874b89fedff35dfe1967e09365d3cb0d5b11522c
This commit is contained in:
Stuart Buchanan 2015-07-24 18:37:16 +01:00
parent 733027e67b
commit 1ab65221b1
68 changed files with 17969 additions and 16854 deletions

View file

@ -1,4 +1,5 @@
<?xml version="1.0"?>
<!--
File: IO320.xml
Author: Ron Jensen
@ -12,16 +13,15 @@
-->
<piston_engine name="IO320">
<minmp unit="INHG"> 8.3 </minmp> <!-- Deprecated -->
<maxmp unit="INHG"> 28.5 </maxmp>
<displacement unit="IN3"> 320.0 </displacement>
<maxhp> 160.0 </maxhp>
<!-- bsfc> 0.37 </bsfc -->
<cycles> 4.0 </cycles>
<idlerpm> 600.0 </idlerpm>
<maxrpm> 2700.0 </maxrpm>
<maxthrottle> 1.0 </maxthrottle>
<minthrottle> 0.1 </minthrottle>
<sparkfaildrop> 0.1 </sparkfaildrop>
<minmp unit="INHG"> 8.3 </minmp> <!-- Deprecated -->
<maxmp unit="INHG"> 28.5 </maxmp>
<displacement unit="IN3"> 320.0 </displacement>
<maxhp> 160.0 </maxhp>
<!-- bsfc> 0.37 </bsfc -->
<cycles> 4.0 </cycles>
<idlerpm> 600.0 </idlerpm>
<maxrpm> 2700.0 </maxrpm>
<maxthrottle> 1.0 </maxthrottle>
<minthrottle> 0.1 </minthrottle>
<sparkfaildrop> 0.1 </sparkfaildrop>
</piston_engine>

View file

@ -1,4 +1,5 @@
<?xml version="1.0"?>
<!--
File: IO360.xml
Author: dany93
@ -12,16 +13,15 @@
-->
<piston_engine name="IO360">
<minmp unit="INHG"> 8.3 </minmp> <!-- Deprecated -->
<maxmp unit="INHG"> 28.5 </maxmp>
<displacement unit="IN3"> 360.0 </displacement>
<maxhp> 180.0 </maxhp>
<!-- bsfc> 0.37 </bsfc -->
<cycles> 4.0 </cycles>
<idlerpm> 600.0 </idlerpm>
<maxrpm> 2700.0 </maxrpm>
<maxthrottle> 1.0 </maxthrottle>
<minthrottle> 0.1 </minthrottle>
<sparkfaildrop> 0.1 </sparkfaildrop>
<minmp unit="INHG"> 8.3 </minmp> <!-- Deprecated -->
<maxmp unit="INHG"> 28.5 </maxmp>
<displacement unit="IN3"> 360.0 </displacement>
<maxhp> 180.0 </maxhp>
<!-- bsfc> 0.37 </bsfc -->
<cycles> 4.0 </cycles>
<idlerpm> 600.0 </idlerpm>
<maxrpm> 2700.0 </maxrpm>
<maxthrottle> 1.0 </maxthrottle>
<minthrottle> 0.1 </minthrottle>
<sparkfaildrop> 0.1 </sparkfaildrop>
</piston_engine>

View file

@ -1,71 +1,72 @@
<?xml version="1.0"?>
<propeller name="Fixed-Pitch 75-inch Two-Blade Propeller">
<ixx> 1.67 </ixx>
<diameter unit="IN"> 75.0 </diameter>
<numblades> 2 </numblades>
<minpitch> 22 </minpitch>
<maxpitch> 22 </maxpitch>
<table name="C_THRUST" type="internal">
<tableData>
0.0 0.068
0.1 0.068
0.2 0.067
0.3 0.066
0.4 0.064
0.5 0.062
0.6 0.059
0.7 0.054
0.8 0.043
0.9 0.031
1.0 0.019
1.1 0.008
1.2 -0.001
1.3 -0.008
1.4 -0.019
1.5 -0.029
1.6 -0.040
1.7 -0.050
1.8 -0.057
1.9 -0.061
2.0 -0.064
2.1 -0.066
2.2 -0.067
2.3 -0.068
5.0 -0.068
</tableData>
</table>
<ixx> 1.67 </ixx>
<diameter unit="IN"> 75.0 </diameter>
<numblades> 2 </numblades>
<minpitch> 22 </minpitch>
<maxpitch> 22 </maxpitch>
<table name="C_POWER" type = "internal">
<tableData>
0.0 0.0580
0.1 0.0620
0.2 0.0600
0.3 0.0580
0.4 0.0520
0.5 0.0457
0.6 0.0436
0.7 0.0420
0.8 0.0372
0.9 0.0299
1.0 0.0202
1.1 -0.0111
1.2 -0.0075
1.3 -0.0111
1.4 -0.0202
1.5 -0.0280
1.6 -0.0346
1.7 -0.0389
1.8 -0.0421
1.9 -0.0436
2.0 -0.0445
2.1 -0.0445
2.2 -0.0442
2.3 -0.0431
2.4 -0.0424
5.0 -0.0413
</tableData>
</table>
<table name="C_THRUST" type="internal">
<tableData>
0.0 0.068
0.1 0.068
0.2 0.067
0.3 0.066
0.4 0.064
0.5 0.062
0.6 0.059
0.7 0.054
0.8 0.043
0.9 0.031
1.0 0.019
1.1 0.008
1.2 -0.001
1.3 -0.008
1.4 -0.019
1.5 -0.029
1.6 -0.040
1.7 -0.050
1.8 -0.057
1.9 -0.061
2.0 -0.064
2.1 -0.066
2.2 -0.067
2.3 -0.068
5.0 -0.068
</tableData>
</table>
<table name="C_POWER" type="internal">
<tableData>
0.0 0.0580
0.1 0.0620
0.2 0.0600
0.3 0.0580
0.4 0.0520
0.5 0.0457
0.6 0.0436
0.7 0.0420
0.8 0.0372
0.9 0.0299
1.0 0.0202
1.1 -0.0111
1.2 -0.0075
1.3 -0.0111
1.4 -0.0202
1.5 -0.0280
1.6 -0.0346
1.7 -0.0389
1.8 -0.0421
1.9 -0.0436
2.0 -0.0445
2.1 -0.0445
2.2 -0.0442
2.3 -0.0431
2.4 -0.0424
5.0 -0.0413
</tableData>
</table>
</propeller>

View file

@ -1,61 +1,62 @@
<?xml version="1.0"?>
<!--
Diameter: 76 in (1.93 m)
Calculated blade angle: at 75% of the radius
Data from NACA Report 640 : http://naca.central.cranfield.ac.uk/reports/1938/naca-report-640.pdf
Diameter: 76 in (1.93 m)
Calculated blade angle: at 75% of the radius
Data from NACA Report 640 : http://naca.central.cranfield.ac.uk/reports/1938/naca-report-640.pdf
-->
<propeller name="15 -25 deg NACA 640 (5868-9) 76-inch Two-Blade Propeller">
<ixx> 1.67 </ixx>
<diameter unit="IN"> 76.0 </diameter>
<numblades> 2 </numblades>
<minpitch> 15 </minpitch>
<maxpitch> 25 </maxpitch>
<table name="C_THRUST" type="internal">
<tableData>
15 20 25
0 0.0990 0.1040 0.1125
0.1 0.0950 0.1040 0.1100
0.2 0.0880 0.1030 0.1075
0.3 0.0780 0.1010 0.1060
0.4 0.0645 0.0930 0.1055
0.5 0.0495 0.0820 0.1045
0.6 0.0340 0.0700 0.0970
0.7 0.0185 0.0550 0.0870
0.8 0.0040 0.0390 0.0750
0.9 -0.0160 0.0240 0.0600
1 -0.0300 0.0060 0.0450
1.1 -0.0400 -0.0140 0.0300
1.2 -0.0500 -0.0330 0.0150
1.3 -0.0550 -0.0450 -0.0010
1.5 -0.0650 -0.0600 -0.0250
2 -0.0750 -0.0720 -0.0750
3 -0.0800 -0.0800 -0.0900
</tableData>
</table>
<ixx> 1.67 </ixx>
<diameter unit="IN"> 76.0 </diameter>
<numblades> 2 </numblades>
<minpitch> 15 </minpitch>
<maxpitch> 25 </maxpitch>
<table name="C_POWER" type = "internal">
<tableData>
15 20 25
0 0.0400 0.0660 0.1080
0.1 0.0406 0.0650 0.1060
0.2 0.0406 0.0640 0.1020
0.3 0.0400 0.0625 0.0975
0.4 0.0366 0.0600 0.0910
0.5 0.0318 0.0580 0.0860
0.6 0.0250 0.0540 0.0825
0.7 0.0160 0.0475 0.0790
0.8 0.0050 0.0370 0.0730
0.9 -0.0067 0.0260 0.0640
1 -0.0150 0.0100 0.0520
1.1 -0.0200 0.0000 0.0375
1.2 -0.0250 -0.0100 0.0220
1.3 -0.0270 -0.0200 0.0040
1.5 -0.0300 -0.0350 -0.0450
2 -0.0330 -0.0500 -0.0750
</tableData>
</table>
<table name="C_THRUST" type="internal">
<tableData>
15 20 25
0 0.0990 0.1040 0.1125
0.1 0.0950 0.1040 0.1100
0.2 0.0880 0.1030 0.1075
0.3 0.0780 0.1010 0.1060
0.4 0.0645 0.0930 0.1055
0.5 0.0495 0.0820 0.1045
0.6 0.0340 0.0700 0.0970
0.7 0.0185 0.0550 0.0870
0.8 0.0040 0.0390 0.0750
0.9 -0.0160 0.0240 0.0600
1 -0.0300 0.0060 0.0450
1.1 -0.0400 -0.0140 0.0300
1.2 -0.0500 -0.0330 0.0150
1.3 -0.0550 -0.0450 -0.0010
1.5 -0.0650 -0.0600 -0.0250
2 -0.0750 -0.0720 -0.0750
3 -0.0800 -0.0800 -0.0900
</tableData>
</table>
<table name="C_POWER" type="internal">
<tableData>
15 20 25
0 0.0400 0.0660 0.1080
0.1 0.0406 0.0650 0.1060
0.2 0.0406 0.0640 0.1020
0.3 0.0400 0.0625 0.0975
0.4 0.0366 0.0600 0.0910
0.5 0.0318 0.0580 0.0860
0.6 0.0250 0.0540 0.0825
0.7 0.0160 0.0475 0.0790
0.8 0.0050 0.0370 0.0730
0.9 -0.0067 0.0260 0.0640
1 -0.0150 0.0100 0.0520
1.1 -0.0200 0.0000 0.0375
1.2 -0.0250 -0.0100 0.0220
1.3 -0.0270 -0.0200 0.0040
1.5 -0.0300 -0.0350 -0.0450
2 -0.0330 -0.0500 -0.0750
</tableData>
</table>
</propeller>

View file

@ -1,61 +1,62 @@
<?xml version="1.0"?>
<!--
Diameter: 76 in (1.93 m)
Pitch: 62.5 in
Calculated blade angle: 20° at 75% of the radius
Data from NACA Report 640 : http://naca.central.cranfield.ac.uk/reports/1938/naca-report-640.pdf
Diameter: 76 in (1.93 m)
Pitch: 62.5 in
Calculated blade angle: 20° at 75% of the radius
Data from NACA Report 640 : http://naca.central.cranfield.ac.uk/reports/1938/naca-report-640.pdf
-->
<propeller name="NACA 640 (5868-9) 76-inch 20deg Two-Blade Propeller">
<ixx> 1.67 </ixx>
<diameter unit="IN"> 76.0 </diameter>
<numblades> 2 </numblades>
<minpitch> 20 </minpitch>
<maxpitch> 20 </maxpitch>
<table name="C_THRUST" type="internal">
<tableData>
0 0.1040
0.1 0.1040
0.2 0.1030
0.3 0.1010
0.4 0.0930
0.5 0.0820
0.6 0.0700
0.7 0.0550
0.8 0.0390
0.9 0.0240
1 0.0060
1.1 -0.0140
1.2 -0.0330
1.3 -0.0450
1.5 -0.0600
2 -0.0720
3 -0.0800
</tableData>
</table>
<ixx> 1.67 </ixx>
<diameter unit="IN"> 76.0 </diameter>
<numblades> 2 </numblades>
<minpitch> 20 </minpitch>
<maxpitch> 20 </maxpitch>
<table name="C_POWER" type = "internal">
<tableData>
0 0.0660
0.1 0.0650
0.2 0.0640
0.3 0.0625
0.4 0.0600
0.5 0.0580
0.6 0.0540
0.7 0.0475
0.8 0.0370
0.9 0.0260
1 0.0100
1.1 0.0000
1.2 -0.0100
1.3 -0.0200
1.5 -0.0350
2 -0.0500
3 -0.0550
</tableData>
</table>
<table name="C_THRUST" type="internal">
<tableData>
0 0.1040
0.1 0.1040
0.2 0.1030
0.3 0.1010
0.4 0.0930
0.5 0.0820
0.6 0.0700
0.7 0.0550
0.8 0.0390
0.9 0.0240
1 0.0060
1.1 -0.0140
1.2 -0.0330
1.3 -0.0450
1.5 -0.0600
2 -0.0720
3 -0.0800
</tableData>
</table>
<table name="C_POWER" type="internal">
<tableData>
0 0.0660
0.1 0.0650
0.2 0.0640
0.3 0.0625
0.4 0.0600
0.5 0.0580
0.6 0.0540
0.7 0.0475
0.8 0.0370
0.9 0.0260
1 0.0100
1.1 0.0000
1.2 -0.0100
1.3 -0.0200
1.5 -0.0350
2 -0.0500
3 -0.0550
</tableData>
</table>
</propeller>

View file

@ -30,7 +30,7 @@
<property>/sim/rendering/rembrandt/enabled</property>
</not>
<property>/sim/rendering/shaders/skydome</property>
<property>/sim/rendering/shadow-volume</property>
<property>sim/rendering/shadow-volume</property>
<equals>
<property>/fdm/jsbsim/bushkit</property>
<value>4</value>

View file

@ -30,7 +30,7 @@
<property>/sim/rendering/rembrandt/enabled</property>
</not>
<property>/sim/rendering/shaders/skydome</property>
<property>/sim/rendering/shadow-volume</property>
<property>sim/rendering/shadow-volume</property>
<equals>
<property>/fdm/jsbsim/bushkit</property>
<value>1</value>

View file

@ -30,7 +30,7 @@
<property>/sim/rendering/rembrandt/enabled</property>
</not>
<property>/sim/rendering/shaders/skydome</property>
<property>/sim/rendering/shadow-volume</property>
<property>sim/rendering/shadow-volume</property>
<equals>
<property>/fdm/jsbsim/bushkit</property>
<value>2</value>

View file

@ -30,7 +30,7 @@
<property>/sim/rendering/rembrandt/enabled</property>
</not>
<property>/sim/rendering/shaders/skydome</property>
<property>/sim/rendering/shadow-volume</property>
<property>sim/rendering/shadow-volume</property>
<equals>
<property>/fdm/jsbsim/bushkit</property>
<value>0</value>

View file

@ -30,7 +30,7 @@
<property>/sim/rendering/rembrandt/enabled</property>
</not>
<property>/sim/rendering/shaders/skydome</property>
<property>/sim/rendering/shadow-volume</property>
<property>sim/rendering/shadow-volume</property>
<equals>
<property>/fdm/jsbsim/bushkit</property>
<value>3</value>

View file

@ -1,87 +1,90 @@
<PropertyList>
<entry>
<ind>0.000</ind>
<dep>0.000</dep>
</entry>
<entry>
<ind>0.050</ind>
<dep>2.799</dep>
</entry>
<entry>
<ind>0.100</ind>
<dep>5.504</dep>
</entry>
<entry>
<ind>0.150</ind>
<dep>8.130</dep>
</entry>
<entry>
<ind>0.200</ind>
<dep>10.688</dep>
</entry>
<entry>
<ind>0.250</ind>
<dep>13.187</dep>
</entry>
<entry>
<ind>0.300</ind>
<dep>15.637</dep>
</entry>
<entry>
<ind>0.350</ind>
<dep>18.044</dep>
</entry>
<entry>
<ind>0.400</ind>
<dep>20.415</dep>
</entry>
<entry>
<ind>0.450</ind>
<dep>22.755</dep>
</entry>
<entry>
<ind>0.500</ind>
<dep>25.068</dep>
</entry>
<entry>
<ind>0.550</ind>
<dep>27.360</dep>
</entry>
<entry>
<ind>0.600</ind>
<dep>29.635</dep>
</entry>
<entry>
<ind>0.650</ind>
<dep>31.896</dep>
</entry>
<entry>
<ind>0.700</ind>
<dep>34.147</dep>
</entry>
<entry>
<ind>0.750</ind>
<dep>36.393</dep>
</entry>
<entry>
<ind>0.800</ind>
<dep>38.635</dep>
</entry>
<entry>
<ind>0.850</ind>
<dep>40.878</dep>
</entry>
<entry>
<ind>0.900</ind>
<dep>43.126</dep>
</entry>
<entry>
<ind>0.950</ind>
<dep>45.381</dep>
</entry>
<entry>
<ind>1.000</ind>
<dep>47.647</dep>
</entry>
</PropertyList>
<?xml version="1.0"?>
<PropertyList>
<entry>
<ind>0.000</ind>
<dep>0.000</dep>
</entry>
<entry>
<ind>0.050</ind>
<dep>2.799</dep>
</entry>
<entry>
<ind>0.100</ind>
<dep>5.504</dep>
</entry>
<entry>
<ind>0.150</ind>
<dep>8.130</dep>
</entry>
<entry>
<ind>0.200</ind>
<dep>10.688</dep>
</entry>
<entry>
<ind>0.250</ind>
<dep>13.187</dep>
</entry>
<entry>
<ind>0.300</ind>
<dep>15.637</dep>
</entry>
<entry>
<ind>0.350</ind>
<dep>18.044</dep>
</entry>
<entry>
<ind>0.400</ind>
<dep>20.415</dep>
</entry>
<entry>
<ind>0.450</ind>
<dep>22.755</dep>
</entry>
<entry>
<ind>0.500</ind>
<dep>25.068</dep>
</entry>
<entry>
<ind>0.550</ind>
<dep>27.360</dep>
</entry>
<entry>
<ind>0.600</ind>
<dep>29.635</dep>
</entry>
<entry>
<ind>0.650</ind>
<dep>31.896</dep>
</entry>
<entry>
<ind>0.700</ind>
<dep>34.147</dep>
</entry>
<entry>
<ind>0.750</ind>
<dep>36.393</dep>
</entry>
<entry>
<ind>0.800</ind>
<dep>38.635</dep>
</entry>
<entry>
<ind>0.850</ind>
<dep>40.878</dep>
</entry>
<entry>
<ind>0.900</ind>
<dep>43.126</dep>
</entry>
<entry>
<ind>0.950</ind>
<dep>45.381</dep>
</entry>
<entry>
<ind>1.000</ind>
<dep>47.647</dep>
</entry>
</PropertyList>

View file

@ -84,7 +84,7 @@
<!-- simply hide these -->
<animation>
<type>pick</type>
<type>select</type>
<visible>false</visible>
<object-name>AdjustCW</object-name>
<object-name>AdjustCCW</object-name>
@ -103,7 +103,8 @@
</binding>
</action>
<value>0.0</value>
<property>instrumentation/attitude-indicator/horizon-offset-deg</property>
<factor>-8</factor>
<axis>
<x>1</x>

View file

@ -133,16 +133,25 @@
</axis>
</animation>
<!-- Altimeter -->
<!-- Altimeter -->
<animation>
<type>knob</type>
<object-name>click-L</object-name>
<object-name>click-R</object-name>
<visible>false</visible>
<action>
<object-name>disk</object-name>
<property>/instrumentation/altimeter/setting-inhg</property>
<factor>-800</factor>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
<center>
<x-m>0.0</x-m>
<y-m>-0.03</y-m>
<z-m>-0.0306</z-m>
</center>
<action>
<binding>
<command>property-adjust</command>
<property>/instrumentation/altimeter/setting-inhg</property>
@ -163,9 +172,5 @@
</hovered>
</animation>
</PropertyList>

View file

@ -140,7 +140,7 @@
<!-- the source switch -->
<animation>
<type>rotate</type>
<type>knob</type>
<object-name>SourceSelectorKnob</object-name>
<property>instrumentation/dme/switch-position</property>
<factor>-30</factor>
@ -157,19 +157,11 @@
<y-m>-0.0589436</y-m>
<z-m>0</z-m>
</center>
</animation>
<animation>
<type>pick</type>
<object-name>SourceSelectorPick.R</object-name>
<visible>false</visible>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/dme/switch-position</property>
<step>1</step>
<factor>1</factor>
<min>1</min>
<max>3</max>
<wrap>0</wrap>
@ -225,59 +217,4 @@
</action>
</animation>
<animation>
<type>pick</type>
<object-name>SourceSelectorPick.L</object-name>
<visible>false</visible>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/dme/switch-position</property>
<step>-1</step>
<min>1</min>
<max>3</max>
<wrap>0</wrap>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">1</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/source</property>
<value>instrumentation/nav[0]/frequencies/selected-mhz</value>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">2</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/source</property>
<value>instrumentation/dme/frequencies/selected-mhz</value>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">2</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/selected-mhz</property>
<property>instrumentation/nav[1]/frequencies/selected-mhz</property>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("dme-source")</script>
</binding>
</action>
</animation>
</PropertyList>

View file

@ -16,6 +16,12 @@ adjusting them, toggling them, or swaping them with other
properties' values.
-->
<PropertyList>
<params>
<dial-10-ft>/autopilot/KAP140/settings/dial-10-ft</dial-10-ft>
<dial-100-ft>/autopilot/KAP140/settings/dial-100-ft</dial-100-ft>
</params>
<name>KAP140TwoAxisAlt</name>
<path>kap140.ac</path>
@ -900,36 +906,97 @@ properties' values.
</binding>
</hovered>
</animation>
<animation>
<object-name>knob-inner</object-name>
<object-name>knob-outer</object-name>
<type>knob</type>
<increase>
<binding>
<command>nasal</command>
<script>kap140.knobSmallUp();c172p.click("kap140-dial")</script>
</binding>
</increase>
<decrease>
<binding>
<command>nasal</command>
<script>kap140.knobSmallDown();c172p.click("kap140-dial")</script>
</binding>
</decrease>
<shift-increase>
<binding>
<command>nasal</command>
<script>kap140.knobLargeUp();c172p.click("kap140-dial")</script>
</binding>
</shift-increase>
<shift-decrease>
<binding>
<command>nasal</command>
<script>kap140.knobLargeDown();c172p.click("kap140-dial")</script>
</binding>
</shift-decrease>
</animation>
<animation>
<type>knob</type>
<object-name>knob-inner</object-name>
<property alias="/params/dial-10-ft"/>
<factor>-2.5</factor>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
<center>
<x-m>0.0065</x-m>
<y-m>0.0652</y-m>
<z-m>-0.0060</z-m>
</center>
<increase>
<binding>
<command>nasal</command>
<script>kap140.knobSmallUp()</script>
</binding>
</increase>
<decrease>
<binding>
<command>nasal</command>
<script>kap140.knobSmallDown()</script>
</binding>
</decrease>
<action>
<binding>
<command>property-adjust</command>
<property alias="/params/dial-10-ft"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kap140-dial")</script>
</binding>
</action>
</animation>
<animation>
<type>knob</type>
<object-name>knob-outer</object-name>
<property alias="/params/dial-100-ft"/>
<factor>-2.5</factor>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
<center>
<x-m>0.0065</x-m>
<y-m>0.0652</y-m>
<z-m>-0.0060</z-m>
</center>
<increase>
<binding>
<command>nasal</command>
<script>kap140.knobLargeUp()</script>
</binding>
</increase>
<decrease>
<binding>
<command>nasal</command>
<script>kap140.knobLargeDown()</script>
</binding>
</decrease>
<action>
<binding>
<command>property-adjust</command>
<property alias="/params/dial-100-ft"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kap140-dial")</script>
</binding>
</action>
</animation>
</PropertyList>

View file

@ -138,7 +138,7 @@
<object-name>HDGSelector</object-name>
<property alias="../../params/rotation-deg"/>
<factor>8.0</factor>
<factor>-8.0</factor>
<axis>
<x>1.0</x>
<y>0.0</y>

View file

@ -1,8 +1,12 @@
<?xml version="1.0" ?>
<PropertyList>
<params>
<right-display>/instrumentation/adf[0]/right-display</right-display>
<dimming>instrumentation/adf[0]/dimming-norm</dimming>
<dial-1-khz>instrumentation/adf[0]/frequencies/dial-1-khz</dial-1-khz>
<dial-100-khz>instrumentation/adf[0]/frequencies/dial-100-khz</dial-100-khz>
</params>
<path>kr87.ac</path>
@ -503,13 +507,7 @@
</action>
</animation>
<animation>
<type>pick</type>
<object-name>VolumePickLeft</object-name>
<object-name>VolumePickRight</object-name>
<visible>false</visible>
</animation>
<!-- volume knob -->
<animation>
<type>knob</type>
<object-name>Volume</object-name>
@ -568,19 +566,25 @@
</binding>
</action>
</animation>
<!-- frequency knob -->
<animation>
<type>pick</type>
<object-name>FreqPickLeft</object-name>
<object-name>FreqPickRight</object-name>
<visible>false</visible>
</animation>
<!-- inner frequency (1 KHz) knob -->
<animation>
<type>knob</type>
<object-name>FRQOuter</object-name>
<object-name>FRQInner</object-name>
<property alias="/params/dial-1-khz"/>
<factor>-2.5</factor>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
<center>
<x-m>0.0371</x-m>
<y-m>0.0629</y-m>
<z-m>-0.0018</z-m>
</center>
<action>
<binding>
<command>property-adjust</command>
@ -591,12 +595,39 @@
<resolution>1</resolution>
<wrap>true</wrap>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/dial-1-khz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kr87-adf-dial")</script>
</binding>
</action>
<shift-action>
</animation>
<!-- outer frequency (100 KHz) knob -->
<animation>
<type>knob</type>
<object-name>FRQOuter</object-name>
<property alias="/params/dial-100-khz"/>
<factor>-2.5</factor>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
<center>
<x-m>0.0371</x-m>
<y-m>0.0629</y-m>
<z-m>-0.0018</z-m>
</center>
<action>
<binding>
<command>property-adjust</command>
<property>/instrumentation/adf[0]/frequencies/standby-khz</property>
@ -606,10 +637,19 @@
<resolution>1</resolution>
<wrap>true</wrap>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/dial-100-khz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kr87-adf-dial")</script>
</binding>
</shift-action>
</action>
</animation>
</PropertyList>

View file

@ -15,11 +15,15 @@
"instrumentation/comm[0]/volume",
"instrumentation/comm[0]/frequencies/selected-mhz",
"instrumentation/comm[0]/frequencies/standby-mhz",
"instrumentation/comm[0]/frequencies/dial-khz",
"instrumentation/comm[0]/frequencies/dial-mhz",
"instrumentation/comm[0]/test-btn",
"instrumentation/nav[0]/audio-btn",
"instrumentation/nav[0]/power-btn",
"instrumentation/nav[0]/frequencies/selected-mhz",
"instrumentation/nav[0]/frequencies/standby-mhz",
"instrumentation/nav[0]/frequencies/dial-khz",
"instrumentation/nav[0]/frequencies/dial-mhz",
);
-->
@ -32,12 +36,16 @@
<comm-frq-swp>instrumentation/comm[0]/frq-swap-btn</comm-frq-swp>
<comm-frq-selected>instrumentation/comm[0]/frequencies/selected-mhz</comm-frq-selected>
<comm-frq-standby>instrumentation/comm[0]/frequencies/standby-mhz</comm-frq-standby>
<comm-dial-khz>instrumentation/comm[0]/frequencies/dial-khz</comm-dial-khz>
<comm-dial-mhz>instrumentation/comm[0]/frequencies/dial-mhz</comm-dial-mhz>
<comm-volume>instrumentation/comm[0]/volume</comm-volume>
<comm-test>instrumentation/comm[0]/test-btn</comm-test>
<nav-frq-swp>instrumentation/nav[0]/frq-swap-btn</nav-frq-swp>
<nav-frq-selected>instrumentation/nav[0]/frequencies/selected-mhz</nav-frq-selected>
<nav-frq-standby>instrumentation/nav[0]/frequencies/standby-mhz</nav-frq-standby>
<nav-dial-khz>instrumentation/nav[0]/frequencies/dial-khz</nav-dial-khz>
<nav-dial-mhz>instrumentation/nav[0]/frequencies/dial-mhz</nav-dial-mhz>
<nav-volume>instrumentation/nav[0]/volume</nav-volume>
<nav-audio>instrumentation/nav[0]/audio-btn</nav-audio>
@ -615,8 +623,8 @@
<animation>
<type>knob</type>
<object-name>CommKHz</object-name>
<property alias="../../params/comm-frq-standby"/>
<factor>-360</factor>
<property alias="/params/comm-dial-khz"/>
<factor>-0.25</factor>
<axis>
<x>1</x>
<y>0</y>
@ -633,7 +641,7 @@
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="../../../../params/comm-frq-standby"/>
<property alias="/params/comm-frq-standby"/>
<factor>0.025</factor>
<min>0.0</min>
<max>1.0</max>
@ -641,6 +649,14 @@
<wrap>true</wrap>
<mask>decimal</mask>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/comm-dial-khz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-1-dial")</script>
@ -651,8 +667,8 @@
<animation>
<type>knob</type>
<object-name>CommMHz</object-name>
<property alias="../../params/comm-frq-standby"/>
<factor>-7</factor>
<property alias="/params/comm-dial-mhz"/>
<factor>-0.25</factor>
<axis>
<x>1</x>
<y>0</y>
@ -669,13 +685,21 @@
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="../../../../params/comm-frq-standby"/>
<property alias="/params/comm-frq-standby"/>
<factor>1</factor>
<min>118.0</min>
<max>137.0</max>
<wrap>true</wrap>
<mask>integer</mask>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/comm-dial-mhz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-1-dial")</script>
@ -763,8 +787,8 @@
<animation>
<type>knob</type>
<object-name>NavKHz</object-name>
<property alias="../../params/nav-frq-standby"/>
<factor>-360</factor>
<property alias="/params/nav-dial-khz"/>
<factor>-0.25</factor>
<axis>
<x>1</x>
<y>0</y>
@ -781,13 +805,22 @@
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="../../../../params/nav-frq-standby"/>
<property alias="/params/nav-frq-standby"/>
<factor>0.05</factor>
<min>0.0</min>
<max>1.0</max>
<resolution>0.050</resolution>
<wrap>true</wrap>
<mask>decimal</mask>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/nav-dial-khz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-1-dial")</script>
@ -798,8 +831,8 @@
<animation>
<type>knob</type>
<object-name>NavMHz</object-name>
<property alias="../../params/nav-frq-standby"/>
<factor>-7</factor>
<property alias="/params/nav-dial-mhz"/>
<factor>-0.25</factor>
<axis>
<x>1</x>
<y>0</y>
@ -816,11 +849,20 @@
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="../../../../params/nav-frq-standby"/>
<property alias="/params/nav-frq-standby"/>
<factor>1</factor>
<min>108.0</min>
<max>118.0</max>
<wrap>true</wrap>
<mask>integer</mask>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/nav-dial-mhz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>

View file

@ -15,11 +15,15 @@
"instrumentation/comm[1]/volume",
"instrumentation/comm[1]/frequencies/selected-mhz",
"instrumentation/comm[1]/frequencies/standby-mhz",
"instrumentation/comm[1]/frequencies/dial-khz",
"instrumentation/comm[1]/frequencies/dial-mhz",
"instrumentation/comm[1]/test-btn",
"instrumentation/nav[1]/audio-btn",
"instrumentation/nav[1]/power-btn",
"instrumentation/nav[1]/frequencies/selected-mhz",
"instrumentation/nav[1]/frequencies/standby-mhz",
"instrumentation/nav[1]/frequencies/dial-khz",
"instrumentation/nav[1]/frequencies/dial-mhz",
);
-->
@ -32,12 +36,16 @@
<comm-frq-swp>instrumentation/comm[1]/frq-swap-btn</comm-frq-swp>
<comm-frq-selected>instrumentation/comm[1]/frequencies/selected-mhz</comm-frq-selected>
<comm-frq-standby>instrumentation/comm[1]/frequencies/standby-mhz</comm-frq-standby>
<comm-dial-khz>instrumentation/comm[1]/frequencies/dial-khz</comm-dial-khz>
<comm-dial-mhz>instrumentation/comm[1]/frequencies/dial-mhz</comm-dial-mhz>
<comm-volume>instrumentation/comm[1]/volume</comm-volume>
<comm-test>instrumentation/comm[1]/test-btn</comm-test>
<nav-frq-swp>instrumentation/nav[1]/frq-swap-btn</nav-frq-swp>
<nav-frq-selected>instrumentation/nav[1]/frequencies/selected-mhz</nav-frq-selected>
<nav-frq-standby>instrumentation/nav[1]/frequencies/standby-mhz</nav-frq-standby>
<nav-dial-khz>instrumentation/nav[1]/frequencies/dial-khz</nav-dial-khz>
<nav-dial-mhz>instrumentation/nav[1]/frequencies/dial-mhz</nav-dial-mhz>
<nav-volume>instrumentation/nav[1]/volume</nav-volume>
<nav-audio>instrumentation/nav[1]/audio-btn</nav-audio>
@ -509,6 +517,7 @@
</axis>
</animation>
<!-- knobs and buttons -->
<animation>
@ -614,8 +623,8 @@
<animation>
<type>knob</type>
<object-name>CommKHz</object-name>
<property alias="../../params/comm-frq-standby"/>
<factor>-360</factor>
<property alias="/params/comm-dial-khz"/>
<factor>-0.25</factor>
<axis>
<x>1</x>
<y>0</y>
@ -632,7 +641,7 @@
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="../../../../params/comm-frq-standby"/>
<property alias="/params/comm-frq-standby"/>
<factor>0.025</factor>
<min>0.0</min>
<max>1.0</max>
@ -640,6 +649,14 @@
<wrap>true</wrap>
<mask>decimal</mask>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/comm-dial-khz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-2-dial")</script>
@ -650,8 +667,8 @@
<animation>
<type>knob</type>
<object-name>CommMHz</object-name>
<property alias="../../params/comm-frq-standby"/>
<factor>-7</factor>
<property alias="/params/comm-dial-mhz"/>
<factor>-0.25</factor>
<axis>
<x>1</x>
<y>0</y>
@ -668,13 +685,21 @@
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="../../../../params/comm-frq-standby"/>
<property alias="/params/comm-frq-standby"/>
<factor>1</factor>
<min>118.0</min>
<max>137.0</max>
<wrap>true</wrap>
<mask>integer</mask>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/comm-dial-mhz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-2-dial")</script>
@ -762,8 +787,8 @@
<animation>
<type>knob</type>
<object-name>NavKHz</object-name>
<property alias="../../params/nav-frq-standby"/>
<factor>-360</factor>
<property alias="/params/nav-dial-khz"/>
<factor>-0.25</factor>
<axis>
<x>1</x>
<y>0</y>
@ -780,13 +805,22 @@
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="../../../../params/nav-frq-standby"/>
<property alias="/params/nav-frq-standby"/>
<factor>0.05</factor>
<min>0.0</min>
<max>1.0</max>
<resolution>0.050</resolution>
<wrap>true</wrap>
<mask>decimal</mask>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/nav-dial-khz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>
<script>c172p.click("kx165-2-dial")</script>
@ -797,8 +831,8 @@
<animation>
<type>knob</type>
<object-name>NavMHz</object-name>
<property alias="../../params/nav-frq-standby"/>
<factor>-7</factor>
<property alias="/params/nav-dial-mhz"/>
<factor>-0.25</factor>
<axis>
<x>1</x>
<y>0</y>
@ -815,11 +849,20 @@
<property alias="../../../../../params/power-comm"/>
</condition>
<command>property-adjust</command>
<property alias="../../../../params/nav-frq-standby"/>
<property alias="/params/nav-frq-standby"/>
<factor>1</factor>
<min>108.0</min>
<max>118.0</max>
<wrap>true</wrap>
<mask>integer</mask>
</binding>
<binding>
<command>property-adjust</command>
<property alias="/params/nav-dial-mhz"/>
<factor>4</factor>
<min>0</min>
<max>360</max>
<wrap>true</wrap>
</binding>
<binding>
<command>nasal</command>

View file

@ -13,8 +13,6 @@
<animation>
<type>knob</type>
<object-name>LightKnob</object-name>
<proxy-name>LightHotspotLeft</proxy-name>
<proxy-name>LightHotspotRight</proxy-name>
<visible>true</visible>
<action>
@ -40,8 +38,4 @@
</hovered>
</animation>
</PropertyList>

View file

@ -155,26 +155,36 @@
</axis>
</animation>
<!-- VOR 1 Radial adjust -->
<!-- VOR 1 Radial adjust -->
<animation>
<type>knob</type>
<type>pick</type>
<object-name>click-R</object-name>
<object-name>click-L</object-name>
<visible>false</visible>
<object-name>disk</object-name>
<property>/instrumentation/nav[0]/radials/selected-deg</property>
<factor>-8</factor>
<shift-repeat type="int">5</shift-repeat>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
<center>
<x-m>0.0</x-m>
<y-m>-0.0272</y-m>
<z-m>-0.0292</z-m>
</center>
<shift-repeat type="int">5</shift-repeat>
<action>
<binding>
<command>property-adjust</command>
<property>/instrumentation/nav/radials/selected-deg</property>
<factor>1</factor>
<min>0</min>
<max>360</max>
<wrap>1</wrap>
</binding>
<action>
<binding>
<command>property-adjust</command>
<property>/instrumentation/nav[0]/radials/selected-deg</property>
<factor>1</factor>
<min>0</min>
<max>360</max>
<wrap>1</wrap>
</binding>
</action>
<hovered>
@ -183,7 +193,7 @@
<tooltip-id>nav1-obs</tooltip-id>
<label>Nav 1 Radial %3d</label>
<mapping>heading</mapping>
<property>/instrumentation/nav/radials/selected-deg</property>
<property>/instrumentation/nav[0]/radials/selected-deg</property>
</binding>
</hovered>
</animation>

View file

@ -155,26 +155,36 @@
</axis>
</animation>
<!-- VOR 2 Radial adjust -->
<!-- VOR 2 Radial adjust -->
<animation>
<type>knob</type>
<type>pick</type>
<object-name>click-R</object-name>
<object-name>click-L</object-name>
<visible>false</visible>
<object-name>disk</object-name>
<property>/instrumentation/nav[1]/radials/selected-deg</property>
<factor>-8</factor>
<shift-repeat type="int">5</shift-repeat>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
<center>
<x-m>0.0</x-m>
<y-m>-0.0272</y-m>
<z-m>-0.0292</z-m>
</center>
<shift-repeat type="int">5</shift-repeat>
<action>
<binding>
<command>property-adjust</command>
<property>/instrumentation/nav[1]/radials/selected-deg</property>
<factor>1</factor>
<min>0</min>
<max>360</max>
<wrap>1</wrap>
</binding>
<action>
<binding>
<command>property-adjust</command>
<property>/instrumentation/nav[1]/radials/selected-deg</property>
<factor>1</factor>
<min>0</min>
<max>360</max>
<wrap>1</wrap>
</binding>
</action>
<hovered>
@ -198,5 +208,3 @@
</animation>
</PropertyList>

View file

@ -25,7 +25,7 @@
<liveryinterior>
<name type="string">D-EEQA</name>
<index type="int">1</index>
<texture>interior_test.png</texture>
<texture>interior.png</texture>
</liveryinterior>
<liverypanel>
<name type="string">D-EEQA</name>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 KiB

After

Width:  |  Height:  |  Size: 447 KiB

View file

@ -1,87 +1,90 @@
<?xml version = '1.0' encoding = 'UTF-8' ?>
<?xml version="1.0" encoding="UTF-8"?>
<PropertyList>
<entry>
<ind>0.000</ind>
<dep>0.000</dep>
</entry>
<entry>
<ind>0.050</ind>
<dep>1.305</dep>
</entry>
<entry>
<ind>0.100</ind>
<dep>2.583</dep>
</entry>
<entry>
<ind>0.150</ind>
<dep>3.836</dep>
</entry>
<entry>
<ind>0.200</ind>
<dep>5.067</dep>
</entry>
<entry>
<ind>0.250</ind>
<dep>6.276</dep>
</entry>
<entry>
<ind>0.300</ind>
<dep>7.467</dep>
</entry>
<entry>
<ind>0.350</ind>
<dep>8.639</dep>
</entry>
<entry>
<ind>0.400</ind>
<dep>9.794</dep>
</entry>
<entry>
<ind>0.450</ind>
<dep>10.934</dep>
</entry>
<entry>
<ind>0.500</ind>
<dep>12.059</dep>
</entry>
<entry>
<ind>0.550</ind>
<dep>13.171</dep>
</entry>
<entry>
<ind>0.600</ind>
<dep>14.270</dep>
</entry>
<entry>
<ind>0.650</ind>
<dep>15.357</dep>
</entry>
<entry>
<ind>0.700</ind>
<dep>16.433</dep>
</entry>
<entry>
<ind>0.750</ind>
<dep>17.498</dep>
</entry>
<entry>
<ind>0.800</ind>
<dep>18.554</dep>
</entry>
<entry>
<ind>0.850</ind>
<dep>19.601</dep>
</entry>
<entry>
<ind>0.900</ind>
<dep>20.639</dep>
</entry>
<entry>
<ind>0.950</ind>
<dep>21.668</dep>
</entry>
<entry>
<ind>1.000</ind>
<dep>22.691</dep>
</entry>
<entry>
<ind>0.000</ind>
<dep>0.000</dep>
</entry>
<entry>
<ind>0.050</ind>
<dep>1.305</dep>
</entry>
<entry>
<ind>0.100</ind>
<dep>2.583</dep>
</entry>
<entry>
<ind>0.150</ind>
<dep>3.836</dep>
</entry>
<entry>
<ind>0.200</ind>
<dep>5.067</dep>
</entry>
<entry>
<ind>0.250</ind>
<dep>6.276</dep>
</entry>
<entry>
<ind>0.300</ind>
<dep>7.467</dep>
</entry>
<entry>
<ind>0.350</ind>
<dep>8.639</dep>
</entry>
<entry>
<ind>0.400</ind>
<dep>9.794</dep>
</entry>
<entry>
<ind>0.450</ind>
<dep>10.934</dep>
</entry>
<entry>
<ind>0.500</ind>
<dep>12.059</dep>
</entry>
<entry>
<ind>0.550</ind>
<dep>13.171</dep>
</entry>
<entry>
<ind>0.600</ind>
<dep>14.270</dep>
</entry>
<entry>
<ind>0.650</ind>
<dep>15.357</dep>
</entry>
<entry>
<ind>0.700</ind>
<dep>16.433</dep>
</entry>
<entry>
<ind>0.750</ind>
<dep>17.498</dep>
</entry>
<entry>
<ind>0.800</ind>
<dep>18.554</dep>
</entry>
<entry>
<ind>0.850</ind>
<dep>19.601</dep>
</entry>
<entry>
<ind>0.900</ind>
<dep>20.639</dep>
</entry>
<entry>
<ind>0.950</ind>
<dep>21.668</dep>
</entry>
<entry>
<ind>1.000</ind>
<dep>22.691</dep>
</entry>
</PropertyList>

File diff suppressed because it is too large Load diff

View file

@ -42,11 +42,17 @@ aircraft.data.add(
"instrumentation/comm[0]/volume",
"instrumentation/comm[0]/frequencies/selected-mhz",
"instrumentation/comm[0]/frequencies/standby-mhz",
"instrumentation/comm[0]/frequencies/dial-khz",
"instrumentation/comm[0]/frequencies/dial-mhz",
"instrumentation/comm[0]/test-btn",
"instrumentation/nav[0]/audio-btn",
"instrumentation/nav[0]/power-btn",
"instrumentation/nav[0]/volume",
"instrumentation/nav[0]/frequencies/selected-mhz",
"instrumentation/nav[0]/frequencies/standby-mhz",
"instrumentation/nav[0]/frequencies/dial-khz",
"instrumentation/nav[0]/frequencies/dial-mhz",
"instrumentation/nav[0]/radials/selected-deg",
);
# COMM2 (according to its documentation)
@ -55,11 +61,36 @@ aircraft.data.add(
"instrumentation/comm[1]/volume",
"instrumentation/comm[1]/frequencies/selected-mhz",
"instrumentation/comm[1]/frequencies/standby-mhz",
"instrumentation/comm[1]/frequencies/dial-khz",
"instrumentation/comm[1]/frequencies/dial-mhz",
"instrumentation/comm[1]/test-btn",
"instrumentation/nav[1]/audio-btn",
"instrumentation/nav[1]/power-btn",
"instrumentation/nav[1]/volume",
"instrumentation/nav[1]/frequencies/selected-mhz",
"instrumentation/nav[1]/frequencies/standby-mhz",
"instrumentation/nav[1]/frequencies/dial-khz",
"instrumentation/nav[1]/frequencies/dial-mhz",
"instrumentation/nav[1]/radials/selected-deg",
);
aircraft.data.add(
"instrumentation/dme/switch-position",
"instrumentation/dme/frequencies/source",
"instrumentation/dme/frequencies/selected-mhz",
);
# Instruments
aircraft.data.add(
"instrumentation/altimeter/setting-inhg",
"instrumentation/attitude-indicator/horizon-offset-deg",
"autopilot/settings/heading-bug-deg",
"instrumentation/heading-indicator/offset-deg",
"instrumentation/adf[0]/rotation-deg",
"instrumentation/adf[0]/frequencies/dial-1-khz",
"instrumentation/adf[0]/frequencies/dial-100-khz",
"autopilot/KAP140/settings/dial-10-ft",
"autopilot/KAP140/settings/dial-100-ft",
);
# DME saves power-btn in ki266.nas
@ -83,7 +114,11 @@ aircraft.data.add(
"/controls/lighting/landing-lights",
"/controls/lighting/nav-lights",
"/controls/lighting/strobe",
"/controls/lighting/taxi-light"
"/controls/lighting/taxi-light",
"/controls/switches/magnetos",
"/controls/switches/master-bat",
"/controls/switches/master-alt",
"/controls/switches/master-avionics",
);
# Other controls
@ -91,5 +126,32 @@ aircraft.data.add(
"/controls/anti-ice/engine/carb-heat",
"/controls/anti-ice/pitot-heat",
"/consumables/fuel/tank/selected",
"/consumables/fuel/tank[1]/selected"
"/consumables/fuel/tank[1]/selected",
"/controls/gear/brake-parking",
"/controls/flight/flaps",
"/controls/flight/elevator-trim",
"/controls/engines/current-engine/throttle",
"/controls/engines/current-engine/mixture",
"/controls/engines/engine[0]/primer-lever",
);
# Circuit breakers
aircraft.data.add(
"/controls/circuit-breakers/aircond",
"/controls/circuit-breakers/autopilot",
"/controls/circuit-breakers/bcnlt",
"/controls/circuit-breakers/flaps",
"/controls/circuit-breakers/instr",
"/controls/circuit-breakers/intlt",
"/controls/circuit-breakers/landing",
"/controls/circuit-breakers/master",
"/controls/circuit-breakers/navlt",
"/controls/circuit-breakers/pitot-heat",
"/controls/circuit-breakers/radio1",
"/controls/circuit-breakers/radio2",
"/controls/circuit-breakers/radio3",
"/controls/circuit-breakers/radio4",
"/controls/circuit-breakers/radio5",
"/controls/circuit-breakers/strobe",
"/controls/circuit-breakers/turn-coordinator",
);

View file

@ -1,211 +1,232 @@
##########################################
# Brakes
##########################################
controls.applyBrakes = func (v, which = 0) {
if (which <= 0 and !getprop("/fdm/jsbsim/gear/unit[1]/broken")) {
interpolate("/controls/gear/brake-left", v, controls.fullBrakeTime);
}
if (which >= 0 and !getprop("/fdm/jsbsim/gear/unit[2]/broken")) {
interpolate("/controls/gear/brake-right", v, controls.fullBrakeTime);
}
};
controls.applyParkingBrake = func (v) {
if (!v) {
return;
}
var left_broken = getprop("/fdm/jsbsim/gear/unit[1]/broken");
var right_broken =getprop("/fdm/jsbsim/gear/unit[2]/broken");
var p = "/controls/gear/brake-parking";
var orig_p = getprop(p);
# We assume one non-broken gear is enough to apply the parking brake
if (orig_p or !left_broken or !right_broken) {
setprop(p, var i = !orig_p);
return i;
}
return orig_p;
};
##########################################
# Click Sounds
##########################################
var click = func (name, timeout=0.1) {
var sound_prop = "/sim/model/c172p/sound/click-" ~ name;
# Play the sound
setprop(sound_prop, 1);
# Reset the property after 0.2 seconds so that the sound can be
# played again.
settimer(func {
setprop(sound_prop, 0);
}, timeout);
};
##########################################
# Ground Detection
##########################################
# Do terrain modelling ourselves.
#setprop("sim/fdm/surface/override-level", 1);
var terrain_survol_loop = func {
var lat = getprop("/position/latitude-deg");
var lon = getprop("/position/longitude-deg");
var info = geodinfo(lat, lon);
if (info != nil) {
if (info[1] != nil){
if (info[1].solid !=nil)
setprop("/environment/terrain-type",info[1].solid);
if (info[1].load_resistance !=nil)
setprop("/environment/terrain-load-resistance",info[1].load_resistance);
if (info[1].friction_factor !=nil)
setprop("/environment/terrain-friction-factor",info[1].friction_factor);
if (info[1].bumpiness !=nil)
setprop("/environment/terrain-bumpiness",info[1].bumpiness);
if (info[1].rolling_friction !=nil)
setprop("/environment/terrain-rolling-friction",info[1].rolling_friction);
if (info[1].names !=nil)
setprop("/environment/terrain-names",info[1].names[0]);
}
}else{
setprop("/environment/terrain",1);
setprop("/environment/terrain-load-resistance",1e+30);
setprop("/environment/terrain-friction-factor",1.05);
setprop("/environment/terrain-bumpiness",0);
setprop("/environment/terrain-rolling-friction",0.02);
}
if(!getprop("sim/freeze/replay-state") and !getprop("/environment/terrain-type") and getprop("/position/altitude-agl-ft") < 3.0){
setprop("sim/messages/copilot", "You are on water !");
setprop("sim/freeze/clock", 1);
setprop("sim/freeze/master", 1);
setprop("sim/crashed", 1);
}
}
var reset_system = func {
if (getprop("/fdm/jsbsim/running"))
{
c172p.autostart(0);
setprop("/controls/switches/starter", 1);
var engineRunning = setlistener("/engines/engine[0]/running", func{
if (getprop("/engines/engine[0]/running"))
{
setprop("/controls/switches/starter", 0);
removelistener(engineRunning);
}
});
}
# These properties are aliased to MP properties in /sim/multiplay/generic/.
# This aliasing seems to work in both ways, because the two properties below
# appear to receive the random values from the MP properties during initialization.
# Therefore, override these random values with the proper values we want.
props.globals.getNode("/fdm/jsbsim/crash", 0).setBoolValue(0);
props.globals.getNode("/fdm/jsbsim/gear/unit[0]/broken", 0).setBoolValue(0);
props.globals.getNode("/fdm/jsbsim/gear/unit[1]/broken", 0).setBoolValue(0);
props.globals.getNode("/fdm/jsbsim/gear/unit[2]/broken", 0).setBoolValue(0);
props.globals.getNode("/fdm/jsbsim/pontoon-damage/left-pontoon", 0).setIntValue(0);
props.globals.getNode("/fdm/jsbsim/pontoon-damage/right-pontoon", 0).setIntValue(0);
setprop("/engines/active-engine/killed", 0);
setprop("/fdm/jsbsim/contact/unit[4]/z-position", 50);
setprop("/fdm/jsbsim/contact/unit[5]/z-position", 50);
# Note: these separate flags exist because PUI's <radio> element
# only accepts booleans.
var p = getprop("fdm/jsbsim/bushkit");
setprop("/sim/model/c172p/bushkit_flag_0",0);
setprop("/sim/model/c172p/bushkit_flag_1",0);
setprop("/sim/model/c172p/bushkit_flag_2",0);
setprop("/sim/model/c172p/bushkit_flag_3",0);
setprop("/sim/model/c172p/bushkit_flag_4",0);
if (p == 0) { setprop("/sim/model/c172p/bushkit_flag_0",1); }
if (p == 1) { setprop("/sim/model/c172p/bushkit_flag_1",1); }
if (p == 2) { setprop("/sim/model/c172p/bushkit_flag_2",1); }
if (p == 3) { setprop("/sim/model/c172p/bushkit_flag_3",1); }
if (p == 4) { setprop("/sim/model/c172p/bushkit_flag_4",1); }
}
############################################
# Global loop function
# If you need to run nasal as loop, add it in this function
############################################
var global_system_loop = func{
# terrain_survol_loop was incorporated during damage system creation.
# "Unimplemented" crash detection system requires this self terrain modelling (I think)
# If we end up not using it, then we can remove it.
#terrain_survol_loop();
c172p.physics_loop();
c172p.weather_effects_loop();
}
##########################################
# SetListerner must be at the end of this file
##########################################
#setlistener("/sim/signals/fdm-initialized", func{
# setprop("/environment/terrain-type",1);
# setprop("/environment/terrain-load-resistance",1e+30);
# setprop("/environment/terrain-friction-factor",1.05);
# setprop("/environment/terrain-bumpiness",0);
# setprop("/environment/terrain-rolling-friction",0.02);
#});
var set_limits = func (node) {
if (node.getValue() == 1) {
var limits = props.globals.getNode("/limits/mass-and-balance-180hp");
}
else {
var limits = props.globals.getNode("/limits/mass-and-balance-160hp");
}
var ac_limits = props.globals.getNode("/limits/mass-and-balance");
# Get the mass limits of the current engine
var ramp_mass = limits.getNode("maximum-ramp-mass-lbs");
var takeoff_mass = limits.getNode("maximum-takeoff-mass-lbs");
var landing_mass = limits.getNode("maximum-landing-mass-lbs");
# Get the actual mass limit nodes of the aircraft
var ac_ramp_mass = ac_limits.getNode("maximum-ramp-mass-lbs");
var ac_takeoff_mass = ac_limits.getNode("maximum-takeoff-mass-lbs");
var ac_landing_mass = ac_limits.getNode("maximum-landing-mass-lbs");
# Set the mass limits of the aircraft
ac_ramp_mass.unalias();
ac_takeoff_mass.unalias();
ac_landing_mass.unalias();
ac_ramp_mass.alias(ramp_mass);
ac_takeoff_mass.alias(takeoff_mass);
ac_landing_mass.alias(landing_mass);
};
setlistener("/controls/engines/active-engine", func (node) {
# Set new mass limits for Fuel and Payload Settings dialog
set_limits(node);
# Emit a sound because the engine has been replaced
click("engine-repair", 6.0);
}, 0, 0);
var nasalInit = setlistener("/sim/signals/fdm-initialized", func{
# Use Nasal to make some properties persistent. <aircraft-data> does
# not work reliably.
aircraft.data.add("/sim/model/c172p/immat-on-panel");
aircraft.data.load();
# Initialize mass limits
set_limits(props.globals.getNode("/controls/engines/active-engine"));
reset_system();
var c172_timer = maketimer(0.25, func{global_system_loop()});
c172_timer.start();
});
##########################################
# Brakes
##########################################
controls.applyBrakes = func (v, which = 0) {
if (which <= 0 and !getprop("/fdm/jsbsim/gear/unit[1]/broken")) {
interpolate("/controls/gear/brake-left", v, controls.fullBrakeTime);
}
if (which >= 0 and !getprop("/fdm/jsbsim/gear/unit[2]/broken")) {
interpolate("/controls/gear/brake-right", v, controls.fullBrakeTime);
}
};
controls.applyParkingBrake = func (v) {
if (!v) {
return;
}
var left_broken = getprop("/fdm/jsbsim/gear/unit[1]/broken");
var right_broken =getprop("/fdm/jsbsim/gear/unit[2]/broken");
var p = "/controls/gear/brake-parking";
var orig_p = getprop(p);
# We assume one non-broken gear is enough to apply the parking brake
if (orig_p or !left_broken or !right_broken) {
setprop(p, var i = !orig_p);
return i;
}
return orig_p;
};
##########################################
# Click Sounds
##########################################
var click = func (name, timeout=0.1) {
var sound_prop = "/sim/model/c172p/sound/click-" ~ name;
# Play the sound
setprop(sound_prop, 1);
# Reset the property after 0.2 seconds so that the sound can be
# played again.
settimer(func {
setprop(sound_prop, 0);
}, timeout);
};
##########################################
# Ground Detection
##########################################
# Do terrain modelling ourselves.
#setprop("sim/fdm/surface/override-level", 1);
var terrain_survol_loop = func {
var lat = getprop("/position/latitude-deg");
var lon = getprop("/position/longitude-deg");
var info = geodinfo(lat, lon);
if (info != nil) {
if (info[1] != nil){
if (info[1].solid !=nil)
setprop("/environment/terrain-type",info[1].solid);
if (info[1].load_resistance !=nil)
setprop("/environment/terrain-load-resistance",info[1].load_resistance);
if (info[1].friction_factor !=nil)
setprop("/environment/terrain-friction-factor",info[1].friction_factor);
if (info[1].bumpiness !=nil)
setprop("/environment/terrain-bumpiness",info[1].bumpiness);
if (info[1].rolling_friction !=nil)
setprop("/environment/terrain-rolling-friction",info[1].rolling_friction);
if (info[1].names !=nil)
setprop("/environment/terrain-names",info[1].names[0]);
}
}else{
setprop("/environment/terrain",1);
setprop("/environment/terrain-load-resistance",1e+30);
setprop("/environment/terrain-friction-factor",1.05);
setprop("/environment/terrain-bumpiness",0);
setprop("/environment/terrain-rolling-friction",0.02);
}
if(!getprop("sim/freeze/replay-state") and !getprop("/environment/terrain-type") and getprop("/position/altitude-agl-ft") < 3.0){
setprop("sim/messages/copilot", "You are on water !");
setprop("sim/freeze/clock", 1);
setprop("sim/freeze/master", 1);
setprop("sim/crashed", 1);
}
}
var reset_system = func {
if (getprop("/fdm/jsbsim/running"))
{
c172p.autostart(0);
setprop("/controls/switches/starter", 1);
var engineRunning = setlistener("/engines/active-engine/running", func{
if (getprop("/engines/active-engine/running"))
{
setprop("/controls/switches/starter", 0);
removelistener(engineRunning);
}
});
}
# These properties are aliased to MP properties in /sim/multiplay/generic/.
# This aliasing seems to work in both ways, because the two properties below
# appear to receive the random values from the MP properties during initialization.
# Therefore, override these random values with the proper values we want.
props.globals.getNode("/fdm/jsbsim/crash", 0).setBoolValue(0);
props.globals.getNode("/fdm/jsbsim/gear/unit[0]/broken", 0).setBoolValue(0);
props.globals.getNode("/fdm/jsbsim/gear/unit[1]/broken", 0).setBoolValue(0);
props.globals.getNode("/fdm/jsbsim/gear/unit[2]/broken", 0).setBoolValue(0);
props.globals.getNode("/fdm/jsbsim/pontoon-damage/left-pontoon", 0).setIntValue(0);
props.globals.getNode("/fdm/jsbsim/pontoon-damage/right-pontoon", 0).setIntValue(0);
setprop("/engines/active-engine/killed", 0);
setprop("/fdm/jsbsim/contact/unit[4]/z-position", 50);
setprop("/fdm/jsbsim/contact/unit[5]/z-position", 50);
# Note: these separate flags exist because PUI's <radio> element
# only accepts booleans.
var p = getprop("fdm/jsbsim/bushkit");
setprop("/sim/model/c172p/bushkit_flag_0",0);
setprop("/sim/model/c172p/bushkit_flag_1",0);
setprop("/sim/model/c172p/bushkit_flag_2",0);
setprop("/sim/model/c172p/bushkit_flag_3",0);
setprop("/sim/model/c172p/bushkit_flag_4",0);
if (p == 0) { setprop("/sim/model/c172p/bushkit_flag_0",1); }
if (p == 1) { setprop("/sim/model/c172p/bushkit_flag_1",1); }
if (p == 2) { setprop("/sim/model/c172p/bushkit_flag_2",1); }
if (p == 3) { setprop("/sim/model/c172p/bushkit_flag_3",1); }
if (p == 4) { setprop("/sim/model/c172p/bushkit_flag_4",1); }
}
############################################
# Global loop function
# If you need to run nasal as loop, add it in this function
############################################
var global_system_loop = func{
# terrain_survol_loop was incorporated during damage system creation.
# "Unimplemented" crash detection system requires this self terrain modelling (I think)
# If we end up not using it, then we can remove it.
#terrain_survol_loop();
c172p.physics_loop();
c172p.weather_effects_loop();
}
##########################################
# SetListerner must be at the end of this file
##########################################
#setlistener("/sim/signals/fdm-initialized", func{
# setprop("/environment/terrain-type",1);
# setprop("/environment/terrain-load-resistance",1e+30);
# setprop("/environment/terrain-friction-factor",1.05);
# setprop("/environment/terrain-bumpiness",0);
# setprop("/environment/terrain-rolling-friction",0.02);
#});
var set_limits = func (node) {
if (node.getValue() == 1) {
var limits = props.globals.getNode("/limits/mass-and-balance-180hp");
}
else {
var limits = props.globals.getNode("/limits/mass-and-balance-160hp");
}
var ac_limits = props.globals.getNode("/limits/mass-and-balance");
# Get the mass limits of the current engine
var ramp_mass = limits.getNode("maximum-ramp-mass-lbs");
var takeoff_mass = limits.getNode("maximum-takeoff-mass-lbs");
var landing_mass = limits.getNode("maximum-landing-mass-lbs");
# Get the actual mass limit nodes of the aircraft
var ac_ramp_mass = ac_limits.getNode("maximum-ramp-mass-lbs");
var ac_takeoff_mass = ac_limits.getNode("maximum-takeoff-mass-lbs");
var ac_landing_mass = ac_limits.getNode("maximum-landing-mass-lbs");
# Set the mass limits of the aircraft
ac_ramp_mass.unalias();
ac_takeoff_mass.unalias();
ac_landing_mass.unalias();
ac_ramp_mass.alias(ramp_mass);
ac_takeoff_mass.alias(takeoff_mass);
ac_landing_mass.alias(landing_mass);
};
setlistener("/controls/engines/active-engine", func (node) {
# Set new mass limits for Fuel and Payload Settings dialog
set_limits(node);
# Emit a sound because the engine has been replaced
click("engine-repair", 6.0);
}, 0, 0);
var update_pax = func {
var state = 0;
state = bits.switch(state, 0, getprop("pax/co-pilot/present"));
state = bits.switch(state, 1, getprop("pax/left-passenger/present"));
state = bits.switch(state, 2, getprop("pax/right-passenger/present"));
setprop("/payload/pax-state", state);
};
setlistener("/pax/co-pilot/present", update_pax, 0, 0);
setlistener("/pax/left-passenger/present", update_pax, 0, 0);
setlistener("/pax/right-passenger/present", update_pax, 0, 0);
update_pax();
var nasalInit = setlistener("/sim/signals/fdm-initialized", func{
# Use Nasal to make some properties persistent. <aircraft-data> does
# not work reliably.
aircraft.data.add("/sim/model/c172p/immat-on-panel");
aircraft.data.load();
# Initialize mass limits
set_limits(props.globals.getNode("/controls/engines/active-engine"));
# Set alt alert of KAP 140 autopilot to 20_000 ft to get rid of annoying beep
setlistener("/autopilot/KAP140/settings/target-alt-ft", func (n) {
if (n.getValue() == 0) {
kap140.altPreselect = 20000;
setprop("/autopilot/KAP140/settings/target-alt-ft", kap140.altPreselect);
}
});
reset_system();
var c172_timer = maketimer(0.25, func{global_system_loop()});
c172_timer.start();
});

View file

@ -27,31 +27,6 @@ var ammeter_ave = 0.0;
var init_electrical = func {
battery = BatteryClass.new();
alternator = AlternatorClass.new();
props.globals.getNode("controls/circuit-breakers/aircond", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/master", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/flaps", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/pitot-heat", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/instr", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/intlt", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/navlt", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/bcnlt", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/landing", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/strobe", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/turn-coordinator", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/radio1", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/radio2", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/radio3", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/radio4", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/radio5", 1).setBoolValue(1);
props.globals.getNode("controls/circuit-breakers/autopilot", 1).setBoolValue(1);
# These two properties are aliased to MP properties in /sim/multiplay/generic/.
# This aliasing seems to work in both ways, because the two properties below
# appear to receive the random values from the MP properties during initialization.
# Therefore, override these random values with the proper values we want.
props.globals.getNode("sim/model/c172p/lighting/beacon-top/state", 0).setBoolValue(0);
props.globals.getNode("sim/model/c172p/lighting/strobes/state", 0).setBoolValue(0);
# Request that the update function be called next frame
settimer(update_electrical, 0);
@ -115,7 +90,7 @@ BatteryClass.apply_load = func (amps, dt) {
var new_charge_percent = std.max(0.0, std.min(old_charge_percent - percent_used, 1.0));
if (new_charge_percent < 0.1 and old_charge_percent >= 0.1)
gui.popupTip("Warning: Low battery! Enable alternator or apply external power to recharge battery.", 10);
gui.popupTip("Warning: Low battery! Enable alternator or apply external power to recharge battery!", 10);
setprop("/systems/electrical/battery-charge-percent", new_charge_percent);
return me.amp_hours * new_charge_percent;
@ -164,7 +139,7 @@ var AlternatorClass = {};
AlternatorClass.new = func {
var obj = { parents : [AlternatorClass],
rpm_source : "/engines/engine[0]/rpm",
rpm_source : "/engines/active-engine/rpm",
rpm_threshold : 800.0,
ideal_volts : 28.0,
ideal_amps : 60.0 };

View file

@ -32,7 +32,7 @@ var init_hobbs_meter = func(index, meter) {
init_hobbs_meter(0, hobbsmeter_engine_160hp);
init_hobbs_meter(1, hobbsmeter_engine_180hp);
setlistener("/sim/time/hobbs/engine[0]", func {
var update_hobbs_meter = func {
# in seconds
var hobbs_160hp = getprop("/sim/time/hobbs/engine[0]") or 0.0;
var hobbs_180hp = getprop("/sim/time/hobbs/engine[1]") or 0.0;
@ -47,7 +47,10 @@ setlistener("/sim/time/hobbs/engine[0]", func {
setprop("/instrumentation/hobbs-meter/digits2", math.mod(int(hobbs / 10), 10));
setprop("/instrumentation/hobbs-meter/digits3", math.mod(int(hobbs / 100), 10));
setprop("/instrumentation/hobbs-meter/digits4", math.mod(int(hobbs / 1000), 10));
}, 1, 0);
};
setlistener("/sim/time/hobbs/engine[0]", update_hobbs_meter, 1, 0);
setlistener("/sim/time/hobbs/engine[1]", update_hobbs_meter, 1, 0);
# ========== primer stuff ======================
@ -96,13 +99,13 @@ var update = func {
# We use the mixture to control the engines, so set the mixture
var usePrimer = getprop("/controls/engines/engine/use-primer") or 0;
var engine_running = getprop("/engines/current-engine/running");
var engine_running = getprop("/engines/active-engine/running");
if (outOfFuel and (engine_running or usePrimer)) {
print("Out of fuel!");
gui.popupTip("Out of fuel!");
}
elsif (usePrimer and getprop("/engines/engine/oil-temperature-degf") <= 75) {
elsif (usePrimer and !engine_running and getprop("/engines/active-engine/oil-temperature-degf") <= 75) {
# Mixture is controlled by start conditions
var primer = getprop("/controls/engines/engine/primer");
if (!getprop("/fdm/jsbsim/fcs/mixture-primer") and getprop("/controls/switches/starter")) {
@ -123,15 +126,16 @@ var update = func {
};
var autostart = func (msg=1) {
if (getprop("/engines/current-engine/running")) {
if (getprop("/engines/active-engine/running")) {
if (msg)
gui.popupTip("Engine already running.", 5);
gui.popupTip("Engine already running", 5);
return;
}
setprop("/controls/switches/magnetos", 3);
setprop("/controls/engines/current-engine/throttle", 0.2);
setprop("/controls/engines/current-engine/mixture", 1.0);
setprop("/controls/flight/elevator-trim", 0.0);
setprop("/controls/switches/master-bat", 1);
setprop("/controls/switches/master-alt", 1);
setprop("/controls/switches/master-avionics", 1);
@ -147,6 +151,7 @@ var autostart = func (msg=1) {
setprop("/instrumentation/altimeter/setting-inhg", getprop("/environment/pressure-sea-level-inhg"));
#c172p.autoPrime();
setprop("/controls/engines/engine[0]/primer-lever", 0);
setprop("/controls/engines/engine/primer", 3);
if (msg)
gui.popupTip("Hold down \"s\" to start the engine", 5);
@ -215,13 +220,15 @@ controls.mixtureAxis = func {
# key 's' calls to this function when it is pressed DOWN even if I overwrite the binding in the -set.xml file!
# fun fact: the key UP event can be overwriten!
controls.startEngine = func(v = 1) {
if (getprop("/engines/current-engine/running"))
if (getprop("/engines/active-engine/running"))
{
setprop("/controls/switches/starter", 0);
return;
}
else
else {
setprop("/controls/switches/magnetos", 3);
setprop("/controls/switches/starter", v);
}
};
setlistener("/sim/signals/fdm-initialized", func {

View file

@ -1,7 +1,2 @@
# strobes ===========================================================
var strobe_switch = props.globals.getNode("/systems/electrical/outputs/strobe", 1);
aircraft.light.new("sim/model/c172p/lighting/strobes", [0.015, 1.985], strobe_switch);
# beacons ===========================================================
var beacon_switch = props.globals.getNode("/systems/electrical/outputs/beacon", 1);
aircraft.light.new("sim/model/c172p/lighting/beacon-top", [0.10, 0.90], beacon_switch);
aircraft.light.new("/sim/model/c172p/lighting/strobes", [0.015, 1.985]);
aircraft.light.new("/sim/model/c172p/lighting/beacon", [0.10, 0.90]);

View file

@ -1,234 +1,234 @@
var start = 1;
var moisture = 0;
var foglevel = 0;
var frostlevel = 0;
#debug
#var tempmatch = 0;
#end debug
var dewpointC = getprop("/environment/dewpoint-degc");
var airtempC = getprop("/environment/temperature-degc");
var cabinheatset = 0; #double flow 0 - 1
var cabinairset = 0; #double flow 0 - 1
var cabindewpointset = -7; #19.4 degF
#debug
#props.Node.new({ "/environment/aircraft-effects/debug-tempmatch-airtempC":0 });
#props.globals.initNode("/environment/aircraft-effects/debug-tempmatch-airtempC", tempmatch, "INT");
#end debug
props.Node.new({ "/environment/aircraft-effects/cabin-heat-set":0 });
props.globals.initNode("/environment/aircraft-effects/cabin-heat-set", cabinheatset, "DOUBLE");
props.Node.new({ "/environment/aircraft-effects/cabin-air-set":0 });
props.globals.initNode("/environment/aircraft-effects/cabin-air-set", cabinairset, "DOUBLE");
props.Node.new({ "/environment/aircraft-effects/cabin-dew-setC":0 });
props.globals.initNode("/environment/aircraft-effects/cabin-dew-setC", cabindewpointset, "DOUBLE");
#added for flight recorder
props.Node.new({ "/environment/aircraft-effects/cabinairtempC":0 });
props.globals.initNode("/environment/aircraft-effects/cabinairtempC", airtempC, "DOUBLE");
props.Node.new({ "/environment/aircraft-effects/surfacetempC":0 });
props.globals.initNode("/environment/aircraft-effects/surfacetempC", airtempC, "DOUBLE");
props.Node.new({ "/environment/aircraft-effects/cabinairdewpointC":0 });
props.globals.initNode("/environment/aircraft-effects/cabinairdewpointC", dewpointC, "DOUBLE");
var weather_effects_loop = func {
var cabinairtempC = getprop("/environment/aircraft-effects/cabinairtempC");
var surfacetempC = getprop("/environment/aircraft-effects/surfacetempC");
var cabinairdewpointC = getprop("/environment/aircraft-effects/cabinairdewpointC");
############################################## rain
var airspeed = getprop("/velocities/airspeed-kt");
# c172p
var airspeed_max = 140;
if (airspeed > airspeed_max) {airspeed = airspeed_max;}
airspeed = math.sqrt(airspeed/airspeed_max);
# c172p
var splash_x = -0.1 - 2.0 * airspeed;
var splash_y = 0.0;
var splash_z = 1.0 - 1.35 * airspeed;
setprop("/environment/aircraft-effects/splash-vector-x", splash_x);
setprop("/environment/aircraft-effects/splash-vector-y", splash_y);
setprop("/environment/aircraft-effects/splash-vector-z", splash_z);
############################################## frost/fog/heat/air
dewpointC = getprop("/environment/dewpoint-degc");
airtempC = getprop("/environment/temperature-degc");
cabinairdewpointC = dewpointC;
cabinairset = getprop("/environment/aircraft-effects/cabin-air-set");
cabinheatset = getprop("/environment/aircraft-effects/cabin-heat-set");
#debug
#tempmatch = getprop("/environment/aircraft-effects/debug-tempmatch-airtempC");
#if (tempmatch) surfacetempC = cabinairtempC = airtempC;
#end debug
#cabinheat only pushes heat into cabin if a cabinair is open.
#cabinair is the flow of air into cabin(it will contian heat if cabinheat is open),
#otherwise it is just outside airtemp
if (cabinheatset > 0)
{
cabinairtempC += .04*(cabinheatset*cabinairset);
if (cabinairtempC > 32)
{
if (!getprop("/fdm/jsbsim/weather"))
gui.popupTip("Cabin temperature exceeding 90F/32C!");
}
#surfacetemp is slowely changed by cabinairtemp
if (surfacetempC < cabinairtempC)
surfacetempC += .03*(cabinheatset*cabinairset);
if (surfacetempC > cabinairtempC)
surfacetempC -= .03*(cabinheatset*cabinairset);
}
else
if (cabinairset > 0)
{
#if no cabinheat then we incrementally adjust cabintemp with outside airtemp
if (cabinairtempC < airtempC)
cabinairtempC += .03*cabinairset;
if (cabinairtempC > airtempC)
cabinairtempC -= .03*cabinairset;
if (surfacetempC < cabinairtempC)
surfacetempC += .02*cabinairset;
if (surfacetempC > cabinairtempC)
surfacetempC -= .02*cabinairset;
}
#regardless of whether or not vents are open we
#incremetally adjust cabintemp with outside airtemp
if (cabinairtempC < airtempC)
cabinairtempC += .01;
if (cabinairtempC > airtempC)
cabinairtempC -= .01;
if (cabinairdewpointC < dewpointC)
cabinairdewpointC += .01;
if (cabinairdewpointC > dewpointC)
cabinairdewpointC -= .01;
if (surfacetempC < cabinairtempC)
surfacetempC += .01;
if (surfacetempC > cabinairtempC)
surfacetempC -= .01;
#if cabinairtemp is less than dewpointtemp at startup we start out
#with fog. If it is also freezing we switch to frost.
#Otherwise we start calculating moisture level in the air
if (cabinairtempC <= cabinairdewpointC)
{
if (start == 1) {
foglevel = 1;
if (cabinairtempC <= 0)
{
frostlevel = 3;
foglevel = 0;
}
start = 0;
}
else
if (surfacetempC <= cabinairdewpointC)
if (moisture < 1) moisture += .01;
}
else
{
if (surfacetempC > cabinairdewpointC)
if (moisture > 0) moisture -= .01;
start = 0;
}
#we can't get frost unless temp is freezing
#if it is not freezing then we get fog instead
if (cabinairtempC <= 0)
{
if (!getprop("/fdm/jsbsim/weather"))
gui.popupTip("Cabin temperature falling below 32F/0C!");
frostlevel = moisture * 3;
if (foglevel > 0) foglevel -= moisture;
if (foglevel < 0) foglevel = 0;
if (frostlevel > 3) frostlevel = 3;
}
else
{
foglevel = moisture;
if (frostlevel > 0) frostlevel -= moisture;
if (frostlevel < 0) frostlevel = 0;
if (foglevel > 1) foglevel = 1;
}
if (!getprop("/fdm/jsbsim/weather"))
{
setprop("/environment/aircraft-effects/frost-level", frostlevel);
setprop("/environment/aircraft-effects/fog-level", foglevel);
#added for flight recorder
if(!getprop("/sim/freeze/replay-state"))
{
setprop("/environment/aircraft-effects/cabinairtempC", cabinairtempC);
setprop("/environment/aircraft-effects/surfacetempC", surfacetempC);
setprop("/environment/aircraft-effects/cabinairdewpointC", cabinairdewpointC);
}
}
else
{
setprop("/environment/aircraft-effects/frost-level", 0);
setprop("/environment/aircraft-effects/fog-level", 0);
#added for flight recorder
if(!getprop("/sim/freeze/replay-state"))
{
setprop("/environment/aircraft-effects/cabinairtempC", getprop("/environment/temperature-degc"));
setprop("/environment/aircraft-effects/surfacetempC", getprop("/environment/temperature-degc"));
setprop("/environment/aircraft-effects/cabinairdewpointC", getprop("/environment/dewpoint-degc"));
}
}
#debug
#if (cabinairtempC > 0)
#{
# print("NO ICE, TOO WARM cabinairtempC > 0");
#} else print("ICE POSSIBLE, CABIN FREEZING cabinairtempC <= 0");
#if (airtempC > dewpointC)
#{
# print("NO OUTSIDE DEW airtempC > dewpointC");
#} else
#if (airtempC <= dewpointC)
#{
# print("OUTSIDE DEW ABLE airtempC <= dewpointC");
# if (cabinairtempC < 0)
# {
# print("ICE ABLE, OUTSIDE DEW cabinairtempC < 0");
# }
#}
#if (cabinairtempC > cabinairdewpointC)
#{
# print("NO INSIDE DEW cabinairtempC > cabinairdewpointC");
#} else
#if (cabinairtempC <= cabinairdewpointC)
#{
# print("INSIDE DEW FORMING cabinairtempC <= cabinairdewpointC");
# if (cabinairtempC <= 0)
# {
# if (surfacetempC <= 0)
# print("ICE BUILDING, CABIN DEW AND SUFACE FREEZING");
# else
# print("ICE ABLE CABIN DEW, SURFACE NOT FREEZING surfacetempC > 0");
# }
#}
#print("moisture="~moisture);
#print("airtempC="~airtempC);
#print("dewpointC="~dewpointC);
#print("cabinheatset="~cabinheatset);
#print("cabinairset="~cabinairset);
#print("surfacetempC="~surfacetempC);
#print("cabinairtempC="~cabinairtempC);
#print("cabinairdewpointC="~cabinairdewpointC);
#print("foglevel="~foglevel);
#print("frostlevel="~frostlevel);
#end debug
}
var start = 1;
var moisture = 0;
var foglevel = 0;
var frostlevel = 0;
#debug
#var tempmatch = 0;
#end debug
var dewpointC = getprop("/environment/dewpoint-degc");
var airtempC = getprop("/environment/temperature-degc");
var cabinheatset = 0; #double flow 0 - 1
var cabinairset = 0; #double flow 0 - 1
var cabindewpointset = -7; #19.4 degF
#debug
#props.Node.new({ "/environment/aircraft-effects/debug-tempmatch-airtempC":0 });
#props.globals.initNode("/environment/aircraft-effects/debug-tempmatch-airtempC", tempmatch, "INT");
#end debug
props.Node.new({ "/environment/aircraft-effects/cabin-heat-set":0 });
props.globals.initNode("/environment/aircraft-effects/cabin-heat-set", cabinheatset, "DOUBLE");
props.Node.new({ "/environment/aircraft-effects/cabin-air-set":0 });
props.globals.initNode("/environment/aircraft-effects/cabin-air-set", cabinairset, "DOUBLE");
props.Node.new({ "/environment/aircraft-effects/cabin-dew-setC":0 });
props.globals.initNode("/environment/aircraft-effects/cabin-dew-setC", cabindewpointset, "DOUBLE");
#added for flight recorder
props.Node.new({ "/environment/aircraft-effects/cabinairtempC":0 });
props.globals.initNode("/environment/aircraft-effects/cabinairtempC", airtempC, "DOUBLE");
props.Node.new({ "/environment/aircraft-effects/surfacetempC":0 });
props.globals.initNode("/environment/aircraft-effects/surfacetempC", airtempC, "DOUBLE");
props.Node.new({ "/environment/aircraft-effects/cabinairdewpointC":0 });
props.globals.initNode("/environment/aircraft-effects/cabinairdewpointC", dewpointC, "DOUBLE");
var weather_effects_loop = func {
var cabinairtempC = getprop("/environment/aircraft-effects/cabinairtempC");
var surfacetempC = getprop("/environment/aircraft-effects/surfacetempC");
var cabinairdewpointC = getprop("/environment/aircraft-effects/cabinairdewpointC");
############################################## rain
var airspeed = getprop("/velocities/airspeed-kt");
# c172p
var airspeed_max = 140;
if (airspeed > airspeed_max) {airspeed = airspeed_max;}
airspeed = math.sqrt(airspeed/airspeed_max);
# c172p
var splash_x = -0.1 - 2.0 * airspeed;
var splash_y = 0.0;
var splash_z = 1.0 - 1.35 * airspeed;
setprop("/environment/aircraft-effects/splash-vector-x", splash_x);
setprop("/environment/aircraft-effects/splash-vector-y", splash_y);
setprop("/environment/aircraft-effects/splash-vector-z", splash_z);
############################################## frost/fog/heat/air
dewpointC = getprop("/environment/dewpoint-degc");
airtempC = getprop("/environment/temperature-degc");
cabinairdewpointC = dewpointC;
cabinairset = getprop("/environment/aircraft-effects/cabin-air-set");
cabinheatset = getprop("/environment/aircraft-effects/cabin-heat-set");
#debug
#tempmatch = getprop("/environment/aircraft-effects/debug-tempmatch-airtempC");
#if (tempmatch) surfacetempC = cabinairtempC = airtempC;
#end debug
#cabinheat only pushes heat into cabin if a cabinair is open.
#cabinair is the flow of air into cabin(it will contian heat if cabinheat is open),
#otherwise it is just outside airtemp
if (cabinheatset > 0)
{
cabinairtempC += .04*(cabinheatset*cabinairset);
if (cabinairtempC > 32)
{
if (!getprop("/fdm/jsbsim/weather"))
gui.popupTip("Cabin temperature exceeding 90F/32C!");
}
#surfacetemp is slowely changed by cabinairtemp
if (surfacetempC < cabinairtempC)
surfacetempC += .03*(cabinheatset*cabinairset);
if (surfacetempC > cabinairtempC)
surfacetempC -= .03*(cabinheatset*cabinairset);
}
else
if (cabinairset > 0)
{
#if no cabinheat then we incrementally adjust cabintemp with outside airtemp
if (cabinairtempC < airtempC)
cabinairtempC += .03*cabinairset;
if (cabinairtempC > airtempC)
cabinairtempC -= .03*cabinairset;
if (surfacetempC < cabinairtempC)
surfacetempC += .02*cabinairset;
if (surfacetempC > cabinairtempC)
surfacetempC -= .02*cabinairset;
}
#regardless of whether or not vents are open we
#incremetally adjust cabintemp with outside airtemp
if (cabinairtempC < airtempC)
cabinairtempC += .01;
if (cabinairtempC > airtempC)
cabinairtempC -= .01;
if (cabinairdewpointC < dewpointC)
cabinairdewpointC += .01;
if (cabinairdewpointC > dewpointC)
cabinairdewpointC -= .01;
if (surfacetempC < cabinairtempC)
surfacetempC += .01;
if (surfacetempC > cabinairtempC)
surfacetempC -= .01;
#if cabinairtemp is less than dewpointtemp at startup we start out
#with fog. If it is also freezing we switch to frost.
#Otherwise we start calculating moisture level in the air
if (cabinairtempC <= cabinairdewpointC)
{
if (start == 1) {
foglevel = 1;
if (cabinairtempC <= 0)
{
frostlevel = 3;
foglevel = 0;
}
start = 0;
}
else
if (surfacetempC <= cabinairdewpointC)
if (moisture < 1) moisture += .01;
}
else
{
if (surfacetempC > cabinairdewpointC)
if (moisture > 0) moisture -= .01;
start = 0;
}
#we can't get frost unless temp is freezing
#if it is not freezing then we get fog instead
if (cabinairtempC <= 0)
{
if (!getprop("/fdm/jsbsim/weather"))
gui.popupTip("Cabin temperature falling below 32F/0C!");
frostlevel = moisture * 3;
if (foglevel > 0) foglevel -= moisture;
if (foglevel < 0) foglevel = 0;
if (frostlevel > 3) frostlevel = 3;
}
else
{
foglevel = moisture;
if (frostlevel > 0) frostlevel -= moisture;
if (frostlevel < 0) frostlevel = 0;
if (foglevel > 1) foglevel = 1;
}
if (!getprop("/fdm/jsbsim/weather"))
{
setprop("/environment/aircraft-effects/frost-level", frostlevel);
setprop("/environment/aircraft-effects/fog-level", foglevel);
#added for flight recorder
if(!getprop("/sim/freeze/replay-state"))
{
setprop("/environment/aircraft-effects/cabinairtempC", cabinairtempC);
setprop("/environment/aircraft-effects/surfacetempC", surfacetempC);
setprop("/environment/aircraft-effects/cabinairdewpointC", cabinairdewpointC);
}
}
else
{
setprop("/environment/aircraft-effects/frost-level", 0);
setprop("/environment/aircraft-effects/fog-level", 0);
#added for flight recorder
if(!getprop("/sim/freeze/replay-state"))
{
setprop("/environment/aircraft-effects/cabinairtempC", getprop("/environment/temperature-degc"));
setprop("/environment/aircraft-effects/surfacetempC", getprop("/environment/temperature-degc"));
setprop("/environment/aircraft-effects/cabinairdewpointC", getprop("/environment/dewpoint-degc"));
}
}
#debug
#if (cabinairtempC > 0)
#{
# print("NO ICE, TOO WARM cabinairtempC > 0");
#} else print("ICE POSSIBLE, CABIN FREEZING cabinairtempC <= 0");
#if (airtempC > dewpointC)
#{
# print("NO OUTSIDE DEW airtempC > dewpointC");
#} else
#if (airtempC <= dewpointC)
#{
# print("OUTSIDE DEW ABLE airtempC <= dewpointC");
# if (cabinairtempC < 0)
# {
# print("ICE ABLE, OUTSIDE DEW cabinairtempC < 0");
# }
#}
#if (cabinairtempC > cabinairdewpointC)
#{
# print("NO INSIDE DEW cabinairtempC > cabinairdewpointC");
#} else
#if (cabinairtempC <= cabinairdewpointC)
#{
# print("INSIDE DEW FORMING cabinairtempC <= cabinairdewpointC");
# if (cabinairtempC <= 0)
# {
# if (surfacetempC <= 0)
# print("ICE BUILDING, CABIN DEW AND SUFACE FREEZING");
# else
# print("ICE ABLE CABIN DEW, SURFACE NOT FREEZING surfacetempC > 0");
# }
#}
#print("moisture="~moisture);
#print("airtempC="~airtempC);
#print("dewpointC="~dewpointC);
#print("cabinheatset="~cabinheatset);
#print("cabinairset="~cabinairset);
#print("surfacetempC="~surfacetempC);
#print("cabinairtempC="~cabinairtempC);
#print("cabinairdewpointC="~cabinairdewpointC);
#print("foglevel="~foglevel);
#print("frostlevel="~frostlevel);
#end debug
}

View file

@ -0,0 +1,305 @@
<?xml version="1.0"?>
<!--
egt-ff.xml
EGT and Fuel Flow Gauge from C172-S
Martin Dressler dr@musicabona.cz
Jan 26 2003
-->
<PropertyList>
<name>C172-S EGT and Fuel Flow Gauge</name>
<w-base>512</w-base>
<h-base>512</h-base>
<params>
<engine-egt-select>/engines/active-engine/egt-norm</engine-egt-select>
<engine-fuel-flow-select>/engines/active-engine/fuel-flow-gph</engine-fuel-flow-select>
</params>
<layers>
<layer>
<name>Backplate</name>
<w>292</w>
<h>456</h>
<texture>
<path>Aircraft/Instruments/Textures/egt1.rgb</path>
<x1>0.0</x1>
<x2>0.570312</x2>
<y1>0.109375</y1>
<y2>1.0</y2>
</texture>
</layer>
<layer>
<name>EGT Needle</name>
<w>148</w>
<h>32</h>
<texture>
<path>Aircraft/Instruments/Textures/misc2.rgb</path>
<x1>0.0</x1>
<x2>0.289062</x2>
<y1>0.554688</y1>
<y2>0.617188</y2>
</texture>
<transformations>
<transformation>
<type>x-shift</type>
<offset>-142</offset>
</transformation>
<transformation>
<condition>
<greater-than-equals>
<property>/systems/electrical/volts</property>
<value>12</value>
</greater-than-equals>
</condition>
<type>rotation</type>
<property alias="../../../../../params/engine-egt-select"/>
<min>0.0</min>
<max>1.0</max>
<scale>100</scale>
<offset>-50</offset>
</transformation>
<transformation>
<condition>
<less-than>
<property>/systems/electrical/volts</property>
<value>12</value>
</less-than>
</condition>
<type>rotation</type>
<offset>60</offset>
</transformation>
<transformation>
<type>x-shift</type>
<offset>78</offset>
</transformation>
</transformations>
</layer>
<layer>
<name>Fuel Flow Needle</name>
<w>148</w>
<h>32</h>
<texture>
<path>Aircraft/Instruments/Textures/misc2.rgb</path>
<x1>0.0</x1>
<x2>0.289062</x2>
<y1>0.554688</y1>
<y2>0.617188</y2>
</texture>
<transformations>
<transformation>
<type>x-shift</type>
<offset>142</offset>
</transformation>
<transformation>
<condition>
<greater-than-equals>
<property>/systems/electrical/volts</property>
<value>12</value>
</greater-than-equals>
</condition>
<type>rotation</type>
<property alias="../../../../../params/engine-fuel-flow-select"/>
<min>0.0</min>
<max>20.0</max>
<scale>1.0</scale>
<interpolation>
<entry><ind> 0</ind><dep>126.8</dep></entry>
<entry><ind> 5</ind><dep>134.8</dep></entry>
<entry><ind> 6</ind><dep>137.4</dep></entry>
<entry><ind> 10</ind><dep>156.4</dep></entry>
<entry><ind> 15</ind><dep>191.8</dep></entry>
<entry><ind> 19</ind><dep>233.0</dep></entry>
<entry><ind> 20</ind><dep>242.7</dep></entry>
</interpolation>
<offset>0</offset>
</transformation>
<transformation>
<condition>
<less-than>
<property>/systems/electrical/volts</property>
<value>12</value>
</less-than>
</condition>
<type>rotation</type>
<offset>120</offset>
</transformation>
<transformation>
<type>x-shift</type>
<offset>78</offset>
</transformation>
</transformations>
</layer>
<layer>
<name>EGT REF Needle</name>
<condition>
<equals>
<property>/sim/instrument-options/omit-knobs</property>
<value/>
</equals>
</condition>
<w>148</w>
<h>32</h>
<texture>
<path>Aircraft/Instruments/Textures/misc2.rgb</path>
<x1>0.289062</x1>
<x2>0.578125</x2>
<y1>0.554688</y1>
<y2>0.617188</y2>
</texture>
<transformations>
<transformation>
<type>x-shift</type>
<offset>-142</offset>
</transformation>
<transformation>
<type>rotation</type>
<property>/engines/engine[0]/egt-bug-norm</property>
<scale>100</scale>
<offset>-50</offset>
</transformation>
<transformation>
<type>x-shift</type>
<offset>78</offset>
</transformation>
</transformations>
</layer>
<layer>
<name>Foreground</name>
<w>512</w>
<h>512</h>
<texture>
<path>Aircraft/Instruments/Textures/smlf.rgb</path>
<x1>0.0</x1>
<x2>1.0</x2>
<y1>0.0</y1>
<y2>1.0</y2>
</texture>
</layer>
<layer>
<name>EGT REF Knob</name>
<w>88</w>
<h>88</h>
<texture>
<path>Aircraft/Instruments/Textures/misc2.rgb</path>
<x1>0.171875</x1>
<x2>0.34375</x2>
<y1>0.617188</y1>
<y2>0.789062</y2>
</texture>
<transformations>
<transformation>
<type>x-shift</type>
<offset>-142</offset>
</transformation>
<transformation>
<type>rotation</type>
<property>/engines/engine[0]/egt-bug-norm</property>
</transformation>
</transformations>
</layer>
<layer>
<name>FUEL FLOW label</name>
<w>52</w>
<h>150</h>
<texture>
<path>Aircraft/Instruments/Textures/misc2.rgb</path>
<x1>0.703125</x1>
<x2>0.804688</x2>
<y1>0.707031</y1>
<y2>1.0</y2>
</texture>
<transformations>
<transformation>
<type>x-shift</type>
<offset>165</offset>
</transformation>
<transformation>
<type>y-shift</type>
<offset>-4</offset>
</transformation>
</transformations>
</layer>
</layers>
<actions>
<action>
<name>fine lower</name>
<button>0</button>
<x>-186</x>
<y>-44</y>
<w>44</w>
<h>88</h>
<binding>
<command>property-adjust</command>
<property>/engines/engine[0]/egt-bug-norm</property>
<step>-0.01</step>
<min>0.0</min>
<max>1.0</max>
<wrap>false</wrap>
</binding>
</action>
<action>
<name>coarse lower</name>
<button>1</button>
<x>-186</x>
<y>-44</y>
<w>44</w>
<h>88</h>
<binding>
<command>property-adjust</command>
<property>/engines/engine[0]/egt-bug-norm</property>
<step>-0.1</step>
<min>0.0</min>
<max>1.0</max>
<wrap>false</wrap>
</binding>
</action>
<action>
<name>fine raiser</name>
<button>0</button>
<x>-142</x>
<y>-44</y>
<w>44</w>
<h>88</h>
<binding>
<command>property-adjust</command>
<property>/engines/engine[0]/egt-bug-norm</property>
<step>0.01</step>
<min>0.0</min>
<max>1.0</max>
<wrap>false</wrap>
</binding>
</action>
<action>
<name>coarse lower</name>
<button>1</button>
<x>-142</x>
<y>-44</y>
<w>44</w>
<h>88</h>
<binding>
<command>property-adjust</command>
<property>/engines/engine[0]/egt-bug-norm</property>
<step>0.1</step>
<min>0.0</min>
<max>1.0</max>
<wrap>false</wrap>
</binding>
</action>
</actions>
</PropertyList>

View file

@ -68,7 +68,7 @@ override those by providing <w>..</w> and <h>..</h> properties with the
<w>165</w>
<h>165</h>
</instrument>
<instrument include="Aircraft/Instruments/egt-ff-c172s.xml">
<instrument include="Instruments/egt-ff-c172s.xml">
<name>Exhaust Gas Temperature Gauge</name>
<x>89</x>
<y>428</y>
@ -76,6 +76,10 @@ override those by providing <w>..</w> and <h>..</h> properties with the
<h>165</h>
</instrument>
<instrument include="Aircraft/Instruments/oil-c172s.xml">
<params>
<engine-oil-temp-select>/engines/active-engine/indicated-oil-temperature-degf</engine-oil-temp-select>
<engine-oil-press-select>/engines/active-engine/indicated-oil-pressure-psi</engine-oil-press-select>
</params>
<name>Oil Gauge</name>
<x>87</x>
<y>255</y>
@ -90,6 +94,10 @@ override those by providing <w>..</w> and <h>..</h> properties with the
<h>165</h>
</instrument>
<instrument include="Aircraft/Instruments/adf-c172s.xml">
<params>
<adf-course-rotation-deg>/instrumentation/adf/rotation-deg</adf-course-rotation-deg>
<adf-needle-deg>/instrumentation/adf/indicated-bearing-deg</adf-needle-deg>
</params>
<name>ADF Gauge</name>
<x>305</x>
<y>117</y>
@ -99,7 +107,10 @@ override those by providing <w>..</w> and <h>..</h> properties with the
<!-- End engine gauges cluster -->
<!-- Engine controls cluster -->
<instrument include="Aircraft/Instruments/rpm-c172s.xml">
<instrument include="Aircraft/Instruments/rpm-c172s-digi-hobbs.xml">
<params>
<rpm-select>/engines/active-engine/rpm</rpm-select>
</params>
<name>RPM Gauge</name>
<x>838</x>
<y>120</y>
@ -140,6 +151,9 @@ override those by providing <w>..</w> and <h>..</h> properties with the
<!-- <instrument include="Aircraft/Instruments/hdg-c172s.xml"> -->
<!-- <name>Directional Gyro</name> -->
<instrument include="Aircraft/Instruments/hsi-bk-hi.xml">
<params>
<heading-deg>/instrumentation/heading-indicator/indicated-heading-deg</heading-deg>
</params>
<name>Bendix King HSI</name>
<x>572</x>
<y>377</y>
@ -147,7 +161,7 @@ override those by providing <w>..</w> and <h>..</h> properties with the
<h>236</h>
</instrument>
<instrument include="Aircraft/Instruments/vsi-c172s.xml">
<name>Vertical Velocity Indicator</name>
<name>Vertical Speed Indicator</name>
<x>837</x>
<y>367</y>
<w>246</w>

View file

@ -5,7 +5,7 @@ A high detailed version of the Cessna 172P aircraft for FlightGear.
Development thread: http://forum.flightgear.org/viewtopic.php?f=4&t=25157
![My image](http://s23.postimg.org/6cuditurf/project.png)
![Cessna 172P](http://s30.postimg.org/gl82bkjc1/fgfs_screen_003.png)
For the repository containing the texture files for the liveries and instruments (including their .xcf files), visit: https://github.com/gilbertohasnofb/c172p-detailed-liveries
@ -13,12 +13,22 @@ For the repository containing the texture files for the liveries and instruments
This aircraft was modified and updated in a joint effort by the following people:
Gilberto Agostinho (gsagostinho): texturing, sounds and bug hunting/reporting
(thevirtualfer): 3D modelling and texturing
(ludomotico)
Wayne Bragg (wlbragg): effects - damage, rain\fog\ice, internal\external shadows, bushkit. Special thanks to Thorsten Renk for all the work involved in giving us the base for these effects.
(onox)
Daniel Dubreuil (Dany93): [FDM] stall and spin + a few improvements, in-flight damages on wings, fuel float chamber.
Tuomas Kuosmanen (tigert): Reference photos of the aircraft and of the OH-CTL livery. Feedback and testing of the Aircraft Systems and operation.
Anders Gidenstam (AndersG): Hydrodynamics for the pontoon/float and amphibious variants.
(wkitty42): bug hunting/reporting
* onox: programming, bug tracking, general organisation, git knowledge
* ludomotico: programming, 3D modeling, bug tracking, general organisation
* Gilberto Agostinho (gsagostinho): texturing, sounds, bug tracking, testing
* thevirtualfer: 3D modeling and texturing
* Wayne Bragg (wlbragg): effects - damage, rain/fog/ice, internal/external shadows, bushkit (Special thanks to Thorsten Renk for all the work involved in giving us the base for these effects)
* Daniel Dubreuil (Dany93): [FDM] stall and spin + a few improvements, in-flight damages on wings, fuel float chamber
* Tuomas Kuosmanen (tigert): Reference photos of the aircraft and of the OH-CTL livery. Feedback and testing of the Aircraft Systems and operation
* Anders Gidenstam (AndersG): Hydrodynamics for the pontoon/float and amphibious variants
* Waldo Kitty (wkitty42): bug hunting/reporting
* dg-505: 3D modeling, exhaust smoke, checklists

View file

@ -1,308 +1,306 @@
<?xml version="1.0"?>
<!-- KAP 140 Autopilot Configuration -->
<!-- Each component is evaluated in the order specified. You can make up -->
<!-- property names to pass the result of one component on to a subsequent -->
<!-- component. -->
<PropertyList>
<filter>
<name>heading bug error computer/normalizer</name>
<debug>false</debug>
<type>gain</type>
<input>
<property>autopilot/settings/heading-bug-deg</property>
<offset>
<property>instrumentation/heading-indicator/indicated-heading-deg</property>
<scale>-1.0</scale>
</offset>
</input>
<output>autopilot/internal/heading-bug-error-deg</output>
<period>
<min>-180</min>
<max>180</max>
</period>
<gain>1.0</gain>
</filter>
<filter>
<name>heading bug error computer/normalizer</name>
<debug>false</debug>
<type>gain</type>
<input>
<property>autopilot/settings/heading-bug-deg</property>
<offset>
<property>instrumentation/heading-indicator/indicated-heading-deg</property>
<scale>-1.0</scale>
</offset>
</input>
<output>autopilot/internal/heading-bug-error-deg</output>
<period>
<min>-180</min>
<max>180</max>
</period>
<gain>1.0</gain>
</filter>
<!-- =============================================================== -->
<!-- Roll Axis Modes -->
<!-- =============================================================== -->
<!-- =============================================================== -->
<!-- Roll Axis Modes -->
<!-- =============================================================== -->
<!-- Nav hold (NAV) Mode -->
<pid-controller>
<name>Nav hold (NAV) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/nav-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/nav/heading-needle-deflection</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-intercept-angle</prop>
</output>
<config>
<Kp>2.0</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-45.0</u_min> <!-- minimum output clamp -->
<u_max>45.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Nav hold (NAV) Mode-->
<!-- Approach hold (APR) Mode -->
<pid-controller>
<name>Approach hold (APR) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/apr-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/nav/heading-needle-deflection</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-intercept-angle</prop>
</output>
<config>
<Kp>2.0</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.001</Td> <!-- derivator time -->
<u_min>-45.0</u_min> <!-- minimum output clamp -->
<u_max>45.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<pid-controller>
<name>Nav hold (NAV) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/nav-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/nav/heading-needle-deflection</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-intercept-angle</prop>
</output>
<config>
<Kp>2.0</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-45.0</u_min> <!-- minimum output clamp -->
<u_max>45.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Backcourse hold (REV) Mode -->
<pid-controller>
<name>Backcourse hold (REV) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/rev-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/nav/heading-needle-deflection</prop>
<scale>-1.0</scale>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-intercept-angle</prop>
</output>
<config>
<Kp>2.0</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-45.0</u_min> <!-- minimum output clamp -->
<u_max>45.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Approach hold (APR) Mode-->
<pid-controller>
<name>Approach hold (APR) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/apr-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/nav/heading-needle-deflection</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-intercept-angle</prop>
</output>
<config>
<Kp>2.0</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.001</Td> <!-- derivator time -->
<u_min>-45.0</u_min> <!-- minimum output clamp -->
<u_max>45.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Heading Select (HDG) Mode -->
<pid-controller>
<name>Heading Select (HDG) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/hdg-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/autopilot/internal/heading-bug-error-deg</prop>
<!-- <prop>/instrumentation/gps/true-bug-error-deg</prop> -->
</input>
<reference>
<prop>/autopilot/KAP140/settings/target-intercept-angle</prop>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-turn-rate</prop>
</output>
<config>
<Kp>-0.05</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-1.0</u_min> <!-- minimum output clamp -->
<u_max>1.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Backcourse hold (REV) Mode-->
<pid-controller>
<name>Backcourse hold (REV) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/rev-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/nav/heading-needle-deflection</prop>
<scale>-1.0</scale>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-intercept-angle</prop>
</output>
<config>
<Kp>2.0</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-45.0</u_min> <!-- minimum output clamp -->
<u_max>45.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Wing leveler (ROL) Mode -->
<pid-controller>
<name>Wing Leveler (ROL) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/roll-axis</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/turn-indicator/indicated-turn-rate</prop>
</input>
<reference>
<prop>/autopilot/KAP140/settings/target-turn-rate</prop>
</reference>
<output>
<prop>/controls/flight/aileron</prop>
</output>
<config>
<Kp>0.15</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-0.25</u_min> <!-- minimum output clamp -->
<u_max>0.25</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Heading Select (HDG) Mode -->
<!-- =============================================================== -->
<!-- Pitch Axis Modes -->
<!-- =============================================================== -->
<pid-controller>
<name>Heading Select (HDG) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/hdg-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/autopilot/internal/heading-bug-error-deg</prop>
<!-- <prop>/instrumentation/gps/true-bug-error-deg</prop> -->
</input>
<reference>
<prop>/autopilot/KAP140/settings/target-intercept-angle</prop>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-turn-rate</prop>
</output>
<config>
<Kp>-0.05</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-1.0</u_min> <!-- minimum output clamp -->
<u_max>1.0</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Altitude Hold (ALT) Mode -->
<pid-controller>
<name>Altitude Hold (ALT) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/alt-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/systems/static[0]/pressure-inhg[0]</prop>
</input>
<reference>
<prop>/autopilot/KAP140/settings/target-alt-pressure</prop>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-pressure-rate</prop>
</output>
<config>
<Kp>0.125</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>12.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-0.007</u_min> <!-- minimum output clamp -->
<u_max>0.007</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Wing leveler (ROL) Mode -->
<!-- Glideslope Hold (GS) Mode -->
<pid-controller>
<name>Glideslope Hold (GS) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/gs-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/nav/gs-needle-deflection-norm</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-pressure-rate</prop>
</output>
<config>
<Kp>0.025</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-0.001</u_min> <!-- minimum output clamp -->
<u_max>0.017</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<pid-controller>
<name>Wing Leveler (ROL) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/roll-axis</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/turn-indicator/indicated-turn-rate</prop>
</input>
<reference>
<prop>/autopilot/KAP140/settings/target-turn-rate</prop>
</reference>
<output>
<prop>/controls/flight/aileron</prop>
</output>
<config>
<Kp>0.15</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-0.25</u_min> <!-- minimum output clamp -->
<u_max>0.25</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<filter>
<name>static port pressure rate computer</name>
<debug>false</debug>
<type>derivative</type>
<input>systems/static[0]/pressure-inhg</input>
<output>autopilot/internal/pressure-rate</output>
<filter-time>1.0</filter-time>
</filter>
<!-- =============================================================== -->
<!-- Pitch Axis Modes -->
<!-- =============================================================== -->
<filter>
<name>pressure-rate-filter</name>
<debug>false</debug>
<type>double-exponential</type>
<input>/autopilot/internal/pressure-rate</input>
<output>/autopilot/internal/filtered-pressure-rate</output>
<filter-time>0.1</filter-time>
</filter>
<!-- Altitude Hold (ALT) Mode -->
<pid-controller>
<name>Altitude Hold (ALT) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/alt-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/systems/static[0]/pressure-inhg[0]</prop>
</input>
<reference>
<prop>/autopilot/KAP140/settings/target-alt-pressure</prop>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-pressure-rate</prop>
</output>
<config>
<Kp>0.125</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>12.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-0.007</u_min> <!-- minimum output clamp -->
<u_max>0.007</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<filter>
<name>conversion to fpm</name>
<debug>false</debug>
<type>gain</type>
<input>/autopilot/KAP140/settings/target-pressure-rate</input>
<output>/autopilot/KAP140/settings/target-pressure-rate-fpm</output>
<gain>-58000</gain>
</filter>
<!-- Glideslope Hold (GS) Mode -->
<pid-controller>
<name>Glideslope Hold (GS) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/gs-hold</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/instrumentation/nav/gs-needle-deflection-norm</prop>
</input>
<reference>
<value>0.0</value>
</reference>
<output>
<prop>/autopilot/KAP140/settings/target-pressure-rate</prop>
</output>
<config>
<Kp>0.025</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>15.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-0.001</u_min> <!-- minimum output clamp -->
<u_max>0.017</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<filter>
<name>static port pressure rate computer</name>
<debug>false</debug>
<type>derivative</type>
<input>systems/static[0]/pressure-inhg</input>
<output>autopilot/internal/pressure-rate</output>
<filter-time>1.0</filter-time>
</filter>
<filter>
<name>pressure-rate-filter</name>
<debug>false</debug>
<type>double-exponential</type>
<input>/autopilot/internal/pressure-rate</input>
<output>/autopilot/internal/filtered-pressure-rate</output>
<filter-time>0.1</filter-time>
</filter>
<filter>
<name>conversion to fpm</name>
<debug>false</debug>
<type>gain</type>
<input>/autopilot/KAP140/settings/target-pressure-rate</input>
<output>/autopilot/KAP140/settings/target-pressure-rate-fpm</output>
<gain>-58000</gain>
</filter>
<!-- Vertical Speed (VS) Mode -->
<pid-controller>
<name>Vertical Speed (VS) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/pitch-axis</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/autopilot/internal/filtered-pressure-rate</prop>
</input>
<reference>
<prop>/autopilot/KAP140/settings/target-pressure-rate</prop>
</reference>
<output>
<prop>/controls/flight/elevator</prop>
</output>
<config>
<Kp>5.0</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>4.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-0.5</u_min> <!-- minimum output clamp -->
<u_max>0.5</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
<!-- Vertical Speed (VS) Mode -->
<pid-controller>
<name>Vertical Speed (VS) Mode</name>
<debug>false</debug>
<enable>
<prop>/autopilot/KAP140/locks/pitch-axis</prop>
<value type="bool">true</value>
</enable>
<input>
<prop>/autopilot/internal/filtered-pressure-rate</prop>
</input>
<reference>
<prop>/autopilot/KAP140/settings/target-pressure-rate</prop>
</reference>
<output>
<prop>/controls/flight/elevator</prop>
</output>
<config>
<Kp>5.0</Kp> <!-- proportional gain -->
<beta>1.0</beta> <!-- input value weighing factor -->
<alpha>0.1</alpha> <!-- low pass filter weighing factor -->
<gamma>0.0</gamma> <!-- input value weighing factor for -->
<!-- unfiltered derivative error -->
<Ti>4.0</Ti> <!-- integrator time -->
<Td>0.0</Td> <!-- derivator time -->
<u_min>-0.5</u_min> <!-- minimum output clamp -->
<u_max>0.5</u_max> <!-- maximum output clamp -->
</config>
</pid-controller>
</PropertyList>

View file

@ -1,75 +1,76 @@
<?xml version = '1.0' encoding = 'UTF-8' ?>
<?xml version="1.0" encoding="UTF-8"?>
<PropertyList>
<filter>
<name>CDI0 lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>2.0</filter-time>
<input>instrumentation/nav[0]/heading-needle-deflection</input>
<output>instrumentation/nav[0]/filtered-cdiNAV0-deflection</output>
</filter>
<filter>
<name>CDI0 lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>2.0</filter-time>
<input>instrumentation/nav[0]/heading-needle-deflection</input>
<output>instrumentation/nav[0]/filtered-cdiNAV0-deflection</output>
</filter>
<filter>
<name>CDI1 lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>2.0</filter-time>
<input>instrumentation/nav[1]/heading-needle-deflection</input>
<output>instrumentation/nav[1]/filtered-cdiNAV1-deflection</output>
</filter>
<filter>
<name>CDI1 lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>2.0</filter-time>
<input>instrumentation/nav[1]/heading-needle-deflection</input>
<output>instrumentation/nav[1]/filtered-cdiNAV1-deflection</output>
</filter>
<filter>
<name>GS0 lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>2.0</filter-time>
<input>instrumentation/nav[0]/gs-needle-deflection-norm</input>
<output>instrumentation/nav[0]/filtered-gsNAV0-deflection</output>
</filter>
<filter>
<name>GS0 lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>2.0</filter-time>
<input>instrumentation/nav[0]/gs-needle-deflection-norm</input>
<output>instrumentation/nav[0]/filtered-gsNAV0-deflection</output>
</filter>
<filter>
<name>GS1 lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>2.0</filter-time>
<input>instrumentation/nav[1]/gs-needle-deflection-norm</input>
<output>instrumentation/nav[1]/filtered-gsNAV1-deflection</output>
</filter>
<filter>
<name>GS1 lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>2.0</filter-time>
<input>instrumentation/nav[1]/gs-needle-deflection-norm</input>
<output>instrumentation/nav[1]/filtered-gsNAV1-deflection</output>
</filter>
<filter>
<name>EGT 160 HP lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>4.0</filter-time>
<input>
<property>engines/engine[0]/egt-degf</property>
<!-- 1200 * scale + offset = 0.0
<filter>
<name>EGT 160 HP lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>4.0</filter-time>
<input>
<property>engines/engine[0]/egt-degf</property>
<!-- 1200 * scale + offset = 0.0
1700 * scale + offset = 1.0 -->
<scale>0.002</scale>
<offset>-2.4</offset>
</input>
<output>engines/engine[0]/egt-norm</output>
<min>0.0</min>
<max>1.0</max>
</filter>
<scale>0.002</scale>
<offset>-2.4</offset>
</input>
<output>engines/engine[0]/egt-norm</output>
<min>0.0</min>
<max>1.0</max>
</filter>
<filter>
<name>EGT 180 HP lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>4.0</filter-time>
<input>
<property>engines/engine[1]/egt-degf</property>
<!-- 1200 * scale + offset = 0.0
<filter>
<name>EGT 180 HP lowpass</name>
<debug>false</debug>
<type>exponential</type>
<filter-time>4.0</filter-time>
<input>
<property>engines/engine[1]/egt-degf</property>
<!-- 1200 * scale + offset = 0.0
1700 * scale + offset = 1.0 -->
<scale>0.002</scale>
<offset>-2.4</offset>
</input>
<output>engines/engine[1]/egt-norm</output>
<min>0.0</min>
<max>1.0</max>
</filter>
<scale>0.002</scale>
<offset>-2.4</offset>
</input>
<output>engines/engine[1]/egt-norm</output>
<min>0.0</min>
<max>1.0</max>
</filter>
<filter>
<name>Tank 0 Indicated Level</name>
@ -155,5 +156,23 @@
</output>
</filter>
</PropertyList>
<filter>
<name>Engine Total Hobbs Hours</name>
<type>gain</type>
<input>
<expression>
<div>
<sum>
<property>/sim/time/hobbs/engine[0]</property>
<property>/sim/time/hobbs/engine[1]</property>
</sum>
<value>3600.0</value>
</div>
</expression>
</input>
<output>
<property>/instrumentation/clock/hobbs-meter-hours</property>
</output>
</filter>
</PropertyList>

View file

@ -123,4 +123,61 @@
</output>
</filter>
<logic>
<name>Lighting Beacon On/Off</name>
<input>
<and>
<less-than>
<property>/systems/electrical/outputs/beacon</property>
<value>31.5</value>
</less-than>
<greater-than>
<property>/systems/electrical/outputs/beacon</property>
<value>20.0</value>
</greater-than>
</and>
</input>
<output>
<property>/sim/model/c172p/lighting/beacon/enabled</property>
</output>
</logic>
<logic>
<name>Lighting Strobe On/Off</name>
<input>
<and>
<less-than>
<property>/systems/electrical/outputs/strobe</property>
<value>31.5</value>
</less-than>
<greater-than>
<property>/systems/electrical/outputs/strobe</property>
<value>20.0</value>
</greater-than>
</and>
</input>
<output>
<property>/sim/model/c172p/lighting/strobes/enabled</property>
</output>
</logic>
<logic>
<name>Lighting Navigation On/Off</name>
<input>
<and>
<less-than>
<property>/systems/electrical/outputs/nav-lights</property>
<value>31.5</value>
</less-than>
<greater-than>
<property>/systems/electrical/outputs/nav-lights</property>
<value>20.0</value>
</greater-than>
</and>
</input>
<output>
<property>/sim/model/c172p/lighting/nav-lights</property>
</output>
</logic>
</PropertyList>

View file

@ -1,302 +1,300 @@
<?xml version="1.0"?>
<!--
***********************************************************************************
c172p-detailed, May 2015
Extra weight and drag due to bush wheels, floats and 180 hp engine
***********************************************************************************
-->
<system name="bushkits">
<channel name="extra-weight">
<switch name="extra-weight-left-26-in">
<default value="0"/>
<test logic="AND" value="10">
bushkit EQ 1
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[5]</output>
</switch>
<switch name="extra-weight-right-26-in">
<default value="0"/>
<test logic="AND" value="10">
bushkit EQ 1
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[6]</output>
</switch>
<switch name="extra-weight-left-36-in">
<default value="0"/>
<test logic="AND" value="15">
bushkit EQ 2
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[7]</output>
</switch>
<switch name="extra-weight-right-36-in">
<default value="0"/>
<test logic="AND" value="15">
bushkit EQ 2
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[8]</output>
</switch>
<switch name="extra-weight-180hp">
<default value="0"/>
<test logic="AND" value="142">
/controls/engines/active-engine EQ 1
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[13]</output>
</switch>
<fcs_function name="extra-weight-left-float">
<function>
<product>
<eq>
<property>bushkit</property>
<value>3</value>
</eq>
<sum>
<value>66.0</value>
<property>left-pontoon/leaked-water-lbs</property>
</sum>
</product>
</function>
<output>inertia/pointmass-weight-lbs[9]</output>
</fcs_function>
<fcs_function name="extra-weight-right-float">
<function>
<product>
<eq>
<property>bushkit</property>
<value>3</value>
</eq>
<sum>
<value>66.0</value>
<property>right-pontoon/leaked-water-lbs</property>
</sum>
</product>
</function>
<output>inertia/pointmass-weight-lbs[10]</output>
</fcs_function>
<fcs_function name="extra-weight-left-amphibious">
<function>
<product>
<eq>
<property>bushkit</property>
<value>4</value>
</eq>
<sum>
<value>138.0</value>
<property>left-pontoon/leaked-water-lbs</property>
</sum>
</product>
</function>
<output>inertia/pointmass-weight-lbs[11]</output>
</fcs_function>
<fcs_function name="extra-weight-right-amphibious">
<function>
<product>
<eq>
<property>bushkit</property>
<value>4</value>
</eq>
<sum>
<value>138.0</value>
<property>right-pontoon/leaked-water-lbs</property>
</sum>
</product>
</function>
<output>inertia/pointmass-weight-lbs[12]</output>
</fcs_function>
</channel>
<channel name="extra-drag">
<switch name="drag-26-in">
<default value="1"/>
<test logic="AND" value="1.05">
bushkit EQ 1
</test>
<output>gear/drag-coef[1]</output>
</switch>
<switch name="drag-36-in">
<default value="1"/>
<test logic="AND" value="1.07">
bushkit EQ 2
</test>
<output>gear/drag-coef[2]</output>
</switch>
<switch name="drag-Floats">
<default value="1"/>
<test logic="AND" value="1.20">
bushkit EQ 3
</test>
<output>gear/drag-coef[3]</output>
</switch>
<switch name="drag-Amphibious">
<default value="1"/>
<test logic="AND" value="1.22">
bushkit EQ 4
</test>
<output>gear/drag-coef[4]</output>
</switch>
</channel>
<channel name="JSBSim hydrodynamics integration">
<fcs_function name="tmp/floats-enabled-norm">
<function>
<product>
<value>1.0</value>
<le>
<value>3.0</value>
<property>bushkit</property>
</le>
<le>
<property>bushkit</property>
<value>4.0</value>
</le>
<not>
<and>
<property>contact/unit[13]/solid</property>
<property>contact/unit[14]/solid</property>
<property>contact/unit[15]/solid</property>
<property>contact/unit[16]/solid</property>
<property>contact/unit[17]/solid</property>
<property>contact/unit[18]/solid</property>
</and>
</not>
</product>
</function>
<output>floats-enabled-norm</output>
</fcs_function>
<!-- FIXME: The delayed activation isn't pretty but, apparently,
the solid property isn't reliable at the begining. -->
<switch name="left-pontoon/contact-z-pos-in[0]">
<default value="38.5"/>
<test logic="AND" value="-50.0">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[13]/solid NE 0
</test>
<output>contact/unit[13]/z-position</output>
</switch>
<switch name="left-pontoon/contact-z-pos-in[1]">
<default value="38.5"/>
<test logic="AND" value="-44.2">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[15]/solid NE 0
</test>
<output>contact/unit[15]/z-position</output>
</switch>
<switch name="left-pontoon/contact-z-pos-in[2]">
<default value="38.5"/>
<test logic="AND" value="-24.5">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[17]/solid NE 0
</test>
<output>contact/unit[17]/z-position</output>
</switch>
<switch name="right-pontoon/contact-z-pos-in[0]">
<default value="38.5"/>
<test logic="AND" value="-50.0">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[14]/solid NE 0
</test>
<output>contact/unit[14]/z-position</output>
</switch>
<switch name="right-pontoon/contact-z-pos-in[1]">
<default value="38.5"/>
<test logic="AND" value="-44.2">
bushkit GE 3
bushkit LE 4
contact/unit[16]/solid NE 0
</test>
<output>contact/unit[16]/z-position</output>
</switch>
<switch name="right-pontoon/contact-z-pos-in[2]">
<default value="38.5"/>
<test logic="AND" value="-24.5">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[18]/solid NE 0
</test>
<output>contact/unit[18]/z-position</output>
</switch>
<fcs_function name="left-pontoon/leakage-lbs_sec">
<function>
<product>
<property>hydro/active-norm</property>
<switch>
<property>pontoon-damage/left-pontoon</property>
<value>0.0</value>
<value>250.0</value>
<value>5.0</value>
</switch>
</product>
</function>
</fcs_function>
<!-- FIXME: How to reset this to 0 on repair? -->
<pid name="left-pontoon/leaked-water-lbs">
<input>left-pontoon/leakage-lbs_sec</input>
<kp>0.0</kp>
<ki>1.0</ki>
<kd>0.0</kd>
<clipto>
<min>0.0</min>
<max>2500.0</max> <!-- FIXME: Too much? Or too little? -->
</clipto>
</pid>
<fcs_function name="right-pontoon/leakage-lbs_sec">
<function>
<product>
<property>hydro/active-norm</property>
<switch>
<property>pontoon-damage/right-pontoon</property>
<value>0.0</value>
<value>250.0</value>
<value>5.0</value>
</switch>
</product>
</function>
</fcs_function>
<!-- FIXME: How to reset this to 0 on repair? -->
<pid name="right-pontoon/leaked-water-lbs">
<input>right-pontoon/leakage-lbs_sec</input>
<kp>0.0</kp>
<ki>1.0</ki>
<kd>0.0</kd>
<clipto>
<min>0.0</min>
<max>2500.0</max> <!-- FIXME: Too much? Or too little? -->
</clipto>
</pid>
</channel>
</system>
<?xml version="1.0"?>
<!--
***********************************************************************************
c172p-detailed, May 2015
Extra weight and drag due to bush wheels, floats and 180 hp engine
***********************************************************************************
-->
<system name="bushkits">
<channel name="extra-weight">
<switch name="extra-weight-left-26-in">
<default value="0"/>
<test logic="AND" value="10">
bushkit EQ 1
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[5]</output>
</switch>
<switch name="extra-weight-right-26-in">
<default value="0"/>
<test logic="AND" value="10">
bushkit EQ 1
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[6]</output>
</switch>
<switch name="extra-weight-left-36-in">
<default value="0"/>
<test logic="AND" value="15">
bushkit EQ 2
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[7]</output>
</switch>
<switch name="extra-weight-right-36-in">
<default value="0"/>
<test logic="AND" value="15">
bushkit EQ 2
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[8]</output>
</switch>
<switch name="extra-weight-180hp">
<default value="0"/>
<test logic="AND" value="142">
/controls/engines/active-engine EQ 1
</test>
<output>/fdm/jsbsim/inertia/pointmass-weight-lbs[13]</output>
</switch>
<fcs_function name="extra-weight-left-float">
<function>
<product>
<eq>
<property>bushkit</property>
<value>3</value>
</eq>
<sum>
<value>66.0</value>
<property>left-pontoon/leaked-water-lbs</property>
</sum>
</product>
</function>
<output>inertia/pointmass-weight-lbs[9]</output>
</fcs_function>
<fcs_function name="extra-weight-right-float">
<function>
<product>
<eq>
<property>bushkit</property>
<value>3</value>
</eq>
<sum>
<value>66.0</value>
<property>right-pontoon/leaked-water-lbs</property>
</sum>
</product>
</function>
<output>inertia/pointmass-weight-lbs[10]</output>
</fcs_function>
<fcs_function name="extra-weight-left-amphibious">
<function>
<product>
<eq>
<property>bushkit</property>
<value>4</value>
</eq>
<sum>
<value>138.0</value>
<property>left-pontoon/leaked-water-lbs</property>
</sum>
</product>
</function>
<output>inertia/pointmass-weight-lbs[11]</output>
</fcs_function>
<fcs_function name="extra-weight-right-amphibious">
<function>
<product>
<eq>
<property>bushkit</property>
<value>4</value>
</eq>
<sum>
<value>138.0</value>
<property>right-pontoon/leaked-water-lbs</property>
</sum>
</product>
</function>
<output>inertia/pointmass-weight-lbs[12]</output>
</fcs_function>
</channel>
<channel name="extra-drag">
<switch name="drag-26-in">
<default value="1"/>
<test logic="AND" value="1.05">
bushkit EQ 1
</test>
<output>gear/drag-coef[1]</output>
</switch>
<switch name="drag-36-in">
<default value="1"/>
<test logic="AND" value="1.07">
bushkit EQ 2
</test>
<output>gear/drag-coef[2]</output>
</switch>
<switch name="drag-Floats">
<default value="1"/>
<test logic="AND" value="1.20">
bushkit EQ 3
</test>
<output>gear/drag-coef[3]</output>
</switch>
<switch name="drag-Amphibious">
<default value="1"/>
<test logic="AND" value="1.22">
bushkit EQ 4
</test>
<output>gear/drag-coef[4]</output>
</switch>
</channel>
<channel name="JSBSim hydrodynamics integration">
<fcs_function name="tmp/floats-enabled-norm">
<function>
<product>
<value>1.0</value>
<le>
<value>3.0</value>
<property>bushkit</property>
</le>
<le>
<property>bushkit</property>
<value>4.0</value>
</le>
<not>
<and>
<property>contact/unit[13]/solid</property>
<property>contact/unit[14]/solid</property>
<property>contact/unit[15]/solid</property>
<property>contact/unit[16]/solid</property>
<property>contact/unit[17]/solid</property>
<property>contact/unit[18]/solid</property>
</and>
</not>
</product>
</function>
<output>floats-enabled-norm</output>
</fcs_function>
<!-- FIXME: The delayed activation isn't pretty but, apparently,
the solid property isn't reliable at the begining. -->
<switch name="left-pontoon/contact-z-pos-in[0]">
<default value="38.5"/>
<test logic="AND" value="-50.0">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[13]/solid NE 0
</test>
<output>contact/unit[13]/z-position</output>
</switch>
<switch name="left-pontoon/contact-z-pos-in[1]">
<default value="38.5"/>
<test logic="AND" value="-44.2">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[15]/solid NE 0
</test>
<output>contact/unit[15]/z-position</output>
</switch>
<switch name="left-pontoon/contact-z-pos-in[2]">
<default value="38.5"/>
<test logic="AND" value="-24.5">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[17]/solid NE 0
</test>
<output>contact/unit[17]/z-position</output>
</switch>
<switch name="right-pontoon/contact-z-pos-in[0]">
<default value="38.5"/>
<test logic="AND" value="-50.0">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[14]/solid NE 0
</test>
<output>contact/unit[14]/z-position</output>
</switch>
<switch name="right-pontoon/contact-z-pos-in[1]">
<default value="38.5"/>
<test logic="AND" value="-44.2">
bushkit GE 3
bushkit LE 4
contact/unit[16]/solid NE 0
</test>
<output>contact/unit[16]/z-position</output>
</switch>
<switch name="right-pontoon/contact-z-pos-in[2]">
<default value="38.5"/>
<test logic="AND" value="-24.5">
simulation/sim-time-sec GT 0.25
bushkit GE 3
bushkit LE 4
contact/unit[18]/solid NE 0
</test>
<output>contact/unit[18]/z-position</output>
</switch>
<fcs_function name="left-pontoon/leakage-lbs_sec">
<function>
<product>
<property>hydro/active-norm</property>
<switch>
<property>pontoon-damage/left-pontoon</property>
<value>0.0</value>
<value>250.0</value>
<value>5.0</value>
</switch>
</product>
</function>
</fcs_function>
<!-- FIXME: How to reset this to 0 on repair? -->
<pid name="left-pontoon/leaked-water-lbs">
<input>left-pontoon/leakage-lbs_sec</input>
<kp>0.0</kp>
<ki>1.0</ki>
<kd>0.0</kd>
<clipto>
<min>0.0</min>
<max>2500.0</max> <!-- FIXME: Too much? Or too little? -->
</clipto>
</pid>
<fcs_function name="right-pontoon/leakage-lbs_sec">
<function>
<product>
<property>hydro/active-norm</property>
<switch>
<property>pontoon-damage/right-pontoon</property>
<value>0.0</value>
<value>250.0</value>
<value>5.0</value>
</switch>
</product>
</function>
</fcs_function>
<!-- FIXME: How to reset this to 0 on repair? -->
<pid name="right-pontoon/leaked-water-lbs">
<input>right-pontoon/leakage-lbs_sec</input>
<kp>0.0</kp>
<ki>1.0</ki>
<kd>0.0</kd>
<clipto>
<min>0.0</min>
<max>2500.0</max> <!-- FIXME: Too much? Or too little? -->
</clipto>
</pid>
</channel>
</system>

View file

@ -16,6 +16,7 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<system name="c172p damage">
<channel name="gear-forces">

View file

@ -1,4 +1,5 @@
<?xml version="1.0"?>
<!--
c172p damage effects for JSBSim.
@ -18,129 +19,130 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-->
<system name="c172p ground effects">
<channel name="groundeffects">
<channel name="groundeffects">
<fcs_function name="ground/tail-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[3]/WOW</property>
<property>/velocities/groundspeed-kt</property>
</product>
</function>
</fcs_function>
<fcs_function name="ground/left-wing-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[4]/WOW</property>
<property>/velocities/groundspeed-kt</property>
<eq>
<property>/fdm/jsbsim/wing-damage/left-wing</property>
<value>0.0</value>
</eq>
</product>
</function>
</fcs_function>
<fcs_function name="ground/right-wing-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[5]/WOW</property>
<property>/velocities/groundspeed-kt</property>
<eq>
<property>/fdm/jsbsim/wing-damage/right-wing</property>
<value>0.0</value>
</eq>
</product>
</function>
</fcs_function>
<fcs_function name="ground/nose-gear-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[6]/WOW</property>
<property>/velocities/groundspeed-kt</property>
</product>
</function>
</fcs_function>
<fcs_function name="ground/left-gear-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[7]/WOW</property>
<property>/velocities/groundspeed-kt</property>
</product>
</function>
</fcs_function>
<fcs_function name="ground/right-gear-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[8]/WOW</property>
<property>/velocities/groundspeed-kt</property>
</product>
</function>
</fcs_function>
<fcs_function name="ground/nose-tyre-smoke-ground-effect-speed-kt">
<function>
<or>
<property>/gear/gear[0]/tyre-smoke</property>
<product>
<property>/gear/gear[0]/wow</property>
<gt>
<fcs_function name="ground/tail-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[3]/WOW</property>
<property>/velocities/groundspeed-kt</property>
<value>20.0</value>
</gt>
<gt>
<property>/fdm/jsbsim/ground/rolling_friction-factor</property>
<value>1</value>
</gt>
</product>
</or>
</function>
</fcs_function>
</product>
</function>
</fcs_function>
<fcs_function name="ground/left-tyre-smoke-ground-effect-speed-kt">
<function>
<or>
<property>/gear/gear[1]/tyre-smoke</property>
<product>
<property>/gear/gear[1]/wow</property>
<gt>
<fcs_function name="ground/left-wing-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[4]/WOW</property>
<property>/velocities/groundspeed-kt</property>
<value>20.0</value>
</gt>
<gt>
<property>/fdm/jsbsim/ground/rolling_friction-factor</property>
<value>1</value>
</gt>
</product>
</or>
</function>
</fcs_function>
<eq>
<property>/fdm/jsbsim/wing-damage/left-wing</property>
<value>0.0</value>
</eq>
</product>
</function>
</fcs_function>
<fcs_function name="ground/right-tyre-smoke-ground-effect-speed-kt">
<function>
<or>
<property>/gear/gear[2]/tyre-smoke</property>
<product>
<property>/gear/gear[2]/wow</property>
<gt>
<fcs_function name="ground/right-wing-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[5]/WOW</property>
<property>/velocities/groundspeed-kt</property>
<value>20.0</value>
</gt>
<gt>
<property>/fdm/jsbsim/ground/rolling_friction-factor</property>
<value>1</value>
</gt>
</product>
</or>
</function>
</fcs_function>
<eq>
<property>/fdm/jsbsim/wing-damage/right-wing</property>
<value>0.0</value>
</eq>
</product>
</function>
</fcs_function>
</channel>
<fcs_function name="ground/nose-gear-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[6]/WOW</property>
<property>/velocities/groundspeed-kt</property>
</product>
</function>
</fcs_function>
<fcs_function name="ground/left-gear-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[7]/WOW</property>
<property>/velocities/groundspeed-kt</property>
</product>
</function>
</fcs_function>
<fcs_function name="ground/right-gear-ground-effect-speed-kt">
<function>
<product>
<property>/fdm/jsbsim/contact/unit[8]/WOW</property>
<property>/velocities/groundspeed-kt</property>
</product>
</function>
</fcs_function>
<fcs_function name="ground/nose-tyre-smoke-ground-effect-speed-kt">
<function>
<or>
<property>/gear/gear[0]/tyre-smoke</property>
<product>
<property>/gear/gear[0]/wow</property>
<gt>
<property>/velocities/groundspeed-kt</property>
<value>20.0</value>
</gt>
<gt>
<property>/fdm/jsbsim/ground/rolling_friction-factor</property>
<value>1</value>
</gt>
</product>
</or>
</function>
</fcs_function>
<fcs_function name="ground/left-tyre-smoke-ground-effect-speed-kt">
<function>
<or>
<property>/gear/gear[1]/tyre-smoke</property>
<product>
<property>/gear/gear[1]/wow</property>
<gt>
<property>/velocities/groundspeed-kt</property>
<value>20.0</value>
</gt>
<gt>
<property>/fdm/jsbsim/ground/rolling_friction-factor</property>
<value>1</value>
</gt>
</product>
</or>
</function>
</fcs_function>
<fcs_function name="ground/right-tyre-smoke-ground-effect-speed-kt">
<function>
<or>
<property>/gear/gear[2]/tyre-smoke</property>
<product>
<property>/gear/gear[2]/wow</property>
<gt>
<property>/velocities/groundspeed-kt</property>
<value>20.0</value>
</gt>
<gt>
<property>/fdm/jsbsim/ground/rolling_friction-factor</property>
<value>1</value>
</gt>
</product>
</or>
</function>
</fcs_function>
</channel>
</system>

File diff suppressed because it is too large Load diff

View file

@ -155,6 +155,26 @@
</output>
</filter>
<filter>
<name>Engine Fuel Flow</name>
<type>gain</type>
<input>
<condition>
<equals>
<property>/controls/engines/active-engine</property>
<value>1</value>
</equals>
</condition>
<property>/engines/engine[1]/fuel-flow-gph</property>
</input>
<input>
<property>/engines/engine[0]/fuel-flow-gph</property>
</input>
<output>
<property>/engines/active-engine/fuel-flow-gph</property>
</output>
</filter>
<filter>
<name>Engine EGT Norm</name>
<type>gain</type>
@ -312,7 +332,7 @@
<property>/controls/engines/current-engine/throttle</property>
</input>
<input>
<value>0.0</value>
<property>/controls/engines/engine[1]/throttle</property>
</input>
<output>
<property>/controls/engines/engine[0]/throttle</property>

View file

@ -7,56 +7,56 @@
<property type="string">/velocities/groundspeed-kt</property>
</signal>
<!-- Gear smoke and spark-->
<signal>
<!-- Gear smoke and spark-->
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/ground/nose-gear-ground-effect-speed-kt-actual</property>
</signal>
<signal>
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/ground/left-gear-ground-effect-speed-kt-actual</property>
</signal>
<signal>
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/ground/right-gear-ground-effect-speed-kt-actual</property>
</signal>
<!-- Wing smoke and spark-->
<signal>
<!-- Wing smoke and spark-->
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/ground/left-wing-ground-effect-speed-kt-actual</property>
</signal>
<signal>
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/ground/right-wing-ground-effect-speed-kt-actual</property>
</signal>
<!-- Tail smoke and spark-->
<signal>
<!-- Tail smoke and spark-->
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/ground/tail-ground-effect-speed-kt-actual</property>
</signal>
<!-- Off Road Tyre smoke-->
<signal>
<!-- Off Road Tyre smoke-->
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/ground/nose-tyre-smoke-ground-effect-speed-kt-actual</property>
</signal>
<signal>
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/ground/left-tyre-smoke-ground-effect-speed-kt-actual</property>
</signal>
<signal>
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/ground/right-tyre-smoke-ground-effect-speed-kt-actual</property>
</signal>
<!-- Pontoon smoke and spark-->
<signal>
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/hydro/left-ground-effect-speed-kt-actual</property>
</signal>
<signal>
<signal>
<type>float</type>
<property type="string">/fdm/jsbsim/hydro/right-ground-effect-speed-kt-actual</property>
</signal>

View file

@ -1,137 +1,136 @@
<?xml version="1.0"?>
<!--
***********************************************************************************
c172p, June 2015
Fuel system for 2 different engines at choice, JSBSim FDM
***********************************************************************************
-->
<system name="fuel">
<!-- *********************************************************************************** -->
<!-- Main tanks: 0 and 1 -->
<!-- Collector Tanks: 2 and 3, constant-level intermediate float chambers -->
<!-- Collector Tank 2: engine 0, Collector Tank 3: engine 1 -->
<!-- Fuel Flow Rates in pounds per second -->
<!-- *********************************************************************************** -->
<channel name="Float Chamber Selection">
<!-- Give tank[2] priority if 160 HP engine is used -->
<switch>
<output>propulsion/tank[2]/priority</output>
<default value="0"/>
<test logic="AND" value="1">
/controls/engines/active-engine EQ 0
/engines/active-engine/killed EQ 0
</test>
</switch>
<!-- Give tank[3] priority if 180 HP engine is used -->
<switch>
<output>propulsion/tank[3]/priority</output>
<default value="0"/>
<test logic="AND" value="1">
/controls/engines/active-engine EQ 1
/engines/active-engine/killed EQ 0
</test>
</switch>
</channel>
<!-- ****************************************************** -->
<!-- Collector Tank 2 level-maintenance -->
<!-- ****************************************************** -->
<channel name="To Tank2">
<!-- from Tank 0 (to Collector Tank 2) -->
<switch name="fuel/from-tank0-to-tank2">
<default value="0"/>
<test logic="AND" value="0.1">
propulsion/tank[0]/priority EQ 1
propulsion/tank[0]/contents-lbs GT 0
/consumables/fuel/tank[2]/level-lbs LT 0.05
propulsion/tank[2]/priority EQ 1
accelerations/Nz GE 0
</test>
</switch>
<!-- from Tank 1 (to Collector Tank 2) -->
<switch name="fuel/from-tank1-to-tank2">
<default value="0"/>
<test logic="AND" value="0.1">
propulsion/tank[1]/priority EQ 1
propulsion/tank[1]/contents-lbs GT 0
/consumables/fuel/tank[2]/level-lbs LT 0.05
propulsion/tank[2]/priority EQ 1
accelerations/Nz GE 0
</test>
</switch>
</channel>
<!-- Total from Tank 0 and Tank 1 to Collector Tank 2 -->
<channel name="Total flow rate into tank 2">
<summer name="tank0 and 1 to tank2">
<input>fuel/from-tank0-to-tank2</input>
<input>fuel/from-tank1-to-tank2</input>
<output>propulsion/tank[2]/external-flow-rate-pps</output>
</summer>
</channel>
<!-- ****************************************************** -->
<!-- Collector Tank 3 level maintenance -->
<!-- ****************************************************** -->
<channel name="To Tank3">
<!-- from Tank 0 (to Collector Tank 3) -->
<switch name="fuel/from-tank0-to-tank3">
<default value="0"/>
<test logic="AND" value="0.1">
propulsion/tank[0]/priority EQ 1
propulsion/tank[0]/contents-lbs GT 0
/consumables/fuel/tank[3]/level-lbs LT 0.05
propulsion/tank[3]/priority EQ 1
accelerations/Nz GE 0
</test>
</switch>
<!-- from Tank 1 (to Collector Tank 3) Fuel Flow Rate in pps -->
<switch name="fuel/from-tank1-to-tank3">
<default value="0"/>
<test logic="AND" value="0.1">
propulsion/tank[1]/priority EQ 1
propulsion/tank[1]/contents-lbs GT 0
/consumables/fuel/tank[3]/level-lbs LT 0.05
propulsion/tank[3]/priority EQ 1
accelerations/Nz GE 0
</test>
</switch>
</channel>
<!-- Total from Tank 0 and Tank 1 to Collector Tank 3 -->
<channel name="Total flow rate into tank 3">
<summer name="tank0 and 1 to tank3">
<input>fuel/from-tank0-to-tank3</input>
<input>fuel/from-tank1-to-tank3</input>
<output>propulsion/tank[3]/external-flow-rate-pps</output>
</summer>
</channel>
<!-- *********************************************************************************** -->
<!-- FLOW RATE from each MAIN TANK (consumption) -->
<!-- *********************************************************************************** -->
<channel name="Total flow rates">
<summer name="fuel/tank0-flow-rate">
<input>-fuel/from-tank0-to-tank2</input>
<input>-fuel/from-tank0-to-tank3</input>
<output>propulsion/tank[0]/external-flow-rate-pps</output>
</summer>
<summer name="fuel/tank1-flow-rate">
<input>-fuel/from-tank1-to-tank2</input>
<input>-fuel/from-tank1-to-tank3</input>
<output>propulsion/tank[1]/external-flow-rate-pps</output>
</summer>
</channel>
</system>
<?xml version="1.0"?>
<!--
***********************************************************************************
c172p, June 2015
Fuel system for 2 different engines at choice, JSBSim FDM
***********************************************************************************
-->
<system name="fuel">
<!-- *********************************************************************************** -->
<!-- Main tanks: 0 and 1 -->
<!-- Collector Tanks: 2 and 3, constant-level intermediate float chambers -->
<!-- Collector Tank 2: engine 0, Collector Tank 3: engine 1 -->
<!-- Fuel Flow Rates in pounds per second -->
<!-- *********************************************************************************** -->
<channel name="Float Chamber Selection">
<!-- Give tank[2] priority if 160 HP engine is used -->
<switch name="Float Chamber 160 HP Priority">
<output>propulsion/tank[2]/priority</output>
<default value="0"/>
<test logic="AND" value="1">
/controls/engines/active-engine EQ 0
/engines/active-engine/killed EQ 0
</test>
</switch>
<!-- Give tank[3] priority if 180 HP engine is used -->
<switch name="Float Chamber 180 HP Priority">
<output>propulsion/tank[3]/priority</output>
<default value="0"/>
<test logic="AND" value="1">
/controls/engines/active-engine EQ 1
/engines/active-engine/killed EQ 0
</test>
</switch>
</channel>
<!-- ****************************************************** -->
<!-- Collector Tank 2 level-maintenance -->
<!-- ****************************************************** -->
<channel name="To Tank2">
<!-- from Tank 0 (to Collector Tank 2) -->
<switch name="fuel/from-tank0-to-tank2">
<default value="0"/>
<test logic="AND" value="0.1">
propulsion/tank[0]/priority EQ 1
propulsion/tank[0]/contents-lbs GT 0
/consumables/fuel/tank[2]/level-lbs LT 0.05
propulsion/tank[2]/priority EQ 1
accelerations/Nz GE 0
</test>
</switch>
<!-- from Tank 1 (to Collector Tank 2) -->
<switch name="fuel/from-tank1-to-tank2">
<default value="0"/>
<test logic="AND" value="0.1">
propulsion/tank[1]/priority EQ 1
propulsion/tank[1]/contents-lbs GT 0
/consumables/fuel/tank[2]/level-lbs LT 0.05
propulsion/tank[2]/priority EQ 1
accelerations/Nz GE 0
</test>
</switch>
</channel>
<!-- Total from Tank 0 and Tank 1 to Collector Tank 2 -->
<channel name="Total flow rate into tank 2">
<summer name="tank0 and 1 to tank2">
<input>fuel/from-tank0-to-tank2</input>
<input>fuel/from-tank1-to-tank2</input>
<output>propulsion/tank[2]/external-flow-rate-pps</output>
</summer>
</channel>
<!-- ****************************************************** -->
<!-- Collector Tank 3 level maintenance -->
<!-- ****************************************************** -->
<channel name="To Tank3">
<!-- from Tank 0 (to Collector Tank 3) -->
<switch name="fuel/from-tank0-to-tank3">
<default value="0"/>
<test logic="AND" value="0.1">
propulsion/tank[0]/priority EQ 1
propulsion/tank[0]/contents-lbs GT 0
/consumables/fuel/tank[3]/level-lbs LT 0.05
propulsion/tank[3]/priority EQ 1
accelerations/Nz GE 0
</test>
</switch>
<!-- from Tank 1 (to Collector Tank 3) Fuel Flow Rate in pps -->
<switch name="fuel/from-tank1-to-tank3">
<default value="0"/>
<test logic="AND" value="0.1">
propulsion/tank[1]/priority EQ 1
propulsion/tank[1]/contents-lbs GT 0
/consumables/fuel/tank[3]/level-lbs LT 0.05
propulsion/tank[3]/priority EQ 1
accelerations/Nz GE 0
</test>
</switch>
</channel>
<!-- Total from Tank 0 and Tank 1 to Collector Tank 3 -->
<channel name="Total flow rate into tank 3">
<summer name="tank0 and 1 to tank3">
<input>fuel/from-tank0-to-tank3</input>
<input>fuel/from-tank1-to-tank3</input>
<output>propulsion/tank[3]/external-flow-rate-pps</output>
</summer>
</channel>
<!-- ****************************************************** -->
<!-- FLOW RATE from each MAIN TANK (consumption) -->
<!-- ****************************************************** -->
<channel name="Total flow rates">
<summer name="fuel/tank0-flow-rate">
<input>-fuel/from-tank0-to-tank2</input>
<input>-fuel/from-tank0-to-tank3</input>
<output>propulsion/tank[0]/external-flow-rate-pps</output>
</summer>
<summer name="fuel/tank1-flow-rate">
<input>-fuel/from-tank1-to-tank2</input>
<input>-fuel/from-tank1-to-tank3</input>
<output>propulsion/tank[1]/external-flow-rate-pps</output>
</summer>
</channel>
</system>

View file

@ -1,28 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- (c) 2015, wlbragg. http://forum.flightgear.org/viewtopic.php?f=4&t=25157&start=75#p232085
Under the GPL. Used by shadows under ALS -->
<PropertyList>
<filter>
<type>gain</type>
<gain>0.3048</gain>
<input>/position/altitude-agl-ft</input>
<reference>-.75</reference>
<output>/position/gear-agl-m</output>
</filter>
<filter>
<type>gain</type>
<gain>0.3048</gain>
<input>/position/altitude-agl-ft</input>
<reference>-.75</reference>
<output>/position/gear-agl-m</output>
</filter>
<filter>
<type>gain</type>
<gain>0.3048</gain>
<input>/position/altitude-agl-ft</input>
<output>/position/altitude-agl-m</output>
</filter>
<filter>
<type>gain</type>
<gain>0.3048</gain>
<input>/position/altitude-agl-ft</input>
<output>/position/altitude-agl-m</output>
</filter>
<!-- These filters are used to passthrough a value in non-replay mode.
In replay mode, the value from the flight recorder is used.
This filter is needed because JSBSim wins over the flight recorder.
-->
<filter>
<name>Stall Horn Volume</name>
<type>gain</type>
@ -95,7 +96,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Left Ground Effect for Pontoons</name>
<type>gain</type>
<enable>
@ -113,7 +114,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Right Ground Effect for Pontoons</name>
<type>gain</type>
<enable>
@ -131,7 +132,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Tail Ground Effect</name>
<type>gain</type>
<enable>
@ -149,7 +150,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Left Wing Ground Effect</name>
<type>gain</type>
<enable>
@ -167,7 +168,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Right Wing Ground Effect</name>
<type>gain</type>
<enable>
@ -185,7 +186,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Nose Gear Ground Effect</name>
<type>gain</type>
<enable>
@ -203,7 +204,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Left Gear Ground Effect</name>
<type>gain</type>
<enable>
@ -221,7 +222,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Right Gear Ground Effect</name>
<type>gain</type>
<enable>
@ -239,7 +240,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Nose Off Road Tyre Smoke Ground Effect</name>
<type>gain</type>
<enable>
@ -257,7 +258,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Left Off Road Tyre Smoke Ground Effect</name>
<type>gain</type>
<enable>
@ -275,7 +276,7 @@ Under the GPL. Used by shadows under ALS -->
</output>
</filter>
<filter>
<filter>
<name>Right Off Road Tyre Smoke Ground Effect</name>
<type>gain</type>
<enable>

View file

@ -25,160 +25,160 @@ file, these values will be used (they are hardcoded).
<PropertyList>
<adf>
<name>adf</name>
<number>0</number>
</adf>
<adf>
<name>adf</name>
<number>0</number>
</adf>
<airspeed-indicator>
<name>airspeed-indicator</name>
<number>0</number>
<total-pressure>/systems/pitot/total-pressure-inhg</total-pressure>
<static-pressure>/systems/static/pressure-inhg</static-pressure>
</airspeed-indicator>
<airspeed-indicator>
<name>airspeed-indicator</name>
<number>0</number>
<total-pressure>/systems/pitot/total-pressure-inhg</total-pressure>
<static-pressure>/systems/static/pressure-inhg</static-pressure>
</airspeed-indicator>
<altimeter>
<name>altimeter</name>
<number>0</number>
<static-pressure>/systems/static/pressure-inhg</static-pressure>
<quantum>0</quantum>
<tau>0</tau>
</altimeter>
<altimeter>
<name>altimeter</name>
<number>0</number>
<static-pressure>/systems/static/pressure-inhg</static-pressure>
<quantum>0</quantum>
<tau>0</tau>
</altimeter>
<attitude-indicator>
<name>attitude-indicator</name>
<number>0</number>
<suction>/systems/vacuum/suction-inhg</suction>
</attitude-indicator>
<attitude-indicator>
<name>attitude-indicator</name>
<number>0</number>
<suction>/systems/vacuum/suction-inhg</suction>
</attitude-indicator>
<clock>
<name>clock</name>
<number>0</number>
</clock>
<clock>
<name>clock</name>
<number>0</number>
</clock>
<dme>
<name>dme</name>
<number>0</number>
</dme>
<dme>
<name>dme</name>
<number>0</number>
</dme>
<altimeter>
<name>encoder</name>
<number>0</number>
<static-pressure>/systems/static/pressure-inhg</static-pressure>
<quantum>10</quantum>
<tau>0.1</tau>
</altimeter>
<altimeter>
<name>encoder</name>
<number>0</number>
<static-pressure>/systems/static/pressure-inhg</static-pressure>
<quantum>10</quantum>
<tau>0.1</tau>
</altimeter>
<marker-beacon>
<name>marker-beacon</name>
<number>0</number>
</marker-beacon>
<marker-beacon>
<name>marker-beacon</name>
<number>0</number>
</marker-beacon>
<heading-indicator>
<name>heading-indicator</name>
<number>0</number>
<suction>/systems/vacuum/suction-inhg</suction>
</heading-indicator>
<heading-indicator>
<name>heading-indicator</name>
<number>0</number>
<suction>/systems/vacuum/suction-inhg</suction>
</heading-indicator>
<magnetic-compass>
<name>magnetic-compass</name>
<number>0</number>
<!-- use either deviation property or deviation table for compass deviation -->
<!--deviation>/instrumentation/magnetic-compass/deviation-deg</deviation-->
<deviation>
<table>
<entry>
<ind>0</ind>
<dep>0</dep>
</entry>
<entry>
<ind>30</ind>
<dep>2</dep>
</entry>
<entry>
<ind>60</ind>
<dep>3</dep>
</entry>
<entry>
<ind>90</ind>
<dep>4</dep>
</entry>
<entry>
<ind>120</ind>
<dep>3</dep>
</entry>
<entry>
<ind>150</ind>
<dep>2</dep>
</entry>
<entry>
<ind>180</ind>
<dep>0</dep>
</entry>
<entry>
<ind>210</ind>
<dep>-2</dep>
</entry>
<entry>
<ind>240</ind>
<dep>-3</dep>
</entry>
<entry>
<ind>270</ind>
<dep>-4</dep>
</entry>
<entry>
<ind>300</ind>
<dep>-3</dep>
</entry>
<entry>
<ind>330</ind>
<dep>-2</dep>
</entry>
</table>
</deviation>
</magnetic-compass>
<magnetic-compass>
<name>magnetic-compass</name>
<number>0</number>
<!-- use either deviation property or deviation table for compass deviation -->
<!--deviation>/instrumentation/magnetic-compass/deviation-deg</deviation-->
<deviation>
<table>
<entry>
<ind>0</ind>
<dep>0</dep>
</entry>
<entry>
<ind>30</ind>
<dep>2</dep>
</entry>
<entry>
<ind>60</ind>
<dep>3</dep>
</entry>
<entry>
<ind>90</ind>
<dep>4</dep>
</entry>
<entry>
<ind>120</ind>
<dep>3</dep>
</entry>
<entry>
<ind>150</ind>
<dep>2</dep>
</entry>
<entry>
<ind>180</ind>
<dep>0</dep>
</entry>
<entry>
<ind>210</ind>
<dep>-2</dep>
</entry>
<entry>
<ind>240</ind>
<dep>-3</dep>
</entry>
<entry>
<ind>270</ind>
<dep>-4</dep>
</entry>
<entry>
<ind>300</ind>
<dep>-3</dep>
</entry>
<entry>
<ind>330</ind>
<dep>-2</dep>
</entry>
</table>
</deviation>
</magnetic-compass>
<comm-radio>
<name>comm</name>
<number>0</number>
</comm-radio>
<comm-radio>
<name>comm</name>
<number>0</number>
</comm-radio>
<comm-radio>
<name>comm</name>
<number>1</number>
</comm-radio>
<comm-radio>
<name>comm</name>
<number>1</number>
</comm-radio>
<nav-radio>
<name>nav</name>
<number>0</number>
</nav-radio>
<nav-radio>
<name>nav</name>
<number>0</number>
</nav-radio>
<nav-radio>
<name>nav</name>
<number>1</number>
</nav-radio>
<nav-radio>
<name>nav</name>
<number>1</number>
</nav-radio>
<slip-skid-ball>
<name>slip-skid-ball</name>
<number>0</number>
</slip-skid-ball>
<slip-skid-ball>
<name>slip-skid-ball</name>
<number>0</number>
</slip-skid-ball>
<transponder>
<name>transponder</name>
<number>0</number>
<mode-c-altitude>/instrumentation/encoder/mode-c-alt-ft</mode-c-altitude>
</transponder>
<transponder>
<name>transponder</name>
<number>0</number>
<mode-c-altitude>/instrumentation/encoder/mode-c-alt-ft</mode-c-altitude>
</transponder>
<turn-indicator>
<name>turn-indicator</name>
<number>0</number>
</turn-indicator>
<turn-indicator>
<name>turn-indicator</name>
<number>0</number>
</turn-indicator>
<vertical-speed-indicator>
<name>vertical-speed-indicator</name>
<number>0</number>
<static-pressure>/systems/static/pressure-inhg</static-pressure>
</vertical-speed-indicator>
<vertical-speed-indicator>
<name>vertical-speed-indicator</name>
<number>0</number>
<static-pressure>/systems/static/pressure-inhg</static-pressure>
</vertical-speed-indicator>
</PropertyList>

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2015 onox
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<PropertyList>
<logic>
<name>Co-Pilot Present</name>
<input>
<greater-than>
<property>payload/weight[1]/weight-lb</property>
<value>100.0</value>
</greater-than>
</input>
<output>
<property>pax/co-pilot/present</property>
</output>
</logic>
<logic>
<name>Left Passenger Present</name>
<input>
<greater-than>
<property>payload/weight[2]/weight-lb</property>
<value>100.0</value>
</greater-than>
</input>
<output>
<property>pax/left-passenger/present</property>
</output>
</logic>
<logic>
<name>Right Passenger Present</name>
<input>
<greater-than>
<property>payload/weight[3]/weight-lb</property>
<value>100.0</value>
</greater-than>
</input>
<output>
<property>pax/right-passenger/present</property>
</output>
</logic>
</PropertyList>

View file

@ -24,7 +24,7 @@
<number>0</number>
<!-- null electrical system path here so we can use a nasal based -->
<!-- model defined later in the nasal section of this file. -->
<path></path>
<path/>
</electrical>
<pitot>

View file

@ -1,6 +1,10 @@
<?xml version="1.0"?>
<PropertyList>
<name>Setting the Altimeter</name>
<description>
<name>Setting the Altimeter</name>
<description>
The Altimeter on an aircraft works using air pressure. This varies due to weather conditions, so the altimeter must be set regularly to a known value.
Having the correct altimeter setting is important. As well as helping pilots to avoid any high terrain, it means that aircraft can be separated by altitude and not hit each other. This is particular important in busy airspace.
@ -8,177 +12,178 @@ Having the correct altimeter setting is important. As well as helping pilots to
The source of this altimeter setting varies. At high altitudes, a standard pressure is used. At lower levels, and area setting is used, and around airports, the current airport setting is used.
This tutorial will teach you how to set the altimeter based on the ATIS (Automatic Terminal Information Service) for Livermore Municipal airport.
</description>
<audio-dir>Tutorials/altimeter</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KLVK</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>37.6952</latitude-deg>
<longitude-deg>-121.8167</longitude-deg>
<heading-deg>175.0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
</description>
<init>
<set>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</set>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>0</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.0</value>
</set>
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
<set>
<property>/instrumentation/comm[0]/frequencies/selected-mhz</property>
<value>119.650</value>
</set>
</init>
<audio-dir>Tutorials/altimeter</audio-dir>
<timeofday>morning</timeofday>
<step>
<message>In this lesson, you'll learn how to set the altimeter to the Livermore ATIS. I've already
<presets>
<airport-id>KLVK</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>37.6952</latitude-deg>
<longitude-deg>-121.8167</longitude-deg>
<heading-deg>175.0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<init>
<set>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</set>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>0</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.0</value>
</set>
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
<set>
<property>/instrumentation/comm[0]/frequencies/selected-mhz</property>
<value>119.650</value>
</set>
</init>
<step>
<message>In this lesson, you'll learn how to set the altimeter to the Livermore ATIS. I've already
set the radio to the correct frequency - 119.65</message>
<wait>10</wait>
</step>
<wait>10</wait>
</step>
<step>
<message>Listen to the ATIS message. If you cannot hear it, check the Sound Configuration item in the File menu.</message>
<wait>20</wait>
<set>
<property>/instrumentation/kma20/com1</property>
<value>-1</value>
</set>
</step>
<step>
<message>Listen to the ATIS message. If you cannot hear it, check the Sound Configuration item in the File menu.</message>
<wait>20</wait>
<set>
<property>/instrumentation/kma20/com1</property>
<value>-1</value>
</set>
</step>
<step>
<message>The ATIS message said the altimeter setting was 30.13.
<step>
<message>The ATIS message said the altimeter setting was 30.13.
We can set this on the altimeter by using the small insert window on the right side.
Alternatively we can adjust the altimeter so that it matches the altitude of Livermore - 380ft.
</message>
<wait>10</wait>
<view>
<heading-offset-deg>353.8</heading-offset-deg>
<pitch-offset-deg>-20.3</pitch-offset-deg>
<roll-offset-deg>0.0</roll-offset-deg>
<x-offset-m>-0.2</x-offset-m>
<y-offset-m>0.3</y-offset-m>
<z-offset-m>0.4</z-offset-m>
<field-of-view>15.1</field-of-view>
</view>
</step>
<wait>10</wait>
<view>
<heading-offset-deg>353.8</heading-offset-deg>
<pitch-offset-deg>-20.3</pitch-offset-deg>
<roll-offset-deg>0.0</roll-offset-deg>
<x-offset-m>-0.2</x-offset-m>
<y-offset-m>0.3</y-offset-m>
<z-offset-m>0.4</z-offset-m>
<field-of-view>15.1</field-of-view>
</view>
</step>
<step>
<message>To adjust the altimeter directly, use the knob on the bottom left. Click on the right
<step>
<message>To adjust the altimeter directly, use the knob on the bottom left. Click on the right
side to increase the altitude, and left to decrease. Alternatively, use your mouse scroll wheel.
</message>
<wait>10</wait>
<view>
<heading-offset-deg>353.8</heading-offset-deg>
<pitch-offset-deg>-20.3</pitch-offset-deg>
<roll-offset-deg>0.0</roll-offset-deg>
<x-offset-m>-0.2</x-offset-m>
<y-offset-m>0.3</y-offset-m>
<z-offset-m>0.4</z-offset-m>
<field-of-view>15.1</field-of-view>
</view>
<wait>10</wait>
<view>
<heading-offset-deg>353.8</heading-offset-deg>
<pitch-offset-deg>-20.3</pitch-offset-deg>
<roll-offset-deg>0.0</roll-offset-deg>
<x-offset-m>-0.2</x-offset-m>
<y-offset-m>0.3</y-offset-m>
<z-offset-m>0.4</z-offset-m>
<field-of-view>15.1</field-of-view>
</view>
<marker>
<x-m>-0.3525</x-m>
<y-m>-0.1640</y-m>
<z-m>0.0409</z-m>
<scale>0.8756</scale>
</marker>
</step>
<marker>
<x-m>-0.3525</x-m>
<y-m>-0.1640</y-m>
<z-m>0.0409</z-m>
<scale>0.8756</scale>
</marker>
</step>
<step>
<message>Set the altimeter to 380 feet, or the pressure setting to 30.13 inHG.</message>
<wait>10</wait>
<view>
<heading-offset-deg>353.8</heading-offset-deg>
<pitch-offset-deg>-20.3</pitch-offset-deg>
<roll-offset-deg>0.0</roll-offset-deg>
<x-offset-m>-0.2</x-offset-m>
<y-offset-m>0.3</y-offset-m>
<z-offset-m>0.4</z-offset-m>
<field-of-view>15.1</field-of-view>
</view>
<step>
<message>Set the altimeter to 380 feet, or the pressure setting to 30.13 inHG.</message>
<wait>10</wait>
<view>
<heading-offset-deg>353.8</heading-offset-deg>
<pitch-offset-deg>-20.3</pitch-offset-deg>
<roll-offset-deg>0.0</roll-offset-deg>
<x-offset-m>-0.2</x-offset-m>
<y-offset-m>0.3</y-offset-m>
<z-offset-m>0.4</z-offset-m>
<field-of-view>15.1</field-of-view>
</view>
<marker>
<x-m>-0.3525</x-m>
<y-m>-0.1640</y-m>
<z-m>0.0409</z-m>
<scale>0.8756</scale>
</marker>
<marker>
<x-m>-0.3525</x-m>
<y-m>-0.1640</y-m>
<z-m>0.0409</z-m>
<scale>0.8756</scale>
</marker>
<error>
<message>That's too low. Increase the altimeter setting or altitude.</message>
<condition>
<less-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>30.12</value>
</less-than>
</condition>
</error>
<error>
<message>That's too low. Increase the altimeter setting or altitude.</message>
<condition>
<less-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>30.12</value>
</less-than>
</condition>
</error>
<error>
<message>That's too high. Decrease the altimeter setting or altitude.</message>
<condition>
<greater-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>30.14</value>
</greater-than>
</condition>
</error>
<error>
<message>That's too high. Decrease the altimeter setting or altitude.</message>
<condition>
<greater-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>30.14</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>30.12</value>
</greater-than>
<less-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>30.14</value>
</less-than>
</and>
</condition>
</exit>
</step>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>30.12</value>
</greater-than>
<less-than>
<property>/instrumentation/altimeter/setting-inhg</property>
<value>30.14</value>
</less-than>
</and>
</condition>
</exit>
</step>
<end>
<message>Tutorial complete. If you set the pressure setting directly,
<end>
<message>Tutorial complete. If you set the pressure setting directly,
you can double-check you've set the correct value by checking the current altitude.</message>
</end>
</end>
</PropertyList>

View file

@ -1,11 +1,15 @@
<?xml version="1.0"?>
<PropertyList>
<tutorial include="startup.xml"/>
<tutorial include="taxiing.xml"/>
<tutorial include="runup.xml"/>
<tutorial include="radios.xml"/>
<tutorial include="altimeter.xml"/>
<tutorial include="takeoff.xml"/>
<tutorial include="landing.xml"/>
<tutorial include="pattern.xml"/>
<tutorial include="engine-failure.xml"/>
<tutorial include="startup.xml"/>
<tutorial include="taxiing.xml"/>
<tutorial include="runup.xml"/>
<tutorial include="radios.xml"/>
<tutorial include="altimeter.xml"/>
<tutorial include="takeoff.xml"/>
<tutorial include="landing.xml"/>
<tutorial include="pattern.xml"/>
<tutorial include="engine-failure.xml"/>
</PropertyList>

View file

@ -1,6 +1,10 @@
<?xml version="1.0"?>
<PropertyList>
<name>Engine Failure</name>
<description>Engine failure is very rare in flight simulators, but a risk in real life.
<name>Engine Failure</name>
<description>Engine failure is very rare in flight simulators, but a risk in real life.
The tutorial starts with you cruising at 3500ft over the hills of San Francisco. A total engine failure will occur, with no possibility of restart - black smoke, chunks of metal pushed out of the cowling.
@ -11,229 +15,237 @@ The Cessna 172 glides at a ratio of 9:1 at a best glide speed of 65 kts IAS. The
Both KSFO (San Francisco International) and KHAF (Half Moon Bay) are within glide distance. In real life, you would opt for the larger of the two airports, but for an extra challenge, try to land at KHAF.
</description>
<timeofday>dusk</timeofday>
<presets>
<airport-id>KHAF</airport-id>
<on-ground>0</on-ground>
<runway>30</runway>
<altitude-ft>3500</altitude-ft>
<latitude-deg>37.5</latitude-deg>
<longitude-deg>-122.4</longitude-deg>
<heading-deg>010.0</heading-deg>
<airspeed-kt>105.0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
<ndb-id>0</ndb-id>
<vor-id>0</vor-id>
<fix>0</fix>
</presets>
<init>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.5</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
</init>
<step>
<message>We're happily cruising along, enjoying an evenings flight.</message>
<wait>10</wait>
</step>
<step>
<message>Engine failure! Engine failure! Trim for a best glide speed of 65 knots.</message>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<set>
<property>/controls/engines/engine/faults/left-magneto-serviceable</property>
<value>false</value>
</set>
<set>
<property>/controls/engines/engine/faults/right-magneto-serviceable</property>
<value>false</value>
</set>
<set>
<property>/controls/engines/engine/faults/spark-plugs-serviceable</property>
<value>false</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>0</value>
</set>
</step>
<step>
<message>Now look around and choose an airport, or emergency landing site. Stay at 65 knots.</message>
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<error>
<message>You are too slow. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<less-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>62</value>
</less-than>
</condition>
</error>
<error>
<message>You are too fast. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<greater-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>69</value>
</greater-than>
</condition>
</error>
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
<timeofday>dusk</timeofday>
<presets>
<airport-id>KHAF</airport-id>
<on-ground>0</on-ground>
<runway>30</runway>
<altitude-ft>3500</altitude-ft>
<latitude-deg>37.5</latitude-deg>
<longitude-deg>-122.4</longitude-deg>
<heading-deg>010.0</heading-deg>
<airspeed-kt>105.0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
<ndb-id>0</ndb-id>
<vor-id>0</vor-id>
<fix>0</fix>
</presets>
<init>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.5</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
</init>
<step>
<message>We're happily cruising along, enjoying an evenings flight.</message>
<wait>10</wait>
</step>
<step>
<message>Engine failure! Engine failure! Trim for a best glide speed of 65 knots.</message>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<set>
<property>/controls/engines/engine/faults/left-magneto-serviceable</property>
<value>false</value>
</set>
<set>
<property>/controls/engines/engine/faults/right-magneto-serviceable</property>
<value>false</value>
</set>
<set>
<property>/controls/engines/engine/faults/spark-plugs-serviceable</property>
<value>false</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>0</value>
</set>
</step>
<step>
<message>Now look around and choose an airport, or emergency landing site. Stay at 65 knots.</message>
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<error>
<message>You are too slow. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<less-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>62</value>
</less-than>
</condition>
</error>
<error>
<message>You are too fast. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<greater-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>69</value>
</greater-than>
</condition>
</error>
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
Please switch them off again to continue the tutorial.</message>
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
</step>
<step>
<message>Start maneuvering towards your chosen emergency landing spot,
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
</step>
<step>
<message>Start maneuvering towards your chosen emergency landing spot,
keeping your speed at 65 knots IAS.</message>
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<error>
<message>You are too slow. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<less-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>62</value>
</less-than>
</condition>
</error>
<error>
<message>You are too fast. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<greater-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>69</value>
</greater-than>
</condition>
</error>
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<error>
<message>You are too slow. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<less-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>62</value>
</less-than>
</condition>
</error>
<error>
<message>You are too fast. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<greater-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>69</value>
</greater-than>
</condition>
</error>
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
Please switch them off again to continue the tutorial.</message>
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
</step>
<step>
<message>At this point we would radio an emergency/mayday.
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
</step>
<step>
<message>At this point we would radio an emergency/mayday.
Remember - Aviate, Navigate, Communicate - in that order.</message>
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<error>
<message>You are too slow. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<less-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>62</value>
</less-than>
</condition>
</error>
<error>
<message>You are too fast. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<greater-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>69</value>
</greater-than>
</condition>
</error>
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<error>
<message>You are too slow. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<less-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>62</value>
</less-than>
</condition>
</error>
<error>
<message>You are too fast. You need to fly at 65 knots IAS for maximum glide.</message>
<condition>
<greater-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>69</value>
</greater-than>
</condition>
</error>
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
Please switch them off again to continue the tutorial.</message>
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
</step>
<step>
<message>Continue flying towards your emergency landing spot.
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
</step>
<step>
<message>Continue flying towards your emergency landing spot.
If we had the spare capacity, we might attempt to restart the engine at this point.</message>
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
Please switch them off again to continue the tutorial.</message>
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
</step>
<step>
<message>Stay a 65 knots for maximum glide. Only use flaps once the runway is "made".</message>
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
</step>
<step>
<message>Stay a 65 knots for maximum glide. Only use flaps once the runway is "made".</message>
<error>
<message>Engine failure is currently simulated by switching off the magnetos.
Please switch them off again to continue the tutorial.</message>
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<less-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>10</value>
</less-than>
</condition>
</exit>
</step>
<end>
<message>Assuming the aircraft is upright and you landed on a runway,
<condition>
<greater-than>
<property>/controls/switches/magnetos</property>
<value>0</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<less-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>10</value>
</less-than>
</condition>
</exit>
</step>
<end>
<message>Assuming the aircraft is upright and you landed on a runway,
you walked away from a total engine failure - well done!</message>
</end>
</end>
</PropertyList>

View file

@ -1,6 +1,10 @@
<?xml version="1.0"?>
<PropertyList>
<name>Straight-in Landing</name>
<description>Landings are not optional...
<name>Straight-in Landing</name>
<description>Landings are not optional...
Land the aircraft from an altitude of 1000ft on runway 30 at KHAF on a calm morning.
@ -10,189 +14,199 @@ KHAF has a VASI to the left of runway 30, a series of lights designed to help yo
You start the tutorial cruising at around 1000ft and 90kts. To begin your descent, you will need to reduce power and drop one notch flaps. You are aiming to approach at 80kts and 300fpm. As you get closer, you will need to reduce power further and drop more flaps, aiming to touch down "on the numbers" at 65kts.
</description>
<timeofday>afternoon</timeofday>
<presets>
<airport-id>KHAF</airport-id>
<on-ground>0</on-ground>
<runway>30</runway>
<altitude-ft>1000</altitude-ft>
<latitude-deg>-9999</latitude-deg>
<longitude-deg>-9999</longitude-deg>
<!-- <heading-deg>300.0</heading-deg> -->
<airspeed-kt>90.0</airspeed-kt>
<glideslope-deg>3</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>3</offset-distance-nm>
<ndb-id>0</ndb-id>
<vor-id>0</vor-id>
<fix>0</fix>
</presets>
<init>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.4</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
</init>
<timeofday>afternoon</timeofday>
<presets>
<airport-id>KHAF</airport-id>
<on-ground>0</on-ground>
<runway>30</runway>
<altitude-ft>1000</altitude-ft>
<latitude-deg>-9999</latitude-deg>
<longitude-deg>-9999</longitude-deg>
<!-- <heading-deg>300.0</heading-deg> -->
<airspeed-kt>90.0</airspeed-kt>
<glideslope-deg>3</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>3</offset-distance-nm>
<ndb-id>0</ndb-id>
<vor-id>0</vor-id>
<fix>0</fix>
</presets>
<step>
<message>The runway is straight ahead. Reduce throttle to 50% and apply one degree of flaps.
<init>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.4</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
</init>
<step>
<message>The runway is straight ahead. Reduce throttle to 50% and apply one degree of flaps.
Stay in line with the runway about a hands-width above the glare-shield.
You are aiming to descend at around 500 feet per minute and 80 knots.
</message>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.11</value>
</set>
<error>
<message>You are going too fast. Reduce power and pitch up to reduce your airspeed to 80 knots.</message>
<condition>
<greater-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>100.0</value>
</greater-than>
</condition>
</error>
<error>
<message>Reduce throttle to 50%</message>
<condition>
<greater-than>
<property>/controls/engines/current-engine/throttle</property>
<value>0.5</value>
</greater-than>
</condition>
</error>
<error>
<message>Set one step of flaps by pressing ]</message>
<condition>
<less-than>
<property>/controls/flight/flaps</property>
<value>0.3</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/position/latitude-deg</property>
<value>37.48</value>
</greater-than>
</condition>
</exit>
</step>
</message>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.11</value>
</set>
<step>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<message>Let down the second step of flaps and use the VASI to check your descent rate.
<error>
<message>You are going too fast. Reduce power and pitch up to reduce your airspeed to 80 knots.</message>
<condition>
<greater-than>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<value>100.0</value>
</greater-than>
</condition>
</error>
<error>
<message>Reduce throttle to 50%</message>
<condition>
<greater-than>
<property>/controls/engines/current-engine/throttle</property>
<value>0.5</value>
</greater-than>
</condition>
</error>
<error>
<message>Set one step of flaps by pressing ]</message>
<condition>
<less-than>
<property>/controls/flight/flaps</property>
<value>0.3</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/position/latitude-deg</property>
<value>37.48</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<message>Let down the second step of flaps and use the VASI to check your descent rate.
White - too high. Red - too low, Red and white - just right.
Use throttle to control your descent rate rather than attitude.
</message>
<error>
<message>Set your second set of flaps by pressing ]</message>
<condition>
<less-than>
<property>/controls/flight/flaps</property>
<value>0.6</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/position/latitude-deg</property>
<value>37.495</value>
</greater-than>
</condition>
</exit>
</step>
</message>
<step>
<message>Let down your final set of flaps and continue to follow the VASI glideslope.
<error>
<message>Set your second set of flaps by pressing ]</message>
<condition>
<less-than>
<property>/controls/flight/flaps</property>
<value>0.6</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/position/latitude-deg</property>
<value>37.495</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Let down your final set of flaps and continue to follow the VASI glideslope.
Stay lined up with the middle of the runway.
</message>
<error>
<message>Set your final set of flaps by pressing ]</message>
<condition>
<less-than>
<property>/controls/flight/flaps</property>
<value>0.9</value>
</less-than>
</condition>
</error>
</message>
<exit>
<condition>
<greater-than>
<property>/position/latitude-deg</property>
<value>37.506</value>
</greater-than>
</condition>
</exit>
</step>
<error>
<message>Set your final set of flaps by pressing ]</message>
<condition>
<less-than>
<property>/controls/flight/flaps</property>
<value>0.9</value>
</less-than>
</condition>
</error>
<step>
<message>Reduce power to idle. When you are about 10 feet above the ground,
<exit>
<condition>
<greater-than>
<property>/position/latitude-deg</property>
<value>37.506</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Reduce power to idle. When you are about 10 feet above the ground,
smoothly bring the nose up so it is level with the horizon.
</message>
<exit>
<condition>
<less-than>
<property>/position/altitude-agl-ft</property>
<value>7.0</value>
</less-than>
</condition>
</exit>
</step>
</message>
<exit>
<condition>
<less-than>
<property>/position/altitude-agl-ft</property>
<value>7.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Keep tracking straight down the runway and let the aircraft land on the main gear.</message>
<exit>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>45.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Keep tracking straight down the runway and let the aircraft land on the main gear.</message>
<exit>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>45.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Lower the nose wheel, continue to track down the runway and gently brake to a stop. Use
the mouse with the left button held down to steer.</message>
<exit>
<condition>
<less-than>
<property>/velocities/groundspeed-kt</property>
<value>5.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Lower the nose wheel, continue to track down the runway and gently brake to a stop. Use
the mouse with the left button held down to steer.
</message>
<exit>
<condition>
<less-than>
<property>/velocities/groundspeed-kt</property>
<value>5.0</value>
</less-than>
</condition>
</exit>
</step>
<end>
<message>Congratulations on a successful landing.</message>
</end>
<end>
<message>Congratulations on a successful landing.</message>
</end>
</PropertyList>

View file

@ -1,6 +1,10 @@
<?xml version="1.0"?>
<PropertyList>
<name>Flying the Pattern</name>
<description>
<name>Flying the Pattern</name>
<description>
The traffic pattern is used as a method to stop aircraft crashing into each other when near an airport.
The pattern is a rectangular flight path with the runway forming one of the long sides.
@ -15,411 +19,433 @@ It consists of the following sections:
As before, we'll be flying at KHAF, on runway 12, on a clear day.
Runway 12 does not have a VASI. Instead you will need to judge whether you are too low or too high by the view of the runway. If the runway is going away from you, you will land short. If the runway is coming towards you, you will over-shoot. Remember, you should aim to have the runway about a third of the way above the glare-shield, and adjust your rate of descent using power.
</description>
<audio-dir>Tutorials/pattern</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KHAF</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>-9999</latitude-deg>
<longitude-deg>-9999</longitude-deg>
<heading-deg>0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<init>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.5</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
</init>
<step>
<message>Release the parking brakes, smoothly apply full power and start your take-off.</message>
<error>
<message>Apply full throttle for take-off</message>
<condition>
<less-than>
<property>/controls/engines/current-engine/throttle</property>
<value>0.95</value>
</less-than>
</condition>
</error>
<error>
<message>Release the parking brake using Shift B</message>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/velocities/airspeed-kt</property>
<value>5.0</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Stay on the center-line of the runway using the rudder.</message>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<exit>
<condition>
<greater-than>
<property>/velocities/airspeed-kt</property>
<value>45.0</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Take-off at 65 knots and climb straight out on heading 120 at 600 feet per minute (about 70 knots).</message>
<exit>
<condition>
<greater-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>300</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Continue your climb on heading 120 at 600 feet per minute to 500 feet.</message>
<error>
<message>Your climb angle is too shallow - raise the nose slightly to increase your climb rate.</message>
<condition>
<less-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>400</value>
</less-than>
</condition>
</error>
<error>
<message>Your climb angle is too great - lower the nose slightly to decrease your climb rate.</message>
<condition>
<greater-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>900</value>
</greater-than>
</condition>
</error>
<error>
<message>You are heading too far left, Turn right slightly to heading 120.</message>
<condition>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>110</value>
</less-than>
</condition>
</error>
<error>
<message>You are heading too far right, Turn left slightly to heading 120.</message>
<condition>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>130</value>
</greater-than>
</condition>
</error>
<error>
<message>You are in danger of being "behind the power curve". Drop the nose to speed up to 70 knots.</message>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>69</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>500</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Make a left turn to crosswind (heading 030) and continue climbing to 1000 feet.</message>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>900</value>
</greater-than>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>020</value>
</greater-than>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>040</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Level off at 1000 feet and make another left turn to downwind (heading 300).</message>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>950</value>
</greater-than>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>290</value>
</greater-than>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>310</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Reduce power to 60%, and trim for level flight. Continue flying parallel to the runway.</message>
<error>
<message>You are heading too far left, Turn right slightly to heading 300.</message>
<condition>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>290</value>
</less-than>
</condition>
</error>
<error>
<message>You are heading too far right, Turn left slightly to heading 300.</message>
<condition>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>310</value>
</greater-than>
</condition>
</error>
<error>
<message>You are too high. Pattern altitude is 1000 feet.</message>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1100</value>
</greater-than>
</condition>
</error>
<error>
<message>You are too low. Pattern altitude is 1000 feet.</message>
<condition>
<less-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>900</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/position/latitude-deg</property>
<value>37.528</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>You are now opposite the end of the runway. Reduce power to 50%, set flaps to 10.</message>
<exit>
<condition>
<and>
<greater-than>
</description>
<audio-dir>Tutorials/pattern</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KHAF</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>-9999</latitude-deg>
<longitude-deg>-9999</longitude-deg>
<heading-deg>0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<init>
<set>
<property>/controls/flight/flaps</property>
<value>0.3</value>
</greater-than>
<less-than>
<value>0.0</value>
</set>
<set>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.55</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Let the aircraft descend and slow. Continue flying a heading of 300.</message>
<error>
<message>You are heading too far left, Turn right slightly to heading 300.</message>
<condition>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>290</value>
</less-than>
</condition>
</error>
<error>
<message>You are heading too far right, Turn left slightly to heading 300.</message>
<condition>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>310</value>
</greater-than>
</condition>
</error>
<error>
<message>You are too high. You should be descending to around 850 feet.</message>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1100</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<less-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>900</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Turn left to base (heading 210), and set flaps to 20.
Continue to descend at around 500 feet per minute.</message>
<exit>
<condition>
<less-than>
<property>/position/longitude-deg</property>
<value>-122.520</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Turn onto final (heading 120), and line up with the runway.</message>
<exit>
<condition>
<and>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>140</value>
</less-than>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>100</value>
</greater-than>
<less-than>
<property>/position/latitude-deg</property>
<value>37.545</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Set flaps to 30. Control your descent rate using the throttle.</message>
<exit>
<condition>
<less-than>
<property>/position/latitude-deg</property>
<value>37.525</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Reduce power to idle. When you are about 10 feet above the ground,
smoothly bring the nose up so it is just above the horizon.</message>
<exit>
<condition>
<less-than>
<property>/position/altitude-agl-ft</property>
<value>10.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Keep tracking straight down the runway using the rudder
and let the aircraft land on the main gear.</message>
<exit>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>45.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Lower the nose wheel, continue to track down the runway and gently brake to a stop.</message>
<exit>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>5.0</value>
</less-than>
</condition>
</exit>
</step>
<end>
<message>Congratulations on successfully following the pattern.
<value>0.5</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
</init>
<step>
<message>Release the parking brakes, smoothly apply full power and start your take-off.</message>
<error>
<message>Apply full throttle for take-off</message>
<condition>
<less-than>
<property>/controls/engines/current-engine/throttle</property>
<value>0.95</value>
</less-than>
</condition>
</error>
<error>
<message>Release the parking brake using Shift B</message>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/velocities/airspeed-kt</property>
<value>5.0</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Stay on the center-line of the runway using the rudder.</message>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<exit>
<condition>
<greater-than>
<property>/velocities/airspeed-kt</property>
<value>45.0</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Take-off at 65 knots and climb straight out on heading 120 at 600 feet per minute (about 70 knots).</message>
<exit>
<condition>
<greater-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>300</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Continue your climb on heading 120 at 600 feet per minute to 500 feet.</message>
<error>
<message>Your climb angle is too shallow - raise the nose slightly to increase your climb rate.</message>
<condition>
<less-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>400</value>
</less-than>
</condition>
</error>
<error>
<message>Your climb angle is too great - lower the nose slightly to decrease your climb rate.</message>
<condition>
<greater-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>900</value>
</greater-than>
</condition>
</error>
<error>
<message>You are heading too far left, Turn right slightly to heading 120.</message>
<condition>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>110</value>
</less-than>
</condition>
</error>
<error>
<message>You are heading too far right, Turn left slightly to heading 120.</message>
<condition>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>130</value>
</greater-than>
</condition>
</error>
<error>
<message>You are in danger of being "behind the power curve". Drop the nose to speed up to 70 knots.</message>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>69</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>500</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Make a left turn to crosswind (heading 030) and continue climbing to 1000 feet.</message>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>900</value>
</greater-than>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>020</value>
</greater-than>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>040</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Level off at 1000 feet and make another left turn to downwind (heading 300).</message>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>950</value>
</greater-than>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>290</value>
</greater-than>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>310</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Reduce power to 60%, and trim for level flight. Continue flying parallel to the runway.</message>
<error>
<message>You are heading too far left, Turn right slightly to heading 300.</message>
<condition>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>290</value>
</less-than>
</condition>
</error>
<error>
<message>You are heading too far right, Turn left slightly to heading 300.</message>
<condition>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>310</value>
</greater-than>
</condition>
</error>
<error>
<message>You are too high. Pattern altitude is 1000 feet.</message>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1100</value>
</greater-than>
</condition>
</error>
<error>
<message>You are too low. Pattern altitude is 1000 feet.</message>
<condition>
<less-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>900</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/position/latitude-deg</property>
<value>37.528</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>You are now opposite the end of the runway. Reduce power to 50%, set flaps to 10.</message>
<exit>
<condition>
<and>
<greater-than>
<property>/controls/flight/flaps</property>
<value>0.3</value>
</greater-than>
<less-than>
<property>/controls/engines/current-engine/throttle</property>
<value>0.55</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Let the aircraft descend and slow. Continue flying a heading of 300.</message>
<error>
<message>You are heading too far left, Turn right slightly to heading 300.</message>
<condition>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>290</value>
</less-than>
</condition>
</error>
<error>
<message>You are heading too far right, Turn left slightly to heading 300.</message>
<condition>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>310</value>
</greater-than>
</condition>
</error>
<error>
<message>You are too high. You should be descending to around 850 feet.</message>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1100</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<less-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>900</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Turn left to base (heading 210), and set flaps to 20.
Continue to descend at around 500 feet per minute.
</message>
<exit>
<condition>
<less-than>
<property>/position/longitude-deg</property>
<value>-122.520</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Turn onto final (heading 120), and line up with the runway.</message>
<exit>
<condition>
<and>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>140</value>
</less-than>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>100</value>
</greater-than>
<less-than>
<property>/position/latitude-deg</property>
<value>37.545</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Set flaps to 30. Control your descent rate using the throttle.</message>
<exit>
<condition>
<less-than>
<property>/position/latitude-deg</property>
<value>37.525</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Reduce power to idle. When you are about 10 feet above the ground,
smoothly bring the nose up so it is just above the horizon.
</message>
<exit>
<condition>
<less-than>
<property>/position/altitude-agl-ft</property>
<value>10.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Keep tracking straight down the runway using the rudder
and let the aircraft land on the main gear.
</message>
<exit>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>45.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Lower the nose wheel, continue to track down the runway and gently brake to a stop.</message>
<exit>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>5.0</value>
</less-than>
</condition>
</exit>
</step>
<end>
<message>Congratulations on successfully following the pattern.
If you want to practice more landings, you can take off again immediately.
Don't forget to lift your flaps though! This is known as a Touch and Go.
</message>
</end>
</message>
</end>
</PropertyList>

View file

@ -1,233 +1,246 @@
<?xml version="1.0"?>
<PropertyList>
<name>Radio Tuning</name>
<description>
<name>Radio Tuning</name>
<description>
Radios are used both for communication, and also for navigation.
This tutorial will teach you how to tune the radio of the aircraft to pick up
the ATIS - Automatic Terminal Information Service. This is broadcast by all
but the smallest airports and provides information on the current ground-level
weather, the altimeter setting and the runway in use.
</description>
<audio-dir>Tutorials/radio</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KLVK</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>37.6952</latitude-deg>
<longitude-deg>-121.8167</longitude-deg>
<heading-deg>175.0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
</description>
<init>
<set>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</set>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>0</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.0</value>
</set>
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
</init>
<audio-dir>Tutorials/radio</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KLVK</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>37.6952</latitude-deg>
<longitude-deg>-121.8167</longitude-deg>
<heading-deg>175.0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<step>
<message>In this lesson, you'll learn how to tune the radio to the Livermore ATIS.
<init>
<set>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</set>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>0</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.0</value>
</set>
<set>
<property>/engines/active-engine/running</property>
<value>false</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
</init>
<step>
<message>In this lesson, you'll learn how to tune the radio to the Livermore ATIS.
The radio is in the middle of the center console.</message>
<wait>10</wait>
</step>
<wait>10</wait>
</step>
<step>
<message>There are 4 radios on this aircraft - two for communication (COMM1, COMM2) and two for navigation (NAV1, NAV2).
<step>
<message>There are 4 radios on this aircraft - two for communication (COMM1, COMM2) and two for navigation (NAV1, NAV2).
Each radio has an active frequency and a standby frequency.
We tune the radio by changing the standby frequency, and then swapping the active and standby. </message>
<wait>10</wait>
</step>
<step>
<message>To change the standby frequency, click on the highlighted knob. The outer knob changes the number on the left of the decimal place.
<wait>10</wait>
</step>
<step>
<message>To change the standby frequency, click on the highlighted knob. The outer knob changes the number on the left of the decimal place.
The inner knob changes the number on the right of the decimal place.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3444</x-m>
<y-m>0.0907</y-m>
<z-m>0.0053</z-m>
<scale>1.0000</scale>
</marker>
</step>
<step>
<message>The left mouse button increases the value, while the middle button decreases it. Alternatively, you can use your mouse wheel.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3444</x-m>
<y-m>0.0907</y-m>
<z-m>0.0053</z-m>
<scale>1.0000</scale>
</marker>
</step>
<step>
<message>Set the standby frequency to 119.65 MHz. This is the ATIS frequency for Livermore, and is printed on sectional charts.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3444</x-m>
<y-m>0.0907</y-m>
<z-m>0.0053</z-m>
<scale>1.0000</scale>
</marker>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.64</value>
</greater-than>
<less-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.66</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Now, switch the active and standby frequencies by pressing the swap button so the active frequency is 119.650MHz.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3444</x-m>
<y-m>0.0684</y-m>
<z-m>0.0142</z-m>
<scale>1.0000</scale>
</marker>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/comm[0]/frequencies/selected-mhz</property>
<value>119.64</value>
</greater-than>
<less-than>
<property>/instrumentation/comm[0]/frequencies/selected-mhz</property>
<value>119.66</value>
</less-than>
</and>
</condition>
</exit>
</step>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3444</x-m>
<y-m>0.0907</y-m>
<z-m>0.0053</z-m>
<scale>1.0000</scale>
</marker>
</step>
<step>
<message>We need to set the COMM1 output to our headset using the audio panel.
<step>
<message>The left mouse button increases the value, while the middle button decreases it. Alternatively, you can use your mouse wheel.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3444</x-m>
<y-m>0.0907</y-m>
<z-m>0.0053</z-m>
<scale>1.0000</scale>
</marker>
</step>
<step>
<message>Set the standby frequency to 119.65 MHz. This is the ATIS frequency for Livermore, and is printed on sectional charts.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3444</x-m>
<y-m>0.0907</y-m>
<z-m>0.0053</z-m>
<scale>1.0000</scale>
</marker>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.64</value>
</greater-than>
<less-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.66</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Now, switch the active and standby frequencies by pressing the swap button so the active frequency is 119.650MHz.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3444</x-m>
<y-m>0.0684</y-m>
<z-m>0.0142</z-m>
<scale>1.0000</scale>
</marker>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/comm[0]/frequencies/selected-mhz</property>
<value>119.64</value>
</greater-than>
<less-than>
<property>/instrumentation/comm[0]/frequencies/selected-mhz</property>
<value>119.66</value>
</less-than>
</and>
</condition>
</exit>
</step>
<step>
<message>We need to set the COMM1 output to our headset using the audio panel.
Use your left mouse button to drag the COMM1 switch upwards.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3494</x-m>
<y-m>0.0884</y-m>
<z-m>0.1084</z-m>
<scale>1.0000</scale>
</marker>
<exit>
<condition>
<not>
<equals>
<property>/instrumentation/kma20/com1</property>
<value>0</value>
</equals>
</not>
</condition>
</exit>
</step>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3494</x-m>
<y-m>0.0884</y-m>
<z-m>0.1084</z-m>
<scale>1.0000</scale>
</marker>
<step>
<message>Listen to the ATIS message. If you cannot hear it, look at the Sound Configuration dialog on the File menu.
<exit>
<condition>
<not>
<equals>
<property>/instrumentation/kma20/com1</property>
<value>0</value>
</equals>
</not>
</condition>
</exit>
</step>
<step>
<message>Listen to the ATIS message. If you cannot hear it, look at the Sound Configuration dialog on the File menu.
It will tell you the current weather conditions, the runway in use, and the altimeter setting.</message>
</step>
</step>
<step>
<message>Once you've heard it, you can switch it off by swapping the frequency back to standby, or toggling off the audio panel.
<step>
<message>Once you've heard it, you can switch it off by swapping the frequency back to standby, or toggling off the audio panel.
Do that now.</message>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3494</x-m>
<y-m>0.0884</y-m>
<z-m>0.1084</z-m>
<scale>1.0000</scale>
</marker>
<exit>
<condition>
<or>
<and>
<greater-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.64</value>
</greater-than>
<less-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.66</value>
</less-than>
</and>
<equals>
<property>/instrumentation/kma20/com1</property>
<value>0</value>
</equals>
</or>
</condition>
</exit>
</step>
<view>
<field-of-view>14.0</field-of-view>
<heading-offset-deg>336</heading-offset-deg>
<pitch-offset-deg>-20</pitch-offset-deg>
</view>
<marker>
<x-m>-0.3494</x-m>
<y-m>0.0884</y-m>
<z-m>0.1084</z-m>
<scale>1.0000</scale>
</marker>
<end>
<message>Great job. COMM2 is located immediately below COMM1 in the radio stack, and is tuned in the same way.
<exit>
<condition>
<or>
<and>
<greater-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.64</value>
</greater-than>
<less-than>
<property>/instrumentation/comm[0]/frequencies/standby-mhz</property>
<value>119.66</value>
</less-than>
</and>
<equals>
<property>/instrumentation/kma20/com1</property>
<value>0</value>
</equals>
</or>
</condition>
</exit>
</step>
<end>
<message>Great job. COMM2 is located immediately below COMM1 in the radio stack, and is tuned in the same way.
The NAV radios work in exactly the same way, except they use a different frequency
range, and their output goes to the navigational instruments.</message>
</end>
</end>
</PropertyList>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,261 +1,276 @@
<?xml version="1.0"?>
<PropertyList>
<name>Takeoff</name>
<description>
<name>Takeoff</name>
<description>
This tutorial starts from Half-Moon Bay (KHAF), a small airport on the coast near San Francisco, in clear, still, weather.
This tutorial will teach you how to take-off, and climb at 600 feet per minute. You will level off at 1000ft to complete the tutorial.
</description>
<audio-dir>Tutorials/takeoff</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KHAF</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>-9999</latitude-deg>
<longitude-deg>-9999</longitude-deg>
<heading-deg>0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<init>
<set>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</set>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.2</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
</init>
<step>
<message>At the start of the take-off roll, you will control the direction of the aircraft using the
</description>
<audio-dir>Tutorials/takeoff</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KHAF</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>-9999</latitude-deg>
<longitude-deg>-9999</longitude-deg>
<heading-deg>0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<init>
<set>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</set>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.2</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
</init>
<step>
<message>At the start of the take-off roll, you will control the direction of the aircraft using the
nose-wheel steering and rudder. As the aircraft takes off, you will use the ailerons and elevator
to control the direction and attitude of the aircraft.
</message>
<wait>10</wait>
</step>
<step>
<message>
</message>
<wait>10</wait>
</step>
<step>
<message>
The nose-wheel and rudder is controlled using 0/Enter on the numeric keypad, or by using the mouse
in "yoke" mode with the left mouse button held down.
To switch the mouse to yoke mode, press the right mouse button until it displays as a + sign.
</message>
<wait>10</wait>
</step>
<step>
<message>Release the parking brakes using Shift-B</message>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<error>
<message>Release the parking brake using Shift B</message>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</error>
</step>
<step>
<message>Smoothly apply full power using PgUp, controlling the direction using the nosewheel.</message>
<error>
<message>Release the parking brake using Shift B</message>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</error>
<error>
<message>Apply full throttle for take-off.</message>
<condition>
<less-than>
<property>/controls/engines/current-engine/throttle</property>
<value>0.95</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/velocities/airspeed-kt</property>
<value>5.0</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Stay on the center-line of the runway using the rudder. Steer using the mouse with the left button held down, or using 0/Enter on the numeric keypad</message>
<exit>
<condition>
<greater-than>
<property>/velocities/airspeed-kt</property>
<value>45.0</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Let the aircraft lift off at 65 knots and climb straight out on heading 120 at 600 feet per minute.</message>
<error>
<message>Gently raise the nose, by pressing the down key on the keypad, or moving the mouse back slightly.</message>
<condition>
<equals>
<property>/gear/gear[0]/wow</property>
<value>1</value>
</equals>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>300</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Continue your climb on heading 120 at 600 feet per minute to 1000 feet.</message>
<error>
<message>Your climb angle is too shallow - raise the nose very slightly to increase your climb rate.</message>
<condition>
<less-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>400</value>
</less-than>
</condition>
</error>
<error>
<message>Your climb angle is too great - lower the nose slightly to decrease your climb rate.</message>
<condition>
<greater-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>900</value>
</greater-than>
</condition>
</error>
<error>
<message>You are heading too far left, Turn right slightly to heading 120.</message>
<condition>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>110</value>
</less-than>
</condition>
</error>
<error>
<message>You are heading too far right, Turn left slightly to heading 120.</message>
<condition>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>130</value>
</greater-than>
</condition>
</error>
<error>
<message>You are in danger of being "behind the power curve". Drop the nose to speed up to 70 knots.</message>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>69.0</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1000</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Level off at between 1000 and 1100 feet.</message>
<error>
<message>You are too low</message>
<condition>
<less-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1000</value>
</less-than>
</condition>
</error>
<error>
<message>You are too high</message>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1100</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1000</value>
</greater-than>
<less-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1100</value>
</less-than>
<less-than>
<property>instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>150</value>
</less-than>
<greater-than>
<property>instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>-150</value>
</greater-than>
</and>
</condition>
</exit>
</step>
<end>
<message>Congratulations, you've successfully taken off. Now try landing!</message>
</end>
</message>
<wait>10</wait>
</step>
<step>
<message>Release the parking brakes using Shift-B</message>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<error>
<message>Release the parking brake using Shift B</message>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</error>
</step>
<step>
<message>Smoothly apply full power using PgUp, controlling the direction using the nosewheel.</message>
<error>
<message>Release the parking brake using Shift B</message>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</error>
<error>
<message>Apply full throttle for take-off.</message>
<condition>
<less-than>
<property>/controls/engines/current-engine/throttle</property>
<value>0.95</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/velocities/airspeed-kt</property>
<value>5.0</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Stay on the center-line of the runway using the rudder. Steer using the mouse with the left button held down, or using 0/Enter on the numeric keypad</message>
<exit>
<condition>
<greater-than>
<property>/velocities/airspeed-kt</property>
<value>45.0</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Let the aircraft lift off at 65 knots and climb straight out on heading 120 at 600 feet per minute.</message>
<error>
<message>Gently raise the nose, by pressing the down key on the keypad, or moving the mouse back slightly.</message>
<condition>
<equals>
<property>/gear/gear[0]/wow</property>
<value>1</value>
</equals>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>300</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Continue your climb on heading 120 at 600 feet per minute to 1000 feet.</message>
<error>
<message>Your climb angle is too shallow - raise the nose very slightly to increase your climb rate.</message>
<condition>
<less-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>400</value>
</less-than>
</condition>
</error>
<error>
<message>Your climb angle is too great - lower the nose slightly to decrease your climb rate.</message>
<condition>
<greater-than>
<property>/instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>900</value>
</greater-than>
</condition>
</error>
<error>
<message>You are heading too far left, Turn right slightly to heading 120.</message>
<condition>
<less-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>110</value>
</less-than>
</condition>
</error>
<error>
<message>You are heading too far right, Turn left slightly to heading 120.</message>
<condition>
<greater-than>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<value>130</value>
</greater-than>
</condition>
</error>
<error>
<message>You are in danger of being "behind the power curve". Drop the nose to speed up to 70 knots.</message>
<condition>
<less-than>
<property>/velocities/airspeed-kt</property>
<value>69.0</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1000</value>
</greater-than>
</condition>
</exit>
</step>
<step>
<message>Level off at between 1000 and 1100 feet.</message>
<error>
<message>You are too low</message>
<condition>
<less-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1000</value>
</less-than>
</condition>
</error>
<error>
<message>You are too high</message>
<condition>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1100</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<and>
<greater-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1000</value>
</greater-than>
<less-than>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<value>1100</value>
</less-than>
<less-than>
<property>instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>150</value>
</less-than>
<greater-than>
<property>instrumentation/vertical-speed-indicator/indicated-speed-fpm</property>
<value>-150</value>
</greater-than>
</and>
</condition>
</exit>
</step>
<end>
<message>Congratulations, you've successfully taken off. Now try landing!</message>
</end>
</PropertyList>

View file

@ -1,436 +1,444 @@
<?xml version="1.0"?>
<PropertyList>
<name>Taxiing</name>
<description>
<name>Taxiing</name>
<description>
This tutorial covers moving the aircraft around on the ground, from the parking position to the run-up area.
For more information on taxiing, see Section 2-9 of the FAA Airplane Flying Handbook available at http://www.faa.gov/library/manuals/aircraft/airplane_handbook/.
</description>
<audio-dir>Tutorials/taxiing</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KLVK</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>37.6952</latitude-deg>
<longitude-deg>-121.8167</longitude-deg>
<heading-deg>175.0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
</description>
<targets>
<j1>
<!-- Turn right onto taxiway -->
<longitude-deg>-121.81664</longitude-deg>
<latitude-deg>37.6949</latitude-deg>
</j1>
<audio-dir>Tutorials/taxiing</audio-dir>
<timeofday>morning</timeofday>
<presets>
<airport-id>KLVK</airport-id>
<on-ground>1</on-ground>
<runway>12</runway>
<altitude-ft>-9999</altitude-ft>
<latitude-deg>37.6952</latitude-deg>
<longitude-deg>-121.8167</longitude-deg>
<heading-deg>175.0</heading-deg>
<airspeed-kt>0</airspeed-kt>
<glideslope-deg>0</glideslope-deg>
<offset-azimuth-deg>0</offset-azimuth-deg>
<offset-distance-nm>0</offset-distance-nm>
</presets>
<j2>
<!-- Mention differential braking -->
<longitude-deg>-121.82258</longitude-deg>
<latitude-deg>37.6949</latitude-deg>
</j2>
<targets>
<j1>
<!-- Turn right onto taxiway -->
<longitude-deg>-121.81664</longitude-deg>
<latitude-deg>37.6949</latitude-deg>
</j1>
<j2>
<!-- Mention differential braking -->
<longitude-deg>-121.82258</longitude-deg>
<latitude-deg>37.6949</latitude-deg>
</j2>
<j3>
<!-- Left turn in taxiway -->
<longitude-deg>-121.8250</longitude-deg>
<latitude-deg>37.69498</latitude-deg>
</j3>
<a1>
<!-- Right turn onto taxiway A -->
<longitude-deg>-121.8251</longitude-deg>
<latitude-deg>37.694616</latitude-deg>
</a1>
<a2>
<!-- Runup aread -->
<longitude-deg>-121.8294</longitude-deg>
<latitude-deg>37.69459</latitude-deg>
</a2>
</targets>
<j3>
<!-- Left turn in taxiway -->
<longitude-deg>-121.8250</longitude-deg>
<latitude-deg>37.69498</latitude-deg>
</j3>
<a1>
<!-- Right turn onto taxiway A -->
<longitude-deg>-121.8251</longitude-deg>
<latitude-deg>37.694616</latitude-deg>
</a1>
<a2>
<!-- Runup aread -->
<longitude-deg>-121.8294</longitude-deg>
<latitude-deg>37.69459</latitude-deg>
</a2>
</targets>
<init>
<set>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</set>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.2</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
</init>
<step>
<message>In this lesson we'll taxi the aircraft from its parking position infront of the FBO,
along taxiways Juliet and Alpha to the run-up area near runway 07L.</message>
<nasal>
<script>
# Script to simulate holding down the starter button until the engine starts
var starter = func() {
setprop("/controls/switches/starter", 1);
if (! getprop("/engines/active-engine/running")) {
settimer(starter, 0);
}
};
# The FDM resets the starter property on each FDM cycle. By effectively starting
# a number of threads to continually keep setting the starter to true, we can
# get around this and give the engine the opportunity to catch.
starter();
starter();
starter();
starter();
starter();
</script>
</nasal>
</step>
<step>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<message>I've already started the engine. Press Shift-B to release the parking brake. Throttle up to about
20% to move forward slightly, then hold b to check that the normal brakes work.</message>
<error>
<message>The parking brake is still on. Release it by pressing Shift-B.</message>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</error>
<error>
<message>Throttle up to about 20% to move forward slightly.</message>
<condition>
<and>
<equals>
<init>
<set>
<property>/controls/gear/brake-parking</property>
<value>0</value>
</equals>
<less-than>
<value>1</value>
</set>
<set>
<property>/controls/flight/flaps</property>
<value>0.0</value>
</set>
<set>
<property>/controls/switches/magnetos</property>
<value>3</value>
</set>
<set>
<property>/controls/engines/current-engine/throttle</property>
<value>0.15</value>
</less-than>
</and>
</condition>
</error>
<error>
<message>Apply the brakes by pressing b.</message>
<condition>
<and>
<equals>
<property>/controls/gear/brake-parking</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
</and>
</condition>
</error>
<exit>
<condition>
<and>
<equals>
<property>/controls/gear/brake-parking</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>1</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>1</value>
</equals>
</and>
</condition>
</exit>
</step>
<value>0.2</value>
</set>
<set>
<property>/controls/switches/starter</property>
<value>true</value>
</set>
<set>
<property>/instrumentation/adf/frequencies/selected-khz</property>
<value>340</value>
</set>
<set>
<property>/environment/weather-scenario</property>
<value>Fair weather</value>
</set>
<set>
<property>/controls/flight/elevator-trim</property>
<value>0.17</value>
</set>
</init>
<step>
<message>Keep applying the brakes. You can steer the aircraft on the ground by either using 0/Enter on the
<step>
<message>In this lesson we'll taxi the aircraft from its parking position infront of the FBO,
along taxiways Juliet and Alpha to the run-up area near runway 07L.</message>
<nasal>
<script>
# Script to simulate holding down the starter button until the engine starts
var starter = func() {
setprop("/controls/switches/starter", 1);
if (!getprop("/engines/active-engine/running")) {
settimer(starter, 0);
}
};
# The FDM resets the starter property on each FDM cycle. By effectively starting
# a number of threads to continually keep setting the starter to true, we can
# get around this and give the engine the opportunity to catch.
starter();
starter();
starter();
starter();
starter();
</script>
</nasal>
</step>
<step>
<set>
<property>/controls/switches/starter</property>
<value>false</value>
</set>
<message>I've already started the engine. Press Shift-B to release the parking brake. Throttle up to about
20% to move forward slightly, then hold b to check that the normal brakes work.</message>
<error>
<message>The parking brake is still on. Release it by pressing Shift-B.</message>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</error>
<error>
<message>Throttle up to about 20% to move forward slightly.</message>
<condition>
<and>
<equals>
<property>/controls/gear/brake-parking</property>
<value>0</value>
</equals>
<less-than>
<property>/controls/engines/current-engine/throttle</property>
<value>0.15</value>
</less-than>
</and>
</condition>
</error>
<error>
<message>Apply the brakes by pressing b.</message>
<condition>
<and>
<equals>
<property>/controls/gear/brake-parking</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
</and>
</condition>
</error>
<exit>
<condition>
<and>
<equals>
<property>/controls/gear/brake-parking</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>1</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>1</value>
</equals>
</and>
</condition>
</exit>
</step>
<step>
<message>Keep applying the brakes. You can steer the aircraft on the ground by either using 0/Enter on the
numeric keypad, or using the mouse in yoke mode (+) with the left mouse button held down. If you need to slow
down, just press b to apply the brakes.</message>
<wait>10</wait>
<error>
<message>Keep the brakes on until I tell you to start taxiing.</message>
<condition>
<or>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
</or>
</condition>
</error>
</step>
<wait>10</wait>
<step>
<message>Release the brakes and taxi forwards. You may need to apply a little throttle to get going. Make a right turn onto taxiway Juliet.</message>
<wait>5</wait>
<error>
<message>That's left, not right.</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>-135.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>135.0</value>
</greater-than>
</or>
</condition>
</error>
<error>
<message>Apply a little throttle to get going, but then reduce it once you're moving.</message>
<condition>
<less-than>
<property>/velocities/groundspeed-kt</property>
<value>1.0</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<and>
<less-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>20.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>-20.0</value>
</greater-than>
</and>
</condition>
<error>
<message>Keep the brakes on until I tell you to start taxiing.</message>
<condition>
<or>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
<equals>
<property>/controls/gear/brake-left</property>
<value>0</value>
</equals>
</or>
</condition>
</error>
</step>
</exit>
</step>
<step>
<message>Release the brakes and taxi forwards. You may need to apply a little throttle to get going. Make a right turn onto taxiway Juliet.</message>
<wait>5</wait>
<step>
<message>Continue taxiing along taxiway Juliet. Keep the nosewheel on the yellow line. Don't allow the aircraft to go too fast - use b to brake if you need to. </message>
<error>
<message>
<error>
<message>That's left, not right.</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>-135.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>135.0</value>
</greater-than>
</or>
</condition>
</error>
<error>
<message>Apply a little throttle to get going, but then reduce it once you're moving.</message>
<condition>
<less-than>
<property>/velocities/groundspeed-kt</property>
<value>1.0</value>
</less-than>
</condition>
</error>
<exit>
<condition>
<and>
<less-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>20.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>-20.0</value>
</greater-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Continue taxiing along taxiway Juliet. Keep the nosewheel on the yellow line. Don't allow the aircraft to go too fast - use b to brake if you need to. </message>
<error>
<message>
You're straying off the taxiway. Keep heading on taxiway Juliet, keeping your nosewheel on the yellow line.
</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>-20.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>20.0</value>
</greater-than>
</or>
</condition>
</error>
<error>
<message>You're going too fast. Reduce your throttle slightly and apply your brakes.</message>
<condition>
<greater-than>
<property>/velocities/groundspeed-kt</property>
<value>10.0</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<less-than>
<property>/sim/tutorials/targets/j2/distance-m</property>
<value>150.0</value>
</less-than>
</condition>
</exit>
</step>
</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>-20.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/j2/direction-deg</property>
<value>20.0</value>
</greater-than>
</or>
</condition>
</error>
<error>
<message>You're going too fast. Reduce your throttle slightly and apply your brakes.</message>
<condition>
<greater-than>
<property>/velocities/groundspeed-kt</property>
<value>10.0</value>
</greater-than>
</condition>
</error>
<step>
<message>If you need to turn very tightly, you can apply differential braking, and only brake one wheel, by pressing ',' for the left, or '.' for the right.</message>
<error>
<message>
<exit>
<condition>
<less-than>
<property>/sim/tutorials/targets/j2/distance-m</property>
<value>150.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>If you need to turn very tightly, you can apply differential braking, and only brake one wheel, by pressing ',' for the left, or '.' for the right.</message>
<error>
<message>
You're straying off the taxiway. Keep your nosewheel on the yellow line.
</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/j3/direction-deg</property>
<value>-20.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/j3/direction-deg</property>
<value>20.0</value>
</greater-than>
</or>
</condition>
</error>
<error>
<message>You're going too fast. Reduce your throttle slightly and apply your brakes.</message>
<condition>
<greater-than>
<property>/velocities/groundspeed-kt</property>
<value>10.0</value>
</greater-than>
</condition>
</error>
<exit>
<condition>
<less-than>
<property>/sim/tutorials/targets/j3/distance-m</property>
<value>100.0</value>
</less-than>
</condition>
</exit>
</step>
</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/j3/direction-deg</property>
<value>-20.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/j3/direction-deg</property>
<value>20.0</value>
</greater-than>
</or>
</condition>
</error>
<error>
<message>You're going too fast. Reduce your throttle slightly and apply your brakes.</message>
<condition>
<greater-than>
<property>/velocities/groundspeed-kt</property>
<value>10.0</value>
</greater-than>
</condition>
</error>
<step>
<message>The taxiway turns left here. Slow down by applying some brakes (b) and follow it round.</message>
<error>
<message>
You're straying off the taxiway. Turn left.
</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/a1/direction-deg</property>
<value>-45.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/a1/direction-deg</property>
<value>45.0</value>
</greater-than>
</or>
</condition>
</error>
<exit>
<condition>
<less-than>
<property>/sim/tutorials/targets/a1/distance-m</property>
<value>25.0</value>
</less-than>
</condition>
</exit>
</step>
<exit>
<condition>
<less-than>
<property>/sim/tutorials/targets/j3/distance-m</property>
<value>100.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>The taxiway turns left here. Slow down by applying some brakes (b) and follow it round.</message>
<error>
<message>You're straying off the taxiway. Turn left.</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/a1/direction-deg</property>
<value>-45.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/a1/direction-deg</property>
<value>45.0</value>
</greater-than>
</or>
</condition>
</error>
<step>
<message>We're now at the intersection of taxiways Juliet, Golf and Alpha. Turn right onto taxiway Alpha.</message>
<error>
<message>That's left, not right.</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>-135.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>135.0</value>
</greater-than>
</or>
</condition>
</error>
<exit>
<condition>
<and>
<less-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>20.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>-20.0</value>
</greater-than>
</and>
</condition>
</exit>
</step>
<exit>
<condition>
<less-than>
<property>/sim/tutorials/targets/a1/distance-m</property>
<value>25.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>Continue taxiing along taxiway Alpha to the end of the taxiway. </message>
<error>
<message>
<step>
<message>We're now at the intersection of taxiways Juliet, Golf and Alpha. Turn right onto taxiway Alpha.</message>
<error>
<message>That's left, not right.</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>-135.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>135.0</value>
</greater-than>
</or>
</condition>
</error>
<exit>
<condition>
<and>
<less-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>20.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>-20.0</value>
</greater-than>
</and>
</condition>
</exit>
</step>
<step>
<message>Continue taxiing along taxiway Alpha to the end of the taxiway. </message>
<error>
<message>
You're straying off the taxiway. Keep heading on taxiway Alpha, keeping your nosewheel on the yellow line.
</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>-15.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>15.0</value>
</greater-than>
</or>
</condition>
</error>
<exit>
<condition>
<less-than>
<property>/sim/tutorials/targets/a2/distance-m</property>
<value>60.0</value>
</less-than>
</condition>
</exit>
</step>
</message>
<condition>
<or>
<less-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>-15.0</value>
</less-than>
<greater-than>
<property>/sim/tutorials/targets/a2/direction-deg</property>
<value>15.0</value>
</greater-than>
</or>
</condition>
</error>
<step>
<message>We've reached the run-up area. Brake slowly to a stop and set the parking brake (shift-b).</message>
<exit>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</exit>
</step>
<exit>
<condition>
<less-than>
<property>/sim/tutorials/targets/a2/distance-m</property>
<value>60.0</value>
</less-than>
</condition>
</exit>
</step>
<step>
<message>We've reached the run-up area. Brake slowly to a stop and set the parking brake (shift-b).</message>
<exit>
<condition>
<equals>
<property>/controls/gear/brake-parking</property>
<value>1</value>
</equals>
</condition>
</exit>
</step>
<end>
<message>We've reached the run-up area. Well done.</message>
</end>
<end>
<message>We've reached the run-up area. Well done.</message>
</end>
</PropertyList>

File diff suppressed because it is too large Load diff

View file

@ -1,42 +1,48 @@
<?xml version="1.0"?>
<PropertyList>
<title>Cessna 172P</title>
<key>
<name>c</name>
<desc>Toggle cockpit on/off</desc>
</key>
<key>
<name>P</name>
<desc>Toggle high resolution panel on/off</desc>
</key>
<key>
<name>Ctrl-c</name>
<desc>Toggle panel hotspots and labels</desc>
</key>
<key>
<name>l/L</name>
<desc>Increase/decrease panel lighting</desc>
</key>
<key>
<name>r/R</name>
<desc>Move water rudders up/down (amphibious)</desc>
</key>
<line/>
<line>For checklists, see under Help->Aircraft Checklists</line>
<line/>
<line>To show the high resolution panel for a multi-</line>
<line>computer setup, press P.</line>
<line/>
<line>Takeoff: no flaps, full throttle, rotate at 55 KIAS</line>
<line>Climbout: no flaps, full throttle, 80 KIAS</line>
<line>Cruise: Throttle 65%, Mixture rich of peak</line>
<line>Landing: full flaps, 65 KIAS</line>
<line/>
<line>_________V Speeds_________</line>
<line>Vso: 33kts</line>
<line>Vx: 56kts</line>
<line>Vy: 76kts</line>
<line>Va: 99kts</line>
<line>Vne: 158kts</line>
<line>Approach: 65kts</line>
<line>Best Glide: 65kts</line>
<title>Cessna 172P</title>
<key>
<name>c</name>
<desc>Toggle cockpit on/off</desc>
</key>
<key>
<name>P</name>
<desc>Toggle high resolution panel on/off</desc>
</key>
<key>
<name>Ctrl-c</name>
<desc>Toggle panel hotspots and labels</desc>
</key>
<key>
<name>l/L</name>
<desc>Increase/decrease panel lighting</desc>
</key>
<key>
<name>r/R</name>
<desc>Move water rudders up/down (float plane)</desc>
</key>
<line/>
<line>For checklists, see under Help-&gt;Aircraft Checklists</line>
<line/>
<line>To show the high resolution panel for a multi-</line>
<line>computer setup, press P.</line>
<line/>
<line>Takeoff: no flaps, full throttle, rotate at 55 KIAS</line>
<line>Climbout: no flaps, full throttle, 80 KIAS</line>
<line>Cruise: Throttle 65%, Mixture rich of peak</line>
<line>Landing: full flaps, 65 KIAS</line>
<line/>
<line>_________V Speeds_________</line>
<line>Vso: 33kts</line>
<line>Vx: 56kts</line>
<line>Vy: 76kts</line>
<line>Va: 99kts</line>
<line>Vne: 158kts</line>
<line>Approach: 65kts</line>
<line>Best Glide: 65kts</line>
</PropertyList>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,426 +1,426 @@
<?xml version="1.0"?>
<!-- C172p-detailed
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-->
<PropertyList>
<name>aircraft-dialog</name>
<layout>vbox</layout>
<resizable>false</resizable>
<modal>false</modal>
<draggable>true</draggable>
<nasal>
<open>
# Bush kit
var p = getprop("fdm/jsbsim/bushkit");
setprop("/sim/model/c172p/bushkit_flag_0", 0);
setprop("/sim/model/c172p/bushkit_flag_1", 0);
setprop("/sim/model/c172p/bushkit_flag_2", 0);
setprop("/sim/model/c172p/bushkit_flag_3", 0);
setprop("/sim/model/c172p/bushkit_flag_4", 0);
setprop("/sim/model/c172p/bushkit_flag_" ~ p, 1);
# Engine power
var p = getprop("/controls/engines/active-engine");
setprop("sim/model/c172p/engine_flag_0", 0);
setprop("sim/model/c172p/engine_flag_1", 0);
setprop("sim/model/c172p/engine_flag_" ~ p, 1);
</open>
</nasal>
<group>
<layout>hbox</layout>
<empty><stretch>true</stretch></empty>
<text>
<label>Aircraft Options</label>
</text>
<empty><stretch>true</stretch></empty>
<button>
<legend/>
<key>Esc</key>
<pref-width>16</pref-width>
<pref-height>16</pref-height>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<padding>6</padding>
<group>
<layout>vbox</layout>
<checkbox>
<halign>left</halign>
<label>Start with engine running</label>
<property>/fdm/jsbsim/running</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Complex start up procedures</label>
<property>/fdm/jsbsim/complex</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
</group>
<hrule/>
<group>
<layout>hbox</layout>
<checkbox>
<halign>left</halign>
<label>Damage</label>
<property>/fdm/jsbsim/settings/damage</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<button>
<halign>right</halign>
<legend>Repair</legend>
<pref-width>60</pref-width>
<pref-height>28</pref-height>
<visible>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</visible>
<binding>
<command>nasal</command>
<script>c172p.repair_damage();electrical.reset_battery_and_circuit_breakers();c172p.click("engine-repair", 6.0)</script>
</binding>
</button>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<checkbox>
<halign>left</halign>
<label>Show shadow</label>
<property>/sim/rendering/shadow-volume</property>
<live>true</live>
<binding>
<command>property-toggle</command>
<property>/sim/rendering/shadow-volume</property>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Human models</label>
<property>/sim/model/occupants</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Disable frost and fog</label>
<property>/fdm/jsbsim/weather</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Show registration on panel</label>
<property>/sim/model/c172p/immat-on-panel</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<text>
<label>Engine power options</label>
<halign>center</halign>
</text>
<group>
<layout>hbox</layout>
<radio>
<halign>left</halign>
<label>160 HP</label>
<property>sim/model/c172p/engine_flag_0</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("/controls/engines/active-engine", 0);
setprop("sim/model/c172p/engine_flag_0", 1);
setprop("sim/model/c172p/engine_flag_1", 0);
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>180 HP</label>
<property>sim/model/c172p/engine_flag_1</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("/controls/engines/active-engine", 1);
setprop("sim/model/c172p/engine_flag_0", 0);
setprop("sim/model/c172p/engine_flag_1", 1);
</script>
</binding>
</radio>
</group>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<text>
<label>Landing gear options</label>
<halign>center</halign>
</text>
<group>
<layout>hbox</layout>
<radio>
<halign>left</halign>
<label>Default</label>
<property>sim/model/c172p/bushkit_flag_0</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 0);
setprop("sim/model/c172p/bushkit_flag_0",1);
setprop("sim/model/c172p/bushkit_flag_1",0);
setprop("sim/model/c172p/bushkit_flag_2",0);
setprop("sim/model/c172p/bushkit_flag_3",0);
setprop("sim/model/c172p/bushkit_flag_4",0);
# Select 160 HP engine
setprop("/controls/engines/active-engine", 0);
setprop("sim/model/c172p/engine_flag_0", 1);
setprop("sim/model/c172p/engine_flag_1", 0);
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>26"</label>
<property>sim/model/c172p/bushkit_flag_1</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 1);
setprop("sim/model/c172p/bushkit_flag_0",0);
setprop("sim/model/c172p/bushkit_flag_1",1);
setprop("sim/model/c172p/bushkit_flag_2",0);
setprop("sim/model/c172p/bushkit_flag_3",0);
setprop("sim/model/c172p/bushkit_flag_4",0);
# Select 160 HP engine
setprop("/controls/engines/active-engine", 0);
setprop("sim/model/c172p/engine_flag_0", 1);
setprop("sim/model/c172p/engine_flag_1", 0);
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>36"</label>
<property>sim/model/c172p/bushkit_flag_2</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 2);
setprop("sim/model/c172p/bushkit_flag_0",0);
setprop("sim/model/c172p/bushkit_flag_1",0);
setprop("sim/model/c172p/bushkit_flag_2",1);
setprop("sim/model/c172p/bushkit_flag_3",0);
setprop("sim/model/c172p/bushkit_flag_4",0);
# Select 160 HP engine
setprop("/controls/engines/active-engine", 0);
setprop("sim/model/c172p/engine_flag_0", 1);
setprop("sim/model/c172p/engine_flag_1", 0);
</script>
</binding>
</radio>
</group>
<group>
<layout>hbox</layout>
<radio>
<halign>left</halign>
<label>Floats</label>
<property>sim/model/c172p/bushkit_flag_3</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 3);
setprop("sim/model/c172p/bushkit_flag_0",0);
setprop("sim/model/c172p/bushkit_flag_1",0);
setprop("sim/model/c172p/bushkit_flag_2",0);
setprop("sim/model/c172p/bushkit_flag_3",1);
setprop("sim/model/c172p/bushkit_flag_4",0);
# Select 180 HP engine
setprop("/controls/engines/active-engine", 1);
setprop("sim/model/c172p/engine_flag_0", 0);
setprop("sim/model/c172p/engine_flag_1", 1);
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>Amphibious</label>
<property>sim/model/c172p/bushkit_flag_4</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 4);
setprop("sim/model/c172p/bushkit_flag_0",0);
setprop("sim/model/c172p/bushkit_flag_1",0);
setprop("sim/model/c172p/bushkit_flag_2",0);
setprop("sim/model/c172p/bushkit_flag_3",0);
setprop("sim/model/c172p/bushkit_flag_4",1);
# Select 180 HP engine
setprop("/controls/engines/active-engine", 1);
setprop("sim/model/c172p/engine_flag_0", 0);
setprop("sim/model/c172p/engine_flag_1", 1);
</script>
</binding>
</radio>
</group>
</group>
</group>
<hrule/>
<group>
<layout>hbox</layout>
<default-padding>6</default-padding>
<empty><stretch>true</stretch></empty>
<button>
<legend>Close</legend>
<equal>true</equal>
<key>Esc</key>
<default>true</default>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
</PropertyList>
<?xml version="1.0"?>
<!-- C172p-detailed
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
-->
<PropertyList>
<name>aircraft-dialog</name>
<layout>vbox</layout>
<resizable>false</resizable>
<modal>false</modal>
<draggable>true</draggable>
<nasal>
<open>
# Bush kit
var p = getprop("fdm/jsbsim/bushkit");
setprop("/sim/model/c172p/bushkit_flag_0", 0);
setprop("/sim/model/c172p/bushkit_flag_1", 0);
setprop("/sim/model/c172p/bushkit_flag_2", 0);
setprop("/sim/model/c172p/bushkit_flag_3", 0);
setprop("/sim/model/c172p/bushkit_flag_4", 0);
setprop("/sim/model/c172p/bushkit_flag_" ~ p, 1);
# Engine power
var p = getprop("/controls/engines/active-engine");
setprop("sim/model/c172p/engine_flag_0", 0);
setprop("sim/model/c172p/engine_flag_1", 0);
setprop("sim/model/c172p/engine_flag_" ~ p, 1);
</open>
</nasal>
<group>
<layout>hbox</layout>
<empty><stretch>true</stretch></empty>
<text>
<label>Aircraft Options</label>
</text>
<empty><stretch>true</stretch></empty>
<button>
<legend/>
<key>Esc</key>
<pref-width>16</pref-width>
<pref-height>16</pref-height>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<padding>6</padding>
<group>
<layout>vbox</layout>
<checkbox>
<halign>left</halign>
<label>Start with engine running</label>
<property>/fdm/jsbsim/running</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Complex start up procedures</label>
<property>/fdm/jsbsim/complex</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
</group>
<hrule/>
<group>
<layout>hbox</layout>
<checkbox>
<halign>left</halign>
<label>Damage</label>
<property>/fdm/jsbsim/settings/damage</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<button>
<halign>right</halign>
<legend>Repair</legend>
<pref-width>60</pref-width>
<pref-height>28</pref-height>
<visible>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</visible>
<binding>
<command>nasal</command>
<script>c172p.repair_damage();electrical.reset_battery_and_circuit_breakers();c172p.click("engine-repair", 6.0)</script>
</binding>
</button>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<checkbox>
<halign>left</halign>
<label>Show shadow</label>
<property>/sim/rendering/shadow-volume</property>
<live>true</live>
<binding>
<command>property-toggle</command>
<property>/sim/rendering/shadow-volume</property>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Human models</label>
<property>/sim/model/occupants</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Disable frost and fog</label>
<property>/fdm/jsbsim/weather</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Show registration on panel</label>
<property>/sim/model/c172p/immat-on-panel</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<text>
<label>Engine power options</label>
<halign>center</halign>
</text>
<group>
<layout>hbox</layout>
<radio>
<halign>left</halign>
<label>160 HP</label>
<property>sim/model/c172p/engine_flag_0</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("/controls/engines/active-engine", 0);
setprop("sim/model/c172p/engine_flag_0", 1);
setprop("sim/model/c172p/engine_flag_1", 0);
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>180 HP</label>
<property>sim/model/c172p/engine_flag_1</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("/controls/engines/active-engine", 1);
setprop("sim/model/c172p/engine_flag_0", 0);
setprop("sim/model/c172p/engine_flag_1", 1);
</script>
</binding>
</radio>
</group>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<text>
<label>Landing gear options</label>
<halign>center</halign>
</text>
<group>
<layout>hbox</layout>
<radio>
<halign>left</halign>
<label>Default</label>
<property>sim/model/c172p/bushkit_flag_0</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 0);
setprop("sim/model/c172p/bushkit_flag_0",1);
setprop("sim/model/c172p/bushkit_flag_1",0);
setprop("sim/model/c172p/bushkit_flag_2",0);
setprop("sim/model/c172p/bushkit_flag_3",0);
setprop("sim/model/c172p/bushkit_flag_4",0);
# Select 160 HP engine
setprop("/controls/engines/active-engine", 0);
setprop("sim/model/c172p/engine_flag_0", 1);
setprop("sim/model/c172p/engine_flag_1", 0);
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>26"</label>
<property>sim/model/c172p/bushkit_flag_1</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 1);
setprop("sim/model/c172p/bushkit_flag_0",0);
setprop("sim/model/c172p/bushkit_flag_1",1);
setprop("sim/model/c172p/bushkit_flag_2",0);
setprop("sim/model/c172p/bushkit_flag_3",0);
setprop("sim/model/c172p/bushkit_flag_4",0);
# Select 160 HP engine
setprop("/controls/engines/active-engine", 0);
setprop("sim/model/c172p/engine_flag_0", 1);
setprop("sim/model/c172p/engine_flag_1", 0);
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>36"</label>
<property>sim/model/c172p/bushkit_flag_2</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 2);
setprop("sim/model/c172p/bushkit_flag_0",0);
setprop("sim/model/c172p/bushkit_flag_1",0);
setprop("sim/model/c172p/bushkit_flag_2",1);
setprop("sim/model/c172p/bushkit_flag_3",0);
setprop("sim/model/c172p/bushkit_flag_4",0);
# Select 160 HP engine
setprop("/controls/engines/active-engine", 0);
setprop("sim/model/c172p/engine_flag_0", 1);
setprop("sim/model/c172p/engine_flag_1", 0);
</script>
</binding>
</radio>
</group>
<group>
<layout>hbox</layout>
<radio>
<halign>left</halign>
<label>Floats</label>
<property>sim/model/c172p/bushkit_flag_3</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 3);
setprop("sim/model/c172p/bushkit_flag_0",0);
setprop("sim/model/c172p/bushkit_flag_1",0);
setprop("sim/model/c172p/bushkit_flag_2",0);
setprop("sim/model/c172p/bushkit_flag_3",1);
setprop("sim/model/c172p/bushkit_flag_4",0);
# Select 180 HP engine
setprop("/controls/engines/active-engine", 1);
setprop("sim/model/c172p/engine_flag_0", 0);
setprop("sim/model/c172p/engine_flag_1", 1);
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>Amphibious</label>
<property>sim/model/c172p/bushkit_flag_4</property>
<live>true</live>
<enable>
<not>
<property>/sim/freeze/replay-state</property>
</not>
</enable>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
setprop("fdm/jsbsim/bushkit", 4);
setprop("sim/model/c172p/bushkit_flag_0",0);
setprop("sim/model/c172p/bushkit_flag_1",0);
setprop("sim/model/c172p/bushkit_flag_2",0);
setprop("sim/model/c172p/bushkit_flag_3",0);
setprop("sim/model/c172p/bushkit_flag_4",1);
# Select 180 HP engine
setprop("/controls/engines/active-engine", 1);
setprop("sim/model/c172p/engine_flag_0", 0);
setprop("sim/model/c172p/engine_flag_1", 1);
</script>
</binding>
</radio>
</group>
</group>
</group>
<hrule/>
<group>
<layout>hbox</layout>
<default-padding>6</default-padding>
<empty><stretch>true</stretch></empty>
<button>
<legend>Close</legend>
<equal>true</equal>
<key>Esc</key>
<default>true</default>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
</PropertyList>

View file

@ -3,6 +3,7 @@
<PropertyList>
<default>
<menu n="10">
<label>Cessna C172P</label>
<enabled type="bool">true</enabled>
@ -31,7 +32,7 @@
</binding>
</item>
<item>
<item>
<label>Flashlight</label>
<binding>
<command>nasal</command>
@ -41,10 +42,10 @@
<item>
<label>Show/Hide Yokes</label>
<binding>
<command>property-toggle</command>
<property>/sim/model/hide-yoke</property>
</binding>
<binding>
<command>property-toggle</command>
<property>/sim/model/hide-yoke</property>
</binding>
</item>
<item>
@ -55,6 +56,7 @@
</binding>
</item>
</menu>
</default>
</PropertyList>

BIN
Aircraft/c172p/splash6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 7 KiB