# Chronograph ############# # One button elapsed counter var chrono_onoff = props.globals.getNode("instrumentation/clock/chronometer-on",1); var reset_state = props.globals.getNode("instrumentation/clock/reset-state",1); var elapsed_sec = props.globals.getNode("instrumentation/clock/elapsed-sec", 1); var indicated_sec = props.globals.getNode("instrumentation/clock/indicated-sec"); aircraft.data.add("/instrumentation/clock/offset-sec"); chrono_onoff.setBoolValue( 0 ); reset_state.setBoolValue( 1 ); elapsed_sec.setValue( 0 ); var offset = 0; var click = func { var on = chrono_onoff.getBoolValue(); var reset = reset_state.getBoolValue(); if ( ! on ) { if ( ! reset ) { # Had been former started and stoped, now, has to be reset. offset = 0; elapsed_sec.setValue( 0 ); reset_state.setBoolValue( 1 ); } else { # Is not started but allready reset, start it. chrono_onoff.setBoolValue( 1 ); reset_state.setBoolValue( 0 ); offset = indicated_sec.getValue(); } } else { # Stop it. chrono_onoff.setBoolValue( 0 ); reset_state.setBoolValue( 0 ); } } var update_chrono = func { var on = chrono_onoff.getBoolValue(); if ( on ) { var i_sec = indicated_sec.getValue(); var e_sec = i_sec - offset; elapsed_sec.setValue( e_sec ); } } # Comment the following if update_chrono() is launched from a # centralized loop in order to save some CPU cycles. var chrono_loop = func { update_chrono(); settimer(chrono_loop, 0.1); } settimer(chrono_loop, 0.5);