Elma
An event loop manager for embedded systems
state_machine.h
1 #ifndef _ELMA_STATE_MACHINE_H
2 #define _ELMA_STATE_MACHINE_H
3 
4 #include "elma.h"
5 
6 namespace elma {
7 
9 
13  class StateMachine : public Process {
14 
15  public:
16 
18  StateMachine(std::string name) : Process(name), _initial(NULL), _current(NULL), _propagate(false) {}
19 
21  StateMachine() : Process("unnamed state machine"), _initial(NULL), _current(NULL), _propagate(false) {}
22 
27 
33  StateMachine& add_transition(std::string event_name, State& from, State& to);
34 
38  inline StateMachine& set_propagate(bool val) { _propagate = val; return *this; }
39 
41  inline vector<Transition> transitions() { return _transitions; }
42 
44  State& current() { return *_current; }
45 
49  void init();
50 
54  void start();
55 
59  void update();
60 
64  void stop();
65 
66  protected:
67  vector<Transition> _transitions;
68  State * _initial;
69  State * _current;
70  bool _propagate;
71 
72  };
73 
74 }
75 
76 #endif
StateMachine & add_transition(std::string event_name, State &from, State &to)
StateMachine & set_initial(State &s)
Definition: state_machine.cc:7
vector< Transition > transitions()
Get the list of transitions.
Definition: state_machine.h:41
string name()
Definition: process.h:72
States for the StateMachine class.
Definition: state.h:14
StateMachine(std::string name)
Construct a new StateMachine with the given name.
Definition: state_machine.h:18
StateMachine()
Construct an unnamed StateMachine.
Definition: state_machine.h:21
StateMachine & set_propagate(bool val)
Definition: state_machine.h:38
A finite state machine class.
Definition: state_machine.h:13
Definition: channel.cc:5
An abstract base class for processes.
Definition: process.h:24