A3XX: FMGC: Rework NAV, LOC, and G/S arm system
This commit is contained in:
parent
add0282fa9
commit
9da19e8d03
3 changed files with 55 additions and 31 deletions
|
@ -237,15 +237,17 @@ var lateral = func {
|
||||||
if (latset == 0) {
|
if (latset == 0) {
|
||||||
alandt.stop();
|
alandt.stop();
|
||||||
alandt1.stop();
|
alandt1.stop();
|
||||||
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
setprop("/it-autoflight/output/loc-armed", 0);
|
setprop("/it-autoflight/output/loc-armed", 0);
|
||||||
setprop("/it-autoflight/output/appr-armed", 0);
|
setprop("/it-autoflight/output/appr-armed", 0);
|
||||||
setprop("/it-autoflight/output/lat", 0);
|
setprop("/it-autoflight/output/lat", 0);
|
||||||
setprop("/it-autoflight/mode/lat", "HDG");
|
setprop("/it-autoflight/mode/lat", "HDG");
|
||||||
setprop("/it-autoflight/mode/arm", " ");
|
setprop("/it-autoflight/mode/arm", " ");
|
||||||
} else if (latset == 1) {
|
} else if (latset == 1) {
|
||||||
if (getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1) {
|
if (getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1 and getprop("/position/gear-agl-ft") >= 30) {
|
||||||
alandt.stop();
|
alandt.stop();
|
||||||
alandt1.stop();
|
alandt1.stop();
|
||||||
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
setprop("/it-autoflight/output/loc-armed", 0);
|
setprop("/it-autoflight/output/loc-armed", 0);
|
||||||
setprop("/it-autoflight/output/appr-armed", 0);
|
setprop("/it-autoflight/output/appr-armed", 0);
|
||||||
setprop("/it-autoflight/output/lat", 1);
|
setprop("/it-autoflight/output/lat", 1);
|
||||||
|
@ -253,13 +255,20 @@ var lateral = func {
|
||||||
setprop("/it-autoflight/mode/arm", " ");
|
setprop("/it-autoflight/mode/arm", " ");
|
||||||
setprop("/it-autoflight/custom/show-hdg", 0);
|
setprop("/it-autoflight/custom/show-hdg", 0);
|
||||||
} else {
|
} else {
|
||||||
gui.popupTip("Please make sure you have a route set, and that it is Activated!");
|
setprop("/it-autoflight/input/lat-arm", 1);
|
||||||
|
setprop("/it-autoflight/mode/arm", "LNV");
|
||||||
}
|
}
|
||||||
} else if (latset == 2) {
|
} else if (latset == 2) {
|
||||||
if (getprop("/instrumentation/nav[0]/in-range") == 1) {
|
if (getprop("/instrumentation/nav[0]/in-range") == 1) {
|
||||||
if (getprop("/it-autoflight/output/lat") != 2) {
|
locdefl = abs(getprop("/instrumentation/nav[0]/heading-needle-deflection-norm"));
|
||||||
setprop("/it-autoflight/output/loc-armed", 1);
|
if (locdefl < 0.95 and locdefl != 0 and getprop("/instrumentation/nav[0]/signal-quality-norm") > 0.99) {
|
||||||
setprop("/it-autoflight/mode/arm", "LOC");
|
make_loc_active();
|
||||||
|
} else {
|
||||||
|
if (getprop("/it-autoflight/output/lat") != 2) {
|
||||||
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
|
setprop("/it-autoflight/output/loc-armed", 1);
|
||||||
|
setprop("/it-autoflight/mode/arm", "LOC");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setprop("/instrumentation/nav[0]/signal-quality-norm", 0);
|
setprop("/instrumentation/nav[0]/signal-quality-norm", 0);
|
||||||
|
@ -267,6 +276,7 @@ var lateral = func {
|
||||||
} else if (latset == 3) {
|
} else if (latset == 3) {
|
||||||
alandt.stop();
|
alandt.stop();
|
||||||
alandt1.stop();
|
alandt1.stop();
|
||||||
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
setprop("/it-autoflight/output/loc-armed", 0);
|
setprop("/it-autoflight/output/loc-armed", 0);
|
||||||
setprop("/it-autoflight/output/appr-armed", 0);
|
setprop("/it-autoflight/output/appr-armed", 0);
|
||||||
var hdg5sec = math.round(getprop("/it-autoflight/internal/heading-5-sec-ahead"));
|
var hdg5sec = math.round(getprop("/it-autoflight/internal/heading-5-sec-ahead"));
|
||||||
|
@ -275,13 +285,16 @@ var lateral = func {
|
||||||
setprop("/it-autoflight/mode/lat", "HDG");
|
setprop("/it-autoflight/mode/lat", "HDG");
|
||||||
setprop("/it-autoflight/mode/arm", " ");
|
setprop("/it-autoflight/mode/arm", " ");
|
||||||
} else if (latset == 4) {
|
} else if (latset == 4) {
|
||||||
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
setprop("/it-autoflight/output/lat", 4);
|
setprop("/it-autoflight/output/lat", 4);
|
||||||
setprop("/it-autoflight/mode/lat", "ALGN");
|
setprop("/it-autoflight/mode/lat", "ALGN");
|
||||||
setprop("/it-autoflight/custom/show-hdg", 0);
|
setprop("/it-autoflight/custom/show-hdg", 0);
|
||||||
} else if (latset == 5) {
|
} else if (latset == 5) {
|
||||||
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
setprop("/it-autoflight/output/lat", 5);
|
setprop("/it-autoflight/output/lat", 5);
|
||||||
setprop("/it-autoflight/custom/show-hdg", 0);
|
setprop("/it-autoflight/custom/show-hdg", 0);
|
||||||
} else if (latset == 9) {
|
} else if (latset == 9) {
|
||||||
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
setprop("/it-autoflight/output/loc-armed", 0);
|
setprop("/it-autoflight/output/loc-armed", 0);
|
||||||
setprop("/it-autoflight/output/lat", 9);
|
setprop("/it-autoflight/output/lat", 9);
|
||||||
setprop("/it-autoflight/mode/lat", " ");
|
setprop("/it-autoflight/mode/lat", " ");
|
||||||
|
@ -297,13 +310,8 @@ var lat_arm = func {
|
||||||
setprop("/it-autoflight/mode/arm", " ");
|
setprop("/it-autoflight/mode/arm", " ");
|
||||||
setprop("/it-autoflight/custom/show-hdg", 1);
|
setprop("/it-autoflight/custom/show-hdg", 1);
|
||||||
} else if (latset == 1) {
|
} else if (latset == 1) {
|
||||||
if (getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1) {
|
setprop("/it-autoflight/input/lat-arm", 1);
|
||||||
setprop("/it-autoflight/input/lat-arm", 1);
|
setprop("/it-autoflight/mode/arm", "LNV");
|
||||||
setprop("/it-autoflight/mode/arm", "LNV");
|
|
||||||
setprop("/it-autoflight/custom/show-hdg", 0);
|
|
||||||
} else {
|
|
||||||
gui.popupTip("Please make sure you have a route set, and that it is Activated!");
|
|
||||||
}
|
|
||||||
} else if (latset == 3) {
|
} else if (latset == 3) {
|
||||||
if (getprop("/it-autoflight/custom/trk-fpa") == 1) {
|
if (getprop("/it-autoflight/custom/trk-fpa") == 1) {
|
||||||
var hdgnow = math.round(getprop("/it-autoflight/internal/track-deg"));
|
var hdgnow = math.round(getprop("/it-autoflight/internal/track-deg"));
|
||||||
|
@ -365,12 +373,23 @@ var vertical = func {
|
||||||
thrustmode();
|
thrustmode();
|
||||||
} else if (vertset == 2) {
|
} else if (vertset == 2) {
|
||||||
if (getprop("/instrumentation/nav[0]/in-range") == 1) {
|
if (getprop("/instrumentation/nav[0]/in-range") == 1) {
|
||||||
if (getprop("/it-autoflight/output/lat") != 2) {
|
locdefl = abs(getprop("/instrumentation/nav[0]/heading-needle-deflection-norm"));
|
||||||
setprop("/it-autoflight/output/loc-armed", 1);
|
if (locdefl < 0.95 and locdefl != 0 and getprop("/instrumentation/nav[0]/signal-quality-norm") > 0.99) {
|
||||||
|
make_loc_active();
|
||||||
|
} else {
|
||||||
|
if (getprop("/it-autoflight/output/lat") != 2) {
|
||||||
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
|
setprop("/it-autoflight/output/loc-armed", 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (getprop("/it-autoflight/output/vert") != 2 and getprop("/it-autoflight/output/vert") != 6) {
|
signal = getprop("/instrumentation/nav[0]/gs-needle-deflection-norm");
|
||||||
setprop("/it-autoflight/output/appr-armed", 1);
|
if (((signal < 0 and signal >= -0.20) or (signal > 0 and signal <= 0.20)) and getprop("/it-autoflight/output/lat") == 2) {
|
||||||
setprop("/it-autoflight/mode/arm", "ILS");
|
make_appr_active();
|
||||||
|
} else {
|
||||||
|
if (getprop("/it-autoflight/output/vert") != 2 and getprop("/it-autoflight/output/vert") != 6) {
|
||||||
|
setprop("/it-autoflight/output/appr-armed", 1);
|
||||||
|
setprop("/it-autoflight/mode/arm", "ILS");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setprop("/instrumentation/nav[0]/signal-quality-norm", 0);
|
setprop("/instrumentation/nav[0]/signal-quality-norm", 0);
|
||||||
|
@ -656,7 +675,7 @@ setlistener("/it-autoflight/input/kts-mach", func {
|
||||||
# Takeoff Modes
|
# Takeoff Modes
|
||||||
# Lat Active
|
# Lat Active
|
||||||
var latarms = func {
|
var latarms = func {
|
||||||
if (getprop("/position/gear-agl-ft") >= 30) {
|
if () {
|
||||||
if (getprop("/it-autoflight/input/lat-arm") == 1) {
|
if (getprop("/it-autoflight/input/lat-arm") == 1) {
|
||||||
setprop("/it-autoflight/input/lat", getprop("/it-autoflight/input/lat-arm"));
|
setprop("/it-autoflight/input/lat", getprop("/it-autoflight/input/lat-arm"));
|
||||||
setprop("/it-autoflight/input/lat-arm", 0);
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
|
@ -700,15 +719,6 @@ setlistener("/it-autoflight/mode/vert", func {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
setlistener("/it-autoflight/mode/lat", func {
|
|
||||||
var vertm = getprop("/it-autoflight/mode/lat");
|
|
||||||
if (vertm == "T/O" or vertm == " ") {
|
|
||||||
latarmt.start();
|
|
||||||
} else {
|
|
||||||
latarmt.stop();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
var toga_reduc = func {
|
var toga_reduc = func {
|
||||||
if (getprop("/instrumentation/altimeter/indicated-altitude-ft") >= getprop("/it-autoflight/settings/reduc-agl-ft") and getprop("/gear/gear[1]/wow") == 0 and getprop("/gear/gear[2]/wow") == 0) {
|
if (getprop("/instrumentation/altimeter/indicated-altitude-ft") >= getprop("/it-autoflight/settings/reduc-agl-ft") and getprop("/gear/gear[1]/wow") == 0 and getprop("/gear/gear[2]/wow") == 0) {
|
||||||
setprop("/it-autoflight/input/vert", 4);
|
setprop("/it-autoflight/input/vert", 4);
|
||||||
|
@ -848,6 +858,10 @@ var thrustmode = func {
|
||||||
|
|
||||||
# ILS and Autoland
|
# ILS and Autoland
|
||||||
# LOC and G/S arming
|
# LOC and G/S arming
|
||||||
|
setlistener("/it-autoflight/input/lat-arm", func {
|
||||||
|
check_arms();
|
||||||
|
});
|
||||||
|
|
||||||
setlistener("/it-autoflight/output/loc-armed", func {
|
setlistener("/it-autoflight/output/loc-armed", func {
|
||||||
check_arms();
|
check_arms();
|
||||||
});
|
});
|
||||||
|
@ -857,7 +871,7 @@ setlistener("/it-autoflight/output/appr-armed", func {
|
||||||
});
|
});
|
||||||
|
|
||||||
var check_arms = func {
|
var check_arms = func {
|
||||||
if (getprop("/it-autoflight/output/loc-armed") or getprop("/it-autoflight/output/appr-armed")) {
|
if (getprop("/it-autoflight/input/lat-arm") or getprop("/it-autoflight/output/loc-armed") or getprop("/it-autoflight/output/appr-armed")) {
|
||||||
update_armst.start();
|
update_armst.start();
|
||||||
} else {
|
} else {
|
||||||
update_armst.stop();
|
update_armst.stop();
|
||||||
|
@ -865,6 +879,17 @@ var check_arms = func {
|
||||||
}
|
}
|
||||||
|
|
||||||
var update_arms = func {
|
var update_arms = func {
|
||||||
|
if (getprop("/it-autoflight/input/lat-arm") == 1 and getprop("/autopilot/route-manager/route/num") > 0 and getprop("/autopilot/route-manager/active") == 1 and getprop("/position/gear-agl-ft") >= 30) {
|
||||||
|
alandt.stop();
|
||||||
|
alandt1.stop();
|
||||||
|
setprop("/it-autoflight/input/lat-arm", 0);
|
||||||
|
setprop("/it-autoflight/output/loc-armed", 0);
|
||||||
|
setprop("/it-autoflight/output/appr-armed", 0);
|
||||||
|
setprop("/it-autoflight/output/lat", 1);
|
||||||
|
setprop("/it-autoflight/mode/lat", "LNAV");
|
||||||
|
setprop("/it-autoflight/mode/arm", " ");
|
||||||
|
setprop("/it-autoflight/custom/show-hdg", 0);
|
||||||
|
}
|
||||||
if (getprop("/instrumentation/nav[0]/in-range") == 1) {
|
if (getprop("/instrumentation/nav[0]/in-range") == 1) {
|
||||||
if (getprop("/it-autoflight/output/loc-armed")) {
|
if (getprop("/it-autoflight/output/loc-armed")) {
|
||||||
locdefl = abs(getprop("/instrumentation/nav[0]/heading-needle-deflection-norm"));
|
locdefl = abs(getprop("/instrumentation/nav[0]/heading-needle-deflection-norm"));
|
||||||
|
@ -1278,7 +1303,6 @@ var minmaxtimer = maketimer(0.5, minmax);
|
||||||
var alandt = maketimer(0.5, aland);
|
var alandt = maketimer(0.5, aland);
|
||||||
var alandt1 = maketimer(0.5, aland1);
|
var alandt1 = maketimer(0.5, aland1);
|
||||||
var reduct = maketimer(0.5, toga_reduc);
|
var reduct = maketimer(0.5, toga_reduc);
|
||||||
var latarmt = maketimer(0.5, latarms);
|
|
||||||
var fpa_calct = maketimer(0.1, fpa_calc);
|
var fpa_calct = maketimer(0.1, fpa_calc);
|
||||||
var ap_varioust = maketimer(1, ap_various);
|
var ap_varioust = maketimer(1, ap_various);
|
||||||
var mng_maint = maketimer(0.5, mng_main);
|
var mng_maint = maketimer(0.5, mng_main);
|
||||||
|
|
|
@ -647,7 +647,7 @@
|
||||||
</input>
|
</input>
|
||||||
<output>/controls/flight/elevator-trim</output>
|
<output>/controls/flight/elevator-trim</output>
|
||||||
<min>-1.0</min>
|
<min>-1.0</min>
|
||||||
<max>0.32</max>
|
<max>0.14</max>
|
||||||
<max-rate-of-change>0.01</max-rate-of-change>
|
<max-rate-of-change>0.01</max-rate-of-change>
|
||||||
</filter>
|
</filter>
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
4105
|
4106
|
Reference in a new issue