1
0
Fork 0
A320-family/Nasal/Panels/clock.nas
2023-01-13 23:55:34 +01:00

720 lines
27 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Chrono - Clock - ET clock
var cpt_timer = aircraft.timer.new("/instrumentation/ndchrono[0]/elapsetime-sec",1,0);
var fo_timer = aircraft.timer.new("/instrumentation/ndchrono[1]/elapsetime-sec",1,0);
var clock_timer = aircraft.timer.new("/instrumentation/clock/et/elapsetime-sec",1,0);
var clock_int_et = aircraft.timer.new("/instrumentation/clock/internal/elapsetime-sec",1,0);
var chrono_timer = aircraft.timer.new("/instrumentation/clock/chrono/elapsetime-sec",1,0);
var chr_min = nil;
var chr_sec = nil;
var chr_tmp = nil;
var et_hr = nil;
var et_min = nil;
var et_tmp = nil;
var rudder_val = nil;
var tmp = nil;
var tmp1 = nil;
var condition = nil;
var clock_et = {
sec: props.globals.initNode("/instrumentation/clock/et/indicated-sec", 0, "STRING"),
hrs: props.globals.initNode("/instrumentation/clock/et/indicated-hours", 0, "STRING"),
min: props.globals.initNode("/instrumentation/clock/et/indicated-min", 0, "STRING"),
elapsedString: props.globals.initNode("/instrumentation/clock/et/elapsed-string", "", "STRING"),
et: props.globals.getNode("/instrumentation/clock/et/elapsetime-sec"),
et_selector: props.globals.initNode("/instrumentation/clock/et/et-selector", 1, "INT"),
visible: props.globals.initNode("/instrumentation/clock/et/visible", 0, "BOOL"),
};
var clock = {
hhMM: props.globals.initNode("/instrumentation/clock/indicated-short-string", "", "STRING"),
indicated_hh: props.globals.initNode("/instrumentation/clock/indicated-hours", "", "STRING"),
indicated_mm: props.globals.initNode("/instrumentation/clock/indicated-minutes", "", "STRING"),
indicated_sec: props.globals.initNode("/instrumentation/clock/indicated-seconds", "", "STRING"),
utcDate: [props.globals.initNode("/instrumentation/clock/date", "", "STRING"), props.globals.initNode("/instrumentation/clock/date-month", "", "STRING"),
props.globals.initNode("/instrumentation/clock/date-day", "", "STRING"), props.globals.initNode("/instrumentation/clock/date-year", "", "STRING")],
mode_selector: props.globals.initNode("/instrumentation/clock/utc-selector", 0,"INT"),
set_knob: props.globals.initNode("/instrumentation/clock/set-knob", 0,"INT"),
set_knb_pos: props.globals.initNode("/instrumentation/clock/set-knb-pos", 0,"INT"),
set_knb_count: props.globals.initNode("/instrumentation/clock/set-knb-count", 0,"INT"),
};
var clock_internal = {
mode: props.globals.initNode("/instrumentation/clock/internal/mode", 0,"INT"),
et: props.globals.initNode("/instrumentation/clock/internal/elapsetime-sec", 0, "DOUBLE"),
hrs: props.globals.initNode("/instrumentation/clock/internal/hr", 0, "INT"),
min: props.globals.initNode("/instrumentation/clock/internal/min", 0, "INT"),
sec: props.globals.initNode("/instrumentation/clock/internal/sec", 0, "INT"),
hhMM: props.globals.initNode("/instrumentation/clock/internal/indicated-short-string", "", "STRING"),
bisextile_year: props.globals.initNode("/instrumentation/clock/internal/bisextile-year", 0, "BOOL"),
date: [props.globals.initNode("/instrumentation/clock/internal/date", "", "STRING"), props.globals.initNode("/instrumentation/clock/internal/date-year", "", "STRING"),
props.globals.initNode("/instrumentation/clock/internal/date-month", "", "STRING"), props.globals.initNode("/instrumentation/clock/internal/date-day", "", "STRING")],
year: props.globals.initNode("/instrumentation/clock/internal/year", 0, "INT"),
month: props.globals.initNode("/instrumentation/clock/internal/month", 0, "INT"),
day: props.globals.initNode("/instrumentation/clock/internal/day", 0, "INT"),
set_cont: props.globals.initNode("/instrumentation/clock/internal/set-cont", 0,"INT"),
elapsedString: props.globals.initNode("/instrumentation/clock/internal/elapsed-string", "", "STRING"),
indicated_hh: props.globals.initNode("/instrumentation/clock/internal/indicated-hours", 0, "STRING"),
indicated_mm: props.globals.initNode("/instrumentation/clock/internal/indicated-minutes", 0, "STRING"),
indicated_sec: props.globals.initNode("/instrumentation/clock/internal/indicated-seconds", 0, "STRING"),
blink_hh: props.globals.initNode("/instrumentation/clock/internal/blink-hh", 0, "BOOL"),
blink_mm: props.globals.initNode("/instrumentation/clock/internal/blink-mm", 0, "BOOL"),
blink_day: props.globals.initNode("/instrumentation/clock/internal/blink-day", 0, "BOOL"),
blink_month: props.globals.initNode("/instrumentation/clock/internal/blink-month", 0, "BOOL"),
blink_year: props.globals.initNode("/instrumentation/clock/internal/blink-year", 0, "BOOL"),
};
var chrono = {
reset: props.globals.initNode("/instrumentation/clock/chrono/chrono-reset", 1, "INT"),
reset_btn: props.globals.initNode("/instrumentation/clock/chrono/chrono-reset-btn", 0, "INT"),
btn: props.globals.initNode("/instrumentation/clock/chrono/chrono-btn", 0, "INT"),
et: props.globals.initNode("/instrumentation/clock/chrono/elapsetime-sec", 0, "INT"),
etMin: props.globals.initNode("/instrumentation/clock/chrono/chr-et-min", 0, "STRING"),
etSec: props.globals.initNode("/instrumentation/clock/chrono/chr-et-sec", 0, "STRING"),
etString: props.globals.initNode("/instrumentation/clock/chrono/chr-et-string", "", "STRING"),
paused: props.globals.initNode("/instrumentation/clock/chrono/paused", 0, "BOOL"),
started: props.globals.initNode("/instrumentation/clock/chrono/started", 0,"BOOL"),
};
#Cpt chrono
var cpttimer = {
et: props.globals.initNode("/instrumentation/ndchrono[0]/elapsetime-sec", 0, "INT"),
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", "", "STRING"),
};
#Fo chrono
var fotimer = {
et: props.globals.initNode("/instrumentation/ndchrono[1]/elapsetime-sec", 0, "INT"),
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", "", "STRING"),
};
#Rudder Trim Indicator
var rudderTrim = {
rudderTrimDisplay: props.globals.initNode("/controls/flight/rudder-trim-display", "", "STRING"),
rudderTrimDisplayLetter: props.globals.initNode("/controls/flight/rudder-trim-letter-display", "", "STRING"),
};
setlistener("/sim/signals/fdm-initialized", func {
chrono_timer.reset();
clock_timer.reset();
clock_int_et.reset();
cpt_timer.reset();
fo_timer.reset();
rudderTrim.rudderTrimDisplay.setValue(sprintf("%2.1f", pts.Fdm.JSBsim.Hydraulics.Rudder.trimDeg.getValue()));
loop.start();
});
#Chrono
setlistener("/instrumentation/clock/chrono/chrono-btn", func {
if (chrono.btn.getValue() == 1) {
chrono.reset.setBoolValue(0);
if (chrono.started.getBoolValue()) {
#chrono started
if (chrono.paused.getBoolValue()) {
#chrono paused
chrono_timer.start();
chrono.paused.setBoolValue(0);
} else {
#chrono running
chrono_timer.stop();
chrono.paused.setBoolValue(1);
}
} else {
#chrono not started
chrono_timer.start();
chrono.paused.setBoolValue(0);
chrono.started.setBoolValue(1);
}
}
}, 0, 0);
setlistener("/instrumentation/clock/chrono/chrono-reset-btn", func {
if (chrono.reset.getValue() == 1) {
if (chrono.started.getBoolValue()) {
#chrono started
if (chrono.paused.getBoolValue()) {
#chrono paused
chrono_timer.stop();
chrono_timer.reset();
chrono.started.setBoolValue(0);
chrono.paused.setBoolValue(0);
} else {
#chrono running
chrono.et.setValue(0);
};
} else {
#chrono not started
chrono_timer.stop();
chrono_timer.reset();
chrono.started.setBoolValue(0);
chrono.paused.setBoolValue(0);
chrono.reset.setBoolValue(1);
}
} else {
if (chrono.started.getBoolValue()) {
#chrono started
if (chrono.paused.getBoolValue()) {
#chrono paused
chrono_timer.stop();
chrono_timer.reset();
chrono.started.setBoolValue(0);
chrono.paused.setBoolValue(0);
} else {
#chrono running
chrono.et.setValue(0);
};
} else {
#chrono not started
chrono_timer.stop();
chrono_timer.reset();
chrono.started.setBoolValue(0);
chrono.paused.setBoolValue(0);
chrono.reset.setBoolValue(1);
}
}
}, 0, 0);
#ND Chrono - CPT
setlistener("/instrumentation/efis[0]/inputs/CHRONO", func {
chrono0 = props.globals.getValue("/instrumentation/efis[0]/inputs/CHRONO");
if (chrono0 == 1){
cpt_timer.start();
} elsif (chrono0 == 2) {
cpt_timer.stop();
} elsif (chrono0 == 0) {
cpt_timer.reset();
}
}, 0, 0);
#ND Chrono - FO
setlistener("/instrumentation/efis[1]/inputs/CHRONO", func {
chrono1 = props.globals.getValue("/instrumentation/efis[1]/inputs/CHRONO");
if (chrono1 == 1){
fo_timer.start();
} elsif (chrono1 == 2) {
fo_timer.stop();
} elsif (chrono1 == 0) {
fo_timer.reset();
}
}, 0, 0);
#ET Clock
setlistener("/instrumentation/clock/et/et-selector", func {
tmp1 = clock_et.et_selector.getValue();
if (tmp1 == 2){
clock_timer.reset();
clock_et.visible.setValue(0);
attivo=0
} elsif (tmp1 == 1){
clock_timer.stop();
} elsif (tmp1 == 0){
clock_timer.start();
clock_et.visible.setValue(1);
}
}, 0, 0);
#Clock
setlistener("/instrumentation/clock/utc-selector", func {
if (clock.mode_selector.getValue() != 2) {
clock_internal.set_cont.setValue(1);
clock.set_knb_count.setValue(0);
}
if (clock.mode_selector.getValue() == 0){
#GPS Clock
clock_internal.mode.setValue(0);
clock_int_et.reset();
clock_int_et.stop();
}
if (clock.mode_selector.getValue() == 2) {
# INT Clock - SET Mode
clock_internal.mode.setValue(1);
}
if (clock.mode_selector.getValue() == 1) {
# INT Clock - INT mode");
clock_int_et.reset();
if (clock_internal.mode.getValue() == 0) {
#Start INT Clock from GPS mode
clock_internal.year.setValue(props.globals.getValue("sim/time/utc/year"));
clock_internal.month.setValue(props.globals.getValue("sim/time/utc/month"));
clock_internal.day.setValue(props.globals.getValue("sim/time/utc/day"));
clock_internal.hrs.setValue(props.globals.getValue("sim/time/utc/hour"));
clock_internal.min.setValue(props.globals.getValue("sim/time/utc/minute"));
clock_internal.sec.setValue(props.globals.getValue("sim/time/utc/second"));
clock_internal.et.setValue(props.globals.getValue("sim/time/utc/day-seconds"));
} else {
#Start INT Clock from SET mode
clock_internal.et.setValue((clock_internal.hrs.getValue() * 3600) + (clock_internal.min.getValue() * 60));
}
clock_int_et.start();
}
}, 0, 0);
setlistener("/instrumentation/clock/set-knob", func {
if (clock.set_knob.getValue() == 1) {
if (clock.mode_selector.getValue() == 2) {
#Clock SET mode
#set custom UTC time
if (clock_internal.set_cont.getValue() == 0) {
clock_internal.set_cont.setValue(1);
}
if (clock_internal.set_cont.getValue() < 5) {
clock_internal.set_cont.setValue(clock_internal.set_cont.getValue() + 1);
} else {
clock_internal.set_cont.setValue(clock_internal.set_cont.getValue() - 4);
}
}
if (clock_internal.set_cont.getValue() == 1) {
#clock set minutes
clock.set_knb_count.setValue(0);
} elsif (clock_internal.set_cont.getValue() == 2) {
#clock set hours
clock.set_knb_count.setValue(0);
} elsif (clock_internal.set_cont.getValue() == 3) {
#clock set year
clock.set_knb_count.setValue(0);
} elsif (clock_internal.set_cont.getValue() == 4) {
#clock set month
clock.set_knb_count.setValue(0);
} elsif (clock_internal.set_cont.getValue() == 5) {
#clock set day
clock.set_knb_count.setValue(0);
} else {
print('clock custom date/time setting error')
}
}
}, 0, 0);
var loop = maketimer(0.1, func (){
if (systems.ELEC.Bus.dcEss.getValue() < 25) { return; }
if (pts.Controls.Switches.annunTest.getBoolValue()) {
# Annun-test
#date
clock.utcDate[0].setValue(sprintf("%02d %02d %02d", "88", "88", "88"));
#month
clock.utcDate[1].setValue(sprintf("%02d", "88"));
#day
clock.utcDate[2].setValue(sprintf("%02d", "88"));
#year
clock.utcDate[3].setValue(sprintf("%02d", "88"));
#Clock
clock.indicated_hh.setValue(sprintf("%02d", "88"));
clock.indicated_mm.setValue(sprintf("%02d", "88"));
#clock.hhMM.setValue("88:88");
clock.indicated_sec.setValue(sprintf("%02d", "88"));
#Chrono
chrono.etString.setValue("88:88");
#ET Clock
clock_et.elapsedString.setValue("88:88");
} else {
#Normal mode (Annun-test off)
#Date
clock.utcDate[0].setValue(sprintf("%02d %02d %02d", pts.Sim.Time.Utc.month.getValue(), pts.Sim.Time.Utc.day.getValue(), substr(sprintf("%2d", pts.Sim.Time.Utc.year.getValue()),2,2)));
clock.utcDate[1].setValue(sprintf("%02d", pts.Sim.Time.Utc.month.getValue()));
clock.utcDate[2].setValue(sprintf("%02d", pts.Sim.Time.Utc.day.getValue()));
clock.utcDate[3].setValue(substr(sprintf("%02d", pts.Sim.Time.Utc.year.getValue()),2,2));
#Clock
clock.indicated_hh.setValue(sprintf("%02d", substr(pts.Instrumentation.Clock.indicatedString.getValue(),0,2)));
clock.indicated_mm.setValue(sprintf("%02d", substr(pts.Instrumentation.Clock.indicatedString.getValue(),3,2)));
clock.indicated_sec.setValue(sprintf("%02d", substr(pts.Instrumentation.Clock.indicatedString.getValue(),6,2)));
# #Clock Internal
if (math.fmod(clock_internal.year.getValue(), 4) == 0 or math.fmod(clock_internal.year.getValue(), 400) == 0) {
clock_internal.bisextile_year.setValue(1);
} else {
clock_internal.bisextile_year.setValue(0);
}
clock_internal_tmp = clock_internal.et.getValue();
if (clock_internal_tmp >= 86400) {
clock_internal.et.setValue(clock_internal_tmp - 86400);
#Aggiungi un giorno
if (clock_internal.month.getValue() == 12) {
if (clock_internal.day.getValue() == 31) {
#Aggiungi Anno
clock_internal.year.setValue(clock_internal.year.getValue() + 1);
clock_internal.month.setValue(1);
clock_internal.day.setValue(1);
} else {
clock_internal.day.setValue(clock_internal.day.getValue() + 1);
}
} else {
if ((clock_internal.month.getValue() == 4) or (clock_internal.month.getValue() == 6) or (clock_internal.month.getValue() == 9) or (clock_internal.month.getValue() == 11)) {
if (clock_internal.day.getValue() == 30) {
clock_internal.month.setValue(clock_internal.month.getValue() + 1);
clock_internal.day.setValue(1);
} else {
clock_internal.day.setValue(clock_internal.day.getValue() + 1);
}
} else {
if (clock_internal.month.getValue() == 2) {
if (math.fmod(clock_internal.year.getValue(), 4) == 0 or math.fmod(clock_internal.year.getValue(), 400) == 0) {
if (clock_internal.day.getValue() == 29) {
clock_internal.day.setValue(1);
clock_internal.month.setValue(3);
} else {
if (clock_internal.day.getValue() == 28) {
clock_internal.day.setValue(1);
clock_internal.month.setValue(3);
}
clock_internal.day.setValue(clock_internal.day.getValue() + 1);
}
} else {
clock_internal.day.setValue(clock_internal.day.getValue() + 1);
}
} else {
if (clock_internal.day.getValue() == 31) {
clock_internal.month.setValue(clock_internal.month.getValue() + 1);
clock_internal.day.setValue(1);
} else {
clock_internal.day.setValue(clock_internal.day.getValue() + 1);
}
}
}
}
} else {
if (clock.mode_selector.getValue() == 1){
clock_internal.hrs.setValue(int(clock_internal.et.getValue() * 0.000277777777778));
clock_internal.min.setValue((clock_internal.et.getValue() - (clock_internal.hrs.getValue() * 3600)) * 0.0166666666667 );
clock_internal.sec.setValue(clock_internal.et.getValue() - ((clock_internal.hrs.getValue() * 3600) + (clock_internal.min.getValue() * 60)));
} elsif (clock.mode_selector.getValue() == 2) {
#nothing to do
}
}
#Clock internal SET Mode
clock_internal.hhMM.setValue(sprintf("%02d", clock_internal.hrs.getValue()) ~ ":" ~ sprintf("%02d", clock_internal.min.getValue()));
clock_internal.indicated_hh.setValue(sprintf("%02d", clock_internal.hrs.getValue()));
clock_internal.indicated_mm.setValue(sprintf("%02d", clock_internal.min.getValue()));
clock_internal.indicated_sec.setValue(sprintf("%02d", clock_internal.sec.getValue()));
clock_internal.date[0].setValue(sprintf("%02d", clock_internal.month.getValue()) ~ " " ~ sprintf("%02d",clock_internal.day.getValue()) ~ " " ~ substr(sprintf("%02d",clock_internal.year.getValue()),2,2));
clock_internal.date[1].setValue(substr(sprintf("%02d",clock_internal.year.getValue()),2,2));
clock_internal.date[2].setValue(sprintf("%02d",clock_internal.month.getValue()));
clock_internal.date[3].setValue(sprintf("%02d",clock_internal.day.getValue()));
condition = (getprop("/sim/time/elapsed-sec") - math.floor(getprop("/sim/time/elapsed-sec"))) < 0.5;
if (clock.set_knob.getValue() == 0) {
if (clock.mode_selector.getValue() == 0) {
#show Time
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} elsif (clock.mode_selector.getValue() == 1) {
#show Time
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
if (clock_internal.set_cont.getValue() == 1) {
#clock internal SET minutes
if (condition) {
clock_internal.hhMM.setValue(sprintf("%02d", clock_internal.hrs.getValue()) ~ ":" ~ sprintf("%02d", clock_internal.min.getValue()));
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.hhMM.setValue(sprintf("%02d", clock_internal.hrs.getValue()) ~ ":" ~ " ");
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(0);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
}
} elsif (clock_internal.set_cont.getValue() == 2) {
#clock internal SET hours
if (condition) {
clock_internal.hhMM.setValue(sprintf("%02d", clock_internal.hrs.getValue()) ~ ":" ~ sprintf("%02d", clock_internal.min.getValue()));
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.hhMM.setValue(" " ~ ":" ~ sprintf("%02d", clock_internal.min.getValue()));
clock_internal.blink_hh.setValue(0);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
}
} elsif (clock_internal.set_cont.getValue() == 3) {
#clock internal SET year
if (condition) {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(0);
}
} elsif (clock_internal.set_cont.getValue() == 4) {
#clock internal SET month
if (condition) {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(0);
clock_internal.blink_year.setValue(1);
}
} elsif (clock_internal.set_cont.getValue() == 5) {
#clock internal SET day
if (condition) {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(0);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
}
}
}
} else {
if (clock.mode_selector.getValue() == 0) {
#show Date
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} elsif (clock.mode_selector.getValue() == 1) {
#show Date
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
if (clock_internal.set_cont.getValue() == 1) {
#clock internal SET minutes
if (condition) {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(0);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
}
} elsif (clock_internal.set_cont.getValue() == 2) {
#clock internal SET hours
if (condition) {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.blink_hh.setValue(0);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
}
} elsif (clock_internal.set_cont.getValue() == 3) {
#clock internal SET year
if (condition) {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(0);
}
} elsif (clock_internal.set_cont.getValue() == 4) {
#clock internal SET month
if (condition) {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(0);
clock_internal.blink_year.setValue(1);
}
} elsif (clock_internal.set_cont.getValue() == 5) {
#clock internal SET day
if (condition) {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(1);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
} else {
clock_internal.blink_hh.setValue(1);
clock_internal.blink_mm.setValue(1);
clock_internal.blink_day.setValue(0);
clock_internal.blink_month.setValue(1);
clock_internal.blink_year.setValue(1);
}
}
}
}
if (clock.set_knob.getValue() == "") {
clock.set_knob.setValue(0);
}
#Chrono
chr_tmp = chrono.et.getValue();
if (chr_tmp >= 6000) {
chrono.et.setValue(chr_tmp - 6000);
}
chr_min = int(chr_tmp * 0.0166666666667);
if (chr_tmp >= 60) {
chr_sec = int(chr_tmp - (chr_min * 60));
} else {
chr_sec = int(chr_tmp);
}
chrono.etMin.setValue(sprintf("%02d", chr_min));
chrono.etSec.setValue(sprintf("%02d", chr_sec));
if (chrono.paused.getBoolValue()) {
chrono.etString.setValue(sprintf("%02d %02d", chr_min, chr_sec));
} else {
chrono.etString.setValue(sprintf("%02d:%02d", chr_min, chr_sec));
}
#ET clock
et_tmp = clock_et.et.getValue();
if (et_tmp >= 360000) {
clock_et.et.setValue(et_tmp - 360000);
}
et_min = int(et_tmp * 0.0166666666667);
et_hr = int(et_min * 0.0166666666667);
et_min = et_min - (et_hr * 60);
clock_et.hrs.setValue(sprintf("%02d", et_hr));
clock_et.min.setValue(sprintf("%02d",et_min));
if (clock_et.et_selector.getValue()==1) {
if (clock_et.et.getValue()==0) {
clock_et.elapsedString.setValue("");
} else {
clock_et.elapsedString.setValue(sprintf("%02d %02d", et_hr, et_min));
}
} else {
clock_et.elapsedString.setValue(sprintf("%02d:%02d", et_hr, et_min));
}
#Rudder Trim update loop
foreach (item; update_items) {
item.update(nil);
}
}
#Cpt Chrono
chr0_tmp = cpttimer.et.getValue();
if (chr0_tmp >= 360000) {
cpttimer.et.setValue(chr0_tmp - 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));
cpttimer.etHh_cpt.setValue(chr0_hh);
cpttimer.etMin_cpt.setValue(chr0_min);
cpttimer.etSec_cpt.setValue(chr0_sec);
if (chr0_tmp >= 3600) {
cpttimer.text.setValue(sprintf("%2d H %2d'", chr0_hh, chr0_min));
} else {
cpttimer.text.setValue(sprintf("%2d' %2d''", chr0_min, chr0_sec));
}
#Fo Chrono
chr1_tmp = fotimer.et.getValue();
if (chr1_tmp >= 360000) {
fotimer.et.setValue(chr1_tmp - 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));
fotimer.etHh_fo.setValue(chr1_hh);
fotimer.etMin_fo.setValue(chr1_min);
fotimer.etSec_fo.setValue(chr1_sec);
if (chr1_tmp >= 3600) {
fotimer.text.setValue(sprintf("%2d H %2d'", chr1_hh, chr1_min));
} else {
fotimer.text.setValue(sprintf("%2d' %2d''", chr1_min, chr1_sec));
}
});
var updateRudderTrim = func() {
if (pts.Controls.Switches.annunTest.getBoolValue()) {
rudderTrim.rudderTrimDisplay.setValue(sprintf("%2.1f", "88.8"));
rudderTrim.rudderTrimDisplayLetter.setValue(sprintf("%1.0f", "8"));
} else {
rudder_val = pts.Fdm.JSBsim.Hydraulics.Rudder.trimDeg.getValue();
if (rudder_val > -0.05 and rudder_val < 0.05) {
rudderTrim.rudderTrimDisplay.setValue(sprintf("%2.1f", abs(rudder_val)));
rudderTrim.rudderTrimDisplayLetter.setValue("");
} else {
rudderTrim.rudderTrimDisplay.setValue(sprintf("%2.1f", abs(rudder_val)));
if (rudder_val >= 0.05) {
rudderTrim.rudderTrimDisplayLetter.setValue("R");
} elsif (rudder_val <= -0.05) {
rudderTrim.rudderTrimDisplayLetter.setValue("L");
}
}
}
}
var update_items = [
props.UpdateManager.FromProperty("/fdm/jsbsim/hydraulics/rudder/trim-deg", 0.05, func(notification)
{
updateRudderTrim();
}
),
];
setlistener("/controls/switches/annun-test", updateRudderTrim, 0, 0);