void PauseState::handleEvent(const FSMEvent& event) { switch (event.getType()) { case EVENT_USR_PLAY: exitTo(new PlayingState(_fsm)); break; case EVENT_USR_STOP: exitTo(new StopState(_fsm)); break; default: break; } }
/* receiveEvent contains the main implementation of the FSM */ static void receiveEvent(Testee* self, InterfaceItemBase ifitem, int evt, void* generic_data) { int trigger = ifitem->localId + EVT_SHIFT*evt; int chain = NOT_CAUGHT; int catching_state = NO_STATE; boolean is_handler = FALSE; boolean skip_entry = FALSE; if (!handleSystemEvent(ifitem, evt, generic_data)) { switch (self->state) { case STATE_State1_State1: switch(trigger) { case TRIG_tester__trigger: { chain = CHAIN_State1_TRANS_State1_TO_Done_BY_triggertester; catching_state = STATE_State1; } break; } break; case STATE_State1_Done: break; } } if (chain != NOT_CAUGHT) { exitTo(self, self->state, catching_state, is_handler); int next = executeTransitionChain(self, chain, ifitem, generic_data); next = enterHistory(self, next, is_handler, skip_entry); setState(self, next); } }