From 3bb2b5fed6b036fb3346626a8687c72f8f7bcefc Mon Sep 17 00:00:00 2001 From: jwellbelove Date: Wed, 24 May 2017 16:16:50 +0100 Subject: [PATCH] Added experimental FSM template. --- src/experimental/fsm.h | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/experimental/fsm.h b/src/experimental/fsm.h index 14106b72..0f7ccb38 100644 --- a/src/experimental/fsm.h +++ b/src/experimental/fsm.h @@ -96,13 +96,28 @@ namespace etl { public: + //******************************************* + etl::fsm_state_id_t get_state_id() const + { + return state_id; + } + virtual etl::fsm_state_id_t on_event(const etl::ifsm_event& event) = 0; - virtual etl::fsm_state_id_t get_state_id() const = 0; protected: + //******************************************* + ifsm_state(etl::fsm_state_id_t state_id_) + : state_id(state_id_) + { + } + virtual void on_enter_state() {}; virtual void on_exit_state() {}; + + private: + + etl::fsm_state_id_t state_id; }; //*************************************************************************** @@ -117,6 +132,12 @@ namespace etl THIS_STATE_ID = STATE_ID_ }; + //******************************************* + fsm_state() + : ifsm_state(THIS_STATE_ID) + { + } + //******************************************* etl::fsm_state_id_t on_event(const etl::ifsm_event& event) {