diff --git a/Models/FlightDeck/a320.flightdeck.xml b/Models/FlightDeck/a320.flightdeck.xml index cbdbc318..ecd70ab5 100644 --- a/Models/FlightDeck/a320.flightdeck.xml +++ b/Models/FlightDeck/a320.flightdeck.xml @@ -8742,6 +8742,40 @@ + + + pick + chrono_cpt + + + false + + property-cycle + /instrumentation/efis/inputs/CHRONO + 0 + 1 + 2 + + + + + + + pick + chrono_fo + + + false + + property-cycle + /instrumentation/efis[1]/inputs/CHRONO + 0 + 1 + 2 + + + + diff --git a/Models/Instruments/ND/canvas/style.nas b/Models/Instruments/ND/canvas/style.nas index 30c89234..3e6147f2 100644 --- a/Models/Instruments/ND/canvas/style.nas +++ b/Models/Instruments/ND/canvas/style.nas @@ -72,7 +72,7 @@ canvas.NDStyles["Airbus"] = { level_off_alt: "/autopilot/route-manager/vnav/level-off-alt", athr: "/it-autoflight/output/athr", app_mode: "/instrumentation/nd/app-mode", - chrono_node: "/instrumentation/chrono", + chrono_node: "/instrumentation/ndchrono", fpln_offset: "/autopilot/route-manager/offset", active_route_color: [0.0509,0.7529,0.2941], inactive_route_color: [0.95,0.95,0.21] diff --git a/Nasal/Panels/clock.nas b/Nasal/Panels/clock.nas index 558cac2c..30985b60 100644 --- a/Nasal/Panels/clock.nas +++ b/Nasal/Panels/clock.nas @@ -1,8 +1,10 @@ # -# Chrono - Clock - ET +# Chrono - Clock - ET # var chr = aircraft.timer.new("instrumentation/chrono[0]/elapsetime-sec",1); var clk = aircraft.timer.new("instrumentation/clock/elapsetime-sec",1); +var chrono_cpt = aircraft.timer.new("instrumentation/ndchrono[0]/elapsetime-sec",1); +var chrono_fo = aircraft.timer.new("instrumentation/ndchrono[1]/elapsetime-sec",1); var chr_min = nil; var chr_sec = nil; @@ -49,6 +51,22 @@ var chrono = { started: props.globals.getNode("/instrumentation/chrono[0]/started"), }; +#Cpt chrono +var cpt_chrono = { + etHh_cpt: props.globals.initNode("/instrumentation/ndchrono[0]/etHh_cpt", 0, "INT"), + etMin_cpt: props.globals.initNode("/instrumentation/ndchrono[0]/etMin_cpt", 0, "INT"), + etSec_cpt: props.globals.initNode("/instrumentation/ndchrono[0]/etSec_cpt", 0, "INT"), + text: props.globals.initNode("/instrumentation/ndchrono[0]/text", "0' 00''", "STRING"), +}; + +#Fo chrono +var fo_chrono = { + etHh_fo: props.globals.initNode("/instrumentation/ndchrono[1]/etHh_fo", 0, "INT"), + etMin_fo: props.globals.initNode("/instrumentation/ndchrono[1]/etMin_fo", 0, "INT"), + etSec_fo: props.globals.initNode("/instrumentation/ndchrono[1]/etSec_fo", 0, "INT"), + text: props.globals.initNode("/instrumentation/ndchrono[1]/text", "0' 00''", "STRING"), +}; + var rudderTrim = { rudderTrimDisplay: props.globals.initNode("/controls/flight/rudder-trim-display", 0, "STRING"), rudderTrimDisplayLetter: props.globals.initNode("/controls/flight/rudder-trim-letter-display", "", "STRING"), @@ -59,6 +77,8 @@ setlistener("sim/signals/fdm-initialized", func { chr.reset(); clk.stop(); clk.reset(); + chrono_cpt.reset(); + chrono_fo.reset(); rudderTrim.rudderTrimDisplay.setValue(sprintf("%2.1f", pts.Fdm.JSBsim.Hydraulics.Rudder.trimDeg.getValue())); start_loop.start(); }); @@ -120,6 +140,31 @@ setlistener("/instrumentation/chrono[0]/chrono-reset", func(et){ }; }, 0, 0); +#Chrono +setlistener("instrumentation/efis[0]/inputs/CHRONO", func(et){ + chrono0 = et.getValue(); + if (chrono0 == 1){ + chrono_cpt.start(); + } elsif (chrono0 == 2) { + chrono_cpt.stop(); + } elsif (chrono0 == 0) { + chrono_cpt.reset(); + setprop("instrumentation/ndchrono[0]/elapsetime-sec", 0); + } +}, 0, 0); + +setlistener("instrumentation/efis[1]/inputs/CHRONO", func(et){ + chrono1 = et.getValue(); + if (chrono1 == 1){ + chrono_fo.start(); + } elsif (chrono1 == 2) { + chrono_fo.stop(); + } elsif (chrono1 == 0) { + chrono_fo.reset(); + setprop("instrumentation/ndchrono[1]/elapsetime-sec", 0); + } +}, 0, 0); + setlistener("instrumentation/clock/et-selector", func(et){ tmp1 = et.getValue(); if (tmp1 == 2){ @@ -225,6 +270,40 @@ var start_loop = maketimer(0.1, func { item.update(nil); } } + + #Cpt Chrono + chr0_tmp = getprop("instrumentation/ndchrono[0]/elapsetime-sec"); + if (chr0_tmp >= 360000) { + setprop("instrumentation/ndchrono[0]/elapsetime-sec", getprop("instrumentation/ndchrono[0]/elapsetime-sec") - 360000); + }; + chr0_hh = int(chr0_tmp * 0.000277777777778); + chr0_min = int((chr0_tmp * 0.0166666666667) - (chr0_hh * 60)); + chr0_sec = int(chr0_tmp - (chr0_min * 60) - (chr0_hh * 3600)); + setprop("instrumentation/ndchrono[0]/etHh_cpt", chr0_hh); + setprop("instrumentation/ndchrono[0]/etMin_cpt", chr0_min); + setprop("instrumentation/ndchrono[0]/etSec_cpt", chr0_sec); + if (chr0_tmp >= 3600) { + setprop("instrumentation/ndchrono[0]/text", sprintf("%02d H %02d'", chr0_hh, chr0_min)); + } else { + setprop("instrumentation/ndchrono[0]/text", sprintf("%02d' %02d''", chr0_min, chr0_sec)); + } + + #Fo Chrono + chr1_tmp = getprop("instrumentation/ndchrono[1]/elapsetime-sec"); + if (chr1_tmp >= 360000) { + setprop("instrumentation/ndchrono[1]/elapsetime-sec", getprop("instrumentation/ndchrono[1]/elapsetime-sec") - 360000); + }; + chr1_hh = int(chr1_tmp * 0.000277777777778); + chr1_min = int(chr1_tmp * 0.0166666666667); + chr1_sec = int(chr1_tmp - (chr1_min * 60) - (chr1_hh * 3600)); + setprop("instrumentation/ndchrono[1]/etHh_fo", chr1_hh); + setprop("instrumentation/ndchrono[1]/etMin_fo", chr1_min); + setprop("instrumentation/ndchrono[1]/etSec_fo", chr1_sec); + if (chr1_tmp >= 3600) { + setprop("instrumentation/ndchrono[1]/text", sprintf("%02d H %02d'", chr1_hh, chr1_min)); + } else { + setprop("instrumentation/ndchrono[1]/text", sprintf("%02d' %02d''", chr1_min, chr1_sec)); + } }); var updateRudderTrim = func() { @@ -255,4 +334,4 @@ var update_items = [ ), ]; -setlistener("/controls/switches/annun-test", updateRudderTrim, 0, 0); \ No newline at end of file +setlistener("/controls/switches/annun-test", updateRudderTrim, 0, 0);