Merge branch 'dev' into pressurization
|
@ -4879,7 +4879,6 @@
|
|||
<file>Aircraft/A320-family/Nasal/MCDU/PERFTO.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/RADNAV.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/DATA.nas</file>
|
||||
<file>Aircraft/A320-family/Nasal/MCDU/STATUS.nas</file>
|
||||
</mcdu>
|
||||
<!-- Traffic layer from E-jet -->
|
||||
<traffic>
|
||||
|
|
|
@ -34,39 +34,44 @@
|
|||
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>The Aircraft Config has detected that rendering settings are not set properly!</label>
|
||||
<label>Your rendering settings will not allow all graphical features of the aircraft to be visible!</label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>This means lighting effects on the exterior and in the virtual cockpit will not be visible.</label>
|
||||
<label>This means certain lighting effects will not be usable, including cockpit floodlights. </label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>ALS, and custom shader settings must be on.</label>
|
||||
<label>For the best experience:</label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>Landmass shader must be at least 4 for lightspots to work.</label>
|
||||
<label>* Atmospheric Light Scattering should be enabled</label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>Model shader must be at least 2 for lightmaps to work.</label>
|
||||
<label>* Landmass shader should be at least 4 for external lights to illuminate the ground</label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>* Model shader should be at least 2 for lighting to illuminate the aircraft model</label>
|
||||
</text>
|
||||
|
||||
<hrule/>
|
||||
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>Would you like the Aircraft Config to automatically turn on ALS and fix shader settings?</label>
|
||||
<label>Would you like Aircraft Config to automatically set these minimum basic settings?</label>
|
||||
</text>
|
||||
|
||||
<text>
|
||||
<halign>left</halign>
|
||||
<label>If the settings do not save after fixing, try quitting FlightGear through File -> Exit after fixing.</label>
|
||||
<label>To save these settings, make sure to quit FlightGear with File -> Exit after your flight is complete.</label>
|
||||
</text>
|
||||
|
||||
</group>
|
||||
|
@ -105,8 +110,8 @@
|
|||
|
||||
<button>
|
||||
<halign>center</halign>
|
||||
<legend>Yes, fix all settings</legend>
|
||||
<pref-width>180</pref-width>
|
||||
<legend>Apply minimum settings</legend>
|
||||
<pref-width>200</pref-width>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
|
@ -120,8 +125,8 @@
|
|||
|
||||
<button>
|
||||
<halign>center</halign>
|
||||
<legend>Yes, but I'll fix shaders myself</legend>
|
||||
<pref-width>180</pref-width>
|
||||
<legend>Advanced: View Shader Settings</legend>
|
||||
<pref-width>200</pref-width>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
|
@ -143,8 +148,8 @@
|
|||
|
||||
<button>
|
||||
<halign>center</halign>
|
||||
<legend>I don't care</legend>
|
||||
<pref-width>180</pref-width>
|
||||
<legend>Ignore</legend>
|
||||
<pref-width>150</pref-width>
|
||||
<binding>
|
||||
<command>dialog-close</command>
|
||||
</binding>
|
||||
|
|
|
@ -1521,11 +1521,12 @@
|
|||
<!-- Cocktpit Door Switch -->
|
||||
|
||||
<animation>
|
||||
<type>slider</type>
|
||||
<type>knob</type>
|
||||
<object-name>CockpitDoorSwitch</object-name>
|
||||
<object-name>CockpitDoorSwitch.mark</object-name>
|
||||
<property>controls/doors/doorc-switch</property>
|
||||
<drag-direction>vertical</drag-direction>
|
||||
<drag-scale-px>14</drag-scale-px>
|
||||
<action>
|
||||
<binding>
|
||||
<command>property-adjust</command>
|
||||
|
@ -4705,6 +4706,8 @@
|
|||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
|
||||
<not><property>FMGC/FCU-working</property></not>
|
||||
<equals>
|
||||
<property>it-autoflight/input/kts-mach</property>
|
||||
<value>1</value>
|
||||
|
@ -4730,6 +4733,7 @@
|
|||
<property>it-autoflight/input/spd-managed</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
<property>FMGC/FCU-working</property>
|
||||
</and>
|
||||
</condition>
|
||||
</animation>
|
||||
|
@ -4751,6 +4755,7 @@
|
|||
<property>it-autoflight/input/spd-managed</property>
|
||||
<value>0</value>
|
||||
</equals>
|
||||
<property>FMGC/FCU-working</property>
|
||||
</and>
|
||||
</condition>
|
||||
</animation>
|
||||
|
@ -4793,6 +4798,7 @@
|
|||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<not><property>FMGC/FCU-working</property></not>
|
||||
<equals>
|
||||
<property>it-autoflight/custom/trk-fpa</property>
|
||||
<value>0</value>
|
||||
|
@ -4811,6 +4817,7 @@
|
|||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<not><property>FMGC/FCU-working</property></not>
|
||||
<equals>
|
||||
<property>it-autoflight/custom/trk-fpa</property>
|
||||
<value>1</value>
|
||||
|
@ -4832,6 +4839,7 @@
|
|||
<property>it-autoflight/custom/show-hdg</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<property>FMGC/FCU-working</property>
|
||||
</and>
|
||||
</condition>
|
||||
</animation>
|
||||
|
@ -4878,10 +4886,13 @@
|
|||
<type>select</type>
|
||||
<object-name>alt-text</object-name>
|
||||
<condition>
|
||||
<not-equals>
|
||||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</not-equals>
|
||||
<and>
|
||||
<property>FMGC/FCU-working</property>
|
||||
<not-equals>
|
||||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</not-equals>
|
||||
</and>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
|
@ -4930,6 +4941,7 @@
|
|||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<not><property>FMGC/FCU-working</property></not>
|
||||
<equals>
|
||||
<property>it-autoflight/custom/trk-fpa</property>
|
||||
<value>1</value>
|
||||
|
@ -4952,6 +4964,7 @@
|
|||
<property>it-autoflight/output/vert</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<property>FMGC/FCU-working</property>
|
||||
</and>
|
||||
</condition>
|
||||
</animation>
|
||||
|
@ -4969,6 +4982,7 @@
|
|||
<property>it-autoflight/output/vert</property>
|
||||
<value>5</value>
|
||||
</equals>
|
||||
<property>FMGC/FCU-working</property>
|
||||
</and>
|
||||
</condition>
|
||||
</animation>
|
||||
|
@ -4990,6 +5004,7 @@
|
|||
<property>it-autoflight/output/vert</property>
|
||||
<value>5</value>
|
||||
</not-equals>
|
||||
<property>FMGC/FCU-working</property>
|
||||
</and>
|
||||
</condition>
|
||||
</animation>
|
||||
|
|
|
@ -49,52 +49,41 @@ var canvas_IESI = {
|
|||
obj.AI_horizon_trans = obj["AI_horizon"].createTransform();
|
||||
obj.AI_horizon_rot = obj["AI_horizon"].createTransform();
|
||||
|
||||
obj._aiCenter = obj["AI_center"].getCenter();
|
||||
obj._cachedInhg = nil;
|
||||
obj._excessMotion = 0;
|
||||
obj._fast = 0;
|
||||
obj._cachedMode = nil;
|
||||
obj._canReset = 0;
|
||||
obj._excessMotionInInit = 0;
|
||||
obj._fastInit = 0;
|
||||
obj._IESITime = 0;
|
||||
obj._showIESI = 0;
|
||||
obj.ASI = 0;
|
||||
obj.canReset = 0;
|
||||
obj.isNegativeAlt = 0;
|
||||
obj.middleAltOffset = nil;
|
||||
obj._isNegativeAlt = 0;
|
||||
obj._middleAltOffset = nil;
|
||||
obj._powerResult = 0;
|
||||
obj._roll = 0;
|
||||
|
||||
obj.update_items = [
|
||||
props.UpdateManager.FromHashValue("airspeed", nil, func(val) {
|
||||
# Subtract 30, since the scale starts at 30, but don't allow less than 0, or more than 520 knots
|
||||
if (val <= 30) {
|
||||
obj.ASI = 0;
|
||||
} else if (val >= 520) {
|
||||
obj.ASI = 490;
|
||||
} else {
|
||||
obj.ASI = val - 30;
|
||||
}
|
||||
obj["ASI_scale"].setTranslation(0, obj.ASI * 8.295);
|
||||
obj["ASI_scale"].setTranslation(0, math.clamp(val - 30, 0, 490) * 8.295);
|
||||
}),
|
||||
props.UpdateManager.FromHashList(["altitude","altitude_ind"], nil, func(val) {
|
||||
if (val.altitude > 50000) {
|
||||
val.altitude = 50000;
|
||||
} elsif (val.altitude < -2000) {
|
||||
val.altitude = -2000;
|
||||
}
|
||||
|
||||
val.altitude = math.clamp(val.altitude, -2000, 50000);
|
||||
if (val.altitude < 0) {
|
||||
obj["negText"].show();
|
||||
obj.isNegativeAlt = 1;
|
||||
obj._isNegativeAlt = 1;
|
||||
} else {
|
||||
obj["negText"].hide();
|
||||
obj.isNegativeAlt = 0;
|
||||
obj._isNegativeAlt = 0;
|
||||
}
|
||||
|
||||
obj.altOffset = (val.altitude / 500) - int(val.altitude / 500);
|
||||
obj.middleAltText = roundaboutAlt(val.altitude / 100);
|
||||
if (obj.altOffset > 0.5) {
|
||||
obj.middleAltOffset = -(obj.altOffset - 1) * 258.5528;
|
||||
obj._middleAltOffset = -(obj.altOffset - 1) * 258.5528;
|
||||
} else {
|
||||
obj.middleAltOffset = -obj.altOffset * 258.5528;
|
||||
obj._middleAltOffset = -obj.altOffset * 258.5528;
|
||||
}
|
||||
|
||||
obj["ALT_scale"].setTranslation(0, -obj.middleAltOffset);
|
||||
obj["ALT_scale"].setTranslation(0, -obj._middleAltOffset);
|
||||
obj["ALT_scale"].update();
|
||||
obj["ALT_five"].setText(sprintf("%03d", abs(obj.middleAltText+10)));
|
||||
obj["ALT_four"].setText(sprintf("%03d", abs(obj.middleAltText+5)));
|
||||
|
@ -114,20 +103,16 @@ var canvas_IESI = {
|
|||
obj.altTens = num(right(sprintf("%02d", val.altitude), 2));
|
||||
obj["ALT_tens"].setTranslation(0, obj.altTens * 3.16);
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("mach", nil, func(val) {
|
||||
if (val >= 0.5) {
|
||||
obj._machWasAbove50 = 1;
|
||||
obj["ASI_mach_decimal"].show();
|
||||
obj["ASI_mach"].show();
|
||||
} elsif (val >= 0.45 and obj._machWasAbove50) {
|
||||
props.UpdateManager.FromHashValue("showMach", nil, func(val) {
|
||||
if (val) {
|
||||
obj["ASI_mach_decimal"].show();
|
||||
obj["ASI_mach"].show();
|
||||
} else {
|
||||
obj._machWasAbove50 = 0;
|
||||
obj["ASI_mach_decimal"].hide();
|
||||
obj["ASI_mach"].hide();
|
||||
}
|
||||
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("mach", nil, func(val) {
|
||||
if (val >= 0.999) {
|
||||
obj["ASI_mach"].setText("99");
|
||||
} else {
|
||||
|
@ -138,8 +123,9 @@ var canvas_IESI = {
|
|||
obj.AI_horizon_trans.setTranslation(0, val * 16.74);
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("roll", nil, func(val) {
|
||||
obj.AI_horizon_rot.setRotation(-val * D2R, obj["AI_center"].getCenter());
|
||||
obj["AI_bank"].setRotation(-val * D2R);
|
||||
obj._roll = -val * D2R;
|
||||
obj.AI_horizon_rot.setRotation(obj._roll, obj._aiCenter);
|
||||
obj["AI_bank"].setRotation(obj._roll);
|
||||
}),
|
||||
props.UpdateManager.FromHashValue("skid", nil, func(val) {
|
||||
if (abs(val) >= 84.99) {
|
||||
|
@ -149,32 +135,29 @@ var canvas_IESI = {
|
|||
obj["AI_slipskid"].show();
|
||||
}
|
||||
}),
|
||||
props.UpdateManager.FromHashList(["altimeter_mode","qnh_hpa","qnh_inhg"], nil, func(val) {
|
||||
obj.updateQNH(val);
|
||||
}),
|
||||
];
|
||||
return obj;
|
||||
},
|
||||
getKeys: func() {
|
||||
return ["IESI","IESI_Init","attRst","attRstRect","att90s","ATTflag","ATTflag_rect","ATTflag_text","ALTwarn","SPDwarn","ASI_scale","ASI_mach","ASI_mach_decimal","AI_center","AI_index","AI_horizon","AI_sky_bank","AI_bank","AI_bank_center","AI_slipskid","ALT_scale","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_meters","QNH_setting","QNH_std","negText","negText2","AI_bank_scale","metricM","metricBox"];
|
||||
},
|
||||
alignFault: props.globals.getNode("/systems/navigation/align-fault"),
|
||||
update: func(notification) {
|
||||
if (notification.qnh_inhg != me._cachedInhg) {
|
||||
me._powerResult = me.updatePower(notification);
|
||||
if (me._powerResult == 0) { return; }
|
||||
|
||||
if (notification.qnh_inhg != me._cachedInhg or notification.altimeter_mode != me._cachedMode) {
|
||||
me._cachedInhg = notification.qnh_inhg;
|
||||
me._cachedMode = notification.altimeter_mode;
|
||||
me.updateQNH(notification);
|
||||
}
|
||||
|
||||
me.updatePower(notification);
|
||||
if (me.group.getVisible() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (me._IESITime + 90 >= notification.elapsedTime) {
|
||||
if (notification.groundspeed > 2) {
|
||||
me._excessMotion = 1;
|
||||
if (!me._fastInit and me.alignFault.getBoolValue()) {
|
||||
me._excessMotionInInit = 1;
|
||||
}
|
||||
|
||||
if (me._fast) {
|
||||
if (me._fastInit) {
|
||||
me["IESI"].show();
|
||||
me["IESI_Init"].hide();
|
||||
me["AI_bank"].hide();
|
||||
|
@ -195,15 +178,15 @@ var canvas_IESI = {
|
|||
me["IESI"].hide();
|
||||
me["IESI_Init"].show();
|
||||
me["ATTflag"].hide();
|
||||
return;
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
if (pinPrograms.metricAltitude) {
|
||||
me["ALT_meters"].show();
|
||||
me["metricM"].show();
|
||||
me["metricBox"].show();
|
||||
|
||||
if (me.isNegativeAlt) {
|
||||
if (me._isNegativeAlt) {
|
||||
me["negText2"].show();
|
||||
} else {
|
||||
me["negText2"].hide();
|
||||
|
@ -215,7 +198,7 @@ var canvas_IESI = {
|
|||
me["negText2"].hide();
|
||||
}
|
||||
|
||||
if (!me._excessMotion) {
|
||||
if (!me._excessMotionInInit) {
|
||||
me["IESI_Init"].hide();
|
||||
me["IESI"].show();
|
||||
me["AI_bank"].show();
|
||||
|
@ -260,57 +243,41 @@ var canvas_IESI = {
|
|||
} else {
|
||||
me["QNH_setting"].setText(sprintf("%4.0f", notification.qnh_hpa));
|
||||
}
|
||||
me["QNH_setting"].show();
|
||||
me["QNH_std"].hide();
|
||||
me["QNH_setting"].show();
|
||||
}
|
||||
},
|
||||
_transientVar: 0,
|
||||
updatePower: func(notification) {
|
||||
# todo 20W power consumption
|
||||
if (notification.attReset == 1 and me.canReset) {
|
||||
me.canReset = 0;
|
||||
me._excessMotion = 0;
|
||||
me._fast = 1;
|
||||
if (notification.attReset == 1 and me._canReset) {
|
||||
me._canReset = 0;
|
||||
me._excessMotionInInit = 0;
|
||||
me._fastInit = 1;
|
||||
iesi_init.setBoolValue(0);
|
||||
} else if (me._IESITime + 90 < notification.elapsedTime and notification.iesiInit and !me.canReset) {
|
||||
me.canReset = 1;
|
||||
} else if (me._IESITime + 90 < notification.elapsedTime and notification.iesiInit and !me._canReset) {
|
||||
me._canReset = 1;
|
||||
}
|
||||
|
||||
if (notification.dcEss >= 25 or (notification.relay7XB and notification.dcHot1703 >= 25)) {
|
||||
me._showIESI = 1;
|
||||
if (notification.iesiPowered) {
|
||||
if (notification.acconfig != 1 and notification.iesiInit != 1) {
|
||||
iesi_init.setBoolValue(1);
|
||||
if (me._fast) {
|
||||
me._IESITime = notification.elapsedTime - 80;
|
||||
} else {
|
||||
me._IESITime = notification.elapsedTime;
|
||||
}
|
||||
me._IESITime = notification.elapsedTime - (me._fastInit ? 80 : 0);
|
||||
} else if (notification.acconfig == 1 and notification.iesiInit != 1) {
|
||||
iesi_init.setBoolValue(1);
|
||||
me._IESITime = notification.elapsedTime - 87;
|
||||
}
|
||||
} elsif (notification.iesiInit) {
|
||||
if (!me._transientVar) {
|
||||
me._transientVar = 1;
|
||||
settimer(func() {
|
||||
if (systems.ELEC.Bus.dcEss.getValue() >= 25 or (systems.ELEC.Bus.dcHot1703.getValue() >= 25 and systems.ELEC.Relay.relay7XB.getValue())) {
|
||||
me._transientVar = 0;
|
||||
} else {
|
||||
me.canReset = 0;
|
||||
me._excessMotion = 0;
|
||||
me._fast = 0;
|
||||
me._showIESI = 0;
|
||||
me._transientVar = 0;
|
||||
iesi_init.setBoolValue(0);
|
||||
}
|
||||
}, 0.2); # 200ms delay power transients
|
||||
}
|
||||
me._canReset = 0;
|
||||
me._excessMotionInInit = 0;
|
||||
me._fastInit = 0;
|
||||
iesi_init.setBoolValue(0);
|
||||
}
|
||||
|
||||
if (me._showIESI and notification.iesiBrt > 0.01) {
|
||||
if (notification.iesiPowered and notification.iesiBrt > 0.01) {
|
||||
me.group.setVisible(1);
|
||||
return 1;
|
||||
} else {
|
||||
me.group.setVisible(0);
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
@ -352,13 +319,14 @@ var input = {
|
|||
"attReset": "/instrumentation/iesi/att-reset",
|
||||
"iesiBrt": "/controls/lighting/DU/iesi",
|
||||
"iesiInit": "/instrumentation/iesi/iesi-init",
|
||||
"iesiPowered": "/instrumentation/iesi/power/power-on",
|
||||
"mach": "/instrumentation/airspeed-indicator/indicated-mach",
|
||||
"pitch": "/instrumentation/iesi/pitch-deg",
|
||||
"qnh_hpa": "/instrumentation/altimeter[6]/setting-hpa",
|
||||
"qnh_inhg": "/instrumentation/altimeter[6]/setting-inhg",
|
||||
"roll": "/orientation/roll-deg",
|
||||
"skid": "/instrumentation/iesi/slip-skid",
|
||||
"relay7XB": "/systems/electrical/sources/si-1/inverter-control/relay-7xb",
|
||||
"showMach": "/instrumentation/iesi/display/show-mach",
|
||||
};
|
||||
|
||||
foreach (var name; keys(input)) {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
viewBox="0 0 1024 1024"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
sodipodi:docname="iesi.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
|
@ -38,16 +38,16 @@
|
|||
inkscape:pageopacity="1"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="986"
|
||||
inkscape:window-height="974"
|
||||
id="namedview371"
|
||||
showgrid="true"
|
||||
inkscape:zoom="0.93517029"
|
||||
inkscape:cx="815.35952"
|
||||
inkscape:cy="762.42799"
|
||||
inkscape:zoom="0.66126526"
|
||||
inkscape:cx="369.74572"
|
||||
inkscape:cy="772.76099"
|
||||
inkscape:window-x="-11"
|
||||
inkscape:window-y="-11"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="ATTflag"
|
||||
inkscape:current-layer="MsgBox"
|
||||
showguides="true"
|
||||
inkscape:snap-global="false"
|
||||
units="pt"
|
||||
|
@ -72,11 +72,11 @@
|
|||
inkscape:label="MsgBox">
|
||||
<rect
|
||||
y="720.3349"
|
||||
x="304.32764"
|
||||
x="260.241"
|
||||
height="91.330338"
|
||||
width="406.27161"
|
||||
width="490.202"
|
||||
id="rect4448"
|
||||
style="fill:#c9d121;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.17302;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||
style="fill:#c9d121;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.48539;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||
<text
|
||||
inkscape:label="#text979"
|
||||
transform="scale(1.0000144,0.9999856)"
|
||||
|
@ -142,11 +142,11 @@
|
|||
<g
|
||||
id="ATTwarn">
|
||||
<rect
|
||||
style="fill:#c9d121;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
style="fill:#c9d121;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.23675;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="rect4484"
|
||||
width="243.81277"
|
||||
width="283.81299"
|
||||
height="91.330353"
|
||||
x="390.0936"
|
||||
x="360.09399"
|
||||
y="287.07605" />
|
||||
<text
|
||||
id="text4486"
|
||||
|
@ -164,14 +164,15 @@
|
|||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="ATTflag">
|
||||
id="ATTflag"
|
||||
style="display:inline">
|
||||
<rect
|
||||
y="720.3349"
|
||||
x="304.32764"
|
||||
x="260.241"
|
||||
height="91.330338"
|
||||
width="406.27161"
|
||||
width="490.202"
|
||||
id="attRstRect"
|
||||
style="fill:#c9d121;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.17302;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||
style="fill:#c9d121;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.48538;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" />
|
||||
<text
|
||||
inkscape:label="#text979"
|
||||
transform="scale(1.0000144,0.9999856)"
|
||||
|
@ -186,12 +187,12 @@
|
|||
y="796.4032"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:86px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke-width:0.75">ATT : RST</tspan></text>
|
||||
<rect
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:3.21458;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="ATTflag_rect"
|
||||
width="243.81277"
|
||||
height="91.330353"
|
||||
x="390.0936"
|
||||
y="287.07605" />
|
||||
width="280.59842"
|
||||
height="91.115768"
|
||||
x="361.70129"
|
||||
y="287.18335" />
|
||||
<text
|
||||
id="ATTflag_text"
|
||||
y="363.13785"
|
||||
|
@ -212,7 +213,8 @@
|
|||
inkscape:label="IESI">
|
||||
<g
|
||||
id="AI_horizon"
|
||||
inkscape:label="#g4573">
|
||||
inkscape:label="#g4573"
|
||||
style="display:inline">
|
||||
<g
|
||||
transform="translate(824.0447,-40.79798)"
|
||||
inkscape:label="#g4312"
|
||||
|
@ -618,7 +620,7 @@
|
|||
</g>
|
||||
</g>
|
||||
<rect
|
||||
style="opacity:1;fill:#1fa7f8;fill-opacity:1;stroke:none;stroke-width:2.58922;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
style="display:inline;opacity:1;fill:#1fa7f8;fill-opacity:1;stroke:none;stroke-width:2.58922;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||
id="AI_sky_bank"
|
||||
width="663.18652"
|
||||
height="124.96"
|
||||
|
@ -626,7 +628,7 @@
|
|||
y="138.78481"
|
||||
inkscape:label="#rect5809" />
|
||||
<rect
|
||||
style="opacity:0.5;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:10.0653;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
|
||||
style="display:inline;opacity:0.5;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:10.0653;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
|
||||
id="AI_bank_scale_clip"
|
||||
width="663.21997"
|
||||
height="229.7616"
|
||||
|
@ -634,7 +636,7 @@
|
|||
y="138.67441"
|
||||
inkscape:label="#rect1094" />
|
||||
<rect
|
||||
style="opacity:0.46;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:1.27697;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
style="display:inline;opacity:0.46;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:1.27697;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="AI_horizon_clip"
|
||||
width="663.21997"
|
||||
height="608.67889"
|
||||
|
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
|
@ -637,11 +637,9 @@ canvas.NavDisplay.update = func() # FIXME: This stuff is still too aircraft spec
|
|||
me.symbols.dmeRDist.setText("");
|
||||
}
|
||||
|
||||
# Hide heading bug 10 secs after change
|
||||
var vhdg_bug = getprop("/it-autoflight/input/hdg") or 0;
|
||||
var hdg_bug_active = getprop("/it-autoflight/custom/show-hdg");
|
||||
if (hdg_bug_active == nil)
|
||||
hdg_bug_active = 1;
|
||||
# Hide heading bug 45 secs after change
|
||||
var vhdg_bug = fmgc.Input.hdg.getValue();
|
||||
var hdg_bug_active = fmgc.Custom.showHdg.getBoolValue();
|
||||
|
||||
if((me.in_mode("toggle_display_mode", ["MAP"]) and me.get_switch("toggle_display_type") == "CRT")
|
||||
or (me.get_switch("toggle_track_heading") and me.get_switch("toggle_display_type") == "LCD"))
|
||||
|
|
|
@ -79,6 +79,15 @@ var init = func {
|
|||
}
|
||||
|
||||
var draw = func{
|
||||
if (me.model.wp.hidden == 1 or me.model.name == "(DECEL)" or me.model.name == "(T/C)" or me.model.name == "(T/D)" or me.model.name == "(LIM)") {
|
||||
me.wp_sym.hide();
|
||||
me.text_wps.hide();
|
||||
if (me.text_alt != nil) {
|
||||
me.text_alt.hide();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
var wp_group = me.element;
|
||||
var alt = me.model.alt;
|
||||
var i = me.model.idx;
|
||||
|
|
|
@ -60,7 +60,7 @@ canvas.NDStyles["Airbus"] = {
|
|||
lat_ctrl: "/it-autoflight/output/lat",
|
||||
managed_val: 1,
|
||||
ver_ctrl: "/it-autoflight/output/vert",
|
||||
spd_ctrl: "/flight-management/control/spd-ctrl",
|
||||
spd_ctrl: "/it-autoflight/input/spd-managed",
|
||||
current_wp: "/FMGC/flightplan[2]/current-wp",
|
||||
ap1: "/it-autoflight/output/ap1",
|
||||
ap2: "/it-autoflight/output/ap2",
|
||||
|
@ -595,18 +595,18 @@ canvas.NDStyles["Airbus"] = {
|
|||
isMapStructure: 1,
|
||||
update_on: ["toggle_display_mode","toggle_range"],
|
||||
predicate: func(nd, layer) {
|
||||
var visible = nd.in_mode("toggle_display_mode", ["MAP", "PLAN"]) and (nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting));
|
||||
var visible = nd.in_mode("toggle_display_mode", ["MAP", "PLAN"]) and (nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting)) and getprop("/instrumentation/nd/symbols/decel/show");
|
||||
layer.group.setVisible( visible );
|
||||
if (visible) {
|
||||
layer.update();
|
||||
}
|
||||
},
|
||||
options: {
|
||||
# Overridable options:
|
||||
# decel_node: node containing latitude-deg and longitude-deg used to mark the deceleration point
|
||||
# managed_speed_node: boolean property indicating that the aircraft is flying in managed speed mode
|
||||
decel_node: "/instrumentation/nd/symbols/decel",
|
||||
listen: [
|
||||
"fplan_active",
|
||||
"current_wp",
|
||||
"wp_count",
|
||||
"spd_ctrl",
|
||||
"ver_ctrl",
|
||||
"athr"
|
||||
|
@ -746,14 +746,15 @@ canvas.NDStyles["Airbus"] = {
|
|||
},
|
||||
},
|
||||
{
|
||||
id: "taOnly", # the SVG ID
|
||||
impl: { # implementation hash
|
||||
init: func(nd, symbol), # for updateCenter stuff, called during initialization in the ctor
|
||||
predicate: func(nd) getprop("/instrumentation/tcas/inputs/mode") == 2, # the condition
|
||||
is_true: func(nd) nd.symbols.taOnly.show(), # if true, run this
|
||||
is_false: func(nd) nd.symbols.taOnly.hide(), # if false, run this
|
||||
}, # end of taOnly behavior/callbacks
|
||||
}, # end of taOnly
|
||||
# TODO: taOnly doesn"t need to use getprop polling in update(), use a listener instead!
|
||||
id: "taOnly",
|
||||
impl: {
|
||||
init: func(nd, symbol),
|
||||
predicate: func(nd) getprop("/instrumentation/tcas/inputs/mode") == 2,
|
||||
is_true: func(nd) nd.symbols.taOnly.show(),
|
||||
is_false: func(nd) nd.symbols.taOnly.hide(),
|
||||
},
|
||||
},
|
||||
{
|
||||
id: "tas",
|
||||
impl: {
|
||||
|
@ -761,7 +762,6 @@ canvas.NDStyles["Airbus"] = {
|
|||
predicate: func(nd) getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 60,
|
||||
is_true: func(nd) {
|
||||
nd.symbols.tas.setText(sprintf("%3.0f",getprop("/instrumentation/airspeed-indicator/true-speed-kt")));
|
||||
nd.symbols.tas.show();
|
||||
},
|
||||
is_false: func(nd){
|
||||
nd.symbols.tas.setText("---");
|
||||
|
@ -832,7 +832,7 @@ canvas.NDStyles["Airbus"] = {
|
|||
var deg = math.round(getprop("/FMGC/flightplan[2]/current-leg-course-mag")) or 0;
|
||||
}
|
||||
if (deg != nil) {
|
||||
nd.symbols.wpActiveCrs.setText(sprintf("%03.0f", deg) ~ "°");
|
||||
nd.symbols.wpActiveCrs.setText(sprintf("%03.0f°", deg));
|
||||
nd.symbols.wpActiveCrs.show();
|
||||
} else {
|
||||
nd.symbols.wpActiveCrs.hide();
|
||||
|
@ -1324,7 +1324,7 @@ canvas.NDStyles["Airbus"] = {
|
|||
id:"curTrkPtr",
|
||||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd) (nd.in_mode("toggle_display_mode", ["APP","VOR","MAP"]) and !nd.get_switch("toggle_centered")
|
||||
predicate: func(nd) (nd.get_switch("toggle_display_mode") == "MAP" and !nd.get_switch("toggle_centered")
|
||||
and (nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting))
|
||||
and abs(nd.aircraft_source.get_trk_mag() - nd.aircraft_source.get_hdg_mag()) <= 42),
|
||||
is_true: func(nd) {
|
||||
|
@ -1368,7 +1368,7 @@ canvas.NDStyles["Airbus"] = {
|
|||
impl: {
|
||||
init: func(nd,symbol),
|
||||
predicate: func(nd) (nd.get_switch("toggle_display_mode") == "MAP" and
|
||||
nd.get_switch("toggle_centered") and (nd.change_phase != 1) and
|
||||
nd.get_switch("toggle_centered") and (nd.change_phase != 1) and
|
||||
getprop(nd.options.defaults.lat_ctrl) == 0 and abs(nd.aircraft_source.get_trk_mag() - nd.aircraft_source.get_hdg_mag()) <= 42 and
|
||||
(nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting))),
|
||||
is_true: func(nd) {
|
||||
|
@ -1531,6 +1531,8 @@ canvas.NDStyles["Airbus"] = {
|
|||
predicate: func(nd) (getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 100),
|
||||
is_true: func(nd) {
|
||||
var windDir = pts.Instrumentation.PFD.windDirection.getValue() or 0;
|
||||
if(nd.get_switch("toggle_true_north"))
|
||||
windDir = windDir + getprop("/environment/magnetic-variation-deg");
|
||||
nd.symbols.wind.setText(sprintf("%03.0f / %02.0f",windDir,pts.Instrumentation.PFD.windSpeed.getValue() or 0));
|
||||
},
|
||||
is_false: func(nd) {
|
||||
|
@ -1545,7 +1547,18 @@ canvas.NDStyles["Airbus"] = {
|
|||
predicate: func(nd) (!(nd.in_mode("toggle_display_mode", ["PLAN"]) and (nd.get_switch("toggle_display_type") == "LCD")) and (pts.Instrumentation.PFD.windSpeed.getValue() or 0) >= 2 and getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 100),
|
||||
is_true: func(nd) {
|
||||
nd.symbols.windArrow.show();
|
||||
var windArrowRot = (pts.Instrumentation.PFD.windDirection.getValue() or 0) - nd.aircraft_source.get_hdg_tru();
|
||||
var windArrowRot = pts.Instrumentation.PFD.windDirection.getValue() or 0;
|
||||
if(nd.in_mode("toggle_display_mode", ["MAP","PLAN"])) {
|
||||
if(nd.get_switch("toggle_true_north"))
|
||||
windArrowRot = windArrowRot - nd.aircraft_source.get_trk_tru();
|
||||
else
|
||||
windArrowRot = windArrowRot - nd.aircraft_source.get_trk_mag();
|
||||
} else {
|
||||
if(nd.get_switch("toggle_true_north"))
|
||||
windArrowRot = windArrowRot - nd.aircraft_source.get_hdg_tru();
|
||||
else
|
||||
windArrowRot = windArrowRot - nd.aircraft_source.get_hdg_mag();
|
||||
}
|
||||
nd.symbols.windArrow.setRotation(windArrowRot*D2R);
|
||||
},
|
||||
is_false: func(nd) nd.symbols.windArrow.hide(),
|
||||
|
|
|
@ -43,6 +43,7 @@ var du6_offtime = props.globals.initNode("/instrumentation/du/du6-off-time", 0.0
|
|||
var autoland_alarm = props.globals.initNode("/instrumentation/pfd/logic/autoland/autoland-alarm", 0, "BOOL");
|
||||
var autoland_pulse = props.globals.initNode("/instrumentation/pfd/logic/autoland/autoland-sw-pulse", 0, "BOOL");
|
||||
var autoland_pitch_land = props.globals.initNode("/instrumentation/pfd/logic/autoland/pitch-land", 0, "BOOL");
|
||||
var autoland_ap_disc_ft = props.globals.initNode("/instrumentation/pfd/logic/autoland/ap-disc-ft", 0, "INT");
|
||||
|
||||
var canvas_pfd = {
|
||||
middleOffset: 0,
|
||||
|
@ -776,7 +777,7 @@ var canvas_pfd = {
|
|||
getKeys: func() {
|
||||
return ["FMA_man","FMA_manmode","FMA_flxmode","FMA_flxtemp","FMA_thrust","FMA_lvrclb","FMA_pitch","FMA_pitcharm","FMA_pitcharm2","FMA_roll","FMA_rollarm","FMA_combined","FMA_ctr_msg","FMA_catmode","FMA_cattype","FMA_nodh","FMA_dh","FMA_dhn","FMA_ap",
|
||||
"FMA_fd","FMA_athr","FMA_man_box","FMA_flx_box","FMA_thrust_box","FMA_pitch_box","FMA_pitcharm_box","FMA_roll_box","FMA_rollarm_box","FMA_combined_box","FMA_catmode_box","FMA_cattype_box","FMA_cat_box","FMA_dh_box","FMA_ap_box","FMA_fd_box",
|
||||
"FMA_athr_box","FMA_Middle1","FMA_Middle2","ALPHA_MAX","ALPHA_PROT","ALPHA_SW","ALPHA_bars","VLS_min","ASI_max","ASI_scale","ASI_target","ASI_mach","ASI_mach_decimal","ASI_trend_up","ASI_trend_down","ASI_digit_UP","ASI_digit_DN","ASI_decimal_UP",
|
||||
"FMA_athr_box","FMA_Middle1","FMA_Middle2","ALPHA_MAX","ALPHA_PROT","ALPHA_SW","ALPHA_bars","VLS_min","ASI_max","ASI_scale","ASI_target","ASI_mach","ASI_trend_up","ASI_trend_down","ASI_digit_UP","ASI_digit_DN","ASI_decimal_UP",
|
||||
"ASI_decimal_DN","ASI_index","ASI_error","ASI_group","ASI_frame","AI_center","AI_bank","AI_bank_lim","AI_bank_lim_X","AI_pitch_lim","AI_pitch_lim_X","AI_slipskid","AI_horizon","AI_horizon_ground","AI_horizon_sky","AI_stick","AI_stick_pos","AI_heading",
|
||||
"AI_agl_g","AI_agl","AI_error","AI_group","FD_roll","FD_pitch","ALT_box_flash","ALT_box","ALT_box_amber","ALT_scale","ALT_target","ALT_target_digit","ALT_one","ALT_two","ALT_three","ALT_four","ALT_five","ALT_digits","ALT_tens","ALT_digit_UP",
|
||||
"ALT_digit_DN","ALT_digit_UP_metric","ALT_error","ALT_neg","ALT_group","ALT_group2","ALT_frame","VS_pointer","VS_box","VS_digit","VS_error","VS_group","QNH","QNH_setting","QNH_std","QNH_box","LOC_pointer","LOC_scale","GS_scale","GS_pointer","CRS_pointer",
|
||||
|
@ -969,7 +970,7 @@ var canvas_pfd = {
|
|||
me.tgt_kts = notification.targetKts;
|
||||
|
||||
if (notification.managedSpd) {
|
||||
if (notification.decel) {
|
||||
if (fmgc.FMGCInternal.decel) {
|
||||
me.tgt_ias = fmgc.FMGCInternal.vappSpeedSet ? fmgc.FMGCInternal.vapp_appr : fmgc.FMGCInternal.vapp;
|
||||
me.tgt_kts = fmgc.FMGCInternal.vappSpeedSet ? fmgc.FMGCInternal.vapp_appr : fmgc.FMGCInternal.vapp;
|
||||
} else if (fmgc.FMGCInternal.phase == 6) {
|
||||
|
@ -1279,16 +1280,14 @@ var canvas_pfd = {
|
|||
me["machError"].hide();
|
||||
|
||||
if (me.ind_mach >= 0.999) {
|
||||
me["ASI_mach"].setText("999");
|
||||
me["ASI_mach"].setText(".999");
|
||||
} else {
|
||||
me["ASI_mach"].setText(sprintf("%3.0f", me.ind_mach * 1000));
|
||||
me["ASI_mach"].setText(sprintf(".%3.0f", me.ind_mach * 1000));
|
||||
}
|
||||
|
||||
if (me.ind_mach >= 0.5) {
|
||||
me["ASI_mach_decimal"].show();
|
||||
me["ASI_mach"].show();
|
||||
} else {
|
||||
me["ASI_mach_decimal"].hide();
|
||||
me["ASI_mach"].hide();
|
||||
}
|
||||
} else {
|
||||
|
@ -2052,7 +2051,6 @@ var input = {
|
|||
thr2: "/controls/engines/engine[1]/throttle-pos",
|
||||
|
||||
decision: "/instrumentation/mk-viii/inputs/arinc429/decision-height",
|
||||
decel: "/FMGC/internal/decel",
|
||||
radio: "/FMGC/internal/radio",
|
||||
baro: "/FMGC/internal/baro",
|
||||
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="pfd.svg"
|
||||
inkscape:version="0.91 r13725"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
viewBox="0 0 1024 1024"
|
||||
height="1024pt"
|
||||
width="1024pt">
|
||||
width="1024pt"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<metadata
|
||||
id="metadata375">
|
||||
<rdf:RDF>
|
||||
|
@ -37,17 +37,17 @@
|
|||
units="pt"
|
||||
inkscape:snap-global="false"
|
||||
showguides="true"
|
||||
inkscape:current-layer="svg2"
|
||||
inkscape:current-layer="ALT_group"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:cy="245.80636"
|
||||
inkscape:cx="411.71903"
|
||||
inkscape:zoom="0.35355341"
|
||||
inkscape:window-y="-11"
|
||||
inkscape:window-x="-11"
|
||||
inkscape:cy="673.69595"
|
||||
inkscape:cx="1065.6983"
|
||||
inkscape:zoom="5.6568545"
|
||||
showgrid="false"
|
||||
id="namedview371"
|
||||
inkscape:window-height="657"
|
||||
inkscape:window-width="1280"
|
||||
inkscape:window-height="974"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="1"
|
||||
guidetolerance="10"
|
||||
|
@ -230,8 +230,7 @@
|
|||
y="480.29712"
|
||||
id="text4718"
|
||||
transform="scale(0.95383277,1.0484018)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4720"
|
||||
x="381.24359"
|
||||
|
@ -244,8 +243,7 @@
|
|||
y="480.29608"
|
||||
x="593.11237"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="480.29608"
|
||||
x="593.11237"
|
||||
|
@ -258,8 +256,7 @@
|
|||
y="367.48999"
|
||||
x="381.24359"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="367.48999"
|
||||
x="381.24359"
|
||||
|
@ -272,8 +269,7 @@
|
|||
y="367.4892"
|
||||
id="text5097"
|
||||
transform="scale(0.95383069,1.0484041)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5099"
|
||||
x="593.11237"
|
||||
|
@ -286,8 +282,7 @@
|
|||
y="268.78375"
|
||||
id="text5125"
|
||||
transform="scale(0.95383277,1.0484018)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5127"
|
||||
x="381.24359"
|
||||
|
@ -300,8 +295,7 @@
|
|||
y="268.78317"
|
||||
x="593.11237"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="268.78317"
|
||||
x="593.11237"
|
||||
|
@ -314,8 +308,7 @@
|
|||
y="155.97633"
|
||||
x="373.38058"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="155.97633"
|
||||
x="373.38058"
|
||||
|
@ -328,8 +321,7 @@
|
|||
y="155.976"
|
||||
id="text5145"
|
||||
transform="scale(0.95383069,1.0484041)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5147"
|
||||
x="600.9754"
|
||||
|
@ -342,8 +334,7 @@
|
|||
y="-13.234788"
|
||||
x="365.51758"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="-13.234788"
|
||||
x="365.51758"
|
||||
|
@ -356,8 +347,7 @@
|
|||
y="-13.234759"
|
||||
id="text5209"
|
||||
transform="scale(0.95383069,1.0484041)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5211"
|
||||
x="608.83844"
|
||||
|
@ -374,8 +364,7 @@
|
|||
y="705.91138"
|
||||
x="381.24359"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="705.91138"
|
||||
x="381.24359"
|
||||
|
@ -388,8 +377,7 @@
|
|||
y="705.90985"
|
||||
id="text4517"
|
||||
transform="scale(0.95383069,1.0484041)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4519"
|
||||
x="593.11237"
|
||||
|
@ -402,8 +390,7 @@
|
|||
y="790.51678"
|
||||
id="text4541"
|
||||
transform="scale(0.95383277,1.0484018)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4543"
|
||||
x="381.24359"
|
||||
|
@ -416,8 +403,7 @@
|
|||
y="790.51508"
|
||||
x="593.11237"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="790.51508"
|
||||
x="593.11237"
|
||||
|
@ -430,8 +416,7 @@
|
|||
y="846.91992"
|
||||
x="381.24359"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="846.91992"
|
||||
x="381.24359"
|
||||
|
@ -444,8 +429,7 @@
|
|||
y="846.91803"
|
||||
id="text4553"
|
||||
transform="scale(0.95383069,1.0484041)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4555"
|
||||
x="593.11237"
|
||||
|
@ -458,8 +442,7 @@
|
|||
y="959.72705"
|
||||
id="text4581"
|
||||
transform="scale(0.95383277,1.0484018)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4583"
|
||||
x="373.38058"
|
||||
|
@ -472,8 +455,7 @@
|
|||
y="959.72498"
|
||||
x="600.9754"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="959.72498"
|
||||
x="600.9754"
|
||||
|
@ -486,8 +468,7 @@
|
|||
y="1128.9375"
|
||||
x="365.51758"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="1128.9375"
|
||||
x="365.51758"
|
||||
|
@ -500,8 +481,7 @@
|
|||
y="1128.9351"
|
||||
id="text4593"
|
||||
transform="scale(0.95383069,1.0484041)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4595"
|
||||
x="608.83844"
|
||||
|
@ -688,10 +668,9 @@
|
|||
id="text4924"
|
||||
y="178.57314"
|
||||
x="392.94345"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1.00001001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.00020027px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1;stroke-width:1.00001001px"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1.00001px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30.0002px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1;stroke-width:1.00001px"
|
||||
y="178.57314"
|
||||
x="392.94345"
|
||||
id="tspan4926"
|
||||
|
@ -703,8 +682,7 @@
|
|||
y="178.57445"
|
||||
id="text4958"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.97051544,1.0303803)"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
transform="scale(0.97051544,1.0303803)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4960"
|
||||
x="530.78998"
|
||||
|
@ -717,8 +695,7 @@
|
|||
y="666.06818"
|
||||
id="text4970"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.97051987,1.0303756)"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
transform="scale(0.97051987,1.0303756)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4972"
|
||||
x="420.73514"
|
||||
|
@ -731,8 +708,7 @@
|
|||
y="666.06818"
|
||||
x="502.99374"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1"
|
||||
y="666.06818"
|
||||
x="502.99374"
|
||||
|
@ -1142,8 +1118,7 @@
|
|||
y="404.63544"
|
||||
id="text4314"
|
||||
inkscape:label="#text4314"
|
||||
transform="scale(0.97051454,1.0303813)"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
transform="scale(0.97051454,1.0303813)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4407"
|
||||
x="202.60973"
|
||||
|
@ -1156,8 +1131,7 @@
|
|||
y="404.63544"
|
||||
x="721.12775"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1"
|
||||
y="404.63544"
|
||||
x="721.12775"
|
||||
|
@ -1245,17 +1219,16 @@
|
|||
inkscape:transform-center-y="245.55937"
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="511.25748"
|
||||
y="680.72845"
|
||||
id="AI_agl"
|
||||
transform="scale(0.87678236,1.1405339)"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
transform="scale(0.87678236,1.1405339)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4624"
|
||||
x="511.25748"
|
||||
y="680.72845"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:45px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.65757698">0000</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:45px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.657577">0000</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="AI_stick"
|
||||
|
@ -1523,7 +1496,7 @@
|
|||
id="tspan5094"
|
||||
x="1019.0017"
|
||||
y="569.32635"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:29.77169991px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">1</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:29.7717px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.657577">1</tspan></text>
|
||||
<text
|
||||
transform="scale(0.87676975,1.1405503)"
|
||||
id="text5100"
|
||||
|
@ -1531,7 +1504,7 @@
|
|||
x="1019.0017"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:29.77169991px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:29.7717px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="628.34387"
|
||||
x="1019.0017"
|
||||
id="tspan5098"
|
||||
|
@ -1547,7 +1520,7 @@
|
|||
id="tspan5102"
|
||||
x="1019.0017"
|
||||
y="687.27924"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:29.77169991px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">6</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:29.7717px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.657577">6</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="g5092"
|
||||
|
@ -1605,7 +1578,7 @@
|
|||
x="1086.9194"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:31.75600052px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:31.756px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="183.6866"
|
||||
x="1086.9194"
|
||||
id="tspan5128"
|
||||
|
@ -1621,7 +1594,7 @@
|
|||
id="tspan5132"
|
||||
x="1086.9194"
|
||||
y="246.63768"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:31.75600052px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">2</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:31.756px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.657577">2</tspan></text>
|
||||
<text
|
||||
transform="scale(0.87678236,1.1405339)"
|
||||
id="text5138"
|
||||
|
@ -1629,7 +1602,7 @@
|
|||
x="1086.9194"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:31.75600052px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:31.756px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="309.50116"
|
||||
x="1086.9194"
|
||||
id="tspan5136"
|
||||
|
@ -1723,7 +1696,7 @@
|
|||
id="tspan5136-1"
|
||||
x="1147.7107"
|
||||
y="405.05588"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.65757698">00</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.657577">00</tspan></text>
|
||||
</g>
|
||||
</g>
|
||||
<rect
|
||||
|
@ -1986,10 +1959,10 @@
|
|||
id="FMA_manmode"
|
||||
y="74.429817"
|
||||
x="125.31013"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="74.429817"
|
||||
x="125.31013"
|
||||
id="tspan4307"
|
||||
|
@ -1997,7 +1970,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="125.84993"
|
||||
y="33.759209"
|
||||
id="FMA_man"
|
||||
|
@ -2006,7 +1979,7 @@
|
|||
id="tspan4303"
|
||||
x="125.84993"
|
||||
y="33.759209"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">MAN</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577">MAN</tspan></text>
|
||||
<path
|
||||
inkscape:label="#path987"
|
||||
sodipodi:nodetypes="cc"
|
||||
|
@ -2017,7 +1990,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="505.48523"
|
||||
y="115.0584"
|
||||
id="FMA_ctr_msg"
|
||||
|
@ -2026,7 +1999,7 @@
|
|||
id="tspan4614"
|
||||
x="505.48523"
|
||||
y="115.0584"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke-width:0.65757698">MAN PITCH TRIM ONLY</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke-width:0.657577">MAN PITCH TRIM ONLY</tspan></text>
|
||||
<path
|
||||
style="fill:none;fill-opacity:1;stroke:#515256;stroke-width:3.19995403;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
d="m 432.8701,90.374503 0,-88.7230442"
|
||||
|
@ -2042,7 +2015,7 @@
|
|||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.657577"
|
||||
y="34.986706"
|
||||
x="370.20218"
|
||||
id="tspan4244"
|
||||
|
@ -2059,7 +2032,7 @@
|
|||
id="tspan4248"
|
||||
x="422.80801"
|
||||
y="74.709473"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.65757698">G/S</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.657577">G/S</tspan></text>
|
||||
<text
|
||||
transform="scale(0.87678236,1.1405339)"
|
||||
id="FMA_pitcharm2"
|
||||
|
@ -2068,7 +2041,7 @@
|
|||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.657577"
|
||||
y="74.709473"
|
||||
x="305.3663"
|
||||
id="tspan4252"
|
||||
|
@ -2076,7 +2049,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999973px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="629.61298"
|
||||
y="34.635147"
|
||||
id="FMA_roll"
|
||||
|
@ -2085,11 +2058,11 @@
|
|||
id="tspan4256"
|
||||
x="629.61298"
|
||||
y="34.635147"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.65757698">LOC</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.657577">LOC</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999973px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="629.22266"
|
||||
y="74.709473"
|
||||
id="FMA_rollarm"
|
||||
|
@ -2098,7 +2071,7 @@
|
|||
id="tspan4260"
|
||||
x="629.22266"
|
||||
y="74.709473"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.65757698">NAV</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.657577">NAV</tspan></text>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.39996576;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="FMA_pitch_box"
|
||||
|
@ -2206,7 +2179,7 @@
|
|||
id="tspan4618"
|
||||
x="859.21783"
|
||||
y="885.26117"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3993988px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.75">STD</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3994px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.75">STD</tspan></text>
|
||||
<g
|
||||
id="ALT_target"
|
||||
inkscape:label="#g4832">
|
||||
|
@ -2253,7 +2226,7 @@
|
|||
id="tspan4800"
|
||||
x="890.99316"
|
||||
y="506.26898"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.83480072px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1;stroke-width:0.75">000</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.8348px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#179ab7;fill-opacity:1;stroke-width:0.75">000</tspan></text>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
|
@ -2262,8 +2235,7 @@
|
|||
y="787.28491"
|
||||
id="ALT_digit_DN"
|
||||
transform="scale(0.95382558,1.0484097)"
|
||||
inkscape:label="#text975"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5112"
|
||||
x="802.7406"
|
||||
|
@ -2276,8 +2248,7 @@
|
|||
y="220.32645"
|
||||
x="802.7406"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#179ab7;fill-opacity:1;stroke-width:0.75"
|
||||
y="220.32645"
|
||||
x="802.7406"
|
||||
|
@ -2303,7 +2274,7 @@
|
|||
id="tspan5024"
|
||||
x="887.71545"
|
||||
y="775.94104"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.75600052px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">QNH</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:31.756px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#ffffff;fill-opacity:1;stroke-width:0.657577">QNH</tspan></text>
|
||||
<text
|
||||
id="QNH_setting"
|
||||
y="885.26117"
|
||||
|
@ -2312,7 +2283,7 @@
|
|||
xml:space="preserve"
|
||||
transform="scale(1.0000144,0.9999856)"
|
||||
inkscape:label="#text979"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3993988px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-opacity:1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3994px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.75;stroke-opacity:1"
|
||||
y="885.26117"
|
||||
x="907.61713"
|
||||
id="tspan977"
|
||||
|
@ -2443,16 +2414,16 @@
|
|||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
x="890.99316"
|
||||
x="895.2074"
|
||||
y="506.23941"
|
||||
id="ALT_digits"
|
||||
transform="scale(0.95383277,1.0484018)"
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan973"
|
||||
x="890.99316"
|
||||
x="895.2074"
|
||||
y="506.23941"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.83480072px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">00</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.8348px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">00</tspan></text>
|
||||
</g>
|
||||
<rect
|
||||
style="display:inline;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-width:3.22735;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
|
@ -2485,10 +2456,10 @@
|
|||
id="FMA_ap"
|
||||
y="34.635155"
|
||||
x="1080.6229"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="34.635155"
|
||||
x="1080.6229"
|
||||
id="tspan4268"
|
||||
|
@ -2496,7 +2467,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="1080.6229"
|
||||
y="74.709656"
|
||||
id="FMA_fd"
|
||||
|
@ -2505,16 +2476,16 @@
|
|||
id="tspan4272"
|
||||
x="1080.6229"
|
||||
y="74.709656"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">1 FD 2</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577">1 FD 2</tspan></text>
|
||||
<text
|
||||
transform="scale(0.87678236,1.1405339)"
|
||||
id="FMA_athr"
|
||||
y="115.05846"
|
||||
x="1080.6229"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="115.05846"
|
||||
x="1080.6229"
|
||||
id="tspan4276"
|
||||
|
@ -2522,7 +2493,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="874.48682"
|
||||
y="34.635155"
|
||||
id="FMA_catmode"
|
||||
|
@ -2531,16 +2502,16 @@
|
|||
id="tspan4280"
|
||||
x="874.48682"
|
||||
y="34.635155"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">CAT 3</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577">CAT 3</tspan></text>
|
||||
<text
|
||||
transform="scale(0.87678236,1.1405339)"
|
||||
id="FMA_cattype"
|
||||
y="74.709656"
|
||||
x="874.48682"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="74.709656"
|
||||
x="874.48682"
|
||||
id="tspan4284"
|
||||
|
@ -2548,7 +2519,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="874.48682"
|
||||
y="115.05846"
|
||||
id="FMA_nodh"
|
||||
|
@ -2557,7 +2528,7 @@
|
|||
id="tspan4288"
|
||||
x="874.48682"
|
||||
y="115.05846"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">NO RADIO</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577">NO RADIO</tspan></text>
|
||||
<rect
|
||||
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.39996576;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="FMA_catmode_box"
|
||||
|
@ -2609,7 +2580,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="123.23077"
|
||||
y="34.635437"
|
||||
id="FMA_thrust"
|
||||
|
@ -2618,7 +2589,7 @@
|
|||
id="tspan981"
|
||||
x="123.23077"
|
||||
y="34.635437"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.65757698">SPEED</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.657577">SPEED</tspan></text>
|
||||
<rect
|
||||
inkscape:label="#rect4290"
|
||||
y="7.4160867"
|
||||
|
@ -2643,7 +2614,7 @@
|
|||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.657577"
|
||||
y="34.635437"
|
||||
x="505.48523"
|
||||
id="tspan4354"
|
||||
|
@ -2661,10 +2632,10 @@
|
|||
id="FMA_dh"
|
||||
y="115.05846"
|
||||
x="831.23047"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="115.05846"
|
||||
x="831.23047"
|
||||
id="tspan4301"
|
||||
|
@ -2672,7 +2643,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;display:inline;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="934.0097"
|
||||
y="115.05846"
|
||||
id="FMA_dhn"
|
||||
|
@ -2681,7 +2652,7 @@
|
|||
id="tspan4305"
|
||||
x="934.0097"
|
||||
y="115.05846"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.65757698">0250</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.657577">0250</tspan></text>
|
||||
<g
|
||||
inkscape:label="#g4375"
|
||||
id="ALPHA_bars">
|
||||
|
@ -4083,7 +4054,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:34.00000012px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="185.85408"
|
||||
y="74.429558"
|
||||
id="FMA_flxtemp"
|
||||
|
@ -4092,16 +4063,16 @@
|
|||
id="tspan4316"
|
||||
x="185.85408"
|
||||
y="74.429558"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.65757698">+40</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.657577">+40</tspan></text>
|
||||
<text
|
||||
transform="scale(0.87678236,1.1405339)"
|
||||
id="FMA_lvrclb"
|
||||
y="114.70684"
|
||||
x="123.23077"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="114.70684"
|
||||
x="123.23077"
|
||||
id="tspan4294"
|
||||
|
@ -5665,28 +5636,15 @@
|
|||
inkscape:label="#text975"
|
||||
transform="scale(0.95383277,1.0484018)"
|
||||
id="ASI_mach"
|
||||
y="835.1153"
|
||||
y="785.1153"
|
||||
x="69.848434"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.83480072px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.8348px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="835.1153"
|
||||
x="69.848434"
|
||||
id="tspan4664"
|
||||
sodipodi:role="line">000</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:end;letter-spacing:0px;word-spacing:0px;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
x="51.798809"
|
||||
y="835.1153"
|
||||
id="ASI_mach_decimal"
|
||||
transform="scale(0.95383277,1.0484018)"
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4668"
|
||||
x="51.798809"
|
||||
y="835.1153"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.83480072px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;fill-opacity:1;stroke-width:0.75">.</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text975"
|
||||
transform="scale(0.95382555,1.0484097)"
|
||||
|
@ -5777,12 +5735,11 @@
|
|||
id="text4326"
|
||||
y="348.03003"
|
||||
x="71.731003"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
xml:space="preserve"
|
||||
inkscape:label="#text983"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
inkscape:label="#text983"><tspan
|
||||
dx="0"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35.17490005px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;letter-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35.1749px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;letter-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577"
|
||||
y="348.03003"
|
||||
x="71.731003"
|
||||
id="tspan4328"
|
||||
|
@ -5796,17 +5753,16 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.65757698"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="71.731506"
|
||||
y="659.0799"
|
||||
id="text4332"
|
||||
transform="scale(0.92333871,1.0830262)"
|
||||
sodipodi:linespacing="0%"><tspan
|
||||
transform="scale(0.92333871,1.0830262)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4334"
|
||||
x="71.731506"
|
||||
y="659.0799"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35.17490005px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">SLOW</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35.1749px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577">SLOW</tspan></text>
|
||||
</g>
|
||||
<g
|
||||
id="ASI_buss_ref"
|
||||
|
@ -5883,14 +5839,14 @@
|
|||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
x="851.70166"
|
||||
x="855.8645"
|
||||
y="505.93329"
|
||||
id="ALT_error"
|
||||
transform="scale(0.95383278,1.0484018)"
|
||||
inkscape:label="#text975"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4386-4-0"
|
||||
x="851.70166"
|
||||
x="855.8645"
|
||||
y="505.93329"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke-width:0.75">ALT</tspan></text>
|
||||
<text
|
||||
|
@ -5959,7 +5915,7 @@
|
|||
x="34.684372"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.99000168px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#b055be;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.99px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#b055be;fill-opacity:1;stroke-width:0.75"
|
||||
y="935.95209"
|
||||
x="34.684372"
|
||||
id="tspan978"
|
||||
|
@ -5970,7 +5926,7 @@
|
|||
x="34.684372"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.99000168px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#b055be;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.99px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#b055be;fill-opacity:1;stroke-width:0.75"
|
||||
y="974.72784"
|
||||
x="34.684372"
|
||||
id="tspan979"
|
||||
|
@ -5981,7 +5937,7 @@
|
|||
x="34.684372"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.99000168px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#b055be;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.99px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#b055be;fill-opacity:1;stroke-width:0.75"
|
||||
y="1013.5292"
|
||||
x="34.684372"
|
||||
id="tspan780"
|
||||
|
@ -6092,52 +6048,52 @@
|
|||
xml:space="preserve"
|
||||
inkscape:label="#text913"
|
||||
transform="scale(0.96366556,1.0377044)"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="317.73038"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan919">40</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="344.55804"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan4300">20</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="371.38571"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan931">00</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="398.21338"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan927">80</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="425.04105"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan925">60</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="451.86871"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan923">40</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="478.69638"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan921">20</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="505.52405"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan917">00</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="532.35175"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
id="tspan915">80</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.83639908px;line-height:87.00000048%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30.8364px;line-height:87%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="559.17938"
|
||||
x="898.703"
|
||||
sodipodi:role="line"
|
||||
|
@ -6307,7 +6263,7 @@
|
|||
<text
|
||||
inkscape:label="#text983"
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577;font-size:33.99999992px;"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.657577"
|
||||
x="61.095329"
|
||||
y="74.429939"
|
||||
id="FMA_flxmode"
|
||||
|
@ -6316,7 +6272,7 @@
|
|||
id="tspan4307-3"
|
||||
x="61.095329"
|
||||
y="74.429939"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.65757698">FLX</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:34px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.657577">FLX</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text1607"
|
||||
id="spdLimError"
|
||||
|
@ -6375,17 +6331,17 @@
|
|||
x="823.7511"
|
||||
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.75"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.10000002;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.1;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="453.28622"
|
||||
x="823.7511"
|
||||
id="tspan1791"
|
||||
sodipodi:role="line">N</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.10000002;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.1;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="506.08621"
|
||||
x="823.7511"
|
||||
sodipodi:role="line"
|
||||
id="tspan1795">E</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.10000002;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48px;line-height:1.1;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke-width:0.75"
|
||||
y="558.88623"
|
||||
x="823.7511"
|
||||
sodipodi:role="line"
|
||||
|
@ -6402,7 +6358,7 @@
|
|||
id="tspan1777"
|
||||
x="417.56354"
|
||||
y="34.634907"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.65757698">-800</tspan></text>
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#179ab7;fill-opacity:1;stroke-width:0.657577">-800</tspan></text>
|
||||
<rect
|
||||
inkscape:label="#rect4290"
|
||||
y="896.48456"
|
||||
|
@ -6419,9 +6375,9 @@
|
|||
xml:space="preserve"
|
||||
transform="scale(1.0000144,0.9999856)"
|
||||
inkscape:label="#text979"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3993988px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:38.3994px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#0dc04b;fill-opacity:1;stroke-width:0.75"
|
||||
y="928.04248"
|
||||
x="852.95343"
|
||||
x="852.96283"
|
||||
id="tspan977-3"
|
||||
sodipodi:role="line">11070 </tspan></text>
|
||||
<text
|
||||
|
@ -6435,7 +6391,7 @@
|
|||
id="tspan1813"
|
||||
x="909.43152"
|
||||
y="928.62128"
|
||||
style="font-size:38.3993988px;line-height:1.25;fill:#179ab7;fill-opacity:1;stroke-width:0.75">M</tspan></text>
|
||||
style="font-size:38.3994px;line-height:1.25;fill:#179ab7;fill-opacity:1;stroke-width:0.75">M</tspan></text>
|
||||
<text
|
||||
inkscape:label="#text975"
|
||||
transform="scale(0.95382559,1.0484097)"
|
||||
|
|
Before Width: | Height: | Size: 350 KiB After Width: | Height: | Size: 348 KiB |
|
@ -19,6 +19,7 @@ var engOpt = props.globals.getNode("/options/eng", 1);
|
|||
var thrustState = [nil, nil];
|
||||
|
||||
# local variables
|
||||
var takeoffConfig = 0;
|
||||
var transmitFlag1 = 0;
|
||||
var transmitFlag2 = 0;
|
||||
var phaseVar3 = nil;
|
||||
|
@ -2325,6 +2326,40 @@ var messages_priority_2 = func {
|
|||
ECAM_controller.warningReset(fctlSpdBrkStillOut);
|
||||
}
|
||||
|
||||
if (fctlPitchTrimDisag.clearFlag == 0 and takeoffConfig and fmgc.FMGCInternal.toFlapThsSet and abs(-getprop("/fdm/jsbsim/hydraulics/elevator-trim/final-deg") - fmgc.FMGCInternal.toThs) >= 1.3) {
|
||||
fctlPitchTrimDisag.active = 1;
|
||||
fctlPitchTrimDisag2.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(fctlPitchTrimDisag);
|
||||
ECAM_controller.warningReset(fctlPitchTrimDisag2);
|
||||
}
|
||||
|
||||
if (fctlFlapsDisag.clearFlag == 0 and takeoffConfig and fmgc.FMGCInternal.toFlapThsSet and (fmgc.FMGCInternal.toFlap + 1 != pts.Controls.Flight.flapsPos.getValue())) {
|
||||
fctlFlapsDisag.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(fctlFlapsDisag);
|
||||
}
|
||||
|
||||
if (toSpdsDisag.clearFlag == 0 and takeoffConfig and fmgc.FMGCInternal.v1set and fmgc.FMGCInternal.vrset and fmgc.FMGCInternal.v2set and !(fmgc.FMGCInternal.v1 <= fmgc.FMGCInternal.vr and fmgc.FMGCInternal.vr <= fmgc.FMGCInternal.v2)) {
|
||||
toSpdsDisag.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(toSpdsDisag);
|
||||
}
|
||||
|
||||
if (toSpdsTooLow.clearFlag == 0 and takeoffConfig and
|
||||
fmgc.FMGCInternal.toFlapThsSet and fmgc.FMGCInternal.zfwSet and fmgc.FMGCInternal.blockSet and fmgc.FMGCInternal.v1set and fmgc.FMGCInternal.vrset and fmgc.FMGCInternal.v2set
|
||||
and (fmgc.FMGCInternal.v1 < mcdu.VMCG.getValue() or fmgc.FMGCInternal.vr < (mcdu.VMCA.getValue() * 1.05) or fmgc.FMGCInternal.v2 < (mcdu.VMCA.getValue() * 1.10) or fmgc.FMGCInternal.v2 < (1.13 * mcdu.chooseVS1G()))) {
|
||||
toSpdsTooLow.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(toSpdsTooLow);
|
||||
}
|
||||
|
||||
if (toSpdsNotInserted.clearFlag == 0 and takeoffConfig and (!fmgc.FMGCInternal.v1set or !fmgc.FMGCInternal.vrset or !fmgc.FMGCInternal.v2set)) {
|
||||
toSpdsNotInserted.active = 1;
|
||||
} else {
|
||||
ECAM_controller.warningReset(toSpdsNotInserted);
|
||||
}
|
||||
|
||||
gearPosition = pts.Gear.position[1].getValue();
|
||||
if (directLaw.clearFlag == 0 and warningNodes.Timers.directLaw.getValue() == 1 and phaseVar2 != 4 and phaseVar2 != 5 and phaseVar2 != 7 and phaseVar2 != 8) {
|
||||
directLaw.active = 1;
|
||||
|
|
|
@ -14,9 +14,9 @@ var warnings = std.Vector.new([
|
|||
var flap_not_zero = warning.new(msg: "F/CTL FLAP LVR NOT ZERO", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
|
||||
var overspeed = warning.new(msg: "OVER SPEED", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var overspeedVMO = warning.new(msg: "-VMO/MMO.......350 /.82", colour: "r"),
|
||||
var overspeedGear = warning.new(msg: "-VLE...........280 /.67", colour: "r"),
|
||||
var overspeedFlap = warning.new(msg: "-VFE................XXX", colour: "r"),
|
||||
var overspeedVMO = warning.new(msg: " -VMO/MMO.......350 /.82", colour: "r"),
|
||||
var overspeedGear = warning.new(msg: " -VLE...........280 /.67", colour: "r"),
|
||||
var overspeedFlap = warning.new(msg: " -VFE................XXX", colour: "r"),
|
||||
|
||||
var allEngFail = warning.new(msg: "ENG ALL ENGINES FAILURE", colour: "r", aural: 0, light: 0, isMainMsg: 1, sdPage: "enginePage"),
|
||||
var allEngFailElec = warning.new(msg: " -EMER ELEC PWR...MAN ON", colour: "c"),
|
||||
|
@ -182,25 +182,25 @@ var warnings = std.Vector.new([
|
|||
var cargoSmokeFwdGrdClsd = warning.new(msg: " .IF FWD CRG CLSD:", colour: "w"),
|
||||
var cargoSmokeFwdAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
|
||||
var cargoSmokeFwdGrd = warning.new(msg: " .WHEN ON GROUND", colour: "w"),
|
||||
var cargoSmokeFwdDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
||||
var cargoSmokeFwdDisemb = warning.new(msg: "-PAX..........DISEMBARK", colour: "c"),
|
||||
var cargoSmokeFwdDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
||||
var cargoSmokeFwdDisemb = warning.new(msg: " -PAX..........DISEMBARK", colour: "c"),
|
||||
var cargoSmokeAft = warning.new(msg: "SMOKE AFT CARGO SMOKE", colour: "r", aural: 0, light: 0, isMainMsg: 1, sdPage: "condPage"),
|
||||
var cargoSmokeAftFans = warning.new(msg: " -CAB FANS...........OFF", colour: "c"),
|
||||
var cargoSmokeAftGrdClsd = warning.new(msg: " .IF AFT CRG CLSD:", colour: "w"),
|
||||
var cargoSmokeAftAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
|
||||
var cargoSmokeAftGrd = warning.new(msg: " .WHEN ON GROUND", colour: "w"),
|
||||
var cargoSmokeAftDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
||||
var cargoSmokeAftDisemb = warning.new(msg: "-PAX..........DISEMBARK", colour: "c"),
|
||||
var cargoSmokeAftDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
||||
var cargoSmokeAftDisemb = warning.new(msg: " -PAX..........DISEMBARK", colour: "c"),
|
||||
|
||||
# Lavatory SMOKE
|
||||
var lavatorySmoke = warning.new(msg: "SMOKE LAVATORY SMOKE ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
||||
var lavatorySmokeComm = warning.new(msg: "-CKPT/CAB COM.ESTABLISH ", colour: "c"),
|
||||
var lavatorySmokeComm = warning.new(msg: " -CKPT/CAB COM.ESTABLISH ", colour: "c"),
|
||||
|
||||
# EXCES RESID PR
|
||||
var excessResidPress = warning.new(msg: "CAB PR EXCES RESIDUAL PR ", colour: "r", aural: 0, light: 0, isMainMsg: 1, sdPage: "cabPressPage"),
|
||||
var excessResidPressPack1 = warning.new(msg: "-PACK 1.............OFF", colour: "c"),
|
||||
var excessResidPressPack2 = warning.new(msg: "-PACK 2.............OFF", colour: "c"),
|
||||
var excessResidPressCabCr = warning.new(msg: "-CABIN CREW.......ALERT", colour: "c"),
|
||||
var excessResidPressPack1 = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||
var excessResidPressPack2 = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
|
||||
var excessResidPressCabCr = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
|
||||
|
||||
# ESS Bus on Bat
|
||||
# NEW EMER CONFIG
|
||||
|
@ -494,6 +494,12 @@ var warnings = std.Vector.new([
|
|||
|
||||
# F/CTL SPD BRK STILL OUT
|
||||
var fctlSpdBrkStillOut = warning.new(msg: "F/CTL SPD BRK STILL OUT ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var fctlPitchTrimDisag = warning.new(msg: "F/CTL", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var fctlPitchTrimDisag2 = warning.new(msg: "PITCH TRIM/MCDU/CG DISAGREE", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var fctlFlapsDisag = warning.new(msg: "F/CTL FLAPS/MCDU DISAGREE", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var toSpdsDisag = warning.new(msg: "T.O V1/VR/V2 DISAGREE ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var toSpdsTooLow = warning.new(msg: "T.O SPEEDS TOO LOW ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var toSpdsNotInserted = warning.new(msg: "T.O SPEEDS NOT INSERTED ", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
||||
# DIRECT LAW
|
||||
var directLaw = warning.new(msg: "F/CTL DIRECT LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
@ -514,19 +520,19 @@ var warnings = std.Vector.new([
|
|||
|
||||
# Autothrust
|
||||
var athr_offw = warning.new(msg: "AUTO FLT A/THR OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var athr_offw_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
|
||||
var athr_offw_1 = warning.new(msg: " -THR LEVERS........MOVE", colour: "c"),
|
||||
var athr_lock = warning.new(msg: "ENG THRUST LOCKED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var athr_lock_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
|
||||
var athr_lock_1 = warning.new(msg: " -THR LEVERS........MOVE", colour: "c"),
|
||||
var athr_lim = warning.new(msg: "AUTO FLT A/THR LIMITED", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var athr_lim_1 = warning.new(msg: "-THR LEVERS........MOVE", colour: "c"),
|
||||
var athr_lim_1 = warning.new(msg: " -THR LEVERS........MOVE", colour: "c"),
|
||||
|
||||
# TCAS FAULT
|
||||
var tcasFault = warning.new(msg: "NAV TCAS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var tcasStby = warning.new(msg: "NAV TCAS STBY", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gpwsFault = warning.new(msg: "NAV GPWS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gpwsFaultOff = warning.new(msg: "-GPWS...............OFF", colour: "c"),
|
||||
var gpwsFaultOff = warning.new(msg: " -GPWS...............OFF", colour: "c"),
|
||||
var gpwsTerrFault = warning.new(msg: "NAV GPWS TERR DET FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
var gpwsTerrFaultOff = warning.new(msg: "-GPWS TERR..........OFF", colour: "c"),
|
||||
var gpwsTerrFaultOff = warning.new(msg: " -GPWS TERR..........OFF", colour: "c"),
|
||||
|
||||
# FAC and Rudder System
|
||||
var fac12Fault = warning.new(msg: "AUTO FLT FAC 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
||||
|
|
|
@ -507,6 +507,9 @@ var apOff = func(type, side) {
|
|||
} elsif (side == 2) {
|
||||
fmgc.Input.ap2.setValue(0);
|
||||
}
|
||||
|
||||
var radarft = (side == 2) ? getprop("/instrumentation/radar-altimeter[1]/radar-altitude-ft-corrected") : getprop("/instrumentation/radar-altimeter[0]/radar-altitude-ft-corrected");
|
||||
setprop("/instrumentation/pfd/logic/autoland/ap-disc-ft",radarft);
|
||||
}
|
||||
|
||||
# Autothrust Disconnection
|
||||
|
|
|
@ -46,6 +46,7 @@ var Misc = {
|
|||
};
|
||||
|
||||
var Position = {
|
||||
airborne5Secs: props.globals.getNode("/systems/fmgc/airborne-5-secs"),
|
||||
gearAglFtTemp: 0,
|
||||
gearAglFt: props.globals.getNode("/position/gear-agl-ft", 1),
|
||||
indicatedAltitudeFt: props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1),
|
||||
|
@ -365,9 +366,9 @@ var ITAF = {
|
|||
# Preselect Heading
|
||||
if (Output.latTemp != 0 and Output.latTemp != 9) { # Modes that always show HDG
|
||||
if (Custom.hdgTime.getValue() + 45 >= Misc.elapsedSec.getValue()) {
|
||||
setprop("it-autoflight/custom/show-hdg", 1);
|
||||
Custom.showHdg.setBoolValue(1);
|
||||
} else {
|
||||
setprop("it-autoflight/custom/show-hdg", 0);
|
||||
Custom.showHdg.setBoolValue(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -442,7 +443,7 @@ var ITAF = {
|
|||
},
|
||||
ap1Master: func(s) {
|
||||
if (s == 1) {
|
||||
if (Output.vert.getValue() != 6 and !Gear.wow1.getBoolValue() and !Gear.wow2.getBoolValue() and systems.ELEC.Bus.acEss.getValue() >= 110 and fbw.FBW.apOff == 0 and Position.gearAglFt.getValue() >= 100) {
|
||||
if (Output.vert.getValue() != 6 and !Gear.wow1.getBoolValue() and !Gear.wow2.getBoolValue() and FMGCNodes.Power.FMGC1Powered.getBoolValue() and fbw.FBW.apOff == 0 and Position.gearAglFt.getValue() >= 100 and Position.airborne5Secs.getBoolValue()) {
|
||||
Output.ap1.setBoolValue(1);
|
||||
me.updateFma();
|
||||
Output.latTemp = Output.lat.getValue();
|
||||
|
@ -464,7 +465,7 @@ var ITAF = {
|
|||
},
|
||||
ap2Master: func(s) {
|
||||
if (s == 1) {
|
||||
if (Output.vert.getValue() != 6 and !Gear.wow1.getBoolValue() and !Gear.wow2.getBoolValue() and systems.ELEC.Bus.acEss.getValue() >= 110 and fbw.FBW.apOff == 0 and Position.gearAglFt.getValue() >= 100) {
|
||||
if (Output.vert.getValue() != 6 and !Gear.wow1.getBoolValue() and !Gear.wow2.getBoolValue() and FMGCNodes.Power.FMGC2Powered.getBoolValue() and fbw.FBW.apOff == 0 and Position.gearAglFt.getValue() >= 100 and Position.airborne5Secs.getBoolValue()) {
|
||||
Output.ap2.setBoolValue(1);
|
||||
me.updateFma();
|
||||
Output.latTemp = Output.lat.getValue();
|
||||
|
@ -495,7 +496,7 @@ var ITAF = {
|
|||
},
|
||||
athrMaster: func(s) {
|
||||
if (s == 1) {
|
||||
if (systems.ELEC.Bus.acEss.getValue() >= 110 and !pts.FMGC.CasCompare.casRejectAll.getBoolValue() and fbw.FBW.apOff == 0) {
|
||||
if ((FMGCNodes.Power.FMGC1Powered.getBoolValue() or FMGCNodes.Power.FMGC2Powered.getBoolValue()) and !pts.FMGC.CasCompare.casRejectAll.getBoolValue() and fbw.FBW.apOff == 0) {
|
||||
Output.athr.setBoolValue(1);
|
||||
Custom.ThrLock.setValue(0);
|
||||
Custom.Sound.enableAthrOff = 1;
|
||||
|
|
|
@ -26,10 +26,7 @@ var altitude = 0;
|
|||
var flap = 0;
|
||||
var flaps = 0;
|
||||
var ktsmach = 0;
|
||||
var kts_sel = 0;
|
||||
var mach_sel = 0;
|
||||
var srsSPD = 0;
|
||||
var decel = 0;
|
||||
var mng_alt_spd = 0;
|
||||
var mng_alt_mach = 0;
|
||||
var altsel = 0;
|
||||
|
@ -75,6 +72,7 @@ var FMGCinit = func {
|
|||
var FMGCInternal = {
|
||||
# phase logic
|
||||
phase: 0,
|
||||
decel: 0,
|
||||
minspeed: 0,
|
||||
maxspeed: 0,
|
||||
clbSpdLim: 250,
|
||||
|
@ -132,6 +130,9 @@ var FMGCInternal = {
|
|||
vrset: 0,
|
||||
v2: 0,
|
||||
v2set: 0,
|
||||
toFlap: 0,
|
||||
toThs: 0,
|
||||
toFlapThsSet: 0,
|
||||
|
||||
# PERF APPR
|
||||
destMag: 0,
|
||||
|
@ -258,13 +259,16 @@ var postInit = func() {
|
|||
|
||||
var FMGCNodes = {
|
||||
costIndex: props.globals.initNode("/FMGC/internal/cost-index", 0, "DOUBLE"),
|
||||
decel: props.globals.initNode("/FMGC/internal/decel", 0, "BOOL"),
|
||||
flexSet: props.globals.initNode("/FMGC/internal/flex-set", 0, "BOOL"),
|
||||
flexTemp: props.globals.initNode("/FMGC/internal/flex", 0, "INT"),
|
||||
mngSpdAlt: props.globals.getNode("/FMGC/internal/mng-alt-spd"),
|
||||
ktsToMachFactor: props.globals.getNode("/FMGC/internal/kts-to-mach-factor"),
|
||||
machToKtsFactor: props.globals.getNode("/FMGC/internal/mach-to-kts-factor"),
|
||||
mngMachAlt: props.globals.getNode("/FMGC/internal/mng-alt-mach"),
|
||||
Power: {
|
||||
FMGC1Powered: props.globals.getNode("systems/fmgc/power/power-1-on"),
|
||||
FMGC2Powered: props.globals.getNode("systems/fmgc/power/power-2-on"),
|
||||
},
|
||||
toFromSet: props.globals.initNode("/FMGC/internal/tofrom-set", 0, "BOOL"),
|
||||
ldgElev: props.globals.getNode("/FMGC/internal/ldg-elev", 1),
|
||||
toState: props.globals.initNode("/FMGC/internal/to-state", 0, "BOOL"),
|
||||
|
@ -303,9 +307,15 @@ var updateARPT = func {
|
|||
}
|
||||
}
|
||||
|
||||
var updateArptLatLon = func {
|
||||
var apt = nil;
|
||||
var dms = nil;
|
||||
var degrees = nil;
|
||||
var minutes = nil;
|
||||
var sign = nil;
|
||||
var updateArptLatLon = func() {
|
||||
#ref lat
|
||||
dms = getprop("/FMGC/flightplan[2]/wp[0]/lat");
|
||||
apt = airportinfo(FMGCInternal.depApt);
|
||||
dms = apt.lat;
|
||||
degrees = int(dms);
|
||||
minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
||||
sign = degrees >= 0 ? "N" : "S";
|
||||
|
@ -313,7 +323,7 @@ var updateArptLatLon = func {
|
|||
setprop("/FMGC/internal/align-ref-lat-minutes", minutes);
|
||||
setprop("/FMGC/internal/align-ref-lat-sign", sign);
|
||||
#ref long
|
||||
dms = getprop("/FMGC/flightplan[2]/wp[0]/lon");
|
||||
dms = apt.lon;
|
||||
degrees = int(dms);
|
||||
minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
||||
sign = degrees >= 0 ? "E" : "W";
|
||||
|
@ -605,7 +615,7 @@ var masterFMGC = maketimer(0.2, func {
|
|||
}
|
||||
}
|
||||
} elsif (FMGCInternal.phase == 4) {
|
||||
if (FMGCNodes.decel.getValue()) {
|
||||
if (FMGCInternal.decel) {
|
||||
newphase = 5;
|
||||
}
|
||||
} elsif (FMGCInternal.phase == 5) {
|
||||
|
@ -621,9 +631,9 @@ var masterFMGC = maketimer(0.2, func {
|
|||
|
||||
if (flightPlanController.num[2].getValue() > 0 and getprop("/FMGC/flightplan[2]/active") == 1 and
|
||||
flightPlanController.arrivalDist <= 15 and (modelat == "NAV" or modelat == "LOC" or modelat == "LOC*") and pts.Position.gearAglFt.getValue() < 9500) { #todo decel pseudo waypoint
|
||||
FMGCNodes.decel.setValue(1);
|
||||
} elsif (FMGCNodes.decel.getValue() and (FMGCInternal.phase == 0 or FMGCInternal.phase == 6)) {
|
||||
FMGCNodes.decel.setValue(0);
|
||||
FMGCInternal.decel = 1;
|
||||
} elsif (FMGCInternal.decel and (FMGCInternal.phase == 0 or FMGCInternal.phase == 6)) {
|
||||
FMGCInternal.decel = 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -977,7 +987,6 @@ var ManagedSPD = maketimer(0.25, func {
|
|||
if (FMGCInternal.crzSet and FMGCInternal.costIndexSet) {
|
||||
if (Custom.Input.spdManaged.getBoolValue()) {
|
||||
altitude = pts.Instrumentation.Altimeter.indicatedFt.getValue();
|
||||
decel = FMGCNodes.decel.getValue();
|
||||
ktsmach = Input.ktsMach.getValue();
|
||||
mode = Modes.PFD.FMA.pitchMode.getValue();
|
||||
srsSPD = srsSpeedNode.getValue();
|
||||
|
@ -998,12 +1007,12 @@ var ManagedSPD = maketimer(0.25, func {
|
|||
} elsif ((FMGCInternal.phase == 2 or FMGCInternal.phase == 3) and altitude <= FMGCInternal.clbSpdLimAlt) {
|
||||
# Speed is maximum of greendot / climb speed limit
|
||||
FMGCInternal.mngKtsMach = 0;
|
||||
FMGCInternal.mngSpdCmd = decel ? FMGCInternal.minspeed : math.clamp(FMGCInternal.clbSpdLim, FMGCInternal.clean, 999);
|
||||
FMGCInternal.mngSpdCmd = FMGCInternal.decel ? FMGCInternal.minspeed : math.clamp(FMGCInternal.clbSpdLim, FMGCInternal.clean, 999);
|
||||
} elsif ((FMGCInternal.phase == 2 or FMGCInternal.phase == 3) and altitude > (FMGCInternal.clbSpdLimAlt + 20)) {
|
||||
FMGCInternal.mngKtsMach = FMGCInternal.machSwitchover ? 1 : 0;
|
||||
FMGCInternal.mngSpdCmd = FMGCInternal.machSwitchover ? mng_alt_mach : mng_alt_spd;
|
||||
} elsif ((FMGCInternal.phase >= 4 and FMGCInternal.phase <= 6) and altitude > (FMGCInternal.desSpdLimAlt + 20)) {
|
||||
if (decel) {
|
||||
if (FMGCInternal.decel) {
|
||||
FMGCInternal.mngKtsMach = 0;
|
||||
FMGCInternal.mngSpdCmd = FMGCInternal.minspeed;
|
||||
} else {
|
||||
|
@ -1013,7 +1022,7 @@ var ManagedSPD = maketimer(0.25, func {
|
|||
} elsif ((FMGCInternal.phase >= 4 and FMGCInternal.phase <= 6) and altitude <= FMGCInternal.desSpdLimAlt) {
|
||||
FMGCInternal.mngKtsMach = 0;
|
||||
# Speed is maximum of greendot / descent speed limit
|
||||
FMGCInternal.mngSpdCmd = decel ? FMGCInternal.minspeed : math.clamp(FMGCInternal.desSpdLim, FMGCInternal.clean, 999);
|
||||
FMGCInternal.mngSpdCmd = FMGCInternal.decel ? FMGCInternal.minspeed : math.clamp(FMGCInternal.desSpdLim, FMGCInternal.clean, 999);
|
||||
}
|
||||
|
||||
# Clamp to minspeed, maxspeed
|
||||
|
|
|
@ -195,7 +195,7 @@ var MessageController = {
|
|||
typeIIMessages: std.Vector.new([
|
||||
TypeIIMessage.new("LAT DISCONT AHEAD", "amb", 0),TypeIIMessage.new("MORE DRAG"),TypeIIMessage.new("RWY/LS MISMATCH", "amb", 0),TypeIIMessage.new("STEP DELETED"),
|
||||
TypeIIMessage.new("STEP NOW"),TypeIIMessage.new("TIME TO EXIT", "amb", 0),TypeIIMessage.new("V1/VR/V2 DISAGREE", "amb", 0),
|
||||
TypeIIMessage.new("TO SPEED TOO LOW", "amb", 0),
|
||||
TypeIIMessage.new("T.O SPEEDS TOO LOW", "amb", 0),TypeIIMessage.new("CHECK TAKE OFF DATA", "amb", 0),
|
||||
TypeIIMessage.new("CHECK DEST DATA", "amb", 0), #p.533
|
||||
TypeIIMessage.new("GPS PRIMARY"),TypeIIMessage.new("GPS PRIMARY LOST", "amb", 0),
|
||||
]),
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
var airwaysPage = {
|
||||
title: [nil, nil, nil],
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -45,7 +44,6 @@ var airwaysPage = {
|
|||
me.R1 = [nil, "TO ", "blu"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0]];
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
makeTmpy: func() {
|
||||
|
@ -67,7 +65,6 @@ var airwaysPage = {
|
|||
}
|
||||
},
|
||||
updateAirways: func(index, airwayName) {
|
||||
me.fontMatrix[0][index - 1] = 0;
|
||||
if (index == 1) {
|
||||
me.L1[0] = airwayName;
|
||||
} elsif (index == 2) {
|
||||
|
|
|
@ -5,7 +5,6 @@ var isNoVia = [0, 0, 0];
|
|||
var arrivalPage = {
|
||||
title: [nil, nil, nil],
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -132,7 +131,6 @@ var arrivalPage = {
|
|||
_setupPageWithData: func() {
|
||||
me.title = ["ARRIVAL", " TO ", left(me.id, 4)];
|
||||
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
|
||||
|
@ -178,7 +176,6 @@ var arrivalPage = {
|
|||
me.R4 = [nil, nil, "ack"];
|
||||
me.R5 = [nil, nil, "ack"];
|
||||
me.R6 = [nil, nil, "ack"];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "ack"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
},
|
||||
|
|
|
@ -2,7 +2,6 @@ var latReq = {
|
|||
title: [nil, nil, nil],
|
||||
titleColour: "wht",
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
var atisPage = {
|
||||
title: nil,
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -77,7 +76,6 @@ var atisPage = {
|
|||
me.R6 = ["PRINT ", nil, "blu"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "wht", "wht"], ["ack", "ack", "ack", "ack", "ack", "blu"]];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
update: func() {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
var closestAirportPage = {
|
||||
title: nil,
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -40,12 +39,13 @@ var closestAirportPage = {
|
|||
me.title = "CLOSEST AIRPORTS";
|
||||
me.C1[1] = " BRG DIST";
|
||||
me.R1[1] = "UTC ";
|
||||
me.L5 = ["[ ]", nil, "blu"];
|
||||
me.L5 = ["[ ]", nil, "blu"];
|
||||
me.C5 = [nil, me.frozen ? "LIST FROZEN" : nil, "grn"];
|
||||
me.R5 = [nil, nil, "grn"];
|
||||
me.L6 = [" FREEZE", nil, "blu"];
|
||||
me.R6 = ["EFOB/WIND ", nil, "wht"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 1]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "blu"], ["ack", "ack", "ack", "ack", "ack", "wht"]];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0]];
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
me.update();
|
||||
me.updateBrgDist();
|
||||
|
@ -98,31 +98,64 @@ var closestAirportPage = {
|
|||
var magvarLocal = magvar();
|
||||
if (size(me.airports) >= 1) {
|
||||
me.cdVector[0] = courseAndDistance(me.airports[0]);
|
||||
me.C1 = [math.round(me.cdVector[0][0] - magvarLocal) ~ " " ~ math.round(me.cdVector[0][1]), " BRG DIST", "grn"];
|
||||
me.brg = me.cdVector[0][0] - magvarLocal;
|
||||
if (me.brg > 360) {
|
||||
me.brg -= 360;
|
||||
} else if (me.brg < 0) {
|
||||
me.brg += 360;
|
||||
}
|
||||
|
||||
me.C1 = [sprintf("%03d°",me.brg) ~ " " ~ sprintf("%4d",math.round(me.cdVector[0][1])), " BRG DIST", "grn"];
|
||||
}
|
||||
if (size(me.airports) >= 2) {
|
||||
me.cdVector[1] = courseAndDistance(me.airports[1]);
|
||||
me.C2 = [math.round(me.cdVector[1][0] - magvarLocal) ~ " " ~ math.round(me.cdVector[1][1]) , nil, "grn"];
|
||||
me.brg = me.cdVector[1][0] - magvarLocal;
|
||||
if (me.brg > 360) {
|
||||
me.brg -= 360;
|
||||
} else if (me.brg < 0) {
|
||||
me.brg += 360;
|
||||
}
|
||||
|
||||
me.C2 = [sprintf("%03d°",me.brg) ~ " " ~ sprintf("%4d",math.round(me.cdVector[1][1])), nil, "grn"];
|
||||
}
|
||||
if (size(me.airports) >= 3) {
|
||||
me.cdVector[2] = courseAndDistance(me.airports[2]);
|
||||
me.C3 = [math.round(me.cdVector[2][0] - magvarLocal) ~ " " ~ math.round(me.cdVector[2][1]), nil, "grn"];
|
||||
me.brg = me.cdVector[2][0] - magvarLocal;
|
||||
if (me.brg > 360) {
|
||||
me.brg -= 360;
|
||||
} else if (me.brg < 0) {
|
||||
me.brg += 360;
|
||||
}
|
||||
|
||||
me.C3 = [sprintf("%03d°",me.brg) ~ " " ~ sprintf("%4d",math.round(me.cdVector[2][1])), nil, "grn"];
|
||||
}
|
||||
if (size(me.airports) >= 4) {
|
||||
me.cdVector[3] = courseAndDistance(me.airports[3]);
|
||||
me.C4 = [math.round(me.cdVector[3][0] - magvarLocal) ~ " " ~ math.round(me.cdVector[3][1]), nil, "grn"];
|
||||
me.brg = me.cdVector[3][0] - magvarLocal;
|
||||
if (me.brg > 360) {
|
||||
me.brg -= 360;
|
||||
} else if (me.brg < 0) {
|
||||
me.brg += 360;
|
||||
}
|
||||
|
||||
me.C4 = [sprintf("%03d°",me.brg) ~ " " ~ sprintf("%4d",math.round(me.cdVector[3][1])), nil, "grn"];
|
||||
}
|
||||
if (me.manAirport != nil) {
|
||||
me.C5 = [math.round(courseAndDistance(me.manAirport)[0] - magvarLocal) ~ " " ~ math.round(courseAndDistance(me.manAirport)[1]), nil, "grn"];
|
||||
me.brg = courseAndDistance(me.manAirport)[0] - magvarLocal;
|
||||
if (me.brg > 360) {
|
||||
me.brg -= 360;
|
||||
} else if (me.brg < 0) {
|
||||
me.brg += 360;
|
||||
}
|
||||
|
||||
me.C5 = [sprintf("%03d°",me.brg) ~ " " ~ sprintf("%4d",math.round(courseAndDistance(me.manAirport)[1])), me.frozen ? "LIST FROZEN" : nil, "grn"];
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
manAirportCall: func(id) {
|
||||
if (id == "CLR") {
|
||||
me.manAirport = nil;
|
||||
me.L5 = [nil, nil, "grn"];
|
||||
me.C5 = [nil, nil, "grn"];
|
||||
me.R5 = [nil, nil, "grn"];
|
||||
me._setupPageWithData();
|
||||
return;
|
||||
}
|
||||
if (size(id) > 4) {
|
||||
|
@ -133,6 +166,7 @@ var closestAirportPage = {
|
|||
me.manAirport = airportinfo(id);
|
||||
me.L5 = [id, nil, "grn"];
|
||||
me.R5 = ["----", nil, "grn"];
|
||||
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||
}
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ var isNoTransDep = [0, 0, 0];
|
|||
var departurePage = {
|
||||
title: [nil, nil, nil],
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -106,7 +105,6 @@ var departurePage = {
|
|||
_setupPageWithData: func() {
|
||||
me.title = ["DEPARTURE", " FROM ", left(me.id, 4)];
|
||||
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
|
||||
|
@ -147,7 +145,6 @@ var departurePage = {
|
|||
me.R4 = [nil, nil, "ack"];
|
||||
me.R5 = [nil, nil, "ack"];
|
||||
me.R6 = [nil, nil, "ack"];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "ack"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
},
|
||||
|
@ -561,6 +558,19 @@ var departurePage = {
|
|||
me.selectedRunway = me.depAirport[0].runway(me.runways[index - 2 + me.scrollRwy]);
|
||||
me.makeTmpy();
|
||||
fmgc.flightPlanController.flightplans[me.computer].departure_runway = me.selectedRunway;
|
||||
mcdu.perfToCheckTakeoffData(me.computer);
|
||||
if (fmgc.FMGCInternal.v1set) {
|
||||
fmgc.FMGCInternal.v1set = 0;
|
||||
fmgc.FMGCInternal.v1 = 0;
|
||||
}
|
||||
if (fmgc.FMGCInternal.vrset) {
|
||||
fmgc.FMGCInternal.vrset = 0;
|
||||
fmgc.FMGCInternal.vr = 0;
|
||||
}
|
||||
if (fmgc.FMGCInternal.v2set) {
|
||||
fmgc.FMGCInternal.v2set = 0;
|
||||
fmgc.FMGCInternal.v2 = 0;
|
||||
}
|
||||
me.updateRunways();
|
||||
me.updatePage();
|
||||
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
||||
|
|
|
@ -3,7 +3,6 @@ var dirToFlag = 0;
|
|||
var dirTo = {
|
||||
title: [nil],
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -46,7 +45,6 @@ var dirTo = {
|
|||
me.R5 = ["[ ] ", "RADIAL OUT ", "blu"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "blu", "blu", "blu", "blu", "ack"], ["ack", "blu", "blu", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
||||
me.updateFromFpln();
|
||||
me.updateTmpy();
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
|
@ -82,7 +80,7 @@ var dirTo = {
|
|||
var x = 0;
|
||||
me.vector = [];
|
||||
for (var i = 1 + (me.scroll); i < size(canvas_mcdu.myFpln[me.computer].planList) - 2; i = i + 1) {
|
||||
if (canvas_mcdu.myFpln[me.computer].planList[i].wp.wp_name == "DISCONTINUITY" or canvas_mcdu.myFpln[me.computer].planList[i].wp.wp_name == "VECTORS" or canvas_mcdu.myFpln[me.computer].planList[i].wp.wp_name == "T-P" or canvas_mcdu.myFpln[me.computer].planList[i].wp.wp_type == "hdgToAlt") { continue; } # can't ever have tmpy with dir to
|
||||
if (canvas_mcdu.myFpln[me.computer].planList[i].wp.wp_name == "DISCONTINUITY" or canvas_mcdu.myFpln[me.computer].planList[i].wp.wp_name == "VECTORS" or canvas_mcdu.myFpln[me.computer].planList[i].wp.wp_name == "T-P" or canvas_mcdu.myFpln[me.computer].planList[i].wp.wp_type == "hdgToAlt") { continue; }
|
||||
if (canvas_mcdu.myFpln[me.computer].planList[i].index > fmgc.flightPlanController.arrivalIndex[2]) {
|
||||
continue;
|
||||
}
|
||||
|
@ -148,7 +146,6 @@ var dirTo = {
|
|||
fieldL1: func(text, override = 0, overrideIndex = -1) {
|
||||
me.makeTmpy();
|
||||
me.L1[0] = text;
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
||||
if (size(text) == 16) {
|
||||
# lat lon
|
||||
var lat = split("/", text)[0];
|
||||
|
@ -237,7 +234,6 @@ var dirTo = {
|
|||
leftFieldBtn: func(index) {
|
||||
me.makeTmpy();
|
||||
me.L1[0] = me.vector[index - 2].wp_name;
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
||||
fmgc.flightPlanController.directTo(me.vector[index - 2], me.computer);
|
||||
me.arrowsMatrix[0][1] = 0;
|
||||
# FIGURE OUT HOW TO MAKE IT SO IT DOESN'T DELETE THE WAYPOINTS ON DIR TO BUT DOES IN FLIGHTPLAN
|
||||
|
@ -254,7 +250,6 @@ var dirTo = {
|
|||
dirToFlag = 0;
|
||||
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 0);
|
||||
me.L1 = [" [ ]", " WAYPOINT", "blu"];
|
||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
||||
me.R1 = ["---- --- ", "UTC DIST ", "wht"];
|
||||
} else {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
|
@ -265,7 +260,6 @@ var dirTo = {
|
|||
dirToFlag = 0;
|
||||
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 1);
|
||||
me.L1 = [" [ ]", " WAYPOINT", "blu"];
|
||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
||||
me.R1 = ["---- --- ", "UTC DIST ", "wht"];
|
||||
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA"); # todo - remember horizontal srcoll of f-plna?
|
||||
} else {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
var duplicateNamesPage = {
|
||||
title: nil,
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -49,7 +48,6 @@ var duplicateNamesPage = {
|
|||
me.title = "DUPLICATE NAMES";
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
|
||||
me.distances = [];
|
||||
for (var i = 0; i < size(me.vector); i += 1) {
|
||||
|
|
|
@ -160,22 +160,22 @@ var fplnItem = {
|
|||
if (me.wp.wp_name == "DISCONTINUITY") {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(4, me.wp, me.index, me.computer);
|
||||
} elsif (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(1, me.wp, me.index, me.computer);
|
||||
} elsif (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[me.computer].departure.id) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(0, me.wp, me.index, me.computer);
|
||||
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(2, me.wp, me.index, me.computer);
|
||||
} elsif (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(1, me.wp, me.index, me.computer);
|
||||
} elsif (fmgc.flightPlanController.flightplans[me.computer].departure != nil and left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[me.computer].departure.id) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(0, me.wp, me.index, me.computer);
|
||||
} else {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(3, me.wp, me.index, me.computer);
|
||||
}
|
||||
} else {
|
||||
if (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(1, me.wp, me.index, me.computer);
|
||||
} elsif (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[2].departure.id) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(0, me.wp, me.index, me.computer);
|
||||
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(2, me.wp, me.index, me.computer);
|
||||
} elsif (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(1, me.wp, me.index, me.computer);
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].departure != nil and left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[2].departure.id) {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(0, me.wp, me.index, me.computer);
|
||||
} else {
|
||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(3, me.wp, me.index, me.computer);
|
||||
}
|
||||
|
@ -190,22 +190,22 @@ var fplnItem = {
|
|||
canvas_mcdu.myVertRev[me.computer] = nil;
|
||||
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
if (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} if (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[me.computer].departure.id) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
||||
} elsif (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} if (fmgc.flightPlanController.flightplans[me.computer].departure != nil and left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[me.computer].departure.id) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} else {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
||||
}
|
||||
} else {
|
||||
if (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} elsif (left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[2].departure.id) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} elsif (me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
||||
} elsif (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(1, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} elsif (fmgc.flightPlanController.flightplans[2].departure != nil and left(me.wp.wp_name, 4) == fmgc.flightPlanController.flightplans[2].departure.id) {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(0, left(me.wp.wp_name, 4), me.index, me.computer, me.wp, me.plan);
|
||||
} else {
|
||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
||||
}
|
||||
|
@ -290,8 +290,32 @@ var staticText = {
|
|||
},
|
||||
};
|
||||
|
||||
var pseudoItem = {
|
||||
new: func(computer, text) {
|
||||
var pI = {parents:[pseudoItem]};
|
||||
pI.computer = computer;
|
||||
pI.text = text;
|
||||
pI.colour = colour;
|
||||
return pI;
|
||||
},
|
||||
updateLeftText: func() {
|
||||
return [me.text, nil, me.colour];
|
||||
},
|
||||
updateCenterText: func() {
|
||||
return ["----", nil, "wht"];
|
||||
},
|
||||
updateRightText: func() {
|
||||
return ["---/------", " --NM ", "wht"];
|
||||
},
|
||||
pushButtonLeft: func() {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
},
|
||||
pushButtonRight: func() {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
},
|
||||
};
|
||||
|
||||
var fplnPage = { # this one is only created once, and then updated - remember this
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
L2: [nil, nil, "ack"],
|
||||
L3: [nil, nil, "ack"],
|
||||
|
@ -347,6 +371,8 @@ var fplnPage = { # this one is only created once, and then updated - remember th
|
|||
return "----END OF ALTN F-PLN---";
|
||||
} else if (type == "noAltnFpln") {
|
||||
return "------NO ALTN F-PLN-----";
|
||||
} else if (type == "decel") {
|
||||
return "(DECEL)";
|
||||
} else if (type == "empty") {
|
||||
return "";
|
||||
}
|
||||
|
@ -509,9 +535,18 @@ var fplnPage = { # this one is only created once, and then updated - remember th
|
|||
setprop("MCDU[" ~ me.computer ~ "]/page", "LATREV");
|
||||
}
|
||||
} else {
|
||||
if (size(me.outputList) >= index) {
|
||||
if ((index - 1 + me.scroll) < size(me.planList) and !mcdu_scratchpad.scratchpads[me.computer].showTypeIMsg and !mcdu_scratchpad.scratchpads[me.computer].showTypeIIMsg) {
|
||||
if (size(mcdu_scratchpad.scratchpads[me.computer].scratchpad) > 0) {
|
||||
var returny = fmgc.flightPlanController.scratchpad(mcdu_scratchpad.scratchpads[me.computer].scratchpad, (index - 1 + me.scroll), me.computer);
|
||||
|
||||
# Use outputList.index to correct the index the call goes to after sequencing
|
||||
|
||||
if (mcdu_scratchpad.scratchpads[me.computer].scratchpad == "CLR") {
|
||||
if (me.outputList[index - 1].wp.wp_name == "(DECEL)") {
|
||||
mcdu_message(me.computer, "NOT ALLOWED");
|
||||
return;
|
||||
}
|
||||
}
|
||||
var returny = fmgc.flightPlanController.scratchpad(mcdu_scratchpad.scratchpads[me.computer].scratchpad, me.outputList[index - 1].index, me.computer);
|
||||
if (returny == 3) {
|
||||
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
||||
} elsif (returny == 0) {
|
||||
|
|
|
@ -196,4 +196,4 @@ var engine_one_chk_OOOI = setlistener("/engines/engine[0]/state", func {
|
|||
removelistener(engine_one_chk_OOOI);
|
||||
waitingOOOIChange.start();
|
||||
}
|
||||
},0,0);
|
||||
},0,0);
|
||||
|
|
|
@ -169,6 +169,7 @@ var fuelPredInput = func(key, i) {
|
|||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
} else if (find("/", scratchpad) != -1) {
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
scratchpad = scratchpad / LBS2KGS;
|
||||
|
@ -199,6 +200,7 @@ var fuelPredInput = func(key, i) {
|
|||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
|
@ -235,6 +237,7 @@ var fuelPredInput = func(key, i) {
|
|||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
var holdPage = {
|
||||
title: [nil, nil, nil],
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -41,37 +40,35 @@ var holdPage = {
|
|||
me.title = ["HOLD", " AT ", me.waypoint.wp_name];
|
||||
me.titleColour = "wht";
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["wht", "wht", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["blu", "blu", "ack", "ack", "ack", "ack"]];
|
||||
if (me.waypoint.fly_type == "Hold") {
|
||||
me.makeTmpy();
|
||||
me.L1 = [" " ~ sprintf("%03.0f", me.waypoint.hold_inbound_radial), "INB CRS", "blu"];
|
||||
me.fontMatrix[0][0] = 0;
|
||||
me.L1 = [sprintf("%03.0f°", me.waypoint.hold_inbound_radial), "INB CRS", "blu"];
|
||||
|
||||
if (me.waypoint.hold_is_left_handed) {
|
||||
me.L2 = [" L", " TURN", "blu"];
|
||||
me.L2 = ["L", " TURN", "blu"];
|
||||
} else {
|
||||
me.L2 = [" R", " TURN", "blu"];
|
||||
me.L2 = ["R", " TURN", "blu"];
|
||||
}
|
||||
|
||||
if (me.waypoint.hold_is_distance) {
|
||||
me.L2 = [" -.-/" ~ me.waypoint.hold_time_or_distance, "TIME/DIST", "blu"];
|
||||
me.L3 = [" -.-/" ~ me.waypoint.hold_time_or_distance, "TIME/DIST", "blu"];
|
||||
} else {
|
||||
me.L2 = [" " ~ sprintf("%3.1f", (me.waypoint.hold_time_or_distance / 60)) ~ "/----", "TIME/DIST", "blu"];
|
||||
me.L3 = [sprintf("%3.1f", (me.waypoint.hold_time_or_distance / 60)) ~ "/----", "TIME/DIST", "blu"];
|
||||
}
|
||||
me.R1 = ["COMPUTED ", nil, "wht"];
|
||||
me.R1 = ["COMPUTED ", nil, "blu"];
|
||||
me.R2 = ["DATABASE ", nil, "yel"];
|
||||
me.arrowsMatrix[1][1] = 0;
|
||||
} else {
|
||||
me.L1 = [" 100", "INB CRS", "blu"];
|
||||
me.L2 = [" R", " TURN", "blu"];
|
||||
me.L1 = ["100°", "INB CRS", "blu"];
|
||||
me.L2 = ["R", " TURN", "blu"];
|
||||
if (pts.Instrumentation.Altimeter.indicatedFt.getValue() >= 14000) {
|
||||
me.L2 = [" 1.5/----", "TIME/DIST", "blu"];
|
||||
me.L3 = ["1.5/----", "TIME/DIST", "blu"];
|
||||
} else {
|
||||
me.L2 = [" 1.0/----", "TIME/DIST", "blu"];
|
||||
me.L3 = ["1.0/----", "TIME/DIST", "blu"];
|
||||
}
|
||||
me.R1 = ["COMPUTED ", nil, "wht"];
|
||||
me.R2 = ["DATABASE ", nil, "wht"];
|
||||
me.R1 = ["COMPUTED ", nil, "blu"];
|
||||
me.R2 = ["DATABASE ", nil, "blu"];
|
||||
}
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.C4 = ["LAST EXIT", nil, "wht"];
|
||||
|
@ -87,6 +84,7 @@ var holdPage = {
|
|||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
me.L1[2] = "yel";
|
||||
me.L2[2] = "yel";
|
||||
me.L3[2] = "yel";
|
||||
me.L6 = [" F-PLN", " TMPY", "yel"];
|
||||
me.R6 = ["INSERT ", " TMPY", "yel"];
|
||||
me.arrowsColour[0][5] = "yel";
|
||||
|
@ -95,6 +93,7 @@ var holdPage = {
|
|||
} else {
|
||||
me.L1[2] = "blu";
|
||||
me.L2[2] = "blu";
|
||||
me.L3[2] = "blu";
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.R6 = [nil, nil, "ack"];
|
||||
me.arrowsColour[0][5] = "wht";
|
||||
|
|
|
@ -3,6 +3,29 @@
|
|||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
var resetFlightplan = func(i) {
|
||||
fmgc.FMGCInternal.depApt = "";
|
||||
fmgc.FMGCInternal.arrApt = "";
|
||||
fmgc.FMGCInternal.toFromSet = 0;
|
||||
fmgc.FMGCNodes.toFromSet.setValue(0);
|
||||
fmgc.windController.resetDesWinds();
|
||||
setprop("/FMGC/internal/align-ref-lat", 0);
|
||||
setprop("/FMGC/internal/align-ref-long", 0);
|
||||
setprop("/FMGC/internal/align-ref-lat-edit", 0);
|
||||
setprop("/FMGC/internal/align-ref-long-edit", 0);
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
fmgc.flightPlanController.reset(2);
|
||||
fmgc.flightPlanController.init();
|
||||
Simbrief.SimbriefParser.inhibit = 0;
|
||||
fmgc.updateARPT();
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
}
|
||||
|
||||
var initInputA = func(key, i) {
|
||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||
if (key == "L1") { #clear coRoute if set
|
||||
|
@ -222,26 +245,7 @@ var initInputA = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
else if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.depApt = "";
|
||||
fmgc.FMGCInternal.arrApt = "";
|
||||
fmgc.FMGCInternal.toFromSet = 0;
|
||||
fmgc.FMGCNodes.toFromSet.setValue(0);
|
||||
fmgc.windController.resetDesWinds();
|
||||
setprop("/FMGC/internal/align-ref-lat", 0);
|
||||
setprop("/FMGC/internal/align-ref-long", 0);
|
||||
setprop("/FMGC/internal/align-ref-lat-edit", 0);
|
||||
setprop("/FMGC/internal/align-ref-long-edit", 0);
|
||||
if (fmgc.FMGCInternal.blockConfirmed) {
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
}
|
||||
fmgc.flightPlanController.reset(2);
|
||||
fmgc.flightPlanController.init();
|
||||
Simbrief.SimbriefParser.inhibit = 0;
|
||||
fmgc.updateARPT();
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
resetFlightplan(i);
|
||||
#} else if (scratchpad == "") {
|
||||
#fmgc.FMGCInternal.altSelected = 0;
|
||||
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
|
||||
|
@ -253,18 +257,15 @@ var initInputA = func(key, i) {
|
|||
var froms = size(fromto[0]);
|
||||
var tos = size(fromto[1]);
|
||||
if (froms == 4 and tos == 4) {
|
||||
#route
|
||||
if (fmgc.FMGCInternal.toFromSet == 1 and fmgc.FMGCInternal.arrApt != fromto[1]) {
|
||||
fmgc.windController.resetDesWinds();
|
||||
}
|
||||
resetFlightplan(i);
|
||||
fmgc.FMGCInternal.depApt = fromto[0];
|
||||
fmgc.FMGCInternal.arrApt = fromto[1];
|
||||
atsu.ATISInstances[0].newStation(fromto[0]);
|
||||
atsu.ATISInstances[1].newStation(fromto[1]);
|
||||
fmgc.FMGCInternal.toFromSet = 1;
|
||||
fmgc.FMGCNodes.toFromSet.setValue(1);
|
||||
#scratchpad
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
|
||||
fmgc.flightPlanController.updateAirports(fromto[0], fromto[1], 2);
|
||||
fmgc.FMGCInternal.altSelected = 0;
|
||||
fmgc.updateARPT();
|
||||
|
|
|
@ -207,6 +207,7 @@ var initInputB = func(key, i) {
|
|||
fmgc.blockCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
} else if (find("/", scratchpad) != -1) {
|
||||
if (acconfig_weight_kgs.getValue() == 1) {
|
||||
scratchpad = scratchpad / LBS2KGS;
|
||||
|
@ -238,6 +239,7 @@ var initInputB = func(key, i) {
|
|||
fmgc.blockCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
|
@ -275,6 +277,7 @@ var initInputB = func(key, i) {
|
|||
fmgc.blockCalculating.setValue(1);
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
} else {
|
||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@ var latRev = {
|
|||
title: [nil, nil, nil],
|
||||
titleColour: "wht",
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -48,22 +47,22 @@ var latRev = {
|
|||
_setupPageWithData: func() {
|
||||
if (me.type == 2) {
|
||||
me.title = ["LAT REV", " FROM ", "PPOS"];
|
||||
var acPos = geo.aircraft_position();
|
||||
me.subtitle = [dmsToString(sprintf(acPos.lat()), "lat"), dmsToString(sprintf(acPos.lon()), "lon")];
|
||||
me.L2 = [" OFFSET", nil, "wht"];
|
||||
me.L3 = [" HOLD", nil, "wht"];
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.R1 = ["FIX INFO ", nil, "wht"];
|
||||
me.R2 = ["[ ]°/[ ]°/[ ]", "LL XING/INCR/NO", "blu"];
|
||||
me.R2 = ["[ ]°/[]°/[]", "LL XING/INCR/NO", "blu"];
|
||||
me.arrowsMatrix = [[0, 1, 1, 0, 0, 1], [1, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "wht", "wht", "ack", "ack", "wht"], ["wht", "ack", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0]];
|
||||
} elsif (me.type == 4) {
|
||||
me.title = ["LAT REV", " FROM ", "DISCON"];
|
||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||
me.R4 = ["[ ]", "NEW DEST", "blu"];
|
||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||
me.R4 = ["[ ]", "NEW DEST ", "blu"];
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0]];
|
||||
} else {
|
||||
if (me.type == 0) {
|
||||
me.title = ["LAT REV", " FROM ", left(me.wpt.wp_name, 4)];
|
||||
|
@ -72,17 +71,18 @@ var latRev = {
|
|||
} else {
|
||||
me.depAirport = findAirportsByICAO(me.wpt.wp_name);
|
||||
}
|
||||
me.subtitle = [dmsToString(sprintf(me.depAirport[0].lat), "lat"), dmsToString(sprintf(me.depAirport[0].lon), "lon")];
|
||||
if (size(me.depAirport) > 0) {
|
||||
me.subtitle = [dmsToString(sprintf(me.depAirport[0].lat), "lat"), dmsToString(sprintf(me.depAirport[0].lon), "lon")];
|
||||
}
|
||||
me.L1 = [" DEPARTURE", nil, "wht"];
|
||||
me.L2 = [" OFFSET", nil, "wht"];
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.R1 = ["FIX INFO ", nil, "wht"];
|
||||
me.R2 = ["[ ]°/[ ]°/[ ]", "LL XING/INCR/NO", "blu"];
|
||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||
me.R4 = ["[ ]", "NEW DEST", "blu"];
|
||||
me.R2 = ["[ ]°/[]°/[]", "LL XING/INCR/NO", "blu"];
|
||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||
me.R4 = ["[ ]", "NEW DEST ", "blu"];
|
||||
me.arrowsMatrix = [[1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["wht", "wht", "ack", "ack", "ack", "wht"], ["wht", "ack", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 0, 0]];
|
||||
} elsif (me.type == 1) {
|
||||
me.title = ["LAT REV", " FROM ", left(me.wpt.wp_name, 4)];
|
||||
me.arrowsMatrix = [[0, 0, 1, 1, 0, 1], [1, 0, 0, 0, 0, 0]];
|
||||
|
@ -92,7 +92,9 @@ var latRev = {
|
|||
} else {
|
||||
me.arrAirport = findAirportsByICAO(me.wpt.wp_name);
|
||||
}
|
||||
me.subtitle = [dmsToString(sprintf(me.arrAirport[0].lat), "lat"), dmsToString(sprintf(me.arrAirport[0].lon), "lon")];
|
||||
if (size(me.arrAirport) > 0) {
|
||||
me.subtitle = [dmsToString(sprintf(me.arrAirport[0].lat), "lat"), dmsToString(sprintf(me.arrAirport[0].lon), "lon")];
|
||||
}
|
||||
me.L3 = [" ALTN", nil, "wht"];
|
||||
if (fmgc.FMGCInternal.altAirportSet) {
|
||||
me.L4 = [" ALTN", " ENABLE", "blu"];
|
||||
|
@ -102,8 +104,7 @@ var latRev = {
|
|||
}
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.R1 = ["ARRIVAL ", nil, "wht"];
|
||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0]];
|
||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||
} elsif (me.type == 3) {
|
||||
me.title = ["LAT REV", " FROM ", me.wpt.wp_name];
|
||||
me.arrowsMatrix = [[0, 0, 1, 1, 0, 1], [1, 0, 0, 0, 1, 0]];
|
||||
|
@ -121,10 +122,9 @@ var latRev = {
|
|||
}
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.R1 = ["FIX INFO ", nil, "wht"];
|
||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||
me.R4 = ["[ ]", "NEW DEST", "blu"];
|
||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||
me.R4 = ["[ ]", "NEW DEST ", "blu"];
|
||||
me.R5 = ["AIRWAYS ", nil, "wht"];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0]];
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -164,7 +164,7 @@ var dmsToString = func(dms, type) {
|
|||
} else {
|
||||
var sign = degrees >= 0 ? "E" : "W";
|
||||
}
|
||||
return abs(degrees) ~ "g" ~ minutes ~ " " ~ sign;
|
||||
return abs(degrees) ~ "°" ~ minutes ~ sign;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -153,12 +153,11 @@ var MCDU_reset = func(i) {
|
|||
fmgc.FMGCInternal.vrset = 0;
|
||||
fmgc.FMGCInternal.v2 = 0;
|
||||
fmgc.FMGCInternal.v2set = 0;
|
||||
|
||||
setprop("/FMGC/internal/accel-agl-ft", 1500); #eventually set to 1500 above runway
|
||||
setprop("/MCDUC/thracc-set", 0);
|
||||
setprop("/FMGC/internal/to-flap", 0);
|
||||
setprop("/FMGC/internal/to-ths", "0.0");
|
||||
setprop("/FMGC/internal/flap-ths-set", 0);
|
||||
fmgc.FMGCInternal.toFlap = 0;
|
||||
fmgc.FMGCInternal.toThs = 0.0;
|
||||
fmgc.FMGCInternal.toFlapThsSet = 0;
|
||||
setprop("/FMGC/internal/flex", 0);
|
||||
setprop("/FMGC/internal/flex-set", 0);
|
||||
setprop("/FMGC/internal/eng-out-reduc", "1500");
|
||||
|
@ -524,7 +523,7 @@ var lskbutton = func(btn, i) {
|
|||
} else if (page == "PERFAPPR") {
|
||||
perfAPPRInput("L3",i);
|
||||
} else if (page == "STATUS") {
|
||||
statusInput("L3",i);
|
||||
fmgc.switchDatabase();
|
||||
} else if (page == "RADNAV") {
|
||||
radnavInput("L3",i);
|
||||
} else if (page == "DATA") {
|
||||
|
@ -788,7 +787,6 @@ var lskbutton = func(btn, i) {
|
|||
canvas_mcdu.myDuplicate[i].pushButtonLeft(5);
|
||||
} else if (page == "CLOSESTAIRPORT") {
|
||||
canvas_mcdu.myClosestAirport[i].manAirportCall(mcdu_scratchpad.scratchpads[i].scratchpad);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (page == "ATCMENU") {
|
||||
pageNode[i].setValue("NOTIFICATION");
|
||||
} else if (page == "FLTLOG") {
|
||||
|
@ -1173,7 +1171,16 @@ var rskbutton = func(btn, i) {
|
|||
}
|
||||
pageNode[i].setValue("WINDDES");
|
||||
} else if (page == "STATUS") {
|
||||
statusInput("R5",i);
|
||||
if (fmgc.WaypointDatabase.getCount() >= 1) {
|
||||
if (fmgc.WaypointDatabase.confirm[i]) {
|
||||
fmgc.WaypointDatabase.delete(i);
|
||||
fmgc.WaypointDatabase.confirm[i] = 0;
|
||||
} else {
|
||||
fmgc.WaypointDatabase.confirm[i] = 1;
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (page == "PERFTO") {
|
||||
perfTOInput("R5",i);
|
||||
} else if (page == "PERFAPPR") {
|
||||
|
@ -1524,17 +1531,25 @@ var button = func(btn, i, event = "") {
|
|||
} else { # up with buttonCLRDown[i]>4
|
||||
buttonCLRDown[i] = 0;
|
||||
}
|
||||
} else if (btn == "LONGCLR") {
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (btn == "DOT") {
|
||||
mcdu_scratchpad.scratchpads[i].addChar(".");
|
||||
} else if (btn == "PLUSMINUS") {
|
||||
if (right(mcdu_scratchpad.scratchpads[i].scratchpad, 1) == "-") {
|
||||
var _toggle = right(scratchpad,1);
|
||||
if (_toggle == "+" or _toggle == "-") {
|
||||
_toggle = (_toggle == "-") ? "+" : "-";
|
||||
mcdu_scratchpad.scratchpads[i].clear();
|
||||
mcdu_scratchpad.scratchpads[i].addChar("+");
|
||||
mcdu_scratchpad.scratchpads[i].addChar(_toggle);
|
||||
} else {
|
||||
mcdu_scratchpad.scratchpads[i].addChar("-");
|
||||
}
|
||||
} else if (btn == "OVFY") {
|
||||
mcdu_scratchpad.scratchpads[i].addChar("@");
|
||||
if (size(scratchpad) == 0) {
|
||||
mcdu_scratchpad.scratchpads[i].addChar("@");
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else {
|
||||
mcdu_scratchpad.scratchpads[i].addChar(btn);
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ var perfCLBInput = func(key, i) {
|
|||
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
||||
setprop("/FMGC/internal/activate-twice", 1);
|
||||
fmgc.FMGCInternal.phase = 5;
|
||||
setprop("/FMGC/internal/decel", 1);
|
||||
fmgc.FMGCInternal.decel = 1;
|
||||
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
|
|
@ -32,7 +32,7 @@ var perfCRZInput = func(key, i) {
|
|||
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
||||
setprop("/FMGC/internal/activate-twice", 1);
|
||||
fmgc.FMGCInternal.phase = 5;
|
||||
setprop("/FMGC/internal/decel", 1);
|
||||
fmgc.FMGCInternal.decel = 1;
|
||||
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
|
|
@ -32,7 +32,7 @@ var perfDESInput = func(key, i) {
|
|||
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
||||
setprop("/FMGC/internal/activate-twice", 1);
|
||||
fmgc.FMGCInternal.phase = 5;
|
||||
setprop("/FMGC/internal/decel", 1);
|
||||
fmgc.FMGCInternal.decel = 1;
|
||||
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
|
|
@ -3,19 +3,55 @@
|
|||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
# VMCA 109.5 at 0ft
|
||||
# VMCG 106.5 at 0ft all conf
|
||||
|
||||
var standard_VMCA = 109.5; # TODO calculate VMCA/VMCG on altitude (ft) of departure airport (read below)
|
||||
var standard_VMCG = 106.5;
|
||||
|
||||
# TODO - DepArp elevation or current elevation (on ground only!!) -> math.round(fmgc.flightPlanController.flightplans[2].departure.elevation * M2FT))
|
||||
|
||||
var perfTOCheckVSpeeds = func(i) {
|
||||
if (fmgc.FMGCInternal.v1set == 1 and fmgc.FMGCInternal.vrset == 1 and fmgc.FMGCInternal.v2set == 1) { # only when v1/vr/v2 all sets
|
||||
if (fmgc.FMGCInternal.v1>fmgc.FMGCInternal.vr or fmgc.FMGCInternal.vr > fmgc.FMGCInternal.v2) mcdu_messageTypeII(i,"V1/VR/V2 DISAGREE");
|
||||
else if (fmgc.FMGCInternal.v1<standard_VMCG or fmgc.FMGCInternal.vr<(standard_VMCA*1.05) or fmgc.FMGCInternal.v2<(standard_VMCA*1.10)) mcdu_messageTypeII(i,"TO SPEED TOO LOW");
|
||||
#else if (Vr<KVr*VS1G or V2<KV2*VS1G) mcdu_messageTypeII(i,"TO SPEED TOO LOW"); #TODO - check to VS1G and look constant KVr KV2 on manual, not own by me :/
|
||||
var doneMessageCheck = 0;
|
||||
var perfToCheckTakeoffData = func(i) {
|
||||
if (fmgc.FMGCInternal.v1set and fmgc.FMGCInternal.vrset and fmgc.FMGCInternal.v2set) {
|
||||
if (doneMessageCheck) {
|
||||
mcdu_scratchpad.messageQueues[i].deleteWithText("CHECK TAKE OFF DATA");
|
||||
}
|
||||
mcdu_scratchpad.messageQueues[i].addNewMsg(mcdu_scratchpad.MessageController.getTypeIIMsgByText("CHECK TAKE OFF DATA"));
|
||||
doneMessageCheck = 1;
|
||||
}
|
||||
}
|
||||
|
||||
var doneMessageDisag = 0;
|
||||
var perfTOCheckVSpeedsConsistency = func(i) {
|
||||
if (fmgc.FMGCInternal.v1set and fmgc.FMGCInternal.vrset and fmgc.FMGCInternal.v2set) {
|
||||
if (!(fmgc.FMGCInternal.v1 <= fmgc.FMGCInternal.vr and fmgc.FMGCInternal.vr <= fmgc.FMGCInternal.v2)) {
|
||||
if (doneMessageDisag) {
|
||||
mcdu_scratchpad.messageQueues[i].deleteWithText("V1/VR/V2 DISAGREE");
|
||||
}
|
||||
mcdu_scratchpad.messageQueues[i].addNewMsg(mcdu_scratchpad.MessageController.getTypeIIMsgByText("V1/VR/V2 DISAGREE"));
|
||||
doneMessageDisag = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var VMCA = props.globals.getNode("/FMGC/internal/vmca-kt");
|
||||
var VMCG = props.globals.getNode("/FMGC/internal/vmcg-kt");
|
||||
|
||||
var chooseVS1G = func() {
|
||||
if (fmgc.FMGCInternal.toFlap == 1) {
|
||||
return fmgc.FMGCInternal.vs1g_conf_1f;
|
||||
} elsif (fmgc.FMGCInternal.toFlap == 2) {
|
||||
return fmgc.FMGCInternal.vs1g_conf_2;
|
||||
} elsif (fmgc.FMGCInternal.toFlap == 3) {
|
||||
return fmgc.FMGCInternal.vs1g_conf_3;
|
||||
}
|
||||
};
|
||||
|
||||
var doneMessageToLow = 0;
|
||||
var perfTOCheckVSpeedsLimitations = func(i) {
|
||||
if (fmgc.FMGCInternal.toFlapThsSet and fmgc.FMGCInternal.zfwSet and fmgc.FMGCInternal.blockSet and fmgc.FMGCInternal.v1set and fmgc.FMGCInternal.vrset and fmgc.FMGCInternal.v2set) {
|
||||
if (fmgc.FMGCInternal.v1 < VMCG.getValue() or fmgc.FMGCInternal.vr < (VMCA.getValue() * 1.05) or fmgc.FMGCInternal.v2 < (VMCA.getValue() * 1.10) or fmgc.FMGCInternal.v2 < (1.13 * chooseVS1G())) {
|
||||
if (doneMessageToLow) {
|
||||
mcdu_scratchpad.messageQueues[i].deleteWithText("T.O SPEEDS TOO LOW");
|
||||
}
|
||||
mcdu_scratchpad.messageQueues[i].addNewMsg(mcdu_scratchpad.MessageController.getTypeIIMsgByText("T.O SPEEDS TOO LOW"));
|
||||
doneMessageToLow = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -42,7 +78,8 @@ var perfTOInput = func(key, i) {
|
|||
fmgc.FMGCNodes.v1set.setValue(1);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
|
||||
perfTOCheckVSpeeds(i); # do V-speeds validation
|
||||
perfTOCheckVSpeedsConsistency(i);
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
@ -63,7 +100,8 @@ var perfTOInput = func(key, i) {
|
|||
fmgc.FMGCInternal.vrset = 1;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
|
||||
perfTOCheckVSpeeds(i); # do V-speeds validation
|
||||
perfTOCheckVSpeedsConsistency(i);
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
@ -87,7 +125,8 @@ var perfTOInput = func(key, i) {
|
|||
setprop("/it-autoflight/settings/togaspd", scratchpad);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
|
||||
perfTOCheckVSpeeds(i); # do V-speeds validation
|
||||
perfTOCheckVSpeedsConsistency(i);
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
@ -152,9 +191,9 @@ var perfTOInput = func(key, i) {
|
|||
}
|
||||
} else if (key == "R3" and modifiable) {
|
||||
if (scratchpad == "CLR") {
|
||||
setprop("/FMGC/internal/to-flap", 0);
|
||||
setprop("/FMGC/internal/to-ths", "0.0");
|
||||
setprop("/FMGC/internal/flap-ths-set", 0);
|
||||
fmgc.FMGCInternal.toFlap = 0;
|
||||
fmgc.FMGCInternal.toThs = 0;
|
||||
fmgc.FMGCInternal.toFlapThsSet = 0;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
if (find("/", scratchpad) != -1) {
|
||||
|
@ -165,45 +204,71 @@ var perfTOInput = func(key, i) {
|
|||
var trims = size(trim);
|
||||
var trima = substr(trim, 2);
|
||||
var trimb = substr(trim, 0, 3);
|
||||
|
||||
var validtrima = num(trima) != nil and num(trima) >= 0 and num(trima) <= 7.0;
|
||||
var validtrimb = num(trimb) != nil and num(trimb) >= 0 and num(trimb) <= 7.0;
|
||||
if (flaps == 0 and getprop("/FMGC/internal/flap-ths-set")) {
|
||||
|
||||
if (flaps == 0 and fmgc.FMGCInternal.toFlapThsSet) {
|
||||
if (trims == 5 and find("DN", trim) != -1 and validtrima) {
|
||||
setprop("/FMGC/internal/to-ths", -1 * trima);
|
||||
fmgc.FMGCInternal.toThs = -1 * trima;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
perfToCheckTakeoffData(i);
|
||||
} else if (trims == 5 and find("DN", trim) != -1 and validtrimb) {
|
||||
setprop("/FMGC/internal/to-ths", -1 * trimb);
|
||||
fmgc.FMGCInternal.toThs = -1 * trimb;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
perfToCheckTakeoffData(i);
|
||||
} else if (trims == 5 and find("UP", trim) != -1 and validtrima) {
|
||||
setprop("/FMGC/internal/to-ths", trima);
|
||||
fmgc.FMGCInternal.toThs = trima;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
perfToCheckTakeoffData(i);
|
||||
} else if (trims == 5 and find("UP", trim) != -1 and validtrimb) {
|
||||
setprop("/FMGC/internal/to-ths", trimb);
|
||||
fmgc.FMGCInternal.toThs = trimb;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
perfToCheckTakeoffData(i);
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (flaps == 1 and num(flap) != nil and flap >= 0 and flap <= 3) {
|
||||
if (trims == 5 and find("DN", trim) != -1 and validtrima) {
|
||||
setprop("/FMGC/internal/to-flap", flap);
|
||||
setprop("/FMGC/internal/to-ths", -1 * trima);
|
||||
setprop("/FMGC/internal/flap-ths-set", 1);
|
||||
fmgc.FMGCInternal.toFlap = flap;
|
||||
fmgc.FMGCInternal.toThs = -1 * trima;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
if (fmgc.FMGCInternal.toFlapThsSet) {
|
||||
perfToCheckTakeoffData(i);
|
||||
}
|
||||
fmgc.FMGCInternal.toFlapThsSet = 1;
|
||||
} 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);
|
||||
fmgc.FMGCInternal.toFlap = flap;
|
||||
fmgc.FMGCInternal.toThs = -1 * trimb;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
if (fmgc.FMGCInternal.toFlapThsSet) {
|
||||
perfToCheckTakeoffData(i);
|
||||
}
|
||||
fmgc.FMGCInternal.toFlapThsSet = 1;
|
||||
} 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);
|
||||
fmgc.FMGCInternal.toFlap = flap;
|
||||
fmgc.FMGCInternal.toThs = trima;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
if (fmgc.FMGCInternal.toFlapThsSet) {
|
||||
perfToCheckTakeoffData(i);
|
||||
}
|
||||
fmgc.FMGCInternal.toFlapThsSet = 1;
|
||||
} 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);
|
||||
fmgc.FMGCInternal.toFlap = flap;
|
||||
fmgc.FMGCInternal.toThs = trimb;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
if (fmgc.FMGCInternal.toFlapThsSet) {
|
||||
perfToCheckTakeoffData(i);
|
||||
}
|
||||
fmgc.FMGCInternal.toFlapThsSet = 1;
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
@ -211,11 +276,13 @@ var perfTOInput = func(key, i) {
|
|||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
} else if (size(scratchpad) == 1 and num(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 3) {
|
||||
setprop("/FMGC/internal/to-flap", scratchpad);
|
||||
if (!getprop("/FMGC/internal/flap-ths-set")) {
|
||||
setprop("/FMGC/internal/flap-ths-set", 1);
|
||||
}
|
||||
fmgc.FMGCInternal.toFlap = scratchpad;
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
if (fmgc.FMGCInternal.toFlapThsSet) {
|
||||
perfToCheckTakeoffData(i);
|
||||
}
|
||||
fmgc.FMGCInternal.toFlapThsSet = 1;
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
}
|
||||
|
@ -233,6 +300,8 @@ 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);
|
||||
perfTOCheckVSpeedsLimitations(i);
|
||||
perfToCheckTakeoffData(i);
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
var pilotWaypointPage = {
|
||||
title: nil,
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
|
|
@ -52,7 +52,7 @@ var progCLBInput = func(key, i) {
|
|||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
fmgc.FMGCInternal.decel = 0;
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
|
@ -66,7 +66,7 @@ var progCLBInput = func(key, i) {
|
|||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
fmgc.FMGCInternal.decel = 0;
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -88,7 +88,7 @@ var progCRZInput = func(key, i) {
|
|||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
fmgc.FMGCInternal.decel = 0;
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
|
@ -102,7 +102,7 @@ var progCRZInput = func(key, i) {
|
|||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
fmgc.FMGCInternal.decel = 0;
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
@ -124,7 +124,7 @@ var progDESInput = func(key, i) {
|
|||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
fmgc.FMGCInternal.decel = 0;
|
||||
}
|
||||
mcdu_scratchpad.scratchpads[i].empty();
|
||||
} else if (int(scratchpad) != nil) {
|
||||
|
@ -138,7 +138,7 @@ var progDESInput = func(key, i) {
|
|||
systems.PNEU.pressMode.setValue("CR");
|
||||
setprop("/FMGC/internal/activate-once", 0);
|
||||
setprop("/FMGC/internal/activate-twice", 0);
|
||||
setprop("/FMGC/internal/decel", 0);
|
||||
fmgc.FMGCInternal.decel = 0;
|
||||
}
|
||||
} else {
|
||||
mcdu_message(i, "NOT ALLOWED");
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
var receivedMessagesPage = {
|
||||
title: nil,
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -63,7 +62,6 @@ var receivedMessagesPage = {
|
|||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["blu", "blu", "blu", "blu", "blu", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
update: func() {
|
||||
|
@ -155,8 +153,6 @@ var receivedMessagesPage = {
|
|||
|
||||
var receivedMessagePage = {
|
||||
title: nil,
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
L2: [nil, nil, "ack"],
|
||||
|
@ -229,7 +225,6 @@ var receivedMessagePage = {
|
|||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["blu", "blu", "blu", "blu", "blu", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
update: func() {
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
# A3XX mCDU by Joshua Davidson (Octal450), Jonathan Redpath, and Matthew Maring (mattmaring)
|
||||
|
||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||
|
||||
var statusInput = func(key, i) {
|
||||
if (key == "L3") {
|
||||
fmgc.switchDatabase();
|
||||
} elsif (key == "R5") {
|
||||
if (fmgc.WaypointDatabase.confirm[i]) {
|
||||
fmgc.WaypointDatabase.delete(i);
|
||||
fmgc.WaypointDatabase.confirm[i] = 0;
|
||||
} else {
|
||||
fmgc.WaypointDatabase.confirm[i] = 1;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,7 +4,6 @@ var scratchpadSplit = nil;
|
|||
var vertRev = {
|
||||
title: [nil, nil, nil],
|
||||
subtitle: [nil, nil],
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -85,20 +84,16 @@ var vertRev = {
|
|||
me.R2 = ["RTA ", nil, "wht"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "wht", "wht", "wht"], ["ack", "wht", "ack", "ack", "wht", "wht"]];
|
||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
} elsif (me.type == 2) {
|
||||
me.title = ["VERT REV", " AT ", me.id];
|
||||
me.fontMatrix = [[0, 0, 1, 0, 0, 0], [0, 0, 1, 0, 0, 0]];
|
||||
me.L1 = ["", " EFOB ---.-", "wht"];
|
||||
me.R1 = ["", "EXTRA ---.- ", "wht"];
|
||||
me.L2 = [fmgc.FMGCInternal.clbSpdLim ~ "/" ~ fmgc.FMGCInternal.clbSpdLimAlt, " CLB SPD LIM", "mag"];
|
||||
me.speed = me.getSpd();
|
||||
if (me.speed[0] == nil) {
|
||||
me.L3 = [" [ ]", " SPD CSTR", "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
me.L3 = ["[ ]", " SPD CSTR", "blu"];
|
||||
} else {
|
||||
me.L3 = [me.speed[0], " SPD CSTR", me.speed[1]];
|
||||
me.fontMatrix[0][2] = 0;
|
||||
}
|
||||
me.L4 = [" CONSTANT MACH", nil, "wht"];
|
||||
me.L5 = [" WIND DATA", nil, "wht"];
|
||||
|
@ -106,11 +101,9 @@ var vertRev = {
|
|||
me.R2 = ["RTA ", nil, "wht"];
|
||||
me.alt = me.getAlt();
|
||||
if (me.alt[0] == nil) {
|
||||
me.R3 = ["[ ] ", "ALT CSTR ", "blu"];
|
||||
me.fontMatrix[1][2] = 1;
|
||||
me.R3 = ["[ ]", "ALT CSTR ", "blu"];
|
||||
} else {
|
||||
me.R3 = [me.alt[0], "ALT CSTR ", me.alt[1]];
|
||||
me.fontMatrix[1][2] = 0;
|
||||
me.R3 = [me.alt[0], "ALT CSTR ", me.alt[1]];
|
||||
}
|
||||
me.R6 = ["DES ", nil, "amb"];
|
||||
# When the system does vertical planning, L6 should be RETURN and R6 not used if the MCDU knows the waypoint is during climb or descent.
|
||||
|
@ -138,7 +131,6 @@ var vertRev = {
|
|||
me.R2 = ["RTA ", nil, "wht"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "wht", "wht", "wht"], ["ack", "wht", "ack", "ack", "wht", "wht"]];
|
||||
me.fontMatrix = [[0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
} elsif (me.type == 1) {
|
||||
if (size(me.id) > 4) {
|
||||
me.arrAirport = findAirportsByICAO(left(me.id, 4));
|
||||
|
@ -155,7 +147,6 @@ var vertRev = {
|
|||
me.R3 = ["3000", "G/S INTCP", "grn"];
|
||||
me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "wht", "wht", "wht"], ["ack", "wht", "ack", "ack", "wht", "wht"]];
|
||||
me.fontMatrix = [[0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
||||
}
|
||||
}
|
||||
me.updateR5();
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
var windCLBPage = {
|
||||
title: nil,
|
||||
titleColour: "wht",
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -46,7 +45,6 @@ var windCLBPage = {
|
|||
me.titleColour = "wht";
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "ack"], ["wht", "ack", "ack", "ack", "wht", "ack"]];
|
||||
me.fontMatrix = [[1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0]];
|
||||
|
||||
var computer_temp = 2;
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
|
@ -69,10 +67,8 @@ var windCLBPage = {
|
|||
var windStore = fmgc.windController.clb_winds[computer_temp].wind5;
|
||||
if (windStore.set) {
|
||||
me.L5 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][4] = 1;
|
||||
} else {
|
||||
me.L5 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][4] = 1;
|
||||
me.L5 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L5 = [nil, nil, "ack"];
|
||||
|
@ -82,10 +78,8 @@ var windCLBPage = {
|
|||
var windStore = fmgc.windController.clb_winds[computer_temp].wind4;
|
||||
if (windStore.set) {
|
||||
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][3] = 1;
|
||||
} else {
|
||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][3] = 1;
|
||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L4 = [nil, nil, "ack"];
|
||||
|
@ -95,10 +89,8 @@ var windCLBPage = {
|
|||
var windStore = fmgc.windController.clb_winds[computer_temp].wind3;
|
||||
if (windStore.set) {
|
||||
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
} else {
|
||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L3 = [nil, nil, "ack"];
|
||||
|
@ -108,10 +100,8 @@ var windCLBPage = {
|
|||
var windStore = fmgc.windController.clb_winds[computer_temp].wind2;
|
||||
if (windStore.set) {
|
||||
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][1] = 1;
|
||||
} else {
|
||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][1] = 1;
|
||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L2 = [nil, nil, "ack"];
|
||||
|
@ -120,17 +110,15 @@ var windCLBPage = {
|
|||
if (me.items >= 1) {
|
||||
var windStore = fmgc.windController.clb_winds[computer_temp].wind1;
|
||||
if (windStore.set) {
|
||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
|
||||
me.fontMatrix[0][0] = 1;
|
||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, " TRU WIND/ALT", "blu"];
|
||||
} else {
|
||||
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
||||
me.fontMatrix[0][0] = 1;
|
||||
me.L1 = ["[ ]°/[ ]/[ ]", " TRU WIND/ALT", "blu"];
|
||||
}
|
||||
}
|
||||
|
||||
me.L6 = [" RETURN", nil, "wht"];
|
||||
me.R1 = [" HISTORY ", "WIND ", "wht"];
|
||||
me.R3 = [" REQUEST ", "WIND ", "amb"];
|
||||
me.R1 = ["WIND ", "HISTORY ", "wht"];
|
||||
me.R3 = ["REQUEST ", "WIND ", "amb"];
|
||||
me.R5 = [" PHASE ", "NEXT ", "wht"];
|
||||
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
var windCRZPage = {
|
||||
title: [nil, nil, nil],
|
||||
titleColour: "wht",
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -60,7 +59,6 @@ var windCRZPage = {
|
|||
me.titleColour = "wht";
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 1, 1, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "wht", "wht", "ack"]];
|
||||
me.fontMatrix = [[1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0]];
|
||||
|
||||
var computer_temp = 2;
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
|
@ -96,10 +94,8 @@ var windCRZPage = {
|
|||
var windStore = fmgc.windController.crz_winds[computer_temp].wind4;
|
||||
if (windStore.set) {
|
||||
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][3] = 1;
|
||||
} else {
|
||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][3] = 1;
|
||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L4 = [nil, nil, "ack"];
|
||||
|
@ -109,10 +105,8 @@ var windCRZPage = {
|
|||
var windStore = fmgc.windController.crz_winds[computer_temp].wind3;
|
||||
if (windStore.set) {
|
||||
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
} else {
|
||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L3 = [nil, nil, "ack"];
|
||||
|
@ -122,10 +116,8 @@ var windCRZPage = {
|
|||
var windStore = fmgc.windController.crz_winds[computer_temp].wind2;
|
||||
if (windStore.set) {
|
||||
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][1] = 1;
|
||||
} else {
|
||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][1] = 1;
|
||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L2 = [nil, nil, "ack"];
|
||||
|
@ -134,31 +126,25 @@ var windCRZPage = {
|
|||
if (me.items >= 1) {
|
||||
var windStore = fmgc.windController.crz_winds[computer_temp].wind1;
|
||||
if (windStore.set) {
|
||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
|
||||
me.fontMatrix[0][0] = 1;
|
||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, " TRU WIND/ALT", "blu"];
|
||||
} else {
|
||||
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
||||
me.fontMatrix[0][0] = 1;
|
||||
me.L1 = ["[ ]°/[ ]/[ ]", " TRU WIND/ALT", "blu"];
|
||||
}
|
||||
}
|
||||
|
||||
var windStore = fmgc.windController.crz_winds[computer_temp].sat1;
|
||||
if (windStore.set) {
|
||||
me.L5 = [windStore.temp ~ "/" ~ windStore.altitude, "SAT / ALT", "blu"];
|
||||
me.fontMatrix[0][4] = 1;
|
||||
} else {
|
||||
me.L5 = ["[ ]/[ ]", "SAT / ALT", "blu"];
|
||||
me.fontMatrix[0][4] = 1;
|
||||
me.L5 = ["[ ]/[ ]", "SAT / ALT", "blu"];
|
||||
}
|
||||
} else {
|
||||
if (me.items >= 4) {
|
||||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind4;
|
||||
if (windStore.set) {
|
||||
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][3] = 1;
|
||||
} else {
|
||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][3] = 1;
|
||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L4 = [nil, nil, "ack"];
|
||||
|
@ -168,10 +154,8 @@ var windCRZPage = {
|
|||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind3;
|
||||
if (windStore.set) {
|
||||
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
} else {
|
||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L3 = [nil, nil, "ack"];
|
||||
|
@ -181,10 +165,8 @@ var windCRZPage = {
|
|||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind2;
|
||||
if (windStore.set) {
|
||||
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][1] = 1;
|
||||
} else {
|
||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][1] = 1;
|
||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L2 = [nil, nil, "ack"];
|
||||
|
@ -193,21 +175,17 @@ var windCRZPage = {
|
|||
if (me.items >= 1) {
|
||||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind1;
|
||||
if (windStore.set) {
|
||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
|
||||
me.fontMatrix[0][0] = 1;
|
||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, " TRU WIND/ALT", "blu"];
|
||||
} else {
|
||||
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
||||
me.fontMatrix[0][0] = 1;
|
||||
me.L1 = ["[ ]°/[ ]/[ ]", " TRU WIND/ALT", "blu"];
|
||||
}
|
||||
}
|
||||
|
||||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].sat1;
|
||||
if (windStore.set) {
|
||||
me.L5 = [windStore.temp ~ "/" ~ windStore.altitude, "SAT / ALT", "blu"];
|
||||
me.fontMatrix[0][4] = 1;
|
||||
} else {
|
||||
me.L5 = ["[ ]/[ ]", "SAT / ALT", "blu"];
|
||||
me.fontMatrix[0][4] = 1;
|
||||
me.L5 = ["[ ]/[ ]", "SAT / ALT", "blu"];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,7 +8,6 @@ var magVar = nil;
|
|||
var windDESPage = {
|
||||
title: nil,
|
||||
titleColour: "wht",
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -50,7 +49,6 @@ var windDESPage = {
|
|||
me.titleColour = "wht";
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 1, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "wht", "ack", "ack"]];
|
||||
me.fontMatrix = [[1, 1, 1, 1, 1, 0], [1, 0, 0, 0, 0, 0]];
|
||||
|
||||
var computer_temp = 2;
|
||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||
|
@ -73,10 +71,8 @@ var windDESPage = {
|
|||
var windStore = fmgc.windController.des_winds[computer_temp].wind5;
|
||||
if (windStore.set) {
|
||||
me.L5 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][4] = 1;
|
||||
} else {
|
||||
me.L5 = ["[ ]/°[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][4] = 1;
|
||||
}
|
||||
} else {
|
||||
me.L5 = [nil, nil, "ack"];
|
||||
|
@ -86,10 +82,8 @@ var windDESPage = {
|
|||
var windStore = fmgc.windController.des_winds[computer_temp].wind4;
|
||||
if (windStore.set) {
|
||||
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][3] = 1;
|
||||
} else {
|
||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][3] = 1;
|
||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L4 = [nil, nil, "ack"];
|
||||
|
@ -99,10 +93,8 @@ var windDESPage = {
|
|||
var windStore = fmgc.windController.des_winds[computer_temp].wind3;
|
||||
if (windStore.set) {
|
||||
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
} else {
|
||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][2] = 1;
|
||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L3 = [nil, nil, "ack"];
|
||||
|
@ -112,10 +104,8 @@ var windDESPage = {
|
|||
var windStore = fmgc.windController.des_winds[computer_temp].wind2;
|
||||
if (windStore.set) {
|
||||
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||
me.fontMatrix[0][1] = 1;
|
||||
} else {
|
||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
me.fontMatrix[0][1] = 1;
|
||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||
}
|
||||
} else {
|
||||
me.L2 = [nil, nil, "ack"];
|
||||
|
@ -125,10 +115,8 @@ var windDESPage = {
|
|||
var windStore = fmgc.windController.des_winds[computer_temp].wind1;
|
||||
if (windStore.set) {
|
||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
|
||||
me.fontMatrix[0][0] = 1;
|
||||
} else {
|
||||
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
||||
me.fontMatrix[0][0] = 1;
|
||||
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -137,11 +125,9 @@ var windDESPage = {
|
|||
if (fmgc.FMGCInternal.altAirportSet) {
|
||||
var windStore = fmgc.windController.des_winds[computer_temp].alt1;
|
||||
if (windStore.set) {
|
||||
me.R1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude), "ALTN WIND ", "blu"];
|
||||
me.fontMatrix[1][0] = 1;
|
||||
me.R1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude), "ALTN WIND", "blu"];
|
||||
} else {
|
||||
me.R1 = ["[ ]°/[ ]", "ALTN WIND ", "blu"];
|
||||
me.fontMatrix[1][0] = 1;
|
||||
me.R1 = ["[ ]°/[ ]", "ALTN WIND", "blu"];
|
||||
}
|
||||
} else {
|
||||
me.R1 = ["", "", "blu"];
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
var windHISTPage = {
|
||||
title: nil,
|
||||
fontMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsMatrix: [[0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0]],
|
||||
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||
L1: [nil, nil, "ack"], # content, title, colour
|
||||
|
@ -137,7 +136,6 @@ var windHISTPage = {
|
|||
|
||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
||||
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||
me.fontMatrix = [[1, 1, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0]];
|
||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||
},
|
||||
# makeTmpy: func() {
|
||||
|
|
|
@ -144,13 +144,9 @@ var ADIRU = {
|
|||
}
|
||||
},
|
||||
_excessMotion: 0,
|
||||
alignFault: props.globals.getNode("/systems/navigation/align-fault"),
|
||||
alignLoop: func() {
|
||||
me._roll = pts.Orientation.roll.getValue();
|
||||
me._pitch = pts.Orientation.pitch.getValue();
|
||||
me._gs = pts.Velocities.groundspeed.getValue();
|
||||
|
||||
# todo use IR values
|
||||
if (me._gs > 5 or abs(me._pitch) > 5 or abs(me._roll) > 10) {
|
||||
if (me.alignFault.getBoolValue()) {
|
||||
me.stopAlignNoAlign();
|
||||
me._excessMotion = 1;
|
||||
me.update(); # update operative
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
# A3XX Electrical System
|
||||
# Copyright (c) 2019 Jonathan Redpath (legoboyvdlp)
|
||||
|
||||
# Local vars
|
||||
var battery1_sw = 0;
|
||||
var battery2_sw = 0;
|
||||
var batt1_fail = 0;
|
||||
var batt2_fail = 0;
|
||||
var battery1_percent = 0;
|
||||
var battery2_percent = 0;
|
||||
var dc1 = 0;
|
||||
var dc2 = 0;
|
||||
# Copyright (c) 2021 Jonathan Redpath (legoboyvdlp)
|
||||
|
||||
# Main class
|
||||
var ELEC = {
|
||||
|
@ -202,47 +192,33 @@ var ELEC = {
|
|||
me.Fail.tr1Fault.setBoolValue(0);
|
||||
me.Fail.tr2Fault.setBoolValue(0);
|
||||
},
|
||||
_FMGC1: 0,
|
||||
_FMGC2: 0,
|
||||
_activeFMGC: nil,
|
||||
_timer1On: 0,
|
||||
_timer2On: 0,
|
||||
loop: func(notification) {
|
||||
# Autopilot Disconnection routines
|
||||
me._activeFMGC = fcu.FCUController.activeFMGC.getValue();
|
||||
me._FMGC1 = fmgc.Output.ap1.getValue();
|
||||
me._FMGC2 = fmgc.Output.ap2.getValue();
|
||||
|
||||
if (notification.dcEssShed < 25) {
|
||||
if (me._FMGC1 and !me._timer1On) { # delay 1 cycle to avoid spurious
|
||||
me._timer1On = 1;
|
||||
} elsif (me._FMGC1) {
|
||||
if (notification.dcEssShed < 25) {
|
||||
fcu.apOff("hard", 1);
|
||||
if (me._activeFMGC == 1) {
|
||||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
me._timer1On = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (notification.dc2 < 25) {
|
||||
if (me._FMGC2 and !me._timer2On) { # delay 1 cycle to avoid spurious
|
||||
me._timer2On = 1;
|
||||
} elsif (me._FMGC2) {
|
||||
if (notification.dc2 < 25) {
|
||||
fcu.apOff("hard", 2);
|
||||
if (me._activeFMGC == 2) {
|
||||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
me._timer2On = 0;
|
||||
}
|
||||
}
|
||||
loop: func() {
|
||||
# Empty
|
||||
},
|
||||
};
|
||||
|
||||
setlistener("/systems/fmgc/power/power-1-on", func(val) {
|
||||
if (!val.getBoolValue()) {
|
||||
if (fmgc.Output.ap1.getValue()) {
|
||||
fcu.apOff("hard", 1);
|
||||
}
|
||||
if (fcu.FCUController.activeFMGC.getValue() == 1 and fmgc.Output.athr.getValue()) {
|
||||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
setlistener("/systems/fmgc/power/power-2-on", func(val) {
|
||||
if (!val.getBoolValue()) {
|
||||
if (fmgc.Output.ap2.getValue()) {
|
||||
fcu.apOff("hard", 2);
|
||||
}
|
||||
if (fcu.FCUController.activeFMGC.getValue() == 2 and fmgc.Output.athr.getValue()) {
|
||||
fcu.athrOff("hard");
|
||||
}
|
||||
}
|
||||
}, 0, 0);
|
||||
|
||||
# Emesary
|
||||
var A320Electrical = notifications.SystemRecipient.new("A320 Electrical",ELEC.loop,ELEC);
|
||||
emesary.GlobalTransmitter.Register(A320Electrical);
|
||||
|
|
14
README.copyright.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
Copyright (C) 2022 Josh Davidson, Jonathan Redpath, merspieler, Matthew Maring, Thorsten Herrmann, Semir Gebran
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of version 2 of the GNU General Public License
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
@ -1013,7 +1013,7 @@
|
|||
<autolandwarning>
|
||||
<name>autolandwarning-single</name>
|
||||
<mode>once</mode>
|
||||
<path>Aircraft/A320-family/Sounds/Cockpit/calvary-charge-once.wav</path>
|
||||
<path>Aircraft/A320-family/Sounds/Cockpit/click.wav</path>
|
||||
<condition>
|
||||
<equals>
|
||||
<property>/instrumentation/pfd/logic/autoland/autoland-alarm</property>
|
||||
|
|
|
@ -4,6 +4,34 @@
|
|||
|
||||
<system name="A320: ADR">
|
||||
|
||||
<channel name="ADR Align Fault" execrate="8">
|
||||
|
||||
<lag_filter name="velocities/r-aero-deg_sec_filter">
|
||||
<input>velocities/r-aero-deg_sec</input>
|
||||
<c1>1</c1>
|
||||
</lag_filter>
|
||||
|
||||
<lag_filter name="velocities/v-north-fps_filter">
|
||||
<input>velocities/v-north-fps</input>
|
||||
<c1>1</c1>
|
||||
</lag_filter>
|
||||
|
||||
<lag_filter name="velocities/v-east-fps_filter">
|
||||
<input>velocities/v-east-fps</input>
|
||||
<c1>1</c1>
|
||||
</lag_filter>
|
||||
|
||||
<switch name="/systems/navigation/align-fault">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
velocities/r-aero-deg_sec_filter ge 2
|
||||
velocities/v-north-fps_filter ge 0.5
|
||||
velocities/v-east-fps_filter ge 0.5
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
</channel>
|
||||
|
||||
<channel name="ADR Inputs" execrate="2">
|
||||
|
||||
<fcs_function name="aero/alpha-deg-corrected">
|
||||
|
|
|
@ -4,7 +4,120 @@
|
|||
|
||||
<system name="A320: FMGC">
|
||||
|
||||
<channel name="FMGC Power" execrate="8">
|
||||
|
||||
<switch name="/systems/fmgc/power/power-1">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/electrical/bus/dc-ess-shed ge 25
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fmgc/power/power-2">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/electrical/bus/dc-2 ge 25
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<actuator name="/systems/fmgc/power/power-1-timer">
|
||||
<input>/systems/fmgc/power/power-1</input>
|
||||
<rate_limit sense="decr">5</rate_limit>
|
||||
<rate_limit sense="incr">100</rate_limit>
|
||||
</actuator>
|
||||
|
||||
<actuator name="/systems/fmgc/power/power-2-timer">
|
||||
<input>/systems/fmgc/power/power-2</input>
|
||||
<rate_limit sense="decr">5</rate_limit>
|
||||
<rate_limit sense="incr">100</rate_limit>
|
||||
</actuator>
|
||||
|
||||
<switch name="/systems/fmgc/power/power-1-on">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/fmgc/power/power-1-timer ne 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/systems/fmgc/power/power-2-on">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/fmgc/power/power-2-timer ne 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
</channel>
|
||||
|
||||
<channel name="Envelope Protection" execrate="8">
|
||||
|
||||
<!-- VMCA -->
|
||||
<fcs_function name="/FMGC/internal/vmca-kt">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">/position/altitude-ft</independentVar>
|
||||
<tableData>
|
||||
-2000 112.0
|
||||
0 110.0
|
||||
2000 108.0
|
||||
4000 107.5
|
||||
6000 105.5
|
||||
8000 103.0
|
||||
9200 101.2
|
||||
10000 100.0
|
||||
12000 96.5
|
||||
14100 93.5
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
<!-- VMCG -->
|
||||
<fcs_function name="/FMGC/internal/vmcg-kt">
|
||||
<function>
|
||||
<table>
|
||||
<independentVar lookup="row">/position/altitude-ft</independentVar>
|
||||
<independentVar lookup="column">fcs/flap-pos-deg</independentVar>
|
||||
<tableData>
|
||||
10 15 20
|
||||
-2000 111.5 109.5 109.0
|
||||
0 109.5 107.5 107.0
|
||||
2000 107.5 105.5 105.0
|
||||
4000 107.0 105.0 104.5
|
||||
6000 105.0 103.0 103.0
|
||||
8000 103.0 101.0 100.5
|
||||
9200 101.0 99.0 98.5
|
||||
10000 100.0 98.0 97.5
|
||||
12000 96.5 94.5 94.0
|
||||
14100 93.0 91.0 91.0
|
||||
</tableData>
|
||||
</table>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
</channel>
|
||||
|
||||
<channel name="FMGC" execrate="8">
|
||||
|
||||
<switch name="/systems/fmgc/airborne">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/gear/gear[1]/wow eq 0
|
||||
/gear/gear[2]/wow eq 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<actuator name="/systems/fmgc/airborne-timer">
|
||||
<input>/systems/fmgc/airborne</input>
|
||||
<rate_limit sense="decr">100</rate_limit>
|
||||
<rate_limit sense="incr">0.2</rate_limit>
|
||||
</actuator>
|
||||
|
||||
<switch name="/systems/fmgc/airborne-5-secs">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/fmgc/airborne-timer eq 1
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<fcs_function name="/systems/fmgc/cas-compare/cas-1-to-3">
|
||||
<function>
|
||||
|
|
|
@ -2499,6 +2499,7 @@
|
|||
<switch name="/instrumentation/pfd/logic/autoland/autoland-armed">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/instrumentation/pfd/logic/autoland/pitch-land eq 1
|
||||
<test logic="OR">
|
||||
/systems/electrical/bus/ac-2 ge 110
|
||||
/systems/electrical/bus/ac-ess-shed ge 110
|
||||
|
@ -2519,32 +2520,33 @@
|
|||
<switch name="/instrumentation/pfd/logic/autoland/autoland-alarm">
|
||||
<default value="0"/>
|
||||
<test logic="AND" value="1">
|
||||
/instrumentation/pfd/logic/autoland/autoland-armed eq 1
|
||||
/instrumentation/pfd/logic/autoland/pitch-land eq 1
|
||||
<test logic="OR">
|
||||
<test logic="AND">
|
||||
/it-autoflight/output/ap1 eq 0
|
||||
/it-autoflight/output/ap2 eq 0
|
||||
</test>
|
||||
/instrumentation/radar-altimeter-difference-ft gt 15
|
||||
<test logic="AND">
|
||||
<test logic="OR">
|
||||
/instrumentation/nav[0]/gs-needle-deflection-norm gt 0.5
|
||||
/instrumentation/nav[0]/gs-needle-deflection-norm lt -0.5
|
||||
/instrumentation/pfd/logic/autoland/autoland-armed eq 1
|
||||
<test logic="OR">
|
||||
<test logic="AND">
|
||||
/it-autoflight/output/ap1 eq 0
|
||||
/it-autoflight/output/ap2 eq 0
|
||||
/instrumentation/pfd/logic/autoland/ap-disc-ft lt 200
|
||||
/instrumentation/pfd/logic/autoland/ap-disc-ft gt 0
|
||||
</test>
|
||||
/instrumentation/radar-altimeter-difference-ft gt 15
|
||||
<test logic="AND">
|
||||
<test logic="OR">
|
||||
/instrumentation/nav[0]/gs-needle-deflection-norm gt 0.5
|
||||
/instrumentation/nav[0]/gs-needle-deflection-norm lt -0.5
|
||||
</test>
|
||||
/position/gear-agl-ft ge 100
|
||||
</test>
|
||||
/position/gear-agl-ft ge 100
|
||||
</test>
|
||||
<test logic="AND">
|
||||
<test logic="OR">
|
||||
/instrumentation/nav[0]/heading-needle-deflection-norm gt 0.125
|
||||
/instrumentation/nav[0]/heading-needle-deflection-norm lt -0.125
|
||||
<test logic="AND">
|
||||
<test logic="OR">
|
||||
/instrumentation/nav[0]/heading-needle-deflection-norm gt 0.125
|
||||
/instrumentation/nav[0]/heading-needle-deflection-norm lt -0.125
|
||||
</test>
|
||||
/position/gear-agl-ft ge 15
|
||||
</test>
|
||||
/position/gear-agl-ft ge 15
|
||||
<!-- TODO
|
||||
- Loss of localizer signal
|
||||
-->
|
||||
</test>
|
||||
<!-- TODO
|
||||
- Loss of localizer signal
|
||||
-->
|
||||
</test>
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
|
|
|
@ -502,7 +502,7 @@
|
|||
|
||||
</channel>
|
||||
|
||||
<channel name="FMGC">
|
||||
<channel name="FMGC" execrate="8">
|
||||
|
||||
<fcs_function name="/FMGC/internal/kts-to-mach-factor">
|
||||
<function>
|
||||
|
@ -524,4 +524,58 @@
|
|||
|
||||
</channel>
|
||||
|
||||
<channel name="IESI" execrate="8">
|
||||
|
||||
<switch name="/instrumentation/iesi/display/show-mach">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/instrumentation/airspeed-indicator/indicated-mach ge 0.5
|
||||
</test>
|
||||
<test logic="AND" value="1">
|
||||
/instrumentation/airspeed-indicator/indicated-mach ge 0.45
|
||||
/instrumentation/iesi/display/show-mach eq 1
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<switch name="/instrumentation/iesi/power/power-command">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/systems/electrical/bus/dc-ess ge 25
|
||||
<test logic="AND">
|
||||
/systems/electrical/sources/si-1/inverter-control/relay-7xb ne 0
|
||||
/systems/electrical/bus/sub-bus/dc-hot-1-703 ge 25
|
||||
</test>
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<actuator name="/instrumentation/iesi/power/power-transient-timer">
|
||||
<input>/instrumentation/iesi/power/power-command</input>
|
||||
<rate_limit sense="decr">5</rate_limit>
|
||||
<rate_limit sene="incr">100</rate_limit>
|
||||
</actuator>
|
||||
|
||||
<switch name="/instrumentation/iesi/power/power-on">
|
||||
<default value="0"/>
|
||||
<test logic="OR" value="1">
|
||||
/instrumentation/iesi/power/power-transient-timer ne 0
|
||||
</test>
|
||||
</switch>
|
||||
|
||||
<fcs_function name="/instrumentation/iesi/power/power-consumption-w">
|
||||
<function>
|
||||
<sum>
|
||||
<product>
|
||||
<value>16</value>
|
||||
<property>/instrumentation/iesi/power/power-on</property>
|
||||
</product>
|
||||
<product>
|
||||
<value>4</value>
|
||||
<property>/controls/lighting/DU/iesi</property>
|
||||
</product>
|
||||
</sum>
|
||||
</function>
|
||||
</fcs_function>
|
||||
|
||||
</channel>
|
||||
|
||||
</system>
|
||||
|
|
|
@ -168,11 +168,6 @@
|
|||
<suction>/systems/vacuum/suction-inhg</suction>
|
||||
</heading-indicator>
|
||||
|
||||
<KT-70>
|
||||
<name>kt-70</name>
|
||||
<number>0</number>
|
||||
</KT-70>
|
||||
|
||||
<magnetic-compass>
|
||||
<name>magnetic-compass</name>
|
||||
<number>0</number>
|
||||
|
|
|
@ -23,6 +23,14 @@
|
|||
<filter-gain>0.0</filter-gain>
|
||||
</predict-simple>
|
||||
|
||||
<filter>
|
||||
<name>Heading Rate Degrees Per Second</name>
|
||||
<type>gain</type>
|
||||
<gain>57.2957795131</gain>
|
||||
<input>/fdm/jsbsim/velocities/r-aero-rad_sec</input>
|
||||
<output>/fdm/jsbsim/velocities/r-aero-deg_sec</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>Gear AGL Altitude FT</name>
|
||||
<type>gain</type>
|
||||
|
|
BIN
WebPanel/WebPanel1/img/icon-192.png
Normal file
After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 181 KiB After Width: | Height: | Size: 181 KiB |
|
@ -1,6 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" translate="no">
|
||||
|
||||
<head>
|
||||
<title>A320 MCDU</title>
|
||||
<meta charset="utf-8">
|
||||
|
@ -8,113 +7,6 @@
|
|||
<link rel="manifest" href="mcdu_manifest.json" />
|
||||
<meta name="apple-mobile-web-app-status-bar" content="#db4938" />
|
||||
<meta name="theme-color" content="#db4938" />
|
||||
<script>
|
||||
let screen;
|
||||
let screen_src;
|
||||
let blank_src;
|
||||
let loading = 0;
|
||||
let scheduled_load = 0;
|
||||
function refresh_screen(force) {
|
||||
if (loading && !force) {
|
||||
scheduled_load = 1;
|
||||
}
|
||||
else {
|
||||
loading = 1;
|
||||
screen.src = screen_src + '&random=' + (new Date).getTime()
|
||||
}
|
||||
}
|
||||
function press_button(type, text) {
|
||||
let request = new XMLHttpRequest;
|
||||
request.open(
|
||||
"POST",
|
||||
window.location.protocol + "//" + window.location.host + "/run.cgi?value=nasal"
|
||||
);
|
||||
request.setRequestHeader("Content-Type", "application/json");
|
||||
let body = JSON.stringify({
|
||||
"name": "",
|
||||
"children": [
|
||||
{
|
||||
"name": "script",
|
||||
"index": 0,
|
||||
"value": "mcdu." + type + "(\"" + text + "\", 0);"
|
||||
}
|
||||
]
|
||||
});
|
||||
request.send(body);
|
||||
request.addEventListener('load', function () {
|
||||
refresh_screen();
|
||||
}, true);
|
||||
}
|
||||
|
||||
var preventzoomaction = function(e) { //https://exceptionshub.com/disable-double-tap-zoom-option-in-browser-on-touch-devices.html
|
||||
var t2 = e.timeStamp;
|
||||
var t1 = e.currentTarget.dataset.lastTouch || t2;
|
||||
var dt = t2 - t1;
|
||||
var fingers = e.touches.length;
|
||||
e.currentTarget.dataset.lastTouch = t2;
|
||||
|
||||
if (!dt || dt > 500 || fingers > 1) return; // not double-tap
|
||||
|
||||
e.preventDefault();
|
||||
e.target.click();
|
||||
};
|
||||
|
||||
window.addEventListener('load', function () {
|
||||
|
||||
let tds = document.querySelectorAll('.input td');
|
||||
for (const td of tds) {
|
||||
td.addEventListener('click', function () {
|
||||
if (td.className == "disabled") return;
|
||||
press_button("button", td.textContent);
|
||||
}, true);
|
||||
td.addEventListener('touchstart', preventzoomaction, true);
|
||||
}
|
||||
tds = document.querySelectorAll('.enter td');
|
||||
for (const td of tds) {
|
||||
td.addEventListener('click', function () {
|
||||
press_button(td.getAttribute("button-side") == "l" ? "lskbutton" : "rskbutton", td.getAttribute("button-id"));
|
||||
}, true);
|
||||
td.addEventListener('touchstart', preventzoomaction, true);
|
||||
}
|
||||
tds = document.querySelectorAll('.menu td');
|
||||
for (const td of tds) {
|
||||
td.addEventListener('click', function () {
|
||||
press_button("pagebutton", td.className);
|
||||
}, true);
|
||||
td.addEventListener('touchstart', preventzoomaction, true);
|
||||
}
|
||||
tds = document.querySelectorAll('.arrows td');
|
||||
for (const td of tds) {
|
||||
td.addEventListener('click', function () {
|
||||
press_button(td.className == 'airport' ? "pagebutton" : "arrowbutton", td.className);
|
||||
}, true);
|
||||
td.addEventListener('touchstart', preventzoomaction, true);
|
||||
}
|
||||
screen = document.querySelector('img');
|
||||
screen.addEventListener('load', function () {
|
||||
loading = 0;
|
||||
if (scheduled_load) {
|
||||
scheduled_load = 0;
|
||||
refresh_screen();
|
||||
}
|
||||
});
|
||||
blank_src = screen_src;
|
||||
screen_src = "/screenshot?canvasindex=10&type=png";
|
||||
screen.addEventListener('error', function () {
|
||||
loading = 0;
|
||||
if (scheduled_load) {
|
||||
refresh_screen();
|
||||
}
|
||||
});
|
||||
screen.addEventListener('abort', function () {
|
||||
loading = 0;
|
||||
if (scheduled_load) {
|
||||
refresh_screen();
|
||||
}
|
||||
});
|
||||
setInterval(function () { refresh_screen(true); }, 1000);
|
||||
}, true);
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
font-size: 5rem;
|
||||
|
@ -201,33 +93,32 @@
|
|||
<table class="enter" style="width: 100%">
|
||||
<tr>
|
||||
<td><br></td>
|
||||
<td rowspan="8" style="vertical-align: top"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAANgAQMAAACIgIgUAAAAA1BMVEUAAACnej3aAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAgklEQVR42u3BAQEAAACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7wazbwABRxu5owAAAABJRU5ErkJggg=="
|
||||
style="width: 100%" /></td>
|
||||
<td rowspan="8" style="vertical-align: top"><img data-element="lcdimage" src="" style="width: 100%" /></td>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td button-id="1" button-side="l">—</td>
|
||||
<td button-id="1" button-side="r">—</td>
|
||||
<td data-button="lskbutton:1">—</td>
|
||||
<td data-button="rskbutton:1">—</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td button-id="2" button-side="l">—</td>
|
||||
<td button-id="2" button-side="r">—</td>
|
||||
<td data-button="lskbutton:2">—</td>
|
||||
<td data-button="rskbutton:2">—</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td button-id="3" button-side="l">—</td>
|
||||
<td button-id="3" button-side="r">—</td>
|
||||
<td data-button="lskbutton:3">—</td>
|
||||
<td data-button="rskbutton:3">—</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td button-id="4" button-side="l">—</td>
|
||||
<td button-id="4" button-side="r">—</td>
|
||||
<td data-button="lskbutton:4">—</td>
|
||||
<td data-button="rskbutton:4">—</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td button-id="5" button-side="l">—</td>
|
||||
<td button-id="5" button-side="r">—</td>
|
||||
<td data-button="lskbutton:5">—</td>
|
||||
<td data-button="rskbutton:5">—</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td button-id="6" button-side="l">—</td>
|
||||
<td button-id="6" button-side="r">—</td>
|
||||
<td data-button="lskbutton:6">—</td>
|
||||
<td data-button="rskbutton:6">—</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br></td>
|
||||
|
@ -236,107 +127,110 @@
|
|||
</table>
|
||||
<table class="menu" style="width: 100%">
|
||||
<tr>
|
||||
<td class="dirto">DIR</td>
|
||||
<td class="prog">PROG</td>
|
||||
<td class="perf">PERF</td>
|
||||
<td class="init">INIT</td>
|
||||
<td class="data">DATA</td>
|
||||
<td data-button="pagebutton:dirto" class="dirto">DIR</td>
|
||||
<td data-button="pagebutton:prog" class="prog">PROG</td>
|
||||
<td data-button="pagebutton:perf" class="perf">PERF</td>
|
||||
<td data-button="pagebutton:init" class="init">INIT</td>
|
||||
<td data-button="pagebutton:data" class="data">DATA</td>
|
||||
<td></td>
|
||||
<td>BRT</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="f-pln">F-PLN</td>
|
||||
<td class="radnav">RAD<br>NAV</td>
|
||||
<td class="fuel-pred">FUEL<br>PRED</td>
|
||||
<td>SEC<br>F-PLN</td>
|
||||
<td class="atc">ATC<br>COMM</td>
|
||||
<td class="mcdu">MCDU<br>MENU</td>
|
||||
<td data-button="pagebutton:f-pln" class="f-pln">F-PLN</td>
|
||||
<td data-button="pagebutton:radnav" class="radnav">RAD<br>NAV</td>
|
||||
<td data-button="pagebutton:fuel-pred" class="fuel-pred">FUEL<br>PRED</td>
|
||||
<td data-button="" >SEC<br>F-PLN</td>
|
||||
<td data-button="pagebutton:atc" class="atc">ATC<br>COMM</td>
|
||||
<td data-button="pagebutton:mcdu" class="mcdu">MCDU<br>MENU</td>
|
||||
<td>DIM</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="input" style="float: right; width: 62.5%">
|
||||
<tr>
|
||||
<td>A</td>
|
||||
<td>B</td>
|
||||
<td>C</td>
|
||||
<td>D</td>
|
||||
<td>E</td>
|
||||
<td data-button="button:A">A</td>
|
||||
<td data-button="button:B">B</td>
|
||||
<td data-button="button:C">C</td>
|
||||
<td data-button="button:D">D</td>
|
||||
<td data-button="button:E">E</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>F</td>
|
||||
<td>G</td>
|
||||
<td>H</td>
|
||||
<td>I</td>
|
||||
<td>J</td>
|
||||
<td data-button="button:F">F</td>
|
||||
<td data-button="button:G">G</td>
|
||||
<td data-button="button:H">H</td>
|
||||
<td data-button="button:I">I</td>
|
||||
<td data-button="button:J">J</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>K</td>
|
||||
<td>L</td>
|
||||
<td>M</td>
|
||||
<td>N</td>
|
||||
<td>O</td>
|
||||
<td data-button="button:K">K</td>
|
||||
<td data-button="button:L">L</td>
|
||||
<td data-button="button:M">M</td>
|
||||
<td data-button="button:N">N</td>
|
||||
<td data-button="button:O">O</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>P</td>
|
||||
<td>Q</td>
|
||||
<td>R</td>
|
||||
<td>S</td>
|
||||
<td>T</td>
|
||||
<td data-button="button:P">P</td>
|
||||
<td data-button="button:Q">Q</td>
|
||||
<td data-button="button:R">R</td>
|
||||
<td data-button="button:S">S</td>
|
||||
<td data-button="button:T">T</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>U</td>
|
||||
<td>V</td>
|
||||
<td>W</td>
|
||||
<td>X</td>
|
||||
<td>Y</td>
|
||||
<td data-button="button:U">U</td>
|
||||
<td data-button="button:V">V</td>
|
||||
<td data-button="button:W">W</td>
|
||||
<td data-button="button:X">X</td>
|
||||
<td data-button="button:Y">Y</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Z</td>
|
||||
<td>/</td>
|
||||
<td style="font-size: 50%">SP</td>
|
||||
<td style="font-size: 33%" class="disabled">OVFY<br>△</td>
|
||||
<td style="font-size: 33%">CLR</td>
|
||||
<td data-button="button:Z">Z</td>
|
||||
<td data-button="button:SLASH">/</td>
|
||||
<td style="font-size: 50%" data-button="button:SP">SP</td>
|
||||
<td style="font-size: 33%" data-button="button:OVFY">OVFY<br>△</td>
|
||||
<td style="font-size: 33%" data-button="button:CLR">CLR</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="arrows" style="width: 29.5%">
|
||||
<tr>
|
||||
<td class="airport">AIR<br>PORT</td>
|
||||
<td data-button="pagebutton:airport" class="airport">AIR<br>PORT</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left">←</td>
|
||||
<td class="up">↑</td>
|
||||
<td data-button="arrowbutton:left" class="left">←</td>
|
||||
<td data-button="arrowbutton:up" class="up">↑</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="right">→</td>
|
||||
<td class="down">↓</td>
|
||||
<td data-button="arrowbutton:right" class="right">→</td>
|
||||
<td data-button="arrowbutton:down" class="down">↓</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table class="input" style="width: 30%">
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>2</td>
|
||||
<td>3</td>
|
||||
<td data-button="button:1">1</td>
|
||||
<td data-button="button:2">2</td>
|
||||
<td data-button="button:3">3</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>4</td>
|
||||
<td>5</td>
|
||||
<td>6</td>
|
||||
<td data-button="button:4">4</td>
|
||||
<td data-button="button:5">5</td>
|
||||
<td data-button="button:6">6</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>7</td>
|
||||
<td>8</td>
|
||||
<td>9</td>
|
||||
<td data-button="button:7">7</td>
|
||||
<td data-button="button:8">8</td>
|
||||
<td data-button="button:9">9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>.</td>
|
||||
<td>0</td>
|
||||
<td data-button="button:DOT">.</td>
|
||||
<td data-button="button:0">0</td>
|
||||
<td
|
||||
style="font-size: 3vw; width: 33.333333333333333333333333333333333333333333333333333333333333333333333%; /* :) */" class="disabled">
|
||||
style="font-size: 3vw; width: 33.34%;" data-button="button:PLUSMINUS">
|
||||
+/-
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<script src="../js/mcdu.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
19
WebPanel/WebPanel1/mcdu_manifest.json
Normal file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"short_name": "A320MCDU",
|
||||
"name": "A320 Remote MCDU for FG",
|
||||
"icons": [
|
||||
{
|
||||
"src": "img/icon-192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
}
|
||||
],
|
||||
"start_url": "/aircraft-dir/WebPanel/WebPanel1/?source=home",
|
||||
"background_color": "#000",
|
||||
"display": "standalone",
|
||||
"scope": "/",
|
||||
"theme_color": "#db4938",
|
||||
"shortcuts": [ ],
|
||||
"description": "Airbus 320 Remote MCDU for Flightgear",
|
||||
"screenshots": [ ]
|
||||
}
|
|
@ -1,7 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en" translate="no">
|
||||
<head>
|
||||
<title>A320 MCDU</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar" content="#333333" />
|
||||
|
@ -83,9 +84,9 @@
|
|||
<div data-button="button:9" class="numberbutton number-col3"></div>
|
||||
</div>
|
||||
<div class="number-row4">
|
||||
<div data-button="button:." class="numberbutton number-col1"></div>
|
||||
<div data-button="button:DOT" class="numberbutton number-col1"></div>
|
||||
<div data-button="button:0" class="numberbutton number-col2"></div>
|
||||
<div data-button="button:-" class="numberbutton number-col3"></div>
|
||||
<div data-button="button:PLUSMINUS" class="numberbutton number-col3"></div>
|
||||
</div>
|
||||
|
||||
<div class="alphabutton-row1">
|
||||
|
@ -130,7 +131,7 @@
|
|||
|
||||
<div class="alphabutton-row6">
|
||||
<div data-button="button:Z" class="alphabutton alphabutton-col1"></div>
|
||||
<div data-button="button:/" class="alphabutton alphabutton-col2"></div>
|
||||
<div data-button="button:SLASH" class="alphabutton alphabutton-col2"></div>
|
||||
<div data-button="button:SP" class="alphabutton alphabutton-col3"></div>
|
||||
<div data-button="button:OVFY" class="alphabutton alphabutton-col4"></div>
|
||||
<div data-button="button:CLR" class="alphabutton alphabutton-col5"></div>
|
||||
|
@ -140,7 +141,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="js/mcdu.js">
|
||||
<script src="../js/mcdu.js">
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,185 +1,166 @@
|
|||
const MCDU = (function () {
|
||||
const screenImageBaseUrl = '/screenshot?canvasindex=10&type=jpg';
|
||||
const refreshInterval = 2000;
|
||||
|
||||
const body = document.body;
|
||||
let currentCacheBust = 0;
|
||||
let lastSentText = '';
|
||||
|
||||
init();
|
||||
|
||||
return {
|
||||
toggleUsedUniverse
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
function init()
|
||||
{
|
||||
body.dataset.lastTouch = 0;
|
||||
body.addEventListener('touchstart', preventZoomAction, { passive: false });
|
||||
|
||||
registerButtons();
|
||||
registerKeyboardInput();
|
||||
setInterval(refreshScreen, refreshInterval);
|
||||
refreshScreen();
|
||||
}
|
||||
|
||||
function refreshScreen() {
|
||||
loadScreenImage(screenImageBaseUrl)
|
||||
.then(setScreenSrc)
|
||||
.catch(setScreenSrc);
|
||||
}
|
||||
|
||||
function setScreenSrc(url) {
|
||||
url = typeof url === 'string' ? url : '';
|
||||
showScreenImageLoadState(url !== '');
|
||||
document.querySelectorAll('[data-element="lcdimage"]').forEach((imageElement) => {
|
||||
imageElement.src = url;
|
||||
});
|
||||
}
|
||||
|
||||
function loadScreenImage(baseUrl) {
|
||||
currentCacheBust = new Date().getTime();
|
||||
return new Promise((resolve, reject) => {
|
||||
const url = baseUrl + '?cacheBust=' + currentCacheBust;
|
||||
const img = new Image;
|
||||
|
||||
img.addEventListener('error', reject);
|
||||
|
||||
img.addEventListener('load', (event) => {
|
||||
showScreenImageLoadState(true);
|
||||
resolve(url);
|
||||
});
|
||||
img.src = url;
|
||||
});
|
||||
}
|
||||
|
||||
function showScreenImageLoadState(isOK) {
|
||||
if (!isOK) {
|
||||
console.log('fail');
|
||||
}
|
||||
}
|
||||
|
||||
function toggleUsedUniverse() {
|
||||
body.setAttribute('data-used-universe', body.getAttribute('data-used-universe') === '1' ? '0' : '1');
|
||||
}
|
||||
|
||||
function registerButtons() {
|
||||
document.querySelectorAll('[data-button]').forEach((buttonElement) => {
|
||||
const buttonFunction = getButtonFunction(buttonElement);
|
||||
if (!(typeof buttonFunction === 'function')) {
|
||||
return;
|
||||
}
|
||||
buttonElement.addEventListener('click', buttonFunction);
|
||||
buttonElement.addEventListener('touchstart', preventZoomAction, true);
|
||||
});
|
||||
}
|
||||
|
||||
function registerKeyboardInput() {
|
||||
const keyTranslation = {
|
||||
BACKSPACE: 'CLR'
|
||||
};
|
||||
body.addEventListener('keyup', (event) => {
|
||||
const key = event.key.toUpperCase();
|
||||
if (key.match(/^[A-Z0-9/\-+.\ ]$/)) {
|
||||
if (key === '+' || key === '-') {
|
||||
return sendPlusMinusKey();
|
||||
}
|
||||
return sendButtonpress('button', key);
|
||||
}
|
||||
|
||||
const translatedKey = keyTranslation[key];
|
||||
if (translatedKey) {
|
||||
return sendButtonpress('button', translatedKey);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getButtonFunction(buttonElement) {
|
||||
const buttonActions = buttonElement.getAttribute('data-button').split(':');
|
||||
const actionKey = buttonActions[0];
|
||||
const actionValue = buttonActions[1];
|
||||
|
||||
if(!actionKey) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (actionKey === 'toggleUsedUniverse') {
|
||||
return toggleUsedUniverse;
|
||||
}
|
||||
|
||||
if (actionKey === 'button' && actionValue === '-') {
|
||||
return sendPlusMinusKey;
|
||||
}
|
||||
|
||||
return function () {
|
||||
sendButtonpress(actionKey, actionValue);
|
||||
};
|
||||
}
|
||||
|
||||
function sendPlusMinusKey() {
|
||||
if (lastSentText === '-') {
|
||||
sendButtonpress('button', 'CLR')
|
||||
.then(() => {
|
||||
sendButtonpress('button', '+');
|
||||
})
|
||||
return;
|
||||
}
|
||||
|
||||
if (lastSentText === '+') {
|
||||
sendButtonpress('button', 'CLR')
|
||||
.then(() => {
|
||||
sendButtonpress('button', '-');
|
||||
})
|
||||
return;
|
||||
}
|
||||
|
||||
sendButtonpress('button', '-');
|
||||
}
|
||||
|
||||
function sendButtonpress(type, text) {
|
||||
// console.log({ type, text });
|
||||
let request = new XMLHttpRequest;
|
||||
request.open("POST", "/run.cgi?value=nasal");
|
||||
request.setRequestHeader("Content-Type", "application/json");
|
||||
let body = JSON.stringify({
|
||||
"name": "",
|
||||
"children": [
|
||||
{
|
||||
"name": "script",
|
||||
"index": 0,
|
||||
"value": "mcdu." + type + "(\"" + text + "\", 0);"
|
||||
}
|
||||
]
|
||||
});
|
||||
request.send(body);
|
||||
return new Promise((resolve) => {
|
||||
request.addEventListener('load', () => {
|
||||
lastSentText = text;
|
||||
refreshScreen();
|
||||
resolve();
|
||||
}, true);
|
||||
});
|
||||
}
|
||||
|
||||
//https://exceptionshub.com/disable-double-tap-zoom-option-in-browser-on-touch-devices.html
|
||||
function preventZoomAction(event) {
|
||||
const t2 = event.timeStamp;
|
||||
const touchedElement = event.currentTarget;
|
||||
const t1 = touchedElement.dataset.lastTouch || t2;
|
||||
const dt = t2 - t1;
|
||||
const fingers = event.touches.length;
|
||||
touchedElement.dataset.lastTouch = t2;
|
||||
|
||||
if (!dt || dt > 500 || fingers > 1) {
|
||||
// no double-tap
|
||||
return;
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
event.target.click();
|
||||
}
|
||||
})();
|
||||
const MCDU = (function () {
|
||||
const screenImageBaseUrl = '/screenshot?canvasindex=10&type=jpg';
|
||||
const refreshInterval = 2000;
|
||||
|
||||
const body = document.body;
|
||||
let currentCacheBust = 0;
|
||||
let lastSentText = '';
|
||||
|
||||
init();
|
||||
|
||||
return {
|
||||
toggleUsedUniverse
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
function init() {
|
||||
body.dataset.lastTouch = 0;
|
||||
body.addEventListener('touchstart', preventZoomAction, { passive: false });
|
||||
|
||||
registerButtons();
|
||||
registerKeyboardInput();
|
||||
setInterval(refreshScreen, refreshInterval);
|
||||
refreshScreen();
|
||||
}
|
||||
|
||||
function refreshScreen() {
|
||||
loadScreenImage(screenImageBaseUrl)
|
||||
.then(setScreenSrc)
|
||||
.catch(setScreenSrc);
|
||||
}
|
||||
|
||||
function setScreenSrc(url) {
|
||||
url = typeof url === 'string' ? url : '';
|
||||
showScreenImageLoadState(url !== '');
|
||||
document.querySelectorAll('[data-element="lcdimage"]').forEach((imageElement) => {
|
||||
imageElement.src = url;
|
||||
});
|
||||
}
|
||||
|
||||
function loadScreenImage(baseUrl) {
|
||||
currentCacheBust = new Date().getTime();
|
||||
return new Promise((resolve, reject) => {
|
||||
const url = baseUrl + '?cacheBust=' + currentCacheBust;
|
||||
const img = new Image;
|
||||
|
||||
img.addEventListener('error', reject);
|
||||
|
||||
img.addEventListener('load', (event) => {
|
||||
showScreenImageLoadState(true);
|
||||
resolve(url);
|
||||
});
|
||||
img.src = url;
|
||||
});
|
||||
}
|
||||
|
||||
function showScreenImageLoadState(isOK) {
|
||||
if (!isOK) {
|
||||
console.log('fail');
|
||||
}
|
||||
}
|
||||
|
||||
function toggleUsedUniverse() {
|
||||
body.setAttribute('data-used-universe', body.getAttribute('data-used-universe') === '1' ? '0' : '1');
|
||||
}
|
||||
|
||||
function registerButtons() {
|
||||
document.querySelectorAll('[data-button]').forEach((buttonElement) => {
|
||||
const buttonFunction = getButtonFunction(buttonElement);
|
||||
if (!(typeof buttonFunction === 'function')) {
|
||||
return;
|
||||
}
|
||||
buttonElement.addEventListener('click', buttonFunction);
|
||||
buttonElement.addEventListener('touchstart', preventZoomAction, true);
|
||||
});
|
||||
let btn = document.querySelector("[data-button=\"button:CLR\"]");
|
||||
if (btn) btn.addEventListener("contextmenu",function(e){
|
||||
e.preventDefault();
|
||||
sendButtonpress('button', 'LONGCLR');
|
||||
});
|
||||
}
|
||||
|
||||
function registerKeyboardInput() {
|
||||
const keyTranslation = {
|
||||
BACKSPACE: 'CLR',
|
||||
DELETE: 'LONGCLR',
|
||||
'+': 'PLUSMINUS',
|
||||
'-': 'PLUSMINUS',
|
||||
'/': 'SLASH',
|
||||
'.': 'DOT',
|
||||
'^': 'OVFY',
|
||||
' ': 'SP'
|
||||
};
|
||||
body.addEventListener('keyup', (event) => {
|
||||
const key = event.key.toUpperCase();
|
||||
if (key.match(/^[A-Z0-9]$/)) {
|
||||
return sendButtonpress('button', key);
|
||||
}
|
||||
const translatedKey = keyTranslation[key]||false;
|
||||
if (translatedKey) return sendButtonpress('button', translatedKey);
|
||||
});
|
||||
}
|
||||
|
||||
function getButtonFunction(buttonElement) {
|
||||
const buttonActions = buttonElement.getAttribute('data-button').split(':');
|
||||
const actionKey = buttonActions[0];
|
||||
const actionValue = buttonActions[1];
|
||||
|
||||
if(!actionKey) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (actionKey === 'toggleUsedUniverse') {
|
||||
return toggleUsedUniverse;
|
||||
}
|
||||
|
||||
return function () {
|
||||
sendButtonpress(actionKey, actionValue);
|
||||
};
|
||||
}
|
||||
|
||||
function sendButtonpress(type, text) {
|
||||
//console.log({ type, text });
|
||||
let request = new XMLHttpRequest;
|
||||
request.open("POST", "/run.cgi?value=nasal");
|
||||
request.setRequestHeader("Content-Type", "application/json");
|
||||
let body = JSON.stringify({
|
||||
"name": "",
|
||||
"children": [
|
||||
{
|
||||
"name": "script",
|
||||
"index": 0,
|
||||
"value": "mcdu." + type + "(\"" + text + "\", 0);"
|
||||
}
|
||||
]
|
||||
});
|
||||
request.send(body);
|
||||
return new Promise((resolve) => {
|
||||
request.addEventListener('load', () => {
|
||||
lastSentText = text;
|
||||
refreshScreen();
|
||||
resolve();
|
||||
}, true);
|
||||
});
|
||||
}
|
||||
|
||||
//https://exceptionshub.com/disable-double-tap-zoom-option-in-browser-on-touch-devices.html
|
||||
function preventZoomAction(event) {
|
||||
const t2 = event.timeStamp;
|
||||
const touchedElement = event.currentTarget;
|
||||
const t1 = touchedElement.dataset.lastTouch || t2;
|
||||
const dt = t2 - t1;
|
||||
const fingers = event.touches.length;
|
||||
touchedElement.dataset.lastTouch = t2;
|
||||
|
||||
if (!dt || dt > 500 || fingers > 1) {
|
||||
// no double-tap
|
||||
return;
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
event.target.click();
|
||||
}
|
||||
})();
|
|
@ -17,12 +17,14 @@
|
|||
background-color: #005670;
|
||||
text-align: center;
|
||||
color: #e4e4e4;
|
||||
font-size: 16px;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
color: #8db9ca;
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
h1 {
|
||||
|
@ -55,8 +57,9 @@
|
|||
.choice {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: calc(49% - 2vw);
|
||||
padding: 1vh 1vw 75% 1vw;
|
||||
width: calc(50% - 40px);
|
||||
padding: 15px;
|
||||
padding-bottom: 75%;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
border: 1px solid transparent;
|
||||
|
@ -69,11 +72,12 @@
|
|||
|
||||
.choice img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
top: 1rem;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: auto;
|
||||
max-height: 100%;
|
||||
max-height: auto;
|
||||
max-width: 100%;
|
||||
border-radius: 8px;
|
||||
box-shadow: 4px 4px 6px #00000063;
|
||||
}
|
||||
|
@ -99,9 +103,9 @@
|
|||
<div class="chooser">
|
||||
<a href="WebPanel1/index.html" class="choice choice--1">
|
||||
<span class="button">
|
||||
abstract
|
||||
basic
|
||||
</span>
|
||||
<img src="WebPanel1/screenshot.jpg">
|
||||
<img src="WebPanel1/img/screenshot.jpg">
|
||||
</a>
|
||||
<a href="WebPanel2/index.html" class="choice choice--2">
|
||||
<span class="button">
|
||||
|
|