diff --git a/A320-main.xml b/A320-main.xml
index a91b0b18..b4378231 100644
--- a/A320-main.xml
+++ b/A320-main.xml
@@ -1044,6 +1044,7 @@
Aircraft/A320Family/Nasal/MCDU1/PERFTO.nas
Aircraft/A320Family/Nasal/MCDU1/RADNAV.nas
Aircraft/A320Family/Nasal/MCDU1/DATA.nas
+ Aircraft/A320Family/Nasal/MCDU1/STATUS.nas
Aircraft/A320Family/Nasal/MCDU2/MCDU.nas
@@ -1056,6 +1057,7 @@
Aircraft/A320Family/Nasal/MCDU2/PERFTO.nas
Aircraft/A320Family/Nasal/MCDU2/RADNAV.nas
Aircraft/A320Family/Nasal/MCDU2/DATA.nas
+ Aircraft/A320Family/Nasal/MCDU2/STATUS.nas
Aircraft/A320Family/Models/Instruments/ND/canvas/ND.nas
diff --git a/Models/Instruments/MCDU1/DATA/IRSMON.xml b/Models/Instruments/MCDU1/DATA/IRSMON.xml
new file mode 100644
index 00000000..d22f1d45
--- /dev/null
+++ b/Models/Instruments/MCDU1/DATA/IRSMON.xml
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+ EMPTY.ac
+
+
+ page
+
+ -0.001
+ 0.0
+ 0.083
+
+ center-center
+ yz-plane
+ text-value
+ IRS MONITOR
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ irs1
+
+ -0.001
+ -0.045
+ 0.0715
+
+ left-center
+ yz-plane
+ text-value
+ <IRS1
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ irs2
+
+ -0.001
+ -0.045
+ 0.061
+
+ left-center
+ yz-plane
+ text-value
+ <IRS2
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ irs3
+
+ -0.001
+ -0.045
+ 0.0505
+
+ left-center
+ yz-plane
+ text-value
+ <IRS3
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+
+
+ material
+ page
+ irs1
+ irs2
+ irs3
+
+ 1
+ 1
+ 1
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+ 1
+ 1
+ 1
+
+
+
+
diff --git a/Models/Instruments/MCDU1/MCDU1.xml b/Models/Instruments/MCDU1/MCDU1.xml
index 65494266..ce741a7f 100644
--- a/Models/Instruments/MCDU1/MCDU1.xml
+++ b/Models/Instruments/MCDU1/MCDU1.xml
@@ -180,6 +180,28 @@
+
+ IRSMON
+ DATA/IRSMON.xml
+
+ 180
+ 180
+ 90
+
+
+
+
+ systems/electrical/bus/ac1
+ 110
+
+
+ MCDU[0]/page
+ IRSMON
+
+
+
+
+
TO
PERF/TO/TO.xml
diff --git a/Models/Instruments/MCDU1/STATUS/STATUS.xml b/Models/Instruments/MCDU1/STATUS/STATUS.xml
index 3b642eee..1fddc83c 100644
--- a/Models/Instruments/MCDU1/STATUS/STATUS.xml
+++ b/Models/Instruments/MCDU1/STATUS/STATUS.xml
@@ -114,10 +114,10 @@
left-center
yz-plane
text-value
- 01JAN-28JAN
+ %s
false
BoeingCDU-Large.ttf
- autopilot/serviceable
+ FMGC/internal/navdatabase
true
false
false
@@ -137,10 +137,10 @@
right-center
yz-plane
text-value
- AB20170101
+ %s
false
BoeingCDU-Large.ttf
- autopilot/serviceable
+ FMGC/internal/navdatabasecode
true
false
false
@@ -184,7 +184,7 @@
left-center
yz-plane
text-value
- <-29JAN-26FEB
+ <-
false
BoeingCDU-Large.ttf
autopilot/serviceable
@@ -197,6 +197,29 @@
64
+
+ seconddata3
+
+ -0.001
+ -0.040
+ 0.0505
+
+ left-center
+ yz-plane
+ text-value
+ %s
+ false
+ BoeingCDU-Large.ttf
+ FMGC/internal/navdatabase2
+ true
+ false
+ false
+ 0.0045
+
+ 64
+ 64
+
+
chgcode
@@ -406,6 +429,7 @@
material
activedata2
seconddata2
+ seconddata3
chgcode2
0
diff --git a/Models/Instruments/MCDU2/DATA/IRSMON.xml b/Models/Instruments/MCDU2/DATA/IRSMON.xml
new file mode 100644
index 00000000..d22f1d45
--- /dev/null
+++ b/Models/Instruments/MCDU2/DATA/IRSMON.xml
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+ EMPTY.ac
+
+
+ page
+
+ -0.001
+ 0.0
+ 0.083
+
+ center-center
+ yz-plane
+ text-value
+ IRS MONITOR
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ irs1
+
+ -0.001
+ -0.045
+ 0.0715
+
+ left-center
+ yz-plane
+ text-value
+ <IRS1
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ irs2
+
+ -0.001
+ -0.045
+ 0.061
+
+ left-center
+ yz-plane
+ text-value
+ <IRS2
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+ irs3
+
+ -0.001
+ -0.045
+ 0.0505
+
+ left-center
+ yz-plane
+ text-value
+ <IRS3
+ false
+ BoeingCDU-Large.ttf
+ autopilot/serviceable
+ true
+ false
+ false
+ 0.0050
+
+ 64
+ 64
+
+
+
+
+
+
+ material
+ page
+ irs1
+ irs2
+ irs3
+
+ 1
+ 1
+ 1
+
+
+ 0
+ 0
+ 0
+
+
+ 0
+ 0
+ 0
+
+
+ 1
+ 1
+ 1
+
+
+
+
diff --git a/Models/Instruments/MCDU2/MCDU2.xml b/Models/Instruments/MCDU2/MCDU2.xml
index c0024550..e6d74798 100644
--- a/Models/Instruments/MCDU2/MCDU2.xml
+++ b/Models/Instruments/MCDU2/MCDU2.xml
@@ -180,6 +180,28 @@
+
+ IRSMON
+ DATA/IRSMON.xml
+
+ 180
+ 180
+ 90
+
+
+
+
+ systems/electrical/bus/ac1
+ 110
+
+
+ MCDU[1]/page
+ IRSMON
+
+
+
+
+
TO
PERF/TO/TO.xml
diff --git a/Models/Instruments/MCDU2/STATUS/STATUS.xml b/Models/Instruments/MCDU2/STATUS/STATUS.xml
index 3b642eee..1fddc83c 100644
--- a/Models/Instruments/MCDU2/STATUS/STATUS.xml
+++ b/Models/Instruments/MCDU2/STATUS/STATUS.xml
@@ -114,10 +114,10 @@
left-center
yz-plane
text-value
- 01JAN-28JAN
+ %s
false
BoeingCDU-Large.ttf
- autopilot/serviceable
+ FMGC/internal/navdatabase
true
false
false
@@ -137,10 +137,10 @@
right-center
yz-plane
text-value
- AB20170101
+ %s
false
BoeingCDU-Large.ttf
- autopilot/serviceable
+ FMGC/internal/navdatabasecode
true
false
false
@@ -184,7 +184,7 @@
left-center
yz-plane
text-value
- <-29JAN-26FEB
+ <-
false
BoeingCDU-Large.ttf
autopilot/serviceable
@@ -197,6 +197,29 @@
64
+
+ seconddata3
+
+ -0.001
+ -0.040
+ 0.0505
+
+ left-center
+ yz-plane
+ text-value
+ %s
+ false
+ BoeingCDU-Large.ttf
+ FMGC/internal/navdatabase2
+ true
+ false
+ false
+ 0.0045
+
+ 64
+ 64
+
+
chgcode
@@ -406,6 +429,7 @@
material
activedata2
seconddata2
+ seconddata3
chgcode2
0
diff --git a/Nasal/ADIRS.nas b/Nasal/ADIRS.nas
index b36e5f58..baaa97b6 100644
--- a/Nasal/ADIRS.nas
+++ b/Nasal/ADIRS.nas
@@ -62,6 +62,16 @@ var ADIRSreset = func {
setprop("/controls/adirs/ir[2]/fault",0);
setprop("/controls/adirs/onbat",0);
setprop("/controls/adirs/mcducbtn",0);
+ setprop("/controls/adirs/mcdu/mode1", ""); # INVAL ALIGN NAV ATT or off (blank)
+ setprop("/controls/adirs/mcdu/mode2", "");
+ setprop("/controls/adirs/mcdu/mode3", "");
+ setprop("/controls/adirs/mcdu/status1", ""); # see smith thales p487
+ setprop("/controls/adirs/mcdu/status2", "");
+ setprop("/controls/adirs/mcdu/status3", "");
+ setprop("/controls/adirs/mcdu/hdg", ""); # only shown if in ATT mode
+ setprop("/controls/adirs/mcdu/avgdrift1", "");
+ setprop("/controls/adirs/mcdu/avgdrift2", "");
+ setprop("/controls/adirs/mcdu/avgdrift3", "");
adirs_init();
}
diff --git a/Nasal/FMGC.nas b/Nasal/FMGC.nas
index eba656ba..7d9d91a7 100644
--- a/Nasal/FMGC.nas
+++ b/Nasal/FMGC.nas
@@ -27,6 +27,10 @@ setprop("/FMGC/internal/vor1-mcdu", "XXX/999.99");
setprop("/FMGC/internal/vor2-mcdu", "999.99/XXX");
setlistener("/sim/signals/fdm-initialized", func {
+ var database1 = getprop("/FMGC/internal/navdatabase");
+ var database2 = getprop("/FMGC/internal/navdatabase2");
+ var code1 = getprop("/FMGC/internal/navdatabasecode");
+ var code2 = getprop("/FMGC/internal/navdatabasecode2");
var gear1 = getprop("/gear/gear[1]/wow");
var gear2 = getprop("/gear/gear[2]/wow");
var state1 = getprop("/systems/thrust/state1");
@@ -527,3 +531,14 @@ var ManagedSPD = maketimer(0.25, func {
libraries.mcpSPDKnbPull();
}
});
+
+var switchDatabase = func {
+ database1 = getprop("/FMGC/internal/navdatabase");
+ database2 = getprop("/FMGC/internal/navdatabase2");
+ code1 = getprop("/FMGC/internal/navdatabasecode");
+ code2 = getprop("/FMGC/internal/navdatabasecode2");
+ setprop("/FMGC/internal/navdatabase", database2);
+ setprop("/FMGC/internal/navdatabase2", database1);
+ setprop("/FMGC/internal/navdatabasecode", code2);
+ setprop("/FMGC/internal/navdatabasecode2", code1);
+}
\ No newline at end of file
diff --git a/Nasal/MCDU1/DATA.nas b/Nasal/MCDU1/DATA.nas
index c2aac9b6..089cdce6 100644
--- a/Nasal/MCDU1/DATA.nas
+++ b/Nasal/MCDU1/DATA.nas
@@ -8,4 +8,7 @@ var dataInput = func(key) {
if (key == "L1") {
setprop("/MCDU[0]/page", "POSMON");
}
+ if (key == "L2") {
+ setprop("/MCDU[0]/page", "IRSMON");
+ }
}
diff --git a/Nasal/MCDU1/MCDU.nas b/Nasal/MCDU1/MCDU.nas
index eee2dc25..f64cea11 100644
--- a/Nasal/MCDU1/MCDU.nas
+++ b/Nasal/MCDU1/MCDU.nas
@@ -52,6 +52,10 @@ var MCDU_reset = func {
setprop("/FMGC/internal/vor2crs-set", 0);
setprop("/FMGC/internal/adf1freq-set", 0);
setprop("/FMGC/internal/adf2freq-set", 0);
+ setprop("/FMGC/internal/navdatabase", "01JAN-28JAN");
+ setprop("/FMGC/internal/navdatabase2", "29JAN-26FEB");
+ setprop("/FMGC/internal/navdatabasecode", "AB20170101");
+ setprop("/FMGC/internal/navdatabasecode2", "AB20170102");
}
var lskbutton = func(btn) {
@@ -86,7 +90,9 @@ var lskbutton = func(btn) {
initInputA("L5");
} else if (getprop("/MCDU[0]/page") == "DES") {
initInputA("L5");
- } else {
+ } else if (getprop("/MCDU[0]/page") == "DATA") {
+ dataInput("L2");
+ } else {
if (getprop("/MCDU[0]/scratchpad") != "NOT ALLOWED") {
setprop("/MCDU[0]/last-scratchpad", getprop("/MCDU[0]/scratchpad"));
}
@@ -98,6 +104,8 @@ var lskbutton = func(btn) {
initInputA("L3");
} else if (getprop("/MCDU[0]/page") == "TO") {
perfTOInput("L3");
+ } else if (getprop("/MCDU[0]/page") == "STATUS") {
+ statusInput("L3");
} else if (getprop("/MCDU[0]/page") == "RADNAV") {
radnavInput("L3");
} else {
diff --git a/Nasal/MCDU1/STATUS.nas b/Nasal/MCDU1/STATUS.nas
new file mode 100644
index 00000000..8afd219c
--- /dev/null
+++ b/Nasal/MCDU1/STATUS.nas
@@ -0,0 +1,11 @@
+# A3XX mCDU by Joshua Davidson (it0uchpods) and Jonathan Redpath
+
+#######################################
+# Copyright (c) A3XX Development Team #
+#######################################
+
+var statusInput = func(key) {
+ if (key == "L3") {
+ fmgc.switchDatabase();
+ }
+}
diff --git a/Nasal/MCDU2/DATA.nas b/Nasal/MCDU2/DATA.nas
index f2dc078a..5a41a290 100644
--- a/Nasal/MCDU2/DATA.nas
+++ b/Nasal/MCDU2/DATA.nas
@@ -8,4 +8,7 @@ var dataInput = func(key) {
if (key == "L1") {
setprop("/MCDU[1]/page", "POSMON");
}
+ if (key == "L2") {
+ setprop("/MCDU[1]/page", "IRSMON");
+ }
}
diff --git a/Nasal/MCDU2/MCDU.nas b/Nasal/MCDU2/MCDU.nas
index 53cfd6af..925d4333 100644
--- a/Nasal/MCDU2/MCDU.nas
+++ b/Nasal/MCDU2/MCDU.nas
@@ -52,6 +52,10 @@ var MCDU_reset = func {
setprop("/FMGC/internal/vor2crs-set", 0);
setprop("/FMGC/internal/adf1freq-set", 0);
setprop("/FMGC/internal/adf2freq-set", 0);
+ setprop("/FMGC/internal/navdatabase", "01JAN-28JAN");
+ setprop("/FMGC/internal/navdatabase2", "29JAN-26FEB");
+ setprop("/FMGC/internal/navdatabasecode", "AB20170101");
+ setprop("/FMGC/internal/navdatabasecode2", "AB20170102");
}
var lskbutton = func(btn) {
@@ -86,7 +90,9 @@ var lskbutton = func(btn) {
initInputA("L5");
} else if (getprop("/MCDU[1]/page") == "DES") {
initInputA("L5");
- } else {
+ } else if (getprop("/MCDU[1]/page") == "DATA") {
+ dataInput("L2");
+ } else {
if (getprop("/MCDU[1]/scratchpad") != "NOT ALLOWED") {
setprop("/MCDU[1]/last-scratchpad", getprop("/MCDU[1]/scratchpad"));
}
@@ -98,6 +104,8 @@ var lskbutton = func(btn) {
initInputA("L3");
} else if (getprop("/MCDU[1]/page") == "TO") {
perfTOInput("L3");
+ } else if (getprop("/MCDU[1]/page") == "STATUS") {
+ statusInput("L3");
} else if (getprop("/MCDU[1]/page") == "RADNAV") {
radnavInput("L3");
} else {
diff --git a/Nasal/MCDU2/STATUS.nas b/Nasal/MCDU2/STATUS.nas
new file mode 100644
index 00000000..8afd219c
--- /dev/null
+++ b/Nasal/MCDU2/STATUS.nas
@@ -0,0 +1,11 @@
+# A3XX mCDU by Joshua Davidson (it0uchpods) and Jonathan Redpath
+
+#######################################
+# Copyright (c) A3XX Development Team #
+#######################################
+
+var statusInput = func(key) {
+ if (key == "L3") {
+ fmgc.switchDatabase();
+ }
+}