|
@@ -21,23 +21,23 @@ using namespace HSPScanner;
|
|
|
#define ISSUCCEEDED(hr) ((hr) == Error_Succeed)
|
|
|
#define FAILURED(hr) (!(ISSUCCEEDED(hr)))
|
|
|
|
|
|
-#define SAFE_FREE_LIBRARY(hModule) \
|
|
|
- do { \
|
|
|
- if(hModule){ \
|
|
|
- FreeLibrary(hModule); \
|
|
|
- hModule = NULL; \
|
|
|
- } \
|
|
|
- }while(0)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
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,
|
|
@@ -64,165 +64,41 @@ enum EvtType
|
|
|
USER_EVT_EXIT,
|
|
|
USER_EVT_EXIT_FINISHED,
|
|
|
|
|
|
- USER_EVT_NOCFG,
|
|
|
USER_EVT_GOTOHELL,
|
|
|
- USER_EVT_OPENSUCC,
|
|
|
-
|
|
|
- USER_EVT_QUIT
|
|
|
+ USER_EVT_QUIT,
|
|
|
+ USER_EVT_INIT,
|
|
|
+ USER_EVT_INIT_FINISHED
|
|
|
};
|
|
|
|
|
|
-class StartPreviewEvent : public FSMEvent
|
|
|
+namespace JS
|
|
|
{
|
|
|
-public:
|
|
|
- StartPreviewEvent() : FSMEvent(USER_EVT_STARTPREVIEW){}
|
|
|
- ~StartPreviewEvent(){}
|
|
|
- SpReqAnsContext<HSPScannerService_StartPreview_Req, HSPScannerService_StartPreview_Ans>::Pointer m_ctx;
|
|
|
- virtual void OnUnhandled()
|
|
|
+ struct PreviewSettings
|
|
|
{
|
|
|
- if(m_ctx != NULL)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_StartPreview).setResultCode("RTA2N0V")("Error_InvalidState");
|
|
|
- m_ctx->Answer(Error_InvalidState, HSPScanner_UserErrorCode_FSM_INVALID);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
+ short rotate;
|
|
|
+ short scan;
|
|
|
+ short color;
|
|
|
+ short pos;
|
|
|
+ short pos_x;
|
|
|
+ short pos_y;
|
|
|
+ short pos_w;
|
|
|
|
|
|
-class StopPreviewEvent : public FSMEvent
|
|
|
-{
|
|
|
-public:
|
|
|
- StopPreviewEvent() : FSMEvent(USER_EVT_STOPPREVIEW){}
|
|
|
- ~StopPreviewEvent(){}
|
|
|
- SpReqAnsContext<HSPScannerService_CancelPreview_Req,
|
|
|
- HSPScannerService_CancelPreview_Ans>::Pointer m_ctx;
|
|
|
- virtual void OnUnhandled()
|
|
|
- {
|
|
|
- if(m_ctx != NULL)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_CancelPreview).setResultCode("RTA2N0V")("Error_InvalidState");
|
|
|
- m_ctx->Answer(Error_InvalidState, HSPScanner_UserErrorCode_FSM_INVALID);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
+ //0:do nothing,1:show, 2:hide
|
|
|
+ short view;
|
|
|
|
|
|
-class ScanImageEvent : public FSMEvent
|
|
|
-{
|
|
|
-public:
|
|
|
- ScanImageEvent() : FSMEvent(USER_EVT_SCANIMAGE){}
|
|
|
- ~ScanImageEvent(){}
|
|
|
- SpReqAnsContext<HSPScannerService_ScanImage_Req,
|
|
|
- HSPScannerService_ScanImage_Ans>::Pointer m_ctx;
|
|
|
- virtual void OnUnhandled()
|
|
|
- {
|
|
|
- if(m_ctx != NULL)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImage).setResultCode("RTA2N0V")("Error_InvalidState");
|
|
|
- m_ctx->Answer(Error_InvalidState, HSPScanner_UserErrorCode_FSM_INVALID);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
+ 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) {}
|
|
|
|
|
|
-class ScanImageExEvent : public FSMEvent
|
|
|
-{
|
|
|
-public:
|
|
|
- ScanImageExEvent() : FSMEvent(USER_EVT_SCANIMAGE_EX){}
|
|
|
- ~ScanImageExEvent(){}
|
|
|
- SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
|
|
|
- HSPScannerService_ScanImageEx_Ans>::Pointer m_ctx;
|
|
|
- virtual void OnUnhandled()
|
|
|
- {
|
|
|
- if(m_ctx != NULL)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImageEx).setResultCode("RTA2N0V")("Error_InvalidState");
|
|
|
- m_ctx->Answer(Error_InvalidState, HSPScanner_UserErrorCode_FSM_INVALID);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
+ 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) {}
|
|
|
|
|
|
-class ShowPropertyEvent : public FSMEvent
|
|
|
-{
|
|
|
-public:
|
|
|
- ShowPropertyEvent() : FSMEvent(USER_EVT_SHOWPROPERTY){}
|
|
|
- ~ShowPropertyEvent(){}
|
|
|
- SpReqAnsContext<HSPScannerService_ShowProperty_Req,
|
|
|
- HSPScannerService_ShowProperty_Ans>::Pointer m_ctx;
|
|
|
- virtual void OnUnhandled()
|
|
|
- {
|
|
|
- if(m_ctx != NULL)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ShowProperty).setResultCode("RTA2N0V")("Error_InvalidState");
|
|
|
- m_ctx->Answer(Error_InvalidState, HSPScanner_UserErrorCode_FSM_INVALID);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
+ PreviewSettings(bool show) :rotate(0), scan(0), color(0), pos(0), pos_x(0), pos_y(0), pos_w(0), view(show ? 1 : 2) {}
|
|
|
|
|
|
-class SetPropertyEvent : public FSMEvent
|
|
|
-{
|
|
|
-public:
|
|
|
- SetPropertyEvent() : FSMEvent(USER_EVT_SETPROPERTY){}
|
|
|
- ~SetPropertyEvent(){}
|
|
|
- SpReqAnsContext<HSPScannerService_SetProperty_Req,
|
|
|
- HSPScannerService_SetProperty_Ans>::Pointer m_ctx;
|
|
|
- virtual void OnUnhandled()
|
|
|
- {
|
|
|
- if(m_ctx != NULL)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetProperty).setResultCode("RTA2N0V")("Error_InvalidState");
|
|
|
- m_ctx->Answer(Error_InvalidState, HSPScanner_UserErrorCode_FSM_INVALID);
|
|
|
+ bool IsAvailable() const {
|
|
|
+ return (rotate != 0 || scan != 0 || color != 0 || pos != 0);
|
|
|
}
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-class SetWinPosEvent : public FSMEvent
|
|
|
-{
|
|
|
-public:
|
|
|
- SetWinPosEvent() : FSMEvent(USER_EVT_SETWINPOS){}
|
|
|
- ~SetWinPosEvent(){}
|
|
|
- SpReqAnsContext<HSPScannerService_SetWinPos_Req,
|
|
|
- HSPScannerService_SetWinPos_Ans>::Pointer m_ctx;
|
|
|
- virtual void OnUnhandled()
|
|
|
- {
|
|
|
- if(m_ctx != NULL)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetWinPos).setResultCode("RTA2N0V")("Error_InvalidState");
|
|
|
- m_ctx->Answer(Error_InvalidState, HSPScanner_UserErrorCode_FSM_INVALID);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-class GetDevStatusEvent : public FSMEvent
|
|
|
-{
|
|
|
-public:
|
|
|
- GetDevStatusEvent() : FSMEvent(USER_EVT_GETSTATUS){}
|
|
|
- ~GetDevStatusEvent(){}
|
|
|
- SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
|
|
|
- HSPScannerService_GetDevStatus_Ans>::Pointer m_ctx;
|
|
|
- virtual void OnUnhandled()
|
|
|
- {
|
|
|
- if(m_ctx != NULL)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevStatus).setResultCode("RTA2N0V")("Error_InvalidState");
|
|
|
- m_ctx->Answer(Error_InvalidState, HSPScanner_UserErrorCode_FSM_INVALID);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
-class GetDevInfoEvent : public FSMEvent
|
|
|
-{
|
|
|
-public:
|
|
|
- GetDevInfoEvent() : FSMEvent(USER_EVT_GETINFO){}
|
|
|
- ~GetDevInfoEvent(){}
|
|
|
- SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
|
|
|
- HSPScannerService_GetDevInfo_Ans>::Pointer m_ctx;
|
|
|
- virtual void OnUnhandled()
|
|
|
- {
|
|
|
- if(m_ctx != NULL)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevInfo).setResultCode("RTA2N0V")("Error_InvalidState");
|
|
|
- m_ctx->Answer(Error_InvalidState, HSPScanner_UserErrorCode_FSM_INVALID);
|
|
|
- }
|
|
|
- }
|
|
|
-};
|
|
|
-
|
|
|
+ void SetDisplay(bool display) { if (display) view = 1; else view = 2; }
|
|
|
+ };
|
|
|
+}
|
|
|
|
|
|
class CHSPScannerFSM : public CCommDevFSM<CHSPScannerFSM, CHSPSClass>, public IFSMStateHooker
|
|
|
{
|
|
@@ -235,141 +111,181 @@ public:
|
|
|
|
|
|
void SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext);
|
|
|
|
|
|
- enum {s0, s1, s2, s3, s4, s5, s6, s7, s8};
|
|
|
+ enum {
|
|
|
+ sIdle, sPreview, sProperty, sFault, sPicture, sFault_Offline, sHidePreview, sExit, sInit
|
|
|
+ };
|
|
|
|
|
|
BEGIN_FSM_STATE(CHSPScannerFSM)
|
|
|
- FSM_STATE_ENTRY(s0, "Idle", s0_on_entry, s0_on_exit, s0_on_event)
|
|
|
- FSM_STATE_ENTRY(s1, "Previewing", s1_on_entry, s1_on_exit, s1_on_event)
|
|
|
- FSM_STATE_ENTRY(s2, "Property", s2_on_entry, s2_on_exit, s2_on_event)
|
|
|
- FSM_STATE_ENTRY(s3, "Failed", s3_on_entry, s3_on_exit, s3_on_event)
|
|
|
- FSM_STATE_ENTRY(s4, "Picturing", s4_on_entry, s4_on_exit, s4_on_event)
|
|
|
- FSM_STATE_ENTRY(s5, "DeviceOff", s5_on_entry, s5_on_exit, s5_on_event)
|
|
|
- FSM_STATE_ENTRY(s6, "HidPreviewing", s6_on_entry, s6_on_exit, s6_on_event)
|
|
|
- FSM_STATE_ENTRY(s7, "Exit", s7_on_entry, s7_on_exit, s7_on_event)
|
|
|
- FSM_STATE_ENTRY(s8, "Idiot", s8_on_entry, s8_on_exit, s8_on_event)
|
|
|
+ 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, s0)
|
|
|
- //2 reserved in s0 state.
|
|
|
- FSM_RULE_ENTRY(s0, s1, USER_EVT_STARTPREVIEW_FINISHED, 0)
|
|
|
- FSM_RULE_ENTRY(s0, s3, USER_EVT_STARTPREVIEW_FINISHED, 1)
|
|
|
- FSM_RULE_ENTRY(s0, s0, USER_EVT_STARTPREVIEW_FINISHED, 2)
|
|
|
+ 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(s3, s1, USER_EVT_STARTPREVIEW_FINISHED, 0)
|
|
|
- FSM_RULE_ENTRY(s3, s0, USER_EVT_RESET, 0)
|
|
|
- FSM_RULE_ENTRY(s3, s3, USER_EVT_RESET, 1)
|
|
|
- FSM_RULE_ENTRY(s3, s1, USER_EVT_RESET, 2)
|
|
|
- FSM_RULE_ENTRY_ANY(s3, s0, USER_EVT_OPENSUCC)
|
|
|
+ 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(s1, s2, USER_EVT_SHOWPROPERTY, 0)
|
|
|
- FSM_RULE_ENTRY_ANY(s2, s1, USER_EVT_SHOWPROPERTY_FINISHED)
|
|
|
+ FSM_RULE_ENTRY(sPreview, sProperty, USER_EVT_SHOWPROPERTY, 0)
|
|
|
+ FSM_RULE_ENTRY_ANY(sProperty, sPreview, USER_EVT_SHOWPROPERTY_FINISHED)
|
|
|
|
|
|
- //3 reserved in s1 state.
|
|
|
- FSM_RULE_ENTRY(s1, s3, USER_EVT_STOPPREVIEW_FINISHED, 0)
|
|
|
- FSM_RULE_ENTRY(s1, s3, USER_EVT_STOPPREVIEW_FINISHED, 4)
|
|
|
+ //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)
|
|
|
|
|
|
- // Try s6 state --Josephus at 10:10:05 2016/11/22
|
|
|
- //FSM_RULE_ENTRY(s1, s0, USER_EVT_STOPPREVIEW_FINISHED, 1) //隐藏
|
|
|
- FSM_RULE_ENTRY(s1, s6, USER_EVT_STOPPREVIEW_FINISHED, 1)
|
|
|
+ // Try sHidePreview state --Josephus at 10:10:05 2016/11/22
|
|
|
+ //FSM_RULE_ENTRY(sPreview, sIdle, USER_EVT_STOPPREVIEW_FINISHED, 1) //隐藏
|
|
|
+ FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_STOPPREVIEW_FINISHED, 1)
|
|
|
|
|
|
- FSM_RULE_ENTRY(s1, s0, USER_EVT_STOPPREVIEW_FINISHED, 2) //关闭预览
|
|
|
- FSM_RULE_ENTRY(s1, s1, USER_EVT_STOPPREVIEW_FINISHED, 3) //错误还不足够严重
|
|
|
+ FSM_RULE_ENTRY(sPreview, sIdle, USER_EVT_STOPPREVIEW_FINISHED, 2) //关闭预览
|
|
|
+ FSM_RULE_ENTRY(sPreview, sPreview, USER_EVT_STOPPREVIEW_FINISHED, 3) //错误还不足够严重,停留在当前状态
|
|
|
|
|
|
- FSM_RULE_ENTRY(s1, s4, USER_EVT_SCANIMAGE, 0)
|
|
|
- FSM_RULE_ENTRY(s1, s4, USER_EVT_SCANIMAGE_EX, 0)
|
|
|
+ FSM_RULE_ENTRY(sPreview, sPicture, USER_EVT_SCANIMAGE, 0)
|
|
|
+ FSM_RULE_ENTRY(sPreview, sPicture, USER_EVT_SCANIMAGE_EX, 0)
|
|
|
|
|
|
- //5 reserved in s4 state.
|
|
|
- FSM_RULE_ENTRY(s4, s1, USER_EVT_SCANIMAGEFINISHED, 1) //删除旧照片获取照片名称失败
|
|
|
- FSM_RULE_ENTRY(s4, s3, USER_EVT_SCANIMAGEFINISHED, 2) //拍摄返回失败
|
|
|
- FSM_RULE_ENTRY(s4, s1, USER_EVT_SCANIMAGEFINISHED, 3) //EX 分配资源失败
|
|
|
- FSM_RULE_ENTRY(s4, s3, USER_EVT_SCANIMAGEFINISHED, 4) //打开照片文件失败
|
|
|
+ //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(s4, s1, USER_EVT_SCANIMAGEFINISHED, 0) //成功拍摄
|
|
|
- // Try s6 state. --Josephus at 11:13:02 2016/11/22
|
|
|
- FSM_RULE_ENTRY(s4, s6, USER_EVT_SCANIMAGEFINISHED, 6) //成功拍摄且做了隐藏操作
|
|
|
+ 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(s4, s1, USER_EVT_SCANIMAGEFINISHED, 5)
|
|
|
+ FSM_RULE_ENTRY(sPicture, sPreview, USER_EVT_SCANIMAGEFINISHED, 5)
|
|
|
|
|
|
- FSM_RULE_ENTRY_ANY(s3, s5, USER_EVT_DISCONNECT)
|
|
|
- FSM_RULE_ENTRY(s5, s0, EVT_TIMER, 1)
|
|
|
- FSM_RULE_ENTRY(s5, s1, EVT_TIMER, 2)
|
|
|
+ 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(s0, s5, USER_EVT_DISCONNECT, 0)
|
|
|
- FSM_RULE_ENTRY(s1, s5, USER_EVT_DISCONNECT, 0)
|
|
|
- FSM_RULE_ENTRY(s4, s5, USER_EVT_DISCONNECT, 0)
|
|
|
- FSM_RULE_ENTRY(s6, s5, USER_EVT_DISCONNECT, 0)
|
|
|
+ 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(s6, s1, USER_EVT_STARTPREVIEW_FINISHED, 0) //成功预览
|
|
|
- FSM_RULE_ENTRY(s6, s3, USER_EVT_STARTPREVIEW_FINISHED, 1) //预览失败
|
|
|
- FSM_RULE_ENTRY(s6, s6, USER_EVT_STARTPREVIEW_FINISHED, 2) // 错误还不足够严重
|
|
|
- FSM_RULE_ENTRY(s6, s0, USER_EVT_STOPPREVIEW_FINISHED, 2) //关闭预览
|
|
|
- FSM_RULE_ENTRY(s6, s3, USER_EVT_STOPPREVIEW_FINISHED, 0) //关闭预览失败
|
|
|
- FSM_RULE_ENTRY(s6, s6, USER_EVT_STOPPREVIEW_FINISHED, 3) //错误还不足够严重
|
|
|
+ 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_ANY(s1, s7, USER_EVT_EXIT)
|
|
|
- FSM_RULE_ENTRY_ANY(s2, s7, USER_EVT_EXIT)
|
|
|
- FSM_RULE_ENTRY_ANY(s6, s7, USER_EVT_EXIT)
|
|
|
- FSM_RULE_ENTRY(s7, s0, USER_EVT_EXIT_FINISHED, 0)
|
|
|
- FSM_RULE_ENTRY(s7, s3, USER_EVT_EXIT_FINISHED, 1)
|
|
|
+ FSM_RULE_ENTRY_ANY(sPreview, sExit, USER_EVT_EXIT)
|
|
|
+ FSM_RULE_ENTRY_ANY(sProperty, sExit, USER_EVT_EXIT)
|
|
|
+ FSM_RULE_ENTRY_ANY(sHidePreview, sExit, USER_EVT_EXIT)
|
|
|
+ FSM_RULE_ENTRY(sExit, sIdle, USER_EVT_EXIT_FINISHED, 0)
|
|
|
+ FSM_RULE_ENTRY(sExit, sPreview, USER_EVT_EXIT_FINISHED, 2)
|
|
|
+ FSM_RULE_ENTRY(sExit, sHidePreview, USER_EVT_EXIT_FINISHED, 3)
|
|
|
+ FSM_RULE_ENTRY(sExit, sFault_Offline, USER_EVT_EXIT_FINISHED, 4)
|
|
|
+
|
|
|
+ FSM_RULE_ENTRY(sExit, sFault, USER_EVT_EXIT_FINISHED, 1)
|
|
|
+
|
|
|
+ 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)
|
|
|
+
|
|
|
+ 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_ANY(sPreview, sExit, EVT_MAINPAGE_DISPLAY)
|
|
|
+ FSM_RULE_ENTRY_ANY(sHidePreview, sExit, EVT_MAINPAGE_DISPLAY)
|
|
|
+ /** JS Compoent Done [Gifur@20241114]*/
|
|
|
+
|
|
|
+ FSM_RULE_ENTRY_ANY(sInit, sIdle, USER_EVT_INIT_FINISHED)
|
|
|
+ FSM_RULE_ENTRY_ANY(sInit, sFault, USER_EVT_GOTOHELL)
|
|
|
|
|
|
- FSM_RULE_ENTRY_ANY(s0, s8, USER_EVT_NOCFG)
|
|
|
- FSM_RULE_ENTRY_ANY(s0, s3, USER_EVT_GOTOHELL)
|
|
|
-
|
|
|
END_FSM_RULE()
|
|
|
|
|
|
- virtual void s0_on_entry();
|
|
|
- virtual void s0_on_exit();
|
|
|
- virtual unsigned int s0_on_event(FSMEvent* e);
|
|
|
+ virtual void s0_Idle_on_entry();
|
|
|
+ virtual void s0_Idle_on_exit();
|
|
|
+ virtual unsigned int s0_Idle_on_event(FSMEvent* e);
|
|
|
|
|
|
- virtual void s1_on_entry();
|
|
|
- virtual void s1_on_exit();
|
|
|
- virtual unsigned int s1_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_on_entry();
|
|
|
- virtual void s3_on_exit();
|
|
|
- virtual unsigned int s3_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_on_entry();
|
|
|
- virtual void s4_on_exit();
|
|
|
- virtual unsigned int s4_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_on_entry();
|
|
|
- virtual void s5_on_exit();
|
|
|
- virtual unsigned int s5_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_on_entry();
|
|
|
- virtual void s6_on_exit();
|
|
|
- virtual unsigned int s6_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_on_entry();
|
|
|
- virtual void s7_on_exit();
|
|
|
- virtual unsigned int s7_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_on_entry() {
|
|
|
- SetDevState(DEVICE_STATUS_NOCFG);
|
|
|
- SetLastUserCode(HSPScanner_UserErrorCode_DLLNAME_NOCFG);
|
|
|
- }
|
|
|
- virtual void s8_on_exit() {
|
|
|
- SetDevState(DEVICE_STATUS_NORMAL);
|
|
|
- }
|
|
|
- virtual unsigned int s8_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);
|
|
|
+ bool ResizeImage(const CSimpleStringA& fileName, int kbSize);
|
|
|
|
|
|
int ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
|
|
|
HSPScannerService_ScanImage_Ans>::Pointer ctx);
|
|
@@ -402,41 +318,40 @@ public:
|
|
|
{
|
|
|
return dwLastUserCode;
|
|
|
}
|
|
|
- LPCTSTR MapCode2RTAString(DWORD dwValue = 0);
|
|
|
|
|
|
int SetPreviewParam(int colorType, int rotateType, int scanType, bool abortIfFault = false);
|
|
|
|
|
|
-private:
|
|
|
- int m_version, m_batch;
|
|
|
+ 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;
|
|
|
- DWORD m_dwErroCode;
|
|
|
- BOOL m_bOperating;
|
|
|
- int m_nTickTimes;
|
|
|
int m_nFatalTimes;
|
|
|
int m_nSrcState;
|
|
|
-
|
|
|
int m_nRecX, m_nRecY, m_nRecW;
|
|
|
|
|
|
EvtType m_desiredAction;
|
|
|
- CSimpleStringA m_csMachineType;
|
|
|
- DevCategoryInfo m_devCat;
|
|
|
- CSimpleStringA m_csDevNo;
|
|
|
-
|
|
|
DWORD dwLastUserCode;
|
|
|
DWORD m_dwMaxImageSize;
|
|
|
-
|
|
|
-public:
|
|
|
-
|
|
|
- DWORD GetCustLastErrorCode() { return m_dwErroCode; }
|
|
|
- void SetCustLastErrorCode(DWORD dwVal = 0) { m_dwErroCode = dwVal; }
|
|
|
- ErrorCodeEnum TryToOpenDevice();
|
|
|
+ bool m_lightOn;
|
|
|
|
|
|
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;
|
|
@@ -444,17 +359,289 @@ private:
|
|
|
{
|
|
|
if(!m_hDevHelper || !m_bOpened) return -1;
|
|
|
HspsDevStatus status = {0};
|
|
|
- if(m_hDevHelper->GetDevStatus(status) == Error_Succeed)
|
|
|
- {
|
|
|
- if(status.isConnected == 0)
|
|
|
- return 0;
|
|
|
- else
|
|
|
- return 1;
|
|
|
- }
|
|
|
+ if(GetDevStatusFromAdapter(status) == Error_Succeed)
|
|
|
+ return (status.isConnected == 0) ? 0 : 1;
|
|
|
return -1;
|
|
|
}
|
|
|
|
|
|
void InitialMaxResizeValue();
|
|
|
+
|
|
|
+ void ClearPictureFileSure()
|
|
|
+ {
|
|
|
+ CSimpleStringA strNoUsed(true);
|
|
|
+ GetCurImageName(strNoUsed);
|
|
|
+ DelAndGetNewFileName(strNoUsed);
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("StartPreviewEvent::Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("CancelPreviewEvent::Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("ScanImageEvent::Error_InvalidState");
|
|
|
+ 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)
|
|
|
+ .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("SetParamEvent::Error_InvalidState");
|
|
|
+ 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
|
|
@@ -517,7 +704,6 @@ struct SetPropertyInPreviewTask : public ITaskSp
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-
|
|
|
struct StopPreviewTask : public ITaskSp
|
|
|
{
|
|
|
CHSPScannerFSM* m_fsm;
|
|
@@ -686,18 +872,112 @@ struct GetDevInfoTask : public ITaskSp
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-struct OpenDeviceTask : public ITaskSp
|
|
|
+struct ExitClearTask : public ITaskSp
|
|
|
{
|
|
|
CHSPScannerFSM* m_fsm;
|
|
|
- OpenDeviceTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
|
|
|
+ ExitClearTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
|
|
|
void Process()
|
|
|
{
|
|
|
- if (!m_fsm->m_bOpened) {
|
|
|
- if (Error_Succeed == m_fsm->TryToOpenDevice()) {
|
|
|
- m_fsm->PostEventFIFO(new FSMEvent(USER_EVT_OPENSUCC));
|
|
|
- }
|
|
|
+ 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_
|