diff --git a/Models/Instruments/MCDU/MCDU.nas b/Models/Instruments/MCDU/MCDU.nas
index 84d9d036..b2fd012b 100644
--- a/Models/Instruments/MCDU/MCDU.nas
+++ b/Models/Instruments/MCDU/MCDU.nas
@@ -99,6 +99,8 @@ var ils1FreqSet = props.globals.getNode("/FMGC/internal/ils1freq-set", 1);
var ils1CRSSet = props.globals.getNode("/FMGC/internal/ils1crs-set", 1);
var adf1FreqSet = props.globals.getNode("/FMGC/internal/adf1freq-set", 1);
var adf2FreqSet = props.globals.getNode("/FMGC/internal/adf2freq-set", 1);
+var adf1Bfo = props.globals.getNode("/systems/radio/rmp[0]/bfo-active", 1);
+var adf2Bfo = props.globals.getNode("/systems/radio/rmp[1]/bfo-active", 1);
var ils1CRS = props.globals.getNode("/instrumentation/nav[0]/radials/selected-deg", 1);
var vor1CRS = props.globals.getNode("/instrumentation/nav[2]/radials/selected-deg", 1);
var vor2CRS = props.globals.getNode("/instrumentation/nav[3]/radials/selected-deg", 1);
@@ -2595,12 +2597,12 @@ var canvas_MCDU_base = {
me.colorLeft("blu", "blu", "blu", "blu", "blu", "blu");
me.colorLeftS("wht", "wht", "wht", "wht", "wht", "wht");
- me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "wht");
+ me.colorLeftArrow("wht", "wht", "wht", "wht", "wht", "blu");
me.colorCenter("wht", "wht", "wht", "wht", "wht", "grn");
me.colorCenterS("wht", "wht", "wht", "wht", "wht", "wht");
me.colorRight("blu", "blu", "blu", "blu", "blu", "blu");
me.colorRightS("wht", "wht", "wht", "wht", "wht", "wht");
- me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "wht");
+ me.colorRightArrow("wht", "wht", "wht", "wht", "wht", "blu");
pageSwitch[i].setBoolValue(1);
}
@@ -2625,14 +2627,28 @@ var canvas_MCDU_base = {
} else {
me["Simple_L4"].setFontSize(small);
}
+
+ me["Simple_L6"].setText(" ADF1 BFO");
+ me["Simple_R6"].setText("ADF2 BFO ");
+
if (adf1FreqSet.getValue() == 1) {
me["Simple_L5"].setFont(default);
me["Simple_L5"].setFontSize(normal);
- me["Simple_L5"].setText(sprintf("%s", adf1.getValue()));
+ me["Simple_L5"].setText(sprintf(" %s", adf1.getValue()));
+ me["Simple_L6"].show();
+
+ if (adf1Bfo.getValue()) {
+ # TODO - wrong arrow
+ me["Simple_L6_Arrow"].hide();
+ } else {
+ me["Simple_L6_Arrow"].show();
+ }
} else {
me["Simple_L5"].setFont(symbol);
me["Simple_L5"].setFontSize(small);
- me["Simple_L5"].setText("[ ]/[ ]");
+ me["Simple_L5"].setText("[ ]/[ .]");
+ me["Simple_L6"].hide();
+ me["Simple_L6_Arrow"].hide();
}
if (vor2FreqSet.getValue() == 1) {
@@ -2645,14 +2661,25 @@ var canvas_MCDU_base = {
} else {
me["Simple_R2"].setFontSize(small);
}
+
if (adf2FreqSet.getValue() == 1) {
me["Simple_R5"].setFont(default);
me["Simple_R5"].setFontSize(normal);
- me["Simple_R5"].setText(sprintf("%s", adf2.getValue()));
+ me["Simple_R5"].setText(sprintf("%s ", adf2.getValue()));
+ me["Simple_R6"].show();
+
+ if (adf2Bfo.getValue()) {
+ # TODO - wrong arrow
+ me["Simple_R6_Arrow"].hide();
+ } else {
+ me["Simple_R6_Arrow"].show();
+ }
} else {
me["Simple_R5"].setFont(symbol);
me["Simple_R5"].setFontSize(small);
- me["Simple_R5"].setText("[ ]/[ ]");
+ me["Simple_R5"].setText("[ .]/[ ]");
+ me["Simple_R6"].hide();
+ me["Simple_R6_Arrow"].hide();
}
me["Simple_L1"].setText(" " ~ vor1.getValue());
diff --git a/Nasal/FMGC/FMGC.nas b/Nasal/FMGC/FMGC.nas
index eba61129..36625aa0 100644
--- a/Nasal/FMGC/FMGC.nas
+++ b/Nasal/FMGC/FMGC.nas
@@ -577,28 +577,18 @@ var nav3 = func {
}
var adf0 = func {
- var freqadf0uf = getprop("/instrumentation/adf[0]/frequencies/selected-khz");
- var freqadf0 = sprintf("%.2f", freqadf0uf);
- var nameadf0 = getprop("/instrumentation/adf[0]/ident") or "";
- if (freqadf0 >= 190 and freqadf0 <= 1750) {
- if (nameadf0 != "") {
- setprop("/FMGC/internal/adf1-mcdu", nameadf0 ~ "/" ~ freqadf0);
- } else {
- setprop("/FMGC/internal/adf1-mcdu", freqadf0);
- }
+ var freqadf0 = sprintf("%.1f", pts.Instrumentation.Adf.Frequencies.selectedKhz[0].getValue());
+ if (freqadf0 >= 190 and freqadf0 <= 1799) {
+ var nameadf0 = pts.Instrumentation.Adf.ident[0].getValue() or " ";
+ setprop("/FMGC/internal/adf1-mcdu", nameadf0 ~ "/" ~ freqadf0);
}
}
var adf1 = func {
- var freqadf1uf = getprop("/instrumentation/adf[1]/frequencies/selected-khz");
- var freqadf1 = sprintf("%.2f", freqadf1uf);
- var nameadf1 = getprop("/instrumentation/adf[1]/ident") or "";
- if (freqadf1 >= 190 and freqadf1 <= 1750) {
- if (nameadf1 != "") {
- setprop("/FMGC/internal/adf2-mcdu", freqadf1 ~ "/" ~ nameadf1);
- } else {
- setprop("/FMGC/internal/adf2-mcdu", freqadf1);
- }
+ var freqadf1 = sprintf("%.1f", pts.Instrumentation.Adf.Frequencies.selectedKhz[1].getValue());
+ if (freqadf1 >= 190 and freqadf1 <= 1799) {
+ var nameadf1 = pts.Instrumentation.Adf.ident[1].getValue() or " ";
+ setprop("/FMGC/internal/adf2-mcdu", freqadf1 ~ "/" ~ nameadf1);
}
}
diff --git a/Nasal/Libraries/property-tree-setup.nas b/Nasal/Libraries/property-tree-setup.nas
index 833fb4da..ba94fe6a 100644
--- a/Nasal/Libraries/property-tree-setup.nas
+++ b/Nasal/Libraries/property-tree-setup.nas
@@ -154,6 +154,12 @@ var Gear = {
};
var Instrumentation = {
+ Adf: {
+ ident: [props.globals.getNode("/instrumentation/adf[0]/ident"), props.globals.getNode("/instrumentation/adf[1]/ident")],
+ Frequencies: {
+ selectedKhz: [props.globals.getNode("/instrumentation/adf[0]/frequencies/selected-khz"), props.globals.getNode("/instrumentation/adf[1]/frequencies/selected-khz")],
+ },
+ },
AirspeedIndicator: {
indicatedSpdKt: props.globals.getNode("/instrumentation/airspeed-indicator/indicated-speed-kt"),
indicatedMach: props.globals.getNode("/instrumentation/airspeed-indicator/indicated-mach"),
diff --git a/Nasal/MCDU/MCDU.nas b/Nasal/MCDU/MCDU.nas
index 29e5a1af..5f9253a6 100644
--- a/Nasal/MCDU/MCDU.nas
+++ b/Nasal/MCDU/MCDU.nas
@@ -843,6 +843,8 @@ var lskbutton = func(btn, i) {
pageNode[i].setValue("WINDCLB");
} else if (page == "ROUTESELECTION") {
initInputROUTESEL("L6",i);
+ } else if (page == "RADNAV") {
+ radnavInput("L6",i);
} else if (page == "PERFCLB") {
perfCLBInput("L6",i);
} else if (page == "PERFCRZ") {
@@ -1286,6 +1288,8 @@ var rskbutton = func(btn, i) {
mcdu_message(i, "AOC DISABLED");
} else if (page == "INITA") {
initInputA("R6",i);
+ } else if (page == "RADNAV") {
+ radnavInput("R6",i);
} else if (page == "F-PLNA" or page == "F-PLNB") {
canvas_mcdu.myFpln[i].pushButtonRight(6);
} else if (page == "VERTREV") {
diff --git a/Nasal/MCDU/RADNAV.nas b/Nasal/MCDU/RADNAV.nas
index 316fb799..0eb72249 100644
--- a/Nasal/MCDU/RADNAV.nas
+++ b/Nasal/MCDU/RADNAV.nas
@@ -104,11 +104,22 @@ var radnavInput = func(key, i) {
mcdu_scratchpad.scratchpads[i].empty();
} else {
var tfs = size(scratchpad);
- if (tfs == 3 or tfs == 4) {
- if (scratchpad >= 190 and scratchpad <= 1750) {
- setprop("instrumentation/adf[0]/frequencies/selected-khz", scratchpad);
- setprop("/FMGC/internal/adf1freq-set", 1);
- mcdu_scratchpad.scratchpads[i].empty();
+ if (tfs >= 3 and tfs <= 6) {
+ if (scratchpad >= 190 and scratchpad <= 1799) {
+ if (scratchpad != int(scratchpad)) {
+ var splitScratchpad = split(".",scratchpad);
+ if (size(splitScratchpad) != 2 or splitScratchpad[1] != "5") {
+ mcdu_message(i, "NOT ALLOWED");
+ } else {
+ setprop("/instrumentation/adf[0]/frequencies/selected-khz", scratchpad);
+ setprop("/FMGC/internal/adf1freq-set", 1);
+ mcdu_scratchpad.scratchpads[i].empty();
+ }
+ } else {
+ setprop("/instrumentation/adf[0]/frequencies/selected-khz", scratchpad);
+ setprop("/FMGC/internal/adf1freq-set", 1);
+ mcdu_scratchpad.scratchpads[i].empty();
+ }
} else {
mcdu_message(i, "NOT ALLOWED");
}
@@ -116,6 +127,22 @@ var radnavInput = func(key, i) {
mcdu_message(i, "NOT ALLOWED");
}
}
+ } else if (key == "L6") {
+ if (getprop("/FMGC/internal/adf1freq-set")) {
+ if (scratchpad == "CLR" and getprop("/systems/radio/rmp[0]/bfo-active")) {
+ setprop("/systems/radio/rmp[0]/bfo-active", 0);
+ mcdu_scratchpad.scratchpads[i].empty();
+ } else {
+ var tfs = size(scratchpad);
+ if (tfs == 0 and !getprop("/systems/radio/rmp[0]/bfo-active")) {
+ setprop("/systems/radio/rmp[0]/bfo-active", 1);
+ } else {
+ mcdu_message(i, "NOT ALLOWED");
+ }
+ }
+ } else {
+ mcdu_message(i, "NOT ALLOWED");
+ }
} else if (key == "R1") {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/vor2freq-set", 0);
@@ -169,11 +196,22 @@ var radnavInput = func(key, i) {
mcdu_scratchpad.scratchpads[i].empty();
} else {
var tfs = size(scratchpad);
- if (tfs == 3 or tfs == 4) {
- if (scratchpad >= 190 and scratchpad <= 1750) {
- setprop("instrumentation/adf[1]/frequencies/selected-khz", scratchpad);
- setprop("/FMGC/internal/adf2freq-set", 1);
- mcdu_scratchpad.scratchpads[i].empty();
+ if (tfs >= 3 and tfs <= 6) {
+ if (scratchpad >= 190 and scratchpad <= 1799) {
+ if (scratchpad != int(scratchpad)) {
+ var splitScratchpad = split(".",scratchpad);
+ if (size(splitScratchpad) != 2 or splitScratchpad[1] != "5") {
+ mcdu_message(i, "NOT ALLOWED");
+ } else {
+ setprop("/instrumentation/adf[1]/frequencies/selected-khz", scratchpad);
+ setprop("/FMGC/internal/adf2freq-set", 1);
+ mcdu_scratchpad.scratchpads[i].empty();
+ }
+ } else {
+ setprop("/instrumentation/adf[1]/frequencies/selected-khz", scratchpad);
+ setprop("/FMGC/internal/adf2freq-set", 1);
+ mcdu_scratchpad.scratchpads[i].empty();
+ }
} else {
mcdu_message(i, "NOT ALLOWED");
}
@@ -181,8 +219,24 @@ var radnavInput = func(key, i) {
mcdu_message(i, "NOT ALLOWED");
}
}
+ } else if (key == "R6") {
+ if (getprop("/FMGC/internal/adf2freq-set")) {
+ if (scratchpad == "CLR" and getprop("/systems/radio/rmp[1]/bfo-active")) {
+ setprop("/systems/radio/rmp[1]/bfo-active", 0);
+ mcdu_scratchpad.scratchpads[i].empty();
+ } else {
+ var tfs = size(scratchpad);
+ if (tfs == 0 and !getprop("/systems/radio/rmp[1]/bfo-active")) {
+ setprop("/systems/radio/rmp[1]/bfo-active", 1);
+ } else {
+ mcdu_message(i, "NOT ALLOWED");
+ }
+ }
+ } else {
+ mcdu_message(i, "NOT ALLOWED");
+ }
+ } else {
+ mcdu_message(i, "NOT ALLOWED");
}
- } else {
- mcdu_message(i, "NOT ALLOWED");
}
}
diff --git a/Nasal/Panels/acp.nas b/Nasal/Panels/acp.nas
index bade1ce6..4df5fb5b 100644
--- a/Nasal/Panels/acp.nas
+++ b/Nasal/Panels/acp.nas
@@ -11,11 +11,19 @@ var vhf1_capt_recive = props.globals.initNode("/controls/audio/acp[0]/vhf1-reciv
var vhf2_capt_recive = props.globals.initNode("/controls/audio/acp[0]/vhf2-recive", 1, "BOOL");
var vhf1_capt_volume = props.globals.initNode("/controls/audio/acp[0]/vhf1-volume", 1, "DOUBLE");
var vhf2_capt_volume = props.globals.initNode("/controls/audio/acp[0]/vhf2-volume", 1, "DOUBLE");
+var adf1_capt_receive = props.globals.initNode("/controls/audio/acp[0]/adf1-recive", 0, "BOOL");
+var adf1_capt_volume = props.globals.initNode("/controls/audio/acp[0]/adf1-volume", 1, "DOUBLE");
+var adf2_capt_receive = props.globals.initNode("/controls/audio/acp[0]/adf2-recive", 0, "BOOL");
+var adf2_capt_volume = props.globals.initNode("/controls/audio/acp[0]/adf2-volume", 1, "DOUBLE");
var vhf1_fo_recive = props.globals.initNode("/controls/audio/acp[1]/vhf1-recive", 1, "BOOL");
var vhf2_fo_recive = props.globals.initNode("/controls/audio/acp[1]/vhf2-recive", 1, "BOOL");
var vhf1_fo_volume = props.globals.initNode("/controls/audio/acp[1]/vhf1-volume", 1, "DOUBLE");
var vhf2_fo_volume = props.globals.initNode("/controls/audio/acp[1]/vhf2-volume", 1, "DOUBLE");
+var adf1_fo_receive = props.globals.initNode("/controls/audio/acp[1]/adf1-recive", 0, "BOOL");
+var adf1_fo_volume = props.globals.initNode("/controls/audio/acp[1]/adf1-volume", 1, "DOUBLE");
+var adf2_fo_receive = props.globals.initNode("/controls/audio/acp[1]/adf2-recive", 0, "BOOL");
+var adf2_fo_volume = props.globals.initNode("/controls/audio/acp[1]/adf2-volume", 1, "DOUBLE");
var com1_volume = props.globals.getNode("instrumentation/comm[0]/volume");
var com2_volume = props.globals.getNode("instrumentation/comm[1]/volume");
diff --git a/Nasal/Panels/rmp.nas b/Nasal/Panels/rmp.nas
index 0615a7b7..21cb823e 100644
--- a/Nasal/Panels/rmp.nas
+++ b/Nasal/Panels/rmp.nas
@@ -490,7 +490,7 @@ var change_nav_mode = func(rmp_nr, nav_mode) {
}
# ADF Radio: Implement BFO such that you will hear audio
-var BFOActive = [props.globals.getNode("/systems/radio/rmp[0]/bfo-active"),props.globals.getNode("/systems/radio/rmp[1]/bfo-active")];
+var BFOActive = [props.globals.initNode("/systems/radio/rmp[0]/bfo-active", 0, "BOOL"),props.globals.initNode("/systems/radio/rmp[1]/bfo-active", 0, "BOOL")];
var ADFIdent = [props.globals.getNode("/instrumentation/adf[0]/ident-audible"),props.globals.getNode("/instrumentation/adf[1]/ident-audible")];
var ADFMode = [props.globals.getNode("/instrumentation/adf[0]/mode"),props.globals.getNode("/instrumentation/adf[1]/mode")];
diff --git a/Systems/a320-misc.xml b/Systems/a320-misc.xml
index 0d9f46b5..1ef588f9 100644
--- a/Systems/a320-misc.xml
+++ b/Systems/a320-misc.xml
@@ -39,6 +39,46 @@
+
+
+
+
+
+ /controls/audio/acp[0]/adf1-recive eq 1
+
+ /controls/audio/acp[1]/adf1-recive eq 0
+ /controls/audio/acp[0]/adf1-volume ge /controls/audio/acp[1]/adf1-volume
+
+
+
+ /controls/audio/acp[1]/adf1-recive eq 1
+
+ /controls/audio/acp[0]/adf1-recive eq 0
+ /controls/audio/acp[0]/adf1-volume lt /controls/audio/acp[1]/adf1-volume
+
+
+
+
+
+
+
+ /controls/audio/acp[0]/adf2-recive eq 1
+
+ /controls/audio/acp[1]/adf2-recive eq 0
+ /controls/audio/acp[0]/adf2-volume ge /controls/audio/acp[1]/adf2-volume
+
+
+
+ /controls/audio/acp[1]/adf2-recive eq 1
+
+ /controls/audio/acp[0]/adf2-recive eq 0
+ /controls/audio/acp[0]/adf2-volume lt /controls/audio/acp[1]/adf2-volume
+
+
+
+
+
+