123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- var m877 = {
- new : func(prop1){
- var m = { parents : [m877]};
- m.MODE =0;
- m.flip =0;
- m.digit_to_set=0;
- m.digit=[];
- m.set_mode=0;
- m.ctl_timer=0;
- m.et_start_time=0;
- m.et_countdown=0;
- m.et_running=0;
- m.et_elapsed=0;
- m.ft_start_time=0;
- m.ft_running=0;
- m.modetext =["GMT","LT","FT","ET"];
- m.M877 = props.globals.initNode(prop1);
- m.fmeter_sec=m.M877.initNode("flight-meter-sec",0,"DOUBLE");
- m.fmeter=aircraft.timer.new(m.fmeter_sec,1,1);
- m.tenths=m.M877.initNode("tenths",0,"BOOL");
- m.ET_alarm=m.M877.initNode("et-alarm",0,"BOOL");
- m.FT_alarm=m.M877.initNode("ft-alert",0,"BOOL");
- m.FT_alarm_time=m.M877.initNode("ft-alarm-time",0,"BOOL");
- append(m.digit,m.M877.initNode("digit[0]",1,"BOOL"));
- append(m.digit,m.M877.initNode("digit[1]",1,"BOOL"));
- append(m.digit,m.M877.initNode("digit[2]",1,"BOOL"));
- append(m.digit,m.M877.initNode("digit[3]",1,"BOOL"));
- m.modestring=m.M877.initNode("mode-string",m.modetext[m.MODE],"STRING");
- m.power=m.M877.initNode("power",1,"BOOL");
- m.HR=m.M877.initNode("indicated-hour",0,"INT");
- m.MN=m.M877.initNode("indicated-min",0,"INT");
- m.ET_HR=m.M877.initNode("ET-hr",0,"INT");
- m.ET_MN=m.M877.initNode("ET-min",0,"INT");
- m.FT_HR=m.M877.initNode("FT-hr",0,"INT");
- m.FT_MN=m.M877.initNode("FT-min",0,"INT");
- return m;
- },
- #### flightmeter ####
- fmeter_control : func(){
- var ias =getprop("velocities/airspeed-kt");
- if(ias>30){
- if(me.ft_running==0){
- me.ft_running=1;
- me.fmeter.start();
- }
- }elsif(ias<30){
- if(me.ft_running==1){
- me.ft_running=0;
- me.fmeter.stop();
- }
- }
- },
- #### displayed mode ####
- select_display : func(){
- if(me.set_mode==0){
- me.MODE +=1;
- if(me.MODE>3)me.MODE -=4;
- me.modestring.setValue(me.modetext[me.MODE]);
- }else{
- me.digit[me.digit_to_set].setValue(1);
- me.digit_to_set+=1;
- if(me.digit_to_set>3){
- me.digit_to_set=0;
- me.set_mode=0;
- }
- }
- },
- #### set displayed mode ####
- set_time : func(){
- me.set_mode=1-me.set_mode;
- },
- #### CTL button action ####
- control_action : func(tmr){
- if(me.set_mode==0){
- if(me.MODE==2){
- me.ctl_timer+=getprop("/sim/time/delta-realtime-sec");
- me.ctl_timer *=tmr;
- if(me.ctl_timer>1.5)me.fmeter.reset();
- }elsif(me.MODE==3){
- if(me.et_running==0){
- me.et_start_time=getprop("/sim/time/elapsed-sec");
- me.et_running=1;
- }else{
- me.et_start_time=getprop("/sim/time/elapsed-sec");
- me.et_elapsed=0;
- me.et_running=0;
- }
- }
- }else{
- if(me.MODE==0){
- me.set_gmt();
- }elsif(meMODE==1){
- me.set_lt();
- }elsif(meMODE==2){
- me.set_ft();
- }elsif(meMODE==3){
- me.set_et();
- }
- }
- },
- #### set GMT ####
- set_gmt : func(){
-
- },
- #### set LT ####
- set_lt : func(){
-
- },
- #### set FT ####
- set_ft : func(){
-
- },
- #### set ET ####
- set_et : func(){
-
- },
- #### elapsed time ####
- update_ET : func(){
- if(me.et_running!=0){
- me.et_elapsed=getprop("/sim/time/elapsed-sec") - me.et_start_time;
- }
- var ethour = me.et_elapsed/3600;
- var hr= int(ethour);
- var etmin=(ethour-hr) * 60;
- var min = int(etmin);
- var etsec= (etmin- min) *60;
- if(ethour <1){
- me.ET_HR.setValue(min);
- me.ET_MN.setValue(etsec);
- }else{
- me.ET_HR.setValue(hr);
- me.ET_MN.setValue(min);
- }
- },
- #### flight time ####
- update_FT : func(){
- var fthour = me.fmeter_sec.getValue()/3600;
- var hr= int(fthour);
- var ftmin=(fthour-hr) * 60;
- var min = int(ftmin);
- var ftsec= (ftmin- min) *60;
- if(fthour <1){
- me.FT_HR.setValue(min);
- me.FT_MN.setValue(ftsec);
- }else{
- me.FT_HR.setValue(hr);
- me.FT_MN.setValue(min);
- }
- },
- #### update clock ####
- update_clock : func{
- var pwr=me.power.getValue();
- me.fmeter_control();
- if(me.set_mode==0){
- pwr=1-pwr;
- }else{
- pwr=1;
- }
- me.power.setValue(pwr);
-
- if(me.flip==0){
- me.update_ET();
- }else{
- me.update_FT();
- }
- if(me.MODE ==0){
- me.HR.setValue(getprop("/instrumentation/clock/indicated-hour"));
- me.MN.setValue(getprop("/instrumentation/clock/indicated-min"));
- }elsif(me.MODE == 1) {
- me.HR.setValue(getprop("/instrumentation/clock/local-hour"));
- me.MN.setValue(getprop("/instrumentation/clock/indicated-min"));
- }elsif(me.MODE == 2) {
- me.HR.setValue(me.FT_HR.getValue());
- me.MN.setValue(me.FT_MN.getValue());
- }elsif(me.MODE == 3) {
- me.HR.setValue(me.ET_HR.getValue());
- me.MN.setValue(me.ET_MN.getValue());
- }
- if(me.set_mode==1){
- var flsh=me.digit[me.digit_to_set].getValue();
- flsh=1-flsh;
- me.digit[me.digit_to_set].setValue(flsh);
- }else{
- me.digit[me.digit_to_set].setValue(1);
- }
- me.flip=1-me.flip;
- },
- };
- #####################################
- var davtron=m877.new("instrumentation/clock/m877");
- setlistener("/sim/signals/fdm-initialized", func {
- settimer(update,2);
- print("Chronometer ... Check");
- });
- var update = func{
- davtron.update_clock();
- settimer(update,0.5);
- }
|