Merge branch 'ECAM-sys-develop' into dev
This commit is contained in:
commit
c0b991efd1
13 changed files with 1126 additions and 453 deletions
|
@ -1548,6 +1548,9 @@
|
|||
<canvas_mcdu>
|
||||
<file>Aircraft/IDG-A32X/Models/Instruments/MCDU/MCDU.nas</file>
|
||||
</canvas_mcdu>
|
||||
<ecam>
|
||||
<file>Aircraft/IDG-A32X/Nasal/ECAM-controller.nas</file>
|
||||
</ecam>
|
||||
<icing>
|
||||
<file>Aircraft/IDG-A32X/Nasal/icing.nas</file>
|
||||
</icing>
|
||||
|
|
|
@ -391,8 +391,6 @@
|
|||
<object-name>ecam_wheel_led</object-name>
|
||||
<object-name>exped_led</object-name>
|
||||
<object-name>hdg-text-test</object-name>
|
||||
<object-name>master_caution_on</object-name>
|
||||
<object-name>master_warning_on</object-name>
|
||||
<object-name>qnh-test</object-name>
|
||||
<object-name>rudder-trim-test</object-name>
|
||||
<object-name>spd-text-test</object-name>
|
||||
|
@ -4724,6 +4722,81 @@
|
|||
<factor-prop>controls/lighting/fcu-panel-norm</factor-prop>
|
||||
</emission>
|
||||
</animation>
|
||||
|
||||
<!-- Master Warning and Caution -->
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>master_warning_on</object-name>
|
||||
<condition>
|
||||
<or>
|
||||
<equals>
|
||||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>ECAM/warnings/master-warning-light</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</or>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>select</type>
|
||||
<object-name>master_caution_on</object-name>
|
||||
<condition>
|
||||
<or>
|
||||
<equals>
|
||||
<property>controls/switches/annun-test</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
<equals>
|
||||
<property>ECAM/warnings/master-caution-light</property>
|
||||
<value>1</value>
|
||||
</equals>
|
||||
</or>
|
||||
</condition>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>master_warning</object-name>
|
||||
<object-name>master_warning_on</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</condition>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/warnings/master-warning-light</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<animation>
|
||||
<type>pick</type>
|
||||
<object-name>master_caution</object-name>
|
||||
<object-name>master_caution_on</object-name>
|
||||
<action>
|
||||
<button>0</button>
|
||||
<binding>
|
||||
<condition>
|
||||
<greater-than-equals>
|
||||
<property>systems/electrical/bus/dc-ess</property>
|
||||
<value>25</value>
|
||||
</greater-than-equals>
|
||||
</condition>
|
||||
<command>property-assign</command>
|
||||
<property>ECAM/warnings/master-caution-light</property>
|
||||
<value>0</value>
|
||||
</binding>
|
||||
</action>
|
||||
</animation>
|
||||
|
||||
<!-- Overhead Panel-2 lighting -->
|
||||
<animation>
|
||||
|
|
|
@ -147,100 +147,116 @@ var canvas_upperECAM_base = {
|
|||
me["ECAML7"].setText(sprintf("%s", getprop("/ECAM/msg/line7")));
|
||||
me["ECAML8"].setText(sprintf("%s", getprop("/ECAM/msg/line8")));
|
||||
|
||||
if (getprop("/ECAM/msg/line1c") == "w") {
|
||||
if (getprop("/ECAM/msg/linec1") == "w") {
|
||||
me["ECAML1"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/msg/line1c") == "b") {
|
||||
} else if (getprop("/ECAM/msg/linec1") == "b") {
|
||||
me["ECAML1"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/msg/line1c") == "g") {
|
||||
} else if (getprop("/ECAM/msg/linec1") == "g") {
|
||||
me["ECAML1"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/msg/line1c") == "a") {
|
||||
} else if (getprop("/ECAM/msg/linec1") == "a") {
|
||||
me["ECAML1"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/msg/line1c") == "r") {
|
||||
} else if (getprop("/ECAM/msg/linec1") == "r") {
|
||||
me["ECAML1"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/msg/linec1") == "m") {
|
||||
me["ECAML1"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/msg/line2c") == "w") {
|
||||
if (getprop("/ECAM/msg/linec2") == "w") {
|
||||
me["ECAML2"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/msg/line2c") == "b") {
|
||||
} else if (getprop("/ECAM/msg/linec2") == "b") {
|
||||
me["ECAML2"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/msg/line2c") == "g") {
|
||||
} else if (getprop("/ECAM/msg/linec2") == "g") {
|
||||
me["ECAML2"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/msg/line2c") == "a") {
|
||||
} else if (getprop("/ECAM/msg/linec2") == "a") {
|
||||
me["ECAML2"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/msg/line2c") == "r") {
|
||||
} else if (getprop("/ECAM/msg/linec2") == "r") {
|
||||
me["ECAML2"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/msg/linec2") == "m") {
|
||||
me["ECAML2"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/msg/line3c") == "w") {
|
||||
if (getprop("/ECAM/msg/linec3") == "w") {
|
||||
me["ECAML3"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/msg/line3c") == "b") {
|
||||
} else if (getprop("/ECAM/msg/linec3") == "b") {
|
||||
me["ECAML3"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/msg/line3c") == "g") {
|
||||
} else if (getprop("/ECAM/msg/linec3") == "g") {
|
||||
me["ECAML3"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/msg/line3c") == "a") {
|
||||
} else if (getprop("/ECAM/msg/linec3") == "a") {
|
||||
me["ECAML3"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/msg/line3c") == "r") {
|
||||
} else if (getprop("/ECAM/msg/linec3") == "r") {
|
||||
me["ECAML3"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/msg/linec3") == "m") {
|
||||
me["ECAML3"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/msg/line4c") == "w") {
|
||||
if (getprop("/ECAM/msg/linec4") == "w") {
|
||||
me["ECAML4"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/msg/line4c") == "b") {
|
||||
} else if (getprop("/ECAM/msg/linec4") == "b") {
|
||||
me["ECAML4"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/msg/line4c") == "g") {
|
||||
} else if (getprop("/ECAM/msg/linec4") == "g") {
|
||||
me["ECAML4"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/msg/line4c") == "a") {
|
||||
} else if (getprop("/ECAM/msg/linec4") == "a") {
|
||||
me["ECAML4"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/msg/line4c") == "r") {
|
||||
} else if (getprop("/ECAM/msg/linec4") == "r") {
|
||||
me["ECAML4"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/msg/linec4") == "m") {
|
||||
me["ECAML4"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/msg/line5c") == "w") {
|
||||
if (getprop("/ECAM/msg/linec5") == "w") {
|
||||
me["ECAML5"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/msg/line5c") == "b") {
|
||||
} else if (getprop("/ECAM/msg/linec5") == "b") {
|
||||
me["ECAML5"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/msg/line5c") == "g") {
|
||||
} else if (getprop("/ECAM/msg/linec5") == "g") {
|
||||
me["ECAML5"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/msg/line5c") == "a") {
|
||||
} else if (getprop("/ECAM/msg/linec5") == "a") {
|
||||
me["ECAML5"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/msg/line5c") == "r") {
|
||||
} else if (getprop("/ECAM/msg/linec5") == "r") {
|
||||
me["ECAML5"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/msg/linec5") == "m") {
|
||||
me["ECAML5"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/msg/line6c") == "w") {
|
||||
if (getprop("/ECAM/msg/linec6") == "w") {
|
||||
me["ECAML6"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/msg/line6c") == "b") {
|
||||
} else if (getprop("/ECAM/msg/linec6") == "b") {
|
||||
me["ECAML6"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/msg/line6c") == "g") {
|
||||
} else if (getprop("/ECAM/msg/linec6") == "g") {
|
||||
me["ECAML6"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/msg/line6c") == "a") {
|
||||
} else if (getprop("/ECAM/msg/linec6") == "a") {
|
||||
me["ECAML6"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/msg/line6c") == "r") {
|
||||
} else if (getprop("/ECAM/msg/linec6") == "r") {
|
||||
me["ECAML6"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/msg/linec6") == "m") {
|
||||
me["ECAML6"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/msg/line7c") == "w") {
|
||||
if (getprop("/ECAM/msg/linec7") == "w") {
|
||||
me["ECAML7"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/msg/line7c") == "b") {
|
||||
} else if (getprop("/ECAM/msg/linec7") == "b") {
|
||||
me["ECAML7"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/msg/line7c") == "g") {
|
||||
} else if (getprop("/ECAM/msg/linec7") == "g") {
|
||||
me["ECAML7"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/msg/line7c") == "a") {
|
||||
} else if (getprop("/ECAM/msg/linec7") == "a") {
|
||||
me["ECAML7"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/msg/line7c") == "r") {
|
||||
} else if (getprop("/ECAM/msg/linec7") == "r") {
|
||||
me["ECAML7"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/msg/linec7") == "m") {
|
||||
me["ECAML7"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/msg/line8c") == "w") {
|
||||
if (getprop("/ECAM/msg/linec8") == "w") {
|
||||
me["ECAML8"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/msg/line8c") == "b") {
|
||||
} else if (getprop("/ECAM/msg/linec8") == "b") {
|
||||
me["ECAML8"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/msg/line8c") == "g") {
|
||||
} else if (getprop("/ECAM/msg/linec8") == "g") {
|
||||
me["ECAML8"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/msg/line8c") == "a") {
|
||||
} else if (getprop("/ECAM/msg/linec8") == "a") {
|
||||
me["ECAML8"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/msg/line8c") == "r") {
|
||||
} else if (getprop("/ECAM/msg/linec8") == "r") {
|
||||
me["ECAML8"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/msg/linec8") == "m") {
|
||||
me["ECAML8"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
me["TO_Memo"].hide();
|
||||
|
@ -342,6 +358,136 @@ var canvas_upperECAM_base = {
|
|||
me["TO_Memo"].hide();
|
||||
me["LDG_Memo"].hide();
|
||||
}
|
||||
|
||||
# Right ECAM Messages
|
||||
if (getprop("/ECAM/right-msg") == "MSG") {
|
||||
me["ECAMR1"].setText(sprintf("%s", getprop("/ECAM/rightmsg/line1")));
|
||||
me["ECAMR2"].setText(sprintf("%s", getprop("/ECAM/rightmsg/line2")));
|
||||
me["ECAMR3"].setText(sprintf("%s", getprop("/ECAM/rightmsg/line3")));
|
||||
me["ECAMR4"].setText(sprintf("%s", getprop("/ECAM/rightmsg/line4")));
|
||||
me["ECAMR5"].setText(sprintf("%s", getprop("/ECAM/rightmsg/line5")));
|
||||
me["ECAMR6"].setText(sprintf("%s", getprop("/ECAM/rightmsg/line6")));
|
||||
me["ECAMR7"].setText(sprintf("%s", getprop("/ECAM/rightmsg/line7")));
|
||||
me["ECAMR8"].setText(sprintf("%s", getprop("/ECAM/rightmsg/line8")));
|
||||
|
||||
if (getprop("/ECAM/rightmsg/linec1") == "w") {
|
||||
me["ECAMR1"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/rightmsg/linec1") == "b") {
|
||||
me["ECAMR1"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/rightmsg/linec1") == "g") {
|
||||
me["ECAMR1"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/rightmsg/linec1") == "a") {
|
||||
me["ECAMR1"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec1") == "r") {
|
||||
me["ECAMR1"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec1") == "m") {
|
||||
me["ECAMR1"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/rightmsg/linec2") == "w") {
|
||||
me["ECAMR2"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/rightmsg/linec2") == "b") {
|
||||
me["ECAMR2"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/rightmsg/linec2") == "g") {
|
||||
me["ECAMR2"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/rightmsg/linec2") == "a") {
|
||||
me["ECAMR2"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec2") == "r") {
|
||||
me["ECAMR2"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec2") == "m") {
|
||||
me["ECAMR2"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/rightmsg/linec3") == "w") {
|
||||
me["ECAMR3"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/rightmsg/linec3") == "b") {
|
||||
me["ECAMR3"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/rightmsg/linec3") == "g") {
|
||||
me["ECAMR3"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/rightmsg/linec3") == "a") {
|
||||
me["ECAMR3"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec3") == "r") {
|
||||
me["ECAMR3"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec3") == "m") {
|
||||
me["ECAMR3"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/rightmsg/linec4") == "w") {
|
||||
me["ECAMR4"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/rightmsg/linec4") == "b") {
|
||||
me["ECAMR4"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/rightmsg/linec4") == "g") {
|
||||
me["ECAMR4"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/rightmsg/linec4") == "a") {
|
||||
me["ECAMR4"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec4") == "r") {
|
||||
me["ECAMR4"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec4") == "m") {
|
||||
me["ECAMR4"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/rightmsg/linec5") == "w") {
|
||||
me["ECAMR5"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/rightmsg/linec5") == "b") {
|
||||
me["ECAMR5"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/rightmsg/linec5") == "g") {
|
||||
me["ECAMR5"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/rightmsg/linec5") == "a") {
|
||||
me["ECAMR5"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec5") == "r") {
|
||||
me["ECAMR5"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec5") == "m") {
|
||||
me["ECAMR5"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/rightmsg/linec6") == "w") {
|
||||
me["ECAMR6"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/rightmsg/linec6") == "b") {
|
||||
me["ECAMR6"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/rightmsg/linec6") == "g") {
|
||||
me["ECAMR6"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/rightmsg/linec6") == "a") {
|
||||
me["ECAMR6"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec6") == "r") {
|
||||
me["ECAMR6"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec6") == "m") {
|
||||
me["ECAMR6"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/rightmsg/linec7") == "w") {
|
||||
me["ECAMR7"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/rightmsg/linec7") == "b") {
|
||||
me["ECAMR7"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/rightmsg/linec7") == "g") {
|
||||
me["ECAMR7"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/rightmsg/linec7") == "a") {
|
||||
me["ECAMR7"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec7") == "r") {
|
||||
me["ECAMR7"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec7") == "m") {
|
||||
me["ECAMR7"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/rightmsg/linec8") == "w") {
|
||||
me["ECAMR8"].setColor(0.8078,0.8039,0.8078);
|
||||
} else if (getprop("/ECAM/rightmsg/linec8") == "b") {
|
||||
me["ECAMR8"].setColor(0.0901,0.6039,0.7176);
|
||||
} else if (getprop("/ECAM/rightmsg/linec8") == "g") {
|
||||
me["ECAMR8"].setColor(0.0509,0.7529,0.2941);
|
||||
} else if (getprop("/ECAM/rightmsg/linec8") == "a") {
|
||||
me["ECAMR8"].setColor(0.7333,0.3803,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec8") == "r") {
|
||||
me["ECAMR8"].setColor(1,0,0);
|
||||
} else if (getprop("/ECAM/rightmsg/linec8") == "m") {
|
||||
me["ECAMR8"].setColor(0.6901,0.3333,0.7450);
|
||||
}
|
||||
|
||||
me["ECAM_Right"].show();
|
||||
} else {
|
||||
me["ECAM_Right"].hide();
|
||||
me["TO_Memo"].hide();
|
||||
me["LDG_Memo"].hide();
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -356,7 +502,7 @@ var canvas_upperECAM_cfm_eis2 = {
|
|||
return ["N11-needle","N11-thr","N11-ylim","N11","N11-decpnt","N11-decimal","N11-box","N11-scale","N11-scale2","N11-scaletick","N11-scalenum","N11-XX","N11-XX2","N11-XX-box","EGT1-needle","EGT1","EGT1-scale","EGT1-box","EGT1-scale2","EGT1-scaletick",
|
||||
"EGT1-XX","N21","N21-decpnt","N21-decimal","N21-XX","FF1","FF1-XX","N12-needle","N12-thr","N12-ylim","N12","N12-decpnt","N12-decimal","N12-box","N12-scale","N12-scale2","N12-scaletick","N12-scalenum","N12-XX","N12-XX2","N12-XX-box","EGT2-needle","EGT2",
|
||||
"EGT2-scale","EGT2-box","EGT2-scale2","EGT2-scaletick","EGT2-XX","N22","N22-decpnt","N22-decimal","N22-XX","FF2","FF2-XX","FOB-LBS","FlapTxt","FlapDots","N1Lim-mode","N1Lim","N1Lim-decpnt","N1Lim-decimal","N1Lim-percent","N1Lim-XX","N1Lim-XX2","REV1",
|
||||
"REV1-box","REV2","REV2-box","ECAM_Left","ECAML1","ECAML2","ECAML3","ECAML4","ECAML5","ECAML6","ECAML7","ECAML8","TO_Memo","TO_Autobrake","TO_Signs","TO_Spoilers","TO_Flaps","TO_Config","TO_Autobrake_B","TO_Signs_B","TO_Spoilers_B","TO_Flaps_B",
|
||||
"REV1-box","REV2","REV2-box","ECAM_Left","ECAML1","ECAML2","ECAML3","ECAML4","ECAML5","ECAML6","ECAML7","ECAML8","ECAMR1", "ECAMR2", "ECAMR3", "ECAMR4", "ECAMR5", "ECAMR6", "ECAMR7", "ECAMR8", "ECAM_Right", "TO_Memo","TO_Autobrake","TO_Signs","TO_Spoilers","TO_Flaps","TO_Config","TO_Autobrake_B","TO_Signs_B","TO_Spoilers_B","TO_Flaps_B",
|
||||
"TO_Config_B","LDG_Memo","LDG_Gear","LDG_Signs","LDG_Spoilers","LDG_Flaps","LDG_Gear_B","LDG_Signs_B","LDG_Spoilers_B","LDG_Flaps_B","LDG_Flaps_B3"];
|
||||
},
|
||||
update: func() {
|
||||
|
@ -583,7 +729,7 @@ var canvas_upperECAM_iae_eis2 = {
|
|||
"N11-needle","N11-thr","N11-ylim","N11","N11-decpnt","N11-decimal","N11-scale","N11-scale2","N11-scaletick","N11-scalenum","N11-XX","N21","N21-decpnt","N21-decimal","N21-XX","FF1","FF1-XX","EPR2-needle","EPR2-thr","EPR2-ylim","EPR2","EPR2-decpnt",
|
||||
"EPR2-decimal","EPR2-box","EPR2-scale","EPR2-scaletick","EPR2-scalenum","EPR2-XX","EPR2-XX2","EGT2-needle","EGT2","EGT2-scale","EGT2-scale2","EGT2-box","EGT2-scaletick","EGT2-XX","N12-needle","N12-thr","N12-ylim","N12","N12-decpnt","N12-decimal",
|
||||
"N12-scale","N12-scale2","N12-scaletick","N12-scalenum","N12-XX","N22","N22-decpnt","N22-decimal","N22-XX","FF2","FF2-XX","FOB-LBS","FlapTxt","FlapDots","EPRLim-mode","EPRLim","EPRLim-decpnt","EPRLim-decimal","EPRLim-XX","EPRLim-XX2","REV1","REV1-box",
|
||||
"REV2","REV2-box","ECAM_Left","ECAML1","ECAML2","ECAML3","ECAML4","ECAML5","ECAML6","ECAML7","ECAML8","TO_Memo","TO_Autobrake","TO_Signs","TO_Spoilers","TO_Flaps","TO_Config","TO_Autobrake_B","TO_Signs_B","TO_Spoilers_B","TO_Flaps_B","TO_Config_B",
|
||||
"REV2","REV2-box","ECAM_Left","ECAML1","ECAML2","ECAML3","ECAML4","ECAML5","ECAML6","ECAML7","ECAML8", "ECAMR1", "ECAMR2", "ECAMR3", "ECAMR4", "ECAMR5", "ECAMR6", "ECAMR7", "ECAMR8", "ECAM_Right", "TO_Memo","TO_Autobrake","TO_Signs","TO_Spoilers","TO_Flaps","TO_Config","TO_Autobrake_B","TO_Signs_B","TO_Spoilers_B","TO_Flaps_B","TO_Config_B",
|
||||
"LDG_Memo","LDG_Gear","LDG_Signs","LDG_Spoilers","LDG_Flaps","LDG_Gear_B","LDG_Signs_B","LDG_Spoilers_B","LDG_Flaps_B","LDG_Flaps_B3"];
|
||||
},
|
||||
update: func() {
|
||||
|
|
File diff suppressed because it is too large
Load diff
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 112 KiB |
File diff suppressed because it is too large
Load diff
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 135 KiB |
342
Nasal/ECAM-controller.nas
Normal file
342
Nasal/ECAM-controller.nas
Normal file
|
@ -0,0 +1,342 @@
|
|||
# A3XX Electronic Centralised Aircraft Monitoring System
|
||||
# Jonathan Redpath (legoboyvdlp)
|
||||
|
||||
##############################################
|
||||
# Copyright (c) Joshua Davidson (it0uchpods) #
|
||||
##############################################
|
||||
|
||||
# Colors:
|
||||
# 1 - Red, 2 - Amber, 3 - Cyan 4 - Green 5 - White
|
||||
|
||||
# Priority: 1 - LEVEL 3 2 - LEVEL 2 3 - LEVEL 1 4 - LEVEL 0 5 - MEMO
|
||||
# LEVEL 3 has priority over all other warnings
|
||||
# LEVEL 2 has priority over 1 and 0
|
||||
# LEVEL 1 has priority over 0
|
||||
|
||||
# LEVEL 3 Messages Priority:
|
||||
# Red visual warning, repetitive chime or sound
|
||||
# 1 Stall
|
||||
# 2 Over speed
|
||||
# 3 Engine dual failure
|
||||
# 4 Engine fire
|
||||
# 5 APU fire
|
||||
# 6 Takeoff configuration
|
||||
# 7 Sidestick fault
|
||||
# 8 Excessive cabin altitude
|
||||
# 9 Engine oil lo pressure
|
||||
# 10 L + R Elevator fault
|
||||
# 11 Landing gear
|
||||
# 12 Autopilot disconnection
|
||||
# 13 Auto land
|
||||
# 14 Smoke
|
||||
# 15 Emergency configuration
|
||||
# 16 Dual hydraulic failure
|
||||
|
||||
# LEVEL 2 Messages:
|
||||
# Amber warning, single chime
|
||||
|
||||
# LEVEL 1 Messages:
|
||||
# Amber warning, no chime
|
||||
|
||||
# LEVEL 0 Messages:
|
||||
# No visual warning or chime: ECAM blue, green, or white message
|
||||
|
||||
# TYPES: Independent, Primary and Secondary, Status, and MEMO
|
||||
|
||||
# Operation: FWC receives electrical boolean or numeric signals, from the systems, and outputs a message, audible warning, or visual alert
|
||||
|
||||
# Electrical Connection: FWC1 is controlled by AC ESS, FWC2 by AC BUS 2
|
||||
|
||||
# Sounds: reduce volume by 6DB is engines are off
|
||||
|
||||
# ARINC 429: 100kb/s (high speed)
|
||||
|
||||
# PHASE: /FMGC/status/phase
|
||||
|
||||
# DISPLAY: 1 - EWD 2 - MEMO 3 - STATUS
|
||||
|
||||
# commented lines of logic are waiting for proper FMGC warning phases
|
||||
var num_lines = 6;
|
||||
var msg = nil;
|
||||
var spacer = nil;
|
||||
var line = nil;
|
||||
var right_line = nil;
|
||||
var wow = getprop("/gear/gear[1]/wow");
|
||||
setprop("/ECAM/warnings/master-warning-light", 0);
|
||||
setprop("/ECAM/warnings/master-caution-light", 0);
|
||||
|
||||
var warning = {
|
||||
msg: "",
|
||||
active: 0,
|
||||
colour: "",
|
||||
aural: "",
|
||||
light: "",
|
||||
noRepeat: 0,
|
||||
new: func(msg,active,colour,aural,light,noRepeat) {
|
||||
|
||||
var t = {parents:[warning]};
|
||||
|
||||
t.msg = msg;
|
||||
t.active = active;
|
||||
t.colour = colour;
|
||||
t.aural = aural;
|
||||
t.light = light;
|
||||
t.noRepeat = noRepeat;
|
||||
|
||||
return t
|
||||
|
||||
},
|
||||
write: func() {
|
||||
var line = 1;
|
||||
while (getprop("/ECAM/msg/line" ~ line) != "") {
|
||||
line = line + 1; # go to next line until empty line
|
||||
}
|
||||
|
||||
# if (getprop("/ECAM/msg/line" ~ line) != me.msg)
|
||||
if (getprop("/ECAM/msg/line" ~ line) == "" and me.active == 1 and me.msg != "") { # at empty line. Also checks if message is not blank to allow for some warnings with no displayed msg, eg stall
|
||||
setprop("/ECAM/msg/line" ~ line, me.msg);
|
||||
setprop("/ECAM/msg/linec" ~ line, me.colour);
|
||||
}
|
||||
},
|
||||
warnlight: func() {
|
||||
if (me.light != "none" and me.noRepeat == 0 and me.active == 1) { # only toggle light once per message, allows canceling
|
||||
setprop("/ECAM/warnings/master-"~me.light~"-light", 1);
|
||||
me.noRepeat = 1;
|
||||
}
|
||||
},
|
||||
sound: func() {
|
||||
if (me.active and me.aural != "none" and getprop("/sim/sound/warnings/"~me.aural) != 1) {
|
||||
setprop("/sim/sound/warnings/"~me.aural, 1);
|
||||
} else if (!me.active or me.aural == "none") {
|
||||
if (getprop("/sim/sound/warnings/"~me.aural) == 1) {
|
||||
setprop("/sim/sound/warnings/"~me.aural, 0);
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var memo = {
|
||||
msg: "",
|
||||
active: 0,
|
||||
colour: "",
|
||||
new: func(msg,active,colour) {
|
||||
|
||||
var t = {parents:[memo]};
|
||||
|
||||
t.msg = msg;
|
||||
t.active = active;
|
||||
t.colour = colour;
|
||||
|
||||
return t
|
||||
|
||||
},
|
||||
write: func() {
|
||||
var right_line = 1;
|
||||
while (getprop("/ECAM/rightmsg/line" ~ right_line) != "") {
|
||||
right_line = right_line + 1; # go to next line until empty line
|
||||
}
|
||||
|
||||
if (getprop("/ECAM/rightmsg/line" ~ right_line) == "" and me.active == 1) { # at empty line
|
||||
setprop("/ECAM/rightmsg/line" ~ right_line, me.msg);
|
||||
setprop("/ECAM/rightmsg/linec" ~ right_line, me.colour);
|
||||
}
|
||||
},
|
||||
};
|
||||
# messages logic and added to arrays
|
||||
|
||||
var warnings = std.Vector.new([
|
||||
var lg_not_dn = warning.new(msg: "L/G GEAR NOT DOWN", active: 0, colour: "r", aural: "crc", light: "warning", noRepeat: 0),
|
||||
var park_brk_on = warning.new(msg: "PARK BRK ON", active: 0, colour: "a", aural: "chime", light: "caution", noRepeat: 0)
|
||||
]);
|
||||
|
||||
var memos = std.Vector.new([
|
||||
var to_inhibit = memo.new(msg: "T.O. INHIBIT", active: 0, colour: "m"),
|
||||
var ldg_inhibit = memo.new(msg: "LDG INHIBIT", active: 0, colour: "m"),
|
||||
var spd_brk = memo.new(msg: "SPEED BRK", active: 0, colour: "g"),
|
||||
var fob_3T = memo.new(msg: "FOB BELOW 3T", active: 0, colour: "g"),
|
||||
var emer_gen = memo.new(msg: "EMER GEN", active: 0, colour: "g"),
|
||||
var rat = memo.new(msg: "RAT OUT", active: 0, colour: "g"),
|
||||
var gnd_splrs = memo.new(msg: "GND SPLRS ARMED", active: 0, colour: "g"),
|
||||
var park_brk = memo.new(msg: "PARK BRK", active: 0, colour: "g"),
|
||||
var refuelg = memo.new(msg: "REFUELG", active: 0, colour: "g"),
|
||||
var ram_air = memo.new(msg: "RAM AIR ON", active: 0, colour: "g"),
|
||||
var ptu = memo.new(msg: "HYD PTU", active: 0, colour: "g"),
|
||||
var eng_aice = memo.new(msg: "ENG A.ICE", active: 0, colour: "g"),
|
||||
var wing_aice = memo.new(msg: "WING A.ICE", active: 0, colour: "g"),
|
||||
var fuelx = memo.new(msg: "FUEL X FEED", active: 0, colour: "g")
|
||||
]);
|
||||
|
||||
|
||||
var messages_priority_3 = func {
|
||||
if (getprop("/controls/flight/flap-pos") > 2 and getprop("/position/gear-agl-ft") < 750 and getprop("/gear/gear[1]/position-norm") != 1 and getprop("/FMGC/status/phase") == 5) {
|
||||
# if ((getprop("/controls/flight/flap-pos") > 2 and getprop("/position/gear-agl-ft") < 750 and getprop("/gear/gear[1]/position-norm") != 1 and (getprop("/FMGC/status/phase") != 3 and getprop("/FMGC/status/phase") != 4 and getprop("/FMGC/status/phase") != 5)) or ((getprop("/engines/engine[0]/n1-actual") < 75.0 and getprop("/engines/engine[1]/n1-actual") < 75.0) and getprop("/position/gear-agl-ft") < 750 and getprop("/gear/gear[1]/position-norm") != 1 and (getprop("/FMGC/status/phase") != 3 and getprop("/FMGC/status/phase") != 4 and getprop("/FMGC/status/phase") != 5 and getprop("/FMGC/status/phase") != 6)) or (((getprop("/engines/engine[0]/n1-actual") < 77.0 and getprop("/controls/engines/engine[1]/cutoff-switch") == 0) or (getprop("/engines/engine[1]/n1-actual") < 77.0 and getprop("/controls/engines/engine[0]/cutoff-switch") == 0) and getprop("/position/gear-agl-ft") < 750 and getprop("/gear/gear[1]/position-norm") != 1 and (getprop("/FMGC/status/phase") != 3 and getprop("/FMGC/status/phase") != 4 and getprop("/FMGC/status/phase") != 5 and getprop("/FMGC/status/phase") != 6))) {
|
||||
lg_not_dn.active = 1;
|
||||
} else {
|
||||
lg_not_dn.active = 0;
|
||||
lg_not_dn.noRepeat = 0;
|
||||
}
|
||||
}
|
||||
var messages_priority_2 = func {
|
||||
# if (getprop("/controls/gear/brake-parking") and (getprop("/FMGC/status/phase") >= 6 and getprop("/FMGC/status/phase") <= 7)) {
|
||||
if (getprop("/controls/gear/brake-parking") and (getprop("/FMGC/status/phase") >= 2 and getprop("/FMGC/status/phase") <= 5)) {
|
||||
park_brk_on.active = 1;
|
||||
} else {
|
||||
park_brk_on.active = 0;
|
||||
park_brk_on.noRepeat = 0;
|
||||
}
|
||||
}
|
||||
var messages_priority_1 = func {}
|
||||
var messages_priority_0 = func {}
|
||||
var messages_memo = func {}
|
||||
var messages_right_memo = func {
|
||||
if (getprop("/FMGC/status/phase") >= 3 and getprop("/FMGC/status/phase") <= 5) {
|
||||
to_inhibit.active = 1;
|
||||
} else {
|
||||
to_inhibit.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/FMGC/status/phase") >= 7 and getprop("/FMGC/status/phase") <= 7) {
|
||||
ldg_inhibit.active = 1;
|
||||
} else {
|
||||
ldg_inhibit.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("controls/flight/speedbrake-arm") == 1) {
|
||||
gnd_splrs.active = 1;
|
||||
} else {
|
||||
gnd_splrs.active = 0;
|
||||
}
|
||||
|
||||
#if (getprop("/controls/gear/brake-parking") == 1 and getprop("/FMGC/status/phase") != 3) {
|
||||
if (getprop("/controls/gear/brake-parking") == 1) {
|
||||
park_brk.active = 1;
|
||||
} else {
|
||||
park_brk.active = 0;
|
||||
}
|
||||
if (getprop("/FMGC/status/phase") >= 4 and getprop("/FMGC/status/phase") <= 8) {
|
||||
park_brk.colour = "a";
|
||||
} else {
|
||||
park_brk.colour = "g";
|
||||
}
|
||||
|
||||
if (getprop("/controls/pneumatic/switches/ram-air") == 1) {
|
||||
ram_air.active = 1;
|
||||
} else {
|
||||
ram_air.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/electrical/switches/emer-gen") == 1 and getprop("/controls/hydraulic/rat-deployed") == 1 and !wow) {
|
||||
emer_gen.active = 1;
|
||||
} else {
|
||||
emer_gen.active = 0;
|
||||
}
|
||||
|
||||
if ((getprop("/FMGC/status/phase") >= 2 and getprop("/FMGC/status/phase") <= 7) and getprop("controls/flight/speedbrake") != 0) {
|
||||
spd_brk.active = 1;
|
||||
} else {
|
||||
spd_brk.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/systems/thrust/state1") == "IDLE" and getprop("/systems/thrust/state2") == "IDLE" and getprop("/FMGC/status/phase") >= 6 and getprop("/FMGC/status/phase") <= 7) {
|
||||
spd_brk.colour = "g";
|
||||
} else if ((getprop("/FMGC/status/phase") >= 2 and getprop("/FMGC/status/phase") <= 5) or ((getprop("/systems/thrust/state1") != "IDLE" or getprop("/systems/thrust/state2") != "IDLE") and (getprop("/FMGC/status/phase") >= 6 and getprop("/FMGC/status/phase") <= 7))) {
|
||||
spd_brk.colour = "a";
|
||||
}
|
||||
|
||||
if (getprop("services/fuel-truck/enable") == 1 and getprop("/ECAM/left-msg") != "TO-MEMO" and getprop("/ECAM/left-msg") != "LDG-MEMO") {
|
||||
refuelg.active = 1;
|
||||
} else {
|
||||
refuelg.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/consumables/fuel/total-fuel-lbs") < 6000 and getprop("/ECAM/left-msg") != "TO-MEMO" and getprop("/ECAM/left-msg") != "LDG-MEMO") { # assuming US short ton 2000lb
|
||||
fob_3T.active = 1;
|
||||
} else {
|
||||
fob_3T.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/systems/fuel/x-feed") == 1 and getprop("controls/fuel/x-feed") == 1) {
|
||||
fuelx.active = 1;
|
||||
} else {
|
||||
fuelx.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/FMGC/status/phase") >= 3 and getprop("/FMGC/status/phase") <= 5) {
|
||||
fuelx.colour = "a";
|
||||
} else {
|
||||
fuelx.colour = "g";
|
||||
}
|
||||
|
||||
if (getprop("/controls/hydraulic/ptu") == 1 and ((getprop("/systems/hydraulic/yellow-psi") < 1450 and getprop("/systems/hydraulic/green-psi") > 1450 and getprop("/controls/hydraulic/elec-pump-yellow") == 0) or (getprop("/systems/hydraulic/yellow-psi") > 1450 and getprop("/systems/hydraulic/green-psi") < 1450))) {
|
||||
ptu.active = 1;
|
||||
} else {
|
||||
ptu.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/hydraulic/rat-deployed") == 1) {
|
||||
rat.active = 1;
|
||||
} else {
|
||||
rat.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/FMGC/status/phase") >= 1 and getprop("/FMGC/status/phase") <= 2) {
|
||||
rat.colour = "a";
|
||||
} else {
|
||||
rat.colour = "g";
|
||||
}
|
||||
|
||||
if (getprop("/controls/switches/leng") == 1 or getprop("/controls/switches/reng") == 1 or getprop("/systems/electrical/bus/dc1") == 0 or getprop("/systems/electrical/bus/dc2") == 0) {
|
||||
eng_aice.active = 1;
|
||||
} else {
|
||||
eng_aice.active = 0;
|
||||
}
|
||||
|
||||
if (getprop("/controls/switches/wing") == 1) {
|
||||
eng_aice.active = 1;
|
||||
} else {
|
||||
eng_aice.active = 0;
|
||||
}
|
||||
}
|
||||
|
||||
# Finally the controller
|
||||
|
||||
var ECAM_controller = {
|
||||
loop: func() {
|
||||
|
||||
# check active messages
|
||||
# config_warnings();
|
||||
messages_priority_3();
|
||||
messages_priority_2();
|
||||
messages_priority_1();
|
||||
messages_priority_0();
|
||||
messages_memo();
|
||||
messages_right_memo();
|
||||
|
||||
# clear display momentarily
|
||||
|
||||
|
||||
if (warnings.size() > 0) {
|
||||
for(var n=1; n<8; n+=1) {
|
||||
setprop("/ECAM/msg/line" ~ n, "");
|
||||
}
|
||||
}
|
||||
|
||||
if (memos.size() > 0) {
|
||||
for(var n=1; n<8; n+=1) {
|
||||
setprop("/ECAM/rightmsg/line" ~ n, "");
|
||||
}
|
||||
}
|
||||
|
||||
# write to ECAM
|
||||
|
||||
foreach (var i; warnings.vector) {
|
||||
i.write();
|
||||
i.warnlight();
|
||||
i.sound();
|
||||
}
|
||||
|
||||
foreach (var m; memos.vector) {
|
||||
m.write();
|
||||
}
|
||||
},
|
||||
};
|
|
@ -37,14 +37,30 @@ var ECAM = {
|
|||
setprop("/ECAM/msg/line6", "");
|
||||
setprop("/ECAM/msg/line7", "");
|
||||
setprop("/ECAM/msg/line8", "");
|
||||
setprop("/ECAM/msg/line1c", "w");
|
||||
setprop("/ECAM/msg/line2c", "w");
|
||||
setprop("/ECAM/msg/line3c", "w");
|
||||
setprop("/ECAM/msg/line4c", "w");
|
||||
setprop("/ECAM/msg/line5c", "w");
|
||||
setprop("/ECAM/msg/line6c", "w");
|
||||
setprop("/ECAM/msg/line7c", "w");
|
||||
setprop("/ECAM/msg/line8c", "w");
|
||||
setprop("/ECAM/msg/linec1", "w");
|
||||
setprop("/ECAM/msg/linec2", "w");
|
||||
setprop("/ECAM/msg/linec3", "w");
|
||||
setprop("/ECAM/msg/linec4", "w");
|
||||
setprop("/ECAM/msg/linec5", "w");
|
||||
setprop("/ECAM/msg/linec6", "w");
|
||||
setprop("/ECAM/msg/linec7", "w");
|
||||
setprop("/ECAM/msg/linec8", "w");
|
||||
setprop("/ECAM/rightmsg/line1", "");
|
||||
setprop("/ECAM/rightmsg/line2", "");
|
||||
setprop("/ECAM/rightmsg/line3", "");
|
||||
setprop("/ECAM/rightmsg/line4", "");
|
||||
setprop("/ECAM/rightmsg/line5", "");
|
||||
setprop("/ECAM/rightmsg/line6", "");
|
||||
setprop("/ECAM/rightmsg/line7", "");
|
||||
setprop("/ECAM/rightmsg/line8", "");
|
||||
setprop("/ECAM/rightmsg/linec1", "w");
|
||||
setprop("/ECAM/rightmsg/linec2", "w");
|
||||
setprop("/ECAM/rightmsg/linec3", "w");
|
||||
setprop("/ECAM/rightmsg/linec4", "w");
|
||||
setprop("/ECAM/rightmsg/linec5", "w");
|
||||
setprop("/ECAM/rightmsg/linec6", "w");
|
||||
setprop("/ECAM/rightmsg/linec7", "w");
|
||||
setprop("/ECAM/rightmsg/linec8", "w");
|
||||
},
|
||||
loop: func() {
|
||||
stateL = getprop("/engines/engine[0]/state");
|
||||
|
@ -80,7 +96,9 @@ var ECAM = {
|
|||
setprop("/ECAM/ldg-memo-enable", 0);
|
||||
}
|
||||
|
||||
if (getprop("/FMGC/status/phase") == 0 and stateL == 3 and stateR == 3 and getprop("/ECAM/engine-start-time") + 120 < getprop("/sim/time/elapsed-sec") and getprop("/ECAM/to-memo-enable") == 1 and wow == 1) {
|
||||
if (ecam.warnings.size() > 0) {
|
||||
setprop("/ECAM/left-msg", "MSG");
|
||||
} else if (getprop("/FMGC/status/phase") == 0 and stateL == 3 and stateR == 3 and getprop("/ECAM/engine-start-time") + 120 < getprop("/sim/time/elapsed-sec") and getprop("/ECAM/to-memo-enable") == 1 and wow == 1) {
|
||||
setprop("/ECAM/left-msg", "TO-MEMO");
|
||||
} else if (getprop("/ECAM/ldg-memo-enable") == 1) {
|
||||
setprop("/ECAM/left-msg", "LDG-MEMO");
|
||||
|
@ -88,6 +106,12 @@ var ECAM = {
|
|||
setprop("/ECAM/left-msg", "NONE");
|
||||
}
|
||||
|
||||
if (ecam.memos.size() > 0) {
|
||||
setprop("/ECAM/right-msg", "MSG");
|
||||
} else {
|
||||
setprop("/ECAM/right-msg", "NONE");
|
||||
}
|
||||
|
||||
if (getprop("/controls/autobrake/mode") == 3 and getprop("/controls/switches/no-smoking-sign") == 1 and getprop("/controls/switches/seatbelt-sign") == 1 and getprop("/controls/flight/speedbrake-arm") == 1 and getprop("/controls/flight/flap-pos") > 0
|
||||
and getprop("/controls/flight/flap-pos") < 5) {
|
||||
# Do nothing
|
||||
|
|
|
@ -236,6 +236,15 @@ var icingModel = func {
|
|||
setprop("/systems/pitot/failed", 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (getprop("/systems/electrical/bus/dc1") == 0 or getprop("/systems/electrical/bus/dc2") == 0) {
|
||||
setprop("/controls/switches/leng", 1);
|
||||
setprop("/controls/switches/reng", 1);
|
||||
}
|
||||
|
||||
if (getprop("/systems/electrical/bus/dc-ess-shed") == 0) {
|
||||
setprop("/controls/switches/wing", 0);
|
||||
}
|
||||
}
|
||||
|
||||
#################
|
||||
|
|
|
@ -206,6 +206,7 @@ var systemsLoop = maketimer(0.1, func {
|
|||
systems.FUEL.loop();
|
||||
systems.ADIRS.loop();
|
||||
libraries.ECAM.loop();
|
||||
ecam.ECAM_controller.loop();
|
||||
fadec.fadecLoop();
|
||||
|
||||
if ((getprop("/controls/pneumatic/switches/groundair") or getprop("/controls/switches/cart")) and ((getprop("/velocities/groundspeed-kt") > 2) or getprop("/controls/gear/brake-parking") == 0)) {
|
||||
|
@ -583,4 +584,4 @@ if (getprop("/controls/flight/auto-coordination") == 1) {
|
|||
setprop("/controls/flight/aileron-drives-tiller", 0);
|
||||
}
|
||||
|
||||
setprop("/systems/acconfig/libraries-loaded", 1);
|
||||
setprop("/systems/acconfig/libraries-loaded", 1);
|
|
@ -1468,6 +1468,57 @@
|
|||
<factor>0.60</factor>
|
||||
</volume>
|
||||
</announcements>
|
||||
|
||||
<chime>
|
||||
<name>Chime</name>
|
||||
<path>Aircraft/IDG-A32X/Sounds/Cockpit/chime.wav</path>
|
||||
<mode>once</mode>
|
||||
<type>avionics</type>
|
||||
<condition>
|
||||
<property>/sim/sound/warnings/chime</property>
|
||||
</condition>
|
||||
<volume>
|
||||
<property>sim/sound/effects/volume</property>
|
||||
</volume>
|
||||
<reference-dist>10</reference-dist>
|
||||
<max-dist>100</max-dist>
|
||||
</chime>
|
||||
|
||||
<crc>
|
||||
<name>CRC</name>
|
||||
<path>Aircraft/IDG-A32X/Sounds/Cockpit/crc.wav</path>
|
||||
<mode>looped</mode>
|
||||
<type>avionics</type>
|
||||
<condition>
|
||||
<property>/ECAM/warnings/master-warning-light</property>
|
||||
<property>/sim/sound/warnings/crc</property>
|
||||
</condition>
|
||||
<volume>
|
||||
<property>sim/sound/effects/volume</property>
|
||||
</volume>
|
||||
<reference-dist>10</reference-dist>
|
||||
<max-dist>100</max-dist>
|
||||
</crc>
|
||||
|
||||
<stall-voice>
|
||||
<name>stall-voice</name>
|
||||
<mode>looped</mode>
|
||||
<path>/Aircraft/IDG-A32X/Sounds/Cockpit/stall_voice.wav</path>
|
||||
<type>avionics</type>
|
||||
<condition>
|
||||
<property>warnings/stall/active</property>
|
||||
</condition>
|
||||
<volume>
|
||||
<property>sim/sound/effects/volume</property>
|
||||
<factor>3</factor>
|
||||
<!--offset>1</offset-->
|
||||
<min>1</min>
|
||||
<max>6</max>
|
||||
</volume>
|
||||
|
||||
<reference-dist>10</reference-dist>
|
||||
<max-dist>100.0</max-dist>
|
||||
</stall-voice>
|
||||
|
||||
</fx>
|
||||
</PropertyList>
|
BIN
Sounds/Cockpit/chime.wav
Normal file
BIN
Sounds/Cockpit/chime.wav
Normal file
Binary file not shown.
BIN
Sounds/Cockpit/crc.wav
Normal file
BIN
Sounds/Cockpit/crc.wav
Normal file
Binary file not shown.
BIN
Sounds/Cockpit/stall_voice.wav
Normal file
BIN
Sounds/Cockpit/stall_voice.wav
Normal file
Binary file not shown.
Reference in a new issue