uFSM  1.0
IoT u-Micro Finite State Machine library
uFsm.hpp
Go to the documentation of this file.
1 
21 #if !defined(_UFSM_H)
22 #define _UFSM_H
23 
29 class uFsmEvent {
30 public:
31  virtual ~uFsmEvent();
32 
33  uFsmEvent(int32_t id, void *p) {
34  id_ = id;
35  parameters_ = p;
36  };
37  int32_t id_;
38  void *parameters_;
39 };
40 
41 typedef std::list<uFsmEvent *> EvLst;
42 
46 class uFsm {
47 public:
48  uFsm( uEventHandler *trans, uint32_t maxNumTransitions, uint32_t initialState);
49  virtual ~uFsm(void);
50 
51  uint32_t defineTransition(uint32_t sourceState, uint32_t destinationState,
52  uint32_t event, uint32_t index);
53  bool control(uint32_t event, void *parameters = NULL);
54  void generateEvent(uint32_t event, void *parameters = NULL);
55 
56 private:
57 
58  void insertInQueue(uint32_t event, void *parameters);
59  int32_t hash(uint32_t sourceState, uint32_t event);
60  int32_t hash(uint32_t event);
61 
62  typedef struct {
63  uint32_t source_state;
64  uint32_t destination_state;
65  uint32_t event;
66  int32_t index;
67  } TransitionType;
68 
69  TransitionType *arrayTrans_;
70  uint32_t maxNumTransitions_;
71  uint32_t currentState_;
72  uEventHandler *handler_;
73  EvLst Evlst_;
74 };
75 
76 #endif
Definition: uFsm.hpp:46
void * parameters_
event parameters
Definition: uFsm.hpp:38
std::list< uFsmEvent * > EvLst
Definition: uFsm.hpp:41
uFsmEvent(int32_t id, void *p)
Definition: uFsm.hpp:33
virtual ~uFsmEvent()
Definition: uFsm.cpp:56
int32_t id_
event identifier
Definition: uFsm.hpp:36