27 lines
896 B
Python
27 lines
896 B
Python
|
|||
|
|
|
||
|
|
class Timer:
|
||
|
|
def __init__(self, interval_s):
|
||
|
|
self._interval_s = interval_s
|
||
|
|
self._last_time = 0
|
||
|
|
self._last_utc = (0,0,0)
|
||
|
|
|
||
|
|
def set_interval(self, new_interval_s):
|
||
|
|
self._interval_s = new_interval_s
|
||
|
|
|
||
|
|
def check_timer(self, utc):
|
||
|
|
ns = utc[3] * 0.000000001
|
||
|
|
timestamp = utc[0] * 3600 + utc[1] * 60 + utc[2] + ns
|
||
|
|
shifted_timestamp = timestamp
|
||
|
|
if self._last_utc[0] == 23 and utc[0] == 0:
|
||
|
|
shifted_timestamp += 24*3600
|
||
|
|
if (shifted_timestamp - self._last_time) >= self._interval_s:
|
||
|
|
self._last_time = timestamp
|
||
|
|
self._last_utc = (utc[0], utc[1], utc[2])
|
||
|
|
return True
|
||
|
|
return False
|
||
|
|
|
||
|
|
def reset(self, utc):
|
||
|
|
ns = utc[3] * 0.000000001
|
||
|
|
self._last_time = utc[0] * 3600 + utc[1] * 60 + utc[2] + ns
|
||
|
|
self._last_utc = (utc[0], utc[1], utc[2])
|