1## garmin 196 functions 2var last_time = 0.0; 3var last_bearing = -1; 4var tab_chiffres_lettres = ["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]; 5var old_status = -1; 6 7var init_variables = func{ 8 ##version 9 props.globals.getNode("/instrumentation/garmin196/version",1).setValue("JeeP v. 30/11/2012"); 10 11 ##routes 12 props.globals.getNode("/instrumentation/garmin196/menu_routes/search/x_char",1).setIntValue(0); 13 props.globals.getNode("/instrumentation/garmin196/menu_routes/search/y_char",1).setIntValue(0); 14 props.globals.getNode("/instrumentation/garmin196/menu_routes/fpl-loaded",1).setBoolValue(0); 15 props.globals.getNode("/instrumentation/garmin196/menu_routes/last-wp-reached",1).setBoolValue(0); 16 props.globals.getNode("/instrumentation/garmin196/menu_routes/waypoint-jump",1).setBoolValue(0); 17 18 ##points 19 props.globals.getNode("/instrumentation/garmin196/menu_points/x_char",1).setIntValue(0); 20 props.globals.getNode("/instrumentation/garmin196/menu_points/y_char",1).setIntValue(0); 21 22 ##aircrafts 23 props.globals.getNode("/instrumentation/garmin196/menu_aircraft/x_char",1).setIntValue(0); 24 props.globals.getNode("/instrumentation/garmin196/menu_aircraft/y_char",1).setIntValue(0); 25 26 ##load atis freq 27 fgcommand("loadxml", props.Node.new({ filename: getprop("/sim/fg-root")~"/Aircraft/Instruments-3d/garmin196/airports_atis.xml", targetnode: "/instrumentation/garmin196" })); 28 29 ##init waypoint system 30 props.globals.getNode("/instrumentation/garmin196/panel-wpt-bearing",1).setDoubleValue(0); 31 props.globals.getNode("/instrumentation/garmin196/position-wpt-bearing",1).setDoubleValue(0); 32 props.globals.getNode("/instrumentation/garmin196/panel-wpt-id",1).setValue("------"); 33 props.globals.getNode("/instrumentation/gps/config/drive-autopilot",1).setBoolValue(0); ##pour ne pas interferer avec l'autopilot 34 35 ##init map system 36 props.globals.getNode("/instrumentation/garmin196/map-range",1).setDoubleValue(0.125); 37 38 ##init dto system 39 props.globals.getNode("/instrumentation/garmin196/dto_display/x_char",1).setIntValue(0); 40 props.globals.getNode("/instrumentation/garmin196/dto_display/y_char",1).setIntValue(0); 41 42 ##init saveable variables 43 props.globals.getNode("/instrumentation/garmin196/antenne-deg",1).setDoubleValue(30); 44 props.globals.getNode("/instrumentation/garmin196/light",1).setDoubleValue(30); 45 props.globals.getNode("/instrumentation/garmin196/max-speed",1).setDoubleValue(150); 46 props.globals.getNode("/instrumentation/garmin196/cruise-speed",1).setDoubleValue(120); 47 props.globals.getNode("/instrumentation/garmin196/fuel-flow",1).setDoubleValue(5); 48 props.globals.getNode("/instrumentation/garmin196/no_aircraft",1).setIntValue(0); 49 props.globals.getNode("/instrumentation/garmin196/symbols/params/airport",1).setBoolValue(1); 50 props.globals.getNode("/instrumentation/garmin196/symbols/params/vor",1).setBoolValue(1); 51 props.globals.getNode("/instrumentation/garmin196/symbols/params/ndb",1).setBoolValue(1); 52 props.globals.getNode("/instrumentation/garmin196/symbols/params/fix",1).setBoolValue(1); 53 props.globals.getNode("/instrumentation/garmin196/symbols/params/twn",1).setBoolValue(1); 54 props.globals.getNode("/instrumentation/garmin196/symbols/params/wpt",1).setBoolValue(1); 55 56 props.globals.getNode("/instrumentation/garmin196/params/units/distance",1).setIntValue(1); 57 props.globals.getNode("/instrumentation/garmin196/params/units/speed",1).setIntValue(1); 58 props.globals.getNode("/instrumentation/garmin196/params/units/vert-speed",1).setIntValue(1); 59 props.globals.getNode("/instrumentation/garmin196/params/units/altitude",1).setIntValue(1); 60 props.globals.getNode("/instrumentation/garmin196/params/units/pressure",1).setIntValue(1); 61 props.globals.getNode("/instrumentation/garmin196/params/units/temperature",1).setIntValue(1); 62 63 props.globals.getNode("/instrumentation/garmin196/params/filtrage",1).setBoolValue(0); 64 props.globals.getNode("/instrumentation/garmin196/params/vnav-indicator",1).setBoolValue(1); 65 66 ##status du gps 67 #0 eteint 68 #1 startup page 69 #1x map page 70 #2x panel page 71 #3x position page 72 #50 coffee page 73 #menus 74 #100 = menu gps 75 #110 = menu flights 76 #120 = menu route 77 #130 = menu points 78 #140 = menu aircraft 79 #150 = menu e6b 80 #160 = menu map 81 #170 = menu setup 82 props.globals.getNode("/instrumentation/garmin196/status",1).setIntValue(0); 83 84 ##popup windows 85 #0 = pas de popup 86 #1 = affichage du reglage de la lumiere 87 #10,11,12 = dto aviation 88 #20 = dto recent 89 #30 = dto user 90 #40 = nrst airport 91 #50 = nrst vor 92 #60 = nrst ndb 93 #70 = nrst fix 94 #80 = nrst cities 95 96 props.globals.getNode("/instrumentation/garmin196/popup_status",1).setIntValue(0); 97 98 props.globals.getNode("/instrumentation/garmin196/serviceable",1).setBoolValue(0); 99 props.globals.getNode("/instrumentation/garmin196/light",1).setDoubleValue(0); 100 props.globals.getNode("/instrumentation/garmin196/coffee",1).setIntValue(0); 101 102 load_cities(); 103 main_loop(); 104} 105setlistener("/sim/signals/fdm-initialized",init_variables,0,0); 106 107var load_parameters = func{ 108 fgcommand("loadxml", props.Node.new({ filename: getprop("/sim/fg-home")~"/aircraft-data/garmin196.xml", targetnode: "/instrumentation/garmin196/save" })); 109 110 if(getprop("/instrumentation/garmin196/save/antenne-deg")!=nil){ 111 setprop("/instrumentation/garmin196/antenne-deg",getprop("/instrumentation/garmin196/save/antenne-deg")); 112 } 113 if(getprop("/instrumentation/garmin196/save/light")!=nil){ 114 setprop("/instrumentation/garmin196/light",getprop("/instrumentation/garmin196/save/light")); 115 } 116 if(getprop("/instrumentation/garmin196/save/max-speed")!=nil){ 117 setprop("/instrumentation/garmin196/max-speed",getprop("/instrumentation/garmin196/save/max-speed")); 118 } 119 if(getprop("/instrumentation/garmin196/save/cruise-speed")!=nil){ 120 setprop("/instrumentation/garmin196/cruise-speed",getprop("/instrumentation/garmin196/save/cruise-speed")); 121 } 122 if(getprop("/instrumentation/garmin196/save/fuel-flow")!=nil){ 123 setprop("/instrumentation/garmin196/fuel-flow",getprop("/instrumentation/garmin196/save/fuel-flow")); 124 } 125 if(getprop("/instrumentation/garmin196/save/no_aircraft")!=nil){ 126 setprop("/instrumentation/garmin196/no_aircraft",getprop("/instrumentation/garmin196/save/no_aircraft")); 127 } 128 if(getprop("/instrumentation/garmin196/save/symbols/params/airport")!=nil){ 129 setprop("/instrumentation/garmin196/symbols/params/airport",getprop("/instrumentation/garmin196/save/symbols/params/airport")); 130 } 131 if(getprop("/instrumentation/garmin196/save/symbols/params/vor")!=nil){ 132 setprop("/instrumentation/garmin196/symbols/params/vor",getprop("/instrumentation/garmin196/save/symbols/params/vor")); 133 } 134 if(getprop("/instrumentation/garmin196/save/symbols/params/ndb")!=nil){ 135 setprop("/instrumentation/garmin196/symbols/params/ndb",getprop("/instrumentation/garmin196/save/symbols/params/ndb")); 136 } 137 if(getprop("/instrumentation/garmin196/save/symbols/params/fix")!=nil){ 138 setprop("/instrumentation/garmin196/symbols/params/fix",getprop("/instrumentation/garmin196/save/symbols/params/fix")); 139 } 140 if(getprop("/instrumentation/garmin196/save/symbols/params/twn")!=nil){ 141 setprop("/instrumentation/garmin196/symbols/params/twn",getprop("/instrumentation/garmin196/save/symbols/params/twn")); 142 } 143 if(getprop("/instrumentation/garmin196/save/symbols/params/wpt")!=nil){ 144 setprop("/instrumentation/garmin196/symbols/params/wpt",getprop("/instrumentation/garmin196/save/symbols/params/wpt")); 145 } 146 147 if(getprop("/instrumentation/garmin196/save/params/units/distance")!=nil){ 148 setprop("/instrumentation/garmin196/params/units/distance",getprop("/instrumentation/garmin196/save/params/units/distance")); 149 } 150 if(getprop("/instrumentation/garmin196/save/params/units/speed")!=nil){ 151 setprop("/instrumentation/garmin196/params/units/speed",getprop("/instrumentation/garmin196/save/params/units/speed")); 152 } 153 if(getprop("/instrumentation/garmin196/save/params/units/vert-speed")!=nil){ 154 setprop("/instrumentation/garmin196/params/units/vert-speed",getprop("/instrumentation/garmin196/save/params/units/vert-speed")); 155 } 156 if(getprop("/instrumentation/garmin196/save/params/units/altitude")!=nil){ 157 setprop("/instrumentation/garmin196/params/units/altitude",getprop("/instrumentation/garmin196/save/params/units/altitude")); 158 } 159 if(getprop("/instrumentation/garmin196/save/params/units/pressure")!=nil){ 160 setprop("/instrumentation/garmin196/params/units/pressure",getprop("/instrumentation/garmin196/save/params/units/pressure")); 161 } 162 if(getprop("/instrumentation/garmin196/save/params/units/temperature")!=nil){ 163 setprop("/instrumentation/garmin196/params/units/temperature",getprop("/instrumentation/garmin196/save/params/units/temperature")); 164 } 165 if(getprop("/instrumentation/garmin196/save/params/filtrage")!=nil){ 166 setprop("/instrumentation/garmin196/params/filtrage",getprop("/instrumentation/garmin196/save/params/filtrage")); 167 } 168 if(getprop("/instrumentation/garmin196/save/params/vnav-indicator")!=nil){ 169 setprop("/instrumentation/garmin196/params/vnav-indicator",getprop("/instrumentation/garmin196/save/params/vnav-indicator")); 170 } 171 172 for(var i=0;i<5;i=i+1){ 173 if(getprop("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/id")!=nil){ 174 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/id")); 175 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/type",1).setValue(getprop("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/type")); 176 } 177 } 178 179 for(var i=0;i<5;i=i+1){ 180 if(getprop("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/id")!=nil){ 181 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/id")); 182 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude",1).setDoubleValue(getprop("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/latitude")); 183 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude",1).setDoubleValue(getprop("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/longitude")); 184 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude")); 185 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude")); 186 props.globals.getNode("/instrumentation/gps/scratch/ident",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id")~"WPTUSR"); 187 setprop("/instrumentation/gps/command","define-user-wpt"); 188 } 189 } 190 191 for(var i=0;i<6;i=i+1){ 192 if(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/name")!=nil){ 193 props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name",1).setValue(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/name")); 194 props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/max-speed",1).setIntValue(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/max-speed")); 195 props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/cruise-speed",1).setIntValue(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/cruise-speed")); 196 props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/fuel-flow",1).setDoubleValue(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/fuel-flow")); 197 } 198 } 199 200 for(var i=0;i<9;i=i+1){ 201 if(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/start")!=nil){ 202 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/start",1).setValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/start")); 203 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/end",1).setValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/end")); 204 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/date",1).setValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/date")); 205 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/aircraft",1).setValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/aircraft")); 206 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/distance",1).setDoubleValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/distance")); 207 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/duration",1).setDoubleValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/duration")); 208 } 209 } 210 211 for(var i=0;i<11;i=i+1){ 212 if(getprop("/instrumentation/garmin196/save/routes/route["~i~"]/name")!=nil){ 213 props.globals.getNode("/instrumentation/garmin196/routes/route["~i~"]/name",1).setValue(getprop("/instrumentation/garmin196/save/routes/route["~i~"]/name")); 214 for(var j=0;j<10;j=j+1){ 215 if(getprop("/instrumentation/garmin196/save/routes/route["~i~"]/wpts/wpt["~j~"]/id")!=nil){ 216 props.globals.getNode("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/id",1).setValue(getprop("/instrumentation/garmin196/save/routes/route["~i~"]/wpts/wpt["~j~"]/id")); 217 props.globals.getNode("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/type",1).setValue(getprop("/instrumentation/garmin196/save/routes/route["~i~"]/wpts/wpt["~j~"]/type")); 218 } 219 } 220 } 221 } 222} 223setlistener("/sim/signals/fdm-initialized",load_parameters); 224 225var save_parameters = func{ 226 props.globals.getNode("/instrumentation/garmin196/save").remove(); 227 228 ##preparation 229 if(getprop("/instrumentation/garmin196/antenne-deg")!=nil){ 230 props.globals.getNode("/instrumentation/garmin196/save/antenne-deg",1).setDoubleValue(getprop("/instrumentation/garmin196/antenne-deg")); 231 } 232 if(getprop("/instrumentation/garmin196/light")!=nil){ 233 props.globals.getNode("/instrumentation/garmin196/save/light",1).setDoubleValue(getprop("/instrumentation/garmin196/light")); 234 } 235 if(getprop("/instrumentation/garmin196/max-speed")!=nil){ 236 props.globals.getNode("/instrumentation/garmin196/save/max-speed",1).setDoubleValue(getprop("/instrumentation/garmin196/max-speed")); 237 } 238 if(getprop("/instrumentation/garmin196/cruise-speed")!=nil){ 239 props.globals.getNode("/instrumentation/garmin196/save/cruise-speed",1).setDoubleValue(getprop("/instrumentation/garmin196/cruise-speed")); 240 } 241 if(getprop("/instrumentation/garmin196/fuel-flow")!=nil){ 242 props.globals.getNode("/instrumentation/garmin196/save/fuel-flow",1).setDoubleValue(getprop("/instrumentation/garmin196/fuel-flow")); 243 } 244 if(getprop("/instrumentation/garmin196/no_aircraft")!=nil){ 245 props.globals.getNode("/instrumentation/garmin196/save/no_aircraft",1).setDoubleValue(getprop("/instrumentation/garmin196/no_aircraft")); 246 } 247 props.globals.getNode("/instrumentation/garmin196/save/symbols/params/airport",1).setDoubleValue(getprop("/instrumentation/garmin196/symbols/params/airport")); 248 props.globals.getNode("/instrumentation/garmin196/save/symbols/params/vor",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/vor")); 249 props.globals.getNode("/instrumentation/garmin196/save/symbols/params/ndb",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/ndb")); 250 props.globals.getNode("/instrumentation/garmin196/save/symbols/params/fix",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/fix")); 251 props.globals.getNode("/instrumentation/garmin196/save/symbols/params/twn",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/twn")); 252 props.globals.getNode("/instrumentation/garmin196/save/symbols/params/wpt",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/wpt")); 253 254 props.globals.getNode("/instrumentation/garmin196/save/params/units/distance",1).setIntValue(getprop("/instrumentation/garmin196/params/units/distance")); 255 props.globals.getNode("/instrumentation/garmin196/save/params/units/speed",1).setIntValue(getprop("/instrumentation/garmin196/params/units/speed")); 256 props.globals.getNode("/instrumentation/garmin196/save/params/units/vert-speed",1).setIntValue(getprop("/instrumentation/garmin196/params/units/vert-speed")); 257 props.globals.getNode("/instrumentation/garmin196/save/params/units/altitude",1).setIntValue(getprop("/instrumentation/garmin196/params/units/altitude")); 258 props.globals.getNode("/instrumentation/garmin196/save/params/units/pressure",1).setIntValue(getprop("/instrumentation/garmin196/params/units/pressure")); 259 props.globals.getNode("/instrumentation/garmin196/save/params/units/temperature",1).setIntValue(getprop("/instrumentation/garmin196/params/units/temperature")); 260 props.globals.getNode("/instrumentation/garmin196/save/params/filtrage",1).setBoolValue(getprop("/instrumentation/garmin196/params/filtrage")); 261 props.globals.getNode("/instrumentation/garmin196/save/params/vnav-indicator",1).setBoolValue(getprop("/instrumentation/garmin196/params/vnav-indicator")); 262 263 for(var i=0;i<5;i=i+1){ 264 if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id")!=nil){ 265 props.globals.getNode("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id")); 266 props.globals.getNode("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/type",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/type")); 267 } 268 } 269 270 for(var i=0;i<9;i=i+1){ 271 if(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id")!=nil){ 272 props.globals.getNode("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id")); 273 props.globals.getNode("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/latitude",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude")); 274 props.globals.getNode("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/longitude",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude")); 275 } 276 } 277 278 for(var i=0;i<6;i=i+1){ 279 if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name")!=nil){ 280 props.globals.getNode("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/name",1).setValue(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name")); 281 props.globals.getNode("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/max-speed",1).setIntValue(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/max-speed")); 282 props.globals.getNode("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/cruise-speed",1).setIntValue(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/cruise-speed")); 283 props.globals.getNode("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/fuel-flow",1).setDoubleValue(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/fuel-flow")); 284 } 285 } 286 for(var i=0;i<8;i=i+1){ 287 if(getprop("/instrumentation/garmin196/flights/flight["~i~"]/start")!=nil){ 288 props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/start",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/start")); 289 props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/end",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/end")); 290 props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/date",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/date")); 291 props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/aircraft",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/aircraft")); 292 props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/distance",1).setDoubleValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/distance")); 293 props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/duration",1).setDoubleValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/duration")); 294 } 295 } 296 for(var i=0;i<11;i=i+1){ 297 if(getprop("/instrumentation/garmin196/routes/route["~i~"]/name")!=nil){ 298 props.globals.getNode("/instrumentation/garmin196/save/routes/route["~i~"]/name",1).setValue(getprop("/instrumentation/garmin196/routes/route["~i~"]/name")); 299 for(var j=0;j<10;j=j+1){ 300 if(getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/id")!=nil){ 301 props.globals.getNode("/instrumentation/garmin196/save/routes/route["~i~"]/wpts/wpt["~j~"]/id",1).setValue(getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/id")); 302 props.globals.getNode("/instrumentation/garmin196/save/routes/route["~i~"]/wpts/wpt["~j~"]/type",1).setValue(getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/type")); 303 } 304 } 305 } 306 } 307 ##delete file before saving to delete keys 308 var file = io.open(getprop("/sim/fg-home")~"/aircraft-data/garmin196.xml", mode="w"); 309 io.write(file,""); 310 io.close(file); 311 fgcommand("savexml", props.Node.new({ filename: getprop("/sim/fg-home")~"/aircraft-data/garmin196.xml", sourcenode: "/instrumentation/garmin196/save" })); 312} 313 314var main_loop = func{ 315 var time = getprop("/sim/time/elapsed-sec"); 316 var dt = time - last_time; 317 last_time = time; 318 319 calcul_turn_rate(dt); 320 change_speed_display(); 321 change_position_wpt_bug(); 322 update_flight(); 323 update_e6b_menu(); 324 325 settimer(main_loop, 0.3); 326} 327 328var nyi = func (x) { gui.popupTip(x ~ ": not yet implemented", 3); } 329 330var power = func (x){ 331 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 332 if(x==0){ 333 if(serviceable==1){ 334 setprop("/instrumentation/garmin196/serviceable",0); 335 setprop("/instrumentation/garmin196/status",0); 336 setprop("/instrumentation/garmin196/popup_status",0); 337 }else{ 338 setprop("/instrumentation/garmin196/serviceable",1); 339 setprop("/instrumentation/garmin196/status",1); 340 } 341 } 342 343 if(x==1 and serviceable==1){ 344 setprop("/instrumentation/garmin196/popup_status",1) 345 } 346 347} 348 349var in = func (x){ 350 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 351 if(serviceable==1){ 352 var status = getprop("/instrumentation/garmin196/status"); 353 if(x==0){ 354 ##traitement des pages 355 if(status==10){ 356 var range = getprop("/instrumentation/garmin196/map-range"); 357 range = range / 2; 358 if(range<0.125){ 359 range = 0.125; 360 } 361 setprop("/instrumentation/garmin196/map-range",range); 362 return; 363 } 364 }elsif(x==1){ 365 if(getprop("/instrumentation/garmin196/coffee")==2 and status>=10){ 366 setprop("/instrumentation/garmin196/coffee",0); 367 setprop("/instrumentation/garmin196/status",50); 368 } 369 } 370 } 371} 372 373var out = func (x){ 374 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 375 if(serviceable==1){ 376 var status = getprop("/instrumentation/garmin196/status"); 377 if(x==0){ 378 ##traitement des pages 379 if(status==10){ 380 var range = getprop("/instrumentation/garmin196/map-range"); 381 range = range * 2; 382 if(range>32){ 383 range = 32; 384 } 385 setprop("/instrumentation/garmin196/map-range",range); 386 return; 387 } 388 }elsif(x==1){ 389 if(getprop("/instrumentation/garmin196/coffee")==1 and status>=10){ 390 setprop("/instrumentation/garmin196/coffee",2); 391 } 392 } 393 } 394} 395 396var page = func (x){ 397 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 398 if(serviceable==1){ 399 var status = getprop("/instrumentation/garmin196/status"); 400 if(x==0){ 401 ##traitement des pages 402 if(status==10){ 403 setprop("/instrumentation/garmin196/status",20); 404 return; 405 } 406 407 if(status==20){ 408 setprop("/instrumentation/garmin196/status",30); 409 return; 410 } 411 412 if(status==30){ 413 setprop("/instrumentation/garmin196/status",10); 414 update_map(); 415 return; 416 } 417 418 if(status==50){ 419 setprop("/instrumentation/garmin196/status",10); 420 update_map(); 421 return; 422 } 423 }elsif(x==1){ 424 if(getprop("/instrumentation/garmin196/coffee")==0 and status>=10){ 425 setprop("/instrumentation/garmin196/coffee",1); 426 } 427 } 428 } 429} 430 431var quit = func (x){ 432 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 433 if(serviceable==1){ 434 if(x==0){ 435 #traitement des popup 436 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 437 if(popup_status==1){ 438 setprop("/instrumentation/garmin196/popup_status",0); 439 save_parameters(); 440 return; 441 } 442 if(popup_status>=10 and popup_status<=99){ 443 setprop("/instrumentation/garmin196/popup_status",0); 444 return; 445 } 446 447 ##traitement des pages 448 var status = getprop("/instrumentation/garmin196/status"); 449 if(status==10){ 450 setprop("/instrumentation/garmin196/status",30); 451 return; 452 } 453 454 if(status==20){ 455 setprop("/instrumentation/garmin196/status",10); 456 update_map(); 457 return; 458 } 459 460 if(status==30){ 461 setprop("/instrumentation/garmin196/status",20); 462 return; 463 } 464 465 if(status==50){ 466 setprop("/instrumentation/garmin196/status",10); 467 update_map(); 468 return; 469 } 470 471 if(status==111){ 472 setprop("/instrumentation/garmin196/status",110); 473 setprop("/instrumentation/garmin196/menu_flights/no_ligne_selected",-1); 474 return; 475 } 476 477 if(status==112){ 478 setprop("/instrumentation/garmin196/status",111); 479 return; 480 } 481 482 ##menu routes 483 if(status==121){ 484 setprop("/instrumentation/garmin196/status",120); 485 setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",-1); 486 return; 487 } 488 489 if(status==122){ 490 setprop("/instrumentation/garmin196/status",121); 491 save_parameters(); 492 return; 493 } 494 495 if(status==123){ 496 setprop("/instrumentation/garmin196/status",122); 497 return; 498 } 499 500 if(status==124){ 501 setprop("/instrumentation/garmin196/status",123); 502 return; 503 } 504 505 ##menu points 506 if(status==131){ 507 setprop("/instrumentation/garmin196/status",130); 508 setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",-1); 509 init_list_points(); 510 return; 511 } 512 513 if(status==132){ 514 setprop("/instrumentation/garmin196/status",131); 515 return; 516 } 517 518 if(status==133){ 519 setprop("/instrumentation/garmin196/status",132); 520 return; 521 } 522 523 if(status==134){ 524 setprop("/instrumentation/garmin196/status",133); 525 return; 526 } 527 528 if(status==135){ 529 setprop("/instrumentation/garmin196/status",134); 530 return; 531 } 532 533 if(status==136){ 534 setprop("/instrumentation/garmin196/status",135); 535 return; 536 } 537 538 ##menu aircraft 539 if(status==141){ 540 setprop("/instrumentation/garmin196/status",140); 541 setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",-1); 542 init_list_aircraft(); 543 display_list_aircraft(); 544 return; 545 } 546 547 if(status==142){ 548 setprop("/instrumentation/garmin196/status",141); 549 display_list_aircraft(); 550 return; 551 } 552 553 if(status==143){ 554 setprop("/instrumentation/garmin196/status",142); 555 return; 556 } 557 558 if(status==144){ 559 setprop("/instrumentation/garmin196/status",143); 560 return; 561 } 562 563 if(status==145){ 564 setprop("/instrumentation/garmin196/status",144); 565 return; 566 } 567 568 ##menu map 569 if(status==161){ 570 setprop("/instrumentation/garmin196/status",160); 571 setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",-1); 572 return; 573 } 574 575 ##menu setup 576 if(status==171){ 577 setprop("/instrumentation/garmin196/status",170); 578 setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",-1); 579 return; 580 } 581 582 if(status==176){ 583 setprop("/instrumentation/garmin196/status",175); 584 setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",-1); 585 return; 586 } 587 588 if(status>=100 and status <180){ 589 if(old_status>=10){ 590 status = old_status; 591 }else{ 592 status = 10; 593 } 594 setprop("/instrumentation/garmin196/status",status); 595 if(status==10){ 596 update_map(); 597 } 598 return; 599 } 600 } 601 } 602} 603 604var enter = func (x){ 605 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 606 if(serviceable==1){ 607 if(x==0){ 608 #traitement des popup 609 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 610 if(popup_status==1){ 611 setprop("/instrumentation/garmin196/popup_status",0); 612 save_parameters(); 613 return; 614 } 615 616 if(popup_status==10){ 617 setprop("/instrumentation/garmin196/popup_status",11); 618 display_dto_search(); 619 return; 620 } 621 622 if(popup_status==11){ 623 if(getprop("/instrumentation/garmin196/dto_display/max_ligne_selected")>=0){ 624 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne[0]/selected",1).setBoolValue(1); 625 setprop("/instrumentation/garmin196/popup_status",12); 626 return; 627 } 628 } 629 630 if(popup_status==12 or popup_status==30){ 631 setprop("/instrumentation/garmin196/popup_status",0); 632 var id = getprop("/instrumentation/garmin196/dto_display/ligne["~getprop("/instrumentation/garmin196/dto_display/no_ligne_selected")~"]/id"); 633 var type = getprop("/instrumentation/garmin196/dto_display/ligne["~getprop("/instrumentation/garmin196/dto_display/no_ligne_selected")~"]/type"); 634 affectation_waypoint(id); 635 ##rolling recents waypoints 636 var existe_deja = 0; 637 for(var i=0;i<5;i=i+1){ 638 if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id")==id){ 639 existe_deja = 1; 640 break; 641 } 642 } 643 if(existe_deja==0){ 644 for(var i=4;i>0;i=i-1){ 645 if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/id")){ 646 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/id")); 647 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/type",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/type")); 648 } 649 } 650 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt[0]/id",1).setValue(id); 651 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt[0]/type",1).setValue(type); 652 save_parameters(); 653 } 654 return; 655 } 656 657 if(popup_status==20){ 658 setprop("/instrumentation/garmin196/popup_status",0); 659 var id = getprop("/instrumentation/garmin196/dto_display/ligne["~getprop("/instrumentation/garmin196/dto_display/no_ligne_selected")~"]/id"); 660 var type = getprop("/instrumentation/garmin196/dto_display/ligne["~getprop("/instrumentation/garmin196/dto_display/no_ligne_selected")~"]/type"); 661 affectation_waypoint(id); 662 return; 663 } 664 665 if(popup_status>30 and popup_status<=89){ 666 setprop("/instrumentation/garmin196/popup_status",0); 667 var id = getprop("/instrumentation/garmin196/nrst_display/ligne["~getprop("/instrumentation/garmin196/nrst_display/no_ligne_selected")~"]/id"); 668 var type = getprop("/instrumentation/garmin196/nrst_display/ligne["~getprop("/instrumentation/garmin196/nrst_display/no_ligne_selected")~"]/type"); 669 affectation_waypoint(id); 670 ##rolling recents waypoints 671 var existe_deja = 0; 672 for(var i=0;i<5;i=i+1){ 673 if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id")==id){ 674 existe_deja = 1; 675 break; 676 } 677 } 678 if(existe_deja==0){ 679 for(var i=4;i>0;i=i-1){ 680 if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/id")){ 681 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/id")); 682 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/type",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/type")); 683 } 684 } 685 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt[0]/id",1).setValue(id); 686 props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt[0]/type",1).setValue(type); 687 save_parameters(); 688 } 689 return; 690 } 691 692 ##validation de la startup page 693 var status = getprop("/instrumentation/garmin196/status"); 694 if(status==1){ 695 setprop("/instrumentation/garmin196/status",10); 696 update_map(); 697 return; 698 } 699 700 if(status==110){ 701 if(getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected")>=0){ 702 setprop("/instrumentation/garmin196/menu_flights/no_ligne_selected",0); 703 setprop("/instrumentation/garmin196/status",111); 704 } 705 return; 706 } 707 708 if(status==111){ 709 update_menu_flights_detail(); 710 setprop("/instrumentation/garmin196/status",112); 711 return; 712 } 713 714 if(status==112){ 715 setprop("/instrumentation/garmin196/status",111); 716 return; 717 } 718 719 if(status==120){ 720 setprop("/instrumentation/garmin196/status",121); 721 setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",0); 722 return; 723 } 724 725 if(status==121){ 726 setprop("/instrumentation/garmin196/status",122); 727 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 728 if(getprop("/instrumentation/garmin196/routes/route["~no_ligne~"]/name")==nil){ 729 init_new_route(no_ligne); 730 } 731 update_menu_routes_detail(); 732 setprop("/instrumentation/garmin196/menu_routes/no_ligne_detail",0); 733 return; 734 } 735 736 if(status==122){ 737 setprop("/instrumentation/garmin196/status",123); 738 var no_ligne_liste = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 739 var no_ligne_detail = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail"); 740 if(getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/id")==nil){ 741 init_search_route("0"); 742 }else{ 743 init_search_route(getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/id")); 744 } 745 setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",-1); 746 return; 747 } 748 749 if(status==123){ 750 if(getprop("/instrumentation/garmin196/menu_routes/search/max_ligne_selected")>=0){ 751 setprop("/instrumentation/garmin196/status",124); 752 setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",0); 753 } 754 return; 755 } 756 757 if(status==124){ 758 validate_menu_search_routes(); 759 update_menu_routes_detail(); 760 init_menu_routes_list(); 761 setprop("/instrumentation/garmin196/status",122); 762 return; 763 } 764 765 if(status==130){ 766 setprop("/instrumentation/garmin196/status",131); 767 setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",0); 768 return; 769 } 770 771 if(status==131){ 772 setprop("/instrumentation/garmin196/status",132); 773 var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected"); 774 if(getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/id")==nil){ 775 init_new_point(no_ligne); 776 } 777 update_menu_points(); 778 return; 779 } 780 781 if(status==132){ 782 setprop("/instrumentation/garmin196/status",133); 783 return; 784 } 785 786 if(status==133){ 787 setprop("/instrumentation/garmin196/status",134); 788 return; 789 } 790 791 if(status==134){ 792 setprop("/instrumentation/garmin196/status",135); 793 return; 794 } 795 796 if(status==135){ 797 setprop("/instrumentation/garmin196/status",136); 798 return; 799 } 800 801 if(status==136){ 802 setprop("/instrumentation/garmin196/status",131); 803 validate_menu_points(); 804 init_list_points(); 805 return; 806 } 807 808 if(status==140){ 809 setprop("/instrumentation/garmin196/status",141); 810 setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",getprop("/instrumentation/garmin196/no_aircraft")); 811 display_list_aircraft(); 812 return; 813 } 814 815 if(status==141){ 816 setprop("/instrumentation/garmin196/status",142); 817 var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected"); 818 if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/name")==nil){ 819 init_new_aircraft(no_ligne); 820 } 821 init_menu_aircraft(); 822 return; 823 } 824 825 if(status==142){ 826 setprop("/instrumentation/garmin196/status",143); 827 return; 828 } 829 830 if(status==143){ 831 setprop("/instrumentation/garmin196/status",144); 832 return; 833 } 834 835 if(status==144){ 836 setprop("/instrumentation/garmin196/status",145); 837 return; 838 } 839 840 if(status==145){ 841 setprop("/instrumentation/garmin196/status",141); 842 validate_menu_aircraft(); 843 init_list_aircraft(); 844 display_list_aircraft(); 845 return; 846 } 847 848 ##menu map 849 if(status==160){ 850 setprop("/instrumentation/garmin196/status",161); 851 setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",0); 852 return; 853 } 854 855 if(status==161){ 856 var no_ligne = getprop("/instrumentation/garmin196/menu_map/no_ligne_selected"); 857 if(no_ligne==0){ 858 setprop("/instrumentation/garmin196/symbols/params/airport",(getprop("/instrumentation/garmin196/symbols/params/airport")==1 ? 0 : 1)); 859 } 860 if(no_ligne==1){ 861 setprop("/instrumentation/garmin196/symbols/params/vor",(getprop("/instrumentation/garmin196/symbols/params/vor")==1 ? 0 : 1)); 862 } 863 if(no_ligne==2){ 864 setprop("/instrumentation/garmin196/symbols/params/ndb",(getprop("/instrumentation/garmin196/symbols/params/ndb")==1 ? 0 : 1)); 865 } 866 if(no_ligne==3){ 867 setprop("/instrumentation/garmin196/symbols/params/fix",(getprop("/instrumentation/garmin196/symbols/params/fix")==1 ? 0 : 1)); 868 } 869 if(no_ligne==4){ 870 setprop("/instrumentation/garmin196/symbols/params/twn",(getprop("/instrumentation/garmin196/symbols/params/twn")==1 ? 0 : 1)); 871 } 872 if(no_ligne==5){ 873 setprop("/instrumentation/garmin196/symbols/params/wpt",(getprop("/instrumentation/garmin196/symbols/params/wpt")==1 ? 0 : 1)); 874 } 875 save_parameters(); 876 return; 877 } 878 879 ##menu setup 880 if(status==170){ 881 setprop("/instrumentation/garmin196/status",171); 882 setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",0); 883 return; 884 } 885 886 if(status==171){ 887 var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected"); 888 if(no_ligne==0){ 889 setprop("/instrumentation/garmin196/params/units/distance",(getprop("/instrumentation/garmin196/params/units/distance")==1 ? 2 : 1)); 890 } 891 if(no_ligne==1){ 892 setprop("/instrumentation/garmin196/params/units/speed",(getprop("/instrumentation/garmin196/params/units/speed")==1 ? 2 : 1)); 893 } 894 if(no_ligne==2){ 895 setprop("/instrumentation/garmin196/params/units/vert-speed",(getprop("/instrumentation/garmin196/params/units/vert-speed")==1 ? 2 : 1)); 896 } 897 if(no_ligne==3){ 898 setprop("/instrumentation/garmin196/params/units/altitude",(getprop("/instrumentation/garmin196/params/units/altitude")==1 ? 2 : 1)); 899 } 900 if(no_ligne==4){ 901 setprop("/instrumentation/garmin196/params/units/pressure",(getprop("/instrumentation/garmin196/params/units/pressure")==1 ? 2 : 1)); 902 } 903 if(no_ligne==5){ 904 setprop("/instrumentation/garmin196/params/units/temperature",(getprop("/instrumentation/garmin196/params/units/temperature")==1 ? 2 : 1)); 905 } 906 save_parameters(); 907 return; 908 } 909 910 if(status==175){ 911 setprop("/instrumentation/garmin196/status",176); 912 setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",0); 913 return; 914 } 915 if(status==176){ 916 var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected"); 917 if(no_ligne==0){ 918 setprop("/instrumentation/garmin196/params/filtrage",(getprop("/instrumentation/garmin196/params/filtrage")==0 ? 1 : 0)); 919 } 920 if(no_ligne==1){ 921 setprop("/instrumentation/garmin196/params/vnav-indicator",(getprop("/instrumentation/garmin196/params/vnav-indicator")==0 ? 1 : 0)); 922 } 923 save_parameters(); 924 return; 925 } 926 927 }elsif(x==1){ 928 #traitement des popup 929 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 930 var status = getprop("/instrumentation/garmin196/status"); 931 if(popup_status==0){##pas de popup 932 if(status>=10 and status<=39){ 933 old_status = status; 934 setprop("/instrumentation/garmin196/status",132); 935 setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",0); 936 var points = props.globals.getNode("/instrumentation/garmin196/waypoints/user/",1).getChildren("wpt"); 937 for(var i=size(points)-1;i>=0;i=i-1){ 938 if(i<8){ 939 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~(i+1)~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id")); 940 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~(i+1)~"]/latitude",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude")); 941 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~(i+1)~"]/longitude",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude")); 942 } 943 } 944 init_new_point(0); 945 update_menu_points(); 946 #init_list_points(); 947 } 948 } 949 } 950 } 951} 952 953var menu = func (x){ 954 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 955 var status = getprop("/instrumentation/garmin196/status"); 956 if(serviceable==1){ 957 if(status>=10 and status<100){ 958 old_status = status; 959 setprop("/instrumentation/garmin196/status",100); 960 setprop("/instrumentation/garmin196/popup_status",0); 961 962 ##particularite map 963 if(status==10){ 964 setprop("/instrumentation/garmin196/status",160); 965 setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",-1); 966 } 967 }elsif(status>=100){ 968 if(old_status>=10){ 969 status = old_status; 970 }else{ 971 status = 10; 972 } 973 setprop("/instrumentation/garmin196/status",status); 974 } 975 } 976} 977 978var nrst = func (x){ 979 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 980 var status = getprop("/instrumentation/garmin196/status"); 981 if(serviceable==1 and status>1 and status<100){ 982 if(x==0){ 983 setprop("/instrumentation/garmin196/popup_status",40); 984 display_nrst("airport"); 985 } 986 } 987} 988 989var dto = func (x){ 990 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 991 var status = getprop("/instrumentation/garmin196/status"); 992 if(serviceable==1 and status>1 and status<100){ 993 if(x==0){ 994 setprop("/instrumentation/garmin196/popup_status",10); 995 setprop("/instrumentation/garmin196/dto_display/ligne_select","Press Enter to search"); 996 init_dto_display(); 997 setprop("/instrumentation/garmin196/dto_display/x_char",0); 998 setprop("/instrumentation/garmin196/dto_display/y_char",0); 999 } 1000 } 1001} 1002 1003var rockerup = func (x){ 1004 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 1005 if(serviceable==1){ 1006 if(x==0){ 1007 #traitement des popup 1008 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 1009 1010 if(popup_status==1){ 1011 var light_level = getprop("/instrumentation/garmin196/light"); 1012 light_level = light_level + 0.1; 1013 if(light_level>1){ 1014 light_level = 1; 1015 } 1016 setprop("/instrumentation/garmin196/light",light_level); 1017 return; 1018 } 1019 1020 if(popup_status==11){ 1021 var y_char = getprop("/instrumentation/garmin196/dto_display/y_char"); 1022 y_char = y_char + 1; 1023 if(y_char>35){ 1024 y_char = 0; 1025 } 1026 setprop("/instrumentation/garmin196/dto_display/y_char",y_char); 1027 display_dto_search(); 1028 return; 1029 } 1030 1031 if(popup_status==12){ 1032 var no_ligne = getprop("/instrumentation/garmin196/dto_display/no_ligne_selected"); 1033 var old_no_ligne = no_ligne; 1034 no_ligne = no_ligne - 1; 1035 if(no_ligne<0){ 1036 no_ligne = 0; 1037 } 1038 setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",no_ligne); 1039 if(old_no_ligne!=no_ligne){ 1040 setprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/selected",1); 1041 setprop("/instrumentation/garmin196/dto_display/ligne["~old_no_ligne~"]/selected",0); 1042 } 1043 return; 1044 } 1045 1046 if(popup_status==20 or popup_status==30){ 1047 var no_ligne = getprop("/instrumentation/garmin196/dto_display/no_ligne_selected"); 1048 var old_no_ligne = no_ligne; 1049 no_ligne = no_ligne - 1; 1050 if(no_ligne<0){ 1051 no_ligne = 0; 1052 } 1053 setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",no_ligne); 1054 setprop("/instrumentation/garmin196/dto_display/ligne_select",getprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/texte")); 1055 if(old_no_ligne!=no_ligne){ 1056 setprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/selected",1); 1057 setprop("/instrumentation/garmin196/dto_display/ligne["~old_no_ligne~"]/selected",0); 1058 } 1059 return; 1060 } 1061 1062 if(popup_status>=40 and popup_status<=99){ 1063 var no_ligne = getprop("/instrumentation/garmin196/nrst_display/no_ligne_selected"); 1064 var old_no_ligne = no_ligne; 1065 no_ligne = no_ligne - 1; 1066 if(no_ligne<0){ 1067 no_ligne = 0; 1068 } 1069 setprop("/instrumentation/garmin196/nrst_display/no_ligne_selected",no_ligne); 1070 setprop("/instrumentation/garmin196/nrst_display/ligne_select",getprop("/instrumentation/garmin196/nrst_display/ligne["~no_ligne~"]/texte")); 1071 if(old_no_ligne!=no_ligne){ 1072 setprop("/instrumentation/garmin196/nrst_display/ligne["~no_ligne~"]/selected",1); 1073 setprop("/instrumentation/garmin196/nrst_display/ligne["~old_no_ligne~"]/selected",0); 1074 } 1075 return; 1076 } 1077 1078 ##traitement des menus 1079 var status = getprop("/instrumentation/garmin196/status"); 1080 if(status>=100 and status<110){ 1081 setprop("/instrumentation/garmin196/status",170); 1082 return; 1083 } 1084 1085 if(status==110){ 1086 setprop("/instrumentation/garmin196/status",100); 1087 return; 1088 } 1089 1090 if(status==111){ 1091 if(getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected")>=0){ 1092 var no_ligne = getprop("/instrumentation/garmin196/menu_flights/no_ligne_selected"); 1093 no_ligne = no_ligne - 1; 1094 if(no_ligne<0){ 1095 no_ligne = 0; 1096 } 1097 setprop("/instrumentation/garmin196/menu_flights/no_ligne_selected",no_ligne); 1098 } 1099 } 1100 1101 if(status==120){ 1102 setprop("/instrumentation/garmin196/status",110); 1103 display_menu_flights(); 1104 return; 1105 } 1106 1107 if(status==121){ 1108 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 1109 no_ligne = no_ligne - 1; 1110 if(no_ligne<0){ 1111 no_ligne = 0; 1112 } 1113 setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",no_ligne); 1114 return; 1115 } 1116 1117 if(status==122){ 1118 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail"); 1119 no_ligne = no_ligne - 1; 1120 if(no_ligne<0){ 1121 no_ligne = 0; 1122 } 1123 setprop("/instrumentation/garmin196/menu_routes/no_ligne_detail",no_ligne); 1124 return; 1125 } 1126 1127 if(status==123){ 1128 var y_char = getprop("/instrumentation/garmin196/menu_routes/search/y_char"); 1129 y_char = y_char + 1; 1130 if(y_char>35){ 1131 y_char = 0; 1132 } 1133 setprop("/instrumentation/garmin196/menu_routes/search/y_char",y_char); 1134 display_route_waypoint_search(); 1135 return; 1136 } 1137 1138 if(status==124){ 1139 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected"); 1140 no_ligne = no_ligne - 1; 1141 if(no_ligne<0){ 1142 no_ligne = 0; 1143 } 1144 setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",no_ligne); 1145 return; 1146 } 1147 1148 if(status==130){ 1149 setprop("/instrumentation/garmin196/status",120); 1150 init_menu_routes_list(); 1151 setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",-1); 1152 return; 1153 } 1154 1155 if(status==131){ 1156 var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected"); 1157 no_ligne = no_ligne - 1; 1158 if(no_ligne<0){ 1159 no_ligne = 0; 1160 } 1161 setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",no_ligne); 1162 return; 1163 } 1164 1165 if(status==132){ 1166 var y_char = getprop("/instrumentation/garmin196/menu_points/y_char"); 1167 y_char = y_char + 1; 1168 if(y_char>35){ 1169 y_char = 0; 1170 } 1171 setprop("/instrumentation/garmin196/menu_points/y_char",y_char); 1172 display_menu_points(); 1173 return; 1174 } 1175 1176 if(status==133){ 1177 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 1178 latitude = latitude + 1; 1179 if(latitude>180){ 1180 latitude = 180; 1181 } 1182 setprop("/instrumentation/garmin196/menu_points/latitude",latitude); 1183 display_menu_points(); 1184 return; 1185 } 1186 1187 if(status==134){ 1188 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 1189 latitude = latitude + .01; 1190 if(latitude>180){ 1191 latitude = 180; 1192 } 1193 setprop("/instrumentation/garmin196/menu_points/latitude",latitude); 1194 display_menu_points(); 1195 return; 1196 } 1197 1198 if(status==135){ 1199 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 1200 longitude = longitude + 1; 1201 if(longitude>180){ 1202 longitude = -180; 1203 } 1204 setprop("/instrumentation/garmin196/menu_points/longitude",longitude); 1205 display_menu_points(); 1206 return; 1207 } 1208 1209 if(status==136){ 1210 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 1211 longitude = longitude + .01; 1212 if(longitude>180){ 1213 longitude = -180; 1214 } 1215 setprop("/instrumentation/garmin196/menu_points/longitude",longitude); 1216 display_menu_points(); 1217 return; 1218 } 1219 1220 if(status==140){ 1221 setprop("/instrumentation/garmin196/status",130); 1222 setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",-1); 1223 init_list_points(); 1224 return; 1225 } 1226 1227 if(status==141){ 1228 var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected"); 1229 no_ligne = no_ligne - 1; 1230 if(no_ligne<0){ 1231 no_ligne = 0; 1232 } 1233 setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",no_ligne); 1234 display_list_aircraft(); 1235 return; 1236 } 1237 1238 if(status==142){ 1239 var y_char = getprop("/instrumentation/garmin196/menu_aircraft/y_char"); 1240 y_char = y_char + 1; 1241 if(y_char>35){ 1242 y_char = 0; 1243 } 1244 setprop("/instrumentation/garmin196/menu_aircraft/y_char",y_char); 1245 display_menu_aircraft_name(); 1246 return; 1247 } 1248 1249 if(status==143){ 1250 var cruise = getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise"); 1251 cruise = cruise + 1; 1252 if(cruise>500){ 1253 cruise = 500; 1254 } 1255 setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",cruise); 1256 display_menu_aircraft(); 1257 return; 1258 } 1259 1260 if(status==144){ 1261 var max = getprop("/instrumentation/garmin196/menu_aircraft/selected-max"); 1262 max = max + 1; 1263 if(max>500){ 1264 max = 500; 1265 } 1266 setprop("/instrumentation/garmin196/menu_aircraft/selected-max",max); 1267 display_menu_aircraft(); 1268 return; 1269 } 1270 1271 if(status==145){ 1272 var fuelflow = getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow"); 1273 fuelflow = fuelflow + 0.1; 1274 if(fuelflow>100){ 1275 fuelflow = 100; 1276 } 1277 setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",fuelflow); 1278 return; 1279 } 1280 1281 if(status==150){ 1282 setprop("/instrumentation/garmin196/status",140); 1283 setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",-1); 1284 init_list_aircraft(); 1285 display_list_aircraft(); 1286 return; 1287 } 1288 1289 if(status==160){ 1290 setprop("/instrumentation/garmin196/status",150); 1291 return; 1292 } 1293 1294 if(status==161){ 1295 var no_ligne = getprop("/instrumentation/garmin196/menu_map/no_ligne_selected"); 1296 no_ligne = no_ligne - 1; 1297 if(no_ligne<0){ 1298 no_ligne = 0; 1299 } 1300 setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",no_ligne); 1301 return; 1302 } 1303 1304 if(status==170){ 1305 setprop("/instrumentation/garmin196/status",160); 1306 setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",-1); 1307 return; 1308 } 1309 1310 if(status==171){ 1311 var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected"); 1312 no_ligne = no_ligne - 1; 1313 if(no_ligne<0){ 1314 no_ligne = 0; 1315 } 1316 setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",no_ligne); 1317 return; 1318 } 1319 1320 if(status==176){ 1321 var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected"); 1322 no_ligne = no_ligne - 1; 1323 if(no_ligne<0){ 1324 no_ligne = 0; 1325 } 1326 setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",no_ligne); 1327 return; 1328 } 1329 1330 }elsif(x==1){ 1331 #traitement des popup 1332 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 1333 if(popup_status==11){ 1334 var y_char = getprop("/instrumentation/garmin196/dto_display/y_char"); 1335 y_char = y_char + 10; 1336 if(y_char>35){ 1337 y_char = y_char-36; 1338 } 1339 setprop("/instrumentation/garmin196/dto_display/y_char",y_char); 1340 display_dto_search(); 1341 return; 1342 } 1343 1344 ##traitement des menus 1345 var status = getprop("/instrumentation/garmin196/status"); 1346 1347 if(status==123){ 1348 var y_char = getprop("/instrumentation/garmin196/menu_routes/search/y_char"); 1349 y_char = y_char + 10; 1350 if(y_char>35){ 1351 y_char = y_char-36; 1352 } 1353 setprop("/instrumentation/garmin196/menu_routes/search/y_char",y_char); 1354 display_route_waypoint_search(); 1355 return; 1356 } 1357 1358 if(status==132){ 1359 var y_char = getprop("/instrumentation/garmin196/menu_points/y_char"); 1360 y_char = y_char + 10; 1361 if(y_char>35){ 1362 y_char = y_char-36; 1363 } 1364 setprop("/instrumentation/garmin196/menu_points/y_char",y_char); 1365 display_menu_points(); 1366 return; 1367 } 1368 1369 if(status==133){ 1370 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 1371 latitude = latitude + 10; 1372 if(latitude>180){ 1373 latitude = 180; 1374 } 1375 setprop("/instrumentation/garmin196/menu_points/latitude",latitude); 1376 display_menu_points(); 1377 return; 1378 } 1379 1380 if(status==134){ 1381 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 1382 latitude = latitude + .1; 1383 if(latitude>180){ 1384 latitude = 180; 1385 } 1386 setprop("/instrumentation/garmin196/menu_points/latitude",latitude); 1387 display_menu_points(); 1388 return; 1389 } 1390 1391 if(status==135){ 1392 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 1393 longitude = longitude + 10; 1394 if(longitude>180){ 1395 longitude = -180; 1396 } 1397 setprop("/instrumentation/garmin196/menu_points/longitude",longitude); 1398 display_menu_points(); 1399 return; 1400 } 1401 1402 if(status==136){ 1403 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 1404 longitude = longitude + .1; 1405 if(longitude>180){ 1406 longitude = -180; 1407 } 1408 setprop("/instrumentation/garmin196/menu_points/longitude",longitude); 1409 display_menu_points(); 1410 return; 1411 } 1412 1413 if(status==142){ 1414 var y_char = getprop("/instrumentation/garmin196/menu_aircraft/y_char"); 1415 y_char = y_char + 10; 1416 if(y_char>35){ 1417 y_char = y_char-36; 1418 } 1419 setprop("/instrumentation/garmin196/menu_aircraft/y_char",y_char); 1420 display_menu_aircraft_name(); 1421 return; 1422 } 1423 1424 if(status==143){ 1425 var cruise = getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise"); 1426 cruise = cruise + 10; 1427 if(cruise>500){ 1428 cruise = 500; 1429 } 1430 setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",cruise); 1431 display_menu_aircraft(); 1432 return; 1433 } 1434 1435 if(status==144){ 1436 var max = getprop("/instrumentation/garmin196/menu_aircraft/selected-max"); 1437 max = max + 10; 1438 if(max>500){ 1439 max = 500; 1440 } 1441 setprop("/instrumentation/garmin196/menu_aircraft/selected-max",max); 1442 display_menu_aircraft(); 1443 return; 1444 } 1445 1446 if(status==145){ 1447 var fuelflow = getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow"); 1448 fuelflow = fuelflow + 1; 1449 if(fuelflow>100){ 1450 fuelflow = 100; 1451 } 1452 setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",fuelflow); 1453 return; 1454 } 1455 } 1456 } 1457} 1458 1459var rockerdown = func (x){ 1460 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 1461 if(serviceable==1){ 1462 if(x==0){ 1463 #traitement des popup 1464 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 1465 if(popup_status==1){ 1466 var light_level = getprop("/instrumentation/garmin196/light"); 1467 light_level = light_level - 0.1; 1468 if(light_level<0){ 1469 light_level = 0; 1470 } 1471 setprop("/instrumentation/garmin196/light",light_level); 1472 return; 1473 } 1474 1475 if(popup_status==11){ 1476 var y_char = getprop("/instrumentation/garmin196/dto_display/y_char"); 1477 y_char = y_char - 1; 1478 if(y_char<0){ 1479 y_char = 35; 1480 } 1481 setprop("/instrumentation/garmin196/dto_display/y_char",y_char); 1482 display_dto_search(); 1483 return; 1484 } 1485 1486 if(popup_status==12){ 1487 var no_ligne = getprop("/instrumentation/garmin196/dto_display/no_ligne_selected"); 1488 var old_no_ligne = no_ligne; 1489 var max_ligne = getprop("/instrumentation/garmin196/dto_display/max_ligne_selected"); 1490 no_ligne = no_ligne + 1; 1491 if(no_ligne>max_ligne){ 1492 no_ligne = max_ligne; 1493 } 1494 setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",no_ligne); 1495 if(old_no_ligne!=no_ligne){ 1496 setprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/selected",1); 1497 setprop("/instrumentation/garmin196/dto_display/ligne["~old_no_ligne~"]/selected",0); 1498 } 1499 return; 1500 } 1501 1502 if(popup_status==20 or popup_status==30){ 1503 var no_ligne = getprop("/instrumentation/garmin196/dto_display/no_ligne_selected"); 1504 var old_no_ligne = no_ligne; 1505 var max_ligne = getprop("/instrumentation/garmin196/dto_display/max_ligne_selected"); 1506 no_ligne = no_ligne + 1; 1507 if(no_ligne>max_ligne){ 1508 no_ligne = max_ligne; 1509 } 1510 setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",no_ligne); 1511 setprop("/instrumentation/garmin196/dto_display/ligne_select",getprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/texte")); 1512 if(old_no_ligne!=no_ligne){ 1513 setprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/selected",1); 1514 setprop("/instrumentation/garmin196/dto_display/ligne["~old_no_ligne~"]/selected",0); 1515 } 1516 return; 1517 } 1518 1519 if(popup_status>=40 and popup_status<=99){ 1520 var no_ligne = getprop("/instrumentation/garmin196/nrst_display/no_ligne_selected"); 1521 var old_no_ligne = no_ligne; 1522 var max_ligne = getprop("/instrumentation/garmin196/nrst_display/max_ligne_selected"); 1523 no_ligne = no_ligne + 1; 1524 if(no_ligne>max_ligne){ 1525 no_ligne = max_ligne; 1526 } 1527 setprop("/instrumentation/garmin196/nrst_display/no_ligne_selected",no_ligne); 1528 setprop("/instrumentation/garmin196/nrst_display/ligne_select",getprop("/instrumentation/garmin196/nrst_display/ligne["~no_ligne~"]/texte")); 1529 if(old_no_ligne!=no_ligne){ 1530 setprop("/instrumentation/garmin196/nrst_display/ligne["~no_ligne~"]/selected",1); 1531 setprop("/instrumentation/garmin196/nrst_display/ligne["~old_no_ligne~"]/selected",0); 1532 } 1533 return; 1534 } 1535 1536 ##traitement des menus 1537 var status = getprop("/instrumentation/garmin196/status"); 1538 if(status>=100 and status<110){ 1539 setprop("/instrumentation/garmin196/status",110); 1540 display_menu_flights(); 1541 return; 1542 } 1543 1544 if(status==110){ 1545 setprop("/instrumentation/garmin196/status",120); 1546 init_menu_routes_list(); 1547 setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",-1); 1548 return; 1549 } 1550 1551 if(status==111){ 1552 if(getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected")>=0){ 1553 var no_ligne = getprop("/instrumentation/garmin196/menu_flights/no_ligne_selected"); 1554 no_ligne = no_ligne + 1; 1555 if(no_ligne>getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected")){ 1556 no_ligne = getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected"); 1557 } 1558 setprop("/instrumentation/garmin196/menu_flights/no_ligne_selected",no_ligne); 1559 } 1560 return; 1561 } 1562 1563 if(status==120){ 1564 setprop("/instrumentation/garmin196/status",130); 1565 setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",-1); 1566 init_list_points(); 1567 return; 1568 } 1569 1570 if(status==121){ 1571 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 1572 var max_no_ligne = getprop("/instrumentation/garmin196/menu_routes/max_no_ligne"); 1573 no_ligne = no_ligne + 1; 1574 if(no_ligne>max_no_ligne){ 1575 no_ligne = max_no_ligne; 1576 } 1577 setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",no_ligne); 1578 return; 1579 } 1580 1581 if(status==122){ 1582 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail"); 1583 var max_no_ligne = getprop("/instrumentation/garmin196/menu_routes/max_no_ligne_detail"); 1584 no_ligne = no_ligne + 1; 1585 if(no_ligne>max_no_ligne){ 1586 no_ligne = max_no_ligne; 1587 } 1588 setprop("/instrumentation/garmin196/menu_routes/no_ligne_detail",no_ligne); 1589 return; 1590 } 1591 1592 if(status==123){ 1593 var y_char = getprop("/instrumentation/garmin196/menu_routes/search/y_char"); 1594 y_char = y_char - 1; 1595 if(y_char<0){ 1596 y_char = 35; 1597 } 1598 setprop("/instrumentation/garmin196/menu_routes/search/y_char",y_char); 1599 display_route_waypoint_search(); 1600 return; 1601 } 1602 1603 if(status==124){ 1604 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected"); 1605 var max_no_ligne = getprop("/instrumentation/garmin196/menu_routes/search/max_ligne_selected"); 1606 no_ligne = no_ligne + 1; 1607 if(no_ligne>max_no_ligne){ 1608 no_ligne = max_no_ligne; 1609 } 1610 setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",no_ligne); 1611 return; 1612 } 1613 1614 if(status==130){ 1615 setprop("/instrumentation/garmin196/status",140); 1616 setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",-1); 1617 init_list_aircraft(); 1618 display_list_aircraft(); 1619 return; 1620 } 1621 1622 if(status==131){ 1623 var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected"); 1624 no_ligne = no_ligne + 1; 1625 if(no_ligne>getprop("/instrumentation/garmin196/menu_points/max_no_ligne")){ 1626 no_ligne = getprop("/instrumentation/garmin196/menu_points/max_no_ligne"); 1627 } 1628 setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",no_ligne); 1629 return; 1630 } 1631 1632 if(status==132){ 1633 var y_char = getprop("/instrumentation/garmin196/menu_points/y_char"); 1634 y_char = y_char - 1; 1635 if(y_char<0){ 1636 y_char = 35; 1637 } 1638 setprop("/instrumentation/garmin196/menu_points/y_char",y_char); 1639 display_menu_points(); 1640 return; 1641 } 1642 1643 if(status==133){ 1644 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 1645 latitude = latitude - 1; 1646 if(latitude<-180){ 1647 latitude = -180; 1648 } 1649 setprop("/instrumentation/garmin196/menu_points/latitude",latitude); 1650 display_menu_points(); 1651 return; 1652 } 1653 1654 if(status==134){ 1655 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 1656 latitude = latitude - .01; 1657 if(latitude<-180){ 1658 latitude = -180; 1659 } 1660 setprop("/instrumentation/garmin196/menu_points/latitude",latitude); 1661 display_menu_points(); 1662 return; 1663 } 1664 1665 if(status==135){ 1666 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 1667 longitude = longitude - 1; 1668 if(longitude<-180){ 1669 longitude = 180; 1670 } 1671 setprop("/instrumentation/garmin196/menu_points/longitude",longitude); 1672 display_menu_points(); 1673 return; 1674 } 1675 1676 if(status==136){ 1677 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 1678 longitude = longitude - .01; 1679 if(longitude<-180){ 1680 longitude = 180; 1681 } 1682 setprop("/instrumentation/garmin196/menu_points/longitude",longitude); 1683 display_menu_points(); 1684 return; 1685 } 1686 1687 if(status==140){ 1688 setprop("/instrumentation/garmin196/status",150); 1689 return; 1690 } 1691 1692 if(status==141){ 1693 var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected"); 1694 no_ligne = no_ligne + 1; 1695 if(no_ligne>getprop("/instrumentation/garmin196/menu_aircraft/max_no_ligne")){ 1696 no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/max_no_ligne"); 1697 } 1698 setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",no_ligne); 1699 display_list_aircraft(); 1700 return; 1701 } 1702 1703 if(status==142){ 1704 var y_char = getprop("/instrumentation/garmin196/menu_aircraft/y_char"); 1705 y_char = y_char - 1; 1706 if(y_char<0){ 1707 y_char = 35; 1708 } 1709 setprop("/instrumentation/garmin196/menu_aircraft/y_char",y_char); 1710 display_menu_aircraft_name(); 1711 return; 1712 } 1713 1714 if(status==143){ 1715 var cruise = getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise"); 1716 cruise = cruise - 1; 1717 if(cruise<1){ 1718 cruise = 1; 1719 } 1720 setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",cruise); 1721 display_menu_aircraft(); 1722 return; 1723 } 1724 1725 if(status==144){ 1726 var max = getprop("/instrumentation/garmin196/menu_aircraft/selected-max"); 1727 max = max - 1; 1728 if(max<1){ 1729 max = 1; 1730 } 1731 setprop("/instrumentation/garmin196/menu_aircraft/selected-max",max); 1732 display_menu_aircraft(); 1733 return; 1734 } 1735 1736 if(status==145){ 1737 var fuelflow = getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow"); 1738 fuelflow = fuelflow - 0.1; 1739 if(fuelflow<1){ 1740 fuelflow = 1; 1741 } 1742 setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",fuelflow); 1743 return; 1744 } 1745 1746 if(status==150){ 1747 setprop("/instrumentation/garmin196/status",160); 1748 setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",-1); 1749 return; 1750 } 1751 1752 if(status==160){ 1753 setprop("/instrumentation/garmin196/status",170); 1754 return; 1755 } 1756 1757 if(status==161){ 1758 var no_ligne = getprop("/instrumentation/garmin196/menu_map/no_ligne_selected"); 1759 no_ligne = no_ligne + 1; 1760 if(no_ligne>5){ 1761 no_ligne = 5; 1762 } 1763 setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",no_ligne); 1764 return; 1765 } 1766 1767 if(status==170){ 1768 setprop("/instrumentation/garmin196/status",100); 1769 return; 1770 } 1771 1772 if(status==171){ 1773 var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected"); 1774 no_ligne = no_ligne + 1; 1775 if(no_ligne>5){ 1776 no_ligne = 5; 1777 } 1778 setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",no_ligne); 1779 return; 1780 } 1781 1782 if(status==176){ 1783 var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected"); 1784 no_ligne = no_ligne + 1; 1785 if(no_ligne>1){ 1786 no_ligne = 1; 1787 } 1788 setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",no_ligne); 1789 return; 1790 } 1791 1792 }elsif(x==1){ 1793 #traitement des popup 1794 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 1795 if(popup_status==11){ 1796 var y_char = getprop("/instrumentation/garmin196/dto_display/y_char"); 1797 y_char = y_char - 10; 1798 if(y_char<0){ 1799 y_char = y_char + 36; 1800 } 1801 setprop("/instrumentation/garmin196/dto_display/y_char",y_char); 1802 display_dto_search(); 1803 return; 1804 } 1805 1806 ##traitement des menus 1807 var status = getprop("/instrumentation/garmin196/status"); 1808 1809 if(status==123){ 1810 var y_char = getprop("/instrumentation/garmin196/menu_routes/search/y_char"); 1811 y_char = y_char - 10; 1812 if(y_char<0){ 1813 y_char = y_char + 36; 1814 } 1815 setprop("/instrumentation/garmin196/menu_routes/search/y_char",y_char); 1816 display_route_waypoint_search(); 1817 return; 1818 } 1819 1820 if(status==132){ 1821 var y_char = getprop("/instrumentation/garmin196/menu_points/y_char"); 1822 y_char = y_char - 10; 1823 if(y_char<0){ 1824 y_char = y_char + 36; 1825 } 1826 setprop("/instrumentation/garmin196/menu_points/y_char",y_char); 1827 display_menu_points(); 1828 return; 1829 } 1830 1831 if(status==132){ 1832 var y_char = getprop("/instrumentation/garmin196/menu_points/y_char"); 1833 y_char = y_char - 1; 1834 if(y_char<0){ 1835 y_char = 35; 1836 } 1837 setprop("/instrumentation/garmin196/menu_points/y_char",y_char); 1838 display_menu_points(); 1839 return; 1840 } 1841 1842 if(status==133){ 1843 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 1844 latitude = latitude - 10; 1845 if(latitude<-180){ 1846 latitude = -180; 1847 } 1848 setprop("/instrumentation/garmin196/menu_points/latitude",latitude); 1849 display_menu_points(); 1850 return; 1851 } 1852 1853 if(status==134){ 1854 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 1855 latitude = latitude - .1; 1856 if(latitude<-180){ 1857 latitude = -180; 1858 } 1859 setprop("/instrumentation/garmin196/menu_points/latitude",latitude); 1860 display_menu_points(); 1861 return; 1862 } 1863 1864 if(status==135){ 1865 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 1866 longitude = longitude - 10; 1867 if(longitude<-180){ 1868 longitude = 180; 1869 } 1870 setprop("/instrumentation/garmin196/menu_points/longitude",longitude); 1871 display_menu_points(); 1872 return; 1873 } 1874 1875 if(status==136){ 1876 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 1877 longitude = longitude - .1; 1878 if(longitude<-180){ 1879 longitude = 180; 1880 } 1881 setprop("/instrumentation/garmin196/menu_points/longitude",longitude); 1882 display_menu_points(); 1883 return; 1884 } 1885 1886 if(status==142){ 1887 var y_char = getprop("/instrumentation/garmin196/menu_aircraft/y_char"); 1888 y_char = y_char - 10; 1889 if(y_char<0){ 1890 y_char = y_char + 36; 1891 } 1892 setprop("/instrumentation/garmin196/menu_aircraft/y_char",y_char); 1893 display_menu_aircraft_name(); 1894 return; 1895 } 1896 1897 if(status==143){ 1898 var cruise = getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise"); 1899 cruise = cruise - 10; 1900 if(cruise<1){ 1901 cruise = 1; 1902 } 1903 setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",cruise); 1904 display_menu_aircraft(); 1905 return; 1906 } 1907 1908 if(status==144){ 1909 var max = getprop("/instrumentation/garmin196/menu_aircraft/selected-max"); 1910 max = max - 10; 1911 if(max<1){ 1912 max = 1; 1913 } 1914 setprop("/instrumentation/garmin196/menu_aircraft/selected-max",max); 1915 display_menu_aircraft(); 1916 return; 1917 } 1918 1919 if(status==145){ 1920 var fuelflow = getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow"); 1921 fuelflow = fuelflow - 1; 1922 if(fuelflow<1){ 1923 fuelflow = 1; 1924 } 1925 setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",fuelflow); 1926 return; 1927 } 1928 } 1929 } 1930} 1931 1932var rockerleft = func (x){ 1933 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 1934 if(serviceable==1){ 1935 if(x==0){ 1936 #traitement des popup 1937 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 1938 if(popup_status==10){ 1939 setprop("/instrumentation/garmin196/popup_status",30); 1940 setprop("/instrumentation/garmin196/dto_display/ligne_select",""); 1941 init_dto_display(); 1942 display_dto_user(); 1943 return; 1944 } 1945 if(popup_status==11){ 1946 var x_char = getprop("/instrumentation/garmin196/dto_display/x_char"); 1947 if(x_char>0){ 1948 setprop("/instrumentation/garmin196/dto_display/x_char",x_char-1); 1949 setprop("/instrumentation/garmin196/dto_display/y_char",searchLastChar(getprop("/instrumentation/garmin196/dto_display/ligne_select"),getprop("/instrumentation/garmin196/dto_display/x_char"))); 1950 display_dto_search(); 1951 } 1952 return; 1953 } 1954 if(popup_status==20){ 1955 setprop("/instrumentation/garmin196/popup_status",10); 1956 setprop("/instrumentation/garmin196/dto_display/x_char",0); 1957 setprop("/instrumentation/garmin196/dto_display/y_char",0); 1958 setprop("/instrumentation/garmin196/dto_display/ligne_select","Press Enter to search"); 1959 init_dto_display(); 1960 return; 1961 } 1962 if(popup_status==30){ 1963 setprop("/instrumentation/garmin196/popup_status",20); 1964 setprop("/instrumentation/garmin196/dto_display/ligne_select",""); 1965 init_dto_display(); 1966 display_dto_recent(); 1967 return; 1968 } 1969 1970 if(popup_status==40){ 1971 setprop("/instrumentation/garmin196/popup_status",80); 1972 display_nrst("wpt"); 1973 return; 1974 } 1975 1976 if(popup_status==50){ 1977 setprop("/instrumentation/garmin196/popup_status",40); 1978 display_nrst("airport"); 1979 return; 1980 } 1981 1982 if(popup_status==60){ 1983 setprop("/instrumentation/garmin196/popup_status",50); 1984 display_nrst("vor"); 1985 return; 1986 } 1987 1988 if(popup_status==70){ 1989 setprop("/instrumentation/garmin196/popup_status",60); 1990 display_nrst("ndb"); 1991 return; 1992 } 1993 1994 if(popup_status==80){ 1995 setprop("/instrumentation/garmin196/popup_status",70); 1996 display_nrst("fix"); 1997 return; 1998 } 1999 2000 var status = getprop("/instrumentation/garmin196/status"); 2001 2002 ##menu routes 2003 #suppression de la ligne 2004 if(status==121){ 2005 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 2006 delete_route(no_ligne); 2007 init_menu_routes_list(); 2008 } 2009 2010 if(status==122){ 2011 var no_ligne_liste = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 2012 var no_ligne_detail = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail"); 2013 delete_route_detail(no_ligne_liste,no_ligne_detail); 2014 update_menu_routes_detail(); 2015 return; 2016 } 2017 2018 if(status==123){ 2019 var x_char = getprop("/instrumentation/garmin196/menu_routes/search/x_char"); 2020 if(x_char>0){ 2021 setprop("/instrumentation/garmin196/menu_routes/search/x_char",x_char-1); 2022 setprop("/instrumentation/garmin196/menu_routes/search/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_routes/search/ligne_select"),getprop("/instrumentation/garmin196/menu_routes/search/x_char"))); 2023 display_route_waypoint_search(); 2024 } 2025 return; 2026 } 2027 2028 ##menu points 2029 #suppression de la ligne 2030 if(status==131){ 2031 var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected"); 2032 delete_point(no_ligne); 2033 init_list_points(); 2034 } 2035 2036 if(status==132){ 2037 var x_char = getprop("/instrumentation/garmin196/menu_points/x_char"); 2038 if(x_char>0){ 2039 setprop("/instrumentation/garmin196/menu_points/x_char",x_char-1); 2040 setprop("/instrumentation/garmin196/menu_points/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_points/name"),getprop("/instrumentation/garmin196/menu_points/x_char"))); 2041 display_menu_points(); 2042 } 2043 return; 2044 } 2045 2046 ##menu aircraft 2047 #suppression de la ligne 2048 if(status==141){ 2049 var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected"); 2050 delete_aircraft(no_ligne); 2051 init_list_aircraft(); 2052 display_list_aircraft(); 2053 } 2054 2055 if(status==142){ 2056 var x_char = getprop("/instrumentation/garmin196/menu_aircraft/x_char"); 2057 if(x_char>0){ 2058 setprop("/instrumentation/garmin196/menu_aircraft/x_char",x_char-1); 2059 setprop("/instrumentation/garmin196/menu_aircraft/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_aircraft/selected-name"),getprop("/instrumentation/garmin196/menu_aircraft/x_char"))); 2060 display_menu_aircraft_name(); 2061 } 2062 return; 2063 } 2064 2065 if(status==175){ 2066 setprop("/instrumentation/garmin196/status",170); 2067 } 2068 2069 } 2070 } 2071} 2072 2073var rockerright = func (x){ 2074 var serviceable = getprop("/instrumentation/garmin196/serviceable"); 2075 if(serviceable==1){ 2076 if(x==0){ 2077 #traitement des popup 2078 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 2079 if(popup_status==10){ 2080 setprop("/instrumentation/garmin196/popup_status",20); 2081 setprop("/instrumentation/garmin196/dto_display/ligne_select",""); 2082 init_dto_display(); 2083 display_dto_recent(); 2084 return; 2085 } 2086 if(popup_status==11){ 2087 var x_char = getprop("/instrumentation/garmin196/dto_display/x_char"); 2088 if(x_char<20){ 2089 setprop("/instrumentation/garmin196/dto_display/x_char",x_char+1); 2090 display_dto_search(); 2091 } 2092 return; 2093 } 2094 if(popup_status==20){ 2095 setprop("/instrumentation/garmin196/popup_status",30); 2096 setprop("/instrumentation/garmin196/dto_display/ligne_select",""); 2097 init_dto_display(); 2098 display_dto_user(); 2099 return; 2100 } 2101 if(popup_status==30){ 2102 setprop("/instrumentation/garmin196/popup_status",10); 2103 setprop("/instrumentation/garmin196/dto_display/ligne_select","Press Enter to search"); 2104 init_dto_display(); 2105 setprop("/instrumentation/garmin196/dto_display/x_char",0); 2106 setprop("/instrumentation/garmin196/dto_display/y_char",0); 2107 return; 2108 } 2109 2110 if(popup_status==40){ 2111 setprop("/instrumentation/garmin196/popup_status",50); 2112 display_nrst("vor"); 2113 return; 2114 } 2115 2116 if(popup_status==50){ 2117 setprop("/instrumentation/garmin196/popup_status",60); 2118 display_nrst("ndb"); 2119 return; 2120 } 2121 2122 if(popup_status==60){ 2123 setprop("/instrumentation/garmin196/popup_status",70); 2124 display_nrst("fix"); 2125 return; 2126 } 2127 2128 if(popup_status==70){ 2129 setprop("/instrumentation/garmin196/popup_status",80); 2130 display_nrst("wpt"); 2131 return; 2132 } 2133 2134 if(popup_status==80){ 2135 setprop("/instrumentation/garmin196/popup_status",40); 2136 display_nrst("airport"); 2137 return; 2138 } 2139 2140 var status = getprop("/instrumentation/garmin196/status"); 2141 2142 ##menu routes 2143 if(status==121){ 2144 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 2145 if(getprop("/instrumentation/garmin196/routes/route["~no_ligne~"]/name")!=nil){ 2146 load_flight_plan(no_ligne); 2147 affiche_fpl_loaded(); 2148 } 2149 return; 2150 } 2151 2152 if(status==122){ 2153 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 2154 var no_ligne_detail = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail"); 2155 if(getprop("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/wpt["~no_ligne_detail~"]/id")!=nil){ 2156 jump_to_waypoint(no_ligne_detail); 2157 affiche_waypoint_jump(); 2158 } 2159 return; 2160 } 2161 2162 if(status==123){ 2163 var x_char = getprop("/instrumentation/garmin196/menu_routes/search/x_char"); 2164 if(x_char<20){ 2165 setprop("/instrumentation/garmin196/menu_routes/search/x_char",x_char+1); 2166 display_route_waypoint_search(); 2167 } 2168 return; 2169 } 2170 2171 ##menu points 2172 if(status==132){ 2173 var x_char = getprop("/instrumentation/garmin196/menu_points/x_char"); 2174 if(x_char<20){ 2175 setprop("/instrumentation/garmin196/menu_points/x_char",x_char+1); 2176 display_menu_points(); 2177 } 2178 return; 2179 } 2180 2181 ##menu aircraft 2182 if(status==142){ 2183 var x_char = getprop("/instrumentation/garmin196/menu_aircraft/x_char"); 2184 if(x_char<20){ 2185 setprop("/instrumentation/garmin196/menu_aircraft/x_char",x_char+1); 2186 display_menu_aircraft_name(); 2187 } 2188 return; 2189 } 2190 2191 if(status==170){ 2192 setprop("/instrumentation/garmin196/status",175); 2193 } 2194 2195 } 2196 } 2197} 2198 2199##recalc speed to display 2200var change_speed_display = func{ 2201 var max_speed = getprop("/instrumentation/garmin196/max-speed"); 2202 var speed = getprop("/instrumentation/gps/indicated-ground-speed-kt"); 2203 setprop("/instrumentation/garmin196/speed-display",315*speed/max_speed); 2204} 2205 2206##calcul du turn rate 2207var calcul_turn_rate = func(dt){ 2208 if(last_bearing==-1){ 2209 last_bearing = getprop("/instrumentation/gps/magnetic-bug-error-deg"); 2210 } 2211 bearing = getprop("/instrumentation/gps/magnetic-bug-error-deg"); 2212 2213 var turn_rate = abs(bearing - last_bearing); 2214 if(turn_rate>180){ 2215 turn_rate = 360 - turn_rate; 2216 } 2217 var sgn = 1; 2218 if(bearing - last_bearing<0){ 2219 sgn = -1; 2220 } 2221 turn_rate = turn_rate/dt; 2222 if(turn_rate<10){##pour enlever les valeurs aberentes 2223 props.globals.getNode("/instrumentation/garmin196/turn-rate",1).setDoubleValue(sgn*turn_rate); 2224 } 2225 last_bearing = bearing; 2226} 2227 2228var change_wpt_id = func{ 2229 if(getprop("/instrumentation/gps/mode")!=nil and getprop("/autopilot/route-manager/wp[0]/id")!=""){ 2230 props.global.getNode("/instrumentation/garmin196/panel-wpt-id").alias("/autopilot/route-manager/wp[0]/id"); 2231 }else{ 2232 setprop("/instrumentation/garmin196/panel-wpt-id",getprop("/instrumentation/garmin196/panel-wpt-dto-id")); 2233 } 2234} 2235setlistener("/instrumentation/gps/mode",change_wpt_id); 2236 2237var change_position_wpt_bug = func{ 2238 var wpt_bearing = getprop("/instrumentation/gps/wp/wp[1]/bearing-mag-deg"); 2239 var aircraft_bearing = getprop("/instrumentation/gps/indicated-track-magnetic-deg"); 2240 2241 var diff = wpt_bearing - aircraft_bearing; 2242 setprop("/instrumentation/garmin196/position-wpt-bearing",diff); 2243 setprop("/instrumentation/garmin196/panel-wpt-bearing",diff); 2244 2245 var nb_wpt = getprop("/autopilot/route-manager/route/num"); 2246 var no_wpt = getprop("/autopilot/route-manager/current-wp"); 2247 var panel_course = 0; 2248 if(no_wpt>0 and no_wpt<(nb_wpt-1)){ 2249 panel_course = getprop("/autopilot/route-manager/route/wp["~(no_wpt-1)~"]/leg-bearing-true-deg"); 2250 }else{ 2251 panel_course = getprop("/instrumentation/gps/wp/wp[1]/bearing-mag-deg"); 2252 } 2253 panel_course = panel_course - aircraft_bearing; 2254 var panel_deflexion = diff - panel_course; 2255 2256 if(math.cos(diff*math.pi/180)>0){ 2257 setprop("/instrumentation/garmin196/panel-neddle-to-flag",1); 2258 }else{ 2259 setprop("/instrumentation/garmin196/panel-neddle-to-flag",0); 2260 } 2261 if(panel_deflexion>10){ 2262 panel_deflexion = 10; 2263 } 2264 if(panel_deflexion<-10){ 2265 panel_deflexion = -10; 2266 } 2267 2268 setprop("/instrumentation/garmin196/panel-neddle-course",panel_course); 2269 setprop("/instrumentation/garmin196/panel-neddle-deflexion",panel_deflexion); 2270 2271 ##vnav 2272 var altitude_id = getprop("/instrumentation/garmin196/vnav/altitude-m"); 2273 var latitude_id = getprop("/instrumentation/garmin196/vnav/latitude"); 2274 var longitude_id = getprop("/instrumentation/garmin196/vnav/longitude"); 2275 if(altitude_id!=nil and latitude_id!=nil and longitude_id!=nil and latitude_id!=-9999 and longitude_id!=-9999 and getprop("/instrumentation/garmin196/params/vnav-indicator")==1){ 2276 var altitude_aircraft = getprop("/instrumentation/gps/indicated-altitude-ft") * 0.3048; 2277 var latitude_aircraft = getprop("/instrumentation/gps/indicated-latitude-deg"); 2278 var longitude_aircraft = getprop("/instrumentation/gps/indicated-longitude-deg"); 2279 2280 var coord_id = geo.Coord.new().set_latlon(latitude_id,longitude_id); 2281 var coord_aircraft = geo.Coord.new().set_latlon(latitude_aircraft,longitude_aircraft); 2282 var distance = coord_aircraft.distance_to(coord_id);## en metres 2283 var diff_altitude = altitude_aircraft - altitude_id; 2284 var angle = math.atan2(diff_altitude,distance)*180/math.pi; 2285 #setprop("/instrumentation/garmin196/vnav/angle",angle); 2286 var deviation = angle - 3;#pente ideale = 3 degres 2287 if(deviation>10){ 2288 deviation = 10; 2289 } 2290 if(deviation<-10){ 2291 deviation = -10; 2292 } 2293 setprop("/instrumentation/garmin196/vnav/deviation",deviation); 2294 }else{ 2295 setprop("/instrumentation/garmin196/vnav/deviation",0); 2296 } 2297} 2298 2299var update_map = func{ 2300 ##protection, une seule recherche gps a la fois, la popup devient prioritaire 2301 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 2302 if(popup_status<10 or popup_status>99){ 2303 var max_plots = 25; 2304 var offset_mul = 0.034; 2305 var symbol_map_range = getprop("/instrumentation/garmin196/map-range") * 8; 2306 var plots = []; 2307 var type_symbol = [ "airport" , "vor" , "ndb" , "fix" , "twn" , "wpt"]; 2308 2309 for(var i=0;i<size(type_symbol);i=i+1){ 2310 if(getprop("/instrumentation/garmin196/symbols/params/"~type_symbol[i])==1){ 2311 if(type_symbol[i]=="twn" or type_symbol[i]=="wpt"){ 2312 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(max_plots*8 + 1); 2313 }else{ 2314 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(max_plots*4 + 1); 2315 } 2316 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 2317 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 2318 var type = type_symbol[i]; 2319 if(type == "twn"){ 2320 type = "wpt"; 2321 } 2322 setprop("/instrumentation/gps/scratch/type", type); 2323 setprop("/instrumentation/gps/command", "nearest"); 2324 2325 while (getprop('/instrumentation/gps/scratch/has-next')) { 2326 var id = getprop('/instrumentation/gps/scratch/ident'); 2327 var range = getprop('/instrumentation/gps/scratch/distance-nm') / symbol_map_range; 2328 var bearing = 360 - getprop("/instrumentation/gps/indicated-track-magnetic-deg") + getprop('/instrumentation/gps/scratch/mag-bearing-deg'); 2329 if(bearing<0){ 2330 bearing = bearing + 360; 2331 } 2332 2333 if(bearing>360){ 2334 bearing = bearing - 360; 2335 } 2336 2337 if(i==1){##vor 2338 id = id ~ " " ~ sprintf("%2.2f",getprop('/instrumentation/gps/scratch/frequency-mhz')); 2339 } 2340 2341 if(i==2){##ndb 2342 id = id ~ " " ~ sprintf("%2.1f",getprop('/instrumentation/gps/scratch/frequency-khz')); 2343 } 2344 2345 var plot = { id: id,bearing: bearing,type: i,range: range}; 2346 if(range<=1){ 2347 if(i<4){ 2348 append(plots,plot); 2349 }elsif(i==4 and substr(id,size(id)-6)=="WPTTWN"){ 2350 append(plots,plot); 2351 }elsif(i==5 and substr(id,size(id)-6)=="WPTUSR"){ 2352 append(plots,plot); 2353 } 2354 }else{ 2355 break; 2356 } 2357 setprop("/instrumentation/gps/command", "next"); 2358 } 2359 } 2360 } 2361 2362 var plots_sorted = sort (plots, func (a,b) a.range - b.range); 2363 2364 ##suppression des points les plus proches si il y en a de trop 2365 var filtrage = getprop("/instrumentation/garmin196/params/filtrage"); 2366 if(filtrage==1){ 2367 var nb_points = 0; 2368 for(var i=0;i<size(plots_sorted);i=i+1){ 2369 if(plots_sorted[i].range<0.25){#un quart d'ecran 2370 nb_points = nb_points + 1; 2371 }else{ 2372 break; 2373 } 2374 } 2375 if(nb_points>5){ 2376 plots_sorted = subvec(plots_sorted,nb_points); 2377 } 2378 } 2379 2380 var nb_plots = max_plots; 2381 if(nb_plots>size(plots_sorted)){ 2382 nb_plots = size(plots_sorted); 2383 } 2384 for(var i=0;i<nb_plots;i=i+1){ 2385 if(plots_sorted[i].type==4 or plots_sorted[i].type==5){##town or waypoint 2386 var type_wpt = substr(plots_sorted[i].id,size(plots_sorted[i].id)-6); 2387 if(type_wpt=="WPTTWN"){#cities 2388 plots_sorted[i].id = substr(plots_sorted[i].id,0,size(plots_sorted[i].id)-8); 2389 }elsif(type_wpt=="WPTUSR"){#wpt user 2390 plots_sorted[i].id = substr(plots_sorted[i].id,0,size(plots_sorted[i].id)-6); 2391 plots_sorted[i].type = 5; 2392 } 2393 } 2394 2395 props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/id",1).setValue(plots_sorted[i].id); 2396 props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/type",1).setValue(plots_sorted[i].type); 2397 2398 ##calcul des coordonnees 2399 var x_wp = math.cos(plots_sorted[i].bearing*math.pi/180) * plots_sorted[i].range * offset_mul; 2400 var y_wp = math.sin(plots_sorted[i].bearing*math.pi/180) * plots_sorted[i].range * offset_mul; 2401 props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/x",1).setDoubleValue(x_wp); 2402 props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/y",1).setDoubleValue(y_wp); 2403 2404 if(x_wp<0.026 and x_wp>-0.026 and y_wp<0.0323 and y_wp>-0.0323){##si on est dans l'ecran, on affiche 2405 props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/visible",1).setBoolValue(1); 2406 }else{ 2407 props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/visible",1).setBoolValue(0); 2408 } 2409 } 2410 2411 for(var i=nb_plots;i<max_plots;i=i+1){ 2412 props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/visible",1).setIntValue(0); 2413 } 2414 2415 ##wpt path calculations 2416 var offset_range_wp_direct = 0.19; 2417 var range_wp_direct = offset_range_wp_direct * getprop("/instrumentation/gps/wp/wp[1]/distance-nm") / symbol_map_range; 2418 2419 var bearing_wp_direct = getprop("/instrumentation/garmin196/panel-wpt-bearing"); 2420 var x_range_wp_direct = math.abs(math.cos(bearing_wp_direct*math.pi/180) * range_wp_direct); #max 0.15 2421 if(x_range_wp_direct>0.15){ 2422 range_wp_direct = math.abs(0.15 / math.cos(bearing_wp_direct*math.pi/180)); 2423 } 2424 var y_range_wp_direct = math.abs(math.sin(bearing_wp_direct*math.pi/180) * range_wp_direct); #max 0.18 2425 if(y_range_wp_direct>0.18){ 2426 range_wp_direct = math.abs(0.18 / math.sin(bearing_wp_direct*math.pi/180)); 2427 } 2428 setprop("/instrumentation/garmin196/symbols/paths/range_wp_direct/range",range_wp_direct); 2429 2430 if(getprop("/instrumentation/garmin196/panel-wpt-id")!=nil and getprop("/instrumentation/garmin196/panel-wpt-id")!="------"){ 2431 setprop("/instrumentation/garmin196/symbols/paths/range_wp_direct/visible",1); 2432 }else{ 2433 setprop("/instrumentation/garmin196/symbols/paths/range_wp_direct/visible",0); 2434 } 2435 2436 ##flight plan calculation 2437 var nb_path = getprop("/autopilot/route-manager/route/num"); 2438 if(nb_path>9){ 2439 nb_path = 9; 2440 } 2441 2442 var aircraft_bearing = getprop("/instrumentation/gps/indicated-track-magnetic-deg"); 2443 for(var i=0;i<(nb_path-1);i=i+1){ 2444 var id = getprop("/autopilot/route-manager/route/wp["~i~"]/id"); 2445 2446 setprop("/instrumentation/gps/scratch/max-results",1); 2447 setprop("/instrumentation/gps/scratch/longitude-deg",-9999); 2448 setprop("/instrumentation/gps/scratch/latitude-deg",-9999); 2449 setprop("/instrumentation/gps/scratch/type", ""); 2450 setprop("/instrumentation/gps/scratch/query", id); 2451 setprop("/instrumentation/gps/command", "search"); 2452 2453 if(getprop("/instrumentation/gps/scratch/valid")==0 or getprop("/instrumentation/gps/scratch/ident")!=id){ 2454 setprop("/instrumentation/gps/scratch/type", "fix"); 2455 setprop("/instrumentation/gps/scratch/query", id); 2456 setprop("/instrumentation/gps/command", "search"); 2457 } 2458 2459 var distance_to_wp = getprop("/instrumentation/gps/scratch/distance-nm") / symbol_map_range; 2460 var bearing_to_wp = 360 - getprop("/instrumentation/gps/indicated-track-magnetic-deg") + getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 2461 2462 var x_wp_fpl = math.cos(bearing_to_wp*math.pi/180) * distance_to_wp * offset_mul; 2463 var y_wp_fpl = math.sin(bearing_to_wp*math.pi/180) * distance_to_wp * offset_mul; 2464 2465 setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/x",x_wp_fpl); 2466 setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/y",y_wp_fpl); 2467 2468 var wp_bearing = 360 - getprop("/instrumentation/gps/indicated-track-true-deg") + getprop("/autopilot/route-manager/route/wp["~i~"]/leg-bearing-true-deg"); 2469 var wp_distance = offset_range_wp_direct * getprop("/autopilot/route-manager/route/wp["~i~"]/leg-distance-nm") / symbol_map_range; 2470 2471 var x_range_wp =(math.cos(wp_bearing*math.pi/180) * wp_distance) + ((x_wp_fpl/0.026)*0.15); #max 0.15 2472 if(math.abs(x_range_wp)>0.15){ 2473 wp_distance = math.abs(((0.15*math.sgn(math.cos(wp_bearing*math.pi/180))) - ((x_wp_fpl/0.026)*0.15))/math.cos(wp_bearing*math.pi/180)); 2474 } 2475 2476 var y_range_wp =(math.sin(wp_bearing*math.pi/180) * wp_distance) + ((y_wp_fpl/0.0323)*0.18); #max 0.18 2477 if(math.abs(y_range_wp)>0.18){ 2478 wp_distance = math.abs(((0.18*math.sgn(math.sin(wp_bearing*math.pi/180))) - ((y_wp_fpl/0.0323)*0.18))/math.sin(wp_bearing*math.pi/180)); 2479 } 2480 2481 setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/range",wp_distance); 2482 setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/bearing",wp_bearing); 2483 2484 if(x_wp_fpl<0.026 and x_wp_fpl>-0.026 and y_wp_fpl<0.0323 and y_wp_fpl>-0.0323){##si on est dans l'ecran, on affiche 2485 setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/visible",1); 2486 }else{ 2487 setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/visible",0); 2488 } 2489 } 2490 for(var i=(nb_path-1);i<9;i=i+1){ 2491 setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/visible",0); 2492 } 2493 2494 } 2495 if(getprop("/instrumentation/garmin196/serviceable")==1 and getprop("/instrumentation/garmin196/status")==10){ 2496 settimer(update_map,1); 2497 } 2498} 2499 2500var display_dto_recent = func{ 2501 var waypoints = props.globals.getNode("/instrumentation/garmin196/waypoints/recent/",1); 2502 var i = 0; 2503 foreach (var e; waypoints.getChildren("wpt")) { 2504 var id = e.getChild("id").getValue(); 2505 var type = e.getChild("type").getValue(); 2506 var ligne = id; 2507 if(type=="wpt"){ 2508 var type_wpt = substr(id,size(id)-6); 2509 if(type_wpt=="WPTTWN"){#cities 2510 ligne = substr(id,0,size(id)-8); 2511 ligne = substr(ligne,0,15); 2512 }elsif(type_wpt=="WPTUSR"){#wpt user 2513 ligne = substr(id,0,size(id)-6); 2514 } 2515 } 2516 2517 ligne = ligne ~ " " ~ type; 2518 var ligne_spaces = " "; 2519 ligne_spaces = substr(ligne_spaces,0,15-size(ligne)); 2520 2521 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(1); 2522 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 2523 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 2524 setprop("/instrumentation/gps/scratch/type", type); 2525 setprop("/instrumentation/gps/scratch/query", id); 2526 setprop("/instrumentation/gps/command", "search"); 2527 2528 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 2529 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 2530 2531 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 2532 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 2533 ligne = ligne ~sprintf(" %3.1fnm",range); 2534 }else{ 2535 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 2536 } 2537 2538 if(i==0){ 2539 setprop("/instrumentation/garmin196/dto_display/ligne_select",ligne); 2540 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(1); 2541 }else{ 2542 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(0); 2543 } 2544 setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/texte",ligne); 2545 setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/id",id); 2546 setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/type",type); 2547 i=i+1; 2548 } 2549 for(var j=i;j<5;j=j+1){ 2550 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/texte",""); 2551 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~j~"]/selected",1).setBoolValue(0); 2552 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/id",""); 2553 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/type",""); 2554 } 2555 setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",0); 2556 setprop("/instrumentation/garmin196/dto_display/max_ligne_selected",i-1); 2557 if(i==0){ 2558 setprop("/instrumentation/garmin196/dto_display/ligne_select",""); 2559 } 2560} 2561 2562var display_dto_user = func{ 2563 var waypoints = props.globals.getNode("/instrumentation/garmin196/waypoints/user/",1); 2564 var i = 0; 2565 foreach (var e; waypoints.getChildren("wpt")) { 2566 var id = e.getChild("id").getValue()~"WPTUSR"; 2567 var type = "wpt"; 2568 var ligne = substr(id,0,size(id)-6); 2569 ligne = substr(ligne,0,14); 2570 2571 var ligne_spaces = " "; 2572 ligne_spaces = substr(ligne_spaces,0,14-size(ligne)); 2573 2574 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(1); 2575 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 2576 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 2577 setprop("/instrumentation/gps/scratch/type", type); 2578 setprop("/instrumentation/gps/scratch/query", id); 2579 setprop("/instrumentation/gps/command", "search"); 2580 2581 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 2582 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 2583 2584 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 2585 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 2586 ligne = ligne ~sprintf(" %3.1fnm",range); 2587 }else{ 2588 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 2589 } 2590 2591 if(i==0){ 2592 setprop("/instrumentation/garmin196/dto_display/ligne_select",ligne); 2593 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(1); 2594 }else{ 2595 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(0); 2596 } 2597 setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/texte",ligne); 2598 setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/id",id); 2599 setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/type",type); 2600 i=i+1; 2601 } 2602 for(var j=i;j<5;j=j+1){ 2603 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/texte",""); 2604 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~j~"]/selected",1).setBoolValue(0); 2605 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/id",""); 2606 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/type",""); 2607 } 2608 setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",0); 2609 setprop("/instrumentation/garmin196/dto_display/max_ligne_selected",i-1); 2610 if(i==0){ 2611 setprop("/instrumentation/garmin196/dto_display/ligne_select",""); 2612 } 2613} 2614 2615var affectation_waypoint = func(id){ 2616 setprop("/autopilot/route-manager/active",0); 2617 setprop("/autopilot/route-manager/input","@CLEAR"); 2618 setprop("/autopilot/route-manager/input","@POP"); 2619 setprop("/autopilot/route-manager/input","@insert0:"~id); 2620 ##to correct the index bug appeared in 2.8.0.5 2621 setprop("/autopilot/route-manager/input","@insert0:"~id); 2622 setprop("/autopilot/route-manager/input","@JUMP0"); 2623 setprop("/autopilot/route-manager/input","@ACTIVATE"); 2624} 2625 2626var display_dto_search = func{ 2627 var ligne_selected = getprop("/instrumentation/garmin196/dto_display/ligne_select"); 2628 var x_char = props.globals.getNode("/instrumentation/garmin196/dto_display/x_char").getValue(); 2629 ligne_selected = substr(ligne_selected,0,x_char); 2630 ligne_selected = ligne_selected ~ tab_chiffres_lettres[getprop("/instrumentation/garmin196/dto_display/y_char")]; 2631 setprop("/instrumentation/garmin196/dto_display/ligne_select",ligne_selected); 2632 2633 var plots = []; 2634 ##recherche gps globale 2635 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5); 2636 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 2637 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 2638 props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0); 2639 props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected); 2640 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue(""); 2641 2642 setprop("/instrumentation/gps/command", "search"); 2643 var i=0; 2644 var flag_continue = getprop("/instrumentation/gps/scratch/valid"); 2645 while (flag_continue and i<5) { 2646 var id = getprop("/instrumentation/gps/scratch/ident"); 2647 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 2648 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 2649 var type = getprop("/instrumentation/gps/scratch/type"); 2650 2651 var ligne = id; 2652 if(type=="waypoint"){ 2653 type = "wpt"; 2654 var type_wpt = substr(id,size(id)-6); 2655 if(type_wpt=="WPTTWN"){#cities 2656 ligne = substr(id,0,size(id)-8); 2657 }elsif(type_wpt=="WPTUSR"){#wpt user 2658 ligne = substr(id,0,size(id)-6); 2659 } 2660 } 2661 2662 ligne = ligne ~ " " ~ type; 2663 var ligne_spaces = " "; 2664 ligne_spaces = substr(ligne_spaces,0,16-size(ligne)); 2665 2666 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 2667 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 2668 ligne = ligne ~sprintf(" %3.1fnm",range); 2669 }else{ 2670 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 2671 } 2672 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 2673 2674 2675 var plot = { id: id,texte: ligne,type: type}; 2676 append(plots,plot); 2677 2678 i=i+1; 2679 setprop("/instrumentation/gps/command", "next"); 2680 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 2681 } 2682 2683 ##recherche gps fix 2684 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5); 2685 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 2686 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 2687 props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0); 2688 props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected); 2689 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("fix"); 2690 2691 setprop("/instrumentation/gps/command", "search"); 2692 i=0; 2693 flag_continue = getprop("/instrumentation/gps/scratch/valid"); 2694 while (flag_continue and i<5) { 2695 var id = getprop("/instrumentation/gps/scratch/ident"); 2696 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 2697 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 2698 var type = getprop("/instrumentation/gps/scratch/type"); 2699 2700 var ligne = id ~ " " ~ type; 2701 var ligne_spaces = " "; 2702 ligne_spaces = substr(ligne_spaces,0,16-size(ligne)); 2703 2704 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 2705 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 2706 ligne = ligne ~sprintf(" %3.1fnm",range); 2707 }else{ 2708 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 2709 } 2710 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 2711 2712 2713 var plot = { id: id,texte: ligne,type: type}; 2714 append(plots,plot); 2715 2716 i=i+1; 2717 setprop("/instrumentation/gps/command", "next"); 2718 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 2719 } 2720 2721 ##recherche gps vor 2722 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5); 2723 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 2724 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 2725 props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0); 2726 props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected); 2727 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("vor"); 2728 2729 setprop("/instrumentation/gps/command", "search"); 2730 i=0; 2731 flag_continue = getprop("/instrumentation/gps/scratch/valid"); 2732 while (flag_continue and i<5) { 2733 var id = getprop("/instrumentation/gps/scratch/ident"); 2734 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 2735 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 2736 var type = getprop("/instrumentation/gps/scratch/type"); 2737 2738 var ligne = id ~ " vor"; 2739 var ligne_spaces = " "; 2740 ligne_spaces = substr(ligne_spaces,0,16-size(ligne)); 2741 2742 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 2743 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 2744 ligne = ligne ~sprintf(" %3.1fnm",range); 2745 }else{ 2746 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 2747 } 2748 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 2749 2750 2751 var plot = { id: id,texte: ligne,type: type}; 2752 append(plots,plot); 2753 2754 i=i+1; 2755 setprop("/instrumentation/gps/command", "next"); 2756 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 2757 } 2758 2759 ##recherche gps ndb 2760 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5); 2761 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 2762 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 2763 props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0); 2764 props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected); 2765 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("ndb"); 2766 2767 setprop("/instrumentation/gps/command", "search"); 2768 i=0; 2769 flag_continue = getprop("/instrumentation/gps/scratch/valid"); 2770 while (flag_continue and i<5) { 2771 var id = getprop("/instrumentation/gps/scratch/ident"); 2772 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 2773 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 2774 var type = getprop("/instrumentation/gps/scratch/type"); 2775 2776 var ligne = id ~ " ndb"; 2777 var ligne_spaces = " "; 2778 ligne_spaces = substr(ligne_spaces,0,16-size(ligne)); 2779 2780 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 2781 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 2782 ligne = ligne ~sprintf(" %3.1fnm",range); 2783 }else{ 2784 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 2785 } 2786 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 2787 2788 2789 var plot = { id: id,texte: ligne,type: type}; 2790 append(plots,plot); 2791 2792 i=i+1; 2793 setprop("/instrumentation/gps/command", "next"); 2794 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 2795 } 2796 2797 var plots_sorted = sort (plots, func (a,b) cmp (a.id, b.id)); 2798 var nb_plots = size(plots_sorted); 2799 if(nb_plots>5){ 2800 nb_plots = 5; 2801 } 2802 for(var j=0;j<nb_plots;j=j+1){ 2803 if(i==0 and popup_status!=10 and popup_status!=11){ 2804 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(1); 2805 }else{ 2806 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(0); 2807 } 2808 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/texte",plots_sorted[j].texte); 2809 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/id",plots_sorted[j].id); 2810 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/type",plots_sorted[j].type); 2811 } 2812 2813 for(var j=nb_plots;j<5;j=j+1){ 2814 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/texte",""); 2815 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~j~"]/selected",1).setBoolValue(0); 2816 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/id",""); 2817 setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/type",""); 2818 } 2819 setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",0); 2820 setprop("/instrumentation/garmin196/dto_display/max_ligne_selected",nb_plots-1); 2821} 2822 2823var searchLastChar = func(chaine, char){ 2824 var result = -1; 2825 var char_a_tester = substr(chaine,char,1); 2826 for(var i=0;i<size(tab_chiffres_lettres);i=i+1){ 2827 if(tab_chiffres_lettres[i]==char_a_tester){ 2828 result = i; 2829 break; 2830 } 2831 } 2832 return result; 2833} 2834 2835var init_dto_display = func{ 2836 for(var i=0;i<5;i=i+1){ 2837 setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/texte",""); 2838 props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(0); 2839 setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/id",""); 2840 setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/type",""); 2841 } 2842} 2843 2844var init_nrst_display = func{ 2845 for(var i=0;i<5;i=i+1){ 2846 setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/texte",""); 2847 props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(0); 2848 setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/id",""); 2849 setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/type",""); 2850 } 2851} 2852 2853var display_nrst = func(type){ 2854 if(type=="wpt"){ 2855 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(25); 2856 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 2857 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 2858 #props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(1); 2859 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue(type); 2860 setprop("/instrumentation/gps/command", "nearest"); 2861 var i=0; 2862 var flag_continue = getprop("/instrumentation/gps/scratch/valid"); 2863 while (flag_continue and i<5) { 2864 var id = getprop("/instrumentation/gps/scratch/ident"); 2865 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 2866 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 2867 2868 var type_wpt = substr(id,size(id)-6); 2869 if(type_wpt=="WPTTWN"){ 2870 var ligne = substr(id,0,size(id)-8); 2871 }elsif(type_wpt=="WPTUSR"){ 2872 var ligne = substr(id,0,size(id)-6); 2873 } 2874 ligne = substr(ligne,0,18); 2875 var ligne_spaces = " "; 2876 ligne_spaces = substr(ligne_spaces,0,18-size(ligne)); 2877 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 2878 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 2879 ligne = ligne ~sprintf(" %3.1fnm",range); 2880 }else{ 2881 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 2882 } 2883 2884 if(i==0){ 2885 setprop("/instrumentation/garmin196/nrst_display/ligne_select",ligne); 2886 props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(1); 2887 }else{ 2888 props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(0); 2889 } 2890 setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/texte",ligne); 2891 setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/id",id); 2892 setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/type",type); 2893 i=i+1; 2894 2895 setprop("/instrumentation/gps/command", "next"); 2896 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 2897 } 2898 setprop("/instrumentation/garmin196/nrst_display/no_ligne_selected",0); 2899 setprop("/instrumentation/garmin196/nrst_display/max_ligne_selected",(i-1)); 2900 2901 }else{ 2902 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(6); 2903 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 2904 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 2905 #props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(1); 2906 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue(type); 2907 props.globals.getNode("/instrumentation/gps/scratch").removeChildren("runways"); 2908 setprop("/instrumentation/gps/command", "nearest"); 2909 var i=0; 2910 var flag_continue = getprop("/instrumentation/gps/scratch/valid"); 2911 while (flag_continue and i<5) { 2912 var id = getprop("/instrumentation/gps/scratch/ident"); 2913 var ligne = id; 2914 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 2915 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 2916 var ligne_spaces = " "; 2917 ligne_spaces = substr(ligne_spaces,0,6-size(ligne)); 2918 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 2919 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 2920 ligne = ligne ~sprintf(" %3.1fnm",range); 2921 }else{ 2922 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 2923 } 2924 if(type=="airport"){ 2925 var runways = props.globals.getNode("/instrumentation/gps/scratch",1); 2926 var max_length = 0; 2927 foreach (var e; runways.getChildren("runways")) { 2928 var runway_length = e.getChild("length-ft").getValue(); 2929 if(runway_length>max_length){ 2930 max_length = runway_length; 2931 } 2932 } 2933 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 2934 ligne = ligne ~ " " ~ sprintf("%4.0fft",max_length); 2935 }else{ 2936 ligne = ligne ~ " " ~ sprintf("%4.0fm",max_length*0.3048); 2937 } 2938 2939 var radio = getprop("/instrumentation/garmin196/airports_atis/id_"~id); 2940 if(radio!=nil){ 2941 ligne = ligne ~ sprintf(" %3.2f",radio); 2942 } 2943 }elsif(type=="vor"){ 2944 ligne = ligne ~ " " ~ sprintf("%2.2f",getprop('/instrumentation/gps/scratch/frequency-mhz')); 2945 }elsif(type=="ndb"){ 2946 ligne = ligne ~ " " ~ sprintf("%2.1f",getprop('/instrumentation/gps/scratch/frequency-khz')); 2947 } 2948 if(i==0){ 2949 setprop("/instrumentation/garmin196/nrst_display/ligne_select",ligne); 2950 props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(1); 2951 }else{ 2952 props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(0); 2953 } 2954 setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/texte",ligne); 2955 setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/id",id); 2956 setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/type",type); 2957 i=i+1; 2958 2959 props.globals.getNode("/instrumentation/gps/scratch").removeChildren("runways"); 2960 setprop("/instrumentation/gps/command", "next"); 2961 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 2962 } 2963 setprop("/instrumentation/garmin196/nrst_display/no_ligne_selected",0); 2964 setprop("/instrumentation/garmin196/nrst_display/max_ligne_selected",(i-1)); 2965 } 2966} 2967 2968var load_cities = func{ 2969 print("Garmin 196 loading cities"); 2970 fgcommand("loadxml", props.Node.new({ filename: getprop("/sim/fg-root")~"/Aircraft/Instruments-3d/garmin196/cities.xml", targetnode: "/instrumentation/garmin196/cities" })); 2971 var waypoints = props.globals.getNode("/instrumentation/garmin196/cities/waypoints",1); 2972 foreach (var e; waypoints.getChildren("waypoint")) { 2973 var id = e.getChild("id").getValue(); 2974 var latitude = e.getChild("latitude").getValue(); 2975 var longitude = e.getChild("longitude").getValue(); 2976 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(longitude); 2977 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(latitude); 2978 props.globals.getNode("/instrumentation/gps/scratch/ident",1).setValue(id); 2979 setprop("/instrumentation/gps/command","define-user-wpt"); 2980 } 2981 props.globals.getNode("/instrumentation/garmin196").removeChildren("cities"); 2982 print("Garmin 196 loading cities done"); 2983} 2984 2985var update_wp_id_display=func{ 2986 var id=getprop("/autopilot/route-manager/wp[0]/id"); 2987 if(size(id)>6){ 2988 var type_wpt=substr(id,size(id)-6); 2989 if(type_wpt=="WPTTWN"){#cities 2990 id=substr(id,0,size(id)-8); 2991 id=substr(id,0,13); 2992 }elsif(type_wpt=="WPTUSR"){#wpt user 2993 id=substr(id,0,size(id)-6); 2994 } 2995 } 2996 setprop("/instrumentation/garmin196/panel-wpt-id",id); 2997 setprop("/instrumentation/garmin196/position-wpt-id",id); 2998 2999 ##stockage des coordonnees pour la vnav 3000 setprop("/instrumentation/gps/scratch/max-results",1); 3001 setprop("/instrumentation/gps/scratch/longitude-deg",-9999); 3002 setprop("/instrumentation/gps/scratch/latitude-deg",-9999); 3003 setprop("/instrumentation/gps/scratch/type", ""); 3004 setprop("/instrumentation/gps/scratch/query", id); 3005 setprop("/instrumentation/gps/command", "search"); 3006 3007 if(getprop("/instrumentation/gps/scratch/type")=="airport"){ 3008 ##stockage des coordonnees du waypoint pour vnav 3009 props.globals.getNode("/instrumentation/garmin196/vnav/longitude",1).setDoubleValue(getprop("/instrumentation/gps/scratch/longitude-deg")); 3010 props.globals.getNode("/instrumentation/garmin196/vnav/latitude",1).setDoubleValue(getprop("/instrumentation/gps/scratch/latitude-deg")); 3011 props.globals.getNode("/instrumentation/garmin196/vnav/altitude-m",1).setDoubleValue(getprop("/instrumentation/gps/scratch/altitude-ft") * 0.3048); 3012 props.globals.getNode("/instrumentation/garmin196/vnav/visible",1).setBoolValue(1); 3013 }else{ 3014 props.globals.getNode("/instrumentation/garmin196/vnav/visible",1).setBoolValue(0); 3015 } 3016 3017} 3018setlistener("/autopilot/route-manager/wp[0]/id",update_wp_id_display); 3019 3020var init_list_aircraft = func{ 3021 var aircrafts = props.globals.getNode("/instrumentation/garmin196/params/aircrafts",1); 3022 var i = 0; 3023 foreach (var e; aircrafts.getChildren("aircraft")) { 3024 setprop("/instrumentation/garmin196/menu_aircraft/aircraft["~i~"]/texte",e.getChild("name").getValue()); 3025 i=i+1; 3026 } 3027 3028 for(var j=i;j<6;j=j+1){ 3029 setprop("/instrumentation/garmin196/menu_aircraft/aircraft["~j~"]/texte",""); 3030 } 3031 3032 if(i<6){ 3033 setprop("/instrumentation/garmin196/menu_aircraft/aircraft["~i~"]/texte","ENTER TO ADD AIRCRAFT"); 3034 }else{ 3035 i=5; 3036 } 3037 setprop("/instrumentation/garmin196/menu_aircraft/max_no_ligne",i); 3038} 3039 3040var init_new_aircraft = func(no_aircraft){ 3041 props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/name", 1).setValue("AIRCRAFT"); 3042 props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/max-speed", 1).setIntValue(150); 3043 props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/cruise-speed", 1).setIntValue(120); 3044 props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/fuel-flow", 1).setIntValue(5); 3045} 3046 3047var delete_aircraft = func(no_aircraft){ 3048 for(var i=no_aircraft+1;i<6;i=i+1){ 3049 if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name")!=nil){ 3050 setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~(i-1)~"]/name",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name")); 3051 setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~(i-1)~"]/max-speed",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/max-speed")); 3052 setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~(i-1)~"]/cruise-speed",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/cruise-speed")); 3053 setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~(i-1)~"]/fuel-flow",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/fuel-flow")); 3054 } 3055 } 3056 var nb_aircraft = size(props.globals.getNode("/instrumentation/garmin196/params/aircrafts",1).getChildren("aircraft")); 3057 if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/name")!=nil){ 3058 props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~(nb_aircraft-1)~"]").remove(); 3059 } 3060 3061 setprop("/instrumentation/garmin196/no_aircraft",no_aircraft-1); 3062 save_parameters(); 3063} 3064 3065var display_list_aircraft = func{ 3066 var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected"); 3067 if(no_ligne==-1){ 3068 no_ligne = getprop("/instrumentation/garmin196/no_aircraft"); 3069 } 3070 var aircraft_display = ""; 3071 if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/max-speed")!=nil){ 3072 var max_speed = getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/max-speed"); 3073 var name = getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/name"); 3074 setprop("/instrumentation/garmin196/max-speed",max_speed); 3075 setprop("/instrumentation/garmin196/cruise-speed",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/cruise-speed")); 3076 setprop("/instrumentation/garmin196/fuel-flow",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/fuel-flow")); 3077 setprop("/instrumentation/garmin196/no_aircraft",no_ligne); 3078 3079 aircraft_display = name ~ " vmax="; 3080 if(getprop("/instrumentation/garmin196/params/units/speed")==1){ 3081 aircraft_display = aircraft_display ~ max_speed ~"kt"; 3082 }else{ 3083 aircraft_display = aircraft_display ~ sprintf("%3.0f",(max_speed*1.852)) ~"km/h"; 3084 } 3085 }else{ 3086 aircraft_display = "NEW AIRCRAFT"; 3087 } 3088 setprop("/instrumentation/garmin196/menu_aircraft/text",aircraft_display); 3089} 3090 3091var init_menu_aircraft = func{ 3092 var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected"); 3093 3094 setprop("/instrumentation/garmin196/menu_aircraft/selected-name",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/name")); 3095 setprop("/instrumentation/garmin196/menu_aircraft/selected-max",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/max-speed")); 3096 setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/cruise-speed")); 3097 setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/fuel-flow")); 3098 3099 setprop("/instrumentation/garmin196/menu_aircraft/x_char",size(getprop("/instrumentation/garmin196/menu_aircraft/selected-name"))-1); 3100 setprop("/instrumentation/garmin196/menu_aircraft/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_aircraft/selected-name"),getprop("/instrumentation/garmin196/menu_aircraft/x_char"))); 3101 display_menu_aircraft(); 3102} 3103 3104var validate_menu_aircraft=func{ 3105 var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected"); 3106 3107 setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/name",getprop("/instrumentation/garmin196/menu_aircraft/selected-name")); 3108 setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/max-speed",getprop("/instrumentation/garmin196/menu_aircraft/selected-max")); 3109 setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/cruise-speed",getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise")); 3110 setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/fuel-flow",getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow")); 3111 save_parameters(); 3112} 3113 3114var display_menu_aircraft=func{ 3115 if(getprop("/instrumentation/garmin196/params/units/speed")==1){ 3116 setprop("/instrumentation/garmin196/menu_aircraft/selected-max-display",getprop("/instrumentation/garmin196/menu_aircraft/selected-max")~"kt"); 3117 setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise-display",getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise")~"kt"); 3118 }else{ 3119 setprop("/instrumentation/garmin196/menu_aircraft/selected-max-display",sprintf("%3.0fkm/h",getprop("/instrumentation/garmin196/menu_aircraft/selected-max")*1.852)); 3120 setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise-display",sprintf("%3.0fkm/h",getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise")*1.852)); 3121 } 3122} 3123 3124var display_menu_aircraft_name = func{ 3125 var ligne_selected = getprop("/instrumentation/garmin196/menu_aircraft/selected-name"); 3126 var x_char = props.globals.getNode("/instrumentation/garmin196/menu_aircraft/x_char").getValue(); 3127 ligne_selected = substr(ligne_selected,0,x_char); 3128 ligne_selected = ligne_selected ~ tab_chiffres_lettres[getprop("/instrumentation/garmin196/menu_aircraft/y_char")]; 3129 setprop("/instrumentation/garmin196/menu_aircraft/selected-name",ligne_selected); 3130} 3131 3132var display_menu_flights = func{ 3133 var flights = props.globals.getNode("/instrumentation/garmin196/flights",1); 3134 var i = 0; 3135 foreach (var e; flights.getChildren("flight")) { 3136 var start = e.getChild("start").getValue(); 3137 var end = e.getChild("end").getValue(); 3138 var date = e.getChild("date").getValue(); 3139 var aircraft = e.getChild("aircraft").getValue(); 3140 var distance = e.getChild("distance").getValue(); 3141 var duration = e.getChild("duration").getValue(); 3142 3143 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 3144 distance = sprintf("%03.1fnm",distance); 3145 }else{ 3146 distance = sprintf("%03.1fkm",distance*1.852); 3147 } 3148 var ligne = sprintf("%s to %s %s",start,end,date); 3149 3150 setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/texte",ligne); 3151 setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/start",start); 3152 setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/end",end); 3153 setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/date",date); 3154 setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/aircraft",aircraft); 3155 setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/distance",distance); 3156 setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/duration",sprintf("%03.1fh",duration)); 3157 3158 i=i+1; 3159 } 3160 for(var j=i;j<8;j=j+1){ 3161 setprop("/instrumentation/garmin196/menu_flights/ligne["~j~"]/texte",""); 3162 } 3163 setprop("/instrumentation/garmin196/menu_flights/max_ligne_selected",i-1); 3164} 3165 3166var update_menu_flights_detail = func{ 3167 var no_ligne = getprop("/instrumentation/garmin196/menu_flights/no_ligne_selected"); 3168 setprop("/instrumentation/garmin196/menu_flights/ligne_selected/texte",getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/start")~" to "~getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/end")); 3169 setprop("/instrumentation/garmin196/menu_flights/ligne_selected/date",getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/date")); 3170 setprop("/instrumentation/garmin196/menu_flights/ligne_selected/aircraft",getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/aircraft")); 3171 setprop("/instrumentation/garmin196/menu_flights/ligne_selected/distance",getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/distance")); 3172 setprop("/instrumentation/garmin196/menu_flights/ligne_selected/duration",getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/duration")); 3173} 3174 3175var update_flight = func{ 3176 if(getprop("/instrumentation/garmin196/flight/inflight")==nil){ 3177 props.globals.getNode("/instrumentation/garmin196/flight/inflight",1).setBoolValue(0); 3178 props.globals.getNode("/instrumentation/garmin196/flight/start",1).setValue(""); 3179 } 3180 3181 var inflight = getprop("/instrumentation/garmin196/flight/inflight"); 3182 var speed = getprop("/instrumentation/gps/indicated-ground-speed-kt"); 3183 if(inflight==1){ 3184 if(speed<30){#speed<30kt, flight saved 3185 3186 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(1); 3187 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 3188 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 3189 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("airport"); 3190 setprop("/instrumentation/gps/command", "nearest"); 3191 var id = getprop("/instrumentation/gps/scratch/ident"); 3192 props.globals.getNode("/instrumentation/garmin196/flight/end",1).setValue(id); 3193 props.globals.getNode("/instrumentation/garmin196/flight/distance",1).setDoubleValue(getprop("/instrumentation/gps/trip-odometer")); 3194 props.globals.getNode("/instrumentation/garmin196/flight/duration",1).setDoubleValue((getprop("/sim/time/elapsed-sec")-getprop("/instrumentation/garmin196/flight/start-time"))/3600); 3195 setprop("/instrumentation/garmin196/flight/inflight",0); 3196 3197 ##inscription dans le carnet de vol 3198 for(var i=7;i>0;i=i-1){ 3199 if(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/start")!=nil){ 3200 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/start",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/start")); 3201 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/end",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/end")); 3202 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/date",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/date")); 3203 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/aircraft",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/aircraft")); 3204 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/distance",1).setDoubleValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/distance")); 3205 props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/duration",1).setDoubleValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/duration")); 3206 } 3207 } 3208 props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/start",1).setValue(getprop("/instrumentation/garmin196/flight/start")); 3209 props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/end",1).setValue(getprop("/instrumentation/garmin196/flight/end")); 3210 props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/date",1).setValue(getprop("/instrumentation/garmin196/flight/date")); 3211 props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/aircraft",1).setValue(getprop("/instrumentation/garmin196/flight/aircraft")); 3212 props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/distance",1).setDoubleValue(getprop("/instrumentation/garmin196/flight/distance")); 3213 props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/duration",1).setDoubleValue(getprop("/instrumentation/garmin196/flight/duration")); 3214 display_menu_flights(); 3215 save_parameters(); 3216 } 3217 }else{ 3218 if(speed>30){#speed>30kt, flight started 3219 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(1); 3220 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 3221 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 3222 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("airport"); 3223 setprop("/instrumentation/gps/command", "nearest"); 3224 var id = getprop("/instrumentation/gps/scratch/ident"); 3225 props.globals.getNode("/instrumentation/garmin196/flight/start",1).setValue(id); 3226 var no_aircraft = getprop("/instrumentation/garmin196/no_aircraft"); 3227 var aircraft = getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/name"); 3228 if(aircraft==nil){ 3229 props.globals.getNode("/instrumentation/garmin196/flight/aircraft",1).setValue("NO AIRCRAFT"); 3230 }else{ 3231 props.globals.getNode("/instrumentation/garmin196/flight/aircraft",1).setValue(aircraft); 3232 } 3233 props.globals.getNode("/instrumentation/garmin196/flight/date",1).setValue(substr(getprop("/sim/time/gmt"),0,10)); 3234 props.globals.getNode("/instrumentation/garmin196/flight/start-time",1).setDoubleValue(getprop("/sim/time/elapsed-sec")); 3235 setprop("/instrumentation/gps/trip-odometer",0); 3236 setprop("/instrumentation/garmin196/flight/inflight",1); 3237 } 3238 } 3239} 3240 3241var update_e6b_menu=func{ 3242 var status = getprop("/instrumentation/garmin196/status"); 3243 if(status==150){ 3244 if(getprop("/instrumentation/garmin196/params/units/pressure")==1){ 3245 setprop("/instrumentation/garmin196/menu_e6b/baro-pressure",sprintf("%2.2fInHg",getprop("/environment/pressure-sea-level-inhg"))); 3246 }else{ 3247 setprop("/instrumentation/garmin196/menu_e6b/baro-pressure",sprintf("%4.0fhPa",getprop("/environment/pressure-sea-level-inhg")/0.03)); 3248 } 3249 3250 var diff_speed = getprop("/instrumentation/gps/indicated-ground-speed-kt") - getprop("/velocities/airspeed-kt"); 3251 if(getprop("/instrumentation/garmin196/params/units/speed")==1){ 3252 setprop("/instrumentation/garmin196/menu_e6b/wind-speed",sprintf("%1.0fkt",getprop("/environment/wind-speed-kt"))); 3253 setprop("/instrumentation/garmin196/menu_e6b/calibrated-airspeed",sprintf("%1.0fkt",getprop("/instrumentation/gps/indicated-ground-speed-kt"))); 3254 setprop("/instrumentation/garmin196/menu_e6b/true-airspeed",sprintf("%1.0fkt",getprop("/velocities/airspeed-kt"))); 3255 setprop("/instrumentation/garmin196/menu_e6b/head-wind",sprintf("%1.0fkt",diff_speed)); 3256 }else{ 3257 setprop("/instrumentation/garmin196/menu_e6b/wind-speed",sprintf("%1.0fkm/h",getprop("/environment/wind-speed-kt")*1.852)); 3258 setprop("/instrumentation/garmin196/menu_e6b/calibrated-airspeed",sprintf("%1.0fkm/h",getprop("/instrumentation/gps/indicated-ground-speed-kt")*1.852)); 3259 setprop("/instrumentation/garmin196/menu_e6b/true-airspeed",sprintf("%1.0fkm/h",getprop("/velocities/airspeed-kt")*1.852)); 3260 setprop("/instrumentation/garmin196/menu_e6b/head-wind",sprintf("%1.0fkm/h",diff_speed*1.852)); 3261 } 3262 3263 if(getprop("/instrumentation/garmin196/params/units/altitude")==1){ 3264 setprop("/instrumentation/garmin196/menu_e6b/indicated-altitude",sprintf("%1.0fft",getprop("/instrumentation/gps/indicated-altitude-ft"))); 3265 setprop("/instrumentation/garmin196/menu_e6b/density-altitude",sprintf("%1.0fft",getprop("/position/altitude-ft"))); 3266 }else{ 3267 setprop("/instrumentation/garmin196/menu_e6b/indicated-altitude",sprintf("%1.0fm",getprop("/instrumentation/gps/indicated-altitude-ft")*0.1097)); 3268 setprop("/instrumentation/garmin196/menu_e6b/density-altitude",sprintf("%1.0fm",getprop("/position/altitude-ft")*0.1097)); 3269 } 3270 3271 if(getprop("/instrumentation/garmin196/params/units/temperature")==1){ 3272 setprop("/instrumentation/garmin196/menu_e6b/air-temp",sprintf("%1.1fC",getprop("/environment/temperature-degc"))); 3273 }else{ 3274 setprop("/instrumentation/garmin196/menu_e6b/air-temp",sprintf("%1.1fF",getprop("/environment/temperature-degf"))); 3275 } 3276 setprop("/instrumentation/garmin196/menu_e6b/wind-from",sprintf("%1.0f",getprop("/environment/wind-from-heading-deg"))); 3277 setprop("/instrumentation/garmin196/menu_e6b/heading",sprintf("%1.0f",getprop("/orientation/heading-deg"))); 3278 } 3279} 3280 3281var init_list_points = func{ 3282 var points = props.globals.getNode("/instrumentation/garmin196/waypoints/user/",1); 3283 var i = 0; 3284 foreach (var e; points.getChildren("wpt")) { 3285 setprop("/instrumentation/garmin196/menu_points/point["~i~"]/texte",e.getChild("id").getValue()); 3286 i=i+1; 3287 } 3288 3289 for(var j=i;j<9;j=j+1){ 3290 setprop("/instrumentation/garmin196/menu_points/point["~j~"]/texte",""); 3291 } 3292 3293 if(i<9){ 3294 setprop("/instrumentation/garmin196/menu_points/point["~i~"]/texte","ENTER TO ADD WAYPOINT"); 3295 }else{ 3296 i=8; 3297 } 3298 setprop("/instrumentation/garmin196/menu_points/max_no_ligne",i); 3299} 3300 3301var init_new_point = func(no_point){ 3302 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~no_point~"]/id", 1).setValue("POINT"); 3303 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~no_point~"]/latitude", 1).setDoubleValue(getprop("/position/latitude-deg")); 3304 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~no_point~"]/longitude", 1).setDoubleValue(getprop("/position/longitude-deg")); 3305} 3306 3307var delete_point = func(no_point){ 3308 for(var i=no_point+1;i<9;i=i+1){ 3309 if(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id")!=nil){ 3310 setprop("/instrumentation/garmin196/waypoints/user/wpt["~(i-1)~"]/id",getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id")); 3311 setprop("/instrumentation/garmin196/waypoints/user/wpt["~(i-1)~"]/latitude",getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude")); 3312 setprop("/instrumentation/garmin196/waypoints/user/wpt["~(i-1)~"]/longitude",getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude")); 3313 } 3314 } 3315 var nb_points = size(props.globals.getNode("/instrumentation/garmin196/waypoints/user/",1).getChildren("wpt")); 3316 if(getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_point~"]/id")!=nil){ 3317 props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~(nb_points-1)~"]").remove(); 3318 } 3319 save_parameters(); 3320} 3321 3322var update_menu_points = func{ 3323 var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected"); 3324 var name = getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/id"); 3325 var latitude = getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/latitude"); 3326 var longitude = getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/longitude"); 3327 3328 setprop("/instrumentation/garmin196/menu_points/name",name); 3329 props.globals.getNode("/instrumentation/garmin196/menu_points/longitude", 1).setDoubleValue(longitude); 3330 props.globals.getNode("/instrumentation/garmin196/menu_points/latitude", 1).setDoubleValue(latitude); 3331 setprop("/instrumentation/garmin196/menu_points/x_char",size(getprop("/instrumentation/garmin196/menu_points/name"))-1); 3332 setprop("/instrumentation/garmin196/menu_points/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_points/name"),getprop("/instrumentation/garmin196/menu_points/x_char"))); 3333 display_menu_points(); 3334} 3335 3336var validate_menu_points = func{ 3337 var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected"); 3338 3339 var id = getprop("/instrumentation/garmin196/menu_points/name"); 3340 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 3341 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 3342 setprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/id",id); 3343 setprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/latitude",latitude); 3344 setprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/longitude",longitude); 3345 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(longitude); 3346 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(latitude); 3347 props.globals.getNode("/instrumentation/gps/scratch/ident",1).setValue(id~"WPTUSR"); 3348 setprop("/instrumentation/gps/command","define-user-wpt"); 3349 update_menu_points(); 3350 save_parameters(); 3351} 3352 3353var display_menu_points = func{ 3354 var ligne_selected = getprop("/instrumentation/garmin196/menu_points/name"); 3355 var x_char = props.globals.getNode("/instrumentation/garmin196/menu_points/x_char").getValue(); 3356 ligne_selected = substr(ligne_selected,0,x_char); 3357 ligne_selected = ligne_selected ~ tab_chiffres_lettres[getprop("/instrumentation/garmin196/menu_points/y_char")]; 3358 setprop("/instrumentation/garmin196/menu_points/name",ligne_selected); 3359 3360 var latitude = getprop("/instrumentation/garmin196/menu_points/latitude"); 3361 var latitude_tab = split(".",sprintf("%3.2f",math.abs(latitude))); 3362 var latitude_text10 = latitude_tab[0]; 3363 var latitude_text1 = "00"; 3364 if(size(latitude_tab)>1){ 3365 latitude_text1 = sprintf("%0.2s",latitude_tab[1]); 3366 } 3367 if(latitude>=0){ 3368 latitude_text10 = "N" ~ latitude_text10; 3369 }else{ 3370 latitude_text10 = "S" ~ latitude_text10; 3371 } 3372 var longitude = getprop("/instrumentation/garmin196/menu_points/longitude"); 3373 var longitude_tab = split(".",sprintf("%3.2f",math.abs(longitude))); 3374 var longitude_text10 = longitude_tab[0]; 3375 var longitude_text1 = "00"; 3376 if(size(longitude_tab)>1){ 3377 longitude_text1 = sprintf("%0.2s",longitude_tab[1]); 3378 } 3379 if(longitude>=0){ 3380 longitude_text10 = "E" ~ longitude_text10; 3381 }else{ 3382 longitude_text10 = "W" ~ longitude_text10; 3383 } 3384 3385 setprop("/instrumentation/garmin196/menu_points/latitude10_text",latitude_text10); 3386 setprop("/instrumentation/garmin196/menu_points/latitude1_text",latitude_text1); 3387 setprop("/instrumentation/garmin196/menu_points/longitude10_text",longitude_text10); 3388 setprop("/instrumentation/garmin196/menu_points/longitude1_text",longitude_text1); 3389} 3390 3391var init_menu_routes_list = func{ 3392 var routes = props.globals.getNode("/instrumentation/garmin196/routes",1); 3393 var i = 0; 3394 foreach (var e; routes.getChildren("route")) { 3395 setprop("/instrumentation/garmin196/menu_routes/route["~i~"]/texte",e.getChild("name").getValue()); 3396 i=i+1; 3397 } 3398 3399 for(var j=i;j<11;j=j+1){ 3400 setprop("/instrumentation/garmin196/menu_routes/route["~j~"]/texte",""); 3401 } 3402 3403 if(i<11){ 3404 setprop("/instrumentation/garmin196/menu_routes/route["~i~"]/texte","ENTER TO ADD ROUTE"); 3405 }else{ 3406 i=10; 3407 } 3408 setprop("/instrumentation/garmin196/menu_routes/max_no_ligne",i); 3409} 3410 3411var init_new_route = func(no_ligne){ 3412 setprop("/instrumentation/gps/scratch/max-results", 1); 3413 setprop("/instrumentation/gps/scratch/longitude-deg",-9999); 3414 setprop("/instrumentation/gps/scratch/latitude-deg",-9999); 3415 setprop("/instrumentation/gps/scratch/type", "airport"); 3416 setprop("/instrumentation/gps/command", "nearest"); 3417 var id = getprop("/instrumentation/gps/scratch/ident"); 3418 3419 props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/name",1).setValue(id~" to "~id); 3420 props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/wpt[0]/id",1).setValue(id); 3421 props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/wpt[0]/type",1).setValue("airport"); 3422} 3423 3424var update_menu_routes_detail = func{ 3425 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 3426 3427 var points = props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/",1); 3428 var i = 0; 3429 var last_longitude = 0; 3430 var last_latitude = 0; 3431 3432 var distance_total = 0; 3433 var cruise_speed = getprop("/instrumentation/garmin196/cruise-speed"); 3434 var conso_horaire = getprop("/instrumentation/garmin196/fuel-flow"); 3435 3436 foreach (var e; points.getChildren("wpt")) { 3437 var id = e.getChild("id").getValue(); 3438 var type = e.getChild("type").getValue(); 3439 var ligne = id; 3440 if(substr(id,size(id)-6)=="WPTUSR"){ 3441 ligne = substr(id,0,size(id)-6); 3442 }elsif(substr(id,size(id)-6)=="WPTTWN"){ 3443 ligne = substr(id,0,size(id)-8); 3444 } 3445 ligne = substr(ligne,0,8); 3446 3447 if(i==0){ 3448 setprop("/instrumentation/gps/scratch/max-results", 1); 3449 setprop("/instrumentation/gps/scratch/exact", 0); 3450 setprop("/instrumentation/gps/scratch/query", id); 3451 setprop("/instrumentation/gps/scratch/type", type); 3452 setprop("/instrumentation/gps/command", "search"); 3453 last_longitude = getprop("/instrumentation/gps/scratch/longitude-deg"); 3454 last_latitude = getprop("/instrumentation/gps/scratch/latitude-deg"); 3455 }else{ 3456 var ligne_spaces = " "; 3457 ligne_spaces = substr(ligne_spaces,0,8-size(ligne)); 3458 var coord_last_id = geo.Coord.new().set_latlon(last_latitude,last_longitude); 3459 setprop("/instrumentation/gps/scratch/max-results", 1); 3460 setprop("/instrumentation/gps/scratch/exact", 0); 3461 setprop("/instrumentation/gps/scratch/query", id); 3462 setprop("/instrumentation/gps/scratch/type", type); 3463 setprop("/instrumentation/gps/command", "search"); 3464 last_longitude = getprop("/instrumentation/gps/scratch/longitude-deg"); 3465 last_latitude = getprop("/instrumentation/gps/scratch/latitude-deg"); 3466 3467 var coord_id = geo.Coord.new().set_latlon(last_latitude,last_longitude); 3468 var distance = coord_last_id.distance_to(coord_id) * 0.000539; 3469 var bearing = coord_last_id.course_to(coord_id); 3470 3471 var ete = distance / cruise_speed; 3472 var ete_hours = int(ete); 3473 var ete_minutes = int(ete*60-ete_hours*60); 3474 var conso = ete * conso_horaire; 3475 distance_total = distance_total + distance; 3476 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 3477 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.0f %03.1f %02.0f:%02.0f %02.1f",bearing,distance,ete_hours,ete_minutes,conso); 3478 }else{ 3479 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.0f %03.1f %02.0f:%02.0f %02.1f",bearing,(distance*1.852),ete_hours,ete_minutes,conso); 3480 } 3481 } 3482 setprop("/instrumentation/garmin196/menu_routes/point["~i~"]/texte",ligne); 3483 i=i+1; 3484 } 3485 3486 var ete_total = distance_total / cruise_speed; 3487 var ete_total_hours = int(ete_total); 3488 var ete_total_minutes = int(ete_total*60-ete_total_hours*60); 3489 var conso_total = ete_total * conso_horaire; 3490 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 3491 setprop("/instrumentation/garmin196/menu_routes/total/texte",sprintf("%03.1f %02.0f:%02.0f %02.1f",distance_total,ete_total_hours,ete_total_minutes,conso_total)); 3492 }else{ 3493 setprop("/instrumentation/garmin196/menu_routes/total/texte",sprintf("%03.1f %02.0f:%02.0f %02.1f",(distance_total*1.852),ete_total_hours,ete_total_minutes,conso_total)); 3494 } 3495 3496 for(var j=i;j<10;j=j+1){ 3497 setprop("/instrumentation/garmin196/menu_routes/point["~j~"]/texte",""); 3498 } 3499 if(i<10){ 3500 setprop("/instrumentation/garmin196/menu_routes/point["~i~"]/texte","ENTER TO ADD WAYPOINT"); 3501 }else{ 3502 i=9; 3503 } 3504 setprop("/instrumentation/garmin196/menu_routes/max_no_ligne_detail",i); 3505} 3506 3507var init_search_route = func(start_string){ 3508 if(substr(start_string,size(start_string)-6)=="WPTUSR"){ 3509 start_string = substr(start_string,0,size(start_string)-6); 3510 }elsif(substr(start_string,size(start_string)-6)=="WPTTWN"){ 3511 start_string = substr(start_string,0,size(start_string)-8); 3512 } 3513 setprop("/instrumentation/garmin196/menu_routes/search/ligne_select",start_string); 3514 setprop("/instrumentation/garmin196/menu_routes/search/x_char",size(start_string)-1); 3515 setprop("/instrumentation/garmin196/menu_routes/search/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_routes/search/ligne_select"),getprop("/instrumentation/garmin196/menu_routes/search/x_char"))); 3516 3517 display_route_waypoint_search(); 3518} 3519 3520var display_route_waypoint_search = func{ 3521 var ligne_selected = getprop("/instrumentation/garmin196/menu_routes/search/ligne_select"); 3522 var x_char = props.globals.getNode("/instrumentation/garmin196/menu_routes/search/x_char").getValue(); 3523 ligne_selected = substr(ligne_selected,0,x_char); 3524 ligne_selected = ligne_selected ~ tab_chiffres_lettres[getprop("/instrumentation/garmin196/menu_routes/search/y_char")]; 3525 setprop("/instrumentation/garmin196/menu_routes/search/ligne_select",ligne_selected); 3526 3527 var plots = []; 3528 ##recherche gps globale 3529 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5); 3530 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 3531 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 3532 props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0); 3533 props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected); 3534 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue(""); 3535 3536 setprop("/instrumentation/gps/command", "search"); 3537 var i=0; 3538 var flag_continue = getprop("/instrumentation/gps/scratch/valid"); 3539 while (flag_continue and i<5) { 3540 var id = getprop("/instrumentation/gps/scratch/ident"); 3541 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 3542 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 3543 var type = getprop("/instrumentation/gps/scratch/type"); 3544 3545 var ligne = id; 3546 if(type=="waypoint"){ 3547 type = "wpt"; 3548 var type_wpt = substr(id,size(id)-6); 3549 if(type_wpt=="WPTTWN"){#cities 3550 ligne = substr(id,0,size(id)-8); 3551 }elsif(type_wpt=="WPTUSR"){#wpt user 3552 ligne = substr(id,0,size(id)-6); 3553 } 3554 } 3555 3556 ligne = ligne ~ " " ~ type; 3557 var ligne_spaces = " "; 3558 ligne_spaces = substr(ligne_spaces,0,16-size(ligne)); 3559 3560 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 3561 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 3562 ligne = ligne ~sprintf(" %3.1fnm",range); 3563 }else{ 3564 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 3565 } 3566 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 3567 3568 3569 var plot = { id: id,texte: ligne,type: type}; 3570 append(plots,plot); 3571 3572 i=i+1; 3573 setprop("/instrumentation/gps/command", "next"); 3574 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 3575 } 3576 3577 ##recherche gps fix 3578 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5); 3579 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 3580 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 3581 props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0); 3582 props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected); 3583 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("fix"); 3584 3585 setprop("/instrumentation/gps/command", "search"); 3586 i=0; 3587 flag_continue = getprop("/instrumentation/gps/scratch/valid"); 3588 while (flag_continue and i<5) { 3589 var id = getprop("/instrumentation/gps/scratch/ident"); 3590 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 3591 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 3592 var type = getprop("/instrumentation/gps/scratch/type"); 3593 3594 var ligne = id ~ " " ~ type; 3595 var ligne_spaces = " "; 3596 ligne_spaces = substr(ligne_spaces,0,16-size(ligne)); 3597 3598 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 3599 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 3600 ligne = ligne ~sprintf(" %3.1fnm",range); 3601 }else{ 3602 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 3603 } 3604 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 3605 3606 3607 var plot = { id: id,texte: ligne,type: type}; 3608 append(plots,plot); 3609 3610 i=i+1; 3611 setprop("/instrumentation/gps/command", "next"); 3612 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 3613 } 3614 3615 ##recherche gps vor 3616 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5); 3617 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 3618 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 3619 props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0); 3620 props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected); 3621 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("vor"); 3622 3623 setprop("/instrumentation/gps/command", "search"); 3624 i=0; 3625 flag_continue = getprop("/instrumentation/gps/scratch/valid"); 3626 while (flag_continue and i<5) { 3627 var id = getprop("/instrumentation/gps/scratch/ident"); 3628 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 3629 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 3630 var type = getprop("/instrumentation/gps/scratch/type"); 3631 3632 var ligne = id ~ " vor"; 3633 var ligne_spaces = " "; 3634 ligne_spaces = substr(ligne_spaces,0,16-size(ligne)); 3635 3636 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 3637 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 3638 ligne = ligne ~sprintf(" %3.1fnm",range); 3639 }else{ 3640 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 3641 } 3642 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 3643 3644 3645 var plot = { id: id,texte: ligne,type: type}; 3646 append(plots,plot); 3647 3648 i=i+1; 3649 setprop("/instrumentation/gps/command", "next"); 3650 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 3651 } 3652 3653 ##recherche gps ndb 3654 props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5); 3655 props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999); 3656 props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999); 3657 props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0); 3658 props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected); 3659 props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("ndb"); 3660 3661 setprop("/instrumentation/gps/command", "search"); 3662 i=0; 3663 flag_continue = getprop("/instrumentation/gps/scratch/valid"); 3664 while (flag_continue and i<5) { 3665 var id = getprop("/instrumentation/gps/scratch/ident"); 3666 var range = getprop("/instrumentation/gps/scratch/distance-nm"); 3667 var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg"); 3668 var type = getprop("/instrumentation/gps/scratch/type"); 3669 3670 var ligne = id ~ " ndb"; 3671 var ligne_spaces = " "; 3672 ligne_spaces = substr(ligne_spaces,0,16-size(ligne)); 3673 3674 ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing); 3675 if(getprop("/instrumentation/garmin196/params/units/distance")==1){ 3676 ligne = ligne ~sprintf(" %3.1fnm",range); 3677 }else{ 3678 ligne = ligne ~sprintf(" %3.1fkm",range*1.852); 3679 } 3680 var popup_status = getprop("/instrumentation/garmin196/popup_status"); 3681 3682 3683 var plot = { id: id,texte: ligne,type: type}; 3684 append(plots,plot); 3685 3686 i=i+1; 3687 setprop("/instrumentation/gps/command", "next"); 3688 flag_continue = getprop("/instrumentation/gps/scratch/has-next"); 3689 } 3690 3691 var plots_sorted = sort (plots, func (a,b) cmp (a.id, b.id)); 3692 var nb_plots = size(plots_sorted); 3693 if(nb_plots>9){ 3694 nb_plots = 9; 3695 } 3696 for(var j=0;j<nb_plots;j=j+1){ 3697 setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/texte",plots_sorted[j].texte); 3698 setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/id",plots_sorted[j].id); 3699 setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/type",plots_sorted[j].type); 3700 } 3701 3702 for(var j=nb_plots;j<9;j=j+1){ 3703 setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/texte",""); 3704 setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/id",""); 3705 setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/type",""); 3706 } 3707 setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",-1); 3708 setprop("/instrumentation/garmin196/menu_routes/search/max_ligne_selected",nb_plots-1); 3709} 3710 3711var delete_route = func(no_ligne){ 3712 for(var i=no_ligne+1;i<11;i=i+1){ 3713 if(getprop("/instrumentation/garmin196/routes/route["~i~"]/name")!=nil){ 3714 setprop("/instrumentation/garmin196/routes/route["~(i-1)~"]/name",getprop("/instrumentation/garmin196/routes/route["~i~"]/name")); 3715 for(var j=0;j<10;j=j+1){ 3716 if(getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/id")!=nil){ 3717 setprop("/instrumentation/garmin196/routes/route["~(i-1)~"]/wpts/wpt["~j~"]/id",getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/id")); 3718 setprop("/instrumentation/garmin196/routes/route["~(i-1)~"]/wpts/wpt["~j~"]/type",getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/type")); 3719 } 3720 } 3721 } 3722 } 3723 var nb_routes = size(props.globals.getNode("/instrumentation/garmin196/routes",1).getChildren("route")); 3724 if(getprop("/instrumentation/garmin196/routes/route["~no_ligne~"]/name")!=nil){ 3725 props.globals.getNode("/instrumentation/garmin196/routes/route["~(nb_routes-1)~"]").remove(); 3726 } 3727 3728 save_parameters(); 3729} 3730 3731var delete_route_detail = func(no_ligne_liste,no_ligne_detail){ 3732 if(no_ligne_detail>0){ 3733 for(var i=no_ligne_detail+1;i<10;i=i+1){ 3734 if(getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~i~"]/id")!=nil){ 3735 setprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~(i-1)~"]/id",getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~i~"]/id")); 3736 setprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~(i-1)~"]/type",getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~i~"]/type")); 3737 } 3738 } 3739 3740 var nb_waypoints = size(props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts",1).getChildren("wpt")); 3741 if(getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/id")!=nil){ 3742 props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~(nb_waypoints-1)~"]").remove(); 3743 } 3744 save_parameters(); 3745 } 3746} 3747 3748var validate_menu_search_routes = func{ 3749 var no_ligne = getprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected"); 3750 var id = getprop("/instrumentation/garmin196/menu_routes/search/ligne["~no_ligne~"]/id"); 3751 var type = getprop("/instrumentation/garmin196/menu_routes/search/ligne["~no_ligne~"]/type"); 3752 var no_ligne_liste = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 3753 var no_ligne_detail = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail"); 3754 setprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/id",id); 3755 setprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/type",type); 3756 3757 var name_wpt0 = getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt[0]/id"); 3758 if(substr(name_wpt0,size(name_wpt0)-6)=="WPTUSR"){ 3759 name_wpt0 = substr(name_wpt0,0,size(name_wpt0)-6); 3760 }elsif(substr(name_wpt0,size(name_wpt0)-6)=="WPTTWN"){ 3761 name_wpt0 = substr(name_wpt0,0,size(name_wpt0)-8); 3762 } 3763 var name_wpt1 = name_wpt0; 3764 var nb_points = size(props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts").getChildren("wpt")); 3765 if(nb_points>1){ 3766 name_wpt1 = getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~(nb_points-1)~"]/id"); 3767 if(substr(name_wpt1,size(name_wpt1)-6)=="WPTUSR"){ 3768 name_wpt1 = substr(name_wpt1,0,size(name_wpt1)-6); 3769 }elsif(substr(name_wpt1,size(name_wpt1)-6)=="WPTTWN"){ 3770 name_wpt1 = substr(name_wpt1,0,size(name_wpt1)-8); 3771 } 3772 } 3773 3774 var name = name_wpt0 ~ " to " ~ name_wpt1; 3775 setprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/name",name); 3776} 3777 3778var load_flight_plan = func(no_ligne){ 3779 setprop("/autopilot/route-manager/active",0); 3780 setprop("/autopilot/route-manager/input","@CLEAR"); 3781 setprop("/autopilot/route-manager/input","@POP"); 3782 var points = props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/",1); 3783 var last_id = ""; 3784 foreach (var e; points.getChildren("wpt")) { 3785 var id = e.getChild("id").getValue(); 3786 setprop("/autopilot/route-manager/input",id); 3787 last_id = id; 3788 } 3789 ##to correct the index bug appeared in 2.8.0.5 3790 setprop("/autopilot/route-manager/input",last_id); 3791 3792 setprop("/autopilot/route-manager/input","@JUMP0"); 3793 setprop("/autopilot/route-manager/input","@ACTIVATE"); 3794} 3795 3796var close_fpl_loaded = func{ 3797 setprop("/instrumentation/garmin196/menu_routes/fpl-loaded",0); 3798} 3799var affiche_fpl_loaded = func{ 3800 setprop("/instrumentation/garmin196/menu_routes/fpl-loaded",1); 3801 settimer(close_fpl_loaded,3); 3802} 3803 3804var close_waypoint_jump = func{ 3805 setprop("/instrumentation/garmin196/menu_routes/waypoint-jump",0); 3806} 3807var affiche_waypoint_jump = func{ 3808 setprop("/instrumentation/garmin196/menu_routes/waypoint-jump",1); 3809 settimer(close_waypoint_jump,3); 3810} 3811 3812var jump_to_waypoint = func(no_ligne){ 3813 var no_ligne_liste = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected"); 3814 load_flight_plan(no_ligne_liste); 3815 setprop("/autopilot/route-manager/input","@JUMP"~no_ligne); 3816} 3817 3818var delete_lines_in_map = func{ 3819 for(var i=0;i<9;i=i+1){ 3820 setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/visible",0); 3821 } 3822} 3823 3824var close_last_wp_reached = func{ 3825 setprop("/instrumentation/garmin196/menu_routes/last-wp-reached",0); 3826} 3827var affiche_last_wp_reached = func{ 3828 setprop("/instrumentation/garmin196/menu_routes/last-wp-reached",1); 3829 settimer(close_last_wp_reached,3); 3830} 3831 3832##to correct the index bug appeared in 2.8.0.5 3833var correct_index = func{ 3834 var index = getprop("/autopilot/route-manager/current-wp"); 3835 var max_index = getprop("/autopilot/route-manager/route/num"); 3836 if(index>=(max_index-1) and index>0){ 3837 setprop("/autopilot/route-manager/current-wp",(index-1)); 3838 affiche_last_wp_reached(); 3839 } 3840} 3841setlistener("/autopilot/route-manager/current-wp",correct_index,0,0); 3842 3843