1
0
Fork 0

Merge branch 'dev' into fuel-prediction

This commit is contained in:
Matthew Maring 2020-05-18 13:03:34 -04:00
commit 32c5dc1a31
41 changed files with 1789 additions and 1627 deletions

View file

@ -3950,8 +3950,6 @@
<file>Aircraft/A320-family/Nasal/Libraries/property-tree-setup.nas</file>
</pts>
<libraries>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-main.nas</file>
<file>Aircraft/A320-family/Nasal/Effects/light-manager.nas</file>
<file>Aircraft/A320-family/Nasal/Libraries/libraries.nas</file>
<file>Aircraft/A320-family/Nasal/Libraries/buttons.nas</file>
<file>Aircraft/A320-family/Nasal/Libraries/shake.nas</file>
@ -3963,8 +3961,6 @@
</acconfig>
<systems>
<file>Aircraft/A320-family/Nasal/Systems/APU.nas</file>
<file>Aircraft/A320-family/Nasal/Effects/effects.nas</file>
<file>Aircraft/A320-family/Nasal/Effects/thunder-effects.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/electrical.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/pneumatics.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/hydraulics.nas</file>
@ -3973,14 +3969,27 @@
<file>Aircraft/A320-family/Nasal/Systems/ADIRS/ADR.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/ADIRS/SwitchingPanel.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/Comm/HF.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/fire.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/brakes.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/brakesystem.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/tyresmoke.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/ground_services.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/payload.nas</file>
<file>Aircraft/A320-family/Nasal/Instruments/clock.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/fire.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/ground_services.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/icing.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/payload.nas</file>
<file>Aircraft/A320-family/Nasal/Systems/tyresmoke.nas</file>
</systems>
<ecam>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-main.nas</file>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-controller.nas</file>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-logic.nas</file>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-messages.nas</file>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-phases.nas</file>
</ecam>
<effects>
<file>Aircraft/A320-family/Nasal/Effects/light-manager.nas</file>
<file>Aircraft/A320-family/Nasal/Effects/effects.nas</file>
<file>Aircraft/A320-family/Nasal/Effects/thunder-effects.nas</file>
</effects>
<fadec>
<file>Aircraft/A320-family/Nasal/Systems/FADEC/fadec-common.nas</file>
</fadec>
@ -4027,6 +4036,7 @@
<file>Aircraft/A320-family/Nasal/MCDU/DATA.nas</file>
<file>Aircraft/A320-family/Nasal/MCDU/STATUS.nas</file>
</mcdu>
<!-- Canvas -->
<canvas_pfd>
<file>Aircraft/A320-family/Models/Instruments/PFD/PFD.nas</file>
</canvas_pfd>
@ -4043,15 +4053,7 @@
<canvas_mcdu>
<file>Aircraft/A320-family/Models/Instruments/MCDU/MCDU.nas</file>
</canvas_mcdu>
<ecam>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-controller.nas</file>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-logic.nas</file>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-messages.nas</file>
<file>Aircraft/A320-family/Nasal/ECAM/ECAM-phases.nas</file>
</ecam>
<icing>
<file>Aircraft/A320-family/Nasal/Systems/icing.nas</file>
</icing>
<!-- Autopush -->
<autopush>
<file>Aircraft/A320-family/Nasal/Autopush/autopush.nas</file>
</autopush>
@ -4064,6 +4066,7 @@
<autopush_route>
<file>Aircraft/A320-family/Nasal/Autopush/autopush_route.nas</file>
</autopush_route>
<!-- Panels -->
<rmp>
<file>Aircraft/A320-family/Nasal/Panels/rmp.nas</file>
</rmp>

View file

