CMD_RED_OFF = 6
class CMD():
- def __init__(self, name, pin, tid, todo):
+ def __init__(self, name, pin, tid, todo, verbose = True):
self.name = name
self.pin = pin
self.tid = tid
self.todo = todo
+ self.verbose = verbose
# don't do the GPIO setup here, the main init did not yet run
def execute(self):
- logger.info("Actor: Running command %s" % self.name)
+ if self.verbose:
+ logger.info("Actor: Running command %s" % self.name)
+ else:
+ logger.debug("Actor: Running command %s" % self.name)
for (value, delay) in self.todo:
if value is not None:
logger.debug("Actor: Setting pin %d to %d" % (self.pin, value))
CMD_UNLOCK: CMD("unlock", pin=12, tid=0, todo=[(True, 0.3), (False, 0.1)]),
CMD_LOCK: CMD("lock", pin=16, tid=0, todo=[(True, 0.3), (False, 0.1)]),
CMD_BUZZ: CMD("buzz", pin=22, tid=1, todo=[(True, 2.5), (False, 0.1)]),
- CMD_GREEN_ON: CMD("green on", pin=23, tid=2, todo=[(True, 0)]),
- CMD_GREEN_OFF: CMD("green off", pin=23, tid=2, todo=[(False, 0)]),
- CMD_RED_ON: CMD("red on", pin=26, tid=2, todo=[(True, 0)]),
- CMD_RED_OFF: CMD("red off", pin=26, tid=2, todo=[(False, 0)]),
+ CMD_GREEN_ON: CMD("green on", pin=23, tid=2, verbose=False, todo=[(True, 0)]),
+ CMD_GREEN_OFF: CMD("green off", pin=23, tid=2, verbose=False, todo=[(False, 0)]),
+ CMD_RED_ON: CMD("red on", pin=26, tid=2, verbose=False, todo=[(True, 0)]),
+ CMD_RED_OFF: CMD("red off", pin=26, tid=2, verbose=False, todo=[(False, 0)]),
}
def __init__(self):
def _fire_and_forget():
try:
f()
- except Exception as e:
- logger.critical("fire_and_forget: Got exception out of callback: %s" % str(e))
- logger.debug(traceback.format_exc())
+ except Exception:
+ logger.critical("fire_and_forget: Got exception out of callback:\n%s" % traceback.format_exc())
t = threading.Thread(target=_fire_and_forget)
t.start()
try:
self._f(*data)
except Exception as e:
- logger.critical("ThreadFunction: Got exception out of handler thread %s: %s" % (self.name, str(e)))
- logger.debug(traceback.format_exc())
+ logger.critical("ThreadFunction: Got exception out of handler thread %s:\n%s" % (self.name, traceback.format_exc()))
elif cmd == ThreadFunction._TERM:
assert data is None
break
try:
self._f()
except Exception as e:
- logger.critical("ThreadRepeater: Got exception out of handler thread %s: %s" % (self.name, str(e)))
- logger.debug(traceback.format_exc())
+ logger.critical("ThreadRepeater: Got exception out of handler thread %s:\n%s" % (self.name, traceback.format_exc()))
time.sleep(self._sleep_time)
def stop(self):
while newstate is not None:
assert isinstance(newstate, StateMachine.State), "I should get a state"
self.current_state.on_leave()
- logger.debug("StateMachine: Doing state transition %s -> %s" % (self.current_state.__class__.__name__, newstate.__class__.__name__))
+ logger.info("StateMachine: Doing state transition %s -> %s" % (self.current_state.__class__.__name__, newstate.__class__.__name__))
self.current_state = newstate
newstate = self.current_state.handle_event(StateMachine.CMD_PINS, self.pins)