예제 #1
0
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;
    }
}
예제 #2
0
/* 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);
	}
}