diff --git a/Models/FlightDeck/res/main_labels.png b/Models/FlightDeck/res/main_labels.png
index fced50a3..f3d38bbd 100644
Binary files a/Models/FlightDeck/res/main_labels.png and b/Models/FlightDeck/res/main_labels.png differ
diff --git a/Models/Instruments/PFD/PFD.nas b/Models/Instruments/PFD/PFD.nas
index 0ab072d6..d549f637 100644
--- a/Models/Instruments/PFD/PFD.nas
+++ b/Models/Instruments/PFD/PFD.nas
@@ -218,7 +218,7 @@ var canvas_PFD_base = {
"AI_agl_g","AI_agl","AI_error","AI_group","FD_roll","FD_pitch","ALT_box_flash","ALT_box","ALT_box_amber","ALT_scale","ALT_target","ALT_target_digit","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_digit_UP",
"ALT_digit_DN","ALT_error","ALT_neg","ALT_group","ALT_group2","ALT_frame","VS_pointer","VS_box","VS_digit","VS_error","VS_group","QNH","QNH_setting","QNH_std","QNH_box","LOC_pointer","LOC_scale","GS_scale","GS_pointer","CRS_pointer","HDG_target","HDG_scale",
"HDG_one","HDG_two","HDG_three","HDG_four","HDG_five","HDG_six","HDG_seven","HDG_digit_L","HDG_digit_R","HDG_error","HDG_group","HDG_frame","TRK_pointer","machError","ilsError","ils_code","ils_freq","dme_dist","dme_dist_legend","ILS_HDG_R","ILS_HDG_L",
- "ILS_right","ILS_left","outerMarker","middleMarker","innerMarker","v1_group","v1_text","vr_speed","F_target","S_target","FS_targets","flap_max","clean_speed","ground","ground_ref","FPV","spdLimError"];
+ "ILS_right","ILS_left","outerMarker","middleMarker","innerMarker","v1_group","v1_text","vr_speed","F_target","S_target","FS_targets","flap_max","clean_speed","ground","ground_ref","FPV","spdLimError","vsFMArate"];
},
updateDu1: func() {
var elapsedtime_act = elapsedtime.getValue();
@@ -868,7 +868,18 @@ var canvas_PFD_base = {
}
# FMA Pitch
- me["FMA_pitch"].setText(sprintf("%s", pitch_mode_act));
+ if (pitch_mode_act == "V/S") {
+ me["FMA_pitch"].setText(sprintf("%s ", pitch_mode_act));
+ me["vsFMArate"].setText(sprintf("%+4.0f",fmgc.Input.vs.getValue()));
+ me["vsFMArate"].show();
+ } elsif (pitch_mode_act == "FPA") {
+ me["FMA_pitch"].setText(sprintf("%s ", pitch_mode_act));
+ me["vsFMArate"].setText(sprintf("%+3.1f°",fmgc.Input.fpa.getValue()));
+ me["vsFMArate"].show();
+ }else {
+ me["FMA_pitch"].setText(sprintf("%s", pitch_mode_act));
+ me["vsFMArate"].hide();
+ }
me["FMA_pitcharm"].setText(sprintf("%s", pitch_mode_armed_act));
me["FMA_pitcharm2"].setText(sprintf("%s", pitch_mode2_armed_act));
diff --git a/Models/Instruments/PFD/res/pfd.svg b/Models/Instruments/PFD/res/pfd.svg
index 5c571f2b..23653432 100644
--- a/Models/Instruments/PFD/res/pfd.svg
+++ b/Models/Instruments/PFD/res/pfd.svg
@@ -6256,4 +6256,17 @@
x="823.7511"
sodipodi:role="line"
id="tspan1797">G
+ -800
diff --git a/Nasal/ECAM/ECAM-controller.nas b/Nasal/ECAM/ECAM-controller.nas
index aedd52cf..d84b680d 100644
--- a/Nasal/ECAM/ECAM-controller.nas
+++ b/Nasal/ECAM/ECAM-controller.nas
@@ -14,7 +14,7 @@ var overflow = props.globals.initNode("/ECAM/warnings/overflow", 0, "BOOL");
var lights = [props.globals.initNode("/ECAM/warnings/master-warning-light", 0, "BOOL"), props.globals.initNode("/ECAM/warnings/master-caution-light", 0, "BOOL")];
-var aural = [props.globals.initNode("/sim/sound/warnings/crc", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/chime", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/cricket", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/retard", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/cchord", 0, "BOOL")];
+var aural = [props.globals.initNode("/sim/sound/warnings/crc", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/chime", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/cricket", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/retard", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/cchord", 0, "BOOL"), props.globals.initNode("/sim/sound/warnings/click", 0, "BOOL")];
var warningFlash = props.globals.initNode("/ECAM/warnings/master-warning-flash", 0, "BOOL");
var lineIndex = 0;
@@ -223,7 +223,7 @@ var warning = {
me.noRepeat = 1;
},
sound: func() {
- if (me.aural > 3) { return; }
+ if (me.aural == 9) { return; }
if (me.active == 0 and me.wasActive == 1) {
aural[me.aural].setBoolValue(0);
me.wasActive = 0;
diff --git a/Nasal/ECAM/ECAM-logic.nas b/Nasal/ECAM/ECAM-logic.nas
index 3e895fb3..e29aabe2 100644
--- a/Nasal/ECAM/ECAM-logic.nas
+++ b/Nasal/ECAM/ECAM-logic.nas
@@ -66,7 +66,7 @@ var messages_priority_3 = func {
ECAM_controller.warningReset(flap_not_zero);
}
- if (overspeed.clearFlag == 0 and (phaseVar3 == 1 or (phaseVar3 >= 5 and phaseVar3 <= 7)) and getprop("/systems/navigation/adr/output/overspeed")) {
+ if (overspeed.clearFlag == 0 and (phaseVar3 == 1 or (phaseVar3 >= 5 and phaseVar3 <= 7)) and pts.Systems.Navigation.ADR.Output.overspeed.getBoolValue()) {
overspeed.active = 1;
if (getprop("/systems/navigation/adr/computation/overspeed-vmo") or getprop("/systems/navigation/adr/computation/overspeed-mmo")) {
overspeedVMO.active = 1;
diff --git a/Nasal/FMGC/FCU.nas b/Nasal/FMGC/FCU.nas
index 4cfb0fd6..f82370b6 100644
--- a/Nasal/FMGC/FCU.nas
+++ b/Nasal/FMGC/FCU.nas
@@ -107,18 +107,18 @@ var FCUController = {
FD1: func() {
if (me.FCUworking) {
if (!fmgc.Output.fd1.getBoolValue()) {
- fd1Input.setValue(1);
+ fmgc.Input.fd1.setValue(1);
} else {
- fd1Input.setValue(0);
+ fmgc.Input.fd1.setValue(0);
}
}
},
FD2: func() {
if (me.FCUworking) {
if (!fmgc.Output.fd2.getBoolValue()) {
- fd2Input.setValue(1);
+ fmgc.Input.fd2.setValue(1);
} else {
- fd2Input.setValue(0);
+ fmgc.Input.fd2.setValue(0);
}
}
},
diff --git a/Nasal/FMGC/FMGC-b.nas b/Nasal/FMGC/FMGC-b.nas
index a7e9c82a..770e7981 100644
--- a/Nasal/FMGC/FMGC-b.nas
+++ b/Nasal/FMGC/FMGC-b.nas
@@ -1043,7 +1043,31 @@ setlistener("/it-autoflight/input/vert", func() {
}
});
-setlistener("/sim/signals/fdm-initialized", func() {
+# Mode Reversions
+setlistener(pts.Systems.Navigation.ADR.Output.overspeed, func(v) {
+ if (v.getBoolValue() and !Output.ap1.getBoolValue() and !Output.ap2.getBoolValue() and Output.athr.getBoolValue() and Modes.PFD.FMA.pitchMode.getValue() == "OP CLB" and Modes.PFD.FMA.throttle.getValue() == "THR CLB") {
+ Input.fd1.setValue(0);
+ Input.fd2.setValue(0);
+ ecam.aural[5].setBoolValue(0);
+ settimer(func() {
+ ecam.aural[5].setBoolValue(1);
+ }, 0.15);
+ }
+}, 0, 0);
+
+setlistener(pts.Systems.Navigation.ADR.Output.underspeed, func(v) {
+ if (v.getBoolValue() and !Output.ap1.getBoolValue() and !Output.ap2.getBoolValue() and Output.athr.getBoolValue() and Modes.PFD.FMA.pitchMode.getValue() == "OP DES" and Modes.PFD.FMA.throttle.getValue() == "THR IDLE") {
+ Input.fd1.setValue(0);
+ Input.fd2.setValue(0);
+ ecam.aural[5].setBoolValue(0);
+ settimer(func() {
+ ecam.aural[5].setBoolValue(1);
+ }, 0.15);
+ }
+}, 0, 0);
+
+
+setlistener("/sim/signals/fdm-initialized", func {
ITAF.init();
});
diff --git a/Nasal/Libraries/property-tree-setup.nas b/Nasal/Libraries/property-tree-setup.nas
index 75ef9cb1..bfb0588d 100644
--- a/Nasal/Libraries/property-tree-setup.nas
+++ b/Nasal/Libraries/property-tree-setup.nas
@@ -295,6 +295,21 @@ var Sim = {
},
};
+var Systems = {
+ Navigation: {
+ ADR: {
+ Output: {
+ overspeed: props.globals.getNode("/systems/navigation/adr/output/overspeed"),
+ underspeed: props.globals.getNode("/systems/navigation/adr/output/underspeed"),
+ },
+ },
+ },
+ Thrust: {
+ engOut: props.globals.getNode("/systems/thrust/eng-out"),
+ state: [props.globals.getNode("/systems/thrust/state1"), props.globals.getNode("/systems/thrust/state2")],
+ },
+};
+
var Velocities = {
airspeedKt: props.globals.getNode("/velocities/airspeed-kt"),
groundspeedKt: props.globals.getNode("/velocities/groundspeed-kt"),
diff --git a/Sounds/A320-common-sound.xml b/Sounds/A320-common-sound.xml
index bf13c7ba..5a1c2542 100644
--- a/Sounds/A320-common-sound.xml
+++ b/Sounds/A320-common-sound.xml
@@ -2001,6 +2001,21 @@
+
+ Chime
+ Aircraft/A320-family/Sounds/Cockpit/click.wav
+ once
+ avionics
+
+ /sim/sound/warnings/click
+
+
+ /sim/current-view/internal
+
+ 10
+ 100
+
+
Chime
Aircraft/A320-family/Sounds/Cockpit/chime.wav
diff --git a/Systems/a320-adr.xml b/Systems/a320-adr.xml
index 83d99a96..65b82fda 100644
--- a/Systems/a320-adr.xml
+++ b/Systems/a320-adr.xml
@@ -736,6 +736,33 @@
+
+
+
+ /controls/flight/speedbrake eq 1.0
+
+
+
+
+
+
+
+
+ /systems/navigation/adr/output/cas-1
+ /systems/navigation/adr/output/cas-2
+ /systems/navigation/adr/output/cas-3
+
+
+ /FMGC/internal/vls-min
+ /systems/navigation/adr/computation/underspeed-difference
+
+
+ 1
+ 0
+
+
+
+
@@ -905,6 +932,11 @@
/systems/navigation/adr/any-adr-on
+
+ /systems/navigation/adr/computation/underspeed
+ /systems/navigation/adr/any-adr-on
+
+
/instrumentation/radar-altimeter[0]/radar-altitude-ft
1
diff --git a/Systems/a320-cfm56-5b4-engine-fadec.xml b/Systems/a320-cfm56-5b4-engine-fadec.xml
index f17f0443..60571a4f 100644
--- a/Systems/a320-cfm56-5b4-engine-fadec.xml
+++ b/Systems/a320-cfm56-5b4-engine-fadec.xml
@@ -1042,6 +1042,7 @@
position/wow eq 1
/it-fbw/law ne 0
+ /FMGC/FCU-working eq 0
fadec/eng-out eq 1
diff --git a/Systems/a320-v2527-a5-engine-fadec.xml b/Systems/a320-v2527-a5-engine-fadec.xml
index e6dfeeba..2823f4c5 100644
--- a/Systems/a320-v2527-a5-engine-fadec.xml
+++ b/Systems/a320-v2527-a5-engine-fadec.xml
@@ -1501,6 +1501,7 @@
position/wow eq 1
/it-fbw/law ne 0
+ /FMGC/FCU-working eq 0
fadec/control-1/n1-mode eq 1
fadec/control-2/n1-mode eq 1