From e32f5ef1416431c6d9ef51fcfdf23240de0083e6 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Mon, 5 Jul 2021 22:17:20 +0100 Subject: [PATCH 01/28] Lower ECAM: rework APU page (emesary) --- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 3489 +++++++++++++++ Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 3848 ++--------------- Models/Instruments/Lower-ECAM/res/apu.svg | 24 +- Models/Instruments/Upper-ECAM/Upper-ECAM.nas | 2 +- 4 files changed, 3787 insertions(+), 3576 deletions(-) create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas new file mode 100644 index 00000000..f9a7f0ef --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -0,0 +1,3489 @@ +# A3XX Lower ECAM Canvas + +# Copyright (c) 2020 Josh Davidson (Octal450) + +var lowerECAM_apu = nil; +var lowerECAM_bleed = nil; +var lowerECAM_cond = nil; +var lowerECAM_crz = nil; +var lowerECAM_door = nil; +var lowerECAM_elec = nil; +var lowerECAM_eng = nil; +var lowerECAM_fctl = nil; +var lowerECAM_fuel = nil; +var lowerECAM_hyd = nil; +var lowerECAM_press = nil; +var lowerECAM_status = nil; +var lowerECAM_wheel = nil; +var lowerECAM_test = nil; +var lowerECAM_display = nil; +var page = "fctl"; +var blue_psi = 0; +var green_psi = 0; +var yellow_psi = 0; +var autobrakemode = 0; +var nosegear = 0; +var leftgear = 0; +var rightgear = 0; +var leftdoor = 0; +var rightdoor = 0; +var nosedoor = 0; +var gearlvr = 0; +var elapsedtime = 0; +var tr1_v = 0; +var tr1_a = 0; +var tr2_v = 0; +var tr2_a = 0; +var essTramps = 0; +var essTrvolts = 0; +var elac1Node = 0; +var elac2Node = 0; +var sec1Node = 0; +var sec2Node = 0; +var eng_valve_state = 0; +var bleed_valve_cur = 0; +var hp_valve_state = 0; +var xbleedcmdstate = 0; +var ramAirState = 0; + +# Conversion factor pounds to kilogram +LBS2KGS = 0.4535924; + +# Fetch Nodes +var acconfig_weight_kgs = props.globals.getNode("/systems/acconfig/options/weight-kgs", 1); +var rate = props.globals.getNode("/systems/acconfig/options/lecam-rate", 1); +var autoconfig_running = props.globals.getNode("/systems/acconfig/autoconfig-running", 1); +var ecam_page = props.globals.getNode("/ECAM/Lower/page", 1); +var hour = props.globals.getNode("/sim/time/utc/hour", 1); +var minute = props.globals.getNode("/sim/time/utc/minute", 1); +var apu_flap = props.globals.getNode("/controls/apu/inlet-flap/position-norm", 1); +var apu_rpm = props.globals.getNode("/engines/engine[2]/n1", 1); +var apu_egt = props.globals.getNode("/systems/apu/egt-degC", 1); +var door_left = props.globals.getNode("/ECAM/Lower/door-left", 1); +var door_right = props.globals.getNode("/ECAM/Lower/door-right", 1); +var door_nose_left = props.globals.getNode("/ECAM/Lower/door-nose-left", 1); +var door_nose_right = props.globals.getNode("/ECAM/Lower/door-nose-right", 1); +var apu_rpm_rot = props.globals.getNode("/ECAM/Lower/APU-N", 1); +var apu_egt_rot = props.globals.getNode("/ECAM/Lower/APU-EGT", 1); +var oil_qt1 = props.globals.getNode("/ECAM/Lower/Oil-QT[0]", 1); +var oil_qt2 = props.globals.getNode("/ECAM/Lower/Oil-QT[1]", 1); +var oil_psi1 = props.globals.getNode("/ECAM/Lower/Oil-PSI[0]", 1); +var oil_psi2 = props.globals.getNode("/ECAM/Lower/Oil-PSI[1]", 1); +var bleedapu = props.globals.getNode("", 1); +var aileron_ind_left = props.globals.getNode("/ECAM/Lower/aileron-ind-left", 1); +var aileron_ind_right = props.globals.getNode("/ECAM/Lower/aileron-ind-right", 1); +var elevator_ind_left = props.globals.getNode("/ECAM/Lower/elevator-ind-left", 1); +var elevator_ind_right = props.globals.getNode("/ECAM/Lower/elevator-ind-right", 1); +var elevator_trim_deg = props.globals.getNode("/ECAM/Lower/elevator-trim-deg", 1); +var final_deg = props.globals.getNode("/fdm/jsbsim/hydraulics/rudder/final-deg", 1); +var temperature_degc = props.globals.getNode("/environment/temperature-degc", 1); +var tank3_content_lbs = props.globals.getNode("/fdm/jsbsim/propulsion/tank[2]/contents-lbs", 1); +var ir2_knob = props.globals.getNode("/controls/adirs/ir[1]/knob", 1); +var apuBleedNotOn = props.globals.getNode("/systems/pneumatics/warnings/apu-bleed-not-on", 1); +var apu_valve = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve-cmd", 1); +var apu_valve_state = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve", 1); +var xbleedcmd = props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve-cmd", 1); +var xbleed = props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve", 1); +var xbleedstate = nil; +var hp_valve1_state = props.globals.getNode("/systems/pneumatics/valves/engine-1-hp-valve", 1); +var hp_valve2_state = props.globals.getNode("/systems/pneumatics/valves/engine-2-hp-valve", 1); +var hp_valve1 = props.globals.getNode("/systems/pneumatics/valves/engine-1-hp-valve-cmd", 1); +var hp_valve2 = props.globals.getNode("/systems/pneumatics/valves/engine-2-hp-valve-cmd", 1); +var eng_valve1 = props.globals.getNode("/systems/pneumatics/valves/engine-1-prv-valve", 1); +var eng_valve2 = props.globals.getNode("/systems/pneumatics/valves/engine-2-prv-valve", 1); +var precooler1_psi = props.globals.getNode("/systems/pneumatics/psi/engine-1-psi", 1); +var precooler2_psi = props.globals.getNode("/systems/pneumatics/psi/engine-2-psi", 1); +var precooler1_temp = props.globals.getNode("/systems/pneumatics/precooler/temp-1", 1); +var precooler2_temp = props.globals.getNode("/systems/pneumatics/precooler/temp-2", 1); +var precooler1_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-1", 1); +var precooler2_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-2", 1); +var bmc1working = props.globals.getNode("/systems/pneumatics/indicating/bmc1-working", 1); +var bmc2working = props.globals.getNode("/systems/pneumatics/indicating/bmc2-working", 1); +var bmc1 = 0; +var bmc2 = 0; +var gs_kt = props.globals.getNode("/velocities/groundspeed-kt", 1); +var switch_wing_aice = props.globals.getNode("/controls/ice-protection/wing", 1); +var pack1_bypass = props.globals.getNode("/systems/pneumatics/pack-1-bypass", 1); +var pack2_bypass = props.globals.getNode("/systems/pneumatics/pack-2-bypass", 1); +var oil_qt1_actual = props.globals.getNode("/engines/engine[0]/oil-qt-actual", 1); +var oil_qt2_actual = props.globals.getNode("/engines/engine[1]/oil-qt-actual", 1); +var fuel_used_lbs1 = props.globals.getNode("/systems/fuel/fuel-used-1", 1); +var fuel_used_lbs2 = props.globals.getNode("/systems/fuel/fuel-used-2", 1); +var doorL1_pos = props.globals.getNode("/sim/model/door-positions/doorl1/position-norm", 1); +var doorR1_pos = props.globals.getNode("/sim/model/door-positions/doorr1/position-norm", 1); +var doorL4_pos = props.globals.getNode("/sim/model/door-positions/doorl4/position-norm", 1); +var doorR4_pos = props.globals.getNode("/sim/model/door-positions/doorr4/position-norm", 1); +var cargobulk_pos = props.globals.getNode("/sim/model/door-positions/cargobulk/position-norm", 1); +var cargofwd_pos = props.globals.getNode("/sim/model/door-positions/cargofwd/position-norm", 1); +var cargoaft_pos = props.globals.getNode("/sim/model/door-positions/cargoaft/position-norm", 1); +var gLoad = props.globals.getNode("/ECAM/Lower/g-force-display", 1); + +# Hydraulic +var blue_psi = 0; +var green_psi = 0; +var yellow_psi = 0; +var y_resv_lo_air_press = props.globals.getNode("/systems/hydraulic/yellow-resv-lo-air-press", 1); +var b_resv_lo_air_press = props.globals.getNode("/systems/hydraulic/blue-resv-lo-air-press", 1); +var g_resv_lo_air_press = props.globals.getNode("/systems/hydraulic/green-resv-lo-air-press", 1); +var elec_pump_y_ovht = props.globals.getNode("/systems/hydraulic/elec-pump-yellow-ovht", 1); +var elec_pump_b_ovht = props.globals.getNode("/systems/hydraulic/elec-pump-blue-ovht", 1); +var rat_deployed = props.globals.getNode("/controls/hydraulic/rat-deployed", 1); +var y_resv_ovht = props.globals.getNode("/systems/hydraulic/yellow-resv-ovht", 1); +var b_resv_ovht = props.globals.getNode("/systems/hydraulic/blue-resv-ovht", 1); +var g_resv_ovht = props.globals.getNode("/systems/hydraulic/green-resv-ovht", 1); +var askidsw = 0; +var brakemode = 0; +var accum = 0; +var L1BrakeTempc = props.globals.getNode("/gear/gear[1]/L1brake-temp-degc", 1); +var L2BrakeTempc = props.globals.getNode("/gear/gear[1]/L2brake-temp-degc", 1); +var R3BrakeTempc = props.globals.getNode("/gear/gear[2]/R3brake-temp-degc", 1); +var R4BrakeTempc = props.globals.getNode("/gear/gear[2]/R4brake-temp-degc", 1); + +var eng1_running = props.globals.getNode("/engines/engine[0]/running", 1); +var eng2_running = props.globals.getNode("/engines/engine[1]/running", 1); +var switch_cart = props.globals.getNode("/controls/electrical/ground-cart", 1); +var spoiler_L1 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l1/final-deg", 1); +var spoiler_L2 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l2/final-deg", 1); +var spoiler_L3 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l3/final-deg", 1); +var spoiler_L4 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l4/final-deg", 1); +var spoiler_L5 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l5/final-deg", 1); +var spoiler_R1 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r1/final-deg", 1); +var spoiler_R2 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r2/final-deg", 1); +var spoiler_R3 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r3/final-deg", 1); +var spoiler_R4 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r4/final-deg", 1); +var spoiler_R5 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r5/final-deg", 1); +var total_fuel_lbs = props.globals.getNode("/consumables/fuel/total-fuel-lbs", 1); +var fuel_flow1 = props.globals.getNode("/engines/engine[0]/fuel-flow_actual", 1); +var fuel_flow2 = props.globals.getNode("/engines/engine[1]/fuel-flow_actual", 1); +var fuel_left_outer_temp = props.globals.getNode("/consumables/fuel/tank[0]/temperature_degC", 1); +var fuel_left_inner_temp = props.globals.getNode("/consumables/fuel/tank[1]/temperature_degC", 1); +var fuel_right_outer_temp = props.globals.getNode("/consumables/fuel/tank[4]/temperature_degC", 1); +var fuel_right_inner_temp = props.globals.getNode("/consumables/fuel/tank[3]/temperature_degC", 1); +var cutoff_switch1 = props.globals.getNode("/controls/engines/engine[0]/cutoff-switch", 1); +var cutoff_switch2 = props.globals.getNode("/controls/engines/engine[1]/cutoff-switch", 1); +var autobreak_mode = props.globals.getNode("/controls/autobrake/mode", 1); +var gear1_pos = props.globals.getNode("/gear/gear[0]/position-norm", 1); +var gear2_pos = props.globals.getNode("/gear/gear[1]/position-norm", 1); +var gear3_pos = props.globals.getNode("/gear/gear[2]/position-norm", 1); +var gear_door_L = props.globals.getNode("/systems/hydraulic/gear/door-left", 1); +var gear_door_R = props.globals.getNode("/systems/hydraulic/gear/door-right", 1); +var gear_door_N = props.globals.getNode("/systems/hydraulic/gear/door-nose", 1); +var gear_down = props.globals.getNode("/controls/gear/gear-down", 1); +var press_vs_norm = props.globals.getNode("/systems/pressurization/vs-norm", 1); +var cabinalt = props.globals.getNode("/systems/pressurization/cabinalt-norm", 1); +var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); + +# Create Nodes: + +var canvas_lowerECAM_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() { + var elapsedtime = pts.Sim.Time.elapsedSec.getValue(); + + if (systems.ELEC.Bus.ac2.getValue() >= 110 and lighting_du4.getValue() > 0.01) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= elapsedtime) { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_test.page.show(); + lowerECAM_test.update(); + } else { + lowerECAM_test.page.hide(); + page = ecam_page.getValue(); + if (page == "apu") { + lowerECAM_apu.page.show(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_apu.update(); + } else if (page == "bleed") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.show(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_bleed.update(); + } else if (page == "cond") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.show(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_cond.update(); + } else if (page == "cruise") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.show(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_crz.update(); + } else if (page == "door") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.show(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_door.update(); + } else if (page == "elec") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.show(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_elec.update(); + } else if (page == "eng") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.show(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_eng.update(); + } else if (page == "fctl") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.show(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_fctl.update(); + } else if (page == "fuel") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.show(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_fuel.update(); + } else if (page == "press") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.show(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_press.update(); + } else if (page == "sts") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.show(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + lowerECAM_status.update(); + } else if (page == "hyd") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.show(); + lowerECAM_wheel.page.hide(); + lowerECAM_hyd.update(); + } else if (page == "wheel") { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.show(); + lowerECAM_wheel.update(); + } else { + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + } + } + } else { + lowerECAM_test.page.hide(); + lowerECAM_apu.page.hide(); + lowerECAM_bleed.page.hide(); + lowerECAM_cond.page.hide(); + lowerECAM_crz.page.hide(); + lowerECAM_door.page.hide(); + lowerECAM_elec.page.hide(); + lowerECAM_eng.page.hide(); + lowerECAM_fctl.page.hide(); + lowerECAM_fuel.page.hide(); + lowerECAM_press.page.hide(); + lowerECAM_status.page.hide(); + lowerECAM_hyd.page.hide(); + lowerECAM_wheel.page.hide(); + } + }, + displayedGForce: 0, + updateBottomStatus: func() { + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + + me.gloadStore = gLoad.getValue(); + if ((me.gloadStore == 1 and !me.displayedGForce) or (me.gloadStore != 0 and me.displayedGForce)) { + me.displayedGForce = 1; + me["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", pts.Accelerations.pilotGDamped.getValue())); + me["GLoad"].show(); + } else { + me.displayedGForce = 0; + me["GLoad"].hide(); + } + + me["UTCh"].setText(sprintf("%02d", hour.getValue())); + me["UTCm"].setText(sprintf("%02d", minute.getValue())); + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and ecam.phaseNode.getValue() != 1) { + if (acconfig_weight_kgs.getValue()) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (acconfig_weight_kgs.getValue()) { + me["GW-weight-unit"].setText("KG"); + } else { + me["GW-weight-unit"].setText("LBS"); + } + }, +}; + +var canvas_lowerECAM_apu = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_apu, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUGenOnline","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil", + "text3724","text3728","text3732"]; + }, + update: func() { + + + + var apu_valve_state2 = apu_valve_state.getValue(); + if (apu_valve_state2 == 1) { + me["APUBleedValve"].setRotation(90 * D2R); + } else { + me["APUBleedValve"].setRotation(0); + } + + if (apu_valve_state2 == apu_valve_state.getValue()) { + me["APUBleedValve"].setColor(0.0509,0.7529,0.2941); + me["APUBleedOnline"].show(); + } else { + me["APUBleedValve"].setColor(0.7333,0.3803,0); + me["APUBleedOnline"].hide(); + } + + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_bleed = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_bleed, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit", "BLEED-XFEED", "BLEED-Ram-Air", "BLEED-APU-CIRCLE", "BLEED-HP-Valve-1", + "BLEED-APU-LINES","BLEED-ENG-1", "BLEED-HP-Valve-2", "BLEED-ENG-2", "BLEED-Precooler-1-Inlet-Press", "BLEED-Precooler-1-Outlet-Temp", + "BLEED-Precooler-2-Inlet-Press", "BLEED-Precooler-2-Outlet-Temp", "BLEED-ENG-1-label", "BLEED-ENG-2-label", + "BLEED-GND", "BLEED-Pack-1-Flow-Valve", "BLEED-Pack-2-Flow-Valve", "BLEED-Pack-1-Out-Temp","BLEED-APU-connectionTop", + "BLEED-Pack-1-Comp-Out-Temp", "BLEED-Pack-1-Packflow-needle", "BLEED-Pack-1-Bypass-needle", "BLEED-Pack-2-Out-Temp", + "BLEED-Pack-2-Bypass-needle", "BLEED-Pack-2-Comp-Out-Temp", "BLEED-Pack-2-Packflow-needle", "BLEED-Anti-Ice-Left", + "BLEED-Anti-Ice-Right", "BLEED-HP-2-connection", "BLEED-HP-1-connection", "BLEED-ANTI-ICE-ARROW-LEFT", "BLEED-ANTI-ICE-ARROW-RIGHT", + "BLEED-xbleedLeft","BLEED-xbleedCenter","BLEED-xbleedRight","BLEED-cond-1","BLEED-cond-2","BLEED-cond-3","BLEED-Ram-Air-connection"]; + }, + update: func() { + # X BLEED + xbleedstate = xbleed.getValue(); + xbleedcmdstate = xbleedcmd.getBoolValue(); + if (xbleedcmdstate != xbleedstate) { + me["BLEED-XFEED"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-XFEED"].setColor(0.0509,0.7529,0.2941); + } + + if (xbleedcmdstate == xbleedstate) { + if (xbleedcmdstate) { + me["BLEED-XFEED"].setRotation(0); + } else { + me["BLEED-XFEED"].setRotation(90 * D2R); + } + } else { + me["BLEED-XFEED"].setRotation(45 * D2R); + } + + if (xbleedstate == 1) { + me["BLEED-xbleedCenter"].show(); + me["BLEED-xbleedRight"].show(); + } else { + me["BLEED-xbleedCenter"].hide(); + me["BLEED-xbleedRight"].hide(); + } + + # HP valve 1 + hp_valve_state = hp_valve1_state.getValue(); + + if (hp_valve_state == 1) { + me["BLEED-HP-Valve-1"].setRotation(90 * D2R); + me["BLEED-HP-1-connection"].show(); + } else { + me["BLEED-HP-Valve-1"].setRotation(0); + me["BLEED-HP-1-connection"].hide(); + } + + if (hp_valve_state == hp_valve1.getValue()) { + me["BLEED-HP-Valve-1"].setColor(0.0509,0.7529,0.2941); + } else { + me["BLEED-HP-Valve-1"].setColor(0.7333,0.3803,0); + } + + # HP valve 2 + hp_valve_state = hp_valve2_state.getValue(); + + if (hp_valve_state == 1) { + me["BLEED-HP-Valve-2"].setRotation(90 * D2R); + me["BLEED-HP-2-connection"].show(); + } else { + me["BLEED-HP-Valve-2"].setRotation(0); + me["BLEED-HP-2-connection"].hide(); + } + + if (hp_valve_state == hp_valve2.getValue()) { + me["BLEED-HP-Valve-2"].setColor(0.0509,0.7529,0.2941); + } else { + me["BLEED-HP-Valve-2"].setColor(0.7333,0.3803,0); + } + + # ENG BLEED valve 1 + eng_valve_state = systems.PNEU.Switch.bleed1.getValue(); + bleed_valve_cur = eng_valve1.getValue(); + + if (bleed_valve_cur == 0) { + me["BLEED-ENG-1"].setRotation(0); + } else { + me["BLEED-ENG-1"].setRotation(90 * D2R); + } + + if (eng_valve_state == bleed_valve_cur) { + me["BLEED-ENG-1"].setColor(0.0509,0.7529,0.2941); + } else { + me["BLEED-ENG-1"].setColor(0.7333,0.3803,0); + } + + # APU BLEED valve + var apu_valve_state2 = apu_valve_state.getValue(); + + if (systems.APUNodes.Controls.master.getValue()) { + me["BLEED-APU-LINES"].show(); + if (apu_valve_state2 == 1) { + me["BLEED-APU-CIRCLE"].setRotation(0); + me["BLEED-APU-connectionTop"].show(); + me["BLEED-xbleedLeft"].show(); + } else { + me["BLEED-APU-CIRCLE"].setRotation(90 * D2R); + me["BLEED-APU-connectionTop"].hide(); + if (xbleed.getValue() != 1) { + me["BLEED-xbleedLeft"].hide(); + } else { + me["BLEED-xbleedLeft"].show(); + } + } + if (apuBleedNotOn.getValue() != 1) { + me["BLEED-APU-CIRCLE"].setColor(0.0509,0.7529,0.2941); + } else { + me["BLEED-APU-CIRCLE"].setColor(0.7333,0.3803,0); + } + } else { + if (xbleed.getValue() != 1) { + me["BLEED-xbleedLeft"].hide(); + } else { + me["BLEED-xbleedLeft"].show(); + } + me["BLEED-APU-LINES"].hide(); + me["BLEED-APU-connectionTop"].hide(); + } + + # ENG BLEED valve 2 + eng_valve_state = systems.PNEU.Switch.bleed2.getValue(); + bleed_valve_cur = eng_valve2.getValue(); + + if (bleed_valve_cur == 0) { + me["BLEED-ENG-2"].setRotation(0); + } else { + me["BLEED-ENG-2"].setRotation(90 * D2R); + } + + if (eng_valve_state == bleed_valve_cur) { + me["BLEED-ENG-2"].setColor(0.0509,0.7529,0.2941); + } else { + me["BLEED-ENG-2"].setColor(0.7333,0.3803,0); + } + + # Precooler inlet 1 + bmc1 = bmc1working.getValue(); + bmc2 = bmc2working.getValue(); + + if (bmc1) { + var precooler_psi = precooler1_psi.getValue(); + me["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", math.round(precooler_psi))); + if (precooler_psi < 4 or precooler_psi > 57) { + me["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-Precooler-1-Inlet-Press"].setColor(0.0509,0.7529,0.2941); + } + } else { + me["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", "XX")); + me["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0); + } + + # Precooler inlet 2 + if (bmc2) { + var precooler_psi = precooler2_psi.getValue(); + me["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", math.round(precooler_psi))); + if (precooler_psi < 4 or precooler_psi > 57) { + me["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-Precooler-2-Inlet-Press"].setColor(0.0509,0.7529,0.2941); + } + } else { + me["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", "XX")); + me["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0); + } + + # Precooler outlet 1 + if (bmc1) { + var precooler_temp = precooler1_temp.getValue(); + me["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", math.round(precooler_temp, 5))); + if (systems.PNEU.Switch.bleed1.getValue() and (precooler_temp < 150 or precooler1_ovht.getValue())) { + me["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-Precooler-1-Outlet-Temp"].setColor(0.0509,0.7529,0.2941); + } + } else { + me["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", "XX")); + me["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0); + } + + # Precooler outlet 2 + if (bmc2) { + var precooler_temp = precooler2_temp.getValue(); + me["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", math.round(precooler_temp, 5))); + if (systems.PNEU.Switch.bleed2.getValue() and (precooler_temp < 150 or precooler2_ovht.getValue())) { + me["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-Precooler-2-Outlet-Temp"].setColor(0.0509,0.7529,0.2941); + } + } else { + me["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", "XX")); + me["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0); + } + + # GND air + if (pts.Gear.wow[1].getValue()) { + me["BLEED-GND"].show(); + } else { + me["BLEED-GND"].hide(); + } + + # WING ANTI ICE + if (switch_wing_aice.getValue()) { + me["BLEED-Anti-Ice-Left"].show(); + me["BLEED-Anti-Ice-Right"].show(); + } else { + me["BLEED-Anti-Ice-Left"].hide(); + me["BLEED-Anti-Ice-Right"].hide(); + } + + # ENG 1 label + if (pts.Engines.Engine.n2Actual[0].getValue() >= 59) { + me["BLEED-ENG-1-label"].setColor(0.8078,0.8039,0.8078); + } else { + me["BLEED-ENG-1-label"].setColor(0.7333,0.3803,0); + } + + # ENG 2 label + if (pts.Engines.Engine.n2Actual[1].getValue() >= 59) { + me["BLEED-ENG-2-label"].setColor(0.8078,0.8039,0.8078); + } else { + me["BLEED-ENG-2-label"].setColor(0.7333,0.3803,0); + } + + # PACK 1 ----------------------------------------- + packValveState = systems.PNEU.Valves.pack1.getValue(); + me["BLEED-Pack-1-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack1OutTemp.getValue(), 5))); + me["BLEED-Pack-1-Comp-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack1OutletTemp.getValue(), 5))); + + if (systems.PNEU.Packs.pack1OutTemp.getValue() > 90) { + me["BLEED-Pack-1-Out-Temp"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-Pack-1-Out-Temp"].setColor(0.0509,0.7529,0.2941); + } + + # `-50` cause the middel position from where we move the needle is at 50 + me["BLEED-Pack-1-Bypass-needle"].setRotation((pack1_bypass.getValue() - 50) * D2R); + + if (systems.PNEU.Packs.pack1OutletTemp.getValue() > 230) { + me["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941); + } + + me["BLEED-Pack-1-Packflow-needle"].setRotation(systems.PNEU.Packs.packFlow1.getValue() * D2R); + + if (packValveState == 0) { + me["BLEED-Pack-1-Packflow-needle"].setColorFill(0.7333,0.3803,0); + me["BLEED-Pack-1-Flow-Valve"].setRotation(90 * D2R); + } else { + me["BLEED-Pack-1-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941); + me["BLEED-Pack-1-Flow-Valve"].setRotation(0); + } + + if (packValveState == systems.PNEU.Switch.pack1.getValue()) { + me["BLEED-Pack-1-Flow-Valve"].setColor(0.0509,0.7529,0.2941); + } else { + me["BLEED-Pack-1-Flow-Valve"].setColor(0.7333,0.3803,0); + } + + # PACK 2 ----------------------------------------- + packValveState = systems.PNEU.Valves.pack2.getValue(); + me["BLEED-Pack-2-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack2OutTemp.getValue(), 5))); + me["BLEED-Pack-2-Comp-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack2OutletTemp.getValue(), 5))); + + if (systems.PNEU.Packs.pack2OutTemp.getValue() > 90) { + me["BLEED-Pack-2-Out-Temp"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-Pack-2-Out-Temp"].setColor(0.0509,0.7529,0.2941); + } + + me["BLEED-Pack-2-Bypass-needle"].setRotation((pack2_bypass.getValue() - 50) * D2R); + + if (systems.PNEU.Packs.pack2OutletTemp.getValue() > 230) { + me["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941); + } + + me["BLEED-Pack-2-Packflow-needle"].setRotation(systems.PNEU.Packs.packFlow2.getValue() * D2R); + + if (packValveState == 0) { + me["BLEED-Pack-2-Packflow-needle"].setColorFill(0.7333,0.3803,0); + me["BLEED-Pack-2-Flow-Valve"].setRotation(90 * D2R); + } else { + me["BLEED-Pack-2-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941); + me["BLEED-Pack-2-Flow-Valve"].setRotation(0); + } + + if (packValveState == systems.PNEU.Switch.pack2.getValue()) { + me["BLEED-Pack-2-Flow-Valve"].setColor(0.0509,0.7529,0.2941); + } else { + me["BLEED-Pack-2-Flow-Valve"].setColor(0.7333,0.3803,0); + } + + # Ram Air + ramAirState = systems.PNEU.Valves.ramAir.getValue(); + if (ramAirState == 0) { + me["BLEED-Ram-Air"].setRotation(90 * D2R); + me["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941); + me["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941); + me["BLEED-Ram-Air-connection"].hide(); + } elsif (ramAirState) { + me["BLEED-Ram-Air"].setRotation(0); + if (pts.Gear.wow[1].getValue()) { + me["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); + me["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); + } else { + me["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941); + me["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941); + } + me["BLEED-Ram-Air-connection"].show(); + } else { + me["BLEED-Ram-Air"].setRotation(45 * D2R); + me["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); + me["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); + me["BLEED-Ram-Air-connection"].show(); + } + + # Triangles + if (systems.PNEU.Valves.pack1.getValue() == 0 and systems.PNEU.Valves.pack2.getValue() == 0) { + if (pts.Gear.wow[1].getValue() or ramAirState != 1) { + me["BLEED-cond-1"].setColor(0.7333,0.3803,0); + me["BLEED-cond-2"].setColor(0.7333,0.3803,0); + me["BLEED-cond-3"].setColor(0.7333,0.3803,0); + } else { + me["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941); + me["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941); + me["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941); + } + } else { + me["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941); + me["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941); + me["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941); + } + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_cond = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_cond, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","CargoCond","CONDHotAirValve","CONDFanFwdFault","CONDFanAftFault", + "CONDTrimValveCKPT","CONDTrimValveAFT","CONDTrimValveFWD","CONDDuctTempCKPT","CONDDuctTempAFT","CONDDuctTempFWD","CONDTempCKPT","CONDTempAFT","CONDTempFWD"]; + }, + update: func() { + if (systems.PNEU.Valves.hotAir.getValue() == 0) { + me["CONDHotAirValve"].setRotation(90 * D2R); + if (systems.PNEU.Switch.hotAir.getBoolValue()) { + me["CONDHotAirValve"].setColor(0.7333,0.3803,0); + } else { + me["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941); + } + } else { + me["CONDHotAirValve"].setRotation(0); # doesn't show rotation in transit + if (systems.PNEU.Switch.hotAir.getBoolValue()) { + me["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941); + } else { + me["CONDHotAirValve"].setColor(0.7333,0.3803,0); + } + } + + me["CONDTrimValveCKPT"].setRotation(systems.PNEU.Packs.trimCockpit.getValue() * D2R); + me["CONDTrimValveAFT"].setRotation(systems.PNEU.Packs.trimAft.getValue() * D2R); + me["CONDTrimValveFWD"].setRotation(systems.PNEU.Packs.trimFwd.getValue() * D2R); + + me["CONDDuctTempCKPT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cockpitDuctTemp.getValue()))); + me["CONDDuctTempAFT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinAftDuctTemp.getValue()))); + me["CONDDuctTempFWD"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinFwdDuctTemp.getValue()))); + + me["CONDTempCKPT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cockpitTemp.getValue()))); + me["CONDTempAFT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinAftTemp.getValue()))); + me["CONDTempFWD"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinFwdTemp.getValue()))); + + # fans faults not implemented + me["CONDFanFwdFault"].hide(); + me["CONDFanAftFault"].hide(); + + # aft cargo ventilation disabled + me["CargoCond"].hide(); + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_crz = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_crz, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Oil1","Oil2","FUsed1","FUsed2","FUsed","VIB1N1","VIB1N2","VIB2N1","VIB2N2","deltaPSI","LDGELEV-AUTO","LDGELEV","CABVS","CABALT","VS-Arrow-UP","VS-Arrow-DN","CKPT-TEMP","FWD-TEMP","AFT-TEMP","Fused-weight-unit"]; + }, + update: func() { + + me["Oil1"].setText(sprintf("%2.1f", oil_qt1_actual.getValue())); + me["Oil2"].setText(sprintf("%2.1f", oil_qt2_actual.getValue())); + + if (acconfig_weight_kgs.getValue()) { + me["Fused-weight-unit"].setText("KG"); + me["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); + me["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); + me["FUsed"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10) + math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10)))); + } else { + me["Fused-weight-unit"].setText("LBS"); + me["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); + me["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); + me["FUsed"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue(), 10) + math.round(fuel_used_lbs2.getValue(), 10)))); + } + + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_door = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_door, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"]; + }, + update: func() { + # If you make AirBerlin or Allegiant livery add below + + if (doorL1_pos.getValue() > 0) { + me["Cabin1Left"].show(); + me["Cabin1Left"].setColor(0.7333,0.3803,0); + me["Cabin1Left"].setColorFill(0.7333,0.3803,0); + me["Cabin1LeftLbl"].show(); + me["Cabin1LeftLine"].show(); + } else { + me["Cabin1Left"].setColor(0.0509,0.7529,0.2941); + me["Cabin1Left"].setColorFill(0,0,0); + me["Cabin1LeftLbl"].hide(); + me["Cabin1LeftLine"].hide(); + } + + if (doorR1_pos.getValue() > 0) { + me["Cabin1Right"].show(); + me["Cabin1Right"].setColor(0.7333,0.3803,0); + me["Cabin1Right"].setColorFill(0.7333,0.3803,0); + me["Cabin1RightLbl"].show(); + me["Cabin1RightLine"].show(); + } else { + me["Cabin1Right"].setColor(0.0509,0.7529,0.2941); + me["Cabin1Right"].setColorFill(0,0,0); + me["Cabin1RightLbl"].hide(); + me["Cabin1RightLine"].hide(); + } + + if (doorL4_pos.getValue() > 0) { + me["Cabin4Left"].show(); + me["Cabin4Left"].setColor(0.7333,0.3803,0); + me["Cabin4Left"].setColorFill(0.7333,0.3803,0); + me["Cabin4LeftLbl"].show(); + me["Cabin4LeftLine"].show(); + } else { + me["Cabin4Left"].setColor(0.0509,0.7529,0.2941); + me["Cabin4Left"].setColorFill(0,0,0); + me["Cabin4LeftLbl"].hide(); + me["Cabin4LeftLine"].hide(); + } + + if (doorR4_pos.getValue() > 0) { + me["Cabin4Right"].show(); + me["Cabin4Right"].setColor(0.7333,0.3803,0); + me["Cabin4Right"].setColorFill(0.7333,0.3803,0); + me["Cabin4RightLbl"].show(); + me["Cabin4RightLine"].show(); + } else { + me["Cabin4Right"].setColor(0.0509,0.7529,0.2941); + me["Cabin4Right"].setColorFill(0,0,0); + me["Cabin4RightLbl"].hide(); + me["Cabin4RightLine"].hide(); + } + + if (cargobulk_pos.getValue() > 0) { + me["Bulk"].setColor(0.7333,0.3803,0); + me["Bulk"].setColorFill(0.7333,0.3803,0); + me["BulkLbl"].show(); + me["BulkLine"].show(); + } else { + me["Bulk"].setColor(0.0509,0.7529,0.2941); + me["Bulk"].setColorFill(0,0,0); + me["BulkLbl"].hide(); + me["BulkLine"].hide(); + } + + if (cargofwd_pos.getValue() > 0) { + me["Cargo1Door"].setColor(0.7333,0.3803,0); + me["Cargo1Door"].setColorFill(0.7333,0.3803,0); + me["Cargo1Lbl"].show(); + me["Cargo1Line"].show(); + } else { + me["Cargo1Door"].setColor(0.0509,0.7529,0.2941); + me["Cargo1Door"].setColorFill(0,0,0); + me["Cargo1Lbl"].hide(); + me["Cargo1Line"].hide(); + } + + if (cargoaft_pos.getValue() > 0) { + me["Cargo2Door"].setColor(0.7333,0.3803,0); + me["Cargo2Door"].setColorFill(0.7333,0.3803,0); + me["Cargo2Lbl"].show(); + me["Cargo2Line"].show(); + } else { + me["Cargo2Door"].setColor(0.0509,0.7529,0.2941); + me["Cargo2Door"].setColorFill(0,0,0); + me["Cargo2Lbl"].hide(); + me["Cargo2Line"].hide(); + } + + me["Cabin1LeftSlide"].hide(); + me["Cabin1RightSlide"].hide(); + me["Cabin2LeftSlide"].hide(); + me["Cabin2RightSlide"].hide(); + me["Cabin3LeftSlide"].hide(); + me["Cabin3RightSlide"].hide(); + me["Cabin4LeftSlide"].hide(); + me["Cabin4RightSlide"].hide(); + + me["DOOROXY-REGUL-LO-PR"].hide(); + me["AvionicsLine1"].hide(); + me["AvionicsLine2"].hide(); + me["AvionicsLbl1"].hide(); + me["AvionicsLbl2"].hide(); + me["ExitLSlide"].hide(); + me["ExitLLine"].hide(); + me["ExitLLbl"].hide(); + me["ExitRSlide"].hide(); + me["ExitRLine"].hide(); + me["ExitRLbl"].hide(); + me["Cabin1LeftSlide"].hide(); + me["Cabin1RightSlide"].hide(); + me["Cabin4LeftSlide"].hide(); + me["Cabin4RightSlide"].hide(); + me["Cabin2Left"].hide(); + me["Cabin2LeftLine"].hide(); + me["Cabin2LeftLbl"].hide(); + me["Cabin2Right"].hide(); + me["Cabin2RightLine"].hide(); + me["Cabin2RightLbl"].hide(); + me["Cabin3Left"].hide(); + me["Cabin3LeftLine"].hide(); + me["Cabin3LeftLbl"].hide(); + me["Cabin3Right"].hide(); + me["Cabin3RightLine"].hide(); + me["Cabin3RightLbl"].hide(); + + me.updateBottomStatus(); + }, +}; + +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","UTCh","UTCm","GLoad","GW-weight-unit","BAT1-label","Bat1Volt","Bat1Ampere","BAT2-label","Bat2Volt","Bat2Ampere","BAT1-charge","BAT1-discharge","BAT2-charge","BAT2-discharge","ELEC-Line-DC1-DCBAT","ELEC-Line-DC1-DCESS","ELEC-Line-DC2-DCBAT", + "ELEC-Line-DC1-DCESS_DCBAT","ELEC-Line-DC2-DCESS_DCBAT","ELEC-Line-TR1-DC1","ELEC-Line-TR2-DC2","Shed-label","ELEC-Line-ESSTR-DCESS","TR1-label","TR1Volt","TR1Ampere","TR2-label","TR2Volt","TR2Ampere","EMERGEN-group","EmergenVolt","EmergenHz", + "ELEC-Line-Emergen-ESSTR","EMERGEN-Label-off","Emergen-Label","EMERGEN-out","ELEC-Line-ACESS-TRESS","ELEC-Line-AC1-TR1","ELEC-Line-AC2-TR2","ELEC-Line-AC1-ACESS","ELEC-Line-AC2-ACESS","ACESS-SHED","ACESS","AC1-in","AC2-in","ELEC-Line-GEN1-AC1","ELEC-Line-GEN2-AC2", + "ELEC-Line-APU-AC1","ELEC-Line-APU-EXT","ELEC-Line-EXT-AC2","APU-out","EXT-out","EXTPWR-group","ExtVolt","ExtHz","APU-content","APU-border","APUGentext","APUGenLoad","APUGenVolt","APUGenHz","APUGEN-off","GEN1-label","Gen1Load","Gen1Volt","Gen1Hz", + "GEN2-label","Gen2Load","GEN2-off","Gen2Volt","Gen2Hz","ELEC-IDG-1-label","ELEC-IDG-1-num-label","ELEC-IDG-1-Temp","IDG1-LOPR","IDG1-DISC","IDG1-RISE-Value","IDG1-RISE-label","GalleyShed","ELEC-IDG-2-Temp","ELEC-IDG-2-label","ELEC-IDG-2-num-label","IDG2-RISE-label","IDG2-RISE-Value","IDG2-LOPR", + "IDG2-DISC","ESSTR-group","ESSTR","ESSTR-Volt","ESSTR-Ampere","BAT1-content","BAT2-content","BAT1-OFF","BAT2-OFF","GEN1-content","GEN2-content","GEN-1-num-label","GEN-2-num-label","GEN1-off","GEN2-off","GEN1-num-label","GEN2-num-label","EXTPWR-label", + "ELEC-ACESS-SHED-label","ELEC-DCBAT-label","ELEC-DCESS-label","ELEC-DC2-label","ELEC-DC1-label","ELEC-AC1-label","ELEC-AC2-label","ELEC-ACESS-label","ELEC-Line-ESSTR-DCESS-off","ELEC-Line-Emergen-ESSTR-off"]; + }, + update: func() { + + # BAT1 + if (systems.ELEC.Switch.bat1.getValue() == 0) { + me["BAT1-OFF"].show(); + me["BAT1-content"].hide(); + me["BAT1-discharge"].hide(); + me["BAT1-charge"].hide(); + } else { + me["BAT1-OFF"].hide(); + me["BAT1-content"].show(); + me["Bat1Ampere"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat1.amps.getValue()))); + me["Bat1Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat1.volt.getValue()))); + + if (systems.ELEC.Source.Bat1.volt.getValue() >= 24.95 and systems.ELEC.Source.Bat1.volt.getValue() <= 31.05) { + me["Bat1Volt"].setColor(0.0509,0.7529,0.2941); + } else { + me["Bat1Volt"].setColor(0.7333,0.3803,0); + } + + if (systems.ELEC.Source.Bat1.amps.getValue() > 5) { + me["Bat1Ampere"].setColor(0.7333,0.3803,0); + } else { + me["Bat1Ampere"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.Bat1.direction.getValue() == 0) { + me["BAT1-discharge"].hide(); + me["BAT1-charge"].hide(); + } else { + if (systems.ELEC.Source.Bat1.direction.getValue() == -1) { + me["BAT1-charge"].show(); + me["BAT1-discharge"].hide(); + } else { + me["BAT1-discharge"].show(); + me["BAT1-charge"].hide(); + } + } + } + + if (systems.ELEC.Light.bat1Fault.getValue() or systems.ELEC.Source.Bat1.volt.getValue() < 25 or systems.ELEC.Source.Bat1.volt.getValue() > 31 or systems.ELEC.Source.Bat1.amps.getValue() > 5) { + me["BAT1-label"].setColor(0.7333,0.3803,0); + } else { + me["BAT1-label"].setColor(0.8078,0.8039,0.8078); + } + + # BAT2 + if (systems.ELEC.Switch.bat2.getValue() == 0) { + me["BAT2-OFF"].show(); + me["BAT2-content"].hide(); + me["BAT2-discharge"].hide(); + me["BAT2-charge"].hide(); + } else { + me["BAT2-OFF"].hide(); + me["BAT2-content"].show(); + me["Bat2Ampere"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat2.amps.getValue()))); + me["Bat2Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat2.volt.getValue()))); + + if (systems.ELEC.Source.Bat2.volt.getValue() >= 24.95 and systems.ELEC.Source.Bat2.volt.getValue() <= 31.05) { + me["Bat2Volt"].setColor(0.0509,0.7529,0.2941); + } else { + me["Bat2Volt"].setColor(0.7333,0.3803,0); + } + + if (systems.ELEC.Source.Bat2.amps.getValue() > 5) { + me["Bat2Ampere"].setColor(0.7333,0.3803,0); + } else { + me["Bat2Ampere"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.Bat2.direction.getValue() == 0) { + me["BAT2-discharge"].hide(); + me["BAT2-charge"].hide(); + } else { + if (systems.ELEC.Source.Bat2.direction.getValue() == -1) { + me["BAT2-charge"].show(); + me["BAT2-discharge"].hide(); + } else { + me["BAT2-discharge"].show(); + me["BAT2-charge"].hide(); + } + } + } + + if (systems.ELEC.Light.bat2Fault.getValue() or systems.ELEC.Source.Bat2.volt.getValue() < 25 or systems.ELEC.Source.Bat2.volt.getValue() > 31 or systems.ELEC.Source.Bat2.amps.getValue() > 5) { + me["BAT2-label"].setColor(0.7333,0.3803,0); + } else { + me["BAT2-label"].setColor(0.8078,0.8039,0.8078); + } + + # TR1 + # is only powered when ac1 has power + tr1_v = systems.ELEC.Source.tr1.outputVolt.getValue(); + tr1_a = systems.ELEC.Source.tr1.outputAmp.getValue(); + + me["TR1Volt"].setText(sprintf("%s", math.round(tr1_v))); + me["TR1Ampere"].setText(sprintf("%s", math.round(tr1_a))); + + if (tr1_v < 25 or tr1_v > 31 or tr1_a < 5) { + me["TR1-label"].setColor(0.7333,0.3803,0); + } else { + me["TR1-label"].setColor(0.8078,0.8039,0.8078); + } + + if (tr1_v < 25 or tr1_v > 31) { + me["TR1Volt"].setColor(0.7333,0.3803,0); + } else { + me["TR1Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (tr1_a < 5) { + me["TR1Ampere"].setColor(0.7333,0.3803,0); + } else { + me["TR1Ampere"].setColor(0.0509,0.7529,0.2941); + } + + # TR2 + # is only powered when ac2 has power + tr2_v = systems.ELEC.Source.tr2.outputVolt.getValue(); + tr2_a = systems.ELEC.Source.tr2.outputAmp.getValue(); + + me["TR2Volt"].setText(sprintf("%s", math.round(tr2_v))); + me["TR2Ampere"].setText(sprintf("%s", math.round(tr2_a))); + + if (tr2_v < 25 or tr2_v > 31 or tr2_a < 5) { + me["TR2-label"].setColor(0.7333,0.3803,0); + } else { + me["TR2-label"].setColor(0.8078,0.8039,0.8078); + } + + if (tr2_v < 25 or tr2_v > 31) { + me["TR2Volt"].setColor(0.7333,0.3803,0); + } else { + me["TR2Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (tr2_a < 5) { + me["TR2Ampere"].setColor(0.7333,0.3803,0); + } else { + me["TR2Ampere"].setColor(0.0509,0.7529,0.2941); + } + + # ESS TR + essTrvolts = systems.ELEC.Source.trEss.outputVoltRelay.getValue(); + essTramps = systems.ELEC.Source.trEss.outputAmpRelay.getValue(); + if (systems.ELEC.Relay.essTrContactor.getValue()) { + me["ESSTR-group"].show(); + me["ESSTR-Volt"].setText(sprintf("%s", math.round(essTrvolts))); + me["ESSTR-Ampere"].setText(sprintf("%s", math.round(essTramps))); + + if (essTrvolts < 25 or essTrvolts > 31 or essTramps < 5) { + me["ESSTR"].setColor(0.7333,0.3803,0); + } else { + me["ESSTR"].setColor(0.8078,0.8039,0.8078); + } + + if (essTrvolts < 25 or essTrvolts > 31) { + me["ESSTR-Volt"].setColor(0.7333,0.3803,0); + } else { + me["ESSTR-Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (essTramps < 5) { + me["ESSTR-Ampere"].setColor(0.7333,0.3803,0); + } else { + me["ESSTR-Ampere"].setColor(0.0509,0.7529,0.2941); + } + } else { + me["ESSTR-group"].hide(); + } + + # EMER GEN + if (systems.ELEC.Source.EmerGen.volts.getValue() == 0) { + me["EMERGEN-group"].hide(); + me["ELEC-Line-Emergen-ESSTR"].hide(); + me["ELEC-Line-Emergen-ESSTR-off"].show(); + me["EMERGEN-Label-off"].show(); + } else { + me["EMERGEN-group"].show(); + me["ELEC-Line-Emergen-ESSTR"].show(); + me["ELEC-Line-Emergen-ESSTR-off"].hide(); + me["EMERGEN-Label-off"].hide(); + + me["EmergenVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.EmerGen.voltsRelay.getValue()))); + me["EmergenHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.EmerGen.hertz.getValue()))); + + if (systems.ELEC.Source.EmerGen.voltsRelay.getValue() > 120 or systems.ELEC.Source.EmerGen.voltsRelay.getValue() < 110 or systems.ELEC.Source.EmerGen.hertz.getValue() > 410 or systems.ELEC.Source.EmerGen.hertz.getValue() < 390) { + me["Emergen-Label"].setColor(0.7333,0.3803,0); + } else { + me["Emergen-Label"].setColor(0.8078,0.8039,0.8078); + } + + if (systems.ELEC.Source.EmerGen.voltsRelay.getValue() > 120 or systems.ELEC.Source.EmerGen.voltsRelay.getValue() < 110) { + me["EmergenVolt"].setColor(0.7333,0.3803,0); + } else { + me["EmergenVolt"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.EmerGen.hertz.getValue() > 410 or systems.ELEC.Source.EmerGen.hertz.getValue() < 390) { + me["EmergenHz"].setColor(0.7333,0.3803,0); + } else { + me["EmergenHz"].setColor(0.0509,0.7529,0.2941); + } + } + + # IDG 1 + if (!systems.ELEC.Switch.idg1Disc.getBoolValue()) { + me["IDG1-DISC"].show(); + me["ELEC-IDG-1-label"].setColor(0.7333,0.3803,0); + } else { + me["IDG1-DISC"].hide(); + me["ELEC-IDG-1-label"].setColor(0.8078,0.8039,0.8078); + } + + if (eng1_running.getValue() == 0) { + me["ELEC-IDG-1-num-label"].setColor(0.7333,0.3803,0); + } else { + me["ELEC-IDG-1-num-label"].setColor(0.8078,0.8039,0.8078); + } + + if (eng2_running.getValue() == 0) { + me["ELEC-IDG-2-num-label"].setColor(0.7333,0.3803,0); + } else { + me["ELEC-IDG-2-num-label"].setColor(0.8078,0.8039,0.8078); + } + + # IDG 2 + if (!systems.ELEC.Switch.idg2Disc.getBoolValue()) { + me["IDG2-DISC"].show(); + me["ELEC-IDG-2-label"].setColor(0.7333,0.3803,0); + } else { + me["IDG2-DISC"].hide(); + me["ELEC-IDG-2-label"].setColor(0.8078,0.8039,0.8078); + } + + # GEN1 + if (systems.ELEC.Switch.gen1.getValue() == 0) { + me["GEN1-content"].hide(); + me["GEN1-off"].show(); + if (systems.ELEC.Source.IDG1.gcrRelay.getValue()) { + me["GEN1-label"].setColor(0.7333,0.3803,0); + } else { + me["GEN1-label"].setColor(0.8078,0.8039,0.8078); + } + + if (eng1_running.getValue() == 0) { + me["GEN1-num-label"].setColor(0.7333,0.3803,0); + } else { + me["GEN1-num-label"].setColor(0.8078,0.8039,0.8078); + } + } else { + me["GEN1-content"].show(); + me["GEN1-off"].hide(); + # me["Gen1Load"].setText(sprintf("%s", math.round(gen1_load.getValue()))); + me["Gen1Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG1.volts.getValue()))); + + if (systems.ELEC.Source.IDG1.hertz.getValue() == 0) { + me["Gen1Hz"].setText(sprintf("XX")); + } else { + me["Gen1Hz"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG1.hertz.getValue()))); + } + + if (eng1_running.getValue() == 0) { + me["GEN1-num-label"].setColor(0.7333,0.3803,0); + } else { + me["GEN1-num-label"].setColor(0.8078,0.8039,0.8078); + } + + if (systems.ELEC.Source.IDG1.volts.getValue() > 120 or systems.ELEC.Source.IDG1.volts.getValue() < 110 or systems.ELEC.Source.IDG1.hertz.getValue() > 410 or systems.ELEC.Source.IDG1.hertz.getValue() < 390 or gen1_load.getValue() >= 110) { + me["GEN1-label"].setColor(0.7333,0.3803,0); + } else { + me["GEN1-label"].setColor(0.8078,0.8039,0.8078); + } + + if (gen1_load.getValue() >= 110) { + me["Gen1Load"].setColor(0.7333,0.3803,0); + } else { + me["Gen1Load"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.IDG1.volts.getValue() > 120 or systems.ELEC.Source.IDG1.volts.getValue() < 110) { + me["Gen1Volt"].setColor(0.7333,0.3803,0); + } else { + me["Gen1Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.IDG1.hertz.getValue() > 410 or systems.ELEC.Source.IDG1.hertz.getValue() < 390) { + me["Gen1Hz"].setColor(0.7333,0.3803,0); + } else { + me["Gen1Hz"].setColor(0.0509,0.7529,0.2941); + } + } + + # GEN2 + if (systems.ELEC.Switch.gen2.getValue() == 0) { + me["GEN2-content"].hide(); + me["GEN2-off"].show(); + if (systems.ELEC.Source.IDG2.gcrRelay.getValue()) { + me["GEN2-label"].setColor(0.7333,0.3803,0); + } else { + me["GEN2-label"].setColor(0.8078,0.8039,0.8078); + } + + if (eng2_running.getValue() == 0) { + me["GEN2-num-label"].setColor(0.7333,0.3803,0); + } else { + me["GEN2-num-label"].setColor(0.8078,0.8039,0.8078); + } + } else { + me["GEN2-content"].show(); + me["GEN2-off"].hide(); + # me["Gen2Load"].setText(sprintf("%s", math.round(gen2_load.getValue()))); + me["Gen2Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG2.volts.getValue()))); + if (systems.ELEC.Source.IDG2.hertz.getValue() == 0) { + me["Gen2Hz"].setText(sprintf("XX")); + } else { + me["Gen2Hz"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG2.hertz.getValue()))); + } + + if (eng2_running.getValue() == 0) { + me["GEN2-num-label"].setColor(0.7333,0.3803,0); + } else { + me["GEN2-num-label"].setColor(0.8078,0.8039,0.8078); + } + + if (systems.ELEC.Source.IDG2.volts.getValue() > 120 or systems.ELEC.Source.IDG2.volts.getValue() < 110 or systems.ELEC.Source.IDG2.hertz.getValue() > 410 or systems.ELEC.Source.IDG2.hertz.getValue() < 390 or gen2_load.getValue() >= 110) { + me["GEN2-label"].setColor(0.7333,0.3803,0); + } else { + me["GEN2-label"].setColor(0.8078,0.8039,0.8078); + } + + if (gen2_load.getValue() >= 110) { + me["Gen2Load"].setColor(0.7333,0.3803,0); + } else { + me["Gen2Load"].setColor(0.0509,0.7529,0.2941); + } + + + if (systems.ELEC.Source.IDG2.volts.getValue() > 120 or systems.ELEC.Source.IDG2.volts.getValue() < 110) { + me["Gen2Volt"].setColor(0.7333,0.3803,0); + } else { + me["Gen2Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.IDG2.hertz.getValue() > 410 or systems.ELEC.Source.IDG2.hertz.getValue() < 390) { + me["Gen2Hz"].setColor(0.7333,0.3803,0); + } else { + me["Gen2Hz"].setColor(0.0509,0.7529,0.2941); + } + } + + # APU + if (systems.APUNodes.Controls.master.getValue() == 0) { + me["APU-content"].hide(); + me["APUGEN-off"].hide(); + me["APU-border"].hide(); + me["APUGentext"].setColor(0.8078,0.8039,0.8078); + } else { + me["APU-border"].show(); + if (systems.ELEC.Source.APU.contact.getValue() == 0) { + me["APU-content"].hide(); + me["APUGEN-off"].show(); + me["APUGentext"].setColor(0.7333,0.3803,0); + } else { + me["APU-content"].show(); + me["APUGEN-off"].hide(); + # me["APUGenLoad"].setText(sprintf("%s", math.round(apu_load.getValue()))); + me["APUGenVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.APU.volts.getValue()))); + + if (systems.ELEC.Source.APU.hertz.getValue() == 0) { + me["APUGenHz"].setText(sprintf("XX")); + } else { + me["APUGenHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.APU.hertz.getValue()))); + } + + if (systems.ELEC.Source.APU.volts.getValue() > 120 or systems.ELEC.Source.APU.volts.getValue() < 110 or systems.ELEC.Source.APU.hertz.getValue() > 410 or systems.ELEC.Source.APU.hertz.getValue() < 390 or apu_load.getValue() >= 110) { + me["APUGentext"].setColor(0.7333,0.3803,0); + } else { + me["APUGentext"].setColor(0.8078,0.8039,0.8078); + } + + if(apu_load.getValue() >= 110) { + me["APUGenLoad"].setColor(0.7333,0.3803,0); + } else { + me["APUGenLoad"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.APU.volts.getValue() > 120 or systems.ELEC.Source.APU.volts.getValue() < 110) { + me["APUGenVolt"].setColor(0.7333,0.3803,0); + } else { + me["APUGenVolt"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.APU.hertz.getValue() > 410 or systems.ELEC.Source.APU.hertz.getValue() < 390) { + me["APUGenHz"].setColor(0.7333,0.3803,0); + } else { + me["APUGenHz"].setColor(0.0509,0.7529,0.2941); + } + } + } + + # EXT PWR + + if (switch_cart.getValue() == 0) { + me["EXTPWR-group"].hide(); + } else { + me["EXTPWR-group"].show(); + me["ExtVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.Ext.volts.getValue()))); + me["ExtHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.Ext.hertz.getValue()))); + + if (systems.ELEC.Source.Ext.hertz.getValue() > 410 or systems.ELEC.Source.Ext.hertz.getValue() < 390 or systems.ELEC.Source.Ext.volts.getValue() > 120 or systems.ELEC.Source.Ext.volts.getValue() < 110) { + me["EXTPWR-label"].setColor(0.7333,0.3803,0); + } else { + me["EXTPWR-label"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.Ext.hertz.getValue() > 410 or systems.ELEC.Source.Ext.hertz.getValue() < 390) { + me["ExtHz"].setColor(0.7333,0.3803,0); + } else { + me["ExtHz"].setColor(0.0509,0.7529,0.2941); + } + + if (systems.ELEC.Source.Ext.volts.getValue() > 120 or systems.ELEC.Source.Ext.volts.getValue() < 110) { + me["ExtVolt"].setColor(0.7333,0.3803,0); + } else { + me["ExtVolt"].setColor(0.0509,0.7529,0.2941); + } + } + + if (systems.ELEC.SomeThing.galley.getValue()) { + me["GalleyShed"].show(); + } else { + me["GalleyShed"].hide(); + } + + # Bus indicators + if (systems.ELEC.Switch.bat1.getValue() or systems.ELEC.Switch.bat2.getValue()) { + me["ELEC-DCBAT-label"].setText("DC BAT"); + if (systems.ELEC.Bus.dcBat.getValue() > 25) { + me["ELEC-DCBAT-label"].setColor(0.0509,0.7529,0.2941); + } else { + me["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0); + } + } else { + me["ELEC-DCBAT-label"].setText("XX"); # BCL not powered hence no voltage info supplied from BCL + me["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0); + } + + if (systems.ELEC.Bus.dc1.getValue() > 25) { + me["ELEC-DC1-label"].setColor(0.0509,0.7529,0.2941); + } else { + me["ELEC-DC1-label"].setColor(0.7333,0.3803,0); + } + + if (systems.ELEC.Bus.dc2.getValue() > 25) { + me["ELEC-DC2-label"].setColor(0.0509,0.7529,0.2941); + } else { + me["ELEC-DC2-label"].setColor(0.7333,0.3803,0); + } + + if (systems.ELEC.Bus.dcEss.getValue() > 25) { + me["ELEC-DCESS-label"].setColor(0.0509,0.7529,0.2941); + } else { + me["ELEC-DCESS-label"].setColor(0.7333,0.3803,0); + } + + if (systems.ELEC.Bus.acEss.getValue() >= 110) { + me["ELEC-ACESS-label"].setColor(0.0509,0.7529,0.2941); + } else { + me["ELEC-ACESS-label"].setColor(0.7333,0.3803,0); + } + + if (systems.ELEC.Bus.acEssShed.getValue() >= 110) { + me["ACESS-SHED"].hide(); + } else { + me["ACESS-SHED"].show(); + } + + if (systems.ELEC.Bus.ac1.getValue() >= 110) { + me["ELEC-AC1-label"].setColor(0.0509,0.7529,0.2941); + } else { + me["ELEC-AC1-label"].setColor(0.7333,0.3803,0); + } + + if (systems.ELEC.Bus.ac2.getValue() >= 110) { + me["ELEC-AC2-label"].setColor(0.0509,0.7529,0.2941); + } else { + me["ELEC-AC2-label"].setColor(0.7333,0.3803,0); + } + + + # Managment of the connecting lines between the components + if (systems.ELEC.Relay.apuGlc.getValue() and (systems.ELEC.Relay.acTie1.getValue() or systems.ELEC.Relay.acTie2.getValue())) { + me["APU-out"].show(); + } else { + me["APU-out"].hide(); + } + + if (systems.ELEC.Relay.extEpc.getValue() and (systems.ELEC.Relay.acTie1.getValue() or systems.ELEC.Relay.acTie2.getValue())) { + me["EXT-out"].show(); + } else { + me["EXT-out"].hide(); + } + + if (systems.ELEC.Source.IDG1.volts.getValue() >= 110 and systems.ELEC.Relay.glc1.getValue()) { + me["ELEC-Line-GEN1-AC1"].show(); + } else { + me["ELEC-Line-GEN1-AC1"].hide(); + } + + if (systems.ELEC.Source.IDG2.volts.getValue() >= 110 and systems.ELEC.Relay.glc2.getValue()) { + me["ELEC-Line-GEN2-AC2"].show(); + } else { + me["ELEC-Line-GEN2-AC2"].hide(); + } + + if (systems.ELEC.Bus.ac1.getValue() >= 110) { + me["AC1-in"].show(); + } else { + me["AC1-in"].hide(); + } + + if (systems.ELEC.Bus.ac2.getValue() >= 110) { + me["AC2-in"].show(); + } else { + me["AC2-in"].hide(); + } + + if (systems.ELEC.Relay.acTie1.getValue() and systems.ELEC.Relay.acTie2.getValue()) { + me["ELEC-Line-APU-AC1"].show(); + me["ELEC-Line-APU-EXT"].show(); + me["ELEC-Line-EXT-AC2"].show(); + } else { + if (systems.ELEC.Relay.acTie1.getValue()) { + me["ELEC-Line-APU-AC1"].show(); + } else { + me["ELEC-Line-APU-AC1"].hide(); + } + + if ((systems.ELEC.Relay.acTie2.getValue() and systems.ELEC.Relay.apuGlc.getValue() and !systems.ELEC.Relay.glc2.getValue()) or (systems.ELEC.Relay.acTie1.getValue() and systems.ELEC.Relay.extEpc.getValue() and !systems.ELEC.Relay.glc1.getValue())) { + me["ELEC-Line-APU-EXT"].show(); + } else { + me["ELEC-Line-APU-EXT"].hide(); + } + + if (systems.ELEC.Relay.acTie2.getValue()) { + me["ELEC-Line-EXT-AC2"].show(); + } else { + me["ELEC-Line-EXT-AC2"].hide(); + } + } + + if (systems.ELEC.Relay.acEssFeed1.getValue()) { + if (systems.ELEC.Bus.ac1.getValue() >= 110) { + me["ELEC-Line-AC1-ACESS"].show(); + } else { + me["ELEC-Line-AC1-ACESS"].hide(); + } + me["ELEC-Line-AC2-ACESS"].hide(); + } elsif (systems.ELEC.Relay.acEssFeed2.getValue()) { + me["ELEC-Line-AC1-ACESS"].hide(); + if (systems.ELEC.Bus.ac2.getValue() >= 110) { + me["ELEC-Line-AC2-ACESS"].show(); + } else { + me["ELEC-Line-AC2-ACESS"].hide(); + } + } else { + me["ELEC-Line-AC1-ACESS"].hide(); + me["ELEC-Line-AC2-ACESS"].hide(); + } + + if (systems.ELEC.Relay.tr1Contactor.getValue()) { + if (systems.ELEC.Bus.ac1.getValue() < 110) { + me["ELEC-Line-AC1-TR1"].setColorFill(0.7333,0.3803,0); + } else { + me["ELEC-Line-AC1-TR1"].setColorFill(0.0509,0.7529,0.2941); + } + me["ELEC-Line-AC1-TR1"].show(); + me["ELEC-Line-TR1-DC1"].show(); + } else { + me["ELEC-Line-AC1-TR1"].hide(); + me["ELEC-Line-TR1-DC1"].hide(); + } + + if (systems.ELEC.Relay.tr2Contactor.getValue()) { + if (systems.ELEC.Bus.ac2.getValue() < 110) { + me["ELEC-Line-AC2-TR2"].setColorFill(0.7333,0.3803,0); + } else { + me["ELEC-Line-AC2-TR2"].setColorFill(0.0509,0.7529,0.2941); + } + me["ELEC-Line-AC2-TR2"].show(); + me["ELEC-Line-TR2-DC2"].show(); + } else { + me["ELEC-Line-AC2-TR2"].hide(); + me["ELEC-Line-TR2-DC2"].hide(); + } + + if (systems.ELEC.Relay.dcTie1.getValue()) { + me["ELEC-Line-DC1-DCESS_DCBAT"].show(); + } else { + me["ELEC-Line-DC1-DCESS_DCBAT"].hide(); + } + + if (systems.ELEC.Relay.dcEssFeedBat.getValue()) { + me["ELEC-Line-DC1-DCESS"].show(); + } else { + me["ELEC-Line-DC1-DCESS"].hide(); + } + + if (systems.ELEC.Relay.dcEssFeedBat.getValue() or systems.ELEC.Relay.dcTie1.getValue()) { + me["ELEC-Line-DC1-DCBAT"].show(); + } else { + me["ELEC-Line-DC1-DCBAT"].hide(); + } + + if (systems.ELEC.Relay.dcTie2.getValue()) { + me["ELEC-Line-DC2-DCBAT"].show(); + me["ELEC-Line-DC2-DCESS_DCBAT"].show(); + } else { + me["ELEC-Line-DC2-DCBAT"].hide(); + me["ELEC-Line-DC2-DCESS_DCBAT"].hide(); + } + + if (systems.ELEC.Relay.acEssEmerGenFeed.getValue()) { + me["EMERGEN-out"].show(); + me["ELEC-Line-Emergen-ESSTR"].show(); + } else { + me["EMERGEN-out"].hide(); + me["ELEC-Line-Emergen-ESSTR"].hide(); + } + + if (systems.ELEC.Bus.acEss.getValue() >= 110 and !systems.ELEC.Relay.acEssEmerGenFeed.getValue() and (!systems.ELEC.Relay.tr1Contactor.getValue() or !systems.ELEC.Relay.tr2Contactor.getValue())) { + me["ELEC-Line-ACESS-TRESS"].show(); + } else { + me["ELEC-Line-ACESS-TRESS"].hide(); + } + + if (systems.ELEC.Relay.essTrContactor.getValue()) { + me["ELEC-Line-ESSTR-DCESS"].show(); + } else { + me["ELEC-Line-ESSTR-DCESS"].hide(); + } + + # hide not yet implemented items + me["IDG1-LOPR"].hide(); + me["IDG2-LOPR"].hide(); + me["Shed-label"].hide(); + me["IDG2-RISE-label"].hide(); + me["IDG2-RISE-Value"].hide(); + me["IDG1-RISE-label"].hide(); + me["IDG1-RISE-Value"].hide(); + + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_eng = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_eng, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","OilQT1-needle","OilQT2-needle","OilQT1","OilQT2","OilQT1-decimal","OilQT2-decimal","OilPSI1-needle","OilPSI2-needle","OilPSI1","OilPSI2","FUEL-used-1","FUEL-used-2", "Fused-weight-unit"]; + }, + update: func() { + # Oil Quantity + me["OilQT1"].setText(sprintf("%s", int(oil_qt1_actual.getValue()))); + me["OilQT2"].setText(sprintf("%s", int(oil_qt2_actual.getValue()))); + me["OilQT1-decimal"].setText(sprintf("%s", int(10*math.mod(oil_qt1_actual.getValue(),1)))); + me["OilQT2-decimal"].setText(sprintf("%s", int(10*math.mod(oil_qt2_actual.getValue(),1)))); + + me["OilQT1-needle"].setRotation((oil_qt1.getValue() + 90) * D2R); + me["OilQT2-needle"].setRotation((oil_qt2.getValue() + 90) * D2R); + + # Oil Pressure + if (pts.Engines.Engine.oilPsi[0].getValue() >= 20) { + me["OilPSI1"].setColor(0.0509,0.7529,0.2941); + me["OilPSI1-needle"].setColor(0.0509,0.7529,0.2941); + } else { + me["OilPSI1"].setColor(1,0,0); + me["OilPSI1-needle"].setColor(1,0,0); + } + + if (pts.Engines.Engine.oilPsi[1].getValue() >= 20) { + me["OilPSI2"].setColor(0.0509,0.7529,0.2941); + me["OilPSI2-needle"].setColor(0.0509,0.7529,0.2941); + } else { + me["OilPSI2"].setColor(1,0,0); + me["OilPSI2-needle"].setColor(1,0,0); + } + + me["OilPSI1"].setText(sprintf("%s", math.round(pts.Engines.Engine.oilPsi[0].getValue()))); + me["OilPSI2"].setText(sprintf("%s", math.round(pts.Engines.Engine.oilPsi[1].getValue()))); + + me["OilPSI1-needle"].setRotation((oil_psi1.getValue() + 90) * D2R); + me["OilPSI2-needle"].setRotation((oil_psi2.getValue() + 90) * D2R); + + # Fuel Used + if (acconfig_weight_kgs.getValue()) { + me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); + me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); + me["Fused-weight-unit"].setText("KG"); + } else { + me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); + me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); + me["Fused-weight-unit"].setText("LBS"); + } + + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_fctl = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_fctl, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","ailL","ailR","elevL","elevR","PTcc","PT","PTupdn","elac1","elac2","sec1","sec2","sec3","ailLblue","ailRblue","elevLblue","elevRblue","rudderblue","ailLgreen","ailRgreen","elevLgreen","ruddergreen","PTgreen", + "elevRyellow","rudderyellow","PTyellow","rudder","spdbrkblue","spdbrkgreen","spdbrkyellow","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex","spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex", + "spoiler1Lrt","spoiler2Lex","spoiler2Lrt","spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf","spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf", + "spoiler5Lf","ailLscale","ailRscale","path4249","path4249-3","path4249-3-6-7","path4249-3-6-7-5","path4249-3-6","text4343"]; + }, + update: func() { + blue_psi = systems.HYD.Psi.blue.getValue(); + green_psi = systems.HYD.Psi.green.getValue(); + yellow_psi = systems.HYD.Psi.yellow.getValue(); + elac1Node = fbw.FBW.Computers.elac1.getValue(); + elac2Node = fbw.FBW.Computers.elac2.getValue(); + sec1Node = fbw.FBW.Computers.sec1.getValue(); + sec2Node = fbw.FBW.Computers.sec2.getValue(); + + # Pitch Trim + me["PT"].setText(sprintf("%2.1f", math.round(elevator_trim_deg.getValue(), 0.1))); + + if (math.round(elevator_trim_deg.getValue(), 0.1) >= 0) { + me["PTupdn"].setText(sprintf("UP")); + } else if (math.round(elevator_trim_deg.getValue(), 0.1) < 0) { + me["PTupdn"].setText(sprintf("DN")); + } + + if (green_psi < 1500 and yellow_psi < 1500) { + me["PT"].setColor(0.7333,0.3803,0); + me["PTupdn"].setColor(0.7333,0.3803,0); + me["PTcc"].setColor(0.7333,0.3803,0); + } else { + me["PT"].setColor(0.0509,0.7529,0.2941); + me["PTupdn"].setColor(0.0509,0.7529,0.2941); + me["PTcc"].setColor(0.0509,0.7529,0.2941); + } + + if (fbw.FBW.Failures.ths.getBoolValue()) { + me["text4343"].setColor(0.7333,0.3803,0); + } else { + me["text4343"].setColor(0.8078,0.8039,0.8078); + } + + # Ailerons + me["ailL"].setTranslation(0, aileron_ind_left.getValue() * 100); + me["ailR"].setTranslation(0, aileron_ind_right.getValue() * (-100)); + + if ((blue_psi < 1500 or !elac1Node) and (green_psi < 1500 or !elac2Node)) { + me["ailL"].setColor(0.7333,0.3803,0); + } else { + me["ailL"].setColor(0.0509,0.7529,0.2941); + } + + if ((green_psi < 1500 or !elac1Node) and (blue_psi < 1500 or !elac2Node)) { + me["ailR"].setColor(0.7333,0.3803,0); + } else { + me["ailR"].setColor(0.0509,0.7529,0.2941); + } + + # Elevators + me["elevL"].setTranslation(0, elevator_ind_left.getValue() * 100); + me["elevR"].setTranslation(0, elevator_ind_right.getValue() * 100); + + if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (green_psi < 1500 or (!elac2Node and !sec2Node))) { + me["elevL"].setColor(0.7333,0.3803,0); + } else { + me["elevL"].setColor(0.0509,0.7529,0.2941); + } + + if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (yellow_psi < 1500 or (!elac2Node and !sec2Node))) { + me["elevR"].setColor(0.7333,0.3803,0); + } else { + me["elevR"].setColor(0.0509,0.7529,0.2941); + } + + # Rudder + me["rudder"].setRotation(final_deg.getValue() * -0.024); + + if (blue_psi < 1500 and yellow_psi < 1500 and green_psi < 1500) { + me["rudder"].setColor(0.7333,0.3803,0); + } else { + me["rudder"].setColor(0.0509,0.7529,0.2941); + } + + # Spoilers + if (spoiler_L1.getValue() < 1.5) { + me["spoiler1Lex"].hide(); + me["spoiler1Lrt"].show(); + } else { + me["spoiler1Lrt"].hide(); + me["spoiler1Lex"].show(); + } + + if (spoiler_L2.getValue() < 1.5) { + me["spoiler2Lex"].hide(); + me["spoiler2Lrt"].show(); + } else { + me["spoiler2Lrt"].hide(); + me["spoiler2Lex"].show(); + } + + if (spoiler_L3.getValue() < 1.5) { + me["spoiler3Lex"].hide(); + me["spoiler3Lrt"].show(); + } else { + me["spoiler3Lrt"].hide(); + me["spoiler3Lex"].show(); + } + + if (spoiler_L4.getValue() < 1.5) { + me["spoiler4Lex"].hide(); + me["spoiler4Lrt"].show(); + } else { + me["spoiler4Lrt"].hide(); + me["spoiler4Lex"].show(); + } + + if (spoiler_L5.getValue() < 1.5) { + me["spoiler5Lex"].hide(); + me["spoiler5Lrt"].show(); + } else { + me["spoiler5Lrt"].hide(); + me["spoiler5Lex"].show(); + } + + if (spoiler_R1.getValue() < 1.5) { + me["spoiler1Rex"].hide(); + me["spoiler1Rrt"].show(); + } else { + me["spoiler1Rrt"].hide(); + me["spoiler1Rex"].show(); + } + + if (spoiler_R2.getValue() < 1.5) { + me["spoiler2Rex"].hide(); + me["spoiler2Rrt"].show(); + } else { + me["spoiler2Rrt"].hide(); + me["spoiler2Rex"].show(); + } + + if (spoiler_R3.getValue() < 1.5) { + me["spoiler3Rex"].hide(); + me["spoiler3Rrt"].show(); + } else { + me["spoiler3Rrt"].hide(); + me["spoiler3Rex"].show(); + } + + if (spoiler_R4.getValue() < 1.5) { + me["spoiler4Rex"].hide(); + me["spoiler4Rrt"].show(); + } else { + me["spoiler4Rrt"].hide(); + me["spoiler4Rex"].show(); + } + + if (spoiler_R5.getValue() < 1.5) { + me["spoiler5Rex"].hide(); + me["spoiler5Rrt"].show(); + } else { + me["spoiler5Rrt"].hide(); + me["spoiler5Rex"].show(); + } + + # Spoiler Fail + if (fbw.FBW.Failures.spoilerl1.getValue() or green_psi < 1500) { + me["spoiler1Lex"].setColor(0.7333,0.3803,0); + me["spoiler1Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L1.getValue() < 1.5) { + me["spoiler1Lf"].show(); + } else { + me["spoiler1Lf"].hide(); + } + } else { + me["spoiler1Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler1Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerl2.getValue() or yellow_psi < 1500) { + me["spoiler2Lex"].setColor(0.7333,0.3803,0); + me["spoiler2Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L2.getValue() < 1.5) { + me["spoiler2Lf"].show(); + } else { + me["spoiler2Lf"].hide(); + } + } else { + me["spoiler2Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler2Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerl3.getValue() or blue_psi < 1500) { + me["spoiler3Lex"].setColor(0.7333,0.3803,0); + me["spoiler3Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L3.getValue() < 1.5) { + me["spoiler3Lf"].show(); + } else { + me["spoiler3Lf"].hide(); + } + } else { + me["spoiler3Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler3Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerl4.getValue() or yellow_psi < 1500) { + me["spoiler4Lex"].setColor(0.7333,0.3803,0); + me["spoiler4Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L4.getValue() < 1.5) { + me["spoiler4Lf"].show(); + } else { + me["spoiler4Lf"].hide(); + } + } else { + me["spoiler4Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler4Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerl5.getValue() or green_psi < 1500) { + me["spoiler5Lex"].setColor(0.7333,0.3803,0); + me["spoiler5Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L5.getValue() < 1.5) { + me["spoiler5Lf"].show(); + } else { + me["spoiler5Lf"].hide(); + } + } else { + me["spoiler5Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler5Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr1.getValue() or green_psi < 1500) { + me["spoiler1Rex"].setColor(0.7333,0.3803,0); + me["spoiler1Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R1.getValue() < 1.5) { + me["spoiler1Rf"].show(); + } else { + me["spoiler1Rf"].hide(); + } + } else { + me["spoiler1Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler1Rf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr2.getValue() or yellow_psi < 1500) { + me["spoiler2Rex"].setColor(0.7333,0.3803,0); + me["spoiler2Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R2.getValue() < 1.5) { + me["spoiler2Rf"].show(); + } else { + me["spoiler2Rf"].hide(); + } + } else { + me["spoiler2Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler2Rf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr3.getValue() or blue_psi < 1500) { + me["spoiler3Rex"].setColor(0.7333,0.3803,0); + me["spoiler3Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R3.getValue() < 1.5) { + me["spoiler3Rf"].show(); + } else { + me["spoiler3Rf"].hide(); + } + } else { + me["spoiler3Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler3Rf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr4.getValue() or yellow_psi < 1500) { + me["spoiler4Rex"].setColor(0.7333,0.3803,0); + me["spoiler4Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R4.getValue() < 1.5) { + me["spoiler4Rf"].show(); + } else { + me["spoiler4Rf"].hide(); + } + } else { + me["spoiler4Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler4Rf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr5.getValue() or green_psi < 1500) { + me["spoiler5Rex"].setColor(0.7333,0.3803,0); + me["spoiler5Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R5.getValue() < 1.5) { + me["spoiler5Rf"].show(); + } else { + me["spoiler5Rf"].hide(); + } + } else { + me["spoiler5Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler5Rf"].hide(); + } + + # Flight Computers + if (elac1Node) { + me["elac1"].setColor(0.0509,0.7529,0.2941); + me["path4249"].setColor(0.0509,0.7529,0.2941); + } else if (!elac1Node or fbw.FBW.Failures.elac1.getValue()) { + me["elac1"].setColor(0.7333,0.3803,0); + me["path4249"].setColor(0.7333,0.3803,0); + } + + if (elac2Node) { + me["elac2"].setColor(0.0509,0.7529,0.2941); + me["path4249-3"].setColor(0.0509,0.7529,0.2941); + } else if (!elac2Node or fbw.FBW.Failures.elac2.getValue()) { + me["elac2"].setColor(0.7333,0.3803,0); + me["path4249-3"].setColor(0.7333,0.3803,0); + } + + if (sec1Node) { + me["sec1"].setColor(0.0509,0.7529,0.2941); + me["path4249-3-6-7"].setColor(0.0509,0.7529,0.2941); + } else if (!sec1Node or fbw.FBW.Failures.sec1.getValue()) { + me["sec1"].setColor(0.7333,0.3803,0); + me["path4249-3-6-7"].setColor(0.7333,0.3803,0); + } + + if (sec2Node) { + me["sec2"].setColor(0.0509,0.7529,0.2941); + me["path4249-3-6-7-5"].setColor(0.0509,0.7529,0.2941); + } else if (!sec2Node or fbw.FBW.Failures.sec2.getValue()) { + me["sec2"].setColor(0.7333,0.3803,0); + me["path4249-3-6-7-5"].setColor(0.7333,0.3803,0); + } + + if (fbw.FBW.Computers.sec3.getValue()) { + me["sec3"].setColor(0.0509,0.7529,0.2941); + me["path4249-3-6"].setColor(0.0509,0.7529,0.2941); + } else if (!fbw.FBW.Computers.sec3.getValue() or fbw.FBW.Failures.sec3.getValue()) { + me["sec3"].setColor(0.7333,0.3803,0); + me["path4249-3-6"].setColor(0.7333,0.3803,0); + } + + # Hydraulic Indicators + if (blue_psi >= 1500) { + if (elac1Node) { + me["ailLblue"].setColor(0.0509,0.7529,0.2941); + } else { + me["ailLblue"].setColor(0.7333,0.3803,0); + } + if (elac1Node or sec1Node) { + me["elevLblue"].setColor(0.0509,0.7529,0.2941); + me["elevRblue"].setColor(0.0509,0.7529,0.2941); + } else { + me["elevLblue"].setColor(0.7333,0.3803,0); + me["elevRblue"].setColor(0.7333,0.3803,0); + } + if (elac2Node) { + me["ailRblue"].setColor(0.0509,0.7529,0.2941); + } else { + me["ailRblue"].setColor(0.7333,0.3803,0); + } + me["rudderblue"].setColor(0.0509,0.7529,0.2941); + me["spdbrkblue"].setColor(0.0509,0.7529,0.2941); + } else { + me["ailLblue"].setColor(0.7333,0.3803,0); + me["ailRblue"].setColor(0.7333,0.3803,0); + me["elevLblue"].setColor(0.7333,0.3803,0); + me["elevRblue"].setColor(0.7333,0.3803,0); + me["rudderblue"].setColor(0.7333,0.3803,0); + me["spdbrkblue"].setColor(0.7333,0.3803,0); + } + + if (green_psi >= 1500) { + if (elac2Node or sec2Node) { + me["elevLgreen"].setColor(0.0509,0.7529,0.2941); + } else { + me["elevLgreen"].setColor(0.7333,0.3803,0); + } + + if (elac2Node) { + me["ailLgreen"].setColor(0.0509,0.7529,0.2941); + } else { + me["ailLgreen"].setColor(0.7333,0.3803,0); + } + if (elac1Node) { + me["ailRgreen"].setColor(0.0509,0.7529,0.2941); + } else { + me["ailRgreen"].setColor(0.7333,0.3803,0); + } + me["ruddergreen"].setColor(0.0509,0.7529,0.2941); + me["PTgreen"].setColor(0.0509,0.7529,0.2941); + me["spdbrkgreen"].setColor(0.0509,0.7529,0.2941); + } else { + me["ailLgreen"].setColor(0.7333,0.3803,0); + me["ailRgreen"].setColor(0.7333,0.3803,0); + me["elevLgreen"].setColor(0.7333,0.3803,0); + me["ruddergreen"].setColor(0.7333,0.3803,0); + me["PTgreen"].setColor(0.7333,0.3803,0); + me["spdbrkgreen"].setColor(0.7333,0.3803,0); + } + + if (yellow_psi >= 1500) { + if (elac2Node or sec2Node) { + me["elevRyellow"].setColor(0.0509,0.7529,0.2941); + } else { + me["elevRyellow"].setColor(0.7333,0.3803,0); + } + me["rudderyellow"].setColor(0.0509,0.7529,0.2941); + me["PTyellow"].setColor(0.0509,0.7529,0.2941); + me["spdbrkyellow"].setColor(0.0509,0.7529,0.2941); + } else { + me["elevRyellow"].setColor(0.7333,0.3803,0); + me["rudderyellow"].setColor(0.7333,0.3803,0); + me["PTyellow"].setColor(0.7333,0.3803,0); + me["spdbrkyellow"].setColor(0.7333,0.3803,0); + } + + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_fuel = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_fuel, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","FUEL-Pump-Left-1","FUEL-Pump-Left-2","FUEL-Pump-Center-1","FUEL-Pump-Center-2","FUEL-Pump-Right-1","FUEL-Pump-Right-2","FUEL-Left-blocked","FUEL-Right-blocked","FUEL-Center-blocked","FUEL-Left-Transfer", + "FUEL-Right-Transfer","FUEL-Left-Outer-Inacc","FUEL-Left-Inner-Inacc","FUEL-Center-Inacc","FUEL-Right-Inner-Inacc","FUEL-Right-Outer-Inacc","FUEL-Left-Outer-quantity","FUEL-Left-Inner-quantity","FUEL-Center-quantity","FUEL-Right-Inner-quantity", + "FUEL-Right-Outer-quantity","FUEL-On-Board","FUEL-Flow-per-min","FUEL-APU-arrow","FUEL-APU-line","FUEL-APU-label","FUEL-used-1","FUEL-used-both","FUEL-used-2","FUEL-ENG-Master-1","FUEL-ENG-Master-2","FUEL-XFEED","FUEL-XFEED-pipes","FUEL-Left-Outer-temp", + "FUEL-Left-Inner-temp","FUEL-Right-Inner-temp","FUEL-Right-Outer-temp","FUEL-Pump-Left-1-Closed","FUEL-Pump-Left-1-Open","FUEL-Pump-Left-2-Closed","FUEL-Pump-Left-2-Open","FUEL-Pump-Center-1-Open","FUEL-Pump-Center-1-Closed","FUEL-Pump-Center-2-Closed", + "FUEL-Pump-Center-2-Open","FUEL-Pump-Right-1-Closed","FUEL-Pump-Right-1-Open","FUEL-Pump-Right-2-Closed","FUEL-Pump-Right-2-Open","FUEL-ENG-1-label","FUEL-ENG-2-label","FUEL-ENG-1-pipe","FUEL-ENG-2-pipe","ENG1idFFlow","ENG2idFFlow","FUEL-used-1","FUEL-used-2","FUEL-used-both", + "Fused-weight-unit","FFlow-weight-unit","FOB-weight-unit"]; + }, + update: func() { + _weight_kgs = acconfig_weight_kgs.getValue(); + + if (pts.Engines.Engine.n1Actual[0].getValue() <= 18.8) { + me["ENG1idFFlow"].setColor(0.7333,0.3803,0); + me["FUEL-ENG-1-label"].setColor(0.7333,0.3803,0); + } else { + me["ENG1idFFlow"].setColor(0.8078,0.8039,0.8078); + me["FUEL-ENG-1-label"].setColor(0.8078,0.8039,0.8078); + } + + if (pts.Engines.Engine.n1Actual[1].getValue() <= 18.5) { + me["ENG2idFFlow"].setColor(0.7333,0.3803,0); + me["FUEL-ENG-2-label"].setColor(0.7333,0.3803,0); + } else { + me["ENG2idFFlow"].setColor(0.8078,0.8039,0.8078); + me["FUEL-ENG-2-label"].setColor(0.8078,0.8039,0.8078); + } + + # TODO add FOB half-boxed amber if some fuel is blocked + if (_weight_kgs == 1) + { + me["FUEL-On-Board"].setText(sprintf("%s", math.round(total_fuel_lbs.getValue() * LBS2KGS, 10))); + me["FOB-weight-unit"].setText("KG"); + } else { + me["FUEL-On-Board"].setText(sprintf("%s", math.round(total_fuel_lbs.getValue(), 10))); + me["FOB-weight-unit"].setText("LBS"); + } + + if (_weight_kgs == 1) { + me["FFlow-weight-unit"].setText("KG/MIN"); + } else { + me["FFlow-weight-unit"].setText("LBS/MIN"); + } + + if (fadec.FADEC.Power.powered1.getValue() and fadec.FADEC.Power.powered2.getValue() or fadec.FADEC.Power.powerup.getValue()) { + me["FUEL-Flow-per-min"].setColor(0.0509,0.7529,0.2941); + if (_weight_kgs == 1) { + me["FUEL-Flow-per-min"].setText(sprintf("%s", math.round(((fuel_flow1.getValue() + fuel_flow2.getValue()) * LBS2KGS) / 60, 10))); + } else { + me["FUEL-Flow-per-min"].setText(sprintf("%s", math.round((fuel_flow1.getValue() + fuel_flow2.getValue()) / 60, 10))); + } + } else { + me["FUEL-Flow-per-min"].setColor(0.7333,0.3803,0); + me["FUEL-Flow-per-min"].setText("XX"); + } + + # TODO use the valve prop and add amber if difference between eng master and valve + # TODO add transition state + if (systems.FUEL.Valves.lpValve1.getValue()) { + me["FUEL-ENG-Master-1"].setRotation(0); + me["FUEL-ENG-Master-1"].setColor(0.0509,0.7529,0.2941); + me["FUEL-ENG-Master-1"].setColorFill(0.0509,0.7529,0.2941); + me["FUEL-ENG-1-pipe"].setColor(0.0509,0.7529,0.2941); + } else { + me["FUEL-ENG-Master-1"].setRotation(90 * D2R); + me["FUEL-ENG-Master-1"].setColor(0.7333,0.3803,0); + me["FUEL-ENG-Master-1"].setColorFill(0.7333,0.3803,0); + me["FUEL-ENG-1-pipe"].setColor(0.7333,0.3803,0); + } + + # TODO use the valve prop and add amber if difference between eng master and valve + # TODO add transition state + if (systems.FUEL.Valves.lpValve2.getValue()) { + me["FUEL-ENG-Master-2"].setRotation(0); + me["FUEL-ENG-Master-2"].setColor(0.0509,0.7529,0.2941); + me["FUEL-ENG-Master-2"].setColorFill(0.0509,0.7529,0.2941); + me["FUEL-ENG-2-pipe"].setColor(0.0509,0.7529,0.2941); + } else { + me["FUEL-ENG-Master-2"].setRotation(90 * D2R); + me["FUEL-ENG-Master-2"].setColor(0.7333,0.3803,0); + me["FUEL-ENG-Master-2"].setColorFill(0.7333,0.3803,0); + me["FUEL-ENG-2-pipe"].setColor(0.7333,0.3803,0); + } + + # this is now bound to the XFEED switch + # TODO use the valve prop + # TODO add amber when disagree between switch and btn + # TODO add transition state + if (systems.FUEL.Valves.crossfeed.getBoolValue()) { + me["FUEL-XFEED"].setRotation(0); + me["FUEL-XFEED-pipes"].show(); + } else { + me["FUEL-XFEED"].setRotation(90 * D2R); + me["FUEL-XFEED-pipes"].hide(); + } + + # TODO add LO indication + if (systems.FUEL.Switches.pumpLeft1.getBoolValue()) { + me["FUEL-Pump-Left-1-Open"].show(); + me["FUEL-Pump-Left-1-Closed"].hide(); + me["FUEL-Pump-Left-1"].setColor(0.0509,0.7529,0.2941); + me["FUEL-Pump-Left-1"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["FUEL-Pump-Left-1-Open"].hide(); + me["FUEL-Pump-Left-1-Closed"].show(); + me["FUEL-Pump-Left-1"].setColor(0.7333,0.3803,0); + me["FUEL-Pump-Left-1"].setColorFill(0.7333,0.3803,0); + } + + # TODO add LO indication + if (systems.FUEL.Switches.pumpLeft2.getBoolValue()) { + me["FUEL-Pump-Left-2-Open"].show(); + me["FUEL-Pump-Left-2-Closed"].hide(); + me["FUEL-Pump-Left-2"].setColor(0.0509,0.7529,0.2941); + me["FUEL-Pump-Left-2"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["FUEL-Pump-Left-2-Open"].hide(); + me["FUEL-Pump-Left-2-Closed"].show(); + me["FUEL-Pump-Left-2"].setColor(0.7333,0.3803,0); + me["FUEL-Pump-Left-2"].setColorFill(0.7333,0.3803,0); + } + + # TODO add functionality to match FCOM 1.28.20 "Amber: Transfer valve is open, whereas commanded closed in automatic or manual mode" + if (systems.FUEL.Switches.pumpCenter1.getBoolValue()) { + me["FUEL-Pump-Center-1-Open"].show(); + me["FUEL-Pump-Center-1-Closed"].hide(); + me["FUEL-Pump-Center-1"].setColor(0.0509,0.7529,0.2941); + me["FUEL-Pump-Center-1"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["FUEL-Pump-Center-1-Open"].hide(); + me["FUEL-Pump-Center-1-Closed"].show(); + me["FUEL-Pump-Center-1"].setColor(0.7333,0.3803,0); + me["FUEL-Pump-Center-1"].setColorFill(0.7333,0.3803,0); + } + + # TODO add LO indication + if (systems.FUEL.Switches.pumpCenter2.getBoolValue()) { + me["FUEL-Pump-Center-2-Open"].show(); + me["FUEL-Pump-Center-2-Closed"].hide(); + me["FUEL-Pump-Center-2"].setColor(0.0509,0.7529,0.2941); + me["FUEL-Pump-Center-2"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["FUEL-Pump-Center-2-Open"].hide(); + me["FUEL-Pump-Center-2-Closed"].show(); + me["FUEL-Pump-Center-2"].setColor(0.7333,0.3803,0); + me["FUEL-Pump-Center-2"].setColorFill(0.7333,0.3803,0); + } + + # TODO add LO indication + if (systems.FUEL.Switches.pumpRight1.getBoolValue()) { + me["FUEL-Pump-Right-1-Open"].show(); + me["FUEL-Pump-Right-1-Closed"].hide(); + me["FUEL-Pump-Right-1"].setColor(0.0509,0.7529,0.2941); + me["FUEL-Pump-Right-1"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["FUEL-Pump-Right-1-Open"].hide(); + me["FUEL-Pump-Right-1-Closed"].show(); + me["FUEL-Pump-Right-1"].setColor(0.7333,0.3803,0); + me["FUEL-Pump-Right-1"].setColorFill(0.7333,0.3803,0); + } + + # TODO add LO indication + if (systems.FUEL.Switches.pumpRight2.getBoolValue()) { + me["FUEL-Pump-Right-2-Open"].show(); + me["FUEL-Pump-Right-2-Closed"].hide(); + me["FUEL-Pump-Right-2"].setColor(0.0509,0.7529,0.2941); + me["FUEL-Pump-Right-2"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["FUEL-Pump-Right-2-Open"].hide(); + me["FUEL-Pump-Right-2-Closed"].show(); + me["FUEL-Pump-Right-2"].setColor(0.7333,0.3803,0); + me["FUEL-Pump-Right-2"].setColorFill(0.7333,0.3803,0); + } + + # Fuel Used + if (_weight_kgs == 1) { + me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); + me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); + me["FUEL-used-both"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10) + math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10)))); + me["Fused-weight-unit"].setText("KG"); + } else { + me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); + me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); + me["FUEL-used-both"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue(), 10) + math.round(fuel_used_lbs2.getValue(), 10)))); + me["Fused-weight-unit"].setText("LBS"); + } + + # Fuel Temp + me["FUEL-Left-Outer-temp"].setText(sprintf("%s", math.round(fuel_left_outer_temp.getValue()))); + me["FUEL-Left-Inner-temp"].setText(sprintf("%s", math.round(fuel_left_inner_temp.getValue()))); + me["FUEL-Right-Outer-temp"].setText(sprintf("%s", math.round(fuel_right_outer_temp.getValue()))); + me["FUEL-Right-Inner-temp"].setText(sprintf("%s", math.round(fuel_right_inner_temp.getValue()))); + + # Fuel Quantity + # TODO add LO indication + if (_weight_kgs == 1) { + me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue() * LBS2KGS, 10))); + me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue() * LBS2KGS, 10))); + me["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue() * LBS2KGS, 10))); + me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue() * LBS2KGS, 10))); + me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue() * LBS2KGS, 10))); + } else { + me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue(), 10))); + me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue(), 10))); + me["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue(), 10))); + me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue(), 10))); + me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue(), 10))); + } + + if (systems.FUEL.Valves.transfer1.getValue() == 0) { + me["FUEL-Left-Transfer"].hide(); + } else { + if (systems.FUEL.Valves.transfer1.getValue()) { + me["FUEL-Left-Transfer"].setColor(0.0509,0.7529,0.2941); + } else { + me["FUEL-Left-Transfer"].setColor(0.7333,0.3803,0); + } + me["FUEL-Left-Transfer"].show(); + } + + if (systems.FUEL.Valves.transfer2.getValue() == 0) { + me["FUEL-Right-Transfer"].hide(); + } else { + if (systems.FUEL.Valves.transfer2.getValue()) { + me["FUEL-Right-Transfer"].setColor(0.0509,0.7529,0.2941); + } else { + me["FUEL-Right-Transfer"].setColor(0.7333,0.3803,0); + } + me["FUEL-Right-Transfer"].show(); + } + + if (!systems.FUEL.Switches.pumpCenter1.getValue() and !systems.FUEL.Switches.pumpCenter2.getValue()) { + me["FUEL-Center-blocked"].show(); + } else { + me["FUEL-Center-blocked"].hide(); + } + + # APU + if (systems.FUEL.Valves.apu.getValue() and systems.APUNodes.Controls.master.getValue() and !systems.APUNodes.Controls.fire.getValue()) { + me["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078); + me["FUEL-APU-line"].setColor(0.0509,0.7529,0.2941); + me["FUEL-APU-arrow"].setColor(0.0509,0.7529,0.2941); + me["FUEL-APU-line"].show(); + me["FUEL-APU-arrow"].show(); + } elsif (systems.FUEL.Valves.apu.getValue() and (!systems.APUNodes.Controls.master.getValue() or systems.APUNodes.Controls.fire.getValue())) { + me["FUEL-APU-label"].setColor(0.7333,0.3803,0); + me["FUEL-APU-line"].setColor(0.7333,0.3803,0); + me["FUEL-APU-arrow"].setColor(0.7333,0.3803,0); + me["FUEL-APU-line"].show(); + me["FUEL-APU-arrow"].show(); + } elsif (systems.FUEL.Valves.apu.getValue() != 1 and (systems.APUNodes.Controls.master.getValue() or systems.APUNodes.Controls.fire.getValue())) { + me["FUEL-APU-label"].setColor(0.7333,0.3803,0); + me["FUEL-APU-line"].hide(); + me["FUEL-APU-arrow"].hide(); + } else { + me["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078); + me["FUEL-APU-arrow"].setColor(0.8078, 0.8039, 0.8078); + me["FUEL-APU-line"].hide(); + me["FUEL-APU-arrow"].show(); + } + + # Hide not yet implemented features + # TODO add them + me["FUEL-Left-blocked"].hide(); + me["FUEL-Right-blocked"].hide(); + me["FUEL-Left-Outer-Inacc"].hide(); + me["FUEL-Left-Inner-Inacc"].hide(); + me["FUEL-Right-Outer-Inacc"].hide(); + me["FUEL-Right-Inner-Inacc"].hide(); + me["FUEL-Center-Inacc"].hide(); + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_press = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_press, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit", "PRESS-Cab-VS", "PRESS-Cab-VS-neg", "PRESS-Cab-Alt"]; + }, + update: func() { + me["PRESS-Cab-VS"].setText(sprintf("%4.0f", press_vs_norm.getValue())); + me["PRESS-Cab-Alt"].setText(sprintf("%4.0f", cabinalt.getValue())); + + + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_status = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_status, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + update: func() { + + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_hyd = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_hyd, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Green-Indicator","Blue-Indicator","Yellow-Indicator","Press-Green","Press-Blue","Press-Yellow","Green-Line","Blue-Line","Yellow-Line","PTU-Supply-Line","PTU-supply-yellow","PTU-supply-green","PTU-connection", + "PTU-Auto-or-off","RAT-label","RAT-stowed","RAT-not-stowed","ELEC-Yellow-off","ELEC-Yellow-on","ELEC-Yellow-label","ELEC-OVTH-Yellow","ELEC-Blue-label","ELEC-OVHT-Blue","ELEC-OVHT-Yellow","Pump-Green-label","Pump-Yellow-label","Pump-Green", + "Pump-LOPR-Green","Pump-Green-off","Pump-Green-on","Pump-Yellow","Pump-LOPR-Yellow","Pump-Yellow-off","Pump-Yellow-on","Pump-Blue", "Pump-Blue-off","Pump-Blue-on","Fire-Valve-Green","Fire-Valve-Yellow","LO-AIR-PRESS-Green", + "LO-AIR-PRESS-Yellow","LO-AIR-PRESS-Blue","OVHT-Green","OVHT-Blue","OVHT-Yellow","Quantity-Indicator-Green","Quantity-Indicator-Blue","Quantity-Indicator-Yellow","Green-label","Blue-label","Yellow-label"]; + }, + update: func() { + blue_psi = systems.HYD.Psi.blue.getValue(); + green_psi = systems.HYD.Psi.green.getValue(); + yellow_psi = systems.HYD.Psi.yellow.getValue(); + + me["Press-Green"].setText(sprintf("%s", math.round(green_psi, 50))); + me["Press-Blue"].setText(sprintf("%s", math.round(blue_psi, 50))); + me["Press-Yellow"].setText(sprintf("%s", math.round(yellow_psi, 50))); + + if (blue_psi >= 1500) { + me["Blue-Line"].setColor(0.0509,0.7529,0.2941); + me["Blue-Line"].setColorFill(0.0509,0.7529,0.2941); + me["Blue-Indicator"].setColor(0.0509,0.7529,0.2941); + me["Press-Blue"].setColor(0.0509,0.7529,0.2941); + me["Blue-label"].setColor(0.8078,0.8039,0.8078); + } else { + me["Blue-Line"].setColor(0.7333,0.3803,0); + me["Blue-Line"].setColorFill(0.7333,0.3803,0); + me["Blue-Indicator"].setColor(0.7333,0.3803,0); + me["Press-Blue"].setColor(0.7333,0.3803,0); + me["Blue-label"].setColor(0.7333,0.3803,0); + } + + if (yellow_psi >= 1500) { + me["Yellow-Line"].setColor(0.0509,0.7529,0.2941); + me["Yellow-Line"].setColorFill(0.0509,0.7529,0.2941); + me["Yellow-Indicator"].setColor(0.0509,0.7529,0.2941); + me["Press-Yellow"].setColor(0.0509,0.7529,0.2941); + me["Yellow-label"].setColor(0.8078,0.8039,0.8078); + } else { + me["Yellow-Line"].setColor(0.7333,0.3803,0); + me["Yellow-Line"].setColorFill(0.7333,0.3803,0); + me["Yellow-Indicator"].setColor(0.7333,0.3803,0); + me["Press-Yellow"].setColor(0.7333,0.3803,0); + me["Yellow-label"].setColor(0.7333,0.3803,0); + } + + if (green_psi >= 1500) { + me["Green-Line"].setColor(0.0509,0.7529,0.2941); + me["Green-Line"].setColorFill(0.0509,0.7529,0.2941); + me["Green-Indicator"].setColor(0.0509,0.7529,0.2941); + me["Press-Green"].setColor(0.0509,0.7529,0.2941); + me["Green-label"].setColor(0.8078,0.8039,0.8078); + } else { + me["Green-Line"].setColor(0.7333,0.3803,0); + me["Green-Line"].setColorFill(0.7333,0.3803,0); + me["Green-Indicator"].setColor(0.7333,0.3803,0); + me["Press-Green"].setColor(0.7333,0.3803,0); + me["Green-label"].setColor(0.7333,0.3803,0); + } + + if (systems.HYD.Switch.ptu.getValue() and !systems.HYD.Fail.ptuFault.getValue()) { + me["PTU-connection"].setColor(0.0509,0.7529,0.2941); + + if (systems.HYD.Ptu.active.getValue()) { + if (systems.HYD.Ptu.diff.getValue() < 0) { + me["PTU-Supply-Line"].show(); + me["PTU-supply-yellow"].show(); + me["PTU-supply-green"].hide(); + me["PTU-Auto-or-off"].hide(); + } else { + me["PTU-Supply-Line"].show(); + me["PTU-supply-yellow"].hide(); + me["PTU-supply-green"].show(); + me["PTU-Auto-or-off"].hide(); + } + } else { + me["PTU-Auto-or-off"].setColor(0.0509,0.7529,0.2941); + me["PTU-Supply-Line"].hide(); + me["PTU-supply-yellow"].hide(); + me["PTU-supply-green"].hide(); + me["PTU-Auto-or-off"].show(); + } + } else { + me["PTU-connection"].setColor(0.7333,0.3803,0); + me["PTU-Auto-or-off"].setColor(0.7333,0.3803,0); + me["PTU-Supply-Line"].hide(); + me["PTU-supply-yellow"].hide(); + me["PTU-supply-green"].hide(); + me["PTU-Auto-or-off"].show(); + } + + if (pts.Engines.Engine.n2Actual[0].getValue() >= 59) { + me["Pump-Green-label"].setColor(0.8078,0.8039,0.8078); + } else { + me["Pump-Green-label"].setColor(0.7333,0.3803,0); + } + + if (pts.Engines.Engine.n2Actual[1].getValue() >= 59) { + me["Pump-Yellow-label"].setColor(0.8078,0.8039,0.8078); + } else { + me["Pump-Yellow-label"].setColor(0.7333,0.3803,0); + } + + if (systems.HYD.Switch.greenEDP.getValue()) { + me["Pump-Green-off"].hide(); + if (green_psi >= 1500) { + me["Pump-Green-on"].show(); + me["Pump-LOPR-Green"].hide(); + me["Pump-Green"].setColor(0.0509,0.7529,0.2941); + me["Pump-Green"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["Pump-Green-on"].hide(); + me["Pump-LOPR-Green"].show(); + me["Pump-Green"].setColor(0.7333,0.3803,0); + me["Pump-Green"].setColorFill(0.7333,0.3803,0); + } + } else { + me["Pump-Green-off"].show(); + me["Pump-Green-on"].hide(); + me["Pump-LOPR-Green"].hide(); + me["Pump-Green"].setColor(0.7333,0.3803,0); + } + + if (systems.HYD.Switch.yellowEDP.getValue()) { + me["Pump-Yellow-off"].hide(); + if (yellow_psi >= 1500) { + me["Pump-Yellow-on"].show(); + me["Pump-LOPR-Yellow"].hide(); + me["Pump-Yellow"].setColorFill(0.0509,0.7529,0.2941); + me["Pump-Yellow"].setColor(0.0509,0.7529,0.2941); + } else { + me["Pump-Yellow-on"].hide(); + me["Pump-LOPR-Yellow"].show(); + me["Pump-Yellow"].setColorFill(0.7333,0.3803,0); + me["Pump-Yellow"].setColor(0.7333,0.3803,0); + } + } else { + me["Pump-Yellow-off"].show(); + me["Pump-Yellow-on"].hide(); + me["Pump-LOPR-Yellow"].hide(); + me["Pump-Yellow"].setColorFill(0.7333,0.3803,0); + me["Pump-Yellow"].setColor(0.7333,0.3803,0); + } + + if (systems.HYD.Switch.blueElec.getValue()) { + me["Pump-Blue-off"].hide(); + if (blue_psi >= 1500) { + me["Pump-Blue-on"].show(); + me["Pump-Blue-off"].hide(); + me["Pump-Blue"].setColorFill(0.0509,0.7529,0.2941); + me["Pump-Blue"].setColor(0.0509,0.7529,0.2941); + } else { + me["Pump-Blue-off"].show(); + me["Pump-Blue-on"].hide(); + me["Pump-Blue"].setColorFill(0.7333,0.3803,0); + me["Pump-Blue"].setColor(0.7333,0.3803,0); + } + } else { + me["Pump-Blue-off"].show(); + me["Pump-Blue-on"].hide(); + me["Pump-Blue"].setColorFill(0.7333,0.3803,0); + me["Pump-Blue"].setColor(0.7333,0.3803,0); + } + + if (!systems.HYD.Switch.yellowElec.getValue()) { + me["ELEC-Yellow-on"].hide(); + me["ELEC-Yellow-off"].show(); + } else { + me["ELEC-Yellow-on"].show(); + me["ELEC-Yellow-off"].hide(); + if (yellow_psi >= 1500) { + me["ELEC-Yellow-on"].setColor(0.0509,0.7529,0.2941); + } else { + me["ELEC-Yellow-on"].setColor(0.7333,0.3803,0); + } + } + + if (y_resv_lo_air_press.getValue()) { + me["LO-AIR-PRESS-Yellow"].show(); + } else { + me["LO-AIR-PRESS-Yellow"].hide(); + } + + if (b_resv_lo_air_press.getValue()) { + me["LO-AIR-PRESS-Blue"].show(); + } else { + me["LO-AIR-PRESS-Blue"].hide(); + } + + if (g_resv_lo_air_press.getValue()) { + me["LO-AIR-PRESS-Green"].show(); + } else { + me["LO-AIR-PRESS-Green"].hide(); + } + + if (elec_pump_y_ovht.getValue()) { + me["ELEC-OVHT-Yellow"].show(); + } else { + me["ELEC-OVHT-Yellow"].hide(); + } + + if (elec_pump_b_ovht.getValue()) { + me["ELEC-OVHT-Blue"].show(); + } else { + me["ELEC-OVHT-Blue"].hide(); + } + + if (systems.HYD.Rat.position.getValue()) { + me["RAT-stowed"].hide(); + me["RAT-not-stowed"].show(); + } else { + me["RAT-stowed"].show(); + me["RAT-not-stowed"].hide(); + } + + if (y_resv_ovht.getValue()) { + me["OVHT-Yellow"].show(); + } else { + me["OVHT-Yellow"].hide(); + } + + if (b_resv_ovht.getValue()) { + me["OVHT-Green"].show(); + } else { + me["OVHT-Green"].hide(); + } + + if (g_resv_ovht.getValue()) { + me["OVHT-Blue"].show(); + } else { + me["OVHT-Blue"].hide(); + } + + if (systems.ELEC.Bus.ac1.getValue() >= 110) { + me["ELEC-Blue-label"].setColor(0.8078,0.8039,0.8078); + } else { + me["ELEC-Blue-label"].setColor(0.7333,0.3803,0); + } + + if (systems.ELEC.Bus.ac2.getValue() >= 110) { + me["ELEC-Yellow-label"].setColor(0.8078,0.8039,0.8078); + } else { + me["ELEC-Yellow-label"].setColor(0.7333,0.3803,0); + } + + if (systems.HYD.Valve.yellowFire.getValue() != 0) { + me["Fire-Valve-Yellow"].setColor(0.7333,0.3803,0); + me["Fire-Valve-Yellow"].setRotation(90 * D2R); + } else { + me["Fire-Valve-Yellow"].setColor(0.0509,0.7529,0.2941); + me["Fire-Valve-Yellow"].setRotation(0); + } + + if (systems.HYD.Valve.greenFire.getValue() != 0) { + me["Fire-Valve-Green"].setColor(0.7333,0.3803,0); + me["Fire-Valve-Green"].setRotation(90 * D2R); + } else { + me["Fire-Valve-Green"].setColor(0.0509,0.7529,0.2941); + me["Fire-Valve-Green"].setRotation(0); + } + + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_wheel = { + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_wheel, canvas_lowerECAM_base]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","lgctltext","NORMbrk","NWStext","leftdoor","rightdoor","nosegeardoorL","nosegeardoorR", + "autobrk","autobrkind","NWS","NWSrect","normbrk-rect","altnbrk","normbrkhyd","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex", + "spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex","spoiler1Lrt","spoiler2Lex","spoiler2Lrt", + "spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf", + "spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf","spoiler5Lf","ALTNbrk","altnbrkhyd","altnbrk-rect","antiskidtext","brakearrow","accupress_text", + "accuonlyarrow","accuonly","braketemp1","normbrkhyd","braketemp2","braketemp3","braketemp4","toparc1","toparc2","toparc3","toparc4","leftuplock", + "noseuplock","rightuplock","Triangle-Left1","Triangle-Left2","Triangle-Nose1","Triangle-Nose2","Triangle-Right1","Triangle-Right2","BSCUrect1", + "BSCUrect2","BSCU1","BSCU2","tirepress1","tirepress2","tirepress3","tirepress4","tirepress5","tirepress6"]; + }, + update: func() { + blue_psi = systems.HYD.Psi.blue.getValue(); + green_psi = systems.HYD.Psi.green.getValue(); + yellow_psi = systems.HYD.Psi.yellow.getValue(); + autobrakemode = autobreak_mode.getValue(); + nosegear = gear1_pos.getValue(); + leftgear = gear2_pos.getValue(); + rightgear = gear3_pos.getValue(); + leftdoor = gear_door_L.getValue(); + rightdoor = gear_door_R.getValue(); + nosedoor = gear_door_N.getValue(); + gearlvr = gear_down.getValue(); + askidsw = systems.HYD.Switch.nwsSwitch.getBoolValue(); + brakemode = systems.HYD.Brakes.mode.getBoolValue(); + accum = systems.HYD.Brakes.accumPressPsi.getBoolValue(); + + # L/G CTL + if ((leftgear == 0 or nosegear == 0 or rightgear == 0 and gearlvr == 0) or (leftgear == 1 or nosegear == 1 or rightgear == 1 and gearlvr == 1)) { + me["lgctltext"].hide(); + } else { + me["lgctltext"].show(); + } + + # NWS / Antiskid / Brakes + if (askidsw and yellow_psi >= 1500) { + me["NWStext"].hide(); + me["NWS"].hide(); + me["NWSrect"].hide(); + me["antiskidtext"].hide(); + me["BSCUrect1"].hide(); + me["BSCUrect2"].hide(); + me["BSCU1"].hide(); + me["BSCU2"].hide(); + } else if (!askidsw and yellow_psi >= 1500) { + me["NWStext"].show(); + me["NWS"].show(); + me["NWS"].setColor(0.0509,0.7529,0.2941); + me["NWSrect"].show(); + me["antiskidtext"].show(); + me["antiskidtext"].setColor(0.7333,0.3803,0); + me["BSCUrect1"].show(); + me["BSCUrect2"].show(); + me["BSCU1"].show(); + me["BSCU2"].show(); + } else { + me["NWStext"].show(); + me["NWS"].show(); + me["NWS"].setColor(0.7333,0.3803,0); + me["NWSrect"].show(); + me["antiskidtext"].show(); + me["antiskidtext"].setColor(0.7333,0.3803,0); + me["BSCUrect1"].show(); + me["BSCUrect2"].show(); + me["BSCU1"].show(); + me["BSCU2"].show(); + } + + if (green_psi >= 1500 and brakemode == 1) { + me["NORMbrk"].hide(); + me["normbrk-rect"].hide(); + me["normbrkhyd"].hide(); + } else if (green_psi >= 1500 and askidsw) { + me["NORMbrk"].show(); + me["normbrk-rect"].show(); + me["NORMbrk"].setColor(0.7333,0.3803,0); + me["normbrkhyd"].setColor(0.0509,0.7529,0.2941); + } else if (green_psi < 1500 or !askidsw) { + me["NORMbrk"].show(); + me["normbrk-rect"].show(); + me["NORMbrk"].setColor(0.7333,0.3803,0); + me["normbrkhyd"].setColor(0.7333,0.3803,0); + } + + if (brakemode != 2) { + me["ALTNbrk"].hide(); + me["altnbrk-rect"].hide(); + me["altnbrkhyd"].hide(); + } else if (yellow_psi >= 1500) { + me["ALTNbrk"].show(); + me["altnbrk-rect"].show(); + me["altnbrkhyd"].setColor(0.0509,0.7529,0.2941); + } else { + me["ALTNbrk"].show(); + me["altnbrk-rect"].show(); + me["altnbrkhyd"].setColor(0.7333,0.3803,0); + } + + if (brakemode == 2 and accum < 200 and yellow_psi < 1500) { + me["accupress_text"].show(); + me["brakearrow"].hide(); + me["accupress_text"].setColor(0.7333,0.3803,0); + } else if (brakemode == 2 and accum > 200 and yellow_psi >= 1500){ + me["accupress_text"].show(); + me["brakearrow"].show(); + me["accupress_text"].setColor(0.0509,0.7529,0.2941); + } else if (brakemode == 2 and accum > 200 and yellow_psi < 1500) { + me["accuonlyarrow"].show(); + me["accuonly"].show(); + me["brakearrow"].hide(); + me["accupress_text"].hide(); + } else { + me["accuonlyarrow"].hide(); + me["accuonly"].hide(); + me["brakearrow"].hide(); + me["accupress_text"].hide(); + } + + # Gear Doors + me["leftdoor"].setRotation(door_left.getValue() * D2R); + me["rightdoor"].setRotation(door_right.getValue() * D2R); + me["nosegeardoorL"].setRotation(door_nose_left.getValue() * D2R); + me["nosegeardoorR"].setRotation(door_nose_right.getValue() * D2R); + + if (nosedoor == 0) { + me["nosegeardoorL"].setColorFill(0.0509,0.7529,0.2941); + me["nosegeardoorR"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["nosegeardoorL"].setColorFill(0.7333,0.3803,0); + me["nosegeardoorR"].setColorFill(0.7333,0.3803,0); + } + + if (leftdoor == 0) { + me["leftdoor"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["leftdoor"].setColorFill(0.7333,0.3803,0); + } + + if (rightdoor == 0) { + me["rightdoor"].setColorFill(0.0509,0.7529,0.2941); + } else { + me["rightdoor"].setColorFill(0.7333,0.3803,0); + } + + # Triangles + if (leftgear < 0.2 or leftgear > 0.8) { + me["Triangle-Left1"].hide(); + me["Triangle-Left2"].hide(); + } else { + me["Triangle-Left1"].show(); + me["Triangle-Left2"].show(); + } + + if (leftgear == 1) { + me["Triangle-Left1"].setColor(0.0509,0.7529,0.2941); + me["Triangle-Left2"].setColor(0.0509,0.7529,0.2941); + } else { + me["Triangle-Left1"].setColor(1,0,0); + me["Triangle-Left2"].setColor(1,0,0); + } + + if (nosegear < 0.2 or nosegear > 0.8) { + me["Triangle-Nose1"].hide(); + me["Triangle-Nose2"].hide(); + } else { + me["Triangle-Nose1"].show(); + me["Triangle-Nose2"].show(); + } + + if (nosegear == 1) { + me["Triangle-Nose1"].setColor(0.0509,0.7529,0.2941); + me["Triangle-Nose2"].setColor(0.0509,0.7529,0.2941); + } else { + me["Triangle-Nose1"].setColor(1,0,0); + me["Triangle-Nose2"].setColor(1,0,0); + } + + if (rightgear < 0.2 or rightgear > 0.8) { + me["Triangle-Right1"].hide(); + me["Triangle-Right2"].hide(); + } else { + me["Triangle-Right1"].show(); + me["Triangle-Right2"].show(); + } + + if (rightgear == 1) { + me["Triangle-Right1"].setColor(0.0509,0.7529,0.2941); + me["Triangle-Right2"].setColor(0.0509,0.7529,0.2941); + } else { + me["Triangle-Right1"].setColor(1,0,0); + me["Triangle-Right2"].setColor(1,0,0); + } + + # Autobrake + if (autobrakemode == 0) { + me["autobrkind"].hide(); + } elsif (autobrakemode == 1) { + me["autobrkind"].show(); + me["autobrkind"].setText(sprintf("%s", "LO")); + } elsif (autobrakemode == 2) { + me["autobrkind"].show(); + me["autobrkind"].setText(sprintf("%s", "MED")); + } elsif (autobrakemode == 3) { + me["autobrkind"].show(); + me["autobrkind"].setText(sprintf("%s", "MAX")); + } + + if (autobrakemode != 0) { + me["autobrk"].show(); + } elsif (autobrakemode == 0) { + me["autobrk"].hide(); + } + + # Spoilers + if (spoiler_L1.getValue() < 1.5) { + me["spoiler1Lex"].hide(); + me["spoiler1Lrt"].show(); + } else { + me["spoiler1Lrt"].hide(); + me["spoiler1Lex"].show(); + } + + if (spoiler_L2.getValue() < 1.5) { + me["spoiler2Lex"].hide(); + me["spoiler2Lrt"].show(); + } else { + me["spoiler2Lrt"].hide(); + me["spoiler2Lex"].show(); + } + + if (spoiler_L3.getValue() < 1.5) { + me["spoiler3Lex"].hide(); + me["spoiler3Lrt"].show(); + } else { + me["spoiler3Lrt"].hide(); + me["spoiler3Lex"].show(); + } + + if (spoiler_L4.getValue() < 1.5) { + me["spoiler4Lex"].hide(); + me["spoiler4Lrt"].show(); + } else { + me["spoiler4Lrt"].hide(); + me["spoiler4Lex"].show(); + } + + if (spoiler_L5.getValue() < 1.5) { + me["spoiler5Lex"].hide(); + me["spoiler5Lrt"].show(); + } else { + me["spoiler5Lrt"].hide(); + me["spoiler5Lex"].show(); + } + + if (spoiler_R1.getValue() < 1.5) { + me["spoiler1Rex"].hide(); + me["spoiler1Rrt"].show(); + } else { + me["spoiler1Rrt"].hide(); + me["spoiler1Rex"].show(); + } + + if (spoiler_R2.getValue() < 1.5) { + me["spoiler2Rex"].hide(); + me["spoiler2Rrt"].show(); + } else { + me["spoiler2Rrt"].hide(); + me["spoiler2Rex"].show(); + } + + if (spoiler_R3.getValue() < 1.5) { + me["spoiler3Rex"].hide(); + me["spoiler3Rrt"].show(); + } else { + me["spoiler3Rrt"].hide(); + me["spoiler3Rex"].show(); + } + + if (spoiler_R4.getValue() < 1.5) { + me["spoiler4Rex"].hide(); + me["spoiler4Rrt"].show(); + } else { + me["spoiler4Rrt"].hide(); + me["spoiler4Rex"].show(); + } + + if (spoiler_R5.getValue() < 1.5) { + me["spoiler5Rex"].hide(); + me["spoiler5Rrt"].show(); + } else { + me["spoiler5Rrt"].hide(); + me["spoiler5Rex"].show(); + } + + # Spoiler Fail + if (fbw.FBW.Failures.spoilerl1.getValue() or green_psi < 1500) { + me["spoiler1Lex"].setColor(0.7333,0.3803,0); + me["spoiler1Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L1.getValue() < 1.5) { + me["spoiler1Lf"].show(); + } else { + me["spoiler1Lf"].hide(); + } + } else { + me["spoiler1Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler1Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerl2.getValue() or yellow_psi < 1500) { + me["spoiler2Lex"].setColor(0.7333,0.3803,0); + me["spoiler2Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L2.getValue() < 1.5) { + me["spoiler2Lf"].show(); + } else { + me["spoiler2Lf"].hide(); + } + } else { + me["spoiler2Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler2Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerl3.getValue() or blue_psi < 1500) { + me["spoiler3Lex"].setColor(0.7333,0.3803,0); + me["spoiler3Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L3.getValue() < 1.5) { + me["spoiler3Lf"].show(); + } else { + me["spoiler3Lf"].hide(); + } + } else { + me["spoiler3Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler3Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerl4.getValue() or yellow_psi < 1500) { + me["spoiler4Lex"].setColor(0.7333,0.3803,0); + me["spoiler4Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L4.getValue() < 1.5) { + me["spoiler4Lf"].show(); + } else { + me["spoiler4Lf"].hide(); + } + } else { + me["spoiler4Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler4Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerl5.getValue() or green_psi < 1500) { + me["spoiler5Lex"].setColor(0.7333,0.3803,0); + me["spoiler5Lrt"].setColor(0.7333,0.3803,0); + if (spoiler_L5.getValue() < 1.5) { + me["spoiler5Lf"].show(); + } else { + me["spoiler5Lf"].hide(); + } + } else { + me["spoiler5Lex"].setColor(0.0509,0.7529,0.2941); + me["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler5Lf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr1.getValue() or green_psi < 1500) { + me["spoiler1Rex"].setColor(0.7333,0.3803,0); + me["spoiler1Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R1.getValue() < 1.5) { + me["spoiler1Rf"].show(); + } else { + me["spoiler1Rf"].hide(); + } + } else { + me["spoiler1Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler1Rf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr2.getValue() or yellow_psi < 1500) { + me["spoiler2Rex"].setColor(0.7333,0.3803,0); + me["spoiler2Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R2.getValue() < 1.5) { + me["spoiler2Rf"].show(); + } else { + me["spoiler2Rf"].hide(); + } + } else { + me["spoiler2Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler2Rf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr3.getValue() or blue_psi < 1500) { + me["spoiler3Rex"].setColor(0.7333,0.3803,0); + me["spoiler3Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R3.getValue() < 1.5) { + me["spoiler3Rf"].show(); + } else { + me["spoiler3Rf"].hide(); + } + } else { + me["spoiler3Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler3Rf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr4.getValue() or yellow_psi < 1500) { + me["spoiler4Rex"].setColor(0.7333,0.3803,0); + me["spoiler4Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R4.getValue() < 1.5) { + me["spoiler4Rf"].show(); + } else { + me["spoiler4Rf"].hide(); + } + } else { + me["spoiler4Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler4Rf"].hide(); + } + + if (fbw.FBW.Failures.spoilerr5.getValue() or green_psi < 1500) { + me["spoiler5Rex"].setColor(0.7333,0.3803,0); + me["spoiler5Rrt"].setColor(0.7333,0.3803,0); + if (spoiler_R5.getValue() < 1.5) { + me["spoiler5Rf"].show(); + } else { + me["spoiler5Rf"].hide(); + } + } else { + me["spoiler5Rex"].setColor(0.0509,0.7529,0.2941); + me["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941); + me["spoiler5Rf"].hide(); + } + + # Show Brakes temperature + if (L1BrakeTempc.getValue() > 300) { + me["braketemp1"].setColor(0.7333,0.3803,0); + } else { + me["braketemp1"].setColor(0.0509,0.7529,0.2941); + } + + if (L2BrakeTempc.getValue() > 300) { + me["braketemp2"].setColor(0.7333,0.3803,0); + } else { + me["braketemp2"].setColor(0.0509,0.7529,0.2941); + } + if (R3BrakeTempc.getValue() > 300) { + me["braketemp3"].setColor(0.7333,0.3803,0); + } else { + me["braketemp3"].setColor(0.0509,0.7529,0.2941); + } + if (R4BrakeTempc.getValue() > 300) { + me["braketemp4"].setColor(0.7333,0.3803,0); + } else { + me["braketemp4"].setColor(0.0509,0.7529,0.2941); + } + + # Brake arcs + if (L1BrakeTempc.getValue() > 300) { + me["toparc1"].setColor(0.7333,0.3803,0); + } else + { + if (L1BrakeTempc.getValue() > 100 and L1BrakeTempc.getValue() < 300) + { + me["toparc1"].setColor(0.0509,0.7529,0.2941); + } + else { + me["toparc1"].setColor(0.8078,0.8039,0.8078); + } + } + if (L2BrakeTempc.getValue() > 300) { + me["toparc2"].setColor(0.7333,0.3803,0); + } else + { + if (L2BrakeTempc.getValue() > 100 and L2BrakeTempc.getValue() < 300) + { + me["toparc2"].setColor(0.0509,0.7529,0.2941); + } + else { + me["toparc2"].setColor(0.8078,0.8039,0.8078); + } + } + if (R3BrakeTempc.getValue() > 300) { + me["toparc3"].setColor(0.7333,0.3803,0); + } else + { + if (R3BrakeTempc.getValue() > 100 and R3BrakeTempc.getValue() < 300) + { + me["toparc3"].setColor(0.0509,0.7529,0.2941); + } + else { + me["toparc3"].setColor(0.8078,0.8039,0.8078); + } + } + if (R4BrakeTempc.getValue() > 300) { + me["toparc4"].setColor(0.7333,0.3803,0); + } else + { + if (R4BrakeTempc.getValue() > 100 and R4BrakeTempc.getValue() < 300) + { + me["toparc4"].setColor(0.0509,0.7529,0.2941); + } + else { + me["toparc4"].setColor(0.8078,0.8039,0.8078); + } + } + me["braketemp1"].setText(sprintf("%s", math.round(L1BrakeTempc.getValue(), 1))); + me["braketemp2"].setText(sprintf("%s", math.round(L2BrakeTempc.getValue(), 1))); + me["braketemp3"].setText(sprintf("%s", math.round(R3BrakeTempc.getValue(), 1))); + me["braketemp4"].setText(sprintf("%s", math.round(R4BrakeTempc.getValue(), 1))); + me["braketemp1"].show(); + me["braketemp2"].show(); + me["braketemp3"].show(); + me["braketemp4"].show(); + me["toparc1"].show(); + me["toparc2"].show(); + me["toparc3"].show(); + me["toparc4"].show(); + + # Hide not yet implemented stuff + me["leftuplock"].hide(); + me["noseuplock"].hide(); + me["rightuplock"].hide(); + me["tirepress1"].hide(); + me["tirepress2"].hide(); + me["tirepress3"].hide(); + me["tirepress4"].hide(); + me["tirepress5"].hide(); + me["tirepress6"].hide(); + + me.updateBottomStatus(); + }, +}; + +var canvas_lowerECAM_test = { + 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; + }, + new: func(canvas_group, file) { + var m = {parents: [canvas_lowerECAM_test]}; + m.init(canvas_group, file); + + return m; + }, + getKeys: func() { + return ["Test_white","Test_text"]; + }, + update: func() { + var elapsedtime = pts.Sim.Time.elapsedSec.getValue(); + if (du4_test_time.getValue() + 1 >= elapsedtime) { + me["Test_white"].show(); + me["Test_text"].hide(); + } else { + me["Test_white"].hide(); + me["Test_text"].show(); + } + }, +}; + +setlistener("/sim/signals/fdm-initialized", func { + lowerECAM_display = canvas.new({ + "name": "lowerECAM", + "size": [1024, 1024], + "view": [1024, 1024], + "mipmapping": 1 + }); + lowerECAM_display.addPlacement({"node": "lecam.screen"}); + var groupApu = lowerECAM_display.createGroup(); + var groupBleed = lowerECAM_display.createGroup(); + var groupCond = lowerECAM_display.createGroup(); + var groupCrz = lowerECAM_display.createGroup(); + var groupDoor = lowerECAM_display.createGroup(); + var groupElec = lowerECAM_display.createGroup(); + var groupEng = lowerECAM_display.createGroup(); + var groupFctl = lowerECAM_display.createGroup(); + var groupFuel = lowerECAM_display.createGroup(); + var groupPress = lowerECAM_display.createGroup(); + var groupStatus = lowerECAM_display.createGroup(); + var groupHyd = lowerECAM_display.createGroup(); + var groupWheel = lowerECAM_display.createGroup(); + var group_test = lowerECAM_display.createGroup(); + + lowerECAM_apu = canvas_lowerECAM_apu.new(groupApu, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg"); + lowerECAM_bleed = canvas_lowerECAM_bleed.new(groupBleed, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/bleed.svg"); + lowerECAM_cond = canvas_lowerECAM_cond.new(groupCond, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/cond.svg"); + lowerECAM_crz = canvas_lowerECAM_crz.new(groupCrz, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/crz.svg"); + lowerECAM_door = canvas_lowerECAM_door.new(groupDoor, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/door.svg"); + lowerECAM_elec = canvas_lowerECAM_elec.new(groupElec, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/elec.svg"); + lowerECAM_eng = canvas_lowerECAM_eng.new(groupEng, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/eng.svg"); + lowerECAM_fctl = canvas_lowerECAM_fctl.new(groupFctl, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fctl.svg"); + lowerECAM_fuel = canvas_lowerECAM_fuel.new(groupFuel, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fuel.svg"); + lowerECAM_press = canvas_lowerECAM_press.new(groupPress, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/press.svg"); + lowerECAM_status = canvas_lowerECAM_status.new(groupStatus, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/status.svg"); + lowerECAM_hyd = canvas_lowerECAM_hyd.new(groupHyd, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/hyd.svg"); + lowerECAM_wheel = canvas_lowerECAM_wheel.new(groupWheel, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/wheel.svg"); + lowerECAM_test = canvas_lowerECAM_test.new(group_test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg"); + + lowerECAM_update.start(); + if (rate.getValue() > 1) { + l_rateApply(); + } +}); + +var l_rateApply = func { + lowerECAM_update.restart(0.05 * rate.getValue()); +} + +var lowerECAM_update = maketimer(0.05, func { + canvas_lowerECAM_base.update(); +}); + +var showLowerECAM = func { + var dlg = canvas.Window.new([512, 512], "dialog").set("resize", 1); + dlg.setCanvas(lowerECAM_display); +} + +setlistener("/systems/electrical/bus/ac-2", func() { + canvas_lowerECAM_base.updateDu4(); +}, 0, 0); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index 35e6d808..fcf37cf6 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -1,180 +1,7 @@ # A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath -# Copyright (c) 2020 Josh Davidson (Octal450) - -var lowerECAM_apu = nil; -var lowerECAM_bleed = nil; -var lowerECAM_cond = nil; -var lowerECAM_crz = nil; -var lowerECAM_door = nil; -var lowerECAM_elec = nil; -var lowerECAM_eng = nil; -var lowerECAM_fctl = nil; -var lowerECAM_fuel = nil; -var lowerECAM_hyd = nil; -var lowerECAM_press = nil; -var lowerECAM_status = nil; -var lowerECAM_wheel = nil; -var lowerECAM_test = nil; -var lowerECAM_display = nil; -var page = "fctl"; -var blue_psi = 0; -var green_psi = 0; -var yellow_psi = 0; -var autobrakemode = 0; -var nosegear = 0; -var leftgear = 0; -var rightgear = 0; -var leftdoor = 0; -var rightdoor = 0; -var nosedoor = 0; -var gearlvr = 0; -var elapsedtime = 0; -var tr1_v = 0; -var tr1_a = 0; -var tr2_v = 0; -var tr2_a = 0; -var essTramps = 0; -var essTrvolts = 0; -var elac1Node = 0; -var elac2Node = 0; -var sec1Node = 0; -var sec2Node = 0; -var eng_valve_state = 0; -var bleed_valve_cur = 0; -var hp_valve_state = 0; -var xbleedcmdstate = 0; -var ramAirState = 0; - -# Conversion factor pounds to kilogram -LBS2KGS = 0.4535924; - -# Fetch Nodes -var acconfig_weight_kgs = props.globals.getNode("/systems/acconfig/options/weight-kgs", 1); -var rate = props.globals.getNode("/systems/acconfig/options/lecam-rate", 1); -var autoconfig_running = props.globals.getNode("/systems/acconfig/autoconfig-running", 1); -var lighting_du4 = props.globals.getNode("/controls/lighting/DU/du4", 1); -var ecam_page = props.globals.getNode("/ECAM/Lower/page", 1); -var hour = props.globals.getNode("/sim/time/utc/hour", 1); -var minute = props.globals.getNode("/sim/time/utc/minute", 1); -var apu_flap = props.globals.getNode("/controls/apu/inlet-flap/position-norm", 1); -var apu_rpm = props.globals.getNode("/engines/engine[2]/n1", 1); -var apu_egt = props.globals.getNode("/systems/apu/egt-degC", 1); -var door_left = props.globals.getNode("/ECAM/Lower/door-left", 1); -var door_right = props.globals.getNode("/ECAM/Lower/door-right", 1); -var door_nose_left = props.globals.getNode("/ECAM/Lower/door-nose-left", 1); -var door_nose_right = props.globals.getNode("/ECAM/Lower/door-nose-right", 1); -var apu_rpm_rot = props.globals.getNode("/ECAM/Lower/APU-N", 1); -var apu_egt_rot = props.globals.getNode("/ECAM/Lower/APU-EGT", 1); -var oil_qt1 = props.globals.getNode("/ECAM/Lower/Oil-QT[0]", 1); -var oil_qt2 = props.globals.getNode("/ECAM/Lower/Oil-QT[1]", 1); -var oil_psi1 = props.globals.getNode("/ECAM/Lower/Oil-PSI[0]", 1); -var oil_psi2 = props.globals.getNode("/ECAM/Lower/Oil-PSI[1]", 1); -var bleedapu = props.globals.getNode("/systems/pneumatics/source/apu-psi", 1); -var aileron_ind_left = props.globals.getNode("/ECAM/Lower/aileron-ind-left", 1); -var aileron_ind_right = props.globals.getNode("/ECAM/Lower/aileron-ind-right", 1); -var elevator_ind_left = props.globals.getNode("/ECAM/Lower/elevator-ind-left", 1); -var elevator_ind_right = props.globals.getNode("/ECAM/Lower/elevator-ind-right", 1); -var elevator_trim_deg = props.globals.getNode("/ECAM/Lower/elevator-trim-deg", 1); -var final_deg = props.globals.getNode("/fdm/jsbsim/hydraulics/rudder/final-deg", 1); -var temperature_degc = props.globals.getNode("/environment/temperature-degc", 1); -var tank3_content_lbs = props.globals.getNode("/fdm/jsbsim/propulsion/tank[2]/contents-lbs", 1); -var ir2_knob = props.globals.getNode("/controls/adirs/ir[1]/knob", 1); -var apuBleedNotOn = props.globals.getNode("/systems/pneumatics/warnings/apu-bleed-not-on", 1); -var apu_valve = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve-cmd", 1); -var apu_valve_state = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve", 1); -var xbleedcmd = props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve-cmd", 1); -var xbleed = props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve", 1); -var xbleedstate = nil; -var hp_valve1_state = props.globals.getNode("/systems/pneumatics/valves/engine-1-hp-valve", 1); -var hp_valve2_state = props.globals.getNode("/systems/pneumatics/valves/engine-2-hp-valve", 1); -var hp_valve1 = props.globals.getNode("/systems/pneumatics/valves/engine-1-hp-valve-cmd", 1); -var hp_valve2 = props.globals.getNode("/systems/pneumatics/valves/engine-2-hp-valve-cmd", 1); -var eng_valve1 = props.globals.getNode("/systems/pneumatics/valves/engine-1-prv-valve", 1); -var eng_valve2 = props.globals.getNode("/systems/pneumatics/valves/engine-2-prv-valve", 1); -var precooler1_psi = props.globals.getNode("/systems/pneumatics/psi/engine-1-psi", 1); -var precooler2_psi = props.globals.getNode("/systems/pneumatics/psi/engine-2-psi", 1); -var precooler1_temp = props.globals.getNode("/systems/pneumatics/precooler/temp-1", 1); -var precooler2_temp = props.globals.getNode("/systems/pneumatics/precooler/temp-2", 1); -var precooler1_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-1", 1); -var precooler2_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-2", 1); -var bmc1working = props.globals.getNode("/systems/pneumatics/indicating/bmc1-working", 1); -var bmc2working = props.globals.getNode("/systems/pneumatics/indicating/bmc2-working", 1); -var bmc1 = 0; -var bmc2 = 0; -var gs_kt = props.globals.getNode("/velocities/groundspeed-kt", 1); -var switch_wing_aice = props.globals.getNode("/controls/ice-protection/wing", 1); -var pack1_bypass = props.globals.getNode("/systems/pneumatics/pack-1-bypass", 1); -var pack2_bypass = props.globals.getNode("/systems/pneumatics/pack-2-bypass", 1); -var oil_qt1_actual = props.globals.getNode("/engines/engine[0]/oil-qt-actual", 1); -var oil_qt2_actual = props.globals.getNode("/engines/engine[1]/oil-qt-actual", 1); -var fuel_used_lbs1 = props.globals.getNode("/systems/fuel/fuel-used-1", 1); -var fuel_used_lbs2 = props.globals.getNode("/systems/fuel/fuel-used-2", 1); -var doorL1_pos = props.globals.getNode("/sim/model/door-positions/doorl1/position-norm", 1); -var doorR1_pos = props.globals.getNode("/sim/model/door-positions/doorr1/position-norm", 1); -var doorL4_pos = props.globals.getNode("/sim/model/door-positions/doorl4/position-norm", 1); -var doorR4_pos = props.globals.getNode("/sim/model/door-positions/doorr4/position-norm", 1); -var cargobulk_pos = props.globals.getNode("/sim/model/door-positions/cargobulk/position-norm", 1); -var cargofwd_pos = props.globals.getNode("/sim/model/door-positions/cargofwd/position-norm", 1); -var cargoaft_pos = props.globals.getNode("/sim/model/door-positions/cargoaft/position-norm", 1); -var gLoad = props.globals.getNode("/ECAM/Lower/g-force-display", 1); - -# Hydraulic -var blue_psi = 0; -var green_psi = 0; -var yellow_psi = 0; -var y_resv_lo_air_press = props.globals.getNode("/systems/hydraulic/yellow-resv-lo-air-press", 1); -var b_resv_lo_air_press = props.globals.getNode("/systems/hydraulic/blue-resv-lo-air-press", 1); -var g_resv_lo_air_press = props.globals.getNode("/systems/hydraulic/green-resv-lo-air-press", 1); -var elec_pump_y_ovht = props.globals.getNode("/systems/hydraulic/elec-pump-yellow-ovht", 1); -var elec_pump_b_ovht = props.globals.getNode("/systems/hydraulic/elec-pump-blue-ovht", 1); -var rat_deployed = props.globals.getNode("/controls/hydraulic/rat-deployed", 1); -var y_resv_ovht = props.globals.getNode("/systems/hydraulic/yellow-resv-ovht", 1); -var b_resv_ovht = props.globals.getNode("/systems/hydraulic/blue-resv-ovht", 1); -var g_resv_ovht = props.globals.getNode("/systems/hydraulic/green-resv-ovht", 1); -var askidsw = 0; -var brakemode = 0; -var accum = 0; -var L1BrakeTempc = props.globals.getNode("/gear/gear[1]/L1brake-temp-degc", 1); -var L2BrakeTempc = props.globals.getNode("/gear/gear[1]/L2brake-temp-degc", 1); -var R3BrakeTempc = props.globals.getNode("/gear/gear[2]/R3brake-temp-degc", 1); -var R4BrakeTempc = props.globals.getNode("/gear/gear[2]/R4brake-temp-degc", 1); - -var eng1_running = props.globals.getNode("/engines/engine[0]/running", 1); -var eng2_running = props.globals.getNode("/engines/engine[1]/running", 1); -var switch_cart = props.globals.getNode("/controls/electrical/ground-cart", 1); -var spoiler_L1 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l1/final-deg", 1); -var spoiler_L2 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l2/final-deg", 1); -var spoiler_L3 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l3/final-deg", 1); -var spoiler_L4 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l4/final-deg", 1); -var spoiler_L5 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l5/final-deg", 1); -var spoiler_R1 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r1/final-deg", 1); -var spoiler_R2 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r2/final-deg", 1); -var spoiler_R3 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r3/final-deg", 1); -var spoiler_R4 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r4/final-deg", 1); -var spoiler_R5 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r5/final-deg", 1); -var total_fuel_lbs = props.globals.getNode("/consumables/fuel/total-fuel-lbs", 1); -var fuel_flow1 = props.globals.getNode("/engines/engine[0]/fuel-flow_actual", 1); -var fuel_flow2 = props.globals.getNode("/engines/engine[1]/fuel-flow_actual", 1); -var fuel_left_outer_temp = props.globals.getNode("/consumables/fuel/tank[0]/temperature_degC", 1); -var fuel_left_inner_temp = props.globals.getNode("/consumables/fuel/tank[1]/temperature_degC", 1); -var fuel_right_outer_temp = props.globals.getNode("/consumables/fuel/tank[4]/temperature_degC", 1); -var fuel_right_inner_temp = props.globals.getNode("/consumables/fuel/tank[3]/temperature_degC", 1); -var cutoff_switch1 = props.globals.getNode("/controls/engines/engine[0]/cutoff-switch", 1); -var cutoff_switch2 = props.globals.getNode("/controls/engines/engine[1]/cutoff-switch", 1); -var autobreak_mode = props.globals.getNode("/controls/autobrake/mode", 1); -var gear1_pos = props.globals.getNode("/gear/gear[0]/position-norm", 1); -var gear2_pos = props.globals.getNode("/gear/gear[1]/position-norm", 1); -var gear3_pos = props.globals.getNode("/gear/gear[2]/position-norm", 1); -var gear_door_L = props.globals.getNode("/systems/hydraulic/gear/door-left", 1); -var gear_door_R = props.globals.getNode("/systems/hydraulic/gear/door-right", 1); -var gear_door_N = props.globals.getNode("/systems/hydraulic/gear/door-nose", 1); -var gear_down = props.globals.getNode("/controls/gear/gear-down", 1); -var press_vs_norm = props.globals.getNode("/systems/pressurization/vs-norm", 1); -var cabinalt = props.globals.getNode("/systems/pressurization/cabinalt-norm", 1); -var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); - -# Create Nodes: +var du4_lgt = props.globals.getNode("/controls/lighting/DU/du4", 1); var apu_load = props.globals.initNode("/systems/electrical/extra/apu-load", 0, "DOUBLE"); var gen1_load = props.globals.initNode("/systems/electrical/extra/gen1-load", 0, "DOUBLE"); var gen2_load = props.globals.initNode("/systems/electrical/extra/gen2-load", 0, "DOUBLE"); @@ -183,40 +10,235 @@ var du4_test_time = props.globals.initNode("/instrumentation/du/du4-test-time", var du4_test_amount = props.globals.initNode("/instrumentation/du/du4-test-amount", 0, "DOUBLE"); var du4_offtime = props.globals.initNode("/instrumentation/du/du4-off-time", 0.0, "DOUBLE"); -var canvas_lowerECAM_base = { - init: func(canvas_group, file) { - var font_mapper = func(family, weight) { +var canvas_lowerECAMPage = +{ + new: func(svg) { + var obj = {parents: [canvas_lowerECAMPage] }; + obj.canvas = canvas.new({ + "name": "lowerECAM", + "size": [1024, 1024], + "view": [1024, 1024], + "mipmapping": 1 + }); + + obj.canvas.addPlacement({"node": "lecam.screen"}); + obj.group = obj.canvas.createGroup(); + obj.test = obj.canvas.createGroup(); + + obj.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; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + obj.keysHash = obj.getKeys(); + + foreach(var key; obj.keysHash) { + obj[key] = obj.group.getElementById(key); + }; + + canvas.parsesvg(obj.test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg", {"font-mapper": obj.font_mapper} ); + foreach(var key; obj.getKeysTest()) { + obj[key] = obj.test.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + obj["APUGenOff"].hide(); + + obj.update_items = [ + props.UpdateManager.FromHashValue("apuFlap",1, func(val) { + if (val) { + obj["APUFlapOpen"].show(); + } else { + obj["APUFlapOpen"].hide(); + } + }), + props.UpdateManager.FromHashValue("apuNeedleRot",0.1, func(val) { + obj["APUN-needle"].setRotation((val + 90) * D2R); + }), + props.UpdateManager.FromHashValue("apuEgtRot",0.1, func(val) { + obj["APUEGT-needle"].setRotation((val + 90) * D2R); + }), + props.UpdateManager.FromHashValue("apuAvailable", nil, func(val) { + if (val) { + obj["APUAvail"].show(); + } else { + obj["APUAvail"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuRpm","apuEgt","apuMaster","apuGenPB"], nil, func(val) { + if (val.apuRpm > 0.001) { + obj["APUN"].setColor(0.0509,0.7529,0.2941); + obj["APUN"].setText(sprintf("%s", math.round(val.apuRpm))); + obj["APUN-needle"].show(); + obj["APUEGT"].setColor(0.0509,0.7529,0.2941); + obj["APUEGT"].setText(sprintf("%s", math.round(val.apuEgt, 5))); + obj["APUEGT-needle"].show(); + } else { + obj["APUN"].setColor(0.7333,0.3803,0); + obj["APUN"].setText(sprintf("%s", "XX")); + obj["APUN-needle"].hide(); + obj["APUEGT"].setColor(0.7333,0.3803,0); + obj["APUEGT"].setText(sprintf("%s", "XX")); + obj["APUEGT-needle"].hide(); + } + + if (val.apuMaster or val.apuRpm >= 94.9) { + obj["APUGenbox"].show(); + if (val.apuGenPB) { + obj["APUGenOff"].hide(); + obj["APUGentext"].setColor(0.8078,0.8039,0.8078); + obj["APUGenHz"].show(); + obj["APUGenVolt"].show(); + obj["APUGenLoad"].show(); + obj["text3724"].show(); + obj["text3728"].show(); + obj["text3732"].show(); + } else { + obj["APUGenOff"].show(); + obj["APUGentext"].setColor(0.7333,0.3803,0); + obj["APUGenHz"].hide(); + obj["APUGenVolt"].hide(); + obj["APUGenLoad"].hide(); + obj["text3724"].hide(); + obj["text3728"].hide(); + obj["text3732"].hide(); + } + } else { + obj["APUGentext"].setColor(0.8078,0.8039,0.8078); + obj["APUGenbox"].hide(); + obj["APUGenHz"].hide(); + obj["APUGenVolt"].hide(); + obj["APUGenLoad"].hide(); + obj["text3724"].hide(); + obj["text3728"].hide(); + obj["text3732"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuFuelPumpsOff","apuFuelPump"], nil, func(val) { + if (val.apuFuelPumpsOff and !val.apuFuelPump) { + obj["APUfuelLO"].show(); + } else { + obj["APUfuelLO"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuRpm","apuOilLevel","gear0Wow"], nil, func(val) { + if (val.apuRpm >= 94.9 and val.gear0Wow and val.apuOilLevel < 3.69) { + obj["APU-low-oil"].show(); + } else { + obj["APU-low-oil"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuAdr","apuPsi","apuRpm"], nil, func(val) { + if (val.apuAdr and val.apuRpm > 0.001) { + obj["APUBleedPSI"].setColor(0.0509,0.7529,0.2941); + obj["APUBleedPSI"].setText(sprintf("%s", math.round(val.apuPsi))); + } else { + obj["APUBleedPSI"].setColor(0.7333,0.3803,0); + obj["APUBleedPSI"].setText(sprintf("%s", "XX")); + } + }), + props.UpdateManager.FromHashValue("apuLoad", 0.1, func(val) { + obj["APUGenLoad"].setText(sprintf("%s", math.round(val))); + + if (val <= 100) { + obj["APUGenHz"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUGenHz"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("apuHertz", 1, func(val) { + obj["APUGenHz"].setText(sprintf("%s", math.round(val))); + + if (val >= 390 and val <= 410) { + obj["APUGenHz"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUGenHz"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("apuVolt", 0.1, func(val) { + obj["APUGenVolt"].setText(sprintf("%s", math.round(val))); + + if (val >= 110 and val <= 120) { + obj["APUGenVolt"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUGenVolt"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("apuGLC", nil, func(val) { + if (val) { + obj["APUGenOnline"].show(); + } else { + obj["APUGenOnline"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuBleedValvePos","apuBleedValveCmd"], nil, func(val) { + if (val.apuBleedValvePos == 1) { + obj["APUBleedValve"].setRotation(90 * D2R); + obj["APUBleedOnline"].show(); + } else { + obj["APUBleedValve"].setRotation(0); + obj["APUBleedOnline"].hide(); + } + + if (val.apuBleedValveCmd == val.apuBleedValvePos) { + obj["APUBleedValveCrossBar"].setColor(0.0509,0.7529,0.2941); + obj["APUBleedValveCrossBar"].setColorFill(0.0509,0.7529,0.2941); + obj["APUBleedValve"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUBleedValveCrossBar"].setColor(0.7333,0.3803,0); + obj["APUBleedValveCrossBar"].setColorFill(0.7333,0.3803,0); + obj["APUBleedValve"].setColor(0.7333,0.3803,0); + } + }), + ]; + return obj; }, getKeys: func() { - return []; + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUBleedValveCrossBar","APUGenOnline","APUGenOff","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil", + "text3724","text3728","text3732"]; }, - updateDu4: func() { - var elapsedtime = pts.Sim.Time.elapsedSec.getValue(); + getKeysTest: func() { + return ["Test_white","Test_text"]; + }, + update: func(notification) { + me.updatePower(); + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + }, + updateTest: func(notification) { + if (du4_test_time.getValue() + 1 >= notification.elapsedTime) { + me["Test_white"].show(); + me["Test_text"].hide(); + } else { + me["Test_white"].hide(); + me["Test_text"].show(); + } + }, + powerTransient: func() { if (systems.ELEC.Bus.ac2.getValue() >= 110) { - if (du4_offtime.getValue() + 3 < elapsedtime) { - if (gear0_wow.getValue()) { - if (autoconfig_running.getValue() != 1 and du4_test.getValue() != 1) { + if (du4_offtime.getValue() + 3 < pts.Sim.Time.elapsedSec.getValue()) { + if (pts.Gear.wow[0].getValue()) { + if (!acconfig.getBoolValue() and !du4_test.getBoolValue()) { du4_test.setValue(1); du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); - du4_test_time.setValue(elapsedtime); - } else if (autoconfig_running.getValue() and du4_test.getValue() != 1) { + du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue()); + } else if (acconfig.getBoolValue() and !du4_test.getBoolValue()) { du4_test.setValue(1); du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); - du4_test_time.setValue(elapsedtime - 30); + du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue() - 30); } } else { du4_test.setValue(1); @@ -226,3397 +248,83 @@ var canvas_lowerECAM_base = { } } else { du4_test.setValue(0); - du4_offtime.setValue(elapsedtime); + du4_offtime.setValue(pts.Sim.Time.elapsedSec.getValue()); } }, - update: func() { - var elapsedtime = pts.Sim.Time.elapsedSec.getValue(); - - if (systems.ELEC.Bus.ac2.getValue() >= 110 and lighting_du4.getValue() > 0.01) { - if (du4_test_time.getValue() + du4_test_amount.getValue() >= elapsedtime) { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_test.page.show(); - lowerECAM_test.update(); + updatePower: func() { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); } else { - lowerECAM_test.page.hide(); - page = ecam_page.getValue(); - if (page == "apu") { - lowerECAM_apu.page.show(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_apu.update(); - } else if (page == "bleed") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.show(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_bleed.update(); - } else if (page == "cond") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.show(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_cond.update(); - } else if (page == "cruise") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.show(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_crz.update(); - } else if (page == "door") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.show(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_door.update(); - } else if (page == "elec") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.show(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_elec.update(); - } else if (page == "eng") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.show(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_eng.update(); - } else if (page == "fctl") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.show(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_fctl.update(); - } else if (page == "fuel") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.show(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_fuel.update(); - } else if (page == "press") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.show(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_press.update(); - } else if (page == "sts") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.show(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_status.update(); - } else if (page == "hyd") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.show(); - lowerECAM_wheel.page.hide(); - lowerECAM_hyd.update(); - } else if (page == "wheel") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.show(); - lowerECAM_wheel.update(); - } else { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - } + me.group.setVisible(1); + me.test.setVisible(0); } } else { - lowerECAM_test.page.hide(); - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - } - }, - displayedGForce: 0, - updateBottomStatus: func() { - if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); - me["SAT"].setColor(0.0509,0.7529,0.2941); - } else { - me["SAT"].setText(sprintf("%s", "XX")); - me["SAT"].setColor(0.7333,0.3803,0); - } - - if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); - me["TAT"].setColor(0.0509,0.7529,0.2941); - } else { - me["TAT"].setText(sprintf("%s", "XX")); - me["TAT"].setColor(0.7333,0.3803,0); - } - - me.gloadStore = gLoad.getValue(); - if ((me.gloadStore == 1 and !me.displayedGForce) or (me.gloadStore != 0 and me.displayedGForce)) { - me.displayedGForce = 1; - me["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", pts.Accelerations.pilotGDamped.getValue())); - me["GLoad"].show(); - } else { - me.displayedGForce = 0; - me["GLoad"].hide(); - } - - me["UTCh"].setText(sprintf("%02d", hour.getValue())); - me["UTCm"].setText(sprintf("%02d", minute.getValue())); - - if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and ecam.phaseNode.getValue() != 1) { - if (acconfig_weight_kgs.getValue()) { - me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); - } else { - me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); - } - me["GW"].setColor(0.0509,0.7529,0.2941); - } else { - me["GW"].setText(sprintf("%s", "-----")); - me["GW"].setColor(0.0901,0.6039,0.7176); - } - - if (acconfig_weight_kgs.getValue()) { - me["GW-weight-unit"].setText("KG"); - } else { - me["GW-weight-unit"].setText("LBS"); + me.group.setVisible(0); + me.test.setVisible(0); } }, }; -var canvas_lowerECAM_apu = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_apu, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUGenOnline","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil", - "text3724","text3728","text3732"]; - }, - update: func() { - # Avail and Flap Open - if (apu_flap.getValue()) { - me["APUFlapOpen"].show(); - } else { - me["APUFlapOpen"].hide(); - } - - if (apu_rpm.getValue() > 94.9) { - me["APUAvail"].show(); - } else { - me["APUAvail"].hide(); - } - - if (!systems.FUEL.Pumps.apu.getBoolValue() and systems.FUEL.Pumps.allOff.getBoolValue()) { - me["APUfuelLO"].show(); - } else { - me["APUfuelLO"].hide(); - } - - # APU Gen - if (systems.ELEC.Source.APU.volts.getValue() >= 110) { - me["APUGenVolt"].setColor(0.0509,0.7529,0.2941); - } else { - me["APUGenVolt"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Source.APU.hertz.getValue() > 380) { - me["APUGenHz"].setColor(0.0509,0.7529,0.2941); - } else { - me["APUGenHz"].setColor(0.7333,0.3803,0); - } - - if (systems.APUNodes.Controls.master.getValue() or apu_rpm.getValue() >= 94.9) { - me["APUGenbox"].show(); - me["APUGenHz"].show(); - me["APUGenVolt"].show(); - me["APUGenLoad"].show(); - me["text3724"].show(); - me["text3728"].show(); - me["text3732"].show(); - } else { - me["APUGenbox"].hide(); - me["APUGenHz"].hide(); - me["APUGenVolt"].hide(); - me["APUGenLoad"].hide(); - me["text3724"].hide(); - me["text3728"].hide(); - me["text3732"].hide(); - } - - if ((apu_rpm.getValue() > 94.9) and (systems.ELEC.Source.APU.contact.getValue())) { - me["APUGenOnline"].show(); - } else { - me["APUGenOnline"].hide(); - } - - if ((systems.APUNodes.Controls.master.getValue() == 0) or ((systems.APUNodes.Controls.master.getValue()) and (systems.ELEC.Source.APU.contact.getValue()) and (apu_rpm.getValue() > 94.9))) { - me["APUGentext"].setColor(0.8078,0.8039,0.8078); - } else if ((systems.APUNodes.Controls.master.getValue()) and (systems.ELEC.Source.APU.contact.getValue() == 0) and (apu_rpm.getValue() < 94.9)) { - me["APUGentext"].setColor(0.7333,0.3803,0); - } - - me["APUGenLoad"].setText(sprintf("%s", math.round(apu_load.getValue()))); - me["APUGenVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.APU.volts.getValue()))); - me["APUGenHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.APU.hertz.getValue()))); - - # APU Bleed - if (systems.ADIRS.Operating.adr[0].getValue() and (systems.APUNodes.Controls.bleed.getValue() or bleedapu.getValue() > 0)) { - me["APUBleedPSI"].setColor(0.0509,0.7529,0.2941); - me["APUBleedPSI"].setText(sprintf("%s", math.round(bleedapu.getValue()))); - } else { - me["APUBleedPSI"].setColor(0.7333,0.3803,0); - me["APUBleedPSI"].setText(sprintf("%s", "XX")); - } - - var apu_valve_state2 = apu_valve_state.getValue(); - if (apu_valve_state2 == 1) { - me["APUBleedValve"].setRotation(90 * D2R); - } else { - me["APUBleedValve"].setRotation(0); - } - - if (apu_valve_state2 == apu_valve_state.getValue()) { - me["APUBleedValve"].setColor(0.0509,0.7529,0.2941); - me["APUBleedOnline"].show(); - } else { - me["APUBleedValve"].setColor(0.7333,0.3803,0); - me["APUBleedOnline"].hide(); - } - - - # APU N and EGT - if (systems.APUNodes.Controls.master.getValue()) { - me["APUN"].setColor(0.0509,0.7529,0.2941); - me["APUN"].setText(sprintf("%s", math.round(apu_rpm.getValue() or 0))); - me["APUEGT"].setColor(0.0509,0.7529,0.2941); - me["APUEGT"].setText(sprintf("%s", math.round(apu_egt.getValue() or 0, 5))); - } else if (apu_rpm.getValue() >= 1) { - me["APUN"].setColor(0.0509,0.7529,0.2941); - me["APUN"].setText(sprintf("%s", math.round(apu_rpm.getValue() or 0))); - me["APUEGT"].setColor(0.0509,0.7529,0.2941); - me["APUEGT"].setText(sprintf("%s", math.round(apu_egt.getValue() or 0, 5))); - } else { - me["APUN"].setColor(0.7333,0.3803,0); - me["APUN"].setText(sprintf("%s", "XX")); - me["APUEGT"].setColor(0.7333,0.3803,0); - me["APUEGT"].setText(sprintf("%s", "XX")); - } - me["APUN-needle"].setRotation((apu_rpm_rot.getValue() + 90) * D2R); - me["APUEGT-needle"].setRotation((apu_egt_rot.getValue() + 90) * D2R); - - if (systems.APUNodes.Oil.level.getValue() < 3.69 and apu_rpm.getValue() < 94.9 and gear0_wow.getValue()) { - me["APU-low-oil"].show(); - } else { - me["APU-low-oil"].hide(); - } - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_bleed = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_bleed, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit", "BLEED-XFEED", "BLEED-Ram-Air", "BLEED-APU-CIRCLE", "BLEED-HP-Valve-1", - "BLEED-APU-LINES","BLEED-ENG-1", "BLEED-HP-Valve-2", "BLEED-ENG-2", "BLEED-Precooler-1-Inlet-Press", "BLEED-Precooler-1-Outlet-Temp", - "BLEED-Precooler-2-Inlet-Press", "BLEED-Precooler-2-Outlet-Temp", "BLEED-ENG-1-label", "BLEED-ENG-2-label", - "BLEED-GND", "BLEED-Pack-1-Flow-Valve", "BLEED-Pack-2-Flow-Valve", "BLEED-Pack-1-Out-Temp","BLEED-APU-connectionTop", - "BLEED-Pack-1-Comp-Out-Temp", "BLEED-Pack-1-Packflow-needle", "BLEED-Pack-1-Bypass-needle", "BLEED-Pack-2-Out-Temp", - "BLEED-Pack-2-Bypass-needle", "BLEED-Pack-2-Comp-Out-Temp", "BLEED-Pack-2-Packflow-needle", "BLEED-Anti-Ice-Left", - "BLEED-Anti-Ice-Right", "BLEED-HP-2-connection", "BLEED-HP-1-connection", "BLEED-ANTI-ICE-ARROW-LEFT", "BLEED-ANTI-ICE-ARROW-RIGHT", - "BLEED-xbleedLeft","BLEED-xbleedCenter","BLEED-xbleedRight","BLEED-cond-1","BLEED-cond-2","BLEED-cond-3","BLEED-Ram-Air-connection"]; - }, - update: func() { - # X BLEED - xbleedstate = xbleed.getValue(); - xbleedcmdstate = xbleedcmd.getBoolValue(); - if (xbleedcmdstate != xbleedstate) { - me["BLEED-XFEED"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-XFEED"].setColor(0.0509,0.7529,0.2941); - } - - if (xbleedcmdstate == xbleedstate) { - if (xbleedcmdstate) { - me["BLEED-XFEED"].setRotation(0); - } else { - me["BLEED-XFEED"].setRotation(90 * D2R); - } - } else { - me["BLEED-XFEED"].setRotation(45 * D2R); - } - - if (xbleedstate == 1) { - me["BLEED-xbleedCenter"].show(); - me["BLEED-xbleedRight"].show(); - } else { - me["BLEED-xbleedCenter"].hide(); - me["BLEED-xbleedRight"].hide(); - } - - # HP valve 1 - hp_valve_state = hp_valve1_state.getValue(); - - if (hp_valve_state == 1) { - me["BLEED-HP-Valve-1"].setRotation(90 * D2R); - me["BLEED-HP-1-connection"].show(); - } else { - me["BLEED-HP-Valve-1"].setRotation(0); - me["BLEED-HP-1-connection"].hide(); - } - - if (hp_valve_state == hp_valve1.getValue()) { - me["BLEED-HP-Valve-1"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-HP-Valve-1"].setColor(0.7333,0.3803,0); - } - - # HP valve 2 - hp_valve_state = hp_valve2_state.getValue(); - - if (hp_valve_state == 1) { - me["BLEED-HP-Valve-2"].setRotation(90 * D2R); - me["BLEED-HP-2-connection"].show(); - } else { - me["BLEED-HP-Valve-2"].setRotation(0); - me["BLEED-HP-2-connection"].hide(); - } - - if (hp_valve_state == hp_valve2.getValue()) { - me["BLEED-HP-Valve-2"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-HP-Valve-2"].setColor(0.7333,0.3803,0); - } - - # ENG BLEED valve 1 - eng_valve_state = systems.PNEU.Switch.bleed1.getValue(); - bleed_valve_cur = eng_valve1.getValue(); - - if (bleed_valve_cur == 0) { - me["BLEED-ENG-1"].setRotation(0); - } else { - me["BLEED-ENG-1"].setRotation(90 * D2R); - } - - if (eng_valve_state == bleed_valve_cur) { - me["BLEED-ENG-1"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-ENG-1"].setColor(0.7333,0.3803,0); - } - - # APU BLEED valve - var apu_valve_state2 = apu_valve_state.getValue(); - - if (systems.APUNodes.Controls.master.getValue()) { - me["BLEED-APU-LINES"].show(); - if (apu_valve_state2 == 1) { - me["BLEED-APU-CIRCLE"].setRotation(0); - me["BLEED-APU-connectionTop"].show(); - me["BLEED-xbleedLeft"].show(); - } else { - me["BLEED-APU-CIRCLE"].setRotation(90 * D2R); - me["BLEED-APU-connectionTop"].hide(); - if (xbleed.getValue() != 1) { - me["BLEED-xbleedLeft"].hide(); - } else { - me["BLEED-xbleedLeft"].show(); - } - } - if (apuBleedNotOn.getValue() != 1) { - me["BLEED-APU-CIRCLE"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-APU-CIRCLE"].setColor(0.7333,0.3803,0); - } - } else { - if (xbleed.getValue() != 1) { - me["BLEED-xbleedLeft"].hide(); - } else { - me["BLEED-xbleedLeft"].show(); - } - me["BLEED-APU-LINES"].hide(); - me["BLEED-APU-connectionTop"].hide(); - } - - # ENG BLEED valve 2 - eng_valve_state = systems.PNEU.Switch.bleed2.getValue(); - bleed_valve_cur = eng_valve2.getValue(); - - if (bleed_valve_cur == 0) { - me["BLEED-ENG-2"].setRotation(0); - } else { - me["BLEED-ENG-2"].setRotation(90 * D2R); - } - - if (eng_valve_state == bleed_valve_cur) { - me["BLEED-ENG-2"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-ENG-2"].setColor(0.7333,0.3803,0); - } - - # Precooler inlet 1 - bmc1 = bmc1working.getValue(); - bmc2 = bmc2working.getValue(); - - if (bmc1) { - var precooler_psi = precooler1_psi.getValue(); - me["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", math.round(precooler_psi))); - if (precooler_psi < 4 or precooler_psi > 57) { - me["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Precooler-1-Inlet-Press"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", "XX")); - me["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0); - } - - # Precooler inlet 2 - if (bmc2) { - var precooler_psi = precooler2_psi.getValue(); - me["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", math.round(precooler_psi))); - if (precooler_psi < 4 or precooler_psi > 57) { - me["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Precooler-2-Inlet-Press"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", "XX")); - me["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0); - } - - # Precooler outlet 1 - if (bmc1) { - var precooler_temp = precooler1_temp.getValue(); - me["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", math.round(precooler_temp, 5))); - if (systems.PNEU.Switch.bleed1.getValue() and (precooler_temp < 150 or precooler1_ovht.getValue())) { - me["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Precooler-1-Outlet-Temp"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", "XX")); - me["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0); - } - - # Precooler outlet 2 - if (bmc2) { - var precooler_temp = precooler2_temp.getValue(); - me["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", math.round(precooler_temp, 5))); - if (systems.PNEU.Switch.bleed2.getValue() and (precooler_temp < 150 or precooler2_ovht.getValue())) { - me["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Precooler-2-Outlet-Temp"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", "XX")); - me["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0); - } - - # GND air - if (pts.Gear.wow[1].getValue()) { - me["BLEED-GND"].show(); - } else { - me["BLEED-GND"].hide(); - } - - # WING ANTI ICE - if (switch_wing_aice.getValue()) { - me["BLEED-Anti-Ice-Left"].show(); - me["BLEED-Anti-Ice-Right"].show(); - } else { - me["BLEED-Anti-Ice-Left"].hide(); - me["BLEED-Anti-Ice-Right"].hide(); - } - - # ENG 1 label - if (pts.Engines.Engine.n2Actual[0].getValue() >= 59) { - me["BLEED-ENG-1-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["BLEED-ENG-1-label"].setColor(0.7333,0.3803,0); - } - - # ENG 2 label - if (pts.Engines.Engine.n2Actual[1].getValue() >= 59) { - me["BLEED-ENG-2-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["BLEED-ENG-2-label"].setColor(0.7333,0.3803,0); - } - - # PACK 1 ----------------------------------------- - packValveState = systems.PNEU.Valves.pack1.getValue(); - me["BLEED-Pack-1-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack1OutTemp.getValue(), 5))); - me["BLEED-Pack-1-Comp-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack1OutletTemp.getValue(), 5))); - - if (systems.PNEU.Packs.pack1OutTemp.getValue() > 90) { - me["BLEED-Pack-1-Out-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Pack-1-Out-Temp"].setColor(0.0509,0.7529,0.2941); - } - - # `-50` cause the middel position from where we move the needle is at 50 - me["BLEED-Pack-1-Bypass-needle"].setRotation((pack1_bypass.getValue() - 50) * D2R); - - if (systems.PNEU.Packs.pack1OutletTemp.getValue() > 230) { - me["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941); - } - - me["BLEED-Pack-1-Packflow-needle"].setRotation(systems.PNEU.Packs.packFlow1.getValue() * D2R); - - if (packValveState == 0) { - me["BLEED-Pack-1-Packflow-needle"].setColorFill(0.7333,0.3803,0); - me["BLEED-Pack-1-Flow-Valve"].setRotation(90 * D2R); - } else { - me["BLEED-Pack-1-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941); - me["BLEED-Pack-1-Flow-Valve"].setRotation(0); - } - - if (packValveState == systems.PNEU.Switch.pack1.getValue()) { - me["BLEED-Pack-1-Flow-Valve"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-Pack-1-Flow-Valve"].setColor(0.7333,0.3803,0); - } - - # PACK 2 ----------------------------------------- - packValveState = systems.PNEU.Valves.pack2.getValue(); - me["BLEED-Pack-2-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack2OutTemp.getValue(), 5))); - me["BLEED-Pack-2-Comp-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack2OutletTemp.getValue(), 5))); - - if (systems.PNEU.Packs.pack2OutTemp.getValue() > 90) { - me["BLEED-Pack-2-Out-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Pack-2-Out-Temp"].setColor(0.0509,0.7529,0.2941); - } - - me["BLEED-Pack-2-Bypass-needle"].setRotation((pack2_bypass.getValue() - 50) * D2R); - - if (systems.PNEU.Packs.pack2OutletTemp.getValue() > 230) { - me["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941); - } - - me["BLEED-Pack-2-Packflow-needle"].setRotation(systems.PNEU.Packs.packFlow2.getValue() * D2R); - - if (packValveState == 0) { - me["BLEED-Pack-2-Packflow-needle"].setColorFill(0.7333,0.3803,0); - me["BLEED-Pack-2-Flow-Valve"].setRotation(90 * D2R); - } else { - me["BLEED-Pack-2-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941); - me["BLEED-Pack-2-Flow-Valve"].setRotation(0); - } - - if (packValveState == systems.PNEU.Switch.pack2.getValue()) { - me["BLEED-Pack-2-Flow-Valve"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-Pack-2-Flow-Valve"].setColor(0.7333,0.3803,0); - } - - # Ram Air - ramAirState = systems.PNEU.Valves.ramAir.getValue(); - if (ramAirState == 0) { - me["BLEED-Ram-Air"].setRotation(90 * D2R); - me["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941); - me["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941); - me["BLEED-Ram-Air-connection"].hide(); - } elsif (ramAirState) { - me["BLEED-Ram-Air"].setRotation(0); - if (pts.Gear.wow[1].getValue()) { - me["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); - me["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); - } else { - me["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941); - me["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941); - } - me["BLEED-Ram-Air-connection"].show(); - } else { - me["BLEED-Ram-Air"].setRotation(45 * D2R); - me["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); - me["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); - me["BLEED-Ram-Air-connection"].show(); - } - - # Triangles - if (systems.PNEU.Valves.pack1.getValue() == 0 and systems.PNEU.Valves.pack2.getValue() == 0) { - if (pts.Gear.wow[1].getValue() or ramAirState != 1) { - me["BLEED-cond-1"].setColor(0.7333,0.3803,0); - me["BLEED-cond-2"].setColor(0.7333,0.3803,0); - me["BLEED-cond-3"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941); - me["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941); - me["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941); - me["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941); - me["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941); - } - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_cond = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_cond, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","CargoCond","CONDHotAirValve","CONDFanFwdFault","CONDFanAftFault", - "CONDTrimValveCKPT","CONDTrimValveAFT","CONDTrimValveFWD","CONDDuctTempCKPT","CONDDuctTempAFT","CONDDuctTempFWD","CONDTempCKPT","CONDTempAFT","CONDTempFWD"]; - }, - update: func() { - if (systems.PNEU.Valves.hotAir.getValue() == 0) { - me["CONDHotAirValve"].setRotation(90 * D2R); - if (systems.PNEU.Switch.hotAir.getBoolValue()) { - me["CONDHotAirValve"].setColor(0.7333,0.3803,0); - } else { - me["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["CONDHotAirValve"].setRotation(0); # doesn't show rotation in transit - if (systems.PNEU.Switch.hotAir.getBoolValue()) { - me["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941); - } else { - me["CONDHotAirValve"].setColor(0.7333,0.3803,0); - } - } - - me["CONDTrimValveCKPT"].setRotation(systems.PNEU.Packs.trimCockpit.getValue() * D2R); - me["CONDTrimValveAFT"].setRotation(systems.PNEU.Packs.trimAft.getValue() * D2R); - me["CONDTrimValveFWD"].setRotation(systems.PNEU.Packs.trimFwd.getValue() * D2R); - - me["CONDDuctTempCKPT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cockpitDuctTemp.getValue()))); - me["CONDDuctTempAFT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinAftDuctTemp.getValue()))); - me["CONDDuctTempFWD"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinFwdDuctTemp.getValue()))); - - me["CONDTempCKPT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cockpitTemp.getValue()))); - me["CONDTempAFT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinAftTemp.getValue()))); - me["CONDTempFWD"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinFwdTemp.getValue()))); - - # fans faults not implemented - me["CONDFanFwdFault"].hide(); - me["CONDFanAftFault"].hide(); - - # aft cargo ventilation disabled - me["CargoCond"].hide(); - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_crz = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_crz, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Oil1","Oil2","FUsed1","FUsed2","FUsed","VIB1N1","VIB1N2","VIB2N1","VIB2N2","deltaPSI","LDGELEV-AUTO","LDGELEV","CABVS","CABALT","VS-Arrow-UP","VS-Arrow-DN","CKPT-TEMP","FWD-TEMP","AFT-TEMP","Fused-weight-unit"]; - }, - update: func() { - - me["Oil1"].setText(sprintf("%2.1f", oil_qt1_actual.getValue())); - me["Oil2"].setText(sprintf("%2.1f", oil_qt2_actual.getValue())); - - if (acconfig_weight_kgs.getValue()) { - me["Fused-weight-unit"].setText("KG"); - me["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); - me["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); - me["FUsed"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10) + math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10)))); - } else { - me["Fused-weight-unit"].setText("LBS"); - me["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); - me["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); - me["FUsed"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue(), 10) + math.round(fuel_used_lbs2.getValue(), 10)))); - } - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_door = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_door, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"]; - }, - update: func() { - # If you make AirBerlin or Allegiant livery add below - - if (doorL1_pos.getValue() > 0) { - me["Cabin1Left"].show(); - me["Cabin1Left"].setColor(0.7333,0.3803,0); - me["Cabin1Left"].setColorFill(0.7333,0.3803,0); - me["Cabin1LeftLbl"].show(); - me["Cabin1LeftLine"].show(); - } else { - me["Cabin1Left"].setColor(0.0509,0.7529,0.2941); - me["Cabin1Left"].setColorFill(0,0,0); - me["Cabin1LeftLbl"].hide(); - me["Cabin1LeftLine"].hide(); - } - - if (doorR1_pos.getValue() > 0) { - me["Cabin1Right"].show(); - me["Cabin1Right"].setColor(0.7333,0.3803,0); - me["Cabin1Right"].setColorFill(0.7333,0.3803,0); - me["Cabin1RightLbl"].show(); - me["Cabin1RightLine"].show(); - } else { - me["Cabin1Right"].setColor(0.0509,0.7529,0.2941); - me["Cabin1Right"].setColorFill(0,0,0); - me["Cabin1RightLbl"].hide(); - me["Cabin1RightLine"].hide(); - } - - if (doorL4_pos.getValue() > 0) { - me["Cabin4Left"].show(); - me["Cabin4Left"].setColor(0.7333,0.3803,0); - me["Cabin4Left"].setColorFill(0.7333,0.3803,0); - me["Cabin4LeftLbl"].show(); - me["Cabin4LeftLine"].show(); - } else { - me["Cabin4Left"].setColor(0.0509,0.7529,0.2941); - me["Cabin4Left"].setColorFill(0,0,0); - me["Cabin4LeftLbl"].hide(); - me["Cabin4LeftLine"].hide(); - } - - if (doorR4_pos.getValue() > 0) { - me["Cabin4Right"].show(); - me["Cabin4Right"].setColor(0.7333,0.3803,0); - me["Cabin4Right"].setColorFill(0.7333,0.3803,0); - me["Cabin4RightLbl"].show(); - me["Cabin4RightLine"].show(); - } else { - me["Cabin4Right"].setColor(0.0509,0.7529,0.2941); - me["Cabin4Right"].setColorFill(0,0,0); - me["Cabin4RightLbl"].hide(); - me["Cabin4RightLine"].hide(); - } - - if (cargobulk_pos.getValue() > 0) { - me["Bulk"].setColor(0.7333,0.3803,0); - me["Bulk"].setColorFill(0.7333,0.3803,0); - me["BulkLbl"].show(); - me["BulkLine"].show(); - } else { - me["Bulk"].setColor(0.0509,0.7529,0.2941); - me["Bulk"].setColorFill(0,0,0); - me["BulkLbl"].hide(); - me["BulkLine"].hide(); - } - - if (cargofwd_pos.getValue() > 0) { - me["Cargo1Door"].setColor(0.7333,0.3803,0); - me["Cargo1Door"].setColorFill(0.7333,0.3803,0); - me["Cargo1Lbl"].show(); - me["Cargo1Line"].show(); - } else { - me["Cargo1Door"].setColor(0.0509,0.7529,0.2941); - me["Cargo1Door"].setColorFill(0,0,0); - me["Cargo1Lbl"].hide(); - me["Cargo1Line"].hide(); - } - - if (cargoaft_pos.getValue() > 0) { - me["Cargo2Door"].setColor(0.7333,0.3803,0); - me["Cargo2Door"].setColorFill(0.7333,0.3803,0); - me["Cargo2Lbl"].show(); - me["Cargo2Line"].show(); - } else { - me["Cargo2Door"].setColor(0.0509,0.7529,0.2941); - me["Cargo2Door"].setColorFill(0,0,0); - me["Cargo2Lbl"].hide(); - me["Cargo2Line"].hide(); - } - - me["Cabin1LeftSlide"].hide(); - me["Cabin1RightSlide"].hide(); - me["Cabin2LeftSlide"].hide(); - me["Cabin2RightSlide"].hide(); - me["Cabin3LeftSlide"].hide(); - me["Cabin3RightSlide"].hide(); - me["Cabin4LeftSlide"].hide(); - me["Cabin4RightSlide"].hide(); - - me["DOOROXY-REGUL-LO-PR"].hide(); - me["AvionicsLine1"].hide(); - me["AvionicsLine2"].hide(); - me["AvionicsLbl1"].hide(); - me["AvionicsLbl2"].hide(); - me["ExitLSlide"].hide(); - me["ExitLLine"].hide(); - me["ExitLLbl"].hide(); - me["ExitRSlide"].hide(); - me["ExitRLine"].hide(); - me["ExitRLbl"].hide(); - me["Cabin1LeftSlide"].hide(); - me["Cabin1RightSlide"].hide(); - me["Cabin4LeftSlide"].hide(); - me["Cabin4RightSlide"].hide(); - me["Cabin2Left"].hide(); - me["Cabin2LeftLine"].hide(); - me["Cabin2LeftLbl"].hide(); - me["Cabin2Right"].hide(); - me["Cabin2RightLine"].hide(); - me["Cabin2RightLbl"].hide(); - me["Cabin3Left"].hide(); - me["Cabin3LeftLine"].hide(); - me["Cabin3LeftLbl"].hide(); - me["Cabin3Right"].hide(); - me["Cabin3RightLine"].hide(); - me["Cabin3RightLbl"].hide(); - - me.updateBottomStatus(); - }, -}; - -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","UTCh","UTCm","GLoad","GW-weight-unit","BAT1-label","Bat1Volt","Bat1Ampere","BAT2-label","Bat2Volt","Bat2Ampere","BAT1-charge","BAT1-discharge","BAT2-charge","BAT2-discharge","ELEC-Line-DC1-DCBAT","ELEC-Line-DC1-DCESS","ELEC-Line-DC2-DCBAT", - "ELEC-Line-DC1-DCESS_DCBAT","ELEC-Line-DC2-DCESS_DCBAT","ELEC-Line-TR1-DC1","ELEC-Line-TR2-DC2","Shed-label","ELEC-Line-ESSTR-DCESS","TR1-label","TR1Volt","TR1Ampere","TR2-label","TR2Volt","TR2Ampere","EMERGEN-group","EmergenVolt","EmergenHz", - "ELEC-Line-Emergen-ESSTR","EMERGEN-Label-off","Emergen-Label","EMERGEN-out","ELEC-Line-ACESS-TRESS","ELEC-Line-AC1-TR1","ELEC-Line-AC2-TR2","ELEC-Line-AC1-ACESS","ELEC-Line-AC2-ACESS","ACESS-SHED","ACESS","AC1-in","AC2-in","ELEC-Line-GEN1-AC1","ELEC-Line-GEN2-AC2", - "ELEC-Line-APU-AC1","ELEC-Line-APU-EXT","ELEC-Line-EXT-AC2","APU-out","EXT-out","EXTPWR-group","ExtVolt","ExtHz","APU-content","APU-border","APUGentext","APUGenLoad","APUGenVolt","APUGenHz","APUGEN-off","GEN1-label","Gen1Load","Gen1Volt","Gen1Hz", - "GEN2-label","Gen2Load","GEN2-off","Gen2Volt","Gen2Hz","ELEC-IDG-1-label","ELEC-IDG-1-num-label","ELEC-IDG-1-Temp","IDG1-LOPR","IDG1-DISC","IDG1-RISE-Value","IDG1-RISE-label","GalleyShed","ELEC-IDG-2-Temp","ELEC-IDG-2-label","ELEC-IDG-2-num-label","IDG2-RISE-label","IDG2-RISE-Value","IDG2-LOPR", - "IDG2-DISC","ESSTR-group","ESSTR","ESSTR-Volt","ESSTR-Ampere","BAT1-content","BAT2-content","BAT1-OFF","BAT2-OFF","GEN1-content","GEN2-content","GEN-1-num-label","GEN-2-num-label","GEN1-off","GEN2-off","GEN1-num-label","GEN2-num-label","EXTPWR-label", - "ELEC-ACESS-SHED-label","ELEC-DCBAT-label","ELEC-DCESS-label","ELEC-DC2-label","ELEC-DC1-label","ELEC-AC1-label","ELEC-AC2-label","ELEC-ACESS-label","ELEC-Line-ESSTR-DCESS-off","ELEC-Line-Emergen-ESSTR-off"]; - }, - update: func() { - - # BAT1 - if (systems.ELEC.Switch.bat1.getValue() == 0) { - me["BAT1-OFF"].show(); - me["BAT1-content"].hide(); - me["BAT1-discharge"].hide(); - me["BAT1-charge"].hide(); - } else { - me["BAT1-OFF"].hide(); - me["BAT1-content"].show(); - me["Bat1Ampere"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat1.amps.getValue()))); - me["Bat1Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat1.volt.getValue()))); - - if (systems.ELEC.Source.Bat1.volt.getValue() >= 24.95 and systems.ELEC.Source.Bat1.volt.getValue() <= 31.05) { - me["Bat1Volt"].setColor(0.0509,0.7529,0.2941); - } else { - me["Bat1Volt"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Source.Bat1.amps.getValue() > 5) { - me["Bat1Ampere"].setColor(0.7333,0.3803,0); - } else { - me["Bat1Ampere"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.Bat1.direction.getValue() == 0) { - me["BAT1-discharge"].hide(); - me["BAT1-charge"].hide(); - } else { - if (systems.ELEC.Source.Bat1.direction.getValue() == -1) { - me["BAT1-charge"].show(); - me["BAT1-discharge"].hide(); - } else { - me["BAT1-discharge"].show(); - me["BAT1-charge"].hide(); - } - } - } - - if (systems.ELEC.Light.bat1Fault.getValue() or systems.ELEC.Source.Bat1.volt.getValue() < 25 or systems.ELEC.Source.Bat1.volt.getValue() > 31 or systems.ELEC.Source.Bat1.amps.getValue() > 5) { - me["BAT1-label"].setColor(0.7333,0.3803,0); - } else { - me["BAT1-label"].setColor(0.8078,0.8039,0.8078); - } - - # BAT2 - if (systems.ELEC.Switch.bat2.getValue() == 0) { - me["BAT2-OFF"].show(); - me["BAT2-content"].hide(); - me["BAT2-discharge"].hide(); - me["BAT2-charge"].hide(); - } else { - me["BAT2-OFF"].hide(); - me["BAT2-content"].show(); - me["Bat2Ampere"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat2.amps.getValue()))); - me["Bat2Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat2.volt.getValue()))); - - if (systems.ELEC.Source.Bat2.volt.getValue() >= 24.95 and systems.ELEC.Source.Bat2.volt.getValue() <= 31.05) { - me["Bat2Volt"].setColor(0.0509,0.7529,0.2941); - } else { - me["Bat2Volt"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Source.Bat2.amps.getValue() > 5) { - me["Bat2Ampere"].setColor(0.7333,0.3803,0); - } else { - me["Bat2Ampere"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.Bat2.direction.getValue() == 0) { - me["BAT2-discharge"].hide(); - me["BAT2-charge"].hide(); - } else { - if (systems.ELEC.Source.Bat2.direction.getValue() == -1) { - me["BAT2-charge"].show(); - me["BAT2-discharge"].hide(); - } else { - me["BAT2-discharge"].show(); - me["BAT2-charge"].hide(); - } - } - } - - if (systems.ELEC.Light.bat2Fault.getValue() or systems.ELEC.Source.Bat2.volt.getValue() < 25 or systems.ELEC.Source.Bat2.volt.getValue() > 31 or systems.ELEC.Source.Bat2.amps.getValue() > 5) { - me["BAT2-label"].setColor(0.7333,0.3803,0); - } else { - me["BAT2-label"].setColor(0.8078,0.8039,0.8078); - } - - # TR1 - # is only powered when ac1 has power - tr1_v = systems.ELEC.Source.tr1.outputVolt.getValue(); - tr1_a = systems.ELEC.Source.tr1.outputAmp.getValue(); - - me["TR1Volt"].setText(sprintf("%s", math.round(tr1_v))); - me["TR1Ampere"].setText(sprintf("%s", math.round(tr1_a))); - - if (tr1_v < 25 or tr1_v > 31 or tr1_a < 5) { - me["TR1-label"].setColor(0.7333,0.3803,0); - } else { - me["TR1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (tr1_v < 25 or tr1_v > 31) { - me["TR1Volt"].setColor(0.7333,0.3803,0); - } else { - me["TR1Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (tr1_a < 5) { - me["TR1Ampere"].setColor(0.7333,0.3803,0); - } else { - me["TR1Ampere"].setColor(0.0509,0.7529,0.2941); - } - - # TR2 - # is only powered when ac2 has power - tr2_v = systems.ELEC.Source.tr2.outputVolt.getValue(); - tr2_a = systems.ELEC.Source.tr2.outputAmp.getValue(); - - me["TR2Volt"].setText(sprintf("%s", math.round(tr2_v))); - me["TR2Ampere"].setText(sprintf("%s", math.round(tr2_a))); - - if (tr2_v < 25 or tr2_v > 31 or tr2_a < 5) { - me["TR2-label"].setColor(0.7333,0.3803,0); - } else { - me["TR2-label"].setColor(0.8078,0.8039,0.8078); - } - - if (tr2_v < 25 or tr2_v > 31) { - me["TR2Volt"].setColor(0.7333,0.3803,0); - } else { - me["TR2Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (tr2_a < 5) { - me["TR2Ampere"].setColor(0.7333,0.3803,0); - } else { - me["TR2Ampere"].setColor(0.0509,0.7529,0.2941); - } - - # ESS TR - essTrvolts = systems.ELEC.Source.trEss.outputVoltRelay.getValue(); - essTramps = systems.ELEC.Source.trEss.outputAmpRelay.getValue(); - if (systems.ELEC.Relay.essTrContactor.getValue()) { - me["ESSTR-group"].show(); - me["ESSTR-Volt"].setText(sprintf("%s", math.round(essTrvolts))); - me["ESSTR-Ampere"].setText(sprintf("%s", math.round(essTramps))); - - if (essTrvolts < 25 or essTrvolts > 31 or essTramps < 5) { - me["ESSTR"].setColor(0.7333,0.3803,0); - } else { - me["ESSTR"].setColor(0.8078,0.8039,0.8078); - } - - if (essTrvolts < 25 or essTrvolts > 31) { - me["ESSTR-Volt"].setColor(0.7333,0.3803,0); - } else { - me["ESSTR-Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (essTramps < 5) { - me["ESSTR-Ampere"].setColor(0.7333,0.3803,0); - } else { - me["ESSTR-Ampere"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["ESSTR-group"].hide(); - } - - # EMER GEN - if (systems.ELEC.Source.EmerGen.volts.getValue() == 0) { - me["EMERGEN-group"].hide(); - me["ELEC-Line-Emergen-ESSTR"].hide(); - me["ELEC-Line-Emergen-ESSTR-off"].show(); - me["EMERGEN-Label-off"].show(); - } else { - me["EMERGEN-group"].show(); - me["ELEC-Line-Emergen-ESSTR"].show(); - me["ELEC-Line-Emergen-ESSTR-off"].hide(); - me["EMERGEN-Label-off"].hide(); - - me["EmergenVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.EmerGen.voltsRelay.getValue()))); - me["EmergenHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.EmerGen.hertz.getValue()))); - - if (systems.ELEC.Source.EmerGen.voltsRelay.getValue() > 120 or systems.ELEC.Source.EmerGen.voltsRelay.getValue() < 110 or systems.ELEC.Source.EmerGen.hertz.getValue() > 410 or systems.ELEC.Source.EmerGen.hertz.getValue() < 390) { - me["Emergen-Label"].setColor(0.7333,0.3803,0); - } else { - me["Emergen-Label"].setColor(0.8078,0.8039,0.8078); - } - - if (systems.ELEC.Source.EmerGen.voltsRelay.getValue() > 120 or systems.ELEC.Source.EmerGen.voltsRelay.getValue() < 110) { - me["EmergenVolt"].setColor(0.7333,0.3803,0); - } else { - me["EmergenVolt"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.EmerGen.hertz.getValue() > 410 or systems.ELEC.Source.EmerGen.hertz.getValue() < 390) { - me["EmergenHz"].setColor(0.7333,0.3803,0); - } else { - me["EmergenHz"].setColor(0.0509,0.7529,0.2941); - } - } - - # IDG 1 - if (!systems.ELEC.Switch.idg1Disc.getBoolValue()) { - me["IDG1-DISC"].show(); - me["ELEC-IDG-1-label"].setColor(0.7333,0.3803,0); - } else { - me["IDG1-DISC"].hide(); - me["ELEC-IDG-1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (eng1_running.getValue() == 0) { - me["ELEC-IDG-1-num-label"].setColor(0.7333,0.3803,0); - } else { - me["ELEC-IDG-1-num-label"].setColor(0.8078,0.8039,0.8078); - } - - if (eng2_running.getValue() == 0) { - me["ELEC-IDG-2-num-label"].setColor(0.7333,0.3803,0); - } else { - me["ELEC-IDG-2-num-label"].setColor(0.8078,0.8039,0.8078); - } - - # IDG 2 - if (!systems.ELEC.Switch.idg2Disc.getBoolValue()) { - me["IDG2-DISC"].show(); - me["ELEC-IDG-2-label"].setColor(0.7333,0.3803,0); - } else { - me["IDG2-DISC"].hide(); - me["ELEC-IDG-2-label"].setColor(0.8078,0.8039,0.8078); - } - - # GEN1 - if (systems.ELEC.Switch.gen1.getValue() == 0) { - me["GEN1-content"].hide(); - me["GEN1-off"].show(); - if (systems.ELEC.Source.IDG1.gcrRelay.getValue()) { - me["GEN1-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (eng1_running.getValue() == 0) { - me["GEN1-num-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN1-num-label"].setColor(0.8078,0.8039,0.8078); - } - } else { - me["GEN1-content"].show(); - me["GEN1-off"].hide(); - # me["Gen1Load"].setText(sprintf("%s", math.round(gen1_load.getValue()))); - me["Gen1Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG1.volts.getValue()))); - - if (systems.ELEC.Source.IDG1.hertz.getValue() == 0) { - me["Gen1Hz"].setText(sprintf("XX")); - } else { - me["Gen1Hz"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG1.hertz.getValue()))); - } - - if (eng1_running.getValue() == 0) { - me["GEN1-num-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN1-num-label"].setColor(0.8078,0.8039,0.8078); - } - - if (systems.ELEC.Source.IDG1.volts.getValue() > 120 or systems.ELEC.Source.IDG1.volts.getValue() < 110 or systems.ELEC.Source.IDG1.hertz.getValue() > 410 or systems.ELEC.Source.IDG1.hertz.getValue() < 390 or gen1_load.getValue() >= 110) { - me["GEN1-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (gen1_load.getValue() >= 110) { - me["Gen1Load"].setColor(0.7333,0.3803,0); - } else { - me["Gen1Load"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.IDG1.volts.getValue() > 120 or systems.ELEC.Source.IDG1.volts.getValue() < 110) { - me["Gen1Volt"].setColor(0.7333,0.3803,0); - } else { - me["Gen1Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.IDG1.hertz.getValue() > 410 or systems.ELEC.Source.IDG1.hertz.getValue() < 390) { - me["Gen1Hz"].setColor(0.7333,0.3803,0); - } else { - me["Gen1Hz"].setColor(0.0509,0.7529,0.2941); - } - } - - # GEN2 - if (systems.ELEC.Switch.gen2.getValue() == 0) { - me["GEN2-content"].hide(); - me["GEN2-off"].show(); - if (systems.ELEC.Source.IDG2.gcrRelay.getValue()) { - me["GEN2-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN2-label"].setColor(0.8078,0.8039,0.8078); - } - - if (eng2_running.getValue() == 0) { - me["GEN2-num-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN2-num-label"].setColor(0.8078,0.8039,0.8078); - } - } else { - me["GEN2-content"].show(); - me["GEN2-off"].hide(); - # me["Gen2Load"].setText(sprintf("%s", math.round(gen2_load.getValue()))); - me["Gen2Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG2.volts.getValue()))); - if (systems.ELEC.Source.IDG2.hertz.getValue() == 0) { - me["Gen2Hz"].setText(sprintf("XX")); - } else { - me["Gen2Hz"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG2.hertz.getValue()))); - } - - if (eng2_running.getValue() == 0) { - me["GEN2-num-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN2-num-label"].setColor(0.8078,0.8039,0.8078); - } - - if (systems.ELEC.Source.IDG2.volts.getValue() > 120 or systems.ELEC.Source.IDG2.volts.getValue() < 110 or systems.ELEC.Source.IDG2.hertz.getValue() > 410 or systems.ELEC.Source.IDG2.hertz.getValue() < 390 or gen2_load.getValue() >= 110) { - me["GEN2-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN2-label"].setColor(0.8078,0.8039,0.8078); - } - - if (gen2_load.getValue() >= 110) { - me["Gen2Load"].setColor(0.7333,0.3803,0); - } else { - me["Gen2Load"].setColor(0.0509,0.7529,0.2941); - } - - - if (systems.ELEC.Source.IDG2.volts.getValue() > 120 or systems.ELEC.Source.IDG2.volts.getValue() < 110) { - me["Gen2Volt"].setColor(0.7333,0.3803,0); - } else { - me["Gen2Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.IDG2.hertz.getValue() > 410 or systems.ELEC.Source.IDG2.hertz.getValue() < 390) { - me["Gen2Hz"].setColor(0.7333,0.3803,0); - } else { - me["Gen2Hz"].setColor(0.0509,0.7529,0.2941); - } - } - - # APU - if (systems.APUNodes.Controls.master.getValue() == 0) { - me["APU-content"].hide(); - me["APUGEN-off"].hide(); - me["APU-border"].hide(); - me["APUGentext"].setColor(0.8078,0.8039,0.8078); - } else { - me["APU-border"].show(); - if (systems.ELEC.Source.APU.contact.getValue() == 0) { - me["APU-content"].hide(); - me["APUGEN-off"].show(); - me["APUGentext"].setColor(0.7333,0.3803,0); - } else { - me["APU-content"].show(); - me["APUGEN-off"].hide(); - # me["APUGenLoad"].setText(sprintf("%s", math.round(apu_load.getValue()))); - me["APUGenVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.APU.volts.getValue()))); - - if (systems.ELEC.Source.APU.hertz.getValue() == 0) { - me["APUGenHz"].setText(sprintf("XX")); - } else { - me["APUGenHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.APU.hertz.getValue()))); - } - - if (systems.ELEC.Source.APU.volts.getValue() > 120 or systems.ELEC.Source.APU.volts.getValue() < 110 or systems.ELEC.Source.APU.hertz.getValue() > 410 or systems.ELEC.Source.APU.hertz.getValue() < 390 or apu_load.getValue() >= 110) { - me["APUGentext"].setColor(0.7333,0.3803,0); - } else { - me["APUGentext"].setColor(0.8078,0.8039,0.8078); - } - - if(apu_load.getValue() >= 110) { - me["APUGenLoad"].setColor(0.7333,0.3803,0); - } else { - me["APUGenLoad"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.APU.volts.getValue() > 120 or systems.ELEC.Source.APU.volts.getValue() < 110) { - me["APUGenVolt"].setColor(0.7333,0.3803,0); - } else { - me["APUGenVolt"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.APU.hertz.getValue() > 410 or systems.ELEC.Source.APU.hertz.getValue() < 390) { - me["APUGenHz"].setColor(0.7333,0.3803,0); - } else { - me["APUGenHz"].setColor(0.0509,0.7529,0.2941); - } - } - } - - # EXT PWR - - if (switch_cart.getValue() == 0) { - me["EXTPWR-group"].hide(); - } else { - me["EXTPWR-group"].show(); - me["ExtVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.Ext.volts.getValue()))); - me["ExtHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.Ext.hertz.getValue()))); - - if (systems.ELEC.Source.Ext.hertz.getValue() > 410 or systems.ELEC.Source.Ext.hertz.getValue() < 390 or systems.ELEC.Source.Ext.volts.getValue() > 120 or systems.ELEC.Source.Ext.volts.getValue() < 110) { - me["EXTPWR-label"].setColor(0.7333,0.3803,0); - } else { - me["EXTPWR-label"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.Ext.hertz.getValue() > 410 or systems.ELEC.Source.Ext.hertz.getValue() < 390) { - me["ExtHz"].setColor(0.7333,0.3803,0); - } else { - me["ExtHz"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.Ext.volts.getValue() > 120 or systems.ELEC.Source.Ext.volts.getValue() < 110) { - me["ExtVolt"].setColor(0.7333,0.3803,0); - } else { - me["ExtVolt"].setColor(0.0509,0.7529,0.2941); - } - } - - if (systems.ELEC.SomeThing.galley.getValue()) { - me["GalleyShed"].show(); - } else { - me["GalleyShed"].hide(); - } - - # Bus indicators - if (systems.ELEC.Switch.bat1.getValue() or systems.ELEC.Switch.bat2.getValue()) { - me["ELEC-DCBAT-label"].setText("DC BAT"); - if (systems.ELEC.Bus.dcBat.getValue() > 25) { - me["ELEC-DCBAT-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0); - } - } else { - me["ELEC-DCBAT-label"].setText("XX"); # BCL not powered hence no voltage info supplied from BCL - me["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.dc1.getValue() > 25) { - me["ELEC-DC1-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-DC1-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.dc2.getValue() > 25) { - me["ELEC-DC2-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-DC2-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.dcEss.getValue() > 25) { - me["ELEC-DCESS-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-DCESS-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.acEss.getValue() >= 110) { - me["ELEC-ACESS-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-ACESS-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.acEssShed.getValue() >= 110) { - me["ACESS-SHED"].hide(); - } else { - me["ACESS-SHED"].show(); - } - - if (systems.ELEC.Bus.ac1.getValue() >= 110) { - me["ELEC-AC1-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-AC1-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - me["ELEC-AC2-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-AC2-label"].setColor(0.7333,0.3803,0); - } - - - # Managment of the connecting lines between the components - if (systems.ELEC.Relay.apuGlc.getValue() and (systems.ELEC.Relay.acTie1.getValue() or systems.ELEC.Relay.acTie2.getValue())) { - me["APU-out"].show(); - } else { - me["APU-out"].hide(); - } - - if (systems.ELEC.Relay.extEpc.getValue() and (systems.ELEC.Relay.acTie1.getValue() or systems.ELEC.Relay.acTie2.getValue())) { - me["EXT-out"].show(); - } else { - me["EXT-out"].hide(); - } - - if (systems.ELEC.Source.IDG1.volts.getValue() >= 110 and systems.ELEC.Relay.glc1.getValue()) { - me["ELEC-Line-GEN1-AC1"].show(); - } else { - me["ELEC-Line-GEN1-AC1"].hide(); - } - - if (systems.ELEC.Source.IDG2.volts.getValue() >= 110 and systems.ELEC.Relay.glc2.getValue()) { - me["ELEC-Line-GEN2-AC2"].show(); - } else { - me["ELEC-Line-GEN2-AC2"].hide(); - } - - if (systems.ELEC.Bus.ac1.getValue() >= 110) { - me["AC1-in"].show(); - } else { - me["AC1-in"].hide(); - } - - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - me["AC2-in"].show(); - } else { - me["AC2-in"].hide(); - } - - if (systems.ELEC.Relay.acTie1.getValue() and systems.ELEC.Relay.acTie2.getValue()) { - me["ELEC-Line-APU-AC1"].show(); - me["ELEC-Line-APU-EXT"].show(); - me["ELEC-Line-EXT-AC2"].show(); - } else { - if (systems.ELEC.Relay.acTie1.getValue()) { - me["ELEC-Line-APU-AC1"].show(); - } else { - me["ELEC-Line-APU-AC1"].hide(); - } - - if ((systems.ELEC.Relay.acTie2.getValue() and systems.ELEC.Relay.apuGlc.getValue() and !systems.ELEC.Relay.glc2.getValue()) or (systems.ELEC.Relay.acTie1.getValue() and systems.ELEC.Relay.extEpc.getValue() and !systems.ELEC.Relay.glc1.getValue())) { - me["ELEC-Line-APU-EXT"].show(); - } else { - me["ELEC-Line-APU-EXT"].hide(); - } - - if (systems.ELEC.Relay.acTie2.getValue()) { - me["ELEC-Line-EXT-AC2"].show(); - } else { - me["ELEC-Line-EXT-AC2"].hide(); - } - } - - if (systems.ELEC.Relay.acEssFeed1.getValue()) { - if (systems.ELEC.Bus.ac1.getValue() >= 110) { - me["ELEC-Line-AC1-ACESS"].show(); - } else { - me["ELEC-Line-AC1-ACESS"].hide(); - } - me["ELEC-Line-AC2-ACESS"].hide(); - } elsif (systems.ELEC.Relay.acEssFeed2.getValue()) { - me["ELEC-Line-AC1-ACESS"].hide(); - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - me["ELEC-Line-AC2-ACESS"].show(); - } else { - me["ELEC-Line-AC2-ACESS"].hide(); - } - } else { - me["ELEC-Line-AC1-ACESS"].hide(); - me["ELEC-Line-AC2-ACESS"].hide(); - } - - if (systems.ELEC.Relay.tr1Contactor.getValue()) { - if (systems.ELEC.Bus.ac1.getValue() < 110) { - me["ELEC-Line-AC1-TR1"].setColorFill(0.7333,0.3803,0); - } else { - me["ELEC-Line-AC1-TR1"].setColorFill(0.0509,0.7529,0.2941); - } - me["ELEC-Line-AC1-TR1"].show(); - me["ELEC-Line-TR1-DC1"].show(); - } else { - me["ELEC-Line-AC1-TR1"].hide(); - me["ELEC-Line-TR1-DC1"].hide(); - } - - if (systems.ELEC.Relay.tr2Contactor.getValue()) { - if (systems.ELEC.Bus.ac2.getValue() < 110) { - me["ELEC-Line-AC2-TR2"].setColorFill(0.7333,0.3803,0); - } else { - me["ELEC-Line-AC2-TR2"].setColorFill(0.0509,0.7529,0.2941); - } - me["ELEC-Line-AC2-TR2"].show(); - me["ELEC-Line-TR2-DC2"].show(); - } else { - me["ELEC-Line-AC2-TR2"].hide(); - me["ELEC-Line-TR2-DC2"].hide(); - } - - if (systems.ELEC.Relay.dcTie1.getValue()) { - me["ELEC-Line-DC1-DCESS_DCBAT"].show(); - } else { - me["ELEC-Line-DC1-DCESS_DCBAT"].hide(); - } - - if (systems.ELEC.Relay.dcEssFeedBat.getValue()) { - me["ELEC-Line-DC1-DCESS"].show(); - } else { - me["ELEC-Line-DC1-DCESS"].hide(); - } - - if (systems.ELEC.Relay.dcEssFeedBat.getValue() or systems.ELEC.Relay.dcTie1.getValue()) { - me["ELEC-Line-DC1-DCBAT"].show(); - } else { - me["ELEC-Line-DC1-DCBAT"].hide(); - } - - if (systems.ELEC.Relay.dcTie2.getValue()) { - me["ELEC-Line-DC2-DCBAT"].show(); - me["ELEC-Line-DC2-DCESS_DCBAT"].show(); - } else { - me["ELEC-Line-DC2-DCBAT"].hide(); - me["ELEC-Line-DC2-DCESS_DCBAT"].hide(); - } - - if (systems.ELEC.Relay.acEssEmerGenFeed.getValue()) { - me["EMERGEN-out"].show(); - me["ELEC-Line-Emergen-ESSTR"].show(); - } else { - me["EMERGEN-out"].hide(); - me["ELEC-Line-Emergen-ESSTR"].hide(); - } - - if (systems.ELEC.Bus.acEss.getValue() >= 110 and !systems.ELEC.Relay.acEssEmerGenFeed.getValue() and (!systems.ELEC.Relay.tr1Contactor.getValue() or !systems.ELEC.Relay.tr2Contactor.getValue())) { - me["ELEC-Line-ACESS-TRESS"].show(); - } else { - me["ELEC-Line-ACESS-TRESS"].hide(); - } - - if (systems.ELEC.Relay.essTrContactor.getValue()) { - me["ELEC-Line-ESSTR-DCESS"].show(); - } else { - me["ELEC-Line-ESSTR-DCESS"].hide(); - } - - # hide not yet implemented items - me["IDG1-LOPR"].hide(); - me["IDG2-LOPR"].hide(); - me["Shed-label"].hide(); - me["IDG2-RISE-label"].hide(); - me["IDG2-RISE-Value"].hide(); - me["IDG1-RISE-label"].hide(); - me["IDG1-RISE-Value"].hide(); - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_eng = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_eng, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","OilQT1-needle","OilQT2-needle","OilQT1","OilQT2","OilQT1-decimal","OilQT2-decimal","OilPSI1-needle","OilPSI2-needle","OilPSI1","OilPSI2","FUEL-used-1","FUEL-used-2", "Fused-weight-unit"]; - }, - update: func() { - # Oil Quantity - me["OilQT1"].setText(sprintf("%s", int(oil_qt1_actual.getValue()))); - me["OilQT2"].setText(sprintf("%s", int(oil_qt2_actual.getValue()))); - me["OilQT1-decimal"].setText(sprintf("%s", int(10*math.mod(oil_qt1_actual.getValue(),1)))); - me["OilQT2-decimal"].setText(sprintf("%s", int(10*math.mod(oil_qt2_actual.getValue(),1)))); - - me["OilQT1-needle"].setRotation((oil_qt1.getValue() + 90) * D2R); - me["OilQT2-needle"].setRotation((oil_qt2.getValue() + 90) * D2R); - - # Oil Pressure - if (pts.Engines.Engine.oilPsi[0].getValue() >= 20) { - me["OilPSI1"].setColor(0.0509,0.7529,0.2941); - me["OilPSI1-needle"].setColor(0.0509,0.7529,0.2941); - } else { - me["OilPSI1"].setColor(1,0,0); - me["OilPSI1-needle"].setColor(1,0,0); - } - - if (pts.Engines.Engine.oilPsi[1].getValue() >= 20) { - me["OilPSI2"].setColor(0.0509,0.7529,0.2941); - me["OilPSI2-needle"].setColor(0.0509,0.7529,0.2941); - } else { - me["OilPSI2"].setColor(1,0,0); - me["OilPSI2-needle"].setColor(1,0,0); - } - - me["OilPSI1"].setText(sprintf("%s", math.round(pts.Engines.Engine.oilPsi[0].getValue()))); - me["OilPSI2"].setText(sprintf("%s", math.round(pts.Engines.Engine.oilPsi[1].getValue()))); - - me["OilPSI1-needle"].setRotation((oil_psi1.getValue() + 90) * D2R); - me["OilPSI2-needle"].setRotation((oil_psi2.getValue() + 90) * D2R); - - # Fuel Used - if (acconfig_weight_kgs.getValue()) { - me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); - me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); - me["Fused-weight-unit"].setText("KG"); - } else { - me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); - me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); - me["Fused-weight-unit"].setText("LBS"); - } - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_fctl = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_fctl, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","ailL","ailR","elevL","elevR","PTcc","PT","PTupdn","elac1","elac2","sec1","sec2","sec3","ailLblue","ailRblue","elevLblue","elevRblue","rudderblue","ailLgreen","ailRgreen","elevLgreen","ruddergreen","PTgreen", - "elevRyellow","rudderyellow","PTyellow","rudder","spdbrkblue","spdbrkgreen","spdbrkyellow","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex","spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex", - "spoiler1Lrt","spoiler2Lex","spoiler2Lrt","spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf","spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf", - "spoiler5Lf","ailLscale","ailRscale","path4249","path4249-3","path4249-3-6-7","path4249-3-6-7-5","path4249-3-6","text4343"]; - }, - update: func() { - blue_psi = systems.HYD.Psi.blue.getValue(); - green_psi = systems.HYD.Psi.green.getValue(); - yellow_psi = systems.HYD.Psi.yellow.getValue(); - elac1Node = fbw.FBW.Computers.elac1.getValue(); - elac2Node = fbw.FBW.Computers.elac2.getValue(); - sec1Node = fbw.FBW.Computers.sec1.getValue(); - sec2Node = fbw.FBW.Computers.sec2.getValue(); - - # Pitch Trim - me["PT"].setText(sprintf("%2.1f", math.round(elevator_trim_deg.getValue(), 0.1))); - - if (math.round(elevator_trim_deg.getValue(), 0.1) >= 0) { - me["PTupdn"].setText(sprintf("UP")); - } else if (math.round(elevator_trim_deg.getValue(), 0.1) < 0) { - me["PTupdn"].setText(sprintf("DN")); - } - - if (green_psi < 1500 and yellow_psi < 1500) { - me["PT"].setColor(0.7333,0.3803,0); - me["PTupdn"].setColor(0.7333,0.3803,0); - me["PTcc"].setColor(0.7333,0.3803,0); - } else { - me["PT"].setColor(0.0509,0.7529,0.2941); - me["PTupdn"].setColor(0.0509,0.7529,0.2941); - me["PTcc"].setColor(0.0509,0.7529,0.2941); - } - - if (fbw.FBW.Failures.ths.getBoolValue()) { - me["text4343"].setColor(0.7333,0.3803,0); - } else { - me["text4343"].setColor(0.8078,0.8039,0.8078); - } - - # Ailerons - me["ailL"].setTranslation(0, aileron_ind_left.getValue() * 100); - me["ailR"].setTranslation(0, aileron_ind_right.getValue() * (-100)); - - if ((blue_psi < 1500 or !elac1Node) and (green_psi < 1500 or !elac2Node)) { - me["ailL"].setColor(0.7333,0.3803,0); - } else { - me["ailL"].setColor(0.0509,0.7529,0.2941); - } - - if ((green_psi < 1500 or !elac1Node) and (blue_psi < 1500 or !elac2Node)) { - me["ailR"].setColor(0.7333,0.3803,0); - } else { - me["ailR"].setColor(0.0509,0.7529,0.2941); - } - - # Elevators - me["elevL"].setTranslation(0, elevator_ind_left.getValue() * 100); - me["elevR"].setTranslation(0, elevator_ind_right.getValue() * 100); - - if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (green_psi < 1500 or (!elac2Node and !sec2Node))) { - me["elevL"].setColor(0.7333,0.3803,0); - } else { - me["elevL"].setColor(0.0509,0.7529,0.2941); - } - - if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (yellow_psi < 1500 or (!elac2Node and !sec2Node))) { - me["elevR"].setColor(0.7333,0.3803,0); - } else { - me["elevR"].setColor(0.0509,0.7529,0.2941); - } - - # Rudder - me["rudder"].setRotation(final_deg.getValue() * -0.024); - - if (blue_psi < 1500 and yellow_psi < 1500 and green_psi < 1500) { - me["rudder"].setColor(0.7333,0.3803,0); - } else { - me["rudder"].setColor(0.0509,0.7529,0.2941); - } - - # Spoilers - if (spoiler_L1.getValue() < 1.5) { - me["spoiler1Lex"].hide(); - me["spoiler1Lrt"].show(); - } else { - me["spoiler1Lrt"].hide(); - me["spoiler1Lex"].show(); - } - - if (spoiler_L2.getValue() < 1.5) { - me["spoiler2Lex"].hide(); - me["spoiler2Lrt"].show(); - } else { - me["spoiler2Lrt"].hide(); - me["spoiler2Lex"].show(); - } - - if (spoiler_L3.getValue() < 1.5) { - me["spoiler3Lex"].hide(); - me["spoiler3Lrt"].show(); - } else { - me["spoiler3Lrt"].hide(); - me["spoiler3Lex"].show(); - } - - if (spoiler_L4.getValue() < 1.5) { - me["spoiler4Lex"].hide(); - me["spoiler4Lrt"].show(); - } else { - me["spoiler4Lrt"].hide(); - me["spoiler4Lex"].show(); - } - - if (spoiler_L5.getValue() < 1.5) { - me["spoiler5Lex"].hide(); - me["spoiler5Lrt"].show(); - } else { - me["spoiler5Lrt"].hide(); - me["spoiler5Lex"].show(); - } - - if (spoiler_R1.getValue() < 1.5) { - me["spoiler1Rex"].hide(); - me["spoiler1Rrt"].show(); - } else { - me["spoiler1Rrt"].hide(); - me["spoiler1Rex"].show(); - } - - if (spoiler_R2.getValue() < 1.5) { - me["spoiler2Rex"].hide(); - me["spoiler2Rrt"].show(); - } else { - me["spoiler2Rrt"].hide(); - me["spoiler2Rex"].show(); - } - - if (spoiler_R3.getValue() < 1.5) { - me["spoiler3Rex"].hide(); - me["spoiler3Rrt"].show(); - } else { - me["spoiler3Rrt"].hide(); - me["spoiler3Rex"].show(); - } - - if (spoiler_R4.getValue() < 1.5) { - me["spoiler4Rex"].hide(); - me["spoiler4Rrt"].show(); - } else { - me["spoiler4Rrt"].hide(); - me["spoiler4Rex"].show(); - } - - if (spoiler_R5.getValue() < 1.5) { - me["spoiler5Rex"].hide(); - me["spoiler5Rrt"].show(); - } else { - me["spoiler5Rrt"].hide(); - me["spoiler5Rex"].show(); - } - - # Spoiler Fail - if (fbw.FBW.Failures.spoilerl1.getValue() or green_psi < 1500) { - me["spoiler1Lex"].setColor(0.7333,0.3803,0); - me["spoiler1Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L1.getValue() < 1.5) { - me["spoiler1Lf"].show(); - } else { - me["spoiler1Lf"].hide(); - } - } else { - me["spoiler1Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl2.getValue() or yellow_psi < 1500) { - me["spoiler2Lex"].setColor(0.7333,0.3803,0); - me["spoiler2Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L2.getValue() < 1.5) { - me["spoiler2Lf"].show(); - } else { - me["spoiler2Lf"].hide(); - } - } else { - me["spoiler2Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl3.getValue() or blue_psi < 1500) { - me["spoiler3Lex"].setColor(0.7333,0.3803,0); - me["spoiler3Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L3.getValue() < 1.5) { - me["spoiler3Lf"].show(); - } else { - me["spoiler3Lf"].hide(); - } - } else { - me["spoiler3Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl4.getValue() or yellow_psi < 1500) { - me["spoiler4Lex"].setColor(0.7333,0.3803,0); - me["spoiler4Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L4.getValue() < 1.5) { - me["spoiler4Lf"].show(); - } else { - me["spoiler4Lf"].hide(); - } - } else { - me["spoiler4Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl5.getValue() or green_psi < 1500) { - me["spoiler5Lex"].setColor(0.7333,0.3803,0); - me["spoiler5Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L5.getValue() < 1.5) { - me["spoiler5Lf"].show(); - } else { - me["spoiler5Lf"].hide(); - } - } else { - me["spoiler5Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr1.getValue() or green_psi < 1500) { - me["spoiler1Rex"].setColor(0.7333,0.3803,0); - me["spoiler1Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R1.getValue() < 1.5) { - me["spoiler1Rf"].show(); - } else { - me["spoiler1Rf"].hide(); - } - } else { - me["spoiler1Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr2.getValue() or yellow_psi < 1500) { - me["spoiler2Rex"].setColor(0.7333,0.3803,0); - me["spoiler2Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R2.getValue() < 1.5) { - me["spoiler2Rf"].show(); - } else { - me["spoiler2Rf"].hide(); - } - } else { - me["spoiler2Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr3.getValue() or blue_psi < 1500) { - me["spoiler3Rex"].setColor(0.7333,0.3803,0); - me["spoiler3Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R3.getValue() < 1.5) { - me["spoiler3Rf"].show(); - } else { - me["spoiler3Rf"].hide(); - } - } else { - me["spoiler3Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr4.getValue() or yellow_psi < 1500) { - me["spoiler4Rex"].setColor(0.7333,0.3803,0); - me["spoiler4Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R4.getValue() < 1.5) { - me["spoiler4Rf"].show(); - } else { - me["spoiler4Rf"].hide(); - } - } else { - me["spoiler4Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr5.getValue() or green_psi < 1500) { - me["spoiler5Rex"].setColor(0.7333,0.3803,0); - me["spoiler5Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R5.getValue() < 1.5) { - me["spoiler5Rf"].show(); - } else { - me["spoiler5Rf"].hide(); - } - } else { - me["spoiler5Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Rf"].hide(); - } - - # Flight Computers - if (elac1Node) { - me["elac1"].setColor(0.0509,0.7529,0.2941); - me["path4249"].setColor(0.0509,0.7529,0.2941); - } else if (!elac1Node or fbw.FBW.Failures.elac1.getValue()) { - me["elac1"].setColor(0.7333,0.3803,0); - me["path4249"].setColor(0.7333,0.3803,0); - } - - if (elac2Node) { - me["elac2"].setColor(0.0509,0.7529,0.2941); - me["path4249-3"].setColor(0.0509,0.7529,0.2941); - } else if (!elac2Node or fbw.FBW.Failures.elac2.getValue()) { - me["elac2"].setColor(0.7333,0.3803,0); - me["path4249-3"].setColor(0.7333,0.3803,0); - } - - if (sec1Node) { - me["sec1"].setColor(0.0509,0.7529,0.2941); - me["path4249-3-6-7"].setColor(0.0509,0.7529,0.2941); - } else if (!sec1Node or fbw.FBW.Failures.sec1.getValue()) { - me["sec1"].setColor(0.7333,0.3803,0); - me["path4249-3-6-7"].setColor(0.7333,0.3803,0); - } - - if (sec2Node) { - me["sec2"].setColor(0.0509,0.7529,0.2941); - me["path4249-3-6-7-5"].setColor(0.0509,0.7529,0.2941); - } else if (!sec2Node or fbw.FBW.Failures.sec2.getValue()) { - me["sec2"].setColor(0.7333,0.3803,0); - me["path4249-3-6-7-5"].setColor(0.7333,0.3803,0); - } - - if (fbw.FBW.Computers.sec3.getValue()) { - me["sec3"].setColor(0.0509,0.7529,0.2941); - me["path4249-3-6"].setColor(0.0509,0.7529,0.2941); - } else if (!fbw.FBW.Computers.sec3.getValue() or fbw.FBW.Failures.sec3.getValue()) { - me["sec3"].setColor(0.7333,0.3803,0); - me["path4249-3-6"].setColor(0.7333,0.3803,0); - } - - # Hydraulic Indicators - if (blue_psi >= 1500) { - if (elac1Node) { - me["ailLblue"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailLblue"].setColor(0.7333,0.3803,0); - } - if (elac1Node or sec1Node) { - me["elevLblue"].setColor(0.0509,0.7529,0.2941); - me["elevRblue"].setColor(0.0509,0.7529,0.2941); - } else { - me["elevLblue"].setColor(0.7333,0.3803,0); - me["elevRblue"].setColor(0.7333,0.3803,0); - } - if (elac2Node) { - me["ailRblue"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailRblue"].setColor(0.7333,0.3803,0); - } - me["rudderblue"].setColor(0.0509,0.7529,0.2941); - me["spdbrkblue"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailLblue"].setColor(0.7333,0.3803,0); - me["ailRblue"].setColor(0.7333,0.3803,0); - me["elevLblue"].setColor(0.7333,0.3803,0); - me["elevRblue"].setColor(0.7333,0.3803,0); - me["rudderblue"].setColor(0.7333,0.3803,0); - me["spdbrkblue"].setColor(0.7333,0.3803,0); - } - - if (green_psi >= 1500) { - if (elac2Node or sec2Node) { - me["elevLgreen"].setColor(0.0509,0.7529,0.2941); - } else { - me["elevLgreen"].setColor(0.7333,0.3803,0); - } - - if (elac2Node) { - me["ailLgreen"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailLgreen"].setColor(0.7333,0.3803,0); - } - if (elac1Node) { - me["ailRgreen"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailRgreen"].setColor(0.7333,0.3803,0); - } - me["ruddergreen"].setColor(0.0509,0.7529,0.2941); - me["PTgreen"].setColor(0.0509,0.7529,0.2941); - me["spdbrkgreen"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailLgreen"].setColor(0.7333,0.3803,0); - me["ailRgreen"].setColor(0.7333,0.3803,0); - me["elevLgreen"].setColor(0.7333,0.3803,0); - me["ruddergreen"].setColor(0.7333,0.3803,0); - me["PTgreen"].setColor(0.7333,0.3803,0); - me["spdbrkgreen"].setColor(0.7333,0.3803,0); - } - - if (yellow_psi >= 1500) { - if (elac2Node or sec2Node) { - me["elevRyellow"].setColor(0.0509,0.7529,0.2941); - } else { - me["elevRyellow"].setColor(0.7333,0.3803,0); - } - me["rudderyellow"].setColor(0.0509,0.7529,0.2941); - me["PTyellow"].setColor(0.0509,0.7529,0.2941); - me["spdbrkyellow"].setColor(0.0509,0.7529,0.2941); - } else { - me["elevRyellow"].setColor(0.7333,0.3803,0); - me["rudderyellow"].setColor(0.7333,0.3803,0); - me["PTyellow"].setColor(0.7333,0.3803,0); - me["spdbrkyellow"].setColor(0.7333,0.3803,0); - } - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_fuel = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_fuel, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","FUEL-Pump-Left-1","FUEL-Pump-Left-2","FUEL-Pump-Center-1","FUEL-Pump-Center-2","FUEL-Pump-Right-1","FUEL-Pump-Right-2","FUEL-Left-blocked","FUEL-Right-blocked","FUEL-Center-blocked","FUEL-Left-Transfer", - "FUEL-Right-Transfer","FUEL-Left-Outer-Inacc","FUEL-Left-Inner-Inacc","FUEL-Center-Inacc","FUEL-Right-Inner-Inacc","FUEL-Right-Outer-Inacc","FUEL-Left-Outer-quantity","FUEL-Left-Inner-quantity","FUEL-Center-quantity","FUEL-Right-Inner-quantity", - "FUEL-Right-Outer-quantity","FUEL-On-Board","FUEL-Flow-per-min","FUEL-APU-arrow","FUEL-APU-line","FUEL-APU-label","FUEL-used-1","FUEL-used-both","FUEL-used-2","FUEL-ENG-Master-1","FUEL-ENG-Master-2","FUEL-XFEED","FUEL-XFEED-pipes","FUEL-Left-Outer-temp", - "FUEL-Left-Inner-temp","FUEL-Right-Inner-temp","FUEL-Right-Outer-temp","FUEL-Pump-Left-1-Closed","FUEL-Pump-Left-1-Open","FUEL-Pump-Left-2-Closed","FUEL-Pump-Left-2-Open","FUEL-Pump-Center-1-Open","FUEL-Pump-Center-1-Closed","FUEL-Pump-Center-2-Closed", - "FUEL-Pump-Center-2-Open","FUEL-Pump-Right-1-Closed","FUEL-Pump-Right-1-Open","FUEL-Pump-Right-2-Closed","FUEL-Pump-Right-2-Open","FUEL-ENG-1-label","FUEL-ENG-2-label","FUEL-ENG-1-pipe","FUEL-ENG-2-pipe","ENG1idFFlow","ENG2idFFlow","FUEL-used-1","FUEL-used-2","FUEL-used-both", - "Fused-weight-unit","FFlow-weight-unit","FOB-weight-unit"]; - }, - update: func() { - _weight_kgs = acconfig_weight_kgs.getValue(); - - if (pts.Engines.Engine.n1Actual[0].getValue() <= 18.8) { - me["ENG1idFFlow"].setColor(0.7333,0.3803,0); - me["FUEL-ENG-1-label"].setColor(0.7333,0.3803,0); - } else { - me["ENG1idFFlow"].setColor(0.8078,0.8039,0.8078); - me["FUEL-ENG-1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (pts.Engines.Engine.n1Actual[1].getValue() <= 18.5) { - me["ENG2idFFlow"].setColor(0.7333,0.3803,0); - me["FUEL-ENG-2-label"].setColor(0.7333,0.3803,0); - } else { - me["ENG2idFFlow"].setColor(0.8078,0.8039,0.8078); - me["FUEL-ENG-2-label"].setColor(0.8078,0.8039,0.8078); - } - - # TODO add FOB half-boxed amber if some fuel is blocked - if (_weight_kgs == 1) +var SystemDisplayPageRecipient = +{ + new: func(_ident, page) + { + var SDRecipient = emesary.Recipient.new(_ident); + SDRecipient.MainScreen = nil; + SDRecipient.Page = page; + SDRecipient.Receive = func(notification) { - me["FUEL-On-Board"].setText(sprintf("%s", math.round(total_fuel_lbs.getValue() * LBS2KGS, 10))); - me["FOB-weight-unit"].setText("KG"); - } else { - me["FUEL-On-Board"].setText(sprintf("%s", math.round(total_fuel_lbs.getValue(), 10))); - me["FOB-weight-unit"].setText("LBS"); - } - - if (_weight_kgs == 1) { - me["FFlow-weight-unit"].setText("KG/MIN"); - } else { - me["FFlow-weight-unit"].setText("LBS/MIN"); - } - - if (fadec.FADEC.Power.powered1.getValue() and fadec.FADEC.Power.powered2.getValue() or fadec.FADEC.Power.powerup.getValue()) { - me["FUEL-Flow-per-min"].setColor(0.0509,0.7529,0.2941); - if (_weight_kgs == 1) { - me["FUEL-Flow-per-min"].setText(sprintf("%s", math.round(((fuel_flow1.getValue() + fuel_flow2.getValue()) * LBS2KGS) / 60, 10))); - } else { - me["FUEL-Flow-per-min"].setText(sprintf("%s", math.round((fuel_flow1.getValue() + fuel_flow2.getValue()) / 60, 10))); - } - } else { - me["FUEL-Flow-per-min"].setColor(0.7333,0.3803,0); - me["FUEL-Flow-per-min"].setText("XX"); - } - - # TODO use the valve prop and add amber if difference between eng master and valve - # TODO add transition state - if (systems.FUEL.Valves.lpValve1.getValue()) { - me["FUEL-ENG-Master-1"].setRotation(0); - me["FUEL-ENG-Master-1"].setColor(0.0509,0.7529,0.2941); - me["FUEL-ENG-Master-1"].setColorFill(0.0509,0.7529,0.2941); - me["FUEL-ENG-1-pipe"].setColor(0.0509,0.7529,0.2941); - } else { - me["FUEL-ENG-Master-1"].setRotation(90 * D2R); - me["FUEL-ENG-Master-1"].setColor(0.7333,0.3803,0); - me["FUEL-ENG-Master-1"].setColorFill(0.7333,0.3803,0); - me["FUEL-ENG-1-pipe"].setColor(0.7333,0.3803,0); - } - - # TODO use the valve prop and add amber if difference between eng master and valve - # TODO add transition state - if (systems.FUEL.Valves.lpValve2.getValue()) { - me["FUEL-ENG-Master-2"].setRotation(0); - me["FUEL-ENG-Master-2"].setColor(0.0509,0.7529,0.2941); - me["FUEL-ENG-Master-2"].setColorFill(0.0509,0.7529,0.2941); - me["FUEL-ENG-2-pipe"].setColor(0.0509,0.7529,0.2941); - } else { - me["FUEL-ENG-Master-2"].setRotation(90 * D2R); - me["FUEL-ENG-Master-2"].setColor(0.7333,0.3803,0); - me["FUEL-ENG-Master-2"].setColorFill(0.7333,0.3803,0); - me["FUEL-ENG-2-pipe"].setColor(0.7333,0.3803,0); - } - - # this is now bound to the XFEED switch - # TODO use the valve prop - # TODO add amber when disagree between switch and btn - # TODO add transition state - if (systems.FUEL.Valves.crossfeed.getBoolValue()) { - me["FUEL-XFEED"].setRotation(0); - me["FUEL-XFEED-pipes"].show(); - } else { - me["FUEL-XFEED"].setRotation(90 * D2R); - me["FUEL-XFEED-pipes"].hide(); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpLeft1.getBoolValue()) { - me["FUEL-Pump-Left-1-Open"].show(); - me["FUEL-Pump-Left-1-Closed"].hide(); - me["FUEL-Pump-Left-1"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Left-1"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Left-1-Open"].hide(); - me["FUEL-Pump-Left-1-Closed"].show(); - me["FUEL-Pump-Left-1"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Left-1"].setColorFill(0.7333,0.3803,0); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpLeft2.getBoolValue()) { - me["FUEL-Pump-Left-2-Open"].show(); - me["FUEL-Pump-Left-2-Closed"].hide(); - me["FUEL-Pump-Left-2"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Left-2"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Left-2-Open"].hide(); - me["FUEL-Pump-Left-2-Closed"].show(); - me["FUEL-Pump-Left-2"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Left-2"].setColorFill(0.7333,0.3803,0); - } - - # TODO add functionality to match FCOM 1.28.20 "Amber: Transfer valve is open, whereas commanded closed in automatic or manual mode" - if (systems.FUEL.Switches.pumpCenter1.getBoolValue()) { - me["FUEL-Pump-Center-1-Open"].show(); - me["FUEL-Pump-Center-1-Closed"].hide(); - me["FUEL-Pump-Center-1"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Center-1"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Center-1-Open"].hide(); - me["FUEL-Pump-Center-1-Closed"].show(); - me["FUEL-Pump-Center-1"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Center-1"].setColorFill(0.7333,0.3803,0); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpCenter2.getBoolValue()) { - me["FUEL-Pump-Center-2-Open"].show(); - me["FUEL-Pump-Center-2-Closed"].hide(); - me["FUEL-Pump-Center-2"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Center-2"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Center-2-Open"].hide(); - me["FUEL-Pump-Center-2-Closed"].show(); - me["FUEL-Pump-Center-2"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Center-2"].setColorFill(0.7333,0.3803,0); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpRight1.getBoolValue()) { - me["FUEL-Pump-Right-1-Open"].show(); - me["FUEL-Pump-Right-1-Closed"].hide(); - me["FUEL-Pump-Right-1"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Right-1"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Right-1-Open"].hide(); - me["FUEL-Pump-Right-1-Closed"].show(); - me["FUEL-Pump-Right-1"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Right-1"].setColorFill(0.7333,0.3803,0); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpRight2.getBoolValue()) { - me["FUEL-Pump-Right-2-Open"].show(); - me["FUEL-Pump-Right-2-Closed"].hide(); - me["FUEL-Pump-Right-2"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Right-2"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Right-2-Open"].hide(); - me["FUEL-Pump-Right-2-Closed"].show(); - me["FUEL-Pump-Right-2"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Right-2"].setColorFill(0.7333,0.3803,0); - } - - # Fuel Used - if (_weight_kgs == 1) { - me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); - me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); - me["FUEL-used-both"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10) + math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10)))); - me["Fused-weight-unit"].setText("KG"); - } else { - me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); - me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); - me["FUEL-used-both"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue(), 10) + math.round(fuel_used_lbs2.getValue(), 10)))); - me["Fused-weight-unit"].setText("LBS"); - } - - # Fuel Temp - me["FUEL-Left-Outer-temp"].setText(sprintf("%s", math.round(fuel_left_outer_temp.getValue()))); - me["FUEL-Left-Inner-temp"].setText(sprintf("%s", math.round(fuel_left_inner_temp.getValue()))); - me["FUEL-Right-Outer-temp"].setText(sprintf("%s", math.round(fuel_right_outer_temp.getValue()))); - me["FUEL-Right-Inner-temp"].setText(sprintf("%s", math.round(fuel_right_inner_temp.getValue()))); - - # Fuel Quantity - # TODO add LO indication - if (_weight_kgs == 1) { - me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue() * LBS2KGS, 10))); - me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue() * LBS2KGS, 10))); - me["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue() * LBS2KGS, 10))); - me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue() * LBS2KGS, 10))); - me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue() * LBS2KGS, 10))); - } else { - me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue(), 10))); - me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue(), 10))); - me["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue(), 10))); - me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue(), 10))); - me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue(), 10))); - } - - if (systems.FUEL.Valves.transfer1.getValue() == 0) { - me["FUEL-Left-Transfer"].hide(); - } else { - if (systems.FUEL.Valves.transfer1.getValue()) { - me["FUEL-Left-Transfer"].setColor(0.0509,0.7529,0.2941); - } else { - me["FUEL-Left-Transfer"].setColor(0.7333,0.3803,0); - } - me["FUEL-Left-Transfer"].show(); - } - - if (systems.FUEL.Valves.transfer2.getValue() == 0) { - me["FUEL-Right-Transfer"].hide(); - } else { - if (systems.FUEL.Valves.transfer2.getValue()) { - me["FUEL-Right-Transfer"].setColor(0.0509,0.7529,0.2941); - } else { - me["FUEL-Right-Transfer"].setColor(0.7333,0.3803,0); - } - me["FUEL-Right-Transfer"].show(); - } - - if (!systems.FUEL.Switches.pumpCenter1.getValue() and !systems.FUEL.Switches.pumpCenter2.getValue()) { - me["FUEL-Center-blocked"].show(); - } else { - me["FUEL-Center-blocked"].hide(); - } - - # APU - if (systems.FUEL.Valves.apu.getValue() and systems.APUNodes.Controls.master.getValue() and !systems.APUNodes.Controls.fire.getValue()) { - me["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078); - me["FUEL-APU-line"].setColor(0.0509,0.7529,0.2941); - me["FUEL-APU-arrow"].setColor(0.0509,0.7529,0.2941); - me["FUEL-APU-line"].show(); - me["FUEL-APU-arrow"].show(); - } elsif (systems.FUEL.Valves.apu.getValue() and (!systems.APUNodes.Controls.master.getValue() or systems.APUNodes.Controls.fire.getValue())) { - me["FUEL-APU-label"].setColor(0.7333,0.3803,0); - me["FUEL-APU-line"].setColor(0.7333,0.3803,0); - me["FUEL-APU-arrow"].setColor(0.7333,0.3803,0); - me["FUEL-APU-line"].show(); - me["FUEL-APU-arrow"].show(); - } elsif (systems.FUEL.Valves.apu.getValue() != 1 and (systems.APUNodes.Controls.master.getValue() or systems.APUNodes.Controls.fire.getValue())) { - me["FUEL-APU-label"].setColor(0.7333,0.3803,0); - me["FUEL-APU-line"].hide(); - me["FUEL-APU-arrow"].hide(); - } else { - me["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078); - me["FUEL-APU-arrow"].setColor(0.8078, 0.8039, 0.8078); - me["FUEL-APU-line"].hide(); - me["FUEL-APU-arrow"].show(); - } - - # Hide not yet implemented features - # TODO add them - me["FUEL-Left-blocked"].hide(); - me["FUEL-Right-blocked"].hide(); - me["FUEL-Left-Outer-Inacc"].hide(); - me["FUEL-Left-Inner-Inacc"].hide(); - me["FUEL-Right-Outer-Inacc"].hide(); - me["FUEL-Right-Inner-Inacc"].hide(); - me["FUEL-Center-Inacc"].hide(); - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_press = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_press, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit", "PRESS-Cab-VS", "PRESS-Cab-VS-neg", "PRESS-Cab-Alt"]; - }, - update: func() { - me["PRESS-Cab-VS"].setText(sprintf("%4.0f", press_vs_norm.getValue())); - me["PRESS-Cab-Alt"].setText(sprintf("%4.0f", cabinalt.getValue())); - - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_status = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_status, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; - }, - update: func() { - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_hyd = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_hyd, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Green-Indicator","Blue-Indicator","Yellow-Indicator","Press-Green","Press-Blue","Press-Yellow","Green-Line","Blue-Line","Yellow-Line","PTU-Supply-Line","PTU-supply-yellow","PTU-supply-green","PTU-connection", - "PTU-Auto-or-off","RAT-label","RAT-stowed","RAT-not-stowed","ELEC-Yellow-off","ELEC-Yellow-on","ELEC-Yellow-label","ELEC-OVTH-Yellow","ELEC-Blue-label","ELEC-OVHT-Blue","ELEC-OVHT-Yellow","Pump-Green-label","Pump-Yellow-label","Pump-Green", - "Pump-LOPR-Green","Pump-Green-off","Pump-Green-on","Pump-Yellow","Pump-LOPR-Yellow","Pump-Yellow-off","Pump-Yellow-on","Pump-Blue", "Pump-Blue-off","Pump-Blue-on","Fire-Valve-Green","Fire-Valve-Yellow","LO-AIR-PRESS-Green", - "LO-AIR-PRESS-Yellow","LO-AIR-PRESS-Blue","OVHT-Green","OVHT-Blue","OVHT-Yellow","Quantity-Indicator-Green","Quantity-Indicator-Blue","Quantity-Indicator-Yellow","Green-label","Blue-label","Yellow-label"]; - }, - update: func() { - blue_psi = systems.HYD.Psi.blue.getValue(); - green_psi = systems.HYD.Psi.green.getValue(); - yellow_psi = systems.HYD.Psi.yellow.getValue(); - - me["Press-Green"].setText(sprintf("%s", math.round(green_psi, 50))); - me["Press-Blue"].setText(sprintf("%s", math.round(blue_psi, 50))); - me["Press-Yellow"].setText(sprintf("%s", math.round(yellow_psi, 50))); - - if (blue_psi >= 1500) { - me["Blue-Line"].setColor(0.0509,0.7529,0.2941); - me["Blue-Line"].setColorFill(0.0509,0.7529,0.2941); - me["Blue-Indicator"].setColor(0.0509,0.7529,0.2941); - me["Press-Blue"].setColor(0.0509,0.7529,0.2941); - me["Blue-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Blue-Line"].setColor(0.7333,0.3803,0); - me["Blue-Line"].setColorFill(0.7333,0.3803,0); - me["Blue-Indicator"].setColor(0.7333,0.3803,0); - me["Press-Blue"].setColor(0.7333,0.3803,0); - me["Blue-label"].setColor(0.7333,0.3803,0); - } - - if (yellow_psi >= 1500) { - me["Yellow-Line"].setColor(0.0509,0.7529,0.2941); - me["Yellow-Line"].setColorFill(0.0509,0.7529,0.2941); - me["Yellow-Indicator"].setColor(0.0509,0.7529,0.2941); - me["Press-Yellow"].setColor(0.0509,0.7529,0.2941); - me["Yellow-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Yellow-Line"].setColor(0.7333,0.3803,0); - me["Yellow-Line"].setColorFill(0.7333,0.3803,0); - me["Yellow-Indicator"].setColor(0.7333,0.3803,0); - me["Press-Yellow"].setColor(0.7333,0.3803,0); - me["Yellow-label"].setColor(0.7333,0.3803,0); - } - - if (green_psi >= 1500) { - me["Green-Line"].setColor(0.0509,0.7529,0.2941); - me["Green-Line"].setColorFill(0.0509,0.7529,0.2941); - me["Green-Indicator"].setColor(0.0509,0.7529,0.2941); - me["Press-Green"].setColor(0.0509,0.7529,0.2941); - me["Green-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Green-Line"].setColor(0.7333,0.3803,0); - me["Green-Line"].setColorFill(0.7333,0.3803,0); - me["Green-Indicator"].setColor(0.7333,0.3803,0); - me["Press-Green"].setColor(0.7333,0.3803,0); - me["Green-label"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Switch.ptu.getValue() and !systems.HYD.Fail.ptuFault.getValue()) { - me["PTU-connection"].setColor(0.0509,0.7529,0.2941); - - if (systems.HYD.Ptu.active.getValue()) { - if (systems.HYD.Ptu.diff.getValue() < 0) { - me["PTU-Supply-Line"].show(); - me["PTU-supply-yellow"].show(); - me["PTU-supply-green"].hide(); - me["PTU-Auto-or-off"].hide(); - } else { - me["PTU-Supply-Line"].show(); - me["PTU-supply-yellow"].hide(); - me["PTU-supply-green"].show(); - me["PTU-Auto-or-off"].hide(); - } - } else { - me["PTU-Auto-or-off"].setColor(0.0509,0.7529,0.2941); - me["PTU-Supply-Line"].hide(); - me["PTU-supply-yellow"].hide(); - me["PTU-supply-green"].hide(); - me["PTU-Auto-or-off"].show(); - } - } else { - me["PTU-connection"].setColor(0.7333,0.3803,0); - me["PTU-Auto-or-off"].setColor(0.7333,0.3803,0); - me["PTU-Supply-Line"].hide(); - me["PTU-supply-yellow"].hide(); - me["PTU-supply-green"].hide(); - me["PTU-Auto-or-off"].show(); - } - - if (pts.Engines.Engine.n2Actual[0].getValue() >= 59) { - me["Pump-Green-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Pump-Green-label"].setColor(0.7333,0.3803,0); - } - - if (pts.Engines.Engine.n2Actual[1].getValue() >= 59) { - me["Pump-Yellow-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Pump-Yellow-label"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Switch.greenEDP.getValue()) { - me["Pump-Green-off"].hide(); - if (green_psi >= 1500) { - me["Pump-Green-on"].show(); - me["Pump-LOPR-Green"].hide(); - me["Pump-Green"].setColor(0.0509,0.7529,0.2941); - me["Pump-Green"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["Pump-Green-on"].hide(); - me["Pump-LOPR-Green"].show(); - me["Pump-Green"].setColor(0.7333,0.3803,0); - me["Pump-Green"].setColorFill(0.7333,0.3803,0); - } - } else { - me["Pump-Green-off"].show(); - me["Pump-Green-on"].hide(); - me["Pump-LOPR-Green"].hide(); - me["Pump-Green"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Switch.yellowEDP.getValue()) { - me["Pump-Yellow-off"].hide(); - if (yellow_psi >= 1500) { - me["Pump-Yellow-on"].show(); - me["Pump-LOPR-Yellow"].hide(); - me["Pump-Yellow"].setColorFill(0.0509,0.7529,0.2941); - me["Pump-Yellow"].setColor(0.0509,0.7529,0.2941); - } else { - me["Pump-Yellow-on"].hide(); - me["Pump-LOPR-Yellow"].show(); - me["Pump-Yellow"].setColorFill(0.7333,0.3803,0); - me["Pump-Yellow"].setColor(0.7333,0.3803,0); - } - } else { - me["Pump-Yellow-off"].show(); - me["Pump-Yellow-on"].hide(); - me["Pump-LOPR-Yellow"].hide(); - me["Pump-Yellow"].setColorFill(0.7333,0.3803,0); - me["Pump-Yellow"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Switch.blueElec.getValue()) { - me["Pump-Blue-off"].hide(); - if (blue_psi >= 1500) { - me["Pump-Blue-on"].show(); - me["Pump-Blue-off"].hide(); - me["Pump-Blue"].setColorFill(0.0509,0.7529,0.2941); - me["Pump-Blue"].setColor(0.0509,0.7529,0.2941); - } else { - me["Pump-Blue-off"].show(); - me["Pump-Blue-on"].hide(); - me["Pump-Blue"].setColorFill(0.7333,0.3803,0); - me["Pump-Blue"].setColor(0.7333,0.3803,0); - } - } else { - me["Pump-Blue-off"].show(); - me["Pump-Blue-on"].hide(); - me["Pump-Blue"].setColorFill(0.7333,0.3803,0); - me["Pump-Blue"].setColor(0.7333,0.3803,0); - } - - if (!systems.HYD.Switch.yellowElec.getValue()) { - me["ELEC-Yellow-on"].hide(); - me["ELEC-Yellow-off"].show(); - } else { - me["ELEC-Yellow-on"].show(); - me["ELEC-Yellow-off"].hide(); - if (yellow_psi >= 1500) { - me["ELEC-Yellow-on"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-Yellow-on"].setColor(0.7333,0.3803,0); - } - } - - if (y_resv_lo_air_press.getValue()) { - me["LO-AIR-PRESS-Yellow"].show(); - } else { - me["LO-AIR-PRESS-Yellow"].hide(); - } - - if (b_resv_lo_air_press.getValue()) { - me["LO-AIR-PRESS-Blue"].show(); - } else { - me["LO-AIR-PRESS-Blue"].hide(); - } - - if (g_resv_lo_air_press.getValue()) { - me["LO-AIR-PRESS-Green"].show(); - } else { - me["LO-AIR-PRESS-Green"].hide(); - } - - if (elec_pump_y_ovht.getValue()) { - me["ELEC-OVHT-Yellow"].show(); - } else { - me["ELEC-OVHT-Yellow"].hide(); - } - - if (elec_pump_b_ovht.getValue()) { - me["ELEC-OVHT-Blue"].show(); - } else { - me["ELEC-OVHT-Blue"].hide(); - } - - if (systems.HYD.Rat.position.getValue()) { - me["RAT-stowed"].hide(); - me["RAT-not-stowed"].show(); - } else { - me["RAT-stowed"].show(); - me["RAT-not-stowed"].hide(); - } - - if (y_resv_ovht.getValue()) { - me["OVHT-Yellow"].show(); - } else { - me["OVHT-Yellow"].hide(); - } - - if (b_resv_ovht.getValue()) { - me["OVHT-Green"].show(); - } else { - me["OVHT-Green"].hide(); - } - - if (g_resv_ovht.getValue()) { - me["OVHT-Blue"].show(); - } else { - me["OVHT-Blue"].hide(); - } - - if (systems.ELEC.Bus.ac1.getValue() >= 110) { - me["ELEC-Blue-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["ELEC-Blue-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - me["ELEC-Yellow-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["ELEC-Yellow-label"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Valve.yellowFire.getValue() != 0) { - me["Fire-Valve-Yellow"].setColor(0.7333,0.3803,0); - me["Fire-Valve-Yellow"].setRotation(90 * D2R); - } else { - me["Fire-Valve-Yellow"].setColor(0.0509,0.7529,0.2941); - me["Fire-Valve-Yellow"].setRotation(0); - } - - if (systems.HYD.Valve.greenFire.getValue() != 0) { - me["Fire-Valve-Green"].setColor(0.7333,0.3803,0); - me["Fire-Valve-Green"].setRotation(90 * D2R); - } else { - me["Fire-Valve-Green"].setColor(0.0509,0.7529,0.2941); - me["Fire-Valve-Green"].setRotation(0); - } - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_wheel = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_wheel, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","lgctltext","NORMbrk","NWStext","leftdoor","rightdoor","nosegeardoorL","nosegeardoorR", - "autobrk","autobrkind","NWS","NWSrect","normbrk-rect","altnbrk","normbrkhyd","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex", - "spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex","spoiler1Lrt","spoiler2Lex","spoiler2Lrt", - "spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf", - "spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf","spoiler5Lf","ALTNbrk","altnbrkhyd","altnbrk-rect","antiskidtext","brakearrow","accupress_text", - "accuonlyarrow","accuonly","braketemp1","normbrkhyd","braketemp2","braketemp3","braketemp4","toparc1","toparc2","toparc3","toparc4","leftuplock", - "noseuplock","rightuplock","Triangle-Left1","Triangle-Left2","Triangle-Nose1","Triangle-Nose2","Triangle-Right1","Triangle-Right2","BSCUrect1", - "BSCUrect2","BSCU1","BSCU2","tirepress1","tirepress2","tirepress3","tirepress4","tirepress5","tirepress6"]; - }, - update: func() { - blue_psi = systems.HYD.Psi.blue.getValue(); - green_psi = systems.HYD.Psi.green.getValue(); - yellow_psi = systems.HYD.Psi.yellow.getValue(); - autobrakemode = autobreak_mode.getValue(); - nosegear = gear1_pos.getValue(); - leftgear = gear2_pos.getValue(); - rightgear = gear3_pos.getValue(); - leftdoor = gear_door_L.getValue(); - rightdoor = gear_door_R.getValue(); - nosedoor = gear_door_N.getValue(); - gearlvr = gear_down.getValue(); - askidsw = systems.HYD.Switch.nwsSwitch.getBoolValue(); - brakemode = systems.HYD.Brakes.mode.getBoolValue(); - accum = systems.HYD.Brakes.accumPressPsi.getBoolValue(); - - # L/G CTL - if ((leftgear == 0 or nosegear == 0 or rightgear == 0 and gearlvr == 0) or (leftgear == 1 or nosegear == 1 or rightgear == 1 and gearlvr == 1)) { - me["lgctltext"].hide(); - } else { - me["lgctltext"].show(); - } - - # NWS / Antiskid / Brakes - if (askidsw and yellow_psi >= 1500) { - me["NWStext"].hide(); - me["NWS"].hide(); - me["NWSrect"].hide(); - me["antiskidtext"].hide(); - me["BSCUrect1"].hide(); - me["BSCUrect2"].hide(); - me["BSCU1"].hide(); - me["BSCU2"].hide(); - } else if (!askidsw and yellow_psi >= 1500) { - me["NWStext"].show(); - me["NWS"].show(); - me["NWS"].setColor(0.0509,0.7529,0.2941); - me["NWSrect"].show(); - me["antiskidtext"].show(); - me["antiskidtext"].setColor(0.7333,0.3803,0); - me["BSCUrect1"].show(); - me["BSCUrect2"].show(); - me["BSCU1"].show(); - me["BSCU2"].show(); - } else { - me["NWStext"].show(); - me["NWS"].show(); - me["NWS"].setColor(0.7333,0.3803,0); - me["NWSrect"].show(); - me["antiskidtext"].show(); - me["antiskidtext"].setColor(0.7333,0.3803,0); - me["BSCUrect1"].show(); - me["BSCUrect2"].show(); - me["BSCU1"].show(); - me["BSCU2"].show(); - } - - if (green_psi >= 1500 and brakemode == 1) { - me["NORMbrk"].hide(); - me["normbrk-rect"].hide(); - me["normbrkhyd"].hide(); - } else if (green_psi >= 1500 and askidsw) { - me["NORMbrk"].show(); - me["normbrk-rect"].show(); - me["NORMbrk"].setColor(0.7333,0.3803,0); - me["normbrkhyd"].setColor(0.0509,0.7529,0.2941); - } else if (green_psi < 1500 or !askidsw) { - me["NORMbrk"].show(); - me["normbrk-rect"].show(); - me["NORMbrk"].setColor(0.7333,0.3803,0); - me["normbrkhyd"].setColor(0.7333,0.3803,0); - } - - if (brakemode != 2) { - me["ALTNbrk"].hide(); - me["altnbrk-rect"].hide(); - me["altnbrkhyd"].hide(); - } else if (yellow_psi >= 1500) { - me["ALTNbrk"].show(); - me["altnbrk-rect"].show(); - me["altnbrkhyd"].setColor(0.0509,0.7529,0.2941); - } else { - me["ALTNbrk"].show(); - me["altnbrk-rect"].show(); - me["altnbrkhyd"].setColor(0.7333,0.3803,0); - } - - if (brakemode == 2 and accum < 200 and yellow_psi < 1500) { - me["accupress_text"].show(); - me["brakearrow"].hide(); - me["accupress_text"].setColor(0.7333,0.3803,0); - } else if (brakemode == 2 and accum > 200 and yellow_psi >= 1500){ - me["accupress_text"].show(); - me["brakearrow"].show(); - me["accupress_text"].setColor(0.0509,0.7529,0.2941); - } else if (brakemode == 2 and accum > 200 and yellow_psi < 1500) { - me["accuonlyarrow"].show(); - me["accuonly"].show(); - me["brakearrow"].hide(); - me["accupress_text"].hide(); - } else { - me["accuonlyarrow"].hide(); - me["accuonly"].hide(); - me["brakearrow"].hide(); - me["accupress_text"].hide(); - } - - # Gear Doors - me["leftdoor"].setRotation(door_left.getValue() * D2R); - me["rightdoor"].setRotation(door_right.getValue() * D2R); - me["nosegeardoorL"].setRotation(door_nose_left.getValue() * D2R); - me["nosegeardoorR"].setRotation(door_nose_right.getValue() * D2R); - - if (nosedoor == 0) { - me["nosegeardoorL"].setColorFill(0.0509,0.7529,0.2941); - me["nosegeardoorR"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["nosegeardoorL"].setColorFill(0.7333,0.3803,0); - me["nosegeardoorR"].setColorFill(0.7333,0.3803,0); - } - - if (leftdoor == 0) { - me["leftdoor"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["leftdoor"].setColorFill(0.7333,0.3803,0); - } - - if (rightdoor == 0) { - me["rightdoor"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["rightdoor"].setColorFill(0.7333,0.3803,0); - } - - # Triangles - if (leftgear < 0.2 or leftgear > 0.8) { - me["Triangle-Left1"].hide(); - me["Triangle-Left2"].hide(); - } else { - me["Triangle-Left1"].show(); - me["Triangle-Left2"].show(); - } - - if (leftgear == 1) { - me["Triangle-Left1"].setColor(0.0509,0.7529,0.2941); - me["Triangle-Left2"].setColor(0.0509,0.7529,0.2941); - } else { - me["Triangle-Left1"].setColor(1,0,0); - me["Triangle-Left2"].setColor(1,0,0); - } - - if (nosegear < 0.2 or nosegear > 0.8) { - me["Triangle-Nose1"].hide(); - me["Triangle-Nose2"].hide(); - } else { - me["Triangle-Nose1"].show(); - me["Triangle-Nose2"].show(); - } - - if (nosegear == 1) { - me["Triangle-Nose1"].setColor(0.0509,0.7529,0.2941); - me["Triangle-Nose2"].setColor(0.0509,0.7529,0.2941); - } else { - me["Triangle-Nose1"].setColor(1,0,0); - me["Triangle-Nose2"].setColor(1,0,0); - } - - if (rightgear < 0.2 or rightgear > 0.8) { - me["Triangle-Right1"].hide(); - me["Triangle-Right2"].hide(); - } else { - me["Triangle-Right1"].show(); - me["Triangle-Right2"].show(); - } - - if (rightgear == 1) { - me["Triangle-Right1"].setColor(0.0509,0.7529,0.2941); - me["Triangle-Right2"].setColor(0.0509,0.7529,0.2941); - } else { - me["Triangle-Right1"].setColor(1,0,0); - me["Triangle-Right2"].setColor(1,0,0); - } - - # Autobrake - if (autobrakemode == 0) { - me["autobrkind"].hide(); - } elsif (autobrakemode == 1) { - me["autobrkind"].show(); - me["autobrkind"].setText(sprintf("%s", "LO")); - } elsif (autobrakemode == 2) { - me["autobrkind"].show(); - me["autobrkind"].setText(sprintf("%s", "MED")); - } elsif (autobrakemode == 3) { - me["autobrkind"].show(); - me["autobrkind"].setText(sprintf("%s", "MAX")); - } - - if (autobrakemode != 0) { - me["autobrk"].show(); - } elsif (autobrakemode == 0) { - me["autobrk"].hide(); - } - - # Spoilers - if (spoiler_L1.getValue() < 1.5) { - me["spoiler1Lex"].hide(); - me["spoiler1Lrt"].show(); - } else { - me["spoiler1Lrt"].hide(); - me["spoiler1Lex"].show(); - } - - if (spoiler_L2.getValue() < 1.5) { - me["spoiler2Lex"].hide(); - me["spoiler2Lrt"].show(); - } else { - me["spoiler2Lrt"].hide(); - me["spoiler2Lex"].show(); - } - - if (spoiler_L3.getValue() < 1.5) { - me["spoiler3Lex"].hide(); - me["spoiler3Lrt"].show(); - } else { - me["spoiler3Lrt"].hide(); - me["spoiler3Lex"].show(); - } - - if (spoiler_L4.getValue() < 1.5) { - me["spoiler4Lex"].hide(); - me["spoiler4Lrt"].show(); - } else { - me["spoiler4Lrt"].hide(); - me["spoiler4Lex"].show(); - } - - if (spoiler_L5.getValue() < 1.5) { - me["spoiler5Lex"].hide(); - me["spoiler5Lrt"].show(); - } else { - me["spoiler5Lrt"].hide(); - me["spoiler5Lex"].show(); - } - - if (spoiler_R1.getValue() < 1.5) { - me["spoiler1Rex"].hide(); - me["spoiler1Rrt"].show(); - } else { - me["spoiler1Rrt"].hide(); - me["spoiler1Rex"].show(); - } - - if (spoiler_R2.getValue() < 1.5) { - me["spoiler2Rex"].hide(); - me["spoiler2Rrt"].show(); - } else { - me["spoiler2Rrt"].hide(); - me["spoiler2Rex"].show(); - } - - if (spoiler_R3.getValue() < 1.5) { - me["spoiler3Rex"].hide(); - me["spoiler3Rrt"].show(); - } else { - me["spoiler3Rrt"].hide(); - me["spoiler3Rex"].show(); - } - - if (spoiler_R4.getValue() < 1.5) { - me["spoiler4Rex"].hide(); - me["spoiler4Rrt"].show(); - } else { - me["spoiler4Rrt"].hide(); - me["spoiler4Rex"].show(); - } - - if (spoiler_R5.getValue() < 1.5) { - me["spoiler5Rex"].hide(); - me["spoiler5Rrt"].show(); - } else { - me["spoiler5Rrt"].hide(); - me["spoiler5Rex"].show(); - } - - # Spoiler Fail - if (fbw.FBW.Failures.spoilerl1.getValue() or green_psi < 1500) { - me["spoiler1Lex"].setColor(0.7333,0.3803,0); - me["spoiler1Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L1.getValue() < 1.5) { - me["spoiler1Lf"].show(); - } else { - me["spoiler1Lf"].hide(); - } - } else { - me["spoiler1Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl2.getValue() or yellow_psi < 1500) { - me["spoiler2Lex"].setColor(0.7333,0.3803,0); - me["spoiler2Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L2.getValue() < 1.5) { - me["spoiler2Lf"].show(); - } else { - me["spoiler2Lf"].hide(); - } - } else { - me["spoiler2Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl3.getValue() or blue_psi < 1500) { - me["spoiler3Lex"].setColor(0.7333,0.3803,0); - me["spoiler3Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L3.getValue() < 1.5) { - me["spoiler3Lf"].show(); - } else { - me["spoiler3Lf"].hide(); - } - } else { - me["spoiler3Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl4.getValue() or yellow_psi < 1500) { - me["spoiler4Lex"].setColor(0.7333,0.3803,0); - me["spoiler4Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L4.getValue() < 1.5) { - me["spoiler4Lf"].show(); - } else { - me["spoiler4Lf"].hide(); - } - } else { - me["spoiler4Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl5.getValue() or green_psi < 1500) { - me["spoiler5Lex"].setColor(0.7333,0.3803,0); - me["spoiler5Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L5.getValue() < 1.5) { - me["spoiler5Lf"].show(); - } else { - me["spoiler5Lf"].hide(); - } - } else { - me["spoiler5Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr1.getValue() or green_psi < 1500) { - me["spoiler1Rex"].setColor(0.7333,0.3803,0); - me["spoiler1Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R1.getValue() < 1.5) { - me["spoiler1Rf"].show(); - } else { - me["spoiler1Rf"].hide(); - } - } else { - me["spoiler1Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr2.getValue() or yellow_psi < 1500) { - me["spoiler2Rex"].setColor(0.7333,0.3803,0); - me["spoiler2Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R2.getValue() < 1.5) { - me["spoiler2Rf"].show(); - } else { - me["spoiler2Rf"].hide(); - } - } else { - me["spoiler2Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr3.getValue() or blue_psi < 1500) { - me["spoiler3Rex"].setColor(0.7333,0.3803,0); - me["spoiler3Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R3.getValue() < 1.5) { - me["spoiler3Rf"].show(); - } else { - me["spoiler3Rf"].hide(); - } - } else { - me["spoiler3Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr4.getValue() or yellow_psi < 1500) { - me["spoiler4Rex"].setColor(0.7333,0.3803,0); - me["spoiler4Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R4.getValue() < 1.5) { - me["spoiler4Rf"].show(); - } else { - me["spoiler4Rf"].hide(); - } - } else { - me["spoiler4Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr5.getValue() or green_psi < 1500) { - me["spoiler5Rex"].setColor(0.7333,0.3803,0); - me["spoiler5Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R5.getValue() < 1.5) { - me["spoiler5Rf"].show(); - } else { - me["spoiler5Rf"].hide(); - } - } else { - me["spoiler5Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Rf"].hide(); - } - - # Show Brakes temperature - if (L1BrakeTempc.getValue() > 300) { - me["braketemp1"].setColor(0.7333,0.3803,0); - } else { - me["braketemp1"].setColor(0.0509,0.7529,0.2941); - } - - if (L2BrakeTempc.getValue() > 300) { - me["braketemp2"].setColor(0.7333,0.3803,0); - } else { - me["braketemp2"].setColor(0.0509,0.7529,0.2941); - } - if (R3BrakeTempc.getValue() > 300) { - me["braketemp3"].setColor(0.7333,0.3803,0); - } else { - me["braketemp3"].setColor(0.0509,0.7529,0.2941); - } - if (R4BrakeTempc.getValue() > 300) { - me["braketemp4"].setColor(0.7333,0.3803,0); - } else { - me["braketemp4"].setColor(0.0509,0.7529,0.2941); - } - - # Brake arcs - if (L1BrakeTempc.getValue() > 300) { - me["toparc1"].setColor(0.7333,0.3803,0); - } else - { - if (L1BrakeTempc.getValue() > 100 and L1BrakeTempc.getValue() < 300) + if (notification.NotificationType == "FrameNotification") { - me["toparc1"].setColor(0.0509,0.7529,0.2941); + if (SDRecipient.MainScreen == nil) { + SDRecipient.MainScreen = canvas_lowerECAMPage.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/" ~ SDRecipient.Page ~ ".svg"); + } + if (math.mod(notifications.frameNotification.FrameCount,2) == 0) { + #if (ecam.SystemDisplayController.displayedPage.name == SDRecipient.Page) { + SDRecipient.MainScreen.update(notification); + #} + } + return emesary.Transmitter.ReceiptStatus_OK; } - else { - me["toparc1"].setColor(0.8078,0.8039,0.8078); - } - } - if (L2BrakeTempc.getValue() > 300) { - me["toparc2"].setColor(0.7333,0.3803,0); - } else - { - if (L2BrakeTempc.getValue() > 100 and L2BrakeTempc.getValue() < 300) - { - me["toparc2"].setColor(0.0509,0.7529,0.2941); - } - else { - me["toparc2"].setColor(0.8078,0.8039,0.8078); - } - } - if (R3BrakeTempc.getValue() > 300) { - me["toparc3"].setColor(0.7333,0.3803,0); - } else - { - if (R3BrakeTempc.getValue() > 100 and R3BrakeTempc.getValue() < 300) - { - me["toparc3"].setColor(0.0509,0.7529,0.2941); - } - else { - me["toparc3"].setColor(0.8078,0.8039,0.8078); - } - } - if (R4BrakeTempc.getValue() > 300) { - me["toparc4"].setColor(0.7333,0.3803,0); - } else - { - if (R4BrakeTempc.getValue() > 100 and R4BrakeTempc.getValue() < 300) - { - me["toparc4"].setColor(0.0509,0.7529,0.2941); - } - else { - me["toparc4"].setColor(0.8078,0.8039,0.8078); - } - } - me["braketemp1"].setText(sprintf("%s", math.round(L1BrakeTempc.getValue(), 1))); - me["braketemp2"].setText(sprintf("%s", math.round(L2BrakeTempc.getValue(), 1))); - me["braketemp3"].setText(sprintf("%s", math.round(R3BrakeTempc.getValue(), 1))); - me["braketemp4"].setText(sprintf("%s", math.round(R4BrakeTempc.getValue(), 1))); - me["braketemp1"].show(); - me["braketemp2"].show(); - me["braketemp3"].show(); - me["braketemp4"].show(); - me["toparc1"].show(); - me["toparc2"].show(); - me["toparc3"].show(); - me["toparc4"].show(); - - # Hide not yet implemented stuff - me["leftuplock"].hide(); - me["noseuplock"].hide(); - me["rightuplock"].hide(); - me["tirepress1"].hide(); - me["tirepress2"].hide(); - me["tirepress3"].hide(); - me["tirepress4"].hide(); - me["tirepress5"].hide(); - me["tirepress6"].hide(); - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_test = { - init: func(canvas_group, file) { - var font_mapper = func(family, weight) { - return "LiberationFonts/LiberationSans-Regular.ttf"; + return emesary.Transmitter.ReceiptStatus_NotProcessed; }; - - 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; - }, - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_test]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["Test_white","Test_text"]; - }, - update: func() { - var elapsedtime = pts.Sim.Time.elapsedSec.getValue(); - if (du4_test_time.getValue() + 1 >= elapsedtime) { - me["Test_white"].show(); - me["Test_text"].hide(); - } else { - me["Test_white"].hide(); - me["Test_text"].show(); - } + return SDRecipient; }, }; -setlistener("/sim/signals/fdm-initialized", func { - lowerECAM_display = canvas.new({ - "name": "lowerECAM", - "size": [1024, 1024], - "view": [1024, 1024], - "mipmapping": 1 - }); - lowerECAM_display.addPlacement({"node": "lecam.screen"}); - var groupApu = lowerECAM_display.createGroup(); - var groupBleed = lowerECAM_display.createGroup(); - var groupCond = lowerECAM_display.createGroup(); - var groupCrz = lowerECAM_display.createGroup(); - var groupDoor = lowerECAM_display.createGroup(); - var groupElec = lowerECAM_display.createGroup(); - var groupEng = lowerECAM_display.createGroup(); - var groupFctl = lowerECAM_display.createGroup(); - var groupFuel = lowerECAM_display.createGroup(); - var groupPress = lowerECAM_display.createGroup(); - var groupStatus = lowerECAM_display.createGroup(); - var groupHyd = lowerECAM_display.createGroup(); - var groupWheel = lowerECAM_display.createGroup(); - var group_test = lowerECAM_display.createGroup(); +var A320SDAPU = SystemDisplayPageRecipient.new("A320 SD", "apu"); +emesary.GlobalTransmitter.Register(A320SDAPU); - lowerECAM_apu = canvas_lowerECAM_apu.new(groupApu, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg"); - lowerECAM_bleed = canvas_lowerECAM_bleed.new(groupBleed, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/bleed.svg"); - lowerECAM_cond = canvas_lowerECAM_cond.new(groupCond, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/cond.svg"); - lowerECAM_crz = canvas_lowerECAM_crz.new(groupCrz, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/crz.svg"); - lowerECAM_door = canvas_lowerECAM_door.new(groupDoor, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/door.svg"); - lowerECAM_elec = canvas_lowerECAM_elec.new(groupElec, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/elec.svg"); - lowerECAM_eng = canvas_lowerECAM_eng.new(groupEng, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/eng.svg"); - lowerECAM_fctl = canvas_lowerECAM_fctl.new(groupFctl, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fctl.svg"); - lowerECAM_fuel = canvas_lowerECAM_fuel.new(groupFuel, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fuel.svg"); - lowerECAM_press = canvas_lowerECAM_press.new(groupPress, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/press.svg"); - lowerECAM_status = canvas_lowerECAM_status.new(groupStatus, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/status.svg"); - lowerECAM_hyd = canvas_lowerECAM_hyd.new(groupHyd, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/hyd.svg"); - lowerECAM_wheel = canvas_lowerECAM_wheel.new(groupWheel, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/wheel.svg"); - lowerECAM_test = canvas_lowerECAM_test.new(group_test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg"); - lowerECAM_update.start(); - if (rate.getValue() > 1) { - l_rateApply(); - } -}); +var input = { + apuAdr: "/systems/navigation/adr/operating-1", + apuAvailable: "/systems/apu/available", + apuBleed: "/controls/pneumatics/switches/apu", + apuBleedValveCmd: "/systems/pneumatics/valves/apu-bleed-valve-cmd", + apuBleedValvePos: "/systems/pneumatics/valves/apu-bleed-valve", + apuEgt: "/systems/apu/egt-degC", + apuEgtRot: "/ECAM/Lower/APU-EGT", + apuGenPB: "/controls/electrical/switches/apu", + apuGLC: "/systems/electrical/relay/apu-glc/contact-pos", + apuFlap: "/controls/apu/inlet-flap/position-norm", + apuFuelPump: "/systems/fuel/pumps/apu-operate", + apuFuelPumpsOff: "/systems/fuel/pumps/all-eng-pump-off", + apuOilLevel: "/systems/apu/oil/level-l", + apuMaster: "/controls/apu/master", + apuNeedleRot: "/ECAM/Lower/APU-N", + apuRpm: "/engines/engine[2]/n1", + apuPsi: "/systems/pneumatics/source/apu-psi", + apuLoad: "/systems/electrical/extra/apu-load", + apuHertz: "/systems/electrical/sources/apu/output-hertz", + apuVolt: "/systems/electrical/sources/apu/output-volt", +}; -var l_rateApply = func { - lowerECAM_update.restart(0.05 * rate.getValue()); -} - -var lowerECAM_update = maketimer(0.05, func { - canvas_lowerECAM_base.update(); -}); - -var showLowerECAM = func { - var dlg = canvas.Window.new([512, 512], "dialog").set("resize", 1); - dlg.setCanvas(lowerECAM_display); +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 Lower ECAM", name, input[name])); } setlistener("/systems/electrical/bus/ac-2", func() { - canvas_lowerECAM_base.updateDu4(); -}, 0, 0); + if (A320SDAPU.MainScreen != nil) { A320SDAPU.MainScreen.powerTransient() } +}, 0, 0); \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/res/apu.svg b/Models/Instruments/Lower-ECAM/res/apu.svg index 3f443c84..5c375974 100644 --- a/Models/Instruments/Lower-ECAM/res/apu.svg +++ b/Models/Instruments/Lower-ECAM/res/apu.svg @@ -42,8 +42,8 @@ id="namedview371" showgrid="true" inkscape:zoom="0.76543687" - inkscape:cx="663.42185" - inkscape:cy="457.30228" + inkscape:cx="1295.1967" + inkscape:cy="1096.0742" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -201,7 +201,7 @@ x="465.99081" id="tspan4176" sodipodi:role="line">00 - + id="APUBleedValveCrossBar" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2" /> LEVEL + OFF diff --git a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas index ae43662d..abe6a09b 100644 --- a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas +++ b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas @@ -990,7 +990,7 @@ var UpperECAMRecipient = var A320EWD = UpperECAMRecipient.new("A320 E/WD"); emesary.GlobalTransmitter.Register(A320EWD); -input = { +var input = { fuelTotalLbs: "/consumables/fuel/total-fuel-lbs", acconfigUnits: "/systems/acconfig/options/weight-kgs", slatLocked: "/fdm/jsbsim/fcs/slat-locked", From 081c075b798f777f10f23b476dd6bdd7bae68519 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Tue, 6 Jul 2021 12:37:18 +0100 Subject: [PATCH 02/28] Bottom part of display --- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 80 +---------------- Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 85 ++++++++++++++++++- Models/Instruments/Upper-ECAM/Upper-ECAM.nas | 1 - Nasal/emesary/exec.nas | 1 + 4 files changed, 83 insertions(+), 84 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index f9a7f0ef..38a590c0 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -116,7 +116,7 @@ var doorR4_pos = props.globals.getNode("/sim/model/door-positions/doorr4/positio var cargobulk_pos = props.globals.getNode("/sim/model/door-positions/cargobulk/position-norm", 1); var cargofwd_pos = props.globals.getNode("/sim/model/door-positions/cargofwd/position-norm", 1); var cargoaft_pos = props.globals.getNode("/sim/model/door-positions/cargoaft/position-norm", 1); -var gLoad = props.globals.getNode("/ECAM/Lower/g-force-display", 1); +var gLoad = props.globals.getNode("", 1); # Hydraulic var blue_psi = 0; @@ -445,91 +445,13 @@ var canvas_lowerECAM_base = { lowerECAM_wheel.page.hide(); } }, - displayedGForce: 0, updateBottomStatus: func() { - if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); - me["SAT"].setColor(0.0509,0.7529,0.2941); - } else { - me["SAT"].setText(sprintf("%s", "XX")); - me["SAT"].setColor(0.7333,0.3803,0); - } - if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); - me["TAT"].setColor(0.0509,0.7529,0.2941); - } else { - me["TAT"].setText(sprintf("%s", "XX")); - me["TAT"].setColor(0.7333,0.3803,0); - } - me.gloadStore = gLoad.getValue(); - if ((me.gloadStore == 1 and !me.displayedGForce) or (me.gloadStore != 0 and me.displayedGForce)) { - me.displayedGForce = 1; - me["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", pts.Accelerations.pilotGDamped.getValue())); - me["GLoad"].show(); - } else { - me.displayedGForce = 0; - me["GLoad"].hide(); - } - me["UTCh"].setText(sprintf("%02d", hour.getValue())); - me["UTCm"].setText(sprintf("%02d", minute.getValue())); - if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and ecam.phaseNode.getValue() != 1) { - if (acconfig_weight_kgs.getValue()) { - me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); - } else { - me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); - } - me["GW"].setColor(0.0509,0.7529,0.2941); - } else { - me["GW"].setText(sprintf("%s", "-----")); - me["GW"].setColor(0.0901,0.6039,0.7176); - } - - if (acconfig_weight_kgs.getValue()) { - me["GW-weight-unit"].setText("KG"); - } else { - me["GW-weight-unit"].setText("LBS"); - } }, }; - -var canvas_lowerECAM_apu = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_apu, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUGenOnline","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil", - "text3724","text3728","text3732"]; - }, - update: func() { - - - - var apu_valve_state2 = apu_valve_state.getValue(); - if (apu_valve_state2 == 1) { - me["APUBleedValve"].setRotation(90 * D2R); - } else { - me["APUBleedValve"].setRotation(0); - } - - if (apu_valve_state2 == apu_valve_state.getValue()) { - me["APUBleedValve"].setColor(0.0509,0.7529,0.2941); - me["APUBleedOnline"].show(); - } else { - me["APUBleedValve"].setColor(0.7333,0.3803,0); - me["APUBleedOnline"].hide(); - } - - me.updateBottomStatus(); - }, -}; - var canvas_lowerECAM_bleed = { new: func(canvas_group, file) { var m = {parents: [canvas_lowerECAM_bleed, canvas_lowerECAM_base]}; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index fcf37cf6..4ae127b9 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -30,9 +30,12 @@ var canvas_lowerECAMPage = }; canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); - obj.keysHash = obj.getKeys(); - foreach(var key; obj.keysHash) { + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { obj[key] = obj.group.getElementById(key); }; @@ -193,15 +196,77 @@ var canvas_lowerECAMPage = } }), ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; return obj; }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUBleedValveCrossBar","APUGenOnline","APUGenOff","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil", - "text3724","text3728","text3732"]; + return ["APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUBleedValveCrossBar","APUGenOnline","APUGenOff","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil","text3724","text3728","text3732"]; }, getKeysTest: func() { return ["Test_white","Test_text"]; }, + updateTemperatures: func() { + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and ecam.phaseNode.getValue() != 1) { + if (acconfig_weight_kgs.getValue()) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + }, update: func(notification) { me.updatePower(); @@ -217,6 +282,13 @@ var canvas_lowerECAMPage = { update_item.update(notification); } + + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + me.updateTemperatures(); }, updateTest: func(notification) { if (du4_test_time.getValue() + 1 >= notification.elapsedTime) { @@ -319,6 +391,11 @@ var input = { apuLoad: "/systems/electrical/extra/apu-load", apuHertz: "/systems/electrical/sources/apu/output-hertz", apuVolt: "/systems/electrical/sources/apu/output-volt", + + gForce: "/accelerations/pilot-gdamped", + gForceDisplay: "/ECAM/Lower/g-force-display", + hour: "/sim/time/utc/hour", + minute: "/sim/time/utc/minute", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas index abe6a09b..ab8f037d 100644 --- a/Models/Instruments/Upper-ECAM/Upper-ECAM.nas +++ b/Models/Instruments/Upper-ECAM/Upper-ECAM.nas @@ -992,7 +992,6 @@ emesary.GlobalTransmitter.Register(A320EWD); var input = { fuelTotalLbs: "/consumables/fuel/total-fuel-lbs", - acconfigUnits: "/systems/acconfig/options/weight-kgs", slatLocked: "/fdm/jsbsim/fcs/slat-locked", # N1 parameters diff --git a/Nasal/emesary/exec.nas b/Nasal/emesary/exec.nas index eda3c5e9..c00a8579 100644 --- a/Nasal/emesary/exec.nas +++ b/Nasal/emesary/exec.nas @@ -42,6 +42,7 @@ input = { frame_rate: "/sim/frame-rate", elapsedTime: "/sim/time/elapsed-sec", FWCPhase: "/ECAM/warning-phase", + acconfigUnits: "/systems/acconfig/options/weight-kgs", # Just about everything uses these properties at some stage, lets add them here! gear0Wow: "/gear/gear[0]/wow", From 593d6be6cf77f43b16ddbfbe0e83f1853c97bbe4 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Tue, 6 Jul 2021 12:44:11 +0100 Subject: [PATCH 03/28] fix nodes --- Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 25 ++++++++++---------- Nasal/ECAM/ECAM-logic.nas | 11 ++++----- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index 4ae127b9..106ee857 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -200,6 +200,7 @@ var canvas_lowerECAMPage = obj.displayedGForce = 0; obj.updateItemsBottom = [ props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; if (val) { obj["GW-weight-unit"].setText("KG"); } else { @@ -254,18 +255,6 @@ var canvas_lowerECAMPage = me["TAT"].setText(sprintf("%s", "XX")); me["TAT"].setColor(0.7333,0.3803,0); } - - if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and ecam.phaseNode.getValue() != 1) { - if (acconfig_weight_kgs.getValue()) { - me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); - } else { - me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); - } - me["GW"].setColor(0.0509,0.7529,0.2941); - } else { - me["GW"].setText(sprintf("%s", "-----")); - me["GW"].setColor(0.0901,0.6039,0.7176); - } }, update: func(notification) { me.updatePower(); @@ -288,6 +277,18 @@ var canvas_lowerECAMPage = update_item_bottom.update(notification); } + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + me.updateTemperatures(); }, updateTest: func(notification) { diff --git a/Nasal/ECAM/ECAM-logic.nas b/Nasal/ECAM/ECAM-logic.nas index e5976e0c..f7543c18 100644 --- a/Nasal/ECAM/ECAM-logic.nas +++ b/Nasal/ECAM/ECAM-logic.nas @@ -4,7 +4,6 @@ # props.nas: var dualFailNode = props.globals.initNode("/ECAM/dual-failure-enabled", 0, "BOOL"); -var phaseNode = props.globals.getNode("/ECAM/warning-phase", 1); var apWarn = props.globals.getNode("/it-autoflight/output/ap-warning", 1); var athrWarn = props.globals.getNode("/it-autoflight/output/athr-warning", 1); var emerGen = props.globals.getNode("/controls/electrical/switches/emer-gen", 1); @@ -46,7 +45,7 @@ var _SATval = nil; var ecamConfigTest = props.globals.initNode("/ECAM/to-config-test", 0, "BOOL"); var messages_priority_3 = func { - phaseVar3 = phaseNode.getValue(); + phaseVar3 = pts.ECAM.fwcWarningPhase.getValue(); # Stall # todo - altn law and emer cancel flipflops page 2440 @@ -1161,7 +1160,7 @@ var messages_priority_3 = func { } var messages_priority_2 = func { - phaseVar2 = phaseNode.getValue(); + phaseVar2 = pts.ECAM.fwcWarningPhase.getValue(); if ((phaseVar2 == 2 or phaseVar2 == 3 or phaseVar2 == 9) and warningNodes.Logic.thrLeversNotSet.getValue() and engThrustLvrNotSet.clearFlag == 0) { engThrustLvrNotSet.active = 1; @@ -3130,7 +3129,7 @@ var messages_priority_0 = func { } var messages_config_memo = func { - phaseVarMemo = phaseNode.getValue(); + phaseVarMemo = pts.ECAM.fwcWarningPhase.getValue(); if (pts.Controls.Flight.flapsInput.getValue() == 0 or pts.Controls.Flight.flapsInput.getValue() == 4 or pts.Controls.Flight.speedbrake.getValue() != 0 or getprop("/fdm/jsbsim/hydraulics/elevator-trim/final-deg") > 1.75 or getprop("/fdm/jsbsim/hydraulics/elevator-trim/final-deg") < -3.65 or getprop("/fdm/jsbsim/hydraulics/rudder/trim-cmd-deg") < -3.55 or getprop("/fdm/jsbsim/hydraulics/rudder/trim-cmd-deg") > 3.55) { setprop("/ECAM/to-config-normal", 0); } else { @@ -3296,7 +3295,7 @@ var messages_config_memo = func { } var messages_memo = func { - phaseVarMemo2 = phaseNode.getValue(); + phaseVarMemo2 = pts.ECAM.fwcWarningPhase.getValue(); if (getprop("/services/fuel-truck/enable") == 1 and toMemoLine1.active != 1 and ldgMemoLine1.active != 1) { refuelg.active = 1; } else { @@ -3399,7 +3398,7 @@ var messages_memo = func { } var messages_right_memo = func { - phaseVarMemo3 = phaseNode.getValue(); + phaseVarMemo3 = pts.ECAM.fwcWarningPhase.getValue(); if (FWC.Timer.toInhibitOutput.getValue() == 1) { to_inhibit.active = 1; } else { From e3c96deecc8152f7e6a64c6bb242eaef23deb7e1 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Tue, 6 Jul 2021 14:00:27 +0100 Subject: [PATCH 04/28] Begin splitting out base and pages --- Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 136 ++++++++++--------- 1 file changed, 74 insertions(+), 62 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index 106ee857..f64db03a 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -10,25 +10,77 @@ var du4_test_time = props.globals.initNode("/instrumentation/du/du4-test-time", var du4_test_amount = props.globals.initNode("/instrumentation/du/du4-test-amount", 0, "DOUBLE"); var du4_offtime = props.globals.initNode("/instrumentation/du/du4-off-time", 0.0, "DOUBLE"); -var canvas_lowerECAMPage = +var canvas_lowerECAM_base = { - new: func(svg) { - var obj = {parents: [canvas_lowerECAMPage] }; - obj.canvas = canvas.new({ + init: func() { + me.canvas = canvas.new({ "name": "lowerECAM", "size": [1024, 1024], "view": [1024, 1024], "mipmapping": 1 }); + me.canvas.addPlacement({"node": "lecam.screen"}); - obj.canvas.addPlacement({"node": "lecam.screen"}); - obj.group = obj.canvas.createGroup(); - obj.test = obj.canvas.createGroup(); - - obj.font_mapper = func(family, weight) { + me.font_mapper = func(family, weight) { return "LiberationFonts/LiberationSans-Regular.ttf"; }; + me.test = me.canvas.createGroup(); + + canvas.parsesvg(me.test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg", {"font-mapper": me.font_mapper} ); + foreach(var key; me.getKeysTest()) { + me[key] = me.test.getElementById(key); + }; + }, + getKeysTest: func() { + return ["Test_white","Test_text"]; + }, + powerTransient: func() { + if (systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_offtime.getValue() + 3 < pts.Sim.Time.elapsedSec.getValue()) { + if (pts.Gear.wow[0].getValue()) { + if (!acconfig.getBoolValue() and !du4_test.getBoolValue()) { + du4_test.setValue(1); + du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); + du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue()); + } else if (acconfig.getBoolValue() and !du4_test.getBoolValue()) { + du4_test.setValue(1); + du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); + du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue() - 30); + } + } else { + du4_test.setValue(1); + du4_test_amount.setValue(0); + du4_test_time.setValue(-100); + } + } + } else { + du4_test.setValue(0); + du4_offtime.setValue(pts.Sim.Time.elapsedSec.getValue()); + } + }, + # Due to weirdness of the parents hash / me reference + # you need to access it using me.Test_white rather than + # me["Test_white"] + updateTest: func(notification) { + if (du4_test_time.getValue() + 1 >= notification.elapsedTime) { + me.Test_white.show(); + me.Test_text.hide(); + } else { + me.Test_white.hide(); + me.Test_text.show(); + } + }, +}; + +canvas_lowerECAM_base.init(); + +var canvas_lowerECAMPage = +{ + new: func(svg) { + var obj = {parents: [canvas_lowerECAMPage,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); foreach(var key; obj.getKeys()) { @@ -39,11 +91,6 @@ var canvas_lowerECAMPage = obj[key] = obj.group.getElementById(key); }; - canvas.parsesvg(obj.test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg", {"font-mapper": obj.font_mapper} ); - foreach(var key; obj.getKeysTest()) { - obj[key] = obj.test.getElementById(key); - }; - obj.units = acconfig_weight_kgs.getValue(); # init @@ -236,9 +283,6 @@ var canvas_lowerECAMPage = getKeys: func() { return ["APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUBleedValveCrossBar","APUGenOnline","APUGenOff","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil","text3724","text3728","text3732"]; }, - getKeysTest: func() { - return ["Test_white","Test_text"]; - }, updateTemperatures: func() { if (dmc.DMController.DMCs[1].outputs[4] != nil) { me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); @@ -291,39 +335,6 @@ var canvas_lowerECAMPage = me.updateTemperatures(); }, - updateTest: func(notification) { - if (du4_test_time.getValue() + 1 >= notification.elapsedTime) { - me["Test_white"].show(); - me["Test_text"].hide(); - } else { - me["Test_white"].hide(); - me["Test_text"].show(); - } - }, - powerTransient: func() { - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - if (du4_offtime.getValue() + 3 < pts.Sim.Time.elapsedSec.getValue()) { - if (pts.Gear.wow[0].getValue()) { - if (!acconfig.getBoolValue() and !du4_test.getBoolValue()) { - du4_test.setValue(1); - du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); - du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue()); - } else if (acconfig.getBoolValue() and !du4_test.getBoolValue()) { - du4_test.setValue(1); - du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); - du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue() - 30); - } - } else { - du4_test.setValue(1); - du4_test_amount.setValue(0); - du4_test_time.setValue(-100); - } - } - } else { - du4_test.setValue(0); - du4_offtime.setValue(pts.Sim.Time.elapsedSec.getValue()); - } - }, updatePower: func() { if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { @@ -342,22 +353,20 @@ var canvas_lowerECAMPage = var SystemDisplayPageRecipient = { - new: func(_ident, page) + new: func(_ident) { var SDRecipient = emesary.Recipient.new(_ident); - SDRecipient.MainScreen = nil; - SDRecipient.Page = page; + SDRecipient.MainScreen = canvas_lowerECAM_base; + SDRecipient.Page = nil; SDRecipient.Receive = func(notification) { if (notification.NotificationType == "FrameNotification") { - if (SDRecipient.MainScreen == nil) { - SDRecipient.MainScreen = canvas_lowerECAMPage.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/" ~ SDRecipient.Page ~ ".svg"); + if (SDRecipient.Page == nil) { + SDRecipient.Page = SystemDisplayPageRecipient.pageList.apu; } if (math.mod(notifications.frameNotification.FrameCount,2) == 0) { - #if (ecam.SystemDisplayController.displayedPage.name == SDRecipient.Page) { - SDRecipient.MainScreen.update(notification); - #} + SDRecipient.Page.update(notification); } return emesary.Transmitter.ReceiptStatus_OK; } @@ -365,10 +374,13 @@ var SystemDisplayPageRecipient = }; return SDRecipient; }, + pageList: { + apu: canvas_lowerECAMPage.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg"), + }, }; -var A320SDAPU = SystemDisplayPageRecipient.new("A320 SD", "apu"); -emesary.GlobalTransmitter.Register(A320SDAPU); +var A320SD = SystemDisplayPageRecipient.new("A320 SD"); +emesary.GlobalTransmitter.Register(A320SD); var input = { @@ -400,9 +412,9 @@ var input = { }; foreach (var name; keys(input)) { - emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 Lower ECAM", name, input[name])); + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); } setlistener("/systems/electrical/bus/ac-2", func() { - if (A320SDAPU.MainScreen != nil) { A320SDAPU.MainScreen.powerTransient() } + A320SD.MainScreen.powerTransient(); }, 0, 0); \ No newline at end of file From a28b6bf89998234d2e2f347a6d5df93468c88d01 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Tue, 6 Jul 2021 20:07:18 +0100 Subject: [PATCH 05/28] Split Lower Ecam pages into different files --- A320-main.xml | 2 + .../Instruments/Lower-ECAM/Lower-ECAM-APU.nas | 309 +++++++++++++++ .../Lower-ECAM/Lower-ECAM-base.nas | 73 ++++ Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 374 +----------------- 4 files changed, 385 insertions(+), 373 deletions(-) create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-base.nas diff --git a/A320-main.xml b/A320-main.xml index 02cc8599..8daf31d3 100644 --- a/A320-main.xml +++ b/A320-main.xml @@ -4734,6 +4734,8 @@ Aircraft/A320-family/Nasal/emesary/exec.nas Aircraft/A320-family/Models/Instruments/Upper-ECAM/Upper-ECAM.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-base.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM.nas diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas new file mode 100644 index 00000000..cb4e9fe5 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas @@ -0,0 +1,309 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var apu_load = props.globals.initNode("/systems/electrical/extra/apu-load", 0, "DOUBLE"); +var gen1_load = props.globals.initNode("/systems/electrical/extra/gen1-load", 0, "DOUBLE"); +var gen2_load = props.globals.initNode("/systems/electrical/extra/gen2-load", 0, "DOUBLE"); + +var canvas_lowerECAMPageApu = +{ + new: func(svg) { + var obj = {parents: [canvas_lowerECAMPageApu,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + obj["APUGenOff"].hide(); + + obj.update_items = [ + props.UpdateManager.FromHashValue("apuFlap",1, func(val) { + if (val) { + obj["APUFlapOpen"].show(); + } else { + obj["APUFlapOpen"].hide(); + } + }), + props.UpdateManager.FromHashValue("apuNeedleRot",0.1, func(val) { + obj["APUN-needle"].setRotation((val + 90) * D2R); + }), + props.UpdateManager.FromHashValue("apuEgtRot",0.1, func(val) { + obj["APUEGT-needle"].setRotation((val + 90) * D2R); + }), + props.UpdateManager.FromHashValue("apuAvailable", nil, func(val) { + if (val) { + obj["APUAvail"].show(); + } else { + obj["APUAvail"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuRpm","apuEgt","apuMaster","apuGenPB"], nil, func(val) { + if (val.apuRpm > 0.001) { + obj["APUN"].setColor(0.0509,0.7529,0.2941); + obj["APUN"].setText(sprintf("%s", math.round(val.apuRpm))); + obj["APUN-needle"].show(); + obj["APUEGT"].setColor(0.0509,0.7529,0.2941); + obj["APUEGT"].setText(sprintf("%s", math.round(val.apuEgt, 5))); + obj["APUEGT-needle"].show(); + } else { + obj["APUN"].setColor(0.7333,0.3803,0); + obj["APUN"].setText(sprintf("%s", "XX")); + obj["APUN-needle"].hide(); + obj["APUEGT"].setColor(0.7333,0.3803,0); + obj["APUEGT"].setText(sprintf("%s", "XX")); + obj["APUEGT-needle"].hide(); + } + + if (val.apuMaster or val.apuRpm >= 94.9) { + obj["APUGenbox"].show(); + if (val.apuGenPB) { + obj["APUGenOff"].hide(); + obj["APUGentext"].setColor(0.8078,0.8039,0.8078); + obj["APUGenHz"].show(); + obj["APUGenVolt"].show(); + obj["APUGenLoad"].show(); + obj["text3724"].show(); + obj["text3728"].show(); + obj["text3732"].show(); + } else { + obj["APUGenOff"].show(); + obj["APUGentext"].setColor(0.7333,0.3803,0); + obj["APUGenHz"].hide(); + obj["APUGenVolt"].hide(); + obj["APUGenLoad"].hide(); + obj["text3724"].hide(); + obj["text3728"].hide(); + obj["text3732"].hide(); + } + } else { + obj["APUGentext"].setColor(0.8078,0.8039,0.8078); + obj["APUGenbox"].hide(); + obj["APUGenHz"].hide(); + obj["APUGenVolt"].hide(); + obj["APUGenLoad"].hide(); + obj["text3724"].hide(); + obj["text3728"].hide(); + obj["text3732"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuFuelPumpsOff","apuFuelPump"], nil, func(val) { + if (val.apuFuelPumpsOff and !val.apuFuelPump) { + obj["APUfuelLO"].show(); + } else { + obj["APUfuelLO"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuRpm","apuOilLevel","gear0Wow"], nil, func(val) { + if (val.apuRpm >= 94.9 and val.gear0Wow and val.apuOilLevel < 3.69) { + obj["APU-low-oil"].show(); + } else { + obj["APU-low-oil"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuAdr","apuPsi","apuRpm"], nil, func(val) { + if (val.apuAdr and val.apuRpm > 0.001) { + obj["APUBleedPSI"].setColor(0.0509,0.7529,0.2941); + obj["APUBleedPSI"].setText(sprintf("%s", math.round(val.apuPsi))); + } else { + obj["APUBleedPSI"].setColor(0.7333,0.3803,0); + obj["APUBleedPSI"].setText(sprintf("%s", "XX")); + } + }), + props.UpdateManager.FromHashValue("apuLoad", 0.1, func(val) { + obj["APUGenLoad"].setText(sprintf("%s", math.round(val))); + + if (val <= 100) { + obj["APUGenHz"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUGenHz"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("apuHertz", 1, func(val) { + obj["APUGenHz"].setText(sprintf("%s", math.round(val))); + + if (val >= 390 and val <= 410) { + obj["APUGenHz"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUGenHz"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("apuVolt", 0.1, func(val) { + obj["APUGenVolt"].setText(sprintf("%s", math.round(val))); + + if (val >= 110 and val <= 120) { + obj["APUGenVolt"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUGenVolt"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("apuGLC", nil, func(val) { + if (val) { + obj["APUGenOnline"].show(); + } else { + obj["APUGenOnline"].hide(); + } + }), + props.UpdateManager.FromHashList(["apuBleedValvePos","apuBleedValveCmd"], nil, func(val) { + if (val.apuBleedValvePos == 1) { + obj["APUBleedValve"].setRotation(90 * D2R); + obj["APUBleedOnline"].show(); + } else { + obj["APUBleedValve"].setRotation(0); + obj["APUBleedOnline"].hide(); + } + + if (val.apuBleedValveCmd == val.apuBleedValvePos) { + obj["APUBleedValveCrossBar"].setColor(0.0509,0.7529,0.2941); + obj["APUBleedValveCrossBar"].setColorFill(0.0509,0.7529,0.2941); + obj["APUBleedValve"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUBleedValveCrossBar"].setColor(0.7333,0.3803,0); + obj["APUBleedValveCrossBar"].setColorFill(0.7333,0.3803,0); + obj["APUBleedValve"].setColor(0.7333,0.3803,0); + } + }), + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return ["APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUBleedValveCrossBar","APUGenOnline","APUGenOff","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil","text3724","text3728","text3732"]; + }, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { + apuAdr: "/systems/navigation/adr/operating-1", + apuAvailable: "/systems/apu/available", + apuBleed: "/controls/pneumatics/switches/apu", + apuBleedValveCmd: "/systems/pneumatics/valves/apu-bleed-valve-cmd", + apuBleedValvePos: "/systems/pneumatics/valves/apu-bleed-valve", + apuEgt: "/systems/apu/egt-degC", + apuEgtRot: "/ECAM/Lower/APU-EGT", + apuGenPB: "/controls/electrical/switches/apu", + apuGLC: "/systems/electrical/relay/apu-glc/contact-pos", + apuFlap: "/controls/apu/inlet-flap/position-norm", + apuFuelPump: "/systems/fuel/pumps/apu-operate", + apuFuelPumpsOff: "/systems/fuel/pumps/all-eng-pump-off", + apuOilLevel: "/systems/apu/oil/level-l", + apuMaster: "/controls/apu/master", + apuNeedleRot: "/ECAM/Lower/APU-N", + apuRpm: "/engines/engine[2]/n1", + apuPsi: "/systems/pneumatics/source/apu-psi", + apuLoad: "/systems/electrical/extra/apu-load", + apuHertz: "/systems/electrical/sources/apu/output-hertz", + apuVolt: "/systems/electrical/sources/apu/output-volt", +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-base.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-base.nas new file mode 100644 index 00000000..fbde5c93 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-base.nas @@ -0,0 +1,73 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var du4_lgt = props.globals.getNode("/controls/lighting/DU/du4", 1); +var du4_test = props.globals.initNode("/instrumentation/du/du4-test", 0, "BOOL"); +var du4_test_time = props.globals.initNode("/instrumentation/du/du4-test-time", 0, "DOUBLE"); +var du4_test_amount = props.globals.initNode("/instrumentation/du/du4-test-amount", 0, "DOUBLE"); +var du4_offtime = props.globals.initNode("/instrumentation/du/du4-off-time", 0.0, "DOUBLE"); + +var canvas_lowerECAM_base = +{ + init: func() { + me.canvas = canvas.new({ + "name": "lowerECAM", + "size": [1024, 1024], + "view": [1024, 1024], + "mipmapping": 1 + }); + me.canvas.addPlacement({"node": "lecam.screen"}); + + me.font_mapper = func(family, weight) { + return "LiberationFonts/LiberationSans-Regular.ttf"; + }; + + me.test = me.canvas.createGroup(); + + canvas.parsesvg(me.test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg", {"font-mapper": me.font_mapper} ); + foreach(var key; me.getKeysTest()) { + me[key] = me.test.getElementById(key); + }; + }, + getKeysTest: func() { + return ["Test_white","Test_text"]; + }, + powerTransient: func() { + if (systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_offtime.getValue() + 3 < pts.Sim.Time.elapsedSec.getValue()) { + if (pts.Gear.wow[0].getValue()) { + if (!acconfig.getBoolValue() and !du4_test.getBoolValue()) { + du4_test.setValue(1); + du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); + du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue()); + } else if (acconfig.getBoolValue() and !du4_test.getBoolValue()) { + du4_test.setValue(1); + du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); + du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue() - 30); + } + } else { + du4_test.setValue(1); + du4_test_amount.setValue(0); + du4_test_time.setValue(-100); + } + } + } else { + du4_test.setValue(0); + du4_offtime.setValue(pts.Sim.Time.elapsedSec.getValue()); + } + }, + # Due to weirdness of the parents hash / me reference + # you need to access it using me.Test_white rather than + # me["Test_white"] + updateTest: func(notification) { + if (du4_test_time.getValue() + 1 >= notification.elapsedTime) { + me.Test_white.show(); + me.Test_text.hide(); + } else { + me.Test_white.hide(); + me.Test_text.show(); + } + }, +}; + +canvas_lowerECAM_base.init(); \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index f64db03a..12f2954a 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -1,356 +1,6 @@ # A3XX Lower ECAM Canvas # Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath -var du4_lgt = props.globals.getNode("/controls/lighting/DU/du4", 1); -var apu_load = props.globals.initNode("/systems/electrical/extra/apu-load", 0, "DOUBLE"); -var gen1_load = props.globals.initNode("/systems/electrical/extra/gen1-load", 0, "DOUBLE"); -var gen2_load = props.globals.initNode("/systems/electrical/extra/gen2-load", 0, "DOUBLE"); -var du4_test = props.globals.initNode("/instrumentation/du/du4-test", 0, "BOOL"); -var du4_test_time = props.globals.initNode("/instrumentation/du/du4-test-time", 0, "DOUBLE"); -var du4_test_amount = props.globals.initNode("/instrumentation/du/du4-test-amount", 0, "DOUBLE"); -var du4_offtime = props.globals.initNode("/instrumentation/du/du4-off-time", 0.0, "DOUBLE"); - -var canvas_lowerECAM_base = -{ - init: func() { - me.canvas = canvas.new({ - "name": "lowerECAM", - "size": [1024, 1024], - "view": [1024, 1024], - "mipmapping": 1 - }); - me.canvas.addPlacement({"node": "lecam.screen"}); - - me.font_mapper = func(family, weight) { - return "LiberationFonts/LiberationSans-Regular.ttf"; - }; - - me.test = me.canvas.createGroup(); - - canvas.parsesvg(me.test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg", {"font-mapper": me.font_mapper} ); - foreach(var key; me.getKeysTest()) { - me[key] = me.test.getElementById(key); - }; - }, - getKeysTest: func() { - return ["Test_white","Test_text"]; - }, - powerTransient: func() { - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - if (du4_offtime.getValue() + 3 < pts.Sim.Time.elapsedSec.getValue()) { - if (pts.Gear.wow[0].getValue()) { - if (!acconfig.getBoolValue() and !du4_test.getBoolValue()) { - du4_test.setValue(1); - du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); - du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue()); - } else if (acconfig.getBoolValue() and !du4_test.getBoolValue()) { - du4_test.setValue(1); - du4_test_amount.setValue(math.round((rand() * 5 ) + 35, 0.1)); - du4_test_time.setValue(pts.Sim.Time.elapsedSec.getValue() - 30); - } - } else { - du4_test.setValue(1); - du4_test_amount.setValue(0); - du4_test_time.setValue(-100); - } - } - } else { - du4_test.setValue(0); - du4_offtime.setValue(pts.Sim.Time.elapsedSec.getValue()); - } - }, - # Due to weirdness of the parents hash / me reference - # you need to access it using me.Test_white rather than - # me["Test_white"] - updateTest: func(notification) { - if (du4_test_time.getValue() + 1 >= notification.elapsedTime) { - me.Test_white.show(); - me.Test_text.hide(); - } else { - me.Test_white.hide(); - me.Test_text.show(); - } - }, -}; - -canvas_lowerECAM_base.init(); - -var canvas_lowerECAMPage = -{ - new: func(svg) { - var obj = {parents: [canvas_lowerECAMPage,canvas_lowerECAM_base] }; - obj.group = obj.canvas.createGroup(); - - canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); - - foreach(var key; obj.getKeys()) { - obj[key] = obj.group.getElementById(key); - }; - - foreach(var key; obj.getKeysBottom()) { - obj[key] = obj.group.getElementById(key); - }; - - obj.units = acconfig_weight_kgs.getValue(); - - # init - obj["APUGenOff"].hide(); - - obj.update_items = [ - props.UpdateManager.FromHashValue("apuFlap",1, func(val) { - if (val) { - obj["APUFlapOpen"].show(); - } else { - obj["APUFlapOpen"].hide(); - } - }), - props.UpdateManager.FromHashValue("apuNeedleRot",0.1, func(val) { - obj["APUN-needle"].setRotation((val + 90) * D2R); - }), - props.UpdateManager.FromHashValue("apuEgtRot",0.1, func(val) { - obj["APUEGT-needle"].setRotation((val + 90) * D2R); - }), - props.UpdateManager.FromHashValue("apuAvailable", nil, func(val) { - if (val) { - obj["APUAvail"].show(); - } else { - obj["APUAvail"].hide(); - } - }), - props.UpdateManager.FromHashList(["apuRpm","apuEgt","apuMaster","apuGenPB"], nil, func(val) { - if (val.apuRpm > 0.001) { - obj["APUN"].setColor(0.0509,0.7529,0.2941); - obj["APUN"].setText(sprintf("%s", math.round(val.apuRpm))); - obj["APUN-needle"].show(); - obj["APUEGT"].setColor(0.0509,0.7529,0.2941); - obj["APUEGT"].setText(sprintf("%s", math.round(val.apuEgt, 5))); - obj["APUEGT-needle"].show(); - } else { - obj["APUN"].setColor(0.7333,0.3803,0); - obj["APUN"].setText(sprintf("%s", "XX")); - obj["APUN-needle"].hide(); - obj["APUEGT"].setColor(0.7333,0.3803,0); - obj["APUEGT"].setText(sprintf("%s", "XX")); - obj["APUEGT-needle"].hide(); - } - - if (val.apuMaster or val.apuRpm >= 94.9) { - obj["APUGenbox"].show(); - if (val.apuGenPB) { - obj["APUGenOff"].hide(); - obj["APUGentext"].setColor(0.8078,0.8039,0.8078); - obj["APUGenHz"].show(); - obj["APUGenVolt"].show(); - obj["APUGenLoad"].show(); - obj["text3724"].show(); - obj["text3728"].show(); - obj["text3732"].show(); - } else { - obj["APUGenOff"].show(); - obj["APUGentext"].setColor(0.7333,0.3803,0); - obj["APUGenHz"].hide(); - obj["APUGenVolt"].hide(); - obj["APUGenLoad"].hide(); - obj["text3724"].hide(); - obj["text3728"].hide(); - obj["text3732"].hide(); - } - } else { - obj["APUGentext"].setColor(0.8078,0.8039,0.8078); - obj["APUGenbox"].hide(); - obj["APUGenHz"].hide(); - obj["APUGenVolt"].hide(); - obj["APUGenLoad"].hide(); - obj["text3724"].hide(); - obj["text3728"].hide(); - obj["text3732"].hide(); - } - }), - props.UpdateManager.FromHashList(["apuFuelPumpsOff","apuFuelPump"], nil, func(val) { - if (val.apuFuelPumpsOff and !val.apuFuelPump) { - obj["APUfuelLO"].show(); - } else { - obj["APUfuelLO"].hide(); - } - }), - props.UpdateManager.FromHashList(["apuRpm","apuOilLevel","gear0Wow"], nil, func(val) { - if (val.apuRpm >= 94.9 and val.gear0Wow and val.apuOilLevel < 3.69) { - obj["APU-low-oil"].show(); - } else { - obj["APU-low-oil"].hide(); - } - }), - props.UpdateManager.FromHashList(["apuAdr","apuPsi","apuRpm"], nil, func(val) { - if (val.apuAdr and val.apuRpm > 0.001) { - obj["APUBleedPSI"].setColor(0.0509,0.7529,0.2941); - obj["APUBleedPSI"].setText(sprintf("%s", math.round(val.apuPsi))); - } else { - obj["APUBleedPSI"].setColor(0.7333,0.3803,0); - obj["APUBleedPSI"].setText(sprintf("%s", "XX")); - } - }), - props.UpdateManager.FromHashValue("apuLoad", 0.1, func(val) { - obj["APUGenLoad"].setText(sprintf("%s", math.round(val))); - - if (val <= 100) { - obj["APUGenHz"].setColor(0.0509,0.7529,0.2941); - } else { - obj["APUGenHz"].setColor(0.7333,0.3803,0); - } - }), - props.UpdateManager.FromHashValue("apuHertz", 1, func(val) { - obj["APUGenHz"].setText(sprintf("%s", math.round(val))); - - if (val >= 390 and val <= 410) { - obj["APUGenHz"].setColor(0.0509,0.7529,0.2941); - } else { - obj["APUGenHz"].setColor(0.7333,0.3803,0); - } - }), - props.UpdateManager.FromHashValue("apuVolt", 0.1, func(val) { - obj["APUGenVolt"].setText(sprintf("%s", math.round(val))); - - if (val >= 110 and val <= 120) { - obj["APUGenVolt"].setColor(0.0509,0.7529,0.2941); - } else { - obj["APUGenVolt"].setColor(0.7333,0.3803,0); - } - }), - props.UpdateManager.FromHashValue("apuGLC", nil, func(val) { - if (val) { - obj["APUGenOnline"].show(); - } else { - obj["APUGenOnline"].hide(); - } - }), - props.UpdateManager.FromHashList(["apuBleedValvePos","apuBleedValveCmd"], nil, func(val) { - if (val.apuBleedValvePos == 1) { - obj["APUBleedValve"].setRotation(90 * D2R); - obj["APUBleedOnline"].show(); - } else { - obj["APUBleedValve"].setRotation(0); - obj["APUBleedOnline"].hide(); - } - - if (val.apuBleedValveCmd == val.apuBleedValvePos) { - obj["APUBleedValveCrossBar"].setColor(0.0509,0.7529,0.2941); - obj["APUBleedValveCrossBar"].setColorFill(0.0509,0.7529,0.2941); - obj["APUBleedValve"].setColor(0.0509,0.7529,0.2941); - } else { - obj["APUBleedValveCrossBar"].setColor(0.7333,0.3803,0); - obj["APUBleedValveCrossBar"].setColorFill(0.7333,0.3803,0); - obj["APUBleedValve"].setColor(0.7333,0.3803,0); - } - }), - ]; - - obj.displayedGForce = 0; - obj.updateItemsBottom = [ - props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { - obj.units = val; - if (val) { - obj["GW-weight-unit"].setText("KG"); - } else { - obj["GW-weight-unit"].setText("LBS"); - } - }), - props.UpdateManager.FromHashValue("hour", nil, func(val) { - obj["UTCh"].setText(sprintf("%02d", val)); - }), - props.UpdateManager.FromHashValue("minute", nil, func(val) { - obj["UTCm"].setText(sprintf("%02d", val)); - }), - props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { - if (obj.displayedGForce) { - obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); - } - }), - props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { - if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { - obj.displayedGForce = 1; - obj["GLoad"].show(); - } else { - obj.displayedGForce = 0; - obj["GLoad"].hide(); - } - }), - ]; - return obj; - }, - getKeysBottom: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; - }, - getKeys: func() { - return ["APUN-needle","APUEGT-needle","APUN","APUEGT","APUAvail","APUFlapOpen","APUBleedValve","APUBleedOnline","APUBleedValveCrossBar","APUGenOnline","APUGenOff","APUGentext","APUGenLoad","APUGenbox","APUGenVolt","APUGenHz","APUBleedPSI","APUfuelLO","APU-low-oil","text3724","text3728","text3732"]; - }, - updateTemperatures: func() { - if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); - me["SAT"].setColor(0.0509,0.7529,0.2941); - } else { - me["SAT"].setText(sprintf("%s", "XX")); - me["SAT"].setColor(0.7333,0.3803,0); - } - - if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); - me["TAT"].setColor(0.0509,0.7529,0.2941); - } else { - me["TAT"].setText(sprintf("%s", "XX")); - me["TAT"].setColor(0.7333,0.3803,0); - } - }, - update: func(notification) { - me.updatePower(); - - if (me.test.getVisible() == 1) { - me.updateTest(notification); - } - - if (me.group.getVisible() == 0) { - return; - } - - foreach(var update_item; me.update_items) - { - update_item.update(notification); - } - - foreach(var update_item_bottom; me.updateItemsBottom) - { - update_item_bottom.update(notification); - } - - if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { - if (me.units) { - me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); - } else { - me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); - } - me["GW"].setColor(0.0509,0.7529,0.2941); - } else { - me["GW"].setText(sprintf("%s", "-----")); - me["GW"].setColor(0.0901,0.6039,0.7176); - } - - me.updateTemperatures(); - }, - updatePower: func() { - if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { - if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { - me.group.setVisible(0); - me.test.setVisible(1); - } else { - me.group.setVisible(1); - me.test.setVisible(0); - } - } else { - me.group.setVisible(0); - me.test.setVisible(0); - } - }, -}; - var SystemDisplayPageRecipient = { new: func(_ident) @@ -375,36 +25,14 @@ var SystemDisplayPageRecipient = return SDRecipient; }, pageList: { - apu: canvas_lowerECAMPage.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg"), + apu: canvas_lowerECAMPageApu.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg"), }, }; var A320SD = SystemDisplayPageRecipient.new("A320 SD"); emesary.GlobalTransmitter.Register(A320SD); - var input = { - apuAdr: "/systems/navigation/adr/operating-1", - apuAvailable: "/systems/apu/available", - apuBleed: "/controls/pneumatics/switches/apu", - apuBleedValveCmd: "/systems/pneumatics/valves/apu-bleed-valve-cmd", - apuBleedValvePos: "/systems/pneumatics/valves/apu-bleed-valve", - apuEgt: "/systems/apu/egt-degC", - apuEgtRot: "/ECAM/Lower/APU-EGT", - apuGenPB: "/controls/electrical/switches/apu", - apuGLC: "/systems/electrical/relay/apu-glc/contact-pos", - apuFlap: "/controls/apu/inlet-flap/position-norm", - apuFuelPump: "/systems/fuel/pumps/apu-operate", - apuFuelPumpsOff: "/systems/fuel/pumps/all-eng-pump-off", - apuOilLevel: "/systems/apu/oil/level-l", - apuMaster: "/controls/apu/master", - apuNeedleRot: "/ECAM/Lower/APU-N", - apuRpm: "/engines/engine[2]/n1", - apuPsi: "/systems/pneumatics/source/apu-psi", - apuLoad: "/systems/electrical/extra/apu-load", - apuHertz: "/systems/electrical/sources/apu/output-hertz", - apuVolt: "/systems/electrical/sources/apu/output-volt", - gForce: "/accelerations/pilot-gdamped", gForceDisplay: "/ECAM/Lower/g-force-display", hour: "/sim/time/utc/hour", From 8ae0f00f69ef4361d25c65eb99df5768e7053293 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Thu, 8 Jul 2021 12:34:30 +0100 Subject: [PATCH 06/28] Add all pages and add switching mechanism --- A320-main.xml | 11 ++ .../Instruments/Lower-ECAM/Lower-ECAM-APU.nas | 18 ++- .../Lower-ECAM/Lower-ECAM-bleed.nas | 147 ++++++++++++++++++ .../Lower-ECAM/Lower-ECAM-cond.nas | 147 ++++++++++++++++++ .../Lower-ECAM/Lower-ECAM-door.nas | 147 ++++++++++++++++++ .../Lower-ECAM/Lower-ECAM-elec.nas | 147 ++++++++++++++++++ .../Instruments/Lower-ECAM/Lower-ECAM-eng.nas | 147 ++++++++++++++++++ .../Lower-ECAM/Lower-ECAM-fctl.nas | 147 ++++++++++++++++++ .../Lower-ECAM/Lower-ECAM-fuel.nas | 147 ++++++++++++++++++ .../Instruments/Lower-ECAM/Lower-ECAM-hyd.nas | 147 ++++++++++++++++++ .../Lower-ECAM/Lower-ECAM-press.nas | 147 ++++++++++++++++++ .../Instruments/Lower-ECAM/Lower-ECAM-sts.nas | 147 ++++++++++++++++++ .../Lower-ECAM/Lower-ECAM-wheel.nas | 147 ++++++++++++++++++ Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 28 +++- 14 files changed, 1665 insertions(+), 9 deletions(-) create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas diff --git a/A320-main.xml b/A320-main.xml index 8daf31d3..d503ce7c 100644 --- a/A320-main.xml +++ b/A320-main.xml @@ -4736,6 +4736,17 @@ Aircraft/A320-family/Models/Instruments/Upper-ECAM/Upper-ECAM.nas Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-base.nas Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM.nas diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas index cb4e9fe5..684725cb 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas @@ -7,9 +7,10 @@ var gen2_load = props.globals.initNode("/systems/electrical/extra/gen2-load", 0, var canvas_lowerECAMPageApu = { - new: func(svg) { + new: func(svg,name) { var obj = {parents: [canvas_lowerECAMPageApu,canvas_lowerECAM_base] }; obj.group = obj.canvas.createGroup(); + obj.name = name; canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); @@ -266,12 +267,17 @@ var canvas_lowerECAMPageApu = me.updateBottom(notification); }, updatePower: func() { - if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { - if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { - me.group.setVisible(0); - me.test.setVisible(1); + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } } else { - me.group.setVisible(1); + me.group.setVisible(0); me.test.setVisible(0); } } else { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas new file mode 100644 index 00000000..3bf4995f --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageBleed = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageBleed,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas new file mode 100644 index 00000000..8a0ef52c --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageCond = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageCond,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas new file mode 100644 index 00000000..33407b06 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageDoor = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageDoor,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas new file mode 100644 index 00000000..0ef42285 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageElec = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageElec,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas new file mode 100644 index 00000000..17d66c1c --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageEng = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageEng,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas new file mode 100644 index 00000000..7daf17d5 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageFctl = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageFctl,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas new file mode 100644 index 00000000..a0028d58 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageFuel = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageFuel,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas new file mode 100644 index 00000000..d19c0dce --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageHyd = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageHyd,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas new file mode 100644 index 00000000..e998aab7 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPagePress = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPagePress,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas new file mode 100644 index 00000000..87a0f883 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageSts = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageSts,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas new file mode 100644 index 00000000..50fc1d03 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageWheel = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageWheel,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index 12f2954a..819f043b 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -13,10 +13,21 @@ var SystemDisplayPageRecipient = if (notification.NotificationType == "FrameNotification") { if (SDRecipient.Page == nil) { - SDRecipient.Page = SystemDisplayPageRecipient.pageList.apu; + SDRecipient.Page = SystemDisplayPageRecipient.pageList.door; } if (math.mod(notifications.frameNotification.FrameCount,2) == 0) { - SDRecipient.Page.update(notification); + SystemDisplayPageRecipient.pageList.apu.update(notification); + SystemDisplayPageRecipient.pageList.bleed.update(notification); + SystemDisplayPageRecipient.pageList.cond.update(notification); + SystemDisplayPageRecipient.pageList.door.update(notification); + SystemDisplayPageRecipient.pageList.elec.update(notification); + SystemDisplayPageRecipient.pageList.eng.update(notification); + SystemDisplayPageRecipient.pageList.fctl.update(notification); + SystemDisplayPageRecipient.pageList.fuel.update(notification); + SystemDisplayPageRecipient.pageList.hyd.update(notification); + SystemDisplayPageRecipient.pageList.press.update(notification); + SystemDisplayPageRecipient.pageList.sts.update(notification); + SystemDisplayPageRecipient.pageList.wheel.update(notification); } return emesary.Transmitter.ReceiptStatus_OK; } @@ -25,7 +36,18 @@ var SystemDisplayPageRecipient = return SDRecipient; }, pageList: { - apu: canvas_lowerECAMPageApu.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg"), + apu: canvas_lowerECAMPageApu.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg","apu"), + bleed: canvas_lowerECAMPageBleed.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/bleed.svg","bleed"), + cond: canvas_lowerECAMPageCond.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/cond.svg","cond"), + door: canvas_lowerECAMPageDoor.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/door.svg","door"), + elec: canvas_lowerECAMPageElec.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/elec.svg","elec"), + eng: canvas_lowerECAMPageEng.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/eng.svg","eng"), + fctl: canvas_lowerECAMPageFctl.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fctl.svg","fctl"), + fuel: canvas_lowerECAMPageFuel.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fuel.svg","fuel"), + hyd: canvas_lowerECAMPageHyd.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/hyd.svg","hyd"), + press: canvas_lowerECAMPagePress.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/press.svg","press"), + sts: canvas_lowerECAMPageSts.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/status.svg","sts"), + wheel: canvas_lowerECAMPageWheel.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/wheel.svg","wheel") }, }; From 7194d2e691bfbfaf3dcf0e8376b06dd06a2c9455 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Thu, 8 Jul 2021 15:38:24 +0100 Subject: [PATCH 07/28] Add temperature plus sign, add cruise page --- A320-main.xml | 1 + .../Instruments/Lower-ECAM/Lower-ECAM-APU.nas | 4 +- .../Lower-ECAM/Lower-ECAM-bleed.nas | 4 +- .../Lower-ECAM/Lower-ECAM-cond.nas | 4 +- .../Lower-ECAM/Lower-ECAM-cruise.nas | 147 ++++++++++++++++++ .../Lower-ECAM/Lower-ECAM-door.nas | 4 +- .../Lower-ECAM/Lower-ECAM-elec.nas | 4 +- .../Instruments/Lower-ECAM/Lower-ECAM-eng.nas | 4 +- .../Lower-ECAM/Lower-ECAM-fctl.nas | 4 +- .../Lower-ECAM/Lower-ECAM-fuel.nas | 4 +- .../Instruments/Lower-ECAM/Lower-ECAM-hyd.nas | 4 +- .../Lower-ECAM/Lower-ECAM-press.nas | 4 +- .../Instruments/Lower-ECAM/Lower-ECAM-sts.nas | 4 +- .../Lower-ECAM/Lower-ECAM-wheel.nas | 4 +- Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 1 + 15 files changed, 173 insertions(+), 24 deletions(-) create mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas diff --git a/A320-main.xml b/A320-main.xml index d503ce7c..493ca69c 100644 --- a/A320-main.xml +++ b/A320-main.xml @@ -4738,6 +4738,7 @@ Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas + Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas Aircraft/A320-family/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas index 684725cb..6f07e897 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas @@ -233,7 +233,7 @@ var canvas_lowerECAMPageApu = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -241,7 +241,7 @@ var canvas_lowerECAMPageApu = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas index 3bf4995f..2ce9816b 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageBleed = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageBleed = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas index 8a0ef52c..b0e7edaf 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageCond = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageCond = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas new file mode 100644 index 00000000..b0aa10f2 --- /dev/null +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas @@ -0,0 +1,147 @@ +# A3XX Lower ECAM Canvas +# Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath + +var canvas_lowerECAMPageCruise = +{ + new: func(svg,name) { + var obj = {parents: [canvas_lowerECAMPageCruise,canvas_lowerECAM_base] }; + obj.group = obj.canvas.createGroup(); + obj.name = name; + + canvas.parsesvg(obj.group, svg, {"font-mapper": obj.font_mapper} ); + + foreach(var key; obj.getKeys()) { + obj[key] = obj.group.getElementById(key); + }; + + foreach(var key; obj.getKeysBottom()) { + obj[key] = obj.group.getElementById(key); + }; + + obj.units = acconfig_weight_kgs.getValue(); + + # init + + obj.update_items = [ + ]; + + obj.displayedGForce = 0; + obj.updateItemsBottom = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + obj.units = val; + if (val) { + obj["GW-weight-unit"].setText("KG"); + } else { + obj["GW-weight-unit"].setText("LBS"); + } + }), + props.UpdateManager.FromHashValue("hour", nil, func(val) { + obj["UTCh"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("minute", nil, func(val) { + obj["UTCm"].setText(sprintf("%02d", val)); + }), + props.UpdateManager.FromHashValue("gForce", 0.05, func(val) { + if (obj.displayedGForce) { + obj["GLoad"].setText("G.LOAD " ~ sprintf("%3.1f", val)); + } + }), + props.UpdateManager.FromHashValue("gForceDisplay", nil, func(val) { + if ((val == 1 and !obj.displayedGForce) or (val != 0 and obj.displayedGForce)) { + obj.displayedGForce = 1; + obj["GLoad"].show(); + } else { + obj.displayedGForce = 0; + obj["GLoad"].hide(); + } + }), + ]; + return obj; + }, + getKeysBottom: func() { + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; + }, + getKeys: func() { + return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", + "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", + "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + updateBottom: func(notification) { + foreach(var update_item_bottom; me.updateItemsBottom) + { + update_item_bottom.update(notification); + } + + if (fmgc.FMGCInternal.fuelRequest and fmgc.FMGCInternal.blockConfirmed and !fmgc.FMGCInternal.fuelCalculating and notification.FWCPhase != 1) { + if (me.units) { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000 * LBS2KGS, 100))); + } else { + me["GW"].setText(sprintf("%s", math.round(fmgc.FMGCInternal.fuelPredGw * 1000, 100))); + } + me["GW"].setColor(0.0509,0.7529,0.2941); + } else { + me["GW"].setText(sprintf("%s", "-----")); + me["GW"].setColor(0.0901,0.6039,0.7176); + } + + if (dmc.DMController.DMCs[1].outputs[4] != nil) { + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["SAT"].setText(sprintf("%s", "XX")); + me["SAT"].setColor(0.7333,0.3803,0); + } + + if (dmc.DMController.DMCs[1].outputs[5] != nil) { + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setColor(0.0509,0.7529,0.2941); + } else { + me["TAT"].setText(sprintf("%s", "XX")); + me["TAT"].setColor(0.7333,0.3803,0); + } + }, + update: func(notification) { + me.updatePower(); + + if (me.test.getVisible() == 1) { + me.updateTest(notification); + } + + if (me.group.getVisible() == 0) { + return; + } + + foreach(var update_item; me.update_items) + { + update_item.update(notification); + } + + me.updateBottom(notification); + }, + updatePower: func() { + if (me.name == ecam.SystemDisplayController.displayedPage.name) { + if (du4_lgt.getValue() > 0.01 and systems.ELEC.Bus.ac2.getValue() >= 110) { + if (du4_test_time.getValue() + du4_test_amount.getValue() >= pts.Sim.Time.elapsedSec.getValue()) { + me.group.setVisible(0); + me.test.setVisible(1); + } else { + me.group.setVisible(1); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + } else { + me.group.setVisible(0); + me.test.setVisible(0); + } + }, +}; + +var input = { +}; + +foreach (var name; keys(input)) { + emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); +} \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas index 33407b06..f01f9f09 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageDoor = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageDoor = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas index 0ef42285..c33f4446 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageElec = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageElec = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas index 17d66c1c..85a783d3 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageEng = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageEng = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas index 7daf17d5..c005d270 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageFctl = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageFctl = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas index a0028d58..ff97a04b 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageFuel = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageFuel = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas index d19c0dce..9c2ad593 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageHyd = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageHyd = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas index e998aab7..e9f692b5 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPagePress = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPagePress = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas index 87a0f883..7ca3bbff 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageSts = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageSts = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas index 50fc1d03..7cfe1a88 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas @@ -85,7 +85,7 @@ var canvas_lowerECAMPageWheel = } if (dmc.DMController.DMCs[1].outputs[4] != nil) { - me["SAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); + me["SAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[4].getValue())); me["SAT"].setColor(0.0509,0.7529,0.2941); } else { me["SAT"].setText(sprintf("%s", "XX")); @@ -93,7 +93,7 @@ var canvas_lowerECAMPageWheel = } if (dmc.DMController.DMCs[1].outputs[5] != nil) { - me["TAT"].setText(sprintf("%2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); + me["TAT"].setText(sprintf("%+2.0f", dmc.DMController.DMCs[1].outputs[5].getValue())); me["TAT"].setColor(0.0509,0.7529,0.2941); } else { me["TAT"].setText(sprintf("%s", "XX")); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index 819f043b..1a1aef57 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -39,6 +39,7 @@ var SystemDisplayPageRecipient = apu: canvas_lowerECAMPageApu.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg","apu"), bleed: canvas_lowerECAMPageBleed.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/bleed.svg","bleed"), cond: canvas_lowerECAMPageCond.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/cond.svg","cond"), + cruise: canvas_lowerECAMPageCruise.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/crz.svg","cruise"), door: canvas_lowerECAMPageDoor.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/door.svg","door"), elec: canvas_lowerECAMPageElec.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/elec.svg","elec"), eng: canvas_lowerECAMPageEng.new("Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/eng.svg","eng"), From 4073c0ca799ac8b816e18b2e2d083f1f1ead2c08 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Thu, 8 Jul 2021 16:27:43 +0100 Subject: [PATCH 08/28] Pressure page: make features work --- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 6 +- .../Lower-ECAM/Lower-ECAM-press.nas | 90 ++++++++++++++++++- Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 1 + Models/Instruments/Lower-ECAM/res/press.svg | 75 ++++------------ 4 files changed, 109 insertions(+), 63 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index 38a590c0..fc90f10a 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -169,8 +169,8 @@ var gear_door_L = props.globals.getNode("/systems/hydraulic/gear/door-left", 1); var gear_door_R = props.globals.getNode("/systems/hydraulic/gear/door-right", 1); var gear_door_N = props.globals.getNode("/systems/hydraulic/gear/door-nose", 1); var gear_down = props.globals.getNode("/controls/gear/gear-down", 1); -var press_vs_norm = props.globals.getNode("/systems/pressurization/vs-norm", 1); -var cabinalt = props.globals.getNode("/systems/pressurization/cabinalt-norm", 1); +var press_vs_norm = props.globals.getNode("", 1); +var cabinalt = props.globals.getNode("", 1); var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); # Create Nodes: @@ -2474,7 +2474,7 @@ var canvas_lowerECAM_press = { return m; }, getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit", "PRESS-Cab-VS", "PRESS-Cab-VS-neg", "PRESS-Cab-Alt"]; + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, update: func() { me["PRESS-Cab-VS"].setText(sprintf("%4.0f", press_vs_norm.getValue())); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas index e9f692b5..d89bbfe2 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas @@ -21,8 +21,83 @@ var canvas_lowerECAMPagePress = obj.units = acconfig_weight_kgs.getValue(); # init + obj["PRESS-Sys-2"].hide(); + obj["PRESS-Outlet-Transit-Failed"].hide(); + obj["PRESS-Inlet-Transit-Failed"].hide(); obj.update_items = [ + props.UpdateManager.FromHashValue("pressDelta", 0.05, func(val) { + if (val > 31.9) { + obj["PRESS-deltaP"].setText(sprintf("%2.1f", 31.9)); + } else if (val < -9.9) { + obj["PRESS-deltaP"].setText(sprintf("%2.1f", -9.9)); + } else { + obj["PRESS-deltaP"].setText(sprintf("%2.1f", val)); + } + + if (val < -0.4 or val > 8.5) { + obj["PRESS-deltaP"].setColor(0.7333,0.3803,0); + } else { + obj["PRESS-deltaP"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("pressVS", 25, func(val) { + if (val > 9950) { + obj["PRESS-Cab-VS"].setText(sprintf("%4.0f", 9950)); + } else if (val < -9950) { + obj["PRESS-Cab-VS"].setText(sprintf("%4.0f", -9950)); + } else { + obj["PRESS-Cab-VS"].setText(sprintf("%-4.0f", math.round(val,50))); + } + + if (abs(val) > 2000) { + obj["PRESS-Cab-VS"].setColor(0.7333,0.3803,0); + } else { + obj["PRESS-Cab-VS"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("pressAlt", 25, func(val) { + if (val > 32750) { + obj["PRESS-Cab-Alt"].setText(sprintf("%5.0f", 32750)); + } else if (val < -9950) { + obj["PRESS-Cab-Alt"].setText(sprintf("%5.0f", -9950)); + } else { + obj["PRESS-Cab-Alt"].setText(sprintf("%5.0f", math.round(val,50))); + } + + if (val > 9550) { + obj["PRESS-Cab-Alt"].setColor(1,0,0); + } else { + obj["PRESS-Cab-Alt"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("pressAuto", nil, func(val) { + if (val) { + obj["PRESS-Man"].hide(); + obj["PRESS-Sys-1"].show(); + } else { + obj["PRESS-Man"].show(); + obj["PRESS-Sys-1"].hide(); + } + }), + props.UpdateManager.FromHashValue("flowCtlValve1", 0.1, func(val) { + if (val == 0) { + obj["PRESS-Pack-1-Triangle"].setColor(0.7333,0.3803,0); + obj["PRESS-Pack-1"].setColor(0.7333,0.3803,0); + } else { + obj["PRESS-Pack-1-Triangle"].setColor(0.0509,0.7529,0.2941); + obj["PRESS-Pack-1"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashValue("flowCtlValve2", 0.1, func(val) { + if (val == 0) { + obj["PRESS-Pack-2-Triangle"].setColor(0.7333,0.3803,0); + obj["PRESS-Pack-2"].setColor(0.7333,0.3803,0); + } else { + obj["PRESS-Pack-2-Triangle"].setColor(0.0509,0.7529,0.2941); + obj["PRESS-Pack-2"].setColor(0.8078,0.8039,0.8078); + } + }), ]; obj.displayedGForce = 0; @@ -62,10 +137,10 @@ var canvas_lowerECAMPagePress = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return["PRESS-Cab-VS", "PRESS-Cab-VS-neg", "PRESS-Cab-Alt", "PRESS-deltaP", "PRESS-LDG-Elev", "PRESS-deltaP-needle", "PRESS-VS-needle", "PRESS-Alt-needle", + "PRESS-Man", "PRESS-Sys-1", "PRESS-Sys-2", "PRESS-Outlet-Transit-Failed", "PRESS-Inlet-Transit-Failed", "PRESS-LDG-Elev-mode","PRESS-Pack-1-Triangle","PRESS-Pack-2-Triangle", + "PRESS-Pack-1","PRESS-Pack-2"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { @@ -140,6 +215,13 @@ var canvas_lowerECAMPagePress = }; var input = { + pressAlt: "/systems/pressurization/cabinalt-norm", + pressAuto: "/systems/pressurization/auto", + pressDelta: "/systems/pressurization/deltap-norm", + pressVS: "/systems/pressurization/vs-norm", + + flowCtlValve1: "/systems/air-conditioning/valves/flow-control-valve-1", + flowCtlValve2: "/systems/air-conditioning/valves/flow-control-valve-2", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index 1a1aef57..625f3283 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -19,6 +19,7 @@ var SystemDisplayPageRecipient = SystemDisplayPageRecipient.pageList.apu.update(notification); SystemDisplayPageRecipient.pageList.bleed.update(notification); SystemDisplayPageRecipient.pageList.cond.update(notification); + SystemDisplayPageRecipient.pageList.cruise.update(notification); SystemDisplayPageRecipient.pageList.door.update(notification); SystemDisplayPageRecipient.pageList.elec.update(notification); SystemDisplayPageRecipient.pageList.eng.update(notification); diff --git a/Models/Instruments/Lower-ECAM/res/press.svg b/Models/Instruments/Lower-ECAM/res/press.svg index e2329db1..92a6e964 100644 --- a/Models/Instruments/Lower-ECAM/res/press.svg +++ b/Models/Instruments/Lower-ECAM/res/press.svg @@ -12,7 +12,7 @@ viewBox="0 0 1024 1024" version="1.1" id="svg2" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" + inkscape:version="0.92.4 (5da689c313, 2019-01-14)" sodipodi:docname="press.svg"> @@ -41,9 +41,9 @@ inkscape:window-height="705" id="namedview371" showgrid="true" - inkscape:zoom="0.88" - inkscape:cx="397.64824" - inkscape:cy="880.3857" + inkscape:zoom="0.64" + inkscape:cx="770.48025" + inkscape:cy="620.45739" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -467,7 +467,7 @@ style="font-size:32.18700027px;line-height:0">SYS2 MAN + style="font-size:32.18700027px;line-height:0;fill:#0dc04b;fill-opacity:1;">MAN PACK 1 + style="font-size:34.92427444px;line-height:1.25;fill:#cecdce;fill-opacity:1;stroke-width:0.87310684;">PACK 1 PACK 2 + style="font-size:34.92399979px;line-height:1.25;fill:#cecdce;fill-opacity:1;">PACK 2 + id="PRESS-Pack-1-Triangle" + inkscape:connector-curvature="0" + inkscape:label="#path5062" /> + id="PRESS-Pack-2-Triangle" + inkscape:connector-curvature="0" + inkscape:label="#path5062-3" /> - - 0 - . - 1 00 - Date: Thu, 8 Jul 2021 17:19:27 +0100 Subject: [PATCH 09/28] COND / PRESS pages completed; fix bug in system display controller --- .../Instruments/Lower-ECAM/Lower-ECAM-APU.nas | 2 +- .../Lower-ECAM/Lower-ECAM-bleed.nas | 2 +- .../Lower-ECAM/Lower-ECAM-cond.nas | 72 +++++++++++++-- .../Lower-ECAM/Lower-ECAM-cruise.nas | 2 +- .../Lower-ECAM/Lower-ECAM-door.nas | 2 +- .../Lower-ECAM/Lower-ECAM-elec.nas | 2 +- .../Instruments/Lower-ECAM/Lower-ECAM-eng.nas | 2 +- .../Lower-ECAM/Lower-ECAM-fctl.nas | 2 +- .../Lower-ECAM/Lower-ECAM-fuel.nas | 2 +- .../Instruments/Lower-ECAM/Lower-ECAM-hyd.nas | 2 +- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 89 ------------------- .../Lower-ECAM/Lower-ECAM-press.nas | 6 +- .../Instruments/Lower-ECAM/Lower-ECAM-sts.nas | 2 +- .../Lower-ECAM/Lower-ECAM-wheel.nas | 2 +- Models/Instruments/Lower-ECAM/Lower-ECAM.nas | 5 ++ Models/Instruments/Lower-ECAM/res/cond.svg | 13 +-- Nasal/ECAM/SystemDisplay.nas | 1 + 17 files changed, 94 insertions(+), 114 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas index 6f07e897..b45a809b 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas @@ -282,7 +282,7 @@ var canvas_lowerECAMPageApu = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas index 2ce9816b..61f8a7f1 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageBleed = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas index b0e7edaf..74b0732a 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-cond.nas @@ -21,8 +21,59 @@ var canvas_lowerECAMPageCond = obj.units = acconfig_weight_kgs.getValue(); # init + obj["CONDFanFwdFault"].hide(); + obj["CONDFanAftFault"].hide(); + + # aft cargo ventilation disabled + obj["CargoCond"].hide(); obj.update_items = [ + props.UpdateManager.FromHashValue("condDuctTempCockpit", 0.5, func(val) { + obj["CONDDuctTempCKPT"].setText(sprintf("%2.0f",val)); + }), + props.UpdateManager.FromHashValue("condDuctTempAft", 0.5, func(val) { + obj["CONDDuctTempAFT"].setText(sprintf("%2.0f",val)); + }), + props.UpdateManager.FromHashValue("condDuctTempFwd", 0.5, func(val) { + obj["CONDDuctTempFWD"].setText(sprintf("%2.0f",val)); + }), + props.UpdateManager.FromHashValue("condTempCockpit", 0.5, func(val) { + obj["CONDTempCKPT"].setText(sprintf("%2.0f",val)); + }), + props.UpdateManager.FromHashValue("condTempAft", 0.5, func(val) { + obj["CONDTempAFT"].setText(sprintf("%2.0f",val)); + }), + props.UpdateManager.FromHashValue("condTempFwd", 0.5, func(val) { + obj["CONDTempFWD"].setText(sprintf("%2.0f",val)); + }), + props.UpdateManager.FromHashValue("condTrimCockpit", 0.01, func(val) { + obj["CONDTrimValveCKPT"].setRotation(val * D2R); + }), + props.UpdateManager.FromHashValue("condTrimAft", 0.01, func(val) { + obj["CONDTrimValveAFT"].setRotation(val * D2R); + }), + props.UpdateManager.FromHashValue("condTrimFwd", 0.01, func(val) { + obj["CONDTrimValveFWD"].setRotation(val * D2R); + }), + props.UpdateManager.FromHashList(["condHotAirSwitch","condHotAirValve","condHotAirCmd"], nil, func(val) { + if (!val.condHotAirSwitch or (val.condHotAirCmd == 1 and val.condHotAirValve == 0)) { + obj["CONDHotAirValve"].setRotation(90 * D2R); + obj["CONDHotAirValve"].setColor(0.7333,0.3803,0); + obj["CONDHotAirValveCross"].setColorFill(0.7333,0.3803,0); + } elsif (val.condHotAirCmd == 0 and val.condHotAirValve == 0) { + obj["CONDHotAirValve"].setRotation(90 * D2R); + obj["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941); + obj["CONDHotAirValveCross"].setColorFill(0.0509,0.7529,0.2941); + } elsif (val.condHotAirCmd == 0 and val.condHotAirValve != 0) { + obj["CONDHotAirValve"].setRotation(0); + obj["CONDHotAirValve"].setColor(0.7333,0.3803,0); + obj["CONDHotAirValveCross"].setColorFill(0.7333,0.3803,0); + } else { + obj["CONDHotAirValve"].setRotation(0); + obj["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941); + obj["CONDHotAirValveCross"].setColorFill(0.0509,0.7529,0.2941); + } + }), ]; obj.displayedGForce = 0; @@ -62,10 +113,9 @@ var canvas_lowerECAMPageCond = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return["CargoCond","CONDHotAirValve","CONDFanFwdFault","CONDFanAftFault","CONDTrimValveCKPT","CONDTrimValveAFT","CONDTrimValveFWD","CONDDuctTempCKPT", + "CONDDuctTempAFT","CONDDuctTempFWD","CONDTempCKPT","CONDTempAFT","CONDTempFWD","CONDHotAirValveCross"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { @@ -134,12 +184,24 @@ var canvas_lowerECAMPageCond = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; var input = { + condDuctTempCockpit: "/systems/air-conditioning/temperatures/cockpit-duct", + condDuctTempAft: "/systems/air-conditioning/temperatures/cabin-aft-duct", + condDuctTempFwd: "/systems/air-conditioning/temperatures/cabin-fwd-duct", + condTempCockpit: "/systems/air-conditioning/temperatures/cockpit-temp", + condTempAft: "/systems/air-conditioning/temperatures/cabin-aft-temp", + condTempFwd: "/systems/air-conditioning/temperatures/cabin-fwd-temp", + condTrimCockpit: "/ECAM/Lower/trim-cockpit-output", + condTrimAft: "/ECAM/Lower/trim-aft-output", + condTrimFwd: "/ECAM/Lower/trim-fwd-output", + condHotAirCmd: "/systems/air-conditioning/valves/hot-air-cmd", + condHotAirSwitch: "/controls/pneumatics/switches/hot-air", + condHotAirValve: "/systems/air-conditioning/valves/hot-air" }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas index b0aa10f2..5548d196 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageCruise = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas index f01f9f09..acaa3f50 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageDoor = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas index c33f4446..c6f4a8b6 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageElec = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas index 85a783d3..76de7471 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageEng = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas index c005d270..e29125f1 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageFctl = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas index ff97a04b..ea3ca35b 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageFuel = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas index 9c2ad593..f9673996 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageHyd = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index fc90f10a..b181dfbf 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -800,55 +800,6 @@ var canvas_lowerECAM_bleed = { }, }; -var canvas_lowerECAM_cond = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_cond, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","CargoCond","CONDHotAirValve","CONDFanFwdFault","CONDFanAftFault", - "CONDTrimValveCKPT","CONDTrimValveAFT","CONDTrimValveFWD","CONDDuctTempCKPT","CONDDuctTempAFT","CONDDuctTempFWD","CONDTempCKPT","CONDTempAFT","CONDTempFWD"]; - }, - update: func() { - if (systems.PNEU.Valves.hotAir.getValue() == 0) { - me["CONDHotAirValve"].setRotation(90 * D2R); - if (systems.PNEU.Switch.hotAir.getBoolValue()) { - me["CONDHotAirValve"].setColor(0.7333,0.3803,0); - } else { - me["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["CONDHotAirValve"].setRotation(0); # doesn't show rotation in transit - if (systems.PNEU.Switch.hotAir.getBoolValue()) { - me["CONDHotAirValve"].setColor(0.0509,0.7529,0.2941); - } else { - me["CONDHotAirValve"].setColor(0.7333,0.3803,0); - } - } - - me["CONDTrimValveCKPT"].setRotation(systems.PNEU.Packs.trimCockpit.getValue() * D2R); - me["CONDTrimValveAFT"].setRotation(systems.PNEU.Packs.trimAft.getValue() * D2R); - me["CONDTrimValveFWD"].setRotation(systems.PNEU.Packs.trimFwd.getValue() * D2R); - - me["CONDDuctTempCKPT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cockpitDuctTemp.getValue()))); - me["CONDDuctTempAFT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinAftDuctTemp.getValue()))); - me["CONDDuctTempFWD"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinFwdDuctTemp.getValue()))); - - me["CONDTempCKPT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cockpitTemp.getValue()))); - me["CONDTempAFT"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinAftTemp.getValue()))); - me["CONDTempFWD"].setText(sprintf("%2.0f",math.round(systems.PNEU.Packs.cabinFwdTemp.getValue()))); - - # fans faults not implemented - me["CONDFanFwdFault"].hide(); - me["CONDFanAftFault"].hide(); - - # aft cargo ventilation disabled - me["CargoCond"].hide(); - me.updateBottomStatus(); - }, -}; var canvas_lowerECAM_crz = { new: func(canvas_group, file) { @@ -2466,41 +2417,6 @@ var canvas_lowerECAM_fuel = { }, }; -var canvas_lowerECAM_press = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_press, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; - }, - update: func() { - me["PRESS-Cab-VS"].setText(sprintf("%4.0f", press_vs_norm.getValue())); - me["PRESS-Cab-Alt"].setText(sprintf("%4.0f", cabinalt.getValue())); - - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_status = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_status, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; - }, - update: func() { - - me.updateBottomStatus(); - }, -}; - var canvas_lowerECAM_hyd = { new: func(canvas_group, file) { var m = {parents: [canvas_lowerECAM_hyd, canvas_lowerECAM_base]}; @@ -3401,11 +3317,6 @@ var lowerECAM_update = maketimer(0.05, func { canvas_lowerECAM_base.update(); }); -var showLowerECAM = func { - var dlg = canvas.Window.new([512, 512], "dialog").set("resize", 1); - dlg.setCanvas(lowerECAM_display); -} - setlistener("/systems/electrical/bus/ac-2", func() { canvas_lowerECAM_base.updateDu4(); }, 0, 0); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas index d89bbfe2..5dceb154 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas @@ -80,7 +80,7 @@ var canvas_lowerECAMPagePress = obj["PRESS-Sys-1"].hide(); } }), - props.UpdateManager.FromHashValue("flowCtlValve1", 0.1, func(val) { + props.UpdateManager.FromHashValue("flowCtlValve1", nil, func(val) { if (val == 0) { obj["PRESS-Pack-1-Triangle"].setColor(0.7333,0.3803,0); obj["PRESS-Pack-1"].setColor(0.7333,0.3803,0); @@ -89,7 +89,7 @@ var canvas_lowerECAMPagePress = obj["PRESS-Pack-1"].setColor(0.8078,0.8039,0.8078); } }), - props.UpdateManager.FromHashValue("flowCtlValve2", 0.1, func(val) { + props.UpdateManager.FromHashValue("flowCtlValve2", nil, func(val) { if (val == 0) { obj["PRESS-Pack-2-Triangle"].setColor(0.7333,0.3803,0); obj["PRESS-Pack-2"].setColor(0.7333,0.3803,0); @@ -209,7 +209,7 @@ var canvas_lowerECAMPagePress = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas index 7ca3bbff..009176d4 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-sts.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageSts = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas index 7cfe1a88..87332924 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas @@ -134,7 +134,7 @@ var canvas_lowerECAMPageWheel = } } else { me.group.setVisible(0); - me.test.setVisible(0); + # don't hide the test group; just let whichever page is active control it } }, }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas index 625f3283..02c0bc3f 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM.nas @@ -67,6 +67,11 @@ foreach (var name; keys(input)) { emesary.GlobalTransmitter.NotifyAll(notifications.FrameNotificationAddProperty.new("A320 System Display", name, input[name])); } +var showLowerECAM = func { + var dlg = canvas.Window.new([512, 512], "dialog").set("resize", 1); + dlg.setCanvas(canvas_lowerECAM_base.canvas); +} + setlistener("/systems/electrical/bus/ac-2", func() { A320SD.MainScreen.powerTransient(); }, 0, 0); \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/res/cond.svg b/Models/Instruments/Lower-ECAM/res/cond.svg index c8319978..20918f92 100644 --- a/Models/Instruments/Lower-ECAM/res/cond.svg +++ b/Models/Instruments/Lower-ECAM/res/cond.svg @@ -41,9 +41,9 @@ inkscape:window-height="705" id="namedview371" showgrid="false" - inkscape:zoom="163.84" - inkscape:cx="931.44175" - inkscape:cy="894.81836" + inkscape:zoom="0.64" + inkscape:cx="695.07573" + inkscape:cy="944.3933" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -116,8 +116,9 @@ x="817.61298" height="5.1203089" width="53.195583" - id="rect5105-2" - style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + id="CONDHotAirValveCross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2" /> 00 - Date: Thu, 8 Jul 2021 17:29:04 +0100 Subject: [PATCH 10/28] PRESS: pack indicator dependso n engines running --- Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas index 5dceb154..89d8f3ff 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-press.nas @@ -80,8 +80,8 @@ var canvas_lowerECAMPagePress = obj["PRESS-Sys-1"].hide(); } }), - props.UpdateManager.FromHashValue("flowCtlValve1", nil, func(val) { - if (val == 0) { + props.UpdateManager.FromHashList(["flowCtlValve1","engine1State"], nil, func(val) { + if (val.flowCtlValve1 == 0 and val.engine1State == 3) { obj["PRESS-Pack-1-Triangle"].setColor(0.7333,0.3803,0); obj["PRESS-Pack-1"].setColor(0.7333,0.3803,0); } else { @@ -89,8 +89,8 @@ var canvas_lowerECAMPagePress = obj["PRESS-Pack-1"].setColor(0.8078,0.8039,0.8078); } }), - props.UpdateManager.FromHashValue("flowCtlValve2", nil, func(val) { - if (val == 0) { + props.UpdateManager.FromHashList(["flowCtlValve2","engine2State"], nil, func(val) { + if (val.flowCtlValve2 == 0 and val.engine2State == 3) { obj["PRESS-Pack-2-Triangle"].setColor(0.7333,0.3803,0); obj["PRESS-Pack-2"].setColor(0.7333,0.3803,0); } else { From 8f1f93b14278f4ff93580e98dcb61b117690ffd9 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sat, 10 Jul 2021 22:33:33 +0100 Subject: [PATCH 11/28] ENG page --- .../Instruments/Lower-ECAM/Lower-ECAM-eng.nas | 119 ++++++++++- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 46 +--- Models/Instruments/Lower-ECAM/res/eng.svg | 196 ++++++++++++++---- Nasal/Libraries/property-tree-setup.nas | 1 + 4 files changed, 276 insertions(+), 86 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas index 76de7471..c00d7e5e 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-eng.nas @@ -1,6 +1,11 @@ # A3XX Lower ECAM Canvas # Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath +var fuel_used_lbs1 = props.globals.getNode("/systems/fuel/fuel-used-1", 1); +var fuel_used_lbs2 = props.globals.getNode("/systems/fuel/fuel-used-2", 1); + +var QT2LTR = 0.946353; + var canvas_lowerECAMPageEng = { new: func(svg,name) { @@ -21,8 +26,108 @@ var canvas_lowerECAMPageEng = obj.units = acconfig_weight_kgs.getValue(); # init + obj["FUEL-clog-1"].hide(); + obj["FUEL-clog-2"].hide(); + obj["OIL-clog-1"].hide(); + obj["OIL-clog-2"].hide(); + + obj.quantity = [nil, nil]; obj.update_items = [ + props.UpdateManager.FromHashValue("engOilQt1", 0.005, func(val) { + if (obj.units) { + obj.quantity[0] = sprintf("%2.1f",(0.1 * math.round(val * QT2LTR * 10,5))); + obj["OilQT1"].setText(sprintf("%s", left(obj.quantity[0], (size(obj.quantity[0]) == 4 ? 2 : 1)))); + obj["OilQT1-decimal"].setText(sprintf("%s", right(obj.quantity[0],1))); + obj["OilQT1-needle"].setRotation(((val * QT2LTR) + 90) * D2R); + } else { + obj.quantity[0] = sprintf("%2.1f",(0.1 * math.round(val * 10,5))); + obj["OilQT1"].setText(sprintf("%s", left(obj.quantity[0], (size(obj.quantity[0]) == 4 ? 2 : 1)))); + obj["OilQT1-decimal"].setText(sprintf("%s", right(obj.quantity[0],1))); + obj["OilQT1-needle"].setRotation((val + 90) * D2R); + } + }), + props.UpdateManager.FromHashValue("engOilQt2", 0.005, func(val) { + if (obj.units) { + obj.quantity[1] = sprintf("%2.1f",(0.1 * math.round(val * QT2LTR * 10,5))); + obj["OilQT2"].setText(sprintf("%s", left(obj.quantity[1], (size(obj.quantity[1]) == 4 ? 2 : 1)))); + obj["OilQT2-decimal"].setText(sprintf("%s", right(obj.quantity[1],1))); + obj["OilQT2-needle"].setRotation(((val * QT2LTR) + 90) * D2R); + } else { + obj.quantity[1] = sprintf("%2.1f",(0.1 * math.round(val * 10,5))); + obj["OilQT2"].setText(sprintf("%s", left(obj.quantity[1], (size(obj.quantity[1]) == 4 ? 2 : 1)))); + obj["OilQT2-decimal"].setText(sprintf("%s", right(obj.quantity[1],1))); + obj["OilQT2-needle"].setRotation((val + 90) * D2R); + } + }), + props.UpdateManager.FromHashValue("engOilPsi1", 0.25, func(val) { + if (val >= 13) { + obj["OilPSI1"].setColor(0.0509,0.7529,0.2941); + obj["OilPSI1-needle"].setColor(0.0509,0.7529,0.2941); + } else { + obj["OilPSI1"].setColor(1,0,0); + obj["OilPSI1-needle"].setColor(1,0,0); + } + + obj["OilPSI1"].setText(sprintf("%s", math.round(val))); + obj["OilPSI1-needle"].setRotation((val + 90) * D2R); + }), + props.UpdateManager.FromHashValue("engOilPsi2", 0.25, func(val) { + if (val >= 13) { + obj["OilPSI2"].setColor(0.0509,0.7529,0.2941); + obj["OilPSI2-needle"].setColor(0.0509,0.7529,0.2941); + } else { + obj["OilPSI2"].setColor(1,0,0); + obj["OilPSI2-needle"].setColor(1,0,0); + } + + obj["OilPSI2"].setText(sprintf("%s", math.round(val))); + obj["OilPSI2-needle"].setRotation((val + 90) * D2R); + }), + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + if (val) { + obj["Fused-weight-unit"].setText("KG"); + obj["Fused-oil-unit"].setText("LTR"); + # immediately update parameters + obj.quantity[0] = sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[0].getValue() * QT2LTR * 10,5))); + obj["OilQT1"].setText(sprintf("%s", left(obj.quantity[0], (size(obj.quantity[0]) == 4 ? 2 : 1)))); + obj["OilQT1-decimal"].setText(sprintf("%s", right(obj.quantity[0],1))); + obj["OilQT1-needle"].setRotation(((pts.Engines.Engine.oilQt[0].getValue() * QT2LTR) + 90) * D2R); + obj.quantity[1] = sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[1].getValue() * QT2LTR * 10,5))); + obj["OilQT2"].setText(sprintf("%s", left(obj.quantity[1], (size(obj.quantity[1]) == 4 ? 2 : 1)))); + obj["OilQT2-decimal"].setText(sprintf("%s", right(obj.quantity[1],1))); + obj["OilQT2-needle"].setRotation(((pts.Engines.Engine.oilQt[1].getValue() * QT2LTR) + 90) * D2R); + obj["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); + obj["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); + } else { + obj["Fused-weight-unit"].setText("LBS"); + obj["Fused-oil-unit"].setText("QT"); + obj.quantity[0] = sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[0].getValue() * 10,5))); + obj["OilQT1"].setText(sprintf("%s", left(obj.quantity[0], (size(obj.quantity[0]) == 4 ? 2 : 1)))); + obj["OilQT1-decimal"].setText(sprintf("%s", right(obj.quantity[0],1))); + obj["OilQT1-needle"].setRotation((pts.Engines.Engine.oilQt[0].getValue() + 90) * D2R); + obj.quantity[1] = sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[1].getValue() * 10,5))); + obj["OilQT2"].setText(sprintf("%s", left(obj.quantity[1], (size(obj.quantity[1]) == 4 ? 2 : 1)))); + obj["OilQT2-decimal"].setText(sprintf("%s", right(obj.quantity[1],1))); + obj["OilQT2-needle"].setRotation((pts.Engines.Engine.oilQt[1].getValue() + 90) * D2R); + obj["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); + obj["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); + } + }), + props.UpdateManager.FromHashValue("engFuelUsed1", 1, func(val) { + if (obj.units) { + obj["FUEL-used-1"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUEL-used-1"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashValue("engFuelUsed2", 1, func(val) { + if (obj.units) { + obj["FUEL-used-2"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUEL-used-2"].setText(sprintf("%s", math.round(val, 10))); + } + }), ]; obj.displayedGForce = 0; @@ -62,10 +167,10 @@ var canvas_lowerECAMPageEng = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return["OilQT1-needle","OilQT2-needle","OilQT1","OilQT2","OilQT1-decimal","OilQT2-decimal","OilPSI1-needle","OilPSI2-needle","OilPSI1","OilPSI2", + "FUEL-used-1","FUEL-used-2", "Fused-weight-unit","Fused-oil-unit","FUEL-clog-1","FUEL-clog-2","OIL-clog-1","OIL-clog-2","OilTemp1","OilTemp2", + "VIB-N1-1","VIB-N1-2","VIB-N2-1","VIB-N2-2"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { @@ -140,6 +245,12 @@ var canvas_lowerECAMPageEng = }; var input = { + engFuelUsed1: "/systems/fuel/fuel-used-1", + engFuelUsed2: "/systems/fuel/fuel-used-2", + engOilQt1: "/engines/engine[0]/oil-qt-actual", + engOilQt2: "/engines/engine[1]/oil-qt-actual", + engOilPsi1: "/engines/engine[0]/oil-psi-actual", + engOilPsi2: "/engines/engine[1]/oil-psi-actual", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index b181dfbf..7abf7bd7 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -46,9 +46,6 @@ var hp_valve_state = 0; var xbleedcmdstate = 0; var ramAirState = 0; -# Conversion factor pounds to kilogram -LBS2KGS = 0.4535924; - # Fetch Nodes var acconfig_weight_kgs = props.globals.getNode("/systems/acconfig/options/weight-kgs", 1); var rate = props.globals.getNode("/systems/acconfig/options/lecam-rate", 1); @@ -105,10 +102,9 @@ var gs_kt = props.globals.getNode("/velocities/groundspeed-kt", 1); var switch_wing_aice = props.globals.getNode("/controls/ice-protection/wing", 1); var pack1_bypass = props.globals.getNode("/systems/pneumatics/pack-1-bypass", 1); var pack2_bypass = props.globals.getNode("/systems/pneumatics/pack-2-bypass", 1); -var oil_qt1_actual = props.globals.getNode("/engines/engine[0]/oil-qt-actual", 1); +var oil_qt1_actual = props.globals.getNode("", 1); var oil_qt2_actual = props.globals.getNode("/engines/engine[1]/oil-qt-actual", 1); -var fuel_used_lbs1 = props.globals.getNode("/systems/fuel/fuel-used-1", 1); -var fuel_used_lbs2 = props.globals.getNode("/systems/fuel/fuel-used-2", 1); +var fuel_used_lbs1 = props.globals.getNode("", 1); var doorL1_pos = props.globals.getNode("/sim/model/door-positions/doorl1/position-norm", 1); var doorR1_pos = props.globals.getNode("/sim/model/door-positions/doorr1/position-norm", 1); var doorL4_pos = props.globals.getNode("/sim/model/door-positions/doorl4/position-norm", 1); @@ -1657,50 +1653,18 @@ var canvas_lowerECAM_eng = { return m; }, getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","OilQT1-needle","OilQT2-needle","OilQT1","OilQT2","OilQT1-decimal","OilQT2-decimal","OilPSI1-needle","OilPSI2-needle","OilPSI1","OilPSI2","FUEL-used-1","FUEL-used-2", "Fused-weight-unit"]; + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit",]; }, update: func() { # Oil Quantity - me["OilQT1"].setText(sprintf("%s", int(oil_qt1_actual.getValue()))); - me["OilQT2"].setText(sprintf("%s", int(oil_qt2_actual.getValue()))); - me["OilQT1-decimal"].setText(sprintf("%s", int(10*math.mod(oil_qt1_actual.getValue(),1)))); - me["OilQT2-decimal"].setText(sprintf("%s", int(10*math.mod(oil_qt2_actual.getValue(),1)))); - - me["OilQT1-needle"].setRotation((oil_qt1.getValue() + 90) * D2R); - me["OilQT2-needle"].setRotation((oil_qt2.getValue() + 90) * D2R); + # Oil Pressure - if (pts.Engines.Engine.oilPsi[0].getValue() >= 20) { - me["OilPSI1"].setColor(0.0509,0.7529,0.2941); - me["OilPSI1-needle"].setColor(0.0509,0.7529,0.2941); - } else { - me["OilPSI1"].setColor(1,0,0); - me["OilPSI1-needle"].setColor(1,0,0); - } - - if (pts.Engines.Engine.oilPsi[1].getValue() >= 20) { - me["OilPSI2"].setColor(0.0509,0.7529,0.2941); - me["OilPSI2-needle"].setColor(0.0509,0.7529,0.2941); - } else { - me["OilPSI2"].setColor(1,0,0); - me["OilPSI2-needle"].setColor(1,0,0); - } - - me["OilPSI1"].setText(sprintf("%s", math.round(pts.Engines.Engine.oilPsi[0].getValue()))); - me["OilPSI2"].setText(sprintf("%s", math.round(pts.Engines.Engine.oilPsi[1].getValue()))); - - me["OilPSI1-needle"].setRotation((oil_psi1.getValue() + 90) * D2R); - me["OilPSI2-needle"].setRotation((oil_psi2.getValue() + 90) * D2R); + # Fuel Used if (acconfig_weight_kgs.getValue()) { - me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); - me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); - me["Fused-weight-unit"].setText("KG"); } else { - me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); - me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); - me["Fused-weight-unit"].setText("LBS"); } me.updateBottomStatus(); diff --git a/Models/Instruments/Lower-ECAM/res/eng.svg b/Models/Instruments/Lower-ECAM/res/eng.svg index 212bd01f..4056f45c 100644 --- a/Models/Instruments/Lower-ECAM/res/eng.svg +++ b/Models/Instruments/Lower-ECAM/res/eng.svg @@ -12,8 +12,8 @@ viewBox="0 0 1024 1024" version="1.1" id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="eng-eis2.svg"> + inkscape:version="0.92.4 (5da689c313, 2019-01-14)" + sodipodi:docname="eng.svg"> @@ -37,14 +37,14 @@ guidetolerance="10" inkscape:pageopacity="1" inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1030" + inkscape:window-width="1366" + inkscape:window-height="705" id="namedview371" showgrid="true" - inkscape:zoom="0.5" - inkscape:cx="988.67552" - inkscape:cy="398.82462" - inkscape:window-x="1592" + inkscape:zoom="1" + inkscape:cx="593.89152" + inkscape:cy="650.40507" + inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="svg2"> @@ -81,8 +81,7 @@ style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="500.75214" y="977.31793" - id="text6232" - sodipodi:linespacing="0%">120000 °C G.LOAD 0.6 + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1">G.LOAD 0.6   0000 + x="264.69104" + y="181.87344" + style="font-size:30.0000782px;line-height:1.25;fill:#0dc04b;fill-opacity:1;stroke-width:0.75000191">0000 0000 + CLOG + CLOG + CLOG + CLOG + 22 + 0.6 + 0.1 + 0.6 + 0.1 + 22 diff --git a/Nasal/Libraries/property-tree-setup.nas b/Nasal/Libraries/property-tree-setup.nas index a4d5c988..7280d194 100644 --- a/Nasal/Libraries/property-tree-setup.nas +++ b/Nasal/Libraries/property-tree-setup.nas @@ -87,6 +87,7 @@ var Engines = { n1Actual: [props.globals.getNode("/engines/engine[0]/n1-actual"), props.globals.getNode("/engines/engine[1]/n1-actual")], n2Actual: [props.globals.getNode("/engines/engine[0]/n2-actual"), props.globals.getNode("/engines/engine[1]/n2-actual")], oilPsi: [props.globals.getNode("/engines/engine[0]/oil-psi-actual"), props.globals.getNode("/engines/engine[1]/oil-psi-actual")], + oilQt: [props.globals.getNode("/engines/engine[0]/oil-qt-actual"), props.globals.getNode("/engines/engine[1]/oil-qt-actual")], thrust: [props.globals.getNode("/engines/engine[0]/thrust-lb"), props.globals.getNode("/engines/engine[1]/thrust-lb")], reverser: [props.globals.getNode("/engines/engine[0]/reverser-pos-norm"), props.globals.getNode("/engines/engine[1]/reverser-pos-norm")], state: [props.globals.getNode("/engines/engine[0]/state"), props.globals.getNode("/engines/engine[1]/state")], From daba88a00e3f1e818f5aa9a5fabfd03963c66e80 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Fri, 16 Jul 2021 15:34:17 +0100 Subject: [PATCH 12/28] Wheel page --- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 574 +----------------- .../Lower-ECAM/Lower-ECAM-wheel.nas | 555 ++++++++++++++++- Models/Instruments/Lower-ECAM/res/wheel.svg | 14 +- Nasal/FBW/it-fbw.nas | 2 +- Nasal/Libraries/libraries.nas | 2 + 5 files changed, 564 insertions(+), 583 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index 7abf7bd7..6dbc4edf 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -138,7 +138,7 @@ var R4BrakeTempc = props.globals.getNode("/gear/gear[2]/R4brake-temp-degc", 1); var eng1_running = props.globals.getNode("/engines/engine[0]/running", 1); var eng2_running = props.globals.getNode("/engines/engine[1]/running", 1); var switch_cart = props.globals.getNode("/controls/electrical/ground-cart", 1); -var spoiler_L1 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l1/final-deg", 1); +var spoiler_L1 = props.globals.getNode("", 1); var spoiler_L2 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l2/final-deg", 1); var spoiler_L3 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l3/final-deg", 1); var spoiler_L4 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l4/final-deg", 1); @@ -1761,11 +1761,9 @@ var canvas_lowerECAM_fctl = { # Spoilers if (spoiler_L1.getValue() < 1.5) { - me["spoiler1Lex"].hide(); - me["spoiler1Lrt"].show(); + } else { - me["spoiler1Lrt"].hide(); - me["spoiler1Lex"].show(); + } if (spoiler_L2.getValue() < 1.5) { @@ -2649,378 +2647,6 @@ var canvas_lowerECAM_hyd = { me.updateBottomStatus(); }, }; - -var canvas_lowerECAM_wheel = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_wheel, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","lgctltext","NORMbrk","NWStext","leftdoor","rightdoor","nosegeardoorL","nosegeardoorR", - "autobrk","autobrkind","NWS","NWSrect","normbrk-rect","altnbrk","normbrkhyd","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex", - "spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex","spoiler1Lrt","spoiler2Lex","spoiler2Lrt", - "spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf", - "spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf","spoiler5Lf","ALTNbrk","altnbrkhyd","altnbrk-rect","antiskidtext","brakearrow","accupress_text", - "accuonlyarrow","accuonly","braketemp1","normbrkhyd","braketemp2","braketemp3","braketemp4","toparc1","toparc2","toparc3","toparc4","leftuplock", - "noseuplock","rightuplock","Triangle-Left1","Triangle-Left2","Triangle-Nose1","Triangle-Nose2","Triangle-Right1","Triangle-Right2","BSCUrect1", - "BSCUrect2","BSCU1","BSCU2","tirepress1","tirepress2","tirepress3","tirepress4","tirepress5","tirepress6"]; - }, - update: func() { - blue_psi = systems.HYD.Psi.blue.getValue(); - green_psi = systems.HYD.Psi.green.getValue(); - yellow_psi = systems.HYD.Psi.yellow.getValue(); - autobrakemode = autobreak_mode.getValue(); - nosegear = gear1_pos.getValue(); - leftgear = gear2_pos.getValue(); - rightgear = gear3_pos.getValue(); - leftdoor = gear_door_L.getValue(); - rightdoor = gear_door_R.getValue(); - nosedoor = gear_door_N.getValue(); - gearlvr = gear_down.getValue(); - askidsw = systems.HYD.Switch.nwsSwitch.getBoolValue(); - brakemode = systems.HYD.Brakes.mode.getBoolValue(); - accum = systems.HYD.Brakes.accumPressPsi.getBoolValue(); - - # L/G CTL - if ((leftgear == 0 or nosegear == 0 or rightgear == 0 and gearlvr == 0) or (leftgear == 1 or nosegear == 1 or rightgear == 1 and gearlvr == 1)) { - me["lgctltext"].hide(); - } else { - me["lgctltext"].show(); - } - - # NWS / Antiskid / Brakes - if (askidsw and yellow_psi >= 1500) { - me["NWStext"].hide(); - me["NWS"].hide(); - me["NWSrect"].hide(); - me["antiskidtext"].hide(); - me["BSCUrect1"].hide(); - me["BSCUrect2"].hide(); - me["BSCU1"].hide(); - me["BSCU2"].hide(); - } else if (!askidsw and yellow_psi >= 1500) { - me["NWStext"].show(); - me["NWS"].show(); - me["NWS"].setColor(0.0509,0.7529,0.2941); - me["NWSrect"].show(); - me["antiskidtext"].show(); - me["antiskidtext"].setColor(0.7333,0.3803,0); - me["BSCUrect1"].show(); - me["BSCUrect2"].show(); - me["BSCU1"].show(); - me["BSCU2"].show(); - } else { - me["NWStext"].show(); - me["NWS"].show(); - me["NWS"].setColor(0.7333,0.3803,0); - me["NWSrect"].show(); - me["antiskidtext"].show(); - me["antiskidtext"].setColor(0.7333,0.3803,0); - me["BSCUrect1"].show(); - me["BSCUrect2"].show(); - me["BSCU1"].show(); - me["BSCU2"].show(); - } - - if (green_psi >= 1500 and brakemode == 1) { - me["NORMbrk"].hide(); - me["normbrk-rect"].hide(); - me["normbrkhyd"].hide(); - } else if (green_psi >= 1500 and askidsw) { - me["NORMbrk"].show(); - me["normbrk-rect"].show(); - me["NORMbrk"].setColor(0.7333,0.3803,0); - me["normbrkhyd"].setColor(0.0509,0.7529,0.2941); - } else if (green_psi < 1500 or !askidsw) { - me["NORMbrk"].show(); - me["normbrk-rect"].show(); - me["NORMbrk"].setColor(0.7333,0.3803,0); - me["normbrkhyd"].setColor(0.7333,0.3803,0); - } - - if (brakemode != 2) { - me["ALTNbrk"].hide(); - me["altnbrk-rect"].hide(); - me["altnbrkhyd"].hide(); - } else if (yellow_psi >= 1500) { - me["ALTNbrk"].show(); - me["altnbrk-rect"].show(); - me["altnbrkhyd"].setColor(0.0509,0.7529,0.2941); - } else { - me["ALTNbrk"].show(); - me["altnbrk-rect"].show(); - me["altnbrkhyd"].setColor(0.7333,0.3803,0); - } - - if (brakemode == 2 and accum < 200 and yellow_psi < 1500) { - me["accupress_text"].show(); - me["brakearrow"].hide(); - me["accupress_text"].setColor(0.7333,0.3803,0); - } else if (brakemode == 2 and accum > 200 and yellow_psi >= 1500){ - me["accupress_text"].show(); - me["brakearrow"].show(); - me["accupress_text"].setColor(0.0509,0.7529,0.2941); - } else if (brakemode == 2 and accum > 200 and yellow_psi < 1500) { - me["accuonlyarrow"].show(); - me["accuonly"].show(); - me["brakearrow"].hide(); - me["accupress_text"].hide(); - } else { - me["accuonlyarrow"].hide(); - me["accuonly"].hide(); - me["brakearrow"].hide(); - me["accupress_text"].hide(); - } - - # Gear Doors - me["leftdoor"].setRotation(door_left.getValue() * D2R); - me["rightdoor"].setRotation(door_right.getValue() * D2R); - me["nosegeardoorL"].setRotation(door_nose_left.getValue() * D2R); - me["nosegeardoorR"].setRotation(door_nose_right.getValue() * D2R); - - if (nosedoor == 0) { - me["nosegeardoorL"].setColorFill(0.0509,0.7529,0.2941); - me["nosegeardoorR"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["nosegeardoorL"].setColorFill(0.7333,0.3803,0); - me["nosegeardoorR"].setColorFill(0.7333,0.3803,0); - } - - if (leftdoor == 0) { - me["leftdoor"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["leftdoor"].setColorFill(0.7333,0.3803,0); - } - - if (rightdoor == 0) { - me["rightdoor"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["rightdoor"].setColorFill(0.7333,0.3803,0); - } - - # Triangles - if (leftgear < 0.2 or leftgear > 0.8) { - me["Triangle-Left1"].hide(); - me["Triangle-Left2"].hide(); - } else { - me["Triangle-Left1"].show(); - me["Triangle-Left2"].show(); - } - - if (leftgear == 1) { - me["Triangle-Left1"].setColor(0.0509,0.7529,0.2941); - me["Triangle-Left2"].setColor(0.0509,0.7529,0.2941); - } else { - me["Triangle-Left1"].setColor(1,0,0); - me["Triangle-Left2"].setColor(1,0,0); - } - - if (nosegear < 0.2 or nosegear > 0.8) { - me["Triangle-Nose1"].hide(); - me["Triangle-Nose2"].hide(); - } else { - me["Triangle-Nose1"].show(); - me["Triangle-Nose2"].show(); - } - - if (nosegear == 1) { - me["Triangle-Nose1"].setColor(0.0509,0.7529,0.2941); - me["Triangle-Nose2"].setColor(0.0509,0.7529,0.2941); - } else { - me["Triangle-Nose1"].setColor(1,0,0); - me["Triangle-Nose2"].setColor(1,0,0); - } - - if (rightgear < 0.2 or rightgear > 0.8) { - me["Triangle-Right1"].hide(); - me["Triangle-Right2"].hide(); - } else { - me["Triangle-Right1"].show(); - me["Triangle-Right2"].show(); - } - - if (rightgear == 1) { - me["Triangle-Right1"].setColor(0.0509,0.7529,0.2941); - me["Triangle-Right2"].setColor(0.0509,0.7529,0.2941); - } else { - me["Triangle-Right1"].setColor(1,0,0); - me["Triangle-Right2"].setColor(1,0,0); - } - - # Autobrake - if (autobrakemode == 0) { - me["autobrkind"].hide(); - } elsif (autobrakemode == 1) { - me["autobrkind"].show(); - me["autobrkind"].setText(sprintf("%s", "LO")); - } elsif (autobrakemode == 2) { - me["autobrkind"].show(); - me["autobrkind"].setText(sprintf("%s", "MED")); - } elsif (autobrakemode == 3) { - me["autobrkind"].show(); - me["autobrkind"].setText(sprintf("%s", "MAX")); - } - - if (autobrakemode != 0) { - me["autobrk"].show(); - } elsif (autobrakemode == 0) { - me["autobrk"].hide(); - } - - # Spoilers - if (spoiler_L1.getValue() < 1.5) { - me["spoiler1Lex"].hide(); - me["spoiler1Lrt"].show(); - } else { - me["spoiler1Lrt"].hide(); - me["spoiler1Lex"].show(); - } - - if (spoiler_L2.getValue() < 1.5) { - me["spoiler2Lex"].hide(); - me["spoiler2Lrt"].show(); - } else { - me["spoiler2Lrt"].hide(); - me["spoiler2Lex"].show(); - } - - if (spoiler_L3.getValue() < 1.5) { - me["spoiler3Lex"].hide(); - me["spoiler3Lrt"].show(); - } else { - me["spoiler3Lrt"].hide(); - me["spoiler3Lex"].show(); - } - - if (spoiler_L4.getValue() < 1.5) { - me["spoiler4Lex"].hide(); - me["spoiler4Lrt"].show(); - } else { - me["spoiler4Lrt"].hide(); - me["spoiler4Lex"].show(); - } - - if (spoiler_L5.getValue() < 1.5) { - me["spoiler5Lex"].hide(); - me["spoiler5Lrt"].show(); - } else { - me["spoiler5Lrt"].hide(); - me["spoiler5Lex"].show(); - } - - if (spoiler_R1.getValue() < 1.5) { - me["spoiler1Rex"].hide(); - me["spoiler1Rrt"].show(); - } else { - me["spoiler1Rrt"].hide(); - me["spoiler1Rex"].show(); - } - - if (spoiler_R2.getValue() < 1.5) { - me["spoiler2Rex"].hide(); - me["spoiler2Rrt"].show(); - } else { - me["spoiler2Rrt"].hide(); - me["spoiler2Rex"].show(); - } - - if (spoiler_R3.getValue() < 1.5) { - me["spoiler3Rex"].hide(); - me["spoiler3Rrt"].show(); - } else { - me["spoiler3Rrt"].hide(); - me["spoiler3Rex"].show(); - } - - if (spoiler_R4.getValue() < 1.5) { - me["spoiler4Rex"].hide(); - me["spoiler4Rrt"].show(); - } else { - me["spoiler4Rrt"].hide(); - me["spoiler4Rex"].show(); - } - - if (spoiler_R5.getValue() < 1.5) { - me["spoiler5Rex"].hide(); - me["spoiler5Rrt"].show(); - } else { - me["spoiler5Rrt"].hide(); - me["spoiler5Rex"].show(); - } - - # Spoiler Fail - if (fbw.FBW.Failures.spoilerl1.getValue() or green_psi < 1500) { - me["spoiler1Lex"].setColor(0.7333,0.3803,0); - me["spoiler1Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L1.getValue() < 1.5) { - me["spoiler1Lf"].show(); - } else { - me["spoiler1Lf"].hide(); - } - } else { - me["spoiler1Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl2.getValue() or yellow_psi < 1500) { - me["spoiler2Lex"].setColor(0.7333,0.3803,0); - me["spoiler2Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L2.getValue() < 1.5) { - me["spoiler2Lf"].show(); - } else { - me["spoiler2Lf"].hide(); - } - } else { - me["spoiler2Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl3.getValue() or blue_psi < 1500) { - me["spoiler3Lex"].setColor(0.7333,0.3803,0); - me["spoiler3Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L3.getValue() < 1.5) { - me["spoiler3Lf"].show(); - } else { - me["spoiler3Lf"].hide(); - } - } else { - me["spoiler3Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl4.getValue() or yellow_psi < 1500) { - me["spoiler4Lex"].setColor(0.7333,0.3803,0); - me["spoiler4Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L4.getValue() < 1.5) { - me["spoiler4Lf"].show(); - } else { - me["spoiler4Lf"].hide(); - } - } else { - me["spoiler4Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl5.getValue() or green_psi < 1500) { - me["spoiler5Lex"].setColor(0.7333,0.3803,0); - me["spoiler5Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L5.getValue() < 1.5) { - me["spoiler5Lf"].show(); - } else { - me["spoiler5Lf"].hide(); - } - } else { - me["spoiler5Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Lf"].hide(); - } - if (fbw.FBW.Failures.spoilerr1.getValue() or green_psi < 1500) { me["spoiler1Rex"].setColor(0.7333,0.3803,0); me["spoiler1Rrt"].setColor(0.7333,0.3803,0); @@ -3090,197 +2716,3 @@ var canvas_lowerECAM_wheel = { me["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941); me["spoiler5Rf"].hide(); } - - # Show Brakes temperature - if (L1BrakeTempc.getValue() > 300) { - me["braketemp1"].setColor(0.7333,0.3803,0); - } else { - me["braketemp1"].setColor(0.0509,0.7529,0.2941); - } - - if (L2BrakeTempc.getValue() > 300) { - me["braketemp2"].setColor(0.7333,0.3803,0); - } else { - me["braketemp2"].setColor(0.0509,0.7529,0.2941); - } - if (R3BrakeTempc.getValue() > 300) { - me["braketemp3"].setColor(0.7333,0.3803,0); - } else { - me["braketemp3"].setColor(0.0509,0.7529,0.2941); - } - if (R4BrakeTempc.getValue() > 300) { - me["braketemp4"].setColor(0.7333,0.3803,0); - } else { - me["braketemp4"].setColor(0.0509,0.7529,0.2941); - } - - # Brake arcs - if (L1BrakeTempc.getValue() > 300) { - me["toparc1"].setColor(0.7333,0.3803,0); - } else - { - if (L1BrakeTempc.getValue() > 100 and L1BrakeTempc.getValue() < 300) - { - me["toparc1"].setColor(0.0509,0.7529,0.2941); - } - else { - me["toparc1"].setColor(0.8078,0.8039,0.8078); - } - } - if (L2BrakeTempc.getValue() > 300) { - me["toparc2"].setColor(0.7333,0.3803,0); - } else - { - if (L2BrakeTempc.getValue() > 100 and L2BrakeTempc.getValue() < 300) - { - me["toparc2"].setColor(0.0509,0.7529,0.2941); - } - else { - me["toparc2"].setColor(0.8078,0.8039,0.8078); - } - } - if (R3BrakeTempc.getValue() > 300) { - me["toparc3"].setColor(0.7333,0.3803,0); - } else - { - if (R3BrakeTempc.getValue() > 100 and R3BrakeTempc.getValue() < 300) - { - me["toparc3"].setColor(0.0509,0.7529,0.2941); - } - else { - me["toparc3"].setColor(0.8078,0.8039,0.8078); - } - } - if (R4BrakeTempc.getValue() > 300) { - me["toparc4"].setColor(0.7333,0.3803,0); - } else - { - if (R4BrakeTempc.getValue() > 100 and R4BrakeTempc.getValue() < 300) - { - me["toparc4"].setColor(0.0509,0.7529,0.2941); - } - else { - me["toparc4"].setColor(0.8078,0.8039,0.8078); - } - } - me["braketemp1"].setText(sprintf("%s", math.round(L1BrakeTempc.getValue(), 1))); - me["braketemp2"].setText(sprintf("%s", math.round(L2BrakeTempc.getValue(), 1))); - me["braketemp3"].setText(sprintf("%s", math.round(R3BrakeTempc.getValue(), 1))); - me["braketemp4"].setText(sprintf("%s", math.round(R4BrakeTempc.getValue(), 1))); - me["braketemp1"].show(); - me["braketemp2"].show(); - me["braketemp3"].show(); - me["braketemp4"].show(); - me["toparc1"].show(); - me["toparc2"].show(); - me["toparc3"].show(); - me["toparc4"].show(); - - # Hide not yet implemented stuff - me["leftuplock"].hide(); - me["noseuplock"].hide(); - me["rightuplock"].hide(); - me["tirepress1"].hide(); - me["tirepress2"].hide(); - me["tirepress3"].hide(); - me["tirepress4"].hide(); - me["tirepress5"].hide(); - me["tirepress6"].hide(); - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_test = { - 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; - }, - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_test]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["Test_white","Test_text"]; - }, - update: func() { - var elapsedtime = pts.Sim.Time.elapsedSec.getValue(); - if (du4_test_time.getValue() + 1 >= elapsedtime) { - me["Test_white"].show(); - me["Test_text"].hide(); - } else { - me["Test_white"].hide(); - me["Test_text"].show(); - } - }, -}; - -setlistener("/sim/signals/fdm-initialized", func { - lowerECAM_display = canvas.new({ - "name": "lowerECAM", - "size": [1024, 1024], - "view": [1024, 1024], - "mipmapping": 1 - }); - lowerECAM_display.addPlacement({"node": "lecam.screen"}); - var groupApu = lowerECAM_display.createGroup(); - var groupBleed = lowerECAM_display.createGroup(); - var groupCond = lowerECAM_display.createGroup(); - var groupCrz = lowerECAM_display.createGroup(); - var groupDoor = lowerECAM_display.createGroup(); - var groupElec = lowerECAM_display.createGroup(); - var groupEng = lowerECAM_display.createGroup(); - var groupFctl = lowerECAM_display.createGroup(); - var groupFuel = lowerECAM_display.createGroup(); - var groupPress = lowerECAM_display.createGroup(); - var groupStatus = lowerECAM_display.createGroup(); - var groupHyd = lowerECAM_display.createGroup(); - var groupWheel = lowerECAM_display.createGroup(); - var group_test = lowerECAM_display.createGroup(); - - lowerECAM_apu = canvas_lowerECAM_apu.new(groupApu, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/apu.svg"); - lowerECAM_bleed = canvas_lowerECAM_bleed.new(groupBleed, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/bleed.svg"); - lowerECAM_cond = canvas_lowerECAM_cond.new(groupCond, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/cond.svg"); - lowerECAM_crz = canvas_lowerECAM_crz.new(groupCrz, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/crz.svg"); - lowerECAM_door = canvas_lowerECAM_door.new(groupDoor, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/door.svg"); - lowerECAM_elec = canvas_lowerECAM_elec.new(groupElec, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/elec.svg"); - lowerECAM_eng = canvas_lowerECAM_eng.new(groupEng, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/eng.svg"); - lowerECAM_fctl = canvas_lowerECAM_fctl.new(groupFctl, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fctl.svg"); - lowerECAM_fuel = canvas_lowerECAM_fuel.new(groupFuel, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/fuel.svg"); - lowerECAM_press = canvas_lowerECAM_press.new(groupPress, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/press.svg"); - lowerECAM_status = canvas_lowerECAM_status.new(groupStatus, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/status.svg"); - lowerECAM_hyd = canvas_lowerECAM_hyd.new(groupHyd, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/hyd.svg"); - lowerECAM_wheel = canvas_lowerECAM_wheel.new(groupWheel, "Aircraft/A320-family/Models/Instruments/Lower-ECAM/res/wheel.svg"); - lowerECAM_test = canvas_lowerECAM_test.new(group_test, "Aircraft/A320-family/Models/Instruments/Common/res/du-test.svg"); - - lowerECAM_update.start(); - if (rate.getValue() > 1) { - l_rateApply(); - } -}); - -var l_rateApply = func { - lowerECAM_update.restart(0.05 * rate.getValue()); -} - -var lowerECAM_update = maketimer(0.05, func { - canvas_lowerECAM_base.update(); -}); - -setlistener("/systems/electrical/bus/ac-2", func() { - canvas_lowerECAM_base.updateDu4(); -}, 0, 0); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas index 87332924..e6586a11 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas @@ -21,8 +21,517 @@ var canvas_lowerECAMPageWheel = obj.units = acconfig_weight_kgs.getValue(); # init + obj["leftuplock"].hide(); + obj["noseuplock"].hide(); + obj["rightuplock"].hide(); + obj["tirepress1"].hide(); + obj["tirepress2"].hide(); + obj["tirepress3"].hide(); + obj["tirepress4"].hide(); + obj["tirepress5"].hide(); + obj["tirepress6"].hide(); + obj.update_items = [ + props.UpdateManager.FromHashList(["gearPosNorm","gearPosNorm1","gearPosNorm2","gearLever"], nil, func(val) { + if (val.gearLever and (val.gearPosNorm != 1 or val.gearPosNorm1 != 1 or val.gearPosNorm2 != 1)) { + obj["lgctltext"].show(); + } elsif (!val.gearLever and (val.gearPosNorm != 0 or val.gearPosNorm1 != 0 or val.gearPosNorm2 != 0)) { + obj["lgctltext"].show(); + } else { + obj["lgctltext"].hide(); + } + }), + props.UpdateManager.FromHashValue("gearPosNorm", 0.01, func(val) { + if (val < 0.2 or val > 0.8) { + obj["Triangle-Nose1"].hide(); + obj["Triangle-Nose2"].hide(); + } else { + obj["Triangle-Nose1"].show(); + obj["Triangle-Nose2"].show(); + } + + if (val == 1) { + obj["Triangle-Nose1"].setColor(0.0509,0.7529,0.2941); + obj["Triangle-Nose2"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Triangle-Nose1"].setColor(1,0,0); + obj["Triangle-Nose2"].setColor(1,0,0); + } + }), + props.UpdateManager.FromHashValue("gearPosNorm1", 0.01, func(val) { + if (val < 0.2 or val > 0.8) { + obj["Triangle-Left1"].hide(); + obj["Triangle-Left2"].hide(); + } else { + obj["Triangle-Left1"].show(); + obj["Triangle-Left2"].show(); + } + + if (val == 1) { + obj["Triangle-Left1"].setColor(0.0509,0.7529,0.2941); + obj["Triangle-Left2"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Triangle-Left1"].setColor(1,0,0); + obj["Triangle-Left2"].setColor(1,0,0); + } + }), + props.UpdateManager.FromHashValue("gearPosNorm2", 0.01, func(val) { + if (val < 0.2 or val > 0.8) { + obj["Triangle-Right1"].hide(); + obj["Triangle-Right2"].hide(); + } else { + obj["Triangle-Right1"].show(); + obj["Triangle-Right2"].show(); + } + + if (val == 1) { + obj["Triangle-Right1"].setColor(0.0509,0.7529,0.2941); + obj["Triangle-Right2"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Triangle-Right1"].setColor(1,0,0); + obj["Triangle-Right2"].setColor(1,0,0); + } + }), + props.UpdateManager.FromHashList(["yellow","green","NWSSwitch","brakesMode","val.accumPressPsiPressPsi"], nil, func(val) { + if (val.NWSSwitch and val.yellow >= 1500) { + obj["NWStext"].hide(); + obj["NWS"].hide(); + obj["NWSrect"].hide(); + obj["antiskidtext"].hide(); + obj["BSCUrect1"].hide(); + obj["BSCUrect2"].hide(); + obj["BSCU1"].hide(); + obj["BSCU2"].hide(); + } else if (!val.NWSSwitch and val.yellow >= 1500) { + obj["NWStext"].show(); + obj["NWS"].show(); + obj["NWS"].setColor(0.0509,0.7529,0.2941); + obj["NWSrect"].show(); + obj["antiskidtext"].show(); + obj["antiskidtext"].setColor(0.7333,0.3803,0); + obj["BSCUrect1"].show(); + obj["BSCUrect2"].show(); + obj["BSCU1"].show(); + obj["BSCU2"].show(); + } else { + obj["NWStext"].show(); + obj["NWS"].show(); + obj["NWS"].setColor(0.7333,0.3803,0); + obj["NWSrect"].show(); + obj["antiskidtext"].show(); + obj["antiskidtext"].setColor(0.7333,0.3803,0); + obj["BSCUrect1"].show(); + obj["BSCUrect2"].show(); + obj["BSCU1"].show(); + obj["BSCU2"].show(); + } + + if (val.green >= 1500 and val.brakesMode == 1) { + obj["NORMbrk"].hide(); + obj["normbrk-rect"].hide(); + obj["normbrkhyd"].hide(); + } else if (val.green >= 1500 and val.NWSSwitch) { + obj["NORMbrk"].show(); + obj["normbrk-rect"].show(); + obj["NORMbrk"].setColor(0.7333,0.3803,0); + obj["normbrkhyd"].setColor(0.0509,0.7529,0.2941); + } else if (val.green < 1500 or !val.NWSSwitch) { + obj["NORMbrk"].show(); + obj["normbrk-rect"].show(); + obj["NORMbrk"].setColor(0.7333,0.3803,0); + obj["normbrkhyd"].setColor(0.7333,0.3803,0); + } + + if (val.brakesMode != 2) { + obj["ALTNbrk"].hide(); + obj["altnbrk-rect"].hide(); + obj["altnbrkhyd"].hide(); + } else if (val.yellow >= 1500) { + obj["ALTNbrk"].show(); + obj["altnbrk-rect"].show(); + obj["altnbrkhyd"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ALTNbrk"].show(); + obj["altnbrk-rect"].show(); + obj["altnbrkhyd"].setColor(0.7333,0.3803,0); + } + + if (val.brakesMode == 2 and val.accumPressPsi < 200 and val.yellow < 1500) { + obj["accupress_text"].show(); + obj["brakearrow"].hide(); + obj["accupress_text"].setColor(0.7333,0.3803,0); + } else if (val.brakesMode == 2 and val.accumPressPsi > 200 and val.yellow >= 1500){ + obj["accupress_text"].show(); + obj["brakearrow"].show(); + obj["accupress_text"].setColor(0.0509,0.7529,0.2941); + } else if (val.brakesMode == 2 and val.accumPressPsi > 200 and val.yellow < 1500) { + obj["accuonlyarrow"].show(); + obj["accuonly"].show(); + obj["brakearrow"].hide(); + obj["accupress_text"].hide(); + } else { + obj["accuonlyarrow"].hide(); + obj["accuonly"].hide(); + obj["brakearrow"].hide(); + obj["accupress_text"].hide(); + } + }), + props.UpdateManager.FromHashList(["brakeAutobrkMode"], nil, func(val) { + if (val.brakeAutobrkMode == 0) { + obj["autobrkind"].hide(); + } elsif (val.brakeAutobrkMode == 1) { + obj["autobrkind"].show(); + obj["autobrkind"].setText(sprintf("%s", "LO")); + } elsif (val.brakeAutobrkMode == 2) { + obj["autobrkind"].show(); + obj["autobrkind"].setText(sprintf("%s", "MED")); + } elsif (val.brakeAutobrkMode == 3) { + obj["autobrkind"].show(); + obj["autobrkind"].setText(sprintf("%s", "MAX")); + } + + if (val.brakeAutobrkMode != 0) { + obj["autobrk"].show(); + } else { + obj["autobrk"].hide(); + } + }), + props.UpdateManager.FromHashValue("brakeLeft1", 0.5, func(val) { + obj["braketemp1"].setText(sprintf("%s", math.round(val, 5))); + + if (val > 300) { + obj["braketemp1"].setColor(0.7333,0.3803,0); + obj["toparc1"].setColor(0.7333,0.3803,0); + } else { + if (val > 100 and val <= 300) { + obj["toparc1"].setColor(0.0509,0.7529,0.2941); + } else { + obj["toparc1"].setColor(0.8078,0.8039,0.8078); + } + obj["braketemp1"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("brakeLeft2", 0.5, func(val) { + obj["braketemp2"].setText(sprintf("%s", math.round(val, 5))); + + if (val > 300) { + obj["braketemp2"].setColor(0.7333,0.3803,0); + obj["toparc2"].setColor(0.7333,0.3803,0); + } else { + if (val > 100 and val <= 300) { + obj["toparc2"].setColor(0.0509,0.7529,0.2941); + } else { + obj["toparc2"].setColor(0.8078,0.8039,0.8078); + } + obj["braketemp2"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("brakeRight1", 0.5, func(val) { + obj["braketemp3"].setText(sprintf("%s", math.round(val, 5))); + + if (val > 300) { + obj["braketemp3"].setColor(0.7333,0.3803,0); + obj["toparc3"].setColor(0.7333,0.3803,0); + } else { + if (val > 100 and val <= 300) { + obj["toparc3"].setColor(0.0509,0.7529,0.2941); + } else { + obj["toparc3"].setColor(0.8078,0.8039,0.8078); + } + obj["braketemp3"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("brakeRight2", 0.5, func(val) { + obj["braketemp4"].setText(sprintf("%s", math.round(val, 5))); + + if (val > 300) { + obj["braketemp4"].setColor(0.7333,0.3803,0); + obj["toparc4"].setColor(0.7333,0.3803,0); + } else { + if (val > 100 and val <= 300) { + obj["toparc4"].setColor(0.0509,0.7529,0.2941); + } else { + obj["toparc4"].setColor(0.8078,0.8039,0.8078); + } + obj["braketemp4"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("wheelLeftDoor", 0.5, func(val) { + obj["leftdoor"].setRotation(val * D2R); + }), + props.UpdateManager.FromHashValue("wheelNoseLeftDoor", 0.5, func(val) { + obj["nosegeardoorL"].setRotation(val * D2R); + }), + props.UpdateManager.FromHashValue("wheelNoseRightDoor", 0.5, func(val) { + obj["nosegeardoorR"].setRotation(val * D2R); + }), + props.UpdateManager.FromHashValue("wheelRightDoor", 0.5, func(val) { + obj["rightdoor"].setRotation(val * D2R); + }), + props.UpdateManager.FromHashValue("wheelLeftDoorPos", 0.01, func(val) { + if (val == 0) { + obj["leftdoor"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["leftdoor"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("wheelNoseDoorPos", 0.01, func(val) { + if (val == 0) { + obj["nosegeardoorL"].setColorFill(0.0509,0.7529,0.2941); + obj["nosegeardoorR"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["nosegeardoorL"].setColorFill(0.7333,0.3803,0); + obj["nosegeardoorR"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("wheelRightDoorPos", 0.01, func(val) { + if (val == 0) { + obj["rightdoor"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["rightdoor"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("spoilerL1", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler1Lex"].hide(); + obj["spoiler1Lrt"].show(); + } else { + obj["spoiler1Lrt"].hide(); + obj["spoiler1Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerL2", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler2Lex"].hide(); + obj["spoiler2Lrt"].show(); + } else { + obj["spoiler2Lrt"].hide(); + obj["spoiler2Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerL3", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler3Lex"].hide(); + obj["spoiler3Lrt"].show(); + } else { + obj["spoiler3Lrt"].hide(); + obj["spoiler3Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerL4", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler4Lex"].hide(); + obj["spoiler4Lrt"].show(); + } else { + obj["spoiler4Lrt"].hide(); + obj["spoiler4Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerL5", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler5Lex"].hide(); + obj["spoiler5Lrt"].show(); + } else { + obj["spoiler5Lrt"].hide(); + obj["spoiler5Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR1", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler1Rex"].hide(); + obj["spoiler1Rrt"].show(); + } else { + obj["spoiler1Rrt"].hide(); + obj["spoiler1Rex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR2", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler2Rex"].hide(); + obj["spoiler2Rrt"].show(); + } else { + obj["spoiler2Rrt"].hide(); + obj["spoiler2Rex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR3", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler3Rex"].hide(); + obj["spoiler3Rrt"].show(); + } else { + obj["spoiler3Rrt"].hide(); + obj["spoiler3Rex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR4", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler4Rex"].hide(); + obj["spoiler4Rrt"].show(); + } else { + obj["spoiler4Rrt"].hide(); + obj["spoiler4Rex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR5", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler5Rex"].hide(); + obj["spoiler5Rrt"].show(); + } else { + obj["spoiler5Rrt"].hide(); + obj["spoiler5Rex"].show(); + } + }), + props.UpdateManager.FromHashList(["spoilerL1Failure","spoilerL1","green"], nil, func(val) { + if (val.spoilerL1Failure or val.green < 1500) { + obj["spoiler1Lex"].setColor(0.7333,0.3803,0); + obj["spoiler1Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL1 < 1.5) { + obj["spoiler1Lf"].show(); + } else { + obj["spoiler1Lf"].hide(); + } + } else { + obj["spoiler1Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler1Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerL2Failure","spoilerL2","yellow"], nil, func(val) { + if (val.spoilerL2Failure or val.yellow < 1500) { + obj["spoiler2Lex"].setColor(0.7333,0.3803,0); + obj["spoiler2Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL2 < 1.5) { + obj["spoiler2Lf"].show(); + } else { + obj["spoiler2Lf"].hide(); + } + } else { + obj["spoiler2Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler2Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerL3Failure","spoilerL3","blue"], nil, func(val) { + if (val.spoilerL3Failure or val.blue < 1500) { + obj["spoiler3Lex"].setColor(0.7333,0.3803,0); + obj["spoiler3Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL3 < 1.5) { + obj["spoiler3Lf"].show(); + } else { + obj["spoiler3Lf"].hide(); + } + } else { + obj["spoiler3Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler3Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerL4Failure","spoilerL4","yellow"], nil, func(val) { + if (val.spoilerL4Failure or val.yellow < 1500) { + obj["spoiler4Lex"].setColor(0.7333,0.3803,0); + obj["spoiler4Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL4 < 1.5) { + obj["spoiler4Lf"].show(); + } else { + obj["spoiler4Lf"].hide(); + } + } else { + obj["spoiler4Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler4Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerL5Failure","spoilerL5","green"], nil, func(val) { + if (val.spoilerL5Failure or val.green < 1500) { + obj["spoiler5Lex"].setColor(0.7333,0.3803,0); + obj["spoiler5Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL5 < 1.5) { + obj["spoiler5Lf"].show(); + } else { + obj["spoiler5Lf"].hide(); + } + } else { + obj["spoiler5Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler5Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR1Failure","spoilerR1","green"], nil, func(val) { + if (val.spoilerR1Failure or val.green < 1500) { + obj["spoiler1Rex"].setColor(0.7333,0.3803,0); + obj["spoiler1Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR1 < 1.5) { + obj["spoiler1Rf"].show(); + } else { + obj["spoiler1Rf"].hide(); + } + } else { + obj["spoiler1Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler1Rf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR2Failure","spoilerR2","yellow"], nil, func(val) { + if (val.spoilerR2Failure or val.yellow < 1500) { + obj["spoiler2Rex"].setColor(0.7333,0.3803,0); + obj["spoiler2Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR2 < 1.5) { + obj["spoiler2Rf"].show(); + } else { + obj["spoiler2Rf"].hide(); + } + } else { + obj["spoiler2Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler2Rf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR3Failure","spoilerR3","blue"], nil, func(val) { + if (val.spoilerR3Failure or val.blue < 1500) { + obj["spoiler3Rex"].setColor(0.7333,0.3803,0); + obj["spoiler3Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR3 < 1.5) { + obj["spoiler3Rf"].show(); + } else { + obj["spoiler3Rf"].hide(); + } + } else { + obj["spoiler3Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler3Rf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR4Failure","spoilerR4","yellow"], nil, func(val) { + if (val.spoilerR4Failure or val.yellow < 1500) { + obj["spoiler4Rex"].setColor(0.7333,0.3803,0); + obj["spoiler4Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR4 < 1.5) { + obj["spoiler4Rf"].show(); + } else { + obj["spoiler4Rf"].hide(); + } + } else { + obj["spoiler4Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler4Rf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR5Failure","spoilerR5","green"], nil, func(val) { + if (val.spoilerR5Failure or val.green < 1500) { + obj["spoiler5Rex"].setColor(0.7333,0.3803,0); + obj["spoiler5Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR5 < 1.5) { + obj["spoiler5Rf"].show(); + } else { + obj["spoiler5Rf"].hide(); + } + } else { + obj["spoiler5Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler5Rf"].hide(); + } + }), ]; obj.displayedGForce = 0; @@ -62,10 +571,15 @@ var canvas_lowerECAMPageWheel = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return["lgctltext","NORMbrk","NWStext","leftdoor","rightdoor","nosegeardoorL","nosegeardoorR", + "autobrk","autobrkind","NWS","NWSrect","normbrk-rect","altnbrk","normbrkhyd","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex", + "spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex","spoiler1Lrt","spoiler2Lex","spoiler2Lrt", + "spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf", + "spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf","spoiler5Lf","ALTNbrk","altnbrkhyd","altnbrk-rect","antiskidtext","brakearrow","accupress_text", + "accuonlyarrow","accuonly","braketemp1","normbrkhyd","braketemp2","braketemp3","braketemp4","toparc1","toparc2","toparc3","toparc4","leftuplock", + "noseuplock","rightuplock","Triangle-Left1","Triangle-Left2","Triangle-Nose1","Triangle-Nose2","Triangle-Right1","Triangle-Right2","BSCUrect1", + "BSCUrect2","BSCU1","BSCU2","tirepress1","tirepress2","tirepress3","tirepress4","tirepress5","tirepress6"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { @@ -140,6 +654,39 @@ var canvas_lowerECAMPageWheel = }; var input = { + brakeAutobrkMode: "/controls/autobrake/mode", + brakeLeft1: "/gear/gear[1]/L1brake-temp-degc", + brakeLeft2: "/gear/gear[1]/L2brake-temp-degc", + brakeRight1: "/gear/gear[2]/R3brake-temp-degc", + brakeRight2: "/gear/gear[2]/R4brake-temp-degc", + wheelLeftDoor: "/ECAM/Lower/door-left", + wheelNoseLeftDoor: "/ECAM/Lower/door-nose-left", + wheelNoseRightDoor: "/ECAM/Lower/door-nose-right", + wheelRightDoor: "/ECAM/Lower/door-right", + wheelLeftDoorPos: "/systems/hydraulic/gear/door-left", + wheelNoseDoorPos: "/systems/hydraulic/gear/door-nose", + wheelRightDoorPos: "/systems/hydraulic/gear/door-right", + + spoilerL1: "/fdm/jsbsim/hydraulics/spoiler-l1/final-deg", + spoilerL2: "/fdm/jsbsim/hydraulics/spoiler-l2/final-deg", + spoilerL3: "/fdm/jsbsim/hydraulics/spoiler-l3/final-deg", + spoilerL4: "/fdm/jsbsim/hydraulics/spoiler-l4/final-deg", + spoilerL5: "/fdm/jsbsim/hydraulics/spoiler-l5/final-deg", + spoilerR1: "/fdm/jsbsim/hydraulics/spoiler-r1/final-deg", + spoilerR2: "/fdm/jsbsim/hydraulics/spoiler-r2/final-deg", + spoilerR3: "/fdm/jsbsim/hydraulics/spoiler-r3/final-deg", + spoilerR4: "/fdm/jsbsim/hydraulics/spoiler-r4/final-deg", + spoilerR5: "/fdm/jsbsim/hydraulics/spoiler-r5/final-deg", + spoilerL1Failure: "/systems/failures/spoilers/spoiler-l1", + spoilerL2Failure: "/systems/failures/spoilers/spoiler-l2", + spoilerL3Failure: "/systems/failures/spoilers/spoiler-l3", + spoilerL4Failure: "/systems/failures/spoilers/spoiler-l4", + spoilerL5Failure: "/systems/failures/spoilers/spoiler-l5", + spoilerR1Failure: "/systems/failures/spoilers/spoiler-r1", + spoilerR2Failure: "/systems/failures/spoilers/spoiler-r2", + spoilerR3Failure: "/systems/failures/spoilers/spoiler-r3", + spoilerR4Failure: "/systems/failures/spoilers/spoiler-r4", + spoilerR5Failure: "/systems/failures/spoilers/spoiler-r5", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/res/wheel.svg b/Models/Instruments/Lower-ECAM/res/wheel.svg index 71327dc0..78109a8c 100644 --- a/Models/Instruments/Lower-ECAM/res/wheel.svg +++ b/Models/Instruments/Lower-ECAM/res/wheel.svg @@ -41,9 +41,9 @@ inkscape:window-height="705" id="namedview371" showgrid="true" - inkscape:zoom="2.3145515" - inkscape:cx="701.70396" - inkscape:cy="947.29764" + inkscape:zoom="0.45254834" + inkscape:cx="498.40273" + inkscape:cy="607.76607" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -1190,14 +1190,14 @@ inkscape:label="#text4289" xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - x="455.59897" - y="707.69037" + x="457.25626" + y="745.80786" id="accuonly">ACCU ONLY + x="457.25626" + y="745.80786">ACCU ONLY Date: Fri, 16 Jul 2021 17:10:56 +0100 Subject: [PATCH 13/28] Door page / cruise page --- .../Lower-ECAM/Lower-ECAM-cruise.nas | 86 +++++- .../Lower-ECAM/Lower-ECAM-door.nas | 174 +++++++++++- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 255 +----------------- Models/Instruments/Lower-ECAM/res/crz.svg | 32 +-- Models/Instruments/Lower-ECAM/res/door.svg | 212 ++++++--------- 5 files changed, 360 insertions(+), 399 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas index 5548d196..4b931bca 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas @@ -23,6 +23,86 @@ var canvas_lowerECAMPageCruise = # init obj.update_items = [ + props.UpdateManager.FromHashValue("engOil1", 0.005, func(val) { + if (obj.units) { + obj["Oil1"].setText(sprintf("%2.1f",(0.1 * math.round(val * QT2LTR * 10,5)))); + } else { + obj["Oil1"].setText(sprintf("%2.1f",(0.1 * math.round(val * 10,5)))); + } + }), + props.UpdateManager.FromHashValue("engOil2", 0.005, func(val) { + if (obj.units) { + obj["Oil2"].setText(sprintf("%2.1f",(0.1 * math.round(val * QT2LTR * 10,5)))); + } else { + obj["Oil2"].setText(sprintf("%2.1f",(0.1 * math.round(val * 10,5)))); + } + }), + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + if (val) { + obj["Fused-weight-unit"].setText("KG"); + obj["OilUnit"].setText("LTR"); + # immediately update parameters + obj["Oil1"].setText(sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[0].getValue() * QT2LTR * 10,5)))); + obj["Oil2"].setText(sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[1].getValue() * QT2LTR * 10,5)))); + obj["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); + obj["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); + } else { + obj["Fused-weight-unit"].setText("LBS"); + obj["OilUnit"].setText("QT"); + obj["Oil1"].setText(sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[0].getValue() * 10,5)))); + obj["Oil2"].setText(sprintf("%2.1f",(0.1 * math.round(pts.Engines.Engine.oilQt[1].getValue() * 10,5)))); + obj["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); + obj["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); + } + }), + props.UpdateManager.FromHashValue("engFuelUsed1", 1, func(val) { + if (obj.units) { + obj["FUsed1"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUsed1"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashValue("engFuelUsed2", 1, func(val) { + if (obj.units) { + obj["FUsed2"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUsed2"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashList(["engFuelUsed1","engFuelUsed2"], 1, func(val) { + if (obj.units) { + obj["FUsed"].setText(sprintf("%s", math.round((val.engFuelUsed1 + val.engFuelUsed2) * LBS2KGS, 10))); + } else { + obj["FUsed"].setText(sprintf("%s", math.round((val.engFuelUsed1 + val.engFuelUsed2), 10))); + } + }), + props.UpdateManager.FromHashValue("pressDelta", 0.05, func(val) { + if (val > 31.9) { + obj["deltaPSI"].setText(sprintf("%2.1f", 31.9)); + } else if (val < -9.9) { + obj["deltaPSI"].setText(sprintf("%2.1f", -9.9)); + } else { + obj["deltaPSI"].setText(sprintf("%2.1f", val)); + } + }), + props.UpdateManager.FromHashValue("pressVS", 25, func(val) { + if (val > 9950) { + obj["CABVS"].setText(sprintf("%4.0f", 9950)); + } else if (val < -9950) { + obj["CABVS"].setText(sprintf("%4.0f", -9950)); + } else { + obj["CABVS"].setText(sprintf("%-4.0f", math.round(val,50))); + } + }), + props.UpdateManager.FromHashValue("condTempCockpit", 0.5, func(val) { + obj["CKPT-TEMP"].setText(sprintf("%2.0f",val)); + }), + props.UpdateManager.FromHashValue("condTempAft", 0.5, func(val) { + obj["AFT-TEMP"].setText(sprintf("%2.0f",val)); + }), + props.UpdateManager.FromHashValue("condTempFwd", 0.5, func(val) { + obj["FWD-TEMP"].setText(sprintf("%2.0f",val)); + }), ]; obj.displayedGForce = 0; @@ -62,10 +142,8 @@ var canvas_lowerECAMPageCruise = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return["Oil1","Oil2","FUsed1","FUsed2","FUsed","VIB1N1","VIB1N2","VIB2N1","VIB2N2","deltaPSI","LDGELEV-AUTO","LDGELEV","CABVS","CABALT","VS-Arrow-UP","VS-Arrow-DN","CKPT-TEMP","FWD-TEMP","AFT-TEMP","Fused-weight-unit"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas index acaa3f50..9e279235 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-door.nas @@ -21,8 +21,171 @@ var canvas_lowerECAMPageDoor = obj.units = acconfig_weight_kgs.getValue(); # init + obj["Cabin2LeftSlide"].hide(); + obj["Cabin2RightSlide"].hide(); + obj["Cabin3LeftSlide"].hide(); + obj["Cabin3RightSlide"].hide(); + + obj["DOOROXY-REGUL-LO-PR"].hide(); + obj["AvionicsLine1"].hide(); + obj["AvionicsLine2"].hide(); + obj["AvionicsLbl1"].hide(); + obj["AvionicsLbl2"].hide(); + obj["ExitLLine"].hide(); + obj["ExitLLbl"].hide(); + obj["ExitRLine"].hide(); + obj["ExitRLbl"].hide(); + obj["Cabin2Left"].hide(); + obj["Cabin2LeftLine"].hide(); + obj["Cabin2LeftLbl"].hide(); + obj["Cabin2Right"].hide(); + obj["Cabin2RightLine"].hide(); + obj["Cabin2RightLbl"].hide(); + obj["Cabin3Left"].hide(); + obj["Cabin3LeftLine"].hide(); + obj["Cabin3LeftLbl"].hide(); + obj["Cabin3Right"].hide(); + obj["Cabin3RightLine"].hide(); + obj["Cabin3RightLbl"].hide(); + obj.update_items = [ + props.UpdateManager.FromHashValue("doorL1", nil, func(val) { + if (val > 0) { + obj["Cabin1Left"].show(); + obj["Cabin1Left"].setColor(0.7333,0.3803,0); + obj["Cabin1Left"].setColorFill(0.7333,0.3803,0); + obj["Cabin1LeftLbl"].show(); + obj["Cabin1LeftLine"].show(); + obj["Cabin1LeftSlide"].hide(); + } else { + obj["Cabin1Left"].setColor(0.0509,0.7529,0.2941); + obj["Cabin1Left"].setColorFill(0,0,0); + obj["Cabin1LeftLbl"].hide(); + obj["Cabin1LeftLine"].hide(); + obj["Cabin1LeftSlide"].show(); + } + }), + props.UpdateManager.FromHashValue("doorL4", nil, func(val) { + if (val > 0) { + obj["Cabin4Left"].show(); + obj["Cabin4Left"].setColor(0.7333,0.3803,0); + obj["Cabin4Left"].setColorFill(0.7333,0.3803,0); + obj["Cabin4LeftLbl"].show(); + obj["Cabin4LeftLine"].show(); + obj["Cabin4LeftSlide"].hide(); + } else { + obj["Cabin4Left"].setColor(0.0509,0.7529,0.2941); + obj["Cabin4Left"].setColorFill(0,0,0); + obj["Cabin4LeftLbl"].hide(); + obj["Cabin4LeftLine"].hide(); + obj["Cabin4LeftSlide"].show(); + } + }), + props.UpdateManager.FromHashValue("doorR1", nil, func(val) { + if (val > 0) { + obj["Cabin1Right"].show(); + obj["Cabin1Right"].setColor(0.7333,0.3803,0); + obj["Cabin1Right"].setColorFill(0.7333,0.3803,0); + obj["Cabin1RightLbl"].show(); + obj["Cabin1RightLine"].show(); + obj["Cabin1RightSlide"].hide(); + } else { + obj["Cabin1Right"].setColor(0.0509,0.7529,0.2941); + obj["Cabin1Right"].setColorFill(0,0,0); + obj["Cabin1RightLbl"].hide(); + obj["Cabin1RightLine"].hide(); + obj["Cabin1RightSlide"].show(); + } + }), + props.UpdateManager.FromHashValue("doorR4", nil, func(val) { + if (val > 0) { + obj["Cabin4Right"].show(); + obj["Cabin4Right"].setColor(0.7333,0.3803,0); + obj["Cabin4Right"].setColorFill(0.7333,0.3803,0); + obj["Cabin4RightLbl"].show(); + obj["Cabin4RightLine"].show(); + obj["Cabin4RightSlide"].hide(); + } else { + obj["Cabin4Right"].setColor(0.0509,0.7529,0.2941); + obj["Cabin4Right"].setColorFill(0,0,0); + obj["Cabin4RightLbl"].hide(); + obj["Cabin4RightLine"].hide(); + obj["Cabin4RightSlide"].show(); + } + }), + props.UpdateManager.FromHashValue("cargoAft", nil, func(val) { + if (val > 0) { + obj["Cargo2Door"].setColor(0.7333,0.3803,0); + obj["Cargo2Door"].setColorFill(0.7333,0.3803,0); + obj["Cargo2Lbl"].show(); + obj["Cargo2Line"].show(); + } else { + obj["Cargo2Door"].setColor(0.0509,0.7529,0.2941); + obj["Cargo2Door"].setColorFill(0,0,0); + obj["Cargo2Lbl"].hide(); + obj["Cargo2Line"].hide(); + } + }), + props.UpdateManager.FromHashValue("cargoBulk", nil, func(val) { + if (val > 0) { + obj["Bulk"].setColor(0.7333,0.3803,0); + obj["Bulk"].setColorFill(0.7333,0.3803,0); + obj["BulkLbl"].show(); + obj["BulkLine"].show(); + } else { + obj["Bulk"].setColor(0.0509,0.7529,0.2941); + obj["Bulk"].setColorFill(0,0,0); + obj["BulkLbl"].hide(); + obj["BulkLine"].hide(); + } + }), + props.UpdateManager.FromHashValue("cargoFwd", nil, func(val) { + if (val > 0) { + obj["Cargo1Door"].setColor(0.7333,0.3803,0); + obj["Cargo1Door"].setColorFill(0.7333,0.3803,0); + obj["Cargo1Lbl"].show(); + obj["Cargo1Line"].show(); + } else { + obj["Cargo1Door"].setColor(0.0509,0.7529,0.2941); + obj["Cargo1Door"].setColorFill(0,0,0); + obj["Cargo1Lbl"].hide(); + obj["Cargo1Line"].hide(); + } + }), + props.UpdateManager.FromHashValue("oxyPB", nil, func(val) { + if (val) { + obj["DOOROXY-OxyIndicator"].setColor(0.8078,0.8039,0.8078); + obj["DOOROXY-PR"].setColor(0.0509,0.7529,0.2941); + obj["DOOROXY-PR"].setText("1300"); + } else { + obj["DOOROXY-OxyIndicator"].setColor(0.7333,0.3803,0); + obj["DOOROXY-PR"].setColor(0.7333,0.3803,0); + obj["DOOROXY-PR"].setText("0"); + } + }), + props.UpdateManager.FromHashValue("pressVS", nil, func(val) { + if (val > 9950) { + obj["DOOR-VS"].setText(sprintf("%+4.0f", 9950)); + } else if (val < -9950) { + obj["DOOR-VS"].setText(sprintf("%+4.0f", -9950)); + } else { + obj["DOOR-VS"].setText(sprintf("%+4.0f", math.round(val,50))); + } + + if (abs(val) > 2000) { + obj["DOOR-VS"].setColor(0.7333,0.3803,0); + } else { + obj["DOOR-VS"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("FWCPhase", nil, func(val) { + if (val >= 5 and val <= 7) { + obj["DOOR-VS-Container"].show(); + } else { + obj["DOOR-VS-Container"].hide(); + } + }), ]; obj.displayedGForce = 0; @@ -65,7 +228,8 @@ var canvas_lowerECAMPageDoor = return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR","DOOROXY-PR","DOOROXY-OxyIndicator","DOOR-VS","DOOR-VS-Container"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { @@ -140,6 +304,14 @@ var canvas_lowerECAMPageDoor = }; var input = { + doorL1: "/sim/model/door-positions/doorl1/position-norm", + doorL4: "/sim/model/door-positions/doorl4/position-norm", + doorR1: "/sim/model/door-positions/doorr1/position-norm", + doorR4: "/sim/model/door-positions/doorr4/position-norm", + cargoAft: "/sim/model/door-positions/cargoaft/position-norm", + cargoBulk: "/sim/model/door-positions/cargobulk/position-norm", + cargoFwd: "/sim/model/door-positions/cargofwd/position-norm", + oxyPB: "/controls/oxygen/crewOxyPB", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index 6dbc4edf..251a7ddd 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -105,13 +105,6 @@ var pack2_bypass = props.globals.getNode("/systems/pneumatics/pack-2-bypass", 1) var oil_qt1_actual = props.globals.getNode("", 1); var oil_qt2_actual = props.globals.getNode("/engines/engine[1]/oil-qt-actual", 1); var fuel_used_lbs1 = props.globals.getNode("", 1); -var doorL1_pos = props.globals.getNode("/sim/model/door-positions/doorl1/position-norm", 1); -var doorR1_pos = props.globals.getNode("/sim/model/door-positions/doorr1/position-norm", 1); -var doorL4_pos = props.globals.getNode("/sim/model/door-positions/doorl4/position-norm", 1); -var doorR4_pos = props.globals.getNode("/sim/model/door-positions/doorr4/position-norm", 1); -var cargobulk_pos = props.globals.getNode("/sim/model/door-positions/cargobulk/position-norm", 1); -var cargofwd_pos = props.globals.getNode("/sim/model/door-positions/cargofwd/position-norm", 1); -var cargoaft_pos = props.globals.getNode("/sim/model/door-positions/cargoaft/position-norm", 1); var gLoad = props.globals.getNode("", 1); # Hydraulic @@ -796,183 +789,6 @@ var canvas_lowerECAM_bleed = { }, }; - -var canvas_lowerECAM_crz = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_crz, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Oil1","Oil2","FUsed1","FUsed2","FUsed","VIB1N1","VIB1N2","VIB2N1","VIB2N2","deltaPSI","LDGELEV-AUTO","LDGELEV","CABVS","CABALT","VS-Arrow-UP","VS-Arrow-DN","CKPT-TEMP","FWD-TEMP","AFT-TEMP","Fused-weight-unit"]; - }, - update: func() { - - me["Oil1"].setText(sprintf("%2.1f", oil_qt1_actual.getValue())); - me["Oil2"].setText(sprintf("%2.1f", oil_qt2_actual.getValue())); - - if (acconfig_weight_kgs.getValue()) { - me["Fused-weight-unit"].setText("KG"); - me["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); - me["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); - me["FUsed"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10) + math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10)))); - } else { - me["Fused-weight-unit"].setText("LBS"); - me["FUsed1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); - me["FUsed2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); - me["FUsed"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue(), 10) + math.round(fuel_used_lbs2.getValue(), 10)))); - } - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_door = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_door, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"]; - }, - update: func() { - # If you make AirBerlin or Allegiant livery add below - - if (doorL1_pos.getValue() > 0) { - me["Cabin1Left"].show(); - me["Cabin1Left"].setColor(0.7333,0.3803,0); - me["Cabin1Left"].setColorFill(0.7333,0.3803,0); - me["Cabin1LeftLbl"].show(); - me["Cabin1LeftLine"].show(); - } else { - me["Cabin1Left"].setColor(0.0509,0.7529,0.2941); - me["Cabin1Left"].setColorFill(0,0,0); - me["Cabin1LeftLbl"].hide(); - me["Cabin1LeftLine"].hide(); - } - - if (doorR1_pos.getValue() > 0) { - me["Cabin1Right"].show(); - me["Cabin1Right"].setColor(0.7333,0.3803,0); - me["Cabin1Right"].setColorFill(0.7333,0.3803,0); - me["Cabin1RightLbl"].show(); - me["Cabin1RightLine"].show(); - } else { - me["Cabin1Right"].setColor(0.0509,0.7529,0.2941); - me["Cabin1Right"].setColorFill(0,0,0); - me["Cabin1RightLbl"].hide(); - me["Cabin1RightLine"].hide(); - } - - if (doorL4_pos.getValue() > 0) { - me["Cabin4Left"].show(); - me["Cabin4Left"].setColor(0.7333,0.3803,0); - me["Cabin4Left"].setColorFill(0.7333,0.3803,0); - me["Cabin4LeftLbl"].show(); - me["Cabin4LeftLine"].show(); - } else { - me["Cabin4Left"].setColor(0.0509,0.7529,0.2941); - me["Cabin4Left"].setColorFill(0,0,0); - me["Cabin4LeftLbl"].hide(); - me["Cabin4LeftLine"].hide(); - } - - if (doorR4_pos.getValue() > 0) { - me["Cabin4Right"].show(); - me["Cabin4Right"].setColor(0.7333,0.3803,0); - me["Cabin4Right"].setColorFill(0.7333,0.3803,0); - me["Cabin4RightLbl"].show(); - me["Cabin4RightLine"].show(); - } else { - me["Cabin4Right"].setColor(0.0509,0.7529,0.2941); - me["Cabin4Right"].setColorFill(0,0,0); - me["Cabin4RightLbl"].hide(); - me["Cabin4RightLine"].hide(); - } - - if (cargobulk_pos.getValue() > 0) { - me["Bulk"].setColor(0.7333,0.3803,0); - me["Bulk"].setColorFill(0.7333,0.3803,0); - me["BulkLbl"].show(); - me["BulkLine"].show(); - } else { - me["Bulk"].setColor(0.0509,0.7529,0.2941); - me["Bulk"].setColorFill(0,0,0); - me["BulkLbl"].hide(); - me["BulkLine"].hide(); - } - - if (cargofwd_pos.getValue() > 0) { - me["Cargo1Door"].setColor(0.7333,0.3803,0); - me["Cargo1Door"].setColorFill(0.7333,0.3803,0); - me["Cargo1Lbl"].show(); - me["Cargo1Line"].show(); - } else { - me["Cargo1Door"].setColor(0.0509,0.7529,0.2941); - me["Cargo1Door"].setColorFill(0,0,0); - me["Cargo1Lbl"].hide(); - me["Cargo1Line"].hide(); - } - - if (cargoaft_pos.getValue() > 0) { - me["Cargo2Door"].setColor(0.7333,0.3803,0); - me["Cargo2Door"].setColorFill(0.7333,0.3803,0); - me["Cargo2Lbl"].show(); - me["Cargo2Line"].show(); - } else { - me["Cargo2Door"].setColor(0.0509,0.7529,0.2941); - me["Cargo2Door"].setColorFill(0,0,0); - me["Cargo2Lbl"].hide(); - me["Cargo2Line"].hide(); - } - - me["Cabin1LeftSlide"].hide(); - me["Cabin1RightSlide"].hide(); - me["Cabin2LeftSlide"].hide(); - me["Cabin2RightSlide"].hide(); - me["Cabin3LeftSlide"].hide(); - me["Cabin3RightSlide"].hide(); - me["Cabin4LeftSlide"].hide(); - me["Cabin4RightSlide"].hide(); - - me["DOOROXY-REGUL-LO-PR"].hide(); - me["AvionicsLine1"].hide(); - me["AvionicsLine2"].hide(); - me["AvionicsLbl1"].hide(); - me["AvionicsLbl2"].hide(); - me["ExitLSlide"].hide(); - me["ExitLLine"].hide(); - me["ExitLLbl"].hide(); - me["ExitRSlide"].hide(); - me["ExitRLine"].hide(); - me["ExitRLbl"].hide(); - me["Cabin1LeftSlide"].hide(); - me["Cabin1RightSlide"].hide(); - me["Cabin4LeftSlide"].hide(); - me["Cabin4RightSlide"].hide(); - me["Cabin2Left"].hide(); - me["Cabin2LeftLine"].hide(); - me["Cabin2LeftLbl"].hide(); - me["Cabin2Right"].hide(); - me["Cabin2RightLine"].hide(); - me["Cabin2RightLbl"].hide(); - me["Cabin3Left"].hide(); - me["Cabin3LeftLine"].hide(); - me["Cabin3LeftLbl"].hide(); - me["Cabin3Right"].hide(); - me["Cabin3RightLine"].hide(); - me["Cabin3RightLbl"].hide(); - - me.updateBottomStatus(); - }, -}; - var canvas_lowerECAM_elec = { new: func(canvas_group, file) { var m = {parents: [canvas_lowerECAM_elec, canvas_lowerECAM_base]}; @@ -2646,73 +2462,4 @@ var canvas_lowerECAM_hyd = { me.updateBottomStatus(); }, -}; - if (fbw.FBW.Failures.spoilerr1.getValue() or green_psi < 1500) { - me["spoiler1Rex"].setColor(0.7333,0.3803,0); - me["spoiler1Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R1.getValue() < 1.5) { - me["spoiler1Rf"].show(); - } else { - me["spoiler1Rf"].hide(); - } - } else { - me["spoiler1Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr2.getValue() or yellow_psi < 1500) { - me["spoiler2Rex"].setColor(0.7333,0.3803,0); - me["spoiler2Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R2.getValue() < 1.5) { - me["spoiler2Rf"].show(); - } else { - me["spoiler2Rf"].hide(); - } - } else { - me["spoiler2Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr3.getValue() or blue_psi < 1500) { - me["spoiler3Rex"].setColor(0.7333,0.3803,0); - me["spoiler3Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R3.getValue() < 1.5) { - me["spoiler3Rf"].show(); - } else { - me["spoiler3Rf"].hide(); - } - } else { - me["spoiler3Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr4.getValue() or yellow_psi < 1500) { - me["spoiler4Rex"].setColor(0.7333,0.3803,0); - me["spoiler4Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R4.getValue() < 1.5) { - me["spoiler4Rf"].show(); - } else { - me["spoiler4Rf"].hide(); - } - } else { - me["spoiler4Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr5.getValue() or green_psi < 1500) { - me["spoiler5Rex"].setColor(0.7333,0.3803,0); - me["spoiler5Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R5.getValue() < 1.5) { - me["spoiler5Rf"].show(); - } else { - me["spoiler5Rf"].hide(); - } - } else { - me["spoiler5Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Rf"].hide(); - } +}; \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/res/crz.svg b/Models/Instruments/Lower-ECAM/res/crz.svg index a5626e87..6b0f58fe 100644 --- a/Models/Instruments/Lower-ECAM/res/crz.svg +++ b/Models/Instruments/Lower-ECAM/res/crz.svg @@ -12,7 +12,7 @@ viewBox="0 0 1024 1024" version="1.1" id="svg2" - inkscape:version="0.92.1 r15371" + inkscape:version="0.92.4 (5da689c313, 2019-01-14)" sodipodi:docname="crz.svg"> @@ -37,16 +37,16 @@ guidetolerance="10" inkscape:pageopacity="1" inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1047" + inkscape:window-width="1366" + inkscape:window-height="705" id="namedview371" showgrid="true" - inkscape:zoom="0.5" - inkscape:cx="703.8872" - inkscape:cy="827.31856" - inkscape:window-x="3840" - inkscape:window-y="33" - inkscape:window-maximized="0" + inkscape:zoom="0.35355339" + inkscape:cx="242.38307" + inkscape:cy="680.25272" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" inkscape:current-layer="svg2" inkscape:snap-nodes="false" inkscape:snap-global="false" @@ -298,13 +298,13 @@ 400 0.0 + sodipodi:role="line">0.2 0.0 + sodipodi:role="line">0.3 0.0 + sodipodi:role="line">0.1 0.0 + sodipodi:role="line">0.2 @@ -37,14 +37,14 @@ guidetolerance="10" inkscape:pageopacity="1" inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1030" + inkscape:window-width="1366" + inkscape:window-height="705" id="namedview371" showgrid="true" - inkscape:zoom="0.7521195" - inkscape:cx="944.15154" - inkscape:cy="187.23728" - inkscape:window-x="1592" + inkscape:zoom="0.35355339" + inkscape:cx="361.49345" + inkscape:cy="1842.4796" + inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="svg2"> @@ -81,8 +81,7 @@ style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="500.75214" y="977.31793" - id="text6232" - sodipodi:linespacing="0%">120000 °C G.LOAD 0.6 + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1">G.LOAD 0.6 SLIDE + style="font-size:32px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE SLIDE + style="font-size:32.86256409px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE SLIDE + y="522.78827" + style="font-size:32.86256409px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE SLIDE + style="font-size:32.86256409px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE + inkscape:label="#path4438" + inkscape:connector-curvature="0" /> EMEREXIT EMEREXIT + inkscape:label="#path4464" + inkscape:connector-curvature="0" /> SLIDE + style="font-size:32px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE SLIDE + style="font-size:32.86256409px;line-height:1.25;fill:#cecdce;fill-opacity:1;">SLIDE OXY + x="852.17371" + y="64.937149" + style="font-size:30.04751396px;line-height:0;fill:#cecdce;fill-opacity:1;stroke-width:2.50395942px;">CKPT OXY REGUL LO PR + x="799.85938" + y="133.49768" + style="font-size:30.04800034px;line-height:0">REGUL LO PR 1300 PSI + x="953.60229" + y="100.29736" + style="font-size:30px;line-height:0">PSI + transform="translate(12.944435,6.250187)"> V/S 1650 FT/MIN - - - + id="DOOR-VS-Arrow-DN" /> - - - + id="DOOR-VS-Arrow-UP" /> From 06175c85413aa5d89a4796e2619079012b9ab46d Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Fri, 16 Jul 2021 20:49:01 +0100 Subject: [PATCH 14/28] FCTL, misc improvements --- .../Lower-ECAM/Lower-ECAM-cruise.nas | 34 +- .../Lower-ECAM/Lower-ECAM-fctl.nas | 472 +++++++++++++++++- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 389 +-------------- Models/Instruments/Lower-ECAM/res/crz.svg | 22 +- Models/Instruments/Lower-ECAM/res/door.svg | 12 +- Models/Instruments/Lower-ECAM/res/fctl.svg | 177 +++---- Nasal/FBW/it-fbw.nas | 2 +- 7 files changed, 605 insertions(+), 503 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas index 4b931bca..23445844 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-cruise.nas @@ -84,6 +84,12 @@ var canvas_lowerECAMPageCruise = } else { obj["deltaPSI"].setText(sprintf("%2.1f", val)); } + + if (val < -0.4 or val > 8.5) { + obj["deltaPSI"].setColor(0.7333,0.3803,0); + } else { + obj["deltaPSI"].setColor(0.0509,0.7529,0.2941); + } }), props.UpdateManager.FromHashValue("pressVS", 25, func(val) { if (val > 9950) { @@ -93,6 +99,32 @@ var canvas_lowerECAMPageCruise = } else { obj["CABVS"].setText(sprintf("%-4.0f", math.round(val,50))); } + + if (val >= 25) { + obj["VS-Arrow-UP"].show(); + obj["VS-Arrow-DN"].hide(); + } elsif (val <= -25) { + obj["VS-Arrow-UP"].hide(); + obj["VS-Arrow-DN"].show(); + } else { + obj["VS-Arrow-UP"].hide(); + obj["VS-Arrow-DN"].hide(); + } + }), + props.UpdateManager.FromHashValue("pressAlt", 25, func(val) { + if (val > 32750) { + obj["CABALT"].setText(sprintf("%5.0f", 32750)); + } else if (val < -9950) { + obj["CABALT"].setText(sprintf("%5.0f", -9950)); + } else { + obj["CABALT"].setText(sprintf("%5.0f", math.round(val,50))); + } + + if (val > 9550) { + obj["CABALT"].setColor(1,0,0); + } else { + obj["CABALT"].setColor(0.0509,0.7529,0.2941); + } }), props.UpdateManager.FromHashValue("condTempCockpit", 0.5, func(val) { obj["CKPT-TEMP"].setText(sprintf("%2.0f",val)); @@ -142,7 +174,7 @@ var canvas_lowerECAMPageCruise = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Oil1","Oil2","FUsed1","FUsed2","FUsed","VIB1N1","VIB1N2","VIB2N1","VIB2N2","deltaPSI","LDGELEV-AUTO","LDGELEV","CABVS","CABALT","VS-Arrow-UP","VS-Arrow-DN","CKPT-TEMP","FWD-TEMP","AFT-TEMP","Fused-weight-unit"]; + return["Oil1","Oil2","OilUnit","FUsed1","FUsed2","FUsed","VIB1N1","VIB1N2","VIB2N1","VIB2N2","deltaPSI","LDGELEV-AUTO","LDGELEV","CABVS","CABALT","VS-Arrow-UP","VS-Arrow-DN","CKPT-TEMP","FWD-TEMP","AFT-TEMP","Fused-weight-unit"]; }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas index e29125f1..931d2a65 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-fctl.nas @@ -23,6 +23,447 @@ var canvas_lowerECAMPageFctl = # init obj.update_items = [ + props.UpdateManager.FromHashList(["green","elac1","elac2","sec2"], nil, func(val) { + if (val.green >= 1450) { + if (val.elac2 or val.sec2) { + obj["elevLgreen"].setColor(0.0509,0.7529,0.2941); + } else { + obj["elevLgreen"].setColor(0.7333,0.3803,0); + } + + if (val.elac2) { + obj["ailLgreen"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ailLgreen"].setColor(0.7333,0.3803,0); + } + if (val.elac1) { + obj["ailRgreen"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ailRgreen"].setColor(0.7333,0.3803,0); + } + obj["ruddergreen"].setColor(0.0509,0.7529,0.2941); + obj["PTgreen"].setColor(0.0509,0.7529,0.2941); + obj["spdbrkgreen"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ailLgreen"].setColor(0.7333,0.3803,0); + obj["ailRgreen"].setColor(0.7333,0.3803,0); + obj["elevLgreen"].setColor(0.7333,0.3803,0); + obj["ruddergreen"].setColor(0.7333,0.3803,0); + obj["PTgreen"].setColor(0.7333,0.3803,0); + obj["spdbrkgreen"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["yellow","elac2","sec2"], nil, func(val) { + if (val.yellow >= 1450) { + if (val.elac2 or val.sec2) { + obj["elevRyellow"].setColor(0.0509,0.7529,0.2941); + } else { + obj["elevRyellow"].setColor(0.7333,0.3803,0); + } + obj["rudderyellow"].setColor(0.0509,0.7529,0.2941); + obj["PTyellow"].setColor(0.0509,0.7529,0.2941); + obj["spdbrkyellow"].setColor(0.0509,0.7529,0.2941); + } else { + obj["elevRyellow"].setColor(0.7333,0.3803,0); + obj["rudderyellow"].setColor(0.7333,0.3803,0); + obj["PTyellow"].setColor(0.7333,0.3803,0); + obj["spdbrkyellow"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["blue","elac1","elac2","sec1"], nil, func(val) { + if (val.blue >= 1500) { + if (val.elac1) { + obj["ailLblue"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ailLblue"].setColor(0.7333,0.3803,0); + } + if (val.elac1 or val.sec1) { + obj["elevLblue"].setColor(0.0509,0.7529,0.2941); + obj["elevRblue"].setColor(0.0509,0.7529,0.2941); + } else { + obj["elevLblue"].setColor(0.7333,0.3803,0); + obj["elevRblue"].setColor(0.7333,0.3803,0); + } + if (val.elac2) { + obj["ailRblue"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ailRblue"].setColor(0.7333,0.3803,0); + } + obj["rudderblue"].setColor(0.0509,0.7529,0.2941); + obj["spdbrkblue"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ailLblue"].setColor(0.7333,0.3803,0); + obj["ailRblue"].setColor(0.7333,0.3803,0); + obj["elevLblue"].setColor(0.7333,0.3803,0); + obj["elevRblue"].setColor(0.7333,0.3803,0); + obj["rudderblue"].setColor(0.7333,0.3803,0); + obj["spdbrkblue"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("fctlAilL", 0.001, func(val) { + obj["ailL"].setTranslation(0, val * 100); + }), + props.UpdateManager.FromHashValue("fctlAilR", 0.001, func(val) { + obj["ailR"].setTranslation(0, val * -100); + }), + props.UpdateManager.FromHashList(["blue","green","elac1","elac2"], nil, func(val) { + if ((val.blue < 1500 or !val.elac1) and (val.green < 1500 or !val.elac2)) { + obj["ailL"].setColor(0.7333,0.3803,0); + } else { + obj["ailL"].setColor(0.0509,0.7529,0.2941); + } + if ((val.green < 1500 or !val.elac1) and (val.blue < 1500 or !val.elac2)) { + obj["ailR"].setColor(0.7333,0.3803,0); + } else { + obj["ailR"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("fctlElevL", 0.001, func(val) { + obj["elevL"].setTranslation(0, val * 100); + }), + props.UpdateManager.FromHashValue("fctlElevR", 0.001, func(val) { + obj["elevR"].setTranslation(0, val * 100); + }), + props.UpdateManager.FromHashList(["blue","green","yellow","elac1","elac2","sec1","sec2"], nil, func(val) { + if ((val.blue < 1500 or (!val.elac1 and !val.sec1)) and (val.green < 1500 or (!val.elac2 and !val.sec2))) { + obj["elevL"].setColor(0.7333,0.3803,0); + } else { + obj["elevL"].setColor(0.0509,0.7529,0.2941); + } + + if ((val.blue < 1500 or (!val.elac1 and !val.sec1)) and (val.yellow < 1500 or (!val.elac2 and !val.sec2))) { + obj["elevR"].setColor(0.7333,0.3803,0); + } else { + obj["elevR"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("fctlElevTrim", 0.01, func(val) { + obj["PT"].setText(sprintf("%2.1f", val)); + if (val >= 0.09) { + obj["PTupdn"].setText("UP"); + obj["PTupdn"].show(); + } elsif (val <= -0.09) { + obj["PTupdn"].setText("DN"); + obj["PTupdn"].show(); + } else { + obj["PTupdn"].hide(); + } + }), + props.UpdateManager.FromHashValue("elac1", nil, func(val) { + if (val) { + obj["elac1"].setColor(0.0509,0.7529,0.2941); + obj["path4249"].setColor(0.0509,0.7529,0.2941); + } else { + obj["elac1"].setColor(0.7333,0.3803,0); + obj["path4249"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("elac2", nil, func(val) { + if (val) { + obj["elac2"].setColor(0.0509,0.7529,0.2941); + obj["path4249-3"].setColor(0.0509,0.7529,0.2941); + } else { + obj["elac2"].setColor(0.7333,0.3803,0); + obj["path4249-3"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("sec1", nil, func(val) { + if (val) { + obj["sec1"].setColor(0.0509,0.7529,0.2941); + obj["path4249-3-6-7"].setColor(0.0509,0.7529,0.2941); + } else { + obj["sec1"].setColor(0.7333,0.3803,0); + obj["path4249-3-6-7"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("sec2", nil, func(val) { + if (val) { + obj["sec2"].setColor(0.0509,0.7529,0.2941); + obj["path4249-3-6-7-5"].setColor(0.0509,0.7529,0.2941); + } else { + obj["sec2"].setColor(0.7333,0.3803,0); + obj["path4249-3-6-7-5"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("sec3", nil, func(val) { + if (val) { + obj["sec3"].setColor(0.0509,0.7529,0.2941); + obj["path4249-3-6"].setColor(0.0509,0.7529,0.2941); + } else { + obj["sec3"].setColor(0.7333,0.3803,0); + obj["path4249-3-6"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["blue","yellow","green"], 25, func(val) { + if (val.green < 1500 and val.yellow < 1500) { + obj["PT"].setColor(0.7333,0.3803,0); + obj["PTupdn"].setColor(0.7333,0.3803,0); + obj["PTcc"].setColor(0.7333,0.3803,0); + } else { + obj["PT"].setColor(0.0509,0.7529,0.2941); + obj["PTupdn"].setColor(0.0509,0.7529,0.2941); + obj["PTcc"].setColor(0.0901,0.6039,0.7176); + } + + if (val.blue < 1500 and val.yellow < 1500 and val.green < 1500) { + obj["rudder"].setColor(0.7333,0.3803,0); + } else { + obj["rudder"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("fctlRudder", 0.001, func(val) { + obj["rudder"].setRotation(val * -0.024); + }), + props.UpdateManager.FromHashValue("fctlRudderTrim", 0.01, func(val) { + obj["rudderTrimInd"].setRotation(val * -0.024); + }), + props.UpdateManager.FromHashValue("fctlTHSJam", nil, func(val) { + if (val) { + obj["pitchTrimStatus"].setColor(0.7333,0.3803,0); + } else { + obj["pitchTrimStatus"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashValue("spoilerL1", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler1Lex"].hide(); + obj["spoiler1Lrt"].show(); + } else { + obj["spoiler1Lrt"].hide(); + obj["spoiler1Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerL2", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler2Lex"].hide(); + obj["spoiler2Lrt"].show(); + } else { + obj["spoiler2Lrt"].hide(); + obj["spoiler2Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerL3", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler3Lex"].hide(); + obj["spoiler3Lrt"].show(); + } else { + obj["spoiler3Lrt"].hide(); + obj["spoiler3Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerL4", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler4Lex"].hide(); + obj["spoiler4Lrt"].show(); + } else { + obj["spoiler4Lrt"].hide(); + obj["spoiler4Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerL5", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler5Lex"].hide(); + obj["spoiler5Lrt"].show(); + } else { + obj["spoiler5Lrt"].hide(); + obj["spoiler5Lex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR1", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler1Rex"].hide(); + obj["spoiler1Rrt"].show(); + } else { + obj["spoiler1Rrt"].hide(); + obj["spoiler1Rex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR2", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler2Rex"].hide(); + obj["spoiler2Rrt"].show(); + } else { + obj["spoiler2Rrt"].hide(); + obj["spoiler2Rex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR3", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler3Rex"].hide(); + obj["spoiler3Rrt"].show(); + } else { + obj["spoiler3Rrt"].hide(); + obj["spoiler3Rex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR4", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler4Rex"].hide(); + obj["spoiler4Rrt"].show(); + } else { + obj["spoiler4Rrt"].hide(); + obj["spoiler4Rex"].show(); + } + }), + props.UpdateManager.FromHashValue("spoilerR5", 0.5, func(val) { + if (val < 1.5) { + obj["spoiler5Rex"].hide(); + obj["spoiler5Rrt"].show(); + } else { + obj["spoiler5Rrt"].hide(); + obj["spoiler5Rex"].show(); + } + }), + props.UpdateManager.FromHashList(["spoilerL1Failure","spoilerL1","green"], nil, func(val) { + if (val.spoilerL1Failure or val.green < 1500) { + obj["spoiler1Lex"].setColor(0.7333,0.3803,0); + obj["spoiler1Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL1 < 1.5) { + obj["spoiler1Lf"].show(); + } else { + obj["spoiler1Lf"].hide(); + } + } else { + obj["spoiler1Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler1Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerL2Failure","spoilerL2","yellow"], nil, func(val) { + if (val.spoilerL2Failure or val.yellow < 1500) { + obj["spoiler2Lex"].setColor(0.7333,0.3803,0); + obj["spoiler2Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL2 < 1.5) { + obj["spoiler2Lf"].show(); + } else { + obj["spoiler2Lf"].hide(); + } + } else { + obj["spoiler2Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler2Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerL3Failure","spoilerL3","blue"], nil, func(val) { + if (val.spoilerL3Failure or val.blue < 1500) { + obj["spoiler3Lex"].setColor(0.7333,0.3803,0); + obj["spoiler3Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL3 < 1.5) { + obj["spoiler3Lf"].show(); + } else { + obj["spoiler3Lf"].hide(); + } + } else { + obj["spoiler3Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler3Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerL4Failure","spoilerL4","yellow"], nil, func(val) { + if (val.spoilerL4Failure or val.yellow < 1500) { + obj["spoiler4Lex"].setColor(0.7333,0.3803,0); + obj["spoiler4Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL4 < 1.5) { + obj["spoiler4Lf"].show(); + } else { + obj["spoiler4Lf"].hide(); + } + } else { + obj["spoiler4Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler4Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerL5Failure","spoilerL5","green"], nil, func(val) { + if (val.spoilerL5Failure or val.green < 1500) { + obj["spoiler5Lex"].setColor(0.7333,0.3803,0); + obj["spoiler5Lrt"].setColor(0.7333,0.3803,0); + if (val.spoilerL5 < 1.5) { + obj["spoiler5Lf"].show(); + } else { + obj["spoiler5Lf"].hide(); + } + } else { + obj["spoiler5Lex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler5Lf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR1Failure","spoilerR1","green"], nil, func(val) { + if (val.spoilerR1Failure or val.green < 1500) { + obj["spoiler1Rex"].setColor(0.7333,0.3803,0); + obj["spoiler1Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR1 < 1.5) { + obj["spoiler1Rf"].show(); + } else { + obj["spoiler1Rf"].hide(); + } + } else { + obj["spoiler1Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler1Rf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR2Failure","spoilerR2","yellow"], nil, func(val) { + if (val.spoilerR2Failure or val.yellow < 1500) { + obj["spoiler2Rex"].setColor(0.7333,0.3803,0); + obj["spoiler2Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR2 < 1.5) { + obj["spoiler2Rf"].show(); + } else { + obj["spoiler2Rf"].hide(); + } + } else { + obj["spoiler2Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler2Rf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR3Failure","spoilerR3","blue"], nil, func(val) { + if (val.spoilerR3Failure or val.blue < 1500) { + obj["spoiler3Rex"].setColor(0.7333,0.3803,0); + obj["spoiler3Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR3 < 1.5) { + obj["spoiler3Rf"].show(); + } else { + obj["spoiler3Rf"].hide(); + } + } else { + obj["spoiler3Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler3Rf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR4Failure","spoilerR4","yellow"], nil, func(val) { + if (val.spoilerR4Failure or val.yellow < 1500) { + obj["spoiler4Rex"].setColor(0.7333,0.3803,0); + obj["spoiler4Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR4 < 1.5) { + obj["spoiler4Rf"].show(); + } else { + obj["spoiler4Rf"].hide(); + } + } else { + obj["spoiler4Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler4Rf"].hide(); + } + }), + props.UpdateManager.FromHashList(["spoilerR5Failure","spoilerR5","green"], nil, func(val) { + if (val.spoilerR5Failure or val.green < 1500) { + obj["spoiler5Rex"].setColor(0.7333,0.3803,0); + obj["spoiler5Rrt"].setColor(0.7333,0.3803,0); + if (val.spoilerR5 < 1.5) { + obj["spoiler5Rf"].show(); + } else { + obj["spoiler5Rf"].hide(); + } + } else { + obj["spoiler5Rex"].setColor(0.0509,0.7529,0.2941); + obj["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941); + obj["spoiler5Rf"].hide(); + } + }), ]; obj.displayedGForce = 0; @@ -62,10 +503,11 @@ var canvas_lowerECAMPageFctl = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return["ailL","ailR","elevL","elevR","PTcc","PT","PTupdn","elac1","elac2","sec1","sec2","sec3","ailLblue","ailRblue","elevLblue","elevRblue","rudderblue","ailLgreen","ailRgreen","elevLgreen","ruddergreen","PTgreen", + "elevRyellow","rudderyellow","PTyellow","rudder","spdbrkblue","spdbrkgreen","spdbrkyellow","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex","spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex", + "spoiler1Lrt","spoiler2Lex","spoiler2Lrt","spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf","spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf", + "spoiler5Lf","ailLscale","ailRscale","path4249","path4249-3","path4249-3-6-7","path4249-3-6-7-5","path4249-3-6","pitchTrimStatus","rudderTrimInd"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { @@ -140,6 +582,28 @@ var canvas_lowerECAMPageFctl = }; var input = { + elac1: "/systems/fctl/elac1", + elac2: "/systems/fctl/elac2", + elac1Fail: "/systems/failures/fctl/elac1", + elac2Fail: "/systems/failures/fctl/elac2", + sec1: "/systems/fctl/sec1", + sec2: "/systems/fctl/sec2", + sec3: "/systems/fctl/sec3", + sec1Fail: "/systems/failures/fctl/sec1", + sec2Fail: "/systems/failures/fctl/sec2", + sec3Fail: "/systems/failures/fctl/sec3", + fac1: "/systems/fctl/fac1-healthy-signal", + fac2: "/systems/fctl/fac2-healthy-signal", + fac1Fail: "/systems/failures/fctl/fac1", + fac2Fail: "/systems/failures/fctl/fac2", + fctlAilL: "/ECAM/Lower/aileron-ind-left", + fctlAilR: "/ECAM/Lower/aileron-ind-right", + fctlElevL: "/ECAM/Lower/elevator-ind-left", + fctlElevR: "/ECAM/Lower/elevator-ind-right", + fctlElevTrim: "/ECAM/Lower/elevator-trim-deg", + fctlRudder: "/fdm/jsbsim/hydraulics/rudder/final-deg", + fctlRudderTrim: "/fdm/jsbsim/hydraulics/rudder/trim-deg", + fctlTHSJam: "/systems/failures/fctl/ths-jam", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index 251a7ddd..64dbbd05 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -67,12 +67,12 @@ var oil_qt2 = props.globals.getNode("/ECAM/Lower/Oil-QT[1]", 1); var oil_psi1 = props.globals.getNode("/ECAM/Lower/Oil-PSI[0]", 1); var oil_psi2 = props.globals.getNode("/ECAM/Lower/Oil-PSI[1]", 1); var bleedapu = props.globals.getNode("", 1); -var aileron_ind_left = props.globals.getNode("/ECAM/Lower/aileron-ind-left", 1); +var aileron_ind_left = props.globals.getNode("", 1); var aileron_ind_right = props.globals.getNode("/ECAM/Lower/aileron-ind-right", 1); -var elevator_ind_left = props.globals.getNode("/ECAM/Lower/elevator-ind-left", 1); +var elevator_ind_left = props.globals.getNode("", 1); var elevator_ind_right = props.globals.getNode("/ECAM/Lower/elevator-ind-right", 1); -var elevator_trim_deg = props.globals.getNode("/ECAM/Lower/elevator-trim-deg", 1); -var final_deg = props.globals.getNode("/fdm/jsbsim/hydraulics/rudder/final-deg", 1); +var elevator_trim_deg = props.globals.getNode("", 1); +var final_deg = props.globals.getNode("", 1); var temperature_degc = props.globals.getNode("/environment/temperature-degc", 1); var tank3_content_lbs = props.globals.getNode("/fdm/jsbsim/propulsion/tank[2]/contents-lbs", 1); var ir2_knob = props.globals.getNode("/controls/adirs/ir[1]/knob", 1); @@ -1487,318 +1487,16 @@ var canvas_lowerECAM_eng = { }, }; -var canvas_lowerECAM_fctl = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_fctl, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","ailL","ailR","elevL","elevR","PTcc","PT","PTupdn","elac1","elac2","sec1","sec2","sec3","ailLblue","ailRblue","elevLblue","elevRblue","rudderblue","ailLgreen","ailRgreen","elevLgreen","ruddergreen","PTgreen", - "elevRyellow","rudderyellow","PTyellow","rudder","spdbrkblue","spdbrkgreen","spdbrkyellow","spoiler1Rex","spoiler1Rrt","spoiler2Rex","spoiler2Rrt","spoiler3Rex","spoiler3Rrt","spoiler4Rex","spoiler4Rrt","spoiler5Rex","spoiler5Rrt","spoiler1Lex", - "spoiler1Lrt","spoiler2Lex","spoiler2Lrt","spoiler3Lex","spoiler3Lrt","spoiler4Lex","spoiler4Lrt","spoiler5Lex","spoiler5Lrt","spoiler1Rf","spoiler2Rf","spoiler3Rf","spoiler4Rf","spoiler5Rf","spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf", - "spoiler5Lf","ailLscale","ailRscale","path4249","path4249-3","path4249-3-6-7","path4249-3-6-7-5","path4249-3-6","text4343"]; - }, - update: func() { - blue_psi = systems.HYD.Psi.blue.getValue(); - green_psi = systems.HYD.Psi.green.getValue(); - yellow_psi = systems.HYD.Psi.yellow.getValue(); - elac1Node = fbw.FBW.Computers.elac1.getValue(); - elac2Node = fbw.FBW.Computers.elac2.getValue(); - sec1Node = fbw.FBW.Computers.sec1.getValue(); - sec2Node = fbw.FBW.Computers.sec2.getValue(); - - # Pitch Trim - me["PT"].setText(sprintf("%2.1f", math.round(elevator_trim_deg.getValue(), 0.1))); - - if (math.round(elevator_trim_deg.getValue(), 0.1) >= 0) { - me["PTupdn"].setText(sprintf("UP")); - } else if (math.round(elevator_trim_deg.getValue(), 0.1) < 0) { - me["PTupdn"].setText(sprintf("DN")); - } - - if (green_psi < 1500 and yellow_psi < 1500) { - me["PT"].setColor(0.7333,0.3803,0); - me["PTupdn"].setColor(0.7333,0.3803,0); - me["PTcc"].setColor(0.7333,0.3803,0); - } else { - me["PT"].setColor(0.0509,0.7529,0.2941); - me["PTupdn"].setColor(0.0509,0.7529,0.2941); - me["PTcc"].setColor(0.0509,0.7529,0.2941); - } - if (fbw.FBW.Failures.ths.getBoolValue()) { - me["text4343"].setColor(0.7333,0.3803,0); - } else { - me["text4343"].setColor(0.8078,0.8039,0.8078); - } - - # Ailerons - me["ailL"].setTranslation(0, aileron_ind_left.getValue() * 100); - me["ailR"].setTranslation(0, aileron_ind_right.getValue() * (-100)); - - if ((blue_psi < 1500 or !elac1Node) and (green_psi < 1500 or !elac2Node)) { - me["ailL"].setColor(0.7333,0.3803,0); - } else { - me["ailL"].setColor(0.0509,0.7529,0.2941); - } - if ((green_psi < 1500 or !elac1Node) and (blue_psi < 1500 or !elac2Node)) { - me["ailR"].setColor(0.7333,0.3803,0); - } else { - me["ailR"].setColor(0.0509,0.7529,0.2941); - } # Elevators - me["elevL"].setTranslation(0, elevator_ind_left.getValue() * 100); - me["elevR"].setTranslation(0, elevator_ind_right.getValue() * 100); - - if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (green_psi < 1500 or (!elac2Node and !sec2Node))) { - me["elevL"].setColor(0.7333,0.3803,0); - } else { - me["elevL"].setColor(0.0509,0.7529,0.2941); - } - - if ((blue_psi < 1500 or (!elac1Node and !sec1Node)) and (yellow_psi < 1500 or (!elac2Node and !sec2Node))) { - me["elevR"].setColor(0.7333,0.3803,0); - } else { - me["elevR"].setColor(0.0509,0.7529,0.2941); - } - - # Rudder - me["rudder"].setRotation(final_deg.getValue() * -0.024); - - if (blue_psi < 1500 and yellow_psi < 1500 and green_psi < 1500) { - me["rudder"].setColor(0.7333,0.3803,0); - } else { - me["rudder"].setColor(0.0509,0.7529,0.2941); - } - - # Spoilers - if (spoiler_L1.getValue() < 1.5) { - - } else { - - } - - if (spoiler_L2.getValue() < 1.5) { - me["spoiler2Lex"].hide(); - me["spoiler2Lrt"].show(); - } else { - me["spoiler2Lrt"].hide(); - me["spoiler2Lex"].show(); - } - - if (spoiler_L3.getValue() < 1.5) { - me["spoiler3Lex"].hide(); - me["spoiler3Lrt"].show(); - } else { - me["spoiler3Lrt"].hide(); - me["spoiler3Lex"].show(); - } - - if (spoiler_L4.getValue() < 1.5) { - me["spoiler4Lex"].hide(); - me["spoiler4Lrt"].show(); - } else { - me["spoiler4Lrt"].hide(); - me["spoiler4Lex"].show(); - } - - if (spoiler_L5.getValue() < 1.5) { - me["spoiler5Lex"].hide(); - me["spoiler5Lrt"].show(); - } else { - me["spoiler5Lrt"].hide(); - me["spoiler5Lex"].show(); - } - - if (spoiler_R1.getValue() < 1.5) { - me["spoiler1Rex"].hide(); - me["spoiler1Rrt"].show(); - } else { - me["spoiler1Rrt"].hide(); - me["spoiler1Rex"].show(); - } - - if (spoiler_R2.getValue() < 1.5) { - me["spoiler2Rex"].hide(); - me["spoiler2Rrt"].show(); - } else { - me["spoiler2Rrt"].hide(); - me["spoiler2Rex"].show(); - } - - if (spoiler_R3.getValue() < 1.5) { - me["spoiler3Rex"].hide(); - me["spoiler3Rrt"].show(); - } else { - me["spoiler3Rrt"].hide(); - me["spoiler3Rex"].show(); - } - - if (spoiler_R4.getValue() < 1.5) { - me["spoiler4Rex"].hide(); - me["spoiler4Rrt"].show(); - } else { - me["spoiler4Rrt"].hide(); - me["spoiler4Rex"].show(); - } - - if (spoiler_R5.getValue() < 1.5) { - me["spoiler5Rex"].hide(); - me["spoiler5Rrt"].show(); - } else { - me["spoiler5Rrt"].hide(); - me["spoiler5Rex"].show(); - } - - # Spoiler Fail - if (fbw.FBW.Failures.spoilerl1.getValue() or green_psi < 1500) { - me["spoiler1Lex"].setColor(0.7333,0.3803,0); - me["spoiler1Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L1.getValue() < 1.5) { - me["spoiler1Lf"].show(); - } else { - me["spoiler1Lf"].hide(); - } - } else { - me["spoiler1Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl2.getValue() or yellow_psi < 1500) { - me["spoiler2Lex"].setColor(0.7333,0.3803,0); - me["spoiler2Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L2.getValue() < 1.5) { - me["spoiler2Lf"].show(); - } else { - me["spoiler2Lf"].hide(); - } - } else { - me["spoiler2Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl3.getValue() or blue_psi < 1500) { - me["spoiler3Lex"].setColor(0.7333,0.3803,0); - me["spoiler3Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L3.getValue() < 1.5) { - me["spoiler3Lf"].show(); - } else { - me["spoiler3Lf"].hide(); - } - } else { - me["spoiler3Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl4.getValue() or yellow_psi < 1500) { - me["spoiler4Lex"].setColor(0.7333,0.3803,0); - me["spoiler4Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L4.getValue() < 1.5) { - me["spoiler4Lf"].show(); - } else { - me["spoiler4Lf"].hide(); - } - } else { - me["spoiler4Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerl5.getValue() or green_psi < 1500) { - me["spoiler5Lex"].setColor(0.7333,0.3803,0); - me["spoiler5Lrt"].setColor(0.7333,0.3803,0); - if (spoiler_L5.getValue() < 1.5) { - me["spoiler5Lf"].show(); - } else { - me["spoiler5Lf"].hide(); - } - } else { - me["spoiler5Lex"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Lrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Lf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr1.getValue() or green_psi < 1500) { - me["spoiler1Rex"].setColor(0.7333,0.3803,0); - me["spoiler1Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R1.getValue() < 1.5) { - me["spoiler1Rf"].show(); - } else { - me["spoiler1Rf"].hide(); - } - } else { - me["spoiler1Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler1Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr2.getValue() or yellow_psi < 1500) { - me["spoiler2Rex"].setColor(0.7333,0.3803,0); - me["spoiler2Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R2.getValue() < 1.5) { - me["spoiler2Rf"].show(); - } else { - me["spoiler2Rf"].hide(); - } - } else { - me["spoiler2Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler2Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr3.getValue() or blue_psi < 1500) { - me["spoiler3Rex"].setColor(0.7333,0.3803,0); - me["spoiler3Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R3.getValue() < 1.5) { - me["spoiler3Rf"].show(); - } else { - me["spoiler3Rf"].hide(); - } - } else { - me["spoiler3Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler3Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr4.getValue() or yellow_psi < 1500) { - me["spoiler4Rex"].setColor(0.7333,0.3803,0); - me["spoiler4Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R4.getValue() < 1.5) { - me["spoiler4Rf"].show(); - } else { - me["spoiler4Rf"].hide(); - } - } else { - me["spoiler4Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler4Rf"].hide(); - } - - if (fbw.FBW.Failures.spoilerr5.getValue() or green_psi < 1500) { - me["spoiler5Rex"].setColor(0.7333,0.3803,0); - me["spoiler5Rrt"].setColor(0.7333,0.3803,0); - if (spoiler_R5.getValue() < 1.5) { - me["spoiler5Rf"].show(); - } else { - me["spoiler5Rf"].hide(); - } - } else { - me["spoiler5Rex"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Rrt"].setColor(0.0509,0.7529,0.2941); - me["spoiler5Rf"].hide(); - } + # Flight Computers if (elac1Node) { me["elac1"].setColor(0.0509,0.7529,0.2941); - me["path4249"].setColor(0.0509,0.7529,0.2941); + me.setColor(0.0509,0.7529,0.2941); } else if (!elac1Node or fbw.FBW.Failures.elac1.getValue()) { me["elac1"].setColor(0.7333,0.3803,0); me["path4249"].setColor(0.7333,0.3803,0); @@ -1806,7 +1504,7 @@ var canvas_lowerECAM_fctl = { if (elac2Node) { me["elac2"].setColor(0.0509,0.7529,0.2941); - me["path4249-3"].setColor(0.0509,0.7529,0.2941); + me.setColor(0.0509,0.7529,0.2941); } else if (!elac2Node or fbw.FBW.Failures.elac2.getValue()) { me["elac2"].setColor(0.7333,0.3803,0); me["path4249-3"].setColor(0.7333,0.3803,0); @@ -1837,79 +1535,8 @@ var canvas_lowerECAM_fctl = { } # Hydraulic Indicators - if (blue_psi >= 1500) { - if (elac1Node) { - me["ailLblue"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailLblue"].setColor(0.7333,0.3803,0); - } - if (elac1Node or sec1Node) { - me["elevLblue"].setColor(0.0509,0.7529,0.2941); - me["elevRblue"].setColor(0.0509,0.7529,0.2941); - } else { - me["elevLblue"].setColor(0.7333,0.3803,0); - me["elevRblue"].setColor(0.7333,0.3803,0); - } - if (elac2Node) { - me["ailRblue"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailRblue"].setColor(0.7333,0.3803,0); - } - me["rudderblue"].setColor(0.0509,0.7529,0.2941); - me["spdbrkblue"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailLblue"].setColor(0.7333,0.3803,0); - me["ailRblue"].setColor(0.7333,0.3803,0); - me["elevLblue"].setColor(0.7333,0.3803,0); - me["elevRblue"].setColor(0.7333,0.3803,0); - me["rudderblue"].setColor(0.7333,0.3803,0); - me["spdbrkblue"].setColor(0.7333,0.3803,0); - } + - if (green_psi >= 1500) { - if (elac2Node or sec2Node) { - me["elevLgreen"].setColor(0.0509,0.7529,0.2941); - } else { - me["elevLgreen"].setColor(0.7333,0.3803,0); - } - - if (elac2Node) { - me["ailLgreen"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailLgreen"].setColor(0.7333,0.3803,0); - } - if (elac1Node) { - me["ailRgreen"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailRgreen"].setColor(0.7333,0.3803,0); - } - me["ruddergreen"].setColor(0.0509,0.7529,0.2941); - me["PTgreen"].setColor(0.0509,0.7529,0.2941); - me["spdbrkgreen"].setColor(0.0509,0.7529,0.2941); - } else { - me["ailLgreen"].setColor(0.7333,0.3803,0); - me["ailRgreen"].setColor(0.7333,0.3803,0); - me["elevLgreen"].setColor(0.7333,0.3803,0); - me["ruddergreen"].setColor(0.7333,0.3803,0); - me["PTgreen"].setColor(0.7333,0.3803,0); - me["spdbrkgreen"].setColor(0.7333,0.3803,0); - } - - if (yellow_psi >= 1500) { - if (elac2Node or sec2Node) { - me["elevRyellow"].setColor(0.0509,0.7529,0.2941); - } else { - me["elevRyellow"].setColor(0.7333,0.3803,0); - } - me["rudderyellow"].setColor(0.0509,0.7529,0.2941); - me["PTyellow"].setColor(0.0509,0.7529,0.2941); - me["spdbrkyellow"].setColor(0.0509,0.7529,0.2941); - } else { - me["elevRyellow"].setColor(0.7333,0.3803,0); - me["rudderyellow"].setColor(0.7333,0.3803,0); - me["PTyellow"].setColor(0.7333,0.3803,0); - me["spdbrkyellow"].setColor(0.7333,0.3803,0); - } me.updateBottomStatus(); }, diff --git a/Models/Instruments/Lower-ECAM/res/crz.svg b/Models/Instruments/Lower-ECAM/res/crz.svg index 6b0f58fe..bfc066bb 100644 --- a/Models/Instruments/Lower-ECAM/res/crz.svg +++ b/Models/Instruments/Lower-ECAM/res/crz.svg @@ -41,9 +41,9 @@ inkscape:window-height="705" id="namedview371" showgrid="true" - inkscape:zoom="0.35355339" - inkscape:cx="242.38307" - inkscape:cy="680.25272" + inkscape:zoom="1" + inkscape:cx="470.5927" + inkscape:cy="1012.5262" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -337,14 +337,14 @@ xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:-1.60000002px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:4.02423px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="399.71744" - y="631.84998" + y="628.96643" id="ELEC-IDG-2-num-label" inkscape:label="#text5149" transform="scale(0.96119963,1.0403666)">P + transform="matrix(-0.55570012,0,0,0.85384443,799.83103,551.6097)" /> N1 0 + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;text-anchor:start;fill:#0dc04b;stroke-width:1px">500 REGUL LO PR 1300 1650 @@ -37,14 +37,14 @@ guidetolerance="10" inkscape:pageopacity="1" inkscape:pageshadow="2" - inkscape:window-width="1920" - inkscape:window-height="1030" + inkscape:window-width="1366" + inkscape:window-height="705" id="namedview371" - showgrid="true" - inkscape:zoom="1" - inkscape:cx="683.58709" - inkscape:cy="286.7536" - inkscape:window-x="1592" + showgrid="false" + inkscape:zoom="1.28" + inkscape:cx="608.14718" + inkscape:cy="323.45523" + inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="svg2"> @@ -81,8 +81,7 @@ style="font-style:normal;font-weight:normal;line-height:0%;font-family:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#179ab7;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="500.75214" y="977.31793" - id="text6232" - sodipodi:linespacing="0%">120000 °C G.LOAD 0.6 + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:center;text-anchor:middle;fill:#bb6100;fill-opacity:1">G.LOAD 0.6   - DN ° + style="font-size:32px;line-height:1.25;fill:#179ab7;fill-opacity:1;">°  AIL L  AIL R + y="408.59415" /> G - B + y="408.1442" /> B + y="408.1442" /> G L R + y="408.69415" /> B + y="664.86768" /> B + y="664.86139" /> G + y="663.84418" /> B + y="663.84418" /> Y ELEV ELEV 5 + diff --git a/Nasal/FBW/it-fbw.nas b/Nasal/FBW/it-fbw.nas index 48b5f427..ad04e827 100644 --- a/Nasal/FBW/it-fbw.nas +++ b/Nasal/FBW/it-fbw.nas @@ -67,7 +67,7 @@ var FBW = { rtlu1: props.globals.getNode("/systems/failures/fctl/rtlu-1"), rtlu2: props.globals.getNode("/systems/failures/fctl/rtlu-2"), rtlu2: props.globals.getNode("/systems/failures/fctl/rtlu-2"), - ths: props.globals.getNode("/systems/failures/fctl/ths-jam"), + ths: props.globals.getNode(""), spoilerl1: props.globals.getNode(""), spoilerl2: props.globals.getNode("/systems/failures/spoilers/spoiler-l2"), spoilerl3: props.globals.getNode("/systems/failures/spoilers/spoiler-l3"), From fd46e987a59ad2ecc2556dbc7ed24eea10106174 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sat, 17 Jul 2021 16:55:55 +0100 Subject: [PATCH 15/28] Fuel page --- .../Instruments/Lower-ECAM/Lower-ECAM-APU.nas | 1 + .../Lower-ECAM/Lower-ECAM-fuel.nas | 461 ++++++++++++++++- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 346 ------------- Models/Instruments/Lower-ECAM/res/fuel.svg | 474 +++++++++--------- 4 files changed, 707 insertions(+), 575 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas index b45a809b..55015168 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas @@ -297,6 +297,7 @@ var input = { apuEgtRot: "/ECAM/Lower/APU-EGT", apuGenPB: "/controls/electrical/switches/apu", apuGLC: "/systems/electrical/relay/apu-glc/contact-pos", + apuFireBtn: "/controls/apu/fire-btn", apuFlap: "/controls/apu/inlet-flap/position-norm", apuFuelPump: "/systems/fuel/pumps/apu-operate", apuFuelPumpsOff: "/systems/fuel/pumps/all-eng-pump-off", diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas index ea3ca35b..4da77543 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-fuel.nas @@ -1,6 +1,9 @@ # A3XX Lower ECAM Canvas # Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath +var fuel_used_lbs1 = props.globals.getNode("/systems/fuel/fuel-used-1", 1); +var fuel_used_lbs2 = props.globals.getNode("/systems/fuel/fuel-used-2", 1); + var canvas_lowerECAMPageFuel = { new: func(svg,name) { @@ -21,8 +24,430 @@ var canvas_lowerECAMPageFuel = obj.units = acconfig_weight_kgs.getValue(); # init + obj["FUEL-Left-blocked"].hide(); + obj["FUEL-Right-blocked"].hide(); + obj["FUEL-Left-Outer-Inacc"].hide(); + obj["FUEL-Left-Inner-Inacc"].hide(); + obj["FUEL-Right-Outer-Inacc"].hide(); + obj["FUEL-Right-Inner-Inacc"].hide(); + obj["FUEL-Center-Inacc"].hide(); obj.update_items = [ + props.UpdateManager.FromHashValue("acconfigUnits", nil, func(val) { + if (val) { + obj["FOB-weight-unit"].setText("KG"); + obj["Fused-weight-unit"].setText("KG"); + obj["FFlow-weight-unit"].setText("KG/MIN"); + obj["FUEL-On-Board"].setText(sprintf("%s", math.round(pts.Consumables.Fuel.totalFuelLbs.getValue() * LBS2KGS, 10))); + obj["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue() * LBS2KGS, 10))); + obj["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue() * LBS2KGS, 10))); + obj["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue() * LBS2KGS, 10))); + obj["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue() * LBS2KGS, 10))); + obj["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue() * LBS2KGS, 10))); + obj["FUEL-Flow-per-min"].setText(sprintf("%s", math.round(((pts.Engines.Engine.fuelFlow[0].getValue() + pts.Engines.Engine.fuelFlow[1].getValue()) * LBS2KGS) / 60, 10))); + obj["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); + obj["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); + obj["FUEL-used-both"].setText(sprintf("%s", (math.round((fuel_used_lbs1.getValue() * LBS2KGS) + (fuel_used_lbs2.getValue() * LBS2KGS), 10)))); + } else { + obj["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); + obj["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); + obj["FUEL-used-both"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue() + fuel_used_lbs2.getValue(), 10)))); + obj["FUEL-Flow-per-min"].setText(sprintf("%s", math.round((pts.Engines.Engine.fuelFlow[0].getValue() + pts.Engines.Engine.fuelFlow[1].getValue()) / 60, 10))); + obj["FOB-weight-unit"].setText("LBS"); + obj["Fused-weight-unit"].setText("LBS"); + obj["FFlow-weight-unit"].setText("LBS/MIN"); + obj["FUEL-On-Board"].setText(sprintf("%s", math.round(pts.Consumables.Fuel.totalFuelLbs.getValue(), 10))); + obj["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue(), 10))); + obj["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue(), 10))); + obj["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue(), 10))); + obj["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue(), 10))); + obj["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue(), 10))); + } + }), + props.UpdateManager.FromHashValue("engFuelUsed1", 0.5, func(val) { + if (obj.units) { + obj["FUEL-used-1"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUEL-used-1"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashValue("engFuelUsed2", 0.5, func(val) { + if (obj.units) { + obj["FUEL-used-2"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUEL-used-2"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashList(["engFuelUsed1","engFuelUsed2"], 0.5, func(val) { + if (obj.units) { + obj["FUEL-used-both"].setText(sprintf("%s", (math.round((val.engFuelUsed1 * LBS2KGS) + (val.engFuelUsed2 * LBS2KGS), 10)))); + } else { + obj["FUEL-used-both"].setText(sprintf("%s", (math.round(val.engFuelUsed1 + val.engFuelUsed2, 10)))); + } + }), + props.UpdateManager.FromHashValue("fuelLeftOuterQty", 0.25, func(val) { + if (obj.units) { + obj["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashValue("fuelRightOuterQty", 0.25, func(val) { + if (obj.units) { + obj["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashValue("fuelLeftInnerQty", 0.25, func(val) { + if (obj.units) { + obj["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashValue("fuelRightInnerQty", 0.25, func(val) { + if (obj.units) { + obj["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashList(["fadecPower1","fadecPower2","fadecPowerStart","fuelflow_1","fuelflow_2"], nil, func(val) { + if (val.fadecPower1 or val.fadecPower2 or val.fadecPowerStart) { + obj["FUEL-Flow-per-min"].setColor(0.0509,0.7529,0.2941); + if (obj.units) { + obj["FUEL-Flow-per-min"].setText(sprintf("%s", math.round(((val.fuelflow_1 + val.fuelflow_2) * LBS2KGS) / 60, 10))); + } else { + obj["FUEL-Flow-per-min"].setText(sprintf("%s", math.round((val.fuelflow_1 + val.fuelflow_2) / 60, 10))); + } + } else { + obj["FUEL-Flow-per-min"].setColor(0.7333,0.3803,0); + obj["FUEL-Flow-per-min"].setText("XX"); + } + }), + props.UpdateManager.FromHashValue("N1_actual_1", 0.05, func(val) { + if (val <= 18.8) { + obj["ENG1idFFlow"].setColor(0.7333,0.3803,0); + obj["FUEL-ENG-1-label"].setColor(0.7333,0.3803,0); + } else { + obj["ENG1idFFlow"].setColor(0.8078,0.8039,0.8078); + obj["FUEL-ENG-1-label"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashValue("N1_actual_2", 0.05, func(val) { + if (val <= 18.8) { + obj["ENG2idFFlow"].setColor(0.7333,0.3803,0); + obj["FUEL-ENG-2-label"].setColor(0.7333,0.3803,0); + } else { + obj["ENG2idFFlow"].setColor(0.8078,0.8039,0.8078); + obj["FUEL-ENG-2-label"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashValue("fuelLeftSwitch1", nil, func(val) { + if (val) { + obj["FUEL-Pump-Left-1-Open"].show(); + obj["FUEL-Pump-Left-1-Closed"].hide(); + obj["FUEL-Pump-Left-1"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Left-1"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Left-1-Square"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Left-1-Open"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Left-1-Closed"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["FUEL-Pump-Left-1-Open"].hide(); + obj["FUEL-Pump-Left-1-Closed"].show(); + obj["FUEL-Pump-Left-1"].setColor(0.7333,0.3803,0); + obj["FUEL-Pump-Left-1-Square"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Left-1"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Left-1-Open"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Left-1-Closed"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("fuelLeftSwitch2", nil, func(val) { + if (val) { + obj["FUEL-Pump-Left-2-Open"].show(); + obj["FUEL-Pump-Left-2-Closed"].hide(); + obj["FUEL-Pump-Left-2"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Left-2"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Left-2-Square"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Left-2-Open"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Left-2-Closed"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["FUEL-Pump-Left-2-Open"].hide(); + obj["FUEL-Pump-Left-2-Closed"].show(); + obj["FUEL-Pump-Left-2"].setColor(0.7333,0.3803,0); + obj["FUEL-Pump-Left-2"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Left-2-Square"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Left-2-Open"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Left-2-Closed"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("fuelCenterSwitch1", nil, func(val) { + if (val) { + obj["FUEL-Pump-Center-1-Open"].show(); + obj["FUEL-Pump-Center-1-Closed"].hide(); + obj["FUEL-Pump-Center-1"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Center-1"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Center-1-Square"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Center-1-Open"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Center-1-Closed"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["FUEL-Pump-Center-1-Open"].hide(); + obj["FUEL-Pump-Center-1-Closed"].show(); + obj["FUEL-Pump-Center-1"].setColor(0.7333,0.3803,0); + obj["FUEL-Pump-Center-1"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Center-1-Square"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Center-1-Open"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Center-1-Closed"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("fuelCenterSwitch2", nil, func(val) { + if (val) { + obj["FUEL-Pump-Center-2-Open"].show(); + obj["FUEL-Pump-Center-2-Closed"].hide(); + obj["FUEL-Pump-Center-2"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Center-2"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Center-2-Square"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Center-2-Open"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Center-2-Closed"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["FUEL-Pump-Center-2-Open"].hide(); + obj["FUEL-Pump-Center-2-Closed"].show(); + obj["FUEL-Pump-Center-2"].setColor(0.7333,0.3803,0); + obj["FUEL-Pump-Center-2"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Center-2-Square"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Center-2-Open"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Center-2-Closed"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("fuelRightSwitch1", nil, func(val) { + if (val) { + obj["FUEL-Pump-Right-1-Open"].show(); + obj["FUEL-Pump-Right-1-Closed"].hide(); + obj["FUEL-Pump-Right-1"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Right-1"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Right-1-Square"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Right-1-Open"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Right-1-Closed"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["FUEL-Pump-Right-1-Open"].hide(); + obj["FUEL-Pump-Right-1-Closed"].show(); + obj["FUEL-Pump-Right-1"].setColor(0.7333,0.3803,0); + obj["FUEL-Pump-Right-1"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Right-1-Square"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Right-1-Open"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Right-1-Closed"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("fuelRightSwitch2", nil, func(val) { + if (val) { + obj["FUEL-Pump-Right-2-Open"].show(); + obj["FUEL-Pump-Right-2-Closed"].hide(); + obj["FUEL-Pump-Right-2"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Right-2"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Right-2-Square"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Right-2-Open"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-Pump-Right-2-Closed"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["FUEL-Pump-Right-2-Open"].hide(); + obj["FUEL-Pump-Right-2-Closed"].show(); + obj["FUEL-Pump-Right-2"].setColor(0.7333,0.3803,0); + obj["FUEL-Pump-Right-2"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Right-2-Square"].setColor(0.7333,0.3803,0); + obj["FUEL-Pump-Right-2-Open"].setColorFill(0.7333,0.3803,0); + obj["FUEL-Pump-Right-2-Closed"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["fuelCenterSwitch1","fuelCenterSwitch2"], nil, func(val) { + if (!val.fuelCenterSwitch1 and !val.fuelCenterSwitch2) { + obj["FUEL-Center-blocked"].show(); + } else { + obj["FUEL-Center-blocked"].hide(); + } + }), + props.UpdateManager.FromHashList(["fuelCrossfeedValve","fuelCrossfeedSwitch"], nil, func(val) { + if (val.fuelCrossfeedValve == 1) { + obj["FUEL-XFEED"].setRotation(0); + obj["FUEL-XFEED-pipes"].show(); + if (val.fuelCrossfeedSwitch) { + obj["FUEL-XFEED"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-XFEED"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-XFEED-Cross"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["FUEL-XFEED"].setColor(0.7333,0.3803,0); + obj["FUEL-XFEED"].setColorFill(0.7333,0.3803,0); + obj["FUEL-XFEED-Cross"].setColorFill(0.7333,0.3803,0); + } + } elsif (val.fuelCrossfeedValve == 0) { + obj["FUEL-XFEED"].setRotation(90 * D2R); + obj["FUEL-XFEED-pipes"].hide(); + if (!val.fuelCrossfeedSwitch) { + obj["FUEL-XFEED"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-XFEED"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-XFEED-Cross"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["FUEL-XFEED"].setColor(0.7333,0.3803,0); + obj["FUEL-XFEED"].setColorFill(0.7333,0.3803,0); + obj["FUEL-XFEED-Cross"].setColorFill(0.7333,0.3803,0); + } + } else { + obj["FUEL-XFEED"].setRotation(45 * D2R); + obj["FUEL-XFEED-pipes"].hide(); + obj["FUEL-XFEED"].setColor(0.7333,0.3803,0); + obj["FUEL-XFEED"].setColorFill(0.7333,0.3803,0); + obj["FUEL-XFEED-Cross"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["fuelEngine1Valve","engineCutoff1"], nil, func(val) { + if (val.fuelEngine1Valve) { + if (val.fuelEngine1Valve == 1) { + obj["FUEL-ENG-Master-1"].setRotation(0); + } else { + obj["FUEL-ENG-Master-1"].setRotation(45 * D2R); + } + if (val.engineCutoff1) { + obj["FUEL-ENG-Master-1"].setColor(0.7333,0.3803,0); + obj["FUEL-ENG-Master-1"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-Master-1-Cross"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-1-pipe"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-1-pipe"].setColorFill(0.7333,0.3803,0); + } else { + obj["FUEL-ENG-Master-1"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-ENG-Master-1"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-ENG-Master-1-Cross"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-ENG-1-pipe"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-ENG-1-pipe"].setColorFill(0.0509,0.7529,0.2941); + } + } else { + obj["FUEL-ENG-Master-1"].setRotation(90 * D2R); + obj["FUEL-ENG-Master-1"].setColor(0.7333,0.3803,0); + obj["FUEL-ENG-Master-1"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-Master-1-Cross"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-1-pipe"].setColor(0.7333,0.3803,0); + obj["FUEL-ENG-1-pipe"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["fuelEngine2Valve","engineCutoff2"], nil, func(val) { + if (val.fuelEngine2Valve) { + if (val.fuelEngine2Valve == 1) { + obj["FUEL-ENG-Master-2"].setRotation(0); + } else { + obj["FUEL-ENG-Master-2"].setRotation(45 * D2R); + } + if (val.engineCutoff1) { + obj["FUEL-ENG-Master-2"].setColor(0.7333,0.3803,0); + obj["FUEL-ENG-Master-2"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-Master-2-Cross"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-2-pipe"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-2-pipe"].setColorFill(0.7333,0.3803,0); + } else { + obj["FUEL-ENG-Master-2"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-ENG-Master-2"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-ENG-Master-2-Cross"].setColorFill(0.0509,0.7529,0.2941); + obj["FUEL-ENG-2-pipe"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-ENG-2-pipe"].setColorFill(0.0509,0.7529,0.2941); + } + } else { + obj["FUEL-ENG-Master-2"].setRotation(90 * D2R); + obj["FUEL-ENG-Master-2"].setColor(0.7333,0.3803,0); + obj["FUEL-ENG-Master-2"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-Master-2-Cross"].setColorFill(0.7333,0.3803,0); + obj["FUEL-ENG-2-pipe"].setColor(0.7333,0.3803,0); + obj["FUEL-ENG-2-pipe"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("fuelTransferValve1", nil, func(val) { + if (val == 0) { + obj["FUEL-Left-Transfer"].hide(); + } else { + if (val == 1) { + obj["FUEL-Left-Transfer"].setColor(0.0509,0.7529,0.2941); + } else { + obj["FUEL-Left-Transfer"].setColor(0.7333,0.3803,0); + } + obj["FUEL-Left-Transfer"].show(); + } + }), + props.UpdateManager.FromHashValue("fuelTransferValve2", nil, func(val) { + if (val == 0) { + obj["FUEL-Right-Transfer"].hide(); + } else { + if (val == 1) { + obj["FUEL-Right-Transfer"].setColor(0.0509,0.7529,0.2941); + } else { + obj["FUEL-Right-Transfer"].setColor(0.7333,0.3803,0); + } + obj["FUEL-Right-Transfer"].show(); + } + }), + props.UpdateManager.FromHashValue("fuelTotalLbs", 1, func(val) { + if (obj.units) { + obj["FUEL-On-Board"].setText(sprintf("%s", math.round(val * LBS2KGS, 10))); + } else { + obj["FUEL-On-Board"].setText(sprintf("%s", math.round(val, 10))); + } + }), + props.UpdateManager.FromHashValue("fuelTempLeftOuter", 0.25, func(val) { + obj["FUEL-Left-Outer-temp"].setText(sprintf("%s", math.round(val))); + if (val > 55 or val < -40) { + obj["FUEL-Left-Outer-temp"].setColor(0.7333,0.3803,0); + } else { + obj["FUEL-Left-Outer-temp"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("fuelTempLeftInner", 0.25, func(val) { + obj["FUEL-Left-Inner-temp"].setText(sprintf("%s", math.round(val))); + if (val > 45 or val < -40) { + obj["FUEL-Left-Inner-temp"].setColor(0.7333,0.3803,0); + } else { + obj["FUEL-Left-Inner-temp"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("fuelTempRightInner", 0.25, func(val) { + obj["FUEL-Right-Inner-temp"].setText(sprintf("%s", math.round(val))); + if (val > 45 or val < -40) { + obj["FUEL-Right-Inner-temp"].setColor(0.7333,0.3803,0); + } else { + obj["FUEL-Right-Inner-temp"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("fuelTempRightOuter", 0.25, func(val) { + obj["FUEL-Right-Outer-temp"].setText(sprintf("%s", math.round(val))); + if (val > 55 or val < -40) { + obj["FUEL-Right-Outer-temp"].setColor(0.7333,0.3803,0); + } else { + obj["FUEL-Right-Outer-temp"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashList(["fuelApuValve","apuMaster","apuFireBtn"], nil, func(val) { + if (val.fuelApuValve == 0) { + if (val.apuMaster or val.apuFireBtn) { + obj["FUEL-APU-label"].setColor(0.7333,0.3803,0); + obj["FUEL-APU-line"].hide(); + obj["FUEL-APU-arrow"].hide(); + } else { + obj["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078); + obj["FUEL-APU-arrow"].setColor(0.8078, 0.8039, 0.8078); + obj["FUEL-APU-line"].hide(); + obj["FUEL-APU-arrow"].show(); + } + } else { + if (!val.apuMaster or val.apuFireBtn) { + obj["FUEL-APU-label"].setColor(0.7333,0.3803,0); + obj["FUEL-APU-line"].setColor(0.7333,0.3803,0); + obj["FUEL-APU-line"].setColorFill(0.7333,0.3803,0); + obj["FUEL-APU-arrow"].setColor(0.7333,0.3803,0); + obj["FUEL-APU-line"].show(); + obj["FUEL-APU-arrow"].show(); + } else { + obj["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078); + obj["FUEL-APU-line"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-APU-arrow"].setColor(0.0509,0.7529,0.2941); + obj["FUEL-APU-line"].show(); + obj["FUEL-APU-arrow"].show(); + } + } + }), ]; obj.displayedGForce = 0; @@ -62,10 +487,13 @@ var canvas_lowerECAMPageFuel = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","FUEL-Pump-Left-1","FUEL-Pump-Left-2","FUEL-Pump-Center-1","FUEL-Pump-Center-2","FUEL-Pump-Right-1","FUEL-Pump-Right-2","FUEL-Left-blocked","FUEL-Right-blocked","FUEL-Center-blocked","FUEL-Left-Transfer", + "FUEL-Right-Transfer","FUEL-Left-Outer-Inacc","FUEL-Left-Inner-Inacc","FUEL-Center-Inacc","FUEL-Right-Inner-Inacc","FUEL-Right-Outer-Inacc","FUEL-Left-Outer-quantity","FUEL-Left-Inner-quantity","FUEL-Center-quantity","FUEL-Right-Inner-quantity", + "FUEL-Right-Outer-quantity","FUEL-On-Board","FUEL-Flow-per-min","FUEL-APU-arrow","FUEL-APU-line","FUEL-APU-label","FUEL-used-1","FUEL-used-both","FUEL-used-2","FUEL-ENG-Master-1","FUEL-ENG-Master-2","FUEL-XFEED","FUEL-XFEED-Cross","FUEL-XFEED-pipes","FUEL-Left-Outer-temp", + "FUEL-Left-Inner-temp","FUEL-Right-Inner-temp","FUEL-Right-Outer-temp","FUEL-Pump-Left-1-Closed","FUEL-Pump-Left-1-Open","FUEL-Pump-Left-2-Closed","FUEL-Pump-Left-2-Open","FUEL-Pump-Center-1-Open","FUEL-Pump-Center-1-Closed","FUEL-Pump-Center-2-Closed", + "FUEL-Pump-Center-2-Open","FUEL-Pump-Right-1-Closed","FUEL-Pump-Right-1-Open","FUEL-Pump-Right-2-Closed","FUEL-Pump-Right-2-Open","FUEL-ENG-1-label","FUEL-ENG-2-label","FUEL-ENG-1-pipe","FUEL-ENG-2-pipe","ENG1idFFlow","ENG2idFFlow","FUEL-used-1","FUEL-used-2","FUEL-used-both", + "Fused-weight-unit","FFlow-weight-unit","FOB-weight-unit","FUEL-ENG-Master-1-Cross","FUEL-ENG-Master-2-Cross","FUEL-Pump-Left-1-Square","FUEL-Pump-Left-2-Square","FUEL-Pump-Center-1-Square","FUEL-Pump-Center-2-Square","FUEL-Pump-Right-1-Square","FUEL-Pump-Right-2-Square"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { @@ -140,6 +568,31 @@ var canvas_lowerECAMPageFuel = }; var input = { + engineCutoff1: "/controls/engines/engine[0]/cutoff-switch", + engineCutoff2: "/controls/engines/engine[1]/cutoff-switch", + fuelApuValve: "/systems/fuel/valves/apu-lp-valve", + fuelCrossfeedSwitch: "/controls/fuel/switches/crossfeed", + fuelCrossfeedValve: "/systems/fuel/valves/crossfeed-valve", + fuelEngine1Valve: "/systems/fuel/valves/engine-1-lp-valve", + fuelEngine2Valve: "/systems/fuel/valves/engine-2-lp-valve", + fuelTransferValve1: "/systems/fuel/valves/outer-inner-transfer-valve-1", + fuelTransferValve2: "/systems/fuel/valves/outer-inner-transfer-valve-2", + fuelLeftSwitch1: "/controls/fuel/switches/pump-left-1", + fuelLeftSwitch2: "/controls/fuel/switches/pump-left-2", + fuelCenterSwitch1: "/controls/fuel/switches/pump-center-1", + fuelCenterSwitch2: "/controls/fuel/switches/pump-center-2", + fuelRightSwitch1: "/controls/fuel/switches/pump-right-1", + fuelRightSwitch2: "/controls/fuel/switches/pump-right-2", + fuelTempLeftOuter: "/consumables/fuel/tank[0]/temperature_degC", + fuelTempLeftInner: "/consumables/fuel/tank[1]/temperature_degC", + fuelTempRightOuter: "/consumables/fuel/tank[4]/temperature_degC", + fuelTempRightInner: "/consumables/fuel/tank[3]/temperature_degC", + fuelLeftOuterQty: "/consumables/fuel/tank[0]/level-lbs", + fuelLeftInnerQty: "/consumables/fuel/tank[1]/level-lbs", + fuelRightOuterQty: "/consumables/fuel/tank[4]/level-lbs", + fuelRightInnerQty: "/consumables/fuel/tank[3]/level-lbs", + fuelCenterQty: "/consumables/fuel/tank[2]/level-lbs", + fuelTotalLbs: "/consumables/fuel/total-fuel-lbs", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index 64dbbd05..f2e2719a 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -131,23 +131,8 @@ var R4BrakeTempc = props.globals.getNode("/gear/gear[2]/R4brake-temp-degc", 1); var eng1_running = props.globals.getNode("/engines/engine[0]/running", 1); var eng2_running = props.globals.getNode("/engines/engine[1]/running", 1); var switch_cart = props.globals.getNode("/controls/electrical/ground-cart", 1); -var spoiler_L1 = props.globals.getNode("", 1); -var spoiler_L2 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l2/final-deg", 1); -var spoiler_L3 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l3/final-deg", 1); -var spoiler_L4 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l4/final-deg", 1); -var spoiler_L5 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-l5/final-deg", 1); -var spoiler_R1 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r1/final-deg", 1); -var spoiler_R2 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r2/final-deg", 1); -var spoiler_R3 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r3/final-deg", 1); -var spoiler_R4 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r4/final-deg", 1); -var spoiler_R5 = props.globals.getNode("/fdm/jsbsim/hydraulics/spoiler-r5/final-deg", 1); -var total_fuel_lbs = props.globals.getNode("/consumables/fuel/total-fuel-lbs", 1); var fuel_flow1 = props.globals.getNode("/engines/engine[0]/fuel-flow_actual", 1); var fuel_flow2 = props.globals.getNode("/engines/engine[1]/fuel-flow_actual", 1); -var fuel_left_outer_temp = props.globals.getNode("/consumables/fuel/tank[0]/temperature_degC", 1); -var fuel_left_inner_temp = props.globals.getNode("/consumables/fuel/tank[1]/temperature_degC", 1); -var fuel_right_outer_temp = props.globals.getNode("/consumables/fuel/tank[4]/temperature_degC", 1); -var fuel_right_inner_temp = props.globals.getNode("/consumables/fuel/tank[3]/temperature_degC", 1); var cutoff_switch1 = props.globals.getNode("/controls/engines/engine[0]/cutoff-switch", 1); var cutoff_switch2 = props.globals.getNode("/controls/engines/engine[1]/cutoff-switch", 1); var autobreak_mode = props.globals.getNode("/controls/autobrake/mode", 1); @@ -1486,339 +1471,8 @@ var canvas_lowerECAM_eng = { me.updateBottomStatus(); }, }; - - - # Elevators - - - # Flight Computers - if (elac1Node) { - me["elac1"].setColor(0.0509,0.7529,0.2941); - me.setColor(0.0509,0.7529,0.2941); - } else if (!elac1Node or fbw.FBW.Failures.elac1.getValue()) { - me["elac1"].setColor(0.7333,0.3803,0); - me["path4249"].setColor(0.7333,0.3803,0); - } - - if (elac2Node) { - me["elac2"].setColor(0.0509,0.7529,0.2941); - me.setColor(0.0509,0.7529,0.2941); - } else if (!elac2Node or fbw.FBW.Failures.elac2.getValue()) { - me["elac2"].setColor(0.7333,0.3803,0); - me["path4249-3"].setColor(0.7333,0.3803,0); - } - - if (sec1Node) { - me["sec1"].setColor(0.0509,0.7529,0.2941); - me["path4249-3-6-7"].setColor(0.0509,0.7529,0.2941); - } else if (!sec1Node or fbw.FBW.Failures.sec1.getValue()) { - me["sec1"].setColor(0.7333,0.3803,0); - me["path4249-3-6-7"].setColor(0.7333,0.3803,0); - } - - if (sec2Node) { - me["sec2"].setColor(0.0509,0.7529,0.2941); - me["path4249-3-6-7-5"].setColor(0.0509,0.7529,0.2941); - } else if (!sec2Node or fbw.FBW.Failures.sec2.getValue()) { - me["sec2"].setColor(0.7333,0.3803,0); - me["path4249-3-6-7-5"].setColor(0.7333,0.3803,0); - } - - if (fbw.FBW.Computers.sec3.getValue()) { - me["sec3"].setColor(0.0509,0.7529,0.2941); - me["path4249-3-6"].setColor(0.0509,0.7529,0.2941); - } else if (!fbw.FBW.Computers.sec3.getValue() or fbw.FBW.Failures.sec3.getValue()) { - me["sec3"].setColor(0.7333,0.3803,0); - me["path4249-3-6"].setColor(0.7333,0.3803,0); - } - - # Hydraulic Indicators - - - - me.updateBottomStatus(); - }, -}; - -var canvas_lowerECAM_fuel = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_fuel, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","FUEL-Pump-Left-1","FUEL-Pump-Left-2","FUEL-Pump-Center-1","FUEL-Pump-Center-2","FUEL-Pump-Right-1","FUEL-Pump-Right-2","FUEL-Left-blocked","FUEL-Right-blocked","FUEL-Center-blocked","FUEL-Left-Transfer", - "FUEL-Right-Transfer","FUEL-Left-Outer-Inacc","FUEL-Left-Inner-Inacc","FUEL-Center-Inacc","FUEL-Right-Inner-Inacc","FUEL-Right-Outer-Inacc","FUEL-Left-Outer-quantity","FUEL-Left-Inner-quantity","FUEL-Center-quantity","FUEL-Right-Inner-quantity", - "FUEL-Right-Outer-quantity","FUEL-On-Board","FUEL-Flow-per-min","FUEL-APU-arrow","FUEL-APU-line","FUEL-APU-label","FUEL-used-1","FUEL-used-both","FUEL-used-2","FUEL-ENG-Master-1","FUEL-ENG-Master-2","FUEL-XFEED","FUEL-XFEED-pipes","FUEL-Left-Outer-temp", - "FUEL-Left-Inner-temp","FUEL-Right-Inner-temp","FUEL-Right-Outer-temp","FUEL-Pump-Left-1-Closed","FUEL-Pump-Left-1-Open","FUEL-Pump-Left-2-Closed","FUEL-Pump-Left-2-Open","FUEL-Pump-Center-1-Open","FUEL-Pump-Center-1-Closed","FUEL-Pump-Center-2-Closed", - "FUEL-Pump-Center-2-Open","FUEL-Pump-Right-1-Closed","FUEL-Pump-Right-1-Open","FUEL-Pump-Right-2-Closed","FUEL-Pump-Right-2-Open","FUEL-ENG-1-label","FUEL-ENG-2-label","FUEL-ENG-1-pipe","FUEL-ENG-2-pipe","ENG1idFFlow","ENG2idFFlow","FUEL-used-1","FUEL-used-2","FUEL-used-both", - "Fused-weight-unit","FFlow-weight-unit","FOB-weight-unit"]; - }, - update: func() { - _weight_kgs = acconfig_weight_kgs.getValue(); - - if (pts.Engines.Engine.n1Actual[0].getValue() <= 18.8) { - me["ENG1idFFlow"].setColor(0.7333,0.3803,0); - me["FUEL-ENG-1-label"].setColor(0.7333,0.3803,0); - } else { - me["ENG1idFFlow"].setColor(0.8078,0.8039,0.8078); - me["FUEL-ENG-1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (pts.Engines.Engine.n1Actual[1].getValue() <= 18.5) { - me["ENG2idFFlow"].setColor(0.7333,0.3803,0); - me["FUEL-ENG-2-label"].setColor(0.7333,0.3803,0); - } else { - me["ENG2idFFlow"].setColor(0.8078,0.8039,0.8078); - me["FUEL-ENG-2-label"].setColor(0.8078,0.8039,0.8078); - } - - # TODO add FOB half-boxed amber if some fuel is blocked - if (_weight_kgs == 1) - { - me["FUEL-On-Board"].setText(sprintf("%s", math.round(total_fuel_lbs.getValue() * LBS2KGS, 10))); - me["FOB-weight-unit"].setText("KG"); - } else { - me["FUEL-On-Board"].setText(sprintf("%s", math.round(total_fuel_lbs.getValue(), 10))); - me["FOB-weight-unit"].setText("LBS"); - } - - if (_weight_kgs == 1) { - me["FFlow-weight-unit"].setText("KG/MIN"); - } else { - me["FFlow-weight-unit"].setText("LBS/MIN"); - } - - if (fadec.FADEC.Power.powered1.getValue() and fadec.FADEC.Power.powered2.getValue() or fadec.FADEC.Power.powerup.getValue()) { - me["FUEL-Flow-per-min"].setColor(0.0509,0.7529,0.2941); - if (_weight_kgs == 1) { - me["FUEL-Flow-per-min"].setText(sprintf("%s", math.round(((fuel_flow1.getValue() + fuel_flow2.getValue()) * LBS2KGS) / 60, 10))); - } else { - me["FUEL-Flow-per-min"].setText(sprintf("%s", math.round((fuel_flow1.getValue() + fuel_flow2.getValue()) / 60, 10))); - } - } else { - me["FUEL-Flow-per-min"].setColor(0.7333,0.3803,0); - me["FUEL-Flow-per-min"].setText("XX"); - } - - # TODO use the valve prop and add amber if difference between eng master and valve - # TODO add transition state - if (systems.FUEL.Valves.lpValve1.getValue()) { - me["FUEL-ENG-Master-1"].setRotation(0); - me["FUEL-ENG-Master-1"].setColor(0.0509,0.7529,0.2941); - me["FUEL-ENG-Master-1"].setColorFill(0.0509,0.7529,0.2941); - me["FUEL-ENG-1-pipe"].setColor(0.0509,0.7529,0.2941); - } else { - me["FUEL-ENG-Master-1"].setRotation(90 * D2R); - me["FUEL-ENG-Master-1"].setColor(0.7333,0.3803,0); - me["FUEL-ENG-Master-1"].setColorFill(0.7333,0.3803,0); - me["FUEL-ENG-1-pipe"].setColor(0.7333,0.3803,0); - } - - # TODO use the valve prop and add amber if difference between eng master and valve - # TODO add transition state - if (systems.FUEL.Valves.lpValve2.getValue()) { - me["FUEL-ENG-Master-2"].setRotation(0); - me["FUEL-ENG-Master-2"].setColor(0.0509,0.7529,0.2941); - me["FUEL-ENG-Master-2"].setColorFill(0.0509,0.7529,0.2941); - me["FUEL-ENG-2-pipe"].setColor(0.0509,0.7529,0.2941); - } else { - me["FUEL-ENG-Master-2"].setRotation(90 * D2R); - me["FUEL-ENG-Master-2"].setColor(0.7333,0.3803,0); - me["FUEL-ENG-Master-2"].setColorFill(0.7333,0.3803,0); - me["FUEL-ENG-2-pipe"].setColor(0.7333,0.3803,0); - } - - # this is now bound to the XFEED switch - # TODO use the valve prop - # TODO add amber when disagree between switch and btn - # TODO add transition state - if (systems.FUEL.Valves.crossfeed.getBoolValue()) { - me["FUEL-XFEED"].setRotation(0); - me["FUEL-XFEED-pipes"].show(); - } else { - me["FUEL-XFEED"].setRotation(90 * D2R); - me["FUEL-XFEED-pipes"].hide(); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpLeft1.getBoolValue()) { - me["FUEL-Pump-Left-1-Open"].show(); - me["FUEL-Pump-Left-1-Closed"].hide(); - me["FUEL-Pump-Left-1"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Left-1"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Left-1-Open"].hide(); - me["FUEL-Pump-Left-1-Closed"].show(); - me["FUEL-Pump-Left-1"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Left-1"].setColorFill(0.7333,0.3803,0); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpLeft2.getBoolValue()) { - me["FUEL-Pump-Left-2-Open"].show(); - me["FUEL-Pump-Left-2-Closed"].hide(); - me["FUEL-Pump-Left-2"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Left-2"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Left-2-Open"].hide(); - me["FUEL-Pump-Left-2-Closed"].show(); - me["FUEL-Pump-Left-2"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Left-2"].setColorFill(0.7333,0.3803,0); - } - - # TODO add functionality to match FCOM 1.28.20 "Amber: Transfer valve is open, whereas commanded closed in automatic or manual mode" - if (systems.FUEL.Switches.pumpCenter1.getBoolValue()) { - me["FUEL-Pump-Center-1-Open"].show(); - me["FUEL-Pump-Center-1-Closed"].hide(); - me["FUEL-Pump-Center-1"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Center-1"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Center-1-Open"].hide(); - me["FUEL-Pump-Center-1-Closed"].show(); - me["FUEL-Pump-Center-1"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Center-1"].setColorFill(0.7333,0.3803,0); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpCenter2.getBoolValue()) { - me["FUEL-Pump-Center-2-Open"].show(); - me["FUEL-Pump-Center-2-Closed"].hide(); - me["FUEL-Pump-Center-2"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Center-2"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Center-2-Open"].hide(); - me["FUEL-Pump-Center-2-Closed"].show(); - me["FUEL-Pump-Center-2"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Center-2"].setColorFill(0.7333,0.3803,0); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpRight1.getBoolValue()) { - me["FUEL-Pump-Right-1-Open"].show(); - me["FUEL-Pump-Right-1-Closed"].hide(); - me["FUEL-Pump-Right-1"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Right-1"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Right-1-Open"].hide(); - me["FUEL-Pump-Right-1-Closed"].show(); - me["FUEL-Pump-Right-1"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Right-1"].setColorFill(0.7333,0.3803,0); - } - - # TODO add LO indication - if (systems.FUEL.Switches.pumpRight2.getBoolValue()) { - me["FUEL-Pump-Right-2-Open"].show(); - me["FUEL-Pump-Right-2-Closed"].hide(); - me["FUEL-Pump-Right-2"].setColor(0.0509,0.7529,0.2941); - me["FUEL-Pump-Right-2"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["FUEL-Pump-Right-2-Open"].hide(); - me["FUEL-Pump-Right-2-Closed"].show(); - me["FUEL-Pump-Right-2"].setColor(0.7333,0.3803,0); - me["FUEL-Pump-Right-2"].setColorFill(0.7333,0.3803,0); - } - - # Fuel Used - if (_weight_kgs == 1) { - me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10))); - me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10))); - me["FUEL-used-both"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue() * LBS2KGS, 10) + math.round(fuel_used_lbs2.getValue() * LBS2KGS, 10)))); - me["Fused-weight-unit"].setText("KG"); - } else { - me["FUEL-used-1"].setText(sprintf("%s", math.round(fuel_used_lbs1.getValue(), 10))); - me["FUEL-used-2"].setText(sprintf("%s", math.round(fuel_used_lbs2.getValue(), 10))); - me["FUEL-used-both"].setText(sprintf("%s", (math.round(fuel_used_lbs1.getValue(), 10) + math.round(fuel_used_lbs2.getValue(), 10)))); - me["Fused-weight-unit"].setText("LBS"); - } - - # Fuel Temp - me["FUEL-Left-Outer-temp"].setText(sprintf("%s", math.round(fuel_left_outer_temp.getValue()))); - me["FUEL-Left-Inner-temp"].setText(sprintf("%s", math.round(fuel_left_inner_temp.getValue()))); - me["FUEL-Right-Outer-temp"].setText(sprintf("%s", math.round(fuel_right_outer_temp.getValue()))); - me["FUEL-Right-Inner-temp"].setText(sprintf("%s", math.round(fuel_right_inner_temp.getValue()))); - - # Fuel Quantity - # TODO add LO indication - if (_weight_kgs == 1) { - me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue() * LBS2KGS, 10))); - me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue() * LBS2KGS, 10))); - me["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue() * LBS2KGS, 10))); - me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue() * LBS2KGS, 10))); - me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue() * LBS2KGS, 10))); - } else { - me["FUEL-Left-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftOuter.getValue(), 10))); - me["FUEL-Left-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.leftInner.getValue(), 10))); - me["FUEL-Center-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.center.getValue(), 10))); - me["FUEL-Right-Inner-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightInner.getValue(), 10))); - me["FUEL-Right-Outer-quantity"].setText(sprintf("%s", math.round(systems.FUEL.Quantity.rightOuter.getValue(), 10))); - } - - if (systems.FUEL.Valves.transfer1.getValue() == 0) { - me["FUEL-Left-Transfer"].hide(); - } else { - if (systems.FUEL.Valves.transfer1.getValue()) { - me["FUEL-Left-Transfer"].setColor(0.0509,0.7529,0.2941); - } else { - me["FUEL-Left-Transfer"].setColor(0.7333,0.3803,0); - } - me["FUEL-Left-Transfer"].show(); - } - - if (systems.FUEL.Valves.transfer2.getValue() == 0) { - me["FUEL-Right-Transfer"].hide(); - } else { - if (systems.FUEL.Valves.transfer2.getValue()) { - me["FUEL-Right-Transfer"].setColor(0.0509,0.7529,0.2941); - } else { - me["FUEL-Right-Transfer"].setColor(0.7333,0.3803,0); - } - me["FUEL-Right-Transfer"].show(); - } - - if (!systems.FUEL.Switches.pumpCenter1.getValue() and !systems.FUEL.Switches.pumpCenter2.getValue()) { - me["FUEL-Center-blocked"].show(); - } else { - me["FUEL-Center-blocked"].hide(); - } - - # APU - if (systems.FUEL.Valves.apu.getValue() and systems.APUNodes.Controls.master.getValue() and !systems.APUNodes.Controls.fire.getValue()) { - me["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078); - me["FUEL-APU-line"].setColor(0.0509,0.7529,0.2941); - me["FUEL-APU-arrow"].setColor(0.0509,0.7529,0.2941); - me["FUEL-APU-line"].show(); - me["FUEL-APU-arrow"].show(); - } elsif (systems.FUEL.Valves.apu.getValue() and (!systems.APUNodes.Controls.master.getValue() or systems.APUNodes.Controls.fire.getValue())) { - me["FUEL-APU-label"].setColor(0.7333,0.3803,0); - me["FUEL-APU-line"].setColor(0.7333,0.3803,0); - me["FUEL-APU-arrow"].setColor(0.7333,0.3803,0); - me["FUEL-APU-line"].show(); - me["FUEL-APU-arrow"].show(); - } elsif (systems.FUEL.Valves.apu.getValue() != 1 and (systems.APUNodes.Controls.master.getValue() or systems.APUNodes.Controls.fire.getValue())) { - me["FUEL-APU-label"].setColor(0.7333,0.3803,0); - me["FUEL-APU-line"].hide(); - me["FUEL-APU-arrow"].hide(); - } else { - me["FUEL-APU-label"].setColor(0.8078, 0.8039, 0.8078); - me["FUEL-APU-arrow"].setColor(0.8078, 0.8039, 0.8078); - me["FUEL-APU-line"].hide(); - me["FUEL-APU-arrow"].show(); - } - - # Hide not yet implemented features - # TODO add them - me["FUEL-Left-blocked"].hide(); - me["FUEL-Right-blocked"].hide(); - me["FUEL-Left-Outer-Inacc"].hide(); - me["FUEL-Left-Inner-Inacc"].hide(); - me["FUEL-Right-Outer-Inacc"].hide(); - me["FUEL-Right-Inner-Inacc"].hide(); - me["FUEL-Center-Inacc"].hide(); - me.updateBottomStatus(); }, }; diff --git a/Models/Instruments/Lower-ECAM/res/fuel.svg b/Models/Instruments/Lower-ECAM/res/fuel.svg index a2d0ce43..d91dff25 100644 --- a/Models/Instruments/Lower-ECAM/res/fuel.svg +++ b/Models/Instruments/Lower-ECAM/res/fuel.svg @@ -50,8 +50,8 @@ id="namedview371" showgrid="false" inkscape:zoom="0.68" - inkscape:cx="817.73616" - inkscape:cy="1022.6281" + inkscape:cx="434.43172" + inkscape:cy="1022.8371" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -148,8 +148,9 @@ x="817.61298" height="5.1203089" width="53.195583" - id="rect5105-2-5-3" - style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + id="FUEL-XFEED-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-3" /> 0000 + style="font-size:30.1989994px;line-height:0;text-align:end;text-anchor:end;">0000 0000 000 + style="font-size:30.1989994px;line-height:0;text-anchor:middle;text-align:center;">000 000 + style="font-size:30.1989994px;line-height:0;text-align:end;text-anchor:end;">000 + id="FUEL-ENG-Master-1-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-3-4" /> + id="FUEL-ENG-Master-2-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-3-4-3" /> - - - - + + + + + + - - - - + + + + + + - - - - + + + + + + - - + + + + + + - - - - - - + + + + + + - - - - + + + + + + + ry="0" + transform="matrix(0,1,-1,0,0,0)" + y="-261.75253" + x="232.60442" + height="18.894773" + width="5.3955846" + id="FUEL-APU-line" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.09431255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + sodipodi:nodetypes="cccccsc" + inkscape:connector-curvature="0" + id="FUEL-APU-arrow" + d="m 209.24999,234.99999 15.75,-7.5 16.5,-8.25 v 17.25 l 0,15.30854 c 0,0 -1.69343,-0.68362 -19.69533,-10.2091 -11.05467,-5.84944 -12.55467,-6.59944 -12.55467,-6.59944 z" + style="fill:none;stroke:#0dc04b;stroke-width:2.77499986;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.80000019;stroke-dasharray:none;stroke-opacity:1" /> 0000 + style="font-size:30px;line-height:1.25;text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75;">0000 0000 + style="font-size:30.00000191px;line-height:1.25;text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75;">0000 0000 + style="font-size:30.00000191px;line-height:1.25;text-align:end;text-anchor:end;fill:#0dc04b;fill-opacity:1;stroke-width:0.75;">0000 Date: Sat, 17 Jul 2021 20:52:52 +0100 Subject: [PATCH 16/28] HYD page --- .../Instruments/Lower-ECAM/Lower-ECAM-hyd.nas | 329 +++++++++++++++++- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 279 +-------------- Models/Instruments/Lower-ECAM/res/hyd.svg | 60 ++-- 3 files changed, 361 insertions(+), 307 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas index f9673996..4ec5fbce 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas @@ -1,6 +1,15 @@ # A3XX Lower ECAM Canvas # Copyright (c) 2021 Josh Davidson (Octal450) and Jonathan Redpath +var elec_pump_y_ovht = props.globals.initNode("/systems/hydraulic/elec-pump-yellow-ovht", 0, "BOOL"); +var elec_pump_b_ovht = props.globals.initNode("/systems/hydraulic/elec-pump-blue-ovht", 0, "BOOL"); +var y_resv_ovht = props.globals.initNode("/systems/hydraulic/yellow-resv-ovht", 0, "BOOL"); +var b_resv_ovht = props.globals.initNode("/systems/hydraulic/blue-resv-ovht", 0, "BOOL"); +var g_resv_ovht = props.globals.initNode("/systems/hydraulic/green-resv-ovht", 0, "BOOL"); +var y_resv_lo_press = props.globals.initNode("/systems/hydraulic/yellow-resv-lo-air-press", 0, "BOOL"); +var b_resv_lo_press = props.globals.initNode("/systems/hydraulic/blue-resv-lo-air-press", 0, "BOOL"); +var g_resv_lo_press = props.globals.initNode("/systems/hydraulic/green-resv-lo-air-press", 0, "BOOL"); + var canvas_lowerECAMPageHyd = { new: func(svg,name) { @@ -23,6 +32,298 @@ var canvas_lowerECAMPageHyd = # init obj.update_items = [ + props.UpdateManager.FromHashValue("blue", 25, func(val) { + obj["Press-Blue"].setText(sprintf("%s", math.round(val, 50))); + + if (val >= 1500) { + obj["Blue-Line"].setColor(0.0509,0.7529,0.2941); + obj["Blue-Line"].setColorFill(0.0509,0.7529,0.2941); + obj["Blue-Line-Top"].setColorFill(0.0509,0.7529,0.2941); + obj["Blue-Line-Bottom"].setColorFill(0.0509,0.7529,0.2941); + obj["Blue-Indicator"].setColor(0.0509,0.7529,0.2941); + obj["Press-Blue"].setColor(0.0509,0.7529,0.2941); + obj["Blue-label"].setColor(0.8078,0.8039,0.8078); + } else { + obj["Blue-Line"].setColor(0.7333,0.3803,0); + obj["Blue-Line"].setColorFill(0.7333,0.3803,0); + obj["Blue-Line-Top"].setColorFill(0.7333,0.3803,0); + obj["Blue-Line-Bottom"].setColorFill(0.7333,0.3803,0); + obj["Blue-Indicator"].setColor(0.7333,0.3803,0); + obj["Press-Blue"].setColor(0.7333,0.3803,0); + obj["Blue-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("yellow", 25, func(val) { + obj["Press-Yellow"].setText(sprintf("%s", math.round(val, 50))); + + if (val >= 1500) { + obj["Yellow-Line"].setColor(0.0509,0.7529,0.2941); + obj["Yellow-Line"].setColorFill(0.0509,0.7529,0.2941); + obj["Yellow-Line-Top"].setColorFill(0.0509,0.7529,0.2941); + obj["Yellow-Line-Middle"].setColorFill(0.0509,0.7529,0.2941); + obj["Yellow-Line-Bottom"].setColorFill(0.0509,0.7529,0.2941); + obj["Yellow-Indicator"].setColor(0.0509,0.7529,0.2941); + obj["Press-Yellow"].setColor(0.0509,0.7529,0.2941); + obj["Yellow-label"].setColor(0.8078,0.8039,0.8078); + } else { + obj["Yellow-Line"].setColor(0.7333,0.3803,0); + obj["Yellow-Line"].setColorFill(0.7333,0.3803,0); + obj["Yellow-Line-Top"].setColorFill(0.7333,0.3803,0); + obj["Yellow-Line-Middle"].setColorFill(0.7333,0.3803,0); + obj["Yellow-Line-Bottom"].setColorFill(0.7333,0.3803,0); + obj["Yellow-Indicator"].setColor(0.7333,0.3803,0); + obj["Press-Yellow"].setColor(0.7333,0.3803,0); + obj["Yellow-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("green", 25, func(val) { + obj["Press-Green"].setText(sprintf("%s", math.round(val, 50))); + + if (val >= 1500) { + obj["Green-Line"].setColor(0.0509,0.7529,0.2941); + obj["Green-Line"].setColorFill(0.0509,0.7529,0.2941); + obj["Green-Line-Top"].setColorFill(0.0509,0.7529,0.2941); + obj["Green-Line-Middle"].setColorFill(0.0509,0.7529,0.2941); + obj["Green-Line-Bottom"].setColorFill(0.0509,0.7529,0.2941); + obj["Green-Indicator"].setColor(0.0509,0.7529,0.2941); + obj["Press-Green"].setColor(0.0509,0.7529,0.2941); + obj["Green-label"].setColor(0.8078,0.8039,0.8078); + } else { + obj["Green-Line"].setColor(0.7333,0.3803,0); + obj["Green-Line"].setColorFill(0.7333,0.3803,0); + obj["Green-Line-Top"].setColorFill(0.7333,0.3803,0); + obj["Green-Line-Middle"].setColorFill(0.7333,0.3803,0); + obj["Green-Line-Bottom"].setColorFill(0.7333,0.3803,0); + obj["Green-Indicator"].setColor(0.7333,0.3803,0); + obj["Press-Green"].setColor(0.7333,0.3803,0); + obj["Green-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("N2_actual_1", 0.5, func(val) { + if (val >= 59) { + obj["Pump-Green-label"].setColor(0.8078,0.8039,0.8078); + } else { + obj["Pump-Green-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("N2_actual_2", 0.5, func(val) { + if (val >= 59) { + obj["Pump-Yellow-label"].setColor(0.8078,0.8039,0.8078); + } else { + obj["Pump-Yellow-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("hydBlueResvLoPrs", nil, func(val) { + if (val) { + obj["LO-AIR-PRESS-Blue"].show(); + } else { + obj["LO-AIR-PRESS-Blue"].hide(); + } + }), + props.UpdateManager.FromHashValue("hydGreenResvLoPrs", nil, func(val) { + if (val) { + obj["LO-AIR-PRESS-Green"].show(); + } else { + obj["LO-AIR-PRESS-Green"].hide(); + } + }), + props.UpdateManager.FromHashValue("hydYellowResvLoPrs", nil, func(val) { + if (val) { + obj["LO-AIR-PRESS-Yellow"].show(); + } else { + obj["LO-AIR-PRESS-Yellow"].hide(); + } + }), + props.UpdateManager.FromHashValue("hydYellowElecPumpOvht", nil, func(val) { + if (val) { + obj["ELEC-OVHT-Yellow"].show(); + } else { + obj["ELEC-OVHT-Yellow"].hide(); + } + }), + props.UpdateManager.FromHashValue("hydBlueElecPumpOvht", nil, func(val) { + if (val) { + obj["ELEC-OVHT-Blue"].show(); + } else { + obj["ELEC-OVHT-Blue"].hide(); + } + }), + props.UpdateManager.FromHashValue("hydBlueResvOvht", nil, func(val) { + if (val) { + obj["OVHT-Blue"].show(); + } else { + obj["OVHT-Blue"].hide(); + } + }), + props.UpdateManager.FromHashValue("hydGreenResvOvht", nil, func(val) { + if (val) { + obj["OVHT-Green"].show(); + } else { + obj["OVHT-Green"].hide(); + } + }), + props.UpdateManager.FromHashValue("hydYellowResvOvht", nil, func(val) { + if (val) { + obj["OVHT-Yellow"].show(); + } else { + obj["OVHT-Yellow"].hide(); + } + }), + props.UpdateManager.FromHashValue("hydRATPosition", 0.01, func(val) { + if (val) { + obj["RAT-stowed"].hide(); + obj["RAT-not-stowed"].show(); + } else { + obj["RAT-stowed"].show(); + obj["RAT-not-stowed"].hide(); + } + }), + props.UpdateManager.FromHashValue("hydGreenFireValve", 0.01, func(val) { + if (val != 0) { + obj["Fire-Valve-Green"].setColor(0.7333,0.3803,0); + obj["Fire-Valve-Green-Cross"].setColorFill(0.7333,0.3803,0); + obj["Fire-Valve-Green"].setRotation(90 * D2R); + } else { + obj["Fire-Valve-Green"].setColor(0.0509,0.7529,0.2941); + obj["Fire-Valve-Green-Cross"].setColorFill(0.0509,0.7529,0.2941); + obj["Fire-Valve-Green"].setRotation(0); + } + }), + props.UpdateManager.FromHashValue("hydYellowFireValve", 0.01, func(val) { + if (val != 0) { + obj["Fire-Valve-Yellow"].setColor(0.7333,0.3803,0); + obj["Fire-Valve-Yellow-Cross"].setColorFill(0.7333,0.3803,0); + obj["Fire-Valve-Yellow"].setRotation(90 * D2R); + } else { + obj["Fire-Valve-Yellow"].setColor(0.0509,0.7529,0.2941); + obj["Fire-Valve-Yellow-Cross"].setColorFill(0.0509,0.7529,0.2941); + obj["Fire-Valve-Yellow"].setRotation(0); + } + }), + props.UpdateManager.FromHashValue("elecAC1", 1, func(val) { + if (val >= 110) { + obj["ELEC-Blue-label"].setColor(0.8078,0.8039,0.8078); + } else { + obj["ELEC-Blue-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("elecAC2", 1, func(val) { + if (val >= 110) { + obj["ELEC-Yellow-label"].setColor(0.8078,0.8039,0.8078); + } else { + obj["ELEC-Yellow-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["yellow","hydYellowElecPumpSwitch"], nil, func(val) { + if (!val.hydYellowElecPumpSwitch) { + obj["ELEC-Yellow-on"].hide(); + obj["ELEC-Yellow-off"].show(); + } else { + obj["ELEC-Yellow-on"].show(); + obj["ELEC-Yellow-off"].hide(); + if (val.yellow >= 1500) { + obj["ELEC-Yellow-on"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ELEC-Yellow-on"].setColor(0.7333,0.3803,0); + } + } + }), + props.UpdateManager.FromHashList(["blue","hydBlueElecPumpSwitch"], nil, func(val) { + if (val.hydBlueElecPumpSwitch) { + obj["Pump-Blue-off"].hide(); + if (val.blue >= 1500) { + obj["Pump-Blue-on"].show(); + obj["Pump-Blue-off"].hide(); + obj["Pump-Blue"].setColorFill(0.0509,0.7529,0.2941); + obj["Pump-Blue"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Pump-Blue-off"].show(); + obj["Pump-Blue-on"].hide(); + obj["Pump-Blue"].setColorFill(0.7333,0.3803,0); + obj["Pump-Blue"].setColor(0.7333,0.3803,0); + } + } else { + obj["Pump-Blue-off"].show(); + obj["Pump-Blue-on"].hide(); + obj["Pump-Blue"].setColorFill(0.7333,0.3803,0); + obj["Pump-Blue"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["yellow","hydYellowEDPPumpSwitch"], nil, func(val) { + if (val.hydYellowEDPPumpSwitch) { + obj["Pump-Yellow-off"].hide(); + if (val.yellow >= 1500) { + obj["Pump-Yellow-on"].show(); + obj["Pump-LOPR-Yellow"].hide(); + obj["Pump-Yellow"].setColorFill(0.0509,0.7529,0.2941); + obj["Pump-Yellow"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Pump-Yellow-on"].hide(); + obj["Pump-LOPR-Yellow"].show(); + obj["Pump-Yellow"].setColorFill(0.7333,0.3803,0); + obj["Pump-Yellow"].setColor(0.7333,0.3803,0); + } + } else { + obj["Pump-Yellow-off"].show(); + obj["Pump-Yellow-on"].hide(); + obj["Pump-LOPR-Yellow"].hide(); + obj["Pump-Yellow"].setColorFill(0.7333,0.3803,0); + obj["Pump-Yellow"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["green","hydGreenEDPPumpSwitch"], nil, func(val) { + if (val.hydGreenEDPPumpSwitch) { + obj["Pump-Green-off"].hide(); + if (val.green >= 1500) { + obj["Pump-Green-on"].show(); + obj["Pump-LOPR-Green"].hide(); + obj["Pump-Green"].setColor(0.0509,0.7529,0.2941); + obj["Pump-Green"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["Pump-Green-on"].hide(); + obj["Pump-LOPR-Green"].show(); + obj["Pump-Green"].setColor(0.7333,0.3803,0); + obj["Pump-Green"].setColorFill(0.7333,0.3803,0); + } + } else { + obj["Pump-Green-off"].show(); + obj["Pump-Green-on"].hide(); + obj["Pump-LOPR-Green"].hide(); + obj["Pump-Green"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["hydPTUSwitch","hydPTUDiff","hydPTUActive","hydPTUFault"], nil, func(val) { + if (val.hydPTUSwitch and !val.hydPTUFault) { + obj["PTU-connection"].setColor(0.0509,0.7529,0.2941); + + if (val.hydPTUActive) { + if (val.hydPTUDiff < 0) { + obj["PTU-Supply-Line"].show(); + obj["PTU-supply-yellow"].show(); + obj["PTU-supply-green"].hide(); + obj["PTU-Auto-or-off"].hide(); + } else { + obj["PTU-Supply-Line"].show(); + obj["PTU-supply-yellow"].hide(); + obj["PTU-supply-green"].show(); + obj["PTU-Auto-or-off"].hide(); + } + } else { + obj["PTU-Auto-or-off"].setColor(0.0509,0.7529,0.2941); + obj["PTU-Supply-Line"].hide(); + obj["PTU-supply-yellow"].hide(); + obj["PTU-supply-green"].hide(); + obj["PTU-Auto-or-off"].show(); + } + } else { + obj["PTU-connection"].setColor(0.7333,0.3803,0); + obj["PTU-Auto-or-off"].setColor(0.7333,0.3803,0); + obj["PTU-Supply-Line"].hide(); + obj["PTU-supply-yellow"].hide(); + obj["PTU-supply-green"].hide(); + obj["PTU-Auto-or-off"].show(); + } + }), ]; obj.displayedGForce = 0; @@ -62,10 +363,11 @@ var canvas_lowerECAMPageHyd = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Green-Indicator","Blue-Indicator","Yellow-Indicator","Press-Green","Press-Blue","Press-Yellow","Green-Line","Blue-Line","Yellow-Line","Green-Line-Top","Blue-Line-Top","Yellow-Line-Middle","Green-Line-Middle","Yellow-Line-Bottom","Green-Line-Bottom","Blue-Line-Bottom","Yellow-Line-Top","PTU-Supply-Line","PTU-supply-yellow","PTU-supply-green","PTU-connection", + "PTU-Auto-or-off","RAT-label","RAT-stowed","RAT-not-stowed","ELEC-Yellow-off","ELEC-Yellow-on","ELEC-Yellow-label","ELEC-OVTH-Yellow","ELEC-Blue-label","ELEC-OVHT-Blue","ELEC-OVHT-Yellow","Pump-Green-label","Pump-Yellow-label","Pump-Green", + "Pump-LOPR-Green","Pump-Green-off","Pump-Green-on","Pump-Yellow","Pump-LOPR-Yellow","Pump-Yellow-off","Pump-Yellow-on","Pump-Blue", "Pump-Blue-off","Pump-Blue-on","Fire-Valve-Green","Fire-Valve-Yellow","LO-AIR-PRESS-Green", + "LO-AIR-PRESS-Yellow","LO-AIR-PRESS-Blue","OVHT-Green","OVHT-Blue","OVHT-Yellow","Quantity-Indicator-Green","Quantity-Indicator-Blue","Quantity-Indicator-Yellow","Green-label","Blue-label","Yellow-label","Fire-Valve-Yellow-Cross","Fire-Valve-Green-Cross"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { @@ -140,6 +442,25 @@ var canvas_lowerECAMPageHyd = }; var input = { + hydBlueResvOvht: "/systems/hydraulic/blue-resv-ovht", + hydGreenResvOvht: "/systems/hydraulic/green-resv-ovht", + hydYellowResvOvht: "/systems/hydraulic/yellow-resv-ovht", + hydBlueResvLoPrs: "/systems/hydraulic/blue-resv-lo-air-press", + hydGreenResvLoPrs: "/systems/hydraulic/green-resv-lo-air-press", + hydYellowResvLoPrs: "/systems/hydraulic/yellow-resv-lo-air-press", + hydYellowElecPumpOvht: "/systems/hydraulic/elec-pump-yellow-ovht", + hydBlueElecPumpOvht: "/systems/hydraulic/elec-pump-blue-ovht", + hydRATPosition: "/systems/hydraulic/sources/rat/position", + hydGreenFireValve: "/systems/hydraulic/sources/green-edp/fire-valve", + hydYellowFireValve: "/systems/hydraulic/sources/yellow-edp/fire-valve", + hydBlueElecPumpSwitch: "/controls/hydraulic/switches/blue-elec", + hydGreenEDPPumpSwitch: "/controls/hydraulic/switches/green-edp", + hydYellowElecPumpSwitch: "/controls/hydraulic/switches/yellow-elec", + hydYellowEDPPumpSwitch: "/controls/hydraulic/switches/yellow-edp", + hydPTUSwitch: "/controls/hydraulic/switches/ptu", + hydPTUFault: "/systems/failures/hydraulic/ptu", + hydPTUActive: "/systems/hydraulic/sources/ptu/ptu-hydraulic-condition", + hydPTUDiff: "/systems/hydraulic/yellow-psi-diff", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index f2e2719a..06ad2546 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -111,11 +111,6 @@ var gLoad = props.globals.getNode("", 1); var blue_psi = 0; var green_psi = 0; var yellow_psi = 0; -var y_resv_lo_air_press = props.globals.getNode("/systems/hydraulic/yellow-resv-lo-air-press", 1); -var b_resv_lo_air_press = props.globals.getNode("/systems/hydraulic/blue-resv-lo-air-press", 1); -var g_resv_lo_air_press = props.globals.getNode("/systems/hydraulic/green-resv-lo-air-press", 1); -var elec_pump_y_ovht = props.globals.getNode("/systems/hydraulic/elec-pump-yellow-ovht", 1); -var elec_pump_b_ovht = props.globals.getNode("/systems/hydraulic/elec-pump-blue-ovht", 1); var rat_deployed = props.globals.getNode("/controls/hydraulic/rat-deployed", 1); var y_resv_ovht = props.globals.getNode("/systems/hydraulic/yellow-resv-ovht", 1); var b_resv_ovht = props.globals.getNode("/systems/hydraulic/blue-resv-ovht", 1); @@ -1471,276 +1466,4 @@ var canvas_lowerECAM_eng = { me.updateBottomStatus(); }, }; - - - }, -}; - -var canvas_lowerECAM_hyd = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_hyd, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Green-Indicator","Blue-Indicator","Yellow-Indicator","Press-Green","Press-Blue","Press-Yellow","Green-Line","Blue-Line","Yellow-Line","PTU-Supply-Line","PTU-supply-yellow","PTU-supply-green","PTU-connection", - "PTU-Auto-or-off","RAT-label","RAT-stowed","RAT-not-stowed","ELEC-Yellow-off","ELEC-Yellow-on","ELEC-Yellow-label","ELEC-OVTH-Yellow","ELEC-Blue-label","ELEC-OVHT-Blue","ELEC-OVHT-Yellow","Pump-Green-label","Pump-Yellow-label","Pump-Green", - "Pump-LOPR-Green","Pump-Green-off","Pump-Green-on","Pump-Yellow","Pump-LOPR-Yellow","Pump-Yellow-off","Pump-Yellow-on","Pump-Blue", "Pump-Blue-off","Pump-Blue-on","Fire-Valve-Green","Fire-Valve-Yellow","LO-AIR-PRESS-Green", - "LO-AIR-PRESS-Yellow","LO-AIR-PRESS-Blue","OVHT-Green","OVHT-Blue","OVHT-Yellow","Quantity-Indicator-Green","Quantity-Indicator-Blue","Quantity-Indicator-Yellow","Green-label","Blue-label","Yellow-label"]; - }, - update: func() { - blue_psi = systems.HYD.Psi.blue.getValue(); - green_psi = systems.HYD.Psi.green.getValue(); - yellow_psi = systems.HYD.Psi.yellow.getValue(); - - me["Press-Green"].setText(sprintf("%s", math.round(green_psi, 50))); - me["Press-Blue"].setText(sprintf("%s", math.round(blue_psi, 50))); - me["Press-Yellow"].setText(sprintf("%s", math.round(yellow_psi, 50))); - - if (blue_psi >= 1500) { - me["Blue-Line"].setColor(0.0509,0.7529,0.2941); - me["Blue-Line"].setColorFill(0.0509,0.7529,0.2941); - me["Blue-Indicator"].setColor(0.0509,0.7529,0.2941); - me["Press-Blue"].setColor(0.0509,0.7529,0.2941); - me["Blue-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Blue-Line"].setColor(0.7333,0.3803,0); - me["Blue-Line"].setColorFill(0.7333,0.3803,0); - me["Blue-Indicator"].setColor(0.7333,0.3803,0); - me["Press-Blue"].setColor(0.7333,0.3803,0); - me["Blue-label"].setColor(0.7333,0.3803,0); - } - - if (yellow_psi >= 1500) { - me["Yellow-Line"].setColor(0.0509,0.7529,0.2941); - me["Yellow-Line"].setColorFill(0.0509,0.7529,0.2941); - me["Yellow-Indicator"].setColor(0.0509,0.7529,0.2941); - me["Press-Yellow"].setColor(0.0509,0.7529,0.2941); - me["Yellow-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Yellow-Line"].setColor(0.7333,0.3803,0); - me["Yellow-Line"].setColorFill(0.7333,0.3803,0); - me["Yellow-Indicator"].setColor(0.7333,0.3803,0); - me["Press-Yellow"].setColor(0.7333,0.3803,0); - me["Yellow-label"].setColor(0.7333,0.3803,0); - } - - if (green_psi >= 1500) { - me["Green-Line"].setColor(0.0509,0.7529,0.2941); - me["Green-Line"].setColorFill(0.0509,0.7529,0.2941); - me["Green-Indicator"].setColor(0.0509,0.7529,0.2941); - me["Press-Green"].setColor(0.0509,0.7529,0.2941); - me["Green-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Green-Line"].setColor(0.7333,0.3803,0); - me["Green-Line"].setColorFill(0.7333,0.3803,0); - me["Green-Indicator"].setColor(0.7333,0.3803,0); - me["Press-Green"].setColor(0.7333,0.3803,0); - me["Green-label"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Switch.ptu.getValue() and !systems.HYD.Fail.ptuFault.getValue()) { - me["PTU-connection"].setColor(0.0509,0.7529,0.2941); - - if (systems.HYD.Ptu.active.getValue()) { - if (systems.HYD.Ptu.diff.getValue() < 0) { - me["PTU-Supply-Line"].show(); - me["PTU-supply-yellow"].show(); - me["PTU-supply-green"].hide(); - me["PTU-Auto-or-off"].hide(); - } else { - me["PTU-Supply-Line"].show(); - me["PTU-supply-yellow"].hide(); - me["PTU-supply-green"].show(); - me["PTU-Auto-or-off"].hide(); - } - } else { - me["PTU-Auto-or-off"].setColor(0.0509,0.7529,0.2941); - me["PTU-Supply-Line"].hide(); - me["PTU-supply-yellow"].hide(); - me["PTU-supply-green"].hide(); - me["PTU-Auto-or-off"].show(); - } - } else { - me["PTU-connection"].setColor(0.7333,0.3803,0); - me["PTU-Auto-or-off"].setColor(0.7333,0.3803,0); - me["PTU-Supply-Line"].hide(); - me["PTU-supply-yellow"].hide(); - me["PTU-supply-green"].hide(); - me["PTU-Auto-or-off"].show(); - } - - if (pts.Engines.Engine.n2Actual[0].getValue() >= 59) { - me["Pump-Green-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Pump-Green-label"].setColor(0.7333,0.3803,0); - } - - if (pts.Engines.Engine.n2Actual[1].getValue() >= 59) { - me["Pump-Yellow-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["Pump-Yellow-label"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Switch.greenEDP.getValue()) { - me["Pump-Green-off"].hide(); - if (green_psi >= 1500) { - me["Pump-Green-on"].show(); - me["Pump-LOPR-Green"].hide(); - me["Pump-Green"].setColor(0.0509,0.7529,0.2941); - me["Pump-Green"].setColorFill(0.0509,0.7529,0.2941); - } else { - me["Pump-Green-on"].hide(); - me["Pump-LOPR-Green"].show(); - me["Pump-Green"].setColor(0.7333,0.3803,0); - me["Pump-Green"].setColorFill(0.7333,0.3803,0); - } - } else { - me["Pump-Green-off"].show(); - me["Pump-Green-on"].hide(); - me["Pump-LOPR-Green"].hide(); - me["Pump-Green"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Switch.yellowEDP.getValue()) { - me["Pump-Yellow-off"].hide(); - if (yellow_psi >= 1500) { - me["Pump-Yellow-on"].show(); - me["Pump-LOPR-Yellow"].hide(); - me["Pump-Yellow"].setColorFill(0.0509,0.7529,0.2941); - me["Pump-Yellow"].setColor(0.0509,0.7529,0.2941); - } else { - me["Pump-Yellow-on"].hide(); - me["Pump-LOPR-Yellow"].show(); - me["Pump-Yellow"].setColorFill(0.7333,0.3803,0); - me["Pump-Yellow"].setColor(0.7333,0.3803,0); - } - } else { - me["Pump-Yellow-off"].show(); - me["Pump-Yellow-on"].hide(); - me["Pump-LOPR-Yellow"].hide(); - me["Pump-Yellow"].setColorFill(0.7333,0.3803,0); - me["Pump-Yellow"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Switch.blueElec.getValue()) { - me["Pump-Blue-off"].hide(); - if (blue_psi >= 1500) { - me["Pump-Blue-on"].show(); - me["Pump-Blue-off"].hide(); - me["Pump-Blue"].setColorFill(0.0509,0.7529,0.2941); - me["Pump-Blue"].setColor(0.0509,0.7529,0.2941); - } else { - me["Pump-Blue-off"].show(); - me["Pump-Blue-on"].hide(); - me["Pump-Blue"].setColorFill(0.7333,0.3803,0); - me["Pump-Blue"].setColor(0.7333,0.3803,0); - } - } else { - me["Pump-Blue-off"].show(); - me["Pump-Blue-on"].hide(); - me["Pump-Blue"].setColorFill(0.7333,0.3803,0); - me["Pump-Blue"].setColor(0.7333,0.3803,0); - } - - if (!systems.HYD.Switch.yellowElec.getValue()) { - me["ELEC-Yellow-on"].hide(); - me["ELEC-Yellow-off"].show(); - } else { - me["ELEC-Yellow-on"].show(); - me["ELEC-Yellow-off"].hide(); - if (yellow_psi >= 1500) { - me["ELEC-Yellow-on"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-Yellow-on"].setColor(0.7333,0.3803,0); - } - } - - if (y_resv_lo_air_press.getValue()) { - me["LO-AIR-PRESS-Yellow"].show(); - } else { - me["LO-AIR-PRESS-Yellow"].hide(); - } - - if (b_resv_lo_air_press.getValue()) { - me["LO-AIR-PRESS-Blue"].show(); - } else { - me["LO-AIR-PRESS-Blue"].hide(); - } - - if (g_resv_lo_air_press.getValue()) { - me["LO-AIR-PRESS-Green"].show(); - } else { - me["LO-AIR-PRESS-Green"].hide(); - } - - if (elec_pump_y_ovht.getValue()) { - me["ELEC-OVHT-Yellow"].show(); - } else { - me["ELEC-OVHT-Yellow"].hide(); - } - - if (elec_pump_b_ovht.getValue()) { - me["ELEC-OVHT-Blue"].show(); - } else { - me["ELEC-OVHT-Blue"].hide(); - } - - if (systems.HYD.Rat.position.getValue()) { - me["RAT-stowed"].hide(); - me["RAT-not-stowed"].show(); - } else { - me["RAT-stowed"].show(); - me["RAT-not-stowed"].hide(); - } - - if (y_resv_ovht.getValue()) { - me["OVHT-Yellow"].show(); - } else { - me["OVHT-Yellow"].hide(); - } - - if (b_resv_ovht.getValue()) { - me["OVHT-Green"].show(); - } else { - me["OVHT-Green"].hide(); - } - - if (g_resv_ovht.getValue()) { - me["OVHT-Blue"].show(); - } else { - me["OVHT-Blue"].hide(); - } - - if (systems.ELEC.Bus.ac1.getValue() >= 110) { - me["ELEC-Blue-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["ELEC-Blue-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - me["ELEC-Yellow-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["ELEC-Yellow-label"].setColor(0.7333,0.3803,0); - } - - if (systems.HYD.Valve.yellowFire.getValue() != 0) { - me["Fire-Valve-Yellow"].setColor(0.7333,0.3803,0); - me["Fire-Valve-Yellow"].setRotation(90 * D2R); - } else { - me["Fire-Valve-Yellow"].setColor(0.0509,0.7529,0.2941); - me["Fire-Valve-Yellow"].setRotation(0); - } - - if (systems.HYD.Valve.greenFire.getValue() != 0) { - me["Fire-Valve-Green"].setColor(0.7333,0.3803,0); - me["Fire-Valve-Green"].setRotation(90 * D2R); - } else { - me["Fire-Valve-Green"].setColor(0.0509,0.7529,0.2941); - me["Fire-Valve-Green"].setRotation(0); - } - - me.updateBottomStatus(); - }, -}; \ No newline at end of file + \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/res/hyd.svg b/Models/Instruments/Lower-ECAM/res/hyd.svg index 641a4b4c..cf008563 100644 --- a/Models/Instruments/Lower-ECAM/res/hyd.svg +++ b/Models/Instruments/Lower-ECAM/res/hyd.svg @@ -12,7 +12,7 @@ viewBox="0 0 1024 1024" version="1.1" id="svg2" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" + inkscape:version="0.92.4 (5da689c313, 2019-01-14)" sodipodi:docname="hyd.svg"> @@ -56,9 +56,9 @@ inkscape:window-height="705" id="namedview371" showgrid="true" - inkscape:zoom="4.0298682" - inkscape:cx="632.99286" - inkscape:cy="609.55322" + inkscape:zoom="0.71238678" + inkscape:cx="802.52236" + inkscape:cy="594.9486" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -84,8 +84,9 @@ x="817.61298" height="5.1203089" width="53.195583" - id="rect5105-2-5-3" - style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + id="Fire-Valve-Green-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-3" /> + id="Fire-Valve-Yellow-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-3-8" /> + id="Green-Line-Bottom" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.5107255;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8" /> + id="Green-Line-Middle" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.31405532;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6" /> + id="Green-Line-Top" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.44869995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-8" /> + id="Yellow-Line-Bottom" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.47072661;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-8" /> + id="Yellow-Line-Middle" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1.24083376;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-4" /> + id="Yellow-Line-Top" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.50812292;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-8-3" /> + id="Blue-Line-Top" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:3.83536959;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-8-9" /> + id="Blue-Line-Bottom" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:2.05138826;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-6-0-7-8-6-8-8-7-3-8-6-8-9-6" /> 00 - Date: Sun, 18 Jul 2021 20:58:09 +0100 Subject: [PATCH 17/28] Bleed page --- .../Lower-ECAM/Lower-ECAM-bleed.nas | 367 +++++++++- .../Lower-ECAM/Lower-ECAM-elec.nas | 20 +- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 690 +----------------- Models/Instruments/Lower-ECAM/res/bleed.svg | 34 +- 4 files changed, 402 insertions(+), 709 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas index 61f8a7f1..432df33e 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas @@ -23,6 +23,328 @@ var canvas_lowerECAMPageBleed = # init obj.update_items = [ + props.UpdateManager.FromHashList(["BleedCrossbleedCmd","BleedCrossbleed"], nil, func(val) { + if (val.BleedCrossbleedCmd != val.BleedCrossbleed) { + obj["BLEED-XFEED"].setColor(0.7333,0.3803,0); + obj["BLEED-XFEED-Cross"].setColorFill(0.7333,0.3803,0); + } else { + obj["BLEED-XFEED"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-XFEED-Cross"].setColorFill(0.0509,0.7529,0.2941); + } + + if (val.BleedCrossbleedCmd == val.BleedCrossbleed) { + if (val.BleedCrossbleedCmd) { + obj["BLEED-XFEED"].setRotation(0); + } else { + obj["BLEED-XFEED"].setRotation(90 * D2R); + } + } else { + obj["BLEED-XFEED"].setRotation(45 * D2R); + } + + if (val.BleedCrossbleed == 1) { + obj["BLEED-xbleedCenter"].show(); + obj["BLEED-xbleedRight"].show(); + } else { + obj["BLEED-xbleedCenter"].hide(); + obj["BLEED-xbleedRight"].hide(); + } + }), + props.UpdateManager.FromHashList(["BleedHPValve1","BleedHPValve1Cmd"], nil, func(val) { + if (val.BleedHPValve1Cmd == 1) { + obj["BLEED-HP-Valve-1"].setRotation(90 * D2R); + obj["BLEED-HP-1-connection"].show(); + } else { + obj["BLEED-HP-Valve-1"].setRotation(0); + obj["BLEED-HP-1-connection"].hide(); + } + + if (val.BleedHPValve1Cmd == val.BleedHPValve1) { + obj["BLEED-HP-Valve-1"].setColor(0.0509,0.7529,0.2941); + } else { + obj["BLEED-HP-Valve-1"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["BleedHPValve2","BleedHPValve2Cmd"], nil, func(val) { + if (val.BleedHPValve2Cmd == 1) { + obj["BLEED-HP-Valve-2"].setRotation(90 * D2R); + obj["BLEED-HP-2-connection"].show(); + } else { + obj["BLEED-HP-Valve-2"].setRotation(0); + obj["BLEED-HP-2-connection"].hide(); + } + + if (val.BleedHPValve2Cmd == val.BleedHPValve2) { + obj["BLEED-HP-Valve-2"].setColor(0.0509,0.7529,0.2941); + } else { + obj["BLEED-HP-Valve-2"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["BleedPRVValve1Cmd","BleedPRVValve1"], nil, func(val) { + if (val.BleedPRVValve1 == 0) { + obj["BLEED-ENG-1"].setRotation(0); + } else { + obj["BLEED-ENG-1"].setRotation(90 * D2R); + } + + if (val.BleedPRVValve1Cmd == val.BleedPRVValve1) { + obj["BLEED-ENG-1"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-ENG-1-Cross"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["BLEED-ENG-1"].setColor(0.7333,0.3803,0); + obj["BLEED-ENG-1-Cross"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["BleedPRVValve2Cmd","BleedPRVValve2"], nil, func(val) { + if (val.BleedPRVValve2 == 0) { + obj["BLEED-ENG-2"].setRotation(0); + } else { + obj["BLEED-ENG-2"].setRotation(90 * D2R); + } + + if (val.BleedPRVValve2Cmd == val.BleedPRVValve2) { + obj["BLEED-ENG-2"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-ENG-2-Cross"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["BLEED-ENG-2"].setColor(0.7333,0.3803,0); + obj["BLEED-ENG-2-Cross"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("gear1Wow", nil, func(val) { + if (val) { + obj["BLEED-GND"].show(); + } else { + obj["BLEED-GND"].hide(); + } + }), + props.UpdateManager.FromHashValue("IceWingSw", nil, func(val) { + if (val) { + obj["BLEED-Anti-Ice-Left"].show(); + obj["BLEED-Anti-Ice-Right"].show(); + } else { + obj["BLEED-Anti-Ice-Left"].hide(); + obj["BLEED-Anti-Ice-Right"].hide(); + } + }), + props.UpdateManager.FromHashValue("N2_actual_1", nil, func(val) { + if (val >= 59) { + obj["BLEED-ENG-1-label"].setColor(0.8078,0.8039,0.8078); + } else { + obj["BLEED-ENG-1-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("N2_actual_2", nil, func(val) { + if (val >= 59) { + obj["BLEED-ENG-2-label"].setColor(0.8078,0.8039,0.8078); + } else { + obj["BLEED-ENG-2-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["BleedBMC1Working","BleedPreCoolerPSI1"], nil, func(val) { + if (val.BleedBMC1Working) { + obj["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", math.round(val.BleedPreCoolerPSI1))); + if (val.BleedPreCoolerPSI1 < 4 or val.BleedPreCoolerPSI1 > 57) { + obj["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0); + } else { + obj["BLEED-Precooler-1-Inlet-Press"].setColor(0.0509,0.7529,0.2941); + } + } else { + obj["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", "XX")); + obj["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["BleedBMC2Working","BleedPreCoolerPSI2"], nil, func(val) { + if (val.BleedBMC2Working) { + obj["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", math.round(val.BleedPreCoolerPSI2))); + if (val.BleedPreCoolerPSI2 < 4 or val.BleedPreCoolerPSI2 > 57) { + obj["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0); + } else { + obj["BLEED-Precooler-2-Inlet-Press"].setColor(0.0509,0.7529,0.2941); + } + } else { + obj["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", "XX")); + obj["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["BleedBMC1Working","BleedPreCoolerTemp1","BleedPRVValve1Cmd","BleedPreCoolerOvht1"], nil, func(val) { + if (val.BleedBMC1Working) { + obj["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", math.round(val.BleedPreCoolerTemp1, 5))); + if (val.BleedPRVValve1Cmd and (val.BleedPreCoolerTemp1 < 150 or val.BleedPreCoolerOvht1)) { + obj["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0); + } else { + obj["BLEED-Precooler-1-Outlet-Temp"].setColor(0.0509,0.7529,0.2941); + } + } else { + obj["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", "XX")); + obj["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["BleedBMC2Working","BleedPreCoolerTemp2","BleedPRVValve2Cmd","BleedPreCoolerOvht2"], nil, func(val) { + if (val.BleedBMC2Working) { + obj["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", math.round(val.BleedPreCoolerTemp2, 5))); + if (val.BleedPRVValve2Cmd and (val.BleedPreCoolerTemp2 < 150 or val.BleedPreCoolerOvht2)) { + obj["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0); + } else { + obj["BLEED-Precooler-2-Outlet-Temp"].setColor(0.0509,0.7529,0.2941); + } + } else { + obj["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", "XX")); + obj["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("Pack1Bypass", 1, func(val) { + obj["BLEED-Pack-1-Bypass-needle"].setRotation((val - 50) * D2R); + }), + props.UpdateManager.FromHashValue("Pack2Bypass", 1, func(val) { + obj["BLEED-Pack-2-Bypass-needle"].setRotation((val - 50) * D2R); + }), + props.UpdateManager.FromHashValue("Pack1OutTemp", 0.25, func(val) { + obj["BLEED-Pack-1-Out-Temp"].setText(sprintf("%s", math.round(val, 5))); + if (val > 90) { + obj["BLEED-Pack-1-Out-Temp"].setColor(0.7333,0.3803,0); + } else { + obj["BLEED-Pack-1-Out-Temp"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("Pack2OutTemp", 0.25, func(val) { + obj["BLEED-Pack-2-Out-Temp"].setText(sprintf("%s", math.round(val, 5))); + if (val > 90) { + obj["BLEED-Pack-2-Out-Temp"].setColor(0.7333,0.3803,0); + } else { + obj["BLEED-Pack-2-Out-Temp"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("Pack1OutletTemp", 0.25, func(val) { + obj["BLEED-Pack-1-Comp-Out-Temp"].setText(sprintf("%s", math.round(val, 5))); + if (val > 230) { + obj["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.7333,0.3803,0); + } else { + obj["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("Pack2OutletTemp", 0.25, func(val) { + obj["BLEED-Pack-2-Comp-Out-Temp"].setText(sprintf("%s", math.round(val, 5))); + if (val > 230) { + obj["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.7333,0.3803,0); + } else { + obj["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashValue("Pack1FlowOutput", 0.5, func(val) { + obj["BLEED-Pack-1-Packflow-needle"].setRotation(val * D2R); + + }), + props.UpdateManager.FromHashValue("Pack2FlowOutput", 0.5, func(val) { + obj["BLEED-Pack-2-Packflow-needle"].setRotation(val * D2R); + }), + props.UpdateManager.FromHashList(["Pack1Switch","flowCtlValve1"], nil, func(val) { + if (val.flowCtlValve1 == 0) { + obj["BLEED-Pack-1-Packflow-needle"].setColorFill(0.7333,0.3803,0); + obj["BLEED-Pack-1-Flow-Valve"].setRotation(90 * D2R); + } else { + obj["BLEED-Pack-1-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941); + obj["BLEED-Pack-1-Flow-Valve"].setRotation(0); + } + + if (val.flowCtlValve1 == val.Pack1Switch) { + obj["BLEED-Pack-1-Flow-Valve"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-Pack-1-Flow-Valve-Cross"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["BLEED-Pack-1-Flow-Valve"].setColor(0.7333,0.3803,0); + obj["BLEED-Pack-1-Flow-Valve-Cross"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["Pack2Switch","flowCtlValve2"], nil, func(val) { + if (val.flowCtlValve2 == 0) { + obj["BLEED-Pack-2-Packflow-needle"].setColorFill(0.7333,0.3803,0); + obj["BLEED-Pack-2-Flow-Valve"].setRotation(90 * D2R); + } else { + obj["BLEED-Pack-2-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941); + obj["BLEED-Pack-2-Flow-Valve"].setRotation(0); + } + + if (val.flowCtlValve2 == val.Pack2Switch) { + obj["BLEED-Pack-2-Flow-Valve"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-Pack-2-Flow-Valve-Cross"].setColorFill(0.0509,0.7529,0.2941); + } else { + obj["BLEED-Pack-2-Flow-Valve"].setColor(0.7333,0.3803,0); + obj["BLEED-Pack-2-Flow-Valve-Cross"].setColorFill(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["flowCtlValve1","flowCtlValve2","RamAirValve","gear1Wow"], nil, func(val) { + if (val.RamAirValve == 0) { + obj["BLEED-Ram-Air"].setRotation(90 * D2R); + obj["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941); + obj["BLEED-Ram-Air-Cross"].setColorFill(0.0509,0.7529,0.2941); + obj["BLEED-Ram-Air-connection"].hide(); + } elsif (val.RamAirValve) { + obj["BLEED-Ram-Air"].setRotation(0); + if (val.gear1Wow) { + obj["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); + obj["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); + obj["BLEED-Ram-Air-Cross"].setColorFill(0.7333,0.3803,0); + } else { + obj["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941); + obj["BLEED-Ram-Air-Cross"].setColorFill(0.0509,0.7529,0.2941); + } + obj["BLEED-Ram-Air-connection"].show(); + } else { + obj["BLEED-Ram-Air"].setRotation(45 * D2R); + obj["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); + obj["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); + obj["BLEED-Ram-Air-Cross"].setColorFill(0.7333,0.3803,0); + obj["BLEED-Ram-Air-connection"].show(); + } + + if (val.flowCtlValve1 == 0 and val.flowCtlValve2 == 0) { + if (val.gear1Wow or val.RamAirValve != 1) { + obj["BLEED-cond-1"].setColor(0.7333,0.3803,0); + obj["BLEED-cond-2"].setColor(0.7333,0.3803,0); + obj["BLEED-cond-3"].setColor(0.7333,0.3803,0); + } else { + obj["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941); + } + } else { + obj["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashList(["BleedCrossbleed","apuMaster","apuBleedValvePos","ApuBleedNotOn"], nil, func(val) { + if (val.apuMaster) { + obj["BLEED-APU-LINES"].show(); + if (val.apuBleedValvePos == 1) { + obj["BLEED-APU-CIRCLE"].setRotation(0); + obj["BLEED-APU-connectionTop"].show(); + obj["BLEED-xbleedLeft"].show(); + } else { + obj["BLEED-APU-CIRCLE"].setRotation(90 * D2R); + obj["BLEED-APU-connectionTop"].hide(); + if (val.BleedCrossbleed != 1) { + obj["BLEED-xbleedLeft"].hide(); + } else { + obj["BLEED-xbleedLeft"].show(); + } + } + if (val.ApuBleedNotOn != 1) { + obj["BLEED-APU-CIRCLE"].setColor(0.0509,0.7529,0.2941); + } else { + obj["BLEED-APU-CIRCLE"].setColor(0.7333,0.3803,0); + } + } else { + if (val.BleedCrossbleed != 1) { + obj["BLEED-xbleedLeft"].hide(); + } else { + obj["BLEED-xbleedLeft"].show(); + } + obj["BLEED-APU-LINES"].hide(); + obj["BLEED-APU-connectionTop"].hide(); + } + }), ]; obj.displayedGForce = 0; @@ -62,10 +384,16 @@ var canvas_lowerECAMPageBleed = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit", "BLEED-XFEED", "BLEED-Ram-Air", "BLEED-Ram-Air-Cross", "BLEED-APU-CIRCLE", "BLEED-HP-Valve-1", "BLEED-XFEED-Cross", + "BLEED-APU-LINES","BLEED-ENG-1", "BLEED-HP-Valve-2", "BLEED-ENG-2", "BLEED-Precooler-1-Inlet-Press", "BLEED-Precooler-1-Outlet-Temp", + "BLEED-Precooler-2-Inlet-Press", "BLEED-Precooler-2-Outlet-Temp", "BLEED-ENG-1-label", "BLEED-ENG-2-label", + "BLEED-GND", "BLEED-Pack-1-Flow-Valve", "BLEED-Pack-2-Flow-Valve", "BLEED-Pack-1-Out-Temp","BLEED-APU-connectionTop", + "BLEED-Pack-1-Comp-Out-Temp", "BLEED-Pack-1-Packflow-needle", "BLEED-Pack-1-Bypass-needle", "BLEED-Pack-2-Out-Temp", + "BLEED-Pack-2-Bypass-needle", "BLEED-Pack-2-Comp-Out-Temp", "BLEED-Pack-2-Packflow-needle", "BLEED-Anti-Ice-Left", + "BLEED-Anti-Ice-Right", "BLEED-HP-2-connection", "BLEED-HP-1-connection", "BLEED-ANTI-ICE-ARROW-LEFT", "BLEED-ANTI-ICE-ARROW-RIGHT", + "BLEED-xbleedLeft","BLEED-xbleedCenter","BLEED-xbleedRight","BLEED-cond-1","BLEED-cond-2","BLEED-cond-3","BLEED-Ram-Air-connection","BLEED-ENG-1-Cross","BLEED-ENG-2-Cross", + "BLEED-Pack-1-Flow-Valve-Cross","BLEED-Pack-2-Flow-Valve-Cross"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { @@ -140,6 +468,37 @@ var canvas_lowerECAMPageBleed = }; var input = { + ApuBleedNotOn: "/systems/pneumatics/warnings/apu-bleed-not-on", + BleedBMC1Working: "/systems/pneumatics/indicating/bmc1-working", + BleedBMC2Working: "/systems/pneumatics/indicating/bmc2-working", + BleedCrossbleedCmd: "/systems/pneumatics/valves/crossbleed-valve-cmd", + BleedCrossbleed: "/systems/pneumatics/valves/crossbleed-valve", + BleedHPValve1: "/systems/pneumatics/valves/engine-1-hp-valve", + BleedHPValve2: "/systems/pneumatics/valves/engine-2-hp-valve", + BleedHPValve1Cmd: "/systems/pneumatics/valves/engine-1-hp-valve-cmd", + BleedHPValve2Cmd: "/systems/pneumatics/valves/engine-2-hp-valve-cmd", + BleedPRVValve1Cmd: "/controls/pneumatics/switches/bleed-1", + BleedPRVValve2Cmd: "/controls/pneumatics/switches/bleed-2", + BleedPRVValve1: "/systems/pneumatics/valves/engine-1-prv-valve", + BleedPRVValve2: "/systems/pneumatics/valves/engine-2-prv-valve", + BleedPreCoolerPSI1: "/systems/pneumatics/psi/engine-1-psi", + BleedPreCoolerPSI2: "/systems/pneumatics/psi/engine-2-psi", + BleedPreCoolerTemp1: "/systems/pneumatics/precooler/temp-1", + BleedPreCoolerTemp2: "/systems/pneumatics/precooler/temp-2", + BleedPreCoolerOvht1: "/systems/pneumatics/precooler/ovht-1", + BleedPreCoolerOvht2: "/systems/pneumatics/precooler/ovht-2", + Pack1Bypass: "/systems/pneumatics/pack-1-bypass", + Pack2Bypass: "/systems/pneumatics/pack-2-bypass", + Pack1FlowOutput: "/ECAM/Lower/pack-1-flow-output", + Pack2FlowOutput: "/ECAM/Lower/pack-2-flow-output", + Pack1OutTemp: "/systems/air-conditioning/packs/pack-1-output-temp", + Pack2OutTemp: "/systems/air-conditioning/packs/pack-2-output-temp", + Pack1OutletTemp: "/systems/air-conditioning/packs/pack-1-outlet-temp", + Pack2OutletTemp: "/systems/air-conditioning/packs/pack-2-outlet-temp", + Pack1Switch: "/controls/pneumatics/switches/pack-1", + Pack2Switch: "/controls/pneumatics/switches/pack-2", + RamAirValve: "/systems/air-conditioning/valves/ram-air", + IceWingSw: "/controls/ice-protection/wing", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas index c6f4a8b6..f42be362 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas @@ -21,6 +21,14 @@ var canvas_lowerECAMPageElec = obj.units = acconfig_weight_kgs.getValue(); # init + obj["IDG1-LOPR"].hide(); + obj["IDG2-LOPR"].hide(); + obj["Shed-label"].hide(); + obj["IDG2-RISE-label"].hide(); + obj["IDG2-RISE-Value"].hide(); + obj["IDG1-RISE-label"].hide(); + obj["IDG1-RISE-Value"].hide(); + obj.update_items = [ ]; @@ -62,10 +70,14 @@ var canvas_lowerECAMPageElec = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return["Bulk","BulkLine","BulkLbl","Exit1L","Exit1R","Cabin1Left","Cabin1LeftLbl","Cabin1LeftLine","Cabin1LeftSlide","Cabin1Right","Cabin1RightLbl","Cabin1RightLine","Cabin1RightSlide","Cabin2Left","Cabin2LeftLbl", - "Cabin2LeftLine","Cabin2LeftSlide","Cabin2Right","Cabin2RightLbl","Cabin2RightLine","Cabin2RightSlide","Cabin3Left","Cabin3LeftLbl","Cabin3LeftLine","Cabin3LeftSlide","Cabin3Right","Cabin3RightLbl","Cabin3RightLine","Cabin3RightSlide","AvionicsLine1", - "AvionicsLbl1","AvionicsLine2","AvionicsLbl2","Cargo1Line","Cargo1Lbl","Cargo1Door","Cargo2Line","Cargo2Lbl","Cargo2Door","ExitLSlide","ExitLLine","ExitLLbl","ExitRSlide","ExitRLine","ExitRLbl","Cabin4Left","Cabin4LeftLbl","Cabin4LeftLine", - "Cabin4LeftSlide","Cabin4Right","Cabin4RightLbl","Cabin4RightLine","Cabin4RightSlide","DOOROXY-REGUL-LO-PR"];}, + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","BAT1-label","Bat1Volt","Bat1Ampere","BAT2-label","Bat2Volt","Bat2Ampere","BAT1-charge","BAT1-discharge","BAT2-charge","BAT2-discharge","ELEC-Line-DC1-DCBAT","ELEC-Line-DC1-DCESS","ELEC-Line-DC2-DCBAT", + "ELEC-Line-DC1-DCESS_DCBAT","ELEC-Line-DC2-DCESS_DCBAT","ELEC-Line-TR1-DC1","ELEC-Line-TR2-DC2","Shed-label","ELEC-Line-ESSTR-DCESS","TR1-label","TR1Volt","TR1Ampere","TR2-label","TR2Volt","TR2Ampere","EMERGEN-group","EmergenVolt","EmergenHz", + "ELEC-Line-Emergen-ESSTR","EMERGEN-Label-off","Emergen-Label","EMERGEN-out","ELEC-Line-ACESS-TRESS","ELEC-Line-AC1-TR1","ELEC-Line-AC2-TR2","ELEC-Line-AC1-ACESS","ELEC-Line-AC2-ACESS","ACESS-SHED","ACESS","AC1-in","AC2-in","ELEC-Line-GEN1-AC1","ELEC-Line-GEN2-AC2", + "ELEC-Line-APU-AC1","ELEC-Line-APU-EXT","ELEC-Line-EXT-AC2","APU-out","EXT-out","EXTPWR-group","ExtVolt","ExtHz","APU-content","APU-border","APUGentext","APUGenLoad","APUGenVolt","APUGenHz","APUGEN-off","GEN1-label","Gen1Load","Gen1Volt","Gen1Hz", + "GEN2-label","Gen2Load","GEN2-off","Gen2Volt","Gen2Hz","ELEC-IDG-1-label","ELEC-IDG-1-num-label","ELEC-IDG-1-Temp","IDG1-LOPR","IDG1-DISC","IDG1-RISE-Value","IDG1-RISE-label","GalleyShed","ELEC-IDG-2-Temp","ELEC-IDG-2-label","ELEC-IDG-2-num-label","IDG2-RISE-label","IDG2-RISE-Value","IDG2-LOPR", + "IDG2-DISC","ESSTR-group","ESSTR","ESSTR-Volt","ESSTR-Ampere","BAT1-content","BAT2-content","BAT1-OFF","BAT2-OFF","GEN1-content","GEN2-content","GEN-1-num-label","GEN-2-num-label","GEN1-off","GEN2-off","GEN1-num-label","GEN2-num-label","EXTPWR-label", + "ELEC-ACESS-SHED-label","ELEC-DCBAT-label","ELEC-DCESS-label","ELEC-DC2-label","ELEC-DC1-label","ELEC-AC1-label","ELEC-AC2-label","ELEC-ACESS-label","ELEC-Line-ESSTR-DCESS-off","ELEC-Line-Emergen-ESSTR-off"]; + }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index 06ad2546..32c5b1c6 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -76,25 +76,19 @@ var final_deg = props.globals.getNode("", 1); var temperature_degc = props.globals.getNode("/environment/temperature-degc", 1); var tank3_content_lbs = props.globals.getNode("/fdm/jsbsim/propulsion/tank[2]/contents-lbs", 1); var ir2_knob = props.globals.getNode("/controls/adirs/ir[1]/knob", 1); -var apuBleedNotOn = props.globals.getNode("/systems/pneumatics/warnings/apu-bleed-not-on", 1); +var apuBleedNotOn = props.globals.getNode("", 1); var apu_valve = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve-cmd", 1); var apu_valve_state = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve", 1); var xbleedcmd = props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve-cmd", 1); var xbleed = props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve", 1); var xbleedstate = nil; -var hp_valve1_state = props.globals.getNode("/systems/pneumatics/valves/engine-1-hp-valve", 1); -var hp_valve2_state = props.globals.getNode("/systems/pneumatics/valves/engine-2-hp-valve", 1); -var hp_valve1 = props.globals.getNode("/systems/pneumatics/valves/engine-1-hp-valve-cmd", 1); -var hp_valve2 = props.globals.getNode("/systems/pneumatics/valves/engine-2-hp-valve-cmd", 1); -var eng_valve1 = props.globals.getNode("/systems/pneumatics/valves/engine-1-prv-valve", 1); -var eng_valve2 = props.globals.getNode("/systems/pneumatics/valves/engine-2-prv-valve", 1); var precooler1_psi = props.globals.getNode("/systems/pneumatics/psi/engine-1-psi", 1); var precooler2_psi = props.globals.getNode("/systems/pneumatics/psi/engine-2-psi", 1); var precooler1_temp = props.globals.getNode("/systems/pneumatics/precooler/temp-1", 1); var precooler2_temp = props.globals.getNode("/systems/pneumatics/precooler/temp-2", 1); var precooler1_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-1", 1); var precooler2_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-2", 1); -var bmc1working = props.globals.getNode("/systems/pneumatics/indicating/bmc1-working", 1); +var bmc1working = props.globals.getNode("", 1); var bmc2working = props.globals.getNode("/systems/pneumatics/indicating/bmc2-working", 1); var bmc1 = 0; var bmc2 = 0; @@ -142,650 +136,7 @@ var press_vs_norm = props.globals.getNode("", 1); var cabinalt = props.globals.getNode("", 1); var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); -# Create Nodes: - -var canvas_lowerECAM_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() { - var elapsedtime = pts.Sim.Time.elapsedSec.getValue(); - if (systems.ELEC.Bus.ac2.getValue() >= 110 and lighting_du4.getValue() > 0.01) { - if (du4_test_time.getValue() + du4_test_amount.getValue() >= elapsedtime) { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_test.page.show(); - lowerECAM_test.update(); - } else { - lowerECAM_test.page.hide(); - page = ecam_page.getValue(); - if (page == "apu") { - lowerECAM_apu.page.show(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_apu.update(); - } else if (page == "bleed") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.show(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_bleed.update(); - } else if (page == "cond") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.show(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_cond.update(); - } else if (page == "cruise") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.show(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_crz.update(); - } else if (page == "door") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.show(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_door.update(); - } else if (page == "elec") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.show(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_elec.update(); - } else if (page == "eng") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.show(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_eng.update(); - } else if (page == "fctl") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.show(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_fctl.update(); - } else if (page == "fuel") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.show(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_fuel.update(); - } else if (page == "press") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.show(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_press.update(); - } else if (page == "sts") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.show(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - lowerECAM_status.update(); - } else if (page == "hyd") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.show(); - lowerECAM_wheel.page.hide(); - lowerECAM_hyd.update(); - } else if (page == "wheel") { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.show(); - lowerECAM_wheel.update(); - } else { - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - } - } - } else { - lowerECAM_test.page.hide(); - lowerECAM_apu.page.hide(); - lowerECAM_bleed.page.hide(); - lowerECAM_cond.page.hide(); - lowerECAM_crz.page.hide(); - lowerECAM_door.page.hide(); - lowerECAM_elec.page.hide(); - lowerECAM_eng.page.hide(); - lowerECAM_fctl.page.hide(); - lowerECAM_fuel.page.hide(); - lowerECAM_press.page.hide(); - lowerECAM_status.page.hide(); - lowerECAM_hyd.page.hide(); - lowerECAM_wheel.page.hide(); - } - }, - updateBottomStatus: func() { - - - - - }, -}; -var canvas_lowerECAM_bleed = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_bleed, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit", "BLEED-XFEED", "BLEED-Ram-Air", "BLEED-APU-CIRCLE", "BLEED-HP-Valve-1", - "BLEED-APU-LINES","BLEED-ENG-1", "BLEED-HP-Valve-2", "BLEED-ENG-2", "BLEED-Precooler-1-Inlet-Press", "BLEED-Precooler-1-Outlet-Temp", - "BLEED-Precooler-2-Inlet-Press", "BLEED-Precooler-2-Outlet-Temp", "BLEED-ENG-1-label", "BLEED-ENG-2-label", - "BLEED-GND", "BLEED-Pack-1-Flow-Valve", "BLEED-Pack-2-Flow-Valve", "BLEED-Pack-1-Out-Temp","BLEED-APU-connectionTop", - "BLEED-Pack-1-Comp-Out-Temp", "BLEED-Pack-1-Packflow-needle", "BLEED-Pack-1-Bypass-needle", "BLEED-Pack-2-Out-Temp", - "BLEED-Pack-2-Bypass-needle", "BLEED-Pack-2-Comp-Out-Temp", "BLEED-Pack-2-Packflow-needle", "BLEED-Anti-Ice-Left", - "BLEED-Anti-Ice-Right", "BLEED-HP-2-connection", "BLEED-HP-1-connection", "BLEED-ANTI-ICE-ARROW-LEFT", "BLEED-ANTI-ICE-ARROW-RIGHT", - "BLEED-xbleedLeft","BLEED-xbleedCenter","BLEED-xbleedRight","BLEED-cond-1","BLEED-cond-2","BLEED-cond-3","BLEED-Ram-Air-connection"]; - }, - update: func() { - # X BLEED - xbleedstate = xbleed.getValue(); - xbleedcmdstate = xbleedcmd.getBoolValue(); - if (xbleedcmdstate != xbleedstate) { - me["BLEED-XFEED"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-XFEED"].setColor(0.0509,0.7529,0.2941); - } - - if (xbleedcmdstate == xbleedstate) { - if (xbleedcmdstate) { - me["BLEED-XFEED"].setRotation(0); - } else { - me["BLEED-XFEED"].setRotation(90 * D2R); - } - } else { - me["BLEED-XFEED"].setRotation(45 * D2R); - } - - if (xbleedstate == 1) { - me["BLEED-xbleedCenter"].show(); - me["BLEED-xbleedRight"].show(); - } else { - me["BLEED-xbleedCenter"].hide(); - me["BLEED-xbleedRight"].hide(); - } - - # HP valve 1 - hp_valve_state = hp_valve1_state.getValue(); - - if (hp_valve_state == 1) { - me["BLEED-HP-Valve-1"].setRotation(90 * D2R); - me["BLEED-HP-1-connection"].show(); - } else { - me["BLEED-HP-Valve-1"].setRotation(0); - me["BLEED-HP-1-connection"].hide(); - } - - if (hp_valve_state == hp_valve1.getValue()) { - me["BLEED-HP-Valve-1"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-HP-Valve-1"].setColor(0.7333,0.3803,0); - } - - # HP valve 2 - hp_valve_state = hp_valve2_state.getValue(); - - if (hp_valve_state == 1) { - me["BLEED-HP-Valve-2"].setRotation(90 * D2R); - me["BLEED-HP-2-connection"].show(); - } else { - me["BLEED-HP-Valve-2"].setRotation(0); - me["BLEED-HP-2-connection"].hide(); - } - - if (hp_valve_state == hp_valve2.getValue()) { - me["BLEED-HP-Valve-2"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-HP-Valve-2"].setColor(0.7333,0.3803,0); - } - - # ENG BLEED valve 1 - eng_valve_state = systems.PNEU.Switch.bleed1.getValue(); - bleed_valve_cur = eng_valve1.getValue(); - - if (bleed_valve_cur == 0) { - me["BLEED-ENG-1"].setRotation(0); - } else { - me["BLEED-ENG-1"].setRotation(90 * D2R); - } - - if (eng_valve_state == bleed_valve_cur) { - me["BLEED-ENG-1"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-ENG-1"].setColor(0.7333,0.3803,0); - } - - # APU BLEED valve - var apu_valve_state2 = apu_valve_state.getValue(); - - if (systems.APUNodes.Controls.master.getValue()) { - me["BLEED-APU-LINES"].show(); - if (apu_valve_state2 == 1) { - me["BLEED-APU-CIRCLE"].setRotation(0); - me["BLEED-APU-connectionTop"].show(); - me["BLEED-xbleedLeft"].show(); - } else { - me["BLEED-APU-CIRCLE"].setRotation(90 * D2R); - me["BLEED-APU-connectionTop"].hide(); - if (xbleed.getValue() != 1) { - me["BLEED-xbleedLeft"].hide(); - } else { - me["BLEED-xbleedLeft"].show(); - } - } - if (apuBleedNotOn.getValue() != 1) { - me["BLEED-APU-CIRCLE"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-APU-CIRCLE"].setColor(0.7333,0.3803,0); - } - } else { - if (xbleed.getValue() != 1) { - me["BLEED-xbleedLeft"].hide(); - } else { - me["BLEED-xbleedLeft"].show(); - } - me["BLEED-APU-LINES"].hide(); - me["BLEED-APU-connectionTop"].hide(); - } - - # ENG BLEED valve 2 - eng_valve_state = systems.PNEU.Switch.bleed2.getValue(); - bleed_valve_cur = eng_valve2.getValue(); - - if (bleed_valve_cur == 0) { - me["BLEED-ENG-2"].setRotation(0); - } else { - me["BLEED-ENG-2"].setRotation(90 * D2R); - } - - if (eng_valve_state == bleed_valve_cur) { - me["BLEED-ENG-2"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-ENG-2"].setColor(0.7333,0.3803,0); - } - - # Precooler inlet 1 - bmc1 = bmc1working.getValue(); - bmc2 = bmc2working.getValue(); - - if (bmc1) { - var precooler_psi = precooler1_psi.getValue(); - me["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", math.round(precooler_psi))); - if (precooler_psi < 4 or precooler_psi > 57) { - me["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Precooler-1-Inlet-Press"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", "XX")); - me["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0); - } - - # Precooler inlet 2 - if (bmc2) { - var precooler_psi = precooler2_psi.getValue(); - me["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", math.round(precooler_psi))); - if (precooler_psi < 4 or precooler_psi > 57) { - me["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Precooler-2-Inlet-Press"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", "XX")); - me["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0); - } - - # Precooler outlet 1 - if (bmc1) { - var precooler_temp = precooler1_temp.getValue(); - me["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", math.round(precooler_temp, 5))); - if (systems.PNEU.Switch.bleed1.getValue() and (precooler_temp < 150 or precooler1_ovht.getValue())) { - me["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Precooler-1-Outlet-Temp"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", "XX")); - me["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0); - } - - # Precooler outlet 2 - if (bmc2) { - var precooler_temp = precooler2_temp.getValue(); - me["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", math.round(precooler_temp, 5))); - if (systems.PNEU.Switch.bleed2.getValue() and (precooler_temp < 150 or precooler2_ovht.getValue())) { - me["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Precooler-2-Outlet-Temp"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", "XX")); - me["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0); - } - - # GND air - if (pts.Gear.wow[1].getValue()) { - me["BLEED-GND"].show(); - } else { - me["BLEED-GND"].hide(); - } - - # WING ANTI ICE - if (switch_wing_aice.getValue()) { - me["BLEED-Anti-Ice-Left"].show(); - me["BLEED-Anti-Ice-Right"].show(); - } else { - me["BLEED-Anti-Ice-Left"].hide(); - me["BLEED-Anti-Ice-Right"].hide(); - } - - # ENG 1 label - if (pts.Engines.Engine.n2Actual[0].getValue() >= 59) { - me["BLEED-ENG-1-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["BLEED-ENG-1-label"].setColor(0.7333,0.3803,0); - } - - # ENG 2 label - if (pts.Engines.Engine.n2Actual[1].getValue() >= 59) { - me["BLEED-ENG-2-label"].setColor(0.8078,0.8039,0.8078); - } else { - me["BLEED-ENG-2-label"].setColor(0.7333,0.3803,0); - } - - # PACK 1 ----------------------------------------- - packValveState = systems.PNEU.Valves.pack1.getValue(); - me["BLEED-Pack-1-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack1OutTemp.getValue(), 5))); - me["BLEED-Pack-1-Comp-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack1OutletTemp.getValue(), 5))); - - if (systems.PNEU.Packs.pack1OutTemp.getValue() > 90) { - me["BLEED-Pack-1-Out-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Pack-1-Out-Temp"].setColor(0.0509,0.7529,0.2941); - } - - # `-50` cause the middel position from where we move the needle is at 50 - me["BLEED-Pack-1-Bypass-needle"].setRotation((pack1_bypass.getValue() - 50) * D2R); - - if (systems.PNEU.Packs.pack1OutletTemp.getValue() > 230) { - me["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Pack-1-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941); - } - - me["BLEED-Pack-1-Packflow-needle"].setRotation(systems.PNEU.Packs.packFlow1.getValue() * D2R); - - if (packValveState == 0) { - me["BLEED-Pack-1-Packflow-needle"].setColorFill(0.7333,0.3803,0); - me["BLEED-Pack-1-Flow-Valve"].setRotation(90 * D2R); - } else { - me["BLEED-Pack-1-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941); - me["BLEED-Pack-1-Flow-Valve"].setRotation(0); - } - - if (packValveState == systems.PNEU.Switch.pack1.getValue()) { - me["BLEED-Pack-1-Flow-Valve"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-Pack-1-Flow-Valve"].setColor(0.7333,0.3803,0); - } - - # PACK 2 ----------------------------------------- - packValveState = systems.PNEU.Valves.pack2.getValue(); - me["BLEED-Pack-2-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack2OutTemp.getValue(), 5))); - me["BLEED-Pack-2-Comp-Out-Temp"].setText(sprintf("%s", math.round(systems.PNEU.Packs.pack2OutletTemp.getValue(), 5))); - - if (systems.PNEU.Packs.pack2OutTemp.getValue() > 90) { - me["BLEED-Pack-2-Out-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Pack-2-Out-Temp"].setColor(0.0509,0.7529,0.2941); - } - - me["BLEED-Pack-2-Bypass-needle"].setRotation((pack2_bypass.getValue() - 50) * D2R); - - if (systems.PNEU.Packs.pack2OutletTemp.getValue() > 230) { - me["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-Pack-2-Comp-Out-Temp"].setColor(0.0509,0.7529,0.2941); - } - - me["BLEED-Pack-2-Packflow-needle"].setRotation(systems.PNEU.Packs.packFlow2.getValue() * D2R); - - if (packValveState == 0) { - me["BLEED-Pack-2-Packflow-needle"].setColorFill(0.7333,0.3803,0); - me["BLEED-Pack-2-Flow-Valve"].setRotation(90 * D2R); - } else { - me["BLEED-Pack-2-Packflow-needle"].setColorFill(0.0509,0.7529,0.2941); - me["BLEED-Pack-2-Flow-Valve"].setRotation(0); - } - - if (packValveState == systems.PNEU.Switch.pack2.getValue()) { - me["BLEED-Pack-2-Flow-Valve"].setColor(0.0509,0.7529,0.2941); - } else { - me["BLEED-Pack-2-Flow-Valve"].setColor(0.7333,0.3803,0); - } - - # Ram Air - ramAirState = systems.PNEU.Valves.ramAir.getValue(); - if (ramAirState == 0) { - me["BLEED-Ram-Air"].setRotation(90 * D2R); - me["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941); - me["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941); - me["BLEED-Ram-Air-connection"].hide(); - } elsif (ramAirState) { - me["BLEED-Ram-Air"].setRotation(0); - if (pts.Gear.wow[1].getValue()) { - me["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); - me["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); - } else { - me["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941); - me["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941); - } - me["BLEED-Ram-Air-connection"].show(); - } else { - me["BLEED-Ram-Air"].setRotation(45 * D2R); - me["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); - me["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); - me["BLEED-Ram-Air-connection"].show(); - } - - # Triangles - if (systems.PNEU.Valves.pack1.getValue() == 0 and systems.PNEU.Valves.pack2.getValue() == 0) { - if (pts.Gear.wow[1].getValue() or ramAirState != 1) { - me["BLEED-cond-1"].setColor(0.7333,0.3803,0); - me["BLEED-cond-2"].setColor(0.7333,0.3803,0); - me["BLEED-cond-3"].setColor(0.7333,0.3803,0); - } else { - me["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941); - me["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941); - me["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["BLEED-cond-1"].setColor(0.0509,0.7529,0.2941); - me["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941); - me["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941); - } - me.updateBottomStatus(); - }, -}; - -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","UTCh","UTCm","GLoad","GW-weight-unit","BAT1-label","Bat1Volt","Bat1Ampere","BAT2-label","Bat2Volt","Bat2Ampere","BAT1-charge","BAT1-discharge","BAT2-charge","BAT2-discharge","ELEC-Line-DC1-DCBAT","ELEC-Line-DC1-DCESS","ELEC-Line-DC2-DCBAT", - "ELEC-Line-DC1-DCESS_DCBAT","ELEC-Line-DC2-DCESS_DCBAT","ELEC-Line-TR1-DC1","ELEC-Line-TR2-DC2","Shed-label","ELEC-Line-ESSTR-DCESS","TR1-label","TR1Volt","TR1Ampere","TR2-label","TR2Volt","TR2Ampere","EMERGEN-group","EmergenVolt","EmergenHz", - "ELEC-Line-Emergen-ESSTR","EMERGEN-Label-off","Emergen-Label","EMERGEN-out","ELEC-Line-ACESS-TRESS","ELEC-Line-AC1-TR1","ELEC-Line-AC2-TR2","ELEC-Line-AC1-ACESS","ELEC-Line-AC2-ACESS","ACESS-SHED","ACESS","AC1-in","AC2-in","ELEC-Line-GEN1-AC1","ELEC-Line-GEN2-AC2", - "ELEC-Line-APU-AC1","ELEC-Line-APU-EXT","ELEC-Line-EXT-AC2","APU-out","EXT-out","EXTPWR-group","ExtVolt","ExtHz","APU-content","APU-border","APUGentext","APUGenLoad","APUGenVolt","APUGenHz","APUGEN-off","GEN1-label","Gen1Load","Gen1Volt","Gen1Hz", - "GEN2-label","Gen2Load","GEN2-off","Gen2Volt","Gen2Hz","ELEC-IDG-1-label","ELEC-IDG-1-num-label","ELEC-IDG-1-Temp","IDG1-LOPR","IDG1-DISC","IDG1-RISE-Value","IDG1-RISE-label","GalleyShed","ELEC-IDG-2-Temp","ELEC-IDG-2-label","ELEC-IDG-2-num-label","IDG2-RISE-label","IDG2-RISE-Value","IDG2-LOPR", - "IDG2-DISC","ESSTR-group","ESSTR","ESSTR-Volt","ESSTR-Ampere","BAT1-content","BAT2-content","BAT1-OFF","BAT2-OFF","GEN1-content","GEN2-content","GEN-1-num-label","GEN-2-num-label","GEN1-off","GEN2-off","GEN1-num-label","GEN2-num-label","EXTPWR-label", - "ELEC-ACESS-SHED-label","ELEC-DCBAT-label","ELEC-DCESS-label","ELEC-DC2-label","ELEC-DC1-label","ELEC-AC1-label","ELEC-AC2-label","ELEC-ACESS-label","ELEC-Line-ESSTR-DCESS-off","ELEC-Line-Emergen-ESSTR-off"]; - }, - update: func() { # BAT1 if (systems.ELEC.Switch.bat1.getValue() == 0) { @@ -1429,41 +780,6 @@ var canvas_lowerECAM_elec = { } # hide not yet implemented items - me["IDG1-LOPR"].hide(); - me["IDG2-LOPR"].hide(); - me["Shed-label"].hide(); - me["IDG2-RISE-label"].hide(); - me["IDG2-RISE-Value"].hide(); - me["IDG1-RISE-label"].hide(); - me["IDG1-RISE-Value"].hide(); - me.updateBottomStatus(); }, -}; - -var canvas_lowerECAM_eng = { - new: func(canvas_group, file) { - var m = {parents: [canvas_lowerECAM_eng, canvas_lowerECAM_base]}; - m.init(canvas_group, file); - - return m; - }, - getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit",]; - }, - update: func() { - # Oil Quantity - - - # Oil Pressure - - - # Fuel Used - if (acconfig_weight_kgs.getValue()) { - } else { - } - - me.updateBottomStatus(); - }, -}; - \ No newline at end of file +}; \ No newline at end of file diff --git a/Models/Instruments/Lower-ECAM/res/bleed.svg b/Models/Instruments/Lower-ECAM/res/bleed.svg index 2bc0a2b7..d08a757a 100644 --- a/Models/Instruments/Lower-ECAM/res/bleed.svg +++ b/Models/Instruments/Lower-ECAM/res/bleed.svg @@ -42,8 +42,8 @@ id="namedview371" showgrid="true" inkscape:zoom="0.73868665" - inkscape:cx="272.22904" - inkscape:cy="280.96379" + inkscape:cx="201.82373" + inkscape:cy="930.76571" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -67,8 +67,9 @@ x="817.61298" height="5.1203089" width="53.195583" - id="rect5105-2" - style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + id="BLEED-XFEED-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2" /> + id="BLEED-ENG-1-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-7" /> + id="BLEED-Ram-Air-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-3" /> + id="BLEED-Pack-1-Flow-Valve-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-3-6-9" /> + id="BLEED-Pack-2-Flow-Valve-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-3-6-9-2" /> + id="BLEED-ENG-2-Cross" + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + inkscape:label="#rect5105-2-5-7-7" /> Date: Sat, 24 Jul 2021 12:29:58 +0100 Subject: [PATCH 18/28] Start elec --- .../Instruments/Lower-ECAM/Lower-ECAM-APU.nas | 6 +- .../Lower-ECAM/Lower-ECAM-elec.nas | 396 +++++++++++++++++- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 368 +--------------- Nasal/Libraries/libraries.nas | 2 + 4 files changed, 403 insertions(+), 369 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas index 55015168..83d47a84 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-APU.nas @@ -130,7 +130,11 @@ var canvas_lowerECAMPageApu = } }), props.UpdateManager.FromHashValue("apuHertz", 1, func(val) { - obj["APUGenHz"].setText(sprintf("%s", math.round(val))); + if (val == 0) { + obj["APUGenHz"].setText(sprintf("XX")); + } else { + obj["APUGenHz"].setText(sprintf("%s", math.round(val))); + } if (val >= 390 and val <= 410) { obj["APUGenHz"].setColor(0.0509,0.7529,0.2941); diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas index f42be362..dc550a7b 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas @@ -29,8 +29,377 @@ var canvas_lowerECAMPageElec = obj["IDG1-RISE-label"].hide(); obj["IDG1-RISE-Value"].hide(); - obj.update_items = [ + props.UpdateManager.FromHashValue("apuLoad", 0.1, func(val) { + obj["APUGenLoad"].setText(sprintf("%s", math.round(val))); + + if (val < 110) { + obj["APUGenHz"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUGenHz"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("apuHertz", 0.5, func(val) { + if (val == 0) { + obj["APUGenHz"].setText(sprintf("XX")); + } else { + obj["APUGenHz"].setText(sprintf("%s", math.round(val))); + } + + if (val >= 390 and val <= 410) { + obj["APUGenHz"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUGenHz"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("apuVolt", 0.1, func(val) { + obj["APUGenVolt"].setText(sprintf("%s", math.round(val))); + + if (val >= 110 and val <= 120) { + obj["APUGenVolt"].setColor(0.0509,0.7529,0.2941); + } else { + obj["APUGenVolt"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["apuMaster","apuVolt","apuLoad","apuHertz","apuGLC"], nil, func(val) { + if (val.apuMaster == 0) { + obj["APUGentext"].setColor(0.8078,0.8039,0.8078); + } else { + if (val.apuGLC == 0) { + obj["APUGentext"].setColor(0.7333,0.3803,0); + } else if (val.apuVolt > 120 or val.apuVolt < 110 or val.apuHertz > 410 or val.apuHertz < 390 or val.apuLoad >= 100) { + obj["APUGentext"].setColor(0.7333,0.3803,0); + } else { + obj["APUGentext"].setColor(0.8078,0.8039,0.8078); + } + } + }), + props.UpdateManager.FromHashList(["apuMaster","apuGLC"], nil, func(val) { + if (val.apuMaster == 0) { + obj["APU-content"].hide(); + obj["APUGEN-off"].hide(); + obj["APU-border"].hide(); + } else { + obj["APU-border"].show(); + if (val.apuGLC == 0) { + obj["APU-content"].hide(); + obj["APUGEN-off"].show(); + } else { + obj["APU-content"].show(); + obj["APUGEN-off"].hide(); + } + } + }), + props.UpdateManager.FromHashValue("elecIDG1Disc", nil, func(val) { + if (!val) { + obj["IDG1-DISC"].show(); + obj["ELEC-IDG-1-label"].setColor(0.7333,0.3803,0); + } else { + obj["IDG1-DISC"].hide(); + obj["ELEC-IDG-1-label"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashValue("elecIDG2Disc", nil, func(val) { + if (!val) { + obj["IDG2-DISC"].show(); + obj["ELEC-IDG-2-label"].setColor(0.7333,0.3803,0); + } else { + obj["IDG2-DISC"].hide(); + obj["ELEC-IDG-2-label"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashValue("engine1Running", nil, func(val) { + if (val == 0) { + obj["ELEC-IDG-1-num-label"].setColor(0.7333,0.3803,0); + } else { + obj["ELEC-IDG-1-num-label"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashValue("engine2Running", nil, func(val) { + if (val == 0) { + obj["ELEC-IDG-2-num-label"].setColor(0.7333,0.3803,0); + } else { + obj["ELEC-IDG-2-num-label"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashValue("dc1", 0.5, func(val) { + if (val > 25) { + obj["ELEC-DC1-label"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ELEC-DC1-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("dc2", 0.5, func(val) { + if (val > 25) { + obj["ELEC-DC2-label"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ELEC-DC2-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("dcEss", 0.5, func(val) { + if (val > 25) { + obj["ELEC-DCESS-label"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ELEC-DCESS-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("ac1", 0.5, func(val) { + if (val >= 110) { + obj["ELEC-AC1-label"].setColor(0.0509,0.7529,0.2941); + obj["AC1-in"].show(); + } else { + obj["ELEC-AC1-label"].setColor(0.7333,0.3803,0); + obj["AC1-in"].hide(); + } + }), + props.UpdateManager.FromHashValue("ac2", 0.5, func(val) { + if (val >= 110) { + obj["ELEC-AC2-label"].setColor(0.0509,0.7529,0.2941); + obj["AC2-in"].show(); + } else { + obj["ELEC-AC2-label"].setColor(0.7333,0.3803,0); + obj["AC2-in"].hide(); + } + }), + props.UpdateManager.FromHashValue("acEss", 0.5, func(val) { + if (val >= 110) { + obj["ELEC-ACESS-label"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ELEC-ACESS-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("acEssShed", 0.5, func(val) { + if (val >= 110) { + obj["ACESS-SHED"].hide(); + } else { + obj["ACESS-SHED"].show(); + } + }), + props.UpdateManager.FromHashValue("ElecGalleyShed", nil, func(val) { + if (val) { + obj["GalleyShed"].show(); + } else { + obj["GalleyShed"].hide(); + } + }), + props.UpdateManager.FromHashList(["elecBat1Switch","elecBat2Switch","dcBat"], nil, func(val) { + if (val.elecBat1Switch or val.elecBat2Switch) { + obj["ELEC-DCBAT-label"].setText("DC BAT"); + if (val.dcBat > 25) { + obj["ELEC-DCBAT-label"].setColor(0.0509,0.7529,0.2941); + } else { + obj["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0); + } + } else { + obj["ELEC-DCBAT-label"].setText("XX"); # BCL not powered hence no voltage info supplied from BCL + obj["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashList(["elecBat1Switch","elecBat1Volt","elecBat1Amp","elecBat1Direction","elecBat1Fault"], nil, func(val) { + if (val.elecBat1Switch == 0) { + obj["BAT1-OFF"].show(); + obj["BAT1-content"].hide(); + obj["BAT1-discharge"].hide(); + obj["BAT1-charge"].hide(); + } else { + obj["BAT1-OFF"].hide(); + obj["BAT1-content"].show(); + obj["Bat1Ampere"].setText(sprintf("%s", val.elecBat1Amp)); + obj["Bat1Volt"].setText(sprintf("%s", val.elecBat1Volt)); + + if (val.elecBat1Volt >= 24.95 and val.elecBat1Volt <= 31.05) { + obj["Bat1Volt"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Bat1Volt"].setColor(0.7333,0.3803,0); + } + + if (val.elecBat1Amp > 5) { + obj["Bat1Ampere"].setColor(0.7333,0.3803,0); + } else { + obj["Bat1Ampere"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecBat1Direction == 0) { + obj["BAT1-discharge"].hide(); + obj["BAT1-charge"].hide(); + } else { + if (val.elecBat1Direction == -1) { + obj["BAT1-charge"].show(); + obj["BAT1-discharge"].hide(); + } else { + obj["BAT1-discharge"].show(); + obj["BAT1-charge"].hide(); + } + } + } + + if (val.elecBat1Fault or val.elecBat1Volt < 25 or val.elecBat1Volt > 31 or val.elecBat1Amp > 5) { + obj["BAT1-label"].setColor(0.7333,0.3803,0); + } else { + obj["BAT1-label"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashList(["elecBat2Switch","elecBat2Volt","elecBat2Amp","elecBat2Direction","elecBat2Fault"], nil, func(val) { + if (val.elecBat2Switch == 0) { + obj["BAT2-OFF"].show(); + obj["BAT2-content"].hide(); + obj["BAT2-discharge"].hide(); + obj["BAT2-charge"].hide(); + } else { + obj["BAT2-OFF"].hide(); + obj["BAT2-content"].show(); + obj["Bat2Ampere"].setText(sprintf("%s", val.elecBat2Amp)); + obj["Bat2Volt"].setText(sprintf("%s", val.elecBat2Volt)); + + if (val.elecBat2Volt >= 24.95 and val.elecBat2Volt <= 31.05) { + obj["Bat2Volt"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Bat2Volt"].setColor(0.7333,0.3803,0); + } + + if (val.elecBat2Amp > 5) { + obj["Bat2Ampere"].setColor(0.7333,0.3803,0); + } else { + obj["Bat2Ampere"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecBat2Direction == 0) { + obj["BAT2-discharge"].hide(); + obj["BAT2-charge"].hide(); + } else { + if (val.elecBat2Direction == -1) { + obj["BAT2-charge"].show(); + obj["BAT2-discharge"].hide(); + } else { + obj["BAT2-discharge"].show(); + obj["BAT2-charge"].hide(); + } + } + } + + if (val.elecBat2Fault or val.elecBat2Volt < 25 or val.elecBat2Volt > 31 or val.elecBat2Amp > 5) { + obj["BAT2-label"].setColor(0.7333,0.3803,0); + } else { + obj["BAT2-label"].setColor(0.8078,0.8039,0.8078); + } + }), + props.UpdateManager.FromHashList(["elecTR1Amp","elecTR1Volt"], nil, func(val) { + obj["TR1Volt"].setText(sprintf("%s", math.round(val.elecTR1Volt))); + obj["TR1Ampere"].setText(sprintf("%s", math.round(val.elecTR1Amp))); + + if (val.elecTR1Volt < 25 or val.elecTR1Volt > 31 or val.elecTR1Amp < 5) { + obj["TR1-label"].setColor(0.7333,0.3803,0); + } else { + obj["TR1-label"].setColor(0.8078,0.8039,0.8078); + } + + if (val.elecTR1Volt < 25 or val.elecTR1Volt > 31) { + obj["TR1Volt"].setColor(0.7333,0.3803,0); + } else { + obj["TR1Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecTR1Amp < 5) { + obj["TR1Ampere"].setColor(0.7333,0.3803,0); + } else { + obj["TR1Ampere"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashList(["elecTR2Amp","elecTR2Volt"], nil, func(val) { + obj["TR2Volt"].setText(sprintf("%s", math.round(val.elecTR2Volt))); + obj["TR2Ampere"].setText(sprintf("%s", math.round(val.elecTR2Amp))); + + if (val.elecTR2Volt < 25 or val.elecTR2Volt > 31 or val.elecTR2Amp < 5) { + obj["TR2-label"].setColor(0.7333,0.3803,0); + } else { + obj["TR2-label"].setColor(0.8078,0.8039,0.8078); + } + + if (val.elecTR2Volt < 25 or val.elecTR2Volt > 31) { + obj["TR2Volt"].setColor(0.7333,0.3803,0); + } else { + obj["TR2Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecTR2Amp < 5) { + obj["TR2Ampere"].setColor(0.7333,0.3803,0); + } else { + obj["TR2Ampere"].setColor(0.0509,0.7529,0.2941); + } + }), + props.UpdateManager.FromHashList(["elecExtHertz","elecExtVolt","elecGroundCart"], nil, func(val) { + if (val.elecGroundCart == 0) { + obj["EXTPWR-group"].hide(); + } else { + obj["EXTPWR-group"].show(); + obj["ExtVolt"].setText(sprintf("%s", math.round(val.elecExtVolt))); + obj["ExtHz"].setText(sprintf("%s", math.round(val.elecExtHertz))); + + if (val.elecExtHertz > 410 or val.elecExtHertz < 390 or val.elecExtVolt > 120 or val.elecExtVolt < 110) { + obj["EXTPWR-label"].setColor(0.7333,0.3803,0); + } else { + obj["EXTPWR-label"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecExtHertz > 410 or val.elecExtHertz < 390) { + obj["ExtHz"].setColor(0.7333,0.3803,0); + } else { + obj["ExtHz"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecExtVolt > 120 or val.elecExtVolt < 110) { + obj["ExtVolt"].setColor(0.7333,0.3803,0); + } else { + obj["ExtVolt"].setColor(0.0509,0.7529,0.2941); + } + } + }), + props.UpdateManager.FromHashValue("elecDCTie1", nil, func(val) { + if (val) { + obj["ELEC-Line-DC1-DCESS_DCBAT"].show(); + } else { + obj["ELEC-Line-DC1-DCESS_DCBAT"].hide(); + } + }), + props.UpdateManager.FromHashValue("elecDCTie2", nil, func(val) { + if (val) { + obj["ELEC-Line-DC2-DCESS_DCBAT"].show(); + obj["ELEC-Line-DC2-DCBAT"].show(); + } else { + obj["ELEC-Line-DC2-DCESS_DCBAT"].hide(); + obj["ELEC-Line-DC2-DCBAT"].show(); + } + }), + props.UpdateManager.FromHashList(["elecDcEssFeedBat","elecDCTie1"], nil, func(val) { + if (val.elecDcEssFeedBat or val.elecDCTie1) { + obj["ELEC-Line-DC1-DCBAT"].show(); + } else { + obj["ELEC-Line-DC1-DCBAT"].hide(); + } + }), + props.UpdateManager.FromHashValue("elecDcEssFeedBat", nil, func(val) { + if (val) { + obj["ELEC-Line-DC1-DCESS"].show(); + } else { + obj["ELEC-Line-DC1-DCESS"].hide(); + } + }), + props.UpdateManager.FromHashValue("elecDcEssFeedTr", nil, func(val) { + if (val) { + obj["ELEC-Line-ESSTR-DCESS"].show(); + } else { + obj["ELEC-Line-ESSTR-DCESS"].hide(); + } + }), + props.UpdateManager.FromHashValue("elecAcEssEmerGenFeed", nil, func(val) { + if (val) { + obj["EMERGEN-out"].show(); + obj["ELEC-Line-Emergen-ESSTR"].show(); + } else { + obj["EMERGEN-out"].hide(); + obj["ELEC-Line-Emergen-ESSTR"].hide(); + } + }), ]; obj.displayedGForce = 0; @@ -152,6 +521,31 @@ var canvas_lowerECAMPageElec = }; var input = { + elecBat1Amp: "/systems/electrical/sources/bat-1/amps", + elecBat2Amp: "/systems/electrical/sources/bat-2/amps", + elecBat1Direction: "/systems/electrical/sources/bat-1/direction", + elecBat2Direction: "/systems/electrical/sources/bat-2/direction", + elecBat1Fault: "/systems/electrical/light/bat-1-fault", + elecBat2Fault: "/systems/electrical/light/bat-2-fault", + elecBat1Volt: "/systems/electrical/sources/bat-1/volt", + elecBat2Volt: "/systems/electrical/sources/bat-2/volt", + elecBat1Switch: "/controls/electrical/switches/bat-1", + elecBat2Switch: "/controls/electrical/switches/bat-2", + elecTR1Amp: "/systems/electrical/relay/tr-contactor-1/output-amp", + elecTR2Amp: "/systems/electrical/relay/tr-contactor-2/output-amp", + elecTR1Volt: "/systems/electrical/relay/tr-contactor-1/output", + elecTR2Volt: "/systems/electrical/relay/tr-contactor-2/output", + elecIDG1Disc: "/controls/electrical/switches/idg-1-disc", + elecIDG2Disc: "/controls/electrical/switches/idg-2-disc", + elecGroundCart: "/controls/electrical/ground-cart", + elecExtHertz: "/systems/electrical/sources/ext/output-hertz", + elecExtVolt: "/systems/electrical/sources/ext/output-volt", + elecDCTie1: "/systems/electrical/relay/dc-bus-tie-dc-1/contact-pos", + elecDCTie2: "/systems/electrical/relay/dc-bus-tie-dc-2/contact-pos", + elecDcEssFeedBat: "/systems/electrical/relay/dc-ess-feed-bat/contact-pos", + elecDcEssFeedTr: "/systems/electrical/relay/dc-ess-feed-tr/contact-pos", + elecAcEssEmerGenFeed: "/systems/electrical/relay/ac-ess-feed-emer-gen/contact-pos", + ElecGalleyShed: "/systems/electrical/some-electric-thingie/galley-shed", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas index 32c5b1c6..beb1adfb 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas @@ -117,8 +117,6 @@ var L2BrakeTempc = props.globals.getNode("/gear/gear[1]/L2brake-temp-degc", 1); var R3BrakeTempc = props.globals.getNode("/gear/gear[2]/R3brake-temp-degc", 1); var R4BrakeTempc = props.globals.getNode("/gear/gear[2]/R4brake-temp-degc", 1); -var eng1_running = props.globals.getNode("/engines/engine[0]/running", 1); -var eng2_running = props.globals.getNode("/engines/engine[1]/running", 1); var switch_cart = props.globals.getNode("/controls/electrical/ground-cart", 1); var fuel_flow1 = props.globals.getNode("/engines/engine[0]/fuel-flow_actual", 1); var fuel_flow2 = props.globals.getNode("/engines/engine[1]/fuel-flow_actual", 1); @@ -137,147 +135,6 @@ var cabinalt = props.globals.getNode("", 1); var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); - - # BAT1 - if (systems.ELEC.Switch.bat1.getValue() == 0) { - me["BAT1-OFF"].show(); - me["BAT1-content"].hide(); - me["BAT1-discharge"].hide(); - me["BAT1-charge"].hide(); - } else { - me["BAT1-OFF"].hide(); - me["BAT1-content"].show(); - me["Bat1Ampere"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat1.amps.getValue()))); - me["Bat1Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat1.volt.getValue()))); - - if (systems.ELEC.Source.Bat1.volt.getValue() >= 24.95 and systems.ELEC.Source.Bat1.volt.getValue() <= 31.05) { - me["Bat1Volt"].setColor(0.0509,0.7529,0.2941); - } else { - me["Bat1Volt"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Source.Bat1.amps.getValue() > 5) { - me["Bat1Ampere"].setColor(0.7333,0.3803,0); - } else { - me["Bat1Ampere"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.Bat1.direction.getValue() == 0) { - me["BAT1-discharge"].hide(); - me["BAT1-charge"].hide(); - } else { - if (systems.ELEC.Source.Bat1.direction.getValue() == -1) { - me["BAT1-charge"].show(); - me["BAT1-discharge"].hide(); - } else { - me["BAT1-discharge"].show(); - me["BAT1-charge"].hide(); - } - } - } - - if (systems.ELEC.Light.bat1Fault.getValue() or systems.ELEC.Source.Bat1.volt.getValue() < 25 or systems.ELEC.Source.Bat1.volt.getValue() > 31 or systems.ELEC.Source.Bat1.amps.getValue() > 5) { - me["BAT1-label"].setColor(0.7333,0.3803,0); - } else { - me["BAT1-label"].setColor(0.8078,0.8039,0.8078); - } - - # BAT2 - if (systems.ELEC.Switch.bat2.getValue() == 0) { - me["BAT2-OFF"].show(); - me["BAT2-content"].hide(); - me["BAT2-discharge"].hide(); - me["BAT2-charge"].hide(); - } else { - me["BAT2-OFF"].hide(); - me["BAT2-content"].show(); - me["Bat2Ampere"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat2.amps.getValue()))); - me["Bat2Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.Bat2.volt.getValue()))); - - if (systems.ELEC.Source.Bat2.volt.getValue() >= 24.95 and systems.ELEC.Source.Bat2.volt.getValue() <= 31.05) { - me["Bat2Volt"].setColor(0.0509,0.7529,0.2941); - } else { - me["Bat2Volt"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Source.Bat2.amps.getValue() > 5) { - me["Bat2Ampere"].setColor(0.7333,0.3803,0); - } else { - me["Bat2Ampere"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.Bat2.direction.getValue() == 0) { - me["BAT2-discharge"].hide(); - me["BAT2-charge"].hide(); - } else { - if (systems.ELEC.Source.Bat2.direction.getValue() == -1) { - me["BAT2-charge"].show(); - me["BAT2-discharge"].hide(); - } else { - me["BAT2-discharge"].show(); - me["BAT2-charge"].hide(); - } - } - } - - if (systems.ELEC.Light.bat2Fault.getValue() or systems.ELEC.Source.Bat2.volt.getValue() < 25 or systems.ELEC.Source.Bat2.volt.getValue() > 31 or systems.ELEC.Source.Bat2.amps.getValue() > 5) { - me["BAT2-label"].setColor(0.7333,0.3803,0); - } else { - me["BAT2-label"].setColor(0.8078,0.8039,0.8078); - } - - # TR1 - # is only powered when ac1 has power - tr1_v = systems.ELEC.Source.tr1.outputVolt.getValue(); - tr1_a = systems.ELEC.Source.tr1.outputAmp.getValue(); - - me["TR1Volt"].setText(sprintf("%s", math.round(tr1_v))); - me["TR1Ampere"].setText(sprintf("%s", math.round(tr1_a))); - - if (tr1_v < 25 or tr1_v > 31 or tr1_a < 5) { - me["TR1-label"].setColor(0.7333,0.3803,0); - } else { - me["TR1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (tr1_v < 25 or tr1_v > 31) { - me["TR1Volt"].setColor(0.7333,0.3803,0); - } else { - me["TR1Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (tr1_a < 5) { - me["TR1Ampere"].setColor(0.7333,0.3803,0); - } else { - me["TR1Ampere"].setColor(0.0509,0.7529,0.2941); - } - - # TR2 - # is only powered when ac2 has power - tr2_v = systems.ELEC.Source.tr2.outputVolt.getValue(); - tr2_a = systems.ELEC.Source.tr2.outputAmp.getValue(); - - me["TR2Volt"].setText(sprintf("%s", math.round(tr2_v))); - me["TR2Ampere"].setText(sprintf("%s", math.round(tr2_a))); - - if (tr2_v < 25 or tr2_v > 31 or tr2_a < 5) { - me["TR2-label"].setColor(0.7333,0.3803,0); - } else { - me["TR2-label"].setColor(0.8078,0.8039,0.8078); - } - - if (tr2_v < 25 or tr2_v > 31) { - me["TR2Volt"].setColor(0.7333,0.3803,0); - } else { - me["TR2Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (tr2_a < 5) { - me["TR2Ampere"].setColor(0.7333,0.3803,0); - } else { - me["TR2Ampere"].setColor(0.0509,0.7529,0.2941); - } - # ESS TR essTrvolts = systems.ELEC.Source.trEss.outputVoltRelay.getValue(); essTramps = systems.ELEC.Source.trEss.outputAmpRelay.getValue(); @@ -341,35 +198,7 @@ var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); } } - # IDG 1 - if (!systems.ELEC.Switch.idg1Disc.getBoolValue()) { - me["IDG1-DISC"].show(); - me["ELEC-IDG-1-label"].setColor(0.7333,0.3803,0); - } else { - me["IDG1-DISC"].hide(); - me["ELEC-IDG-1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (eng1_running.getValue() == 0) { - me["ELEC-IDG-1-num-label"].setColor(0.7333,0.3803,0); - } else { - me["ELEC-IDG-1-num-label"].setColor(0.8078,0.8039,0.8078); - } - if (eng2_running.getValue() == 0) { - me["ELEC-IDG-2-num-label"].setColor(0.7333,0.3803,0); - } else { - me["ELEC-IDG-2-num-label"].setColor(0.8078,0.8039,0.8078); - } - - # IDG 2 - if (!systems.ELEC.Switch.idg2Disc.getBoolValue()) { - me["IDG2-DISC"].show(); - me["ELEC-IDG-2-label"].setColor(0.7333,0.3803,0); - } else { - me["IDG2-DISC"].hide(); - me["ELEC-IDG-2-label"].setColor(0.8078,0.8039,0.8078); - } # GEN1 if (systems.ELEC.Switch.gen1.getValue() == 0) { @@ -487,144 +316,6 @@ var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); } } - # APU - if (systems.APUNodes.Controls.master.getValue() == 0) { - me["APU-content"].hide(); - me["APUGEN-off"].hide(); - me["APU-border"].hide(); - me["APUGentext"].setColor(0.8078,0.8039,0.8078); - } else { - me["APU-border"].show(); - if (systems.ELEC.Source.APU.contact.getValue() == 0) { - me["APU-content"].hide(); - me["APUGEN-off"].show(); - me["APUGentext"].setColor(0.7333,0.3803,0); - } else { - me["APU-content"].show(); - me["APUGEN-off"].hide(); - # me["APUGenLoad"].setText(sprintf("%s", math.round(apu_load.getValue()))); - me["APUGenVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.APU.volts.getValue()))); - - if (systems.ELEC.Source.APU.hertz.getValue() == 0) { - me["APUGenHz"].setText(sprintf("XX")); - } else { - me["APUGenHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.APU.hertz.getValue()))); - } - - if (systems.ELEC.Source.APU.volts.getValue() > 120 or systems.ELEC.Source.APU.volts.getValue() < 110 or systems.ELEC.Source.APU.hertz.getValue() > 410 or systems.ELEC.Source.APU.hertz.getValue() < 390 or apu_load.getValue() >= 110) { - me["APUGentext"].setColor(0.7333,0.3803,0); - } else { - me["APUGentext"].setColor(0.8078,0.8039,0.8078); - } - - if(apu_load.getValue() >= 110) { - me["APUGenLoad"].setColor(0.7333,0.3803,0); - } else { - me["APUGenLoad"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.APU.volts.getValue() > 120 or systems.ELEC.Source.APU.volts.getValue() < 110) { - me["APUGenVolt"].setColor(0.7333,0.3803,0); - } else { - me["APUGenVolt"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.APU.hertz.getValue() > 410 or systems.ELEC.Source.APU.hertz.getValue() < 390) { - me["APUGenHz"].setColor(0.7333,0.3803,0); - } else { - me["APUGenHz"].setColor(0.0509,0.7529,0.2941); - } - } - } - - # EXT PWR - - if (switch_cart.getValue() == 0) { - me["EXTPWR-group"].hide(); - } else { - me["EXTPWR-group"].show(); - me["ExtVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.Ext.volts.getValue()))); - me["ExtHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.Ext.hertz.getValue()))); - - if (systems.ELEC.Source.Ext.hertz.getValue() > 410 or systems.ELEC.Source.Ext.hertz.getValue() < 390 or systems.ELEC.Source.Ext.volts.getValue() > 120 or systems.ELEC.Source.Ext.volts.getValue() < 110) { - me["EXTPWR-label"].setColor(0.7333,0.3803,0); - } else { - me["EXTPWR-label"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.Ext.hertz.getValue() > 410 or systems.ELEC.Source.Ext.hertz.getValue() < 390) { - me["ExtHz"].setColor(0.7333,0.3803,0); - } else { - me["ExtHz"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.Ext.volts.getValue() > 120 or systems.ELEC.Source.Ext.volts.getValue() < 110) { - me["ExtVolt"].setColor(0.7333,0.3803,0); - } else { - me["ExtVolt"].setColor(0.0509,0.7529,0.2941); - } - } - - if (systems.ELEC.SomeThing.galley.getValue()) { - me["GalleyShed"].show(); - } else { - me["GalleyShed"].hide(); - } - - # Bus indicators - if (systems.ELEC.Switch.bat1.getValue() or systems.ELEC.Switch.bat2.getValue()) { - me["ELEC-DCBAT-label"].setText("DC BAT"); - if (systems.ELEC.Bus.dcBat.getValue() > 25) { - me["ELEC-DCBAT-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0); - } - } else { - me["ELEC-DCBAT-label"].setText("XX"); # BCL not powered hence no voltage info supplied from BCL - me["ELEC-DCBAT-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.dc1.getValue() > 25) { - me["ELEC-DC1-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-DC1-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.dc2.getValue() > 25) { - me["ELEC-DC2-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-DC2-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.dcEss.getValue() > 25) { - me["ELEC-DCESS-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-DCESS-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.acEss.getValue() >= 110) { - me["ELEC-ACESS-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-ACESS-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.acEssShed.getValue() >= 110) { - me["ACESS-SHED"].hide(); - } else { - me["ACESS-SHED"].show(); - } - - if (systems.ELEC.Bus.ac1.getValue() >= 110) { - me["ELEC-AC1-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-AC1-label"].setColor(0.7333,0.3803,0); - } - - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - me["ELEC-AC2-label"].setColor(0.0509,0.7529,0.2941); - } else { - me["ELEC-AC2-label"].setColor(0.7333,0.3803,0); - } # Managment of the connecting lines between the components @@ -652,18 +343,6 @@ var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); me["ELEC-Line-GEN2-AC2"].hide(); } - if (systems.ELEC.Bus.ac1.getValue() >= 110) { - me["AC1-in"].show(); - } else { - me["AC1-in"].hide(); - } - - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - me["AC2-in"].show(); - } else { - me["AC2-in"].hide(); - } - if (systems.ELEC.Relay.acTie1.getValue() and systems.ELEC.Relay.acTie2.getValue()) { me["ELEC-Line-APU-AC1"].show(); me["ELEC-Line-APU-EXT"].show(); @@ -733,53 +412,8 @@ var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); me["ELEC-Line-TR2-DC2"].hide(); } - if (systems.ELEC.Relay.dcTie1.getValue()) { - me["ELEC-Line-DC1-DCESS_DCBAT"].show(); - } else { - me["ELEC-Line-DC1-DCESS_DCBAT"].hide(); - } - - if (systems.ELEC.Relay.dcEssFeedBat.getValue()) { - me["ELEC-Line-DC1-DCESS"].show(); - } else { - me["ELEC-Line-DC1-DCESS"].hide(); - } - - if (systems.ELEC.Relay.dcEssFeedBat.getValue() or systems.ELEC.Relay.dcTie1.getValue()) { - me["ELEC-Line-DC1-DCBAT"].show(); - } else { - me["ELEC-Line-DC1-DCBAT"].hide(); - } - - if (systems.ELEC.Relay.dcTie2.getValue()) { - me["ELEC-Line-DC2-DCBAT"].show(); - me["ELEC-Line-DC2-DCESS_DCBAT"].show(); - } else { - me["ELEC-Line-DC2-DCBAT"].hide(); - me["ELEC-Line-DC2-DCESS_DCBAT"].hide(); - } - - if (systems.ELEC.Relay.acEssEmerGenFeed.getValue()) { - me["EMERGEN-out"].show(); - me["ELEC-Line-Emergen-ESSTR"].show(); - } else { - me["EMERGEN-out"].hide(); - me["ELEC-Line-Emergen-ESSTR"].hide(); - } - if (systems.ELEC.Bus.acEss.getValue() >= 110 and !systems.ELEC.Relay.acEssEmerGenFeed.getValue() and (!systems.ELEC.Relay.tr1Contactor.getValue() or !systems.ELEC.Relay.tr2Contactor.getValue())) { me["ELEC-Line-ACESS-TRESS"].show(); } else { me["ELEC-Line-ACESS-TRESS"].hide(); - } - - if (systems.ELEC.Relay.essTrContactor.getValue()) { - me["ELEC-Line-ESSTR-DCESS"].show(); - } else { - me["ELEC-Line-ESSTR-DCESS"].hide(); - } - - # hide not yet implemented items - me.updateBottomStatus(); - }, -}; \ No newline at end of file + } \ No newline at end of file diff --git a/Nasal/Libraries/libraries.nas b/Nasal/Libraries/libraries.nas index 33567b4a..244f97e9 100644 --- a/Nasal/Libraries/libraries.nas +++ b/Nasal/Libraries/libraries.nas @@ -397,6 +397,8 @@ var input = { "gearPosNorm": "/gear/gear[0]/position-norm", "gearPosNorm1": "/gear/gear[1]/position-norm", "gearPosNorm2": "/gear/gear[2]/position-norm", + "engine1Running": "/engines/engine[0]/running", + "engine2Running": "/engines/engine[1]/running", }; foreach (var name; keys(input)) { From 1775bb0e169440efbcb87fe43b98f2889d63ca8d Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sat, 24 Jul 2021 13:58:03 +0100 Subject: [PATCH 19/28] Finish ELEC --- .../Lower-ECAM/Lower-ECAM-elec.nas | 292 +++++++++++- .../Instruments/Lower-ECAM/Lower-ECAM-old.nas | 419 ------------------ 2 files changed, 282 insertions(+), 429 deletions(-) delete mode 100644 Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas index dc550a7b..6299ad50 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas @@ -111,15 +111,19 @@ var canvas_lowerECAMPageElec = props.UpdateManager.FromHashValue("engine1Running", nil, func(val) { if (val == 0) { obj["ELEC-IDG-1-num-label"].setColor(0.7333,0.3803,0); + obj["GEN1-num-label"].setColor(0.7333,0.3803,0); } else { obj["ELEC-IDG-1-num-label"].setColor(0.8078,0.8039,0.8078); + obj["GEN1-num-label"].setColor(0.8078,0.8039,0.8078); } }), props.UpdateManager.FromHashValue("engine2Running", nil, func(val) { if (val == 0) { obj["ELEC-IDG-2-num-label"].setColor(0.7333,0.3803,0); + obj["GEN2-num-label"].setColor(0.7333,0.3803,0); } else { obj["ELEC-IDG-2-num-label"].setColor(0.8078,0.8039,0.8078); + obj["GEN2-num-label"].setColor(0.8078,0.8039,0.8078); } }), props.UpdateManager.FromHashValue("dc1", 0.5, func(val) { @@ -143,7 +147,7 @@ var canvas_lowerECAMPageElec = obj["ELEC-DCESS-label"].setColor(0.7333,0.3803,0); } }), - props.UpdateManager.FromHashValue("ac1", 0.5, func(val) { + props.UpdateManager.FromHashValue("elecAC1", 0.5, func(val) { if (val >= 110) { obj["ELEC-AC1-label"].setColor(0.0509,0.7529,0.2941); obj["AC1-in"].show(); @@ -152,7 +156,7 @@ var canvas_lowerECAMPageElec = obj["AC1-in"].hide(); } }), - props.UpdateManager.FromHashValue("ac2", 0.5, func(val) { + props.UpdateManager.FromHashValue("elecAC2", 0.5, func(val) { if (val >= 110) { obj["ELEC-AC2-label"].setColor(0.0509,0.7529,0.2941); obj["AC2-in"].show(); @@ -161,14 +165,14 @@ var canvas_lowerECAMPageElec = obj["AC2-in"].hide(); } }), - props.UpdateManager.FromHashValue("acEss", 0.5, func(val) { + props.UpdateManager.FromHashValue("elecACEss", 0.5, func(val) { if (val >= 110) { obj["ELEC-ACESS-label"].setColor(0.0509,0.7529,0.2941); } else { obj["ELEC-ACESS-label"].setColor(0.7333,0.3803,0); } }), - props.UpdateManager.FromHashValue("acEssShed", 0.5, func(val) { + props.UpdateManager.FromHashValue("elecACEssShed", 0.5, func(val) { if (val >= 110) { obj["ACESS-SHED"].hide(); } else { @@ -204,8 +208,8 @@ var canvas_lowerECAMPageElec = } else { obj["BAT1-OFF"].hide(); obj["BAT1-content"].show(); - obj["Bat1Ampere"].setText(sprintf("%s", val.elecBat1Amp)); - obj["Bat1Volt"].setText(sprintf("%s", val.elecBat1Volt)); + obj["Bat1Ampere"].setText(sprintf("%2.0f", val.elecBat1Amp)); + obj["Bat1Volt"].setText(sprintf("%2.0f", val.elecBat1Volt)); if (val.elecBat1Volt >= 24.95 and val.elecBat1Volt <= 31.05) { obj["Bat1Volt"].setColor(0.0509,0.7529,0.2941); @@ -248,8 +252,8 @@ var canvas_lowerECAMPageElec = } else { obj["BAT2-OFF"].hide(); obj["BAT2-content"].show(); - obj["Bat2Ampere"].setText(sprintf("%s", val.elecBat2Amp)); - obj["Bat2Volt"].setText(sprintf("%s", val.elecBat2Volt)); + obj["Bat2Ampere"].setText(sprintf("%2.0f", val.elecBat2Amp)); + obj["Bat2Volt"].setText(sprintf("%2.0f", val.elecBat2Volt)); if (val.elecBat2Volt >= 24.95 and val.elecBat2Volt <= 31.05) { obj["Bat2Volt"].setColor(0.0509,0.7529,0.2941); @@ -384,7 +388,7 @@ var canvas_lowerECAMPageElec = obj["ELEC-Line-DC1-DCESS"].hide(); } }), - props.UpdateManager.FromHashValue("elecDcEssFeedTr", nil, func(val) { + props.UpdateManager.FromHashValue("elecTrEssContact", nil, func(val) { if (val) { obj["ELEC-Line-ESSTR-DCESS"].show(); } else { @@ -400,6 +404,252 @@ var canvas_lowerECAMPageElec = obj["ELEC-Line-Emergen-ESSTR"].hide(); } }), + props.UpdateManager.FromHashList(["elecTREssAmp","elecTREssVolt","elecTrEssContact"], nil, func(val) { + if (val.elecTrEssContact) { + obj["ESSTR-group"].show(); + obj["ESSTR-Volt"].setText(sprintf("%s", math.round(val.elecTREssVolt))); + obj["ESSTR-Ampere"].setText(sprintf("%s", math.round(val.elecTREssAmp))); + + if (val.elecTREssVolt < 25 or val.elecTREssVolt > 31 or val.elecTREssAmp < 5) { + obj["ESSTR"].setColor(0.7333,0.3803,0); + } else { + obj["ESSTR"].setColor(0.8078,0.8039,0.8078); + } + + if (val.elecTREssVolt < 25 or val.elecTREssVolt > 31) { + obj["ESSTR-Volt"].setColor(0.7333,0.3803,0); + } else { + obj["ESSTR-Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecTREssAmp < 5) { + obj["ESSTR-Ampere"].setColor(0.7333,0.3803,0); + } else { + obj["ESSTR-Ampere"].setColor(0.0509,0.7529,0.2941); + } + } else { + obj["ESSTR-group"].hide(); + } + }), + props.UpdateManager.FromHashList(["elecEmerGenHertz","elecEmerGenVolts","elecEmerGenVoltsRelay"], nil, func(val) { + if (val.elecEmerGenVolts == 0) { + obj["EMERGEN-group"].hide(); + obj["ELEC-Line-Emergen-ESSTR"].hide(); + obj["ELEC-Line-Emergen-ESSTR-off"].show(); + obj["EMERGEN-Label-off"].show(); + } else { + obj["EMERGEN-group"].show(); + obj["ELEC-Line-Emergen-ESSTR"].show(); + obj["ELEC-Line-Emergen-ESSTR-off"].hide(); + obj["EMERGEN-Label-off"].hide(); + + obj["EmergenVolt"].setText(sprintf("%s", math.round(val.elecEmerGenVoltsRelay))); + obj["EmergenHz"].setText(sprintf("%s", math.round(val.elecEmerGenHertz))); + + if (val.elecEmerGenVoltsRelay > 120 or val.elecEmerGenVoltsRelay < 110 or val.elecEmerGenHertz > 410 or val.elecEmerGenHertz < 390) { + obj["Emergen-Label"].setColor(0.7333,0.3803,0); + } else { + obj["Emergen-Label"].setColor(0.8078,0.8039,0.8078); + } + + if (val.elecEmerGenVoltsRelay > 120 or val.elecEmerGenVoltsRelay < 110) { + obj["EmergenVolt"].setColor(0.7333,0.3803,0); + } else { + obj["EmergenVolt"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecEmerGenHertz > 410 or val.elecEmerGenHertz < 390) { + obj["EmergenHz"].setColor(0.7333,0.3803,0); + } else { + obj["EmergenHz"].setColor(0.0509,0.7529,0.2941); + } + } + }), + props.UpdateManager.FromHashList(["elecGen1Switch","elecGen1Hertz","elecGen1Volt","engine1Running","elecGen1Relay"], nil, func(val) { + if (val.elecGen1Switch == 0) { + obj["GEN1-content"].hide(); + obj["GEN1-off"].show(); + if (val.elecGen1Relay) { + obj["GEN1-label"].setColor(0.7333,0.3803,0); + } else { + obj["GEN1-label"].setColor(0.8078,0.8039,0.8078); + } + } else { + obj["GEN1-content"].show(); + obj["GEN1-off"].hide(); + obj["Gen1Volt"].setText(sprintf("%s", math.round(val.elecGen1Volt))); + + if (val.elecGen1Hertz == 0) { + obj["Gen1Hz"].setText(sprintf("XX")); + } else { + obj["Gen1Hz"].setText(sprintf("%s", math.round(val.elecGen1Hertz))); + } + + if (val.elecGen1Volt > 120 or val.elecGen1Volt < 110 or val.elecGen1Hertz > 410 or val.elecGen1Hertz < 390) { + obj["GEN1-label"].setColor(0.7333,0.3803,0); + } else { + obj["GEN1-label"].setColor(0.8078,0.8039,0.8078); + } + + if (val.elecGen1Volt > 120 or val.elecGen1Volt < 110) { + obj["Gen1Volt"].setColor(0.7333,0.3803,0); + } else { + obj["Gen1Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecGen1Hertz > 410 or val.elecGen1Hertz < 390) { + obj["Gen1Hz"].setColor(0.7333,0.3803,0); + } else { + obj["Gen1Hz"].setColor(0.0509,0.7529,0.2941); + } + } + }), + props.UpdateManager.FromHashList(["elecGen2Switch","elecGen2Hertz","elecGen2Volt","engine1Running","elecGen2Relay"], nil, func(val) { + if (val.elecGen2Switch == 0) { + obj["GEN2-content"].hide(); + obj["GEN2-off"].show(); + if (val.elecGen2Relay) { + obj["GEN2-label"].setColor(0.7333,0.3803,0); + } else { + obj["GEN2-label"].setColor(0.8078,0.8039,0.8078); + } + } else { + obj["GEN2-content"].show(); + obj["GEN2-off"].hide(); + obj["Gen2Volt"].setText(sprintf("%s", math.round(val.elecGen2Volt))); + + if (val.elecGen2Hertz == 0) { + obj["Gen2Hz"].setText(sprintf("XX")); + } else { + obj["Gen2Hz"].setText(sprintf("%s", math.round(val.elecGen2Hertz))); + } + + if (val.elecGen2Volt > 120 or val.elecGen2Volt < 110 or val.elecGen2Hertz > 410 or val.elecGen2Hertz < 390) { + obj["GEN2-label"].setColor(0.7333,0.3803,0); + } else { + obj["GEN2-label"].setColor(0.8078,0.8039,0.8078); + } + + if (val.elecGen2Volt > 120 or val.elecGen2Volt < 110) { + obj["Gen2Volt"].setColor(0.7333,0.3803,0); + } else { + obj["Gen2Volt"].setColor(0.0509,0.7529,0.2941); + } + + if (val.elecGen2Hertz > 410 or val.elecGen2Hertz < 390) { + obj["Gen2Hz"].setColor(0.7333,0.3803,0); + } else { + obj["Gen2Hz"].setColor(0.0509,0.7529,0.2941); + } + } + }), + props.UpdateManager.FromHashList(["elecTR1Contact","elecAC1"], nil, func(val) { + if (val.elecTR1Contact) { + if (val.elecAC1 < 110) { + obj["ELEC-Line-AC1-TR1"].setColorFill(0.7333,0.3803,0); + } else { + obj["ELEC-Line-AC1-TR1"].setColorFill(0.0509,0.7529,0.2941); + } + obj["ELEC-Line-AC1-TR1"].show(); + obj["ELEC-Line-TR1-DC1"].show(); + } else { + obj["ELEC-Line-AC1-TR1"].hide(); + obj["ELEC-Line-TR1-DC1"].hide(); + } + }), + props.UpdateManager.FromHashList(["elecTR2Contact","elecAC2"], nil, func(val) { + if (val.elecTR2Contact) { + if (val.elecAC2 < 110) { + obj["ELEC-Line-AC2-TR2"].setColorFill(0.7333,0.3803,0); + } else { + obj["ELEC-Line-AC2-TR2"].setColorFill(0.0509,0.7529,0.2941); + } + obj["ELEC-Line-AC2-TR2"].show(); + obj["ELEC-Line-TR2-DC2"].show(); + } else { + obj["ELEC-Line-AC2-TR2"].hide(); + obj["ELEC-Line-TR2-DC2"].hide(); + } + }), + props.UpdateManager.FromHashList(["elecAcEssFeed1","elecAcEssFeed2","elecAC1","elecAC2"], nil, func(val) { + if (val.elecAcEssFeed1) { + if (val.elecAC1 >= 110) { + obj["ELEC-Line-AC1-ACESS"].show(); + } else { + obj["ELEC-Line-AC1-ACESS"].hide(); + } + obj["ELEC-Line-AC2-ACESS"].hide(); + } elsif (val.elecAcEssFeed2) { + obj["ELEC-Line-AC1-ACESS"].hide(); + if (val.elecAC2 >= 110) { + obj["ELEC-Line-AC2-ACESS"].show(); + } else { + obj["ELEC-Line-AC2-ACESS"].hide(); + } + } else { + obj["ELEC-Line-AC1-ACESS"].hide(); + obj["ELEC-Line-AC2-ACESS"].hide(); + } + }), + props.UpdateManager.FromHashList(["elecGen1Volt","elecGen1GLC"], nil, func(val) { + if (val.elecGen1Volt >= 110 and val.elecGen1GLC) { + obj["ELEC-Line-GEN1-AC1"].show(); + } else { + obj["ELEC-Line-GEN1-AC1"].hide(); + } + }), + props.UpdateManager.FromHashList(["elecGen2Volt","elecGen2GLC"], nil, func(val) { + if (val.elecGen2Volt >= 110 and val.elecGen2GLC) { + obj["ELEC-Line-GEN1-AC1"].show(); + } else { + obj["ELEC-Line-GEN1-AC1"].hide(); + } + }), + props.UpdateManager.FromHashList(["elecAcTie1","elecAcTie2","apuGLC","elecExtEPC","elecGen1GLC","elecGen2GLC"], nil, func(val) { + if (val.apuGLC and (val.elecAcTie1 or val.elecAcTie2)) { + obj["APU-out"].show(); + } else { + obj["APU-out"].hide(); + } + + if (val.elecExtEPC and (val.elecAcTie1 or val.elecAcTie2)) { + obj["EXT-out"].show(); + } else { + obj["EXT-out"].hide(); + } + + + if (val.elecAcTie1 and val.elecAcTie2) { + obj["ELEC-Line-APU-AC1"].show(); + obj["ELEC-Line-APU-EXT"].show(); + obj["ELEC-Line-EXT-AC2"].show(); + } else { + if (val.elecAcTie1) { + obj["ELEC-Line-APU-AC1"].show(); + } else { + obj["ELEC-Line-APU-AC1"].hide(); + } + + if ((val.elecAcTie2 and val.apuGLC and !val.elecGen2GLC) or (val.elecAcTie1 and val.elecExtEPC and !val.elecGen1GLC)) { + obj["ELEC-Line-APU-EXT"].show(); + } else { + obj["ELEC-Line-APU-EXT"].hide(); + } + + if (val.elecAcTie2) { + obj["ELEC-Line-EXT-AC2"].show(); + } else { + obj["ELEC-Line-EXT-AC2"].hide(); + } + } + }), + props.UpdateManager.FromHashList(["elecACEss"], nil, func(val) { + if (val.elecACEss >= 110 and !val.elecAcEssEmerGenFeed and (!val.elecTR1Contact or !val.elecTR2Contact)) { + obj["ELEC-Line-ACESS-TRESS"].show(); + } else { + obj["ELEC-Line-ACESS-TRESS"].hide(); + } + }), ]; obj.displayedGForce = 0; @@ -521,6 +771,8 @@ var canvas_lowerECAMPageElec = }; var input = { + elecAcEssFeed1: "/systems/electrical/relay/ac-ess-feed-1/contact-pos", + elecAcEssFeed2: "/systems/electrical/relay/ac-ess-feed-2/contact-pos", elecBat1Amp: "/systems/electrical/sources/bat-1/amps", elecBat2Amp: "/systems/electrical/sources/bat-2/amps", elecBat1Direction: "/systems/electrical/sources/bat-1/direction", @@ -535,6 +787,11 @@ var input = { elecTR2Amp: "/systems/electrical/relay/tr-contactor-2/output-amp", elecTR1Volt: "/systems/electrical/relay/tr-contactor-1/output", elecTR2Volt: "/systems/electrical/relay/tr-contactor-2/output", + elecTR1Contact: "/systems/electrical/relay/tr-contactor-1/contact-pos", + elecTR2Contact: "/systems/electrical/relay/tr-contactor-2/contact-pos", + elecTREssAmp: "/systems/electrical/relay/dc-ess-feed-tr/output-amp", + elecTrEssContact: "/systems/electrical/relay/dc-ess-feed-tr/contact-pos", + elecTREssVolt: "/systems/electrical/relay/dc-ess-feed-tr/output", elecIDG1Disc: "/controls/electrical/switches/idg-1-disc", elecIDG2Disc: "/controls/electrical/switches/idg-2-disc", elecGroundCart: "/controls/electrical/ground-cart", @@ -543,8 +800,23 @@ var input = { elecDCTie1: "/systems/electrical/relay/dc-bus-tie-dc-1/contact-pos", elecDCTie2: "/systems/electrical/relay/dc-bus-tie-dc-2/contact-pos", elecDcEssFeedBat: "/systems/electrical/relay/dc-ess-feed-bat/contact-pos", - elecDcEssFeedTr: "/systems/electrical/relay/dc-ess-feed-tr/contact-pos", elecAcEssEmerGenFeed: "/systems/electrical/relay/ac-ess-feed-emer-gen/contact-pos", + elecEmerGenVolts: "/systems/electrical/sources/emer-gen/output-volt", + elecEmerGenVoltsRelay: "/systems/electrical/relay/emer-glc/output", + elecEmerGenHertz: "/systems/electrical/sources/emer-gen/output-hertz", + elecGen1Switch: "/controls/electrical/switches/gen-1", + elecGen1Hertz: "/systems/electrical/sources/idg-1/output-hertz", + elecGen1Volt: "/systems/electrical/sources/idg-1/output-volt", + elecGen1Relay: "/systems/electrical/sources/idg-1/gcr-relay", + elecGen1GLC: "/systems/electrical/relay/gen-1-glc/contact-pos", + elecGen2Switch: "/controls/electrical/switches/gen-2", + elecGen2Hertz: "/systems/electrical/sources/idg-2/output-hertz", + elecGen2Volt: "/systems/electrical/sources/idg-2/output-volt", + elecGen2Relay: "/systems/electrical/sources/idg-2/gcr-relay", + elecGen2GLC: "/systems/electrical/relay/gen-2-glc/contact-pos", + elecAcTie1: "/systems/electrical/relay/ac-bus-ac-bus-tie-1/contact-pos", + elecAcTie2: "/systems/electrical/relay/ac-bus-ac-bus-tie-2/contact-pos", + elecExtEPC: "/systems/electrical/relay/ext-epc/contact-pos", ElecGalleyShed: "/systems/electrical/some-electric-thingie/galley-shed", }; diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas deleted file mode 100644 index beb1adfb..00000000 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-old.nas +++ /dev/null @@ -1,419 +0,0 @@ -# A3XX Lower ECAM Canvas - -# Copyright (c) 2020 Josh Davidson (Octal450) - -var lowerECAM_apu = nil; -var lowerECAM_bleed = nil; -var lowerECAM_cond = nil; -var lowerECAM_crz = nil; -var lowerECAM_door = nil; -var lowerECAM_elec = nil; -var lowerECAM_eng = nil; -var lowerECAM_fctl = nil; -var lowerECAM_fuel = nil; -var lowerECAM_hyd = nil; -var lowerECAM_press = nil; -var lowerECAM_status = nil; -var lowerECAM_wheel = nil; -var lowerECAM_test = nil; -var lowerECAM_display = nil; -var page = "fctl"; -var blue_psi = 0; -var green_psi = 0; -var yellow_psi = 0; -var autobrakemode = 0; -var nosegear = 0; -var leftgear = 0; -var rightgear = 0; -var leftdoor = 0; -var rightdoor = 0; -var nosedoor = 0; -var gearlvr = 0; -var elapsedtime = 0; -var tr1_v = 0; -var tr1_a = 0; -var tr2_v = 0; -var tr2_a = 0; -var essTramps = 0; -var essTrvolts = 0; -var elac1Node = 0; -var elac2Node = 0; -var sec1Node = 0; -var sec2Node = 0; -var eng_valve_state = 0; -var bleed_valve_cur = 0; -var hp_valve_state = 0; -var xbleedcmdstate = 0; -var ramAirState = 0; - -# Fetch Nodes -var acconfig_weight_kgs = props.globals.getNode("/systems/acconfig/options/weight-kgs", 1); -var rate = props.globals.getNode("/systems/acconfig/options/lecam-rate", 1); -var autoconfig_running = props.globals.getNode("/systems/acconfig/autoconfig-running", 1); -var ecam_page = props.globals.getNode("/ECAM/Lower/page", 1); -var hour = props.globals.getNode("/sim/time/utc/hour", 1); -var minute = props.globals.getNode("/sim/time/utc/minute", 1); -var apu_flap = props.globals.getNode("/controls/apu/inlet-flap/position-norm", 1); -var apu_rpm = props.globals.getNode("/engines/engine[2]/n1", 1); -var apu_egt = props.globals.getNode("/systems/apu/egt-degC", 1); -var door_left = props.globals.getNode("/ECAM/Lower/door-left", 1); -var door_right = props.globals.getNode("/ECAM/Lower/door-right", 1); -var door_nose_left = props.globals.getNode("/ECAM/Lower/door-nose-left", 1); -var door_nose_right = props.globals.getNode("/ECAM/Lower/door-nose-right", 1); -var apu_rpm_rot = props.globals.getNode("/ECAM/Lower/APU-N", 1); -var apu_egt_rot = props.globals.getNode("/ECAM/Lower/APU-EGT", 1); -var oil_qt1 = props.globals.getNode("/ECAM/Lower/Oil-QT[0]", 1); -var oil_qt2 = props.globals.getNode("/ECAM/Lower/Oil-QT[1]", 1); -var oil_psi1 = props.globals.getNode("/ECAM/Lower/Oil-PSI[0]", 1); -var oil_psi2 = props.globals.getNode("/ECAM/Lower/Oil-PSI[1]", 1); -var bleedapu = props.globals.getNode("", 1); -var aileron_ind_left = props.globals.getNode("", 1); -var aileron_ind_right = props.globals.getNode("/ECAM/Lower/aileron-ind-right", 1); -var elevator_ind_left = props.globals.getNode("", 1); -var elevator_ind_right = props.globals.getNode("/ECAM/Lower/elevator-ind-right", 1); -var elevator_trim_deg = props.globals.getNode("", 1); -var final_deg = props.globals.getNode("", 1); -var temperature_degc = props.globals.getNode("/environment/temperature-degc", 1); -var tank3_content_lbs = props.globals.getNode("/fdm/jsbsim/propulsion/tank[2]/contents-lbs", 1); -var ir2_knob = props.globals.getNode("/controls/adirs/ir[1]/knob", 1); -var apuBleedNotOn = props.globals.getNode("", 1); -var apu_valve = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve-cmd", 1); -var apu_valve_state = props.globals.getNode("/systems/pneumatics/valves/apu-bleed-valve", 1); -var xbleedcmd = props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve-cmd", 1); -var xbleed = props.globals.getNode("/systems/pneumatics/valves/crossbleed-valve", 1); -var xbleedstate = nil; -var precooler1_psi = props.globals.getNode("/systems/pneumatics/psi/engine-1-psi", 1); -var precooler2_psi = props.globals.getNode("/systems/pneumatics/psi/engine-2-psi", 1); -var precooler1_temp = props.globals.getNode("/systems/pneumatics/precooler/temp-1", 1); -var precooler2_temp = props.globals.getNode("/systems/pneumatics/precooler/temp-2", 1); -var precooler1_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-1", 1); -var precooler2_ovht = props.globals.getNode("/systems/pneumatics/precooler/ovht-2", 1); -var bmc1working = props.globals.getNode("", 1); -var bmc2working = props.globals.getNode("/systems/pneumatics/indicating/bmc2-working", 1); -var bmc1 = 0; -var bmc2 = 0; -var gs_kt = props.globals.getNode("/velocities/groundspeed-kt", 1); -var switch_wing_aice = props.globals.getNode("/controls/ice-protection/wing", 1); -var pack1_bypass = props.globals.getNode("/systems/pneumatics/pack-1-bypass", 1); -var pack2_bypass = props.globals.getNode("/systems/pneumatics/pack-2-bypass", 1); -var oil_qt1_actual = props.globals.getNode("", 1); -var oil_qt2_actual = props.globals.getNode("/engines/engine[1]/oil-qt-actual", 1); -var fuel_used_lbs1 = props.globals.getNode("", 1); -var gLoad = props.globals.getNode("", 1); - -# Hydraulic -var blue_psi = 0; -var green_psi = 0; -var yellow_psi = 0; -var rat_deployed = props.globals.getNode("/controls/hydraulic/rat-deployed", 1); -var y_resv_ovht = props.globals.getNode("/systems/hydraulic/yellow-resv-ovht", 1); -var b_resv_ovht = props.globals.getNode("/systems/hydraulic/blue-resv-ovht", 1); -var g_resv_ovht = props.globals.getNode("/systems/hydraulic/green-resv-ovht", 1); -var askidsw = 0; -var brakemode = 0; -var accum = 0; -var L1BrakeTempc = props.globals.getNode("/gear/gear[1]/L1brake-temp-degc", 1); -var L2BrakeTempc = props.globals.getNode("/gear/gear[1]/L2brake-temp-degc", 1); -var R3BrakeTempc = props.globals.getNode("/gear/gear[2]/R3brake-temp-degc", 1); -var R4BrakeTempc = props.globals.getNode("/gear/gear[2]/R4brake-temp-degc", 1); - -var switch_cart = props.globals.getNode("/controls/electrical/ground-cart", 1); -var fuel_flow1 = props.globals.getNode("/engines/engine[0]/fuel-flow_actual", 1); -var fuel_flow2 = props.globals.getNode("/engines/engine[1]/fuel-flow_actual", 1); -var cutoff_switch1 = props.globals.getNode("/controls/engines/engine[0]/cutoff-switch", 1); -var cutoff_switch2 = props.globals.getNode("/controls/engines/engine[1]/cutoff-switch", 1); -var autobreak_mode = props.globals.getNode("/controls/autobrake/mode", 1); -var gear1_pos = props.globals.getNode("/gear/gear[0]/position-norm", 1); -var gear2_pos = props.globals.getNode("/gear/gear[1]/position-norm", 1); -var gear3_pos = props.globals.getNode("/gear/gear[2]/position-norm", 1); -var gear_door_L = props.globals.getNode("/systems/hydraulic/gear/door-left", 1); -var gear_door_R = props.globals.getNode("/systems/hydraulic/gear/door-right", 1); -var gear_door_N = props.globals.getNode("/systems/hydraulic/gear/door-nose", 1); -var gear_down = props.globals.getNode("/controls/gear/gear-down", 1); -var press_vs_norm = props.globals.getNode("", 1); -var cabinalt = props.globals.getNode("", 1); -var gear0_wow = props.globals.getNode("/gear/gear[0]/wow", 1); - - - # ESS TR - essTrvolts = systems.ELEC.Source.trEss.outputVoltRelay.getValue(); - essTramps = systems.ELEC.Source.trEss.outputAmpRelay.getValue(); - if (systems.ELEC.Relay.essTrContactor.getValue()) { - me["ESSTR-group"].show(); - me["ESSTR-Volt"].setText(sprintf("%s", math.round(essTrvolts))); - me["ESSTR-Ampere"].setText(sprintf("%s", math.round(essTramps))); - - if (essTrvolts < 25 or essTrvolts > 31 or essTramps < 5) { - me["ESSTR"].setColor(0.7333,0.3803,0); - } else { - me["ESSTR"].setColor(0.8078,0.8039,0.8078); - } - - if (essTrvolts < 25 or essTrvolts > 31) { - me["ESSTR-Volt"].setColor(0.7333,0.3803,0); - } else { - me["ESSTR-Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (essTramps < 5) { - me["ESSTR-Ampere"].setColor(0.7333,0.3803,0); - } else { - me["ESSTR-Ampere"].setColor(0.0509,0.7529,0.2941); - } - } else { - me["ESSTR-group"].hide(); - } - - # EMER GEN - if (systems.ELEC.Source.EmerGen.volts.getValue() == 0) { - me["EMERGEN-group"].hide(); - me["ELEC-Line-Emergen-ESSTR"].hide(); - me["ELEC-Line-Emergen-ESSTR-off"].show(); - me["EMERGEN-Label-off"].show(); - } else { - me["EMERGEN-group"].show(); - me["ELEC-Line-Emergen-ESSTR"].show(); - me["ELEC-Line-Emergen-ESSTR-off"].hide(); - me["EMERGEN-Label-off"].hide(); - - me["EmergenVolt"].setText(sprintf("%s", math.round(systems.ELEC.Source.EmerGen.voltsRelay.getValue()))); - me["EmergenHz"].setText(sprintf("%s", math.round(systems.ELEC.Source.EmerGen.hertz.getValue()))); - - if (systems.ELEC.Source.EmerGen.voltsRelay.getValue() > 120 or systems.ELEC.Source.EmerGen.voltsRelay.getValue() < 110 or systems.ELEC.Source.EmerGen.hertz.getValue() > 410 or systems.ELEC.Source.EmerGen.hertz.getValue() < 390) { - me["Emergen-Label"].setColor(0.7333,0.3803,0); - } else { - me["Emergen-Label"].setColor(0.8078,0.8039,0.8078); - } - - if (systems.ELEC.Source.EmerGen.voltsRelay.getValue() > 120 or systems.ELEC.Source.EmerGen.voltsRelay.getValue() < 110) { - me["EmergenVolt"].setColor(0.7333,0.3803,0); - } else { - me["EmergenVolt"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.EmerGen.hertz.getValue() > 410 or systems.ELEC.Source.EmerGen.hertz.getValue() < 390) { - me["EmergenHz"].setColor(0.7333,0.3803,0); - } else { - me["EmergenHz"].setColor(0.0509,0.7529,0.2941); - } - } - - - - # GEN1 - if (systems.ELEC.Switch.gen1.getValue() == 0) { - me["GEN1-content"].hide(); - me["GEN1-off"].show(); - if (systems.ELEC.Source.IDG1.gcrRelay.getValue()) { - me["GEN1-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (eng1_running.getValue() == 0) { - me["GEN1-num-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN1-num-label"].setColor(0.8078,0.8039,0.8078); - } - } else { - me["GEN1-content"].show(); - me["GEN1-off"].hide(); - # me["Gen1Load"].setText(sprintf("%s", math.round(gen1_load.getValue()))); - me["Gen1Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG1.volts.getValue()))); - - if (systems.ELEC.Source.IDG1.hertz.getValue() == 0) { - me["Gen1Hz"].setText(sprintf("XX")); - } else { - me["Gen1Hz"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG1.hertz.getValue()))); - } - - if (eng1_running.getValue() == 0) { - me["GEN1-num-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN1-num-label"].setColor(0.8078,0.8039,0.8078); - } - - if (systems.ELEC.Source.IDG1.volts.getValue() > 120 or systems.ELEC.Source.IDG1.volts.getValue() < 110 or systems.ELEC.Source.IDG1.hertz.getValue() > 410 or systems.ELEC.Source.IDG1.hertz.getValue() < 390 or gen1_load.getValue() >= 110) { - me["GEN1-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN1-label"].setColor(0.8078,0.8039,0.8078); - } - - if (gen1_load.getValue() >= 110) { - me["Gen1Load"].setColor(0.7333,0.3803,0); - } else { - me["Gen1Load"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.IDG1.volts.getValue() > 120 or systems.ELEC.Source.IDG1.volts.getValue() < 110) { - me["Gen1Volt"].setColor(0.7333,0.3803,0); - } else { - me["Gen1Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.IDG1.hertz.getValue() > 410 or systems.ELEC.Source.IDG1.hertz.getValue() < 390) { - me["Gen1Hz"].setColor(0.7333,0.3803,0); - } else { - me["Gen1Hz"].setColor(0.0509,0.7529,0.2941); - } - } - - # GEN2 - if (systems.ELEC.Switch.gen2.getValue() == 0) { - me["GEN2-content"].hide(); - me["GEN2-off"].show(); - if (systems.ELEC.Source.IDG2.gcrRelay.getValue()) { - me["GEN2-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN2-label"].setColor(0.8078,0.8039,0.8078); - } - - if (eng2_running.getValue() == 0) { - me["GEN2-num-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN2-num-label"].setColor(0.8078,0.8039,0.8078); - } - } else { - me["GEN2-content"].show(); - me["GEN2-off"].hide(); - # me["Gen2Load"].setText(sprintf("%s", math.round(gen2_load.getValue()))); - me["Gen2Volt"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG2.volts.getValue()))); - if (systems.ELEC.Source.IDG2.hertz.getValue() == 0) { - me["Gen2Hz"].setText(sprintf("XX")); - } else { - me["Gen2Hz"].setText(sprintf("%s", math.round(systems.ELEC.Source.IDG2.hertz.getValue()))); - } - - if (eng2_running.getValue() == 0) { - me["GEN2-num-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN2-num-label"].setColor(0.8078,0.8039,0.8078); - } - - if (systems.ELEC.Source.IDG2.volts.getValue() > 120 or systems.ELEC.Source.IDG2.volts.getValue() < 110 or systems.ELEC.Source.IDG2.hertz.getValue() > 410 or systems.ELEC.Source.IDG2.hertz.getValue() < 390 or gen2_load.getValue() >= 110) { - me["GEN2-label"].setColor(0.7333,0.3803,0); - } else { - me["GEN2-label"].setColor(0.8078,0.8039,0.8078); - } - - if (gen2_load.getValue() >= 110) { - me["Gen2Load"].setColor(0.7333,0.3803,0); - } else { - me["Gen2Load"].setColor(0.0509,0.7529,0.2941); - } - - - if (systems.ELEC.Source.IDG2.volts.getValue() > 120 or systems.ELEC.Source.IDG2.volts.getValue() < 110) { - me["Gen2Volt"].setColor(0.7333,0.3803,0); - } else { - me["Gen2Volt"].setColor(0.0509,0.7529,0.2941); - } - - if (systems.ELEC.Source.IDG2.hertz.getValue() > 410 or systems.ELEC.Source.IDG2.hertz.getValue() < 390) { - me["Gen2Hz"].setColor(0.7333,0.3803,0); - } else { - me["Gen2Hz"].setColor(0.0509,0.7529,0.2941); - } - } - - - - # Managment of the connecting lines between the components - if (systems.ELEC.Relay.apuGlc.getValue() and (systems.ELEC.Relay.acTie1.getValue() or systems.ELEC.Relay.acTie2.getValue())) { - me["APU-out"].show(); - } else { - me["APU-out"].hide(); - } - - if (systems.ELEC.Relay.extEpc.getValue() and (systems.ELEC.Relay.acTie1.getValue() or systems.ELEC.Relay.acTie2.getValue())) { - me["EXT-out"].show(); - } else { - me["EXT-out"].hide(); - } - - if (systems.ELEC.Source.IDG1.volts.getValue() >= 110 and systems.ELEC.Relay.glc1.getValue()) { - me["ELEC-Line-GEN1-AC1"].show(); - } else { - me["ELEC-Line-GEN1-AC1"].hide(); - } - - if (systems.ELEC.Source.IDG2.volts.getValue() >= 110 and systems.ELEC.Relay.glc2.getValue()) { - me["ELEC-Line-GEN2-AC2"].show(); - } else { - me["ELEC-Line-GEN2-AC2"].hide(); - } - - if (systems.ELEC.Relay.acTie1.getValue() and systems.ELEC.Relay.acTie2.getValue()) { - me["ELEC-Line-APU-AC1"].show(); - me["ELEC-Line-APU-EXT"].show(); - me["ELEC-Line-EXT-AC2"].show(); - } else { - if (systems.ELEC.Relay.acTie1.getValue()) { - me["ELEC-Line-APU-AC1"].show(); - } else { - me["ELEC-Line-APU-AC1"].hide(); - } - - if ((systems.ELEC.Relay.acTie2.getValue() and systems.ELEC.Relay.apuGlc.getValue() and !systems.ELEC.Relay.glc2.getValue()) or (systems.ELEC.Relay.acTie1.getValue() and systems.ELEC.Relay.extEpc.getValue() and !systems.ELEC.Relay.glc1.getValue())) { - me["ELEC-Line-APU-EXT"].show(); - } else { - me["ELEC-Line-APU-EXT"].hide(); - } - - if (systems.ELEC.Relay.acTie2.getValue()) { - me["ELEC-Line-EXT-AC2"].show(); - } else { - me["ELEC-Line-EXT-AC2"].hide(); - } - } - - if (systems.ELEC.Relay.acEssFeed1.getValue()) { - if (systems.ELEC.Bus.ac1.getValue() >= 110) { - me["ELEC-Line-AC1-ACESS"].show(); - } else { - me["ELEC-Line-AC1-ACESS"].hide(); - } - me["ELEC-Line-AC2-ACESS"].hide(); - } elsif (systems.ELEC.Relay.acEssFeed2.getValue()) { - me["ELEC-Line-AC1-ACESS"].hide(); - if (systems.ELEC.Bus.ac2.getValue() >= 110) { - me["ELEC-Line-AC2-ACESS"].show(); - } else { - me["ELEC-Line-AC2-ACESS"].hide(); - } - } else { - me["ELEC-Line-AC1-ACESS"].hide(); - me["ELEC-Line-AC2-ACESS"].hide(); - } - - if (systems.ELEC.Relay.tr1Contactor.getValue()) { - if (systems.ELEC.Bus.ac1.getValue() < 110) { - me["ELEC-Line-AC1-TR1"].setColorFill(0.7333,0.3803,0); - } else { - me["ELEC-Line-AC1-TR1"].setColorFill(0.0509,0.7529,0.2941); - } - me["ELEC-Line-AC1-TR1"].show(); - me["ELEC-Line-TR1-DC1"].show(); - } else { - me["ELEC-Line-AC1-TR1"].hide(); - me["ELEC-Line-TR1-DC1"].hide(); - } - - if (systems.ELEC.Relay.tr2Contactor.getValue()) { - if (systems.ELEC.Bus.ac2.getValue() < 110) { - me["ELEC-Line-AC2-TR2"].setColorFill(0.7333,0.3803,0); - } else { - me["ELEC-Line-AC2-TR2"].setColorFill(0.0509,0.7529,0.2941); - } - me["ELEC-Line-AC2-TR2"].show(); - me["ELEC-Line-TR2-DC2"].show(); - } else { - me["ELEC-Line-AC2-TR2"].hide(); - me["ELEC-Line-TR2-DC2"].hide(); - } - - if (systems.ELEC.Bus.acEss.getValue() >= 110 and !systems.ELEC.Relay.acEssEmerGenFeed.getValue() and (!systems.ELEC.Relay.tr1Contactor.getValue() or !systems.ELEC.Relay.tr2Contactor.getValue())) { - me["ELEC-Line-ACESS-TRESS"].show(); - } else { - me["ELEC-Line-ACESS-TRESS"].hide(); - } \ No newline at end of file From 878ec89e4827dacfe30b7c836d37c31e58117663 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sat, 24 Jul 2021 19:38:49 +0100 Subject: [PATCH 20/28] Hydraulics page - improve and add quantity indicators --- .../Instruments/Lower-ECAM/Lower-ECAM-hyd.nas | 104 ++++++++++++--- Models/Instruments/Lower-ECAM/res/hyd.svg | 125 ++++++++++++------ Nasal/Systems/hydraulics.nas | 6 +- 3 files changed, 167 insertions(+), 68 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas index 4ec5fbce..d87f4901 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-hyd.nas @@ -21,6 +21,20 @@ var canvas_lowerECAMPageHyd = foreach(var key; obj.getKeys()) { obj[key] = obj.group.getElementById(key); + + var clip_el = obj.group.getElementById(key ~ "_clip"); + if (clip_el != nil) { + clip_el.setVisible(0); + var tran_rect = clip_el.getTransformedBounds(); + + var clip_rect = sprintf("rect(%d,%d, %d,%d)", + tran_rect[1], + tran_rect[2], + tran_rect[3], + tran_rect[0]); + obj[key].set("clip", clip_rect); + obj[key].set("clip-frame", canvas.Element.PARENT); + } }; foreach(var key; obj.getKeysBottom()) { @@ -33,9 +47,13 @@ var canvas_lowerECAMPageHyd = obj.update_items = [ props.UpdateManager.FromHashValue("blue", 25, func(val) { - obj["Press-Blue"].setText(sprintf("%s", math.round(val, 50))); + if (val >= 100) { + obj["Press-Blue"].setText(sprintf("%s", math.round(val, 50))); + } else { + obj["Press-Blue"].setText(sprintf("%s", 0)); + } - if (val >= 1500) { + if (val > 1450) { obj["Blue-Line"].setColor(0.0509,0.7529,0.2941); obj["Blue-Line"].setColorFill(0.0509,0.7529,0.2941); obj["Blue-Line-Top"].setColorFill(0.0509,0.7529,0.2941); @@ -54,9 +72,13 @@ var canvas_lowerECAMPageHyd = } }), props.UpdateManager.FromHashValue("yellow", 25, func(val) { - obj["Press-Yellow"].setText(sprintf("%s", math.round(val, 50))); + if (val >= 100) { + obj["Press-Yellow"].setText(sprintf("%s", math.round(val, 50))); + } else { + obj["Press-Yellow"].setText(sprintf("%s", 0)); + } - if (val >= 1500) { + if (val > 1450) { obj["Yellow-Line"].setColor(0.0509,0.7529,0.2941); obj["Yellow-Line"].setColorFill(0.0509,0.7529,0.2941); obj["Yellow-Line-Top"].setColorFill(0.0509,0.7529,0.2941); @@ -77,9 +99,13 @@ var canvas_lowerECAMPageHyd = } }), props.UpdateManager.FromHashValue("green", 25, func(val) { - obj["Press-Green"].setText(sprintf("%s", math.round(val, 50))); + if (val >= 100) { + obj["Press-Green"].setText(sprintf("%s", math.round(val, 50))); + } else { + obj["Press-Green"].setText(sprintf("%s", 0)); + } - if (val >= 1500) { + if (val > 1450) { obj["Green-Line"].setColor(0.0509,0.7529,0.2941); obj["Green-Line"].setColorFill(0.0509,0.7529,0.2941); obj["Green-Line-Top"].setColorFill(0.0509,0.7529,0.2941); @@ -169,7 +195,7 @@ var canvas_lowerECAMPageHyd = obj["OVHT-Yellow"].hide(); } }), - props.UpdateManager.FromHashValue("hydRATPosition", 0.01, func(val) { + props.UpdateManager.FromHashValue("hydRATPosition", nil, func(val) { if (val) { obj["RAT-stowed"].hide(); obj["RAT-not-stowed"].show(); @@ -178,7 +204,7 @@ var canvas_lowerECAMPageHyd = obj["RAT-not-stowed"].hide(); } }), - props.UpdateManager.FromHashValue("hydGreenFireValve", 0.01, func(val) { + props.UpdateManager.FromHashValue("hydGreenFireValve", nil, func(val) { if (val != 0) { obj["Fire-Valve-Green"].setColor(0.7333,0.3803,0); obj["Fire-Valve-Green-Cross"].setColorFill(0.7333,0.3803,0); @@ -189,7 +215,7 @@ var canvas_lowerECAMPageHyd = obj["Fire-Valve-Green"].setRotation(0); } }), - props.UpdateManager.FromHashValue("hydYellowFireValve", 0.01, func(val) { + props.UpdateManager.FromHashValue("hydYellowFireValve", nil, func(val) { if (val != 0) { obj["Fire-Valve-Yellow"].setColor(0.7333,0.3803,0); obj["Fire-Valve-Yellow-Cross"].setColorFill(0.7333,0.3803,0); @@ -200,15 +226,15 @@ var canvas_lowerECAMPageHyd = obj["Fire-Valve-Yellow"].setRotation(0); } }), - props.UpdateManager.FromHashValue("elecAC1", 1, func(val) { - if (val >= 110) { + props.UpdateManager.FromHashList(["elecAC1","dcEss"], 1, func(val) { + if (val.elecAC1 >= 110 and val.dcEss >= 25) { obj["ELEC-Blue-label"].setColor(0.8078,0.8039,0.8078); } else { obj["ELEC-Blue-label"].setColor(0.7333,0.3803,0); } }), - props.UpdateManager.FromHashValue("elecAC2", 1, func(val) { - if (val >= 110) { + props.UpdateManager.FromHashList(["elecAC2","dc2"], 1, func(val) { + if (val.elecAC2 >= 110 and val.dc2 >= 25) { obj["ELEC-Yellow-label"].setColor(0.8078,0.8039,0.8078); } else { obj["ELEC-Yellow-label"].setColor(0.7333,0.3803,0); @@ -221,7 +247,7 @@ var canvas_lowerECAMPageHyd = } else { obj["ELEC-Yellow-on"].show(); obj["ELEC-Yellow-off"].hide(); - if (val.yellow >= 1500) { + if (val.yellow > 1450) { obj["ELEC-Yellow-on"].setColor(0.0509,0.7529,0.2941); } else { obj["ELEC-Yellow-on"].setColor(0.7333,0.3803,0); @@ -231,20 +257,21 @@ var canvas_lowerECAMPageHyd = props.UpdateManager.FromHashList(["blue","hydBlueElecPumpSwitch"], nil, func(val) { if (val.hydBlueElecPumpSwitch) { obj["Pump-Blue-off"].hide(); - if (val.blue >= 1500) { + if (val.blue > 1450) { obj["Pump-Blue-on"].show(); - obj["Pump-Blue-off"].hide(); + obj["Pump-LOPR-Blue"].hide(); obj["Pump-Blue"].setColorFill(0.0509,0.7529,0.2941); obj["Pump-Blue"].setColor(0.0509,0.7529,0.2941); } else { - obj["Pump-Blue-off"].show(); obj["Pump-Blue-on"].hide(); + obj["Pump-LOPR-Blue"].show(); obj["Pump-Blue"].setColorFill(0.7333,0.3803,0); obj["Pump-Blue"].setColor(0.7333,0.3803,0); } } else { obj["Pump-Blue-off"].show(); obj["Pump-Blue-on"].hide(); + obj["Pump-LOPR-Blue"].hide(); obj["Pump-Blue"].setColorFill(0.7333,0.3803,0); obj["Pump-Blue"].setColor(0.7333,0.3803,0); } @@ -252,7 +279,7 @@ var canvas_lowerECAMPageHyd = props.UpdateManager.FromHashList(["yellow","hydYellowEDPPumpSwitch"], nil, func(val) { if (val.hydYellowEDPPumpSwitch) { obj["Pump-Yellow-off"].hide(); - if (val.yellow >= 1500) { + if (val.yellow > 1450) { obj["Pump-Yellow-on"].show(); obj["Pump-LOPR-Yellow"].hide(); obj["Pump-Yellow"].setColorFill(0.0509,0.7529,0.2941); @@ -274,7 +301,7 @@ var canvas_lowerECAMPageHyd = props.UpdateManager.FromHashList(["green","hydGreenEDPPumpSwitch"], nil, func(val) { if (val.hydGreenEDPPumpSwitch) { obj["Pump-Green-off"].hide(); - if (val.green >= 1500) { + if (val.green > 1450) { obj["Pump-Green-on"].show(); obj["Pump-LOPR-Green"].hide(); obj["Pump-Green"].setColor(0.0509,0.7529,0.2941); @@ -324,6 +351,36 @@ var canvas_lowerECAMPageHyd = obj["PTU-Auto-or-off"].show(); } }), + props.UpdateManager.FromHashValue("hydBlueQTY", 0.05, func(val) { + obj["Quantity-Indicator-Blue"].setTranslation(0,((val / 8) * -140) + 140); + if (val >= 2.4) { + obj["Quantity-Indicator-Blue"].setColor(0.0509,0.7529,0.2941); + obj["path5561-4"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Quantity-Indicator-Blue"].setColor(0.7333,0.3803,0); + obj["path5561-4"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("hydGreenQTY", 0.05, func(val) { + obj["Quantity-Indicator-Green"].setTranslation(0,((val / 18) * -140) + 140); + if (val >= 3.5) { + obj["Quantity-Indicator-Green"].setColor(0.0509,0.7529,0.2941); + obj["path5561-5"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Quantity-Indicator-Green"].setColor(0.7333,0.3803,0); + obj["path5561-5"].setColor(0.7333,0.3803,0); + } + }), + props.UpdateManager.FromHashValue("hydYellowQTY", 0.05, func(val) { + obj["Quantity-Indicator-Yellow"].setTranslation(0,((val / 15) * -140) + 140); + if (val >= 3.5) { + obj["Quantity-Indicator-Yellow"].setColor(0.0509,0.7529,0.2941); + obj["path5561"].setColor(0.0509,0.7529,0.2941); + } else { + obj["Quantity-Indicator-Yellow"].setColor(0.7333,0.3803,0); + obj["path5561"].setColor(0.7333,0.3803,0); + } + }), ]; obj.displayedGForce = 0; @@ -363,10 +420,10 @@ var canvas_lowerECAMPageHyd = return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit"]; }, getKeys: func() { - return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Green-Indicator","Blue-Indicator","Yellow-Indicator","Press-Green","Press-Blue","Press-Yellow","Green-Line","Blue-Line","Yellow-Line","Green-Line-Top","Blue-Line-Top","Yellow-Line-Middle","Green-Line-Middle","Yellow-Line-Bottom","Green-Line-Bottom","Blue-Line-Bottom","Yellow-Line-Top","PTU-Supply-Line","PTU-supply-yellow","PTU-supply-green","PTU-connection", + return ["TAT","SAT","GW","UTCh","UTCm","GLoad","GW-weight-unit","Green-Indicator","HYD-Quantity-Group-Blue","HYD-Quantity-Group-Yellow","HYD-Quantity-Group-Green","Blue-Indicator","Yellow-Indicator","Press-Green","Press-Blue","Press-Yellow","Green-Line","Blue-Line","Yellow-Line","Green-Line-Top","Blue-Line-Top","Yellow-Line-Middle","Green-Line-Middle","Yellow-Line-Bottom","Green-Line-Bottom","Blue-Line-Bottom","Yellow-Line-Top","PTU-Supply-Line","PTU-supply-yellow","PTU-supply-green","PTU-connection", "PTU-Auto-or-off","RAT-label","RAT-stowed","RAT-not-stowed","ELEC-Yellow-off","ELEC-Yellow-on","ELEC-Yellow-label","ELEC-OVTH-Yellow","ELEC-Blue-label","ELEC-OVHT-Blue","ELEC-OVHT-Yellow","Pump-Green-label","Pump-Yellow-label","Pump-Green", - "Pump-LOPR-Green","Pump-Green-off","Pump-Green-on","Pump-Yellow","Pump-LOPR-Yellow","Pump-Yellow-off","Pump-Yellow-on","Pump-Blue", "Pump-Blue-off","Pump-Blue-on","Fire-Valve-Green","Fire-Valve-Yellow","LO-AIR-PRESS-Green", - "LO-AIR-PRESS-Yellow","LO-AIR-PRESS-Blue","OVHT-Green","OVHT-Blue","OVHT-Yellow","Quantity-Indicator-Green","Quantity-Indicator-Blue","Quantity-Indicator-Yellow","Green-label","Blue-label","Yellow-label","Fire-Valve-Yellow-Cross","Fire-Valve-Green-Cross"]; + "Pump-LOPR-Green","Pump-Green-off","Pump-Green-on","Pump-Yellow","Pump-LOPR-Yellow","Pump-Yellow-off","Pump-Yellow-on","Pump-Blue","Pump-LOPR-Blue","Pump-Blue-off","Pump-Blue-on","Fire-Valve-Green","Fire-Valve-Yellow","LO-AIR-PRESS-Green", + "LO-AIR-PRESS-Yellow","LO-AIR-PRESS-Blue","OVHT-Green","OVHT-Blue","OVHT-Yellow","Quantity-Indicator-Green","Quantity-Indicator-Blue","Quantity-Indicator-Yellow","Green-label","Blue-label","Yellow-label","Fire-Valve-Yellow-Cross","Fire-Valve-Green-Cross","path5561","path5561-4","path5561-5"]; }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) @@ -461,6 +518,9 @@ var input = { hydPTUFault: "/systems/failures/hydraulic/ptu", hydPTUActive: "/systems/hydraulic/sources/ptu/ptu-hydraulic-condition", hydPTUDiff: "/systems/hydraulic/yellow-psi-diff", + hydBlueQTY: "/systems/hydraulic/blue-qty", + hydGreenQTY: "/systems/hydraulic/green-qty", + hydYellowQTY: "/systems/hydraulic/yellow-qty", }; foreach (var name; keys(input)) { diff --git a/Models/Instruments/Lower-ECAM/res/hyd.svg b/Models/Instruments/Lower-ECAM/res/hyd.svg index cf008563..54de4b5e 100644 --- a/Models/Instruments/Lower-ECAM/res/hyd.svg +++ b/Models/Instruments/Lower-ECAM/res/hyd.svg @@ -55,10 +55,10 @@ inkscape:window-width="1366" inkscape:window-height="705" id="namedview371" - showgrid="true" - inkscape:zoom="0.71238678" - inkscape:cx="802.52236" - inkscape:cy="594.9486" + showgrid="false" + inkscape:zoom="5.6568542" + inkscape:cx="1081.6807" + inkscape:cy="259.15874" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -118,7 +118,7 @@ transform="translate(-504.6045,133.35439)" id="Pump-Green" inkscape:label="#g5620" - style="stroke:none;stroke-opacity:1;fill:#0dc04b;fill-opacity:1;stroke-width:0.99974997;stroke-miterlimit:4;stroke-dasharray:none"> + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"> + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:0.99974996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - + - + + @@ -892,7 +902,7 @@ sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path5561" - d="m 812.24998,856.74997 h -17.25" + d="m 812.24998,856.74997 h -17.0677" style="fill:none;stroke:#0dc04b;stroke-width:2.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.57043672;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 813.15523,823.32891 h 11.71524 v 33.68651 h -11.71524 z" + style="fill:none;stroke:#bb6100;stroke-width:2.10803151;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + + style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.49036217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 813.26886,814.62253 h 11.48798 v 42.27926 h -11.48798 z" + style="fill:none;stroke:#bb6100;stroke-width:2.33861709;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + + style="fill:#cecdce;fill-opacity:1;stroke:none;stroke-width:2.63435125;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> + d="m 812.88109,830.65833 h 12.26352 v 26.63123 h -12.26352 z" + style="fill:none;stroke:#bb6100;stroke-width:1.91768491;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> 00 + LO diff --git a/Nasal/Systems/hydraulics.nas b/Nasal/Systems/hydraulics.nas index 04bef4bc..7e75f138 100644 --- a/Nasal/Systems/hydraulics.nas +++ b/Nasal/Systems/hydraulics.nas @@ -64,9 +64,9 @@ var HYD = { }, init: func() { me.resetFail(); - me.Qty.blueInput.setValue(math.round((rand() * 4) + 8 , 0.1)); # Random between 8 and 12 - me.Qty.greenInput.setValue(math.round((rand() * 4) + 8 , 0.1)); # Random between 8 and 12 - me.Qty.yellowInput.setValue(math.round((rand() * 4) + 8 , 0.1)); # Random between 8 and 12 + me.Qty.blueInput.setValue(math.round((rand() * 2) + 6 , 0.1)); # Random between 6 and 8 + me.Qty.greenInput.setValue(math.round((rand() * 4) + 14 , 0.1)); # Random between 14 and 18 + me.Qty.yellowInput.setValue(math.round((rand() * 4) + 10 , 0.1)); # Random between 10 and 14 me.Switch.blueElec.setValue(1); me.Switch.blueElecOvrd.setValue(0); me.Switch.greenEDP.setValue(1); From 796ca2435cf02451a54f6417129fe4f5b573bb39 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sat, 24 Jul 2021 21:09:25 +0100 Subject: [PATCH 21/28] Bleed page: minor corrections --- .../Lower-ECAM/Lower-ECAM-bleed.nas | 51 +++++++++++++++++-- 1 file changed, 46 insertions(+), 5 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas index 432df33e..7c104add 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-bleed.nas @@ -142,7 +142,11 @@ var canvas_lowerECAMPageBleed = }), props.UpdateManager.FromHashList(["BleedBMC1Working","BleedPreCoolerPSI1"], nil, func(val) { if (val.BleedBMC1Working) { - obj["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", math.round(val.BleedPreCoolerPSI1))); + if (val.BleedPreCoolerPSI1 >= 98) { + obj["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", 98)); + } else { + obj["BLEED-Precooler-1-Inlet-Press"].setText(sprintf("%s", math.round(val.BleedPreCoolerPSI1,2))); + } if (val.BleedPreCoolerPSI1 < 4 or val.BleedPreCoolerPSI1 > 57) { obj["BLEED-Precooler-1-Inlet-Press"].setColor(0.7333,0.3803,0); } else { @@ -155,7 +159,12 @@ var canvas_lowerECAMPageBleed = }), props.UpdateManager.FromHashList(["BleedBMC2Working","BleedPreCoolerPSI2"], nil, func(val) { if (val.BleedBMC2Working) { - obj["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", math.round(val.BleedPreCoolerPSI2))); + if (val.BleedPreCoolerPSI2 >= 98) { + obj["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", 98)); + } else { + obj["BLEED-Precooler-2-Inlet-Press"].setText(sprintf("%s", math.round(val.BleedPreCoolerPSI2,2))); + } + if (val.BleedPreCoolerPSI2 < 4 or val.BleedPreCoolerPSI2 > 57) { obj["BLEED-Precooler-2-Inlet-Press"].setColor(0.7333,0.3803,0); } else { @@ -168,7 +177,12 @@ var canvas_lowerECAMPageBleed = }), props.UpdateManager.FromHashList(["BleedBMC1Working","BleedPreCoolerTemp1","BleedPRVValve1Cmd","BleedPreCoolerOvht1"], nil, func(val) { if (val.BleedBMC1Working) { - obj["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", math.round(val.BleedPreCoolerTemp1, 5))); + if (val.BleedPreCoolerTemp1 >= 510) { + obj["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", 510)); + } else { + obj["BLEED-Precooler-1-Outlet-Temp"].setText(sprintf("%s", math.round(val.BleedPreCoolerTemp1, 5))); + } + if (val.BleedPRVValve1Cmd and (val.BleedPreCoolerTemp1 < 150 or val.BleedPreCoolerOvht1)) { obj["BLEED-Precooler-1-Outlet-Temp"].setColor(0.7333,0.3803,0); } else { @@ -181,7 +195,12 @@ var canvas_lowerECAMPageBleed = }), props.UpdateManager.FromHashList(["BleedBMC2Working","BleedPreCoolerTemp2","BleedPRVValve2Cmd","BleedPreCoolerOvht2"], nil, func(val) { if (val.BleedBMC2Working) { - obj["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", math.round(val.BleedPreCoolerTemp2, 5))); + if (val.BleedPreCoolerTemp2 >= 510) { + obj["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", 510)); + } else { + obj["BLEED-Precooler-2-Outlet-Temp"].setText(sprintf("%s", math.round(val.BleedPreCoolerTemp2, 5))); + } + if (val.BleedPRVValve2Cmd and (val.BleedPreCoolerTemp2 < 150 or val.BleedPreCoolerOvht2)) { obj["BLEED-Precooler-2-Outlet-Temp"].setColor(0.7333,0.3803,0); } else { @@ -284,10 +303,14 @@ var canvas_lowerECAMPageBleed = obj["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); obj["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); obj["BLEED-Ram-Air-Cross"].setColorFill(0.7333,0.3803,0); + obj["BLEED-Ram-Air-connection"].setColorFill(0.7333,0.3803,0); + obj["BLEED-Ram-Air-connection"].setColorFill(0.7333,0.3803,0); } else { obj["BLEED-Ram-Air"].setColor(0.0509,0.7529,0.2941); obj["BLEED-Ram-Air"].setColorFill(0.0509,0.7529,0.2941); obj["BLEED-Ram-Air-Cross"].setColorFill(0.0509,0.7529,0.2941); + obj["BLEED-Ram-Air-connection"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-Ram-Air-connection"].setColorFill(0.0509,0.7529,0.2941); } obj["BLEED-Ram-Air-connection"].show(); } else { @@ -295,6 +318,8 @@ var canvas_lowerECAMPageBleed = obj["BLEED-Ram-Air"].setColor(0.7333,0.3803,0); obj["BLEED-Ram-Air"].setColorFill(0.7333,0.3803,0); obj["BLEED-Ram-Air-Cross"].setColorFill(0.7333,0.3803,0); + obj["BLEED-Ram-Air-connection"].setColorFill(0.7333,0.3803,0); + obj["BLEED-Ram-Air-connection"].setColorFill(0.7333,0.3803,0); obj["BLEED-Ram-Air-connection"].show(); } @@ -313,6 +338,22 @@ var canvas_lowerECAMPageBleed = obj["BLEED-cond-2"].setColor(0.0509,0.7529,0.2941); obj["BLEED-cond-3"].setColor(0.0509,0.7529,0.2941); } + + if (val.flowCtlValve1 == 0) { + obj["BLEED-Pack-1-connection"].setColor(0.7333,0.3803,0); + obj["BLEED-Pack-1-connection"].setColorFill(0.7333,0.3803,0); + } else { + obj["BLEED-Pack-1-connection"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-Pack-1-connection"].setColorFill(0.0509,0.7529,0.2941); + } + + if (val.flowCtlValve2 == 0) { + obj["BLEED-Pack-2-connection"].setColor(0.7333,0.3803,0); + obj["BLEED-Pack-2-connection"].setColorFill(0.7333,0.3803,0); + } else { + obj["BLEED-Pack-2-connection"].setColor(0.0509,0.7529,0.2941); + obj["BLEED-Pack-2-connection"].setColorFill(0.0509,0.7529,0.2941); + } }), props.UpdateManager.FromHashList(["BleedCrossbleed","apuMaster","apuBleedValvePos","ApuBleedNotOn"], nil, func(val) { if (val.apuMaster) { @@ -392,7 +433,7 @@ var canvas_lowerECAMPageBleed = "BLEED-Pack-2-Bypass-needle", "BLEED-Pack-2-Comp-Out-Temp", "BLEED-Pack-2-Packflow-needle", "BLEED-Anti-Ice-Left", "BLEED-Anti-Ice-Right", "BLEED-HP-2-connection", "BLEED-HP-1-connection", "BLEED-ANTI-ICE-ARROW-LEFT", "BLEED-ANTI-ICE-ARROW-RIGHT", "BLEED-xbleedLeft","BLEED-xbleedCenter","BLEED-xbleedRight","BLEED-cond-1","BLEED-cond-2","BLEED-cond-3","BLEED-Ram-Air-connection","BLEED-ENG-1-Cross","BLEED-ENG-2-Cross", - "BLEED-Pack-1-Flow-Valve-Cross","BLEED-Pack-2-Flow-Valve-Cross"]; + "BLEED-Pack-1-Flow-Valve-Cross","BLEED-Pack-2-Flow-Valve-Cross","BLEED-Pack-1-connection","BLEED-Pack-2-connection"]; }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) From 973bd4f900b5622901bf82bc8088bc23d98528ad Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sat, 24 Jul 2021 21:48:06 +0100 Subject: [PATCH 22/28] Fix ELEC page --- .../Lower-ECAM/Lower-ECAM-elec.nas | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas index 6299ad50..6b7ab26e 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-elec.nas @@ -74,14 +74,14 @@ var canvas_lowerECAMPageElec = } } }), - props.UpdateManager.FromHashList(["apuMaster","apuGLC"], nil, func(val) { + props.UpdateManager.FromHashList(["apuMaster","apuGenPB"], nil, func(val) { if (val.apuMaster == 0) { obj["APU-content"].hide(); obj["APUGEN-off"].hide(); obj["APU-border"].hide(); } else { obj["APU-border"].show(); - if (val.apuGLC == 0) { + if (val.apuGenPB == 0) { obj["APU-content"].hide(); obj["APUGEN-off"].show(); } else { @@ -151,18 +151,22 @@ var canvas_lowerECAMPageElec = if (val >= 110) { obj["ELEC-AC1-label"].setColor(0.0509,0.7529,0.2941); obj["AC1-in"].show(); + obj["ELEC-Line-AC1-TR1"].show(); } else { obj["ELEC-AC1-label"].setColor(0.7333,0.3803,0); obj["AC1-in"].hide(); + obj["ELEC-Line-AC1-TR1"].hide(); } }), props.UpdateManager.FromHashValue("elecAC2", 0.5, func(val) { if (val >= 110) { obj["ELEC-AC2-label"].setColor(0.0509,0.7529,0.2941); obj["AC2-in"].show(); + obj["ELEC-Line-AC2-TR2"].show(); } else { obj["ELEC-AC2-label"].setColor(0.7333,0.3803,0); obj["AC2-in"].hide(); + obj["ELEC-Line-AC2-TR2"].hide(); } }), props.UpdateManager.FromHashValue("elecACEss", 0.5, func(val) { @@ -209,6 +213,7 @@ var canvas_lowerECAMPageElec = obj["BAT1-OFF"].hide(); obj["BAT1-content"].show(); obj["Bat1Ampere"].setText(sprintf("%2.0f", val.elecBat1Amp)); + obj["Bat1Volt"].setText(sprintf("%2.0f", val.elecBat1Volt)); if (val.elecBat1Volt >= 24.95 and val.elecBat1Volt <= 31.05) { @@ -217,7 +222,7 @@ var canvas_lowerECAMPageElec = obj["Bat1Volt"].setColor(0.7333,0.3803,0); } - if (val.elecBat1Amp > 5) { + if (val.elecBat1Amp > 5 and val.elecBat1Direction == 1) { obj["Bat1Ampere"].setColor(0.7333,0.3803,0); } else { obj["Bat1Ampere"].setColor(0.0509,0.7529,0.2941); @@ -253,6 +258,7 @@ var canvas_lowerECAMPageElec = obj["BAT2-OFF"].hide(); obj["BAT2-content"].show(); obj["Bat2Ampere"].setText(sprintf("%2.0f", val.elecBat2Amp)); + obj["Bat2Volt"].setText(sprintf("%2.0f", val.elecBat2Volt)); if (val.elecBat2Volt >= 24.95 and val.elecBat2Volt <= 31.05) { @@ -261,7 +267,7 @@ var canvas_lowerECAMPageElec = obj["Bat2Volt"].setColor(0.7333,0.3803,0); } - if (val.elecBat2Amp > 5) { + if (val.elecBat2Amp > 5 and val.elecBat2Direction == 1) { obj["Bat2Ampere"].setColor(0.7333,0.3803,0); } else { obj["Bat2Ampere"].setColor(0.0509,0.7529,0.2941); @@ -371,7 +377,7 @@ var canvas_lowerECAMPageElec = obj["ELEC-Line-DC2-DCBAT"].show(); } else { obj["ELEC-Line-DC2-DCESS_DCBAT"].hide(); - obj["ELEC-Line-DC2-DCBAT"].show(); + obj["ELEC-Line-DC2-DCBAT"].hide(); } }), props.UpdateManager.FromHashList(["elecDcEssFeedBat","elecDCTie1"], nil, func(val) { @@ -550,10 +556,8 @@ var canvas_lowerECAMPageElec = } else { obj["ELEC-Line-AC1-TR1"].setColorFill(0.0509,0.7529,0.2941); } - obj["ELEC-Line-AC1-TR1"].show(); obj["ELEC-Line-TR1-DC1"].show(); } else { - obj["ELEC-Line-AC1-TR1"].hide(); obj["ELEC-Line-TR1-DC1"].hide(); } }), @@ -564,10 +568,8 @@ var canvas_lowerECAMPageElec = } else { obj["ELEC-Line-AC2-TR2"].setColorFill(0.0509,0.7529,0.2941); } - obj["ELEC-Line-AC2-TR2"].show(); obj["ELEC-Line-TR2-DC2"].show(); } else { - obj["ELEC-Line-AC2-TR2"].hide(); obj["ELEC-Line-TR2-DC2"].hide(); } }), @@ -643,7 +645,7 @@ var canvas_lowerECAMPageElec = } } }), - props.UpdateManager.FromHashList(["elecACEss"], nil, func(val) { + props.UpdateManager.FromHashList(["elecACEss","ELEC-Line-ACESS-TRESS","elecTR1Contact","elecTR2Contact"], nil, func(val) { if (val.elecACEss >= 110 and !val.elecAcEssEmerGenFeed and (!val.elecTR1Contact or !val.elecTR2Contact)) { obj["ELEC-Line-ACESS-TRESS"].show(); } else { From 95ba5c6a7056b50d15c920c8c3322efe1403ed49 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sun, 25 Jul 2021 01:12:54 +0100 Subject: [PATCH 23/28] WHEEL page: improvements (unfinished) --- .../Lower-ECAM/Lower-ECAM-wheel.nas | 132 ++++++++++++------ Models/Instruments/Lower-ECAM/res/wheel.svg | 60 ++++---- Systems/a320-hydraulic.xml | 14 +- 3 files changed, 135 insertions(+), 71 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas index e6586a11..0f0a8ae4 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas @@ -42,8 +42,8 @@ var canvas_lowerECAMPageWheel = obj["lgctltext"].hide(); } }), - props.UpdateManager.FromHashValue("gearPosNorm", 0.01, func(val) { - if (val < 0.2 or val > 0.8) { + props.UpdateManager.FromHashValue("gearPosNorm", nil, func(val) { + if (val == 0) { obj["Triangle-Nose1"].hide(); obj["Triangle-Nose2"].hide(); } else { @@ -59,8 +59,8 @@ var canvas_lowerECAMPageWheel = obj["Triangle-Nose2"].setColor(1,0,0); } }), - props.UpdateManager.FromHashValue("gearPosNorm1", 0.01, func(val) { - if (val < 0.2 or val > 0.8) { + props.UpdateManager.FromHashValue("gearPosNorm1", nil, func(val) { + if (val == 0) { obj["Triangle-Left1"].hide(); obj["Triangle-Left2"].hide(); } else { @@ -76,8 +76,8 @@ var canvas_lowerECAMPageWheel = obj["Triangle-Left2"].setColor(1,0,0); } }), - props.UpdateManager.FromHashValue("gearPosNorm2", 0.01, func(val) { - if (val < 0.2 or val > 0.8) { + props.UpdateManager.FromHashValue("gearPosNorm2", nil, func(val) { + if (val == 0) { obj["Triangle-Right1"].hide(); obj["Triangle-Right2"].hide(); } else { @@ -93,75 +93,85 @@ var canvas_lowerECAMPageWheel = obj["Triangle-Right2"].setColor(1,0,0); } }), - props.UpdateManager.FromHashList(["yellow","green","NWSSwitch","brakesMode","val.accumPressPsiPressPsi"], nil, func(val) { + props.UpdateManager.FromHashList(["yellow","green","NWSSwitch","brakesMode","val.accumPressPsiPressPsi","leftBrakeFCS","rightBrakeFCS"], nil, func(val) { if (val.NWSSwitch and val.yellow >= 1500) { obj["NWStext"].hide(); obj["NWS"].hide(); obj["NWSrect"].hide(); - obj["antiskidtext"].hide(); - obj["BSCUrect1"].hide(); - obj["BSCUrect2"].hide(); - obj["BSCU1"].hide(); - obj["BSCU2"].hide(); } else if (!val.NWSSwitch and val.yellow >= 1500) { obj["NWStext"].show(); obj["NWS"].show(); obj["NWS"].setColor(0.0509,0.7529,0.2941); obj["NWSrect"].show(); - obj["antiskidtext"].show(); - obj["antiskidtext"].setColor(0.7333,0.3803,0); - obj["BSCUrect1"].show(); - obj["BSCUrect2"].show(); - obj["BSCU1"].show(); - obj["BSCU2"].show(); } else { obj["NWStext"].show(); obj["NWS"].show(); obj["NWS"].setColor(0.7333,0.3803,0); obj["NWSrect"].show(); + } + + if ((val.yellow < 1500 and val.brakesMode == 1) or !val.NWSSwitch) { obj["antiskidtext"].show(); obj["antiskidtext"].setColor(0.7333,0.3803,0); obj["BSCUrect1"].show(); obj["BSCUrect2"].show(); obj["BSCU1"].show(); obj["BSCU2"].show(); + } else { + obj["antiskidtext"].hide(); + obj["BSCUrect1"].hide(); + obj["BSCUrect2"].hide(); + obj["BSCU1"].hide(); + obj["BSCU2"].hide(); } - - if (val.green >= 1500 and val.brakesMode == 1) { + + if (val.green >= 1500) { + obj["normbrkhyd"].setColor(0.0509,0.7529,0.2941); + } else { + obj["normbrkhyd"].setColor(0.7333,0.3803,0); + } + + if (val.yellow >= 1500) { + obj["altnbrkhyd"].setColor(0.0509,0.7529,0.2941); + } else { + obj["altnbrkhyd"].setColor(0.7333,0.3803,0); + } + + if (!val.NWSSwitch or val.green < 1500) { + obj["NORMbrk"].show(); + obj["normbrk-rect"].show(); + obj["normbrkhyd"].show(); + } else { obj["NORMbrk"].hide(); obj["normbrk-rect"].hide(); obj["normbrkhyd"].hide(); - } else if (val.green >= 1500 and val.NWSSwitch) { - obj["NORMbrk"].show(); - obj["normbrk-rect"].show(); - obj["NORMbrk"].setColor(0.7333,0.3803,0); - obj["normbrkhyd"].setColor(0.0509,0.7529,0.2941); - } else if (val.green < 1500 or !val.NWSSwitch) { - obj["NORMbrk"].show(); - obj["normbrk-rect"].show(); - obj["NORMbrk"].setColor(0.7333,0.3803,0); - obj["normbrkhyd"].setColor(0.7333,0.3803,0); } - - if (val.brakesMode != 2) { + + if (val.brakesMode != 2 or val.green < 1500 or val.yellow < 1500 or !val.NWSSwitch) { obj["ALTNbrk"].hide(); obj["altnbrk-rect"].hide(); obj["altnbrkhyd"].hide(); - } else if (val.yellow >= 1500) { - obj["ALTNbrk"].show(); - obj["altnbrk-rect"].show(); - obj["altnbrkhyd"].setColor(0.0509,0.7529,0.2941); } else { obj["ALTNbrk"].show(); obj["altnbrk-rect"].show(); - obj["altnbrkhyd"].setColor(0.7333,0.3803,0); + obj["altnbrkhyd"].show(); + if (val.yellow < 1500 and val.accumPressPsi < 1500) { + obj["ALTNbrk"].setColor(0.7333,0.3803,0); + } else { + obj["ALTNbrk"].setColor(0.0509,0.7529,0.2941); + } } + # TODO check the parking brake with nws switch off if (val.brakesMode == 2 and val.accumPressPsi < 200 and val.yellow < 1500) { + obj["accuonlyarrow"].hide(); + obj["accuonly"].hide(); obj["accupress_text"].show(); obj["brakearrow"].hide(); obj["accupress_text"].setColor(0.7333,0.3803,0); } else if (val.brakesMode == 2 and val.accumPressPsi > 200 and val.yellow >= 1500){ + obj["accuonlyarrow"].hide(); + obj["accuonly"].hide(); obj["accupress_text"].show(); obj["brakearrow"].show(); obj["accupress_text"].setColor(0.0509,0.7529,0.2941); @@ -176,8 +186,43 @@ var canvas_lowerECAMPageWheel = obj["brakearrow"].hide(); obj["accupress_text"].hide(); } + + if (val.brakesMode == 1) { + obj["releaseL1"].hide(); + obj["releaseL2"].hide(); + obj["releaseL3"].hide(); + obj["releaseL4"].hide(); + obj["releaseR1"].hide(); + obj["releaseR2"].hide(); + obj["releaseR3"].hide(); + obj["releaseR4"].hide(); + } else { # Display if the brakes are released and in alternate braking + if (val.leftBrakeFCS == 0) { + obj["releaseL1"].show(); + obj["releaseL2"].show(); + obj["releaseL3"].show(); + obj["releaseL4"].show(); + } else { + obj["releaseL1"].hide(); + obj["releaseL2"].hide(); + obj["releaseL3"].hide(); + obj["releaseL4"].hide(); + } + + if (val.rightBrakeFCS == 0) { + obj["releaseR1"].show(); + obj["releaseR2"].show(); + obj["releaseR3"].show(); + obj["releaseR4"].show(); + } else { + obj["releaseR1"].hide(); + obj["releaseR2"].hide(); + obj["releaseR3"].hide(); + obj["releaseR4"].hide(); + } + } }), - props.UpdateManager.FromHashList(["brakeAutobrkMode"], nil, func(val) { + props.UpdateManager.FromHashList(["brakeAutobrkMode","NWSSwitch"], nil, func(val) { if (val.brakeAutobrkMode == 0) { obj["autobrkind"].hide(); } elsif (val.brakeAutobrkMode == 1) { @@ -191,11 +236,17 @@ var canvas_lowerECAMPageWheel = obj["autobrkind"].setText(sprintf("%s", "MAX")); } - if (val.brakeAutobrkMode != 0) { + if (val.brakeAutobrkMode != 0 or !val.NWSSwitch) { obj["autobrk"].show(); } else { obj["autobrk"].hide(); } + + if (!val.NWSSwitch) { + obj["autobrk"].setColor(0.7333,0.3803,0); + } else { + obj["autobrk"].setColor(0.0509,0.7529,0.2941); + } }), props.UpdateManager.FromHashValue("brakeLeft1", 0.5, func(val) { obj["braketemp1"].setText(sprintf("%s", math.round(val, 5))); @@ -578,7 +629,8 @@ var canvas_lowerECAMPageWheel = "spoiler1Lf","spoiler2Lf","spoiler3Lf","spoiler4Lf","spoiler5Lf","ALTNbrk","altnbrkhyd","altnbrk-rect","antiskidtext","brakearrow","accupress_text", "accuonlyarrow","accuonly","braketemp1","normbrkhyd","braketemp2","braketemp3","braketemp4","toparc1","toparc2","toparc3","toparc4","leftuplock", "noseuplock","rightuplock","Triangle-Left1","Triangle-Left2","Triangle-Nose1","Triangle-Nose2","Triangle-Right1","Triangle-Right2","BSCUrect1", - "BSCUrect2","BSCU1","BSCU2","tirepress1","tirepress2","tirepress3","tirepress4","tirepress5","tirepress6"]; + "BSCUrect2","BSCU1","BSCU2","tirepress1","tirepress2","tirepress3","tirepress4","tirepress5","tirepress6","releaseL1","releaseL2","releaseR1","releaseR2", + "releaseL3","releaseL4","releaseR3","releaseR4"]; }, updateBottom: func(notification) { foreach(var update_item_bottom; me.updateItemsBottom) diff --git a/Models/Instruments/Lower-ECAM/res/wheel.svg b/Models/Instruments/Lower-ECAM/res/wheel.svg index 78109a8c..e8db3c71 100644 --- a/Models/Instruments/Lower-ECAM/res/wheel.svg +++ b/Models/Instruments/Lower-ECAM/res/wheel.svg @@ -41,9 +41,9 @@ inkscape:window-height="705" id="namedview371" showgrid="true" - inkscape:zoom="0.45254834" - inkscape:cx="498.40273" - inkscape:cy="607.76607" + inkscape:zoom="0.64" + inkscape:cx="1071.5554" + inkscape:cy="763.4389" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1" @@ -370,14 +370,14 @@ id="NORMbrk" y="616.38831" x="426.55933" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#0dc04b;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';letter-spacing:0px;word-spacing:0px;fill:#bb6100;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;" xml:space="preserve" inkscape:label="#text4285">NORM BRK + style="font-size:32px;line-height:1.25;fill:#bb6100;fill-opacity:1;">NORM BRK 999 ||| + style="font-size:21.63888741px;line-height:1.25;fill:#bb6100;fill-opacity:1;">||| ||| + style="font-size:21.63888741px;line-height:1.25;fill:#bb6100;fill-opacity:1;">||| ||| + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.63888741px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#bb6100;fill-opacity:1;">||| REL ||| + style="font-size:23.3301487px;line-height:1.25;fill:#bb6100;fill-opacity:1;">||| ||| + style="font-size:23.3301487px;line-height:1.25;fill:#bb6100;fill-opacity:1;">||| ||| + style="font-size:23.3301487px;line-height:1.25;fill:#bb6100;fill-opacity:1;">||| ||| + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:23.3301487px;line-height:1.25;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';fill:#bb6100;fill-opacity:1;">||| 2 + style="font-size:32px;line-height:1.25;fill:#0dc04b;fill-opacity:1;">2 1 + style="font-size:32px;line-height:1.25;fill:#0dc04b;fill-opacity:1;">1 ||| + style="font-size:21.63888741px;line-height:1.25;stroke-width:1px;fill:#bb6100;fill-opacity:1;">||| ACCU ONLY + x="441.43594" + y="707.69073">ACCU ONLY - + /systems/failures/hydraulic/green-leak eq 1 + + + + /systems/hydraulic/green-qty-cmd-cmd + + 2.1 + /gear/gear[0]/position-norm + + + + + From 3855b4a14133835afc4cd795a4d44e8aed7a306f Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sun, 25 Jul 2021 17:41:07 +0100 Subject: [PATCH 24/28] Fix SD --- Nasal/ECAM/SystemDisplay.nas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nasal/ECAM/SystemDisplay.nas b/Nasal/ECAM/SystemDisplay.nas index de1d4d5c..d5724414 100644 --- a/Nasal/ECAM/SystemDisplay.nas +++ b/Nasal/ECAM/SystemDisplay.nas @@ -28,7 +28,7 @@ var SystemDisplayController = { displayedPage: nil, lastDisplayedPage: nil, lastMode: nil, - mode: 0, # 0 = man, 1 = warning, 2 = advisory (not used yet), 3 = auto + mode: 3, # 0 = man, 1 = warning, 2 = advisory (not used yet), 3 = auto tempFWCPhase: nil, tempElapsedTime: nil, tempEngineModeSel: nil, From a3270214312bceca5fe7bbf40553bfd71d1b19d2 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sun, 25 Jul 2021 17:46:55 +0100 Subject: [PATCH 25/28] Fix WHEEL --- Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas index 0f0a8ae4..29435278 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas @@ -162,14 +162,13 @@ var canvas_lowerECAMPageWheel = } } - # TODO check the parking brake with nws switch off if (val.brakesMode == 2 and val.accumPressPsi < 200 and val.yellow < 1500) { obj["accuonlyarrow"].hide(); obj["accuonly"].hide(); obj["accupress_text"].show(); obj["brakearrow"].hide(); obj["accupress_text"].setColor(0.7333,0.3803,0); - } else if (val.brakesMode == 2 and val.accumPressPsi > 200 and val.yellow >= 1500){ + } else if (val.brakesMode == 2 and val.NWSSwitch and val.accumPressPsi > 200 and val.yellow >= 1500){ obj["accuonlyarrow"].hide(); obj["accuonly"].hide(); obj["accupress_text"].show(); From 1703a47083eb77d6dcad6d4622cbedb7116d0881 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sun, 25 Jul 2021 17:49:24 +0100 Subject: [PATCH 26/28] Fix wheel triangles --- Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas index 29435278..816e95b5 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas @@ -43,7 +43,7 @@ var canvas_lowerECAMPageWheel = } }), props.UpdateManager.FromHashValue("gearPosNorm", nil, func(val) { - if (val == 0) { + if (val < 0.2 and val > 0.8) { obj["Triangle-Nose1"].hide(); obj["Triangle-Nose2"].hide(); } else { @@ -60,7 +60,7 @@ var canvas_lowerECAMPageWheel = } }), props.UpdateManager.FromHashValue("gearPosNorm1", nil, func(val) { - if (val == 0) { + if (val < 0.2 and val > 0.8) { obj["Triangle-Left1"].hide(); obj["Triangle-Left2"].hide(); } else { @@ -77,7 +77,7 @@ var canvas_lowerECAMPageWheel = } }), props.UpdateManager.FromHashValue("gearPosNorm2", nil, func(val) { - if (val == 0) { + if (val < 0.2 and val > 0.8) { obj["Triangle-Right1"].hide(); obj["Triangle-Right2"].hide(); } else { From a9cf9aa0b416d87b4969272a012bdff632902031 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sun, 25 Jul 2021 17:51:40 +0100 Subject: [PATCH 27/28] Actually fix them --- Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas index 816e95b5..18578846 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas @@ -43,7 +43,7 @@ var canvas_lowerECAMPageWheel = } }), props.UpdateManager.FromHashValue("gearPosNorm", nil, func(val) { - if (val < 0.2 and val > 0.8) { + if (val < 0.2 or val > 0.8) { obj["Triangle-Nose1"].hide(); obj["Triangle-Nose2"].hide(); } else { @@ -60,7 +60,7 @@ var canvas_lowerECAMPageWheel = } }), props.UpdateManager.FromHashValue("gearPosNorm1", nil, func(val) { - if (val < 0.2 and val > 0.8) { + if (val < 0.2 or val > 0.8) { obj["Triangle-Left1"].hide(); obj["Triangle-Left2"].hide(); } else { @@ -77,7 +77,7 @@ var canvas_lowerECAMPageWheel = } }), props.UpdateManager.FromHashValue("gearPosNorm2", nil, func(val) { - if (val < 0.2 and val > 0.8) { + if (val < 0.2 or val > 0.8) { obj["Triangle-Right1"].hide(); obj["Triangle-Right2"].hide(); } else { From 58c59d2c02b9db3a3797ed5f0bb42686bf976114 Mon Sep 17 00:00:00 2001 From: legoboyvdlp R Date: Sun, 25 Jul 2021 17:54:17 +0100 Subject: [PATCH 28/28] Actually fix it 2.0 --- Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas index 18578846..3746763d 100644 --- a/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas +++ b/Models/Instruments/Lower-ECAM/Lower-ECAM-wheel.nas @@ -43,7 +43,7 @@ var canvas_lowerECAMPageWheel = } }), props.UpdateManager.FromHashValue("gearPosNorm", nil, func(val) { - if (val < 0.2 or val > 0.8) { + if (val < 0.2) { obj["Triangle-Nose1"].hide(); obj["Triangle-Nose2"].hide(); } else { @@ -60,7 +60,7 @@ var canvas_lowerECAMPageWheel = } }), props.UpdateManager.FromHashValue("gearPosNorm1", nil, func(val) { - if (val < 0.2 or val > 0.8) { + if (val < 0.2) { obj["Triangle-Left1"].hide(); obj["Triangle-Left2"].hide(); } else { @@ -77,7 +77,7 @@ var canvas_lowerECAMPageWheel = } }), props.UpdateManager.FromHashValue("gearPosNorm2", nil, func(val) { - if (val < 0.2 or val > 0.8) { + if (val < 0.2) { obj["Triangle-Right1"].hide(); obj["Triangle-Right2"].hide(); } else {