-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfsm.py
35 lines (29 loc) · 1021 Bytes
/
fsm.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class fsm:
def __init__(self):
self.transitions = {}
self.states = []
self.events = []
self.curState = None
self.curEvent = None
self.prevState =None
def add_transition(self, state1, state2, event, funct):
key = state1+'.'+event
self.transitions [key] = (state2, funct)
def add_state(self, state):
self.states.append(state)
def add_event(self, event):
self.events.append(event)
def set_state(self, state):
self.curState = state
def set_event(self, event):
self.curEvent = event
def run(self):
event = self.curEvent
state = self.curState
key = state+'.'+event
self.prevState = state
self.curState = self.transitions [key][0]
st = "Transition - Old State : "+state+"; Event : "+event+"; New state : "+self.curState
st = st+"; Action : "+self.transitions [key][1].__name__+"()"
# print(st)
return self.transitions [key][1]