13,252
edits
m (Johan G moved page Common Aircraft Properties to Common aircraft properties: Sentence case title) |
(Major, yet still incomplete, cleanup; +rel: Aircraft-set.xml, Property tree; +cat: Property Tree, Aircraft enhancement) |
||
Line 6: | Line 6: | ||
With reference from: http://wiki.flightgear.org/Property_Tree/Reference | With reference from: http://wiki.flightgear.org/Property_Tree/Reference | ||
a suffix of norm means a normalised value | a suffix of norm means a normalised value for example a float/double of 0 to 1 to indicate full deployment or retraction of gears, as opposed to degrees. | ||
With common aircraft properties found in uncommon locations, assigning buttons in joysticks to certain functions became mostly a hit or miss affair. | With common aircraft properties found in uncommon locations, assigning buttons in joysticks to certain functions became mostly a hit or miss affair. For example speedbrakes and thrust reversers are found in different location in the property tree, even across official FlightGear planes! Without standard locations, joystick code tends to be aircraft specific. | ||
There was an [http://code.google.com/p/flightgear-bugs/issues/detail?id=1173 attempt to unify it all with a nasal script] but after | There was an [http://code.google.com/p/flightgear-bugs/issues/detail?id=1173 attempt to unify it all with a nasal script] but after consultation and comments with others, this attempt was replaced with the solution to standardise common aircraft properties in standardised locations. | ||
This document will exhaustively list property tree locations where aircraft developers should store their common aircraft properties (if not alias them). | This document will exhaustively list property tree locations where aircraft developers should store their common aircraft properties (if not alias them). | ||
Line 16: | Line 16: | ||
Values in states should be used to set states and to animate cockpit internals like levers. Values in transition properties should be used to animate external objects such as animating a retracting gear. | Values in states should be used to set states and to animate cockpit internals like levers. Values in transition properties should be used to animate external objects such as animating a retracting gear. | ||
define /sim/propertystd = 1 | define <code>/sim/propertystd = 1</code> | ||
==Gear== | ==Gear== | ||
Properties marked with an '✲' are standard across all aircraft and should always be set. For example, an old aircraft without any autobrakes should still define /controls/gear/autobrake although set it to 0 | Properties marked with an '✲' are standard across all aircraft and should always be set. For example, an old aircraft without any autobrakes should still define /controls/gear/autobrake although set it to 0 | ||
===States=== | |||
=== States=== | |||
/controls/gear is a backward compatible alias for /controls/gears<br /> | /controls/gear is a backward compatible alias for /controls/gears<br /> | ||
*In /controls/gears | *In <code>/controls/gears</code> | ||
** /controls/gears/brake-parking ✲<br />0 = Off<br />1 = On | **<code>/controls/gears/brake-parking</code> ✲<br /><code>0</code> = Off<br /><code>1</code> = On | ||
** /controls/gears/brake-left<br />a backward compatible alias for /controls/gears/gear[1]/brake (or the property for the left brake) | **<code>/controls/gears/brake-left</code><br />a backward compatible alias for <code>/controls/gears/gear[1]/brake</code> (or the property for the left brake) | ||
** /controls/gears/brake-right<br />a backward compatible alias for /controls/gears/gear[2]/brake (or the property for the right brake) | **<code>/controls/gears/brake-right</code><br />a backward compatible alias for <code>/controls/gears/gear[2]/brake</code> (or the property for the right brake) | ||
**<code>/controls/gears/inputs/pilot-pedal-toe-left</code><br />a backward compatible alias for <code>/controls/gears/brake-left</code> | |||
**<code>/controls/gears/inputs/pilot-pedal-toe-right</code><br />a backward compatible alias for <code>/controls/gears/brake-right</code> | |||
**<code>/controls/gears/inputs/pilot-pedal-heel-left</code> alias for | |||
**<code>/controls/gears/inputs/pilot-pedal-heel-right</code> alias for | |||
**<code>/controls/gears/inputs/copilot-pedal-toe-left</code><br />a backward compatible alias for <code>/controls/gears/brake-left</code> | |||
**<code>/controls/gears/inputs/copilot-pedal-toe-right</code><br />a backward compatible alias for <code>/controls/gears/brake-right</code> | |||
**<code>/controls/gears/inputs/copilot-pedal-heel-left</code> alias for | |||
**<code>/controls/gears/inputs/copilot-pedal-heel-right</code> alias for | |||
**<code>/controls/gears/outputs/pilot-pedal-toe-left</code><br />a backward compatible alias for <code>/controls/gears/brake-left</code> | |||
**<code>/controls/gears/outputs/pilot-pedal-toe-right</code><br />a backward compatible alias for <code>/controls/gears/brake-right</code> | |||
**<code>/controls/gears/outputs/pilot-pedal-heel-left</code> alias for | |||
**<code>/controls/gears/outputs/pilot-pedal-heel-right</code> alias for | |||
**<code>/controls/gears/outputs/copilot-pedal-toe-left</code><br />a backward compatible alias for <code>/controls/gears/brake-left</code> | |||
**<code>/controls/gears/outputs/copilot-pedal-toe-right</code><br />a backward compatible alias for <code>/controls/gears/brake-right</code> | |||
**<code>/controls/gears/outputs/copilot-pedal-heel-left</code> alias for | |||
**<code>/controls/gears/outputs/copilot-pedal-heel-right</code> alias for | |||
** /controls/gears/ | **<code>/controls/gears/brake-chokes</code> ✲<br /><code>0</code> = Off<br /><code>1</code> = On | ||
** /controls/gears/ | **<code>/controls/gears/antiskid</code> ✲<br /><code>0</code> = Off<br /><code>1</code> = On | ||
** /controls/gears/ | **<code>/controls/gears/autobrake</code> ✲<br /><code>0</code> = Fully Off<br /><code>1</code> = Fully On | ||
** /controls/gears/ | **<code>/controls/gears/launchbar</code> ✲ | ||
** /controls/gears/ | **<code>/controls/gears/servicable</code> ✲ | ||
** /controls/gears/ | **<code>/controls/gears/brake-servicable</code> | ||
** /controls/gears/ | **<code>/controls/gears/brake-temperature</code> | ||
** /controls/gears/ | **<code>/controls/gears/brake-hydraulic-pressure</code> | ||
**<code>/controls/gears/tyre-temperature</code> | |||
**<code>/controls/gears/tyre-pressure</code> | |||
**<code>/controls/gears/brake-available</code> ✲ | |||
**<code>/controls/gears/retractable</code> ✲ | |||
**<code>/controls/gears/brake</code> ✲ | |||
**<code>/controls/gears/gear-down</code><br /><code>0</code> = Retracted<br /><code>1</code> = Extended | |||
<code>nosewheel-steering</code> alias for <code>gear[0]</code> | |||
<code>tailwheel-lock</code> alias for | |||
<code>wheel[n]/alternate-extension</code> alias for | |||
*In /controls/gears/gear[n]<br />Due to the complex nature of gear configuration, gear numbering is not enforced. However, where possible, 0=nose, 1=left, 2=right, 3=tail. And where there are multiple, | *In <code>/controls/gears/gear[n]</code><br />Due to the complex nature of gear configuration, gear numbering is not enforced. However, where possible, <code>0</code>=nose, <code>1</code>=left, <code>2</code>=right, <code>3</code>=tail. And where there are multiple, independent struts, they should be grouped under the side they appear. For example front strut on the left gear at <code>gear[1]/gear[0]</code> | ||
** /controls/gears/gear[n]/brakes/temperature | **<code>/controls/gears/gear[n]/brakes/temperature</code> | ||
** /controls/gears/gear[n]/brakes/hydraulic-pressure | **<code>/controls/gears/gear[n]/brakes/hydraulic-pressure</code> | ||
** /controls/gears/gear[n]/brakes/brake-pressure | **<code>/controls/gears/gear[n]/brakes/brake-pressure</code> | ||
** /controls/gears/gear[n]/brakes/available | **<code>/controls/gears/gear[n]/brakes/available</code> | ||
**<code>/controls/gears/gear[n]/tyre/temperature</code> | |||
**<code>/controls/gears/gear[n]/tyre/air-pressure-norm</code> | |||
**<code>/controls/gears/gear[n]/tyre/air-pressure-real</code> | |||
<code>water-brakes</code> | |||
<code>compression-ft</code> | |||
<code>compression-norm</code> | |||
<code>steering-norm</code> | |||
<code>tailhook</code> | |||
<code>lights</code> | |||
<code>lights-angle</code> | |||
wheel speed | wheel speed | ||
water rudder <-- should this be here? | water rudder <-- should this be here? | ||
===Transitions=== | ===Transitions=== | ||
*In /gears/gear[n] | *<code>In /gears/gear[n]</code> | ||
** /gears/gear[n]/position-norm<br />0 = Fully Retracted<br />0.x = Transitioning<br />1 = Fully Extended | **<code>/gears/gear[n]/position-norm</code><br /><code>0</code> = Fully Retracted<br /><code>0.x</code> = Transitioning<br /><code>1</code> = Fully Extended | ||
*In /controls/gears/gear[n] | *<code>In /controls/gears/gear[n]</code> | ||
brake-pressure 0 0.x 1 | |||
friction-ground | <code>brake-pressure</code> <code>0</code> <code>0.x</code> <code>1</code> | ||
friction-ground-real | |||
friction-bearing | <code>friction-ground</code> | ||
friction-bearing-real | |||
friction-side-slip | <code>friction-ground-real</code> | ||
friction-side-slip-real | |||
<code>friction-bearing</code> | |||
<code>friction-bearing-real</code> | |||
<code>friction-side-slip</code> | |||
<code>friction-side-slip-real</code> | |||
Line 98: | Line 118: | ||
engine | engine | ||
--thrust reversers | --thrust reversers | ||
Line 104: | Line 125: | ||
tailhook | tailhook | ||
==Radios== | |||
The following is for virtual devices. Should you use a a different radio, you should use your own structure and update these values. | |||
For example a user will set <code>comm[0]</code> frequency at <code>/instrumentation/comm[n]/frequencies/selected-int</code>. Your device should monitor this value and on change, assume an input. You then do your tests and own logic and set the <code>/instrumentation/comm[n]/output/selected-int</code>. The purpose of this dual step process is to account for faulty instruments. The frequency that FlightGear will then use for audio will be the output/selected-int | |||
To ignore failures, it is ok to alias output to input. Always set values on input though and FlightGear will read from output. Only the FlightGear {{Key press|F12}} menu may read from input. | |||
You should therefore your own input with the default input, and likewise with the outputs | You should therefore your own input with the default input, and likewise with the outputs | ||
Common across all radios in /instrumentation/*/<br /> | Common across all radios in <code>/instrumentation/*/</code><br />For example <code>/instrumentation/comm[1]/power/voltage-min</code> | ||
** <code>power/voltage-min</code> | |||
** | **<code>power/voltage-typical</code> | ||
** | **<code>power/voltage-max</code> | ||
** | **<code>power/current-typical</code> | ||
** | **<code>power/current-quiesecent</code> | ||
**<code>power/current-xmit</code> | |||
**<code>power/current-min</code> | |||
**<code>power/current-max</code> | |||
**<code>power/real-voltage</code> (current voltage it is getting) | |||
**<code>power/real-current</code> (current current it is getting) | |||
**<code>power/fused</code> | |||
**<code>power/short-after-fuse</code> | |||
**<code>power/short-before-fuse</code> | |||
**<code>operable</code> | |||
**<code>serviceable</code> (bool) | |||
Common across all radios in <code>/instrumentation/*/</code> except Transponder | |||
**<code>audio/squelch-xmit</code> | |||
**<code>audio/squelch-recv</code> | |||
**<code>audio/volume-xmit</code> | |||
**<code>audio/volume-recv</code> | |||
===Comms=== | ===Comms=== | ||
* In /instrumentation/comm[n]/ | *<code>In /instrumentation/comm[n]/</code> | ||
** /instrumentation/comm[n]/frequencies/selected-int | **<code>/instrumentation/comm[n]/frequencies/selected-int</code> | ||
** /instrumentation/comm[n]/frequencies/standby-int | **<code>/instrumentation/comm[n]/frequencies/standby-int</code> | ||
** /instrumentation/comm[n]/input/swap-btn | **<code>/instrumentation/comm[n]/input/swap-btn</code> | ||
** /instrumentation/comm[n]/input/test-btn | **<code>/instrumentation/comm[n]/input/test-btn</code> | ||
** /instrumentation/comm[n]/input/ptt-btn | **<code>/instrumentation/comm[n]/input/ptt-btn</code> | ||
** /instrumentation/comm[n]/output/selected-int | **<code>/instrumentation/comm[n]/output/selected-int</code> | ||
** /instrumentation/comm[n]/output/standby-int | **<code>/instrumentation/comm[n]/output/standby-int</code> | ||
** /instrumentation/comm[n]/illumination | **<code>/instrumentation/comm[n]/illumination</code> | ||
** /instrumentation/comm[n]/ptt | ** <code>/instrumentation/comm[n]/ptt</code> | ||
====Deprecated==== | ====Deprecated==== | ||
** frequencies/selected-mhz | **<code>frequencies/selected-mhz</code> | ||
** frequencies/standby-mhz | **<code>frequencies/standby-mhz</code> | ||
** volume<br />deprecated alias for /instrumentation/comm[n]/audio/volume-recv | **<code>volume</code><br />deprecated alias for <code>/instrumentation/comm[n]/audio/volume-recv</code> | ||
===Transponder=== | ===Transponder=== | ||
* In /instrumentation/transponder/ | * In <code>/instrumentation/transponder/</code> | ||
** altitude-valid | **<code>altitude-valid</code> | ||
** inputs/digit[n] LSB First | **<code>inputs/digit[n]</code> LSB First | ||
** inputs/ident-btn | **<code>inputs/ident-btn</code> | ||
** inputs/mode | **<code>inputs/mode</code> | ||
** inputs/altitude | **<code>inputs/altitude</code> | ||
** outputs/mode | **<code>outputs/mode</code> | ||
** outputs/altitude | **<code>outputs/altitude</code> | ||
** outputs/id-code | **<code>outputs/id-code</code> | ||
** outputs/ident | **<code>outputs/ident</code> | ||
====Deprecated==== | ====Deprecated==== | ||
* | * <code>id-code</code> | ||
* | *<code>ident</code> | ||
* | *<code>transmitted-id</code> | ||
* | *<code>/instrumentation/transponder/altitude</code> deprecated alias for <code>/instrumentation/transponder/inputs/altitude</code> | ||
* | *<code>/instrumentation/transponder/inputs/knob-mode</code> deprecated alias for ** <code>/instrumentation/transponder/inputs/mode</code> | ||
- <code>/instrumentation/adf</code> | |||
<code>adf-btn</code> | |||
<code>bfo-btn</code> | |||
<code>display-mode</code> | |||
<code>error-deg</code> | |||
<code>enroute-timer/running</code>, <code>start-time</code>, <code>time</code> | |||
<code>flight-timer</code> | |||
<code>frequencies/selected-khz</code>, <code>standby-khz</code> | |||
<code>ident</code> = BED | |||
<code>ident-audible</code> | |||
<code>in-range</code> | |||
<code>indicated-bearing-deg</code> | |||
<code>mode</code> | |||
<code>operable</code> | |||
<code>power-btn</code> | |||
<code>fight-display</code> | |||
<code>rotation-deg</code> | |||
<code>serviceable</code> | |||
<code>set-btn</code> | |||
<code>volume-norm</code> | |||
- /instrumentation/ | - <code>/instrumentation/nav</code> | ||
dme | dme | ||
Line 207: | Line 242: | ||
failures | failures | ||
==Fuel== | ==Fuel== | ||
* In /controls/fuel/ | *In <code>/controls/fuel/</code> | ||
** dump-valve | **<code>dump-valve</code> | ||
** dump-valve-norm ( | **<code>dump-valve-norm</code> (dimensionless dump value normalised to <code>1</code> where <code>1</code> equals the <code>fuel-flow-litres-max</code>) | ||
** fuel-flow-pressure-norm (dimensionless pressure value) default 1 (negative numbers and numbers beyond 1 allowed) | **<code>fuel-flow-pressure-norm</code> (dimensionless pressure value) default <code>1</code> (negative numbers and numbers beyond <code>1</code> allowed) | ||
** fuel-flow-resistance-norm (dimensionless "reverse" pressure value) default 0 (negative numbers and numbers beyond 1 allowed) | **<code>fuel-flow-resistance-norm</code> (dimensionless "reverse" pressure value) default <code>0</code> (negative numbers and numbers beyond <code>1</code> allowed) | ||
** fuel-flow-norm (dimensionless fuel flow value based on pressure minus resistance) default inherited/calculated = 1 | **<code>fuel-flow-norm</code> (dimensionless fuel flow value based on pressure minus resistance) default inherited/calculated = <code>1</code> | ||
** fuel-flow-litres | **<code>fuel-flow-litres</code> | ||
** fuel-flow-litres-typical //define default max burnrate at max throttle and nose diving | **<code>fuel-flow-litres-typical</code> //define default max burnrate at max throttle and nose diving | ||
** fuel-density-kgpm3 (average) | **<code>fuel-density-kgpm3</code> (average) | ||
** fuel-density-ppg (average) | **<code>fuel-density-ppg</code> (average) | ||
** total-fuel-norm | **<code>total-fuel-norm</code> | ||
*In /controls/fuel/tank[n]/boost-pump[n]/ | *In <code>/controls/fuel/tank[n]/boost-pump[n]/</code> | ||
** fuel-flow-pressure-norm (dimensionless pressure value) default 1 (negative numbers and numbers beyond 1 allowed) | **<code>fuel-flow-pressure-norm</code> (dimensionless pressure value) default <code>1</code> (negative numbers and numbers beyond <code>1</code> allowed) | ||
** fuel-flow-resistance-norm (dimensionless "reverse" pressure value) default 0 (negative numbers and numbers beyond 1 allowed) | **<code>fuel-flow-resistance-norm</code> (dimensionless "reverse" pressure value) default <code>0</code> (negative numbers and numbers beyond <code>1</code> allowed) | ||
** fuel-flow-norm (dimensionless fuel flow value based on pressure minus resistance) default inherited/calculated = 1 | ** <code>fuel-flow-norm</code> (dimensionless fuel flow value based on pressure minus resistance) default inherited/calculated = <code>1</code> | ||
** fuel-flow-litres | **<code>fuel-flow-litres</code> | ||
** fuel-flow-litres-typical //define default max burnrate at max throttle and nose diving | **<code>fuel-flow-litres-typical</code> //define default max burnrate at max throttle and nose diving | ||
** fuel-density-kgpm3 (average) | **<code>fuel-density-kgpm3</code> (average) | ||
** fuel-density-ppg (average) | **<code>fuel-density-ppg</code> (average) | ||
* In /consumables/fuel/weight/ | *In <code>/consumables/fuel/weight/</code> | ||
** total-capacity-lbs | **<code>total-capacity-lbs</code> | ||
** total-capacity-kg | **<code>total-capacity-kg</code> | ||
** total-lbs | **<code>total-lbs</code> | ||
** total-kg | **<code>total-kg</code> | ||
* In /consumables/fuel/volume/ | *In <code>/consumables/fuel/volume/</code> | ||
** total-capacity-litres | **<code>total-capacity-litres</code> | ||
** total-capacity-gals_imp | **<code>total-capacity-gals_imp</code> | ||
** total-capacity-gals_us | **<code>total-capacity-gals_us</code> | ||
** total-litres | **<code>total-litres</code> | ||
** total-gals_imp | **<code>total-gals_imp</code> | ||
** total-gals_us | **<code>total-gals_us</code> | ||
* In /consumables/fuel/tank[n] | *In <code>/consumables/fuel/tank[n]</code> | ||
** level-fuel-norm | **<code>level-fuel-norm</code> | ||
* In /consumables/fuel/tank[n]/weight/ | *In <code>/consumables/fuel/tank[n]/weight/</code> | ||
** level-capacity-lbs | **<code>level-capacity-lbs</code> | ||
** level-capacity-kg | **<code>level-capacity-kg</code> | ||
** level-lbs | **<code>level-lbs</code> | ||
** level-kg | **<code>level-kg</code> | ||
* In /consumables/fuel/tank[n]/volume/ | *In <code>/consumables/fuel/tank[n]/volume/</code> | ||
** level-capacity-gals_imp | **<code>level-capacity-gals_imp</code> | ||
** level-capacity-gals_us | **<code>level-capacity-gals_us</code> | ||
** level-capacity-litres | **<code>level-capacity-litres</code> | ||
** level-gals_imp | **<code>level-gals_imp</code> | ||
** level-gals_us | **<code>level-gals_us</code> | ||
** level-litres | **<code>level-litres</code> | ||
*Deprecated values | *Deprecated values | ||
** /consumables/fuel/total-gal_imp deprecated alias for /consumables/fuel/total-gals_imp | **<code>/consumables/fuel/total-gal_imp</code> deprecated alias for <code>/consumables/fuel/total-gals_imp</code> | ||
** /consumables/fuel/total-gal_us deprecated alias for /consumables/fuel/total-gals_imp | **<code>/consumables/fuel/total-gal_us</code> deprecated alias for <code>/consumables/fuel/total-gals_imp</code> | ||
** fuel-selector | **<code>fuel-selector</code> | ||
** to_engine | **<code>to_engine</code> | ||
** to_tank | **<code>to_tank</code> | ||
Implementation with custom locations: If you require your values be stored in a custom location, be sure to alias them in the standard location: <code><property alias="../../params/n1"/></code> | |||
==Related content== | |||
*[[Aircraft-set.xml]] | |||
*[[Property tree]] | |||
[[Category:Property Tree]] | |||
[[Category:Aircraft enhancement]] |