1
0
Fork 0

Sim: Detail gear kinematics and fix a few things

This commit is contained in:
Josh Davidson 2022-11-23 21:10:58 -05:00
parent d4af28ec24
commit 5e5d954b87
16 changed files with 349 additions and 188 deletions

View file

@ -326,15 +326,6 @@
</script>
</binding>
</item>
<item>
<label>About This Aircraft</label>
<binding>
<command>nasal</command>
<script>
acconfig.about_dlg.open();
</script>
</binding>
</item>
</menu>
<menu n="102">
<label>FMGC</label>
@ -535,7 +526,7 @@
</binding>
</item>
<item>
<label>Failures</label>
<label>System Failures</label>
<binding>
<command>nasal</command>
<script>
@ -1045,6 +1036,7 @@
<gear>
<brake-fans type="bool">0</brake-fans>
<brake-parking type="bool">0</brake-parking>
<lever-cockpit type="int">3</lever-cockpit>
<nws-switch type="double">1</nws-switch>
<tiller-cmd-norm type="double">0</tiller-cmd-norm>
<tiller-enabled type="bool">0</tiller-enabled>
@ -1053,6 +1045,7 @@
<switches>
<blue-elec type="bool">0</blue-elec>
<blue-elec-ovrd type="bool">0</blue-elec-ovrd>
<gear-gravity-ext type="bool">0</gear-gravity-ext>
<green-edp type="bool">0</green-edp>
<ptu type="bool">0</ptu>
<rat-man type="bool">0</rat-man>
@ -1496,7 +1489,11 @@
<right-tank-pump-1 type="bool">0</right-tank-pump-1>
<right-tank-pump-2 type="bool">0</right-tank-pump-2>
</fuel>
<gear type="bool">0</gear>
<gear n="0">
<left-actuator type="bool">0</left-actuator>
<nose-actuator type="bool">0</nose-actuator>
<right-actuator type="bool">0</right-actuator>
</gear>
<hydraulic>
<blue-elec type="bool">0</blue-elec>
<blue-elec-ovht type="bool">0</blue-elec-ovht>

View file

@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright (c) 2022 Josh Davidson (Octal450) -->
<!-- A3XX Aircraft Config Dialog -->
<PropertyList>
<name>aircraft-config-about</name>
<layout>vbox</layout>
<group>
<layout>hbox</layout>
<text>
<halign>left</halign>
<label>About This Aircraft</label>
</text>
<button>
<halign>right</halign>
<pref-width>20</pref-width>
<pref-height>20</pref-height>
<legend>X</legend>
<key>Esc</key>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
<hrule/>
<group>
<layout>vbox</layout>
<text>
<halign>left</halign>
<label>Airbus A320 Family</label>
</text>
<hrule/>
<text>
<halign>left</halign>
<label>Flight Dynamics: Josh Davidson (Octal450)</label>
</text>
<text>
<halign>left</halign>
<label>Systems: Josh Davidson (Octal450), Jonathan Redpath (legoboyvdlp), merspieler, Matthew Maring (mattmaring)</label>
</text>
<text>
<halign>left</halign>
<label>Displays: Josh Davidson (Octal450), Jonathan Redpath (legoboyvdlp), merspieler, Matthew Maring (mattmaring)</label>
</text>
<text>
<halign>left</halign>
<label>3D/Textures: Thorsten Herrmann (TH-555), Semir Gebran (CaptB)</label>
</text>
</group>
<hrule/>
<group>
<layout>hbox</layout>
<button>
<halign>center</halign>
<legend>Go Away</legend>
<pref-width>210</pref-width>
<binding>
<command>dialog-close</command>
</binding>
</button>
</group>
</PropertyList>

View file

