38#ifndef HMICORE_TINYFSM_H_
39#define HMICORE_TINYFSM_H_
41#ifndef TINYFSM_NOSTDLIB
49namespace gva::tinyfsm {
57#ifdef TINYFSM_NOSTDLIB
62template <
typename F,
typename S>
64 static constexpr bool value =
true;
68template <
typename F,
typename S>
69struct is_same_fsm : std::is_same<typename F::fsmtype, typename S::fsmtype> {};
112 template <
typename S>
141 template <
typename E>
153 template <
typename S>
168 template <
typename S,
typename ActionFunction>
169 void transit(ActionFunction action_function) {
188 template <
typename S,
typename ActionFunction,
typename ConditionFunction>
189 void transit(ActionFunction action_function, ConditionFunction condition_function) {
190 if (condition_function()) {
201template <
typename... FF>
212 template <
typename E>
216template <
typename F,
typename... FF>
227 fsmtype::set_initial_state();
264 template <
typename E>
266 fsmtype::template dispatch<E>(event);
267 FsmList<FF...>::template dispatch<E>(event);
273template <
typename... SS>
281template <
typename S,
typename... SS>
316#define FSM_INITIAL_STATE(_FSM, _STATE) \
317 namespace tinyfsm { \
319 void Fsm<_FSM>::set_initial_state(void) { \
320 current_state_ptr = &_state_instance<_STATE>::value; \
static void Reset()
Reset state machine.
Definition tinyfsm.h:124
static void enter()
Enter state.
Definition tinyfsm.h:127
static void set_initial_state()
state machine functions
static constexpr S & state(void)
public, leaving ability to access state instance (e.g. on Reset)
Definition tinyfsm.h:100
static constexpr bool is_in_state(void)
Check if in state.
Definition tinyfsm.h:113
static void start()
start state
Definition tinyfsm.h:130
void transit(void)
state transition functions
Definition tinyfsm.h:154
F * state_ptr_t
Current state pointer.
Definition tinyfsm.h:94
void transit(ActionFunction action_function, ConditionFunction condition_function)
Transit to new state.
Definition tinyfsm.h:189
static state_ptr_t current_state_ptr
Current state pointer.
Definition tinyfsm.h:96
static void dispatch(E const &event)
Dispatch a new state.
Definition tinyfsm.h:142
void transit(ActionFunction action_function)
Transition to new state.
Definition tinyfsm.h:169
static void Reset()
Reset.
Definition tinyfsm.h:235
static void start()
Start.
Definition tinyfsm.h:253
static void dispatch(E const &event)
Dispatch.
Definition tinyfsm.h:265
static void set_initial_state()
Set the initial state object.
Definition tinyfsm.h:226
static void enter()
Enter.
Definition tinyfsm.h:244
static void set_initial_state()
Set the inital state.
Definition tinyfsm.h:208
static void dispatch(E const &)
Dispatch FSM.
Definition tinyfsm.h:213
static void enter()
Enter state function.
Definition tinyfsm.h:210
Mealy machine.
Definition tinyfsm.h:304
void exit(void)
no exit actions
Definition tinyfsm.h:311
void entry(void)
no entry actions
Definition tinyfsm.h:309
Moore machine.
Definition tinyfsm.h:295
virtual void entry(void)
entry actions in some states
Definition tinyfsm.h:297
void exit(void)
no exit actions
Definition tinyfsm.h:299
static void Reset()
Reset state.
Definition tinyfsm.h:285
static void Reset()
Reset state list.
Definition tinyfsm.h:279
State.
Definition tinyfsm.h:74
S value_type
State instance.
Definition tinyfsm.h:76
static S value
State instance.
Definition tinyfsm.h:80