Elma
An event loop manager for embedded systems
 All Classes Files Functions Enumerations
state_machine.h
1 #ifndef _STATE_MACHINE_H
2 #define _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; }
39 
41  State& current() { return *_current; }
42 
44  void init();
45 
47  void start();
48 
50  void update();
51 
53  void stop();
54 
55  private:
56  vector<Transition> _transitions;
57  State * _initial;
58  State * _current;
59  bool _propagate;
60 
61  };
62 
63 }
64 
65 #endif
void start()
Do not override init() for a state machine.
void update()
Do not override init() for a state machine.
StateMachine & add_transition(std::string event_name, State &from, State &to)
void init()
Do not override init() for a state machine.
StateMachine & set_initial(State &s)
Definition: state_machine.cc:8
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
void stop()
Do not override init() for a state machine.
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: manager.h:11
An abstract base class for processes.
Definition: process.h:24