A3XX: FMGC TRK/FPA and mode engagement fixes

This commit is contained in:
Joshua Davidson 2017-10-20 22:51:30 -04:00
parent b25b7cc27b
commit 0812ee5359
3 changed files with 51 additions and 53 deletions

View file

@ -75,6 +75,8 @@ var APinit = func {
setprop("/it-autoflight/input/spd-kts", 100);
setprop("/it-autoflight/input/spd-mach", 0.50);
setprop("/it-autoflight/custom/show-hdg", 0);
setprop("/it-autoflight/internal/heading-error-deg", 0);
trkfpa_off();
ap_varioust.start();
thrustmode();
}
@ -165,13 +167,16 @@ var fmabox = func {
var fd1 = getprop("/it-autoflight/output/fd1");
var fd2 = getprop("/it-autoflight/output/fd2");
if (!ap1 and !ap2 and !fd1 and !fd2) {
setprop("/it-autoflight/input/trk", 0);
setprop("/it-autoflight/input/lat", 3);
setprop("/it-autoflight/input/vert", 1);
if (getprop("/it-autoflight/custom/trk-fpa") == 0) {
setprop("/it-autoflight/input/vert", 1);
} else if (getprop("/it-autoflight/custom/trk-fpa") == 1) {
setprop("/it-autoflight/input/vert", 5);
}
setprop("/it-autoflight/output/fma-pwr", 0);
} else {
setprop("/it-autoflight/input/trk", 0);
setprop("/it-autoflight/input/vs", int(getprop("/velocities/vertical-speed-fps")*0.6)*100);
setprop("/it-autoflight/input/fpa", int(10*getprop("/it-autoflight/internal/fpa"))*0.1);
setprop("/it-autoflight/output/fma-pwr", 1);
}
}
@ -418,29 +423,37 @@ var vertical = func {
var toggle_trkfpa = func {
var trkfpa = getprop("/it-autoflight/custom/trk-fpa");
if (trkfpa == 0) {
setprop("/it-autoflight/custom/trk-fpa", 1);
if (getprop("/it-autoflight/output/vert") == 1) {
setprop("/it-autoflight/input/vert", 5);
}
setprop("/it-autoflight/input/trk", 1);
setprop("/instrumentation/efis[0]/mfd/true-north", 1);
setprop("/instrumentation/efis[1]/mfd/true-north", 1);
var hed = getprop("/it-autoflight/internal/heading-error-deg");
if (hed >= -10 and hed <= 10 and getprop("/it-autoflight/output/lat") == 0) {
setprop("/it-autoflight/input/lat", 3);
}
trkfpa_on();
} else if (trkfpa == 1) {
setprop("/it-autoflight/custom/trk-fpa", 0);
if (getprop("/it-autoflight/output/vert") == 5) {
setprop("/it-autoflight/input/vert", 1);
}
setprop("/it-autoflight/input/trk", 0);
setprop("/instrumentation/efis[0]/mfd/true-north", 0);
setprop("/instrumentation/efis[1]/mfd/true-north", 0);
var hed = getprop("/it-autoflight/internal/heading-error-deg");
if (hed >= -10 and hed <= 10 and getprop("/it-autoflight/output/lat") == 0) {
setprop("/it-autoflight/input/lat", 3);
}
trkfpa_off();
}
}
var trkfpa_off = func {
setprop("/it-autoflight/custom/trk-fpa", 0);
if (getprop("/it-autoflight/output/vert") == 5) {
setprop("/it-autoflight/input/vert", 1);
}
setprop("/it-autoflight/input/trk", 0);
setprop("/instrumentation/efis[0]/mfd/true-north", 0);
setprop("/instrumentation/efis[1]/mfd/true-north", 0);
var hed = getprop("/it-autoflight/internal/heading-error-deg");
if (hed >= -10 and hed <= 10 and getprop("/it-autoflight/output/lat") == 0) {
setprop("/it-autoflight/input/lat", 3);
}
}
var trkfpa_on = func {
setprop("/it-autoflight/custom/trk-fpa", 1);
if (getprop("/it-autoflight/output/vert") == 1) {
setprop("/it-autoflight/input/vert", 5);
}
setprop("/it-autoflight/input/trk", 1);
setprop("/instrumentation/efis[0]/mfd/true-north", 1);
setprop("/instrumentation/efis[1]/mfd/true-north", 1);
var hed = getprop("/it-autoflight/internal/heading-error-deg");
if (hed >= -10 and hed <= 10 and getprop("/it-autoflight/output/lat") == 0) {
setprop("/it-autoflight/input/lat", 3);
}
}

View file

@ -110,6 +110,17 @@ var loopFMA = maketimer(0.05, func {
}
}
}
var trk = getprop("/it-autoflight/custom/trk-fpa");
if (lat == "HDG" and trk == 0) {
if (newlat != "HDG") {
setprop("/modes/pfd/fma/roll-mode", "HDG");
}
} else if (lat == "HDG" and trk == 1) {
if (newlat != "TRACK") {
setprop("/modes/pfd/fma/roll-mode", "TRACK");
}
}
});
var loopFMA_b = func {
@ -125,33 +136,11 @@ var loopFMA_b = func {
}
}
# HDG/TRK
var hdgmde = func {
var lat = getprop("/it-autoflight/mode/lat");
var newlat = getprop("/modes/pfd/fma/roll-mode");
var trk = getprop("/it-autoflight/custom/trk-fpa");
if (lat == "HDG" and trk == 0) {
if (newlat != "HDG") {
setprop("/modes/pfd/fma/roll-mode", "HDG");
}
} else if (lat == "HDG" and trk == 1) {
if (newlat != "TRACK") {
setprop("/modes/pfd/fma/roll-mode", "TRACK");
}
}
}
setlistener("/it-autoflight/custom/trk-fpa", func {
hdgmde();
});
# Master Lateral
setlistener("/it-autoflight/mode/lat", func {
var lat = getprop("/it-autoflight/mode/lat");
var newlat = getprop("/modes/pfd/fma/roll-mode");
if (lat == "HDG") {
hdgmde();
} else if (lat == "LNAV") {
if (lat == "LNAV") {
if (newlat != "NAV") {
setprop("/modes/pfd/fma/roll-mode", "NAV");
}
@ -441,19 +430,15 @@ var boxchk = func {
var fd2 = getprop("/it-autoflight/output/fd2");
var fma_pwr = getprop("/it-autoflight/output/fma-pwr");
if (ap1 and !ap2 and !fd1 and !fd2 and !fma_pwr) {
setprop("/it-autoflight/custom/trk-fpa", 0);
setprop("/it-autoflight/input/lat", 3);
boxchk_b();
} else if (!ap1 and ap2 and !fd1 and !fd2 and !fma_pwr) {
setprop("/it-autoflight/custom/trk-fpa", 0);
setprop("/it-autoflight/input/lat", 3);
boxchk_b();
} else if (!ap1 and !ap2 and fd1 and !fd2 and !fma_pwr) {
setprop("/it-autoflight/custom/trk-fpa", 0);
setprop("/it-autoflight/input/lat", 3);
boxchk_b();
} else if (!ap1 and !ap2 and !fd1 and fd2 and !fma_pwr) {
setprop("/it-autoflight/custom/trk-fpa", 0);
setprop("/it-autoflight/input/lat", 3);
boxchk_b();
}

View file

@ -1 +1 @@
2145
2146