diff --git a/Models/Instruments/MCDU/MCDU.nas b/Models/Instruments/MCDU/MCDU.nas index ced79130..a24179d2 100644 --- a/Models/Instruments/MCDU/MCDU.nas +++ b/Models/Instruments/MCDU/MCDU.nas @@ -277,7 +277,7 @@ var canvas_MCDU_base = { "FUELPRED_ZFWCG","FUELPRED_ZFW_S","PROG","PROG_UPDATE","PERFTO","PERFTO_V1","PERFTO_VR","PERFTO_V2","PERFTO_FE","PERFTO_SE","PERFTO_OE","PERFAPPR", "PERFAPPR_FE","PERFAPPR_SE","PERFAPPR_OE","PERFAPPR_LDG_3","PERFAPPR_LDG_F","PERFGA","PERFGA_FE","PERFGA_SE","PERFGA_OE","FPLN","FPLN_From", "FPLN_TMPY_group","FPLN_FROM","FPLN_Callsign","departureTMPY", "arrowsDepArr","arrow1L","arrow2L","arrow3L","arrow4L","arrow5L","arrow1R","arrow2R", - "arrow3R","arrow4R","arrow5R","DIRTO_TMPY_group"]; + "arrow3R","arrow4R","arrow5R","DIRTO_TMPY_group","IRSINIT","IRSINIT_1","IRSINIT_2","IRSINIT_star"]; }, update: func() { if (systems.ELEC.Bus.ac1.getValue() >= 110 and mcdu1_lgt.getValue() > 0.01) { @@ -302,6 +302,7 @@ var canvas_MCDU_base = { me["FPLN"].show(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["PERFTO"].hide(); me["PERFAPPR"].hide(); @@ -632,6 +633,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -694,6 +696,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -755,6 +758,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -814,6 +818,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -878,6 +883,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -944,6 +950,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -1062,6 +1069,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].show(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -1217,6 +1225,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].show(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -1263,22 +1272,52 @@ var canvas_MCDU_base = { pageSwitch[i].setBoolValue(1); } + me["Simple_L1S"].setText("LAT"); + me["Simple_R1S"].setText("LONG"); + if (getprop("FMGC/internal/align-ref-lat-edit")) { + me["IRSINIT_1"].show(); + me["IRSINIT_2"].hide(); + } else if (getprop("FMGC/internal/align-ref-long-edit")) { + me["IRSINIT_1"].hide(); + me["IRSINIT_2"].show(); + } else { + me["IRSINIT_1"].hide(); + me["IRSINIT_2"].hide(); + } + if (toFromSet.getValue() == 1) { - dms = getprop("FMGC/flightplan[2]/wp[0]/lat"); - degrees = int(dms); - minutes = sprintf("%.1f",abs((dms - degrees) * 60)); - sign = degrees >= 0 ? "N" : "S"; - me["Simple_L1"].setText(abs(degrees) ~ "g" ~ minutes ~ " " ~ sign); - dms = getprop("FMGC/flightplan[2]/wp[0]/lon"); - degrees = int(dms); - minutes = sprintf("%.1f",abs((dms - degrees) * 60)); - sign = degrees >= 0 ? "E" : "W"; - me["Simple_R1"].setText(abs(degrees) ~ "g" ~ minutes ~ " " ~ sign); - me["Simple_C1"].setText(sprintf("%s", depArpt.getValue())); + degrees = getprop("FMGC/internal/align-ref-lat-degrees"); + minutes = getprop("FMGC/internal/align-ref-lat-minutes"); + sign = getprop("FMGC/internal/align-ref-lat-sign"); + dms_lat = getprop("FMGC/flightplan[2]/wp[0]/lat"); + degrees_lat = int(dms_lat); + minutes_lat = sprintf("%.1f",abs((dms_lat - degrees_lat) * 60)); + sign_lat = degrees_lat >= 0 ? "N" : "S"; + lat_same = degrees_lat == degrees and minutes_lat == minutes and sign_lat == sign; + me["Simple_L1"].setText(abs(sprintf("%.0f", degrees)) ~ "g" ~ sprintf("%.1f", minutes) ~ " " ~ sign); + + degrees = getprop("FMGC/internal/align-ref-long-degrees"); + minutes = getprop("FMGC/internal/align-ref-long-minutes"); + sign = getprop("FMGC/internal/align-ref-long-sign"); + dms_long = getprop("FMGC/flightplan[2]/wp[0]/lon"); + degrees_long = int(dms_long); + minutes_long = sprintf("%.1f",abs((dms_long - degrees_long) * 60)); + sign_long = degrees_long >= 0 ? "E" : "W"; + long_same = degrees_long == degrees and minutes_long == minutes and sign_long == sign; + me["Simple_R1"].setText(abs(sprintf("%.0f", degrees)) ~ "g" ~ sprintf("%.1f", minutes) ~ " " ~ sign); + + if (lat_same and long_same) { + me["Simple_C1"].setText(getprop("FMGC/flightplan[2]/wp[0]/id")); + me["Simple_C1"].setColor(GREEN); + } else { + me["Simple_C1"].setText("----"); + me["Simple_C1"].setColor(WHITE); + } } else { me["Simple_L1"].setText("-----.--"); me["Simple_R1"].setText("------.--"); me["Simple_C1"].setText("----"); + me["Simple_C1"].setColor(WHITE); } dms = getprop("position/latitude-deg"); @@ -1291,35 +1330,35 @@ var canvas_MCDU_base = { minutes2 = sprintf("%.1f",abs((dms2 - degrees2) * 60)); sign2 = degrees2 >= 0 ? "E" : "W"; me["Simple_R2"].setText(abs(degrees2) ~ "g" ~ minutes2 ~ " " ~ sign2); - if (getprop("systems/navigation/adr/operating-1")) { + if (getprop("systems/navigation/adr/operating-1") and getprop("FMGC/internal/align1-done")) { me["Simple_C3"].setText(abs(degrees) ~ "g" ~ minutes ~ " " ~ sign ~ "/" ~ abs(degrees2) ~ "g" ~ minutes2 ~ " " ~ sign2); } else { me["Simple_C3"].setText("-----.--/-----.--"); } - if (getprop("systems/navigation/adr/operating-2")) { + if (getprop("systems/navigation/adr/operating-2") and getprop("FMGC/internal/align2-done")) { me["Simple_C4"].setText(abs(degrees) ~ "g" ~ minutes ~ " " ~ sign ~ "/" ~ abs(degrees2) ~ "g" ~ minutes2 ~ " " ~ sign2); } else { me["Simple_C4"].setText("-----.--/-----.--"); } - if (getprop("systems/navigation/adr/operating-3")) { + if (getprop("systems/navigation/adr/operating-3") and getprop("FMGC/internal/align3-done")) { me["Simple_C5"].setText(abs(degrees) ~ "g" ~ minutes ~ " " ~ sign ~ "/" ~ abs(degrees2) ~ "g" ~ minutes2 ~ " " ~ sign2); } else { me["Simple_C5"].setText("-----.--/-----.--"); } if (align_set.getValue() == 1) { - #still need * to right of button instead of arrow me["Simple_R6"].setText("CONFIRM ALIGN "); me.colorRight("ack", "ack", "ack", "ack", "ack", "amb"); - me.colorRightArrow("ack", "ack", "ack", "ack", "ack", "amb"); + me["IRSINIT_star"].show(); + me.showRightArrow(0, 0, 0, 0, 0, -1); } else { me["Simple_R6"].setText("ALIGN ON REF "); + me["IRSINIT_star"].hide(); + me.showRightArrow(0, 0, 0, 0, 0, 1); } - me["Simple_L1S"].setText("LAT"); me["Simple_L2S"].setText("LAT"); me["Simple_L6"].setText(" RETURN"); - me["Simple_R1S"].setText("LONG"); me["Simple_R2S"].setText("LONG"); me["Simple_C1S"].setText("REFERENCE"); me["Simple_C2S"].setText("GPS POSITION"); @@ -1334,6 +1373,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -1388,6 +1428,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].show(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -1522,6 +1563,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].show(); me["PROG"].hide(); @@ -1671,6 +1713,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].show(); @@ -1798,6 +1841,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -1952,6 +1996,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -2116,6 +2161,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -2263,6 +2309,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -2431,6 +2478,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -2579,6 +2627,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -2669,6 +2718,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -2928,6 +2978,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -3187,6 +3238,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -3515,6 +3567,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -3831,6 +3884,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -4159,6 +4213,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -4488,6 +4543,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].show(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); @@ -4746,6 +4802,7 @@ var canvas_MCDU_base = { me["FPLN"].hide(); me["DIRTO_TMPY_group"].hide(); me["INITA"].hide(); + me["IRSINIT"].hide(); me["INITB"].hide(); me["FUELPRED"].hide(); me["PROG"].hide(); diff --git a/Models/Instruments/MCDU/res/mcdu.svg b/Models/Instruments/MCDU/res/mcdu.svg index ccc005d1..381cfcf2 100644 --- a/Models/Instruments/MCDU/res/mcdu.svg +++ b/Models/Instruments/MCDU/res/mcdu.svg @@ -33,13 +33,13 @@ units="px" inkscape:snap-global="false" showguides="false" - inkscape:current-layer="PROG" + inkscape:current-layer="IRSINIT" inkscape:window-maximized="0" inkscape:window-y="23" - inkscape:window-x="59" - inkscape:cy="508.76833" - inkscape:cx="72.164029" - inkscape:zoom="8.0885693" + inkscape:window-x="0" + inkscape:cy="938.61658" + inkscape:cx="1070.6893" + inkscape:zoom="1.7842543" showgrid="true" id="namedview371" inkscape:window-height="1035" @@ -349,7 +349,7 @@ inkscape:label="#g4241" transform="matrix(1.0000018,0,0,0.99998906,-895.98862,118.48532)"> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#ffffff;fill-opacity:1;stroke:#cdcdcd;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> FROM + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:51.2px;line-height:1.25;font-family:BoeingCDULarge;-inkscape-font-specification:BoeingCDULarge;text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1">FROM + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> DIR TO + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:none;stroke:#bb6100;stroke-width:4.08;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + = - \ No newline at end of file + diff --git a/Nasal/FMGC/FMGC.nas b/Nasal/FMGC/FMGC.nas index ebe51c1f..63117f68 100644 --- a/Nasal/FMGC/FMGC.nas +++ b/Nasal/FMGC/FMGC.nas @@ -130,6 +130,9 @@ var FMGCinit = func { setprop("FMGC/internal/loc-source", "NAV0"); setprop("FMGC/internal/optalt", 0); setprop("FMGC/internal/landing-time", -99); + setprop("FMGC/internal/align1-time", -99); + setprop("FMGC/internal/align2-time", -99); + setprop("FMGC/internal/align3-time", -99); masterFMGC.start(); various.start(); various2.start(); @@ -808,6 +811,7 @@ var switchDatabase = func { setprop("FMGC/internal/navdatabasecode2", code1); } +# Landing to phase 7 setlistener("gear/gear[1]/wow", func() { if (timer30secLanding.isRunning) { timer30secLanding.stop(); @@ -825,4 +829,64 @@ var timer30secLanding = maketimer(1, func() { setprop("FMGC/internal/landing-time", -99); timer30secLanding.stop(); } +}); + +# Align IRS 1 +setlistener("systems/navigation/adr/operating-1", func() { + if (timer48gpsAlign1.isRunning) { + timer48gpsAlign1.stop(); + } + + if (getprop("FMGC/internal/align1-time") == -99) { + timer48gpsAlign1.start(); + setprop("FMGC/internal/align1-time", pts.Sim.Time.elapsedSec.getValue()); + } +}, 0, 0); + +var timer48gpsAlign1 = maketimer(1, func() { + if (pts.Sim.Time.elapsedSec.getValue() > getprop("FMGC/internal/align1-time") + 48) { + setprop("FMGC/internal/align1-done", 1); + setprop("FMGC/internal/align1-time", -99); + timer48gpsAlign1.stop(); + } +}); + +# Align IRS 2 +setlistener("systems/navigation/adr/operating-2", func() { + if (timer48gpsAlign2.isRunning) { + timer48gpsAlign2.stop(); + } + + if (getprop("FMGC/internal/align2-time") == -99) { + timer48gpsAlign2.start(); + setprop("FMGC/internal/align2-time", pts.Sim.Time.elapsedSec.getValue()); + } +}, 0, 0); + +var timer48gpsAlign2 = maketimer(1, func() { + if (pts.Sim.Time.elapsedSec.getValue() > getprop("FMGC/internal/align2-time") + 48) { + setprop("FMGC/internal/align2-done", 1); + setprop("FMGC/internal/align2-time", -99); + timer48gpsAlign2.stop(); + } +}); + +# Align IRS 3 +setlistener("systems/navigation/adr/operating-3", func() { + if (timer48gpsAlign3.isRunning) { + timer48gpsAlign3.stop(); + } + + if (getprop("gear/gear[1]/wow") == 1 and getprop("FMGC/internal/align3-time") == -99) { + timer48gpsAlign3.start(); + setprop("FMGC/internal/align3-time", pts.Sim.Time.elapsedSec.getValue()); + } +}, 0, 0); + +var timer48gpsAlign3 = maketimer(1, func() { + if (pts.Sim.Time.elapsedSec.getValue() > getprop("FMGC/internal/align3-time") + 48) { + setprop("FMGC/internal/align3-done", 1); + setprop("FMGC/internal/align3-time", -99); + timer48gpsAlign3.stop(); + } }); \ No newline at end of file diff --git a/Nasal/MCDU/INITA.nas b/Nasal/MCDU/INITA.nas index 02e98f11..f6013129 100644 --- a/Nasal/MCDU/INITA.nas +++ b/Nasal/MCDU/INITA.nas @@ -136,6 +136,10 @@ var initInputA = func(key, i) { setprop("FMGC/internal/dep-arpt", ""); setprop("FMGC/internal/arr-arpt", ""); setprop("FMGC/internal/tofrom-set", 0); + setprop("FMGC/internal/align-ref-lat", 0); + setprop("FMGC/internal/align-ref-long", 0); + setprop("FMGC/internal/align-ref-lat-edit", 0); + setprop("FMGC/internal/align-ref-long-edit", 0); fmgc.flightPlanController.reset(); setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0); setprop("MCDU[" ~ i ~ "]/scratchpad", ""); @@ -149,12 +153,33 @@ var initInputA = func(key, i) { var froms = size(fromto[0]); var tos = size(fromto[1]); if (froms == 4 and tos == 4) { + #route setprop("FMGC/internal/dep-arpt", fromto[0]); setprop("FMGC/internal/arr-arpt", fromto[1]); setprop("FMGC/internal/tofrom-set", 1); + #scratchpad setprop("MCDU[" ~ i ~ "]/scratchpad", ""); fmgc.flightPlanController.updateAirports(fromto[0], fromto[1], 2); setprop("FMGC/internal/alt-selected", 0); + #ref lat + dms = getprop("FMGC/flightplan[2]/wp[0]/lat"); + degrees = int(dms); + minutes = sprintf("%.1f",abs((dms - degrees) * 60)); + sign = degrees >= 0 ? "N" : "S"; + setprop("FMGC/internal/align-ref-lat-degrees", degrees); + setprop("FMGC/internal/align-ref-lat-minutes", minutes); + setprop("FMGC/internal/align-ref-lat-sign", sign); + #ref long + dms = getprop("FMGC/flightplan[2]/wp[0]/lon"); + degrees = int(dms); + minutes = sprintf("%.1f",abs((dms - degrees) * 60)); + sign = degrees >= 0 ? "E" : "W"; + setprop("FMGC/internal/align-ref-long-degrees", degrees); + setprop("FMGC/internal/align-ref-long-minutes", minutes); + setprop("FMGC/internal/align-ref-long-sign", sign); + #ref edit + setprop("FMGC/internal/align-ref-lat-edit", 0); + setprop("FMGC/internal/align-ref-long-edit", 0); #setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION"); } else { notAllowed(i); diff --git a/Nasal/MCDU/IRSINIT.nas b/Nasal/MCDU/IRSINIT.nas index 703098d2..4345c023 100644 --- a/Nasal/MCDU/IRSINIT.nas +++ b/Nasal/MCDU/IRSINIT.nas @@ -1,9 +1,87 @@ # Copyright (c) 2020 Matthew Maring (hayden2000) var initInputIRS = func(key, i) { - if (key == "L6") { + if (key == "up") { + if (getprop("FMGC/internal/align-ref-lat-edit")) { + if (num(getprop("FMGC/internal/align-ref-lat-minutes")) == 180) { + if (getprop("FMGC/internal/align-ref-lat-sign") == "N") { + setprop("FMGC/internal/align-ref-lat-sign", "S"); + } else { + setprop("FMGC/internal/align-ref-lat-sign", "N"); + } + } else if (num(getprop("FMGC/internal/align-ref-lat-minutes")) == 59.9) { + setprop("FMGC/internal/align-ref-lat-degrees", getprop("FMGC/internal/align-ref-lat-degrees") + 1); + setprop("FMGC/internal/align-ref-lat-minutes", 0.0); + } else { + setprop("FMGC/internal/align-ref-lat-minutes", getprop("FMGC/internal/align-ref-lat-minutes") + 0.1); + } + } else if (getprop("FMGC/internal/align-ref-long-edit")) { + if (num(getprop("FMGC/internal/align-ref-long-minutes")) == 180) { + if (getprop("FMGC/internal/align-ref-long-sign") == "W") { + setprop("FMGC/internal/align-ref-long-sign", "E"); + } else { + setprop("FMGC/internal/align-ref-long-sign", "W"); + } + } else if (num(getprop("FMGC/internal/align-ref-long-minutes")) == 59.9) { + setprop("FMGC/internal/align-ref-long-degrees", getprop("FMGC/internal/align-ref-long-degrees") + 1); + setprop("FMGC/internal/align-ref-long-minutes", 0.0); + } else { + setprop("FMGC/internal/align-ref-long-minutes", getprop("FMGC/internal/align-ref-long-minutes") + 0.1); + } + } else { + notAllowed(i); + } + } else if (key == "down") { + if (getprop("FMGC/internal/align-ref-lat-edit")) { + if (num(getprop("FMGC/internal/align-ref-lat-minutes")) == 0) { + if (getprop("FMGC/internal/align-ref-lat-sign") == "N") { + setprop("FMGC/internal/align-ref-lat-sign", "S"); + } else { + setprop("FMGC/internal/align-ref-lat-sign", "N"); + } + } else if (num(getprop("FMGC/internal/align-ref-lat-minutes")) == 0) { + setprop("FMGC/internal/align-ref-lat-degrees", getprop("FMGC/internal/align-ref-lat-degrees") - 1); + setprop("FMGC/internal/align-ref-lat-minutes", 59.9); + } else { + setprop("FMGC/internal/align-ref-lat-minutes", getprop("FMGC/internal/align-ref-lat-minutes") - 0.1); + } + } else if (getprop("FMGC/internal/align-ref-long-edit")) { + if (num(getprop("FMGC/internal/align-ref-long-minutes")) == 0) { + if (getprop("FMGC/internal/align-ref-long-sign") == "W") { + setprop("FMGC/internal/align-ref-long-sign", "E"); + } else { + setprop("FMGC/internal/align-ref-long-sign", "W"); + } + } else if (num(getprop("FMGC/internal/align-ref-long-minutes")) == 0) { + setprop("FMGC/internal/align-ref-long-degrees", getprop("FMGC/internal/align-ref-long-degrees") - 1); + setprop("FMGC/internal/align-ref-long-minutes", 59.9); + } else { + setprop("FMGC/internal/align-ref-long-minutes", getprop("FMGC/internal/align-ref-long-minutes") - 0.1); + } + } else { + notAllowed(i); + } + } else if (key == "L1") { + if (getprop("FMGC/internal/tofrom-set")) { + setprop("FMGC/internal/align-ref-lat-edit", 1); + setprop("FMGC/internal/align-ref-long-edit", 0); + } else { + notAllowed(i); + } + } else if (key == "L6") { + setprop("FMGC/internal/align-ref-lat-edit", 0); + setprop("FMGC/internal/align-ref-long-edit", 0); setprop("MCDU[" ~ i ~ "]/page", "INITA"); + } else if (key == "R1") { + if (getprop("FMGC/internal/tofrom-set")) { + setprop("FMGC/internal/align-ref-lat-edit", 0); + setprop("FMGC/internal/align-ref-long-edit", 1); + } else { + notAllowed(i); + } } else if (key == "R6") { + setprop("FMGC/internal/align-ref-lat-edit", 0); + setprop("FMGC/internal/align-ref-long-edit", 0); if (getprop("FMGC/internal/tofrom-set") == 1 and getprop("systems/navigation/adr/any-adr-on") == 1) { if (getprop("FMGC/internal/align-set") == 0) { setprop("FMGC/internal/align-set", 1); diff --git a/Nasal/MCDU/MCDU.nas b/Nasal/MCDU/MCDU.nas index 676e674b..6926498b 100644 --- a/Nasal/MCDU/MCDU.nas +++ b/Nasal/MCDU/MCDU.nas @@ -70,6 +70,17 @@ var MCDU_reset = func(i) { # IRSINIT setprop("FMGC/internal/align-set", 0); + setprop("FMGC/internal/align-ref-lat-degrees", 0); + setprop("FMGC/internal/align-ref-lat-minutes", 0); + setprop("FMGC/internal/align-ref-lat-sign", ""); + setprop("FMGC/internal/align-ref-long-degrees", 0); + setprop("FMGC/internal/align-ref-long-minutes", 0); + setprop("FMGC/internal/align-ref-long-sign", ""); + setprop("FMGC/internal/align-ref-lat-edit", 0); + setprop("FMGC/internal/align-ref-long-edit", 0); + setprop("FMGC/internal/align1-done", 0); + setprop("FMGC/internal/align2-done", 0); + setprop("FMGC/internal/align3-done", 0); # ROUTE SELECTION setprop("FMGC/internal/alt-selected", 0); @@ -182,6 +193,8 @@ var lskbutton = func(btn, i) { setprop("MCDU[" ~ i ~ "]/scratchpad", ""); setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0); } + } else if (getprop("MCDU[" ~ i ~ "]/page") == "IRSINIT") { + initInputIRS("L1",i); } else if (getprop("MCDU[" ~ i ~ "]/page") == "INITB") { initInputB("L1",i); } else if (getprop("MCDU[" ~ i ~ "]/page") == "PROGTO") { @@ -414,6 +427,8 @@ var rskbutton = func(btn, i) { if (btn == "1") { if (getprop("MCDU[" ~ i ~ "]/page") == "INITA") { initInputA("R1",i); + } else if (getprop("MCDU[" ~ i ~ "]/page") == "IRSINIT") { + initInputIRS("R1",i); } else if (getprop("MCDU[" ~ i ~ "]/page") == "INITB") { initInputB("R1",i); } else if (getprop("MCDU[" ~ i ~ "]/page") == "RADNAV") { @@ -633,6 +648,8 @@ var arrowbutton = func(btn, i) { canvas_mcdu.myArrival[i].scrollUp(); } else if (getprop("MCDU[" ~ i ~ "]/page") == "DIRTO") { canvas_mcdu.myDirTo[i].scrollUp(); + } else if (getprop("MCDU[" ~ i ~ "]/page") == "IRSINIT") { + initInputIRS("up",i); } } else if (btn == "down") { if (getprop("MCDU[" ~ i ~ "]/page") == "F-PLNA" or getprop("MCDU[" ~ i ~ "]/page") == "F-PLNB") { @@ -643,7 +660,9 @@ var arrowbutton = func(btn, i) { canvas_mcdu.myArrival[i].scrollDn(); } else if (getprop("MCDU[" ~ i ~ "]/page") == "DIRTO") { canvas_mcdu.myDirTo[i].scrollDn(); - } + } else if (getprop("MCDU[" ~ i ~ "]/page") == "IRSINIT") { + initInputIRS("down",i); + } } }