From 5d4a3a7636bf1137e87eab35f167a1b40ea3b494 Mon Sep 17 00:00:00 2001 From: Joshua Davidson Date: Mon, 30 Jan 2017 18:12:19 -0500 Subject: [PATCH] bugfix, itaf 127 --- A320-main.xml | 19 +- Models/FlightDeck/a320.flightdeck.xml | 29 +- Nasal/PFD_FMA.nas | 6 +- Nasal/it-autoflight.nas | 976 ++++++++++++++------------ Nasal/systems.nas | 8 - Systems/autopilot-dlg.xml | 94 ++- Systems/engine-timing.xml | 32 + Systems/it-autoflight.xml | 129 +++- 8 files changed, 784 insertions(+), 509 deletions(-) diff --git a/A320-main.xml b/A320-main.xml index acae4e4e..586d30cc 100644 --- a/A320-main.xml +++ b/A320-main.xml @@ -249,6 +249,7 @@ -4.0 0.025 0.07 + 0.30 -0.35 0.10 @@ -259,16 +260,20 @@ - 0 - 40 - 1 - 0.645 - 40 - 0 - 15 + 0 + 40 + 1 + 0.645 + 40 + 0 + 157 + 100 + 1500 + + diff --git a/Models/FlightDeck/a320.flightdeck.xml b/Models/FlightDeck/a320.flightdeck.xml index afe7300b..baf89f94 100644 --- a/Models/FlightDeck/a320.flightdeck.xml +++ b/Models/FlightDeck/a320.flightdeck.xml @@ -527,9 +527,14 @@ false - property-assign - /it-autoflight/input/vert - 1 + nasal + @@ -644,9 +649,12 @@ 1 - property-assign - /it-autoflight/settings/use-fpa - 1 + nasal + @@ -663,9 +671,12 @@ 0 - property-assign - /it-autoflight/settings/use-fpa - 0 + nasal + diff --git a/Nasal/PFD_FMA.nas b/Nasal/PFD_FMA.nas index 9be5017d..b97aed9c 100644 --- a/Nasal/PFD_FMA.nas +++ b/Nasal/PFD_FMA.nas @@ -43,7 +43,7 @@ setlistener("/it-autoflight/mode/lat", func { } else if (lat == "ALGN") { setprop("/modes/pfd/fma/roll-mode", "ALN"); } else if (lat == "T/O") { - setprop("/modes/pfd/fma/roll-mode", " "); + setprop("/modes/pfd/fma/roll-mode", "RWY"); } }); @@ -117,9 +117,9 @@ var fd = func { if (fd1 and fd2) { setprop("/modes/pfd/fma/fd-mode", "1FD2"); } else if (fd1 and !fd2) { - setprop("/modes/pfd/fma/fd-mode", "FD1"); + setprop("/modes/pfd/fma/fd-mode", "1FD-"); } else if (fd2 and !fd1) { - setprop("/modes/pfd/fma/fd-mode", "FD2"); + setprop("/modes/pfd/fma/fd-mode", "-FD2"); } else { setprop("/modes/pfd/fma/fd-mode", " "); } diff --git a/Nasal/it-autoflight.nas b/Nasal/it-autoflight.nas index f62acbb0..891161c1 100644 --- a/Nasal/it-autoflight.nas +++ b/Nasal/it-autoflight.nas @@ -1,5 +1,5 @@ # IT AUTOFLIGHT System Controller by Joshua Davidson (it0uchpods/411). -# V3.0.0 Build 115 +# V3.0.0 Build 127 # This program is 100% GPL! print("IT-AUTOFLIGHT: Please Wait!"); @@ -12,12 +12,12 @@ var ap_init = func { setprop("/it-autoflight/input/cws", 0); setprop("/it-autoflight/input/fd1", 0); setprop("/it-autoflight/input/fd2", 0); - setprop("/it-autoflight/input/spd-kts", 200); - setprop("/it-autoflight/input/spd-mach", 0.68); setprop("/it-autoflight/input/hdg", 360); setprop("/it-autoflight/input/alt", 10000); setprop("/it-autoflight/input/vs", 0); + setprop("/it-autoflight/input/fpa", 0); setprop("/it-autoflight/input/lat", 5); + setprop("/it-autoflight/input/lat-arm", 0); setprop("/it-autoflight/input/vert", 7); setprop("/it-autoflight/input/bank-limit", 30); setprop("/it-autoflight/input/trk", 0); @@ -32,6 +32,8 @@ var ap_init = func { setprop("/it-autoflight/output/appr-armed", 0); setprop("/it-autoflight/output/thr-mode", 2); setprop("/it-autoflight/output/retard", 0); + setprop("/it-autoflight/output/lat", 5); + setprop("/it-autoflight/output/vert", 7); setprop("/it-autoflight/settings/min-pitch", -8); setprop("/it-autoflight/settings/max-pitch", 8); setprop("/it-autoflight/internal/min-pitch", -8); @@ -39,9 +41,14 @@ var ap_init = func { setprop("/it-autoflight/internal/alt", 10000); setprop("/it-autoflight/internal/cwsr", 0); setprop("/it-autoflight/internal/cwsp", 0); - setprop("/it-autoflight/autoland/target-vs", "-650"); - setprop("/it-autoflight/mode/lat", "T/O"); - setprop("/it-autoflight/mode/vert", "T/O CLB"); + setprop("/it-autoflight/internal/fpa", 0); + setprop("/it-autoflight/autoland/target-vs", "-650"); + setprop("/it-autoflight/mode/thr", "PITCH"); + setprop("/it-autoflight/mode/arm", "HDG"); + setprop("/it-autoflight/mode/lat", "T/O"); + setprop("/it-autoflight/mode/vert", "T/O CLB"); + setprop("/it-autoflight/input/spd-kts", 200); + setprop("/it-autoflight/input/spd-mach", 0.68); thrustmode(); update_arms(); print("IT-AUTOFLIGHT: Done!"); @@ -49,253 +56,313 @@ var ap_init = func { # AP 1 Master System setlistener("/it-autoflight/input/ap1", func { - var apmas = getprop("/it-autoflight/input/ap1"); - if (apmas == 0) { - setprop("/it-autoflight/output/ap1", 0); - setprop("/controls/flight/rudder", 0); - if (getprop("/it-autoflight/sound/enableapoffsound") == 1) { - setprop("/it-autoflight/sound/apoffsound", 1); - setprop("/it-autoflight/sound/enableapoffsound", 0); + var apmas = getprop("/it-autoflight/input/ap1"); + if (apmas == 0) { + setprop("/it-autoflight/output/ap1", 0); + setprop("/controls/flight/rudder", 0); + if (getprop("/it-autoflight/sound/enableapoffsound") == 1) { + setprop("/it-autoflight/sound/apoffsound", 1); + setprop("/it-autoflight/sound/enableapoffsound", 0); + } + } else if (apmas == 1) { + if ((getprop("/gear/gear[1]/wow") == 0) and (getprop("/gear/gear[2]/wow") == 0)) { + setprop("/controls/flight/rudder", 0); + setprop("/it-autoflight/input/cws", 0); + setprop("/it-autoflight/output/ap1", 1); + setprop("/it-autoflight/sound/enableapoffsound", 1); + setprop("/it-autoflight/sound/apoffsound", 0); + } } - } else if (apmas == 1) { - setprop("/controls/flight/rudder", 0); - setprop("/it-autoflight/input/cws", 0); - setprop("/it-autoflight/output/ap1", 1); - setprop("/it-autoflight/sound/enableapoffsound", 1); - setprop("/it-autoflight/sound/apoffsound", 0); - } }); # AP 2 Master System setlistener("/it-autoflight/input/ap2", func { - var apmas = getprop("/it-autoflight/input/ap2"); - if (apmas == 0) { - setprop("/it-autoflight/output/ap2", 0); - setprop("/controls/flight/rudder", 0); - if (getprop("/it-autoflight/sound/enableapoffsound2") == 1) { - setprop("/it-autoflight/sound/apoffsound2", 1); - setprop("/it-autoflight/sound/enableapoffsound2", 0); + var apmas = getprop("/it-autoflight/input/ap2"); + if (apmas == 0) { + setprop("/it-autoflight/output/ap2", 0); + setprop("/controls/flight/rudder", 0); + if (getprop("/it-autoflight/sound/enableapoffsound2") == 1) { + setprop("/it-autoflight/sound/apoffsound2", 1); + setprop("/it-autoflight/sound/enableapoffsound2", 0); + } + } else if (apmas == 1) { + if ((getprop("/gear/gear[1]/wow") == 0) and (getprop("/gear/gear[2]/wow") == 0)) { + setprop("/controls/flight/rudder", 0); + setprop("/it-autoflight/input/cws", 0); + setprop("/it-autoflight/output/ap2", 1); + setprop("/it-autoflight/sound/enableapoffsound2", 1); + setprop("/it-autoflight/sound/apoffsound2", 0); + } } - } else if (apmas == 1) { - setprop("/controls/flight/rudder", 0); - setprop("/it-autoflight/input/cws", 0); - setprop("/it-autoflight/output/ap2", 1); - setprop("/it-autoflight/sound/enableapoffsound2", 1); - setprop("/it-autoflight/sound/apoffsound2", 0); - } }); # AT Master System setlistener("/it-autoflight/input/athr", func { - var atmas = getprop("/it-autoflight/input/athr"); - if (atmas == 0) { - setprop("/it-autoflight/output/athr", 0); - } else if (atmas == 1) { - setprop("/it-autoflight/output/athr", 1); - } + var atmas = getprop("/it-autoflight/input/athr"); + if (atmas == 0) { + setprop("/it-autoflight/output/athr", 0); + } else if (atmas == 1) { + setprop("/it-autoflight/output/athr", 1); + } }); # CWS Master System setlistener("/it-autoflight/input/cws", func { - var cwsmas = getprop("/it-autoflight/input/cws"); - if (cwsmas == 1) { - setprop("/it-autoflight/input/ap1", 0); - setprop("/it-autoflight/input/ap2", 0); - setprop("/it-autoflight/internal/cws-roll-deg", getprop("/orientation/roll-deg")); - setprop("/it-autoflight/internal/cws-pitch-deg", getprop("/orientation/pitch-deg")); - cwsrollt.start(); - cwspitcht.start(); - setprop("/it-autoflight/output/cws", 1); - } else if (cwsmas == 0) { - cwsrollt.stop(); - cwspitcht.stop(); - setprop("/it-autoflight/output/cws", 0); - setprop("/controls/flight/aileron-trim", 0); - } + var cwsmas = getprop("/it-autoflight/input/cws"); + if (cwsmas == 1) { + if ((getprop("/gear/gear[1]/wow") == 0) and (getprop("/gear/gear[2]/wow") == 0)) { + setprop("/it-autoflight/input/ap1", 0); + setprop("/it-autoflight/input/ap2", 0); + setprop("/it-autoflight/internal/cws-roll-deg", getprop("/orientation/roll-deg")); + setprop("/it-autoflight/internal/cws-pitch-deg", getprop("/orientation/pitch-deg")); + cwsrollt.start(); + cwspitcht.start(); + setprop("/it-autoflight/output/cws", 1); + } + } else if (cwsmas == 0) { + cwsrollt.stop(); + cwspitcht.stop(); + setprop("/it-autoflight/output/cws", 0); + setprop("/controls/flight/aileron-trim", 0); + } }); # Flight Director 1 Master System setlistener("/it-autoflight/input/fd1", func { - var fdmas = getprop("/it-autoflight/input/fd1"); - if (fdmas == 0) { - setprop("/it-autoflight/output/fd1", 0); - } else if (fdmas == 1) { - setprop("/it-autoflight/output/fd1", 1); - } + var fdmas = getprop("/it-autoflight/input/fd1"); + if (fdmas == 0) { + setprop("/it-autoflight/output/fd1", 0); + } else if (fdmas == 1) { + setprop("/it-autoflight/output/fd1", 1); + } }); # Flight Director 2 Master System setlistener("/it-autoflight/input/fd2", func { - var fdmas = getprop("/it-autoflight/input/fd2"); - if (fdmas == 0) { - setprop("/it-autoflight/output/fd2", 0); - } else if (fdmas == 1) { - setprop("/it-autoflight/output/fd2", 1); - } + var fdmas = getprop("/it-autoflight/input/fd2"); + if (fdmas == 0) { + setprop("/it-autoflight/output/fd2", 0); + } else if (fdmas == 1) { + setprop("/it-autoflight/output/fd2", 1); + } }); # Master Lateral setlistener("/it-autoflight/input/lat", func { - lateral(); + if ((getprop("/gear/gear[1]/wow") == 0) and (getprop("/gear/gear[2]/wow") == 0)) { + lateral(); + } else { + lat_arm(); + } }); var lateral = func { - var latset = getprop("/it-autoflight/input/lat"); - if (latset == 0) { - alandt.stop(); - alandt1.stop(); - setprop("/it-autoflight/output/loc-armed", 0); - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/output/lat", 0); - setprop("/it-autoflight/mode/lat", "HDG"); - setprop("/it-autoflight/mode/arm", " "); - } else if (latset == 1) { - alandt.stop(); - alandt1.stop(); - 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", " "); - } else if (latset == 2) { - setprop("/instrumentation/nav/signal-quality-norm", 0); - setprop("/it-autoflight/output/loc-armed", 1); - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/mode/arm", "LOC"); - } else if (latset == 3) { - alandt.stop(); - alandt1.stop(); - setprop("/it-autoflight/output/loc-armed", 0); - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/output/lat", 0); - setprop("/it-autoflight/mode/lat", "HDG"); - setprop("/it-autoflight/mode/arm", " "); - var hdgnow = int(getprop("/orientation/heading-magnetic-deg")+0.5); - setprop("/it-autoflight/input/hdg", hdgnow); - } else if (latset == 4) { - setprop("/it-autoflight/output/lat", 4); - setprop("/it-autoflight/mode/lat", "ALGN"); - } else if (latset == 5) { - setprop("/it-autoflight/output/lat", 5); - } + var latset = getprop("/it-autoflight/input/lat"); + if (latset == 0) { + alandt.stop(); + alandt1.stop(); + setprop("/it-autoflight/output/loc-armed", 0); + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/output/lat", 0); + setprop("/it-autoflight/mode/lat", "HDG"); + setprop("/it-autoflight/mode/arm", " "); + } else if (latset == 1) { + alandt.stop(); + alandt1.stop(); + 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", " "); + } else if (latset == 2) { + setprop("/instrumentation/nav/signal-quality-norm", 0); + setprop("/it-autoflight/output/loc-armed", 1); + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/mode/arm", "LOC"); + } else if (latset == 3) { + alandt.stop(); + alandt1.stop(); + setprop("/it-autoflight/output/loc-armed", 0); + setprop("/it-autoflight/output/appr-armed", 0); + var hdgnow = int(getprop("/orientation/heading-magnetic-deg")+0.5); + setprop("/it-autoflight/input/hdg", hdgnow); + setprop("/it-autoflight/output/lat", 0); + setprop("/it-autoflight/mode/lat", "HDG"); + setprop("/it-autoflight/mode/arm", " "); + } else if (latset == 4) { + setprop("/it-autoflight/output/lat", 4); + setprop("/it-autoflight/mode/lat", "ALGN"); + } else if (latset == 5) { + setprop("/it-autoflight/output/lat", 5); + } +} + +var lat_arm = func { + var latset = getprop("/it-autoflight/input/lat"); + if (latset == 0) { + setprop("/it-autoflight/input/lat-arm", 0); + setprop("/it-autoflight/mode/arm", "HDG"); + } else if (latset == 1) { + setprop("/it-autoflight/input/lat-arm", 1); + setprop("/it-autoflight/mode/arm", "LNV"); + } else if (latset == 3) { + var hdgnow = int(getprop("/orientation/heading-magnetic-deg")+0.5); + setprop("/it-autoflight/input/hdg", hdgnow); + setprop("/it-autoflight/input/lat-arm", 0); + setprop("/it-autoflight/mode/arm", "HDG"); + } } # Master Vertical setlistener("/it-autoflight/input/vert", func { - vertical(); + if ((getprop("/gear/gear[1]/wow") == 0) and (getprop("/gear/gear[2]/wow") == 0)) { + vertical(); + } }); var vertical = func { - var vertset = getprop("/it-autoflight/input/vert"); - if (vertset == 0) { - alandt.stop(); - alandt1.stop(); - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/output/vert", 0); - setprop("/it-autoflight/mode/vert", "ALT HLD"); - if (getprop("/it-autoflight/output/loc-armed")) { - setprop("/it-autoflight/mode/arm", "LOC"); - } else { - setprop("/it-autoflight/mode/arm", " "); + var vertset = getprop("/it-autoflight/input/vert"); + if (vertset == 0) { + alandt.stop(); + alandt1.stop(); + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/output/vert", 0); + setprop("/it-autoflight/mode/vert", "ALT HLD"); + if (getprop("/it-autoflight/output/loc-armed")) { + setprop("/it-autoflight/mode/arm", "LOC"); + } else { + setprop("/it-autoflight/mode/arm", " "); + } + var altnow = int((getprop("/instrumentation/altimeter/indicated-altitude-ft")+50)/100)*100; + setprop("/it-autoflight/input/alt", altnow); + setprop("/it-autoflight/internal/alt", altnow); + thrustmode(); + } else if (vertset == 1) { + alandt.stop(); + alandt1.stop(); + var altinput = getprop("/it-autoflight/input/alt"); + setprop("/it-autoflight/internal/alt", altinput); + var vsnow = int(getprop("/velocities/vertical-speed-fps")*0.6)*100; + setprop("/it-autoflight/input/vs", vsnow); + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/output/vert", 1); + setprop("/it-autoflight/mode/vert", "V/S"); + if (getprop("/it-autoflight/output/loc-armed")) { + setprop("/it-autoflight/mode/arm", "LOC"); + } else { + setprop("/it-autoflight/mode/arm", " "); + } + thrustmode(); + } else if (vertset == 2) { + if (getprop("/it-autoflight/output/lat") == 2) { + # Do nothing because VORLOC is active + } else { + setprop("/instrumentation/nav/signal-quality-norm", 0); + setprop("/it-autoflight/output/loc-armed", 1); + } + setprop("/instrumentation/nav/gs-rate-of-climb", 0); + setprop("/it-autoflight/output/appr-armed", 1); + setprop("/it-autoflight/mode/arm", "ILS"); + setprop("/it-autoflight/autoland/target-vs", "-650"); + } else if (vertset == 3) { + alandt.stop(); + alandt1.stop(); + var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); + var alt = getprop("/it-autoflight/internal/alt"); + var dif = calt - alt; + var pitchdeg = getprop("/orientation/pitch-deg"); + if (calt < alt) { + setprop("/it-autoflight/internal/max-pitch", pitchdeg); + } else if (calt > alt) { + setprop("/it-autoflight/internal/min-pitch", pitchdeg); + } + minmaxtimer.start(); + thrustmode(); + setprop("/it-autoflight/output/vert", 0); + setprop("/it-autoflight/mode/vert", "ALT CAP"); + } else if (vertset == 4) { + alandt.stop(); + alandt1.stop(); + var altinput = getprop("/it-autoflight/input/alt"); + setprop("/it-autoflight/internal/alt", altinput); + var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); + var alt = getprop("/it-autoflight/internal/alt"); + var dif = calt - alt; + if (dif < 550 and dif > -550) { + alt_on(); + } else { + flch_on(); + } + if (getprop("/it-autoflight/output/loc-armed")) { + setprop("/it-autoflight/mode/arm", "LOC"); + } else { + setprop("/it-autoflight/mode/arm", " "); + } + } else if (vertset == 5) { + alandt.stop(); + alandt1.stop(); + fpa_calct.start(); + var altinput = getprop("/it-autoflight/input/alt"); + setprop("/it-autoflight/internal/alt", altinput); + var fpanow = (int(10*getprop("/it-autoflight/internal/fpa")))*0.1; + if (fpanow < 9.9 and fpanow > -9.9) { + setprop("/it-autoflight/input/fpa", fpanow); + } else if (fpanow >= 9.9) { + setprop("/it-autoflight/input/fpa", 9.9); + } else if (fpanow <= -9.9) { + setprop("/it-autoflight/input/fpa", -9.9); + } + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/output/vert", 5); + setprop("/it-autoflight/mode/vert", "FPA"); + if (getprop("/it-autoflight/output/loc-armed")) { + setprop("/it-autoflight/mode/arm", "LOC"); + } else { + setprop("/it-autoflight/mode/arm", " "); + } + thrustmode(); + } else if (vertset == 6) { + setprop("/it-autoflight/output/vert", 6); + setprop("/it-autoflight/mode/vert", "LAND 3"); + setprop("/it-autoflight/mode/arm", " "); + thrustmode(); + alandt.stop(); + alandt1.start(); + setprop("/it-autoflight/autoland/target-vs", "-650"); + } else if (vertset == 7) { + setprop("/it-autoflight/output/vert", 7); + setprop("/it-autoflight/mode/arm", " "); + var altinput = getprop("/it-autoflight/input/alt"); + setprop("/it-autoflight/internal/alt", altinput); + thrustmode(); + alandt.stop(); + alandt1.stop(); } - var altnow = int((getprop("/instrumentation/altimeter/indicated-altitude-ft")+50)/100)*100; - setprop("/it-autoflight/input/alt", altnow); - setprop("/it-autoflight/internal/alt", altnow); - thrustmode(); - } else if (vertset == 1) { - alandt.stop(); - alandt1.stop(); - var altinput = getprop("/it-autoflight/input/alt"); - setprop("/it-autoflight/internal/alt", altinput); - var vsnow = int(getprop("/velocities/vertical-speed-fps")*0.6)*100; - setprop("/it-autoflight/input/vs", vsnow); - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/output/vert", 1); - setprop("/it-autoflight/mode/vert", "V/S"); - if (getprop("/it-autoflight/output/loc-armed")) { - setprop("/it-autoflight/mode/arm", "LOC"); - } else { - setprop("/it-autoflight/mode/arm", " "); - } - thrustmode(); - } else if (vertset == 2) { - if (getprop("/it-autoflight/output/lat") == 2) { - # Do nothing because VORLOC is active - } else { - setprop("/instrumentation/nav/signal-quality-norm", 0); - setprop("/it-autoflight/output/loc-armed", 1); - } - setprop("/instrumentation/nav/gs-rate-of-climb", 0); - setprop("/it-autoflight/output/appr-armed", 1); - setprop("/it-autoflight/mode/arm", "ILS"); - setprop("/it-autoflight/autoland/target-vs", "-650"); - } else if (vertset == 3) { - alandt.stop(); - alandt1.stop(); - var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); - var alt = getprop("/it-autoflight/internal/alt"); - var dif = calt - alt; - var pitchdeg = getprop("/orientation/pitch-deg"); - if (calt < alt) { - setprop("/it-autoflight/internal/max-pitch", pitchdeg); - } else if (calt > alt) { - setprop("/it-autoflight/internal/min-pitch", pitchdeg); - } - minmaxtimer.start(); - thrustmode(); - setprop("/it-autoflight/output/vert", 0); - setprop("/it-autoflight/mode/vert", "ALT CAP"); - } else if (vertset == 4) { - alandt.stop(); - alandt1.stop(); - var altinput = getprop("/it-autoflight/input/alt"); - setprop("/it-autoflight/internal/alt", altinput); - var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); - var alt = getprop("/it-autoflight/internal/alt"); - var dif = calt - alt; - if (dif < 550 and dif > -550) { - alt_on(); - } else { - flch_on(); - } - if (getprop("/it-autoflight/output/loc-armed")) { - setprop("/it-autoflight/mode/arm", "LOC"); - } else { - setprop("/it-autoflight/mode/arm", " "); - } - } else if (vertset == 5) { - # FPA not ready yet, so do nothing - } else if (vertset == 6) { - setprop("/it-autoflight/output/vert", 6); - setprop("/it-autoflight/mode/vert", "LAND 3"); - setprop("/it-autoflight/mode/arm", " "); - thrustmode(); - alandt.stop(); - alandt1.start(); - setprop("/it-autoflight/autoland/target-vs", "-650"); - } else if (vertset == 7) { - setprop("/it-autoflight/output/vert", 7); - setprop("/it-autoflight/mode/arm", " "); - var altinput = getprop("/it-autoflight/input/alt"); - setprop("/it-autoflight/internal/alt", altinput); - togasel(); - thrustmode(); - alandt.stop(); - alandt1.stop(); - } } var flch_on = func { - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/output/vert", 4); - thrustmodet.start(); + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/output/vert", 4); + thrustmodet.start(); } var alt_on = func { - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/output/vert", 0); - setprop("/it-autoflight/mode/vert", "ALT CAP"); - setprop("/it-autoflight/internal/max-pitch", 8); - setprop("/it-autoflight/internal/min-pitch", -8); + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/output/vert", 0); + setprop("/it-autoflight/mode/vert", "ALT CAP"); + setprop("/it-autoflight/internal/max-pitch", 8); + setprop("/it-autoflight/internal/min-pitch", -8); +} + +var fpa_calc = func { + var VS = getprop("/velocities/vertical-speed-fps"); + var TAS = getprop("/velocities/uBody-fps"); + if(TAS < 10) TAS = 10; + if(VS < -200) VS =-200; + if (abs(VS/TAS) <= 1) { + var FPangle = math.asin(VS/TAS); + FPangle *=90; + setprop("/it-autoflight/internal/fpa", FPangle); + } } setlistener("/it-autoflight/input/kts-mach", func { @@ -309,281 +376,311 @@ setlistener("/it-autoflight/input/kts-mach", func { } }); -# Capture Logic -setlistener("/it-autoflight/output/vert", func { - var vertm = getprop("/it-autoflight/output/vert"); - if (vertm == 1) { - altcaptt.start(); - } else if (vertm == 4) { - altcaptt.start(); - } else if (vertm == 5) { - altcaptt.start(); - } else if (vertm == 7) { - altcaptt.start(); - } else { - altcaptt.stop(); - } +# TOGA +setlistener("/it-autoflight/input/toga", func { + if (getprop("/it-autoflight/input/toga") == 1) { + setprop("/it-autoflight/input/vert", 7); + setprop("/it-autoflight/output/loc-armed", 0); + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/input/toga", 0); + togasel(); + } }); +var togasel = func { + if ((getprop("/gear/gear[1]/wow") == 0) and (getprop("/gear/gear[2]/wow") == 0)) { + var iasnow = int(getprop("/instrumentation/airspeed-indicator/indicated-speed-kt")+0.5); + setprop("/it-autoflight/input/spd-kts", iasnow); + setprop("/it-autoflight/input/kts-mach", 0); + setprop("/it-autoflight/mode/vert", "G/A CLB"); + } else { + setprop("/it-autoflight/input/lat", 5); + setprop("/it-autoflight/mode/lat", "T/O"); + setprop("/it-autoflight/mode/vert", "T/O CLB"); + } +} + +setlistener("/it-autoflight/mode/vert", func { + var vertm = getprop("/it-autoflight/mode/vert"); + if (vertm == "T/O CLB") { + reduct.start(); + latarmt.start(); + } else { + reduct.stop(); + latarmt.stop(); + } +}); + +var toga_reduc = func { + if (getprop("/position/gear-agl-ft") >= getprop("/it-autoflight/settings/reduc-agl-ft")) { + setprop("/it-autoflight/input/vert", 4); + } +} + +var latarms = func { + if (getprop("/position/gear-agl-ft") >= getprop("/it-autoflight/settings/lat-agl-ft")) { + setprop("/it-autoflight/input/lat", getprop("/it-autoflight/input/lat-arm")); + } +} + +# Altitude Capture and FPA Timer Logic +setlistener("/it-autoflight/output/vert", func { + var vertm = getprop("/it-autoflight/output/vert"); + if (vertm == 1) { + altcaptt.start(); + fpa_calct.stop(); + } else if (vertm == 4) { + altcaptt.start(); + fpa_calct.stop(); + } else if (vertm == 5) { + altcaptt.start(); + } else if (vertm == 7) { + altcaptt.start(); + fpa_calct.stop(); + } else { + altcaptt.stop(); + fpa_calct.stop(); + } +}); + +# Altitude Capture var altcapt = func { - var vsnow = getprop("/it-autoflight/internal/vert-speed-fpm"); - if ((vsnow >= 0 and vsnow < 500) or (vsnow < 0 and vsnow > -500)) { - setprop("/it-autoflight/internal/captvs", 100); - setprop("/it-autoflight/internal/captvsneg", -100); - } else if ((vsnow >= 500 and vsnow < 1000) or (vsnow < -500 and vsnow > -1000)) { - setprop("/it-autoflight/internal/captvs", 150); - setprop("/it-autoflight/internal/captvsneg", -150); - } else if ((vsnow >= 1000 and vsnow < 1500) or (vsnow < -1000 and vsnow > -1500)) { - setprop("/it-autoflight/internal/captvs", 200); - setprop("/it-autoflight/internal/captvsneg", -200); - } else if ((vsnow >= 1500 and vsnow < 2000) or (vsnow < -1500 and vsnow > -2000)) { - setprop("/it-autoflight/internal/captvs", 300); - setprop("/it-autoflight/internal/captvsneg", -300); - } else if ((vsnow >= 2000 and vsnow < 3000) or (vsnow < -2000 and vsnow > -3000)) { - setprop("/it-autoflight/internal/captvs", 450); - setprop("/it-autoflight/internal/captvsneg", -450); - } else if ((vsnow >= 3000 and vsnow < 4000) or (vsnow < -3000 and vsnow > -4000)) { - setprop("/it-autoflight/internal/captvs", 650); - setprop("/it-autoflight/internal/captvsneg", -650); - } else if ((vsnow >= 4000 and vsnow < 5000) or (vsnow < -4000 and vsnow > -5000)) { - setprop("/it-autoflight/internal/captvs", 1000); - setprop("/it-autoflight/internal/captvsneg", -1000); - } else if ((vsnow >= 5000) or (vsnow < -5000)) { - setprop("/it-autoflight/internal/captvs", 1250); - setprop("/it-autoflight/internal/captvsneg", -1250); - } - var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); - var alt = getprop("/it-autoflight/internal/alt"); - var dif = calt - alt; - if (dif < getprop("/it-autoflight/internal/captvs") and dif > getprop("/it-autoflight/internal/captvsneg")) { - setprop("/it-autoflight/input/vert", 3); - setprop("/it-autoflight/output/thr-mode", 0); - } - var altinput = getprop("/it-autoflight/input/alt"); - setprop("/it-autoflight/internal/alt", altinput); + var vsnow = getprop("/it-autoflight/internal/vert-speed-fpm"); + if ((vsnow >= 0 and vsnow < 500) or (vsnow < 0 and vsnow > -500)) { + setprop("/it-autoflight/internal/captvs", 100); + setprop("/it-autoflight/internal/captvsneg", -100); + } else if ((vsnow >= 500 and vsnow < 1000) or (vsnow < -500 and vsnow > -1000)) { + setprop("/it-autoflight/internal/captvs", 150); + setprop("/it-autoflight/internal/captvsneg", -150); + } else if ((vsnow >= 1000 and vsnow < 1500) or (vsnow < -1000 and vsnow > -1500)) { + setprop("/it-autoflight/internal/captvs", 200); + setprop("/it-autoflight/internal/captvsneg", -200); + } else if ((vsnow >= 1500 and vsnow < 2000) or (vsnow < -1500 and vsnow > -2000)) { + setprop("/it-autoflight/internal/captvs", 300); + setprop("/it-autoflight/internal/captvsneg", -300); + } else if ((vsnow >= 2000 and vsnow < 3000) or (vsnow < -2000 and vsnow > -3000)) { + setprop("/it-autoflight/internal/captvs", 450); + setprop("/it-autoflight/internal/captvsneg", -450); + } else if ((vsnow >= 3000 and vsnow < 4000) or (vsnow < -3000 and vsnow > -4000)) { + setprop("/it-autoflight/internal/captvs", 650); + setprop("/it-autoflight/internal/captvsneg", -650); + } else if ((vsnow >= 4000 and vsnow < 5000) or (vsnow < -4000 and vsnow > -5000)) { + setprop("/it-autoflight/internal/captvs", 1000); + setprop("/it-autoflight/internal/captvsneg", -1000); + } else if ((vsnow >= 5000) or (vsnow < -5000)) { + setprop("/it-autoflight/internal/captvs", 1250); + setprop("/it-autoflight/internal/captvsneg", -1250); + } + var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); + var alt = getprop("/it-autoflight/internal/alt"); + var dif = calt - alt; + if (dif < getprop("/it-autoflight/internal/captvs") and dif > getprop("/it-autoflight/internal/captvsneg")) { + setprop("/it-autoflight/input/vert", 3); + setprop("/it-autoflight/output/thr-mode", 0); + } + var altinput = getprop("/it-autoflight/input/alt"); + setprop("/it-autoflight/internal/alt", altinput); } # Thrust Mode Selector var thrustmode = func { - var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); - var alt = getprop("/it-autoflight/internal/alt"); - var vertm = getprop("/it-autoflight/output/vert"); - if (vertm == 4) { - if (calt < alt) { - setprop("/it-autoflight/output/thr-mode", 2); - setprop("/it-autoflight/mode/thr", " PITCH"); - setprop("/it-autoflight/mode/vert", "SPD CLB"); - } else if (calt > alt) { - setprop("/it-autoflight/output/thr-mode", 1); - setprop("/it-autoflight/mode/thr", " PITCH"); - setprop("/it-autoflight/mode/vert", "SPD DES"); - } else { - setprop("/it-autoflight/output/thr-mode", 0); - setprop("/it-autoflight/mode/thr", "THRUST"); - setprop("/it-autoflight/input/vert", 3); + var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); + var alt = getprop("/it-autoflight/internal/alt"); + var vertm = getprop("/it-autoflight/output/vert"); + if (vertm == 4) { + if (calt < alt) { + setprop("/it-autoflight/output/thr-mode", 2); + setprop("/it-autoflight/mode/thr", " PITCH"); + setprop("/it-autoflight/mode/vert", "SPD CLB"); + } else if (calt > alt) { + setprop("/it-autoflight/output/thr-mode", 1); + setprop("/it-autoflight/mode/thr", " PITCH"); + setprop("/it-autoflight/mode/vert", "SPD DES"); + } else { + setprop("/it-autoflight/output/thr-mode", 0); + setprop("/it-autoflight/mode/thr", "THRUST"); + setprop("/it-autoflight/input/vert", 3); + } + } else if (vertm == 7) { + setprop("/it-autoflight/output/thr-mode", 2); + setprop("/it-autoflight/mode/thr", " PITCH"); + } else { + setprop("/it-autoflight/output/thr-mode", 0); + setprop("/it-autoflight/mode/thr", "THRUST"); + thrustmodet.stop(); } - } else if (vertm == 7) { - setprop("/it-autoflight/output/thr-mode", 2); - setprop("/it-autoflight/mode/thr", " PITCH"); - } else { - setprop("/it-autoflight/output/thr-mode", 0); - setprop("/it-autoflight/mode/thr", "THRUST"); - thrustmodet.stop(); - } } # Min and Max Pitch Reset var minmax = func { - var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); - var alt = getprop("/it-autoflight/internal/alt"); - var dif = calt - alt; - if (dif < 100 and dif > -100) { - setprop("/it-autoflight/internal/max-pitch", 8); - setprop("/it-autoflight/internal/min-pitch", -5); - var vertmode = getprop("/it-autoflight/output/vert"); - if (vertmode == 1 or vertmode == 2 or vertmode == 4 or vertmode == 5 or vertmode == 6 or vertmode == 7) { - # Do not change the vertical mode because we are not trying to capture altitude. - } else { - setprop("/it-autoflight/mode/vert", "ALT HLD"); - } - minmaxtimer.stop(); - } + var calt = getprop("/instrumentation/altimeter/indicated-altitude-ft"); + var alt = getprop("/it-autoflight/internal/alt"); + var dif = calt - alt; + if (dif < 100 and dif > -100) { + setprop("/it-autoflight/internal/max-pitch", 8); + setprop("/it-autoflight/internal/min-pitch", -5); + var vertmode = getprop("/it-autoflight/output/vert"); + if (vertmode == 1 or vertmode == 2 or vertmode == 4 or vertmode == 5 or vertmode == 6 or vertmode == 7) { + # Do not change the vertical mode because we are not trying to capture altitude. + } else { + setprop("/it-autoflight/mode/vert", "ALT HLD"); + } + minmaxtimer.stop(); + } } # Retard setlistener("/controls/flight/flaps", func { - var flapc = getprop("/controls/flight/flaps"); - var flapl = getprop("/it-autoflight/settings/land-flap"); - if (flapc >= flapl) { - retardt.start(); - } else { - retardt.stop(); - } + var flapc = getprop("/controls/flight/flaps"); + var flapl = getprop("/it-autoflight/settings/land-flap"); + if (flapc >= flapl) { + retardt.start(); + } else { + retardt.stop(); + } }); var retardchk = func { - if (getprop("/it-autoflight/settings/retard-enable") == 1) { - var altpos = getprop("/position/gear-agl-ft"); - var retardalt = getprop("/it-autoflight/settings/retard-ft"); - var aton = getprop("/it-autoflight/output/athr"); - if (altpos < retardalt) { - if (aton == 1) { - setprop("/it-autoflight/output/retard", 1); - setprop("/it-autoflight/mode/thr", "RETARD"); - atofft.start(); - } else { - setprop("/it-autoflight/output/retard", 0); - thrustmode(); - } - } - } + if (getprop("/it-autoflight/settings/retard-enable") == 1) { + var altpos = getprop("/position/gear-agl-ft"); + var retardalt = getprop("/it-autoflight/settings/retard-ft"); + var aton = getprop("/it-autoflight/output/athr"); + if (altpos < retardalt) { + if (aton == 1) { + setprop("/it-autoflight/output/retard", 1); + setprop("/it-autoflight/mode/thr", "RETARD"); + atofft.start(); + } else { + setprop("/it-autoflight/output/retard", 0); + thrustmode(); + } + } + } } var atoffchk = func{ - var gear1 = getprop("/gear/gear[1]/wow"); - var gear2 = getprop("/gear/gear[2]/wow"); - if (gear1 == 1 or gear2 == 1) { - setprop("/it-autoflight/input/athr", 0); - setprop("/controls/engines/engine[0]/throttle", 0); - setprop("/controls/engines/engine[1]/throttle", 0); - setprop("/controls/engines/engine[2]/throttle", 0); - setprop("/controls/engines/engine[3]/throttle", 0); - setprop("/controls/engines/engine[4]/throttle", 0); - setprop("/controls/engines/engine[5]/throttle", 0); - setprop("/controls/engines/engine[6]/throttle", 0); - setprop("/controls/engines/engine[7]/throttle", 0); - atofft.stop(); - } + var gear1 = getprop("/gear/gear[1]/wow"); + var gear2 = getprop("/gear/gear[2]/wow"); + if (gear1 == 1 or gear2 == 1) { + setprop("/it-autoflight/input/athr", 0); + setprop("/controls/engines/engine[0]/throttle", 0); + setprop("/controls/engines/engine[1]/throttle", 0); + setprop("/controls/engines/engine[2]/throttle", 0); + setprop("/controls/engines/engine[3]/throttle", 0); + setprop("/controls/engines/engine[4]/throttle", 0); + setprop("/controls/engines/engine[5]/throttle", 0); + setprop("/controls/engines/engine[6]/throttle", 0); + setprop("/controls/engines/engine[7]/throttle", 0); + atofft.stop(); + } } # For Canvas Nav Display. setlistener("/it-autoflight/input/hdg", func { - setprop("/autopilot/settings/heading-bug-deg", getprop("/it-autoflight/input/hdg")); + setprop("/autopilot/settings/heading-bug-deg", getprop("/it-autoflight/input/hdg")); }); -# TOGA -setlistener("/it-autoflight/input/toga", func { - if (getprop("/it-autoflight/input/toga") == 1) { - setprop("/it-autoflight/input/vert", 7); - setprop("/it-autoflight/output/loc-armed", 0); - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/input/toga", 0); - } -}); - -var togasel = func { - if ((getprop("/gear/gear[1]/wow") == 0) and (getprop("/gear/gear[2]/wow") == 0)) { - setprop("/it-autoflight/mode/vert", "G/A CLB"); - } else { - setprop("/it-autoflight/input/lat", 5); - setprop("/it-autoflight/mode/lat", "T/O"); - setprop("/it-autoflight/mode/vert", "T/O CLB"); - } -} - # LOC and G/S arming var update_arms = func { - update_locarmelec(); - update_apparmelec(); - - settimer(update_arms, 0.5); + update_locarmelec(); + update_apparmelec(); + settimer(update_arms, 0.5); } var update_locarmelec = func { - var loca = getprop("/it-autoflight/output/loc-armed"); - if (loca) { - locarmcheck(); - } else { - return 0; - } + var loca = getprop("/it-autoflight/output/loc-armed"); + if (loca) { + locarmcheck(); + } else { + return 0; + } } var update_apparmelec = func { - var appra = getprop("/it-autoflight/output/appr-armed"); - if (appra) { - apparmcheck(); - } else { - return 0; - } + var appra = getprop("/it-autoflight/output/appr-armed"); + if (appra) { + apparmcheck(); + } else { + return 0; + } } var locarmcheck = func { - var locdefl = getprop("instrumentation/nav/heading-needle-deflection-norm"); - if ((locdefl < 0.9233) and (getprop("instrumentation/nav/signal-quality-norm") > 0.99)) { - setprop("/it-autoflight/output/loc-armed", 0); - setprop("/it-autoflight/output/lat", 2); - setprop("/it-autoflight/mode/lat", "LOC"); - if (getprop("/it-autoflight/output/appr-armed") == 1) { - # Do nothing because G/S is armed + var locdefl = getprop("instrumentation/nav/heading-needle-deflection-norm"); + if ((locdefl < 0.9233) and (getprop("instrumentation/nav/signal-quality-norm") > 0.99)) { + setprop("/it-autoflight/output/loc-armed", 0); + setprop("/it-autoflight/output/lat", 2); + setprop("/it-autoflight/mode/lat", "LOC"); + if (getprop("/it-autoflight/output/appr-armed") == 1) { + # Do nothing because G/S is armed + } else { + setprop("/it-autoflight/mode/arm", " "); + } } else { - setprop("/it-autoflight/mode/arm", " "); + return 0; } - } else { - return 0; - } } var apparmcheck = func { - var signal = getprop("/instrumentation/nav/gs-needle-deflection-norm"); - if (signal <= -0.000000001) { - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/output/vert", 2); - setprop("/it-autoflight/mode/vert", "G/S"); - setprop("/it-autoflight/mode/arm", " "); - if (getprop("/it-autoflight/settings/land-enable") == 1){ - alandt.start(); + var signal = getprop("/instrumentation/nav/gs-needle-deflection-norm"); + if (signal <= -0.000000001) { + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/output/vert", 2); + setprop("/it-autoflight/mode/vert", "G/S"); + setprop("/it-autoflight/mode/arm", " "); + if (getprop("/it-autoflight/settings/land-enable") == 1){ + alandt.start(); + } + thrustmode(); + } else { + return 0; } - thrustmode(); - } else { - return 0; - } } # Autoland Stage 1 Logic (Land) var aland = func { - var ap1 = getprop("/it-autoflight/output/ap1"); - var ap2 = getprop("/it-autoflight/output/ap2"); - if (getprop("/position/gear-agl-ft") <= 100) { - if (ap1 or ap2) { - setprop("/it-autoflight/input/lat", 4); - setprop("/it-autoflight/input/vert", 6); - } else { - alandt.stop(); - alandt1.stop(); - } - } + var ap1 = getprop("/it-autoflight/output/ap1"); + var ap2 = getprop("/it-autoflight/output/ap2"); + if (getprop("/position/gear-agl-ft") <= 100) { + if (ap1 or ap2) { + setprop("/it-autoflight/input/lat", 4); + setprop("/it-autoflight/input/vert", 6); + } else { + alandt.stop(); + alandt1.stop(); + } + } } var aland1 = func { - var aglal = getprop("/position/gear-agl-ft"); - var flarealt = getprop("/it-autoflight/settings/flare-altitude"); - if (aglal <= flarealt and aglal > 5) { - setprop("/it-autoflight/mode/vert", "FLARE"); - setprop("/it-autoflight/autoland/target-vs", "-120"); - } - if ((getprop("/it-autoflight/output/ap1") == 0) and (getprop("/it-autoflight/output/ap2") == 0)) { - alandt.stop(); - alandt1.stop(); - setprop("/it-autoflight/output/loc-armed", 0); - setprop("/it-autoflight/output/lat", 2); - setprop("/it-autoflight/mode/lat", "LOC"); - setprop("/it-autoflight/output/appr-armed", 0); - setprop("/it-autoflight/output/vert", 2); - setprop("/it-autoflight/mode/vert", "G/S"); - setprop("/it-autoflight/mode/arm", " "); - } - var gear1 = getprop("/gear/gear[1]/wow"); - var gear2 = getprop("/gear/gear[2]/wow"); - if (gear1 == 1 or gear2 == 1) { - setprop("/it-autoflight/input/ap1", 0); - setprop("/it-autoflight/input/ap2", 0); - alandt1.stop(); - } + var aglal = getprop("/position/gear-agl-ft"); + var flarealt = getprop("/it-autoflight/settings/flare-altitude"); + if (aglal <= flarealt and aglal > 5) { + setprop("/it-autoflight/mode/vert", "FLARE"); + setprop("/it-autoflight/autoland/target-vs", "-120"); + } + if ((getprop("/it-autoflight/output/ap1") == 0) and (getprop("/it-autoflight/output/ap2") == 0)) { + alandt.stop(); + alandt1.stop(); + setprop("/it-autoflight/output/loc-armed", 0); + setprop("/it-autoflight/output/lat", 2); + setprop("/it-autoflight/mode/lat", "LOC"); + setprop("/it-autoflight/output/appr-armed", 0); + setprop("/it-autoflight/output/vert", 2); + setprop("/it-autoflight/mode/vert", "G/S"); + setprop("/it-autoflight/mode/arm", " "); + } + var gear1 = getprop("/gear/gear[1]/wow"); + var gear2 = getprop("/gear/gear[2]/wow"); + if (gear1 == 1 or gear2 == 1) { + setprop("/it-autoflight/input/ap1", 0); + setprop("/it-autoflight/input/ap2", 0); + alandt1.stop(); + } } # Autoland Stage 2 Logic (Rollout) - # CWS var cwsroll = func { var ail = getprop("/controls/flight/aileron"); @@ -598,15 +695,15 @@ var cwsroll = func { } var cwspitch = func { - var elv = getprop("/controls/flight/elevator"); - if (elv < 0.05 and elv > -0.05) { - if (getprop("/it-autoflight/internal/cwsp") == 0) { - setprop("/it-autoflight/internal/cws-pitch-deg", getprop("/orientation/pitch-deg")); + var elv = getprop("/controls/flight/elevator"); + if (elv < 0.05 and elv > -0.05) { + if (getprop("/it-autoflight/internal/cwsp") == 0) { + setprop("/it-autoflight/internal/cws-pitch-deg", getprop("/orientation/pitch-deg")); + } + setprop("/it-autoflight/internal/cwsp", 1); + } else { + setprop("/it-autoflight/internal/cwsp", 0); } - setprop("/it-autoflight/internal/cwsp", 1); - } else { - setprop("/it-autoflight/internal/cwsp", 0); - } } # Timers @@ -619,3 +716,6 @@ var alandt = maketimer(0.5, aland); var alandt1 = maketimer(0.5, aland1); var cwsrollt = maketimer(0.1, cwsroll); var cwspitcht = maketimer(0.1, cwspitch); +var reduct = maketimer(0.5, toga_reduc); +var latarmt = maketimer(0.5, latarms); +var fpa_calct = maketimer(0.1, fpa_calc); diff --git a/Nasal/systems.nas b/Nasal/systems.nas index d603b7d8..991b6fda 100644 --- a/Nasal/systems.nas +++ b/Nasal/systems.nas @@ -198,14 +198,6 @@ var aglgears = func { aglgears(); -setlistener("/instrumentation/altimeter/indicated-altitude-ft", func { - setprop("/instrumentation/altimeter/indicated-altitude-ft-pfd", getprop("/instrumentation/altimeter/indicated-altitude-ft") / 100); -}); - -setlistener("/instrumentation/vertical-speed-indicator/indicated-speed-fpm", func { - setprop("/instrumentation/vertical-speed-indicator/indicated-speed-fpm-pfd", getprop("/instrumentation/vertical-speed-indicator/indicated-speed-fpm") / 100); -}); - setlistener("/controls/parking-brake", func { if (getprop("/controls/parking-brake") == 1) { setprop("/electrical/switches/ext-pwr", 1); diff --git a/Systems/autopilot-dlg.xml b/Systems/autopilot-dlg.xml index b5834ee0..4aa8ab7d 100644 --- a/Systems/autopilot-dlg.xml +++ b/Systems/autopilot-dlg.xml @@ -757,12 +757,6 @@ + + table + + + 0 + 0 + + + + + + + + 0 + 3 + 55 + /it-autoflight/input/fpa + true + + dialog-apply + + + + + + + diff --git a/Systems/engine-timing.xml b/Systems/engine-timing.xml index b7999f9d..d4828f52 100644 --- a/Systems/engine-timing.xml +++ b/Systems/engine-timing.xml @@ -115,5 +115,37 @@ /engines/engine[1]/fuel-flow_actual + + + Altitude PFD + gain + 1 + 0.05 + + +
+ /instrumentation/altimeter/indicated-altitude-ft + 100 +
+
+ + /instrumentation/altimeter/indicated-altitude-ft-pfd +
+ + + V/S PFD + gain + 1 + 0.05 + + +
+ /instrumentation/vertical-speed-indicator/indicated-speed-fpm + 100 +
+
+ + /instrumentation/vertical-speed-indicator/indicated-speed-fpm-pfd +
diff --git a/Systems/it-autoflight.xml b/Systems/it-autoflight.xml index 81a1778f..16021bf0 100644 --- a/Systems/it-autoflight.xml +++ b/Systems/it-autoflight.xml @@ -77,7 +77,6 @@ 1.0 - LNAV HDG ERROR DEG @@ -550,6 +549,44 @@
+ + FPA HOLD + false + + + + /it-autoflight/output/vert + 5 + + + + + /it-autoflight/internal/fpa + + + /it-autoflight/input/fpa + + + /it-autoflight/internal/target-pitch-deg + + + + /it-autoflight/config/cmd/fpa + + 1.0 + 0.1 + 0.0 + 1.0 + 0.00001 + + -10 + + + 30 + + + + AUTOLAND VS HOLD false @@ -726,6 +763,61 @@ + + + TOGA SPEED BY PITCH + false + + + + + /it-autoflight/output/vert + 7 + + + + + + /it-autoflight/internal/lookahead-10-sec-airspeed-kt + + + + + /it-autoflight/mode/vert + T/O CLB + + + /it-autoflight/settings/togaspd + + + + + /it-autoflight/mode/vert + G/A CLB + + + /it-autoflight/input/spd-kts + + + /it-autoflight/internal/target-pitch-deg + + + + /it-autoflight/config/cmd/flch + + 1.0 + 0.1 + 0.0 + 10.0 + 0.00001 + + 1.5 + + + 25.0 + + + IT-CONTROLLER: PITCH @@ -748,23 +840,8 @@ /orientation/pitch-deg - - - /it-autoflight/output/vert - 7 - - /it-autoflight/internal/target-pitch-deg - - - - /it-autoflight/output/vert - 7 - - - /it-autoflight/settings/toga-pitch - /it-autoflight/internal/elevator-cmd @@ -1198,12 +1275,6 @@ gain 1.0 - - - /it-autoflight/output/vert - 7 - - /it-autoflight/internal/target-pitch-deg @@ -1211,20 +1282,6 @@ - - - - /it-autoflight/output/vert - 7 - - - - - /it-autoflight/settings/toga-pitch - /orientation/pitch-deg - - - /it-autoflight/fd/pitch-bar