1
0
Fork 0
fgdata/Aircraft/Instruments-3d/garmin196/garmin196.nas
2014-05-10 17:10:25 +02:00

3811 lines
152 KiB
Text

## garmin 196 functions
var last_time = 0.0;
var last_bearing = -1;
var 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"];
var old_status = -1;
var init_variables = func{
##version
props.globals.getNode("/instrumentation/garmin196/version",1).setValue("JeeP v. 18/03/2012");
##routes
props.globals.getNode("/instrumentation/garmin196/menu_routes/search/x_char",1).setIntValue(0);
props.globals.getNode("/instrumentation/garmin196/menu_routes/search/y_char",1).setIntValue(0);
props.globals.getNode("/instrumentation/garmin196/menu_routes/fpl-loaded",1).setBoolValue(0);
props.globals.getNode("/instrumentation/garmin196/menu_routes/waypoint-jump",1).setBoolValue(0);
##points
props.globals.getNode("/instrumentation/garmin196/menu_points/x_char",1).setIntValue(0);
props.globals.getNode("/instrumentation/garmin196/menu_points/y_char",1).setIntValue(0);
##aircrafts
props.globals.getNode("/instrumentation/garmin196/menu_aircraft/x_char",1).setIntValue(0);
props.globals.getNode("/instrumentation/garmin196/menu_aircraft/y_char",1).setIntValue(0);
##init waypoint system
props.globals.getNode("/instrumentation/garmin196/panel-wpt-bearing",1).setDoubleValue(0);
props.globals.getNode("/instrumentation/garmin196/position-wpt-bearing",1).setDoubleValue(0);
props.globals.getNode("/instrumentation/garmin196/panel-wpt-id",1).setValue("------");
props.globals.getNode("/instrumentation/gps/config/drive-autopilot",1).setBoolValue(0); ##pour ne pas interferer avec l'autopilot
##init map system
props.globals.getNode("/instrumentation/garmin196/map-range",1).setDoubleValue(0.125);
##init dto system
props.globals.getNode("/instrumentation/garmin196/dto_display/x_char",1).setIntValue(0);
props.globals.getNode("/instrumentation/garmin196/dto_display/y_char",1).setIntValue(0);
##init saveable variables
props.globals.getNode("/instrumentation/garmin196/antenne-deg",1).setDoubleValue(30);
props.globals.getNode("/instrumentation/garmin196/light",1).setDoubleValue(30);
props.globals.getNode("/instrumentation/garmin196/max-speed",1).setDoubleValue(150);
props.globals.getNode("/instrumentation/garmin196/cruise-speed",1).setDoubleValue(120);
props.globals.getNode("/instrumentation/garmin196/fuel-flow",1).setDoubleValue(5);
props.globals.getNode("/instrumentation/garmin196/no_aircraft",1).setIntValue(0);
props.globals.getNode("/instrumentation/garmin196/symbols/params/airport",1).setBoolValue(1);
props.globals.getNode("/instrumentation/garmin196/symbols/params/vor",1).setBoolValue(1);
props.globals.getNode("/instrumentation/garmin196/symbols/params/ndb",1).setBoolValue(1);
props.globals.getNode("/instrumentation/garmin196/symbols/params/fix",1).setBoolValue(1);
props.globals.getNode("/instrumentation/garmin196/symbols/params/twn",1).setBoolValue(1);
props.globals.getNode("/instrumentation/garmin196/symbols/params/wpt",1).setBoolValue(1);
props.globals.getNode("/instrumentation/garmin196/params/units/distance",1).setIntValue(1);
props.globals.getNode("/instrumentation/garmin196/params/units/speed",1).setIntValue(1);
props.globals.getNode("/instrumentation/garmin196/params/units/vert-speed",1).setIntValue(1);
props.globals.getNode("/instrumentation/garmin196/params/units/altitude",1).setIntValue(1);
props.globals.getNode("/instrumentation/garmin196/params/units/pressure",1).setIntValue(1);
props.globals.getNode("/instrumentation/garmin196/params/units/temperature",1).setIntValue(1);
props.globals.getNode("/instrumentation/garmin196/params/filtrage",1).setBoolValue(0);
props.globals.getNode("/instrumentation/garmin196/params/vnav-indicator",1).setBoolValue(1);
##status du gps
#0 eteint
#1 startup page
#1x map page
#2x panel page
#3x position page
#50 coffee page
#menus
#100 = menu gps
#110 = menu flights
#120 = menu route
#130 = menu points
#140 = menu aircraft
#150 = menu e6b
#160 = menu map
#170 = menu setup
props.globals.getNode("/instrumentation/garmin196/status",1).setIntValue(0);
##popup windows
#0 = pas de popup
#1 = affichage du reglage de la lumiere
#10,11,12 = dto aviation
#20 = dto recent
#30 = dto user
#40 = nrst airport
#50 = nrst vor
#60 = nrst ndb
#70 = nrst fix
#80 = nrst cities
props.globals.getNode("/instrumentation/garmin196/popup_status",1).setIntValue(0);
props.globals.getNode("/instrumentation/garmin196/serviceable",1).setBoolValue(0);
props.globals.getNode("/instrumentation/garmin196/light",1).setDoubleValue(0);
props.globals.getNode("/instrumentation/garmin196/coffee",1).setIntValue(0);
load_cities();
main_loop();
}
#setlistener("/sim/signals/fdm-initialized",,0,0);
var nasalInit = setlistener("/sim/signals/fdm-initialized", func{
settimer(init_variables, 2);
removelistener(nasalInit);
});
var load_parameters = func{
fgcommand("loadxml", props.Node.new({ filename: getprop("/sim/fg-home")~"/aircraft-data/garmin196.xml", targetnode: "/instrumentation/garmin196/save" }));
if(getprop("/instrumentation/garmin196/save/antenne-deg")!=nil){
setprop("/instrumentation/garmin196/antenne-deg",getprop("/instrumentation/garmin196/save/antenne-deg"));
}
if(getprop("/instrumentation/garmin196/save/light")!=nil){
setprop("/instrumentation/garmin196/light",getprop("/instrumentation/garmin196/save/light"));
}
if(getprop("/instrumentation/garmin196/save/max-speed")!=nil){
setprop("/instrumentation/garmin196/max-speed",getprop("/instrumentation/garmin196/save/max-speed"));
}
if(getprop("/instrumentation/garmin196/save/cruise-speed")!=nil){
setprop("/instrumentation/garmin196/cruise-speed",getprop("/instrumentation/garmin196/save/cruise-speed"));
}
if(getprop("/instrumentation/garmin196/save/fuel-flow")!=nil){
setprop("/instrumentation/garmin196/fuel-flow",getprop("/instrumentation/garmin196/save/fuel-flow"));
}
if(getprop("/instrumentation/garmin196/save/no_aircraft")!=nil){
setprop("/instrumentation/garmin196/no_aircraft",getprop("/instrumentation/garmin196/save/no_aircraft"));
}
if(getprop("/instrumentation/garmin196/save/symbols/params/airport")!=nil){
setprop("/instrumentation/garmin196/symbols/params/airport",getprop("/instrumentation/garmin196/save/symbols/params/airport"));
}
if(getprop("/instrumentation/garmin196/save/symbols/params/vor")!=nil){
setprop("/instrumentation/garmin196/symbols/params/vor",getprop("/instrumentation/garmin196/save/symbols/params/vor"));
}
if(getprop("/instrumentation/garmin196/save/symbols/params/ndb")!=nil){
setprop("/instrumentation/garmin196/symbols/params/ndb",getprop("/instrumentation/garmin196/save/symbols/params/ndb"));
}
if(getprop("/instrumentation/garmin196/save/symbols/params/fix")!=nil){
setprop("/instrumentation/garmin196/symbols/params/fix",getprop("/instrumentation/garmin196/save/symbols/params/fix"));
}
if(getprop("/instrumentation/garmin196/save/symbols/params/twn")!=nil){
setprop("/instrumentation/garmin196/symbols/params/twn",getprop("/instrumentation/garmin196/save/symbols/params/twn"));
}
if(getprop("/instrumentation/garmin196/save/symbols/params/wpt")!=nil){
setprop("/instrumentation/garmin196/symbols/params/wpt",getprop("/instrumentation/garmin196/save/symbols/params/wpt"));
}
if(getprop("/instrumentation/garmin196/save/params/units/distance")!=nil){
setprop("/instrumentation/garmin196/params/units/distance",getprop("/instrumentation/garmin196/save/params/units/distance"));
}
if(getprop("/instrumentation/garmin196/save/params/units/speed")!=nil){
setprop("/instrumentation/garmin196/params/units/speed",getprop("/instrumentation/garmin196/save/params/units/speed"));
}
if(getprop("/instrumentation/garmin196/save/params/units/vert-speed")!=nil){
setprop("/instrumentation/garmin196/params/units/vert-speed",getprop("/instrumentation/garmin196/save/params/units/vert-speed"));
}
if(getprop("/instrumentation/garmin196/save/params/units/altitude")!=nil){
setprop("/instrumentation/garmin196/params/units/altitude",getprop("/instrumentation/garmin196/save/params/units/altitude"));
}
if(getprop("/instrumentation/garmin196/save/params/units/pressure")!=nil){
setprop("/instrumentation/garmin196/params/units/pressure",getprop("/instrumentation/garmin196/save/params/units/pressure"));
}
if(getprop("/instrumentation/garmin196/save/params/units/temperature")!=nil){
setprop("/instrumentation/garmin196/params/units/temperature",getprop("/instrumentation/garmin196/save/params/units/temperature"));
}
if(getprop("/instrumentation/garmin196/save/params/filtrage")!=nil){
setprop("/instrumentation/garmin196/params/filtrage",getprop("/instrumentation/garmin196/save/params/filtrage"));
}
if(getprop("/instrumentation/garmin196/save/params/vnav-indicator")!=nil){
setprop("/instrumentation/garmin196/params/vnav-indicator",getprop("/instrumentation/garmin196/save/params/vnav-indicator"));
}
for(var i=0;i<5;i=i+1){
if(getprop("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/id")!=nil){
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/id"));
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/type",1).setValue(getprop("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/type"));
}
}
for(var i=0;i<5;i=i+1){
if(getprop("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/id")!=nil){
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/id"));
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude",1).setDoubleValue(getprop("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/latitude"));
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude",1).setDoubleValue(getprop("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/longitude"));
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude"));
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude"));
props.globals.getNode("/instrumentation/gps/scratch/ident",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id")~"WPTUSR");
setprop("/instrumentation/gps/command","define-user-wpt");
}
}
for(var i=0;i<6;i=i+1){
if(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/name")!=nil){
props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name",1).setValue(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/name"));
props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/max-speed",1).setIntValue(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/max-speed"));
props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/cruise-speed",1).setIntValue(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/cruise-speed"));
props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/fuel-flow",1).setDoubleValue(getprop("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/fuel-flow"));
}
}
for(var i=0;i<9;i=i+1){
if(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/start")!=nil){
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/start",1).setValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/start"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/end",1).setValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/end"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/date",1).setValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/date"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/aircraft",1).setValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/aircraft"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/distance",1).setDoubleValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/distance"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/duration",1).setDoubleValue(getprop("/instrumentation/garmin196/save/flights/flight["~i~"]/duration"));
}
}
for(var i=0;i<11;i=i+1){
if(getprop("/instrumentation/garmin196/save/routes/route["~i~"]/name")!=nil){
props.globals.getNode("/instrumentation/garmin196/routes/route["~i~"]/name",1).setValue(getprop("/instrumentation/garmin196/save/routes/route["~i~"]/name"));
for(var j=0;j<10;j=j+1){
if(getprop("/instrumentation/garmin196/save/routes/route["~i~"]/wpts/wpt["~j~"]/id")!=nil){
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"));
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"));
}
}
}
}
}
setlistener("/sim/signals/fdm-initialized",load_parameters);
var save_parameters = func{
props.globals.getNode("/instrumentation/garmin196/save").remove();
##preparation
if(getprop("/instrumentation/garmin196/antenne-deg")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/antenne-deg",1).setDoubleValue(getprop("/instrumentation/garmin196/antenne-deg"));
}
if(getprop("/instrumentation/garmin196/light")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/light",1).setDoubleValue(getprop("/instrumentation/garmin196/light"));
}
if(getprop("/instrumentation/garmin196/max-speed")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/max-speed",1).setDoubleValue(getprop("/instrumentation/garmin196/max-speed"));
}
if(getprop("/instrumentation/garmin196/cruise-speed")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/cruise-speed",1).setDoubleValue(getprop("/instrumentation/garmin196/cruise-speed"));
}
if(getprop("/instrumentation/garmin196/fuel-flow")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/fuel-flow",1).setDoubleValue(getprop("/instrumentation/garmin196/fuel-flow"));
}
if(getprop("/instrumentation/garmin196/no_aircraft")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/no_aircraft",1).setDoubleValue(getprop("/instrumentation/garmin196/no_aircraft"));
}
props.globals.getNode("/instrumentation/garmin196/save/symbols/params/airport",1).setDoubleValue(getprop("/instrumentation/garmin196/symbols/params/airport"));
props.globals.getNode("/instrumentation/garmin196/save/symbols/params/vor",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/vor"));
props.globals.getNode("/instrumentation/garmin196/save/symbols/params/ndb",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/ndb"));
props.globals.getNode("/instrumentation/garmin196/save/symbols/params/fix",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/fix"));
props.globals.getNode("/instrumentation/garmin196/save/symbols/params/twn",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/twn"));
props.globals.getNode("/instrumentation/garmin196/save/symbols/params/wpt",1).setBoolValue(getprop("/instrumentation/garmin196/symbols/params/wpt"));
props.globals.getNode("/instrumentation/garmin196/save/params/units/distance",1).setIntValue(getprop("/instrumentation/garmin196/params/units/distance"));
props.globals.getNode("/instrumentation/garmin196/save/params/units/speed",1).setIntValue(getprop("/instrumentation/garmin196/params/units/speed"));
props.globals.getNode("/instrumentation/garmin196/save/params/units/vert-speed",1).setIntValue(getprop("/instrumentation/garmin196/params/units/vert-speed"));
props.globals.getNode("/instrumentation/garmin196/save/params/units/altitude",1).setIntValue(getprop("/instrumentation/garmin196/params/units/altitude"));
props.globals.getNode("/instrumentation/garmin196/save/params/units/pressure",1).setIntValue(getprop("/instrumentation/garmin196/params/units/pressure"));
props.globals.getNode("/instrumentation/garmin196/save/params/units/temperature",1).setIntValue(getprop("/instrumentation/garmin196/params/units/temperature"));
props.globals.getNode("/instrumentation/garmin196/save/params/filtrage",1).setBoolValue(getprop("/instrumentation/garmin196/params/filtrage"));
props.globals.getNode("/instrumentation/garmin196/save/params/vnav-indicator",1).setBoolValue(getprop("/instrumentation/garmin196/params/vnav-indicator"));
for(var i=0;i<5;i=i+1){
if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id"));
props.globals.getNode("/instrumentation/garmin196/save/waypoints/recent/wpt["~i~"]/type",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/type"));
}
}
for(var i=0;i<9;i=i+1){
if(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id"));
props.globals.getNode("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/latitude",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude"));
props.globals.getNode("/instrumentation/garmin196/save/waypoints/user/wpt["~i~"]/longitude",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude"));
}
}
for(var i=0;i<6;i=i+1){
if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/name",1).setValue(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name"));
props.globals.getNode("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/max-speed",1).setIntValue(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/max-speed"));
props.globals.getNode("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/cruise-speed",1).setIntValue(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/cruise-speed"));
props.globals.getNode("/instrumentation/garmin196/save/params/aircrafts/aircraft["~i~"]/fuel-flow",1).setDoubleValue(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/fuel-flow"));
}
}
for(var i=0;i<8;i=i+1){
if(getprop("/instrumentation/garmin196/flights/flight["~i~"]/start")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/start",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/start"));
props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/end",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/end"));
props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/date",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/date"));
props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/aircraft",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/aircraft"));
props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/distance",1).setDoubleValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/distance"));
props.globals.getNode("/instrumentation/garmin196/save/flights/flight["~i~"]/duration",1).setDoubleValue(getprop("/instrumentation/garmin196/flights/flight["~i~"]/duration"));
}
}
for(var i=0;i<11;i=i+1){
if(getprop("/instrumentation/garmin196/routes/route["~i~"]/name")!=nil){
props.globals.getNode("/instrumentation/garmin196/save/routes/route["~i~"]/name",1).setValue(getprop("/instrumentation/garmin196/routes/route["~i~"]/name"));
for(var j=0;j<10;j=j+1){
if(getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/id")!=nil){
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"));
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"));
}
}
}
}
##delete file before saving to delete keys
var file = io.open(getprop("/sim/fg-home")~"/aircraft-data/garmin196.xml", mode="w");
io.write(file,"");
io.close(file);
fgcommand("savexml", props.Node.new({ filename: getprop("/sim/fg-home")~"/aircraft-data/garmin196.xml", sourcenode: "/instrumentation/garmin196/save" }));
}
var main_loop = func{
var time = getprop("/sim/time/elapsed-sec");
var dt = time - last_time;
last_time = time;
calcul_turn_rate(dt);
change_speed_display();
change_position_wpt_bug();
update_flight();
update_e6b_menu();
settimer(main_loop, 0.3);
}
var nyi = func (x) { gui.popupTip(x ~ ": not yet implemented", 3); }
var power = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(x==0){
if(serviceable==1){
setprop("/instrumentation/garmin196/serviceable",0);
setprop("/instrumentation/garmin196/status",0);
setprop("/instrumentation/garmin196/popup_status",0);
}else{
setprop("/instrumentation/garmin196/serviceable",1);
setprop("/instrumentation/garmin196/status",1);
}
}
if(x==1 and serviceable==1){
setprop("/instrumentation/garmin196/popup_status",1)
}
}
var in = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(serviceable==1){
var status = getprop("/instrumentation/garmin196/status");
if(x==0){
##traitement des pages
if(status==10){
var range = getprop("/instrumentation/garmin196/map-range");
range = range / 2;
if(range<0.125){
range = 0.125;
}
setprop("/instrumentation/garmin196/map-range",range);
return;
}
}elsif(x==1){
if(getprop("/instrumentation/garmin196/coffee")==2 and status>=10){
setprop("/instrumentation/garmin196/coffee",0);
setprop("/instrumentation/garmin196/status",50);
}
}
}
}
var out = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(serviceable==1){
var status = getprop("/instrumentation/garmin196/status");
if(x==0){
##traitement des pages
if(status==10){
var range = getprop("/instrumentation/garmin196/map-range");
range = range * 2;
if(range>32){
range = 32;
}
setprop("/instrumentation/garmin196/map-range",range);
return;
}
}elsif(x==1){
if(getprop("/instrumentation/garmin196/coffee")==1 and status>=10){
setprop("/instrumentation/garmin196/coffee",2);
}
}
}
}
var page = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(serviceable==1){
var status = getprop("/instrumentation/garmin196/status");
if(x==0){
##traitement des pages
if(status==10){
setprop("/instrumentation/garmin196/status",20);
return;
}
if(status==20){
setprop("/instrumentation/garmin196/status",30);
return;
}
if(status==30){
setprop("/instrumentation/garmin196/status",10);
update_map();
return;
}
if(status==50){
setprop("/instrumentation/garmin196/status",10);
update_map();
return;
}
}elsif(x==1){
if(getprop("/instrumentation/garmin196/coffee")==0 and status>=10){
setprop("/instrumentation/garmin196/coffee",1);
}
}
}
}
var quit = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(serviceable==1){
if(x==0){
#traitement des popup
var popup_status = getprop("/instrumentation/garmin196/popup_status");
if(popup_status==1){
setprop("/instrumentation/garmin196/popup_status",0);
save_parameters();
return;
}
if(popup_status>=10 and popup_status<=99){
setprop("/instrumentation/garmin196/popup_status",0);
return;
}
##traitement des pages
var status = getprop("/instrumentation/garmin196/status");
if(status==10){
setprop("/instrumentation/garmin196/status",30);
return;
}
if(status==20){
setprop("/instrumentation/garmin196/status",10);
update_map();
return;
}
if(status==30){
setprop("/instrumentation/garmin196/status",20);
return;
}
if(status==50){
setprop("/instrumentation/garmin196/status",10);
update_map();
return;
}
if(status==111){
setprop("/instrumentation/garmin196/status",110);
setprop("/instrumentation/garmin196/menu_flights/no_ligne_selected",-1);
return;
}
if(status==112){
setprop("/instrumentation/garmin196/status",111);
return;
}
##menu routes
if(status==121){
setprop("/instrumentation/garmin196/status",120);
setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",-1);
return;
}
if(status==122){
setprop("/instrumentation/garmin196/status",121);
save_parameters();
return;
}
if(status==123){
setprop("/instrumentation/garmin196/status",122);
return;
}
if(status==124){
setprop("/instrumentation/garmin196/status",123);
return;
}
##menu points
if(status==131){
setprop("/instrumentation/garmin196/status",130);
setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",-1);
init_list_points();
return;
}
if(status==132){
setprop("/instrumentation/garmin196/status",131);
return;
}
if(status==133){
setprop("/instrumentation/garmin196/status",132);
return;
}
if(status==134){
setprop("/instrumentation/garmin196/status",133);
return;
}
if(status==135){
setprop("/instrumentation/garmin196/status",134);
return;
}
if(status==136){
setprop("/instrumentation/garmin196/status",135);
return;
}
##menu aircraft
if(status==141){
setprop("/instrumentation/garmin196/status",140);
setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",-1);
init_list_aircraft();
display_list_aircraft();
return;
}
if(status==142){
setprop("/instrumentation/garmin196/status",141);
display_list_aircraft();
return;
}
if(status==143){
setprop("/instrumentation/garmin196/status",142);
return;
}
if(status==144){
setprop("/instrumentation/garmin196/status",143);
return;
}
if(status==145){
setprop("/instrumentation/garmin196/status",144);
return;
}
##menu map
if(status==161){
setprop("/instrumentation/garmin196/status",160);
setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",-1);
return;
}
##menu setup
if(status==171){
setprop("/instrumentation/garmin196/status",170);
setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",-1);
return;
}
if(status==176){
setprop("/instrumentation/garmin196/status",175);
setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",-1);
return;
}
if(status>=100 and status <180){
if(old_status>=10){
status = old_status;
}else{
status = 10;
}
setprop("/instrumentation/garmin196/status",status);
if(status==10){
update_map();
}
return;
}
}
}
}
var enter = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(serviceable==1){
if(x==0){
#traitement des popup
var popup_status = getprop("/instrumentation/garmin196/popup_status");
if(popup_status==1){
setprop("/instrumentation/garmin196/popup_status",0);
save_parameters();
return;
}
if(popup_status==10){
setprop("/instrumentation/garmin196/popup_status",11);
display_dto_search();
return;
}
if(popup_status==11){
if(getprop("/instrumentation/garmin196/dto_display/max_ligne_selected")>=0){
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne[0]/selected",1).setBoolValue(1);
setprop("/instrumentation/garmin196/popup_status",12);
return;
}
}
if(popup_status==12 or popup_status==30){
setprop("/instrumentation/garmin196/popup_status",0);
var id = getprop("/instrumentation/garmin196/dto_display/ligne["~getprop("/instrumentation/garmin196/dto_display/no_ligne_selected")~"]/id");
var type = getprop("/instrumentation/garmin196/dto_display/ligne["~getprop("/instrumentation/garmin196/dto_display/no_ligne_selected")~"]/type");
affectation_waypoint(id);
##rolling recents waypoints
var existe_deja = 0;
for(var i=0;i<5;i=i+1){
if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id")==id){
existe_deja = 1;
break;
}
}
if(existe_deja==0){
for(var i=4;i>0;i=i-1){
if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/id")){
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/id"));
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/type",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/type"));
}
}
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt[0]/id",1).setValue(id);
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt[0]/type",1).setValue(type);
save_parameters();
}
return;
}
if(popup_status==20){
setprop("/instrumentation/garmin196/popup_status",0);
var id = getprop("/instrumentation/garmin196/dto_display/ligne["~getprop("/instrumentation/garmin196/dto_display/no_ligne_selected")~"]/id");
var type = getprop("/instrumentation/garmin196/dto_display/ligne["~getprop("/instrumentation/garmin196/dto_display/no_ligne_selected")~"]/type");
affectation_waypoint(id);
return;
}
if(popup_status>30 and popup_status<=89){
setprop("/instrumentation/garmin196/popup_status",0);
var id = getprop("/instrumentation/garmin196/nrst_display/ligne["~getprop("/instrumentation/garmin196/nrst_display/no_ligne_selected")~"]/id");
var type = getprop("/instrumentation/garmin196/nrst_display/ligne["~getprop("/instrumentation/garmin196/nrst_display/no_ligne_selected")~"]/type");
affectation_waypoint(id);
##rolling recents waypoints
var existe_deja = 0;
for(var i=0;i<5;i=i+1){
if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id")==id){
existe_deja = 1;
break;
}
}
if(existe_deja==0){
for(var i=4;i>0;i=i-1){
if(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/id")){
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/id"));
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt["~i~"]/type",1).setValue(getprop("/instrumentation/garmin196/waypoints/recent/wpt["~(i-1)~"]/type"));
}
}
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt[0]/id",1).setValue(id);
props.globals.getNode("/instrumentation/garmin196/waypoints/recent/wpt[0]/type",1).setValue(type);
save_parameters();
}
return;
}
##validation de la startup page
var status = getprop("/instrumentation/garmin196/status");
if(status==1){
setprop("/instrumentation/garmin196/status",10);
update_map();
return;
}
if(status==110){
if(getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected")>=0){
setprop("/instrumentation/garmin196/menu_flights/no_ligne_selected",0);
setprop("/instrumentation/garmin196/status",111);
}
return;
}
if(status==111){
update_menu_flights_detail();
setprop("/instrumentation/garmin196/status",112);
return;
}
if(status==112){
setprop("/instrumentation/garmin196/status",111);
return;
}
if(status==120){
setprop("/instrumentation/garmin196/status",121);
setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",0);
return;
}
if(status==121){
setprop("/instrumentation/garmin196/status",122);
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
if(getprop("/instrumentation/garmin196/routes/route["~no_ligne~"]/name")==nil){
init_new_route(no_ligne);
}
update_menu_routes_detail();
setprop("/instrumentation/garmin196/menu_routes/no_ligne_detail",0);
return;
}
if(status==122){
setprop("/instrumentation/garmin196/status",123);
var no_ligne_liste = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
var no_ligne_detail = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail");
if(getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/id")==nil){
init_search_route("0");
}else{
init_search_route(getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/id"));
}
setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",-1);
return;
}
if(status==123){
if(getprop("/instrumentation/garmin196/menu_routes/search/max_ligne_selected")>=0){
setprop("/instrumentation/garmin196/status",124);
setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",0);
}
return;
}
if(status==124){
validate_menu_search_routes();
update_menu_routes_detail();
init_menu_routes_list();
setprop("/instrumentation/garmin196/status",122);
return;
}
if(status==130){
setprop("/instrumentation/garmin196/status",131);
setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",0);
return;
}
if(status==131){
setprop("/instrumentation/garmin196/status",132);
var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected");
if(getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/id")==nil){
init_new_point(no_ligne);
}
update_menu_points();
return;
}
if(status==132){
setprop("/instrumentation/garmin196/status",133);
return;
}
if(status==133){
setprop("/instrumentation/garmin196/status",134);
return;
}
if(status==134){
setprop("/instrumentation/garmin196/status",135);
return;
}
if(status==135){
setprop("/instrumentation/garmin196/status",136);
return;
}
if(status==136){
setprop("/instrumentation/garmin196/status",131);
validate_menu_points();
init_list_points();
return;
}
if(status==140){
setprop("/instrumentation/garmin196/status",141);
setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",getprop("/instrumentation/garmin196/no_aircraft"));
display_list_aircraft();
return;
}
if(status==141){
setprop("/instrumentation/garmin196/status",142);
var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected");
if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/name")==nil){
init_new_aircraft(no_ligne);
}
init_menu_aircraft();
return;
}
if(status==142){
setprop("/instrumentation/garmin196/status",143);
return;
}
if(status==143){
setprop("/instrumentation/garmin196/status",144);
return;
}
if(status==144){
setprop("/instrumentation/garmin196/status",145);
return;
}
if(status==145){
setprop("/instrumentation/garmin196/status",141);
validate_menu_aircraft();
init_list_aircraft();
display_list_aircraft();
return;
}
##menu map
if(status==160){
setprop("/instrumentation/garmin196/status",161);
setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",0);
return;
}
if(status==161){
var no_ligne = getprop("/instrumentation/garmin196/menu_map/no_ligne_selected");
if(no_ligne==0){
setprop("/instrumentation/garmin196/symbols/params/airport",(getprop("/instrumentation/garmin196/symbols/params/airport")==1 ? 0 : 1));
}
if(no_ligne==1){
setprop("/instrumentation/garmin196/symbols/params/vor",(getprop("/instrumentation/garmin196/symbols/params/vor")==1 ? 0 : 1));
}
if(no_ligne==2){
setprop("/instrumentation/garmin196/symbols/params/ndb",(getprop("/instrumentation/garmin196/symbols/params/ndb")==1 ? 0 : 1));
}
if(no_ligne==3){
setprop("/instrumentation/garmin196/symbols/params/fix",(getprop("/instrumentation/garmin196/symbols/params/fix")==1 ? 0 : 1));
}
if(no_ligne==4){
setprop("/instrumentation/garmin196/symbols/params/twn",(getprop("/instrumentation/garmin196/symbols/params/twn")==1 ? 0 : 1));
}
if(no_ligne==5){
setprop("/instrumentation/garmin196/symbols/params/wpt",(getprop("/instrumentation/garmin196/symbols/params/wpt")==1 ? 0 : 1));
}
save_parameters();
return;
}
##menu setup
if(status==170){
setprop("/instrumentation/garmin196/status",171);
setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",0);
return;
}
if(status==171){
var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected");
if(no_ligne==0){
setprop("/instrumentation/garmin196/params/units/distance",(getprop("/instrumentation/garmin196/params/units/distance")==1 ? 2 : 1));
}
if(no_ligne==1){
setprop("/instrumentation/garmin196/params/units/speed",(getprop("/instrumentation/garmin196/params/units/speed")==1 ? 2 : 1));
}
if(no_ligne==2){
setprop("/instrumentation/garmin196/params/units/vert-speed",(getprop("/instrumentation/garmin196/params/units/vert-speed")==1 ? 2 : 1));
}
if(no_ligne==3){
setprop("/instrumentation/garmin196/params/units/altitude",(getprop("/instrumentation/garmin196/params/units/altitude")==1 ? 2 : 1));
}
if(no_ligne==4){
setprop("/instrumentation/garmin196/params/units/pressure",(getprop("/instrumentation/garmin196/params/units/pressure")==1 ? 2 : 1));
}
if(no_ligne==5){
setprop("/instrumentation/garmin196/params/units/temperature",(getprop("/instrumentation/garmin196/params/units/temperature")==1 ? 2 : 1));
}
save_parameters();
return;
}
if(status==175){
setprop("/instrumentation/garmin196/status",176);
setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",0);
return;
}
if(status==176){
var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected");
if(no_ligne==0){
setprop("/instrumentation/garmin196/params/filtrage",(getprop("/instrumentation/garmin196/params/filtrage")==0 ? 1 : 0));
}
if(no_ligne==1){
setprop("/instrumentation/garmin196/params/vnav-indicator",(getprop("/instrumentation/garmin196/params/vnav-indicator")==0 ? 1 : 0));
}
save_parameters();
return;
}
}elsif(x==1){
#traitement des popup
var popup_status = getprop("/instrumentation/garmin196/popup_status");
var status = getprop("/instrumentation/garmin196/status");
if(popup_status==0){##pas de popup
if(status>=10 and status<=39){
old_status = status;
setprop("/instrumentation/garmin196/status",132);
setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",0);
var points = props.globals.getNode("/instrumentation/garmin196/waypoints/user/",1).getChildren("wpt");
for(var i=size(points)-1;i>=0;i=i-1){
if(i<8){
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~(i+1)~"]/id",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id"));
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~(i+1)~"]/latitude",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude"));
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~(i+1)~"]/longitude",1).setValue(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude"));
}
}
init_new_point(0);
update_menu_points();
#init_list_points();
}
}
}
}
}
var menu = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
var status = getprop("/instrumentation/garmin196/status");
if(serviceable==1){
if(status>=10 and status<100){
old_status = status;
setprop("/instrumentation/garmin196/status",100);
setprop("/instrumentation/garmin196/popup_status",0);
##particularite map
if(status==10){
setprop("/instrumentation/garmin196/status",160);
setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",-1);
}
}elsif(status>=100){
if(old_status>=10){
status = old_status;
}else{
status = 10;
}
setprop("/instrumentation/garmin196/status",status);
}
}
}
var nrst = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
var status = getprop("/instrumentation/garmin196/status");
if(serviceable==1 and status>1 and status<100){
if(x==0){
setprop("/instrumentation/garmin196/popup_status",40);
display_nrst("airport");
}
}
}
var dto = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
var status = getprop("/instrumentation/garmin196/status");
if(serviceable==1 and status>1 and status<100){
if(x==0){
setprop("/instrumentation/garmin196/popup_status",10);
setprop("/instrumentation/garmin196/dto_display/ligne_select","Press Enter to search");
init_dto_display();
setprop("/instrumentation/garmin196/dto_display/x_char",0);
setprop("/instrumentation/garmin196/dto_display/y_char",0);
}
}
}
var rockerup = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(serviceable==1){
if(x==0){
#traitement des popup
var popup_status = getprop("/instrumentation/garmin196/popup_status");
if(popup_status==1){
var light_level = getprop("/instrumentation/garmin196/light");
light_level = light_level + 0.1;
if(light_level>1){
light_level = 1;
}
setprop("/instrumentation/garmin196/light",light_level);
return;
}
if(popup_status==11){
var y_char = getprop("/instrumentation/garmin196/dto_display/y_char");
y_char = y_char + 1;
if(y_char>35){
y_char = 0;
}
setprop("/instrumentation/garmin196/dto_display/y_char",y_char);
display_dto_search();
return;
}
if(popup_status==12){
var no_ligne = getprop("/instrumentation/garmin196/dto_display/no_ligne_selected");
var old_no_ligne = no_ligne;
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",no_ligne);
if(old_no_ligne!=no_ligne){
setprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/selected",1);
setprop("/instrumentation/garmin196/dto_display/ligne["~old_no_ligne~"]/selected",0);
}
return;
}
if(popup_status==20 or popup_status==30){
var no_ligne = getprop("/instrumentation/garmin196/dto_display/no_ligne_selected");
var old_no_ligne = no_ligne;
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",no_ligne);
setprop("/instrumentation/garmin196/dto_display/ligne_select",getprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/texte"));
if(old_no_ligne!=no_ligne){
setprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/selected",1);
setprop("/instrumentation/garmin196/dto_display/ligne["~old_no_ligne~"]/selected",0);
}
return;
}
if(popup_status>=40 and popup_status<=99){
var no_ligne = getprop("/instrumentation/garmin196/nrst_display/no_ligne_selected");
var old_no_ligne = no_ligne;
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/nrst_display/no_ligne_selected",no_ligne);
setprop("/instrumentation/garmin196/nrst_display/ligne_select",getprop("/instrumentation/garmin196/nrst_display/ligne["~no_ligne~"]/texte"));
if(old_no_ligne!=no_ligne){
setprop("/instrumentation/garmin196/nrst_display/ligne["~no_ligne~"]/selected",1);
setprop("/instrumentation/garmin196/nrst_display/ligne["~old_no_ligne~"]/selected",0);
}
return;
}
##traitement des menus
var status = getprop("/instrumentation/garmin196/status");
if(status>=100 and status<110){
setprop("/instrumentation/garmin196/status",170);
return;
}
if(status==110){
setprop("/instrumentation/garmin196/status",100);
return;
}
if(status==111){
if(getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected")>=0){
var no_ligne = getprop("/instrumentation/garmin196/menu_flights/no_ligne_selected");
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/menu_flights/no_ligne_selected",no_ligne);
}
}
if(status==120){
setprop("/instrumentation/garmin196/status",110);
display_menu_flights();
return;
}
if(status==121){
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",no_ligne);
return;
}
if(status==122){
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail");
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/menu_routes/no_ligne_detail",no_ligne);
return;
}
if(status==123){
var y_char = getprop("/instrumentation/garmin196/menu_routes/search/y_char");
y_char = y_char + 1;
if(y_char>35){
y_char = 0;
}
setprop("/instrumentation/garmin196/menu_routes/search/y_char",y_char);
display_route_waypoint_search();
return;
}
if(status==124){
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected");
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",no_ligne);
return;
}
if(status==130){
setprop("/instrumentation/garmin196/status",120);
init_menu_routes_list();
setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",-1);
return;
}
if(status==131){
var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected");
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",no_ligne);
return;
}
if(status==132){
var y_char = getprop("/instrumentation/garmin196/menu_points/y_char");
y_char = y_char + 1;
if(y_char>35){
y_char = 0;
}
setprop("/instrumentation/garmin196/menu_points/y_char",y_char);
display_menu_points();
return;
}
if(status==133){
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
latitude = latitude + 1;
if(latitude>180){
latitude = 180;
}
setprop("/instrumentation/garmin196/menu_points/latitude",latitude);
display_menu_points();
return;
}
if(status==134){
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
latitude = latitude + .01;
if(latitude>180){
latitude = 180;
}
setprop("/instrumentation/garmin196/menu_points/latitude",latitude);
display_menu_points();
return;
}
if(status==135){
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
longitude = longitude + 1;
if(longitude>180){
longitude = -180;
}
setprop("/instrumentation/garmin196/menu_points/longitude",longitude);
display_menu_points();
return;
}
if(status==136){
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
longitude = longitude + .01;
if(longitude>180){
longitude = -180;
}
setprop("/instrumentation/garmin196/menu_points/longitude",longitude);
display_menu_points();
return;
}
if(status==140){
setprop("/instrumentation/garmin196/status",130);
setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",-1);
init_list_points();
return;
}
if(status==141){
var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected");
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",no_ligne);
display_list_aircraft();
return;
}
if(status==142){
var y_char = getprop("/instrumentation/garmin196/menu_aircraft/y_char");
y_char = y_char + 1;
if(y_char>35){
y_char = 0;
}
setprop("/instrumentation/garmin196/menu_aircraft/y_char",y_char);
display_menu_aircraft_name();
return;
}
if(status==143){
var cruise = getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise");
cruise = cruise + 1;
if(cruise>500){
cruise = 500;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",cruise);
display_menu_aircraft();
return;
}
if(status==144){
var max = getprop("/instrumentation/garmin196/menu_aircraft/selected-max");
max = max + 1;
if(max>500){
max = 500;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-max",max);
display_menu_aircraft();
return;
}
if(status==145){
var fuelflow = getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow");
fuelflow = fuelflow + 0.1;
if(fuelflow>100){
fuelflow = 100;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",fuelflow);
return;
}
if(status==150){
setprop("/instrumentation/garmin196/status",140);
setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",-1);
init_list_aircraft();
display_list_aircraft();
return;
}
if(status==160){
setprop("/instrumentation/garmin196/status",150);
return;
}
if(status==161){
var no_ligne = getprop("/instrumentation/garmin196/menu_map/no_ligne_selected");
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",no_ligne);
return;
}
if(status==170){
setprop("/instrumentation/garmin196/status",160);
setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",-1);
return;
}
if(status==171){
var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected");
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",no_ligne);
return;
}
if(status==176){
var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected");
no_ligne = no_ligne - 1;
if(no_ligne<0){
no_ligne = 0;
}
setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",no_ligne);
return;
}
}elsif(x==1){
#traitement des popup
var popup_status = getprop("/instrumentation/garmin196/popup_status");
if(popup_status==11){
var y_char = getprop("/instrumentation/garmin196/dto_display/y_char");
y_char = y_char + 10;
if(y_char>35){
y_char = y_char-36;
}
setprop("/instrumentation/garmin196/dto_display/y_char",y_char);
display_dto_search();
return;
}
##traitement des menus
var status = getprop("/instrumentation/garmin196/status");
if(status==123){
var y_char = getprop("/instrumentation/garmin196/menu_routes/search/y_char");
y_char = y_char + 10;
if(y_char>35){
y_char = y_char-36;
}
setprop("/instrumentation/garmin196/menu_routes/search/y_char",y_char);
display_route_waypoint_search();
return;
}
if(status==132){
var y_char = getprop("/instrumentation/garmin196/menu_points/y_char");
y_char = y_char + 10;
if(y_char>35){
y_char = y_char-36;
}
setprop("/instrumentation/garmin196/menu_points/y_char",y_char);
display_menu_points();
return;
}
if(status==133){
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
latitude = latitude + 10;
if(latitude>180){
latitude = 180;
}
setprop("/instrumentation/garmin196/menu_points/latitude",latitude);
display_menu_points();
return;
}
if(status==134){
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
latitude = latitude + .1;
if(latitude>180){
latitude = 180;
}
setprop("/instrumentation/garmin196/menu_points/latitude",latitude);
display_menu_points();
return;
}
if(status==135){
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
longitude = longitude + 10;
if(longitude>180){
longitude = -180;
}
setprop("/instrumentation/garmin196/menu_points/longitude",longitude);
display_menu_points();
return;
}
if(status==136){
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
longitude = longitude + .1;
if(longitude>180){
longitude = -180;
}
setprop("/instrumentation/garmin196/menu_points/longitude",longitude);
display_menu_points();
return;
}
if(status==142){
var y_char = getprop("/instrumentation/garmin196/menu_aircraft/y_char");
y_char = y_char + 10;
if(y_char>35){
y_char = y_char-36;
}
setprop("/instrumentation/garmin196/menu_aircraft/y_char",y_char);
display_menu_aircraft_name();
return;
}
if(status==143){
var cruise = getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise");
cruise = cruise + 10;
if(cruise>500){
cruise = 500;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",cruise);
display_menu_aircraft();
return;
}
if(status==144){
var max = getprop("/instrumentation/garmin196/menu_aircraft/selected-max");
max = max + 10;
if(max>500){
max = 500;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-max",max);
display_menu_aircraft();
return;
}
if(status==145){
var fuelflow = getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow");
fuelflow = fuelflow + 1;
if(fuelflow>100){
fuelflow = 100;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",fuelflow);
return;
}
}
}
}
var rockerdown = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(serviceable==1){
if(x==0){
#traitement des popup
var popup_status = getprop("/instrumentation/garmin196/popup_status");
if(popup_status==1){
var light_level = getprop("/instrumentation/garmin196/light");
light_level = light_level - 0.1;
if(light_level<0){
light_level = 0;
}
setprop("/instrumentation/garmin196/light",light_level);
return;
}
if(popup_status==11){
var y_char = getprop("/instrumentation/garmin196/dto_display/y_char");
y_char = y_char - 1;
if(y_char<0){
y_char = 35;
}
setprop("/instrumentation/garmin196/dto_display/y_char",y_char);
display_dto_search();
return;
}
if(popup_status==12){
var no_ligne = getprop("/instrumentation/garmin196/dto_display/no_ligne_selected");
var old_no_ligne = no_ligne;
var max_ligne = getprop("/instrumentation/garmin196/dto_display/max_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>max_ligne){
no_ligne = max_ligne;
}
setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",no_ligne);
if(old_no_ligne!=no_ligne){
setprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/selected",1);
setprop("/instrumentation/garmin196/dto_display/ligne["~old_no_ligne~"]/selected",0);
}
return;
}
if(popup_status==20 or popup_status==30){
var no_ligne = getprop("/instrumentation/garmin196/dto_display/no_ligne_selected");
var old_no_ligne = no_ligne;
var max_ligne = getprop("/instrumentation/garmin196/dto_display/max_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>max_ligne){
no_ligne = max_ligne;
}
setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",no_ligne);
setprop("/instrumentation/garmin196/dto_display/ligne_select",getprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/texte"));
if(old_no_ligne!=no_ligne){
setprop("/instrumentation/garmin196/dto_display/ligne["~no_ligne~"]/selected",1);
setprop("/instrumentation/garmin196/dto_display/ligne["~old_no_ligne~"]/selected",0);
}
return;
}
if(popup_status>=40 and popup_status<=99){
var no_ligne = getprop("/instrumentation/garmin196/nrst_display/no_ligne_selected");
var old_no_ligne = no_ligne;
var max_ligne = getprop("/instrumentation/garmin196/nrst_display/max_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>max_ligne){
no_ligne = max_ligne;
}
setprop("/instrumentation/garmin196/nrst_display/no_ligne_selected",no_ligne);
setprop("/instrumentation/garmin196/nrst_display/ligne_select",getprop("/instrumentation/garmin196/nrst_display/ligne["~no_ligne~"]/texte"));
if(old_no_ligne!=no_ligne){
setprop("/instrumentation/garmin196/nrst_display/ligne["~no_ligne~"]/selected",1);
setprop("/instrumentation/garmin196/nrst_display/ligne["~old_no_ligne~"]/selected",0);
}
return;
}
##traitement des menus
var status = getprop("/instrumentation/garmin196/status");
if(status>=100 and status<110){
setprop("/instrumentation/garmin196/status",110);
display_menu_flights();
return;
}
if(status==110){
setprop("/instrumentation/garmin196/status",120);
init_menu_routes_list();
setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",-1);
return;
}
if(status==111){
if(getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected")>=0){
var no_ligne = getprop("/instrumentation/garmin196/menu_flights/no_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected")){
no_ligne = getprop("/instrumentation/garmin196/menu_flights/max_ligne_selected");
}
setprop("/instrumentation/garmin196/menu_flights/no_ligne_selected",no_ligne);
}
return;
}
if(status==120){
setprop("/instrumentation/garmin196/status",130);
setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",-1);
init_list_points();
return;
}
if(status==121){
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
var max_no_ligne = getprop("/instrumentation/garmin196/menu_routes/max_no_ligne");
no_ligne = no_ligne + 1;
if(no_ligne>max_no_ligne){
no_ligne = max_no_ligne;
}
setprop("/instrumentation/garmin196/menu_routes/no_ligne_selected",no_ligne);
return;
}
if(status==122){
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail");
var max_no_ligne = getprop("/instrumentation/garmin196/menu_routes/max_no_ligne_detail");
no_ligne = no_ligne + 1;
if(no_ligne>max_no_ligne){
no_ligne = max_no_ligne;
}
setprop("/instrumentation/garmin196/menu_routes/no_ligne_detail",no_ligne);
return;
}
if(status==123){
var y_char = getprop("/instrumentation/garmin196/menu_routes/search/y_char");
y_char = y_char - 1;
if(y_char<0){
y_char = 35;
}
setprop("/instrumentation/garmin196/menu_routes/search/y_char",y_char);
display_route_waypoint_search();
return;
}
if(status==124){
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected");
var max_no_ligne = getprop("/instrumentation/garmin196/menu_routes/search/max_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>max_no_ligne){
no_ligne = max_no_ligne;
}
setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",no_ligne);
return;
}
if(status==130){
setprop("/instrumentation/garmin196/status",140);
setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",-1);
init_list_aircraft();
display_list_aircraft();
return;
}
if(status==131){
var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>getprop("/instrumentation/garmin196/menu_points/max_no_ligne")){
no_ligne = getprop("/instrumentation/garmin196/menu_points/max_no_ligne");
}
setprop("/instrumentation/garmin196/menu_points/no_ligne_selected",no_ligne);
return;
}
if(status==132){
var y_char = getprop("/instrumentation/garmin196/menu_points/y_char");
y_char = y_char - 1;
if(y_char<0){
y_char = 35;
}
setprop("/instrumentation/garmin196/menu_points/y_char",y_char);
display_menu_points();
return;
}
if(status==133){
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
latitude = latitude - 1;
if(latitude<-180){
latitude = -180;
}
setprop("/instrumentation/garmin196/menu_points/latitude",latitude);
display_menu_points();
return;
}
if(status==134){
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
latitude = latitude - .01;
if(latitude<-180){
latitude = -180;
}
setprop("/instrumentation/garmin196/menu_points/latitude",latitude);
display_menu_points();
return;
}
if(status==135){
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
longitude = longitude - 1;
if(longitude<-180){
longitude = 180;
}
setprop("/instrumentation/garmin196/menu_points/longitude",longitude);
display_menu_points();
return;
}
if(status==136){
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
longitude = longitude - .01;
if(longitude<-180){
longitude = 180;
}
setprop("/instrumentation/garmin196/menu_points/longitude",longitude);
display_menu_points();
return;
}
if(status==140){
setprop("/instrumentation/garmin196/status",150);
return;
}
if(status==141){
var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>getprop("/instrumentation/garmin196/menu_aircraft/max_no_ligne")){
no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/max_no_ligne");
}
setprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected",no_ligne);
display_list_aircraft();
return;
}
if(status==142){
var y_char = getprop("/instrumentation/garmin196/menu_aircraft/y_char");
y_char = y_char - 1;
if(y_char<0){
y_char = 35;
}
setprop("/instrumentation/garmin196/menu_aircraft/y_char",y_char);
display_menu_aircraft_name();
return;
}
if(status==143){
var cruise = getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise");
cruise = cruise - 1;
if(cruise<1){
cruise = 1;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",cruise);
display_menu_aircraft();
return;
}
if(status==144){
var max = getprop("/instrumentation/garmin196/menu_aircraft/selected-max");
max = max - 1;
if(max<1){
max = 1;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-max",max);
display_menu_aircraft();
return;
}
if(status==145){
var fuelflow = getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow");
fuelflow = fuelflow - 0.1;
if(fuelflow<1){
fuelflow = 1;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",fuelflow);
return;
}
if(status==150){
setprop("/instrumentation/garmin196/status",160);
setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",-1);
return;
}
if(status==160){
setprop("/instrumentation/garmin196/status",170);
return;
}
if(status==161){
var no_ligne = getprop("/instrumentation/garmin196/menu_map/no_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>5){
no_ligne = 5;
}
setprop("/instrumentation/garmin196/menu_map/no_ligne_selected",no_ligne);
return;
}
if(status==170){
setprop("/instrumentation/garmin196/status",100);
return;
}
if(status==171){
var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>5){
no_ligne = 5;
}
setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",no_ligne);
return;
}
if(status==176){
var no_ligne = getprop("/instrumentation/garmin196/menu_setup/no_ligne_selected");
no_ligne = no_ligne + 1;
if(no_ligne>1){
no_ligne = 1;
}
setprop("/instrumentation/garmin196/menu_setup/no_ligne_selected",no_ligne);
return;
}
}elsif(x==1){
#traitement des popup
var popup_status = getprop("/instrumentation/garmin196/popup_status");
if(popup_status==11){
var y_char = getprop("/instrumentation/garmin196/dto_display/y_char");
y_char = y_char - 10;
if(y_char<0){
y_char = y_char + 36;
}
setprop("/instrumentation/garmin196/dto_display/y_char",y_char);
display_dto_search();
return;
}
##traitement des menus
var status = getprop("/instrumentation/garmin196/status");
if(status==123){
var y_char = getprop("/instrumentation/garmin196/menu_routes/search/y_char");
y_char = y_char - 10;
if(y_char<0){
y_char = y_char + 36;
}
setprop("/instrumentation/garmin196/menu_routes/search/y_char",y_char);
display_route_waypoint_search();
return;
}
if(status==132){
var y_char = getprop("/instrumentation/garmin196/menu_points/y_char");
y_char = y_char - 10;
if(y_char<0){
y_char = y_char + 36;
}
setprop("/instrumentation/garmin196/menu_points/y_char",y_char);
display_menu_points();
return;
}
if(status==132){
var y_char = getprop("/instrumentation/garmin196/menu_points/y_char");
y_char = y_char - 1;
if(y_char<0){
y_char = 35;
}
setprop("/instrumentation/garmin196/menu_points/y_char",y_char);
display_menu_points();
return;
}
if(status==133){
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
latitude = latitude - 10;
if(latitude<-180){
latitude = -180;
}
setprop("/instrumentation/garmin196/menu_points/latitude",latitude);
display_menu_points();
return;
}
if(status==134){
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
latitude = latitude - .1;
if(latitude<-180){
latitude = -180;
}
setprop("/instrumentation/garmin196/menu_points/latitude",latitude);
display_menu_points();
return;
}
if(status==135){
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
longitude = longitude - 10;
if(longitude<-180){
longitude = 180;
}
setprop("/instrumentation/garmin196/menu_points/longitude",longitude);
display_menu_points();
return;
}
if(status==136){
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
longitude = longitude - .1;
if(longitude<-180){
longitude = 180;
}
setprop("/instrumentation/garmin196/menu_points/longitude",longitude);
display_menu_points();
return;
}
if(status==142){
var y_char = getprop("/instrumentation/garmin196/menu_aircraft/y_char");
y_char = y_char - 10;
if(y_char<0){
y_char = y_char + 36;
}
setprop("/instrumentation/garmin196/menu_aircraft/y_char",y_char);
display_menu_aircraft_name();
return;
}
if(status==143){
var cruise = getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise");
cruise = cruise - 10;
if(cruise<1){
cruise = 1;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",cruise);
display_menu_aircraft();
return;
}
if(status==144){
var max = getprop("/instrumentation/garmin196/menu_aircraft/selected-max");
max = max - 10;
if(max<1){
max = 1;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-max",max);
display_menu_aircraft();
return;
}
if(status==145){
var fuelflow = getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow");
fuelflow = fuelflow - 1;
if(fuelflow<1){
fuelflow = 1;
}
setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",fuelflow);
return;
}
}
}
}
var rockerleft = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(serviceable==1){
if(x==0){
#traitement des popup
var popup_status = getprop("/instrumentation/garmin196/popup_status");
if(popup_status==10){
setprop("/instrumentation/garmin196/popup_status",30);
setprop("/instrumentation/garmin196/dto_display/ligne_select","");
init_dto_display();
display_dto_user();
return;
}
if(popup_status==11){
var x_char = getprop("/instrumentation/garmin196/dto_display/x_char");
if(x_char>0){
setprop("/instrumentation/garmin196/dto_display/x_char",x_char-1);
setprop("/instrumentation/garmin196/dto_display/y_char",searchLastChar(getprop("/instrumentation/garmin196/dto_display/ligne_select"),getprop("/instrumentation/garmin196/dto_display/x_char")));
display_dto_search();
}
return;
}
if(popup_status==20){
setprop("/instrumentation/garmin196/popup_status",10);
setprop("/instrumentation/garmin196/dto_display/x_char",0);
setprop("/instrumentation/garmin196/dto_display/y_char",0);
setprop("/instrumentation/garmin196/dto_display/ligne_select","Press Enter to search");
init_dto_display();
return;
}
if(popup_status==30){
setprop("/instrumentation/garmin196/popup_status",20);
setprop("/instrumentation/garmin196/dto_display/ligne_select","");
init_dto_display();
display_dto_recent();
return;
}
if(popup_status==40){
setprop("/instrumentation/garmin196/popup_status",80);
display_nrst("wpt");
return;
}
if(popup_status==50){
setprop("/instrumentation/garmin196/popup_status",40);
display_nrst("airport");
return;
}
if(popup_status==60){
setprop("/instrumentation/garmin196/popup_status",50);
display_nrst("vor");
return;
}
if(popup_status==70){
setprop("/instrumentation/garmin196/popup_status",60);
display_nrst("ndb");
return;
}
if(popup_status==80){
setprop("/instrumentation/garmin196/popup_status",70);
display_nrst("fix");
return;
}
var status = getprop("/instrumentation/garmin196/status");
##menu routes
#suppression de la ligne
if(status==121){
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
delete_route(no_ligne);
init_menu_routes_list();
}
if(status==122){
var no_ligne_liste = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
var no_ligne_detail = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail");
delete_route_detail(no_ligne_liste,no_ligne_detail);
update_menu_routes_detail();
return;
}
if(status==123){
var x_char = getprop("/instrumentation/garmin196/menu_routes/search/x_char");
if(x_char>0){
setprop("/instrumentation/garmin196/menu_routes/search/x_char",x_char-1);
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")));
display_route_waypoint_search();
}
return;
}
##menu points
#suppression de la ligne
if(status==131){
var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected");
delete_point(no_ligne);
init_list_points();
}
if(status==132){
var x_char = getprop("/instrumentation/garmin196/menu_points/x_char");
if(x_char>0){
setprop("/instrumentation/garmin196/menu_points/x_char",x_char-1);
setprop("/instrumentation/garmin196/menu_points/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_points/name"),getprop("/instrumentation/garmin196/menu_points/x_char")));
display_menu_points();
}
return;
}
##menu aircraft
#suppression de la ligne
if(status==141){
var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected");
delete_aircraft(no_ligne);
init_list_aircraft();
display_list_aircraft();
}
if(status==142){
var x_char = getprop("/instrumentation/garmin196/menu_aircraft/x_char");
if(x_char>0){
setprop("/instrumentation/garmin196/menu_aircraft/x_char",x_char-1);
setprop("/instrumentation/garmin196/menu_aircraft/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_aircraft/selected-name"),getprop("/instrumentation/garmin196/menu_aircraft/x_char")));
display_menu_aircraft_name();
}
return;
}
if(status==175){
setprop("/instrumentation/garmin196/status",170);
}
}
}
}
var rockerright = func (x){
var serviceable = getprop("/instrumentation/garmin196/serviceable");
if(serviceable==1){
if(x==0){
#traitement des popup
var popup_status = getprop("/instrumentation/garmin196/popup_status");
if(popup_status==10){
setprop("/instrumentation/garmin196/popup_status",20);
setprop("/instrumentation/garmin196/dto_display/ligne_select","");
init_dto_display();
display_dto_recent();
return;
}
if(popup_status==11){
var x_char = getprop("/instrumentation/garmin196/dto_display/x_char");
if(x_char<20){
setprop("/instrumentation/garmin196/dto_display/x_char",x_char+1);
display_dto_search();
}
return;
}
if(popup_status==20){
setprop("/instrumentation/garmin196/popup_status",30);
setprop("/instrumentation/garmin196/dto_display/ligne_select","");
init_dto_display();
display_dto_user();
return;
}
if(popup_status==30){
setprop("/instrumentation/garmin196/popup_status",10);
setprop("/instrumentation/garmin196/dto_display/ligne_select","Press Enter to search");
init_dto_display();
setprop("/instrumentation/garmin196/dto_display/x_char",0);
setprop("/instrumentation/garmin196/dto_display/y_char",0);
return;
}
if(popup_status==40){
setprop("/instrumentation/garmin196/popup_status",50);
display_nrst("vor");
return;
}
if(popup_status==50){
setprop("/instrumentation/garmin196/popup_status",60);
display_nrst("ndb");
return;
}
if(popup_status==60){
setprop("/instrumentation/garmin196/popup_status",70);
display_nrst("fix");
return;
}
if(popup_status==70){
setprop("/instrumentation/garmin196/popup_status",80);
display_nrst("wpt");
return;
}
if(popup_status==80){
setprop("/instrumentation/garmin196/popup_status",40);
display_nrst("airport");
return;
}
var status = getprop("/instrumentation/garmin196/status");
##menu routes
if(status==121){
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
if(getprop("/instrumentation/garmin196/routes/route["~no_ligne~"]/name")!=nil){
load_flight_plan(no_ligne);
affiche_fpl_loaded();
}
return;
}
if(status==122){
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
var no_ligne_detail = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail");
if(getprop("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/wpt["~no_ligne_detail~"]/id")!=nil){
jump_to_waypoint(no_ligne_detail);
affiche_waypoint_jump();
}
return;
}
if(status==123){
var x_char = getprop("/instrumentation/garmin196/menu_routes/search/x_char");
if(x_char<20){
setprop("/instrumentation/garmin196/menu_routes/search/x_char",x_char+1);
display_route_waypoint_search();
}
return;
}
##menu points
if(status==132){
var x_char = getprop("/instrumentation/garmin196/menu_points/x_char");
if(x_char<20){
setprop("/instrumentation/garmin196/menu_points/x_char",x_char+1);
display_menu_points();
}
return;
}
##menu aircraft
if(status==142){
var x_char = getprop("/instrumentation/garmin196/menu_aircraft/x_char");
if(x_char<20){
setprop("/instrumentation/garmin196/menu_aircraft/x_char",x_char+1);
display_menu_aircraft_name();
}
return;
}
if(status==170){
setprop("/instrumentation/garmin196/status",175);
}
}
}
}
##recalc speed to display
var change_speed_display = func{
var max_speed = getprop("/instrumentation/garmin196/max-speed");
var speed = getprop("/instrumentation/gps/indicated-ground-speed-kt");
setprop("/instrumentation/garmin196/speed-display",315*speed/max_speed);
}
##calcul du turn rate
var calcul_turn_rate = func(dt){
if(last_bearing==-1){
last_bearing = getprop("/instrumentation/gps/magnetic-bug-error-deg");
}
bearing = getprop("/instrumentation/gps/magnetic-bug-error-deg");
var turn_rate = abs(bearing - last_bearing);
if(turn_rate>180){
turn_rate = 360 - turn_rate;
}
var sgn = 1;
if(bearing - last_bearing<0){
sgn = -1;
}
turn_rate = turn_rate/dt;
if(turn_rate<10){##pour enlever les valeurs aberentes
props.globals.getNode("/instrumentation/garmin196/turn-rate",1).setDoubleValue(sgn*turn_rate);
}
last_bearing = bearing;
}
var change_wpt_id = func{
if(getprop("/instrumentation/gps/mode")!=nil and getprop("/autopilot/route-manager/wp[0]/id")!=""){
props.global.getNode("/instrumentation/garmin196/panel-wpt-id").alias("/autopilot/route-manager/wp[0]/id");
}else{
setprop("/instrumentation/garmin196/panel-wpt-id",getprop("/instrumentation/garmin196/panel-wpt-dto-id"));
}
}
setlistener("/instrumentation/gps/mode",change_wpt_id);
var change_position_wpt_bug = func{
var wpt_bearing = getprop("/instrumentation/gps/wp/wp[1]/bearing-mag-deg");
var aircraft_bearing = getprop("/instrumentation/gps/indicated-track-magnetic-deg");
var diff = wpt_bearing - aircraft_bearing;
setprop("/instrumentation/garmin196/position-wpt-bearing",diff);
setprop("/instrumentation/garmin196/panel-wpt-bearing",diff);
var nb_wpt = getprop("/autopilot/route-manager/route/num");
var no_wpt = getprop("/autopilot/route-manager/current-wp");
var panel_course = 0;
if(no_wpt>0 and no_wpt<(nb_wpt-1)){
panel_course = getprop("/autopilot/route-manager/route/wp["~(no_wpt-1)~"]/leg-bearing-true-deg");
}else{
panel_course = getprop("/instrumentation/gps/wp/wp[1]/bearing-mag-deg");
}
panel_course = panel_course - aircraft_bearing;
var panel_deflexion = diff - panel_course;
if(math.cos(diff*math.pi/180)>0){
setprop("/instrumentation/garmin196/panel-neddle-to-flag",1);
}else{
setprop("/instrumentation/garmin196/panel-neddle-to-flag",0);
}
if(panel_deflexion>10){
panel_deflexion = 10;
}
if(panel_deflexion<-10){
panel_deflexion = -10;
}
setprop("/instrumentation/garmin196/panel-neddle-course",panel_course);
setprop("/instrumentation/garmin196/panel-neddle-deflexion",panel_deflexion);
##vnav
var altitude_id = getprop("/instrumentation/garmin196/vnav/altitude-m");
var latitude_id = getprop("/instrumentation/garmin196/vnav/latitude");
var longitude_id = getprop("/instrumentation/garmin196/vnav/longitude");
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){
var altitude_aircraft = getprop("/instrumentation/gps/indicated-altitude-ft") * 0.3048;
var latitude_aircraft = getprop("/instrumentation/gps/indicated-latitude-deg");
var longitude_aircraft = getprop("/instrumentation/gps/indicated-longitude-deg");
var coord_id = geo.Coord.new().set_latlon(latitude_id,longitude_id);
var coord_aircraft = geo.Coord.new().set_latlon(latitude_aircraft,longitude_aircraft);
var distance = coord_aircraft.distance_to(coord_id);## en metres
var diff_altitude = altitude_aircraft - altitude_id;
var angle = math.atan2(diff_altitude,distance)*180/math.pi;
#setprop("/instrumentation/garmin196/vnav/angle",angle);
var deviation = angle - 3;#pente ideale = 3 degres
if(deviation>10){
deviation = 10;
}
if(deviation<-10){
deviation = -10;
}
setprop("/instrumentation/garmin196/vnav/deviation",deviation);
}else{
setprop("/instrumentation/garmin196/vnav/deviation",0);
}
}
var update_map = func{
##protection, une seule recherche gps a la fois, la popup devient prioritaire
var popup_status = getprop("/instrumentation/garmin196/popup_status");
if(popup_status<10 or popup_status>99){
var max_plots = 25;
var offset_mul = 0.034;
var symbol_map_range = getprop("/instrumentation/garmin196/map-range") * 8;
var plots = [];
var type_symbol = [ "airport" , "vor" , "ndb" , "fix" , "twn" , "wpt"];
for(var i=0;i<size(type_symbol);i=i+1){
if(getprop("/instrumentation/garmin196/symbols/params/"~type_symbol[i])==1){
if(type_symbol[i]=="twn" or type_symbol[i]=="wpt"){
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(max_plots*8 + 1);
}else{
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(max_plots*4 + 1);
}
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
var type = type_symbol[i];
if(type == "twn"){
type = "wpt";
}
setprop("/instrumentation/gps/scratch/type", type);
setprop("/instrumentation/gps/command", "nearest");
while (getprop('/instrumentation/gps/scratch/has-next')) {
var id = getprop('/instrumentation/gps/scratch/ident');
var range = getprop('/instrumentation/gps/scratch/distance-nm') / symbol_map_range;
var bearing = 360 - getprop("/instrumentation/gps/indicated-track-magnetic-deg") + getprop('/instrumentation/gps/scratch/mag-bearing-deg');
if(bearing<0){
bearing = bearing + 360;
}
if(bearing>360){
bearing = bearing - 360;
}
if(i==1){##vor
id = id ~ " " ~ sprintf("%2.2f",getprop('/instrumentation/gps/scratch/frequency-mhz'));
}
if(i==2){##ndb
id = id ~ " " ~ sprintf("%2.1f",getprop('/instrumentation/gps/scratch/frequency-khz'));
}
var plot = { id: id,bearing: bearing,type: i,range: range};
if(range<=1){
if(i<4){
append(plots,plot);
}elsif(i==4 and substr(id,size(id)-6)=="WPTTWN"){
append(plots,plot);
}elsif(i==5 and substr(id,size(id)-6)=="WPTUSR"){
append(plots,plot);
}
}else{
break;
}
setprop("/instrumentation/gps/command", "next");
}
}
}
var plots_sorted = sort (plots, func (a,b) a.range - b.range);
##suppression des points les plus proches si il y en a de trop
var filtrage = getprop("/instrumentation/garmin196/params/filtrage");
if(filtrage==1){
var nb_points = 0;
for(var i=0;i<size(plots_sorted);i=i+1){
if(plots_sorted[i].range<0.25){#un quart d'ecran
nb_points = nb_points + 1;
}else{
break;
}
}
if(nb_points>5){
plots_sorted = subvec(plots_sorted,nb_points);
}
}
var nb_plots = max_plots;
if(nb_plots>size(plots_sorted)){
nb_plots = size(plots_sorted);
}
for(var i=0;i<nb_plots;i=i+1){
if(plots_sorted[i].type==4 or plots_sorted[i].type==5){##town or waypoint
var type_wpt = substr(plots_sorted[i].id,size(plots_sorted[i].id)-6);
if(type_wpt=="WPTTWN"){#cities
plots_sorted[i].id = substr(plots_sorted[i].id,0,size(plots_sorted[i].id)-8);
}elsif(type_wpt=="WPTUSR"){#wpt user
plots_sorted[i].id = substr(plots_sorted[i].id,0,size(plots_sorted[i].id)-6);
plots_sorted[i].type = 5;
}
}
props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/id",1).setValue(plots_sorted[i].id);
props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/type",1).setValue(plots_sorted[i].type);
##calcul des coordonnees
var x_wp = math.cos(plots_sorted[i].bearing*math.pi/180) * plots_sorted[i].range * offset_mul;
var y_wp = math.sin(plots_sorted[i].bearing*math.pi/180) * plots_sorted[i].range * offset_mul;
props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/x",1).setDoubleValue(x_wp);
props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/y",1).setDoubleValue(y_wp);
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
props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/visible",1).setBoolValue(1);
}else{
props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/visible",1).setBoolValue(0);
}
}
for(var i=nb_plots;i<max_plots;i=i+1){
props.globals.getNode("/instrumentation/garmin196/symbols/symbol["~i~"]/visible",1).setIntValue(0);
}
##wpt path calculations
var offset_range_wp_direct = 0.19;
var range_wp_direct = offset_range_wp_direct * getprop("/instrumentation/gps/wp/wp[1]/distance-nm") / symbol_map_range;
var bearing_wp_direct = getprop("/instrumentation/garmin196/panel-wpt-bearing");
var x_range_wp_direct = math.abs(math.cos(bearing_wp_direct*math.pi/180) * range_wp_direct); #max 0.15
if(x_range_wp_direct>0.15){
range_wp_direct = math.abs(0.15 / math.cos(bearing_wp_direct*math.pi/180));
}
var y_range_wp_direct = math.abs(math.sin(bearing_wp_direct*math.pi/180) * range_wp_direct); #max 0.18
if(y_range_wp_direct>0.18){
range_wp_direct = math.abs(0.18 / math.sin(bearing_wp_direct*math.pi/180));
}
setprop("/instrumentation/garmin196/symbols/paths/range_wp_direct/range",range_wp_direct);
if(getprop("/instrumentation/garmin196/panel-wpt-id")!=nil and getprop("/instrumentation/garmin196/panel-wpt-id")!="------"){
setprop("/instrumentation/garmin196/symbols/paths/range_wp_direct/visible",1);
}else{
setprop("/instrumentation/garmin196/symbols/paths/range_wp_direct/visible",0);
}
##flight plan calculation
var nb_path = getprop("/autopilot/route-manager/route/num");
if(nb_path>9){
nb_path = 9;
}
var aircraft_bearing = getprop("/instrumentation/gps/indicated-track-magnetic-deg");
for(var i=0;i<(nb_path-1);i=i+1){
var id = getprop("/autopilot/route-manager/route/wp["~i~"]/id");
setprop("/instrumentation/gps/scratch/max-results",1);
setprop("/instrumentation/gps/scratch/longitude-deg",-9999);
setprop("/instrumentation/gps/scratch/latitude-deg",-9999);
setprop("/instrumentation/gps/scratch/type", "");
setprop("/instrumentation/gps/scratch/query", id);
setprop("/instrumentation/gps/command", "search");
if(getprop("/instrumentation/gps/scratch/valid")==0 or getprop("/instrumentation/gps/scratch/ident")!=id){
setprop("/instrumentation/gps/scratch/type", "fix");
setprop("/instrumentation/gps/scratch/query", id);
setprop("/instrumentation/gps/command", "search");
}
var distance_to_wp = getprop("/instrumentation/gps/scratch/distance-nm") / symbol_map_range;
var bearing_to_wp = 360 - getprop("/instrumentation/gps/indicated-track-magnetic-deg") + getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var x_wp_fpl = math.cos(bearing_to_wp*math.pi/180) * distance_to_wp * offset_mul;
var y_wp_fpl = math.sin(bearing_to_wp*math.pi/180) * distance_to_wp * offset_mul;
setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/x",x_wp_fpl);
setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/y",y_wp_fpl);
var wp_bearing = 360 - getprop("/instrumentation/gps/indicated-track-true-deg") + getprop("/autopilot/route-manager/route/wp["~i~"]/leg-bearing-true-deg");
var wp_distance = offset_range_wp_direct * getprop("/autopilot/route-manager/route/wp["~i~"]/leg-distance-nm") / symbol_map_range;
var x_range_wp =(math.cos(wp_bearing*math.pi/180) * wp_distance) + ((x_wp_fpl/0.026)*0.15); #max 0.15
if(math.abs(x_range_wp)>0.15){
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));
}
var y_range_wp =(math.sin(wp_bearing*math.pi/180) * wp_distance) + ((y_wp_fpl/0.0323)*0.18); #max 0.18
if(math.abs(y_range_wp)>0.18){
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));
}
setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/range",wp_distance);
setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/bearing",wp_bearing);
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
setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/visible",1);
}else{
setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/visible",0);
}
}
for(var i=nb_path;i<9;i=i+1){
setprop("/instrumentation/garmin196/symbols/paths/range_wp_"~i~"_"~(i+1)~"/visible",0);
}
}
if(getprop("/instrumentation/garmin196/serviceable")==1 and getprop("/instrumentation/garmin196/status")==10){
settimer(update_map,1);
}
}
var display_dto_recent = func{
var waypoints = props.globals.getNode("/instrumentation/garmin196/waypoints/recent/",1);
var i = 0;
foreach (var e; waypoints.getChildren("wpt")) {
var id = e.getChild("id").getValue();
var type = e.getChild("type").getValue();
var ligne = id;
if(type=="wpt"){
var type_wpt = substr(id,size(id)-6);
if(type_wpt=="WPTTWN"){#cities
ligne = substr(id,0,size(id)-8);
ligne = substr(ligne,0,15);
}elsif(type_wpt=="WPTUSR"){#wpt user
ligne = substr(id,0,size(id)-6);
}
}
ligne = ligne ~ " " ~ type;
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,15-size(ligne));
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(1);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
setprop("/instrumentation/gps/scratch/type", type);
setprop("/instrumentation/gps/scratch/query", id);
setprop("/instrumentation/gps/command", "search");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
if(i==0){
setprop("/instrumentation/garmin196/dto_display/ligne_select",ligne);
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(1);
}else{
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(0);
}
setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/texte",ligne);
setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/id",id);
setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/type",type);
i=i+1;
}
for(var j=i;j<5;j=j+1){
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/texte","");
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~j~"]/selected",1).setBoolValue(0);
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/id","");
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/type","");
}
setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",0);
setprop("/instrumentation/garmin196/dto_display/max_ligne_selected",i-1);
if(i==0){
setprop("/instrumentation/garmin196/dto_display/ligne_select","");
}
}
var display_dto_user = func{
var waypoints = props.globals.getNode("/instrumentation/garmin196/waypoints/user/",1);
var i = 0;
foreach (var e; waypoints.getChildren("wpt")) {
var id = e.getChild("id").getValue()~"WPTUSR";
var type = "wpt";
var ligne = substr(id,0,size(id)-6);
ligne = substr(ligne,0,14);
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,14-size(ligne));
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(1);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
setprop("/instrumentation/gps/scratch/type", type);
setprop("/instrumentation/gps/scratch/query", id);
setprop("/instrumentation/gps/command", "search");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
if(i==0){
setprop("/instrumentation/garmin196/dto_display/ligne_select",ligne);
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(1);
}else{
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(0);
}
setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/texte",ligne);
setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/id",id);
setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/type",type);
i=i+1;
}
for(var j=i;j<5;j=j+1){
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/texte","");
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~j~"]/selected",1).setBoolValue(0);
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/id","");
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/type","");
}
setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",0);
setprop("/instrumentation/garmin196/dto_display/max_ligne_selected",i-1);
if(i==0){
setprop("/instrumentation/garmin196/dto_display/ligne_select","");
}
}
var affectation_waypoint = func(id){
setprop("/autopilot/route-manager/input","@CLEAR");
setprop("/autopilot/route-manager/input","@POP");
setprop("/autopilot/route-manager/input","@insert0:"~id);
setprop("/autopilot/route-manager/input","@JUMP0");
setprop("/autopilot/route-manager/input","@ACTIVATE");
}
var display_dto_search = func{
var ligne_selected = getprop("/instrumentation/garmin196/dto_display/ligne_select");
var x_char = props.globals.getNode("/instrumentation/garmin196/dto_display/x_char").getValue();
ligne_selected = substr(ligne_selected,0,x_char);
ligne_selected = ligne_selected ~ tab_chiffres_lettres[getprop("/instrumentation/garmin196/dto_display/y_char")];
setprop("/instrumentation/garmin196/dto_display/ligne_select",ligne_selected);
var plots = [];
##recherche gps globale
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0);
props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("");
setprop("/instrumentation/gps/command", "search");
var i=0;
var flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var type = getprop("/instrumentation/gps/scratch/type");
var ligne = id;
if(type=="waypoint"){
type = "wpt";
var type_wpt = substr(id,size(id)-6);
if(type_wpt=="WPTTWN"){#cities
ligne = substr(id,0,size(id)-8);
}elsif(type_wpt=="WPTUSR"){#wpt user
ligne = substr(id,0,size(id)-6);
}
}
ligne = ligne ~ " " ~ type;
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,16-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
var popup_status = getprop("/instrumentation/garmin196/popup_status");
var plot = { id: id,texte: ligne,type: type};
append(plots,plot);
i=i+1;
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
##recherche gps fix
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0);
props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("fix");
setprop("/instrumentation/gps/command", "search");
i=0;
flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var type = getprop("/instrumentation/gps/scratch/type");
var ligne = id ~ " " ~ type;
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,16-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
var popup_status = getprop("/instrumentation/garmin196/popup_status");
var plot = { id: id,texte: ligne,type: type};
append(plots,plot);
i=i+1;
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
##recherche gps vor
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0);
props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("vor");
setprop("/instrumentation/gps/command", "search");
i=0;
flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var type = getprop("/instrumentation/gps/scratch/type");
var ligne = id ~ " vor";
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,16-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
var popup_status = getprop("/instrumentation/garmin196/popup_status");
var plot = { id: id,texte: ligne,type: type};
append(plots,plot);
i=i+1;
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
##recherche gps ndb
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0);
props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("ndb");
setprop("/instrumentation/gps/command", "search");
i=0;
flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var type = getprop("/instrumentation/gps/scratch/type");
var ligne = id ~ " ndb";
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,16-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
var popup_status = getprop("/instrumentation/garmin196/popup_status");
var plot = { id: id,texte: ligne,type: type};
append(plots,plot);
i=i+1;
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
var plots_sorted = sort (plots, func (a,b) cmp (a.id, b.id));
var nb_plots = size(plots_sorted);
if(nb_plots>5){
nb_plots = 5;
}
for(var j=0;j<nb_plots;j=j+1){
if(i==0 and popup_status!=10 and popup_status!=11){
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(1);
}else{
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(0);
}
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/texte",plots_sorted[j].texte);
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/id",plots_sorted[j].id);
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/type",plots_sorted[j].type);
}
for(var j=nb_plots;j<5;j=j+1){
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/texte","");
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~j~"]/selected",1).setBoolValue(0);
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/id","");
setprop("/instrumentation/garmin196/dto_display/ligne["~j~"]/type","");
}
setprop("/instrumentation/garmin196/dto_display/no_ligne_selected",0);
setprop("/instrumentation/garmin196/dto_display/max_ligne_selected",nb_plots-1);
}
var searchLastChar = func(chaine, char){
var result = -1;
var char_a_tester = substr(chaine,char,1);
for(var i=0;i<size(tab_chiffres_lettres);i=i+1){
if(tab_chiffres_lettres[i]==char_a_tester){
result = i;
break;
}
}
return result;
}
var init_dto_display = func{
for(var i=0;i<5;i=i+1){
setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/texte","");
props.globals.getNode("/instrumentation/garmin196/dto_display/ligne["~i~"]/selected",1).setBoolValue(0);
setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/id","");
setprop("/instrumentation/garmin196/dto_display/ligne["~i~"]/type","");
}
}
var init_nrst_display = func{
for(var i=0;i<5;i=i+1){
setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/texte","");
props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(0);
setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/id","");
setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/type","");
}
}
var display_nrst = func(type){
if(type=="wpt"){
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(25);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
#props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(1);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue(type);
setprop("/instrumentation/gps/command", "nearest");
var i=0;
var flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var type_wpt = substr(id,size(id)-6);
if(type_wpt=="WPTTWN"){
var ligne = substr(id,0,size(id)-8);
}elsif(type_wpt=="WPTUSR"){
var ligne = substr(id,0,size(id)-6);
}
ligne = substr(ligne,0,18);
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,18-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
if(i==0){
setprop("/instrumentation/garmin196/nrst_display/ligne_select",ligne);
props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(1);
}else{
props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(0);
}
setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/texte",ligne);
setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/id",id);
setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/type",type);
i=i+1;
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
setprop("/instrumentation/garmin196/nrst_display/no_ligne_selected",0);
setprop("/instrumentation/garmin196/nrst_display/max_ligne_selected",(i-1));
}else{
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(6);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
#props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(1);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue(type);
props.globals.getNode("/instrumentation/gps/scratch").removeChildren("runways");
setprop("/instrumentation/gps/command", "nearest");
var i=0;
var flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var ligne = id;
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,6-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
if(type=="airport"){
var runways = props.globals.getNode("/instrumentation/gps/scratch",1);
var max_length = 0;
foreach (var e; runways.getChildren("runways")) {
var runway_length = e.getChild("length-ft").getValue();
if(runway_length>max_length){
max_length = runway_length;
}
}
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~ " " ~ sprintf("%4.0fft",max_length);
}else{
ligne = ligne ~ " " ~ sprintf("%4.0fm",max_length*0.3048);
}
var radio = airportinfo(id).comms('ATIS');
if(size(radio) > 0){
ligne = ligne ~ sprintf(" %3.2f",radio[0]);
}
}elsif(type=="vor"){
ligne = ligne ~ " " ~ sprintf("%2.2f",getprop('/instrumentation/gps/scratch/frequency-mhz'));
}elsif(type=="ndb"){
ligne = ligne ~ " " ~ sprintf("%2.1f",getprop('/instrumentation/gps/scratch/frequency-khz'));
}
if(i==0){
setprop("/instrumentation/garmin196/nrst_display/ligne_select",ligne);
props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(1);
}else{
props.globals.getNode("/instrumentation/garmin196/nrst_display/ligne["~i~"]/selected",1).setBoolValue(0);
}
setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/texte",ligne);
setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/id",id);
setprop("/instrumentation/garmin196/nrst_display/ligne["~i~"]/type",type);
i=i+1;
props.globals.getNode("/instrumentation/gps/scratch").removeChildren("runways");
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
setprop("/instrumentation/garmin196/nrst_display/no_ligne_selected",0);
setprop("/instrumentation/garmin196/nrst_display/max_ligne_selected",(i-1));
}
}
var load_cities = func{
print("Garmin 196 loading cities");
fgcommand("loadxml", props.Node.new({ filename: getprop("/sim/fg-root")~"/Aircraft/Instruments-3d/garmin196/cities.xml", targetnode: "/instrumentation/garmin196/cities" }));
var waypoints = props.globals.getNode("/instrumentation/garmin196/cities/waypoints",1);
foreach (var e; waypoints.getChildren("waypoint")) {
var id = e.getChild("id").getValue();
var latitude = e.getChild("latitude").getValue();
var longitude = e.getChild("longitude").getValue();
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(longitude);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(latitude);
props.globals.getNode("/instrumentation/gps/scratch/ident",1).setValue(id);
#setprop("/instrumentation/gps/command","define-user-wpt");
}
props.globals.getNode("/instrumentation/garmin196").removeChildren("cities");
print("Garmin 196 loading cities done");
}
var update_wp_id_display=func{
var id=getprop("/autopilot/route-manager/wp[0]/id");
if(size(id)>6){
var type_wpt=substr(id,size(id)-6);
if(type_wpt=="WPTTWN"){#cities
id=substr(id,0,size(id)-8);
id=substr(id,0,13);
}elsif(type_wpt=="WPTUSR"){#wpt user
id=substr(id,0,size(id)-6);
}
}
setprop("/instrumentation/garmin196/panel-wpt-id",id);
setprop("/instrumentation/garmin196/position-wpt-id",id);
##stockage des coordonnees pour la vnav
setprop("/instrumentation/gps/scratch/max-results",1);
setprop("/instrumentation/gps/scratch/longitude-deg",-9999);
setprop("/instrumentation/gps/scratch/latitude-deg",-9999);
setprop("/instrumentation/gps/scratch/type", "");
setprop("/instrumentation/gps/scratch/query", id);
setprop("/instrumentation/gps/command", "search");
if(getprop("/instrumentation/gps/scratch/type")=="airport"){
##stockage des coordonnees du waypoint pour vnav
props.globals.getNode("/instrumentation/garmin196/vnav/longitude",1).setDoubleValue(getprop("/instrumentation/gps/scratch/longitude-deg"));
props.globals.getNode("/instrumentation/garmin196/vnav/latitude",1).setDoubleValue(getprop("/instrumentation/gps/scratch/latitude-deg"));
props.globals.getNode("/instrumentation/garmin196/vnav/altitude-m",1).setDoubleValue(getprop("/instrumentation/gps/scratch/altitude-ft") * 0.3048);
props.globals.getNode("/instrumentation/garmin196/vnav/visible",1).setBoolValue(1);
}else{
props.globals.getNode("/instrumentation/garmin196/vnav/visible",1).setBoolValue(0);
}
}
setlistener("/autopilot/route-manager/wp[0]/id",update_wp_id_display);
var init_list_aircraft = func{
var aircrafts = props.globals.getNode("/instrumentation/garmin196/params/aircrafts",1);
var i = 0;
foreach (var e; aircrafts.getChildren("aircraft")) {
setprop("/instrumentation/garmin196/menu_aircraft/aircraft["~i~"]/texte",e.getChild("name").getValue());
i=i+1;
}
for(var j=i;j<6;j=j+1){
setprop("/instrumentation/garmin196/menu_aircraft/aircraft["~j~"]/texte","");
}
if(i<6){
setprop("/instrumentation/garmin196/menu_aircraft/aircraft["~i~"]/texte","ENTER TO ADD AIRCRAFT");
}else{
i=5;
}
setprop("/instrumentation/garmin196/menu_aircraft/max_no_ligne",i);
}
var init_new_aircraft = func(no_aircraft){
props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/name", 1).setValue("AIRCRAFT");
props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/max-speed", 1).setIntValue(150);
props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/cruise-speed", 1).setIntValue(120);
props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/fuel-flow", 1).setIntValue(5);
}
var delete_aircraft = func(no_aircraft){
for(var i=no_aircraft+1;i<6;i=i+1){
if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name")!=nil){
setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~(i-1)~"]/name",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/name"));
setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~(i-1)~"]/max-speed",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/max-speed"));
setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~(i-1)~"]/cruise-speed",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/cruise-speed"));
setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~(i-1)~"]/fuel-flow",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~i~"]/fuel-flow"));
}
}
var nb_aircraft = size(props.globals.getNode("/instrumentation/garmin196/params/aircrafts",1).getChildren("aircraft"));
if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/name")!=nil){
props.globals.getNode("/instrumentation/garmin196/params/aircrafts/aircraft["~(nb_aircraft-1)~"]").remove();
}
setprop("/instrumentation/garmin196/no_aircraft",no_aircraft-1);
save_parameters();
}
var display_list_aircraft = func{
var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected");
if(no_ligne==-1){
no_ligne = getprop("/instrumentation/garmin196/no_aircraft");
}
var aircraft_display = "";
if(getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/max-speed")!=nil){
var max_speed = getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/max-speed");
var name = getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/name");
setprop("/instrumentation/garmin196/max-speed",max_speed);
setprop("/instrumentation/garmin196/cruise-speed",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/cruise-speed"));
setprop("/instrumentation/garmin196/fuel-flow",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/fuel-flow"));
setprop("/instrumentation/garmin196/no_aircraft",no_ligne);
aircraft_display = name ~ " vmax=";
if(getprop("/instrumentation/garmin196/params/units/speed")==1){
aircraft_display = aircraft_display ~ max_speed ~"kt";
}else{
aircraft_display = aircraft_display ~ sprintf("%3.0f",(max_speed*1.852)) ~"km/h";
}
}else{
aircraft_display = "NEW AIRCRAFT";
}
setprop("/instrumentation/garmin196/menu_aircraft/text",aircraft_display);
}
var init_menu_aircraft = func{
var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected");
setprop("/instrumentation/garmin196/menu_aircraft/selected-name",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/name"));
setprop("/instrumentation/garmin196/menu_aircraft/selected-max",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/max-speed"));
setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/cruise-speed"));
setprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow",getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/fuel-flow"));
setprop("/instrumentation/garmin196/menu_aircraft/x_char",size(getprop("/instrumentation/garmin196/menu_aircraft/selected-name"))-1);
setprop("/instrumentation/garmin196/menu_aircraft/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_aircraft/selected-name"),getprop("/instrumentation/garmin196/menu_aircraft/x_char")));
display_menu_aircraft();
}
var validate_menu_aircraft=func{
var no_ligne = getprop("/instrumentation/garmin196/menu_aircraft/no_ligne_selected");
setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/name",getprop("/instrumentation/garmin196/menu_aircraft/selected-name"));
setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/max-speed",getprop("/instrumentation/garmin196/menu_aircraft/selected-max"));
setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/cruise-speed",getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise"));
setprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_ligne~"]/fuel-flow",getprop("/instrumentation/garmin196/menu_aircraft/selected-fuelflow"));
save_parameters();
}
var display_menu_aircraft=func{
if(getprop("/instrumentation/garmin196/params/units/speed")==1){
setprop("/instrumentation/garmin196/menu_aircraft/selected-max-display",getprop("/instrumentation/garmin196/menu_aircraft/selected-max")~"kt");
setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise-display",getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise")~"kt");
}else{
setprop("/instrumentation/garmin196/menu_aircraft/selected-max-display",sprintf("%3.0fkm/h",getprop("/instrumentation/garmin196/menu_aircraft/selected-max")*1.852));
setprop("/instrumentation/garmin196/menu_aircraft/selected-cruise-display",sprintf("%3.0fkm/h",getprop("/instrumentation/garmin196/menu_aircraft/selected-cruise")*1.852));
}
}
var display_menu_aircraft_name = func{
var ligne_selected = getprop("/instrumentation/garmin196/menu_aircraft/selected-name");
var x_char = props.globals.getNode("/instrumentation/garmin196/menu_aircraft/x_char").getValue();
ligne_selected = substr(ligne_selected,0,x_char);
ligne_selected = ligne_selected ~ tab_chiffres_lettres[getprop("/instrumentation/garmin196/menu_aircraft/y_char")];
setprop("/instrumentation/garmin196/menu_aircraft/selected-name",ligne_selected);
}
var display_menu_flights = func{
var flights = props.globals.getNode("/instrumentation/garmin196/flights",1);
var i = 0;
foreach (var e; flights.getChildren("flight")) {
var start = e.getChild("start").getValue();
var end = e.getChild("end").getValue();
var date = e.getChild("date").getValue();
var aircraft = e.getChild("aircraft").getValue();
var distance = e.getChild("distance").getValue();
var duration = e.getChild("duration").getValue();
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
distance = sprintf("%03.1fnm",distance);
}else{
distance = sprintf("%03.1fkm",distance*1.852);
}
var ligne = sprintf("%s to %s %s",start,end,date);
setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/texte",ligne);
setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/start",start);
setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/end",end);
setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/date",date);
setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/aircraft",aircraft);
setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/distance",distance);
setprop("/instrumentation/garmin196/menu_flights/ligne["~i~"]/duration",sprintf("%03.1fh",duration));
i=i+1;
}
for(var j=i;j<8;j=j+1){
setprop("/instrumentation/garmin196/menu_flights/ligne["~j~"]/texte","");
}
setprop("/instrumentation/garmin196/menu_flights/max_ligne_selected",i-1);
}
var update_menu_flights_detail = func{
var no_ligne = getprop("/instrumentation/garmin196/menu_flights/no_ligne_selected");
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"));
setprop("/instrumentation/garmin196/menu_flights/ligne_selected/date",getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/date"));
setprop("/instrumentation/garmin196/menu_flights/ligne_selected/aircraft",getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/aircraft"));
setprop("/instrumentation/garmin196/menu_flights/ligne_selected/distance",getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/distance"));
setprop("/instrumentation/garmin196/menu_flights/ligne_selected/duration",getprop("/instrumentation/garmin196/menu_flights/ligne["~no_ligne~"]/duration"));
}
var update_flight = func{
if(getprop("/instrumentation/garmin196/flight/inflight")==nil){
props.globals.getNode("/instrumentation/garmin196/flight/inflight",1).setBoolValue(0);
props.globals.getNode("/instrumentation/garmin196/flight/start",1).setValue("");
}
var inflight = getprop("/instrumentation/garmin196/flight/inflight");
var speed = getprop("/instrumentation/gps/indicated-ground-speed-kt");
if(inflight==1){
if(speed<30){#speed<30kt, flight saved
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(1);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("airport");
setprop("/instrumentation/gps/command", "nearest");
var id = getprop("/instrumentation/gps/scratch/ident");
props.globals.getNode("/instrumentation/garmin196/flight/end",1).setValue(id);
props.globals.getNode("/instrumentation/garmin196/flight/distance",1).setDoubleValue(getprop("/instrumentation/gps/trip-odometer"));
props.globals.getNode("/instrumentation/garmin196/flight/duration",1).setDoubleValue((getprop("/sim/time/elapsed-sec")-getprop("/instrumentation/garmin196/flight/start-time"))/3600);
setprop("/instrumentation/garmin196/flight/inflight",0);
##inscription dans le carnet de vol
for(var i=7;i>0;i=i-1){
if(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/start")!=nil){
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/start",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/start"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/end",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/end"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/date",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/date"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/aircraft",1).setValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/aircraft"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/distance",1).setDoubleValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/distance"));
props.globals.getNode("/instrumentation/garmin196/flights/flight["~i~"]/duration",1).setDoubleValue(getprop("/instrumentation/garmin196/flights/flight["~(i-1)~"]/duration"));
}
}
props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/start",1).setValue(getprop("/instrumentation/garmin196/flight/start"));
props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/end",1).setValue(getprop("/instrumentation/garmin196/flight/end"));
props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/date",1).setValue(getprop("/instrumentation/garmin196/flight/date"));
props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/aircraft",1).setValue(getprop("/instrumentation/garmin196/flight/aircraft"));
props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/distance",1).setDoubleValue(getprop("/instrumentation/garmin196/flight/distance"));
props.globals.getNode("/instrumentation/garmin196/flights/flight[0]/duration",1).setDoubleValue(getprop("/instrumentation/garmin196/flight/duration"));
display_menu_flights();
save_parameters();
}
}else{
if(speed>30){#speed>30kt, flight started
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(1);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("airport");
setprop("/instrumentation/gps/command", "nearest");
var id = getprop("/instrumentation/gps/scratch/ident");
props.globals.getNode("/instrumentation/garmin196/flight/start",1).setValue(id);
var no_aircraft = getprop("/instrumentation/garmin196/no_aircraft");
var aircraft = getprop("/instrumentation/garmin196/params/aircrafts/aircraft["~no_aircraft~"]/name");
if(aircraft==nil){
props.globals.getNode("/instrumentation/garmin196/flight/aircraft",1).setValue("NO AIRCRAFT");
}else{
props.globals.getNode("/instrumentation/garmin196/flight/aircraft",1).setValue(aircraft);
}
props.globals.getNode("/instrumentation/garmin196/flight/date",1).setValue(substr(getprop("/sim/time/gmt"),0,10));
props.globals.getNode("/instrumentation/garmin196/flight/start-time",1).setDoubleValue(getprop("/sim/time/elapsed-sec"));
setprop("/instrumentation/gps/trip-odometer",0);
setprop("/instrumentation/garmin196/flight/inflight",1);
}
}
}
var update_e6b_menu=func{
var status = getprop("/instrumentation/garmin196/status");
if(status==150){
if(getprop("/instrumentation/garmin196/params/units/pressure")==1){
setprop("/instrumentation/garmin196/menu_e6b/baro-pressure",sprintf("%2.2fInHg",getprop("/environment/pressure-sea-level-inhg")));
}else{
setprop("/instrumentation/garmin196/menu_e6b/baro-pressure",sprintf("%4.0fhPa",getprop("/environment/pressure-sea-level-inhg")/0.03));
}
var diff_speed = getprop("/instrumentation/gps/indicated-ground-speed-kt") - getprop("/velocities/airspeed-kt");
if(getprop("/instrumentation/garmin196/params/units/speed")==1){
setprop("/instrumentation/garmin196/menu_e6b/wind-speed",sprintf("%1.0fkt",getprop("/environment/wind-speed-kt")));
setprop("/instrumentation/garmin196/menu_e6b/calibrated-airspeed",sprintf("%1.0fkt",getprop("/instrumentation/gps/indicated-ground-speed-kt")));
setprop("/instrumentation/garmin196/menu_e6b/true-airspeed",sprintf("%1.0fkt",getprop("/velocities/airspeed-kt")));
setprop("/instrumentation/garmin196/menu_e6b/head-wind",sprintf("%1.0fkt",diff_speed));
}else{
setprop("/instrumentation/garmin196/menu_e6b/wind-speed",sprintf("%1.0fkm/h",getprop("/environment/wind-speed-kt")*1.852));
setprop("/instrumentation/garmin196/menu_e6b/calibrated-airspeed",sprintf("%1.0fkm/h",getprop("/instrumentation/gps/indicated-ground-speed-kt")*1.852));
setprop("/instrumentation/garmin196/menu_e6b/true-airspeed",sprintf("%1.0fkm/h",getprop("/velocities/airspeed-kt")*1.852));
setprop("/instrumentation/garmin196/menu_e6b/head-wind",sprintf("%1.0fkm/h",diff_speed*1.852));
}
if(getprop("/instrumentation/garmin196/params/units/altitude")==1){
setprop("/instrumentation/garmin196/menu_e6b/indicated-altitude",sprintf("%1.0fft",getprop("/instrumentation/gps/indicated-altitude-ft")));
setprop("/instrumentation/garmin196/menu_e6b/density-altitude",sprintf("%1.0fft",getprop("/position/altitude-ft")));
}else{
setprop("/instrumentation/garmin196/menu_e6b/indicated-altitude",sprintf("%1.0fm",getprop("/instrumentation/gps/indicated-altitude-ft")*0.1097));
setprop("/instrumentation/garmin196/menu_e6b/density-altitude",sprintf("%1.0fm",getprop("/position/altitude-ft")*0.1097));
}
if(getprop("/instrumentation/garmin196/params/units/temperature")==1){
setprop("/instrumentation/garmin196/menu_e6b/air-temp",sprintf("%1.1fC",getprop("/environment/temperature-degc")));
}else{
setprop("/instrumentation/garmin196/menu_e6b/air-temp",sprintf("%1.1fF",getprop("/environment/temperature-degf")));
}
setprop("/instrumentation/garmin196/menu_e6b/wind-from",sprintf("%1.0f",getprop("/environment/wind-from-heading-deg")));
setprop("/instrumentation/garmin196/menu_e6b/heading",sprintf("%1.0f",getprop("/orientation/heading-deg")));
}
}
var init_list_points = func{
var points = props.globals.getNode("/instrumentation/garmin196/waypoints/user/",1);
var i = 0;
foreach (var e; points.getChildren("wpt")) {
setprop("/instrumentation/garmin196/menu_points/point["~i~"]/texte",e.getChild("id").getValue());
i=i+1;
}
for(var j=i;j<9;j=j+1){
setprop("/instrumentation/garmin196/menu_points/point["~j~"]/texte","");
}
if(i<9){
setprop("/instrumentation/garmin196/menu_points/point["~i~"]/texte","ENTER TO ADD WAYPOINT");
}else{
i=8;
}
setprop("/instrumentation/garmin196/menu_points/max_no_ligne",i);
}
var init_new_point = func(no_point){
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~no_point~"]/id", 1).setValue("POINT");
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~no_point~"]/latitude", 1).setDoubleValue(getprop("/position/latitude-deg"));
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~no_point~"]/longitude", 1).setDoubleValue(getprop("/position/longitude-deg"));
}
var delete_point = func(no_point){
for(var i=no_point+1;i<9;i=i+1){
if(getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id")!=nil){
setprop("/instrumentation/garmin196/waypoints/user/wpt["~(i-1)~"]/id",getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/id"));
setprop("/instrumentation/garmin196/waypoints/user/wpt["~(i-1)~"]/latitude",getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/latitude"));
setprop("/instrumentation/garmin196/waypoints/user/wpt["~(i-1)~"]/longitude",getprop("/instrumentation/garmin196/waypoints/user/wpt["~i~"]/longitude"));
}
}
var nb_points = size(props.globals.getNode("/instrumentation/garmin196/waypoints/user/",1).getChildren("wpt"));
if(getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_point~"]/id")!=nil){
props.globals.getNode("/instrumentation/garmin196/waypoints/user/wpt["~(nb_points-1)~"]").remove();
}
save_parameters();
}
var update_menu_points = func{
var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected");
var name = getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/id");
var latitude = getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/latitude");
var longitude = getprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/longitude");
setprop("/instrumentation/garmin196/menu_points/name",name);
props.globals.getNode("/instrumentation/garmin196/menu_points/longitude", 1).setDoubleValue(longitude);
props.globals.getNode("/instrumentation/garmin196/menu_points/latitude", 1).setDoubleValue(latitude);
setprop("/instrumentation/garmin196/menu_points/x_char",size(getprop("/instrumentation/garmin196/menu_points/name"))-1);
setprop("/instrumentation/garmin196/menu_points/y_char",searchLastChar(getprop("/instrumentation/garmin196/menu_points/name"),getprop("/instrumentation/garmin196/menu_points/x_char")));
display_menu_points();
}
var validate_menu_points = func{
var no_ligne = getprop("/instrumentation/garmin196/menu_points/no_ligne_selected");
var id = getprop("/instrumentation/garmin196/menu_points/name");
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
setprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/id",id);
setprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/latitude",latitude);
setprop("/instrumentation/garmin196/waypoints/user/wpt["~no_ligne~"]/longitude",longitude);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(longitude);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(latitude);
props.globals.getNode("/instrumentation/gps/scratch/ident",1).setValue(id~"WPTUSR");
setprop("/instrumentation/gps/command","define-user-wpt");
update_menu_points();
save_parameters();
}
var display_menu_points = func{
var ligne_selected = getprop("/instrumentation/garmin196/menu_points/name");
var x_char = props.globals.getNode("/instrumentation/garmin196/menu_points/x_char").getValue();
ligne_selected = substr(ligne_selected,0,x_char);
ligne_selected = ligne_selected ~ tab_chiffres_lettres[getprop("/instrumentation/garmin196/menu_points/y_char")];
setprop("/instrumentation/garmin196/menu_points/name",ligne_selected);
var latitude = getprop("/instrumentation/garmin196/menu_points/latitude");
var latitude_tab = split(".",sprintf("%3.2f",math.abs(latitude)));
var latitude_text10 = latitude_tab[0];
var latitude_text1 = "00";
if(size(latitude_tab)>1){
latitude_text1 = sprintf("%0.2s",latitude_tab[1]);
}
if(latitude>=0){
latitude_text10 = "N" ~ latitude_text10;
}else{
latitude_text10 = "S" ~ latitude_text10;
}
var longitude = getprop("/instrumentation/garmin196/menu_points/longitude");
var longitude_tab = split(".",sprintf("%3.2f",math.abs(longitude)));
var longitude_text10 = longitude_tab[0];
var longitude_text1 = "00";
if(size(longitude_tab)>1){
longitude_text1 = sprintf("%0.2s",longitude_tab[1]);
}
if(longitude>=0){
longitude_text10 = "E" ~ longitude_text10;
}else{
longitude_text10 = "W" ~ longitude_text10;
}
setprop("/instrumentation/garmin196/menu_points/latitude10_text",latitude_text10);
setprop("/instrumentation/garmin196/menu_points/latitude1_text",latitude_text1);
setprop("/instrumentation/garmin196/menu_points/longitude10_text",longitude_text10);
setprop("/instrumentation/garmin196/menu_points/longitude1_text",longitude_text1);
}
var init_menu_routes_list = func{
var routes = props.globals.getNode("/instrumentation/garmin196/routes",1);
var i = 0;
foreach (var e; routes.getChildren("route")) {
setprop("/instrumentation/garmin196/menu_routes/route["~i~"]/texte",e.getChild("name").getValue());
i=i+1;
}
for(var j=i;j<11;j=j+1){
setprop("/instrumentation/garmin196/menu_routes/route["~j~"]/texte","");
}
if(i<11){
setprop("/instrumentation/garmin196/menu_routes/route["~i~"]/texte","ENTER TO ADD ROUTE");
}else{
i=10;
}
setprop("/instrumentation/garmin196/menu_routes/max_no_ligne",i);
}
var init_new_route = func(no_ligne){
setprop("/instrumentation/gps/scratch/max-results", 1);
setprop("/instrumentation/gps/scratch/longitude-deg",-9999);
setprop("/instrumentation/gps/scratch/latitude-deg",-9999);
setprop("/instrumentation/gps/scratch/type", "airport");
setprop("/instrumentation/gps/command", "nearest");
var id = getprop("/instrumentation/gps/scratch/ident");
props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/name",1).setValue(id~" to "~id);
props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/wpt[0]/id",1).setValue(id);
props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/wpt[0]/type",1).setValue("airport");
}
var update_menu_routes_detail = func{
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
var points = props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/",1);
var i = 0;
var last_longitude = 0;
var last_latitude = 0;
var distance_total = 0;
var cruise_speed = getprop("/instrumentation/garmin196/cruise-speed");
var conso_horaire = getprop("/instrumentation/garmin196/fuel-flow");
foreach (var e; points.getChildren("wpt")) {
var id = e.getChild("id").getValue();
var type = e.getChild("type").getValue();
var ligne = id;
if(substr(id,size(id)-6)=="WPTUSR"){
ligne = substr(id,0,size(id)-6);
}elsif(substr(id,size(id)-6)=="WPTTWN"){
ligne = substr(id,0,size(id)-8);
}
ligne = substr(ligne,0,8);
if(i==0){
setprop("/instrumentation/gps/scratch/max-results", 1);
setprop("/instrumentation/gps/scratch/exact", 0);
setprop("/instrumentation/gps/scratch/query", id);
setprop("/instrumentation/gps/scratch/type", type);
setprop("/instrumentation/gps/command", "search");
last_longitude = getprop("/instrumentation/gps/scratch/longitude-deg");
last_latitude = getprop("/instrumentation/gps/scratch/latitude-deg");
}else{
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,8-size(ligne));
var coord_last_id = geo.Coord.new().set_latlon(last_latitude,last_longitude);
setprop("/instrumentation/gps/scratch/max-results", 1);
setprop("/instrumentation/gps/scratch/exact", 0);
setprop("/instrumentation/gps/scratch/query", id);
setprop("/instrumentation/gps/scratch/type", type);
setprop("/instrumentation/gps/command", "search");
last_longitude = getprop("/instrumentation/gps/scratch/longitude-deg");
last_latitude = getprop("/instrumentation/gps/scratch/latitude-deg");
var coord_id = geo.Coord.new().set_latlon(last_latitude,last_longitude);
var distance = coord_last_id.distance_to(coord_id) * 0.000539;
var bearing = coord_last_id.course_to(coord_id);
var ete = distance / cruise_speed;
var ete_hours = int(ete);
var ete_minutes = int(ete*60-ete_hours*60);
var conso = ete * conso_horaire;
distance_total = distance_total + distance;
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.0f %03.1f %02.0f:%02.0f %02.1f",bearing,distance,ete_hours,ete_minutes,conso);
}else{
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.0f %03.1f %02.0f:%02.0f %02.1f",bearing,(distance*1.852),ete_hours,ete_minutes,conso);
}
}
setprop("/instrumentation/garmin196/menu_routes/point["~i~"]/texte",ligne);
i=i+1;
}
var ete_total = distance_total / cruise_speed;
var ete_total_hours = int(ete_total);
var ete_total_minutes = int(ete_total*60-ete_total_hours*60);
var conso_total = ete_total * conso_horaire;
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
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));
}else{
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));
}
for(var j=i;j<10;j=j+1){
setprop("/instrumentation/garmin196/menu_routes/point["~j~"]/texte","");
}
if(i<10){
setprop("/instrumentation/garmin196/menu_routes/point["~i~"]/texte","ENTER TO ADD WAYPOINT");
}else{
i=9;
}
setprop("/instrumentation/garmin196/menu_routes/max_no_ligne_detail",i);
}
var init_search_route = func(start_string){
if(substr(start_string,size(start_string)-6)=="WPTUSR"){
start_string = substr(start_string,0,size(start_string)-6);
}elsif(substr(start_string,size(start_string)-6)=="WPTTWN"){
start_string = substr(start_string,0,size(start_string)-8);
}
setprop("/instrumentation/garmin196/menu_routes/search/ligne_select",start_string);
setprop("/instrumentation/garmin196/menu_routes/search/x_char",size(start_string)-1);
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")));
display_route_waypoint_search();
}
var display_route_waypoint_search = func{
var ligne_selected = getprop("/instrumentation/garmin196/menu_routes/search/ligne_select");
var x_char = props.globals.getNode("/instrumentation/garmin196/menu_routes/search/x_char").getValue();
ligne_selected = substr(ligne_selected,0,x_char);
ligne_selected = ligne_selected ~ tab_chiffres_lettres[getprop("/instrumentation/garmin196/menu_routes/search/y_char")];
setprop("/instrumentation/garmin196/menu_routes/search/ligne_select",ligne_selected);
var plots = [];
##recherche gps globale
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0);
props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("");
setprop("/instrumentation/gps/command", "search");
var i=0;
var flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var type = getprop("/instrumentation/gps/scratch/type");
var ligne = id;
if(type=="waypoint"){
type = "wpt";
var type_wpt = substr(id,size(id)-6);
if(type_wpt=="WPTTWN"){#cities
ligne = substr(id,0,size(id)-8);
}elsif(type_wpt=="WPTUSR"){#wpt user
ligne = substr(id,0,size(id)-6);
}
}
ligne = ligne ~ " " ~ type;
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,16-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
var popup_status = getprop("/instrumentation/garmin196/popup_status");
var plot = { id: id,texte: ligne,type: type};
append(plots,plot);
i=i+1;
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
##recherche gps fix
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0);
props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("fix");
setprop("/instrumentation/gps/command", "search");
i=0;
flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var type = getprop("/instrumentation/gps/scratch/type");
var ligne = id ~ " " ~ type;
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,16-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
var popup_status = getprop("/instrumentation/garmin196/popup_status");
var plot = { id: id,texte: ligne,type: type};
append(plots,plot);
i=i+1;
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
##recherche gps vor
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0);
props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("vor");
setprop("/instrumentation/gps/command", "search");
i=0;
flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var type = getprop("/instrumentation/gps/scratch/type");
var ligne = id ~ " vor";
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,16-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
var popup_status = getprop("/instrumentation/garmin196/popup_status");
var plot = { id: id,texte: ligne,type: type};
append(plots,plot);
i=i+1;
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
##recherche gps ndb
props.globals.getNode("/instrumentation/gps/scratch/max-results", 1).setIntValue(5);
props.globals.getNode("/instrumentation/gps/scratch/longitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/latitude-deg", 1).setDoubleValue(-9999);
props.globals.getNode("/instrumentation/gps/scratch/exact", 1).setBoolValue(0);
props.globals.getNode("/instrumentation/gps/scratch/query",1).setValue(ligne_selected);
props.globals.getNode("/instrumentation/gps/scratch/type",1).setValue("ndb");
setprop("/instrumentation/gps/command", "search");
i=0;
flag_continue = getprop("/instrumentation/gps/scratch/valid");
while (flag_continue and i<5) {
var id = getprop("/instrumentation/gps/scratch/ident");
var range = getprop("/instrumentation/gps/scratch/distance-nm");
var bearing = getprop("/instrumentation/gps/scratch/mag-bearing-deg");
var type = getprop("/instrumentation/gps/scratch/type");
var ligne = id ~ " ndb";
var ligne_spaces = " ";
ligne_spaces = substr(ligne_spaces,0,16-size(ligne));
ligne = ligne ~ ligne_spaces ~ sprintf(" %03.f",bearing);
if(getprop("/instrumentation/garmin196/params/units/distance")==1){
ligne = ligne ~sprintf(" %3.1fnm",range);
}else{
ligne = ligne ~sprintf(" %3.1fkm",range*1.852);
}
var popup_status = getprop("/instrumentation/garmin196/popup_status");
var plot = { id: id,texte: ligne,type: type};
append(plots,plot);
i=i+1;
setprop("/instrumentation/gps/command", "next");
flag_continue = getprop("/instrumentation/gps/scratch/has-next");
}
var plots_sorted = sort (plots, func (a,b) cmp (a.id, b.id));
var nb_plots = size(plots_sorted);
if(nb_plots>9){
nb_plots = 9;
}
for(var j=0;j<nb_plots;j=j+1){
setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/texte",plots_sorted[j].texte);
setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/id",plots_sorted[j].id);
setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/type",plots_sorted[j].type);
}
for(var j=nb_plots;j<9;j=j+1){
setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/texte","");
setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/id","");
setprop("/instrumentation/garmin196/menu_routes/search/ligne["~j~"]/type","");
}
setprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected",-1);
setprop("/instrumentation/garmin196/menu_routes/search/max_ligne_selected",nb_plots-1);
}
var delete_route = func(no_ligne){
for(var i=no_ligne+1;i<11;i=i+1){
if(getprop("/instrumentation/garmin196/routes/route["~i~"]/name")!=nil){
setprop("/instrumentation/garmin196/routes/route["~(i-1)~"]/name",getprop("/instrumentation/garmin196/routes/route["~i~"]/name"));
for(var j=0;j<10;j=j+1){
if(getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/id")!=nil){
setprop("/instrumentation/garmin196/routes/route["~(i-1)~"]/wpts/wpt["~j~"]/id",getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/id"));
setprop("/instrumentation/garmin196/routes/route["~(i-1)~"]/wpts/wpt["~j~"]/type",getprop("/instrumentation/garmin196/routes/route["~i~"]/wpts/wpt["~j~"]/type"));
}
}
}
}
var nb_routes = size(props.globals.getNode("/instrumentation/garmin196/routes",1).getChildren("route"));
if(getprop("/instrumentation/garmin196/routes/route["~no_ligne~"]/name")!=nil){
props.globals.getNode("/instrumentation/garmin196/routes/route["~(nb_routes-1)~"]").remove();
}
save_parameters();
}
var delete_route_detail = func(no_ligne_liste,no_ligne_detail){
if(no_ligne_detail>0){
for(var i=no_ligne_detail+1;i<10;i=i+1){
if(getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~i~"]/id")!=nil){
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"));
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"));
}
}
var nb_waypoints = size(props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts",1).getChildren("wpt"));
if(getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/id")!=nil){
props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~(nb_waypoints-1)~"]").remove();
}
save_parameters();
}
}
var validate_menu_search_routes = func{
var no_ligne = getprop("/instrumentation/garmin196/menu_routes/search/no_ligne_selected");
var id = getprop("/instrumentation/garmin196/menu_routes/search/ligne["~no_ligne~"]/id");
var type = getprop("/instrumentation/garmin196/menu_routes/search/ligne["~no_ligne~"]/type");
var no_ligne_liste = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
var no_ligne_detail = getprop("/instrumentation/garmin196/menu_routes/no_ligne_detail");
setprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/id",id);
setprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~no_ligne_detail~"]/type",type);
var name_wpt0 = getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt[0]/id");
if(substr(name_wpt0,size(name_wpt0)-6)=="WPTUSR"){
name_wpt0 = substr(name_wpt0,0,size(name_wpt0)-6);
}elsif(substr(name_wpt0,size(name_wpt0)-6)=="WPTTWN"){
name_wpt0 = substr(name_wpt0,0,size(name_wpt0)-8);
}
var name_wpt1 = name_wpt0;
var nb_points = size(props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts").getChildren("wpt"));
if(nb_points>1){
name_wpt1 = getprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/wpts/wpt["~(nb_points-1)~"]/id");
if(substr(name_wpt1,size(name_wpt1)-6)=="WPTUSR"){
name_wpt1 = substr(name_wpt1,0,size(name_wpt1)-6);
}elsif(substr(name_wpt1,size(name_wpt1)-6)=="WPTTWN"){
name_wpt1 = substr(name_wpt1,0,size(name_wpt1)-8);
}
}
var name = name_wpt0 ~ " to " ~ name_wpt1;
setprop("/instrumentation/garmin196/routes/route["~no_ligne_liste~"]/name",name);
}
var load_flight_plan = func(no_ligne){
setprop("/autopilot/route-manager/input","@CLEAR");
setprop("/autopilot/route-manager/input","@POP");
var points = props.globals.getNode("/instrumentation/garmin196/routes/route["~no_ligne~"]/wpts/",1);
foreach (var e; points.getChildren("wpt")) {
var id = e.getChild("id").getValue();
setprop("/autopilot/route-manager/input",id);
}
setprop("/autopilot/route-manager/input","@JUMP0");
setprop("/autopilot/route-manager/input","@ACTIVATE");
}
var close_fpl_loaded = func{
setprop("/instrumentation/garmin196/menu_routes/fpl-loaded",0);
}
var affiche_fpl_loaded = func{
setprop("/instrumentation/garmin196/menu_routes/fpl-loaded",1);
settimer(close_fpl_loaded,3);
}
var close_waypoint_jump = func{
setprop("/instrumentation/garmin196/menu_routes/waypoint-jump",0);
}
var affiche_waypoint_jump = func{
setprop("/instrumentation/garmin196/menu_routes/waypoint-jump",1);
settimer(close_waypoint_jump,3);
}
var jump_to_waypoint = func(no_ligne){
var no_ligne_liste = getprop("/instrumentation/garmin196/menu_routes/no_ligne_selected");
load_flight_plan(no_ligne_liste);
setprop("/autopilot/route-manager/input","@JUMP"~no_ligne);
}