1 #############################################################################
2 # Flight Director/Autopilot controller.
5 # Heading Bug hold - Low Bank can be selected
8 # Arm & Capture VOR , LOC or FMS
10 # APR : (ILS approach)
11 # Arm & Capture VOR APR , LOC or BC
12 # Also arm and capture GS
15 # Arm & capture localizer backcourse
16 # Nav also illuminates
19 # Arm and capture VOR/DME or FMS vertical profile
20 # profile entered in MFD VNAV menu
23 # Hold current Altitude or PFD preset altitude
26 # Hold current vertical speed
27 # adjustable with pitch wheel
31 # adjustable with pitch wheel
33 #############################################################################
54 var lnav_text=["wing-leveler","dg-heading-hold","dg-heading-hold","nav1-hold","dg-heading-hold","nav1-hold","dg-heading-hold","nav1-hold"];
55 var vnav_text=["pitch-hold","pitch-hold","pitch-hold","pitch-hold","altitude-hold","vertical-speed-hold","gs1-hold"];
59 var Defl = props.globals.getNode("/instrumentation/nav/heading-needle-deflection");
60 var GSDefl = props.globals.getNode("/instrumentation/nav/gs-needle-deflection");
61 var AP_hdg = props.globals.getNode("/autopilot/locks/heading",1);
62 var AP_alt = props.globals.getNode("/autopilot/locks/altitude",1);
63 var AP_spd = props.globals.getNode("/autopilot/locks/speed",1);
64 var FD_lnav = props.globals.getNode("/instrumentation/flightdirector/lnav");
65 var FD_vnav = props.globals.getNode("/instrumentation/flightdirector/vnav");
66 var FD_pitch = props.globals.getNode("/instrumentation/flightdirector/Pitch",1);
67 var FD_roll = props.globals.getNode("/instrumentation/flightdirector/Roll",1);
68 var FD_speed = props.globals.getNode("/instrumentation/flightdirector/spd",1);
69 var DH = props.globals.getNode("/autopilot/route-manager/min-lock-altitude-agl-ft",1);
74 setlistener("/sim/signals/fdm-initialized", func {
76 AP_hdg.setValue("wing-leveler");
77 AP_alt.setValue("pitch-hold");
80 setprop("/autopilot/locks/passive-mode",1);
81 setprop("autopilot/settings/target-altitude-ft",0);
82 props.globals.getNode("instrumentation/primus1000/dc550/fms",1).setBoolValue(0);
85 print("Flight Director ...Check");
88 #### FD Controller inputs ####
90 setlistener("/instrumentation/flightdirector/lnav", func(ln){
95 setlistener("/instrumentation/flightdirector/vnav", func(vn){
100 var set_lateral_mode=func(){
102 if(lnav ==2 or lnav ==3)AP_hdg.setValue("true-heading-hold");
104 AP_hdg.setValue(lnav_text[lnav]);
108 var set_vertical_mode=func(){
109 AP_alt.setValue(vnav_text[vnav]);
112 setlistener("/instrumentation/primus1000/dc550/fms", func(fms){
113 if(fms.getBoolValue()){
123 #### update nav gps or nav setting ####
126 var dst = getprop("instrumentation/nav/nav-distance");
127 if(dst == nil or dst >30000){
132 var APoff = getprop("/autopilot/locks/passive-mode");
134 var maxroll = getprop("/orientation/roll-deg");
135 var maxpitch = getprop("/orientation/pitch-deg");
136 if(maxroll > 45 or maxroll < -45)APoff = 1;
137 if(maxpitch > 45 or maxpitch < -45)APoff = 1;
138 if(getprop("/position/altitude-agl-ft") < DH.getValue())APoff = 1;
139 setprop("/autopilot/locks/passive-mode", APoff);
144 var deflection = Defl.getValue();
145 var gs_deflection = GSDefl.getValue();
147 if(deflection > -7 or deflection < 7){
152 FD_lnav.setValue(lnav);
156 if(getprop("/instrumentation/nav/nav-loc")==0){
159 if(deflection > -5 or deflection < 5){
160 if(in_range==1)lnav = 5;
163 FD_lnav.setValue(lnav);
167 if(getprop("/instrumentation/nav/has-gs")!=0){
168 if(gs_deflection < 0.5 and gs_deflection > -1.0){
169 if(in_range==1)vnav = 6;
170 FD_vnav.setValue(vnav);
178 var TGALT = getprop("autopilot/settings/target-altitude-ft");
179 if(TGALT > DH.getValue()){
180 var MyAlt = getprop("position/altitude-ft");
181 if(MyAlt > (TGALT -1000) or MyAlt < (TGALT +1000)){
183 AP_alt.setValue(vnav_text[vnav]);