Commit 77625890 authored by Constantin's avatar Constantin
Browse files

abs2rel works and more sounds

parent e5699318
......@@ -20,8 +20,11 @@ def nervlist_abs2rel(nervlist_abs):
for (t, f) in nervlist_abs:
assert t >= last_t
nervlist_rel.append((t-last_t, f))
last_t = t
return nervlist_rel
# StateAuf constants
HELLO_PROBABILITY = 0.2
# StateUnlocking constants
OPEN_REPEAT_TIMEOUT = 7
......@@ -35,10 +38,11 @@ CLOSE_REPEAT_NUMBER = 3
FALLBACK_LEAVE_DELAY_LOCK = 5 # seconds
# StateAboutToOpen constants
SWITCH_PRAISE_PROBABILITY = 0.5
ABOUTOPEN_NERVLIST = nervlist_abs2rel([(5, lambda : play_sound("flipswitch")), (10, lambda:play_sound("flipswitch")),\
(20, lambda:play_sound("flipswitch")), (30, lambda:play_sound("flipswitch")), (30, lambda:logger.error("Space open but switch not flipped for 30 seconds")),\
(40, lambda:play_sound("flipswitch")), (50, lambda:play_sound("flipswitch")), (60, lambda:play_sound("flipswitch")),
(60, lambda:logger.critical("Space open but switch not flipped for 60 seconds")), (120, lambda:play_sound("flipswitch")),
(40, lambda:play_sound("flipswitch")), (50, lambda:play_sound("flipswitch")), (60, lambda:play_sound("mail_sent")),
(60, lambda:logger.critical("Space open but switch not flipped for 60 seconds")), (120, lambda:play_sound("mail_sent")),
(10*60, lambda:logger.critical("Space open but switch not flipped for 10 minutes")),
(60*60, lambda:logger.critical("Space open but switch not flipped for one hour"))])
......@@ -247,6 +251,8 @@ class StateMachine():
pins = self.pins()
if pins.space_active:
logger.info("Space activated, opening procedure completed")
if not self.old_pins().space_active and random.random() <= SWITCH_PRAISE_PROBABILITY:
play_sound("success")
return StateMachine.StateAuf(self.state_machine)
return super().handle_pins_event()
......@@ -265,6 +271,8 @@ class StateMachine():
if not pins.space_active:
logger.info("StateMachine: space switch turned off - starting leaving procedure")
return StateMachine.StateAboutToLeave(self.state_machine)
if not pins.door_closed and self.old_pins().door_closed and random.random() <= HELLO_PROBABILITY:
play_sound("hello")
return super().handle_pins_event()
def on_leave(self):
self.api().set_state(False)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment