A3XX: Improve FlyByWire Law Degrading
This commit is contained in:
parent
eb4b3ba9cb
commit
a2e8e4852b
2 changed files with 58 additions and 11 deletions
|
@ -50,6 +50,7 @@
|
||||||
<binding>
|
<binding>
|
||||||
<command>nasal</command>
|
<command>nasal</command>
|
||||||
<script>
|
<script>
|
||||||
|
setprop("/it-fbw/degrade-law", 0);
|
||||||
setprop("/it-fbw/law", 0);
|
setprop("/it-fbw/law", 0);
|
||||||
gui.popupTip("Fly By Wire switched to NORMAL law!");
|
gui.popupTip("Fly By Wire switched to NORMAL law!");
|
||||||
</script>
|
</script>
|
||||||
|
@ -65,6 +66,7 @@
|
||||||
<binding>
|
<binding>
|
||||||
<command>nasal</command>
|
<command>nasal</command>
|
||||||
<script>
|
<script>
|
||||||
|
setprop("/it-fbw/degrade-law", 1);
|
||||||
setprop("/it-fbw/law", 1);
|
setprop("/it-fbw/law", 1);
|
||||||
gui.popupTip("Fly By Wire switched to ALTERNATE law!");
|
gui.popupTip("Fly By Wire switched to ALTERNATE law!");
|
||||||
</script>
|
</script>
|
||||||
|
@ -80,6 +82,7 @@
|
||||||
<binding>
|
<binding>
|
||||||
<command>nasal</command>
|
<command>nasal</command>
|
||||||
<script>
|
<script>
|
||||||
|
setprop("/it-fbw/degrade-law", 2);
|
||||||
setprop("/it-fbw/law", 2);
|
setprop("/it-fbw/law", 2);
|
||||||
gui.popupTip("Fly By Wire switched to DIRECT law!");
|
gui.popupTip("Fly By Wire switched to DIRECT law!");
|
||||||
</script>
|
</script>
|
||||||
|
@ -95,6 +98,7 @@
|
||||||
<binding>
|
<binding>
|
||||||
<command>nasal</command>
|
<command>nasal</command>
|
||||||
<script>
|
<script>
|
||||||
|
setprop("/it-fbw/degrade-law", 3);
|
||||||
setprop("/it-fbw/law", 3);
|
setprop("/it-fbw/law", 3);
|
||||||
gui.popupTip("Fly By Wire switched to MECHANICAL BACKUP law!");
|
gui.popupTip("Fly By Wire switched to MECHANICAL BACKUP law!");
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -26,8 +26,10 @@ var fctlInit = func {
|
||||||
setprop("/systems/fctl/elac2", 0);
|
setprop("/systems/fctl/elac2", 0);
|
||||||
setprop("/systems/fctl/sec1", 0);
|
setprop("/systems/fctl/sec1", 0);
|
||||||
setprop("/systems/fctl/sec2", 0);
|
setprop("/systems/fctl/sec2", 0);
|
||||||
|
setprop("/systems/fctl/sec3", 0);
|
||||||
setprop("/systems/fctl/fac1", 0);
|
setprop("/systems/fctl/fac1", 0);
|
||||||
setprop("/systems/fctl/fac2", 0);
|
setprop("/systems/fctl/fac2", 0);
|
||||||
|
setprop("/it-fbw/degrade-law", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
setprop("/it-fbw/roll-back", 0);
|
setprop("/it-fbw/roll-back", 0);
|
||||||
|
@ -38,7 +40,6 @@ setprop("/it-fbw/spd-hold", 0);
|
||||||
###################
|
###################
|
||||||
|
|
||||||
var update_loop = func {
|
var update_loop = func {
|
||||||
|
|
||||||
var elac1_sw = getprop("/controls/fctl/elac1");
|
var elac1_sw = getprop("/controls/fctl/elac1");
|
||||||
var elac2_sw = getprop("/controls/fctl/elac2");
|
var elac2_sw = getprop("/controls/fctl/elac2");
|
||||||
var sec1_sw = getprop("/controls/fctl/sec1");
|
var sec1_sw = getprop("/controls/fctl/sec1");
|
||||||
|
@ -96,7 +97,46 @@ var update_loop = func {
|
||||||
} else {
|
} else {
|
||||||
setprop("/systems/fctl/fac2", 0);
|
setprop("/systems/fctl/fac2", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var elac1 = getprop("/systems/fctl/elac1");
|
||||||
|
var elac2 = getprop("/systems/fctl/elac2");
|
||||||
|
var sec1 = getprop("/systems/fctl/sec1");
|
||||||
|
var sec2 = getprop("/systems/fctl/sec2");
|
||||||
|
var sec3 = getprop("/systems/fctl/sec3");
|
||||||
|
var fac1 = getprop("/systems/fctl/fac1");
|
||||||
|
var fac2 = getprop("/systems/fctl/fac2");
|
||||||
|
var law = getprop("/it-fbw/law");
|
||||||
|
|
||||||
|
# Degrade logic, all failures which degrade FBW need to go here. -JD
|
||||||
|
if (getprop("/gear/gear[1]/wow") == 0 and getprop("/gear/gear[2]/wow") == 0) {
|
||||||
|
if (!elac1 and !elac2) {
|
||||||
|
if (law == 0) {
|
||||||
|
setprop("/it-fbw/degrade-law", 1);
|
||||||
|
}
|
||||||
|
} else if (getprop("/systems/electrical/bus/ac-ess") >= 110 and getprop("/systems/hydraulic/blue-psi") >= 1500 and getprop("/systems/hydraulic/green-psi") < 1500 and getprop("/systems/hydraulic/yellow-psi") < 1500) {
|
||||||
|
if (law == 0 or law == 1) {
|
||||||
|
setprop("/it-fbw/degrade-law", 2);
|
||||||
|
}
|
||||||
|
} else if (getprop("/controls/gear/gear-down") == 1) {
|
||||||
|
if (law == 1) {
|
||||||
|
setprop("/it-fbw/degrade-law", 2);
|
||||||
|
}
|
||||||
|
} else if (getprop("/systems/electrical/bus/ac-ess") < 110 or (getprop("/systems/hydraulic/blue-psi") < 1500 and getprop("/systems/hydraulic/green-psi") < 1500 and getprop("/systems/hydraulic/yellow-psi") < 1500)) {
|
||||||
|
setprop("/it-fbw/degrade-law", 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var law = getprop("/it-fbw/law");
|
||||||
|
|
||||||
|
# Mech Backup can always return to direct, if it can.
|
||||||
|
if (law == 3 and getprop("/systems/electrical/bus/ac-ess") >= 110 and getprop("/systems/hydraulic/blue-psi") >= 1500) {
|
||||||
|
setprop("/it-fbw/degrade-law", 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var fbw_loop = func {
|
||||||
|
|
||||||
var ail = getprop("/controls/flight/aileron");
|
var ail = getprop("/controls/flight/aileron");
|
||||||
|
|
||||||
if (ail > 0.4 or ail < -0.4) {
|
if (ail > 0.4 or ail < -0.4) {
|
||||||
|
@ -115,24 +155,25 @@ var update_loop = func {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/it-fbw/override") == 0) {
|
if (getprop("/it-fbw/override") == 0) {
|
||||||
if ((getprop("/systems/electrical/bus/ac-ess") >= 110) and (getprop("/systems/hydraulic/green-psi") >= 1500) and (getprop("/systems/hydraulic/yellow-psi") >= 1500)) {
|
var degrade = getprop("/it-fbw/degrade-law");
|
||||||
|
if (degrade == 0) {
|
||||||
if (getprop("/it-fbw/law") != 0) {
|
if (getprop("/it-fbw/law") != 0) {
|
||||||
setprop("/it-fbw/law", 0);
|
setprop("/it-fbw/law", 0);
|
||||||
}
|
}
|
||||||
} else if ((getprop("/systems/electrical/bus/ac-ess") >= 110) and (getprop("/systems/hydraulic/blue-psi") >= 1500)) {
|
} else if (degrade == 1) {
|
||||||
|
if (getprop("/it-fbw/law") != 1) {
|
||||||
|
setprop("/it-fbw/law", 1);
|
||||||
|
}
|
||||||
|
} else if (degrade == 2) {
|
||||||
if (getprop("/it-fbw/law") != 2) {
|
if (getprop("/it-fbw/law") != 2) {
|
||||||
setprop("/it-fbw/law", 2);
|
setprop("/it-fbw/law", 2);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (degrade == 3) {
|
||||||
if (getprop("/it-fbw/law") != 3) {
|
if (getprop("/it-fbw/law") != 3) {
|
||||||
setprop("/it-fbw/law", 3);
|
setprop("/it-fbw/law", 3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getprop("/it-fbw/law") == 1 and getprop("/controls/gear/gear-down") == 1 and getprop("/it-fbw/override") == 0) {
|
|
||||||
setprop("/it-fbw/law", 2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
###########################
|
###########################
|
||||||
|
@ -141,11 +182,13 @@ var update_loop = func {
|
||||||
|
|
||||||
setlistener("/sim/signals/fdm-initialized", func {
|
setlistener("/sim/signals/fdm-initialized", func {
|
||||||
setprop("/it-fbw/override", 0);
|
setprop("/it-fbw/override", 0);
|
||||||
setprop("/it-fbw/law", 3);
|
setprop("/it-fbw/law", 0);
|
||||||
updatet.start();
|
updatet.start();
|
||||||
|
fbwt.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
##########
|
##########
|
||||||
# Timers #
|
# Timers #
|
||||||
##########
|
##########
|
||||||
var updatet = maketimer(0.05, update_loop);
|
var updatet = maketimer(0.1, update_loop);
|
||||||
|
var fbwt = maketimer(0.05, fbw_loop);
|
||||||
|
|
Reference in a new issue