123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986 |
- #ifndef _HSPSCANNER_FSM_H_
- #define _HSPSCANNER_FSM_H_
- #pragma once
- #include "SpFSM.h"
- #include "HSPScannerClass.h"
- #include "HSPScanner_server_g.h"
- #include "DevFSMCommBase.hpp"
- #include "HSPSCanner_UserErrorCode.h"
- #if defined(_MSC_VER)
- #include <xstring>
- using namespace std;
- #else
- #include "DevErrorCode.h"
- #endif //_MSC_VER
- using namespace HSPScanner;
- #define ISSUCCEEDED(hr) ((hr) == Error_Succeed)
- #define FAILURED(hr) (!(ISSUCCEEDED(hr)))
- enum EvtType
- {
- USER_EVT_STARTPREVIEW = (EVT_USER + 1),
- USER_EVT_STARTPREVIEW_FINISHED,
- USER_EVT_SETPROPERTYINVIEW_FINISHED,
- USER_EVT_STARTPREVIEW_JS,
- USER_EVT_STARTPREVIEW_JS_DONE,
- USER_EVT_CANCELPREVIEW_JS,
- USER_EVT_CANCELPREVIEW_JS_DONE,
- USER_EVT_SCANIMAGE_JS,
- USER_EVT_SCANIMAGE_JS_DONE,
- USER_EVT_SETPARAM_JS,
- USER_EVT_STOPPREVIEW,
- USER_EVT_HIDEPREVIEW,
- USER_EVT_STOPPREVIEW_FINISHED,
- USER_EVT_SETWINPOS,
- USER_EVT_SETWINPOSFINISHED,
-
- USER_EVT_SCANIMAGE,
- USER_EVT_SCANIMAGE_EX,
- USER_EVT_SCANIMAGEFINISHED,
-
- USER_EVT_SHOWPROPERTY,
- USER_EVT_SHOWPROPERTY_FINISHED,
- USER_EVT_SETPROPERTY,
- USER_EVT_SETPROPERTY_FINISHED,
- USER_EVT_GETSTATUS,
- USER_EVT_GETINFO,
- USER_EVT_DISCONNECT,
- USER_EVT_RESET,
- USER_EVT_EXIT,
- USER_EVT_EXIT_FINISHED,
- USER_EVT_GOTOHELL,
- USER_EVT_QUIT,
- USER_EVT_INIT,
- USER_EVT_INIT_FINISHED
- };
- namespace JS
- {
- struct PreviewSettings
- {
- short rotate;
- short scan;
- short color;
- short pos;
- short pos_x;
- short pos_y;
- short pos_w;
- //0:do nothing,1:show, 2:hide
- short view;
- PreviewSettings(const HSPScannerService_SetParamJS_Req& rhs) :rotate(rhs.rotate), scan(rhs.scan), color(rhs.color), pos(rhs.pos)
- , pos_x(rhs.pos_x), pos_y(rhs.pos_y), pos_w(rhs.pos_w),view(0) {}
- PreviewSettings(const HSPScannerService_StartPreviewJS_Req& rhs) :rotate(rhs.rotate), scan(rhs.scan), color(rhs.color), pos(rhs.pos)
- , pos_x(rhs.pos_x), pos_y(rhs.pos_y), pos_w(rhs.pos_w),view(0) {}
- PreviewSettings(bool show) :rotate(0), scan(0), color(0), pos(0), pos_x(0), pos_y(0), pos_w(0), view(show ? 1 : 2) {}
- bool IsAvailable() const {
- return (rotate != 0 || scan != 0 || color != 0 || pos != 0);
- }
- void SetDisplay(bool display) { if (display) view = 1; else view = 2; }
- };
- }
- class CHSPScannerFSM : public CCommDevFSM<CHSPScannerFSM, CHSPSClass>, public IFSMStateHooker
- {
- public:
- CHSPScannerFSM(void);
- ~CHSPScannerFSM(void);
- virtual ErrorCodeEnum OnInit();
- virtual ErrorCodeEnum OnExit();
- void SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext);
- enum {
- sIdle, sPreview, sProperty, sFault, sPicture, sFault_Offline, sHidePreview, sExit, sInit
- };
- BEGIN_FSM_STATE(CHSPScannerFSM)
- FSM_STATE_ENTRY(sIdle, "Idle", s0_Idle_on_entry, s0_Idle_on_exit, s0_Idle_on_event)
- FSM_STATE_ENTRY(sPreview, "Previewing", s1_Preview_on_entry, s1_Preview_on_exit, s1_Preview_on_event)
- FSM_STATE_ENTRY(sProperty, "Property", s2_on_entry, s2_on_exit, s2_on_event)
- FSM_STATE_ENTRY(sFault, "Failed", s3_Failed_on_entry, s3_Failed_on_exit, s3_Failed_on_event)
- FSM_STATE_ENTRY(sPicture, "Picturing", s4_ScanImage_on_entry, s4_ScanImage_on_exit, s4_ScanImage_on_event)
- FSM_STATE_ENTRY(sFault_Offline, "DeviceOff", s5_DeviceOff_on_entry, s5_DeviceOff_on_exit, s5_DeviceOff_on_event)
- FSM_STATE_ENTRY(sHidePreview, "HidePreview", s6_HidePreview_on_entry, s6_HidePreview_on_exit, s6_HidePreview_on_event)
- FSM_STATE_ENTRY(sExit, "Exit", s7_Exit_on_entry, s7_Exit_on_exit, s7_Exit_on_event)
- FSM_STATE_ENTRY(sInit, "Init", s8_Init_on_entry, s8_Init_on_exit, s8_Init_on_event)
- END_FSM_STATE()
-
- BEGIN_FSM_RULE(CHSPScannerFSM, sIdle)
- //2 reserved in sIdle state.
- FSM_RULE_ENTRY(sIdle, sPreview, USER_EVT_STARTPREVIEW_FINISHED, 0) //成功预览
- FSM_RULE_ENTRY(sIdle, sFault, USER_EVT_STARTPREVIEW_FINISHED, 1) //预览失败
- FSM_RULE_ENTRY(sIdle, sIdle, USER_EVT_STARTPREVIEW_FINISHED, 2) // 错误还不足够严重,停留在当前状态
- FSM_RULE_ENTRY(sFault, sPreview, USER_EVT_STARTPREVIEW_FINISHED, 0)
- FSM_RULE_ENTRY(sFault, sIdle, USER_EVT_RESET, 0)
- //FSM_RULE_ENTRY(sFault, sFault, USER_EVT_RESET, 1)
- FSM_RULE_ENTRY(sFault, sPreview, USER_EVT_RESET, 2)
- FSM_RULE_ENTRY(sPreview, sProperty, USER_EVT_SHOWPROPERTY, 0)
- FSM_RULE_ENTRY_ANY(sProperty, sPreview, USER_EVT_SHOWPROPERTY_FINISHED)
- //3 reserved in sPreview state.
- FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_STOPPREVIEW_FINISHED, 0)
- FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_STOPPREVIEW_FINISHED, 4)
- FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_STOPPREVIEW_FINISHED, 1)
- FSM_RULE_ENTRY(sPreview, sIdle, USER_EVT_STOPPREVIEW_FINISHED, 2) //关闭预览
- FSM_RULE_ENTRY(sPreview, sPreview, USER_EVT_STOPPREVIEW_FINISHED, 3) //错误还不足够严重,停留在当前状态
- FSM_RULE_ENTRY(sPreview, sPicture, USER_EVT_SCANIMAGE, 0)
- FSM_RULE_ENTRY(sPreview, sPicture, USER_EVT_SCANIMAGE_EX, 0)
- //5 reserved in sPicture state.
- FSM_RULE_ENTRY(sPicture, sPreview, USER_EVT_SCANIMAGEFINISHED, 1) //删除旧照片获取照片名称失败
- FSM_RULE_ENTRY(sPicture, sFault, USER_EVT_SCANIMAGEFINISHED, 2) //拍摄返回失败
- FSM_RULE_ENTRY(sPicture, sPreview, USER_EVT_SCANIMAGEFINISHED, 3) //EX 分配资源失败
- FSM_RULE_ENTRY(sPicture, sFault, USER_EVT_SCANIMAGEFINISHED, 4) //打开照片文件失败
-
- FSM_RULE_ENTRY(sPicture, sPreview, USER_EVT_SCANIMAGEFINISHED, 0) //成功拍摄
- // Try sHidePreview state. --Josephus at 11:13:02 2016/11/22
- FSM_RULE_ENTRY(sPicture, sHidePreview, USER_EVT_SCANIMAGEFINISHED, 6) //成功拍摄且做了隐藏操作
- FSM_RULE_ENTRY(sPicture, sPreview, USER_EVT_SCANIMAGEFINISHED, 5)
- FSM_RULE_ENTRY_ANY(sFault, sFault_Offline, USER_EVT_DISCONNECT)
- FSM_RULE_ENTRY(sFault_Offline, sIdle, EVT_TIMER, 1)
- FSM_RULE_ENTRY(sFault_Offline, sPreview, EVT_TIMER, 2)
- FSM_RULE_ENTRY(sFault_Offline, sHidePreview, EVT_TIMER, 3)
- FSM_RULE_ENTRY(sIdle, sFault_Offline, USER_EVT_DISCONNECT, 0)
- FSM_RULE_ENTRY(sPreview, sFault_Offline, USER_EVT_DISCONNECT, 0)
- FSM_RULE_ENTRY(sPicture, sFault_Offline, USER_EVT_DISCONNECT, 0)
- FSM_RULE_ENTRY(sHidePreview, sFault_Offline, USER_EVT_DISCONNECT, 0)
- FSM_RULE_ENTRY(sHidePreview, sPreview, USER_EVT_STARTPREVIEW_FINISHED, 0) //成功预览
- FSM_RULE_ENTRY(sHidePreview, sFault, USER_EVT_STARTPREVIEW_FINISHED, 1) //预览失败
- FSM_RULE_ENTRY(sHidePreview, sHidePreview, USER_EVT_STARTPREVIEW_FINISHED, 2) // 错误还不足够严重,停留在当前状态
- FSM_RULE_ENTRY(sHidePreview, sIdle, USER_EVT_STOPPREVIEW_FINISHED, 2) //关闭预览
- FSM_RULE_ENTRY(sHidePreview, sFault, USER_EVT_STOPPREVIEW_FINISHED, 0) //关闭预览失败
- FSM_RULE_ENTRY(sHidePreview, sHidePreview, USER_EVT_STOPPREVIEW_FINISHED, 3) //错误还不足够严重,停留在当前状态
- FSM_RULE_ENTRY(sPreview, sExit, USER_EVT_EXIT, 0)
- FSM_RULE_ENTRY_ANY(sProperty, sExit, USER_EVT_EXIT)
- FSM_RULE_ENTRY(sHidePreview, sExit, USER_EVT_EXIT, 0)
- FSM_RULE_ENTRY(sExit, sIdle, USER_EVT_EXIT_FINISHED, 0)
- FSM_RULE_ENTRY(sExit, sFault, USER_EVT_EXIT_FINISHED, 1)
- FSM_RULE_ENTRY(sExit, sPreview, USER_EVT_EXIT_FINISHED, 2) //TODO: remove it [Gifur@202565]
- FSM_RULE_ENTRY(sExit, sHidePreview, USER_EVT_EXIT_FINISHED, 3) //TODO: remove it [Gifur@202565]
- FSM_RULE_ENTRY(sExit, sFault_Offline, USER_EVT_EXIT_FINISHED, 4) //TODO: remove it [Gifur@202565]
- FSM_RULE_ENTRY_ANY(sIdle, sInit, USER_EVT_INIT)
- FSM_RULE_ENTRY_ANY(sIdle, sFault, USER_EVT_GOTOHELL)
- /** JS Compoent [Gifur@20241114]*/
- FSM_RULE_ENTRY(sIdle, sPreview, USER_EVT_STARTPREVIEW_JS_DONE, 0)
- FSM_RULE_ENTRY(sIdle, sFault, USER_EVT_STARTPREVIEW_JS_DONE, 1) //预览失败
- FSM_RULE_ENTRY(sIdle, sIdle, USER_EVT_STARTPREVIEW_JS_DONE, 2) // 错误还不足够严重,停留在当前状态
- FSM_RULE_ENTRY(sHidePreview, sPreview, USER_EVT_STARTPREVIEW_JS, 1)
- FSM_RULE_ENTRY(sPreview, sIdle, USER_EVT_CANCELPREVIEW_JS_DONE, 1) //取消预览成功
- FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_CANCELPREVIEW_JS_DONE, 2) //隐藏成功
- FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_CANCELPREVIEW_JS_DONE, 4)//TODO: remove it [Gifur@202565]
- FSM_RULE_ENTRY(sHidePreview, sIdle, USER_EVT_CANCELPREVIEW_JS_DONE, 0)
- FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_SCANIMAGE_JS_DONE, 2)
- FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_SCANIMAGE_JS_DONE, 4)
- FSM_RULE_ENTRY(sPreview, sExit, EVT_MAINPAGE_DISPLAY, 0)
- FSM_RULE_ENTRY(sHidePreview, sExit, EVT_MAINPAGE_DISPLAY, 0)
- /** JS Compoent Done [Gifur@20241114]*/
- FSM_RULE_ENTRY_ANY(sInit, sIdle, USER_EVT_INIT_FINISHED)
- FSM_RULE_ENTRY_ANY(sInit, sFault, USER_EVT_GOTOHELL)
- END_FSM_RULE()
- virtual void s0_Idle_on_entry();
- virtual void s0_Idle_on_exit();
- virtual unsigned int s0_Idle_on_event(FSMEvent* e);
- virtual void s1_Preview_on_entry();
- virtual void s1_Preview_on_exit();
- virtual unsigned int s1_Preview_on_event(FSMEvent* e);
- virtual void s2_on_entry();
- virtual void s2_on_exit();
- virtual unsigned int s2_on_event(FSMEvent* e);
- virtual void s3_Failed_on_entry();
- virtual void s3_Failed_on_exit();
- virtual unsigned int s3_Failed_on_event(FSMEvent* e);
- virtual void s4_ScanImage_on_entry();
- virtual void s4_ScanImage_on_exit();
- virtual unsigned int s4_ScanImage_on_event(FSMEvent* e);
- virtual void s5_DeviceOff_on_entry();
- virtual void s5_DeviceOff_on_exit();
- virtual unsigned int s5_DeviceOff_on_event(FSMEvent* e);
- virtual void s6_HidePreview_on_entry();
- virtual void s6_HidePreview_on_exit();
- virtual unsigned int s6_HidePreview_on_event(FSMEvent* e);
- virtual void s7_Exit_on_entry();
- virtual void s7_Exit_on_exit();
- virtual unsigned int s7_Exit_on_event(FSMEvent* e);
- virtual void s8_Init_on_entry();
- virtual void s8_Init_on_exit();
- virtual unsigned int s8_Init_on_event(FSMEvent* e);
- virtual void OnStateTrans(int iSrcState, int iDstState);
- /** JS Component [Gifur@20241112]*/
- //0,succ;1 failed;
- int StartPreviewJS(SpReqAnsContext<HSPScannerService_StartPreviewJS_Req,
- HSPScannerService_StartPreviewJS_Ans>::Pointer ctx);
- //0,succ;1 failed;
- int CancelPreview(SpReqAnsContext<HSPScannerService_CancelPreviewJS_Req,
- HSPScannerService_CancelPreviewJS_Ans>::Pointer ctx);
- //0,succ;1 failed;
- int ScanImageJS(SpReqAnsContext<HSPScannerService_ScanImageJS_Req,
- HSPScannerService_ScanImageJS_Ans>::Pointer ctx);
- //0,succ;1 failed;
- int SetParam(SpReqAnsContext<HSPScannerService_SetParamJS_Req,
- HSPScannerService_SetParamJS_Ans>::Pointer ctx);
- /** JS Component Done [Gifur@20241112]*/
- //0,succ;1 failed
- int StartPreview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
- HSPScannerService_StartPreview_Ans>::Pointer ctx);
- //1隐藏成功;4:隐藏失败;2:取消预览成功;0:取消预览失败
- int StopPreview(SpReqAnsContext<HSPScannerService_CancelPreview_Req,
- HSPScannerService_CancelPreview_Ans>::Pointer ctx);
-
- bool ResizeImage(const CSimpleStringA& fileName, int kbSize, long& originSize, CSimpleStringA& retMsg);
-
- int ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
- HSPScannerService_ScanImage_Ans>::Pointer ctx);
- int ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
- HSPScannerService_ScanImageEx_Ans>::Pointer ctx);
- int ShowProperty(SpReqAnsContext<HSPScannerService_ShowProperty_Req,
- HSPScannerService_ShowProperty_Ans>::Pointer ctx);
- int SetProperty(SpReqAnsContext<HSPScannerService_SetProperty_Req,
- HSPScannerService_SetProperty_Ans>::Pointer ctx);
- int SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
- HSPScannerService_SetWinPos_Ans>::Pointer ctx);
- int GetDevStatus(SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
- HSPScannerService_GetDevStatus_Ans>::Pointer ctx);
-
- int GetDevInfo(SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
- HSPScannerService_GetDevInfo_Ans>::Pointer ctx);
- ErrorCodeEnum OnDevExit();
- void SetLastUserCode(DWORD dwCode = 0)
- {
- dwLastUserCode = dwCode;
- }
- DWORD GetLastUserCode() const
- {
- return dwLastUserCode;
- }
- int SetPreviewParam(int colorType, int rotateType, int scanType, bool abortIfFault = false);
- ErrorCodeEnum TryToOpenDevice();
- LPCTSTR MapCode2RTAString(DWORD dwValue);
- int Initial();
- protected:
-
- ErrorCodeEnum SetPreviewProperty(const JS::PreviewSettings& val, const char* logCode = "");
- void ToSwithLight(bool turnOn = true);
- private:
- ErrorCodeEnum m_ecSelfTest;
- int m_nFatalTimes;
- int m_nSrcState;
- int m_nRecX, m_nRecY, m_nRecW;
- EvtType m_desiredAction;
- DWORD dwLastUserCode;
- DWORD m_dwMaxImageSize;
- bool m_lightOn;
- bool m_dupFlag4ExitCancel;
- ULONGLONG m_ullTS4Disconnect;
- private:
- BOOL GetCurImageName(CSimpleStringA& csImagName, bool bExt = false);
- BOOL DelAndGetNewFileName(CSimpleStringA& csfileName, bool bInBusiness = false);
- ErrorCodeEnum DeleteFileIfExisted(LPCTSTR fileName);
- ErrorCodeEnum GetDevStatusFromAdapter(HspsDevStatus& status, bool fromBusiness = false);
- // --Josephus at 16:33:57 20161214
- // to replace when JS
- // 0: disconnected;
- // 1: connected;
- // -1: invalid;
- int IsDevConnected()
- {
- if(!m_hDevHelper || !m_bOpened) return -1;
- HspsDevStatus status = {0};
- if(GetDevStatusFromAdapter(status) == Error_Succeed)
- return (status.isConnected == 0) ? 0 : 1;
- return -1;
- }
-
- void InitialMaxResizeValue();
- void ClearPictureFileSure(int nMask = 3)
- {
- if (!!(nMask & 1)) {
- CSimpleStringA strNoUsed(true);
- GetCurImageName(strNoUsed);
- DelAndGetNewFileName(strNoUsed);
- }
- if (!!(nMask & 2)) {
- CSimpleStringA strNoUsed(true);
- GetCurImageName(strNoUsed, true);
- DelAndGetNewFileName(strNoUsed);
- }
- }
- };
- class StartPreviewEvent : public FSMEvent
- {
- public:
- StartPreviewEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_STARTPREVIEW) {}
- ~StartPreviewEvent() {}
- SpReqAnsContext<HSPScannerService_StartPreview_Req, HSPScannerService_StartPreview_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_StartPreview).setAPI("StartPreviewEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class StopPreviewEvent : public FSMEvent
- {
- public:
- StopPreviewEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_STOPPREVIEW) {}
- ~StopPreviewEvent() {}
- SpReqAnsContext<HSPScannerService_CancelPreview_Req,
- HSPScannerService_CancelPreview_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_CancelPreview).setAPI("StopPreviewEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class ScanImageEvent : public FSMEvent
- {
- public:
- ScanImageEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SCANIMAGE) {}
- ~ScanImageEvent() {}
- SpReqAnsContext<HSPScannerService_ScanImage_Req,
- HSPScannerService_ScanImage_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImage).setAPI("ScanImageEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class ScanImageExEvent : public FSMEvent
- {
- public:
- ScanImageExEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SCANIMAGE_EX) {}
- ~ScanImageExEvent() {}
- SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
- HSPScannerService_ScanImageEx_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImageEx).setAPI("ScanImageExEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class ShowPropertyEvent : public FSMEvent
- {
- public:
- ShowPropertyEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SHOWPROPERTY) {}
- ~ShowPropertyEvent() {}
- SpReqAnsContext<HSPScannerService_ShowProperty_Req,
- HSPScannerService_ShowProperty_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ShowProperty).setAPI("ShowPropertyEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class SetPropertyEvent : public FSMEvent
- {
- public:
- SetPropertyEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SETPROPERTY) {}
- ~SetPropertyEvent() {}
- SpReqAnsContext<HSPScannerService_SetProperty_Req,
- HSPScannerService_SetProperty_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetProperty).setAPI("SetPropertyEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class SetWinPosEvent : public FSMEvent
- {
- public:
- SetWinPosEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SETWINPOS) {}
- ~SetWinPosEvent() {}
- SpReqAnsContext<HSPScannerService_SetWinPos_Req,
- HSPScannerService_SetWinPos_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetWinPos).setAPI("SetWinPosEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class GetDevStatusEvent : public FSMEvent
- {
- public:
- GetDevStatusEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_GETSTATUS) {}
- ~GetDevStatusEvent() {}
- SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
- HSPScannerService_GetDevStatus_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevStatus).setAPI("GetDevStatusEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- /** No use now [Gifur@2025318]*/
- class GetDevInfoEvent : public FSMEvent
- {
- public:
- GetDevInfoEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_GETINFO) {}
- ~GetDevInfoEvent() {}
- SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
- HSPScannerService_GetDevInfo_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevInfo).setAPI("GetDevInfoEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- /** JS Component [Gifur@20241112]*/
- namespace JS {
- class StartPreviewEvent : public FSMEvent
- {
- public:
- StartPreviewEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_STARTPREVIEW_JS) {}
- ~StartPreviewEvent() {}
- SpReqAnsContext<HSPScannerService_StartPreviewJS_Req, HSPScannerService_StartPreviewJS_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_StartPreviewJS).setAPI("StartPreviewEventJS")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("StartPreviewEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class CancelPreviewEvent : public FSMEvent
- {
- public:
- CancelPreviewEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_CANCELPREVIEW_JS) {}
- ~CancelPreviewEvent() {}
- SpReqAnsContext<HSPScannerService_CancelPreviewJS_Req, HSPScannerService_CancelPreviewJS_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_CancelPreviewJS).setAPI("CancelPreviewJSEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("CancelPreviewEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class ScanImageEvent : public FSMEvent
- {
- public:
- ScanImageEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SCANIMAGE_JS) {}
- ~ScanImageEvent() {}
- SpReqAnsContext<HSPScannerService_ScanImageJS_Req, HSPScannerService_ScanImageJS_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImageJS).setAPI("ScanImageJSEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("ScanImageEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- class SetParamEvent : public FSMEvent
- {
- public:
- SetParamEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SETPARAM_JS) {}
- ~SetParamEvent() {}
- SpReqAnsContext<HSPScannerService_SetParamJS_Req, HSPScannerService_SetParamJS_Ans>::Pointer m_ctx;
- CHSPScannerFSM* m_fsm;
- virtual void OnUnhandled()
- {
- if (m_ctx != NULL)
- {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetParamJS).setAPI("SetParamJSEvent")
- .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("SetParamEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
- m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
- }
- }
- };
- }
- /** JS Component Done [Gifur@20241112]*/
- struct InitTask : public ITaskSp
- {
- CHSPScannerFSM* fsm;
- InitTask(CHSPScannerFSM* f) : fsm(f) {}
- void Process()
- {
- const int ret = fsm->Initial();
- if (ret == 0) {
- FSMEvent* e = new FSMEvent(USER_EVT_INIT_FINISHED);
- fsm->PostEventFIFO(e);
- }
- else {
- FSMEvent* e = new FSMEvent(USER_EVT_GOTOHELL);
- fsm->PostEventFIFO(e);
- }
- }
- };
- struct StartPreviewTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_StartPreview_Req, HSPScannerService_StartPreview_Ans>::Pointer m_ctx;
- StartPreviewTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_STARTPREVIEW_FINISHED);
- pEvt->param1 = m_fsm->StartPreview(m_ctx);
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_StartPreview_Req,
- HSPScannerService_StartPreview_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct SetPropertyInPreviewTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_StartPreview_Req, HSPScannerService_StartPreview_Ans>::Pointer m_ctx;
- SetPropertyInPreviewTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_SETPROPERTYINVIEW_FINISHED);
- ErrorCodeEnum eRet;
- const int retCode = m_fsm->SetPreviewParam(m_ctx->Req.colorType, m_ctx->Req.rotateType, m_ctx->Req.scanType);
- if (retCode == 0)
- {
- eRet = Error_Succeed;
- }
- else {
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("SetPreviewParam return some wrong:0x%X", retCode);
- eRet = Error_DevCommFailed;
- }
- if (ISSUCCEEDED(eRet)) {
- pEvt->param1 = 0;
- m_ctx->Answer(eRet);
- }
- else {
- m_ctx->Answer(eRet, m_fsm->GetLastUserCode());
- pEvt->param1 = 1;
- }
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_StartPreview_Req,
- HSPScannerService_StartPreview_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct StopPreviewTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_CancelPreview_Req,
- HSPScannerService_CancelPreview_Ans>::Pointer m_ctx;
- StopPreviewTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_STOPPREVIEW_FINISHED);
- pEvt->param1 = m_fsm->StopPreview(m_ctx);
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_CancelPreview_Req,
- HSPScannerService_CancelPreview_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct ScanImageTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_ScanImage_Req,
- HSPScannerService_ScanImage_Ans>::Pointer m_ctx;
- ScanImageTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_SCANIMAGEFINISHED);
- pEvt->param1 = m_fsm->ScanImage(m_ctx);
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_ScanImage_Req,
- HSPScannerService_ScanImage_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct ScanImageExTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
- HSPScannerService_ScanImageEx_Ans>::Pointer m_ctx;
- ScanImageExTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_SCANIMAGEFINISHED);
- pEvt->param1 = m_fsm->ScanImageEx(m_ctx);
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
- HSPScannerService_ScanImageEx_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct ShowPropertyTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_ShowProperty_Req,
- HSPScannerService_ShowProperty_Ans>::Pointer m_ctx;
- ShowPropertyTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_SHOWPROPERTY_FINISHED);
- pEvt->param1 = m_fsm->ShowProperty(m_ctx);
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_ShowProperty_Req,
- HSPScannerService_ShowProperty_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct SetPropertyTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_SetProperty_Req,
- HSPScannerService_SetProperty_Ans>::Pointer m_ctx;
- SetPropertyTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- m_fsm->SetProperty(m_ctx);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_SetProperty_Req,
- HSPScannerService_SetProperty_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct SetWinPosTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_SetWinPos_Req,
- HSPScannerService_SetWinPos_Ans>::Pointer m_ctx;
- SetWinPosTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- m_fsm->SetWinPos(m_ctx);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_SetWinPos_Req,
- HSPScannerService_SetWinPos_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct GetDevStatusTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
- HSPScannerService_GetDevStatus_Ans>::Pointer m_ctx;
- GetDevStatusTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- m_fsm->GetDevStatus(m_ctx);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
- HSPScannerService_GetDevStatus_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct GetDevInfoTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
- HSPScannerService_GetDevInfo_Ans>::Pointer m_ctx;
- GetDevInfoTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
- void Process()
- {
- m_fsm->GetDevInfo(m_ctx);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
- HSPScannerService_GetDevInfo_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct ExitClearTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- ExitClearTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_EXIT_FINISHED);
- if (ISSUCCEEDED(m_fsm->OnDevExit())) {
- pEvt->param1 = 0;
- }
- else {
- pEvt->param1 = 1;
- }
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- };
- /** JS Compoent [Gifur@20241112]*/
- namespace JS {
- struct StartPreviewTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_StartPreviewJS_Req, HSPScannerService_StartPreviewJS_Ans>::Pointer m_ctx;
- StartPreviewTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_STARTPREVIEW_JS_DONE);
- pEvt->param1 = m_fsm->StartPreviewJS(m_ctx);
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_StartPreviewJS_Req,
- HSPScannerService_StartPreviewJS_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct CancelPreviewTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_CancelPreviewJS_Req, HSPScannerService_CancelPreviewJS_Ans>::Pointer m_ctx;
- CancelPreviewTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_CANCELPREVIEW_JS_DONE);
- pEvt->param1 = m_fsm->CancelPreview(m_ctx);
- pEvt->param2 = m_ctx->Req.hide ? 1 : 0;
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_CancelPreviewJS_Req,
- HSPScannerService_CancelPreviewJS_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct ScanImageTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_ScanImageJS_Req, HSPScannerService_ScanImageJS_Ans>::Pointer m_ctx;
- ScanImageTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
- void Process()
- {
- FSMEvent* pEvt = new FSMEvent(USER_EVT_SCANIMAGE_JS_DONE);
- ////0,succ;1 failed;
- pEvt->param1 = m_fsm->ScanImageJS(m_ctx);
- ///1 说明隐藏,0说明关闭
- pEvt->param2 = m_ctx->Req.hide ? 1 : 0;
- m_fsm->PostEventFIFO(pEvt);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_ScanImageJS_Req,
- HSPScannerService_ScanImageJS_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- struct SetParamTask : public ITaskSp
- {
- CHSPScannerFSM* m_fsm;
- SpReqAnsContext<HSPScannerService_SetParamJS_Req, HSPScannerService_SetParamJS_Ans>::Pointer m_ctx;
- SetParamTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
- void Process()
- {
- m_fsm->SetParam(m_ctx);
- return;
- }
- void SetContext(
- SpReqAnsContext<HSPScannerService_SetParamJS_Req,
- HSPScannerService_SetParamJS_Ans>::Pointer ctx)
- {
- m_ctx = ctx;
- return;
- }
- };
- }
- #endif //_HSPSCANNER_FSM_H_
|