A3XX: Improve Lower ECAM, WIP IAE EIS2 Canvas Upper ECAM
|
@ -128,6 +128,9 @@
|
|||
<path>Aircraft/A320Family/Systems/libraries.xml</path>
|
||||
</autopilot>
|
||||
<autopilot n="9">
|
||||
<path>Aircraft/A320Family/Systems/upper-ecam.xml</path>
|
||||
</autopilot>
|
||||
<autopilot n="10">
|
||||
<path>Aircraft/A320Family/Systems/lower-ecam.xml</path>
|
||||
</autopilot>
|
||||
<property-rule n="100">
|
||||
|
@ -289,15 +292,15 @@
|
|||
</script>
|
||||
</binding>
|
||||
</item>
|
||||
<!--item>
|
||||
<label>First Upper ECAM</label>
|
||||
<item>
|
||||
<label>Show Upper ECAM</label>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.showUpperECAM();
|
||||
</script>
|
||||
</binding>
|
||||
</item-->
|
||||
</item>
|
||||
<item>
|
||||
<label>Show Lower ECAM</label>
|
||||
<binding>
|
||||
|
@ -713,6 +716,7 @@
|
|||
<old-gpws type="bool">0</old-gpws>
|
||||
<steep-ils type="bool">0</steep-ils>
|
||||
<steep-ils-avail type="bool">0</steep-ils-avail>
|
||||
<test-canvas type="bool">0</test-canvas> <!-- Enables WIP Canvas Stuff -->
|
||||
</options>
|
||||
|
||||
<instrumentation n="0">
|
||||
|
@ -752,12 +756,6 @@
|
|||
<serviceable type="bool">true</serviceable>
|
||||
<volume type="double">0</volume>
|
||||
</dme>
|
||||
|
||||
<efis n="0">
|
||||
<ecam>
|
||||
<display-mode type="string">ENG</display-mode>
|
||||
</ecam>
|
||||
</efis>
|
||||
|
||||
<nav n="0">
|
||||
<frequencies>
|
||||
|
@ -1094,6 +1092,7 @@
|
|||
<file>Aircraft/A320Family/Models/Instruments/ND/canvas/ND.nas</file>
|
||||
</canvas_nd>
|
||||
<canvas_ecam>
|
||||
<file>Aircraft/A320Family/Models/Instruments/Upper-ECAM/Upper-ECAM.nas</file>
|
||||
<file>Aircraft/A320Family/Models/Instruments/Lower-ECAM/Lower-ECAM.nas</file>
|
||||
</canvas_ecam>
|
||||
<icing>
|
||||
|
|
|
@ -297,7 +297,7 @@
|
|||
|
||||
<model>
|
||||
<name>UECAM</name>
|
||||
<path>Aircraft/A320Family/Models/Instruments/Upper-ECAM/Upper-ECAM-CFM.xml</path>
|
||||
<path>Aircraft/A320Family/Models/Instruments/Upper-ECAM-EIS1/Upper-ECAM-CFM.xml</path>
|
||||
<offsets>
|
||||
<x-m>-0.5807</x-m>
|
||||
<y-m>0</y-m>
|
||||
|
@ -307,6 +307,7 @@
|
|||
<condition>
|
||||
<and>
|
||||
<not><property>options/EIS2</property></not>
|
||||
<not><property>options/test-canvas</property></not>
|
||||
<equals>
|
||||
<property>options/eng</property>
|
||||
<value>CFM</value>
|
||||
|
@ -327,7 +328,7 @@
|
|||
|
||||
<model>
|
||||
<name>UECAM</name>
|
||||
<path>Aircraft/A320Family/Models/Instruments/Upper-ECAM/Upper-ECAM-IAE.xml</path>
|
||||
<path>Aircraft/A320Family/Models/Instruments/Upper-ECAM-EIS1/Upper-ECAM-IAE.xml</path>
|
||||
<offsets>
|
||||
<x-m>-0.5807</x-m>
|
||||
<y-m>0</y-m>
|
||||
|
@ -337,6 +338,7 @@
|
|||
<condition>
|
||||
<and>
|
||||
<not><property>options/EIS2</property></not>
|
||||
<not><property>options/test-canvas</property></not>
|
||||
<equals>
|
||||
<property>options/eng</property>
|
||||
<value>IAE</value>
|
||||
|
@ -367,6 +369,7 @@
|
|||
<condition>
|
||||
<and>
|
||||
<property>options/EIS2</property>
|
||||
<not><property>options/test-canvas</property></not>
|
||||
<equals>
|
||||
<property>options/eng</property>
|
||||
<value>CFM</value>
|
||||
|
@ -397,6 +400,7 @@
|
|||
<condition>
|
||||
<and>
|
||||
<property>options/EIS2</property>
|
||||
<not><property>options/test-canvas</property></not>
|
||||
<equals>
|
||||
<property>options/eng</property>
|
||||
<value>IAE</value>
|
||||
|
@ -415,6 +419,20 @@
|
|||
</condition>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>UECAM</name>
|
||||
<path>Aircraft/A320Family/Models/Instruments/Upper-ECAM/Upper-ECAM.xml</path>
|
||||
<condition>
|
||||
<property>options/test-canvas</property>
|
||||
</condition>
|
||||
<offsets>
|
||||
<x-m>-0.5807</x-m>
|
||||
<y-m>0</y-m>
|
||||
<z-m>-0.0442</z-m>
|
||||
<pitch-deg>-15</pitch-deg>
|
||||
</offsets>
|
||||
</model>
|
||||
|
||||
<!-- Lower ECAM -->
|
||||
|
||||
<model>
|
||||
|
@ -426,23 +444,6 @@
|
|||
<z-m>-0.21132</z-m>
|
||||
<pitch-deg>-15</pitch-deg>
|
||||
</offsets>
|
||||
<condition>
|
||||
<and>
|
||||
<property>sim/current-view/internal</property>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/ac1</property>
|
||||
<value>110</value>
|
||||
</greater-than-equals>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/ac2</property>
|
||||
<value>110</value>
|
||||
</greater-than-equals>
|
||||
<not-equals>
|
||||
<property>controls/electrical/switches/emer-gen</property>
|
||||
<value>1</value>
|
||||
</not-equals>
|
||||
</and>
|
||||
</condition>
|
||||
</model>
|
||||
|
||||
<!-- Flight Control Unit Animations -->
|
||||
|
@ -3286,10 +3287,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("sts");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>sts</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3318,10 +3318,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("apu");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>apu</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3333,10 +3332,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("bleed");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>bleed</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3348,10 +3346,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("press");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>press</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3363,10 +3360,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("elec");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>elec</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3378,10 +3374,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("hyd");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>hyd</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3393,10 +3388,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("fuel");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>fuel</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3408,10 +3402,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("eng");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>eng</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3423,10 +3416,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("cond");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>cond</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3438,10 +3430,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("door");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>door</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3453,10 +3444,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("wheel");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>wheel</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
@ -3468,10 +3458,9 @@
|
|||
<button>0</button>
|
||||
<repeatable type="bool">false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>
|
||||
canvas_ecam.setLowerECAMPage("fctl");
|
||||
</script>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/Lower/page</property>
|
||||
<value>fctl</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
|
|
@ -9,6 +9,7 @@ var lowerECAM_apu = nil;
|
|||
var lowerECAM_eng1 = nil;
|
||||
var lowerECAM_eng = nil;
|
||||
var lowerECAM_display = nil;
|
||||
var page = "eng";
|
||||
setprop("/systems/electrical/extra/apu-load", 0);
|
||||
setprop("/systems/electrical/extra/apu-volts", 0);
|
||||
setprop("/systems/electrical/extra/apu-hz", 0);
|
||||
|
@ -45,9 +46,34 @@ var canvas_lowerECAM_base = {
|
|||
return [];
|
||||
},
|
||||
update: func() {
|
||||
|
||||
if (getprop("/systems/electrical/bus/ac1") >= 110 and getprop("/systems/electrical/bus/ac2") >= 110 and getprop("/controls/electrical/switches/emer-gen") != 1) {
|
||||
page = getprop("/ECAM/Lower/page");
|
||||
if (page == "apu") {
|
||||
lowerECAM_apu.page.show();
|
||||
lowerECAM_eng1.page.hide();
|
||||
lowerECAM_eng.page.hide();
|
||||
} else if (page == "eng") {
|
||||
lowerECAM_apu.page.hide();
|
||||
if (getprop("/options/EIS2") == 1) {
|
||||
lowerECAM_eng1.page.hide();
|
||||
lowerECAM_eng.page.show();
|
||||
} else {
|
||||
lowerECAM_eng1.page.show();
|
||||
lowerECAM_eng.page.hide();
|
||||
}
|
||||
} else {
|
||||
lowerECAM_apu.page.hide();
|
||||
lowerECAM_eng1.page.hide();
|
||||
lowerECAM_eng.page.hide();
|
||||
}
|
||||
} else {
|
||||
lowerECAM_apu.page.hide();
|
||||
lowerECAM_eng1.page.hide();
|
||||
lowerECAM_eng.page.hide();
|
||||
}
|
||||
|
||||
settimer(func me.update(), 0.02);
|
||||
},
|
||||
|
||||
updateBottomStatus: func() {
|
||||
me["TAT"].setText(sprintf("%s", math.round(getprop("/environment/temperature-degc"))));
|
||||
me["SAT"].setText(sprintf("%s", math.round(getprop("/environment/temperature-degc"))));
|
||||
|
@ -242,34 +268,10 @@ setlistener("sim/signals/fdm-initialized", func {
|
|||
lowerECAM_apu.update();
|
||||
lowerECAM_eng1.update();
|
||||
lowerECAM_eng.update();
|
||||
lowerECAM_apu.page.hide();
|
||||
lowerECAM_eng_choose();
|
||||
canvas_lowerECAM_base.update();
|
||||
});
|
||||
|
||||
var showLowerECAM = func {
|
||||
var dlg = canvas.Window.new([512, 512], "dialog").set("resize", 1);
|
||||
dlg.setCanvas(lowerECAM_display);
|
||||
}
|
||||
|
||||
var setLowerECAMPage = func(page) {
|
||||
if (page == "apu") {
|
||||
lowerECAM_apu.page.show();
|
||||
lowerECAM_eng1.page.hide();
|
||||
lowerECAM_eng.page.hide();
|
||||
} else if (page == "eng") {
|
||||
lowerECAM_apu.page.hide();
|
||||
lowerECAM_eng_choose();
|
||||
}
|
||||
}
|
||||
|
||||
var lowerECAM_eng_choose = func {
|
||||
if (getprop("/options/EIS2") == 1) {
|
||||
lowerECAM_eng1.page.hide();
|
||||
lowerECAM_eng.page.show();
|
||||
} else {
|
||||
lowerECAM_eng1.page.show();
|
||||
lowerECAM_eng.page.hide();
|
||||
}
|
||||
}
|
||||
|
||||
setlistener("/options/EIS2", lowerECAM_eng_choose);
|
||||
|
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 619 B After Width: | Height: | Size: 619 B |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 139 B |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 619 B After Width: | Height: | Size: 619 B |
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 139 B After Width: | Height: | Size: 139 B |
212
Models/Instruments/Upper-ECAM/Upper-ECAM.nas
Normal file
|
@ -0,0 +1,212 @@
|
|||
# A3XX Upper ECAM Canvas
|
||||
# Joshua Davidson (it0uchpods)
|
||||
|
||||
#######################################
|
||||
# Copyright (c) A3XX Development Team #
|
||||
#######################################
|
||||
|
||||
var upperECAM_iae_eis2 = nil;
|
||||
var upperECAM_display = nil;
|
||||
setprop("/engines/engine[0]/epr-actual", 1);
|
||||
setprop("/engines/engine[1]/epr-actual", 1);
|
||||
setprop("/engines/engine[0]/egt-actual", 1);
|
||||
setprop("/engines/engine[1]/egt-actual", 1);
|
||||
setprop("/engines/engine[0]/ff-actual", 0);
|
||||
setprop("/engines/engine[1]/ff-actual", 0);
|
||||
setprop("/ECAM/Upper/EPR[0]", 0);
|
||||
setprop("/ECAM/Upper/EPR[1]", 0);
|
||||
setprop("/ECAM/Upper/EPRthr[0]", 0);
|
||||
setprop("/ECAM/Upper/ERPthr[1]", 0);
|
||||
setprop("/ECAM/Upper/EPRylim[0]", 0);
|
||||
setprop("/ECAM/Upper/EPRylim[1]", 0);
|
||||
setprop("/ECAM/Upper/EGT[0]", 0);
|
||||
setprop("/ECAM/Upper/EGT[1]", 0);
|
||||
setprop("/ECAM/Upper/N1[0]", 0);
|
||||
setprop("/ECAM/Upper/N1[1]", 0);
|
||||
|
||||
var canvas_upperECAM_base = {
|
||||
init: func(canvas_group, file) {
|
||||
var font_mapper = func(family, weight) {
|
||||
return "LiberationFonts/LiberationSans-Regular.ttf";
|
||||
};
|
||||
|
||||
canvas.parsesvg(canvas_group, file, {'font-mapper': font_mapper});
|
||||
|
||||
var svg_keys = me.getKeys();
|
||||
foreach(var key; svg_keys) {
|
||||
me[key] = canvas_group.getElementById(key);
|
||||
}
|
||||
|
||||
me.page = canvas_group;
|
||||
|
||||
return me;
|
||||
},
|
||||
getKeys: func() {
|
||||
return [];
|
||||
},
|
||||
update: func() {
|
||||
if (getprop("/systems/electrical/bus/ac1") >= 110 or getprop("/systems/electrical/bus/ac2") >= 110) {
|
||||
# Choose between CFM, IAE, and EIS versions
|
||||
upperECAM_iae_eis2.page.show();
|
||||
} else {
|
||||
upperECAM_iae_eis2.page.hide();
|
||||
}
|
||||
|
||||
settimer(func me.update(), 0.02);
|
||||
},
|
||||
updateBase: func() {
|
||||
# FOB
|
||||
me["FOB-LBS"].setText(sprintf("%7.0f", getprop("/consumables/fuel/total-fuel-lbs")));
|
||||
|
||||
# Left ECAM Messages
|
||||
me["ECAML1"].hide();
|
||||
me["ECAML2"].hide();
|
||||
me["ECAML3"].hide();
|
||||
me["ECAML4"].hide();
|
||||
me["ECAML5"].hide();
|
||||
me["ECAML6"].hide();
|
||||
me["ECAML7"].hide();
|
||||
me["ECAML8"].hide();
|
||||
},
|
||||
};
|
||||
|
||||
var canvas_upperECAM_iae_eis2 = {
|
||||
new: func(canvas_group, file) {
|
||||
var m = { parents: [canvas_upperECAM_iae_eis2 , canvas_upperECAM_base] };
|
||||
m.init(canvas_group, file);
|
||||
|
||||
return m;
|
||||
},
|
||||
getKeys: func() {
|
||||
return ["EPR1-needle","EPR1-thr","EPR1","EPR1-box","EPR1-scale","EPR1-scalenum","EPR1-XX","EPR1-XX2","EGT1-needle","EGT1","EGT1-scale","EGT1-box","EGT1-scale2","EGT1-scaletick","EGT1-XX","N11-needle","N11","N11-decpnt","N11-decimal","N11-scale",
|
||||
"N11-scale2","N11-scalenum","N11-XX","N21","N21-decpnt","N21-decimal","N21-XX","FF1","FF1-XX","FOB-LBS","ECAML1","ECAML2","ECAML3","ECAML4","ECAML5","ECAML6","ECAML7","ECAML8"];
|
||||
},
|
||||
update: func() {
|
||||
# EPR 1
|
||||
me["EPR1"].setText(sprintf("%1.3f", getprop("/engines/engine[0]/epr-actual")));
|
||||
|
||||
me["EPR1-needle"].setRotation((getprop("/ECAM/Upper/EPR[0]") + 90)*D2R);
|
||||
me["EPR1-thr"].setRotation((getprop("/ECAM/Upper/EPRthr[0]") + 90)*D2R);
|
||||
|
||||
if (getprop("/systems/fadec/eng1/epr") == 1) {
|
||||
me["EPR1-scale"].setColor(1,1,1);
|
||||
me["EPR1"].show();
|
||||
me["EPR1-needle"].show();
|
||||
me["EPR1-thr"].show();
|
||||
me["EPR1-scalenum"].show();
|
||||
me["EPR1-box"].show();
|
||||
me["EPR1-XX"].hide();
|
||||
me["EPR1-XX2"].hide();
|
||||
} else {
|
||||
me["EPR1-scale"].setColor(1,0.6,0);
|
||||
me["EPR1"].hide();
|
||||
me["EPR1-needle"].hide();
|
||||
me["EPR1-thr"].hide();
|
||||
me["EPR1-scalenum"].hide();
|
||||
me["EPR1-box"].hide();
|
||||
me["EPR1-XX"].show();
|
||||
me["EPR1-XX2"].show();
|
||||
}
|
||||
|
||||
# EGT 1
|
||||
me["EGT1"].setText(sprintf("%s", math.round(getprop("/engines/engine[0]/egt-actual"))));
|
||||
|
||||
me["EGT1-needle"].setRotation((getprop("/ECAM/Upper/EGT[0]") + 90)*D2R);
|
||||
|
||||
if (getprop("/systems/fadec/eng1/egt") == 1) {
|
||||
me["EGT1-scale"].setColor(1,1,1);
|
||||
me["EGT1-scale2"].setColor(1,0,0);
|
||||
me["EGT1"].show();
|
||||
me["EGT1-needle"].show();
|
||||
me["EGT1-scaletick"].show();
|
||||
me["EGT1-box"].show();
|
||||
me["EGT1-XX"].hide();
|
||||
} else {
|
||||
me["EGT1-scale"].setColor(1,0.6,0);
|
||||
me["EGT1-scale2"].setColor(1,0.6,0);
|
||||
me["EGT1"].hide();
|
||||
me["EGT1-needle"].hide();
|
||||
me["EGT1-scaletick"].hide();
|
||||
me["EGT1-box"].hide();
|
||||
me["EGT1-XX"].show();
|
||||
}
|
||||
|
||||
# N1 1
|
||||
me["N11"].setText(sprintf("%s", math.floor(getprop("/engines/engine[0]/n1") + 0.05)));
|
||||
me["N11-decimal"].setText(sprintf("%s", int(10*math.mod(getprop("/engines/engine[0]/n1") + 0.05,1))));
|
||||
|
||||
me["N11-needle"].setRotation((getprop("/ECAM/Upper/N1[0]") + 90)*D2R);
|
||||
|
||||
if (getprop("/systems/fadec/eng1/n1") == 1) {
|
||||
me["N11-scale"].setColor(1,1,1);
|
||||
me["N11-scale2"].setColor(1,0,0);
|
||||
me["N11"].show();
|
||||
me["N11-decimal"].show();
|
||||
me["N11-decpnt"].show();
|
||||
me["N11-needle"].show();
|
||||
me["N11-scalenum"].show();
|
||||
me["N11-XX"].hide();
|
||||
} else {
|
||||
me["N11-scale"].setColor(1,0.6,0);
|
||||
me["N11-scale2"].setColor(1,0.6,0);
|
||||
me["N11"].hide();
|
||||
me["N11-decimal"].hide();
|
||||
me["N11-decpnt"].hide();
|
||||
me["N11-needle"].hide();
|
||||
me["N11-scalenum"].hide();
|
||||
me["N11-XX"].show();
|
||||
}
|
||||
|
||||
# N2 1
|
||||
me["N21"].setText(sprintf("%s", math.floor(getprop("/engines/engine[0]/n2") + 0.05)));
|
||||
me["N21-decimal"].setText(sprintf("%s", int(10*math.mod(getprop("/engines/engine[0]/n2") + 0.05,1))));
|
||||
|
||||
if (getprop("/systems/fadec/eng1/n2") == 1) {
|
||||
me["N21"].show();
|
||||
me["N21-decimal"].show();
|
||||
me["N21-decpnt"].show();
|
||||
me["N21-XX"].hide();
|
||||
} else {
|
||||
me["N21"].hide();
|
||||
me["N21-decimal"].hide();
|
||||
me["N21-decpnt"].hide();
|
||||
me["N21-XX"].show();
|
||||
}
|
||||
|
||||
# FF1
|
||||
me["FF1"].setText(sprintf("%s", math.round(getprop("/engines/engine[0]/ff-actual"))));
|
||||
|
||||
if (getprop("/systems/fadec/eng1/ff") == 1) {
|
||||
me["FF1"].show();
|
||||
me["FF1-XX"].hide();
|
||||
} else {
|
||||
me["FF1"].hide();
|
||||
me["FF1-XX"].show();
|
||||
}
|
||||
|
||||
me.updateBase();
|
||||
|
||||
settimer(func me.update(), 0.02);
|
||||
},
|
||||
};
|
||||
|
||||
setlistener("sim/signals/fdm-initialized", func {
|
||||
upperECAM_display = canvas.new({
|
||||
"name": "upperECAM",
|
||||
"size": [1024, 1024],
|
||||
"view": [1024, 1024],
|
||||
"mipmapping": 1
|
||||
});
|
||||
upperECAM_display.addPlacement({"node": "uecam.screen"});
|
||||
var group_iae_eis2 = upperECAM_display.createGroup();
|
||||
|
||||
upperECAM_iae_eis2 = canvas_upperECAM_iae_eis2.new(group_iae_eis2, "Aircraft/A320Family/Models/Instruments/Upper-ECAM/res/iae-eis2.svg");
|
||||
|
||||
upperECAM_iae_eis2.update();
|
||||
canvas_upperECAM_base.update();
|
||||
});
|
||||
|
||||
var showUpperECAM = func {
|
||||
var dlg = canvas.Window.new([512, 512], "dialog").set("resize", 1);
|
||||
dlg.setCanvas(upperECAM_display);
|
||||
}
|
26
Models/Instruments/Upper-ECAM/Upper-ECAM.xml
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
#######################################
|
||||
# Copyright (c) A3XX Development Team #
|
||||
#######################################
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<path>res/Upper-ECAM.ac</path>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>uecam.screen</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<repeatable>false</repeatable>
|
||||
<binding>
|
||||
<command>nasal</command>
|
||||
<script>canvas_ecam.showUpperECAM();</script>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
</PropertyList>
|
23
Models/Instruments/Upper-ECAM/res/Upper-ECAM.ac
Normal file
|
@ -0,0 +1,23 @@
|
|||
AC3Db
|
||||
MATERIAL "buttonlights" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0.33 0.33 0.33 shi 32 trans 0
|
||||
OBJECT world
|
||||
kids 1
|
||||
OBJECT poly
|
||||
name "uecam.screen"
|
||||
loc 0.0024 0.000418402 0.000113871
|
||||
texture "screen.png"
|
||||
crease 30.000000
|
||||
numvert 4
|
||||
0 0.0791026 -0.0763524
|
||||
0 -0.0733913 -0.0763524
|
||||
0 -0.0733913 0.0761246
|
||||
0 0.0791026 0.0761246
|
||||
numsurf 1
|
||||
SURF 0x0
|
||||
mat 0
|
||||
refs 4
|
||||
0 1.00067 0.999407
|
||||
3 4.45843e-005 0.999407
|
||||
2 4.45843e-005 0.000756443
|
||||
1 1.00067 0.000756443
|
||||
kids 0
|
786
Models/Instruments/Upper-ECAM/res/iae-eis2.svg
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
Models/Instruments/Upper-ECAM/res/screen.png
Normal file
After Width: | Height: | Size: 629 B |
|
@ -14,13 +14,13 @@
|
|||
setprop("/position/gear-agl-ft", 0);
|
||||
setprop("/ECAM/noupdate", 0);
|
||||
setprop("/ECAM/donotrevert", 0);
|
||||
setprop("/ECAM/Lower/page", "eng");
|
||||
|
||||
######################################################
|
||||
# w = White, b = Blue, g = Green, a = Amber, r = Red #
|
||||
######################################################
|
||||
|
||||
var ECAMinit = func {
|
||||
MSGclr();
|
||||
ECAMloop.start();
|
||||
}
|
||||
|
||||
|
@ -45,6 +45,8 @@ var MSGclr = func {
|
|||
setprop("/ECAM/msg/line8c", "w");
|
||||
}
|
||||
|
||||
MSGclr();
|
||||
|
||||
var ECAMloop = maketimer(1, func {
|
||||
var noUpdate = getprop("/ECAM/noupdate");
|
||||
var doNotRevert = getprop("/ECAM/donotrevert");
|
||||
|
|
|
@ -4,20 +4,21 @@
|
|||
# Copyright (c) A3XX Development Team #
|
||||
#######################################
|
||||
|
||||
setprop("/systems/fadec/n1mode1", 0); # Doesn't do anything, just here for other logic #
|
||||
setprop("/systems/fadec/n1mode2", 0); # Doesn't do anything, just here for other logic #
|
||||
setprop("/systems/fadec/eng1/egt", 1);
|
||||
setprop("/systems/fadec/eng1/n1", 1);
|
||||
setprop("/systems/fadec/eng1/n2", 1);
|
||||
setprop("/systems/fadec/eng1/ff", 1);
|
||||
setprop("/systems/fadec/eng2/egt", 1);
|
||||
setprop("/systems/fadec/eng2/n1", 1);
|
||||
setprop("/systems/fadec/eng2/n2", 1);
|
||||
setprop("/systems/fadec/eng2/ff", 1);
|
||||
setprop("/systems/fadec/power-avail", 0);
|
||||
setprop("/systems/fadec/powered1", 0);
|
||||
setprop("/systems/fadec/powered2", 0);
|
||||
|
||||
setlistener("/sim/signals/fdm-initialized", func {
|
||||
setprop("/systems/fadec/n1mode1", 0); # Doesn't do anything, just here for other logic #
|
||||
setprop("/systems/fadec/n1mode2", 0); # Doesn't do anything, just here for other logic #
|
||||
setprop("/systems/fadec/eng1/egt", 1);
|
||||
setprop("/systems/fadec/eng1/n1", 1);
|
||||
setprop("/systems/fadec/eng1/n2", 1);
|
||||
setprop("/systems/fadec/eng1/ff", 1);
|
||||
setprop("/systems/fadec/eng2/egt", 1);
|
||||
setprop("/systems/fadec/eng2/n1", 1);
|
||||
setprop("/systems/fadec/eng2/n2", 1);
|
||||
setprop("/systems/fadec/eng2/ff", 1);
|
||||
setprop("/systems/fadec/power-avail", 0);
|
||||
setprop("/systems/fadec/powered1", 0);
|
||||
setprop("/systems/fadec/powered2", 0);
|
||||
fadecLoop.start();
|
||||
});
|
||||
|
||||
|
|
|
@ -4,24 +4,25 @@
|
|||
# Copyright (c) A3XX Development Team #
|
||||
#######################################
|
||||
|
||||
setprop("/controls/fadec/n1mode1", 0);
|
||||
setprop("/controls/fadec/n1mode2", 0);
|
||||
setprop("/systems/fadec/n1mode1", 0); # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
|
||||
setprop("/systems/fadec/n1mode2", 0); # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
|
||||
setprop("/systems/fadec/eng1/epr", 1);
|
||||
setprop("/systems/fadec/eng1/egt", 1);
|
||||
setprop("/systems/fadec/eng1/n1", 1);
|
||||
setprop("/systems/fadec/eng1/n2", 1);
|
||||
setprop("/systems/fadec/eng1/ff", 1);
|
||||
setprop("/systems/fadec/eng2/epr", 1);
|
||||
setprop("/systems/fadec/eng2/egt", 1);
|
||||
setprop("/systems/fadec/eng2/n1", 1);
|
||||
setprop("/systems/fadec/eng2/n2", 1);
|
||||
setprop("/systems/fadec/eng2/ff", 1);
|
||||
setprop("/systems/fadec/power-avail", 0);
|
||||
setprop("/systems/fadec/powered1", 0);
|
||||
setprop("/systems/fadec/powered2", 0);
|
||||
|
||||
setlistener("/sim/signals/fdm-initialized", func {
|
||||
setprop("/controls/fadec/n1mode1", 0);
|
||||
setprop("/controls/fadec/n1mode2", 0);
|
||||
setprop("/systems/fadec/n1mode1", 0); # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
|
||||
setprop("/systems/fadec/n1mode2", 0); # 0 == EPR, 1 == N1 Rated, 2 == N1 Unrated #
|
||||
setprop("/systems/fadec/eng1/epr", 1);
|
||||
setprop("/systems/fadec/eng1/egt", 1);
|
||||
setprop("/systems/fadec/eng1/n1", 1);
|
||||
setprop("/systems/fadec/eng1/n2", 1);
|
||||
setprop("/systems/fadec/eng1/ff", 1);
|
||||
setprop("/systems/fadec/eng2/epr", 1);
|
||||
setprop("/systems/fadec/eng2/egt", 1);
|
||||
setprop("/systems/fadec/eng2/n1", 1);
|
||||
setprop("/systems/fadec/eng2/n2", 1);
|
||||
setprop("/systems/fadec/eng2/ff", 1);
|
||||
setprop("/systems/fadec/power-avail", 0);
|
||||
setprop("/systems/fadec/powered1", 0);
|
||||
setprop("/systems/fadec/powered2", 0);
|
||||
fadecLoop.start();
|
||||
});
|
||||
|
||||
|
|
196
Systems/upper-ecam.xml
Normal file
|
@ -0,0 +1,196 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
#######################################
|
||||
# Copyright (c) A3XX Development Team #
|
||||
#######################################
|
||||
-->
|
||||
|
||||
<PropertyList>
|
||||
|
||||
<filter>
|
||||
<name>EPR 1</name>
|
||||
<type>gain</type>
|
||||
<gain>1</gain>
|
||||
<input>
|
||||
<condition>
|
||||
<not><property>/options/EIS2</property></not>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/epr-actual</property>
|
||||
<entry><ind>0.990</ind><dep>-135</dep></entry>
|
||||
<entry><ind>1.000</ind><dep>-125</dep></entry>
|
||||
<entry><ind>1.200</ind><dep> -50</dep></entry>
|
||||
<entry><ind>1.400</ind><dep> 16</dep></entry>
|
||||
<entry><ind>1.600</ind><dep> 82</dep></entry>
|
||||
<entry><ind>1.650</ind><dep> 98</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<input>
|
||||
<condition>
|
||||
<property>/options/EIS2</property>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/epr-actual</property>
|
||||
<entry><ind>0.990</ind><dep>-135</dep></entry>
|
||||
<entry><ind>1.000</ind><dep>-125</dep></entry>
|
||||
<entry><ind>1.200</ind><dep> -50</dep></entry>
|
||||
<entry><ind>1.400</ind><dep> 16</dep></entry>
|
||||
<entry><ind>1.600</ind><dep> 82</dep></entry>
|
||||
<entry><ind>1.650</ind><dep> 98</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/ECAM/Upper/EPR[0]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>EPR THR 1</name>
|
||||
<type>gain</type>
|
||||
<gain>1</gain>
|
||||
<input>
|
||||
<condition>
|
||||
<not><property>/options/EIS2</property></not>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/epr-cmd</property>
|
||||
<entry><ind>0.990</ind><dep>-135</dep></entry>
|
||||
<entry><ind>1.000</ind><dep>-125</dep></entry>
|
||||
<entry><ind>1.200</ind><dep> -50</dep></entry>
|
||||
<entry><ind>1.400</ind><dep> 16</dep></entry>
|
||||
<entry><ind>1.600</ind><dep> 82</dep></entry>
|
||||
<entry><ind>1.650</ind><dep> 98</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<input>
|
||||
<condition>
|
||||
<property>/options/EIS2</property>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/epr-cmd</property>
|
||||
<entry><ind>0.990</ind><dep>-135</dep></entry>
|
||||
<entry><ind>1.000</ind><dep>-125</dep></entry>
|
||||
<entry><ind>1.200</ind><dep> -50</dep></entry>
|
||||
<entry><ind>1.400</ind><dep> 16</dep></entry>
|
||||
<entry><ind>1.600</ind><dep> 82</dep></entry>
|
||||
<entry><ind>1.650</ind><dep> 98</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/ECAM/Upper/EPRthr[0]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>EPR THR 1</name>
|
||||
<type>gain</type>
|
||||
<gain>1</gain>
|
||||
<input>
|
||||
<condition>
|
||||
<not><property>/options/EIS2</property></not>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/epr-cmd</property>
|
||||
<entry><ind>0.990</ind><dep>-135</dep></entry>
|
||||
<entry><ind>1.000</ind><dep>-125</dep></entry>
|
||||
<entry><ind>1.200</ind><dep> -50</dep></entry>
|
||||
<entry><ind>1.400</ind><dep> 16</dep></entry>
|
||||
<entry><ind>1.600</ind><dep> 82</dep></entry>
|
||||
<entry><ind>1.650</ind><dep> 98</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<input>
|
||||
<condition>
|
||||
<property>/options/EIS2</property>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/epr-cmd</property>
|
||||
<entry><ind>0.990</ind><dep>-135</dep></entry>
|
||||
<entry><ind>1.000</ind><dep>-125</dep></entry>
|
||||
<entry><ind>1.200</ind><dep> -50</dep></entry>
|
||||
<entry><ind>1.400</ind><dep> 16</dep></entry>
|
||||
<entry><ind>1.600</ind><dep> 82</dep></entry>
|
||||
<entry><ind>1.650</ind><dep> 98</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/ECAM/Upper/EPRylim[0]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>EGT 1</name>
|
||||
<type>gain</type>
|
||||
<gain>1</gain>
|
||||
<input>
|
||||
<condition>
|
||||
<not><property>/options/EIS2</property></not>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/egt-actual</property>
|
||||
<entry><ind> 0</ind><dep>-90</dep></entry>
|
||||
<entry><ind>400</ind><dep> 0</dep></entry>
|
||||
<entry><ind>800</ind><dep> 90</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<input>
|
||||
<condition>
|
||||
<property>/options/EIS2</property>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/egt-actual</property>
|
||||
<entry><ind> 0</ind><dep>-90</dep></entry>
|
||||
<entry><ind>400</ind><dep> 0</dep></entry>
|
||||
<entry><ind>800</ind><dep> 90</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/ECAM/Upper/EGT[0]</output>
|
||||
</filter>
|
||||
|
||||
<filter>
|
||||
<name>N1 1</name>
|
||||
<type>gain</type>
|
||||
<gain>1</gain>
|
||||
<input>
|
||||
<condition>
|
||||
<not><property>/options/EIS2</property></not>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/n1</property>
|
||||
<entry><ind> 22.4</ind><dep>-107</dep></entry>
|
||||
<entry><ind> 40.0</ind><dep> -61</dep></entry>
|
||||
<entry><ind>100.0</ind><dep> 65</dep></entry>
|
||||
<entry><ind>110.0</ind><dep> 90</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<input>
|
||||
<condition>
|
||||
<property>/options/EIS2</property>
|
||||
</condition>
|
||||
<expression>
|
||||
<table>
|
||||
<property>/engines/engine[0]/n1</property>
|
||||
<entry><ind> 22.4</ind><dep>-107</dep></entry>
|
||||
<entry><ind> 40.0</ind><dep> -61</dep></entry>
|
||||
<entry><ind>100.0</ind><dep> 65</dep></entry>
|
||||
<entry><ind>110.0</ind><dep> 90</dep></entry>
|
||||
</table>
|
||||
</expression>
|
||||
</input>
|
||||
<output>/ECAM/Upper/N1[0]</output>
|
||||
</filter>
|
||||
|
||||
</PropertyList>
|