Merge branch 'dev' into pressurization
|
@ -4879,7 +4879,6 @@
|
||||||
<file>Aircraft/A320-family/Nasal/MCDU/PERFTO.nas</file>
|
<file>Aircraft/A320-family/Nasal/MCDU/PERFTO.nas</file>
|
||||||
<file>Aircraft/A320-family/Nasal/MCDU/RADNAV.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/DATA.nas</file>
|
||||||
<file>Aircraft/A320-family/Nasal/MCDU/STATUS.nas</file>
|
|
||||||
</mcdu>
|
</mcdu>
|
||||||
<!-- Traffic layer from E-jet -->
|
<!-- Traffic layer from E-jet -->
|
||||||
<traffic>
|
<traffic>
|
||||||
|
|
|
@ -34,39 +34,44 @@
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<halign>left</halign>
|
<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>
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<halign>left</halign>
|
<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>
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<halign>left</halign>
|
<halign>left</halign>
|
||||||
<label>ALS, and custom shader settings must be on.</label>
|
<label>For the best experience:</label>
|
||||||
</text>
|
</text>
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<halign>left</halign>
|
<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>
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<halign>left</halign>
|
<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>
|
</text>
|
||||||
|
|
||||||
<hrule/>
|
<hrule/>
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<halign>left</halign>
|
<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>
|
||||||
|
|
||||||
<text>
|
<text>
|
||||||
<halign>left</halign>
|
<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>
|
</text>
|
||||||
|
|
||||||
</group>
|
</group>
|
||||||
|
@ -105,8 +110,8 @@
|
||||||
|
|
||||||
<button>
|
<button>
|
||||||
<halign>center</halign>
|
<halign>center</halign>
|
||||||
<legend>Yes, fix all settings</legend>
|
<legend>Apply minimum settings</legend>
|
||||||
<pref-width>180</pref-width>
|
<pref-width>200</pref-width>
|
||||||
<binding>
|
<binding>
|
||||||
<command>nasal</command>
|
<command>nasal</command>
|
||||||
<script>
|
<script>
|
||||||
|
@ -120,8 +125,8 @@
|
||||||
|
|
||||||
<button>
|
<button>
|
||||||
<halign>center</halign>
|
<halign>center</halign>
|
||||||
<legend>Yes, but I'll fix shaders myself</legend>
|
<legend>Advanced: View Shader Settings</legend>
|
||||||
<pref-width>180</pref-width>
|
<pref-width>200</pref-width>
|
||||||
<binding>
|
<binding>
|
||||||
<command>nasal</command>
|
<command>nasal</command>
|
||||||
<script>
|
<script>
|
||||||
|
@ -143,8 +148,8 @@
|
||||||
|
|
||||||
<button>
|
<button>
|
||||||
<halign>center</halign>
|
<halign>center</halign>
|
||||||
<legend>I don't care</legend>
|
<legend>Ignore</legend>
|
||||||
<pref-width>180</pref-width>
|
<pref-width>150</pref-width>
|
||||||
<binding>
|
<binding>
|
||||||
<command>dialog-close</command>
|
<command>dialog-close</command>
|
||||||
</binding>
|
</binding>
|
||||||
|
|
|
@ -1521,11 +1521,12 @@
|
||||||
<!-- Cocktpit Door Switch -->
|
<!-- Cocktpit Door Switch -->
|
||||||
|
|
||||||
<animation>
|
<animation>
|
||||||
<type>slider</type>
|
<type>knob</type>
|
||||||
<object-name>CockpitDoorSwitch</object-name>
|
<object-name>CockpitDoorSwitch</object-name>
|
||||||
<object-name>CockpitDoorSwitch.mark</object-name>
|
<object-name>CockpitDoorSwitch.mark</object-name>
|
||||||
<property>controls/doors/doorc-switch</property>
|
<property>controls/doors/doorc-switch</property>
|
||||||
<drag-direction>vertical</drag-direction>
|
<drag-direction>vertical</drag-direction>
|
||||||
|
<drag-scale-px>14</drag-scale-px>
|
||||||
<action>
|
<action>
|
||||||
<binding>
|
<binding>
|
||||||
<command>property-adjust</command>
|
<command>property-adjust</command>
|
||||||
|
@ -4705,6 +4706,8 @@
|
||||||
<property>controls/switches/annun-test</property>
|
<property>controls/switches/annun-test</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
|
|
||||||
|
<not><property>FMGC/FCU-working</property></not>
|
||||||
<equals>
|
<equals>
|
||||||
<property>it-autoflight/input/kts-mach</property>
|
<property>it-autoflight/input/kts-mach</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
|
@ -4730,6 +4733,7 @@
|
||||||
<property>it-autoflight/input/spd-managed</property>
|
<property>it-autoflight/input/spd-managed</property>
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</equals>
|
</equals>
|
||||||
|
<property>FMGC/FCU-working</property>
|
||||||
</and>
|
</and>
|
||||||
</condition>
|
</condition>
|
||||||
</animation>
|
</animation>
|
||||||
|
@ -4751,6 +4755,7 @@
|
||||||
<property>it-autoflight/input/spd-managed</property>
|
<property>it-autoflight/input/spd-managed</property>
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</equals>
|
</equals>
|
||||||
|
<property>FMGC/FCU-working</property>
|
||||||
</and>
|
</and>
|
||||||
</condition>
|
</condition>
|
||||||
</animation>
|
</animation>
|
||||||
|
@ -4793,6 +4798,7 @@
|
||||||
<property>controls/switches/annun-test</property>
|
<property>controls/switches/annun-test</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
|
<not><property>FMGC/FCU-working</property></not>
|
||||||
<equals>
|
<equals>
|
||||||
<property>it-autoflight/custom/trk-fpa</property>
|
<property>it-autoflight/custom/trk-fpa</property>
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
|
@ -4811,6 +4817,7 @@
|
||||||
<property>controls/switches/annun-test</property>
|
<property>controls/switches/annun-test</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
|
<not><property>FMGC/FCU-working</property></not>
|
||||||
<equals>
|
<equals>
|
||||||
<property>it-autoflight/custom/trk-fpa</property>
|
<property>it-autoflight/custom/trk-fpa</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
|
@ -4832,6 +4839,7 @@
|
||||||
<property>it-autoflight/custom/show-hdg</property>
|
<property>it-autoflight/custom/show-hdg</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
|
<property>FMGC/FCU-working</property>
|
||||||
</and>
|
</and>
|
||||||
</condition>
|
</condition>
|
||||||
</animation>
|
</animation>
|
||||||
|
@ -4878,10 +4886,13 @@
|
||||||
<type>select</type>
|
<type>select</type>
|
||||||
<object-name>alt-text</object-name>
|
<object-name>alt-text</object-name>
|
||||||
<condition>
|
<condition>
|
||||||
<not-equals>
|
<and>
|
||||||
<property>controls/switches/annun-test</property>
|
<property>FMGC/FCU-working</property>
|
||||||
<value>1</value>
|
<not-equals>
|
||||||
</not-equals>
|
<property>controls/switches/annun-test</property>
|
||||||
|
<value>1</value>
|
||||||
|
</not-equals>
|
||||||
|
</and>
|
||||||
</condition>
|
</condition>
|
||||||
</animation>
|
</animation>
|
||||||
|
|
||||||
|
@ -4930,6 +4941,7 @@
|
||||||
<property>controls/switches/annun-test</property>
|
<property>controls/switches/annun-test</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
|
<not><property>FMGC/FCU-working</property></not>
|
||||||
<equals>
|
<equals>
|
||||||
<property>it-autoflight/custom/trk-fpa</property>
|
<property>it-autoflight/custom/trk-fpa</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
|
@ -4952,6 +4964,7 @@
|
||||||
<property>it-autoflight/output/vert</property>
|
<property>it-autoflight/output/vert</property>
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
</equals>
|
</equals>
|
||||||
|
<property>FMGC/FCU-working</property>
|
||||||
</and>
|
</and>
|
||||||
</condition>
|
</condition>
|
||||||
</animation>
|
</animation>
|
||||||
|
@ -4969,6 +4982,7 @@
|
||||||
<property>it-autoflight/output/vert</property>
|
<property>it-autoflight/output/vert</property>
|
||||||
<value>5</value>
|
<value>5</value>
|
||||||
</equals>
|
</equals>
|
||||||
|
<property>FMGC/FCU-working</property>
|
||||||
</and>
|
</and>
|
||||||
</condition>
|
</condition>
|
||||||
</animation>
|
</animation>
|
||||||
|
@ -4990,6 +5004,7 @@
|
||||||
<property>it-autoflight/output/vert</property>
|
<property>it-autoflight/output/vert</property>
|
||||||
<value>5</value>
|
<value>5</value>
|
||||||
</not-equals>
|
</not-equals>
|
||||||
|
<property>FMGC/FCU-working</property>
|
||||||
</and>
|
</and>
|
||||||
</condition>
|
</condition>
|
||||||
</animation>
|
</animation>
|
||||||
|
|
|
@ -49,52 +49,41 @@ var canvas_IESI = {
|
||||||
obj.AI_horizon_trans = obj["AI_horizon"].createTransform();
|
obj.AI_horizon_trans = obj["AI_horizon"].createTransform();
|
||||||
obj.AI_horizon_rot = obj["AI_horizon"].createTransform();
|
obj.AI_horizon_rot = obj["AI_horizon"].createTransform();
|
||||||
|
|
||||||
|
obj._aiCenter = obj["AI_center"].getCenter();
|
||||||
obj._cachedInhg = nil;
|
obj._cachedInhg = nil;
|
||||||
obj._excessMotion = 0;
|
obj._cachedMode = nil;
|
||||||
obj._fast = 0;
|
obj._canReset = 0;
|
||||||
|
obj._excessMotionInInit = 0;
|
||||||
|
obj._fastInit = 0;
|
||||||
obj._IESITime = 0;
|
obj._IESITime = 0;
|
||||||
obj._showIESI = 0;
|
obj._isNegativeAlt = 0;
|
||||||
obj.ASI = 0;
|
obj._middleAltOffset = nil;
|
||||||
obj.canReset = 0;
|
obj._powerResult = 0;
|
||||||
obj.isNegativeAlt = 0;
|
obj._roll = 0;
|
||||||
obj.middleAltOffset = nil;
|
|
||||||
|
|
||||||
obj.update_items = [
|
obj.update_items = [
|
||||||
props.UpdateManager.FromHashValue("airspeed", nil, func(val) {
|
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
|
obj["ASI_scale"].setTranslation(0, math.clamp(val - 30, 0, 490) * 8.295);
|
||||||
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);
|
|
||||||
}),
|
}),
|
||||||
props.UpdateManager.FromHashList(["altitude","altitude_ind"], nil, func(val) {
|
props.UpdateManager.FromHashList(["altitude","altitude_ind"], nil, func(val) {
|
||||||
if (val.altitude > 50000) {
|
val.altitude = math.clamp(val.altitude, -2000, 50000);
|
||||||
val.altitude = 50000;
|
|
||||||
} elsif (val.altitude < -2000) {
|
|
||||||
val.altitude = -2000;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val.altitude < 0) {
|
if (val.altitude < 0) {
|
||||||
obj["negText"].show();
|
obj["negText"].show();
|
||||||
obj.isNegativeAlt = 1;
|
obj._isNegativeAlt = 1;
|
||||||
} else {
|
} else {
|
||||||
obj["negText"].hide();
|
obj["negText"].hide();
|
||||||
obj.isNegativeAlt = 0;
|
obj._isNegativeAlt = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
obj.altOffset = (val.altitude / 500) - int(val.altitude / 500);
|
obj.altOffset = (val.altitude / 500) - int(val.altitude / 500);
|
||||||
obj.middleAltText = roundaboutAlt(val.altitude / 100);
|
obj.middleAltText = roundaboutAlt(val.altitude / 100);
|
||||||
if (obj.altOffset > 0.5) {
|
if (obj.altOffset > 0.5) {
|
||||||
obj.middleAltOffset = -(obj.altOffset - 1) * 258.5528;
|
obj._middleAltOffset = -(obj.altOffset - 1) * 258.5528;
|
||||||
} else {
|
} 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_scale"].update();
|
||||||
obj["ALT_five"].setText(sprintf("%03d", abs(obj.middleAltText+10)));
|
obj["ALT_five"].setText(sprintf("%03d", abs(obj.middleAltText+10)));
|
||||||
obj["ALT_four"].setText(sprintf("%03d", abs(obj.middleAltText+5)));
|
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.altTens = num(right(sprintf("%02d", val.altitude), 2));
|
||||||
obj["ALT_tens"].setTranslation(0, obj.altTens * 3.16);
|
obj["ALT_tens"].setTranslation(0, obj.altTens * 3.16);
|
||||||
}),
|
}),
|
||||||
props.UpdateManager.FromHashValue("mach", nil, func(val) {
|
props.UpdateManager.FromHashValue("showMach", nil, func(val) {
|
||||||
if (val >= 0.5) {
|
if (val) {
|
||||||
obj._machWasAbove50 = 1;
|
|
||||||
obj["ASI_mach_decimal"].show();
|
|
||||||
obj["ASI_mach"].show();
|
|
||||||
} elsif (val >= 0.45 and obj._machWasAbove50) {
|
|
||||||
obj["ASI_mach_decimal"].show();
|
obj["ASI_mach_decimal"].show();
|
||||||
obj["ASI_mach"].show();
|
obj["ASI_mach"].show();
|
||||||
} else {
|
} else {
|
||||||
obj._machWasAbove50 = 0;
|
|
||||||
obj["ASI_mach_decimal"].hide();
|
obj["ASI_mach_decimal"].hide();
|
||||||
obj["ASI_mach"].hide();
|
obj["ASI_mach"].hide();
|
||||||
}
|
}
|
||||||
|
}),
|
||||||
|
props.UpdateManager.FromHashValue("mach", nil, func(val) {
|
||||||
if (val >= 0.999) {
|
if (val >= 0.999) {
|
||||||
obj["ASI_mach"].setText("99");
|
obj["ASI_mach"].setText("99");
|
||||||
} else {
|
} else {
|
||||||
|
@ -138,8 +123,9 @@ var canvas_IESI = {
|
||||||
obj.AI_horizon_trans.setTranslation(0, val * 16.74);
|
obj.AI_horizon_trans.setTranslation(0, val * 16.74);
|
||||||
}),
|
}),
|
||||||
props.UpdateManager.FromHashValue("roll", nil, func(val) {
|
props.UpdateManager.FromHashValue("roll", nil, func(val) {
|
||||||
obj.AI_horizon_rot.setRotation(-val * D2R, obj["AI_center"].getCenter());
|
obj._roll = -val * D2R;
|
||||||
obj["AI_bank"].setRotation(-val * D2R);
|
obj.AI_horizon_rot.setRotation(obj._roll, obj._aiCenter);
|
||||||
|
obj["AI_bank"].setRotation(obj._roll);
|
||||||
}),
|
}),
|
||||||
props.UpdateManager.FromHashValue("skid", nil, func(val) {
|
props.UpdateManager.FromHashValue("skid", nil, func(val) {
|
||||||
if (abs(val) >= 84.99) {
|
if (abs(val) >= 84.99) {
|
||||||
|
@ -149,32 +135,29 @@ var canvas_IESI = {
|
||||||
obj["AI_slipskid"].show();
|
obj["AI_slipskid"].show();
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
props.UpdateManager.FromHashList(["altimeter_mode","qnh_hpa","qnh_inhg"], nil, func(val) {
|
|
||||||
obj.updateQNH(val);
|
|
||||||
}),
|
|
||||||
];
|
];
|
||||||
return obj;
|
return obj;
|
||||||
},
|
},
|
||||||
getKeys: func() {
|
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"];
|
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) {
|
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._cachedInhg = notification.qnh_inhg;
|
||||||
|
me._cachedMode = notification.altimeter_mode;
|
||||||
me.updateQNH(notification);
|
me.updateQNH(notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
me.updatePower(notification);
|
|
||||||
if (me.group.getVisible() == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (me._IESITime + 90 >= notification.elapsedTime) {
|
if (me._IESITime + 90 >= notification.elapsedTime) {
|
||||||
if (notification.groundspeed > 2) {
|
if (!me._fastInit and me.alignFault.getBoolValue()) {
|
||||||
me._excessMotion = 1;
|
me._excessMotionInInit = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (me._fast) {
|
if (me._fastInit) {
|
||||||
me["IESI"].show();
|
me["IESI"].show();
|
||||||
me["IESI_Init"].hide();
|
me["IESI_Init"].hide();
|
||||||
me["AI_bank"].hide();
|
me["AI_bank"].hide();
|
||||||
|
@ -195,15 +178,15 @@ var canvas_IESI = {
|
||||||
me["IESI"].hide();
|
me["IESI"].hide();
|
||||||
me["IESI_Init"].show();
|
me["IESI_Init"].show();
|
||||||
me["ATTflag"].hide();
|
me["ATTflag"].hide();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
if (pinPrograms.metricAltitude) {
|
if (pinPrograms.metricAltitude) {
|
||||||
me["ALT_meters"].show();
|
me["ALT_meters"].show();
|
||||||
me["metricM"].show();
|
me["metricM"].show();
|
||||||
me["metricBox"].show();
|
me["metricBox"].show();
|
||||||
|
|
||||||
if (me.isNegativeAlt) {
|
if (me._isNegativeAlt) {
|
||||||
me["negText2"].show();
|
me["negText2"].show();
|
||||||
} else {
|
} else {
|
||||||
me["negText2"].hide();
|
me["negText2"].hide();
|
||||||
|
@ -215,7 +198,7 @@ var canvas_IESI = {
|
||||||
me["negText2"].hide();
|
me["negText2"].hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!me._excessMotion) {
|
if (!me._excessMotionInInit) {
|
||||||
me["IESI_Init"].hide();
|
me["IESI_Init"].hide();
|
||||||
me["IESI"].show();
|
me["IESI"].show();
|
||||||
me["AI_bank"].show();
|
me["AI_bank"].show();
|
||||||
|
@ -260,57 +243,41 @@ var canvas_IESI = {
|
||||||
} else {
|
} else {
|
||||||
me["QNH_setting"].setText(sprintf("%4.0f", notification.qnh_hpa));
|
me["QNH_setting"].setText(sprintf("%4.0f", notification.qnh_hpa));
|
||||||
}
|
}
|
||||||
me["QNH_setting"].show();
|
|
||||||
me["QNH_std"].hide();
|
me["QNH_std"].hide();
|
||||||
|
me["QNH_setting"].show();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_transientVar: 0,
|
|
||||||
updatePower: func(notification) {
|
updatePower: func(notification) {
|
||||||
# todo 20W power consumption
|
if (notification.attReset == 1 and me._canReset) {
|
||||||
if (notification.attReset == 1 and me.canReset) {
|
me._canReset = 0;
|
||||||
me.canReset = 0;
|
me._excessMotionInInit = 0;
|
||||||
me._excessMotion = 0;
|
me._fastInit = 1;
|
||||||
me._fast = 1;
|
|
||||||
iesi_init.setBoolValue(0);
|
iesi_init.setBoolValue(0);
|
||||||
} else if (me._IESITime + 90 < notification.elapsedTime and notification.iesiInit and !me.canReset) {
|
} else if (me._IESITime + 90 < notification.elapsedTime and notification.iesiInit and !me._canReset) {
|
||||||
me.canReset = 1;
|
me._canReset = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notification.dcEss >= 25 or (notification.relay7XB and notification.dcHot1703 >= 25)) {
|
if (notification.iesiPowered) {
|
||||||
me._showIESI = 1;
|
|
||||||
if (notification.acconfig != 1 and notification.iesiInit != 1) {
|
if (notification.acconfig != 1 and notification.iesiInit != 1) {
|
||||||
iesi_init.setBoolValue(1);
|
iesi_init.setBoolValue(1);
|
||||||
if (me._fast) {
|
me._IESITime = notification.elapsedTime - (me._fastInit ? 80 : 0);
|
||||||
me._IESITime = notification.elapsedTime - 80;
|
|
||||||
} else {
|
|
||||||
me._IESITime = notification.elapsedTime;
|
|
||||||
}
|
|
||||||
} else if (notification.acconfig == 1 and notification.iesiInit != 1) {
|
} else if (notification.acconfig == 1 and notification.iesiInit != 1) {
|
||||||
iesi_init.setBoolValue(1);
|
iesi_init.setBoolValue(1);
|
||||||
me._IESITime = notification.elapsedTime - 87;
|
me._IESITime = notification.elapsedTime - 87;
|
||||||
}
|
}
|
||||||
} elsif (notification.iesiInit) {
|
} elsif (notification.iesiInit) {
|
||||||
if (!me._transientVar) {
|
me._canReset = 0;
|
||||||
me._transientVar = 1;
|
me._excessMotionInInit = 0;
|
||||||
settimer(func() {
|
me._fastInit = 0;
|
||||||
if (systems.ELEC.Bus.dcEss.getValue() >= 25 or (systems.ELEC.Bus.dcHot1703.getValue() >= 25 and systems.ELEC.Relay.relay7XB.getValue())) {
|
iesi_init.setBoolValue(0);
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (me._showIESI and notification.iesiBrt > 0.01) {
|
if (notification.iesiPowered and notification.iesiBrt > 0.01) {
|
||||||
me.group.setVisible(1);
|
me.group.setVisible(1);
|
||||||
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
me.group.setVisible(0);
|
me.group.setVisible(0);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -352,13 +319,14 @@ var input = {
|
||||||
"attReset": "/instrumentation/iesi/att-reset",
|
"attReset": "/instrumentation/iesi/att-reset",
|
||||||
"iesiBrt": "/controls/lighting/DU/iesi",
|
"iesiBrt": "/controls/lighting/DU/iesi",
|
||||||
"iesiInit": "/instrumentation/iesi/iesi-init",
|
"iesiInit": "/instrumentation/iesi/iesi-init",
|
||||||
|
"iesiPowered": "/instrumentation/iesi/power/power-on",
|
||||||
"mach": "/instrumentation/airspeed-indicator/indicated-mach",
|
"mach": "/instrumentation/airspeed-indicator/indicated-mach",
|
||||||
"pitch": "/instrumentation/iesi/pitch-deg",
|
"pitch": "/instrumentation/iesi/pitch-deg",
|
||||||
"qnh_hpa": "/instrumentation/altimeter[6]/setting-hpa",
|
"qnh_hpa": "/instrumentation/altimeter[6]/setting-hpa",
|
||||||
"qnh_inhg": "/instrumentation/altimeter[6]/setting-inhg",
|
"qnh_inhg": "/instrumentation/altimeter[6]/setting-inhg",
|
||||||
"roll": "/orientation/roll-deg",
|
"roll": "/orientation/roll-deg",
|
||||||
"skid": "/instrumentation/iesi/slip-skid",
|
"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)) {
|
foreach (var name; keys(input)) {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
viewBox="0 0 1024 1024"
|
viewBox="0 0 1024 1024"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg2"
|
id="svg2"
|
||||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
sodipodi:docname="iesi.svg"
|
sodipodi:docname="iesi.svg"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
@ -38,16 +38,16 @@
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="1920"
|
||||||
inkscape:window-height="986"
|
inkscape:window-height="974"
|
||||||
id="namedview371"
|
id="namedview371"
|
||||||
showgrid="true"
|
showgrid="true"
|
||||||
inkscape:zoom="0.93517029"
|
inkscape:zoom="0.66126526"
|
||||||
inkscape:cx="815.35952"
|
inkscape:cx="369.74572"
|
||||||
inkscape:cy="762.42799"
|
inkscape:cy="772.76099"
|
||||||
inkscape:window-x="-11"
|
inkscape:window-x="-11"
|
||||||
inkscape:window-y="-11"
|
inkscape:window-y="-11"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:current-layer="ATTflag"
|
inkscape:current-layer="MsgBox"
|
||||||
showguides="true"
|
showguides="true"
|
||||||
inkscape:snap-global="false"
|
inkscape:snap-global="false"
|
||||||
units="pt"
|
units="pt"
|
||||||
|
@ -72,11 +72,11 @@
|
||||||
inkscape:label="MsgBox">
|
inkscape:label="MsgBox">
|
||||||
<rect
|
<rect
|
||||||
y="720.3349"
|
y="720.3349"
|
||||||
x="304.32764"
|
x="260.241"
|
||||||
height="91.330338"
|
height="91.330338"
|
||||||
width="406.27161"
|
width="490.202"
|
||||||
id="rect4448"
|
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
|
<text
|
||||||
inkscape:label="#text979"
|
inkscape:label="#text979"
|
||||||
transform="scale(1.0000144,0.9999856)"
|
transform="scale(1.0000144,0.9999856)"
|
||||||
|
@ -142,11 +142,11 @@
|
||||||
<g
|
<g
|
||||||
id="ATTwarn">
|
id="ATTwarn">
|
||||||
<rect
|
<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"
|
id="rect4484"
|
||||||
width="243.81277"
|
width="283.81299"
|
||||||
height="91.330353"
|
height="91.330353"
|
||||||
x="390.0936"
|
x="360.09399"
|
||||||
y="287.07605" />
|
y="287.07605" />
|
||||||
<text
|
<text
|
||||||
id="text4486"
|
id="text4486"
|
||||||
|
@ -164,14 +164,15 @@
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
id="ATTflag">
|
id="ATTflag"
|
||||||
|
style="display:inline">
|
||||||
<rect
|
<rect
|
||||||
y="720.3349"
|
y="720.3349"
|
||||||
x="304.32764"
|
x="260.241"
|
||||||
height="91.330338"
|
height="91.330338"
|
||||||
width="406.27161"
|
width="490.202"
|
||||||
id="attRstRect"
|
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
|
<text
|
||||||
inkscape:label="#text979"
|
inkscape:label="#text979"
|
||||||
transform="scale(1.0000144,0.9999856)"
|
transform="scale(1.0000144,0.9999856)"
|
||||||
|
@ -186,12 +187,12 @@
|
||||||
y="796.4032"
|
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>
|
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
|
<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"
|
id="ATTflag_rect"
|
||||||
width="243.81277"
|
width="280.59842"
|
||||||
height="91.330353"
|
height="91.115768"
|
||||||
x="390.0936"
|
x="361.70129"
|
||||||
y="287.07605" />
|
y="287.18335" />
|
||||||
<text
|
<text
|
||||||
id="ATTflag_text"
|
id="ATTflag_text"
|
||||||
y="363.13785"
|
y="363.13785"
|
||||||
|
@ -212,7 +213,8 @@
|
||||||
inkscape:label="IESI">
|
inkscape:label="IESI">
|
||||||
<g
|
<g
|
||||||
id="AI_horizon"
|
id="AI_horizon"
|
||||||
inkscape:label="#g4573">
|
inkscape:label="#g4573"
|
||||||
|
style="display:inline">
|
||||||
<g
|
<g
|
||||||
transform="translate(824.0447,-40.79798)"
|
transform="translate(824.0447,-40.79798)"
|
||||||
inkscape:label="#g4312"
|
inkscape:label="#g4312"
|
||||||
|
@ -618,7 +620,7 @@
|
||||||
</g>
|
</g>
|
||||||
</g>
|
</g>
|
||||||
<rect
|
<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"
|
id="AI_sky_bank"
|
||||||
width="663.18652"
|
width="663.18652"
|
||||||
height="124.96"
|
height="124.96"
|
||||||
|
@ -626,7 +628,7 @@
|
||||||
y="138.78481"
|
y="138.78481"
|
||||||
inkscape:label="#rect5809" />
|
inkscape:label="#rect5809" />
|
||||||
<rect
|
<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"
|
id="AI_bank_scale_clip"
|
||||||
width="663.21997"
|
width="663.21997"
|
||||||
height="229.7616"
|
height="229.7616"
|
||||||
|
@ -634,7 +636,7 @@
|
||||||
y="138.67441"
|
y="138.67441"
|
||||||
inkscape:label="#rect1094" />
|
inkscape:label="#rect1094" />
|
||||||
<rect
|
<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"
|
id="AI_horizon_clip"
|
||||||
width="663.21997"
|
width="663.21997"
|
||||||
height="608.67889"
|
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("");
|
me.symbols.dmeRDist.setText("");
|
||||||
}
|
}
|
||||||
|
|
||||||
# Hide heading bug 10 secs after change
|
# Hide heading bug 45 secs after change
|
||||||
var vhdg_bug = getprop("/it-autoflight/input/hdg") or 0;
|
var vhdg_bug = fmgc.Input.hdg.getValue();
|
||||||
var hdg_bug_active = getprop("/it-autoflight/custom/show-hdg");
|
var hdg_bug_active = fmgc.Custom.showHdg.getBoolValue();
|
||||||
if (hdg_bug_active == nil)
|
|
||||||
hdg_bug_active = 1;
|
|
||||||
|
|
||||||
if((me.in_mode("toggle_display_mode", ["MAP"]) and me.get_switch("toggle_display_type") == "CRT")
|
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"))
|
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{
|
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 wp_group = me.element;
|
||||||
var alt = me.model.alt;
|
var alt = me.model.alt;
|
||||||
var i = me.model.idx;
|
var i = me.model.idx;
|
||||||
|
|
|
@ -60,7 +60,7 @@ canvas.NDStyles["Airbus"] = {
|
||||||
lat_ctrl: "/it-autoflight/output/lat",
|
lat_ctrl: "/it-autoflight/output/lat",
|
||||||
managed_val: 1,
|
managed_val: 1,
|
||||||
ver_ctrl: "/it-autoflight/output/vert",
|
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",
|
current_wp: "/FMGC/flightplan[2]/current-wp",
|
||||||
ap1: "/it-autoflight/output/ap1",
|
ap1: "/it-autoflight/output/ap1",
|
||||||
ap2: "/it-autoflight/output/ap2",
|
ap2: "/it-autoflight/output/ap2",
|
||||||
|
@ -595,18 +595,18 @@ canvas.NDStyles["Airbus"] = {
|
||||||
isMapStructure: 1,
|
isMapStructure: 1,
|
||||||
update_on: ["toggle_display_mode","toggle_range"],
|
update_on: ["toggle_display_mode","toggle_range"],
|
||||||
predicate: func(nd, layer) {
|
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 );
|
layer.group.setVisible( visible );
|
||||||
if (visible) {
|
if (visible) {
|
||||||
layer.update();
|
layer.update();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
options: {
|
options: {
|
||||||
# Overridable options:
|
decel_node: "/instrumentation/nd/symbols/decel",
|
||||||
# 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
|
|
||||||
listen: [
|
listen: [
|
||||||
"fplan_active",
|
"fplan_active",
|
||||||
|
"current_wp",
|
||||||
|
"wp_count",
|
||||||
"spd_ctrl",
|
"spd_ctrl",
|
||||||
"ver_ctrl",
|
"ver_ctrl",
|
||||||
"athr"
|
"athr"
|
||||||
|
@ -746,14 +746,15 @@ canvas.NDStyles["Airbus"] = {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "taOnly", # the SVG ID
|
# TODO: taOnly doesn"t need to use getprop polling in update(), use a listener instead!
|
||||||
impl: { # implementation hash
|
id: "taOnly",
|
||||||
init: func(nd, symbol), # for updateCenter stuff, called during initialization in the ctor
|
impl: {
|
||||||
predicate: func(nd) getprop("/instrumentation/tcas/inputs/mode") == 2, # the condition
|
init: func(nd, symbol),
|
||||||
is_true: func(nd) nd.symbols.taOnly.show(), # if true, run this
|
predicate: func(nd) getprop("/instrumentation/tcas/inputs/mode") == 2,
|
||||||
is_false: func(nd) nd.symbols.taOnly.hide(), # if false, run this
|
is_true: func(nd) nd.symbols.taOnly.show(),
|
||||||
}, # end of taOnly behavior/callbacks
|
is_false: func(nd) nd.symbols.taOnly.hide(),
|
||||||
}, # end of taOnly
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "tas",
|
id: "tas",
|
||||||
impl: {
|
impl: {
|
||||||
|
@ -761,7 +762,6 @@ canvas.NDStyles["Airbus"] = {
|
||||||
predicate: func(nd) getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 60,
|
predicate: func(nd) getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 60,
|
||||||
is_true: func(nd) {
|
is_true: func(nd) {
|
||||||
nd.symbols.tas.setText(sprintf("%3.0f",getprop("/instrumentation/airspeed-indicator/true-speed-kt")));
|
nd.symbols.tas.setText(sprintf("%3.0f",getprop("/instrumentation/airspeed-indicator/true-speed-kt")));
|
||||||
nd.symbols.tas.show();
|
|
||||||
},
|
},
|
||||||
is_false: func(nd){
|
is_false: func(nd){
|
||||||
nd.symbols.tas.setText("---");
|
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;
|
var deg = math.round(getprop("/FMGC/flightplan[2]/current-leg-course-mag")) or 0;
|
||||||
}
|
}
|
||||||
if (deg != nil) {
|
if (deg != nil) {
|
||||||
nd.symbols.wpActiveCrs.setText(sprintf("%03.0f", deg) ~ "°");
|
nd.symbols.wpActiveCrs.setText(sprintf("%03.0f°", deg));
|
||||||
nd.symbols.wpActiveCrs.show();
|
nd.symbols.wpActiveCrs.show();
|
||||||
} else {
|
} else {
|
||||||
nd.symbols.wpActiveCrs.hide();
|
nd.symbols.wpActiveCrs.hide();
|
||||||
|
@ -1324,7 +1324,7 @@ canvas.NDStyles["Airbus"] = {
|
||||||
id:"curTrkPtr",
|
id:"curTrkPtr",
|
||||||
impl: {
|
impl: {
|
||||||
init: func(nd,symbol),
|
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 (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),
|
and abs(nd.aircraft_source.get_trk_mag() - nd.aircraft_source.get_hdg_mag()) <= 42),
|
||||||
is_true: func(nd) {
|
is_true: func(nd) {
|
||||||
|
@ -1368,7 +1368,7 @@ canvas.NDStyles["Airbus"] = {
|
||||||
impl: {
|
impl: {
|
||||||
init: func(nd,symbol),
|
init: func(nd,symbol),
|
||||||
predicate: func(nd) (nd.get_switch("toggle_display_mode") == "MAP" and
|
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
|
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))),
|
(nd.adirs_property.getValue() == 1 or (adirs_3.getValue() == 1 and att_switch.getValue() == nd.attitude_heading_setting))),
|
||||||
is_true: func(nd) {
|
is_true: func(nd) {
|
||||||
|
@ -1531,6 +1531,8 @@ canvas.NDStyles["Airbus"] = {
|
||||||
predicate: func(nd) (getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 100),
|
predicate: func(nd) (getprop("/instrumentation/airspeed-indicator/true-speed-kt") >= 100),
|
||||||
is_true: func(nd) {
|
is_true: func(nd) {
|
||||||
var windDir = pts.Instrumentation.PFD.windDirection.getValue() or 0;
|
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));
|
nd.symbols.wind.setText(sprintf("%03.0f / %02.0f",windDir,pts.Instrumentation.PFD.windSpeed.getValue() or 0));
|
||||||
},
|
},
|
||||||
is_false: func(nd) {
|
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),
|
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) {
|
is_true: func(nd) {
|
||||||
nd.symbols.windArrow.show();
|
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);
|
nd.symbols.windArrow.setRotation(windArrowRot*D2R);
|
||||||
},
|
},
|
||||||
is_false: func(nd) nd.symbols.windArrow.hide(),
|
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_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_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_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 = {
|
var canvas_pfd = {
|
||||||
middleOffset: 0,
|
middleOffset: 0,
|
||||||
|
@ -776,7 +777,7 @@ var canvas_pfd = {
|
||||||
getKeys: func() {
|
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",
|
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_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",
|
"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",
|
"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",
|
"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;
|
me.tgt_kts = notification.targetKts;
|
||||||
|
|
||||||
if (notification.managedSpd) {
|
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_ias = fmgc.FMGCInternal.vappSpeedSet ? fmgc.FMGCInternal.vapp_appr : fmgc.FMGCInternal.vapp;
|
||||||
me.tgt_kts = 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) {
|
} else if (fmgc.FMGCInternal.phase == 6) {
|
||||||
|
@ -1279,16 +1280,14 @@ var canvas_pfd = {
|
||||||
me["machError"].hide();
|
me["machError"].hide();
|
||||||
|
|
||||||
if (me.ind_mach >= 0.999) {
|
if (me.ind_mach >= 0.999) {
|
||||||
me["ASI_mach"].setText("999");
|
me["ASI_mach"].setText(".999");
|
||||||
} else {
|
} 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) {
|
if (me.ind_mach >= 0.5) {
|
||||||
me["ASI_mach_decimal"].show();
|
|
||||||
me["ASI_mach"].show();
|
me["ASI_mach"].show();
|
||||||
} else {
|
} else {
|
||||||
me["ASI_mach_decimal"].hide();
|
|
||||||
me["ASI_mach"].hide();
|
me["ASI_mach"].hide();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -2052,7 +2051,6 @@ var input = {
|
||||||
thr2: "/controls/engines/engine[1]/throttle-pos",
|
thr2: "/controls/engines/engine[1]/throttle-pos",
|
||||||
|
|
||||||
decision: "/instrumentation/mk-viii/inputs/arinc429/decision-height",
|
decision: "/instrumentation/mk-viii/inputs/arinc429/decision-height",
|
||||||
decel: "/FMGC/internal/decel",
|
|
||||||
radio: "/FMGC/internal/radio",
|
radio: "/FMGC/internal/radio",
|
||||||
baro: "/FMGC/internal/baro",
|
baro: "/FMGC/internal/baro",
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<svg
|
<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"
|
sodipodi:docname="pfd.svg"
|
||||||
inkscape:version="0.91 r13725"
|
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||||
id="svg2"
|
id="svg2"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
viewBox="0 0 1024 1024"
|
viewBox="0 0 1024 1024"
|
||||||
height="1024pt"
|
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
|
<metadata
|
||||||
id="metadata375">
|
id="metadata375">
|
||||||
<rdf:RDF>
|
<rdf:RDF>
|
||||||
|
@ -37,17 +37,17 @@
|
||||||
units="pt"
|
units="pt"
|
||||||
inkscape:snap-global="false"
|
inkscape:snap-global="false"
|
||||||
showguides="true"
|
showguides="true"
|
||||||
inkscape:current-layer="svg2"
|
inkscape:current-layer="ALT_group"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:window-y="-8"
|
inkscape:window-y="-11"
|
||||||
inkscape:window-x="-8"
|
inkscape:window-x="-11"
|
||||||
inkscape:cy="245.80636"
|
inkscape:cy="673.69595"
|
||||||
inkscape:cx="411.71903"
|
inkscape:cx="1065.6983"
|
||||||
inkscape:zoom="0.35355341"
|
inkscape:zoom="5.6568545"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
id="namedview371"
|
id="namedview371"
|
||||||
inkscape:window-height="657"
|
inkscape:window-height="974"
|
||||||
inkscape:window-width="1280"
|
inkscape:window-width="1920"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
guidetolerance="10"
|
guidetolerance="10"
|
||||||
|
@ -230,8 +230,7 @@
|
||||||
y="480.29712"
|
y="480.29712"
|
||||||
id="text4718"
|
id="text4718"
|
||||||
transform="scale(0.95383277,1.0484018)"
|
transform="scale(0.95383277,1.0484018)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4720"
|
id="tspan4720"
|
||||||
x="381.24359"
|
x="381.24359"
|
||||||
|
@ -244,8 +243,7 @@
|
||||||
y="480.29608"
|
y="480.29608"
|
||||||
x="593.11237"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="480.29608"
|
||||||
x="593.11237"
|
x="593.11237"
|
||||||
|
@ -258,8 +256,7 @@
|
||||||
y="367.48999"
|
y="367.48999"
|
||||||
x="381.24359"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="367.48999"
|
||||||
x="381.24359"
|
x="381.24359"
|
||||||
|
@ -272,8 +269,7 @@
|
||||||
y="367.4892"
|
y="367.4892"
|
||||||
id="text5097"
|
id="text5097"
|
||||||
transform="scale(0.95383069,1.0484041)"
|
transform="scale(0.95383069,1.0484041)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan5099"
|
id="tspan5099"
|
||||||
x="593.11237"
|
x="593.11237"
|
||||||
|
@ -286,8 +282,7 @@
|
||||||
y="268.78375"
|
y="268.78375"
|
||||||
id="text5125"
|
id="text5125"
|
||||||
transform="scale(0.95383277,1.0484018)"
|
transform="scale(0.95383277,1.0484018)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan5127"
|
id="tspan5127"
|
||||||
x="381.24359"
|
x="381.24359"
|
||||||
|
@ -300,8 +295,7 @@
|
||||||
y="268.78317"
|
y="268.78317"
|
||||||
x="593.11237"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="268.78317"
|
||||||
x="593.11237"
|
x="593.11237"
|
||||||
|
@ -314,8 +308,7 @@
|
||||||
y="155.97633"
|
y="155.97633"
|
||||||
x="373.38058"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="155.97633"
|
||||||
x="373.38058"
|
x="373.38058"
|
||||||
|
@ -328,8 +321,7 @@
|
||||||
y="155.976"
|
y="155.976"
|
||||||
id="text5145"
|
id="text5145"
|
||||||
transform="scale(0.95383069,1.0484041)"
|
transform="scale(0.95383069,1.0484041)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan5147"
|
id="tspan5147"
|
||||||
x="600.9754"
|
x="600.9754"
|
||||||
|
@ -342,8 +334,7 @@
|
||||||
y="-13.234788"
|
y="-13.234788"
|
||||||
x="365.51758"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="-13.234788"
|
||||||
x="365.51758"
|
x="365.51758"
|
||||||
|
@ -356,8 +347,7 @@
|
||||||
y="-13.234759"
|
y="-13.234759"
|
||||||
id="text5209"
|
id="text5209"
|
||||||
transform="scale(0.95383069,1.0484041)"
|
transform="scale(0.95383069,1.0484041)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan5211"
|
id="tspan5211"
|
||||||
x="608.83844"
|
x="608.83844"
|
||||||
|
@ -374,8 +364,7 @@
|
||||||
y="705.91138"
|
y="705.91138"
|
||||||
x="381.24359"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="705.91138"
|
||||||
x="381.24359"
|
x="381.24359"
|
||||||
|
@ -388,8 +377,7 @@
|
||||||
y="705.90985"
|
y="705.90985"
|
||||||
id="text4517"
|
id="text4517"
|
||||||
transform="scale(0.95383069,1.0484041)"
|
transform="scale(0.95383069,1.0484041)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4519"
|
id="tspan4519"
|
||||||
x="593.11237"
|
x="593.11237"
|
||||||
|
@ -402,8 +390,7 @@
|
||||||
y="790.51678"
|
y="790.51678"
|
||||||
id="text4541"
|
id="text4541"
|
||||||
transform="scale(0.95383277,1.0484018)"
|
transform="scale(0.95383277,1.0484018)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4543"
|
id="tspan4543"
|
||||||
x="381.24359"
|
x="381.24359"
|
||||||
|
@ -416,8 +403,7 @@
|
||||||
y="790.51508"
|
y="790.51508"
|
||||||
x="593.11237"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="790.51508"
|
||||||
x="593.11237"
|
x="593.11237"
|
||||||
|
@ -430,8 +416,7 @@
|
||||||
y="846.91992"
|
y="846.91992"
|
||||||
x="381.24359"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="846.91992"
|
||||||
x="381.24359"
|
x="381.24359"
|
||||||
|
@ -444,8 +429,7 @@
|
||||||
y="846.91803"
|
y="846.91803"
|
||||||
id="text4553"
|
id="text4553"
|
||||||
transform="scale(0.95383069,1.0484041)"
|
transform="scale(0.95383069,1.0484041)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4555"
|
id="tspan4555"
|
||||||
x="593.11237"
|
x="593.11237"
|
||||||
|
@ -458,8 +442,7 @@
|
||||||
y="959.72705"
|
y="959.72705"
|
||||||
id="text4581"
|
id="text4581"
|
||||||
transform="scale(0.95383277,1.0484018)"
|
transform="scale(0.95383277,1.0484018)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4583"
|
id="tspan4583"
|
||||||
x="373.38058"
|
x="373.38058"
|
||||||
|
@ -472,8 +455,7 @@
|
||||||
y="959.72498"
|
y="959.72498"
|
||||||
x="600.9754"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="959.72498"
|
||||||
x="600.9754"
|
x="600.9754"
|
||||||
|
@ -486,8 +468,7 @@
|
||||||
y="1128.9375"
|
y="1128.9375"
|
||||||
x="365.51758"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="1128.9375"
|
||||||
x="365.51758"
|
x="365.51758"
|
||||||
|
@ -500,8 +481,7 @@
|
||||||
y="1128.9351"
|
y="1128.9351"
|
||||||
id="text4593"
|
id="text4593"
|
||||||
transform="scale(0.95383069,1.0484041)"
|
transform="scale(0.95383069,1.0484041)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4595"
|
id="tspan4595"
|
||||||
x="608.83844"
|
x="608.83844"
|
||||||
|
@ -688,10 +668,9 @@
|
||||||
id="text4924"
|
id="text4924"
|
||||||
y="178.57314"
|
y="178.57314"
|
||||||
x="392.94345"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
||||||
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"
|
|
||||||
y="178.57314"
|
y="178.57314"
|
||||||
x="392.94345"
|
x="392.94345"
|
||||||
id="tspan4926"
|
id="tspan4926"
|
||||||
|
@ -703,8 +682,7 @@
|
||||||
y="178.57445"
|
y="178.57445"
|
||||||
id="text4958"
|
id="text4958"
|
||||||
inkscape:label="#text4314"
|
inkscape:label="#text4314"
|
||||||
transform="scale(0.97051544,1.0303803)"
|
transform="scale(0.97051544,1.0303803)"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4960"
|
id="tspan4960"
|
||||||
x="530.78998"
|
x="530.78998"
|
||||||
|
@ -717,8 +695,7 @@
|
||||||
y="666.06818"
|
y="666.06818"
|
||||||
id="text4970"
|
id="text4970"
|
||||||
inkscape:label="#text4314"
|
inkscape:label="#text4314"
|
||||||
transform="scale(0.97051987,1.0303756)"
|
transform="scale(0.97051987,1.0303756)"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4972"
|
id="tspan4972"
|
||||||
x="420.73514"
|
x="420.73514"
|
||||||
|
@ -731,8 +708,7 @@
|
||||||
y="666.06818"
|
y="666.06818"
|
||||||
x="502.99374"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="666.06818"
|
||||||
x="502.99374"
|
x="502.99374"
|
||||||
|
@ -1142,8 +1118,7 @@
|
||||||
y="404.63544"
|
y="404.63544"
|
||||||
id="text4314"
|
id="text4314"
|
||||||
inkscape:label="#text4314"
|
inkscape:label="#text4314"
|
||||||
transform="scale(0.97051454,1.0303813)"
|
transform="scale(0.97051454,1.0303813)"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4407"
|
id="tspan4407"
|
||||||
x="202.60973"
|
x="202.60973"
|
||||||
|
@ -1156,8 +1131,7 @@
|
||||||
y="404.63544"
|
y="404.63544"
|
||||||
x="721.12775"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="404.63544"
|
||||||
x="721.12775"
|
x="721.12775"
|
||||||
|
@ -1245,17 +1219,16 @@
|
||||||
inkscape:transform-center-y="245.55937"
|
inkscape:transform-center-y="245.55937"
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="511.25748"
|
||||||
y="680.72845"
|
y="680.72845"
|
||||||
id="AI_agl"
|
id="AI_agl"
|
||||||
transform="scale(0.87678236,1.1405339)"
|
transform="scale(0.87678236,1.1405339)"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4624"
|
id="tspan4624"
|
||||||
x="511.25748"
|
x="511.25748"
|
||||||
y="680.72845"
|
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>
|
||||||
<g
|
<g
|
||||||
id="AI_stick"
|
id="AI_stick"
|
||||||
|
@ -1523,7 +1496,7 @@
|
||||||
id="tspan5094"
|
id="tspan5094"
|
||||||
x="1019.0017"
|
x="1019.0017"
|
||||||
y="569.32635"
|
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
|
<text
|
||||||
transform="scale(0.87676975,1.1405503)"
|
transform="scale(0.87676975,1.1405503)"
|
||||||
id="text5100"
|
id="text5100"
|
||||||
|
@ -1531,7 +1504,7 @@
|
||||||
x="1019.0017"
|
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"
|
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
|
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"
|
y="628.34387"
|
||||||
x="1019.0017"
|
x="1019.0017"
|
||||||
id="tspan5098"
|
id="tspan5098"
|
||||||
|
@ -1547,7 +1520,7 @@
|
||||||
id="tspan5102"
|
id="tspan5102"
|
||||||
x="1019.0017"
|
x="1019.0017"
|
||||||
y="687.27924"
|
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>
|
||||||
<g
|
<g
|
||||||
id="g5092"
|
id="g5092"
|
||||||
|
@ -1605,7 +1578,7 @@
|
||||||
x="1086.9194"
|
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"
|
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
|
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"
|
y="183.6866"
|
||||||
x="1086.9194"
|
x="1086.9194"
|
||||||
id="tspan5128"
|
id="tspan5128"
|
||||||
|
@ -1621,7 +1594,7 @@
|
||||||
id="tspan5132"
|
id="tspan5132"
|
||||||
x="1086.9194"
|
x="1086.9194"
|
||||||
y="246.63768"
|
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
|
<text
|
||||||
transform="scale(0.87678236,1.1405339)"
|
transform="scale(0.87678236,1.1405339)"
|
||||||
id="text5138"
|
id="text5138"
|
||||||
|
@ -1629,7 +1602,7 @@
|
||||||
x="1086.9194"
|
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"
|
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
|
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"
|
y="309.50116"
|
||||||
x="1086.9194"
|
x="1086.9194"
|
||||||
id="tspan5136"
|
id="tspan5136"
|
||||||
|
@ -1723,7 +1696,7 @@
|
||||||
id="tspan5136-1"
|
id="tspan5136-1"
|
||||||
x="1147.7107"
|
x="1147.7107"
|
||||||
y="405.05588"
|
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>
|
||||||
</g>
|
</g>
|
||||||
<rect
|
<rect
|
||||||
|
@ -1986,10 +1959,10 @@
|
||||||
id="FMA_manmode"
|
id="FMA_manmode"
|
||||||
y="74.429817"
|
y="74.429817"
|
||||||
x="125.31013"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"><tspan
|
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"
|
y="74.429817"
|
||||||
x="125.31013"
|
x="125.31013"
|
||||||
id="tspan4307"
|
id="tspan4307"
|
||||||
|
@ -1997,7 +1970,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="125.84993"
|
||||||
y="33.759209"
|
y="33.759209"
|
||||||
id="FMA_man"
|
id="FMA_man"
|
||||||
|
@ -2006,7 +1979,7 @@
|
||||||
id="tspan4303"
|
id="tspan4303"
|
||||||
x="125.84993"
|
x="125.84993"
|
||||||
y="33.759209"
|
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
|
<path
|
||||||
inkscape:label="#path987"
|
inkscape:label="#path987"
|
||||||
sodipodi:nodetypes="cc"
|
sodipodi:nodetypes="cc"
|
||||||
|
@ -2017,7 +1990,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="505.48523"
|
||||||
y="115.0584"
|
y="115.0584"
|
||||||
id="FMA_ctr_msg"
|
id="FMA_ctr_msg"
|
||||||
|
@ -2026,7 +1999,7 @@
|
||||||
id="tspan4614"
|
id="tspan4614"
|
||||||
x="505.48523"
|
x="505.48523"
|
||||||
y="115.0584"
|
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
|
<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"
|
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"
|
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"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"><tspan
|
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"
|
y="34.986706"
|
||||||
x="370.20218"
|
x="370.20218"
|
||||||
id="tspan4244"
|
id="tspan4244"
|
||||||
|
@ -2059,7 +2032,7 @@
|
||||||
id="tspan4248"
|
id="tspan4248"
|
||||||
x="422.80801"
|
x="422.80801"
|
||||||
y="74.709473"
|
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
|
<text
|
||||||
transform="scale(0.87678236,1.1405339)"
|
transform="scale(0.87678236,1.1405339)"
|
||||||
id="FMA_pitcharm2"
|
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"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"><tspan
|
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"
|
y="74.709473"
|
||||||
x="305.3663"
|
x="305.3663"
|
||||||
id="tspan4252"
|
id="tspan4252"
|
||||||
|
@ -2076,7 +2049,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="629.61298"
|
||||||
y="34.635147"
|
y="34.635147"
|
||||||
id="FMA_roll"
|
id="FMA_roll"
|
||||||
|
@ -2085,11 +2058,11 @@
|
||||||
id="tspan4256"
|
id="tspan4256"
|
||||||
x="629.61298"
|
x="629.61298"
|
||||||
y="34.635147"
|
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
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="629.22266"
|
||||||
y="74.709473"
|
y="74.709473"
|
||||||
id="FMA_rollarm"
|
id="FMA_rollarm"
|
||||||
|
@ -2098,7 +2071,7 @@
|
||||||
id="tspan4260"
|
id="tspan4260"
|
||||||
x="629.22266"
|
x="629.22266"
|
||||||
y="74.709473"
|
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
|
<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"
|
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"
|
id="FMA_pitch_box"
|
||||||
|
@ -2206,7 +2179,7 @@
|
||||||
id="tspan4618"
|
id="tspan4618"
|
||||||
x="859.21783"
|
x="859.21783"
|
||||||
y="885.26117"
|
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
|
<g
|
||||||
id="ALT_target"
|
id="ALT_target"
|
||||||
inkscape:label="#g4832">
|
inkscape:label="#g4832">
|
||||||
|
@ -2253,7 +2226,7 @@
|
||||||
id="tspan4800"
|
id="tspan4800"
|
||||||
x="890.99316"
|
x="890.99316"
|
||||||
y="506.26898"
|
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>
|
</g>
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
|
@ -2262,8 +2235,7 @@
|
||||||
y="787.28491"
|
y="787.28491"
|
||||||
id="ALT_digit_DN"
|
id="ALT_digit_DN"
|
||||||
transform="scale(0.95382558,1.0484097)"
|
transform="scale(0.95382558,1.0484097)"
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan5112"
|
id="tspan5112"
|
||||||
x="802.7406"
|
x="802.7406"
|
||||||
|
@ -2276,8 +2248,7 @@
|
||||||
y="220.32645"
|
y="220.32645"
|
||||||
x="802.7406"
|
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"
|
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"
|
xml:space="preserve"><tspan
|
||||||
sodipodi:linespacing="0%"><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"
|
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"
|
y="220.32645"
|
||||||
x="802.7406"
|
x="802.7406"
|
||||||
|
@ -2303,7 +2274,7 @@
|
||||||
id="tspan5024"
|
id="tspan5024"
|
||||||
x="887.71545"
|
x="887.71545"
|
||||||
y="775.94104"
|
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
|
<text
|
||||||
id="QNH_setting"
|
id="QNH_setting"
|
||||||
y="885.26117"
|
y="885.26117"
|
||||||
|
@ -2312,7 +2283,7 @@
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
transform="scale(1.0000144,0.9999856)"
|
transform="scale(1.0000144,0.9999856)"
|
||||||
inkscape:label="#text979"><tspan
|
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"
|
y="885.26117"
|
||||||
x="907.61713"
|
x="907.61713"
|
||||||
id="tspan977"
|
id="tspan977"
|
||||||
|
@ -2443,16 +2414,16 @@
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
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"
|
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"
|
y="506.23941"
|
||||||
id="ALT_digits"
|
id="ALT_digits"
|
||||||
transform="scale(0.95383277,1.0484018)"
|
transform="scale(0.95383277,1.0484018)"
|
||||||
inkscape:label="#text975"><tspan
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan973"
|
id="tspan973"
|
||||||
x="890.99316"
|
x="895.2074"
|
||||||
y="506.23941"
|
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>
|
</g>
|
||||||
<rect
|
<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"
|
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"
|
id="FMA_ap"
|
||||||
y="34.635155"
|
y="34.635155"
|
||||||
x="1080.6229"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"><tspan
|
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"
|
y="34.635155"
|
||||||
x="1080.6229"
|
x="1080.6229"
|
||||||
id="tspan4268"
|
id="tspan4268"
|
||||||
|
@ -2496,7 +2467,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="1080.6229"
|
||||||
y="74.709656"
|
y="74.709656"
|
||||||
id="FMA_fd"
|
id="FMA_fd"
|
||||||
|
@ -2505,16 +2476,16 @@
|
||||||
id="tspan4272"
|
id="tspan4272"
|
||||||
x="1080.6229"
|
x="1080.6229"
|
||||||
y="74.709656"
|
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
|
<text
|
||||||
transform="scale(0.87678236,1.1405339)"
|
transform="scale(0.87678236,1.1405339)"
|
||||||
id="FMA_athr"
|
id="FMA_athr"
|
||||||
y="115.05846"
|
y="115.05846"
|
||||||
x="1080.6229"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"><tspan
|
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"
|
y="115.05846"
|
||||||
x="1080.6229"
|
x="1080.6229"
|
||||||
id="tspan4276"
|
id="tspan4276"
|
||||||
|
@ -2522,7 +2493,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="874.48682"
|
||||||
y="34.635155"
|
y="34.635155"
|
||||||
id="FMA_catmode"
|
id="FMA_catmode"
|
||||||
|
@ -2531,16 +2502,16 @@
|
||||||
id="tspan4280"
|
id="tspan4280"
|
||||||
x="874.48682"
|
x="874.48682"
|
||||||
y="34.635155"
|
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
|
<text
|
||||||
transform="scale(0.87678236,1.1405339)"
|
transform="scale(0.87678236,1.1405339)"
|
||||||
id="FMA_cattype"
|
id="FMA_cattype"
|
||||||
y="74.709656"
|
y="74.709656"
|
||||||
x="874.48682"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"><tspan
|
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"
|
y="74.709656"
|
||||||
x="874.48682"
|
x="874.48682"
|
||||||
id="tspan4284"
|
id="tspan4284"
|
||||||
|
@ -2548,7 +2519,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="874.48682"
|
||||||
y="115.05846"
|
y="115.05846"
|
||||||
id="FMA_nodh"
|
id="FMA_nodh"
|
||||||
|
@ -2557,7 +2528,7 @@
|
||||||
id="tspan4288"
|
id="tspan4288"
|
||||||
x="874.48682"
|
x="874.48682"
|
||||||
y="115.05846"
|
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
|
<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"
|
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"
|
id="FMA_catmode_box"
|
||||||
|
@ -2609,7 +2580,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="123.23077"
|
||||||
y="34.635437"
|
y="34.635437"
|
||||||
id="FMA_thrust"
|
id="FMA_thrust"
|
||||||
|
@ -2618,7 +2589,7 @@
|
||||||
id="tspan981"
|
id="tspan981"
|
||||||
x="123.23077"
|
x="123.23077"
|
||||||
y="34.635437"
|
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
|
<rect
|
||||||
inkscape:label="#rect4290"
|
inkscape:label="#rect4290"
|
||||||
y="7.4160867"
|
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"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"><tspan
|
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"
|
y="34.635437"
|
||||||
x="505.48523"
|
x="505.48523"
|
||||||
id="tspan4354"
|
id="tspan4354"
|
||||||
|
@ -2661,10 +2632,10 @@
|
||||||
id="FMA_dh"
|
id="FMA_dh"
|
||||||
y="115.05846"
|
y="115.05846"
|
||||||
x="831.23047"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"><tspan
|
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"
|
y="115.05846"
|
||||||
x="831.23047"
|
x="831.23047"
|
||||||
id="tspan4301"
|
id="tspan4301"
|
||||||
|
@ -2672,7 +2643,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="934.0097"
|
||||||
y="115.05846"
|
y="115.05846"
|
||||||
id="FMA_dhn"
|
id="FMA_dhn"
|
||||||
|
@ -2681,7 +2652,7 @@
|
||||||
id="tspan4305"
|
id="tspan4305"
|
||||||
x="934.0097"
|
x="934.0097"
|
||||||
y="115.05846"
|
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
|
<g
|
||||||
inkscape:label="#g4375"
|
inkscape:label="#g4375"
|
||||||
id="ALPHA_bars">
|
id="ALPHA_bars">
|
||||||
|
@ -4083,7 +4054,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="185.85408"
|
||||||
y="74.429558"
|
y="74.429558"
|
||||||
id="FMA_flxtemp"
|
id="FMA_flxtemp"
|
||||||
|
@ -4092,16 +4063,16 @@
|
||||||
id="tspan4316"
|
id="tspan4316"
|
||||||
x="185.85408"
|
x="185.85408"
|
||||||
y="74.429558"
|
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
|
<text
|
||||||
transform="scale(0.87678236,1.1405339)"
|
transform="scale(0.87678236,1.1405339)"
|
||||||
id="FMA_lvrclb"
|
id="FMA_lvrclb"
|
||||||
y="114.70684"
|
y="114.70684"
|
||||||
x="123.23077"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"><tspan
|
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"
|
y="114.70684"
|
||||||
x="123.23077"
|
x="123.23077"
|
||||||
id="tspan4294"
|
id="tspan4294"
|
||||||
|
@ -5665,28 +5636,15 @@
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"
|
||||||
transform="scale(0.95383277,1.0484018)"
|
transform="scale(0.95383277,1.0484018)"
|
||||||
id="ASI_mach"
|
id="ASI_mach"
|
||||||
y="835.1153"
|
y="785.1153"
|
||||||
x="69.848434"
|
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"
|
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
|
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"
|
y="835.1153"
|
||||||
x="69.848434"
|
x="69.848434"
|
||||||
id="tspan4664"
|
id="tspan4664"
|
||||||
sodipodi:role="line">000</tspan></text>
|
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
|
<text
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"
|
||||||
transform="scale(0.95382555,1.0484097)"
|
transform="scale(0.95382555,1.0484097)"
|
||||||
|
@ -5777,12 +5735,11 @@
|
||||||
id="text4326"
|
id="text4326"
|
||||||
y="348.03003"
|
y="348.03003"
|
||||||
x="71.731003"
|
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"
|
xml:space="preserve"
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
dx="0"
|
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"
|
y="348.03003"
|
||||||
x="71.731003"
|
x="71.731003"
|
||||||
id="tspan4328"
|
id="tspan4328"
|
||||||
|
@ -5796,17 +5753,16 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="71.731506"
|
||||||
y="659.0799"
|
y="659.0799"
|
||||||
id="text4332"
|
id="text4332"
|
||||||
transform="scale(0.92333871,1.0830262)"
|
transform="scale(0.92333871,1.0830262)"><tspan
|
||||||
sodipodi:linespacing="0%"><tspan
|
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4334"
|
id="tspan4334"
|
||||||
x="71.731506"
|
x="71.731506"
|
||||||
y="659.0799"
|
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>
|
||||||
<g
|
<g
|
||||||
id="ASI_buss_ref"
|
id="ASI_buss_ref"
|
||||||
|
@ -5883,14 +5839,14 @@
|
||||||
<text
|
<text
|
||||||
xml:space="preserve"
|
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"
|
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"
|
y="505.93329"
|
||||||
id="ALT_error"
|
id="ALT_error"
|
||||||
transform="scale(0.95383278,1.0484018)"
|
transform="scale(0.95383278,1.0484018)"
|
||||||
inkscape:label="#text975"><tspan
|
inkscape:label="#text975"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4386-4-0"
|
id="tspan4386-4-0"
|
||||||
x="851.70166"
|
x="855.8645"
|
||||||
y="505.93329"
|
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>
|
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
|
<text
|
||||||
|
@ -5959,7 +5915,7 @@
|
||||||
x="34.684372"
|
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"
|
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
|
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"
|
y="935.95209"
|
||||||
x="34.684372"
|
x="34.684372"
|
||||||
id="tspan978"
|
id="tspan978"
|
||||||
|
@ -5970,7 +5926,7 @@
|
||||||
x="34.684372"
|
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"
|
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
|
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"
|
y="974.72784"
|
||||||
x="34.684372"
|
x="34.684372"
|
||||||
id="tspan979"
|
id="tspan979"
|
||||||
|
@ -5981,7 +5937,7 @@
|
||||||
x="34.684372"
|
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"
|
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
|
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"
|
y="1013.5292"
|
||||||
x="34.684372"
|
x="34.684372"
|
||||||
id="tspan780"
|
id="tspan780"
|
||||||
|
@ -6092,52 +6048,52 @@
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
inkscape:label="#text913"
|
inkscape:label="#text913"
|
||||||
transform="scale(0.96366556,1.0377044)"><tspan
|
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"
|
y="317.73038"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan919">40</tspan><tspan
|
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"
|
y="344.55804"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4300">20</tspan><tspan
|
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"
|
y="371.38571"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan931">00</tspan><tspan
|
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"
|
y="398.21338"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan927">80</tspan><tspan
|
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"
|
y="425.04105"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan925">60</tspan><tspan
|
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"
|
y="451.86871"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan923">40</tspan><tspan
|
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"
|
y="478.69638"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan921">20</tspan><tspan
|
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"
|
y="505.52405"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan917">00</tspan><tspan
|
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"
|
y="532.35175"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan915">80</tspan><tspan
|
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"
|
y="559.17938"
|
||||||
x="898.703"
|
x="898.703"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
|
@ -6307,7 +6263,7 @@
|
||||||
<text
|
<text
|
||||||
inkscape:label="#text983"
|
inkscape:label="#text983"
|
||||||
xml:space="preserve"
|
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"
|
x="61.095329"
|
||||||
y="74.429939"
|
y="74.429939"
|
||||||
id="FMA_flxmode"
|
id="FMA_flxmode"
|
||||||
|
@ -6316,7 +6272,7 @@
|
||||||
id="tspan4307-3"
|
id="tspan4307-3"
|
||||||
x="61.095329"
|
x="61.095329"
|
||||||
y="74.429939"
|
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
|
<text
|
||||||
inkscape:label="#text1607"
|
inkscape:label="#text1607"
|
||||||
id="spdLimError"
|
id="spdLimError"
|
||||||
|
@ -6375,17 +6331,17 @@
|
||||||
x="823.7511"
|
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"
|
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
|
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"
|
y="453.28622"
|
||||||
x="823.7511"
|
x="823.7511"
|
||||||
id="tspan1791"
|
id="tspan1791"
|
||||||
sodipodi:role="line">N</tspan><tspan
|
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"
|
y="506.08621"
|
||||||
x="823.7511"
|
x="823.7511"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan1795">E</tspan><tspan
|
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"
|
y="558.88623"
|
||||||
x="823.7511"
|
x="823.7511"
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
|
@ -6402,7 +6358,7 @@
|
||||||
id="tspan1777"
|
id="tspan1777"
|
||||||
x="417.56354"
|
x="417.56354"
|
||||||
y="34.634907"
|
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
|
<rect
|
||||||
inkscape:label="#rect4290"
|
inkscape:label="#rect4290"
|
||||||
y="896.48456"
|
y="896.48456"
|
||||||
|
@ -6419,9 +6375,9 @@
|
||||||
xml:space="preserve"
|
xml:space="preserve"
|
||||||
transform="scale(1.0000144,0.9999856)"
|
transform="scale(1.0000144,0.9999856)"
|
||||||
inkscape:label="#text979"><tspan
|
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"
|
y="928.04248"
|
||||||
x="852.95343"
|
x="852.96283"
|
||||||
id="tspan977-3"
|
id="tspan977-3"
|
||||||
sodipodi:role="line">11070 </tspan></text>
|
sodipodi:role="line">11070 </tspan></text>
|
||||||
<text
|
<text
|
||||||
|
@ -6435,7 +6391,7 @@
|
||||||
id="tspan1813"
|
id="tspan1813"
|
||||||
x="909.43152"
|
x="909.43152"
|
||||||
y="928.62128"
|
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
|
<text
|
||||||
inkscape:label="#text975"
|
inkscape:label="#text975"
|
||||||
transform="scale(0.95382559,1.0484097)"
|
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];
|
var thrustState = [nil, nil];
|
||||||
|
|
||||||
# local variables
|
# local variables
|
||||||
|
var takeoffConfig = 0;
|
||||||
var transmitFlag1 = 0;
|
var transmitFlag1 = 0;
|
||||||
var transmitFlag2 = 0;
|
var transmitFlag2 = 0;
|
||||||
var phaseVar3 = nil;
|
var phaseVar3 = nil;
|
||||||
|
@ -2325,6 +2326,40 @@ var messages_priority_2 = func {
|
||||||
ECAM_controller.warningReset(fctlSpdBrkStillOut);
|
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();
|
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) {
|
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;
|
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 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 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 overspeedVMO = warning.new(msg: " -VMO/MMO.......350 /.82", colour: "r"),
|
||||||
var overspeedGear = warning.new(msg: "-VLE...........280 /.67", colour: "r"),
|
var overspeedGear = warning.new(msg: " -VLE...........280 /.67", colour: "r"),
|
||||||
var overspeedFlap = warning.new(msg: "-VFE................XXX", 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 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"),
|
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 cargoSmokeFwdGrdClsd = warning.new(msg: " .IF FWD CRG CLSD:", colour: "w"),
|
||||||
var cargoSmokeFwdAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
|
var cargoSmokeFwdAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
|
||||||
var cargoSmokeFwdGrd = warning.new(msg: " .WHEN ON GROUND", colour: "w"),
|
var cargoSmokeFwdGrd = warning.new(msg: " .WHEN ON GROUND", colour: "w"),
|
||||||
var cargoSmokeFwdDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
var cargoSmokeFwdDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
||||||
var cargoSmokeFwdDisemb = warning.new(msg: "-PAX..........DISEMBARK", colour: "c"),
|
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 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 cargoSmokeAftFans = warning.new(msg: " -CAB FANS...........OFF", colour: "c"),
|
||||||
var cargoSmokeAftGrdClsd = warning.new(msg: " .IF AFT CRG CLSD:", colour: "w"),
|
var cargoSmokeAftGrdClsd = warning.new(msg: " .IF AFT CRG CLSD:", colour: "w"),
|
||||||
var cargoSmokeAftAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
|
var cargoSmokeAftAgent = warning.new(msg: " -AGENT............DISCH", colour: "c"),
|
||||||
var cargoSmokeAftGrd = warning.new(msg: " .WHEN ON GROUND", colour: "w"),
|
var cargoSmokeAftGrd = warning.new(msg: " .WHEN ON GROUND", colour: "w"),
|
||||||
var cargoSmokeAftDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
var cargoSmokeAftDoors = warning.new(msg: " BEFORE OPEN CRG DOORS:", colour: "w"),
|
||||||
var cargoSmokeAftDisemb = warning.new(msg: "-PAX..........DISEMBARK", colour: "c"),
|
var cargoSmokeAftDisemb = warning.new(msg: " -PAX..........DISEMBARK", colour: "c"),
|
||||||
|
|
||||||
# Lavatory SMOKE
|
# Lavatory SMOKE
|
||||||
var lavatorySmoke = warning.new(msg: "SMOKE LAVATORY SMOKE ", colour: "r", aural: 0, light: 0, isMainMsg: 1),
|
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
|
# EXCES RESID PR
|
||||||
var excessResidPress = warning.new(msg: "CAB PR EXCES RESIDUAL PR ", colour: "r", aural: 0, light: 0, isMainMsg: 1, sdPage: "cabPressPage"),
|
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 excessResidPressPack1 = warning.new(msg: " -PACK 1.............OFF", colour: "c"),
|
||||||
var excessResidPressPack2 = warning.new(msg: "-PACK 2.............OFF", colour: "c"),
|
var excessResidPressPack2 = warning.new(msg: " -PACK 2.............OFF", colour: "c"),
|
||||||
var excessResidPressCabCr = warning.new(msg: "-CABIN CREW.......ALERT", colour: "c"),
|
var excessResidPressCabCr = warning.new(msg: " -CABIN CREW.......ALERT", colour: "c"),
|
||||||
|
|
||||||
# ESS Bus on Bat
|
# ESS Bus on Bat
|
||||||
# NEW EMER CONFIG
|
# NEW EMER CONFIG
|
||||||
|
@ -494,6 +494,12 @@ var warnings = std.Vector.new([
|
||||||
|
|
||||||
# F/CTL SPD BRK STILL OUT
|
# 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 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
|
# DIRECT LAW
|
||||||
var directLaw = warning.new(msg: "F/CTL DIRECT LAW", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
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
|
# Autothrust
|
||||||
var athr_offw = warning.new(msg: "AUTO FLT A/THR OFF", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
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 = 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 = 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
|
# TCAS FAULT
|
||||||
var tcasFault = warning.new(msg: "NAV TCAS FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
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 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 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 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
|
# FAC and Rudder System
|
||||||
var fac12Fault = warning.new(msg: "AUTO FLT FAC 1+2 FAULT", colour: "a", aural: 1, light: 1, isMainMsg: 1),
|
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) {
|
} elsif (side == 2) {
|
||||||
fmgc.Input.ap2.setValue(0);
|
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
|
# Autothrust Disconnection
|
||||||
|
|
|
@ -46,6 +46,7 @@ var Misc = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var Position = {
|
var Position = {
|
||||||
|
airborne5Secs: props.globals.getNode("/systems/fmgc/airborne-5-secs"),
|
||||||
gearAglFtTemp: 0,
|
gearAglFtTemp: 0,
|
||||||
gearAglFt: props.globals.getNode("/position/gear-agl-ft", 1),
|
gearAglFt: props.globals.getNode("/position/gear-agl-ft", 1),
|
||||||
indicatedAltitudeFt: props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1),
|
indicatedAltitudeFt: props.globals.getNode("/instrumentation/altimeter/indicated-altitude-ft", 1),
|
||||||
|
@ -365,9 +366,9 @@ var ITAF = {
|
||||||
# Preselect Heading
|
# Preselect Heading
|
||||||
if (Output.latTemp != 0 and Output.latTemp != 9) { # Modes that always show HDG
|
if (Output.latTemp != 0 and Output.latTemp != 9) { # Modes that always show HDG
|
||||||
if (Custom.hdgTime.getValue() + 45 >= Misc.elapsedSec.getValue()) {
|
if (Custom.hdgTime.getValue() + 45 >= Misc.elapsedSec.getValue()) {
|
||||||
setprop("it-autoflight/custom/show-hdg", 1);
|
Custom.showHdg.setBoolValue(1);
|
||||||
} else {
|
} else {
|
||||||
setprop("it-autoflight/custom/show-hdg", 0);
|
Custom.showHdg.setBoolValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -442,7 +443,7 @@ var ITAF = {
|
||||||
},
|
},
|
||||||
ap1Master: func(s) {
|
ap1Master: func(s) {
|
||||||
if (s == 1) {
|
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);
|
Output.ap1.setBoolValue(1);
|
||||||
me.updateFma();
|
me.updateFma();
|
||||||
Output.latTemp = Output.lat.getValue();
|
Output.latTemp = Output.lat.getValue();
|
||||||
|
@ -464,7 +465,7 @@ var ITAF = {
|
||||||
},
|
},
|
||||||
ap2Master: func(s) {
|
ap2Master: func(s) {
|
||||||
if (s == 1) {
|
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);
|
Output.ap2.setBoolValue(1);
|
||||||
me.updateFma();
|
me.updateFma();
|
||||||
Output.latTemp = Output.lat.getValue();
|
Output.latTemp = Output.lat.getValue();
|
||||||
|
@ -495,7 +496,7 @@ var ITAF = {
|
||||||
},
|
},
|
||||||
athrMaster: func(s) {
|
athrMaster: func(s) {
|
||||||
if (s == 1) {
|
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);
|
Output.athr.setBoolValue(1);
|
||||||
Custom.ThrLock.setValue(0);
|
Custom.ThrLock.setValue(0);
|
||||||
Custom.Sound.enableAthrOff = 1;
|
Custom.Sound.enableAthrOff = 1;
|
||||||
|
|
|
@ -26,10 +26,7 @@ var altitude = 0;
|
||||||
var flap = 0;
|
var flap = 0;
|
||||||
var flaps = 0;
|
var flaps = 0;
|
||||||
var ktsmach = 0;
|
var ktsmach = 0;
|
||||||
var kts_sel = 0;
|
|
||||||
var mach_sel = 0;
|
|
||||||
var srsSPD = 0;
|
var srsSPD = 0;
|
||||||
var decel = 0;
|
|
||||||
var mng_alt_spd = 0;
|
var mng_alt_spd = 0;
|
||||||
var mng_alt_mach = 0;
|
var mng_alt_mach = 0;
|
||||||
var altsel = 0;
|
var altsel = 0;
|
||||||
|
@ -75,6 +72,7 @@ var FMGCinit = func {
|
||||||
var FMGCInternal = {
|
var FMGCInternal = {
|
||||||
# phase logic
|
# phase logic
|
||||||
phase: 0,
|
phase: 0,
|
||||||
|
decel: 0,
|
||||||
minspeed: 0,
|
minspeed: 0,
|
||||||
maxspeed: 0,
|
maxspeed: 0,
|
||||||
clbSpdLim: 250,
|
clbSpdLim: 250,
|
||||||
|
@ -132,6 +130,9 @@ var FMGCInternal = {
|
||||||
vrset: 0,
|
vrset: 0,
|
||||||
v2: 0,
|
v2: 0,
|
||||||
v2set: 0,
|
v2set: 0,
|
||||||
|
toFlap: 0,
|
||||||
|
toThs: 0,
|
||||||
|
toFlapThsSet: 0,
|
||||||
|
|
||||||
# PERF APPR
|
# PERF APPR
|
||||||
destMag: 0,
|
destMag: 0,
|
||||||
|
@ -258,13 +259,16 @@ var postInit = func() {
|
||||||
|
|
||||||
var FMGCNodes = {
|
var FMGCNodes = {
|
||||||
costIndex: props.globals.initNode("/FMGC/internal/cost-index", 0, "DOUBLE"),
|
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"),
|
flexSet: props.globals.initNode("/FMGC/internal/flex-set", 0, "BOOL"),
|
||||||
flexTemp: props.globals.initNode("/FMGC/internal/flex", 0, "INT"),
|
flexTemp: props.globals.initNode("/FMGC/internal/flex", 0, "INT"),
|
||||||
mngSpdAlt: props.globals.getNode("/FMGC/internal/mng-alt-spd"),
|
mngSpdAlt: props.globals.getNode("/FMGC/internal/mng-alt-spd"),
|
||||||
ktsToMachFactor: props.globals.getNode("/FMGC/internal/kts-to-mach-factor"),
|
ktsToMachFactor: props.globals.getNode("/FMGC/internal/kts-to-mach-factor"),
|
||||||
machToKtsFactor: props.globals.getNode("/FMGC/internal/mach-to-kts-factor"),
|
machToKtsFactor: props.globals.getNode("/FMGC/internal/mach-to-kts-factor"),
|
||||||
mngMachAlt: props.globals.getNode("/FMGC/internal/mng-alt-mach"),
|
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"),
|
toFromSet: props.globals.initNode("/FMGC/internal/tofrom-set", 0, "BOOL"),
|
||||||
ldgElev: props.globals.getNode("/FMGC/internal/ldg-elev", 1),
|
ldgElev: props.globals.getNode("/FMGC/internal/ldg-elev", 1),
|
||||||
toState: props.globals.initNode("/FMGC/internal/to-state", 0, "BOOL"),
|
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
|
#ref lat
|
||||||
dms = getprop("/FMGC/flightplan[2]/wp[0]/lat");
|
apt = airportinfo(FMGCInternal.depApt);
|
||||||
|
dms = apt.lat;
|
||||||
degrees = int(dms);
|
degrees = int(dms);
|
||||||
minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
||||||
sign = degrees >= 0 ? "N" : "S";
|
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-minutes", minutes);
|
||||||
setprop("/FMGC/internal/align-ref-lat-sign", sign);
|
setprop("/FMGC/internal/align-ref-lat-sign", sign);
|
||||||
#ref long
|
#ref long
|
||||||
dms = getprop("/FMGC/flightplan[2]/wp[0]/lon");
|
dms = apt.lon;
|
||||||
degrees = int(dms);
|
degrees = int(dms);
|
||||||
minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
minutes = sprintf("%.1f",abs((dms - degrees) * 60));
|
||||||
sign = degrees >= 0 ? "E" : "W";
|
sign = degrees >= 0 ? "E" : "W";
|
||||||
|
@ -605,7 +615,7 @@ var masterFMGC = maketimer(0.2, func {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} elsif (FMGCInternal.phase == 4) {
|
} elsif (FMGCInternal.phase == 4) {
|
||||||
if (FMGCNodes.decel.getValue()) {
|
if (FMGCInternal.decel) {
|
||||||
newphase = 5;
|
newphase = 5;
|
||||||
}
|
}
|
||||||
} elsif (FMGCInternal.phase == 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
|
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
|
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);
|
FMGCInternal.decel = 1;
|
||||||
} elsif (FMGCNodes.decel.getValue() and (FMGCInternal.phase == 0 or FMGCInternal.phase == 6)) {
|
} elsif (FMGCInternal.decel and (FMGCInternal.phase == 0 or FMGCInternal.phase == 6)) {
|
||||||
FMGCNodes.decel.setValue(0);
|
FMGCInternal.decel = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -977,7 +987,6 @@ var ManagedSPD = maketimer(0.25, func {
|
||||||
if (FMGCInternal.crzSet and FMGCInternal.costIndexSet) {
|
if (FMGCInternal.crzSet and FMGCInternal.costIndexSet) {
|
||||||
if (Custom.Input.spdManaged.getBoolValue()) {
|
if (Custom.Input.spdManaged.getBoolValue()) {
|
||||||
altitude = pts.Instrumentation.Altimeter.indicatedFt.getValue();
|
altitude = pts.Instrumentation.Altimeter.indicatedFt.getValue();
|
||||||
decel = FMGCNodes.decel.getValue();
|
|
||||||
ktsmach = Input.ktsMach.getValue();
|
ktsmach = Input.ktsMach.getValue();
|
||||||
mode = Modes.PFD.FMA.pitchMode.getValue();
|
mode = Modes.PFD.FMA.pitchMode.getValue();
|
||||||
srsSPD = srsSpeedNode.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) {
|
} elsif ((FMGCInternal.phase == 2 or FMGCInternal.phase == 3) and altitude <= FMGCInternal.clbSpdLimAlt) {
|
||||||
# Speed is maximum of greendot / climb speed limit
|
# Speed is maximum of greendot / climb speed limit
|
||||||
FMGCInternal.mngKtsMach = 0;
|
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)) {
|
} elsif ((FMGCInternal.phase == 2 or FMGCInternal.phase == 3) and altitude > (FMGCInternal.clbSpdLimAlt + 20)) {
|
||||||
FMGCInternal.mngKtsMach = FMGCInternal.machSwitchover ? 1 : 0;
|
FMGCInternal.mngKtsMach = FMGCInternal.machSwitchover ? 1 : 0;
|
||||||
FMGCInternal.mngSpdCmd = FMGCInternal.machSwitchover ? mng_alt_mach : mng_alt_spd;
|
FMGCInternal.mngSpdCmd = FMGCInternal.machSwitchover ? mng_alt_mach : mng_alt_spd;
|
||||||
} elsif ((FMGCInternal.phase >= 4 and FMGCInternal.phase <= 6) and altitude > (FMGCInternal.desSpdLimAlt + 20)) {
|
} elsif ((FMGCInternal.phase >= 4 and FMGCInternal.phase <= 6) and altitude > (FMGCInternal.desSpdLimAlt + 20)) {
|
||||||
if (decel) {
|
if (FMGCInternal.decel) {
|
||||||
FMGCInternal.mngKtsMach = 0;
|
FMGCInternal.mngKtsMach = 0;
|
||||||
FMGCInternal.mngSpdCmd = FMGCInternal.minspeed;
|
FMGCInternal.mngSpdCmd = FMGCInternal.minspeed;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1013,7 +1022,7 @@ var ManagedSPD = maketimer(0.25, func {
|
||||||
} elsif ((FMGCInternal.phase >= 4 and FMGCInternal.phase <= 6) and altitude <= FMGCInternal.desSpdLimAlt) {
|
} elsif ((FMGCInternal.phase >= 4 and FMGCInternal.phase <= 6) and altitude <= FMGCInternal.desSpdLimAlt) {
|
||||||
FMGCInternal.mngKtsMach = 0;
|
FMGCInternal.mngKtsMach = 0;
|
||||||
# Speed is maximum of greendot / descent speed limit
|
# 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
|
# Clamp to minspeed, maxspeed
|
||||||
|
|
|
@ -195,7 +195,7 @@ var MessageController = {
|
||||||
typeIIMessages: std.Vector.new([
|
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("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("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("CHECK DEST DATA", "amb", 0), #p.533
|
||||||
TypeIIMessage.new("GPS PRIMARY"),TypeIIMessage.new("GPS PRIMARY LOST", "amb", 0),
|
TypeIIMessage.new("GPS PRIMARY"),TypeIIMessage.new("GPS PRIMARY LOST", "amb", 0),
|
||||||
]),
|
]),
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
var airwaysPage = {
|
var airwaysPage = {
|
||||||
title: [nil, nil, nil],
|
title: [nil, nil, nil],
|
||||||
subtitle: [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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -45,7 +44,6 @@ var airwaysPage = {
|
||||||
me.R1 = [nil, "TO ", "blu"];
|
me.R1 = [nil, "TO ", "blu"];
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [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"]];
|
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);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
},
|
},
|
||||||
makeTmpy: func() {
|
makeTmpy: func() {
|
||||||
|
@ -67,7 +65,6 @@ var airwaysPage = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
updateAirways: func(index, airwayName) {
|
updateAirways: func(index, airwayName) {
|
||||||
me.fontMatrix[0][index - 1] = 0;
|
|
||||||
if (index == 1) {
|
if (index == 1) {
|
||||||
me.L1[0] = airwayName;
|
me.L1[0] = airwayName;
|
||||||
} elsif (index == 2) {
|
} elsif (index == 2) {
|
||||||
|
|
|
@ -5,7 +5,6 @@ var isNoVia = [0, 0, 0];
|
||||||
var arrivalPage = {
|
var arrivalPage = {
|
||||||
title: [nil, nil, nil],
|
title: [nil, nil, nil],
|
||||||
subtitle: [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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -132,7 +131,6 @@ var arrivalPage = {
|
||||||
_setupPageWithData: func() {
|
_setupPageWithData: func() {
|
||||||
me.title = ["ARRIVAL", " TO ", left(me.id, 4)];
|
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.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.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.R4 = [nil, nil, "ack"];
|
||||||
me.R5 = [nil, nil, "ack"];
|
me.R5 = [nil, nil, "ack"];
|
||||||
me.R6 = [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.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"]];
|
me.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "ack"], ["ack", "ack", "ack", "ack", "ack", "ack"]];
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,7 +2,6 @@ var latReq = {
|
||||||
title: [nil, nil, nil],
|
title: [nil, nil, nil],
|
||||||
titleColour: "wht",
|
titleColour: "wht",
|
||||||
subtitle: [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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
var atisPage = {
|
var atisPage = {
|
||||||
title: nil,
|
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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -77,7 +76,6 @@ var atisPage = {
|
||||||
me.R6 = ["PRINT ", nil, "blu"];
|
me.R6 = ["PRINT ", nil, "blu"];
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1]];
|
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.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);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
},
|
},
|
||||||
update: func() {
|
update: func() {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
var closestAirportPage = {
|
var closestAirportPage = {
|
||||||
title: nil,
|
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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -40,12 +39,13 @@ var closestAirportPage = {
|
||||||
me.title = "CLOSEST AIRPORTS";
|
me.title = "CLOSEST AIRPORTS";
|
||||||
me.C1[1] = " BRG DIST";
|
me.C1[1] = " BRG DIST";
|
||||||
me.R1[1] = "UTC ";
|
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.L6 = [" FREEZE", nil, "blu"];
|
||||||
me.R6 = ["EFOB/WIND ", nil, "wht"];
|
me.R6 = ["EFOB/WIND ", nil, "wht"];
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 1]];
|
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.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);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
me.update();
|
me.update();
|
||||||
me.updateBrgDist();
|
me.updateBrgDist();
|
||||||
|
@ -98,31 +98,64 @@ var closestAirportPage = {
|
||||||
var magvarLocal = magvar();
|
var magvarLocal = magvar();
|
||||||
if (size(me.airports) >= 1) {
|
if (size(me.airports) >= 1) {
|
||||||
me.cdVector[0] = courseAndDistance(me.airports[0]);
|
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) {
|
if (size(me.airports) >= 2) {
|
||||||
me.cdVector[1] = courseAndDistance(me.airports[1]);
|
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) {
|
if (size(me.airports) >= 3) {
|
||||||
me.cdVector[2] = courseAndDistance(me.airports[2]);
|
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) {
|
if (size(me.airports) >= 4) {
|
||||||
me.cdVector[3] = courseAndDistance(me.airports[3]);
|
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) {
|
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);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
},
|
},
|
||||||
manAirportCall: func(id) {
|
manAirportCall: func(id) {
|
||||||
if (id == "CLR") {
|
if (id == "CLR") {
|
||||||
me.manAirport = nil;
|
me.manAirport = nil;
|
||||||
me.L5 = [nil, nil, "grn"];
|
me._setupPageWithData();
|
||||||
me.C5 = [nil, nil, "grn"];
|
|
||||||
me.R5 = [nil, nil, "grn"];
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (size(id) > 4) {
|
if (size(id) > 4) {
|
||||||
|
@ -133,6 +166,7 @@ var closestAirportPage = {
|
||||||
me.manAirport = airportinfo(id);
|
me.manAirport = airportinfo(id);
|
||||||
me.L5 = [id, nil, "grn"];
|
me.L5 = [id, nil, "grn"];
|
||||||
me.R5 = ["----", nil, "grn"];
|
me.R5 = ["----", nil, "grn"];
|
||||||
|
mcdu_scratchpad.scratchpads[me.computer].empty();
|
||||||
}
|
}
|
||||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ var isNoTransDep = [0, 0, 0];
|
||||||
var departurePage = {
|
var departurePage = {
|
||||||
title: [nil, nil, nil],
|
title: [nil, nil, nil],
|
||||||
subtitle: [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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -106,7 +105,6 @@ var departurePage = {
|
||||||
_setupPageWithData: func() {
|
_setupPageWithData: func() {
|
||||||
me.title = ["DEPARTURE", " FROM ", left(me.id, 4)];
|
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.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.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.R4 = [nil, nil, "ack"];
|
||||||
me.R5 = [nil, nil, "ack"];
|
me.R5 = [nil, nil, "ack"];
|
||||||
me.R6 = [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.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"]];
|
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.selectedRunway = me.depAirport[0].runway(me.runways[index - 2 + me.scrollRwy]);
|
||||||
me.makeTmpy();
|
me.makeTmpy();
|
||||||
fmgc.flightPlanController.flightplans[me.computer].departure_runway = me.selectedRunway;
|
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.updateRunways();
|
||||||
me.updatePage();
|
me.updatePage();
|
||||||
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
fmgc.flightPlanController.flightPlanChanged(me.computer);
|
||||||
|
|
|
@ -3,7 +3,6 @@ var dirToFlag = 0;
|
||||||
var dirTo = {
|
var dirTo = {
|
||||||
title: [nil],
|
title: [nil],
|
||||||
subtitle: [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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -46,7 +45,6 @@ var dirTo = {
|
||||||
me.R5 = ["[ ] ", "RADIAL OUT ", "blu"];
|
me.R5 = ["[ ] ", "RADIAL OUT ", "blu"];
|
||||||
me.arrowsMatrix = [[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", "blu", "blu", "blu", "blu", "ack"], ["ack", "blu", "blu", "ack", "ack", "ack"]];
|
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.updateFromFpln();
|
||||||
me.updateTmpy();
|
me.updateTmpy();
|
||||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
|
@ -82,7 +80,7 @@ var dirTo = {
|
||||||
var x = 0;
|
var x = 0;
|
||||||
me.vector = [];
|
me.vector = [];
|
||||||
for (var i = 1 + (me.scroll); i < size(canvas_mcdu.myFpln[me.computer].planList) - 2; i = i + 1) {
|
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]) {
|
if (canvas_mcdu.myFpln[me.computer].planList[i].index > fmgc.flightPlanController.arrivalIndex[2]) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -148,7 +146,6 @@ var dirTo = {
|
||||||
fieldL1: func(text, override = 0, overrideIndex = -1) {
|
fieldL1: func(text, override = 0, overrideIndex = -1) {
|
||||||
me.makeTmpy();
|
me.makeTmpy();
|
||||||
me.L1[0] = text;
|
me.L1[0] = text;
|
||||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
|
||||||
if (size(text) == 16) {
|
if (size(text) == 16) {
|
||||||
# lat lon
|
# lat lon
|
||||||
var lat = split("/", text)[0];
|
var lat = split("/", text)[0];
|
||||||
|
@ -237,7 +234,6 @@ var dirTo = {
|
||||||
leftFieldBtn: func(index) {
|
leftFieldBtn: func(index) {
|
||||||
me.makeTmpy();
|
me.makeTmpy();
|
||||||
me.L1[0] = me.vector[index - 2].wp_name;
|
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);
|
fmgc.flightPlanController.directTo(me.vector[index - 2], me.computer);
|
||||||
me.arrowsMatrix[0][1] = 0;
|
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
|
# 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;
|
dirToFlag = 0;
|
||||||
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 0);
|
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 0);
|
||||||
me.L1 = [" [ ]", " WAYPOINT", "blu"];
|
me.L1 = [" [ ]", " WAYPOINT", "blu"];
|
||||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
|
||||||
me.R1 = ["---- --- ", "UTC DIST ", "wht"];
|
me.R1 = ["---- --- ", "UTC DIST ", "wht"];
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(me.computer, "NOT ALLOWED");
|
mcdu_message(me.computer, "NOT ALLOWED");
|
||||||
|
@ -265,7 +260,6 @@ var dirTo = {
|
||||||
dirToFlag = 0;
|
dirToFlag = 0;
|
||||||
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 1);
|
fmgc.flightPlanController.destroyTemporaryFlightPlan(me.computer, 1);
|
||||||
me.L1 = [" [ ]", " WAYPOINT", "blu"];
|
me.L1 = [" [ ]", " WAYPOINT", "blu"];
|
||||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 1, 0]];
|
|
||||||
me.R1 = ["---- --- ", "UTC DIST ", "wht"];
|
me.R1 = ["---- --- ", "UTC DIST ", "wht"];
|
||||||
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA"); # todo - remember horizontal srcoll of f-plna?
|
setprop("MCDU[" ~ me.computer ~ "]/page", "F-PLNA"); # todo - remember horizontal srcoll of f-plna?
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
var duplicateNamesPage = {
|
var duplicateNamesPage = {
|
||||||
title: nil,
|
title: nil,
|
||||||
subtitle: [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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -49,7 +48,6 @@ var duplicateNamesPage = {
|
||||||
me.title = "DUPLICATE NAMES";
|
me.title = "DUPLICATE NAMES";
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [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"]];
|
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 = [];
|
me.distances = [];
|
||||||
for (var i = 0; i < size(me.vector); i += 1) {
|
for (var i = 0; i < size(me.vector); i += 1) {
|
||||||
|
|
|
@ -160,22 +160,22 @@ var fplnItem = {
|
||||||
if (me.wp.wp_name == "DISCONTINUITY") {
|
if (me.wp.wp_name == "DISCONTINUITY") {
|
||||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(4, me.wp, me.index, me.computer);
|
canvas_mcdu.myLatRev[me.computer] = latRev.new(4, me.wp, me.index, me.computer);
|
||||||
} elsif (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
} elsif (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||||
if (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
|
if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||||
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)) {
|
|
||||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(2, me.wp, me.index, me.computer);
|
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 {
|
} else {
|
||||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(3, me.wp, me.index, me.computer);
|
canvas_mcdu.myLatRev[me.computer] = latRev.new(3, me.wp, me.index, me.computer);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
|
if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||||
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)) {
|
|
||||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(2, me.wp, me.index, me.computer);
|
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 {
|
} else {
|
||||||
canvas_mcdu.myLatRev[me.computer] = latRev.new(3, me.wp, me.index, me.computer);
|
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;
|
canvas_mcdu.myVertRev[me.computer] = nil;
|
||||||
|
|
||||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||||
if (me.index == fmgc.flightPlanController.arrivalIndex[me.computer]) {
|
if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||||
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)) {
|
|
||||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
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 {
|
} else {
|
||||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (me.index == fmgc.flightPlanController.arrivalIndex[2]) {
|
if (me.wp.wp_name == "PPOS" or me.index == (fmgc.flightPlanController.currentToWptIndex.getValue() - 1)) {
|
||||||
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)) {
|
|
||||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(3, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
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 {
|
} else {
|
||||||
canvas_mcdu.myVertRev[me.computer] = vertRev.new(2, me.wp.wp_name, me.index, me.computer, me.wp, me.plan);
|
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
|
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
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
L2: [nil, nil, "ack"],
|
L2: [nil, nil, "ack"],
|
||||||
L3: [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---";
|
return "----END OF ALTN F-PLN---";
|
||||||
} else if (type == "noAltnFpln") {
|
} else if (type == "noAltnFpln") {
|
||||||
return "------NO ALTN F-PLN-----";
|
return "------NO ALTN F-PLN-----";
|
||||||
|
} else if (type == "decel") {
|
||||||
|
return "(DECEL)";
|
||||||
} else if (type == "empty") {
|
} else if (type == "empty") {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -509,9 +535,18 @@ var fplnPage = { # this one is only created once, and then updated - remember th
|
||||||
setprop("MCDU[" ~ me.computer ~ "]/page", "LATREV");
|
setprop("MCDU[" ~ me.computer ~ "]/page", "LATREV");
|
||||||
}
|
}
|
||||||
} else {
|
} 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) {
|
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) {
|
if (returny == 3) {
|
||||||
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
mcdu_message(me.computer, "DIR TO IN PROGRESS");
|
||||||
} elsif (returny == 0) {
|
} elsif (returny == 0) {
|
||||||
|
|
|
@ -196,4 +196,4 @@ var engine_one_chk_OOOI = setlistener("/engines/engine[0]/state", func {
|
||||||
removelistener(engine_one_chk_OOOI);
|
removelistener(engine_one_chk_OOOI);
|
||||||
waitingOOOIChange.start();
|
waitingOOOIChange.start();
|
||||||
}
|
}
|
||||||
},0,0);
|
},0,0);
|
||||||
|
|
|
@ -169,6 +169,7 @@ var fuelPredInput = func(key, i) {
|
||||||
fmgc.fuelCalculating.setValue(1);
|
fmgc.fuelCalculating.setValue(1);
|
||||||
}
|
}
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
} else if (find("/", scratchpad) != -1) {
|
} else if (find("/", scratchpad) != -1) {
|
||||||
if (acconfig_weight_kgs.getValue() == 1) {
|
if (acconfig_weight_kgs.getValue() == 1) {
|
||||||
scratchpad = scratchpad / LBS2KGS;
|
scratchpad = scratchpad / LBS2KGS;
|
||||||
|
@ -199,6 +200,7 @@ var fuelPredInput = func(key, i) {
|
||||||
fmgc.fuelCalculating.setValue(1);
|
fmgc.fuelCalculating.setValue(1);
|
||||||
}
|
}
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||||
}
|
}
|
||||||
|
@ -235,6 +237,7 @@ var fuelPredInput = func(key, i) {
|
||||||
fmgc.fuelCalculating.setValue(1);
|
fmgc.fuelCalculating.setValue(1);
|
||||||
}
|
}
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
var holdPage = {
|
var holdPage = {
|
||||||
title: [nil, nil, nil],
|
title: [nil, nil, nil],
|
||||||
subtitle: [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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -41,37 +40,35 @@ var holdPage = {
|
||||||
me.title = ["HOLD", " AT ", me.waypoint.wp_name];
|
me.title = ["HOLD", " AT ", me.waypoint.wp_name];
|
||||||
me.titleColour = "wht";
|
me.titleColour = "wht";
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [1, 1, 0, 0, 0, 0]];
|
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.arrowsColour = [["ack", "ack", "ack", "ack", "ack", "wht"], ["blu", "blu", "ack", "ack", "ack", "ack"]];
|
||||||
me.fontMatrix = [[1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]];
|
|
||||||
if (me.waypoint.fly_type == "Hold") {
|
if (me.waypoint.fly_type == "Hold") {
|
||||||
me.makeTmpy();
|
me.makeTmpy();
|
||||||
me.L1 = [" " ~ sprintf("%03.0f", me.waypoint.hold_inbound_radial), "INB CRS", "blu"];
|
me.L1 = [sprintf("%03.0f°", me.waypoint.hold_inbound_radial), "INB CRS", "blu"];
|
||||||
me.fontMatrix[0][0] = 0;
|
|
||||||
|
|
||||||
if (me.waypoint.hold_is_left_handed) {
|
if (me.waypoint.hold_is_left_handed) {
|
||||||
me.L2 = [" L", " TURN", "blu"];
|
me.L2 = ["L", " TURN", "blu"];
|
||||||
} else {
|
} else {
|
||||||
me.L2 = [" R", " TURN", "blu"];
|
me.L2 = ["R", " TURN", "blu"];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (me.waypoint.hold_is_distance) {
|
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 {
|
} 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.R2 = ["DATABASE ", nil, "yel"];
|
||||||
me.arrowsMatrix[1][1] = 0;
|
me.arrowsMatrix[1][1] = 0;
|
||||||
} else {
|
} else {
|
||||||
me.L1 = [" 100", "INB CRS", "blu"];
|
me.L1 = ["100°", "INB CRS", "blu"];
|
||||||
me.L2 = [" R", " TURN", "blu"];
|
me.L2 = ["R", " TURN", "blu"];
|
||||||
if (pts.Instrumentation.Altimeter.indicatedFt.getValue() >= 14000) {
|
if (pts.Instrumentation.Altimeter.indicatedFt.getValue() >= 14000) {
|
||||||
me.L2 = [" 1.5/----", "TIME/DIST", "blu"];
|
me.L3 = ["1.5/----", "TIME/DIST", "blu"];
|
||||||
} else {
|
} else {
|
||||||
me.L2 = [" 1.0/----", "TIME/DIST", "blu"];
|
me.L3 = ["1.0/----", "TIME/DIST", "blu"];
|
||||||
}
|
}
|
||||||
me.R1 = ["COMPUTED ", nil, "wht"];
|
me.R1 = ["COMPUTED ", nil, "blu"];
|
||||||
me.R2 = ["DATABASE ", nil, "wht"];
|
me.R2 = ["DATABASE ", nil, "blu"];
|
||||||
}
|
}
|
||||||
me.L6 = [" RETURN", nil, "wht"];
|
me.L6 = [" RETURN", nil, "wht"];
|
||||||
me.C4 = ["LAST EXIT", nil, "wht"];
|
me.C4 = ["LAST EXIT", nil, "wht"];
|
||||||
|
@ -87,6 +84,7 @@ var holdPage = {
|
||||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||||
me.L1[2] = "yel";
|
me.L1[2] = "yel";
|
||||||
me.L2[2] = "yel";
|
me.L2[2] = "yel";
|
||||||
|
me.L3[2] = "yel";
|
||||||
me.L6 = [" F-PLN", " TMPY", "yel"];
|
me.L6 = [" F-PLN", " TMPY", "yel"];
|
||||||
me.R6 = ["INSERT ", " TMPY", "yel"];
|
me.R6 = ["INSERT ", " TMPY", "yel"];
|
||||||
me.arrowsColour[0][5] = "yel";
|
me.arrowsColour[0][5] = "yel";
|
||||||
|
@ -95,6 +93,7 @@ var holdPage = {
|
||||||
} else {
|
} else {
|
||||||
me.L1[2] = "blu";
|
me.L1[2] = "blu";
|
||||||
me.L2[2] = "blu";
|
me.L2[2] = "blu";
|
||||||
|
me.L3[2] = "blu";
|
||||||
me.L6 = [" RETURN", nil, "wht"];
|
me.L6 = [" RETURN", nil, "wht"];
|
||||||
me.R6 = [nil, nil, "ack"];
|
me.R6 = [nil, nil, "ack"];
|
||||||
me.arrowsColour[0][5] = "wht";
|
me.arrowsColour[0][5] = "wht";
|
||||||
|
|
|
@ -3,6 +3,29 @@
|
||||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
# 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 initInputA = func(key, i) {
|
||||||
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
var scratchpad = mcdu_scratchpad.scratchpads[i].scratchpad;
|
||||||
if (key == "L1") { #clear coRoute if set
|
if (key == "L1") { #clear coRoute if set
|
||||||
|
@ -222,26 +245,7 @@ var initInputA = func(key, i) {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
}
|
}
|
||||||
else if (scratchpad == "CLR") {
|
else if (scratchpad == "CLR") {
|
||||||
fmgc.FMGCInternal.depApt = "";
|
resetFlightplan(i);
|
||||||
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();
|
|
||||||
#} else if (scratchpad == "") {
|
#} else if (scratchpad == "") {
|
||||||
#fmgc.FMGCInternal.altSelected = 0;
|
#fmgc.FMGCInternal.altSelected = 0;
|
||||||
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
|
#setprop("MCDU[" ~ i ~ "]/page", "ROUTESELECTION");
|
||||||
|
@ -253,18 +257,15 @@ var initInputA = func(key, i) {
|
||||||
var froms = size(fromto[0]);
|
var froms = size(fromto[0]);
|
||||||
var tos = size(fromto[1]);
|
var tos = size(fromto[1]);
|
||||||
if (froms == 4 and tos == 4) {
|
if (froms == 4 and tos == 4) {
|
||||||
#route
|
resetFlightplan(i);
|
||||||
if (fmgc.FMGCInternal.toFromSet == 1 and fmgc.FMGCInternal.arrApt != fromto[1]) {
|
|
||||||
fmgc.windController.resetDesWinds();
|
|
||||||
}
|
|
||||||
fmgc.FMGCInternal.depApt = fromto[0];
|
fmgc.FMGCInternal.depApt = fromto[0];
|
||||||
fmgc.FMGCInternal.arrApt = fromto[1];
|
fmgc.FMGCInternal.arrApt = fromto[1];
|
||||||
atsu.ATISInstances[0].newStation(fromto[0]);
|
atsu.ATISInstances[0].newStation(fromto[0]);
|
||||||
atsu.ATISInstances[1].newStation(fromto[1]);
|
atsu.ATISInstances[1].newStation(fromto[1]);
|
||||||
fmgc.FMGCInternal.toFromSet = 1;
|
fmgc.FMGCInternal.toFromSet = 1;
|
||||||
fmgc.FMGCNodes.toFromSet.setValue(1);
|
fmgc.FMGCNodes.toFromSet.setValue(1);
|
||||||
#scratchpad
|
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
|
||||||
fmgc.flightPlanController.updateAirports(fromto[0], fromto[1], 2);
|
fmgc.flightPlanController.updateAirports(fromto[0], fromto[1], 2);
|
||||||
fmgc.FMGCInternal.altSelected = 0;
|
fmgc.FMGCInternal.altSelected = 0;
|
||||||
fmgc.updateARPT();
|
fmgc.updateARPT();
|
||||||
|
|
|
@ -207,6 +207,7 @@ var initInputB = func(key, i) {
|
||||||
fmgc.blockCalculating.setValue(1);
|
fmgc.blockCalculating.setValue(1);
|
||||||
}
|
}
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
} else if (find("/", scratchpad) != -1) {
|
} else if (find("/", scratchpad) != -1) {
|
||||||
if (acconfig_weight_kgs.getValue() == 1) {
|
if (acconfig_weight_kgs.getValue() == 1) {
|
||||||
scratchpad = scratchpad / LBS2KGS;
|
scratchpad = scratchpad / LBS2KGS;
|
||||||
|
@ -238,6 +239,7 @@ var initInputB = func(key, i) {
|
||||||
fmgc.blockCalculating.setValue(1);
|
fmgc.blockCalculating.setValue(1);
|
||||||
}
|
}
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||||
}
|
}
|
||||||
|
@ -275,6 +277,7 @@ var initInputB = func(key, i) {
|
||||||
fmgc.blockCalculating.setValue(1);
|
fmgc.blockCalculating.setValue(1);
|
||||||
}
|
}
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "ENTRY OUT OF RANGE");
|
mcdu_message(i, "ENTRY OUT OF RANGE");
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ var latRev = {
|
||||||
title: [nil, nil, nil],
|
title: [nil, nil, nil],
|
||||||
titleColour: "wht",
|
titleColour: "wht",
|
||||||
subtitle: [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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -48,22 +47,22 @@ var latRev = {
|
||||||
_setupPageWithData: func() {
|
_setupPageWithData: func() {
|
||||||
if (me.type == 2) {
|
if (me.type == 2) {
|
||||||
me.title = ["LAT REV", " FROM ", "PPOS"];
|
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.L2 = [" OFFSET", nil, "wht"];
|
||||||
me.L3 = [" HOLD", nil, "wht"];
|
me.L3 = [" HOLD", nil, "wht"];
|
||||||
me.L6 = [" RETURN", nil, "wht"];
|
me.L6 = [" RETURN", nil, "wht"];
|
||||||
me.R1 = ["FIX INFO ", 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.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.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) {
|
} elsif (me.type == 4) {
|
||||||
me.title = ["LAT REV", " FROM ", "DISCON"];
|
me.title = ["LAT REV", " FROM ", "DISCON"];
|
||||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||||
me.R4 = ["[ ]", "NEW DEST", "blu"];
|
me.R4 = ["[ ]", "NEW DEST ", "blu"];
|
||||||
me.L6 = [" RETURN", nil, "wht"];
|
me.L6 = [" RETURN", nil, "wht"];
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [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"]];
|
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 {
|
} else {
|
||||||
if (me.type == 0) {
|
if (me.type == 0) {
|
||||||
me.title = ["LAT REV", " FROM ", left(me.wpt.wp_name, 4)];
|
me.title = ["LAT REV", " FROM ", left(me.wpt.wp_name, 4)];
|
||||||
|
@ -72,17 +71,18 @@ var latRev = {
|
||||||
} else {
|
} else {
|
||||||
me.depAirport = findAirportsByICAO(me.wpt.wp_name);
|
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.L1 = [" DEPARTURE", nil, "wht"];
|
||||||
me.L2 = [" OFFSET", nil, "wht"];
|
me.L2 = [" OFFSET", nil, "wht"];
|
||||||
me.L6 = [" RETURN", nil, "wht"];
|
me.L6 = [" RETURN", nil, "wht"];
|
||||||
me.R1 = ["FIX INFO ", nil, "wht"];
|
me.R1 = ["FIX INFO ", nil, "wht"];
|
||||||
me.R2 = ["[ ]°/[ ]°/[ ]", "LL XING/INCR/NO", "blu"];
|
me.R2 = ["[ ]°/[]°/[]", "LL XING/INCR/NO", "blu"];
|
||||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||||
me.R4 = ["[ ]", "NEW DEST", "blu"];
|
me.R4 = ["[ ]", "NEW DEST ", "blu"];
|
||||||
me.arrowsMatrix = [[1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0]];
|
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.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) {
|
} elsif (me.type == 1) {
|
||||||
me.title = ["LAT REV", " FROM ", left(me.wpt.wp_name, 4)];
|
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]];
|
me.arrowsMatrix = [[0, 0, 1, 1, 0, 1], [1, 0, 0, 0, 0, 0]];
|
||||||
|
@ -92,7 +92,9 @@ var latRev = {
|
||||||
} else {
|
} else {
|
||||||
me.arrAirport = findAirportsByICAO(me.wpt.wp_name);
|
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"];
|
me.L3 = [" ALTN", nil, "wht"];
|
||||||
if (fmgc.FMGCInternal.altAirportSet) {
|
if (fmgc.FMGCInternal.altAirportSet) {
|
||||||
me.L4 = [" ALTN", " ENABLE", "blu"];
|
me.L4 = [" ALTN", " ENABLE", "blu"];
|
||||||
|
@ -102,8 +104,7 @@ var latRev = {
|
||||||
}
|
}
|
||||||
me.L6 = [" RETURN", nil, "wht"];
|
me.L6 = [" RETURN", nil, "wht"];
|
||||||
me.R1 = ["ARRIVAL ", nil, "wht"];
|
me.R1 = ["ARRIVAL ", nil, "wht"];
|
||||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||||
me.fontMatrix = [[0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0]];
|
|
||||||
} elsif (me.type == 3) {
|
} elsif (me.type == 3) {
|
||||||
me.title = ["LAT REV", " FROM ", me.wpt.wp_name];
|
me.title = ["LAT REV", " FROM ", me.wpt.wp_name];
|
||||||
me.arrowsMatrix = [[0, 0, 1, 1, 0, 1], [1, 0, 0, 0, 1, 0]];
|
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.L6 = [" RETURN", nil, "wht"];
|
||||||
me.R1 = ["FIX INFO ", nil, "wht"];
|
me.R1 = ["FIX INFO ", nil, "wht"];
|
||||||
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
me.R3 = ["[ ]", "NEXT WPT ", "blu"];
|
||||||
me.R4 = ["[ ]", "NEW DEST", "blu"];
|
me.R4 = ["[ ]", "NEW DEST ", "blu"];
|
||||||
me.R5 = ["AIRWAYS ", nil, "wht"];
|
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 {
|
} else {
|
||||||
var sign = degrees >= 0 ? "E" : "W";
|
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.vrset = 0;
|
||||||
fmgc.FMGCInternal.v2 = 0;
|
fmgc.FMGCInternal.v2 = 0;
|
||||||
fmgc.FMGCInternal.v2set = 0;
|
fmgc.FMGCInternal.v2set = 0;
|
||||||
|
|
||||||
setprop("/FMGC/internal/accel-agl-ft", 1500); #eventually set to 1500 above runway
|
setprop("/FMGC/internal/accel-agl-ft", 1500); #eventually set to 1500 above runway
|
||||||
setprop("/MCDUC/thracc-set", 0);
|
setprop("/MCDUC/thracc-set", 0);
|
||||||
setprop("/FMGC/internal/to-flap", 0);
|
fmgc.FMGCInternal.toFlap = 0;
|
||||||
setprop("/FMGC/internal/to-ths", "0.0");
|
fmgc.FMGCInternal.toThs = 0.0;
|
||||||
setprop("/FMGC/internal/flap-ths-set", 0);
|
fmgc.FMGCInternal.toFlapThsSet = 0;
|
||||||
setprop("/FMGC/internal/flex", 0);
|
setprop("/FMGC/internal/flex", 0);
|
||||||
setprop("/FMGC/internal/flex-set", 0);
|
setprop("/FMGC/internal/flex-set", 0);
|
||||||
setprop("/FMGC/internal/eng-out-reduc", "1500");
|
setprop("/FMGC/internal/eng-out-reduc", "1500");
|
||||||
|
@ -524,7 +523,7 @@ var lskbutton = func(btn, i) {
|
||||||
} else if (page == "PERFAPPR") {
|
} else if (page == "PERFAPPR") {
|
||||||
perfAPPRInput("L3",i);
|
perfAPPRInput("L3",i);
|
||||||
} else if (page == "STATUS") {
|
} else if (page == "STATUS") {
|
||||||
statusInput("L3",i);
|
fmgc.switchDatabase();
|
||||||
} else if (page == "RADNAV") {
|
} else if (page == "RADNAV") {
|
||||||
radnavInput("L3",i);
|
radnavInput("L3",i);
|
||||||
} else if (page == "DATA") {
|
} else if (page == "DATA") {
|
||||||
|
@ -788,7 +787,6 @@ var lskbutton = func(btn, i) {
|
||||||
canvas_mcdu.myDuplicate[i].pushButtonLeft(5);
|
canvas_mcdu.myDuplicate[i].pushButtonLeft(5);
|
||||||
} else if (page == "CLOSESTAIRPORT") {
|
} else if (page == "CLOSESTAIRPORT") {
|
||||||
canvas_mcdu.myClosestAirport[i].manAirportCall(mcdu_scratchpad.scratchpads[i].scratchpad);
|
canvas_mcdu.myClosestAirport[i].manAirportCall(mcdu_scratchpad.scratchpads[i].scratchpad);
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
|
||||||
} else if (page == "ATCMENU") {
|
} else if (page == "ATCMENU") {
|
||||||
pageNode[i].setValue("NOTIFICATION");
|
pageNode[i].setValue("NOTIFICATION");
|
||||||
} else if (page == "FLTLOG") {
|
} else if (page == "FLTLOG") {
|
||||||
|
@ -1173,7 +1171,16 @@ var rskbutton = func(btn, i) {
|
||||||
}
|
}
|
||||||
pageNode[i].setValue("WINDDES");
|
pageNode[i].setValue("WINDDES");
|
||||||
} else if (page == "STATUS") {
|
} 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") {
|
} else if (page == "PERFTO") {
|
||||||
perfTOInput("R5",i);
|
perfTOInput("R5",i);
|
||||||
} else if (page == "PERFAPPR") {
|
} else if (page == "PERFAPPR") {
|
||||||
|
@ -1524,17 +1531,25 @@ var button = func(btn, i, event = "") {
|
||||||
} else { # up with buttonCLRDown[i]>4
|
} else { # up with buttonCLRDown[i]>4
|
||||||
buttonCLRDown[i] = 0;
|
buttonCLRDown[i] = 0;
|
||||||
}
|
}
|
||||||
|
} else if (btn == "LONGCLR") {
|
||||||
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
} else if (btn == "DOT") {
|
} else if (btn == "DOT") {
|
||||||
mcdu_scratchpad.scratchpads[i].addChar(".");
|
mcdu_scratchpad.scratchpads[i].addChar(".");
|
||||||
} else if (btn == "PLUSMINUS") {
|
} 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].clear();
|
||||||
mcdu_scratchpad.scratchpads[i].addChar("+");
|
mcdu_scratchpad.scratchpads[i].addChar(_toggle);
|
||||||
} else {
|
} else {
|
||||||
mcdu_scratchpad.scratchpads[i].addChar("-");
|
mcdu_scratchpad.scratchpads[i].addChar("-");
|
||||||
}
|
}
|
||||||
} else if (btn == "OVFY") {
|
} 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 {
|
} else {
|
||||||
mcdu_scratchpad.scratchpads[i].addChar(btn);
|
mcdu_scratchpad.scratchpads[i].addChar(btn);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ var perfCLBInput = func(key, i) {
|
||||||
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
||||||
setprop("/FMGC/internal/activate-twice", 1);
|
setprop("/FMGC/internal/activate-twice", 1);
|
||||||
fmgc.FMGCInternal.phase = 5;
|
fmgc.FMGCInternal.phase = 5;
|
||||||
setprop("/FMGC/internal/decel", 1);
|
fmgc.FMGCInternal.decel = 1;
|
||||||
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
|
|
|
@ -32,7 +32,7 @@ var perfCRZInput = func(key, i) {
|
||||||
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
||||||
setprop("/FMGC/internal/activate-twice", 1);
|
setprop("/FMGC/internal/activate-twice", 1);
|
||||||
fmgc.FMGCInternal.phase = 5;
|
fmgc.FMGCInternal.phase = 5;
|
||||||
setprop("/FMGC/internal/decel", 1);
|
fmgc.FMGCInternal.decel = 1;
|
||||||
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
|
|
|
@ -32,7 +32,7 @@ var perfDESInput = func(key, i) {
|
||||||
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
if (getprop("/FMGC/internal/activate-twice") == 0) {
|
||||||
setprop("/FMGC/internal/activate-twice", 1);
|
setprop("/FMGC/internal/activate-twice", 1);
|
||||||
fmgc.FMGCInternal.phase = 5;
|
fmgc.FMGCInternal.phase = 5;
|
||||||
setprop("/FMGC/internal/decel", 1);
|
fmgc.FMGCInternal.decel = 1;
|
||||||
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
setprop("MCDU[" ~ i ~ "]/page", "PERFAPPR");
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
|
|
|
@ -3,19 +3,55 @@
|
||||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
# Copyright (c) 2020 Josh Davidson (Octal450)
|
||||||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
# 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))
|
# TODO - DepArp elevation or current elevation (on ground only!!) -> math.round(fmgc.flightPlanController.flightplans[2].departure.elevation * M2FT))
|
||||||
|
|
||||||
var perfTOCheckVSpeeds = func(i) {
|
var doneMessageCheck = 0;
|
||||||
if (fmgc.FMGCInternal.v1set == 1 and fmgc.FMGCInternal.vrset == 1 and fmgc.FMGCInternal.v2set == 1) { # only when v1/vr/v2 all sets
|
var perfToCheckTakeoffData = func(i) {
|
||||||
if (fmgc.FMGCInternal.v1>fmgc.FMGCInternal.vr or fmgc.FMGCInternal.vr > fmgc.FMGCInternal.v2) mcdu_messageTypeII(i,"V1/VR/V2 DISAGREE");
|
if (fmgc.FMGCInternal.v1set and fmgc.FMGCInternal.vrset and fmgc.FMGCInternal.v2set) {
|
||||||
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");
|
if (doneMessageCheck) {
|
||||||
#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 :/
|
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);
|
fmgc.FMGCNodes.v1set.setValue(1);
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
|
||||||
perfTOCheckVSpeeds(i); # do V-speeds validation
|
perfTOCheckVSpeedsConsistency(i);
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
}
|
}
|
||||||
|
@ -63,7 +100,8 @@ var perfTOInput = func(key, i) {
|
||||||
fmgc.FMGCInternal.vrset = 1;
|
fmgc.FMGCInternal.vrset = 1;
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
|
||||||
perfTOCheckVSpeeds(i); # do V-speeds validation
|
perfTOCheckVSpeedsConsistency(i);
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
}
|
}
|
||||||
|
@ -87,7 +125,8 @@ var perfTOInput = func(key, i) {
|
||||||
setprop("/it-autoflight/settings/togaspd", scratchpad);
|
setprop("/it-autoflight/settings/togaspd", scratchpad);
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
|
||||||
perfTOCheckVSpeeds(i); # do V-speeds validation
|
perfTOCheckVSpeedsConsistency(i);
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
}
|
}
|
||||||
|
@ -152,9 +191,9 @@ var perfTOInput = func(key, i) {
|
||||||
}
|
}
|
||||||
} else if (key == "R3" and modifiable) {
|
} else if (key == "R3" and modifiable) {
|
||||||
if (scratchpad == "CLR") {
|
if (scratchpad == "CLR") {
|
||||||
setprop("/FMGC/internal/to-flap", 0);
|
fmgc.FMGCInternal.toFlap = 0;
|
||||||
setprop("/FMGC/internal/to-ths", "0.0");
|
fmgc.FMGCInternal.toThs = 0;
|
||||||
setprop("/FMGC/internal/flap-ths-set", 0);
|
fmgc.FMGCInternal.toFlapThsSet = 0;
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
} else {
|
} else {
|
||||||
if (find("/", scratchpad) != -1) {
|
if (find("/", scratchpad) != -1) {
|
||||||
|
@ -165,45 +204,71 @@ var perfTOInput = func(key, i) {
|
||||||
var trims = size(trim);
|
var trims = size(trim);
|
||||||
var trima = substr(trim, 2);
|
var trima = substr(trim, 2);
|
||||||
var trimb = substr(trim, 0, 3);
|
var trimb = substr(trim, 0, 3);
|
||||||
|
|
||||||
var validtrima = num(trima) != nil and num(trima) >= 0 and num(trima) <= 7.0;
|
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;
|
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) {
|
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();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
|
perfToCheckTakeoffData(i);
|
||||||
} else if (trims == 5 and find("DN", trim) != -1 and validtrimb) {
|
} 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();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
|
perfToCheckTakeoffData(i);
|
||||||
} else if (trims == 5 and find("UP", trim) != -1 and validtrima) {
|
} 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();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
|
perfToCheckTakeoffData(i);
|
||||||
} else if (trims == 5 and find("UP", trim) != -1 and validtrimb) {
|
} 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();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
|
perfToCheckTakeoffData(i);
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
}
|
}
|
||||||
} else if (flaps == 1 and num(flap) != nil and flap >= 0 and flap <= 3) {
|
} else if (flaps == 1 and num(flap) != nil and flap >= 0 and flap <= 3) {
|
||||||
if (trims == 5 and find("DN", trim) != -1 and validtrima) {
|
if (trims == 5 and find("DN", trim) != -1 and validtrima) {
|
||||||
setprop("/FMGC/internal/to-flap", flap);
|
fmgc.FMGCInternal.toFlap = flap;
|
||||||
setprop("/FMGC/internal/to-ths", -1 * trima);
|
fmgc.FMGCInternal.toThs = -1 * trima;
|
||||||
setprop("/FMGC/internal/flap-ths-set", 1);
|
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
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) {
|
} else if (trims == 5 and find("DN", trim) != -1 and validtrimb) {
|
||||||
setprop("/FMGC/internal/to-flap", flap);
|
fmgc.FMGCInternal.toFlap = flap;
|
||||||
setprop("/FMGC/internal/to-ths", -1 * trimb);
|
fmgc.FMGCInternal.toThs = -1 * trimb;
|
||||||
setprop("/FMGC/internal/flap-ths-set", 1);
|
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
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) {
|
} else if (trims == 5 and find("UP", trim) != -1 and validtrima) {
|
||||||
setprop("/FMGC/internal/to-flap", flap);
|
fmgc.FMGCInternal.toFlap = flap;
|
||||||
setprop("/FMGC/internal/to-ths", trima);
|
fmgc.FMGCInternal.toThs = trima;
|
||||||
setprop("/FMGC/internal/flap-ths-set", 1);
|
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
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) {
|
} else if (trims == 5 and find("UP", trim) != -1 and validtrimb) {
|
||||||
setprop("/FMGC/internal/to-flap", flap);
|
fmgc.FMGCInternal.toFlap = flap;
|
||||||
setprop("/FMGC/internal/to-ths", trimb);
|
fmgc.FMGCInternal.toThs = trimb;
|
||||||
setprop("/FMGC/internal/flap-ths-set", 1);
|
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
|
if (fmgc.FMGCInternal.toFlapThsSet) {
|
||||||
|
perfToCheckTakeoffData(i);
|
||||||
|
}
|
||||||
|
fmgc.FMGCInternal.toFlapThsSet = 1;
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
}
|
}
|
||||||
|
@ -211,11 +276,13 @@ var perfTOInput = func(key, i) {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
}
|
}
|
||||||
} else if (size(scratchpad) == 1 and num(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 3) {
|
} else if (size(scratchpad) == 1 and num(scratchpad) != nil and scratchpad >= 0 and scratchpad <= 3) {
|
||||||
setprop("/FMGC/internal/to-flap", scratchpad);
|
fmgc.FMGCInternal.toFlap = scratchpad;
|
||||||
if (!getprop("/FMGC/internal/flap-ths-set")) {
|
|
||||||
setprop("/FMGC/internal/flap-ths-set", 1);
|
|
||||||
}
|
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
|
if (fmgc.FMGCInternal.toFlapThsSet) {
|
||||||
|
perfToCheckTakeoffData(i);
|
||||||
|
}
|
||||||
|
fmgc.FMGCInternal.toFlapThsSet = 1;
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
}
|
}
|
||||||
|
@ -233,6 +300,8 @@ var perfTOInput = func(key, i) {
|
||||||
setprop("/FMGC/internal/flex-set", 1);
|
setprop("/FMGC/internal/flex-set", 1);
|
||||||
var flex_calc = getprop("/FMGC/internal/flex") - getprop("environment/temperature-degc");
|
var flex_calc = getprop("/FMGC/internal/flex") - getprop("environment/temperature-degc");
|
||||||
setprop("/FMGC/internal/flex-cmd", flex_calc);
|
setprop("/FMGC/internal/flex-cmd", flex_calc);
|
||||||
|
perfTOCheckVSpeedsLimitations(i);
|
||||||
|
perfToCheckTakeoffData(i);
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
var pilotWaypointPage = {
|
var pilotWaypointPage = {
|
||||||
title: nil,
|
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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
|
|
@ -52,7 +52,7 @@ var progCLBInput = func(key, i) {
|
||||||
systems.PNEU.pressMode.setValue("CR");
|
systems.PNEU.pressMode.setValue("CR");
|
||||||
setprop("/FMGC/internal/activate-once", 0);
|
setprop("/FMGC/internal/activate-once", 0);
|
||||||
setprop("/FMGC/internal/activate-twice", 0);
|
setprop("/FMGC/internal/activate-twice", 0);
|
||||||
setprop("/FMGC/internal/decel", 0);
|
fmgc.FMGCInternal.decel = 0;
|
||||||
}
|
}
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
} else if (int(scratchpad) != nil) {
|
} else if (int(scratchpad) != nil) {
|
||||||
|
@ -66,7 +66,7 @@ var progCLBInput = func(key, i) {
|
||||||
systems.PNEU.pressMode.setValue("CR");
|
systems.PNEU.pressMode.setValue("CR");
|
||||||
setprop("/FMGC/internal/activate-once", 0);
|
setprop("/FMGC/internal/activate-once", 0);
|
||||||
setprop("/FMGC/internal/activate-twice", 0);
|
setprop("/FMGC/internal/activate-twice", 0);
|
||||||
setprop("/FMGC/internal/decel", 0);
|
fmgc.FMGCInternal.decel = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
|
@ -88,7 +88,7 @@ var progCRZInput = func(key, i) {
|
||||||
systems.PNEU.pressMode.setValue("CR");
|
systems.PNEU.pressMode.setValue("CR");
|
||||||
setprop("/FMGC/internal/activate-once", 0);
|
setprop("/FMGC/internal/activate-once", 0);
|
||||||
setprop("/FMGC/internal/activate-twice", 0);
|
setprop("/FMGC/internal/activate-twice", 0);
|
||||||
setprop("/FMGC/internal/decel", 0);
|
fmgc.FMGCInternal.decel = 0;
|
||||||
}
|
}
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
} else if (int(scratchpad) != nil) {
|
} else if (int(scratchpad) != nil) {
|
||||||
|
@ -102,7 +102,7 @@ var progCRZInput = func(key, i) {
|
||||||
systems.PNEU.pressMode.setValue("CR");
|
systems.PNEU.pressMode.setValue("CR");
|
||||||
setprop("/FMGC/internal/activate-once", 0);
|
setprop("/FMGC/internal/activate-once", 0);
|
||||||
setprop("/FMGC/internal/activate-twice", 0);
|
setprop("/FMGC/internal/activate-twice", 0);
|
||||||
setprop("/FMGC/internal/decel", 0);
|
fmgc.FMGCInternal.decel = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
|
@ -124,7 +124,7 @@ var progDESInput = func(key, i) {
|
||||||
systems.PNEU.pressMode.setValue("CR");
|
systems.PNEU.pressMode.setValue("CR");
|
||||||
setprop("/FMGC/internal/activate-once", 0);
|
setprop("/FMGC/internal/activate-once", 0);
|
||||||
setprop("/FMGC/internal/activate-twice", 0);
|
setprop("/FMGC/internal/activate-twice", 0);
|
||||||
setprop("/FMGC/internal/decel", 0);
|
fmgc.FMGCInternal.decel = 0;
|
||||||
}
|
}
|
||||||
mcdu_scratchpad.scratchpads[i].empty();
|
mcdu_scratchpad.scratchpads[i].empty();
|
||||||
} else if (int(scratchpad) != nil) {
|
} else if (int(scratchpad) != nil) {
|
||||||
|
@ -138,7 +138,7 @@ var progDESInput = func(key, i) {
|
||||||
systems.PNEU.pressMode.setValue("CR");
|
systems.PNEU.pressMode.setValue("CR");
|
||||||
setprop("/FMGC/internal/activate-once", 0);
|
setprop("/FMGC/internal/activate-once", 0);
|
||||||
setprop("/FMGC/internal/activate-twice", 0);
|
setprop("/FMGC/internal/activate-twice", 0);
|
||||||
setprop("/FMGC/internal/decel", 0);
|
fmgc.FMGCInternal.decel = 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mcdu_message(i, "NOT ALLOWED");
|
mcdu_message(i, "NOT ALLOWED");
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
var receivedMessagesPage = {
|
var receivedMessagesPage = {
|
||||||
title: nil,
|
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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -63,7 +62,6 @@ var receivedMessagesPage = {
|
||||||
me.L6 = [" RETURN", nil, "wht"];
|
me.L6 = [" RETURN", nil, "wht"];
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
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.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);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
},
|
},
|
||||||
update: func() {
|
update: func() {
|
||||||
|
@ -155,8 +153,6 @@ var receivedMessagesPage = {
|
||||||
|
|
||||||
var receivedMessagePage = {
|
var receivedMessagePage = {
|
||||||
title: nil,
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
L2: [nil, nil, "ack"],
|
L2: [nil, nil, "ack"],
|
||||||
|
@ -229,7 +225,6 @@ var receivedMessagePage = {
|
||||||
me.L6 = [" RETURN", nil, "wht"];
|
me.L6 = [" RETURN", nil, "wht"];
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]];
|
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.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);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
},
|
},
|
||||||
update: func() {
|
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 = {
|
var vertRev = {
|
||||||
title: [nil, nil, nil],
|
title: [nil, nil, nil],
|
||||||
subtitle: [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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -85,20 +84,16 @@ var vertRev = {
|
||||||
me.R2 = ["RTA ", nil, "wht"];
|
me.R2 = ["RTA ", nil, "wht"];
|
||||||
me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 0]];
|
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.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) {
|
} elsif (me.type == 2) {
|
||||||
me.title = ["VERT REV", " AT ", me.id];
|
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.L1 = ["", " EFOB ---.-", "wht"];
|
||||||
me.R1 = ["", "EXTRA ---.- ", "wht"];
|
me.R1 = ["", "EXTRA ---.- ", "wht"];
|
||||||
me.L2 = [fmgc.FMGCInternal.clbSpdLim ~ "/" ~ fmgc.FMGCInternal.clbSpdLimAlt, " CLB SPD LIM", "mag"];
|
me.L2 = [fmgc.FMGCInternal.clbSpdLim ~ "/" ~ fmgc.FMGCInternal.clbSpdLimAlt, " CLB SPD LIM", "mag"];
|
||||||
me.speed = me.getSpd();
|
me.speed = me.getSpd();
|
||||||
if (me.speed[0] == nil) {
|
if (me.speed[0] == nil) {
|
||||||
me.L3 = [" [ ]", " SPD CSTR", "blu"];
|
me.L3 = ["[ ]", " SPD CSTR", "blu"];
|
||||||
me.fontMatrix[0][2] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L3 = [me.speed[0], " SPD CSTR", me.speed[1]];
|
me.L3 = [me.speed[0], " SPD CSTR", me.speed[1]];
|
||||||
me.fontMatrix[0][2] = 0;
|
|
||||||
}
|
}
|
||||||
me.L4 = [" CONSTANT MACH", nil, "wht"];
|
me.L4 = [" CONSTANT MACH", nil, "wht"];
|
||||||
me.L5 = [" WIND DATA", nil, "wht"];
|
me.L5 = [" WIND DATA", nil, "wht"];
|
||||||
|
@ -106,11 +101,9 @@ var vertRev = {
|
||||||
me.R2 = ["RTA ", nil, "wht"];
|
me.R2 = ["RTA ", nil, "wht"];
|
||||||
me.alt = me.getAlt();
|
me.alt = me.getAlt();
|
||||||
if (me.alt[0] == nil) {
|
if (me.alt[0] == nil) {
|
||||||
me.R3 = ["[ ] ", "ALT CSTR ", "blu"];
|
me.R3 = ["[ ]", "ALT CSTR ", "blu"];
|
||||||
me.fontMatrix[1][2] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.R3 = [me.alt[0], "ALT CSTR ", me.alt[1]];
|
me.R3 = [me.alt[0], "ALT CSTR ", me.alt[1]];
|
||||||
me.fontMatrix[1][2] = 0;
|
|
||||||
}
|
}
|
||||||
me.R6 = ["DES ", nil, "amb"];
|
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.
|
# 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.R2 = ["RTA ", nil, "wht"];
|
||||||
me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 0]];
|
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.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) {
|
} elsif (me.type == 1) {
|
||||||
if (size(me.id) > 4) {
|
if (size(me.id) > 4) {
|
||||||
me.arrAirport = findAirportsByICAO(left(me.id, 4));
|
me.arrAirport = findAirportsByICAO(left(me.id, 4));
|
||||||
|
@ -155,7 +147,6 @@ var vertRev = {
|
||||||
me.R3 = ["3000", "G/S INTCP", "grn"];
|
me.R3 = ["3000", "G/S INTCP", "grn"];
|
||||||
me.arrowsMatrix = [[0, 0, 0, 1, 1, 1], [0, 1, 0, 0, 0, 0]];
|
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.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();
|
me.updateR5();
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
var windCLBPage = {
|
var windCLBPage = {
|
||||||
title: nil,
|
title: nil,
|
||||||
titleColour: "wht",
|
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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -46,7 +45,6 @@ var windCLBPage = {
|
||||||
me.titleColour = "wht";
|
me.titleColour = "wht";
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [1, 0, 0, 0, 1, 0]];
|
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.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;
|
var computer_temp = 2;
|
||||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||||
|
@ -69,10 +67,8 @@ var windCLBPage = {
|
||||||
var windStore = fmgc.windController.clb_winds[computer_temp].wind5;
|
var windStore = fmgc.windController.clb_winds[computer_temp].wind5;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L5 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L5 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][4] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L5 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L5 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][4] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L5 = [nil, nil, "ack"];
|
me.L5 = [nil, nil, "ack"];
|
||||||
|
@ -82,10 +78,8 @@ var windCLBPage = {
|
||||||
var windStore = fmgc.windController.clb_winds[computer_temp].wind4;
|
var windStore = fmgc.windController.clb_winds[computer_temp].wind4;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][3] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][3] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L4 = [nil, nil, "ack"];
|
me.L4 = [nil, nil, "ack"];
|
||||||
|
@ -95,10 +89,8 @@ var windCLBPage = {
|
||||||
var windStore = fmgc.windController.clb_winds[computer_temp].wind3;
|
var windStore = fmgc.windController.clb_winds[computer_temp].wind3;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][2] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][2] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L3 = [nil, nil, "ack"];
|
me.L3 = [nil, nil, "ack"];
|
||||||
|
@ -108,10 +100,8 @@ var windCLBPage = {
|
||||||
var windStore = fmgc.windController.clb_winds[computer_temp].wind2;
|
var windStore = fmgc.windController.clb_winds[computer_temp].wind2;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][1] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][1] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L2 = [nil, nil, "ack"];
|
me.L2 = [nil, nil, "ack"];
|
||||||
|
@ -120,17 +110,15 @@ var windCLBPage = {
|
||||||
if (me.items >= 1) {
|
if (me.items >= 1) {
|
||||||
var windStore = fmgc.windController.clb_winds[computer_temp].wind1;
|
var windStore = fmgc.windController.clb_winds[computer_temp].wind1;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
|
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, " TRU WIND/ALT", "blu"];
|
||||||
me.fontMatrix[0][0] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
me.L1 = ["[ ]°/[ ]/[ ]", " TRU WIND/ALT", "blu"];
|
||||||
me.fontMatrix[0][0] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
me.L6 = [" RETURN", nil, "wht"];
|
me.L6 = [" RETURN", nil, "wht"];
|
||||||
me.R1 = [" HISTORY ", "WIND ", "wht"];
|
me.R1 = ["WIND ", "HISTORY ", "wht"];
|
||||||
me.R3 = [" REQUEST ", "WIND ", "amb"];
|
me.R3 = ["REQUEST ", "WIND ", "amb"];
|
||||||
me.R5 = [" PHASE ", "NEXT ", "wht"];
|
me.R5 = [" PHASE ", "NEXT ", "wht"];
|
||||||
|
|
||||||
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
var windCRZPage = {
|
var windCRZPage = {
|
||||||
title: [nil, nil, nil],
|
title: [nil, nil, nil],
|
||||||
titleColour: "wht",
|
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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -60,7 +59,6 @@ var windCRZPage = {
|
||||||
me.titleColour = "wht";
|
me.titleColour = "wht";
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 1, 1, 0]];
|
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.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;
|
var computer_temp = 2;
|
||||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||||
|
@ -96,10 +94,8 @@ var windCRZPage = {
|
||||||
var windStore = fmgc.windController.crz_winds[computer_temp].wind4;
|
var windStore = fmgc.windController.crz_winds[computer_temp].wind4;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][3] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][3] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L4 = [nil, nil, "ack"];
|
me.L4 = [nil, nil, "ack"];
|
||||||
|
@ -109,10 +105,8 @@ var windCRZPage = {
|
||||||
var windStore = fmgc.windController.crz_winds[computer_temp].wind3;
|
var windStore = fmgc.windController.crz_winds[computer_temp].wind3;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][2] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][2] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L3 = [nil, nil, "ack"];
|
me.L3 = [nil, nil, "ack"];
|
||||||
|
@ -122,10 +116,8 @@ var windCRZPage = {
|
||||||
var windStore = fmgc.windController.crz_winds[computer_temp].wind2;
|
var windStore = fmgc.windController.crz_winds[computer_temp].wind2;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][1] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][1] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L2 = [nil, nil, "ack"];
|
me.L2 = [nil, nil, "ack"];
|
||||||
|
@ -134,31 +126,25 @@ var windCRZPage = {
|
||||||
if (me.items >= 1) {
|
if (me.items >= 1) {
|
||||||
var windStore = fmgc.windController.crz_winds[computer_temp].wind1;
|
var windStore = fmgc.windController.crz_winds[computer_temp].wind1;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
|
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, " TRU WIND/ALT", "blu"];
|
||||||
me.fontMatrix[0][0] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
me.L1 = ["[ ]°/[ ]/[ ]", " TRU WIND/ALT", "blu"];
|
||||||
me.fontMatrix[0][0] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var windStore = fmgc.windController.crz_winds[computer_temp].sat1;
|
var windStore = fmgc.windController.crz_winds[computer_temp].sat1;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L5 = [windStore.temp ~ "/" ~ windStore.altitude, "SAT / ALT", "blu"];
|
me.L5 = [windStore.temp ~ "/" ~ windStore.altitude, "SAT / ALT", "blu"];
|
||||||
me.fontMatrix[0][4] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L5 = ["[ ]/[ ]", "SAT / ALT", "blu"];
|
me.L5 = ["[ ]/[ ]", "SAT / ALT", "blu"];
|
||||||
me.fontMatrix[0][4] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (me.items >= 4) {
|
if (me.items >= 4) {
|
||||||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind4;
|
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind4;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][3] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][3] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L4 = [nil, nil, "ack"];
|
me.L4 = [nil, nil, "ack"];
|
||||||
|
@ -168,10 +154,8 @@ var windCRZPage = {
|
||||||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind3;
|
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind3;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][2] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][2] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L3 = [nil, nil, "ack"];
|
me.L3 = [nil, nil, "ack"];
|
||||||
|
@ -181,10 +165,8 @@ var windCRZPage = {
|
||||||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind2;
|
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind2;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][1] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][1] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L2 = [nil, nil, "ack"];
|
me.L2 = [nil, nil, "ack"];
|
||||||
|
@ -193,21 +175,17 @@ var windCRZPage = {
|
||||||
if (me.items >= 1) {
|
if (me.items >= 1) {
|
||||||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind1;
|
var windStore = fmgc.windController.winds[computer_temp][me.match_location].wind1;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
|
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, " TRU WIND/ALT", "blu"];
|
||||||
me.fontMatrix[0][0] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
me.L1 = ["[ ]°/[ ]/[ ]", " TRU WIND/ALT", "blu"];
|
||||||
me.fontMatrix[0][0] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var windStore = fmgc.windController.winds[computer_temp][me.match_location].sat1;
|
var windStore = fmgc.windController.winds[computer_temp][me.match_location].sat1;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L5 = [windStore.temp ~ "/" ~ windStore.altitude, "SAT / ALT", "blu"];
|
me.L5 = [windStore.temp ~ "/" ~ windStore.altitude, "SAT / ALT", "blu"];
|
||||||
me.fontMatrix[0][4] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L5 = ["[ ]/[ ]", "SAT / ALT", "blu"];
|
me.L5 = ["[ ]/[ ]", "SAT / ALT", "blu"];
|
||||||
me.fontMatrix[0][4] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ var magVar = nil;
|
||||||
var windDESPage = {
|
var windDESPage = {
|
||||||
title: nil,
|
title: nil,
|
||||||
titleColour: "wht",
|
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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
L1: [nil, nil, "ack"], # content, title, colour
|
||||||
|
@ -50,7 +49,6 @@ var windDESPage = {
|
||||||
me.titleColour = "wht";
|
me.titleColour = "wht";
|
||||||
me.arrowsMatrix = [[0, 0, 0, 0, 0, 1], [0, 0, 0, 1, 0, 0]];
|
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.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;
|
var computer_temp = 2;
|
||||||
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
if (fmgc.flightPlanController.temporaryFlag[me.computer]) {
|
||||||
|
@ -73,10 +71,8 @@ var windDESPage = {
|
||||||
var windStore = fmgc.windController.des_winds[computer_temp].wind5;
|
var windStore = fmgc.windController.des_winds[computer_temp].wind5;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L5 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L5 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][4] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L5 = ["[ ]/°[ ]/[ ]", nil, "blu"];
|
me.L5 = ["[ ]/°[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][4] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L5 = [nil, nil, "ack"];
|
me.L5 = [nil, nil, "ack"];
|
||||||
|
@ -86,10 +82,8 @@ var windDESPage = {
|
||||||
var windStore = fmgc.windController.des_winds[computer_temp].wind4;
|
var windStore = fmgc.windController.des_winds[computer_temp].wind4;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L4 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][3] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L4 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][3] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L4 = [nil, nil, "ack"];
|
me.L4 = [nil, nil, "ack"];
|
||||||
|
@ -99,10 +93,8 @@ var windDESPage = {
|
||||||
var windStore = fmgc.windController.des_winds[computer_temp].wind3;
|
var windStore = fmgc.windController.des_winds[computer_temp].wind3;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L3 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][2] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L3 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][2] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L3 = [nil, nil, "ack"];
|
me.L3 = [nil, nil, "ack"];
|
||||||
|
@ -112,10 +104,8 @@ var windDESPage = {
|
||||||
var windStore = fmgc.windController.des_winds[computer_temp].wind2;
|
var windStore = fmgc.windController.des_winds[computer_temp].wind2;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
me.L2 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, nil, "blu"];
|
||||||
me.fontMatrix[0][1] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
me.L2 = ["[ ]°/[ ]/[ ]", nil, "blu"];
|
||||||
me.fontMatrix[0][1] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.L2 = [nil, nil, "ack"];
|
me.L2 = [nil, nil, "ack"];
|
||||||
|
@ -125,10 +115,8 @@ var windDESPage = {
|
||||||
var windStore = fmgc.windController.des_winds[computer_temp].wind1;
|
var windStore = fmgc.windController.des_winds[computer_temp].wind1;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
|
me.L1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude) ~ "/" ~ windStore.altitude, "TRU WIND/ALT", "blu"];
|
||||||
me.fontMatrix[0][0] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
me.L1 = ["[ ]°/[ ]/[ ]", "TRU WIND/ALT", "blu"];
|
||||||
me.fontMatrix[0][0] = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,11 +125,9 @@ var windDESPage = {
|
||||||
if (fmgc.FMGCInternal.altAirportSet) {
|
if (fmgc.FMGCInternal.altAirportSet) {
|
||||||
var windStore = fmgc.windController.des_winds[computer_temp].alt1;
|
var windStore = fmgc.windController.des_winds[computer_temp].alt1;
|
||||||
if (windStore.set) {
|
if (windStore.set) {
|
||||||
me.R1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude), "ALTN WIND ", "blu"];
|
me.R1 = [sprintf("%03.0f", windStore.heading) ~ "°/" ~ sprintf("%03.0f", windStore.magnitude), "ALTN WIND", "blu"];
|
||||||
me.fontMatrix[1][0] = 1;
|
|
||||||
} else {
|
} else {
|
||||||
me.R1 = ["[ ]°/[ ]", "ALTN WIND ", "blu"];
|
me.R1 = ["[ ]°/[ ]", "ALTN WIND", "blu"];
|
||||||
me.fontMatrix[1][0] = 1;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
me.R1 = ["", "", "blu"];
|
me.R1 = ["", "", "blu"];
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
var windHISTPage = {
|
var windHISTPage = {
|
||||||
title: nil,
|
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]],
|
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"]],
|
arrowsColour: [["ack", "ack", "ack", "ack", "ack", "ack"],["ack", "ack", "ack", "ack", "ack", "ack"]],
|
||||||
L1: [nil, nil, "ack"], # content, title, colour
|
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.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.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);
|
canvas_mcdu.pageSwitch[me.computer].setBoolValue(0);
|
||||||
},
|
},
|
||||||
# makeTmpy: func() {
|
# makeTmpy: func() {
|
||||||
|
|
|
@ -144,13 +144,9 @@ var ADIRU = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_excessMotion: 0,
|
_excessMotion: 0,
|
||||||
|
alignFault: props.globals.getNode("/systems/navigation/align-fault"),
|
||||||
alignLoop: func() {
|
alignLoop: func() {
|
||||||
me._roll = pts.Orientation.roll.getValue();
|
if (me.alignFault.getBoolValue()) {
|
||||||
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) {
|
|
||||||
me.stopAlignNoAlign();
|
me.stopAlignNoAlign();
|
||||||
me._excessMotion = 1;
|
me._excessMotion = 1;
|
||||||
me.update(); # update operative
|
me.update(); # update operative
|
||||||
|
|
|
@ -1,15 +1,5 @@
|
||||||
# A3XX Electrical System
|
# A3XX Electrical System
|
||||||
# Copyright (c) 2019 Jonathan Redpath (legoboyvdlp)
|
# Copyright (c) 2021 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;
|
|
||||||
|
|
||||||
# Main class
|
# Main class
|
||||||
var ELEC = {
|
var ELEC = {
|
||||||
|
@ -202,47 +192,33 @@ var ELEC = {
|
||||||
me.Fail.tr1Fault.setBoolValue(0);
|
me.Fail.tr1Fault.setBoolValue(0);
|
||||||
me.Fail.tr2Fault.setBoolValue(0);
|
me.Fail.tr2Fault.setBoolValue(0);
|
||||||
},
|
},
|
||||||
_FMGC1: 0,
|
loop: func() {
|
||||||
_FMGC2: 0,
|
# Empty
|
||||||
_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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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
|
# Emesary
|
||||||
var A320Electrical = notifications.SystemRecipient.new("A320 Electrical",ELEC.loop,ELEC);
|
var A320Electrical = notifications.SystemRecipient.new("A320 Electrical",ELEC.loop,ELEC);
|
||||||
emesary.GlobalTransmitter.Register(A320Electrical);
|
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>
|
<autolandwarning>
|
||||||
<name>autolandwarning-single</name>
|
<name>autolandwarning-single</name>
|
||||||
<mode>once</mode>
|
<mode>once</mode>
|
||||||
<path>Aircraft/A320-family/Sounds/Cockpit/calvary-charge-once.wav</path>
|
<path>Aircraft/A320-family/Sounds/Cockpit/click.wav</path>
|
||||||
<condition>
|
<condition>
|
||||||
<equals>
|
<equals>
|
||||||
<property>/instrumentation/pfd/logic/autoland/autoland-alarm</property>
|
<property>/instrumentation/pfd/logic/autoland/autoland-alarm</property>
|
||||||
|
|
|
@ -4,6 +4,34 @@
|
||||||
|
|
||||||
<system name="A320: ADR">
|
<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">
|
<channel name="ADR Inputs" execrate="2">
|
||||||
|
|
||||||
<fcs_function name="aero/alpha-deg-corrected">
|
<fcs_function name="aero/alpha-deg-corrected">
|
||||||
|
|
|
@ -4,7 +4,120 @@
|
||||||
|
|
||||||
<system name="A320: FMGC">
|
<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">
|
<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">
|
<fcs_function name="/systems/fmgc/cas-compare/cas-1-to-3">
|
||||||
<function>
|
<function>
|
||||||
|
|
|
@ -2499,6 +2499,7 @@
|
||||||
<switch name="/instrumentation/pfd/logic/autoland/autoland-armed">
|
<switch name="/instrumentation/pfd/logic/autoland/autoland-armed">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="AND" value="1">
|
<test logic="AND" value="1">
|
||||||
|
/instrumentation/pfd/logic/autoland/pitch-land eq 1
|
||||||
<test logic="OR">
|
<test logic="OR">
|
||||||
/systems/electrical/bus/ac-2 ge 110
|
/systems/electrical/bus/ac-2 ge 110
|
||||||
/systems/electrical/bus/ac-ess-shed ge 110
|
/systems/electrical/bus/ac-ess-shed ge 110
|
||||||
|
@ -2519,32 +2520,33 @@
|
||||||
<switch name="/instrumentation/pfd/logic/autoland/autoland-alarm">
|
<switch name="/instrumentation/pfd/logic/autoland/autoland-alarm">
|
||||||
<default value="0"/>
|
<default value="0"/>
|
||||||
<test logic="AND" value="1">
|
<test logic="AND" value="1">
|
||||||
/instrumentation/pfd/logic/autoland/autoland-armed eq 1
|
/instrumentation/pfd/logic/autoland/autoland-armed eq 1
|
||||||
/instrumentation/pfd/logic/autoland/pitch-land eq 1
|
<test logic="OR">
|
||||||
<test logic="OR">
|
<test logic="AND">
|
||||||
<test logic="AND">
|
/it-autoflight/output/ap1 eq 0
|
||||||
/it-autoflight/output/ap1 eq 0
|
/it-autoflight/output/ap2 eq 0
|
||||||
/it-autoflight/output/ap2 eq 0
|
/instrumentation/pfd/logic/autoland/ap-disc-ft lt 200
|
||||||
</test>
|
/instrumentation/pfd/logic/autoland/ap-disc-ft gt 0
|
||||||
/instrumentation/radar-altimeter-difference-ft gt 15
|
</test>
|
||||||
<test logic="AND">
|
/instrumentation/radar-altimeter-difference-ft gt 15
|
||||||
<test logic="OR">
|
<test logic="AND">
|
||||||
/instrumentation/nav[0]/gs-needle-deflection-norm gt 0.5
|
<test logic="OR">
|
||||||
/instrumentation/nav[0]/gs-needle-deflection-norm lt -0.5
|
/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>
|
</test>
|
||||||
/position/gear-agl-ft ge 100
|
<test logic="AND">
|
||||||
</test>
|
<test logic="OR">
|
||||||
<test logic="AND">
|
/instrumentation/nav[0]/heading-needle-deflection-norm gt 0.125
|
||||||
<test logic="OR">
|
/instrumentation/nav[0]/heading-needle-deflection-norm lt -0.125
|
||||||
/instrumentation/nav[0]/heading-needle-deflection-norm gt 0.125
|
</test>
|
||||||
/instrumentation/nav[0]/heading-needle-deflection-norm lt -0.125
|
/position/gear-agl-ft ge 15
|
||||||
</test>
|
</test>
|
||||||
/position/gear-agl-ft ge 15
|
<!-- TODO
|
||||||
|
- Loss of localizer signal
|
||||||
|
-->
|
||||||
</test>
|
</test>
|
||||||
<!-- TODO
|
|
||||||
- Loss of localizer signal
|
|
||||||
-->
|
|
||||||
</test>
|
|
||||||
</test>
|
</test>
|
||||||
</switch>
|
</switch>
|
||||||
|
|
||||||
|
|
|
@ -502,7 +502,7 @@
|
||||||
|
|
||||||
</channel>
|
</channel>
|
||||||
|
|
||||||
<channel name="FMGC">
|
<channel name="FMGC" execrate="8">
|
||||||
|
|
||||||
<fcs_function name="/FMGC/internal/kts-to-mach-factor">
|
<fcs_function name="/FMGC/internal/kts-to-mach-factor">
|
||||||
<function>
|
<function>
|
||||||
|
@ -524,4 +524,58 @@
|
||||||
|
|
||||||
</channel>
|
</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>
|
</system>
|
||||||
|
|
|
@ -168,11 +168,6 @@
|
||||||
<suction>/systems/vacuum/suction-inhg</suction>
|
<suction>/systems/vacuum/suction-inhg</suction>
|
||||||
</heading-indicator>
|
</heading-indicator>
|
||||||
|
|
||||||
<KT-70>
|
|
||||||
<name>kt-70</name>
|
|
||||||
<number>0</number>
|
|
||||||
</KT-70>
|
|
||||||
|
|
||||||
<magnetic-compass>
|
<magnetic-compass>
|
||||||
<name>magnetic-compass</name>
|
<name>magnetic-compass</name>
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
|
|
|
@ -23,6 +23,14 @@
|
||||||
<filter-gain>0.0</filter-gain>
|
<filter-gain>0.0</filter-gain>
|
||||||
</predict-simple>
|
</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>
|
<filter>
|
||||||
<name>Gear AGL Altitude FT</name>
|
<name>Gear AGL Altitude FT</name>
|
||||||
<type>gain</type>
|
<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>
|
<!DOCTYPE html>
|
||||||
<html lang="en" translate="no">
|
<html lang="en" translate="no">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<title>A320 MCDU</title>
|
<title>A320 MCDU</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
@ -8,113 +7,6 @@
|
||||||
<link rel="manifest" href="mcdu_manifest.json" />
|
<link rel="manifest" href="mcdu_manifest.json" />
|
||||||
<meta name="apple-mobile-web-app-status-bar" content="#db4938" />
|
<meta name="apple-mobile-web-app-status-bar" content="#db4938" />
|
||||||
<meta name="theme-color" 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>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-size: 5rem;
|
font-size: 5rem;
|
||||||
|
@ -201,33 +93,32 @@
|
||||||
<table class="enter" style="width: 100%">
|
<table class="enter" style="width: 100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td><br></td>
|
<td><br></td>
|
||||||
<td rowspan="8" style="vertical-align: top"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAANgAQMAAACIgIgUAAAAA1BMVEUAAACnej3aAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAgklEQVR42u3BAQEAAACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7wazbwABRxu5owAAAABJRU5ErkJggg=="
|
<td rowspan="8" style="vertical-align: top"><img data-element="lcdimage" src="" style="width: 100%" /></td>
|
||||||
style="width: 100%" /></td>
|
|
||||||
<td><br></td>
|
<td><br></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td button-id="1" button-side="l">—</td>
|
<td data-button="lskbutton:1">—</td>
|
||||||
<td button-id="1" button-side="r">—</td>
|
<td data-button="rskbutton:1">—</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td button-id="2" button-side="l">—</td>
|
<td data-button="lskbutton:2">—</td>
|
||||||
<td button-id="2" button-side="r">—</td>
|
<td data-button="rskbutton:2">—</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td button-id="3" button-side="l">—</td>
|
<td data-button="lskbutton:3">—</td>
|
||||||
<td button-id="3" button-side="r">—</td>
|
<td data-button="rskbutton:3">—</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td button-id="4" button-side="l">—</td>
|
<td data-button="lskbutton:4">—</td>
|
||||||
<td button-id="4" button-side="r">—</td>
|
<td data-button="rskbutton:4">—</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td button-id="5" button-side="l">—</td>
|
<td data-button="lskbutton:5">—</td>
|
||||||
<td button-id="5" button-side="r">—</td>
|
<td data-button="rskbutton:5">—</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td button-id="6" button-side="l">—</td>
|
<td data-button="lskbutton:6">—</td>
|
||||||
<td button-id="6" button-side="r">—</td>
|
<td data-button="rskbutton:6">—</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><br></td>
|
<td><br></td>
|
||||||
|
@ -236,107 +127,110 @@
|
||||||
</table>
|
</table>
|
||||||
<table class="menu" style="width: 100%">
|
<table class="menu" style="width: 100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="dirto">DIR</td>
|
<td data-button="pagebutton:dirto" class="dirto">DIR</td>
|
||||||
<td class="prog">PROG</td>
|
<td data-button="pagebutton:prog" class="prog">PROG</td>
|
||||||
<td class="perf">PERF</td>
|
<td data-button="pagebutton:perf" class="perf">PERF</td>
|
||||||
<td class="init">INIT</td>
|
<td data-button="pagebutton:init" class="init">INIT</td>
|
||||||
<td class="data">DATA</td>
|
<td data-button="pagebutton:data" class="data">DATA</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>BRT</td>
|
<td>BRT</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="f-pln">F-PLN</td>
|
<td data-button="pagebutton:f-pln" class="f-pln">F-PLN</td>
|
||||||
<td class="radnav">RAD<br>NAV</td>
|
<td data-button="pagebutton:radnav" class="radnav">RAD<br>NAV</td>
|
||||||
<td class="fuel-pred">FUEL<br>PRED</td>
|
<td data-button="pagebutton:fuel-pred" class="fuel-pred">FUEL<br>PRED</td>
|
||||||
<td>SEC<br>F-PLN</td>
|
<td data-button="" >SEC<br>F-PLN</td>
|
||||||
<td class="atc">ATC<br>COMM</td>
|
<td data-button="pagebutton:atc" class="atc">ATC<br>COMM</td>
|
||||||
<td class="mcdu">MCDU<br>MENU</td>
|
<td data-button="pagebutton:mcdu" class="mcdu">MCDU<br>MENU</td>
|
||||||
<td>DIM</td>
|
<td>DIM</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table class="input" style="float: right; width: 62.5%">
|
<table class="input" style="float: right; width: 62.5%">
|
||||||
<tr>
|
<tr>
|
||||||
<td>A</td>
|
<td data-button="button:A">A</td>
|
||||||
<td>B</td>
|
<td data-button="button:B">B</td>
|
||||||
<td>C</td>
|
<td data-button="button:C">C</td>
|
||||||
<td>D</td>
|
<td data-button="button:D">D</td>
|
||||||
<td>E</td>
|
<td data-button="button:E">E</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>F</td>
|
<td data-button="button:F">F</td>
|
||||||
<td>G</td>
|
<td data-button="button:G">G</td>
|
||||||
<td>H</td>
|
<td data-button="button:H">H</td>
|
||||||
<td>I</td>
|
<td data-button="button:I">I</td>
|
||||||
<td>J</td>
|
<td data-button="button:J">J</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>K</td>
|
<td data-button="button:K">K</td>
|
||||||
<td>L</td>
|
<td data-button="button:L">L</td>
|
||||||
<td>M</td>
|
<td data-button="button:M">M</td>
|
||||||
<td>N</td>
|
<td data-button="button:N">N</td>
|
||||||
<td>O</td>
|
<td data-button="button:O">O</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>P</td>
|
<td data-button="button:P">P</td>
|
||||||
<td>Q</td>
|
<td data-button="button:Q">Q</td>
|
||||||
<td>R</td>
|
<td data-button="button:R">R</td>
|
||||||
<td>S</td>
|
<td data-button="button:S">S</td>
|
||||||
<td>T</td>
|
<td data-button="button:T">T</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>U</td>
|
<td data-button="button:U">U</td>
|
||||||
<td>V</td>
|
<td data-button="button:V">V</td>
|
||||||
<td>W</td>
|
<td data-button="button:W">W</td>
|
||||||
<td>X</td>
|
<td data-button="button:X">X</td>
|
||||||
<td>Y</td>
|
<td data-button="button:Y">Y</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>Z</td>
|
<td data-button="button:Z">Z</td>
|
||||||
<td>/</td>
|
<td data-button="button:SLASH">/</td>
|
||||||
<td style="font-size: 50%">SP</td>
|
<td style="font-size: 50%" data-button="button:SP">SP</td>
|
||||||
<td style="font-size: 33%" class="disabled">OVFY<br>△</td>
|
<td style="font-size: 33%" data-button="button:OVFY">OVFY<br>△</td>
|
||||||
<td style="font-size: 33%">CLR</td>
|
<td style="font-size: 33%" data-button="button:CLR">CLR</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table class="arrows" style="width: 29.5%">
|
<table class="arrows" style="width: 29.5%">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="airport">AIR<br>PORT</td>
|
<td data-button="pagebutton:airport" class="airport">AIR<br>PORT</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="left">←</td>
|
<td data-button="arrowbutton:left" class="left">←</td>
|
||||||
<td class="up">↑</td>
|
<td data-button="arrowbutton:up" class="up">↑</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="right">→</td>
|
<td data-button="arrowbutton:right" class="right">→</td>
|
||||||
<td class="down">↓</td>
|
<td data-button="arrowbutton:down" class="down">↓</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table class="input" style="width: 30%">
|
<table class="input" style="width: 30%">
|
||||||
<tr>
|
<tr>
|
||||||
<td>1</td>
|
<td data-button="button:1">1</td>
|
||||||
<td>2</td>
|
<td data-button="button:2">2</td>
|
||||||
<td>3</td>
|
<td data-button="button:3">3</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>4</td>
|
<td data-button="button:4">4</td>
|
||||||
<td>5</td>
|
<td data-button="button:5">5</td>
|
||||||
<td>6</td>
|
<td data-button="button:6">6</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>7</td>
|
<td data-button="button:7">7</td>
|
||||||
<td>8</td>
|
<td data-button="button:8">8</td>
|
||||||
<td>9</td>
|
<td data-button="button:9">9</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>.</td>
|
<td data-button="button:DOT">.</td>
|
||||||
<td>0</td>
|
<td data-button="button:0">0</td>
|
||||||
<td
|
<td
|
||||||
style="font-size: 3vw; width: 33.333333333333333333333333333333333333333333333333333333333333333333333%; /* :) */" class="disabled">
|
style="font-size: 3vw; width: 33.34%;" data-button="button:PLUSMINUS">
|
||||||
+/-
|
+/-
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<script src="../js/mcdu.js"></script>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</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>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html lang="en" translate="no">
|
||||||
<head>
|
<head>
|
||||||
<title>A320 MCDU</title>
|
<title>A320 MCDU</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-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" />
|
<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 data-button="button:9" class="numberbutton number-col3"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="number-row4">
|
<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: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>
|
||||||
|
|
||||||
<div class="alphabutton-row1">
|
<div class="alphabutton-row1">
|
||||||
|
@ -130,7 +131,7 @@
|
||||||
|
|
||||||
<div class="alphabutton-row6">
|
<div class="alphabutton-row6">
|
||||||
<div data-button="button:Z" class="alphabutton alphabutton-col1"></div>
|
<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:SP" class="alphabutton alphabutton-col3"></div>
|
||||||
<div data-button="button:OVFY" class="alphabutton alphabutton-col4"></div>
|
<div data-button="button:OVFY" class="alphabutton alphabutton-col4"></div>
|
||||||
<div data-button="button:CLR" class="alphabutton alphabutton-col5"></div>
|
<div data-button="button:CLR" class="alphabutton alphabutton-col5"></div>
|
||||||
|
@ -140,7 +141,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="js/mcdu.js">
|
<script src="../js/mcdu.js">
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,185 +1,166 @@
|
||||||
const MCDU = (function () {
|
const MCDU = (function () {
|
||||||
const screenImageBaseUrl = '/screenshot?canvasindex=10&type=jpg';
|
const screenImageBaseUrl = '/screenshot?canvasindex=10&type=jpg';
|
||||||
const refreshInterval = 2000;
|
const refreshInterval = 2000;
|
||||||
|
|
||||||
const body = document.body;
|
const body = document.body;
|
||||||
let currentCacheBust = 0;
|
let currentCacheBust = 0;
|
||||||
let lastSentText = '';
|
let lastSentText = '';
|
||||||
|
|
||||||
init();
|
init();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
toggleUsedUniverse
|
toggleUsedUniverse
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
function init()
|
function init() {
|
||||||
{
|
body.dataset.lastTouch = 0;
|
||||||
body.dataset.lastTouch = 0;
|
body.addEventListener('touchstart', preventZoomAction, { passive: false });
|
||||||
body.addEventListener('touchstart', preventZoomAction, { passive: false });
|
|
||||||
|
registerButtons();
|
||||||
registerButtons();
|
registerKeyboardInput();
|
||||||
registerKeyboardInput();
|
setInterval(refreshScreen, refreshInterval);
|
||||||
setInterval(refreshScreen, refreshInterval);
|
refreshScreen();
|
||||||
refreshScreen();
|
}
|
||||||
}
|
|
||||||
|
function refreshScreen() {
|
||||||
function refreshScreen() {
|
loadScreenImage(screenImageBaseUrl)
|
||||||
loadScreenImage(screenImageBaseUrl)
|
.then(setScreenSrc)
|
||||||
.then(setScreenSrc)
|
.catch(setScreenSrc);
|
||||||
.catch(setScreenSrc);
|
}
|
||||||
}
|
|
||||||
|
function setScreenSrc(url) {
|
||||||
function setScreenSrc(url) {
|
url = typeof url === 'string' ? url : '';
|
||||||
url = typeof url === 'string' ? url : '';
|
showScreenImageLoadState(url !== '');
|
||||||
showScreenImageLoadState(url !== '');
|
document.querySelectorAll('[data-element="lcdimage"]').forEach((imageElement) => {
|
||||||
document.querySelectorAll('[data-element="lcdimage"]').forEach((imageElement) => {
|
imageElement.src = url;
|
||||||
imageElement.src = url;
|
});
|
||||||
});
|
}
|
||||||
}
|
|
||||||
|
function loadScreenImage(baseUrl) {
|
||||||
function loadScreenImage(baseUrl) {
|
currentCacheBust = new Date().getTime();
|
||||||
currentCacheBust = new Date().getTime();
|
return new Promise((resolve, reject) => {
|
||||||
return new Promise((resolve, reject) => {
|
const url = baseUrl + '?cacheBust=' + currentCacheBust;
|
||||||
const url = baseUrl + '?cacheBust=' + currentCacheBust;
|
const img = new Image;
|
||||||
const img = new Image;
|
|
||||||
|
img.addEventListener('error', reject);
|
||||||
img.addEventListener('error', reject);
|
|
||||||
|
img.addEventListener('load', (event) => {
|
||||||
img.addEventListener('load', (event) => {
|
showScreenImageLoadState(true);
|
||||||
showScreenImageLoadState(true);
|
resolve(url);
|
||||||
resolve(url);
|
});
|
||||||
});
|
img.src = url;
|
||||||
img.src = url;
|
});
|
||||||
});
|
}
|
||||||
}
|
|
||||||
|
function showScreenImageLoadState(isOK) {
|
||||||
function showScreenImageLoadState(isOK) {
|
if (!isOK) {
|
||||||
if (!isOK) {
|
console.log('fail');
|
||||||
console.log('fail');
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
function toggleUsedUniverse() {
|
||||||
function toggleUsedUniverse() {
|
body.setAttribute('data-used-universe', body.getAttribute('data-used-universe') === '1' ? '0' : '1');
|
||||||
body.setAttribute('data-used-universe', body.getAttribute('data-used-universe') === '1' ? '0' : '1');
|
}
|
||||||
}
|
|
||||||
|
function registerButtons() {
|
||||||
function registerButtons() {
|
document.querySelectorAll('[data-button]').forEach((buttonElement) => {
|
||||||
document.querySelectorAll('[data-button]').forEach((buttonElement) => {
|
const buttonFunction = getButtonFunction(buttonElement);
|
||||||
const buttonFunction = getButtonFunction(buttonElement);
|
if (!(typeof buttonFunction === 'function')) {
|
||||||
if (!(typeof buttonFunction === 'function')) {
|
return;
|
||||||
return;
|
}
|
||||||
}
|
buttonElement.addEventListener('click', buttonFunction);
|
||||||
buttonElement.addEventListener('click', buttonFunction);
|
buttonElement.addEventListener('touchstart', preventZoomAction, true);
|
||||||
buttonElement.addEventListener('touchstart', preventZoomAction, true);
|
});
|
||||||
});
|
let btn = document.querySelector("[data-button=\"button:CLR\"]");
|
||||||
}
|
if (btn) btn.addEventListener("contextmenu",function(e){
|
||||||
|
e.preventDefault();
|
||||||
function registerKeyboardInput() {
|
sendButtonpress('button', 'LONGCLR');
|
||||||
const keyTranslation = {
|
});
|
||||||
BACKSPACE: 'CLR'
|
}
|
||||||
};
|
|
||||||
body.addEventListener('keyup', (event) => {
|
function registerKeyboardInput() {
|
||||||
const key = event.key.toUpperCase();
|
const keyTranslation = {
|
||||||
if (key.match(/^[A-Z0-9/\-+.\ ]$/)) {
|
BACKSPACE: 'CLR',
|
||||||
if (key === '+' || key === '-') {
|
DELETE: 'LONGCLR',
|
||||||
return sendPlusMinusKey();
|
'+': 'PLUSMINUS',
|
||||||
}
|
'-': 'PLUSMINUS',
|
||||||
return sendButtonpress('button', key);
|
'/': 'SLASH',
|
||||||
}
|
'.': 'DOT',
|
||||||
|
'^': 'OVFY',
|
||||||
const translatedKey = keyTranslation[key];
|
' ': 'SP'
|
||||||
if (translatedKey) {
|
};
|
||||||
return sendButtonpress('button', translatedKey);
|
body.addEventListener('keyup', (event) => {
|
||||||
}
|
const key = event.key.toUpperCase();
|
||||||
});
|
if (key.match(/^[A-Z0-9]$/)) {
|
||||||
}
|
return sendButtonpress('button', key);
|
||||||
|
}
|
||||||
function getButtonFunction(buttonElement) {
|
const translatedKey = keyTranslation[key]||false;
|
||||||
const buttonActions = buttonElement.getAttribute('data-button').split(':');
|
if (translatedKey) return sendButtonpress('button', translatedKey);
|
||||||
const actionKey = buttonActions[0];
|
});
|
||||||
const actionValue = buttonActions[1];
|
}
|
||||||
|
|
||||||
if(!actionKey) {
|
function getButtonFunction(buttonElement) {
|
||||||
return;
|
const buttonActions = buttonElement.getAttribute('data-button').split(':');
|
||||||
}
|
const actionKey = buttonActions[0];
|
||||||
|
const actionValue = buttonActions[1];
|
||||||
if (actionKey === 'toggleUsedUniverse') {
|
|
||||||
return toggleUsedUniverse;
|
if(!actionKey) {
|
||||||
}
|
return;
|
||||||
|
}
|
||||||
if (actionKey === 'button' && actionValue === '-') {
|
|
||||||
return sendPlusMinusKey;
|
if (actionKey === 'toggleUsedUniverse') {
|
||||||
}
|
return toggleUsedUniverse;
|
||||||
|
}
|
||||||
return function () {
|
|
||||||
sendButtonpress(actionKey, actionValue);
|
return function () {
|
||||||
};
|
sendButtonpress(actionKey, actionValue);
|
||||||
}
|
};
|
||||||
|
}
|
||||||
function sendPlusMinusKey() {
|
|
||||||
if (lastSentText === '-') {
|
function sendButtonpress(type, text) {
|
||||||
sendButtonpress('button', 'CLR')
|
//console.log({ type, text });
|
||||||
.then(() => {
|
let request = new XMLHttpRequest;
|
||||||
sendButtonpress('button', '+');
|
request.open("POST", "/run.cgi?value=nasal");
|
||||||
})
|
request.setRequestHeader("Content-Type", "application/json");
|
||||||
return;
|
let body = JSON.stringify({
|
||||||
}
|
"name": "",
|
||||||
|
"children": [
|
||||||
if (lastSentText === '+') {
|
{
|
||||||
sendButtonpress('button', 'CLR')
|
"name": "script",
|
||||||
.then(() => {
|
"index": 0,
|
||||||
sendButtonpress('button', '-');
|
"value": "mcdu." + type + "(\"" + text + "\", 0);"
|
||||||
})
|
}
|
||||||
return;
|
]
|
||||||
}
|
});
|
||||||
|
request.send(body);
|
||||||
sendButtonpress('button', '-');
|
return new Promise((resolve) => {
|
||||||
}
|
request.addEventListener('load', () => {
|
||||||
|
lastSentText = text;
|
||||||
function sendButtonpress(type, text) {
|
refreshScreen();
|
||||||
// console.log({ type, text });
|
resolve();
|
||||||
let request = new XMLHttpRequest;
|
}, true);
|
||||||
request.open("POST", "/run.cgi?value=nasal");
|
});
|
||||||
request.setRequestHeader("Content-Type", "application/json");
|
}
|
||||||
let body = JSON.stringify({
|
|
||||||
"name": "",
|
//https://exceptionshub.com/disable-double-tap-zoom-option-in-browser-on-touch-devices.html
|
||||||
"children": [
|
function preventZoomAction(event) {
|
||||||
{
|
const t2 = event.timeStamp;
|
||||||
"name": "script",
|
const touchedElement = event.currentTarget;
|
||||||
"index": 0,
|
const t1 = touchedElement.dataset.lastTouch || t2;
|
||||||
"value": "mcdu." + type + "(\"" + text + "\", 0);"
|
const dt = t2 - t1;
|
||||||
}
|
const fingers = event.touches.length;
|
||||||
]
|
touchedElement.dataset.lastTouch = t2;
|
||||||
});
|
|
||||||
request.send(body);
|
if (!dt || dt > 500 || fingers > 1) {
|
||||||
return new Promise((resolve) => {
|
// no double-tap
|
||||||
request.addEventListener('load', () => {
|
return;
|
||||||
lastSentText = text;
|
}
|
||||||
refreshScreen();
|
|
||||||
resolve();
|
event.preventDefault();
|
||||||
}, true);
|
event.target.click();
|
||||||
});
|
}
|
||||||
}
|
})();
|
||||||
|
|
||||||
//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;
|
background-color: #005670;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #e4e4e4;
|
color: #e4e4e4;
|
||||||
|
font-size: 16px;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
height: 100vh;
|
|
||||||
width: 100vw;
|
|
||||||
color: #8db9ca;
|
color: #8db9ca;
|
||||||
|
padding-top: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
|
@ -55,8 +57,9 @@
|
||||||
.choice {
|
.choice {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
position: relative;
|
position: relative;
|
||||||
width: calc(49% - 2vw);
|
width: calc(50% - 40px);
|
||||||
padding: 1vh 1vw 75% 1vw;
|
padding: 15px;
|
||||||
|
padding-bottom: 75%;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
|
@ -69,11 +72,12 @@
|
||||||
|
|
||||||
.choice img {
|
.choice img {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 1rem;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
max-height: 100%;
|
max-height: auto;
|
||||||
|
max-width: 100%;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
box-shadow: 4px 4px 6px #00000063;
|
box-shadow: 4px 4px 6px #00000063;
|
||||||
}
|
}
|
||||||
|
@ -99,9 +103,9 @@
|
||||||
<div class="chooser">
|
<div class="chooser">
|
||||||
<a href="WebPanel1/index.html" class="choice choice--1">
|
<a href="WebPanel1/index.html" class="choice choice--1">
|
||||||
<span class="button">
|
<span class="button">
|
||||||
abstract
|
basic
|
||||||
</span>
|
</span>
|
||||||
<img src="WebPanel1/screenshot.jpg">
|
<img src="WebPanel1/img/screenshot.jpg">
|
||||||
</a>
|
</a>
|
||||||
<a href="WebPanel2/index.html" class="choice choice--2">
|
<a href="WebPanel2/index.html" class="choice choice--2">
|
||||||
<span class="button">
|
<span class="button">
|
||||||
|
|