@ -75,7 +75,6 @@ var init_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/init/dialog", "Aircraft
var help_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/help/dialog", "Aircraft/A320-family/AircraftConfig/help.xml");
var fbw_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/fbw/dialog", "Aircraft/A320-family/AircraftConfig/fbw.xml");
var fail_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/fail/dialog", "Aircraft/A320-family/AircraftConfig/fail.xml");
var about_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/about/dialog", "Aircraft/A320-family/AircraftConfig/about.xml");
var update_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/update/dialog", "Aircraft/A320-family/AircraftConfig/update.xml");
var updated_dlg = gui.Dialog.new("/sim/gui/dialogs/acconfig/updated/dialog", "Aircraft/A320-family/AircraftConfig/updated.xml");
var error_mismatch = gui.Dialog.new("/sim/gui/dialogs/acconfig/error/mismatch/dialog", "Aircraft/A320-family/AircraftConfig/error-mismatch.xml");
@ -285,7 +284,7 @@ var colddark = func {
setprop("/controls/flight/flaps", 0);
pts.Controls.Flight.speedbrakeArm.setValue(0);
setprop("/controls/flight/speedbrake", 0);
setprop("/controls/gear/gear-down", 1);
setprop("/controls/gear/lever", 1);
setprop("/controls/flight/elevator-trim", 0);
setprop("/controls/switches/beacon", 0);
setprop("/controls/switches/strobe", 0.0);
@ -345,7 +344,7 @@ var beforestart = func {
setprop("/controls/flight/flaps", 0);
pts.Controls.Flight.speedbrakeArm.setValue(0);
setprop("/controls/flight/speedbrake", 0);
setprop("/controls/gear/gear-down", 1);
setprop("/controls/gear/lever", 1);
setprop("/controls/flight/elevator-trim", 0);
libraries.systemsInit();
libraries.variousReset();
@ -442,7 +441,7 @@ var taxi = func {
setprop("/controls/flight/flaps", 0);
pts.Controls.Flight.speedbrakeArm.setValue(0);
setprop("/controls/flight/speedbrake", 0);
setprop("/controls/gear/gear-down", 1);
setprop("/controls/gear/lever", 1);
setprop("/controls/flight/elevator-trim", 0);
libraries.systemsInit();
libraries.variousReset();

View file

@ -75,6 +75,24 @@
</script>
</binding>
</button>
<button>
<halign>center</halign>
<legend>Checklists</legend>
<pref-width>140</pref-width>
<binding>
<command>dialog-show</command>
<dialog-name>checklist</dialog-name>
</binding>
</button>
<button>
<halign>center</halign>
<legend>Aircraft Help</legend>
<pref-width>140</pref-width>
<binding>
<command>dialog-show</command>
<dialog-name>acconfig-help</dialog-name>
</binding>
</button>
<button>
<halign>center</halign>
<legend>DU Quality</legend>
@ -86,17 +104,6 @@
</script>
</binding>
</button>
<button>
<halign>center</halign>
<legend>About Aircraft</legend>
<pref-width>140</pref-width>
<binding>
<command>nasal</command>
<script>
acconfig.about_dlg.open();
</script>
</binding>
</button>
</group>
<group>

View file

@ -9134,16 +9134,10 @@
<condition>
<or>
<property>controls/switches/annun-test</property>
<and>
<not-equals>
<property>gear/gear[1]/position-norm</property>
<value>0</value>
</not-equals>
<not-equals>
<property>gear/gear[1]/position-norm</property>
<value>1</value>
</not-equals>
</and>
<equals>
<property>fdm/jsbsim/gear/unit[1]/status</property>
<value>1</value>
</equals>
</or>
</condition>
</animation>
@ -9155,8 +9149,8 @@
<or>
<property>controls/switches/annun-test</property>
<equals>
<property>gear/gear[1]/position-norm</property>
<value>1</value>
<property>fdm/jsbsim/gear/unit[1]/status</property>
<value>2</value>
</equals>
</or>
</condition>
@ -9168,16 +9162,10 @@
<condition>
<or>
<property>controls/switches/annun-test</property>
<and>
<not-equals>
<property>gear/gear[0]/position-norm</property>
<value>0</value>
</not-equals>
<not-equals>
<property>gear/gear[0]/position-norm</property>
<value>1</value>
</not-equals>
</and>
<equals>
<property>fdm/jsbsim/gear/unit[0]/status</property>
<value>1</value>
</equals>
</or>
</condition>
</animation>
@ -9189,8 +9177,8 @@
<or>
<property>controls/switches/annun-test</property>
<equals>
<property>gear/gear[0]/position-norm</property>
<value>1</value>
<property>fdm/jsbsim/gear/unit[0]/status</property>
<value>2</value>
</equals>
</or>
</condition>
@ -9202,16 +9190,10 @@
<condition>
<or>
<property>controls/switches/annun-test</property>
<and>
<not-equals>
<property>gear/gear[2]/position-norm</property>
<value>0</value>
</not-equals>
<not-equals>
<property>gear/gear[2]/position-norm</property>
<value>1</value>
</not-equals>
</and>
<equals>
<property>fdm/jsbsim/gear/unit[2]/status</property>
<value>1</value>
</equals>
</or>
</condition>
</animation>
@ -9223,8 +9205,8 @@
<or>
<property>controls/switches/annun-test</property>
<equals>
<property>gear/gear[2]/position-norm</property>
<value>1</value>
<property>fdm/jsbsim/gear/unit[2]/status</property>
<value>2</value>
</equals>
</or>
</condition>
@ -9232,23 +9214,54 @@
<!-- Landing Gear Lever -->
<animation>
<type>knob</type>
<type>rotate</type>
<object-name>gear_lever</object-name>
<drag-direction>vertical</drag-direction>
<property>controls/gear/gear-down-pos</property>
<factor>-50</factor>
<property>controls/cockpit/gear-lever</property>
<interpolation>
<entry><ind>1</ind><dep> 0</dep></entry>
<entry><ind>2</ind><dep>-50</dep></entry>
</interpolation>
<axis>
<object-name>gear_lever.axis</object-name>
</axis>
</animation>
<animation>
<type>translate</type>
<object-name>gear_lever</object-name>
<property>controls/cockpit/gear-lever</property>
<interpolation>
<entry><ind>0</ind><dep>0.00</dep></entry>
<entry><ind>1</ind><dep>0.01</dep></entry>
<entry><ind>2</ind><dep>0.01</dep></entry>
<entry><ind>3</ind><dep>0.00</dep></entry>
</interpolation>
<axis>
<x1-m>-0.55056</x1-m>
<y1-m>-0.14748</y1-m>
<z1-m>0.09933</z1-m>
<x2-m>-0.49486</x2-m>
<y2-m>-0.14748</y2-m>
<z2-m>0.14019</z2-m>
</axis>
</animation>
<animation>
<type>pick</type>
<object-name>gear_lever</object-name>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-cycle</command>
<property>controls/gear/gear-down</property>
<value>1</value>
<value>0</value>
<wrap>false</wrap>
<command>nasal</command>
<script>controls.gearDownSmart(1)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.gearDownSmart(0);</script>
</binding>
</mod-up>
</action>
<hovered>
<binding>
@ -9261,7 +9274,7 @@
</binding>
</hovered>
</animation>
<animation>
<type>select</type>
<object-name>gear_lever_down_arrow</object-name>

View file

@ -258,7 +258,7 @@ var input = {
"apWarn": "/it-autoflight/output/ap-warning",
"apOffTime": "/ECAM/warnings/ap-off-time",
"elevatorFBW": "/fdm/jsbsim/fbw/elevator-sidestick",
"gearLever": "/controls/gear/gear-down",
"gearLever": "/controls/gear/lever",
"masterCaution": "/ECAM/warnings/master-caution-light",
"masterWarn": "/ECAM/warnings/master-warning-light",
};

View file

@ -61,7 +61,7 @@ var SystemDisplayController = {
} else if (me.tempFWCPhase == 3 or me.tempFWCPhase == 4 or me.tempFWCPhase == 5) {
me.displayedPage = me.PageList.enginePage;
} else if (me.tempFWCPhase == 6) {
if (pts.Controls.Gear.gearDown.getValue() and me.altitudeBelow16000) {
if (pts.Controls.Gear.lever.getValue() == 1 and me.altitudeBelow16000) {
me.displayedPage = me.PageList.wheelPage;
} else if (me.Display.Cruise) {
me.displayedPage = me.PageList.cruisePage;
@ -324,7 +324,7 @@ setlistener("/ECAM/warning-phase", func() {
}
}, 0, 0);
setlistener("/controls/gear/gear-down", func() {
setlistener("/controls/gear/lever", func() {
if (SystemDisplayController.mode == 3) {
SystemDisplayController.autoCall();
}

View file

@ -97,6 +97,67 @@ controls.flapsDown = func(step) {
}
}
var leverCockpit = 3;
controls.gearDown = func(d) { # Requires a mod-up
pts.Fdm.JSBsim.Position.wowTemp = pts.Fdm.JSBsim.Position.wow.getBoolValue();
leverCockpit = pts.Controls.Gear.leverCockpit.getValue();
if (d < 0) {
if (pts.Fdm.JSBsim.Position.wowTemp) {
if (leverCockpit == 3) {
pts.Controls.Gear.leverCockpit.setValue(2);
} else if (leverCockpit == 0) {
pts.Controls.Gear.leverCockpit.setValue(1);
}
} else {
pts.Controls.Gear.leverCockpit.setValue(0);
}
} else if (d > 0) {
if (pts.Fdm.JSBsim.Position.wowTemp) {
if (leverCockpit == 3) {
pts.Controls.Gear.leverCockpit.setValue(2);
} else if (leverCockpit == 0) {
pts.Controls.Gear.leverCockpit.setValue(1);
}
} else {
pts.Controls.Gear.leverCockpit.setValue(3);
}
} else {
if (leverCockpit == 2) {
pts.Controls.Gear.leverCockpit.setValue(3);
} else if (leverCockpit == 1) {
pts.Controls.Gear.leverCockpit.setValue(0);
}
}
}
controls.gearDownSmart = func(d) { # Used by cockpit, requires a mod-up
if (d) {
if (pts.Controls.Gear.leverCockpit.getValue() >= 2) {
controls.gearDown(-1);
} else {
controls.gearDown(1);
}
} else {
controls.gearDown(0);
}
}
controls.gearToggle = func() {
if (!pts.Fdm.JSBsim.Position.wow.getBoolValue()) {
if (pts.Controls.Gear.leverCockpit.getValue() >= 2) {
pts.Controls.Gear.leverCockpit.setValue(0);
} else {
pts.Controls.Gear.leverCockpit.setValue(3);
}
}
}
controls.gearTogglePosition = func(d) {
if (d) {
controls.gearToggle();
}
}
controls.elevatorTrim = func(d) {
if (systems.HYD.Psi.green.getValue() >= 1500 or systems.HYD.Psi.yellow.getValue() >= 1500) {
slewProp("/controls/flight/elevator-trim", d * 0.0185); # Rate in JSB normalized (0.25 / 13.5)

View file

@ -59,7 +59,8 @@ var Controls = {
Gear: {
brake: [props.globals.getNode("/controls/gear/brake-left"),props.globals.getNode("/controls/gear/brake-right")],
brakeParking: props.globals.getNode("/controls/gear/brake-parking"),
gearDown: props.globals.getNode("/controls/gear/gear-down"),
lever: props.globals.getNode("/controls/gear/lever"),
leverCockpit: props.globals.getNode("/controls/gear/lever-cockpit"),
},
Lighting: {
landingLights: [props.globals.getNode("/controls/lighting/landing-lights[0]"),props.globals.getNode("/controls/lighting/landing-lights[1]"),props.globals.getNode("/controls/lighting/landing-lights[2]")],
@ -134,6 +135,7 @@ var Fdm = {
},
Position: {
wow: props.globals.getNode("/fdm/jsbsim/position/wow"),
wowTemp: 0,
},
Propulsion: {
Engine: {

View file

@ -415,7 +415,7 @@ var Autobrake = {
}
}
if (me._mode == 3 and !pts.Controls.Gear.gearDown.getBoolValue()) {
if (me._mode == 3 and pts.Controls.Gear.lever.getValue() == 0) {
me.arm_autobrake(0);
}
if (me._mode != 0 and me._wow0 and me._active and (pts.Controls.Gear.brake[0].getValue() > 0.05 or pts.Controls.Gear.brake[1].getValue() > 0.05)) {

View file

@ -224,7 +224,7 @@ var update_loop = func {
}
if (!pts.Gear.wow[1].getBoolValue() and !pts.Gear.wow[2].getBoolValue()) {
if (degradeLaw == 1 and pts.Controls.Gear.gearDown.getBoolValue()) {
if (degradeLaw == 1 and pts.Controls.Gear.lever.getValue() == 1) {
FBW.degradeLaw.setValue(2); # todo 3 sec timer
} else {
FBW.degradeLaw.setValue(degradeLaw)

View file

@ -211,13 +211,6 @@ var HYD = {
},
};
# Restrict gear raising on the ground
setlistener("/controls/gear/gear-down", func {
if (!pts.Controls.Gear.gearDown.getValue() and (pts.Gear.wow[0].getValue() or pts.Gear.wow[1].getValue() or pts.Gear.wow[2].getValue())) {
pts.Controls.Gear.gearDown.setValue(1);
}
});
# Emesary
var A320Hydraulic = notifications.SystemRecipient.new("A320 Hydraulic",HYD.loop,HYD);
emesary.GlobalTransmitter.Register(A320Hydraulic);

View file

@ -336,7 +336,7 @@
<product>
<property>aero/qbar-psf</property>
<property>metrics/Sw-sqft</property>
<property>gear/gear-pos-norm</property>
<property>gear/gear-all-norm</property>
<value>0.0171</value>
</product>
</function>

View file

@ -150,6 +150,12 @@
<c1>5</c1>
</lag_filter>
<actuator name="/controls/cockpit/gear-lever">
<input>/controls/gear/lever-cockpit</input>
<rate_limit>4.5</rate_limit>
<lag>20</lag>
</actuator>
<lag_filter name="/instrumentation/altimeter/inhg-left-pos">
<input>/instrumentation/altimeter/inhg-left</input>
<c1>20</c1>
@ -240,11 +246,6 @@
<c1>20</c1>
</lag_filter>
<lag_filter name="/controls/gear/gear-down-pos">
<input>/controls/gear/gear-down</input>
<c1>20</c1>
</lag_filter>
<lag_filter name="/instrumentation/clock/utc-selector-pos">
<input>/instrumentation/clock/utc-selector</input>
<c1>20</c1>

View file

@ -936,29 +936,193 @@
</channel>
<channel name="Landing Gear">
<channel name="Gear Common">
<switch name="gear/gear-cmd-switch">
<default value="gear/gear-cmd-norm"/>
<test logic="OR" value="gear/gear-pos-norm">
/systems/failures/gear eq 1
<switch name="/controls/gear/lever">
<default value="1"/>
<test value="0">
/controls/gear/lever-cockpit le 1
</test>
</switch>
</channel>
<channel name="Nose Gear">
<switch name="gear/unit[0]/rate-incr">
<default value="0"/>
<test logic="AND" value="1000">
/systems/acconfig/autoconfig-running eq 1
position/wow eq 1
</test>
<test value="0">
/systems/failures/gear/nose-actuator eq 1
</test>
<test value="0.2222222"> <!-- About 4.5 sec -->
/systems/hydraulic/green-psi ge 1500
</test>
<test logic="AND" value="0.0166667"> <!-- About 60 sec -->
/controls/hydraulic/switches/gear-gravity-ext eq 1
/accelerations/pilot-g ge 0.5
</test>
</switch>
<kinematic name="rubbish/gear-pos-norm">
<input>gear/gear-cmd-switch</input>
<traverse>
<setting>
<position>0</position>
<time>0</time>
</setting>
<setting>
<position>1</position>
<time>10</time>
</setting>
</traverse>
<output>gear/gear-pos-norm</output>
</kinematic>
<switch name="gear/unit[0]/rate-decr">
<default value="0"/>
<test logic="AND" value="1000">
/systems/acconfig/autoconfig-running eq 1
position/wow eq 1
</test>
<test value="0">
/systems/failures/gear/nose-actuator eq 1
</test>
<test value="0.4"> <!-- About 2.5 sec -->
/systems/hydraulic/green-psi ge 1500
</test>
</switch>
<actuator name="gear/unit[0]/pos-norm-actuator">
<input>/controls/gear/lever</input>
<rate_limit sense="incr">gear/unit[0]/rate-incr</rate_limit>
<rate_limit sense="decr">gear/unit[0]/rate-decr</rate_limit>
<output>gear/unit[0]/pos-norm</output>
</actuator>
</channel>
<channel name="Left Main Gear">
<switch name="gear/unit[1]/rate-incr">
<default value="0"/>
<test logic="AND" value="1000">
/systems/acconfig/autoconfig-running eq 1
position/wow eq 1
</test>
<test value="0">
/systems/failures/gear/left-actuator eq 1
</test>
<test value="0.0740741"> <!-- About 13.5 sec -->
/systems/hydraulic/green-psi ge 1500
</test>
<test logic="AND" value="0.0222222"> <!-- About 45 sec -->
/controls/hydraulic/switches/gear-gravity-ext eq 1
/accelerations/pilot-g ge 0.5
</test>
</switch>
<switch name="gear/unit[1]/rate-decr">
<default value="0"/>
<test logic="AND" value="1000">
/systems/acconfig/autoconfig-running eq 1
position/wow eq 1
</test>
<test value="0">
/systems/failures/gear/left-actuator eq 1
</test>
<test value="0.1111111"> <!-- About 9 sec -->
/systems/hydraulic/green-psi ge 1500
</test>
</switch>
<actuator name="gear/unit[1]/pos-norm-actuator">
<input>/controls/gear/lever</input>
<rate_limit sense="incr">gear/unit[1]/rate-incr</rate_limit>
<rate_limit sense="decr">gear/unit[1]/rate-decr</rate_limit>
<output>gear/unit[1]/pos-norm</output>
</actuator>
</channel>
<channel name="Right Main Gear">
<switch name="gear/unit[2]/rate-incr">
<default value="0"/>
<test logic="AND" value="1000">
/systems/acconfig/autoconfig-running eq 1
position/wow eq 1
</test>
<test value="0">
/systems/failures/gear/right-actuator eq 1
</test>
<test value="0.0769231"> <!-- About 13 sec -->
/systems/hydraulic/green-psi ge 1500
</test>
<test logic="AND" value="0.0222222"> <!-- About 45 sec -->
/controls/hydraulic/switches/gear-gravity-ext eq 1
/accelerations/pilot-g ge 0.5
</test>
</switch>
<switch name="gear/unit[2]/rate-decr">
<default value="0"/>
<test logic="AND" value="1000">
/systems/acconfig/autoconfig-running eq 1
position/wow eq 1
</test>
<test value="0">
/systems/failures/gear/right-actuator eq 1
</test>
<test value="0.1052632"> <!-- About 9.5 sec -->
/systems/hydraulic/green-psi ge 1500
</test>
</switch>
<actuator name="gear/unit[2]/pos-norm-actuator">
<input>/controls/gear/lever</input>
<rate_limit sense="incr">gear/unit[2]/rate-incr</rate_limit>
<rate_limit sense="decr">gear/unit[2]/rate-decr</rate_limit>
<output>gear/unit[2]/pos-norm</output>
</actuator>
</channel>
<channel name="Gear Misc">
<fcs_function name="gear/gear-all-norm">
<function>
<product>
<property>gear/unit[0]/pos-norm-actuator</property>
<property>gear/unit[1]/pos-norm-actuator</property>
<property>gear/unit[2]/pos-norm-actuator</property>
</product>
</function>
</fcs_function>
<switch name="gear/unit[0]/status">
<default value="1"/> <!-- In transit -->
<test logic="AND" value="0"> <!-- Up -->
/controls/gear/lever-cockpit eq 0
gear/unit[0]/pos-norm-actuator lt 0.01
</test>
<test logic="AND" value="2"> <!-- Down -->
/controls/gear/lever-cockpit eq 3
gear/unit[0]/pos-norm-actuator gt 0.99
</test>
</switch>
<switch name="gear/unit[1]/status">
<default value="1"/> <!-- In transit -->
<test logic="AND" value="0"> <!-- Up -->
/controls/gear/lever-cockpit eq 0
gear/unit[1]/pos-norm-actuator lt 0.01
</test>
<test logic="AND" value="2"> <!-- Down -->
/controls/gear/lever-cockpit eq 3
gear/unit[1]/pos-norm-actuator gt 0.99
</test>
</switch>
<switch name="gear/unit[2]/status">
<default value="1"/> <!-- In transit -->
<test logic="AND" value="0"> <!-- Up -->
/controls/gear/lever-cockpit eq 0
gear/unit[2]/pos-norm-actuator lt 0.01
</test>
<test logic="AND" value="2"> <!-- Down -->
/controls/gear/lever-cockpit eq 3
gear/unit[2]/pos-norm-actuator gt 0.99
</test>
</switch>
</channel>

View file

@ -3526,7 +3526,7 @@
<switch name="/ECAM/warnings/fctl/gear-lever-down">
<default value="0"/>
<test logic="AND" value="1">
/controls/gear/gear-down eq 1
/controls/gear/lever eq 1
<test logic="OR">
/ECAM/warning-phase eq 6
/ECAM/warning-phase eq 7
@ -4093,7 +4093,7 @@
/gear/gear[2]/position-norm ge 0.99
</test>
<test logic="AND">
/controls/gear/gear-down eq 1
/controls/gear/lever eq 1
fcs/slat-pos-deg ge 4
</test>
</test>