From fce36f5a8b88722b94b7c60266fb0fc72b2bc10c Mon Sep 17 00:00:00 2001 From: Constantin Berhard Date: Sun, 27 Oct 2013 17:04:46 +0100 Subject: [PATCH 1/1] Fallback mode works now (software side) --- statemachine.py | 16 +++++++--------- waker.py | 11 ++++++++--- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/statemachine.py b/statemachine.py index a3a24d4..cd1b04c 100644 --- a/statemachine.py +++ b/statemachine.py @@ -23,7 +23,6 @@ CLOSE_REPEAT_TIMEOUT = 7 CLOSE_REPEAT_NUMBER = 3 # StateFallback constants -FALLBACK_BLINK_SPEED = 0.5 # seconds FALLBACK_LEAVE_DELAY_LOCK = 5 # seconds # StateAboutToOpen constants @@ -180,14 +179,13 @@ class StateMachine(): def handle_wakeup_event(self): # blink red LED now = time.time() - if now - self._last_blink_time < FALLBACK_BLINK_SPEED: - if self._red_state: - self.actor().act(Actor.CMD_RED_OFF) - self._red_state = False - else: - self.actor().act(Actor.CMD_RED_ON) - self._red_state = True - self._last_blink_time = now + if self._red_state: + self.actor().act(Actor.CMD_RED_OFF) + self._red_state = False + else: + self.actor().act(Actor.CMD_RED_ON) + self._red_state = True + self._last_blink_time = now def handle_cmd_unlock_event(self,arg): if arg is not None: arg("298 Fallback Okay: Trying to unlock the door. The System is in fallback mode, success information is not available.") diff --git a/waker.py b/waker.py index dc4627b..79eff81 100644 --- a/waker.py +++ b/waker.py @@ -1,10 +1,15 @@ from libtuer import ThreadRepeater -from collections import namedtuple from threading import Lock SLEEP_TIME = 0.5 -ToBeWoken = namedtuple('ToBeWoken','f period time_since_call one_shot') +class ToBeWoken: + '''a simple struct storing information about a to-be-woken function''' + def __init__(self, f, period, one_shot): + self.f = f + self.period = period + self.time_since_call = 0 + self.one_shot = one_shot class Waker(): def __init__(self): @@ -16,7 +21,7 @@ class Waker(): '''Register a function which is called approximately every