migration from ha-cantegrill repo
This commit is contained in:
37
ssm.py
Normal file
37
ssm.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from kwargsparser import kwargsParser as kwargsParser
|
||||
|
||||
class SimpleStateMachine():
|
||||
def __init__(self,default_state,**kwargs):
|
||||
parser = kwargsParser(kwargs)
|
||||
|
||||
self.log_cb = parser.parse_args("log_cb",None)
|
||||
|
||||
parser.validate_args()
|
||||
self.current_state = None
|
||||
self.change_state(default_state)
|
||||
|
||||
def log(self,log_string):
|
||||
if self.log_cb: self.log_cb(log_string)
|
||||
|
||||
def change_state(self,new_state):
|
||||
if new_state != self.current_state:
|
||||
if self.current_state != None:
|
||||
if self.current_state.on_exit != None:
|
||||
self.current_state.on_exit()
|
||||
self.log(f"Changing from state {self.current_state.state_name} to {new_state.state_name}")
|
||||
else:
|
||||
self.log(f"Initialising with state {new_state.state_name}")
|
||||
self.current_state = new_state
|
||||
if self.current_state.on_enter != None:
|
||||
self.current_state.on_enter()
|
||||
|
||||
class State():
|
||||
def __init__(self,state_name,**kwargs):
|
||||
self.state_name = state_name
|
||||
|
||||
parser = kwargsParser(kwargs)
|
||||
|
||||
self.on_enter = parser.parse_args("on_enter_cb",None)
|
||||
self.on_exit = parser.parse_args("on_exit_cb",None)
|
||||
|
||||
parser.validate_args()
|
||||
Reference in New Issue
Block a user