@ -4,8 +4,8 @@ Have at least following versions installed:
* FlightGear 2019.2.0 or newer
## Install using ZIP Snapshot
[Download](https://github.com/legoboyvdlp/A320-family/archive/master.zip) the zip file.
Use your prefered archive utility to unzip the archive.
[Download](https://github.com/legoboyvdlp/A320-family/archive/dev.zip) the zip file.
Use your preferred archive utility to unzip the archive.
Move the unpacked directory to your aircraft directory. This can be FGData/Aircraft, or a custom directory you've specified.
Rename the directory to `A320-family`.

View file

@ -806,17 +806,10 @@
<animation>
<type>rotate</type>
<object-name>atc_stby</object-name>
<factor>-35</factor>
<offset-deg>70</offset-deg>
<center>
<x-m>0.01146</x-m>
<y-m>0.213663</y-m>
<z-m>-0.13086</z-m>
</center>
<factor>35</factor>
<offset-deg>-70</offset-deg>
<axis>
<x>0</x>
<y>0</y>
<z>1</z>
<object-name>atc_stby.axis</object-name>
</axis>
<property>controls/atc/mode-knob</property>
</animation>
@ -2030,7 +2023,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("sts");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("sts");</script>
</binding>
</action>
</animation>
@ -2049,7 +2042,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("apu");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("apu");</script>
</binding>
</action>
</animation>
@ -2068,7 +2061,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("bleed");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("bleed");</script>
</binding>
</action>
</animation>
@ -2087,7 +2080,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("press");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("press");</script>
</binding>
</action>
</animation>
@ -2106,7 +2099,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("elec");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("elec");</script>
</binding>
</action>
</animation>
@ -2125,7 +2118,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("hyd");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("hyd");</script>
</binding>
</action>
</animation>
@ -2144,7 +2137,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("fuel");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("fuel");</script>
</binding>
</action>
</animation>
@ -2163,7 +2156,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("eng");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("eng");</script>
</binding>
</action>
</animation>
@ -2182,7 +2175,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("cond");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("cond");</script>
</binding>
</action>
</animation>
@ -2201,7 +2194,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("door");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("door");</script>
</binding>
</action>
</animation>
@ -2220,7 +2213,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("wheel");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("wheel");</script>
</binding>
</action>
</animation>
@ -2239,7 +2232,7 @@
</greater-than-equals>
</condition>
<command>nasal</command>
<script>libraries.ECAMControlPanel.sysPageBtn("fctl");</script>
<script>ecam.ECAMControlPanel.sysPageBtn("fctl");</script>
</binding>
</action>
</animation>
@ -2509,16 +2502,14 @@
</condition>
<command>nasal</command>
<script>
libraries.ECAMControlPanel.rclBtn();
ecam.ECAMControlPanel.rclBtn();
ecam.FWC.Btn.recall.setValue(1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
ecam.FWC.Btn.recall.setValue(0);
</script>
<script>ecam.FWC.Btn.recall.setValue(0);</script>
</binding>
</mod-up>
</action>
@ -2540,16 +2531,14 @@
</condition>
<command>nasal</command>
<script>
libraries.ECAMControlPanel.clrBtn();
ecam.ECAMControlPanel.clrBtn();
ecam.FWC.Btn.clr.setValue(1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
ecam.FWC.Btn.clr.setValue(0);
</script>
<script>ecam.FWC.Btn.clr.setValue(0);</script>
</binding>
</mod-up>
</action>

File diff suppressed because it is too large Load diff

View file

@ -188,7 +188,6 @@ var flex = props.globals.getNode("/FMGC/internal/flex", 1);
var flexSet = props.globals.getNode("/FMGC/internal/flex-set", 1);
var engOutAcc = props.globals.getNode("/FMGC/internal/eng-out-reduc", 1);
var engOutAccSet = props.globals.getNode("/MCDUC/reducacc-set", 1);
var transAlt = props.globals.getNode("/FMGC/internal/trans-alt", 1);
var managedSpeed = props.globals.getNode("/it-autoflight/input/spd-managed", 1);
# CLB PERF
@ -2315,7 +2314,7 @@ var canvas_MCDU_base = {
me["Simple_L1"].setText(sprintf("%3.0f", v1.getValue()));
me["Simple_L2"].setText(sprintf("%3.0f", vr.getValue()));
me["Simple_L3"].setText(sprintf("%3.0f", v2.getValue()));
me["Simple_L4"].setText(sprintf("%3.0f", transAlt.getValue()));
me["Simple_L4"].setText(sprintf("%3.0f", fmgc.FMGCInternal.transAlt));
me["Simple_L5"].setText(sprintf("%3.0f", clbReducFt.getValue()) ~ sprintf("/%3.0f", reducFt.getValue()));
me["Simple_L6"].setText(" TO DATA");
me["Simple_L1S"].setText(" V1");
@ -2334,6 +2333,12 @@ var canvas_MCDU_base = {
me["Simple_R5S"].setText("ENG OUT ACC");
me["Simple_R6S"].setText("NEXT ");
if (fmgc.FMGCInternal.transAltSet) {
me["Simple_L4"].setFontSize(normal);
} else {
me["Simple_L4"].setFontSize(small);
}
if (getprop("/FMGC/status/phase") == 0 or getprop("/FMGC/status/phase") == 7) {
me["Simple_L6_Arrow"].show();
me["Simple_L6"].show();
@ -2998,8 +3003,14 @@ var canvas_MCDU_base = {
me["Simple_L3"].setText("---g/---");;
}
me["Simple_L4S"].setText("TRANS ALT");
me["Simple_L4"].setText(sprintf("%3.0f", transAlt.getValue()));
me["Simple_L4S"].setText("TRANS FL");
me["Simple_L4"].setText("FL" ~ sprintf("%2.0f", (fmgc.FMGCInternal.transAlt / 100)));
if (fmgc.FMGCInternal.transAltSet) {
me["Simple_L4"].setFontSize(normal);
} else {
me["Simple_L4"].setFontSize(small);
}
me["Simple_R1S"].setText("FINAL");
if (fmgc.flightPlanController.flightplans[2].destination_runway != nil) {
@ -5684,6 +5695,8 @@ var canvas_MCDU_base = {
me["PROG"].hide();
me["PERFTO"].hide();
me["arrowsDepArr"].show();
me["PERFAPPR"].hide();
me["PERFGA"].hide();
me["Simple_PageNum"].setText("X/X");
me["Simple_PageNum"].hide();
me["Simple_Title"].show();

View file

@ -854,6 +854,31 @@
</action>
</animation>
<animation>
<type>pick</type>
<object-name>airport</object-name>
<action>
<button>0</button>
<repeatable>true</repeatable>
<binding>
<command>nasal</command>
<script>mcdu.pagebutton("airport", 0);</script>
<condition>
<and>
<greater-than-equals>
<property>systems/electrical/bus/ac-1</property>
<value>110</value>
</greater-than-equals>
<greater-than>
<property>controls/lighting/DU/mcdu1</property>
<value>0.01</value>
</greater-than>
</and>
</condition>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>left</object-name>

View file

@ -854,6 +854,31 @@
</action>
</animation>
<animation>
<type>pick</type>
<object-name>airport</object-name>
<action>
<button>0</button>
<repeatable>true</repeatable>
<binding>
<command>nasal</command>
<script>mcdu.pagebutton("airport", 1);</script>
<condition>
<and>
<greater-than-equals>
<property>systems/electrical/bus/ac-2</property>
<value>110</value>
</greater-than-equals>
<greater-than>
<property>controls/lighting/DU/mcdu2</property>
<value>0.01</value>
</greater-than>
</and>
</condition>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>left</object-name>

View file

@ -6,7 +6,7 @@ var __self__ = caller(0)[0];
canvas.SymbolLayer.Controller.add(name, __self__);
canvas.SymbolLayer.add(name, {
parents: [canvas.MultiSymbolLayer],
parents: [MultiSymbolLayer],
type: name, # Symbol type
df_controller: __self__, # controller to use by default -- this one
df_options: { # default configuration options

View file

@ -6,7 +6,7 @@ var __self__ = caller(0)[0];
canvas.SymbolLayer.Controller.add(name, __self__);
canvas.SymbolLayer.add(name, {
parents: [canvas.MultiSymbolLayer],
parents: [MultiSymbolLayer],
type: name, # Symbol type
df_controller: __self__, # controller to use by default -- this one
df_options: { # default configuration options

View file

@ -69,7 +69,6 @@ var alt_inhg = props.globals.getNode("/instrumentation/altimeter/setting-inhg",
var target_altitude = props.globals.getNode("/autopilot/settings/target-altitude-ft", 1);
var altitude = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1);
var altitude_pfd = props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft-pfd", 1);
var trans_alt = props.globals.getNode("/FMGC/internal/trans-alt", 1);
var alt_diff = props.globals.getNode("/instrumentation/pfd/alt-diff", 1);
var ground_diff = props.globals.getNode("/instrumentation/pfd/ground-diff", 1);
var landing_diff = props.globals.getNode("/instrumentation/pfd/landing-diff", 1);
@ -645,7 +644,7 @@ var canvas_PFD_base = {
me["QNH"].hide();
me["QNH_setting"].hide();
if (altitude.getValue() < trans_alt.getValue() and FMGCphase.getValue() == '4') {
if (altitude.getValue() < fmgc.FMGCInternal.transAlt and FMGCphase.getValue() == '4') {
if (qnh_going == 0) {
qnh_going = 1;
}
@ -670,7 +669,7 @@ var canvas_PFD_base = {
me["QNH_std"].hide();
me["QNH_box"].hide();
if (altitude.getValue() >= trans_alt.getValue() and FMGCphase.getValue() == '2') {
if (altitude.getValue() >= fmgc.FMGCInternal.transAlt and FMGCphase.getValue() == '2') {
if (qnh_going == 0) {
qnh_going = 1;
}
@ -695,7 +694,7 @@ var canvas_PFD_base = {
} else if (alt_inhg_mode.getValue() == 1) {
if (altitude.getValue() >= trans_alt.getValue() and FMGCphase.getValue() == '2') {
if (altitude.getValue() >= fmgc.FMGCInternal.transAlt and FMGCphase.getValue() == '2') {
if (qnh_going == 0) {
qnh_going = 1;
}

View file

@ -104,7 +104,7 @@ var warning = {
},
callPage: func() {
if (me.sdPage == "nil" or me.hasCalled == 1) { return; }
libraries.SystemDisplay.failCall(me.sdPage);
ecam.SystemDisplay.failCall(me.sdPage);
me.hasCalled = 1;
}
};
@ -336,7 +336,7 @@ var ECAM_controller = {
}
if (statusFlag == 1 and lines[0].getValue() == "") {
libraries.SystemDisplay.manCall("sts");
ecam.SystemDisplay.manCall("sts");
statusFlag = 0;
}
},

View file

@ -1600,13 +1600,13 @@ var messages_right_memo = func {
land_asap_a.active = 0;
}
if (libraries.ap_active == 1 and apWarn.getValue() == 1) {
if (ecam.ap_active == 1 and apWarn.getValue() == 1) {
ap_off.active = 1;
} else {
ap_off.active = 0;
}
if (libraries.athr_active == 1 and athrWarn.getValue() == 1) {
if (ecam.athr_active == 1 and athrWarn.getValue() == 1) {
athr_off.active = 1;
} else {
athr_off.active = 0;

View file

@ -102,7 +102,7 @@ var FCUController = {
if (me.FCUworking and fbw.FBW.activeLaw.getValue() == 0) {
if (!ap1.getBoolValue()) {
ap1Input.setValue(1);
libraries.apWarnNode.setValue(0);
ecam.apWarnNode.setValue(0);
} else {
apOff("hard", 1);
}
@ -489,7 +489,7 @@ var updateActiveFMGC = func {
# Autopilot Disconnection
var apOff = func(type, side) {
if ((ap1Input.getValue() and (side == 1 or side == 0)) or (ap2Input.getValue() and (side == 2 or side == 0))) {
libraries.doApWarn(type);
ecam.doApWarn(type);
}
if (side == 0) {
@ -509,7 +509,7 @@ var athrOff = func(type) {
fadec.lockThr();
}
athrInput.setValue(0);
libraries.doAthrWarn(type);
ecam.doAthrWarn(type);
}
}

View file

@ -403,12 +403,9 @@ var ITAF = {
if (FPLN.wpFlyFrom < 0) {
FPLN.wpFlyFrom = 0;
}
FPLN.currentCourse = getprop("/FMGC/flightplan[2]/wp[" ~ FPLN.wpFlyFrom ~ "]/course"); # Best left at getprop
FPLN.currentCourse = fmgc.wpCourse[2][FPLN.wpFlyFrom].getValue();
FPLN.wpFlyTo = FPLN.currentWPTemp + 1;
if (FPLN.wpFlyTo < 0) {
FPLN.wpFlyTo = 0;
}
FPLN.nextCourse = getprop("/FMGC/flightplan[2]/wp[" ~ FPLN.wpFlyTo ~ "]/course"); # Best left at getprop
FPLN.nextCourse = fmgc.wpCourse[2][FPLN.wpFlyTo].getValue();
FPLN.maxBankLimit = Internal.bankLimit.getValue();
FPLN.deltaAngle = math.abs(geo.normdeg180(FPLN.currentCourse - FPLN.nextCourse));
@ -430,7 +427,7 @@ var ITAF = {
Internal.lnavAdvanceNm.setValue(FPLN.turnDist);
# Advance logic done by flightplan controller
if (FPLN.wp0Dist.getValue() <= FPLN.turnDist) {
if (FPLN.wp0Dist.getValue() <= FPLN.turnDist and !Gear.wow1.getBoolValue()) {
flightPlanController.autoSequencing();
}
}

View file

@ -140,6 +140,11 @@ var FMGCinit = func {
various2.start();
}
var FMGCInternal = {
transAlt: 18000,
transAltSet: 0,
};
############
# FBW Trim #
############
@ -962,7 +967,7 @@ var ManagedSPD = maketimer(0.25, func {
}
} else {
ManagedSPD.stop();
libraries.mcpSPDKnbPull();
fcu.FCUController.SPDPull();
}
});
@ -978,7 +983,7 @@ var switchDatabase = func {
}
# Landing to phase 7
setlistener("gear/gear[1]/wow", func() {
setlistener("/gear/gear[1]/wow", func() {
if (getprop("/gear/gear[1]/wow") == 0 and timer30secLanding.isRunning) {
timer30secLanding.stop();
setprop("/FMGC/internal/landing-time", -99);
@ -991,7 +996,7 @@ setlistener("gear/gear[1]/wow", func() {
}, 0, 0);
# Align IRS 1
setlistener("systems/navigation/adr/operating-1", func() {
setlistener("/systems/navigation/adr/operating-1", func() {
if (timer48gpsAlign1.isRunning) {
timer48gpsAlign1.stop();
}
@ -1003,7 +1008,7 @@ setlistener("systems/navigation/adr/operating-1", func() {
}, 0, 0);
# Align IRS 2
setlistener("systems/navigation/adr/operating-2", func() {
setlistener("/systems/navigation/adr/operating-2", func() {
if (timer48gpsAlign2.isRunning) {
timer48gpsAlign2.stop();
}
@ -1015,7 +1020,7 @@ setlistener("systems/navigation/adr/operating-2", func() {
}, 0, 0);
# Align IRS 3
setlistener("systems/navigation/adr/operating-3", func() {
setlistener("/systems/navigation/adr/operating-3", func() {
if (timer48gpsAlign3.isRunning) {
timer48gpsAlign3.stop();
}

View file

@ -11,7 +11,7 @@ var courseDistanceFromPrev = nil;
var sizeWP = nil;
var magTrueError = 0;
var DEBUG_DISCONT = 1;
var DEBUG_DISCONT = 0;
# Props.getNode
var magHDG = props.globals.getNode("/orientation/heading-magnetic-deg", 1);
@ -93,7 +93,7 @@ var flightPlanController = {
print("Load failed.");
}
# try to fix fgfp
me.flightplans[3].destination = airportinfo(getprop("FMGC/internal/arr-arpt"));
me.flightplans[3].destination = airportinfo(getprop("/FMGC/internal/arr-arpt"));
me.destroyTemporaryFlightPlan(3, 1);
},
@ -125,6 +125,8 @@ var flightPlanController = {
me.addDiscontinuity(1, plan);
# reset mcdu if it exists
if (canvas_mcdu.myFpln[0] != nil) { canvas_mcdu.myFpln[0].scroll = 0; }
if (canvas_mcdu.myFpln[1] != nil) { canvas_mcdu.myFpln[1].scroll = 0; }
if (canvas_mcdu.myArrival[0] != nil) { canvas_mcdu.myArrival[0].reset(); }
if (canvas_mcdu.myArrival[1] != nil) { canvas_mcdu.myArrival[1].reset(); }
if (canvas_mcdu.myDeparture[0] != nil) { canvas_mcdu.myDeparture[0].reset(); }
@ -133,7 +135,7 @@ var flightPlanController = {
me.flightPlanChanged(plan);
},
autoSequencing: func() {
calculateTimeAltitudeOnSequence: func() {
me._timeTemp = math.round(getprop("/sim/time/utc/minute") + (getprop("/sim/time/utc/second") / 60));
if (me._timeTemp < 10) {
me._timeTemp = "0" ~ me._timeTemp;
@ -141,7 +143,7 @@ var flightPlanController = {
me.fromWptTime = getprop("/sim/time/utc/hour") ~ me._timeTemp;
me._altTemp = getprop("/systems/navigation/adr/output/baro-alt-corrected-1-capt");
if (me._altTemp > getprop("FMGC/internal/trans-alt")) {
if (me._altTemp > fmgc.FMGCInternal.transAlt) {
me.fromWptAlt = "FL" ~ math.round(me._altTemp / 100);
} else {
if (me._altTemp > 0) {
@ -150,6 +152,10 @@ var flightPlanController = {
me.fromWptAlt = "M" ~ math.round(me._altTemp);
}
}
},
autoSequencing: func() {
me.calculateTimeAltitudeOnSequence();
# todo setlistener on sim/time/warp to recompute predictions
@ -177,7 +183,7 @@ var flightPlanController = {
me.deleteWP(0, 2, 0, 1);
} else {
me.wptType = me.flightplans[2].getWP(me.currentToWptIndexTemp).wp_type;
me.wptTypeNoAdvanceDelete = me.wptType == "radialIntercept" or me.wptType == "vectors" or me.wptType == "hdgToAlt";
me.wptTypeNoAdvanceDelete = me.wptType == "radialIntercept" or me.wptType == "vectors" or me.wptType == "dmeIntercept" or me.wptType == "hdgToAlt";
if (me.wptTypeNoAdvanceDelete) {
me.currentToWptIndex.setValue(2);
} else {
@ -227,11 +233,11 @@ var flightPlanController = {
# typeStr: optional argument to be passed to createWP, must be one of "sid", "star" "approach" "missed" or "pseudo"
childWPBearingDistance: func(wpt, bearing, dist, name, typeStr = "") {
var coordinates = greatCircleMove(wpt.lat, wpt.lon, bearing, dist);
var coordinates = greatCircleMove(wpt.lat, wpt.lon, num(bearing), num(dist));
if (typeStr != "") {
return createWP(coordinates, name);
} else {
return createWP(coordinates, name, typeStr);
} else {
return createWP(coordinates, name);
}
},
@ -304,9 +310,9 @@ var flightPlanController = {
me.insertTP(plan, 1);
}
me.deleteWP(0, plan);
me.flightPlanChanged(plan);
var curAircraftPosDirTo = geo.aircraft_position();
canvas_mcdu.myDirTo[plan].updateDist(me.flightplans[plan].getWP(1).courseAndDistanceFrom(curAircraftPosDirTo)[1]);
me.flightPlanChanged(plan);
},
deleteWP: func(index, n, a = 0, s = 0) { # a = 1, means adding a waypoint via deleting intermediate. s = 1, means autosequencing
@ -330,6 +336,23 @@ var flightPlanController = {
}
},
# createDuplicateNames - helper to spawn DUPLICATENAMES page
# args: ghostContainer, index, flag, plan
# ghostContainer: vector of fgPositioned ghosts
# index: index
# flag: is it a navaids DUPLICATENAMES page or not?
# plan: plan
# flagPBD: do we return back to PBD handler or to default waypoint handler?
createDuplicateNames: func(ghostContainer, index, flag, plan, flagPBD = 0, bearing = -999, distance = -99) {
if (canvas_mcdu.myDuplicate[plan] != nil) {
canvas_mcdu.myDuplicate[plan].del();
}
canvas_mcdu.myDuplicate[plan] = nil;
canvas_mcdu.myDuplicate[plan] = mcdu.duplicateNamesPage.new(ghostContainer, index, flag, plan, flagPBD, bearing, distance);
setprop("MCDU[" ~ plan ~ "]/page", "DUPLICATENAMES");
},
insertAirport: func(text, index, plan, override = 0, overrideIndex = -1) {
if (index == 0) {
return 1;
@ -371,12 +394,7 @@ var flightPlanController = {
}
}
} elsif (size(airport) >= 1) {
if (canvas_mcdu.myDuplicate[plan] != nil) {
canvas_mcdu.myDuplicate[plan].del();
}
canvas_mcdu.myDuplicate[plan] = nil;
canvas_mcdu.myDuplicate[plan] = mcdu.duplicateNamesPage.new(airport, index, 0, plan);
setprop("MCDU[" ~ plan ~ "]/page", "DUPLICATENAMES");
me.createDuplicateNames(airport, index, 0, plan);
return 2;
}
},
@ -422,12 +440,7 @@ var flightPlanController = {
}
}
} elsif (size(fix) >= 1) {
if (canvas_mcdu.myDuplicate[plan] != nil) {
canvas_mcdu.myDuplicate[plan].del();
}
canvas_mcdu.myDuplicate[plan] = nil;
canvas_mcdu.myDuplicate[plan] = mcdu.duplicateNamesPage.new(fix, index, 0, plan);
setprop("MCDU[" ~ plan ~ "]/page", "DUPLICATENAMES");
me.createDuplicateNames(fix, index, 0, plan);
return 2;
}
},
@ -503,16 +516,92 @@ var flightPlanController = {
}
}
} elsif (size(navaid) >= 1) {
if (canvas_mcdu.myDuplicate[plan] != nil) {
canvas_mcdu.myDuplicate[plan].del();
}
canvas_mcdu.myDuplicate[plan] = nil;
canvas_mcdu.myDuplicate[plan] = mcdu.duplicateNamesPage.new(navaid, index, 1, plan);
setprop("MCDU[" ~ plan ~ "]/page", "DUPLICATENAMES");
me.createDuplicateNames(navaid, index, 1, plan);
return 2;
}
},
# getWPforPBD - parse scratchpad text to find waypoint ghost for PBD
# args: text, index, plan
# text: scratchpad text
# index: index at which waypoint will be inserted
# plan: plan to which waypoint will be inserted
# return:
# 0: not in database
# 1: notAllowed
# 2: o.k.
getWPforPBD: func(text, index, plan, override = 0, overrideIndex = -1) {
if (index == 0) {
return 1;
}
var textSplit = split("/", text);
if (size(split(".", textSplit[2])) != 1 or size(textSplit[1]) < 2 or size(textSplit[1]) > 3) {
return 1;
}
var wpGhost = nil;
var wpGhostContainer = nil;
var type = nil;
if (size(textSplit[0]) == 5) {
wpGhostContainer = findFixesByID(textSplit[0]);
if (size(wpGhostContainer) == 0) {
return 0;
}
type = "fix";
} elsif (size(textSplit[0]) == 4) {
wpGhostContainer = findAirportsByICAO(textSplit[0]);
if (size(wpGhostContainer) == 0) {
return 0;
}
type = "airport";
} elsif (size(textSplit[0]) == 3 or size(textSplit[0]) == 2) {
wpGhostContainer = findNavaidsByID(textSplit[0]);
if (size(wpGhostContainer) == 0) {
return 0;
}
type = "navaid";
} else {
return 1;
}
if (size(wpGhostContainer) == 0 or override) {
if (!override) {
wpGhost = wpGhostContainer[0];
} else {
wpGhost = wpGhostContainer[overrideIndex];
}
} else {
if (type == "navaid") {
me.createDuplicateNames(wpGhostContainer, index, 1, plan, 1, num(textSplit[1]), num(textSplit[2]));
} else {
me.createDuplicateNames(wpGhostContainer, index, 0, plan, 1, num(textSplit[1]), num(textSplit[2]));
}
return 2;
}
var localMagvar = magvar(wpGhost.lat, wpGhost.lon);
me.insertPlaceBearingDistance(wpGhost, textSplit[1] + localMagvar, textSplit[2], index, plan);
return 2;
},
# insertPlaceBearingDistance - insert PBD waypoint at specified index,
# at some specified bearing, distance from a specified location
# args: wp, index, plan
# wpt: waypoint ghost
# index: index to insert at in plan
# plan: plan to insert to
insertPlaceBearingDistance: func(wp, bearing, distance, index, plan) {
me.flightplans[plan].insertWP(me.childWPBearingDistance(wp, bearing, distance, "PBD" ~ index), index);
me.addDiscontinuity(index + 1, plan);
me.flightPlanChanged(plan);
},
scratchpad: func(text, index, plan) { # return 0 not in database, 1 not allowed, 2 success, 3 = not allowed due to dir to
if (mcdu.dirToFlag) {
return 3;
@ -529,7 +618,9 @@ var flightPlanController = {
var thePlan = plan;
}
if (text == "CLR") {
if (size(split("/", text)) == 3) {
return me.getWPforPBD(text, index, thePlan);
} elsif (text == "CLR") {
return me.deleteWP(index, thePlan, 0);
} elsif (size(text) > 12) {
return me.insertLatLonFix(text, index, thePlan);

View file

@ -195,7 +195,7 @@ var triggerDoor = func(door, doorName, doorDesc) {
var systemsInit = func {
fbw.FBW.init();
light_manager.init();
effects.light_manager.init();
systems.ELEC.init();
systems.PNEU.init();
systems.HYD.init();
@ -203,8 +203,9 @@ var systemsInit = func {
systems.ADIRS.init();
systems.eng_init();
systems.APUController.init();
systems.fire_init();
systems.autobrake_init();
systems.fire_init();
systems.icingInit();
fmgc.flightPlanController.reset();
fadec.FADEC.init();
fmgc.ITAF.init();
@ -212,9 +213,8 @@ var systemsInit = func {
mcdu.MCDU_init(0);
mcdu.MCDU_init(1);
systemsLoop.start();
icing.icingInit();
lightsLoop.start();
libraries.ECAM.init();
ecam.ECAM.init();
libraries.variousReset();
rmp.init();
acp.init();
@ -235,7 +235,7 @@ var systemsLoop = maketimer(0.1, func {
systems.HYD.loop();
systems.FUEL.loop();
systems.ADIRS.loop();
libraries.ECAM.loop();
ecam.ECAM.loop();
libraries.BUTTONS.update();
fadec.FADEC.loop();
rmp.rmpUpdate();

View file

@ -28,15 +28,18 @@ var duplicateNamesPage = {
enableScroll: 0,
scroll: 0,
distances: nil,
new: func(vector, index, type, computer) {
var fp = {parents:[duplicateNamesPage]};
fp.vector = vector;
fp.index = index;
fp.type = type; # 0 = other, 1 = navaid
fp.computer = computer;
fp._setupPageWithData();
fp.distances = [];
return fp;
new: func(vector, index, type, computer, flagPBD = 0, pbdBrg = -999, pbdDist = -99) {
var dn = {parents:[duplicateNamesPage]};
dn.vector = vector;
dn.index = index;
dn.type = type; # 0 = other, 1 = navaid
dn.flagPBD = flagPBD;
dn.bearing = pbdBrg;
dn.distance = pbdDist;
dn.computer = computer;
dn._setupPageWithData();
dn.distances = [];
return dn;
},
del: func() {
return nil;
@ -131,14 +134,19 @@ var duplicateNamesPage = {
},
pushButtonLeft: func(indexSelect) {
if (!dirToFlag) {
if (size(me.vector[0].id) == 5) {
fmgc.flightPlanController.insertFix(me.vector[0].id, me.index, me.computer, 1, indexSelect - 1);
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
} elsif (size(me.vector[0].id) == 4) {
fmgc.flightPlanController.insertAirport(me.vector[0].id, me.index, me.computer, 1, indexSelect - 1);
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
} elsif (size(me.vector[0].id) == 3 or size(me.vector[0].id)== 2) {
fmgc.flightPlanController.insertNavaid(me.vector[0].id, me.index, me.computer, 1, indexSelect - 1);
if (!me.flagPBD) {
if (size(me.vector[0].id) == 5) {
fmgc.flightPlanController.insertFix(me.vector[0].id, me.index, me.computer, 1, indexSelect - 1);
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
} elsif (size(me.vector[0].id) == 4) {
fmgc.flightPlanController.insertAirport(me.vector[0].id, me.index, me.computer, 1, indexSelect - 1);
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
} elsif (size(me.vector[0].id) == 3 or size(me.vector[0].id)== 2) {
fmgc.flightPlanController.insertNavaid(me.vector[0].id, me.index, me.computer, 1, indexSelect - 1);
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
}
} else {
fmgc.flightPlanController.getWPforPBD(me.vector[0].id ~ "/" ~ me.bearing ~ "/" ~ me.distance, me.index, me.computer, 1, indexSelect - 1);
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA");
}
} else {

View file

@ -16,12 +16,12 @@ var fplnItem = {
} elsif (me.wp.wp_name != "DISCONTINUITY") {
var wptName = split("-", me.wp.wp_name);
if (wptName[0] == "VECTORS") {
return ["MANUAL", nil, me.colour];
return ["MANUAL", me.getSubText(), me.colour];
} else {
if (size(wptName) == 2) {
return[wptName[0] ~ wptName[1], nil, me.colour];
return[wptName[0] ~ wptName[1], me.getSubText(), me.colour];
} else {
return [me.wp.wp_name, nil, me.colour];
return [me.wp.wp_name, me.getSubText(), me.colour];
}
}
} else {
@ -31,19 +31,22 @@ var fplnItem = {
return ["problem", nil, "ack"];
}
},
getSubText: func() {
return nil;
},
updateCenterText: func() {
if (me.wp != nil) {
if (me.wp.wp_name != "DISCONTINUITY") {
if (me.index == fmgc.flightPlanController.currentToWptIndex.getValue() - 1 and fmgc.flightPlanController.fromWptTime != nil) {
me.assembledStr[0] = fmgc.flightPlanController.fromWptTime ~ " ";
me.assembledStr[0] = fmgc.flightPlanController.fromWptTime ~ " ";
} else {
me.assembledStr[0] = "---- ";
me.assembledStr[0] = "---- ";
}
if (me.index == fmgc.flightPlanController.currentToWptIndex.getValue()) {
me.assembledStr[1] = "BRG" ~ me.getBrg();
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() + 1)) {
me.assembledStr[1] = "TRK" ~ me.getTrack();
me.assembledStr[1] = "BRG" ~ me.getBrg() ~ " ";
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() + 1) or me.index == (fmgc.flightPlanController.arrivalIndex[me.plan] + 1)) {
me.assembledStr[1] = "TRK" ~ me.getTrack() ~ " ";
} else {
me.assembledStr[1] = nil;
}
@ -71,25 +74,32 @@ var fplnItem = {
}
},
getBrg: func() {
me.brg = fmgc.wpCourse[me.plan][me.index].getValue() - pts.Environment.magVar.getValue();
me.brg = fmgc.wpCourse[me.plan][me.index].getValue() - magvar();
if (me.brg < 0) { me.brg += 360; }
if (me.brg > 360) { me.brg -= 360; }
return sprintf("%03.0f", math.round(me.brg));
},
getTrack: func() {
me.trk = fmgc.wpCoursePrev[me.plan][me.index].getValue() - pts.Environment.magVar.getValue();
var wp = fmgc.flightPlanController.flightplans[me.plan].getWP(me.index);
me.trk = fmgc.wpCoursePrev[me.plan][me.index].getValue() - magvar(wp.lat, wp.lon);
if (me.trk < 0) { me.trk += 360; }
if (me.trk > 360) { me.trk -= 360; }
return sprintf("%03.0f", math.round(me.trk));
},
getSpd: func() {
return "---";
if (me.index == 0 and getprop("FMGC/internal/v1-set")) {
return sprintf("%3.0f", math.round(getprop("FMGC/internal/v1")));
} else {
return "---";
}
},
getAlt: func() {
if (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1) and fmgc.flightPlanController.fromWptAlt != nil) {
return " " ~ fmgc.flightPlanController.fromWptAlt;
if (me.index == 0 and left(me.wp.wp_name, 4) == getprop("/FMGC/internal/dep-arpt") and fmgc.flightPlanController.flightplans[me.plan].departure != nil) {
return sprintf("%6.0f", math.round(fmgc.flightPlanController.flightplans[me.plan].departure.elevation * M2FT));
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1) and fmgc.flightPlanController.fromWptAlt != nil) {
return " " ~ fmgc.flightPlanController.fromWptAlt;
} else {
return "-----";
return "------";
}
},
getDist: func() {
@ -260,12 +270,15 @@ var fplnPage = { # this one is only created once, and then updated - remember th
createPlanList: func() {
me.planList = [];
if (me.temporaryFlagFpln) {
for (var i = 0; i < me.plan.getPlanSize(); i += 1) {
append(me.planList, fplnItem.new(me.plan.getWP(i), i, me.planIndex, me.computer, "yel"));
}
colour = "yel";
} else {
for (var i = 0; i < me.plan.getPlanSize(); i += 1) {
append(me.planList, fplnItem.new(me.plan.getWP(i), i, me.planIndex, me.computer));
colour = "grn";
}
for (var i = 0; i < me.plan.getPlanSize(); i += 1) {
if (!me.temporaryFlagFpln and i > fmgc.flightPlanController.arrivalIndex[me.planIndex] and getprop("/FMGC/status/phase") != 6) {
append(me.planList, fplnItem.new(me.plan.getWP(i), i, me.planIndex, me.computer, "blu"));
} else {
append(me.planList, fplnItem.new(me.plan.getWP(i), i, me.planIndex, me.computer, colour));
}
}
append(me.planList, staticText.new(me.computer, me.getText("fplnEnd")));
@ -280,9 +293,9 @@ var fplnPage = { # this one is only created once, and then updated - remember th
if (size(me.outputList) >= 1) {
me.L1 = me.outputList[0].updateLeftText();
me.C1 = me.outputList[0].updateCenterText();
me.C1[1] = "TIME ";
me.C1[1] = "TIME ";
me.R1 = me.outputList[0].updateRightText();
me.R1[1] = "SPD/ALT ";
me.R1[1] = "SPD/ALT ";
} else {
me.L1 = [nil, nil, "ack"];
me.C1 = [nil, nil, "ack"];
@ -327,16 +340,21 @@ var fplnPage = { # this one is only created once, and then updated - remember th
},
destInfo: func() {
if (me.plan.getWP(fmgc.flightPlanController.arrivalIndex[me.planIndex]) != nil) {
me.L6 = [left(me.plan.getWP(fmgc.flightPlanController.arrivalIndex[me.planIndex]).wp_name, 4), " DEST", "wht"];
var destName = split("-", me.plan.getWP(fmgc.flightPlanController.arrivalIndex[me.planIndex]).wp_name);
if (size(destName) == 2) {
me.L6 = [destName[0] ~ destName[1], " DEST", "wht"];
} else {
me.L6 = [destName[0], " DEST", "wht"];
}
} else {
me.L6 = ["----", " DEST", "wht"];
}
me.C6 = ["---- ", "TIME ", "wht"];
if (fmgc.flightPlanController.arrivalDist != nil) {
me.C6 = ["---- " ~ int(fmgc.flightPlanController.arrivalDist), "TIME DIST", "wht"];
me.R6 = [sprintf("%4.0f", int(fmgc.flightPlanController.arrivalDist)) ~ " --.-", "DIST EFOB", "wht"];
} else {
me.C6 = ["---- ----", "TIME DIST", "wht"];
me.R6 = ["---- --.-", "DIST EFOB", "wht"];
}
me.R6 = ["--.-", "EFOB", "wht"];
},
update: func() {
#me.basePage();

View file

@ -36,7 +36,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/rte-percent", 5.0);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (getprop("/FMGC/internal/trip-fuel") != 0) {
var tf = num(scratchpad);
var tfs = size(scratchpad);
@ -46,7 +46,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/rte-rsv", num(perc) / 100 * num(getprop("/FMGC/internal/trip-fuel")));
setprop("/FMGC/internal/rte-percent", perc);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
}
} else if (tfs >= 1 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 21.7) {
setprop("/FMGC/internal/rte-rsv", scratchpad);
@ -56,7 +56,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/rte-percent", 15.0); # need reasearch on this value
}
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -70,7 +70,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/alt-fuel-set", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (find(".", scratchpad) != -1) {
var tf = num(scratchpad);
var tfs = size(scratchpad);
@ -79,7 +79,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/alt-time", "0000");
setprop("/FMGC/internal/alt-fuel-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -94,7 +94,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/final-time-set", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (find(".", scratchpad) != -1) {
var tf = num(scratchpad);
var tfs = size(scratchpad);
@ -102,7 +102,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/final-fuel", tf);
setprop("/FMGC/internal/final-fuel-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -113,7 +113,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/final-time", scratchpad);
setprop("/FMGC/internal/final-time-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -124,7 +124,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/min-dest-fob-set", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (find(".", scratchpad) != -1) {
var tf = num(scratchpad);
var tfs = size(scratchpad);
@ -132,7 +132,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/min-dest-fob", tf);
setprop("/FMGC/internal/min-dest-fob-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
if (num(getprop("/FMGC/internal/min-dest-fob")) < num(getprop("/FMGC/internal/final-fuel") + getprop("/FMGC/internal/alt-fuel"))) {
genericMessage(i, "CHECK MIN DEST FOB", "wht");
}
@ -184,7 +184,7 @@ var fuelPredInput = func(key, i) {
}
}
if ((zfwcg != nil and zfwcgs >= 1 and zfwcgs <= 5 and zfwcg > 0 and zfwcg <= 99.9) or (zfw != nil and zfws >= 1 and zfws <= 5 and zfw > 0 and zfw <= 999.9)) {
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -201,7 +201,7 @@ var fuelPredInput = func(key, i) {
setprop("/FMGC/internal/block-calculating", 0);
setprop("/FMGC/internal/block-confirmed", 1);
}
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -213,12 +213,12 @@ var fuelPredInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/fffq-sensor", "FF+FQ");
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (find("/", scratchpad) == 0) {
var sensor = substr(scratchpad, 1);
if (sensor == "FF+FQ" or sensor == "FQ+FF" or sensor == "FF" or sensor == "FQ") {
setprop("/FMGC/internal/fffq-sensor", sensor);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
setprop("FMGC/internal/fffq-sensor", sensor);
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -14,7 +14,7 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
fmgc.updateARPT();
#} else if (scratchpad == "") {
#setprop("/FMGC/internal/alt-selected", 1);
@ -28,7 +28,7 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/fuel-calculating", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
fmgc.updateARPT();
#setprop("/FMGC/internal/alt-selected", 1);
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
@ -43,13 +43,13 @@ var initInputA = func(key, i) {
setprop("MCDUC/flight-num", "");
setprop("MCDUC/flight-num-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var flts = size(scratchpad);
if (flts >= 1 and flts <= 8) {
setprop("MCDUC/flight-num", scratchpad);
setprop("MCDUC/flight-num-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -59,7 +59,7 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/cost-index", 0);
setprop("/FMGC/internal/cost-index-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var ci = int(scratchpad);
var cis = size(scratchpad);
@ -67,7 +67,7 @@ var initInputA = func(key, i) {
if (ci != nil and ci >= 0 and ci <= 999) {
setprop("/FMGC/internal/cost-index", ci);
setprop("/FMGC/internal/cost-index-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -87,7 +87,7 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (find("/", scratchpad) != -1) {
var crztemp = split("/", scratchpad);
if (find("FL", crztemp[0]) != -1) {
@ -106,7 +106,7 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/fuel-calculating", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -122,7 +122,7 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/fuel-calculating", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -147,7 +147,7 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/fuel-calculating", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -170,7 +170,7 @@ var initInputA = func(key, i) {
}
fmgc.flightPlanController.reset();
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
#} else if (scratchpad == "") {
#setprop("/FMGC/internal/alt-selected", 0);
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
@ -186,7 +186,7 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/arr-arpt", fromto[1]);
setprop("/FMGC/internal/tofrom-set", 1);
#scratchpad
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
fmgc.flightPlanController.updateAirports(fromto[0], fromto[1], 2);
setprop("/FMGC/internal/alt-selected", 0);
#ref lat
@ -223,13 +223,13 @@ var initInputA = func(key, i) {
setprop("/FMGC/internal/tropo", 36090);
setprop("/FMGC/internal/tropo-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tropo = size(scratchpad);
if (tropo == 5 and scratchpad <= 99990) {
setprop("/FMGC/internal/tropo-set", 1);
setprop("/FMGC/internal/tropo", scratchpad);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
setprop("FMGC/internal/tropo-set", 1);
setprop("FMGC/internal/tropo", scratchpad);
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -238,11 +238,11 @@ var initInputA = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/gndtemp-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (int(scratchpad) != nil and getprop("/FMGC/status/phase") == 0 and size(scratchpad) >= 1 and size(scratchpad) <= 3 and scratchpad >= -99 and scratchpad <= 99) {
setprop("/FMGC/internal/gndtemp", scratchpad);
setprop("/FMGC/internal/gndtemp-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -14,7 +14,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/block-calculating", 1);
}
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs >= 1 and tfs <= 4) {
@ -22,7 +22,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/taxi-fuel", scratchpad);
setprop("/FMGC/internal/taxi-fuel-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
fmgc.updateFuel();
} else {
notAllowed(i);
@ -39,7 +39,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/rte-percent-set", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (getprop("/FMGC/internal/trip-fuel") != 0) {
var tf = num(scratchpad);
var tfs = size(scratchpad);
@ -51,7 +51,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/rte-percent", perc);
setprop("/FMGC/internal/rte-percent-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
}
} else if (tfs >= 1 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 21.7) {
setprop("/FMGC/internal/rte-rsv", scratchpad);
@ -63,7 +63,7 @@ var initInputB = func(key, i) {
}
setprop("/FMGC/internal/rte-percent-set", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -77,7 +77,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/alt-fuel-set", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (find(".", scratchpad) != -1) {
var tf = num(scratchpad);
var tfs = size(scratchpad);
@ -86,7 +86,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/alt-time", "0000");
setprop("/FMGC/internal/alt-fuel-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -101,7 +101,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/final-time-set", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (find(".", scratchpad) != -1) {
var tf = num(scratchpad);
var tfs = size(scratchpad);
@ -109,7 +109,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/final-fuel", tf);
setprop("/FMGC/internal/final-fuel-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -120,7 +120,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/final-time", scratchpad);
setprop("/FMGC/internal/final-time-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -131,7 +131,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/min-dest-fob-set", 0);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (find(".", scratchpad) != -1) {
var tf = num(scratchpad);
var tfs = size(scratchpad);
@ -139,7 +139,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/min-dest-fob", tf);
setprop("/FMGC/internal/min-dest-fob-set", 1);
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
if (num(getprop("/FMGC/internal/min-dest-fob")) < num(getprop("/FMGC/internal/final-fuel") + getprop("/FMGC/internal/alt-fuel"))) {
genericMessage(i, "CHECK MIN DEST FOB", "wht");
}
@ -177,7 +177,7 @@ var initInputB = func(key, i) {
}
}
if ((zfwcg != nil and zfwcgs >= 1 and zfwcgs <= 5 and zfwcg > 0 and zfwcg <= 99.9) or (zfw != nil and zfws >= 1 and zfws <= 5 and zfw > 0 and zfw <= 999.9)) {
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -186,7 +186,7 @@ var initInputB = func(key, i) {
if (num(scratchpad) != nil and zfwcg >= 1 and zfwcg <= 5 and scratchpad > 0 and scratchpad <= 99.9) {
setprop("/FMGC/internal/zfwcg", scratchpad);
setprop("/FMGC/internal/zfwcg-set", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -227,7 +227,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/block-calculating", 0);
setprop("/FMGC/internal/block-confirmed", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
var maxblock = getprop("/options/maxblock");
@ -241,7 +241,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/fuel-calculating", 1);
setprop("/FMGC/internal/block-calculating", 0);
setprop("/FMGC/internal/block-confirmed", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -267,7 +267,7 @@ var initInputB = func(key, i) {
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
if (find("TL", scratchpad) != -1 or find("HD", scratchpad) != -1) {
var effwind = substr(scratchpad, 2);
@ -277,7 +277,7 @@ var initInputB = func(key, i) {
if (getprop("/FMGC/internal/block-confirmed")) {
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -289,7 +289,7 @@ var initInputB = func(key, i) {
if (getprop("/FMGC/internal/block-confirmed")) {
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -300,7 +300,7 @@ var initInputB = func(key, i) {
if (getprop("/FMGC/internal/block-confirmed")) {
setprop("/FMGC/internal/fuel-calculating", 1);
}
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

File diff suppressed because it is too large Load diff

View file

@ -10,11 +10,11 @@ var perfAPPRInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/dest-qnh", -1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (num(scratchpad) != nil and (scratchpad >= 28.06 and scratchpad <= 31.01) or (scratchpad >= 745 and scratchpad <= 1050)) {
# doesn't support accidental temp input yet
setprop("/FMGC/internal/dest-qnh", scratchpad);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -22,10 +22,10 @@ var perfAPPRInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/dest-temp", -999);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (num(scratchpad) != nil and scratchpad >= -99 and scratchpad < 99) {
setprop("/FMGC/internal/dest-temp", scratchpad);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -35,7 +35,7 @@ var perfAPPRInput = func(key, i) {
setprop("/FMGC/internal/dest-mag", -1);
setprop("/FMGC/internal/dest-wind", -1);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (tfs >= 3 and tfs <= 7 and find("/", scratchpad) != -1) {
var weather = split("/", scratchpad);
var mag = int(weather[0]);
@ -46,7 +46,7 @@ var perfAPPRInput = func(key, i) {
if (mag != nil and wind != nil and mag >= 0 and mag <= 360 and wind >= 0 and wind <= 200) {
setprop("/FMGC/internal/dest-mag", weather[0]);
setprop("/FMGC/internal/dest-wind", weather[1]);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
fmgc.updateARPT();
} else {
notAllowed(i);
@ -59,24 +59,33 @@ var perfAPPRInput = func(key, i) {
}
} else if (key == "L4") {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/trans-alt", 18000);
fmgc.FMGCInternal.transAlt = 18000;
fmgc.FMGCInternal.transAltSet = 0;
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
} else if (int(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 50000) {
setprop("/FMGC/internal/trans-alt", scratchpad);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
var tfs = size(scratchpad);
if (int(scratchpad) != nil and (tfs == 4 or tfs == 5) and scratchpad >= 1000 and scratchpad <= 39000) {
fmgc.FMGCInternal.transAlt = math.round(scratchpad, 500);
fmgc.FMGCInternal.transAltSet = 1;
mcdu.clearScratchpad(i);
} elsif (int(scratchpad) != nil and (tfs == 2 or tfs == 3) and scratchpad >= 10 and scratchpad <= 390) {
fmgc.FMGCInternal.transAlt = math.round(scratchpad * 100, 5);
fmgc.FMGCInternal.transAltSet = 1;
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
}
} else if (key == "L5") {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/vapp-speed-set", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (int(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 200) {
setprop("/FMGC/internal/vapp-speed-set", 1);
setprop("/FMGC/internal/computed-speeds/vapp_appr", scratchpad);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -86,13 +95,13 @@ var perfAPPRInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/baro", 99999);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (int(scratchpad) != nil and scratchpad >= getprop("/FMGC/internal/ldg-elev") and scratchpad <= 5000 + getprop("/FMGC/internal/ldg-elev")) {
if (getprop("/FMGC/internal/radio-no") == 0) {
setprop("/FMGC/internal/radio", 99999);
}
setprop("/FMGC/internal/baro", scratchpad);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -101,16 +110,16 @@ var perfAPPRInput = func(key, i) {
setprop("/FMGC/internal/radio", 99999);
setprop("/FMGC/internal/radio-no", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (scratchpad == "NO") {
setprop("/FMGC/internal/radio", 99999);
setprop("/FMGC/internal/radio-no", 1);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (int(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 700) {
setprop("/FMGC/internal/baro", 99999);
setprop("/FMGC/internal/radio-no", 0);
setprop("/FMGC/internal/radio", scratchpad);
setprop("/MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -9,7 +9,7 @@ var perfCLBInput = func(key, i) {
setprop("/FMGC/internal/cost-index", 0);
setprop("/FMGC/internal/cost-index-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var ci = int(scratchpad);
var cis = size(scratchpad);
@ -18,6 +18,7 @@ var perfCLBInput = func(key, i) {
setprop("/FMGC/internal/cost-index", ci);
setprop("/FMGC/internal/cost-index-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -9,7 +9,7 @@ var perfCRZInput = func(key, i) {
setprop("/FMGC/internal/cost-index", 0);
setprop("/FMGC/internal/cost-index-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var ci = int(scratchpad);
var cis = size(scratchpad);
@ -17,7 +17,7 @@ var perfCRZInput = func(key, i) {
if (ci != nil and ci >= 0 and ci <= 999) {
setprop("/FMGC/internal/cost-index", ci);
setprop("/FMGC/internal/cost-index-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -9,7 +9,7 @@ var perfDESInput = func(key, i) {
setprop("/FMGC/internal/cost-index", 0);
setprop("/FMGC/internal/cost-index-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var ci = int(scratchpad);
var cis = size(scratchpad);
@ -17,7 +17,7 @@ var perfDESInput = func(key, i) {
if (ci != nil and ci >= 0 and ci <= 999) {
setprop("/FMGC/internal/cost-index", ci);
setprop("/FMGC/internal/cost-index-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -10,7 +10,7 @@ var perfGAInput = func(key, i) {
setprop("/FMGC/internal/accel-agl-ft", "1500");
setprop("MCDUC/thracc-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs >= 7 and tfs <= 9 and find("/", scratchpad) != -1) {
@ -21,7 +21,7 @@ var perfGAInput = func(key, i) {
setprop("systems/thrust/clbreduc-ft", thracc[0]);
setprop("/FMGC/internal/accel-agl-ft", thracc[1]);
setprop("MCDUC/thracc-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -36,13 +36,13 @@ var perfGAInput = func(key, i) {
setprop("/FMGC/internal/eng-out-reduc", "1500");
setprop("MCDUC/reducacc-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (int(scratchpad) != nil and tfs >= 3 and tfs <= 5) {
setprop("/FMGC/internal/eng-out-reduc", scratchpad);
setprop("MCDUC/reducacc-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -11,14 +11,14 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/v1", 0);
setprop("/FMGC/internal/v1-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs == 3) {
if (int(scratchpad) != nil and scratchpad >= 100 and scratchpad <= 350) {
setprop("/FMGC/internal/v1", scratchpad);
setprop("/FMGC/internal/v1-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -35,7 +35,7 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/vr", 0);
setprop("/FMGC/internal/vr-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs == 3) {
@ -43,6 +43,7 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/vr", scratchpad);
setprop("/FMGC/internal/vr-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -60,7 +61,7 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/v2-set", 0);
setprop("it-autoflight/settings/togaspd", 157);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs == 3) {
@ -68,7 +69,7 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/v2", scratchpad);
setprop("/FMGC/internal/v2-set", 1);
setprop("it-autoflight/settings/togaspd", scratchpad);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -81,14 +82,16 @@ var perfTOInput = func(key, i) {
}
} else if (key == "L4") {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/trans-alt", 18000);
fmgc.FMGCInternal.transAlt = 18000;
fmgc.FMGCInternal.transAltSet = 0;
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (int(scratchpad) != nil and (tfs == 4 or tfs <= 5) and scratchpad >= 1000 and scratchpad <= 39000) {
setprop("/FMGC/internal/trans-alt", int(scratchpad / 10) * 10);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
fmgc.FMGCInternal.transAlt = int(scratchpad / 10) * 10;
fmgc.FMGCInternal.transAltSet = 1;
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -99,7 +102,7 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/accel-agl-ft", "1500");
setprop("MCDUC/thracc-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (find("/", scratchpad) != -1) {
@ -112,16 +115,16 @@ var perfTOInput = func(key, i) {
setprop("systems/thrust/clbreduc-ft", int(thrred / 10) * 10);
setprop("/FMGC/internal/accel-agl-ft", int(acc / 10) * 10);
setprop("MCDUC/thracc-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (thrreds == 0 and int(acc) != nil and (accs >= 3 and accs <= 5) and acc >= 400 and acc <= 39000) {
setprop("/FMGC/internal/accel-agl-ft", int(acc / 10) * 10);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
} else if (num(scratchpad) != nil and (tfs >= 3 and tfs <= 5) and scratchpad >= 400 and scratchpad <= 39000) {
setprop("systems/thrust/clbreduc-ft", int(scratchpad / 10) * 10);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -132,7 +135,7 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/to-ths", "0.0");
setprop("/FMGC/internal/flap-ths-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
if (find("/", scratchpad) != -1) {
var flapths = split("/", scratchpad);
@ -147,16 +150,16 @@ var perfTOInput = func(key, i) {
if (flaps == 0 and getprop("/FMGC/internal/flap-ths-set")) {
if (trims == 5 and find("DN", trim) != -1 and validtrima) {
setprop("/FMGC/internal/to-ths", -1 * trima);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (trims == 5 and find("DN", trim) != -1 and validtrimb) {
setprop("/FMGC/internal/to-ths", -1 * trimb);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (trims == 5 and find("UP", trim) != -1 and validtrima) {
setprop("/FMGC/internal/to-ths", trima);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (trims == 5 and find("UP", trim) != -1 and validtrimb) {
setprop("/FMGC/internal/to-ths", trimb);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -165,22 +168,22 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/to-flap", flap);
setprop("/FMGC/internal/to-ths", -1 * trima);
setprop("/FMGC/internal/flap-ths-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (trims == 5 and find("DN", trim) != -1 and validtrimb) {
setprop("/FMGC/internal/to-flap", flap);
setprop("/FMGC/internal/to-ths", -1 * trimb);
setprop("/FMGC/internal/flap-ths-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (trims == 5 and find("UP", trim) != -1 and validtrima) {
setprop("/FMGC/internal/to-flap", flap);
setprop("/FMGC/internal/to-ths", trima);
setprop("/FMGC/internal/flap-ths-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (trims == 5 and find("UP", trim) != -1 and validtrimb) {
setprop("/FMGC/internal/to-flap", flap);
setprop("/FMGC/internal/to-ths", trimb);
setprop("/FMGC/internal/flap-ths-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -192,7 +195,7 @@ var perfTOInput = func(key, i) {
if (!getprop("/FMGC/internal/flap-ths-set")) {
setprop("/FMGC/internal/flap-ths-set", 1);
}
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -202,7 +205,7 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/flex", 0);
setprop("/FMGC/internal/flex-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs == 1 or tfs == 2) {
@ -211,7 +214,7 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/flex-set", 1);
var flex_calc = getprop("/FMGC/internal/flex") - getprop("environment/temperature-degc");
setprop("/FMGC/internal/flex-cmd", flex_calc);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -224,13 +227,13 @@ var perfTOInput = func(key, i) {
setprop("/FMGC/internal/eng-out-reduc", "1500");
setprop("MCDUC/reducacc-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (int(scratchpad) != nil and (tfs == 4 or tfs == 5) and scratchpad >= 1000 and scratchpad <= 39000) {
setprop("/FMGC/internal/eng-out-reduc", scratchpad);
setprop("MCDUC/reducacc-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -12,12 +12,12 @@ var progCLBInput = func(key, i) {
setprop("/FMGC/internal/decel", 0);
}
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (int(scratchpad) != nil) {
var crzs = size(scratchpad);
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and altSet.getValue() <= scratchpad * 100) {
setprop("/FMGC/internal/cruise-fl-prog", scratchpad);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
if (getprop("/FMGC/status/phase") == 5) {
setprop("/FMGC/status/phase", 3);
setprop("/FMGC/internal/activate-once", 0);

View file

@ -12,12 +12,12 @@ var progCRZInput = func(key, i) {
setprop("/FMGC/internal/decel", 0);
}
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (int(scratchpad) != nil) {
var crzs = size(scratchpad);
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and altSet.getValue() <= scratchpad * 100) {
setprop("/FMGC/internal/cruise-fl-prog", scratchpad);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
if (getprop("/FMGC/status/phase") == 5) {
setprop("/FMGC/status/phase", 3);
setprop("/FMGC/internal/activate-once", 0);

View file

@ -12,12 +12,12 @@ var progDESInput = func(key, i) {
setprop("/FMGC/internal/decel", 0);
}
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (int(scratchpad) != nil) {
var crzs = size(scratchpad);
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and altSet.getValue() <= scratchpad * 100) {
setprop("/FMGC/internal/cruise-fl-prog", scratchpad);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
if (getprop("/FMGC/status/phase") == 4 or getprop("/FMGC/status/phase") == 5 or getprop("/FMGC/status/phase") == 6) {
setprop("/FMGC/status/phase", 3);
setprop("/FMGC/internal/activate-once", 0);

View file

@ -8,12 +8,12 @@ var progTOInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/cruise-fl-prog", getprop("/FMGC/internal/cruise-fl"));
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else if (int(scratchpad) != nil) {
var crzs = size(scratchpad);
if (crzs >= 1 and crzs <= 3 and scratchpad > 0 and scratchpad <= 430 and altSet.getValue() <= scratchpad * 100 and getprop("/FMGC/internal/cruise-lvl-set")) {
setprop("/FMGC/internal/cruise-fl-prog", scratchpad);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -8,7 +8,7 @@ var radnavInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/vor1freq-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs == 3 or tfs == 5 or tfs == 6) {
@ -21,12 +21,12 @@ var radnavInput = func(key, i) {
} else {
setprop("instrumentation/nav[2]/frequencies/selected-mhz", scratchpad);
setprop("/FMGC/internal/vor1freq-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
}
} else if (scratchpad >= 112.00 and scratchpad <= 117.95) {
setprop("instrumentation/nav[2]/frequencies/selected-mhz", scratchpad);
setprop("/FMGC/internal/vor1freq-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -38,14 +38,14 @@ var radnavInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/vor1crs-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs >= 1 and tfs <= 3) {
if (scratchpad >= 0 and scratchpad <= 360) {
setprop("instrumentation/nav[2]/radials/selected-deg", scratchpad);
setprop("/FMGC/internal/vor1crs-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -57,7 +57,7 @@ var radnavInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/ils1freq-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs == 3 or tfs == 5 or tfs == 6) {
@ -68,7 +68,7 @@ var radnavInput = func(key, i) {
or scratchpad == 111.10 or scratchpad == 111.15 or scratchpad == 111.30 or scratchpad == 111.35 or scratchpad == 111.50 or scratchpad == 111.55 or scratchpad == 111.70 or scratchpad == 111.75 or scratchpad == 111.90 or scratchpad == 111.95) {
setprop("instrumentation/nav[0]/frequencies/selected-mhz", scratchpad);
setprop("/FMGC/internal/ils1freq-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
if (num(getprop("/FMGC/internal/ils1freq-calculated")) != 0 and num(getprop("/FMGC/internal/ils1freq-calculated")) != num(getprop("instrumentation/nav[0]/frequencies/selected-mhz"))) {
genericMessage(i, "RWY/LS MISMATCH", "amb");
}
@ -86,14 +86,14 @@ var radnavInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/ils1crs-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs >= 1 and tfs <= 3) {
if (scratchpad >= 0 and scratchpad <= 360) {
setprop("instrumentation/nav[0]/radials/selected-deg", scratchpad);
setprop("/FMGC/internal/ils1crs-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -105,14 +105,14 @@ var radnavInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/adf1freq-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} 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);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -124,7 +124,7 @@ var radnavInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/vor2freq-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs == 3 or tfs == 5 or tfs == 6) {
@ -137,12 +137,12 @@ var radnavInput = func(key, i) {
} else {
setprop("instrumentation/nav[3]/frequencies/selected-mhz", scratchpad);
setprop("/FMGC/internal/vor2freq-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
}
} else if (scratchpad >= 112.00 and scratchpad <= 117.95) {
setprop("instrumentation/nav[3]/frequencies/selected-mhz", scratchpad);
setprop("/FMGC/internal/vor2freq-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -154,14 +154,14 @@ var radnavInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/vor2crs-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
var tfs = size(scratchpad);
if (tfs >= 1 and tfs <= 3) {
if (scratchpad >= 0 and scratchpad <= 360) {
setprop("instrumentation/nav[3]/radials/selected-deg", scratchpad);
setprop("/FMGC/internal/vor2crs-set", 1);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}
@ -173,14 +173,14 @@ var radnavInput = func(key, i) {
if (scratchpad == "CLR") {
setprop("/FMGC/internal/adf2freq-set", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} 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);
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
mcdu.clearScratchpad(i);
} else {
notAllowed(i);
}

View file

@ -8,14 +8,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/start/A320_cockpit_starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>20</y>
@ -28,14 +29,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/start/A320_cockpit_starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>-20</y>
@ -48,14 +50,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/start/A320_cockpit_startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>20</y>
@ -68,14 +71,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/start/A320_cockpit_startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>-20</y>
@ -492,21 +496,23 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
<z>0</z>
<inner-angle>225</inner-angle>
<outer-angle>135</outer-angle>
<outer-gain>0.01</outer-gain>
<outer-gain>0.60</outer-gain>
</orientation>
<reference-dist>30</reference-dist>
<position>
@ -521,21 +527,23 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
<z>0</z>
<inner-angle>225</inner-angle>
<outer-angle>135</outer-angle>
<outer-gain>0.01</outer-gain>
<outer-gain>0.60</outer-gain>
</orientation>
<reference-dist>30</reference-dist>
<position>
@ -550,14 +558,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
@ -579,14 +589,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
@ -608,14 +620,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-startup-rear.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>1</x>
<y>0</y>
@ -637,14 +651,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-startup-rear.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>1</x>
<y>0</y>

View file

@ -8,14 +8,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/start/A320_cockpit_starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>20</y>
@ -28,14 +29,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/start/A320_cockpit_starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>-20</y>
@ -48,14 +50,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/start/A320_cockpit_startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>20</y>
@ -68,14 +71,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/start/A320_cockpit_startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>-20</y>
@ -448,21 +452,23 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
<z>0</z>
<inner-angle>225</inner-angle>
<outer-angle>135</outer-angle>
<outer-gain>0.01</outer-gain>
<outer-gain>0.60</outer-gain>
</orientation>
<reference-dist>30</reference-dist>
<position>
@ -477,21 +483,23 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
<z>0</z>
<inner-angle>225</inner-angle>
<outer-angle>135</outer-angle>
<outer-gain>0.01</outer-gain>
<outer-gain>0.60</outer-gain>
</orientation>
<reference-dist>30</reference-dist>
<position>
@ -506,14 +514,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
@ -535,14 +545,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
@ -564,14 +576,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-startup-rear.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>1</x>
<y>0</y>
@ -593,14 +607,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/CFM56B/external/cfm-startup-rear.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>1</x>
<y>0</y>

View file

@ -8,14 +8,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/start/v2500-start1.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>20</y>
@ -28,14 +29,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/start/v2500-start1.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>-20</y>
@ -48,14 +50,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/start/v2500-start2.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>20</y>
@ -68,14 +71,15 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/start/v2500-start2.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
<property>/sim/sound/internal-custom</property>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>1</factor>
</volume>
<position>
<x>0</x>
<y>-20</y>
@ -309,21 +313,23 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
<z>0</z>
<inner-angle>225</inner-angle>
<outer-angle>135</outer-angle>
<outer-gain>0.01</outer-gain>
<outer-gain>0.60</outer-gain>
</orientation>
<reference-dist>30</reference-dist>
<position>
@ -338,21 +344,23 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-starter.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>1</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
<z>0</z>
<inner-angle>225</inner-angle>
<outer-angle>135</outer-angle>
<outer-gain>0.01</outer-gain>
<outer-gain>0.60</outer-gain>
</orientation>
<reference-dist>30</reference-dist>
<position>
@ -367,14 +375,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
@ -396,14 +406,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-startup.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>-1</x>
<y>0</y>
@ -425,14 +437,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-startup-rear.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[0]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>1</x>
<y>0</y>
@ -454,14 +468,16 @@
<mode>once</mode>
<path>Aircraft/A320-family/Sounds/SASA/V2500/external/v2500-startup-rear.wav</path>
<condition>
<and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
<not><property>/sim/sound/internal-custom</property></not>
</and>
<equals>
<property>/engines/engine[1]/state</property>
<value>2</value>
</equals>
</condition>
<volume>
<property>/sim/sound/internal-custom</property>
<factor>-1</factor>
<offset>1</offset>
</volume>
<orientation>
<x>1</x>
<y>0</y>

View file

@ -748,15 +748,10 @@
/systems/hydraulic/yellow-psi ge 1500
/sim/model/autopush/connected eq 0
/controls/gear/nws-switch eq 1
/engines/engine[0]/state eq 3
</test>
<test logic="AND" value="1">
position/wow eq 1
hydraulics/tiller/elec-pwr eq 1
/systems/hydraulic/yellow-psi ge 1500
/sim/model/autopush/connected eq 0
/controls/gear/nws-switch eq 1
/engines/engine[1]/state eq 3
<test logic="OR">
/engines/engine[0]/state eq 3
/engines/engine[1]/state eq 3
</test>
</test>
</switch>
@ -789,11 +784,13 @@
<switch name="fcs/steer-rate">
<default value="0"/>
<test logic="OR" value="12">
hydraulics/tiller/hyd-pwr eq 1
<test logic="OR" value="75">
/sim/model/autopush/connected eq 1
/systems/acconfig/autoconfig-running eq 1
</test>
<test logic="OR" value="12">
hydraulics/tiller/hyd-pwr eq 1
</test>
</switch>
<actuator name="fcs/steer-deg">

View file

@ -247,11 +247,11 @@
<tcas>
<name>tcas</name>
<number>0</number>
<!--<vertical-range-ft>9900</vertical-range-ft>
<vertical-range-ft>9900</vertical-range-ft>
<lateral-range-nm>30</lateral-range-nm>
<intruder-use-own-alt>1</intruder-use-own-alt>
<intruder-inhibit-alt-ft>380</intruder-inhibit-alt-ft>
<intruder-minimum-own-alt-ft>1700</intruder-minimum-own-alt-ft> uncomment for 2019.3 -->
<intruder-minimum-own-alt-ft>1700</intruder-minimum-own-alt-ft>
</tcas>
<radar>

View file

@ -508,6 +508,16 @@
<legend>AIR</legend>
<pref-height>25</pref-height>
<pref-width>40</pref-width>
<binding>
<command>nasal</command>
<script>mcdu.pagebutton("airport", 0);</script>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/ac-1</property>
<value>110</value>
</greater-than-equals>
</condition>
</binding>
</button>
<button>

View file

@ -508,6 +508,23 @@
<legend>AIR</legend>
<pref-height>25</pref-height>
<pref-width>40</pref-width>
<button>
<row>0</row>
<col>0</col>
<legend>AIR</legend>
<pref-height>25</pref-height>
<pref-width>40</pref-width>
<binding>
<command>nasal</command>
<script>mcdu.pagebutton("airport", 1);</script>
<condition>
<greater-than-equals>
<property>systems/electrical/bus/ac-2</property>
<value>110</value>
</greater-than-equals>
</condition>
</binding>
</button>
</button>
<button>