1 GetPropertyPath = func(node) {
2 if( node.getParent() != nil ) {
3 return GetPropertyPath( node.getParent() ) ~ "/" ~ node.getName();
10 propertyListener = func(node) {
11 var timer = listenerHash[ GetPropertyPath( node ) ];
17 var timeNode = props.globals.getNode( "/sim/time/elapsed-sec" );
23 obj.parents = [Timer];
24 obj.timerNode = arg[0];
25 obj.name = obj.timerNode.getNode( "name" ).getValue();
26 obj.enableNode = obj.getProperty( "enable-property" );
27 obj.startNode = obj.getProperty( "start-property" );
28 obj.outputNode = obj.getProperty( "output-property" );
29 if( obj.outputNode != nil )
30 obj.outputNode.setBoolValue( 0 );
31 obj.t0Node = obj.timerNode.getNode( "t0" );
34 setlistener( obj.startNode, propertyListener );
36 var s = GetPropertyPath( obj.startNode );
37 listenerHash[s] = obj;
42 Timer.getProperty = func(prop) {
43 var node = me.timerNode.getNode( prop );
47 return props.globals.getNode( node.getValue() );
50 Timer.listener = func {
51 if( ! me.outputNode.getBoolValue() and me.startNode.getBoolValue() ) {
52 me.outputNode.setBoolValue( 1 );
53 me.expires = timeNode.getValue() + me.t0Node.getValue();
54 settimer( expireTimers, me.t0Node.getValue() );
59 if( me.outputNode.getBoolValue() and me.expires <= timeNode.getValue() ) {
60 me.outputNode.setBoolValue( 0 );
66 createTimer = func(timer) {
67 var t = Timer.new( timer );
71 var expireTimers = func {
72 foreach( var timer; timers ) {
77 # read the property-tree
78 var timersNode = props.globals.getNode( "/sim/timers");
79 var timerNodes = timersNode.getChildren( "timer" );
80 foreach( var timer; timerNodes ) {