diff --git a/A320-main.xml b/A320-main.xml
index 640ffafd..7751b92a 100644
--- a/A320-main.xml
+++ b/A320-main.xml
@@ -3954,7 +3954,6 @@
Aircraft/A320-family/Nasal/Libraries/buttons.nas
Aircraft/A320-family/Nasal/Libraries/shake.nas
Aircraft/A320-family/Nasal/Libraries/zoom-views.nas
- Aircraft/A320-family/Nasal/Libraries/efis.nas
Aircraft/A320-family/AircraftConfig/acconfig.nas
@@ -3998,6 +3997,7 @@
Aircraft/A320-family/Nasal/FMGC/FCU.nas
+ Aircraft/A320-family/Nasal/Panels/efis.nas
Aircraft/A320-family/Nasal/FMGC/flightplan-waypoints.nas
diff --git a/Models/Effects/wing-condensation-L.xml b/Models/Effects/wing-condensation-L.xml
index b826cdcd..de1a4dd6 100644
--- a/Models/Effects/wing-condensation-L.xml
+++ b/Models/Effects/wing-condensation-L.xml
@@ -11,61 +11,35 @@
-
-
-
-
-
- environment/relative-humidity
- 0.1
-
- systems/navigation/adr/output/aoa-1
-
-
- 13.5
-
-
-
-
-
- environment/relative-humidity
- 0.1
-
- systems/navigation/adr/output/aoa-2
-
-
- 13.5
-
-
-
-
-
- environment/relative-humidity
- 0.1
-
- systems/navigation/adr/output/aoa-3
-
-
- 13.5
-
-
+
+
+
+
+ environment/relative-humidity
+ 0.075
+
+ fdm/jsbsim/aero/alpha-deg
+
+
+ 13.5
+
velocities/groundspeed-kt
100
-
-
+
+
velocities/groundspeed-kt
210
-
-
+
+
environment/relative-humidity
50
-
-
+
+
environment/temperature-degc
28
-
-
+
+
position/altitude-agl-ft
0
@@ -73,20 +47,10 @@
position/altitude-agl-ft
8000
-
-
- systems/navigation/adr/output/aoa-1
- 0
-
-
- systems/navigation/adr/output/aoa-2
- 0
-
-
- systems/navigation/adr/output/aoa-3
- 0
-
-
+
+ fdm/jsbsim/aero/alpha-deg
+ 0
+
@@ -109,49 +73,49 @@
-
-
-
- 90
-
-
-
+ 90
+
+
+
- 90
-
- 90
- 90
-
-
- 0
- 0
-
-
- 180
- 180
- 180
- -180
- -180
- -180
-
-
+ 110
+ systems/navigation/adr/output/aoa-1
+
+ -->
+ 90
+
+ 90
+ 90
+
+
+ 0
+ 0
+
+
+ 180
+ 180
+ 180
+ -180
+ -180
+ -180
+
+
-
-
+
+
4
@@ -159,13 +123,13 @@
10
-
-
+
+
- billboard
+ billboard
-
-
+
+
@@ -203,8 +167,8 @@
1.5
-
-
+
+
@@ -239,22 +203,22 @@
-
- 2
-
-
-
- 0.00001
-
- 0.025
- 0.175
-
+
+ 2
+
+
+
+ 0.00001
+
+ 0.025
+ 0.175
+
-
- air
- true
- true
-
+
+ air
+ true
+ true
+
diff --git a/Models/Effects/wing-condensation-R.xml b/Models/Effects/wing-condensation-R.xml
index 62d524a4..4906ba91 100644
--- a/Models/Effects/wing-condensation-R.xml
+++ b/Models/Effects/wing-condensation-R.xml
@@ -11,61 +11,35 @@
-
-
-
-
-
- environment/relative-humidity
- 0.1
-
- systems/navigation/adr/output/aoa-1
-
-
- 13.5
-
-
-
-
-
- environment/relative-humidity
- 0.1
-
- systems/navigation/adr/output/aoa-2
-
-
- 13.5
-
-
-
-
-
- environment/relative-humidity
- 0.1
-
- systems/navigation/adr/output/aoa-3
-
-
- 13.5
-
-
+
+
+
+
+ environment/relative-humidity
+ 0.075
+
+ fdm/jsbsim/aero/alpha-deg
+
+
+ 13.5
+
velocities/groundspeed-kt
100
-
-
+
+
velocities/groundspeed-kt
210
-
-
+
+
environment/relative-humidity
50
-
-
+
+
environment/temperature-degc
28
-
-
+
+
position/altitude-agl-ft
0
@@ -73,20 +47,10 @@
position/altitude-agl-ft
8000
-
-
- systems/navigation/adr/output/aoa-1
- 0
-
-
- systems/navigation/adr/output/aoa-2
- 0
-
-
- systems/navigation/adr/output/aoa-3
- 0
-
-
+
+ fdm/jsbsim/aero/alpha-deg
+ 0
+
@@ -109,49 +73,49 @@
-
-
-
- 90
-
-
-
+ 90
+
+
+
- 90
-
- 90
- 90
-
-
- 0
- 0
-
-
- 180
- 180
- 180
- -180
- -180
- -180
-
-
+ 110
+ systems/navigation/adr/output/aoa-1
+
+ -->
+ 90
+
+ 90
+ 90
+
+
+ 0
+ 0
+
+
+ 180
+ 180
+ 180
+ -180
+ -180
+ -180
+
+
-
-
+
+
4
@@ -159,13 +123,13 @@
10
-
-
+
+
- billboard
+ billboard
-
-
+
+
@@ -203,8 +167,8 @@
1.5
-
-
+
+
@@ -239,22 +203,22 @@
-
- 2
-
-
-
- 0.00001
-
- 0.025
- 0.175
-
+
+ 2
+
+
+
+ 0.00001
+
+ 0.025
+ 0.175
+
-
- air
- true
- true
-
+
+ air
+ true
+ true
+
diff --git a/Models/FlightDeck/a320.flightdeck.xml b/Models/FlightDeck/a320.flightdeck.xml
index 3514b9bb..baffe01c 100644
--- a/Models/FlightDeck/a320.flightdeck.xml
+++ b/Models/FlightDeck/a320.flightdeck.xml
@@ -3262,9 +3262,9 @@
nasal
@@ -3304,9 +3304,9 @@
nasal
@@ -3346,9 +3346,9 @@
nasal
@@ -3388,9 +3388,9 @@
nasal
@@ -3430,9 +3430,9 @@
nasal
@@ -3472,9 +3472,9 @@
nasal
@@ -3514,9 +3514,9 @@
nasal
@@ -3556,9 +3556,9 @@
nasal
@@ -3598,9 +3598,9 @@
nasal
@@ -3640,9 +3640,9 @@
nasal
@@ -3675,7 +3675,7 @@
false
nasal
-
+
@@ -3684,7 +3684,7 @@
false
nasal
-
+
@@ -3713,7 +3713,7 @@
false
nasal
-
+
@@ -3722,7 +3722,7 @@
false
nasal
-
+
@@ -3751,7 +3751,7 @@
false
nasal
-
+
@@ -3760,7 +3760,7 @@
false
nasal
-
+
@@ -3790,7 +3790,7 @@
false
nasal
-
+
@@ -3799,7 +3799,7 @@
false
nasal
-
+
diff --git a/Nasal/FMGC/flightplan.nas b/Nasal/FMGC/flightplan.nas
index dacb1446..00bfeb3e 100644
--- a/Nasal/FMGC/flightplan.nas
+++ b/Nasal/FMGC/flightplan.nas
@@ -56,6 +56,14 @@ var flightPlanController = {
_timeTemp: nil,
_altTemp: nil,
+ init: func() {
+ me.resetFlightplan(2);
+ me.insertPPOS(2);
+ me.addDiscontinuity(1, 2, 1);
+ me.currentToWptIndex.setValue(0);
+ me.flightPlanChanged(2);
+ },
+
reset: func() {
me.temporaryFlag[0] = 0;
me.temporaryFlag[1] = 0;
@@ -208,8 +216,11 @@ var flightPlanController = {
# Check if a discontinuity already exists either immediately before or at that index
# If it does, don't add another one
# Optional flag DEBUG_DISCONT to disable discontinuities totally
- addDiscontinuity: func(index, plan) {
+ addDiscontinuity: func(index, plan, force = 0) {
if (DEBUG_DISCONT) { return; }
+ if (force) {
+ me.flightplans[plan].insertWP(createDiscontinuity(), index);
+ }
if (index > 0) {
if (me.flightplans[plan].getWP(index).wp_name != "DISCONTINUITY" and me.flightplans[plan].getWP(index - 1).wp_name != "DISCONTINUITY") {
me.flightplans[plan].insertWP(createDiscontinuity(), index);
@@ -231,6 +242,10 @@ var flightPlanController = {
me.flightplans[n].insertWP(createWP(geo.aircraft_position(), "T-P"), index);
},
+ insertPPOS: func(n, index = 0) {
+ me.flightplans[n].insertWP(createWP(geo.aircraft_position(), "PPOS"), index);
+ },
+
# childWPBearingDistance - return waypoint at bearing and distance from specified waypoint ghost
# args: wpt, bearing, dist, name, typeStr
# wpt: waypoint ghost
diff --git a/Nasal/Libraries/libraries.nas b/Nasal/Libraries/libraries.nas
index ef1740f2..99ecb3fa 100644
--- a/Nasal/Libraries/libraries.nas
+++ b/Nasal/Libraries/libraries.nas
@@ -222,6 +222,7 @@ var systemsInit = func {
atc.init();
fcu.FCUController.init();
dmc.DMController.init();
+ fmgc.flightPlanController.init();
}
setlistener("/sim/signals/fdm-initialized", func {
diff --git a/Nasal/MCDU/ARRIVAL.nas b/Nasal/MCDU/ARRIVAL.nas
index 517ed64b..306c8128 100644
--- a/Nasal/MCDU/ARRIVAL.nas
+++ b/Nasal/MCDU/ARRIVAL.nas
@@ -80,9 +80,11 @@ var arrivalPage = {
}
if (fmgc.flightPlanController.flightplans[me.computer].star != nil) {
me.selectedSTAR = fmgc.flightPlanController.flightplans[me.computer].star;
+ me.selectedTransition = fmgc.flightPlanController.flightplans[me.computer].star_trans;
isNoStar[me.computer] = 0;
} elsif (fmgc.flightPlanController.flightplans[2].star != nil) {
me.selectedSTAR = fmgc.flightPlanController.flightplans[2].star;
+ me.selectedTransition = fmgc.flightPlanController.flightplans[2].star_trans;
isNoStar[me.computer] = 0;
} elsif (isNoStar[me.computer] == 1) {
me.selectedSTAR = "NO STAR";
diff --git a/Nasal/MCDU/DEPARTURE.nas b/Nasal/MCDU/DEPARTURE.nas
index 97fe8802..ba106ff7 100644
--- a/Nasal/MCDU/DEPARTURE.nas
+++ b/Nasal/MCDU/DEPARTURE.nas
@@ -77,9 +77,11 @@ var departurePage = {
}
if (fmgc.flightPlanController.flightplans[me.computer].sid != nil) {
me.selectedSID = fmgc.flightPlanController.flightplans[me.computer].sid;
+ me.selectedTransition = fmgc.flightPlanController.flightplans[me.computer].sid_trans;
isNoSid[me.computer] = 0;
} elsif (fmgc.flightPlanController.flightplans[2].sid != nil) {
me.selectedSID = fmgc.flightPlanController.flightplans[2].sid;
+ me.selectedTransition = fmgc.flightPlanController.flightplans[2].sid_trans;
isNoSid[me.computer] = 0;
} elsif (isNoSid[me.computer] == 1) {
me.selectedSID = "NO SID";
@@ -196,7 +198,7 @@ var departurePage = {
me.R1 = ["-------", "TRANS ", "wht"];
}
} elsif (fmgc.flightPlanController.flightplans[me.computer].sid_trans != nil) {
- me.C1 = [fmgc.flightPlanController.flightplans[me.computer].sid_trans.id, "SID", "yel"];
+ me.R1 = [fmgc.flightPlanController.flightplans[me.computer].sid_trans.id, "SID", "yel"];
} else {
me.R1 = ["-------", "TRANS ", "wht"];
}
@@ -558,7 +560,7 @@ var departurePage = {
if (!dirToFlag) {
me.selectedTransition = me.transitions[index - 2];
me.makeTmpy();
- fmgc.flightPlanController.flightplans[me.computer].sid = me.depAirport[0].getSid(me.selectedSID).transition(me.selectedTransition);
+ fmgc.flightPlanController.flightplans[me.computer].sid_trans = me.depAirport[0].getSid(me.selectedSID).transition(me.selectedTransition);
me.updateActiveTransitions();
me.updateTransitions();
fmgc.flightPlanController.flightPlanChanged(me.computer);
diff --git a/Nasal/MCDU/INITA.nas b/Nasal/MCDU/INITA.nas
index a50ac6ad..e0f0fde1 100644
--- a/Nasal/MCDU/INITA.nas
+++ b/Nasal/MCDU/INITA.nas
@@ -168,7 +168,8 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/fuel-calculating", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
}
- fmgc.flightPlanController.reset();
+ fmgc.flightPlanController.reset(2);
+ fmgc.flightPlanController.init();
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
mcdu.clearScratchpad(i);
#} else if (scratchpad == "") {
diff --git a/Nasal/MCDU/MCDU.nas b/Nasal/MCDU/MCDU.nas
index 3326413e..77034d1d 100644
--- a/Nasal/MCDU/MCDU.nas
+++ b/Nasal/MCDU/MCDU.nas
@@ -772,42 +772,33 @@ var pagebutton = func(btn, i) {
setprop("/MCDU[" ~ i ~ "]/scratchpad", "SELECT DESIRED SYSTEM");
setprop("/MCDU[" ~ i ~ "]/page", "MCDU");
} else if (btn == "f-pln" or btn == "airport") {
- if (fmgc.flightPlanController.active.getBoolValue()) {
- if (canvas_mcdu.myFpln[i] == nil) {
- canvas_mcdu.myFpln[i] = fplnPage.new(2, i);
- }
- if (btn == "airport") {
- if (getprop("FMGC/status/phase") == 0 or getprop("FMGC/status/phase") == 1) {
- canvas_mcdu.myFpln[i].scroll = 0;
+ if (canvas_mcdu.myFpln[i] == nil) {
+ canvas_mcdu.myFpln[i] = fplnPage.new(2, i);
+ }
+ if (btn == "airport") {
+ if (getprop("FMGC/status/phase") == 0 or getprop("FMGC/status/phase") == 1) {
+ canvas_mcdu.myFpln[i].scroll = 0;
+ } else {
+ if (fmgc.flightPlanController.temporaryFlag[i]) {
+ canvas_mcdu.myFpln[i].scroll = fmgc.flightPlanController.arrivalIndex[i];
} else {
- if (fmgc.flightPlanController.temporaryFlag[i]) {
- canvas_mcdu.myFpln[i].scroll = fmgc.flightPlanController.arrivalIndex[i];
- } else {
- canvas_mcdu.myFpln[i].scroll = fmgc.flightPlanController.arrivalIndex[2];
- }
+ canvas_mcdu.myFpln[i].scroll = fmgc.flightPlanController.arrivalIndex[2];
}
}
- setprop("/MCDU[" ~ i ~ "]/page", "F-PLNA");
- } else {
- setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 1);
- setprop("/MCDU[" ~ i ~ "]/scratchpad", "ERROR. INITIALIZE ROUTE"); # Should be ERROR:, but the : character doesn't show in our MCDU font right now...
}
+ setprop("/MCDU[" ~ i ~ "]/page", "F-PLNA");
+
} else if (btn == "fuel-pred") {
setprop("/MCDU[" ~ i ~ "]/page", "FUELPRED");
} else if (btn == "dirto") {
- if (fmgc.flightPlanController.active.getBoolValue()) {
- if (fmgc.flightPlanController.temporaryFlag[i] and !dirToFlag) {
- setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 1);
- setprop("/MCDU[" ~ i ~ "]/scratchpad", "INSRT / ERASE TMPY FIRST");
- return;
- } elsif (canvas_mcdu.myDirTo[i] == nil) {
- canvas_mcdu.myDirTo[i] = dirTo.new(i);
- }
- setprop("/MCDU[" ~ i ~ "]/page", "DIRTO");
- } else {
+ if (fmgc.flightPlanController.temporaryFlag[i] and !dirToFlag) {
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 1);
- setprop("/MCDU[" ~ i ~ "]/scratchpad", "ERROR. INITIALIZE ROUTE"); # Should be ERROR:, but the : character doesn't show in our MCDU font right now...
+ setprop("/MCDU[" ~ i ~ "]/scratchpad", "INSRT / ERASE TMPY FIRST");
+ return;
+ } elsif (canvas_mcdu.myDirTo[i] == nil) {
+ canvas_mcdu.myDirTo[i] = dirTo.new(i);
}
+ setprop("/MCDU[" ~ i ~ "]/page", "DIRTO");
}
}
}
diff --git a/Nasal/MCDU/PERFAPPR.nas b/Nasal/MCDU/PERFAPPR.nas
index 32799c96..06479715 100644
--- a/Nasal/MCDU/PERFAPPR.nas
+++ b/Nasal/MCDU/PERFAPPR.nas
@@ -82,7 +82,7 @@ var perfAPPRInput = func(key, i) {
setprop("/FMGC/internal/vapp-speed-set", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
mcdu.clearScratchpad(i);
- } else if (int(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 200) {
+ } else if (int(scratchpad) != nil and scratchpad >= 100 and scratchpad <= 350) {
setprop("/FMGC/internal/vapp-speed-set", 1);
setprop("/FMGC/internal/computed-speeds/vapp_appr", scratchpad);
mcdu.clearScratchpad(i);
diff --git a/Nasal/Panels/acp.nas b/Nasal/Panels/acp.nas
index 4c04531e..58cb7e4d 100644
--- a/Nasal/Panels/acp.nas
+++ b/Nasal/Panels/acp.nas
@@ -7,32 +7,56 @@
# NOTE: This is just temporary until FG allows a full implementation of the audio system.
-var vhf1_recive = props.globals.initNode("/controls/audio/acp[0]/vhf1-recive", 1, "BOOL");
-var vhf2_recive = props.globals.initNode("/controls/audio/acp[0]/vhf2-recive", 1, "BOOL");
+var vhf1_capt_recive = props.globals.initNode("/controls/audio/acp[0]/vhf1-recive", 1, "BOOL");
+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 vhf1_volume = props.globals.initNode("/controls/audio/acp[0]/vhf1-volume", 1, "DOUBLE");
-var vhf2_volume = props.globals.initNode("/controls/audio/acp[0]/vhf2-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 com1_volume = props.globals.getNode("instrumentation/comm[0]/volume");
var com2_volume = props.globals.getNode("instrumentation/comm[1]/volume");
var init = func() {
- vhf1_recive.setValue(1);
- vhf2_recive.setValue(1);
- vhf1_volume.setValue(1);
- vhf2_volume.setValue(0.8);
+ vhf1_capt_recive.setValue(1);
+ vhf2_capt_recive.setValue(1);
+ vhf1_capt_volume.setValue(1);
+ vhf2_capt_volume.setValue(0.8);
+ vhf1_fo_recive.setValue(1);
+ vhf2_fo_recive.setValue(1);
+ vhf1_fo_volume.setValue(0.8);
+ vhf2_fo_volume.setValue(1);
}
-var update_instruments = func(com_no) {
- if (com_no == 0) {
- if (vhf1_recive.getValue()) {
- com1_volume.setValue(vhf1_volume.getValue());
+var update_com1 = func() {
+ if (getprop("systems/acconfig/options/fo-view") == 1) {
+ if (vhf1_fo_recive.getValue()) {
+ com1_volume.setValue(vhf1_fo_volume.getValue());
} else {
com1_volume.setValue(0);
}
- } else if (com_no == 1) {
- if (vhf2_recive.getValue()) {
- com2_volume.setValue(vhf2_volume.getValue());
+ } else {
+ if (vhf1_capt_recive.getValue()) {
+ com1_volume.setValue(vhf1_capt_volume.getValue());
+ } else {
+ com1_volume.setValue(0);
+ }
+ }
+}
+
+var update_com2 = func() {
+ if (getprop("systems/acconfig/options/fo-view") == 1) {
+ if (vhf2_fo_recive.getValue()) {
+ com2_volume.setValue(vhf2_fo_volume.getValue());
+ } else {
+ com2_volume.setValue(0);
+ }
+ } else {
+ if (vhf2_capt_recive.getValue()) {
+ com2_volume.setValue(vhf2_capt_volume.getValue());
} else {
com2_volume.setValue(0);
}
@@ -40,17 +64,39 @@ var update_instruments = func(com_no) {
}
setlistener("/controls/audio/acp[0]/vhf1-recive", func {
- update_instruments(0);
+ update_com1();
});
setlistener("/controls/audio/acp[0]/vhf1-volume", func {
- update_instruments(0);
+ update_com1();
});
setlistener("/controls/audio/acp[0]/vhf2-recive", func {
- update_instruments(1);
+ update_com2();
});
setlistener("/controls/audio/acp[0]/vhf2-volume", func {
- update_instruments(1);
+ update_com2();
});
+
+setlistener("/controls/audio/acp[1]/vhf1-recive", func {
+ update_com1();
+});
+
+setlistener("/controls/audio/acp[1]/vhf1-volume", func {
+ update_com1();
+});
+
+setlistener("/controls/audio/acp[1]/vhf2-recive", func {
+ update_com2();
+});
+
+setlistener("/controls/audio/acp[1]/vhf2-volume", func {
+ update_com2();
+});
+
+setlistener("/systems/acconfig/options/fo-view", func {
+ update_com1();
+ update_com2();
+});
+
diff --git a/Nasal/Libraries/efis.nas b/Nasal/Panels/efis.nas
similarity index 100%
rename from Nasal/Libraries/efis.nas
rename to Nasal/Panels/efis.nas