some fixes, not totally fixed yet
authorConstantin Berhard <constantin@exxxtremesys.lu>
Sun, 27 Oct 2013 15:50:19 +0000 (16:50 +0100)
committerConstantin Berhard <constantin@exxxtremesys.lu>
Sun, 27 Oct 2013 15:50:19 +0000 (16:50 +0100)
statemachine.py
tuerd
waker.py

index 59951d446f98bfe7e06c4277689c7d8746895843..a3a24d4cea68b09a2ae770640a6688621380cb53 100644 (file)
@@ -138,7 +138,7 @@ class StateMachine():
        
        class StateStart(State):
                def __init__(self, sm, nervlist = None, fallback=False):
-                       super().__init__(self, sm, nervlist)
+                       super().__init__(sm, nervlist)
                        self.fallback = fallback
                def handle_pins_event(self):
                        pins = self.pins()
@@ -156,7 +156,7 @@ class StateMachine():
        
        class StateFallback(State):
                def __init__(self, sm, nervlist = None):
-                       super().__init__(self, sm, nervlist)
+                       super().__init__(sm, nervlist)
                        self._last_blink_time = time.time()
                        self._red_state = False
                def handle_pins_event(self):
@@ -307,7 +307,7 @@ class StateMachine():
        def __init__(self, actor, waker, fallback = False):
                self.actor = actor
                self.callback = ThreadFunction(self._callback, name="StateMachine")
-               self.current_state = StateMachine.StateStart(self, fallback)
+               self.current_state = StateMachine.StateStart(self, None, fallback)
                self.pins = None
                self.old_pins = None
                waker.register(lambda: self.callback(StateMachine.CMD_WAKEUP), 1.0) # wake up every second
diff --git a/tuerd b/tuerd
index e828ebb6d5ecc85725163e5bd626292bd6239cb4..8290c83cf718fa0f22c1357ef7f50cca89361da9 100755 (executable)
--- a/tuerd
+++ b/tuerd
@@ -30,7 +30,7 @@ GPIO.setmode(GPIO.BOARD)
 
 # bring 'em all up
 the_actor = actor.Actor()
-the_waker = waker.Waker(the_machine)
+the_waker = waker.Waker()
 the_machine = statemachine.StateMachine(the_actor, the_waker, args.fallback)
 the_socket = tysock.TySocket(the_machine)
 the_pins = pins.PinsWatcher(the_machine)
index 9c2cf06c40dbae3fbd9d8fc5822a74abff6bb0d2..dc4627b3565d05882d8d1f4d6cb8a687aef01e08 100644 (file)
--- a/waker.py
+++ b/waker.py
@@ -7,13 +7,12 @@ SLEEP_TIME = 0.5
 ToBeWoken = namedtuple('ToBeWoken','f period time_since_call one_shot')
 
 class Waker():
-       def __init__(self, sm):
-               self._sm = sm
-               self._t = ThreadRepeater(self._wake, SLEEP_TIME, name="Waker")
+       def __init__(self):
                self._tobewokens = []
                self._tobewokens_lock = Lock()
+               self._t = ThreadRepeater(self._wake, SLEEP_TIME, name="Waker")
        
-       def register(f, time, one_shot = False):
+       def register(self, f, time, one_shot = False):
                '''Register a function which is called approximately every <time> seconds (or just once, if one_shot is True). f should return quickly, or it will delay the waker!'''
                time = max(time//SLEEP_TIME, 1)
                with self._tobewokens_lock: