public void HandleEvent(TrialEvents ev) { WriteLog("Event " + ev.ToString()); if (!IsStarted()) { return; } switch (GetState()) { case TrialStates.Idle: break; case TrialStates.SpecificTrial: if (ev == TrialEvents.SpTrialFinished) { ChangeState(TrialStates.Questionnaire); } break; case TrialStates.Questionnaire: if (ev == TrialEvents.QuestionsFinished) { questionnaireController.StopMachine(); ChangeState(TrialStates.End); } break; case TrialStates.End: break; } }