Merge pull request #82 from it0uchpods/elecECAM

Merging master updates
This commit is contained in:
Jonathan Redpath 2017-11-06 18:11:21 -04:00 committed by GitHub
commit ca3addba39
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 1850 additions and 20 deletions

View file

@ -203,6 +203,16 @@
<live>true</live>
</checkbox>
<checkbox>
<label>Blower Fan</label>
<halign>left</halign>
<property>/systems/failures/ventfan</property>
<binding>
<command>dialog-apply</command>
</binding>
<live>true</live>
</checkbox>
</group>
<vrule/>

View file

@ -9,6 +9,7 @@ var lowerECAM_apu = nil;
var lowerECAM_eng = nil;
var lowerECAM_fctl = nil;
var lowerECAM_wheel = nil;
var lowerECAM_elec = nil;
var lowerECAM_display = nil;
var page = "eng";
var oat = getprop("/environment/temperature-degc");
@ -30,6 +31,10 @@ var accum = 0;
setprop("/systems/electrical/extra/apu-load", 0);
setprop("/systems/electrical/extra/apu-volts", 0);
setprop("/systems/electrical/extra/apu-hz", 0);
setprop("/systems/electrical/bat1direction", 0);
setprop("/systems/electrical/bat2direction", 0);
setprop("/ECAM/Lower/bat1-contactrotation", 0);
setprop("/ECAM/Lower/bat2-contactrotation", 0);
setprop("/systems/pneumatic/bleedapu", 0);
setprop("/engines/engine[0]/oil-psi-actual", 0);
setprop("/engines/engine[1]/oil-psi-actual", 0);
@ -109,17 +114,26 @@ var canvas_lowerECAM_base = {
lowerECAM_fctl.page.hide();
lowerECAM_wheel.page.show();
lowerECAM_wheel.update();
} else if (page == "elec") {
lowerECAM_apu.page.hide();
lowerECAM_eng.page.hide();
lowerECAM_fctl.page.hide();
lowerECAM_wheel.page.hide();
lowerECAM_elec.page.show();
lowerECAM_elec.update();
} else {
lowerECAM_apu.page.hide();
lowerECAM_eng.page.hide();
lowerECAM_fctl.page.hide();
lowerECAM_wheel.page.hide();
lowerECAM_elec.page.hide();
}
} else {
lowerECAM_apu.page.hide();
lowerECAM_eng.page.hide();
lowerECAM_fctl.page.hide();
lowerECAM_wheel.page.hide();
lowerECAM_elec.page.hide();
}
},
updateBottomStatus: func() {
@ -1016,7 +1030,7 @@ var canvas_lowerECAM_wheel = {
} else {
me["spoiler3Lf"].hide();
}
} else {
} else {
me["spoiler3Lex"].setColor(0.0509,0.7529,0.2941);
me["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941);
me["spoiler3Lf"].hide();
@ -1133,6 +1147,133 @@ var canvas_lowerECAM_wheel = {
},
};
var canvas_lowerECAM_elec = {
new: func(canvas_group, file) {
var m = {parents: [canvas_lowerECAM_elec, canvas_lowerECAM_base]};
m.init(canvas_group, file);
return m;
},
getKeys: func() {
return ["TAT","SAT","GW","BAT1connectorA","BAT1connectorB","BAT2connectorA","BAT2connectorB","BAT1volts","BAT1amps","BAT1v","BAT1a","BAT1off","BAT2volts","BAT2amps","BAT2v","BAT2a","BAT2off","TR1volts","TR1amps","TR2volts","TR2amps","EMERGENvolts","EXTvolts","EXThz",
"DCbattext","ESSTRvolts","ESSTRv","ESSTRamps","ESSTRa","ESSTRvolts","ESSTRbox","EMERGENtoESSTRarrow","ESSTRtoDCESSline"];
},
update: func() {
if (getprop("/controls/electrical/switches/battery1") == 0) {
me["BAT1volts"].hide();
me["BAT1amps"].hide();
me["BAT1v"].hide();
me["BAT1a"].hide();
me["BAT1off"].show();
} else {
me["BAT1volts"].show();
me["BAT1amps"].show();
me["BAT1v"].show();
me["BAT1a"].show();
me["BAT1off"].hide();
}
if (getprop("/controls/electrical/switches/battery2") == 0) {
me["BAT2volts"].hide();
me["BAT2amps"].hide();
me["BAT2v"].hide();
me["BAT2a"].hide();
me["BAT2off"].show();
} else {
me["BAT2volts"].show();
me["BAT2amps"].show();
me["BAT2v"].show();
me["BAT2a"].show();
me["BAT2off"].hide();
}
if (getprop("/systems/electrical/battery1-contact") == 0 and getprop("/systems/electrical/bat1direction") == 0) {
me["BAT1connectorA"].hide();
me["BAT1connectorB"].hide();
} else if (getprop("/systems/electrical/battery1-contact") == 1 and getprop("/systems/electrical/bat1direction") == -1) {
me["BAT1connectorA"].hide();
me["BAT1connectorB"].show();
me["BAT1connectorB"].setRotation(getprop("/ECAM/Lower/bat1-contactrotation") * D2R);
} else if (getprop("/systems/electrical/battery1-contact") == 1 and getprop("/systems/electrical/bat1direction") == 2) {
me["BAT1connectorA"].show();
me["BAT1connectorB"].hide();
} else if (getprop("/systems/electrical/battery1-contact") == 1 and getprop("/systems/electrical/bat1direction") == 1) {
me["BAT1connectorA"].hide();
me["BAT1connectorB"].show();
me["BAT1connectorB"].setRotation(getprop("/ECAM/Lower/bat2-contactrotation") * D2R);
}
if (getprop("/systems/electrical/battery2-contact") == 0 and getprop("/systems/electrical/bat2direction") == 0) {
me["BAT2connectorA"].hide();
me["BAT2connectorB"].hide();
} else if (getprop("/systems/electrical/battery2-contact") == 1 and getprop("/systems/electrical/bat2direction") == -1) {
me["BAT2connectorA"].hide();
me["BAT2connectorB"].show();
me["BAT2connectorB"].setRotation(getprop("/ECAM/Lower/bat2-contactrotation") * D2R);
} else if (getprop("/systems/electrical/battery2-contact") == 1 and getprop("/systems/electrical/bat2direction") == 2) {
me["BAT2connectorA"].show();
me["BAT2connectorB"].hide();
} else if (getprop("/systems/electrical/battery2-contact") == 1 and getprop("/systems/electrical/bat2direction") == 1) {
me["BAT2connectorA"].hide();
me["BAT2connectorB"].show();
me["BAT2connectorB"].setRotation(getprop("/ECAM/Lower/bat2-contactrotation") * D2R);
}
if (getprop("/systems/electrical/bus/dcbat") < 25) {
me["DCbattext"].setColor(0.7333,0.3803,0);
} else {
me["DCbattext"].setColor(0.0667,0.9450,0.3686);
}
if (getprop("/systems/electrical/bus/dc1") < 25) {
me["TR1volts"].setColor(0.7333,0.3803,0);
} else {
me["TR1volts"].setColor(0.0667,0.9450,0.3686);
}
if (getprop("/systems/electrical/bus/dc2") < 25) {
me["TR2volts"].setColor(0.7333,0.3803,0);
} else {
me["TR2volts"].setColor(0.0667,0.9450,0.3686);
}
if (getprop("/systems/electrical/bus/dc1-amps") <= 5) {
me["TR1amps"].setColor(0.7333,0.3803,0);
} else {
me["TR1amps"].setColor(0.0667,0.9450,0.3686);
}
if (getprop("/systems/electrical/bus/dc2-amps") <= 5) {
me["TR2amps"].setColor(0.7333,0.3803,0);
} else {
me["TR2amps"].setColor(0.0667,0.9450,0.3686);
}
me["BAT1volts"].setText(sprintf("%2.0f", getprop("/systems/electrical/battery1-volts")));
me["BAT2volts"].setText(sprintf("%2.0f", getprop("/systems/electrical/battery2-volts")));
me["BAT1amps"].setText(sprintf("%3.0f", getprop("/systems/electrical/battery1-amps")));
me["BAT2amps"].setText(sprintf("%3.0f", getprop("/systems/electrical/battery2-amps")));
me["TR1volts"].setText(sprintf("%2.0f", getprop("/systems/electrical/bus/dc1")));
me["TR1amps"].setText(sprintf("%2.0f", getprop("/systems/electrical/bus/dc1-amps")));
me["TR2volts"].setText(sprintf("%2.0f", getprop("/systems/electrical/bus/dc2")));
me["TR2amps"].setText(sprintf("%2.0f", getprop("/systems/electrical/bus/dc2-amps")));
me["EXTvolts"].setText(sprintf("%2.0f", getprop("/systems/electrical/extra/ext-volts")));
me["EXThz"].setText(sprintf("%2.0f", getprop("/systems/electrical/extra/ext-hz")));
me["ESSTRvolts"].hide();
me["ESSTRv"].hide();
me["ESSTRamps"].hide();
me["ESSTRa"].hide();
me["ESSTRvolts"].hide();
me["ESSTRbox"].hide();
me["EMERGENtoESSTRarrow"].hide();
me["ESSTRtoDCESSline"].hide();
me.updateBottomStatus();
},
};
setlistener("sim/signals/fdm-initialized", func {
lowerECAM_display = canvas.new({
"name": "lowerECAM",
@ -1145,11 +1286,13 @@ setlistener("sim/signals/fdm-initialized", func {
var groupEng = lowerECAM_display.createGroup();
var groupFctl = lowerECAM_display.createGroup();
var groupWheel = lowerECAM_display.createGroup();
var groupElec = lowerECAM_display.createGroup();
lowerECAM_apu = canvas_lowerECAM_apu.new(groupApu, "Aircraft/IDG-A32X/Models/Instruments/Lower-ECAM/res/apu.svg");
lowerECAM_eng = canvas_lowerECAM_eng.new(groupEng, "Aircraft/IDG-A32X/Models/Instruments/Lower-ECAM/res/eng-eis2.svg");
lowerECAM_fctl = canvas_lowerECAM_fctl.new(groupFctl, "Aircraft/IDG-A32X/Models/Instruments/Lower-ECAM/res/fctl.svg");
lowerECAM_wheel = canvas_lowerECAM_wheel.new(groupWheel, "Aircraft/IDG-A32X/Models/Instruments/Lower-ECAM/res/wheel.svg");
lowerECAM_elec = canvas_lowerECAM_elec.new(groupElec, "Aircraft/IDG-A32X/Models/Instruments/Lower-ECAM/res/elec.svg");
lowerECAM_update.start();
});

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 99 KiB

View file

@ -17,9 +17,7 @@
<type>select</type>
<object-name>ACESSFeedBtn1F</object-name>
<object-name>ACESSFeedBtn2O</object-name>
<object-name>ACPack1Btn1F</object-name>
<object-name>ACPack1Btn2O</object-name>
<object-name>ACPack2Btn1F</object-name>
<object-name>ACPack2Btn2O</object-name>
<object-name>APUBleedBtn1F</object-name>
<object-name>APUBleedBtn2O</object-name>
@ -47,11 +45,19 @@
<object-name>Eng2FireAgt2Btn1S</object-name>
<object-name>Eng2FireAgt2Btn2D</object-name>
<object-name>ExtPwrBtn2O</object-name>
<object-name>Gen1Btn1F</object-name>
<object-name>Gen1Btn2O</object-name>
<object-name>Gen2Btn1F</object-name>
<object-name>Gen2Btn2O</object-name>
<object-name>RamAirBtn2O</object-name>
<!-- the following come on when you turn on BAT 2 -->
<object-name>ELAC1Btn1F</object-name>
<object-name>FAC1Btn1F</object-name>
<object-name>SECBtn1F</object-name>
<object-name>VentBlowBtn1F</object-name>
<object-name>Gen1Btn1F</object-name>
<object-name>Gen2Btn1F</object-name>
<object-name>ACPack1Btn1F</object-name>
<object-name>ACPack2Btn1F</object-name>
<condition>
<or>
<greater-than-equals>
@ -98,7 +104,6 @@
<object-name>CFuelTank2Btn1F</object-name>
<object-name>CFuelTank2Btn2O</object-name>
<object-name>CrewOxyBtn2O</object-name>
<object-name>ELAC1Btn1F</object-name>
<object-name>ELAC1Btn2O</object-name>
<object-name>ELAC2Btn1F</object-name>
<object-name>ELAC2Btn2O</object-name>
@ -117,7 +122,6 @@
<object-name>Eng2ManStartBtn2O</object-name>
<object-name>EvacCommandBtn1E</object-name>
<object-name>EvacCommandBtn2O</object-name>
<object-name>FAC1Btn1F</object-name>
<object-name>FAC1Btn2O</object-name>
<object-name>FAC2Btn1F</object-name>
<object-name>FAC2Btn2O</object-name>
@ -165,13 +169,11 @@
<object-name>RFuelTank1Btn2O</object-name>
<object-name>RFuelTank2Btn1F</object-name>
<object-name>RFuelTank2Btn2O</object-name>
<object-name>SEC1Btn1F</object-name>
<object-name>SEC1Btn2O</object-name>
<object-name>SEC2Btn1F</object-name>
<object-name>SEC2Btn2O</object-name>
<object-name>SEC3Btn1F</object-name>
<object-name>SEC3Btn2O</object-name>
<object-name>VentBlowBtn1F</object-name>
<object-name>VentBlowBtn2O</object-name>
<object-name>VentExtractBtn1F</object-name>
<object-name>VentExtractBtn2O</object-name>
@ -220,7 +222,6 @@
<object-name>Gen1LineBtn1S</object-name>
<object-name>Gen1LineBtn2O</object-name>
<object-name>RcdrGndCtlBtn2O</object-name>
<object-name>VentBlowBtn1F</object-name>
<object-name>VentBlowBtn2O</object-name>
<object-name>VentExtractBtn1F</object-name>
<object-name>VentExtractBtn2O</object-name>
@ -248,6 +249,23 @@
</diffuse>
</animation>
<!-- Ventilation -->
<animation>
<type>select</type>
<object-name>VentBlowBtn1F</object-name>
<condition>
<or>
<equals>
<property>/systems/ventilation/ventfan-fault</property>
<value>1</value>
</equals>
<equals>
<property>controls/switches/annun-test</property>
<value>1</value>
</equals>
</or>
</condition>
</animation>
<!-- Cargo Smoke -->
<animation>
<type>select</type>

View file

@ -30,6 +30,8 @@ setlistener("/sim/signals/fdm-initialized", func {
var battery2_sw = getprop("/controls/electrical/switches/battery2");
var battery1_volts = getprop("/systems/electrical/battery1-volts");
var battery2_volts = getprop("/systems/electrical/battery2-volts");
var bat1_cont = getprop("/systems/electrical/battery1-contact");
var bat2_cont = getprop("/systems/electrical/battery2-contact");
var rpmapu = getprop("/systems/apu/rpm");
var extpwr_on = getprop("/controls/switches/cart");
var stateL = getprop("/engines/engine[0]/state");
@ -60,6 +62,7 @@ setlistener("/sim/signals/fdm-initialized", func {
var bat1_volts = getprop("/systems/electrical/battery1-volts");
var bat2_volts = getprop("/systems/electrical/battery2-volts");
var replay = getprop("/sim/replay/replay-state");
var wow = getprop("/gear/gear[1]/wow");
});
var elec_init = func {
@ -80,6 +83,8 @@ var elec_init = func {
setprop("/systems/electrical/battery2-volts", 25.9);
setprop("/systems/electrical/battery1-amps", 0);
setprop("/systems/electrical/battery2-amps", 0);
setprop("/systems/electrical/battery1-contact", 0);
setprop("/systems/electrical/battery2-contact", 0);
setprop("/systems/electrical/bus/dc1", 0);
setprop("/systems/electrical/bus/dc2", 0);
setprop("/systems/electrical/bus/dcbat", 0);
@ -112,6 +117,8 @@ var elec_init = func {
setprop("/systems/electrical/idg2-fault", 0);
setprop("/controls/electrical/xtie/xtieL", 0);
setprop("/controls/electrical/xtie/xtieR", 0);
setprop("/systems/electrical/bat1direction", 0); # - 1 = charge, 0 = disconnected, 1 = discharge
setprop("/systems/electrical/bat2direction", 0); # - 1 = charge, 0 = disconnected, 1 = discharge
# Below are standard FG Electrical stuff to keep things working when the plane is powered
setprop("/systems/electrical/outputs/adf", 0);
setprop("/systems/electrical/outputs/audio-panel", 0);
@ -191,6 +198,9 @@ var master_elec = func {
gen1_fail = getprop("/systems/failures/elec-gen1");
gen2_fail = getprop("/systems/failures/elec-gen2");
replay = getprop("/sim/replay/replay-state");
bat1_cont = getprop("/systems/electrical/battery1-contact");
bat2_cont = getprop("/systems/electrical/battery2-contact");
wow = getprop("/gear/gear[1]/wow");
if (extpwr_on and gen_ext_sw) {
setprop("/systems/electrical/gen-ext", 1);
@ -403,41 +413,65 @@ var master_elec = func {
setprop("/systems/electrical/battery2-amps", 0);
}
if ((getprop("/systems/electrical/battery1-amps") > 120) or (getprop("/systems/electrical/battery2-amps") > 120)) {
dc1 = getprop("/systems/electrical/bus/dc1");
dc2 = getprop("/systems/electrical/bus/dc2");
if ((getprop("/systems/electrical/battery1-amps") > 120) or (getprop("/systems/electrical/battery2-amps") > 120) or dc1 > 25 or dc2 > 25) {
setprop("/systems/electrical/bus/dcbat", dc_volt_std);
} else {
setprop("/systems/electrical/bus/dcbat", 0);
}
dc1 = getprop("/systems/electrical/bus/dc1");
dc2 = getprop("/systems/electrical/bus/dc2");
if (battery1_volts < 26.5 or (rpmapu < 95 and getprop("/controls/APU/master") == 1) or (ac1 == 0 and ac2 == 0 and ias < 100)) {
setprop("/systems/electrical/battery1-contact", 1);
} else if (battery1_sw and wow and battery1_volts < 24.9 and !gen_apu_sw and !gen_ext_sw) {
setprop("/systems/electrical/battery1-contact", 0);
} else {
setprop("/systems/electrical/battery1-contact", 0);
}
if (battery1_volts < 27.9 and (dc1 > 25 or dc2 > 25) and battery1_sw and !batt1_fail) {
if (battery2_volts < 26.5 or (rpmapu < 95 and getprop("/controls/APU/master") == 1) or (ac1 == 0 and ac2 == 0 and ias < 100)) {
setprop("/systems/electrical/battery2-contact", 1);
} else if (battery2_sw and wow and battery2_volts < 24.9 and !gen_apu_sw and !gen_ext_sw) {
setprop("/systems/electrical/battery2-contact", 0);
} else {
setprop("/systems/electrical/battery2-contact", 0);
}
if (battery1_volts < 26.5 and (dc1 > 25 or dc2 > 25) and battery1_sw and !batt1_fail) {
decharge1.stop();
charge1.start();
} else if (battery1_volts == 27.9 and (dc1 > 25 or dc2 > 25) and battery1_sw and !batt1_fail) {
setprop("/systems/electrical/bat1direction", -1);
} else if (battery1_volts < 27.9 and (dc1 > 25 or dc2 > 25) and battery1_sw and !batt1_fail) {
charge1.stop();
decharge1.stop();
setprop("/systems/electrical/bat1direction", 2); # this is when it is connected, but is not charging or discharging
} else if (battery1_sw and !batt1_fail) {
charge1.stop();
decharge1.start();
setprop("/systems/electrical/bat1direction", 1);
} else {
decharge1.stop();
charge1.stop();
setprop("/systems/electrical/bat1direction", 0);
}
if (battery2_volts < 27.9 and (dc1 > 25 or dc2 > 25) and battery2_sw and !batt2_fail) {
if (battery2_volts < 26.5 and (dc1 > 25 or dc2 > 25) and battery2_sw and !batt2_fail) {
decharge2.stop();
charge2.start();
setprop("/systems/electrical/bat1direction", 0);
} else if (battery2_volts == 27.9 and (dc1 > 25 or dc2 > 25) and battery2_sw and !batt2_fail) {
charge2.stop();
decharge2.stop();
setprop("/systems/electrical/bat2direction", 2); # this is when it is connected, but is not charging or discharging
} else if (battery2_sw and !batt2_fail) {
charge2.stop();
decharge2.start();
setprop("/systems/electrical/bat2direction", 1);
} else {
decharge2.stop();
charge2.stop();
setprop("/systems/electrical/bat2direction", 0);
}
if (getprop("/systems/electrical/bus/ac-ess") < 110) {
@ -542,7 +576,7 @@ var master_elec = func {
setprop("/systems/electrical/batt2-fault", 0);
}
if ((gen1_fail and gen1_sw) or (gen1_sw and stateL != 3)) {
if (getprop("systems/electrical/battery2-amps") > 120 and (gen1_fail and gen1_sw) or (gen1_sw and stateL != 3)) {
setprop("/systems/electrical/gen1-fault", 1);
} else {
setprop("/systems/electrical/gen1-fault", 0);
@ -560,13 +594,44 @@ var master_elec = func {
setprop("/systems/electrical/apugen-fault", 0);
}
if ((gen2_fail and gen2_sw) or (gen2_sw and stateR != 3)) {
if (getprop("systems/electrical/battery2-amps") > 120 and (gen2_fail and gen2_sw) or (gen2_sw and stateR != 3)) {
setprop("/systems/electrical/gen2-fault", 1);
} else {
setprop("/systems/electrical/gen2-fault", 0);
}
if (getprop("/systems/failures/sec1-fail-time") + 5 >= getprop("/sim/time/elapsed-sec")) {
setprop("/systems/failures/sec1", 1);
} else {
setprop("/systems/failures/sec1", 0);
setprop("/systems/failures/sec1-fail-time", 0);
}
if (getprop("/systems/electrical/bus/ac1") >= 110 or getprop("/systems/electrical/bus/dc1") >= 25 or getprop("/systems/failures/ventfan") == 1) {
setprop("/systems/ventilation/ventfan-fault", 0);
} else if (getprop("/systems/electrical/battery2-amps") > 120) {
setprop("/systems/ventilation/ventfan-fault", 1);
}
}
setlistener("/controls/electrical/switches/battery2", func {
if (getprop("/controls/electrical/switches/battery2") == 1) {
setprop("/systems/failures/elac1", 1);
setprop("/systems/failures/sec1", 1);
setprop("/systems/failures/fac1", 1);
setprop("/systems/failures/sec1-fail-time", getprop("/sim/time/elapsed-sec"));
} else if (getprop("/systems/electrical/bus/dc-ess") >= 25 or getprop("/systems/electrical/bus/ac-ess") >= 25) {
setprop("/systems/failures/elac1", 0);
setprop("/systems/failures/sec1", 0);
setprop("/systems/failures/fac1", 0);
} else {
setprop("/systems/failures/elac1", 1);
setprop("/systems/failures/sec1", 1);
setprop("/systems/failures/fac1", 1);
}
});
###################
# Update Function #
###################

View file

@ -27,6 +27,8 @@ var qty2 = math.round((rand() * 5 ) + 20, 0.1);
setprop("/engines/engine[0]/oil-qt-actual", qty1);
setprop("/engines/engine[1]/oil-qt-actual", qty2);
# Failures
setprop("/systems/failures/sec1-fail-time", 0);
##########
# Lights #
##########

View file

@ -369,13 +369,13 @@ var master_pneu = func {
setprop("/systems/pneumatic/bleedapu-fault", 0);
}
if ((pack1_fail and pack1_sw) or (pack1_sw and pack1 <= 5)) {
if (getprop("systems/electrical/battery2-amps") > 120 and (pack1_fail and pack1_sw) or (pack1_sw and pack1 <= 5)) {
setprop("/systems/pneumatic/pack1-fault", 1);
} else {
setprop("/systems/pneumatic/pack1-fault", 0);
}
if ((pack2_fail and pack2_sw) or (pack2_sw and pack2 <= 5)) {
if (getprop("systems/electrical/battery2-amps") > 120 and (pack2_fail and pack2_sw) or (pack2_sw and pack2 <= 5)) {
setprop("/systems/pneumatic/pack2-fault", 1);
} else {
setprop("/systems/pneumatic/pack2-fault", 0);

View file

@ -199,5 +199,37 @@
</input>
<output>/ECAM/Lower/elevator-trim-deg</output>
</filter>
<filter>
<name>Battery 1 Contact Rotation</name>
<type>gain</type>
<gain>1</gain>
<input>
<expression>
<table>
<property>/systems/electrical/battery1-contact</property>
<entry><ind> -1</ind><dep> 0</dep></entry>
<entry><ind> 1</ind><dep>180</dep></entry>
</table>
</expression>
</input>
<output>/ECAM/Lower/bat1-contactrotation</output>
</filter>
<filter>
<name>Battery 2 Contact Rotation</name>
<type>gain</type>
<gain>1</gain>
<input>
<expression>
<table>
<property>/systems/electrical/battery2-contact</property>
<entry><ind> -1</ind><dep> 0</dep></entry>
<entry><ind> 1</ind><dep>180</dep></entry>
</table>
</expression>
</input>
<output>/ECAM/Lower/bat2-contactrotation</output>
</filter>
</PropertyList>