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);
+ }
}
}