186 lines
3.2 KiB
C++
186 lines
3.2 KiB
C++
|
#include "fsmstate.h"
|
||
|
#include "scanner.h"
|
||
|
|
||
|
Scanner *FsmState::scanner = NULL;
|
||
|
#ifndef LOG
|
||
|
#define LOG printf
|
||
|
#endif
|
||
|
|
||
|
FsmState::FsmState()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
FsmState::~FsmState()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
std::map<std::string, std::shared_ptr<FsmState>> 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<CoverOpenState>::GetState();
|
||
|
}
|
||
|
else if (event == S_EVT_JAM_OUT)
|
||
|
{
|
||
|
return FsmStateManagerEx<ErrorJamState>::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<InitState>::GetState();
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
InitState::InitState()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
FsmState *InitState::on_event(ScanEvent event)
|
||
|
{
|
||
|
return FsmStateManagerEx<StandbyState>::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<CoverOpenState>::GetState();
|
||
|
}
|
||
|
else if (event == S_EVT_PAPER_NOT_STANDBY)
|
||
|
{
|
||
|
return FsmStateManagerEx<CoverOpenState>::GetState();
|
||
|
}
|
||
|
else if (event == S_EVT_PAPER_AT_SCAN)
|
||
|
{
|
||
|
return FsmStateManagerEx<ErrorState>::GetState();
|
||
|
}
|
||
|
else if (event == S_EVT_START_SCAN)
|
||
|
{
|
||
|
return FsmStateManagerEx<ScanningState>::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<CoverOpenState>::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<CoverOpenState>::GetState();
|
||
|
}
|
||
|
else if (event == S_EVT_STOP_SCAN)
|
||
|
{
|
||
|
}
|
||
|
else if (event == S_EVT_COVER_OPENED)
|
||
|
{
|
||
|
return FsmStateManagerEx<CoverOpenState>::GetState();
|
||
|
}
|
||
|
else if (event == S_EVT_DOUBLEPAPER)
|
||
|
{
|
||
|
return FsmStateManagerEx<ErrorJamState>::GetState();
|
||
|
}
|
||
|
else if (event == S_EVT_JAM_IN)
|
||
|
{
|
||
|
LOG("ScanningState S_EVT_JAM_IN \n");
|
||
|
return FsmStateManagerEx<ErrorState>::GetState();
|
||
|
}
|
||
|
else if (event == S_EVT_JAM_OUT)
|
||
|
{
|
||
|
LOG("ScanningState S_EVT_JAM_OUT \n");
|
||
|
return FsmStateManagerEx<ErrorJamState>::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<ErrorState>::GetState();
|
||
|
}
|
||
|
return this;
|
||
|
}
|