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