diff --git a/A320-main.xml b/A320-main.xml index 28ff400f..0a45ba63 100644 --- a/A320-main.xml +++ b/A320-main.xml @@ -627,7 +627,7 @@ 0 -10 - O + I . diff --git a/Models/Instruments/MCDU1/PERF/TO/INITBOX.ac b/Models/Instruments/MCDU1/PERF/TO/BOX.ac similarity index 99% rename from Models/Instruments/MCDU1/PERF/TO/INITBOX.ac rename to Models/Instruments/MCDU1/PERF/TO/BOX.ac index de982397..969a9215 100644 --- a/Models/Instruments/MCDU1/PERF/TO/INITBOX.ac +++ b/Models/Instruments/MCDU1/PERF/TO/BOX.ac @@ -4,7 +4,7 @@ MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 1 1 1 shi 0 trans 0 OBJECT world kids 4 OBJECT poly -name "vr" +name "vrbox" loc -0.0660365 -0.00059823 0.0488058 data 10 enginepane @@ -25,7 +25,7 @@ refs 4 2 0.772026 0.340808 kids 0 OBJECT poly -name "v1" +name "v1box" loc -0.0766055 -0.00059823 0.0486379 data 10 enginepane @@ -46,7 +46,7 @@ refs 4 1 0.770887 0.340902 kids 0 OBJECT poly -name "v2" +name "v2box" loc -0.055732 -0.00059823 0.0488504 data 10 enginepane diff --git a/Models/Instruments/MCDU1/PERF/TO/BOX.xml b/Models/Instruments/MCDU1/PERF/TO/BOX.xml new file mode 100644 index 00000000..260e42c3 --- /dev/null +++ b/Models/Instruments/MCDU1/PERF/TO/BOX.xml @@ -0,0 +1,37 @@ + + + + + + + BOX.ac + + + select + v1box + + /FMGC/internal/v1-set + + + + + select + vrbox + + /FMGC/internal/vr-set + + + + + select + v2box + + /FMGC/internal/v2-set + + + + diff --git a/Models/Instruments/MCDU1/PERF/TO/INITBOX.xml b/Models/Instruments/MCDU1/PERF/TO/INITBOX.xml deleted file mode 100644 index 97fc8370..00000000 --- a/Models/Instruments/MCDU1/PERF/TO/INITBOX.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - INITBOX.ac - - diff --git a/Models/Instruments/MCDU1/PERF/TO/TO.xml b/Models/Instruments/MCDU1/PERF/TO/TO.xml index 993de71c..f17f0eb6 100644 --- a/Models/Instruments/MCDU1/PERF/TO/TO.xml +++ b/Models/Instruments/MCDU1/PERF/TO/TO.xml @@ -10,9 +10,9 @@ EMPTY.ac - + page @@ -47,19 +47,6 @@ - - INITBOX - INITBOX.xml - - -0.001 - 0.0 - 0.0 - -180 - -180 - -90 - - - v1 @@ -84,6 +71,38 @@ + + v12 + + -0.001 + -0.045 + 0.0715 + + left-center + yz-plane + text-value + %s + false + BoeingCDU-Large.ttf + /FMGC/internal/v1 + true + false + false + 0.0050 + + 64 + 64 + + + + + select + v12 + + /FMGC/internal/v1-set + + + flprtr @@ -204,6 +223,38 @@ + + vr2 + + -0.001 + -0.045 + 0.061 + + left-center + yz-plane + text-value + %s + false + BoeingCDU-Large.ttf + /FMGC/internal/vr + true + false + false + 0.0050 + + 64 + 64 + + + + + select + vr2 + + /FMGC/internal/vr-set + + + sltrtr @@ -325,7 +376,7 @@ - flapsmcdu2 + flapsmcdu -0.001 0.045 @@ -349,7 +400,7 @@ - flapsmcdu + flapsmcdu2 -0.001 0.045 @@ -358,7 +409,7 @@ right-center yz-plane text-value - [ ]/[ ] + [ ]/[ . ] false helvetica_medium.txf autopilot/serviceable @@ -372,6 +423,70 @@ + + flapsmcdu3 + + -0.001 + 0.0275 + 0.0505 + + right-center + yz-plane + text-value + %s + false + BoeingCDU-Large.ttf + /FMGC/internal/to-flap + true + false + false + 0.0050 + + 64 + 64 + + + + + flapsmcdu3 + + -0.001 + 0.045 + 0.0505 + + right-center + yz-plane + text-value + /UP%s + false + BoeingCDU-Large.ttf + /FMGC/internal/to-ths + true + false + false + 0.0050 + + 64 + 64 + + + + + select + flapsmcdu2 + + /FMGC/internal/flap-ths-set + + + + + select + flapsmcdu3 + + /FMGC/internal/flap-ths-set + + + v2 @@ -396,6 +511,38 @@ + + v22 + + -0.001 + -0.045 + 0.0505 + + left-center + yz-plane + text-value + %s + false + BoeingCDU-Large.ttf + /FMGC/internal/v2 + true + false + false + 0.0050 + + 64 + 64 + + + + + select + v22 + + /FMGC/internal/v2-set + + + clean @@ -478,10 +625,10 @@ left-center yz-plane text-value - 18000 + %s false BoeingCDU-Large.ttf - autopilot/serviceable + /FMGC/internal/trans-alt true false false @@ -677,7 +824,7 @@ - flex2 + flex -0.001 0.042 @@ -701,7 +848,7 @@ - flex + flex2 -0.001 0.045 @@ -710,7 +857,7 @@ right-center yz-plane text-value - [ ] + [ ] false helvetica_medium.txf autopilot/serviceable @@ -724,6 +871,46 @@ + + flex3 + + -0.001 + 0.045 + 0.039 + + right-center + yz-plane + text-value + %sC + false + BoeingCDU-Large.ttf + /FMGC/internal/flex + true + false + false + 0.0050 + + 64 + 64 + + + + + select + flex2 + + /FMGC/internal/flex-set + + + + + select + flex3 + + /FMGC/internal/flex-set + + + uplink @@ -833,9 +1020,9 @@ next phase shift - flex2 + flex thredacc - flapsmcdu2 + flapsmcdu eoaccel2 flprtr sltrtr @@ -926,12 +1113,17 @@ material toshift3 - flapsmcdu + flapsmcdu2 + flapsmcdu3 trans2 eoaccel thred thred2 - flex + flex2 + flex3 + v12 + vr2 + v22 0 0.5 diff --git a/Models/Instruments/MCDU2/PERF/TO/INITBOX.ac b/Models/Instruments/MCDU2/PERF/TO/BOX.ac similarity index 99% rename from Models/Instruments/MCDU2/PERF/TO/INITBOX.ac rename to Models/Instruments/MCDU2/PERF/TO/BOX.ac index de982397..969a9215 100644 --- a/Models/Instruments/MCDU2/PERF/TO/INITBOX.ac +++ b/Models/Instruments/MCDU2/PERF/TO/BOX.ac @@ -4,7 +4,7 @@ MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 1 1 1 shi 0 trans 0 OBJECT world kids 4 OBJECT poly -name "vr" +name "vrbox" loc -0.0660365 -0.00059823 0.0488058 data 10 enginepane @@ -25,7 +25,7 @@ refs 4 2 0.772026 0.340808 kids 0 OBJECT poly -name "v1" +name "v1box" loc -0.0766055 -0.00059823 0.0486379 data 10 enginepane @@ -46,7 +46,7 @@ refs 4 1 0.770887 0.340902 kids 0 OBJECT poly -name "v2" +name "v2box" loc -0.055732 -0.00059823 0.0488504 data 10 enginepane diff --git a/Models/Instruments/MCDU2/PERF/TO/BOX.xml b/Models/Instruments/MCDU2/PERF/TO/BOX.xml new file mode 100644 index 00000000..260e42c3 --- /dev/null +++ b/Models/Instruments/MCDU2/PERF/TO/BOX.xml @@ -0,0 +1,37 @@ + + + + + + + BOX.ac + + + select + v1box + + /FMGC/internal/v1-set + + + + + select + vrbox + + /FMGC/internal/vr-set + + + + + select + v2box + + /FMGC/internal/v2-set + + + + diff --git a/Models/Instruments/MCDU2/PERF/TO/INITBOX.xml b/Models/Instruments/MCDU2/PERF/TO/INITBOX.xml deleted file mode 100644 index 97fc8370..00000000 --- a/Models/Instruments/MCDU2/PERF/TO/INITBOX.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - INITBOX.ac - - diff --git a/Models/Instruments/MCDU2/PERF/TO/TO.xml b/Models/Instruments/MCDU2/PERF/TO/TO.xml index 993de71c..f17f0eb6 100644 --- a/Models/Instruments/MCDU2/PERF/TO/TO.xml +++ b/Models/Instruments/MCDU2/PERF/TO/TO.xml @@ -10,9 +10,9 @@ EMPTY.ac - + page @@ -47,19 +47,6 @@ - - INITBOX - INITBOX.xml - - -0.001 - 0.0 - 0.0 - -180 - -180 - -90 - - - v1 @@ -84,6 +71,38 @@ + + v12 + + -0.001 + -0.045 + 0.0715 + + left-center + yz-plane + text-value + %s + false + BoeingCDU-Large.ttf + /FMGC/internal/v1 + true + false + false + 0.0050 + + 64 + 64 + + + + + select + v12 + + /FMGC/internal/v1-set + + + flprtr @@ -204,6 +223,38 @@ + + vr2 + + -0.001 + -0.045 + 0.061 + + left-center + yz-plane + text-value + %s + false + BoeingCDU-Large.ttf + /FMGC/internal/vr + true + false + false + 0.0050 + + 64 + 64 + + + + + select + vr2 + + /FMGC/internal/vr-set + + + sltrtr @@ -325,7 +376,7 @@ - flapsmcdu2 + flapsmcdu -0.001 0.045 @@ -349,7 +400,7 @@ - flapsmcdu + flapsmcdu2 -0.001 0.045 @@ -358,7 +409,7 @@ right-center yz-plane text-value - [ ]/[ ] + [ ]/[ . ] false helvetica_medium.txf autopilot/serviceable @@ -372,6 +423,70 @@ + + flapsmcdu3 + + -0.001 + 0.0275 + 0.0505 + + right-center + yz-plane + text-value + %s + false + BoeingCDU-Large.ttf + /FMGC/internal/to-flap + true + false + false + 0.0050 + + 64 + 64 + + + + + flapsmcdu3 + + -0.001 + 0.045 + 0.0505 + + right-center + yz-plane + text-value + /UP%s + false + BoeingCDU-Large.ttf + /FMGC/internal/to-ths + true + false + false + 0.0050 + + 64 + 64 + + + + + select + flapsmcdu2 + + /FMGC/internal/flap-ths-set + + + + + select + flapsmcdu3 + + /FMGC/internal/flap-ths-set + + + v2 @@ -396,6 +511,38 @@ + + v22 + + -0.001 + -0.045 + 0.0505 + + left-center + yz-plane + text-value + %s + false + BoeingCDU-Large.ttf + /FMGC/internal/v2 + true + false + false + 0.0050 + + 64 + 64 + + + + + select + v22 + + /FMGC/internal/v2-set + + + clean @@ -478,10 +625,10 @@ left-center yz-plane text-value - 18000 + %s false BoeingCDU-Large.ttf - autopilot/serviceable + /FMGC/internal/trans-alt true false false @@ -677,7 +824,7 @@ - flex2 + flex -0.001 0.042 @@ -701,7 +848,7 @@ - flex + flex2 -0.001 0.045 @@ -710,7 +857,7 @@ right-center yz-plane text-value - [ ] + [ ] false helvetica_medium.txf autopilot/serviceable @@ -724,6 +871,46 @@ + + flex3 + + -0.001 + 0.045 + 0.039 + + right-center + yz-plane + text-value + %sC + false + BoeingCDU-Large.ttf + /FMGC/internal/flex + true + false + false + 0.0050 + + 64 + 64 + + + + + select + flex2 + + /FMGC/internal/flex-set + + + + + select + flex3 + + /FMGC/internal/flex-set + + + uplink @@ -833,9 +1020,9 @@ next phase shift - flex2 + flex thredacc - flapsmcdu2 + flapsmcdu eoaccel2 flprtr sltrtr @@ -926,12 +1113,17 @@ material toshift3 - flapsmcdu + flapsmcdu2 + flapsmcdu3 trans2 eoaccel thred thred2 - flex + flex2 + flex3 + v12 + vr2 + v22 0 0.5 diff --git a/Models/Instruments/PFD/PFD1.xml b/Models/Instruments/PFD/PFD1.xml index 616c9b5b..4f6644cb 100644 --- a/Models/Instruments/PFD/PFD1.xml +++ b/Models/Instruments/PFD/PFD1.xml @@ -1761,6 +1761,52 @@ + + athr-flex-fma + + 0.00091828 + -0.0576226 + 0.0630781 + + center-center + yz-plane + text-value + FLX + + autopilot/serviceable + helvetica_medium.txf + true + false + false + 0.0055 + + 32 + 32 + + + + + athr-flexb-fma + + 0.00091828 + -0.0466226 + 0.0630781 + + center-center + yz-plane + text-value + %s + /FMGC/internal/flex + helvetica_medium.txf + true + false + false + 0.0055 + + 32 + 32 + + + athr-thr-fma @@ -1880,6 +1926,46 @@ /it-autoflight/output/athr 1 + + /controls/engines/thrust-limit + FLX + + + /systems/thrust/state1 + TOGA + + + /systems/thrust/state2 + TOGA + + + + /systems/thrust/state1 + MCT + + + /systems/thrust/state2 + MCT + + + + + + + + select + athr-flex-fma + athr-flexb-fma + + + + /it-autoflight/output/athr + 1 + + + /controls/engines/thrust-limit + FLX + /systems/thrust/state1 TOGA @@ -2283,6 +2369,7 @@ athr-man-fma athr-toga-fma athr-mct-fma + athr-flex-fma athr-thr-fma athr-box-fma athr-lvrclb-fma @@ -2318,6 +2405,7 @@ roll-mode-armed-fma pitch-mode-armed-fma pitch-mode-armed2-fma + athr-flexb-fma 0 0.886 diff --git a/Models/Instruments/PFD/PFD2.xml b/Models/Instruments/PFD/PFD2.xml index 94bcdac6..a35de1f9 100644 --- a/Models/Instruments/PFD/PFD2.xml +++ b/Models/Instruments/PFD/PFD2.xml @@ -1761,6 +1761,52 @@ + + athr-flex-fma + + 0.00091828 + -0.0576226 + 0.0630781 + + center-center + yz-plane + text-value + FLX + + autopilot/serviceable + helvetica_medium.txf + true + false + false + 0.0055 + + 32 + 32 + + + + + athr-flexb-fma + + 0.00091828 + -0.0466226 + 0.0630781 + + center-center + yz-plane + text-value + %s + /FMGC/internal/flex + helvetica_medium.txf + true + false + false + 0.0055 + + 32 + 32 + + + athr-thr-fma @@ -1880,6 +1926,46 @@ /it-autoflight/output/athr 1 + + /controls/engines/thrust-limit + FLX + + + /systems/thrust/state1 + TOGA + + + /systems/thrust/state2 + TOGA + + + + /systems/thrust/state1 + MCT + + + /systems/thrust/state2 + MCT + + + + + + + + select + athr-flex-fma + athr-flexb-fma + + + + /it-autoflight/output/athr + 1 + + + /controls/engines/thrust-limit + FLX + /systems/thrust/state1 TOGA @@ -2283,6 +2369,7 @@ athr-man-fma athr-toga-fma athr-mct-fma + athr-flex-fma athr-thr-fma athr-box-fma athr-lvrclb-fma @@ -2318,6 +2405,7 @@ roll-mode-armed-fma pitch-mode-armed-fma pitch-mode-armed2-fma + athr-flexb-fma 0 0.886 diff --git a/Nasal/FMGC.nas b/Nasal/FMGC.nas index 538cc18e..e6466d77 100644 --- a/Nasal/FMGC.nas +++ b/Nasal/FMGC.nas @@ -10,10 +10,7 @@ setprop("/position/gear-agl-ft", 0); var FMGCinit = func { setprop("/FMGC/status/to-state", 0); setprop("/FMGC/status/phase", "0"); # 0 is preflight 1 takeoff 2 climb 3 cruise 4 descent 5 approach 6 go around 7 done - setprop("/FMGC/internal/cruise-ft", 10000); - setprop("/FMGC/internal/cruise-fl", 100); setprop("/FMGC/internal/tropo", 36090); - setprop("/FMGC/internal/cost-index", "0"); phasecheck.start(); } @@ -100,6 +97,7 @@ var phasecheck = maketimer(0.2, func { } if ((phase == "5") and (state1 == "TOGA") and (state2 == "TOGA")) { # this is the only fully correct one to FCOM setprop("/FMGC/status/phase", "6"); + setprop("/it-autoflight/input/toga", 1); } # forget transition from APP to climb for now because it would be too complex if ((phase == "6") and ((vertmode == "G/A CLB") or (vertmode == "SPD CLB") or (vertmode == "CLB") or ((vertmode == "V/S") and (targetvs > 0)) or ((vertmode == "FPA") and (targetfpa > 0))) and (alt <= targetalt)) { @@ -112,7 +110,7 @@ var phasecheck = maketimer(0.2, func { FMGCinit(); mcdu1.MCDU_reset(); mcdu2.MCDU_reset(); - }, 30); + }, 20); } }); \ No newline at end of file diff --git a/Nasal/MCDU1.nas b/Nasal/MCDU1.nas index 9e9c9342..d4a17697 100644 --- a/Nasal/MCDU1.nas +++ b/Nasal/MCDU1.nas @@ -8,33 +8,56 @@ var MCDU_init = func { } var MCDU_reset = func { + setprop("/it-autoflight/settings/togaspd", 157); setprop("/MCDU[0]/page", "STATUS"); setprop("/MCDU[0]/scratchpad", ""); setprop("/MCDUC/flight-num", ""); - setprop("/MCDUC/flight-num-set", 0); setprop("/MCDUC/thracc-set", 0); + setprop("/MCDUC/flight-num-set", 0); + setprop("/FMGC/internal/flex", 0); setprop("/FMGC/internal/dep-arpt", ""); setprop("/FMGC/internal/arr-arpt", ""); - setprop("/FMGC/internal/tofrom-set", 0); setprop("/FMGC/internal/cruise-ft", 10000); setprop("/FMGC/internal/cruise-fl", 100); setprop("/FMGC/internal/cost-index", "0"); + setprop("/FMGC/internal/trans-alt", 18000); + setprop("/FMGC/internal/v1", 0); + setprop("/FMGC/internal/vr", 0); + setprop("/FMGC/internal/v2", 0); + setprop("/FMGC/internal/v1-set", 0); + setprop("/FMGC/internal/vr-set", 0); + setprop("/FMGC/internal/v2-set", 0); + setprop("/FMGC/internal/to-flap", 0); + setprop("/FMGC/internal/to-ths", "0.0"); + setprop("/FMGC/internal/tofrom-set", 0); setprop("/FMGC/internal/cost-index-set", 0); setprop("/FMGC/internal/cruise-lvl-set", 0); + setprop("/FMGC/internal/flap-ths-set", 0); + setprop("/FMGC/internal/flex-set", 0); } var lskbutton = func(btn) { - if (btn == "2") { + if (btn == "1") { + if (getprop("/MCDU[0]/page") == "TO") { + PerfTOInput("L1"); + } + } else if (btn == "2") { if (getprop("/MCDU[0]/page") == "INITA") { PerfInput("L2"); + } else if (getprop("/MCDU[0]/page") == "TO") { + PerfTOInput("L2"); } } else if (btn == "3") { if (getprop("/MCDU[0]/page") == "INITA") { initInputA("L3"); + } else if (getprop("/MCDU[0]/page") == "TO") { + PerfTOInput("L3"); } } else if (btn == "4") { if (getprop("/MCDU[0]/page") == "DATA") { setprop("/MCDU[0]/page", "STATUS"); + } else if (getprop("/MCDU[0]/page") == "TO") { + PerfTOInput("L4"); } } else if (btn == "5") { if (getprop("/MCDU[0]/page") == "INITA") { @@ -63,6 +86,12 @@ var rskbutton = func(btn) { } else if (btn == "3") { if (getprop("/MCDU[0]/page") == "INITA") { initInputA("R3"); + } else if (getprop("/MCDU[0]/page") == "TO") { + PerfTOInput("R3"); + } + } else if (btn == "4") { + if (getprop("/MCDU[0]/page") == "TO") { + PerfTOInput("R4"); } } else if (btn == "6") { if (getprop("/MCDU[0]/page") == "TO") { @@ -181,7 +210,91 @@ var initInputA = func(key) { var PerfTOInput = func(key) { var scratchpad = getprop("/MCDU[0]/scratchpad"); - if (key == "L5") { + if (key == "L1") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/v1", 0); + setprop("/FMGC/internal/v1-set", 0); + setprop("/MCDU[0]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 3) { + if (scratchpad >= 100 and scratchpad <= 200) { + setprop("/FMGC/internal/v1", scratchpad); + setprop("/FMGC/internal/v1-set", 1); + setprop("/MCDU[0]/scratchpad", ""); + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "L2") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/vr", 0); + setprop("/FMGC/internal/vr-set", 0); + setprop("/MCDU[0]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 3) { + if (scratchpad >= 100 and scratchpad <= 200) { + setprop("/FMGC/internal/vr", scratchpad); + setprop("/FMGC/internal/vr-set", 1); + setprop("/MCDU[0]/scratchpad", ""); + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "L3") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/v2", 0); + setprop("/FMGC/internal/v2-set", 0); + setprop("/it-autoflight/settings/togaspd", 157); + setprop("/MCDU[0]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 3) { + if (scratchpad >= 100 and scratchpad <= 200) { + setprop("/FMGC/internal/v2", scratchpad); + setprop("/FMGC/internal/v2-set", 1); + setprop("/it-autoflight/settings/togaspd", scratchpad + 15); + setprop("/MCDU[0]/scratchpad", ""); + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "L4") { + if (scratchpad == "CLR") { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } else { + var tfs = size(scratchpad); + if (tfs == 4 or tfs == 5) { + if (scratchpad >= 1000 and scratchpad <= 18000) { + setprop("/FMGC/internal/trans-alt", scratchpad); + setprop("/MCDU[0]/scratchpad", ""); + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "L5") { if (scratchpad == "CLR") { setprop("/systems/thrust/clbreduc-ft", "1500"); setprop("/it-autoflight/settings/reduc-agl-ft", "3000"); @@ -193,7 +306,7 @@ var PerfTOInput = func(key) { var thracc = split("/", scratchpad); var thrred = size(thracc[0]); var acc = size(thracc[1]); - if ((thrred >= 1 and thrred <= 4) and (acc >= 1 and acc <= 4)) { + if ((thrred >= 3 and thrred <= 5) and (acc >= 3 and acc <= 5)) { setprop("/systems/thrust/clbreduc-ft", thracc[0]); setprop("/it-autoflight/settings/reduc-agl-ft", thracc[1]); setprop("/MCDUC/thracc-set", 1); @@ -209,6 +322,51 @@ var PerfTOInput = func(key) { } } else if (key == "R6") { setprop("/MCDU[0]/page", "CLB"); + } else if (key == "R3") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/to-flap", 0); + setprop("/FMGC/internal/to-ths", "0.0"); + setprop("/FMGC/internal/flap-ths-set", 0); + setprop("/MCDU[0]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 7) { + var flapths = split("/UP", scratchpad); + if ((flapths[0] >= 1 and flapths[0] <= 4) and (flapths[1] >= 0.0 and flapths[1] <= 2.5)) { + setprop("/FMGC/internal/to-flap", flapths[0]); + setprop("/FMGC/internal/to-ths", flapths[1]); + setprop("/FMGC/internal/flap-ths-set", 1); + setprop("/MCDU[0]/scratchpad", ""); + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "R4") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/flex", 0); + setprop("/FMGC/internal/flex-set", 0); + setprop("/MCDU[0]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 1 or tfs == 2) { + if (scratchpad >= 0 and scratchpad <= 70) { + setprop("/FMGC/internal/flex", scratchpad); + setprop("/FMGC/internal/flex-set", 1); + setprop("/MCDU[0]/scratchpad", ""); + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[0]/scratchpad-msg", "1"); + setprop("/MCDU[0]/scratchpad", "NOT ALLOWED"); + } + } } } diff --git a/Nasal/MCDU2.nas b/Nasal/MCDU2.nas index fb94d0ab..303952fb 100644 --- a/Nasal/MCDU2.nas +++ b/Nasal/MCDU2.nas @@ -8,33 +8,56 @@ var MCDU_init = func { } var MCDU_reset = func { + setprop("/it-autoflight/settings/togaspd", 157); setprop("/MCDU[1]/page", "STATUS"); setprop("/MCDU[1]/scratchpad", ""); setprop("/MCDUC/flight-num", ""); - setprop("/MCDUC/flight-num-set", 0); setprop("/MCDUC/thracc-set", 0); + setprop("/MCDUC/flight-num-set", 0); + setprop("/FMGC/internal/flex", 0); setprop("/FMGC/internal/dep-arpt", ""); setprop("/FMGC/internal/arr-arpt", ""); - setprop("/FMGC/internal/tofrom-set", 0); setprop("/FMGC/internal/cruise-ft", 10000); setprop("/FMGC/internal/cruise-fl", 100); setprop("/FMGC/internal/cost-index", "0"); + setprop("/FMGC/internal/trans-alt", 18000); + setprop("/FMGC/internal/v1", 0); + setprop("/FMGC/internal/vr", 0); + setprop("/FMGC/internal/v2", 0); + setprop("/FMGC/internal/v1-set", 0); + setprop("/FMGC/internal/vr-set", 0); + setprop("/FMGC/internal/v2-set", 0); + setprop("/FMGC/internal/to-flap", 0); + setprop("/FMGC/internal/to-ths", "0.0"); + setprop("/FMGC/internal/tofrom-set", 0); setprop("/FMGC/internal/cost-index-set", 0); setprop("/FMGC/internal/cruise-lvl-set", 0); + setprop("/FMGC/internal/flap-ths-set", 0); + setprop("/FMGC/internal/flex-set", 0); } var lskbutton = func(btn) { - if (btn == "2") { + if (btn == "1") { + if (getprop("/MCDU[1]/page") == "TO") { + PerfTOInput("L1"); + } + } else if (btn == "2") { if (getprop("/MCDU[1]/page") == "INITA") { PerfInput("L2"); + } else if (getprop("/MCDU[1]/page") == "TO") { + PerfTOInput("L2"); } } else if (btn == "3") { if (getprop("/MCDU[1]/page") == "INITA") { initInputA("L3"); + } else if (getprop("/MCDU[1]/page") == "TO") { + PerfTOInput("L3"); } } else if (btn == "4") { if (getprop("/MCDU[1]/page") == "DATA") { setprop("/MCDU[1]/page", "STATUS"); + } else if (getprop("/MCDU[1]/page") == "TO") { + PerfTOInput("L4"); } } else if (btn == "5") { if (getprop("/MCDU[1]/page") == "INITA") { @@ -63,6 +86,12 @@ var rskbutton = func(btn) { } else if (btn == "3") { if (getprop("/MCDU[1]/page") == "INITA") { initInputA("R3"); + } else if (getprop("/MCDU[1]/page") == "TO") { + PerfTOInput("R3"); + } + } else if (btn == "4") { + if (getprop("/MCDU[1]/page") == "TO") { + PerfTOInput("R4"); } } else if (btn == "6") { if (getprop("/MCDU[1]/page") == "TO") { @@ -181,7 +210,91 @@ var initInputA = func(key) { var PerfTOInput = func(key) { var scratchpad = getprop("/MCDU[1]/scratchpad"); - if (key == "L5") { + if (key == "L1") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/v1", 0); + setprop("/FMGC/internal/v1-set", 0); + setprop("/MCDU[1]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 3) { + if (scratchpad >= 100 and scratchpad <= 200) { + setprop("/FMGC/internal/v1", scratchpad); + setprop("/FMGC/internal/v1-set", 1); + setprop("/MCDU[1]/scratchpad", ""); + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "L2") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/vr", 0); + setprop("/FMGC/internal/vr-set", 0); + setprop("/MCDU[1]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 3) { + if (scratchpad >= 100 and scratchpad <= 200) { + setprop("/FMGC/internal/vr", scratchpad); + setprop("/FMGC/internal/vr-set", 1); + setprop("/MCDU[1]/scratchpad", ""); + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "L3") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/v2", 0); + setprop("/FMGC/internal/v2-set", 0); + setprop("/it-autoflight/settings/togaspd", 157); + setprop("/MCDU[1]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 3) { + if (scratchpad >= 100 and scratchpad <= 200) { + setprop("/FMGC/internal/v2", scratchpad); + setprop("/FMGC/internal/v2-set", 1); + setprop("/it-autoflight/settings/togaspd", scratchpad + 15); + setprop("/MCDU[1]/scratchpad", ""); + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "L4") { + if (scratchpad == "CLR") { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } else { + var tfs = size(scratchpad); + if (tfs == 4 or tfs == 5) { + if (scratchpad >= 1000 and scratchpad <= 18000) { + setprop("/FMGC/internal/trans-alt", scratchpad); + setprop("/MCDU[1]/scratchpad", ""); + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "L5") { if (scratchpad == "CLR") { setprop("/systems/thrust/clbreduc-ft", "1500"); setprop("/it-autoflight/settings/reduc-agl-ft", "3000"); @@ -193,7 +306,7 @@ var PerfTOInput = func(key) { var thracc = split("/", scratchpad); var thrred = size(thracc[0]); var acc = size(thracc[1]); - if ((thrred >= 1 and thrred <= 4) and (acc >= 1 and acc <= 4)) { + if ((thrred >= 3 and thrred <= 5) and (acc >= 3 and acc <= 5)) { setprop("/systems/thrust/clbreduc-ft", thracc[0]); setprop("/it-autoflight/settings/reduc-agl-ft", thracc[1]); setprop("/MCDUC/thracc-set", 1); @@ -209,6 +322,51 @@ var PerfTOInput = func(key) { } } else if (key == "R6") { setprop("/MCDU[1]/page", "CLB"); + } else if (key == "R3") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/to-flap", 0); + setprop("/FMGC/internal/to-ths", "0.0"); + setprop("/FMGC/internal/flap-ths-set", 0); + setprop("/MCDU[1]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 7) { + var flapths = split("/UP", scratchpad); + if ((flapths[0] >= 1 and flapths[0] <= 4) and (flapths[1] >= 0.0 and flapths[1] <= 2.5)) { + setprop("/FMGC/internal/to-flap", flapths[0]); + setprop("/FMGC/internal/to-ths", flapths[1]); + setprop("/FMGC/internal/flap-ths-set", 1); + setprop("/MCDU[1]/scratchpad", ""); + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } + } else if (key == "R4") { + if (scratchpad == "CLR") { + setprop("/FMGC/internal/flex", 0); + setprop("/FMGC/internal/flex-set", 0); + setprop("/MCDU[1]/scratchpad", ""); + } else { + var tfs = size(scratchpad); + if (tfs == 1 or tfs == 2) { + if (scratchpad >= 0 and scratchpad <= 70) { + setprop("/FMGC/internal/flex", scratchpad); + setprop("/FMGC/internal/flex-set", 1); + setprop("/MCDU[1]/scratchpad", ""); + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } else { + setprop("/MCDU[1]/scratchpad-msg", "1"); + setprop("/MCDU[1]/scratchpad", "NOT ALLOWED"); + } + } } } diff --git a/Nasal/thrust.nas b/Nasal/thrust.nas index fa58d4c0..d18e067c 100644 --- a/Nasal/thrust.nas +++ b/Nasal/thrust.nas @@ -14,6 +14,7 @@ setlistener("/sim/signals/fdm-initialized", func { setprop("/systems/thrust/state2", "IDLE"); setprop("/systems/thrust/lvrclb", "0"); setprop("/systems/thrust/clbreduc-ft", "1500"); + setprop("/systems/thrust/lim-flex", 0); thrustt.start(); }); @@ -22,13 +23,17 @@ setlistener("/controls/engines/engine[0]/throttle-pos", func { if (getprop("/systems/thrust/alpha-floor") == 0 and getprop("/systems/thrust/toga-lk") == 0) { if (thrr < 0.01) { setprop("/systems/thrust/state1", "IDLE"); + unflex(); atoff_request(); } else if (thrr >= 0.01 and thrr < 0.60) { setprop("/systems/thrust/state1", "MAN"); + unflex(); } else if (thrr >= 0.60 and thrr < 0.65) { setprop("/systems/thrust/state1", "CL"); + unflex(); } else if (thrr >= 0.65 and thrr < 0.78) { setprop("/systems/thrust/state1", "MAN THR"); + unflex(); } else if (thrr >= 0.78 and thrr < 0.83) { setprop("/it-autoflight/input/athr", 1); setprop("/controls/engines/engine[0]/throttle-fdm", 0.90); @@ -36,10 +41,12 @@ setlistener("/controls/engines/engine[0]/throttle-pos", func { } else if (thrr >= 0.83 and thrr < 0.95) { setprop("/it-autoflight/input/athr", 1); setprop("/systems/thrust/state1", "MAN THR"); + unflex(); } else if (thrr >= 0.95) { setprop("/it-autoflight/input/athr", 1); setprop("/controls/engines/engine[0]/throttle-fdm", 0.95); setprop("/systems/thrust/state1", "TOGA"); + unflex(); } } else { if (thrr < 0.01) { @@ -66,13 +73,17 @@ setlistener("/controls/engines/engine[1]/throttle-pos", func { if (getprop("/systems/thrust/alpha-floor") == 0 and getprop("/systems/thrust/toga-lk") == 0) { if (thrr < 0.01) { setprop("/systems/thrust/state2", "IDLE"); + unflex(); atoff_request(); } else if (thrr >= 0.01 and thrr < 0.60) { setprop("/systems/thrust/state2", "MAN"); + unflex(); } else if (thrr >= 0.60 and thrr < 0.65) { setprop("/systems/thrust/state2", "CL"); + unflex(); } else if (thrr >= 0.65 and thrr < 0.78) { setprop("/systems/thrust/state2", "MAN THR"); + unflex(); } else if (thrr >= 0.78 and thrr < 0.83) { setprop("/it-autoflight/input/athr", 1); setprop("/controls/engines/engine[1]/throttle-fdm", 0.90); @@ -80,10 +91,12 @@ setlistener("/controls/engines/engine[1]/throttle-pos", func { } else if (thrr >= 0.83 and thrr < 0.95) { setprop("/it-autoflight/input/athr", 1); setprop("/systems/thrust/state2", "MAN THR"); + unflex(); } else if (thrr >= 0.95) { setprop("/it-autoflight/input/athr", 1); setprop("/controls/engines/engine[1]/throttle-fdm", 0.95); setprop("/systems/thrust/state2", "TOGA"); + unflex(); } } else { if (thrr < 0.01) { @@ -141,15 +154,24 @@ var thrust_lim = func { setprop("/controls/engines/thrust-limit", "TOGA"); setprop("/controls/engines/epr-limit", 1.308); setprop("/controls/engines/n1-limit", 101.8); - } else if (state1 == "MCT" or state2 == "MCT" or (state1 == "MAN THR" and thr1 < 0.83) or (state2 == "MAN THR" and thr2 < 0.83)) { + } else if ((state1 == "MCT" or state2 == "MCT" or (state1 == "MAN THR" and thr1 < 0.83) or (state2 == "MAN THR" and thr2 < 0.83)) and getprop("/systems/thrust/lim-flex") == 0) { setprop("/controls/engines/thrust-limit", "MCT"); setprop("/controls/engines/epr-limit", 1.293); setprop("/controls/engines/n1-limit", 97.7); + } else if ((state1 == "MCT" or state2 == "MCT" or (state1 == "MAN THR" and thr1 < 0.83) or (state2 == "MAN THR" and thr2 < 0.83)) and getprop("/systems/thrust/lim-flex") == 1) { + setprop("/controls/engines/thrust-limit", "FLX"); + setprop("/controls/engines/epr-limit", 1.293); + setprop("/controls/engines/n1-limit", 97.7); } else if (state1 == "CL" or state2 == "CL" or state1 == "MAN" or state2 == "MAN" or state1 == "IDLE" or state2 == "IDLE") { setprop("/controls/engines/thrust-limit", "CLB"); setprop("/controls/engines/epr-limit", 1.271); setprop("/controls/engines/n1-limit", 91.9); } + } else if (getprop("/FMGC/internal/flex-set") == 1) { + setprop("/systems/thrust/lim-flex", 1); + setprop("/controls/engines/thrust-limit", "FLX"); + setprop("/controls/engines/epr-limit", 1.293); + setprop("/controls/engines/n1-limit", 97.7); } else { setprop("/controls/engines/thrust-limit", "TOGA"); setprop("/controls/engines/epr-limit", 1.308); @@ -157,6 +179,14 @@ var thrust_lim = func { } } +var unflex = func { + var state1 = getprop("/systems/thrust/state1"); + var state2 = getprop("/systems/thrust/state2"); + if (state1 != "MCT" and state2 != "MCT" and getprop("/gear/gear[1]/wow") == 0 and getprop("/gear/gear[2]/wow") == 0) { + setprop("/systems/thrust/lim-flex", 0); + } +} + var thrust_loop = func { var state1 = getprop("/systems/thrust/state1"); var state2 = getprop("/systems/thrust/state2");