jonblack / arduino-fsm

Arduino library for implementing a finite state machine.
MIT License
200 stars 97 forks source link

When to set m_current_state #35

Open nyfelix opened 4 years ago

nyfelix commented 4 years ago

Hi, thank you for that wonderful and lean implementation of an FSM. When test driving it, I came across the following question (probably not an issue):

The m_current_state is set after execution of transition->state_to->on_enter. This means, you cannot set a trigger in the on_enter function to directly move to the next state. Is this meant to be like this, or should m_current_state rather be set before execution of transition->state_to->on_enter?

void Fsm::make_transition(Transition* transition) { // Execute the handlers in the correct order. if (transition->state_from->on_exit != NULL) transition->state_from->on_exit();

if (transition->on_transition != NULL) transition->on_transition();

if (transition->state_to->on_enter != NULL) transition->state_to->on_enter();

m_current_state = transition->state_to;