#include "fsmstate.h" #include "scanner.h" Scanner *FsmState::scanner = NULL; #ifndef LOG #define LOG printf #endif FsmState::FsmState() { } FsmState::~FsmState() { } std::map> FsmStateManager::fsmStates; void StandbyState::initial() { LOG("StandbyState \n"); typeName = "StandbyState"; doReset(); } FsmState *StandbyState::on_event(ScanEvent event) { LOG("StandbyState on_event %d \n", event); if (event == S_EVT_COVER_OPENED) { return FsmStateManagerEx::GetState(); } else if (event == S_EVT_JAM_OUT) { return FsmStateManagerEx::GetState(); } else if (event == S_EVT_PAPER_STANDBY) { } else if (event == S_EVT_START_SCAN) { } return this; } void StandbyState::doReset() { } void CoverOpenState::initial() { typeName = "CoverOpenState"; } FsmState *CoverOpenState::on_event(ScanEvent event) { if (event == S_EVT_COVER_CLOSED) { } else if (event == S_EVT_CLEAR_ERR) { return FsmStateManagerEx::GetState(); } return this; } InitState::InitState() { } FsmState *InitState::on_event(ScanEvent event) { return FsmStateManagerEx::GetState(); } void InitState::initial() { typeName = "InitState"; } void ErrorJamState::initial() { typeName = "ErrorJamState"; } void ErrorJamState::doPaper_pullout() { } FsmState *ErrorJamState::on_event(ScanEvent event) { return this; } void PaperReadyState::initial() { typeName = "PaperReadyState"; } FsmState *PaperReadyState::on_event(ScanEvent event) { LOG("PaperReadyState on_event %d \n", event); if (event == S_EVT_COVER_OPENED) { return FsmStateManagerEx::GetState(); } else if (event == S_EVT_PAPER_NOT_STANDBY) { return FsmStateManagerEx::GetState(); } else if (event == S_EVT_PAPER_AT_SCAN) { return FsmStateManagerEx::GetState(); } else if (event == S_EVT_START_SCAN) { return FsmStateManagerEx::GetState(); } return this; } void ErrorState::initial() { typeName = "ErrorState"; } FsmState *ErrorState::on_event(ScanEvent event) { LOG("ErrorState on_event %d \n", event); if (event == S_EVT_COVER_OPENED) { return FsmStateManagerEx::GetState(); } return this; } void ScanningState::initial() { typeName = "ScanningState"; } FsmState *ScanningState::on_event(ScanEvent event) { LOG("ScanningState on_event \n"); if (event == S_EVT_COVER_IN_OPEN) { return FsmStateManagerEx::GetState(); } else if (event == S_EVT_STOP_SCAN) { } else if (event == S_EVT_COVER_OPENED) { return FsmStateManagerEx::GetState(); } else if (event == S_EVT_DOUBLEPAPER) { return FsmStateManagerEx::GetState(); } else if (event == S_EVT_JAM_IN) { LOG("ScanningState S_EVT_JAM_IN \n"); return FsmStateManagerEx::GetState(); } else if (event == S_EVT_JAM_OUT) { LOG("ScanningState S_EVT_JAM_OUT \n"); return FsmStateManagerEx::GetState(); } else if (event == S_EVT_PAPER_AT_SCAN) { //ToDo:add notifyAll operation } else if (event == S_EVT_PAPER_NOT_AT_SCAN) { //ToDo:add notifyAll operation } else if (event == S_EVT_SAMPLE_ERR) { return FsmStateManagerEx::GetState(); } return this; }