From 7546df5f2bec4f25de3cddf8df8391aeec2223bb Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Tue, 23 Apr 2019 08:56:22 +0000 Subject: [PATCH] - Timer: implemented stop() - Timer: added iteration count git-svn-id: http://moon:8086/svn/projects/HendiControl@254 fda53097-d464-4ada-af97-ba876c37ca34 --- Control/brewpi/timer.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/Control/brewpi/timer.py b/Control/brewpi/timer.py index 80c5d46..39d74e7 100644 --- a/Control/brewpi/timer.py +++ b/Control/brewpi/timer.py @@ -2,23 +2,26 @@ import time import abc class Timer(object): - def __init__(self, name='Timer', listener=None, mode='periodic'): + def __init__(self, name='Timer', listener=None): self.name = name self.listener = listener self.isActive = False self.mode = 'periodic' self.interval = 0 self.elapseTime = 0 + self.count = 0 + self.cancel = False - def start(self, interval): + def start(self, interval, mode='periodic'): now = time.time() self.interval = interval + self.mode = mode self.elapseTime = now + interval self.isActive = self.elapseTime > now pass def stop(self): - pass + self.cancel = True def __str__(self): return self.name @@ -44,12 +47,17 @@ class TimerManager(object): now = time.time() if timer.isActive: if timer.elapseTime <= now: - if timer.listener: + if timer.cancel: + timer.isActive = False + timer.count = 0 + elif timer.listener: if 'periodic' in timer.mode: timer.start(timer.interval) timer.listener.onTimer(timer) + timer.count += 1 def getMinTimeout(self): + minTimeout = None timeouts = [] for timer in self.timers: now = time.time() @@ -57,8 +65,9 @@ class TimerManager(object): timeout = max(0, timer.elapseTime-now) timeouts.append(timeout) + if len(timeouts) > 0: + minTimeout = min(timeouts) - minTimeout = min(timeouts) return minTimeout if __name__ == '__main__': @@ -78,11 +87,15 @@ if __name__ == '__main__': pass def onTimer(self, timer): - print (timer) + print ("{}, Count: {}".format(timer, timer.count)) + if timer.count == 30: + timer.stop() def run(self): while(True): wait = self.timerMgr.getMinTimeout() + if wait is None: + break time.sleep(wait) self.timerMgr.process()