@@ -44,7 +44,8 @@ def __init__(self,
44
44
self ._luos_revision = "Unknown"
45
45
self ._robus_revision = "Unknown"
46
46
self ._killed = False
47
- self ._last_update = []
47
+ self ._last_update = [time .time ()]
48
+ self ._tracked_property = ""
48
49
self ._luos_statistics = {}
49
50
50
51
def __repr__ (self ):
@@ -56,13 +57,21 @@ def _update(self, new_state):
56
57
if not isinstance (new_state , dict ):
57
58
new_state = {new_state : "" }
58
59
59
- self ._last_update .append (time .time ())
60
- if (len (self ._last_update ) > 1 ):
61
- self .max_refresh_time = max (self .max_refresh_time , self ._last_update [- 1 ] - self ._last_update [- 2 ])
62
- if (self ._last_update [0 ] < time .time () - 1.0 ):
63
- while (self ._last_update [0 ] < time .time () - 10.0 ):
64
- self ._last_update .pop (0 )
65
- self .refresh_freq = (len (self ._last_update ) / 10.0 ) * 0.05 + 0.95 * self .refresh_freq
60
+ # Check if we alredy have a property to track or if we didn't receive any property since 2 seconds
61
+ if (self ._tracked_property == "" ) or (self ._last_update [- 1 ] < time .time () - 2.0 ):
62
+ # the property we track is void or not available anymore, we have to get one of the property received.
63
+ for key in new_state .keys ():
64
+ self ._tracked_property = key
65
+ self ._last_update .append (time .time ())
66
+ break
67
+ elif (self ._tracked_property in new_state .keys ()):
68
+ self ._last_update .append (time .time ())
69
+ if (len (self ._last_update ) > 1 ):
70
+ self .max_refresh_time = max (self .max_refresh_time , self ._last_update [- 1 ] - self ._last_update [- 2 ])
71
+ if (self ._last_update [0 ] < time .time () - 1.0 ):
72
+ while (self ._last_update [0 ] < time .time () - 10.0 ):
73
+ self ._last_update .pop (0 )
74
+ self .refresh_freq = (len (self ._last_update ) / 10.0 ) * 0.05 + 0.95 * self .refresh_freq
66
75
67
76
if 'revision' in new_state .keys ():
68
77
self ._firmware_revision = new_state ['revision' ]
0 commit comments