HSPScannerFSM.h 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986
  1. #ifndef _HSPSCANNER_FSM_H_
  2. #define _HSPSCANNER_FSM_H_
  3. #pragma once
  4. #include "SpFSM.h"
  5. #include "HSPScannerClass.h"
  6. #include "HSPScanner_server_g.h"
  7. #include "DevFSMCommBase.hpp"
  8. #include "HSPSCanner_UserErrorCode.h"
  9. #if defined(_MSC_VER)
  10. #include <xstring>
  11. using namespace std;
  12. #else
  13. #include "DevErrorCode.h"
  14. #endif //_MSC_VER
  15. using namespace HSPScanner;
  16. #define ISSUCCEEDED(hr) ((hr) == Error_Succeed)
  17. #define FAILURED(hr) (!(ISSUCCEEDED(hr)))
  18. enum EvtType
  19. {
  20. USER_EVT_STARTPREVIEW = (EVT_USER + 1),
  21. USER_EVT_STARTPREVIEW_FINISHED,
  22. USER_EVT_SETPROPERTYINVIEW_FINISHED,
  23. USER_EVT_STARTPREVIEW_JS,
  24. USER_EVT_STARTPREVIEW_JS_DONE,
  25. USER_EVT_CANCELPREVIEW_JS,
  26. USER_EVT_CANCELPREVIEW_JS_DONE,
  27. USER_EVT_SCANIMAGE_JS,
  28. USER_EVT_SCANIMAGE_JS_DONE,
  29. USER_EVT_SETPARAM_JS,
  30. USER_EVT_STOPPREVIEW,
  31. USER_EVT_HIDEPREVIEW,
  32. USER_EVT_STOPPREVIEW_FINISHED,
  33. USER_EVT_SETWINPOS,
  34. USER_EVT_SETWINPOSFINISHED,
  35. USER_EVT_SCANIMAGE,
  36. USER_EVT_SCANIMAGE_EX,
  37. USER_EVT_SCANIMAGEFINISHED,
  38. USER_EVT_SHOWPROPERTY,
  39. USER_EVT_SHOWPROPERTY_FINISHED,
  40. USER_EVT_SETPROPERTY,
  41. USER_EVT_SETPROPERTY_FINISHED,
  42. USER_EVT_GETSTATUS,
  43. USER_EVT_GETINFO,
  44. USER_EVT_DISCONNECT,
  45. USER_EVT_RESET,
  46. USER_EVT_EXIT,
  47. USER_EVT_EXIT_FINISHED,
  48. USER_EVT_GOTOHELL,
  49. USER_EVT_QUIT,
  50. USER_EVT_INIT,
  51. USER_EVT_INIT_FINISHED
  52. };
  53. namespace JS
  54. {
  55. struct PreviewSettings
  56. {
  57. short rotate;
  58. short scan;
  59. short color;
  60. short pos;
  61. short pos_x;
  62. short pos_y;
  63. short pos_w;
  64. //0:do nothing,1:show, 2:hide
  65. short view;
  66. PreviewSettings(const HSPScannerService_SetParamJS_Req& rhs) :rotate(rhs.rotate), scan(rhs.scan), color(rhs.color), pos(rhs.pos)
  67. , pos_x(rhs.pos_x), pos_y(rhs.pos_y), pos_w(rhs.pos_w),view(0) {}
  68. PreviewSettings(const HSPScannerService_StartPreviewJS_Req& rhs) :rotate(rhs.rotate), scan(rhs.scan), color(rhs.color), pos(rhs.pos)
  69. , pos_x(rhs.pos_x), pos_y(rhs.pos_y), pos_w(rhs.pos_w),view(0) {}
  70. PreviewSettings(bool show) :rotate(0), scan(0), color(0), pos(0), pos_x(0), pos_y(0), pos_w(0), view(show ? 1 : 2) {}
  71. bool IsAvailable() const {
  72. return (rotate != 0 || scan != 0 || color != 0 || pos != 0);
  73. }
  74. void SetDisplay(bool display) { if (display) view = 1; else view = 2; }
  75. };
  76. }
  77. class CHSPScannerFSM : public CCommDevFSM<CHSPScannerFSM, CHSPSClass>, public IFSMStateHooker
  78. {
  79. public:
  80. CHSPScannerFSM(void);
  81. ~CHSPScannerFSM(void);
  82. virtual ErrorCodeEnum OnInit();
  83. virtual ErrorCodeEnum OnExit();
  84. void SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext);
  85. enum {
  86. sIdle, sPreview, sProperty, sFault, sPicture, sFault_Offline, sHidePreview, sExit, sInit
  87. };
  88. BEGIN_FSM_STATE(CHSPScannerFSM)
  89. FSM_STATE_ENTRY(sIdle, "Idle", s0_Idle_on_entry, s0_Idle_on_exit, s0_Idle_on_event)
  90. FSM_STATE_ENTRY(sPreview, "Previewing", s1_Preview_on_entry, s1_Preview_on_exit, s1_Preview_on_event)
  91. FSM_STATE_ENTRY(sProperty, "Property", s2_on_entry, s2_on_exit, s2_on_event)
  92. FSM_STATE_ENTRY(sFault, "Failed", s3_Failed_on_entry, s3_Failed_on_exit, s3_Failed_on_event)
  93. FSM_STATE_ENTRY(sPicture, "Picturing", s4_ScanImage_on_entry, s4_ScanImage_on_exit, s4_ScanImage_on_event)
  94. FSM_STATE_ENTRY(sFault_Offline, "DeviceOff", s5_DeviceOff_on_entry, s5_DeviceOff_on_exit, s5_DeviceOff_on_event)
  95. FSM_STATE_ENTRY(sHidePreview, "HidePreview", s6_HidePreview_on_entry, s6_HidePreview_on_exit, s6_HidePreview_on_event)
  96. FSM_STATE_ENTRY(sExit, "Exit", s7_Exit_on_entry, s7_Exit_on_exit, s7_Exit_on_event)
  97. FSM_STATE_ENTRY(sInit, "Init", s8_Init_on_entry, s8_Init_on_exit, s8_Init_on_event)
  98. END_FSM_STATE()
  99. BEGIN_FSM_RULE(CHSPScannerFSM, sIdle)
  100. //2 reserved in sIdle state.
  101. FSM_RULE_ENTRY(sIdle, sPreview, USER_EVT_STARTPREVIEW_FINISHED, 0) //成功预览
  102. FSM_RULE_ENTRY(sIdle, sFault, USER_EVT_STARTPREVIEW_FINISHED, 1) //预览失败
  103. FSM_RULE_ENTRY(sIdle, sIdle, USER_EVT_STARTPREVIEW_FINISHED, 2) // 错误还不足够严重,停留在当前状态
  104. FSM_RULE_ENTRY(sFault, sPreview, USER_EVT_STARTPREVIEW_FINISHED, 0)
  105. FSM_RULE_ENTRY(sFault, sIdle, USER_EVT_RESET, 0)
  106. //FSM_RULE_ENTRY(sFault, sFault, USER_EVT_RESET, 1)
  107. FSM_RULE_ENTRY(sFault, sPreview, USER_EVT_RESET, 2)
  108. FSM_RULE_ENTRY(sPreview, sProperty, USER_EVT_SHOWPROPERTY, 0)
  109. FSM_RULE_ENTRY_ANY(sProperty, sPreview, USER_EVT_SHOWPROPERTY_FINISHED)
  110. //3 reserved in sPreview state.
  111. FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_STOPPREVIEW_FINISHED, 0)
  112. FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_STOPPREVIEW_FINISHED, 4)
  113. FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_STOPPREVIEW_FINISHED, 1)
  114. FSM_RULE_ENTRY(sPreview, sIdle, USER_EVT_STOPPREVIEW_FINISHED, 2) //关闭预览
  115. FSM_RULE_ENTRY(sPreview, sPreview, USER_EVT_STOPPREVIEW_FINISHED, 3) //错误还不足够严重,停留在当前状态
  116. FSM_RULE_ENTRY(sPreview, sPicture, USER_EVT_SCANIMAGE, 0)
  117. FSM_RULE_ENTRY(sPreview, sPicture, USER_EVT_SCANIMAGE_EX, 0)
  118. //5 reserved in sPicture state.
  119. FSM_RULE_ENTRY(sPicture, sPreview, USER_EVT_SCANIMAGEFINISHED, 1) //删除旧照片获取照片名称失败
  120. FSM_RULE_ENTRY(sPicture, sFault, USER_EVT_SCANIMAGEFINISHED, 2) //拍摄返回失败
  121. FSM_RULE_ENTRY(sPicture, sPreview, USER_EVT_SCANIMAGEFINISHED, 3) //EX 分配资源失败
  122. FSM_RULE_ENTRY(sPicture, sFault, USER_EVT_SCANIMAGEFINISHED, 4) //打开照片文件失败
  123. FSM_RULE_ENTRY(sPicture, sPreview, USER_EVT_SCANIMAGEFINISHED, 0) //成功拍摄
  124. // Try sHidePreview state. --Josephus at 11:13:02 2016/11/22
  125. FSM_RULE_ENTRY(sPicture, sHidePreview, USER_EVT_SCANIMAGEFINISHED, 6) //成功拍摄且做了隐藏操作
  126. FSM_RULE_ENTRY(sPicture, sPreview, USER_EVT_SCANIMAGEFINISHED, 5)
  127. FSM_RULE_ENTRY_ANY(sFault, sFault_Offline, USER_EVT_DISCONNECT)
  128. FSM_RULE_ENTRY(sFault_Offline, sIdle, EVT_TIMER, 1)
  129. FSM_RULE_ENTRY(sFault_Offline, sPreview, EVT_TIMER, 2)
  130. FSM_RULE_ENTRY(sFault_Offline, sHidePreview, EVT_TIMER, 3)
  131. FSM_RULE_ENTRY(sIdle, sFault_Offline, USER_EVT_DISCONNECT, 0)
  132. FSM_RULE_ENTRY(sPreview, sFault_Offline, USER_EVT_DISCONNECT, 0)
  133. FSM_RULE_ENTRY(sPicture, sFault_Offline, USER_EVT_DISCONNECT, 0)
  134. FSM_RULE_ENTRY(sHidePreview, sFault_Offline, USER_EVT_DISCONNECT, 0)
  135. FSM_RULE_ENTRY(sHidePreview, sPreview, USER_EVT_STARTPREVIEW_FINISHED, 0) //成功预览
  136. FSM_RULE_ENTRY(sHidePreview, sFault, USER_EVT_STARTPREVIEW_FINISHED, 1) //预览失败
  137. FSM_RULE_ENTRY(sHidePreview, sHidePreview, USER_EVT_STARTPREVIEW_FINISHED, 2) // 错误还不足够严重,停留在当前状态
  138. FSM_RULE_ENTRY(sHidePreview, sIdle, USER_EVT_STOPPREVIEW_FINISHED, 2) //关闭预览
  139. FSM_RULE_ENTRY(sHidePreview, sFault, USER_EVT_STOPPREVIEW_FINISHED, 0) //关闭预览失败
  140. FSM_RULE_ENTRY(sHidePreview, sHidePreview, USER_EVT_STOPPREVIEW_FINISHED, 3) //错误还不足够严重,停留在当前状态
  141. FSM_RULE_ENTRY(sPreview, sExit, USER_EVT_EXIT, 0)
  142. FSM_RULE_ENTRY_ANY(sProperty, sExit, USER_EVT_EXIT)
  143. FSM_RULE_ENTRY(sHidePreview, sExit, USER_EVT_EXIT, 0)
  144. FSM_RULE_ENTRY(sExit, sIdle, USER_EVT_EXIT_FINISHED, 0)
  145. FSM_RULE_ENTRY(sExit, sFault, USER_EVT_EXIT_FINISHED, 1)
  146. FSM_RULE_ENTRY(sExit, sPreview, USER_EVT_EXIT_FINISHED, 2) //TODO: remove it [Gifur@202565]
  147. FSM_RULE_ENTRY(sExit, sHidePreview, USER_EVT_EXIT_FINISHED, 3) //TODO: remove it [Gifur@202565]
  148. FSM_RULE_ENTRY(sExit, sFault_Offline, USER_EVT_EXIT_FINISHED, 4) //TODO: remove it [Gifur@202565]
  149. FSM_RULE_ENTRY_ANY(sIdle, sInit, USER_EVT_INIT)
  150. FSM_RULE_ENTRY_ANY(sIdle, sFault, USER_EVT_GOTOHELL)
  151. /** JS Compoent [Gifur@20241114]*/
  152. FSM_RULE_ENTRY(sIdle, sPreview, USER_EVT_STARTPREVIEW_JS_DONE, 0)
  153. FSM_RULE_ENTRY(sIdle, sFault, USER_EVT_STARTPREVIEW_JS_DONE, 1) //预览失败
  154. FSM_RULE_ENTRY(sIdle, sIdle, USER_EVT_STARTPREVIEW_JS_DONE, 2) // 错误还不足够严重,停留在当前状态
  155. FSM_RULE_ENTRY(sHidePreview, sPreview, USER_EVT_STARTPREVIEW_JS, 1)
  156. FSM_RULE_ENTRY(sPreview, sIdle, USER_EVT_CANCELPREVIEW_JS_DONE, 1) //取消预览成功
  157. FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_CANCELPREVIEW_JS_DONE, 2) //隐藏成功
  158. FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_CANCELPREVIEW_JS_DONE, 4)//TODO: remove it [Gifur@202565]
  159. FSM_RULE_ENTRY(sHidePreview, sIdle, USER_EVT_CANCELPREVIEW_JS_DONE, 0)
  160. FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_SCANIMAGE_JS_DONE, 2)
  161. FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_SCANIMAGE_JS_DONE, 4)
  162. FSM_RULE_ENTRY(sPreview, sExit, EVT_MAINPAGE_DISPLAY, 0)
  163. FSM_RULE_ENTRY(sHidePreview, sExit, EVT_MAINPAGE_DISPLAY, 0)
  164. /** JS Compoent Done [Gifur@20241114]*/
  165. FSM_RULE_ENTRY_ANY(sInit, sIdle, USER_EVT_INIT_FINISHED)
  166. FSM_RULE_ENTRY_ANY(sInit, sFault, USER_EVT_GOTOHELL)
  167. END_FSM_RULE()
  168. virtual void s0_Idle_on_entry();
  169. virtual void s0_Idle_on_exit();
  170. virtual unsigned int s0_Idle_on_event(FSMEvent* e);
  171. virtual void s1_Preview_on_entry();
  172. virtual void s1_Preview_on_exit();
  173. virtual unsigned int s1_Preview_on_event(FSMEvent* e);
  174. virtual void s2_on_entry();
  175. virtual void s2_on_exit();
  176. virtual unsigned int s2_on_event(FSMEvent* e);
  177. virtual void s3_Failed_on_entry();
  178. virtual void s3_Failed_on_exit();
  179. virtual unsigned int s3_Failed_on_event(FSMEvent* e);
  180. virtual void s4_ScanImage_on_entry();
  181. virtual void s4_ScanImage_on_exit();
  182. virtual unsigned int s4_ScanImage_on_event(FSMEvent* e);
  183. virtual void s5_DeviceOff_on_entry();
  184. virtual void s5_DeviceOff_on_exit();
  185. virtual unsigned int s5_DeviceOff_on_event(FSMEvent* e);
  186. virtual void s6_HidePreview_on_entry();
  187. virtual void s6_HidePreview_on_exit();
  188. virtual unsigned int s6_HidePreview_on_event(FSMEvent* e);
  189. virtual void s7_Exit_on_entry();
  190. virtual void s7_Exit_on_exit();
  191. virtual unsigned int s7_Exit_on_event(FSMEvent* e);
  192. virtual void s8_Init_on_entry();
  193. virtual void s8_Init_on_exit();
  194. virtual unsigned int s8_Init_on_event(FSMEvent* e);
  195. virtual void OnStateTrans(int iSrcState, int iDstState);
  196. /** JS Component [Gifur@20241112]*/
  197. //0,succ;1 failed;
  198. int StartPreviewJS(SpReqAnsContext<HSPScannerService_StartPreviewJS_Req,
  199. HSPScannerService_StartPreviewJS_Ans>::Pointer ctx);
  200. //0,succ;1 failed;
  201. int CancelPreview(SpReqAnsContext<HSPScannerService_CancelPreviewJS_Req,
  202. HSPScannerService_CancelPreviewJS_Ans>::Pointer ctx);
  203. //0,succ;1 failed;
  204. int ScanImageJS(SpReqAnsContext<HSPScannerService_ScanImageJS_Req,
  205. HSPScannerService_ScanImageJS_Ans>::Pointer ctx);
  206. //0,succ;1 failed;
  207. int SetParam(SpReqAnsContext<HSPScannerService_SetParamJS_Req,
  208. HSPScannerService_SetParamJS_Ans>::Pointer ctx);
  209. /** JS Component Done [Gifur@20241112]*/
  210. //0,succ;1 failed
  211. int StartPreview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
  212. HSPScannerService_StartPreview_Ans>::Pointer ctx);
  213. //1隐藏成功;4:隐藏失败;2:取消预览成功;0:取消预览失败
  214. int StopPreview(SpReqAnsContext<HSPScannerService_CancelPreview_Req,
  215. HSPScannerService_CancelPreview_Ans>::Pointer ctx);
  216. bool ResizeImage(const CSimpleStringA& fileName, int kbSize, long& originSize, CSimpleStringA& retMsg);
  217. int ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
  218. HSPScannerService_ScanImage_Ans>::Pointer ctx);
  219. int ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
  220. HSPScannerService_ScanImageEx_Ans>::Pointer ctx);
  221. int ShowProperty(SpReqAnsContext<HSPScannerService_ShowProperty_Req,
  222. HSPScannerService_ShowProperty_Ans>::Pointer ctx);
  223. int SetProperty(SpReqAnsContext<HSPScannerService_SetProperty_Req,
  224. HSPScannerService_SetProperty_Ans>::Pointer ctx);
  225. int SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
  226. HSPScannerService_SetWinPos_Ans>::Pointer ctx);
  227. int GetDevStatus(SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
  228. HSPScannerService_GetDevStatus_Ans>::Pointer ctx);
  229. int GetDevInfo(SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
  230. HSPScannerService_GetDevInfo_Ans>::Pointer ctx);
  231. ErrorCodeEnum OnDevExit();
  232. void SetLastUserCode(DWORD dwCode = 0)
  233. {
  234. dwLastUserCode = dwCode;
  235. }
  236. DWORD GetLastUserCode() const
  237. {
  238. return dwLastUserCode;
  239. }
  240. int SetPreviewParam(int colorType, int rotateType, int scanType, bool abortIfFault = false);
  241. ErrorCodeEnum TryToOpenDevice();
  242. LPCTSTR MapCode2RTAString(DWORD dwValue);
  243. int Initial();
  244. protected:
  245. ErrorCodeEnum SetPreviewProperty(const JS::PreviewSettings& val, const char* logCode = "");
  246. void ToSwithLight(bool turnOn = true);
  247. private:
  248. ErrorCodeEnum m_ecSelfTest;
  249. int m_nFatalTimes;
  250. int m_nSrcState;
  251. int m_nRecX, m_nRecY, m_nRecW;
  252. EvtType m_desiredAction;
  253. DWORD dwLastUserCode;
  254. DWORD m_dwMaxImageSize;
  255. bool m_lightOn;
  256. bool m_dupFlag4ExitCancel;
  257. ULONGLONG m_ullTS4Disconnect;
  258. private:
  259. BOOL GetCurImageName(CSimpleStringA& csImagName, bool bExt = false);
  260. BOOL DelAndGetNewFileName(CSimpleStringA& csfileName, bool bInBusiness = false);
  261. ErrorCodeEnum DeleteFileIfExisted(LPCTSTR fileName);
  262. ErrorCodeEnum GetDevStatusFromAdapter(HspsDevStatus& status, bool fromBusiness = false);
  263. // --Josephus at 16:33:57 20161214
  264. // to replace when JS
  265. // 0: disconnected;
  266. // 1: connected;
  267. // -1: invalid;
  268. int IsDevConnected()
  269. {
  270. if(!m_hDevHelper || !m_bOpened) return -1;
  271. HspsDevStatus status = {0};
  272. if(GetDevStatusFromAdapter(status) == Error_Succeed)
  273. return (status.isConnected == 0) ? 0 : 1;
  274. return -1;
  275. }
  276. void InitialMaxResizeValue();
  277. void ClearPictureFileSure(int nMask = 3)
  278. {
  279. if (!!(nMask & 1)) {
  280. CSimpleStringA strNoUsed(true);
  281. GetCurImageName(strNoUsed);
  282. DelAndGetNewFileName(strNoUsed);
  283. }
  284. if (!!(nMask & 2)) {
  285. CSimpleStringA strNoUsed(true);
  286. GetCurImageName(strNoUsed, true);
  287. DelAndGetNewFileName(strNoUsed);
  288. }
  289. }
  290. };
  291. class StartPreviewEvent : public FSMEvent
  292. {
  293. public:
  294. StartPreviewEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_STARTPREVIEW) {}
  295. ~StartPreviewEvent() {}
  296. SpReqAnsContext<HSPScannerService_StartPreview_Req, HSPScannerService_StartPreview_Ans>::Pointer m_ctx;
  297. CHSPScannerFSM* m_fsm;
  298. virtual void OnUnhandled()
  299. {
  300. if (m_ctx != NULL)
  301. {
  302. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_StartPreview).setAPI("StartPreviewEvent")
  303. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  304. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  305. }
  306. }
  307. };
  308. class StopPreviewEvent : public FSMEvent
  309. {
  310. public:
  311. StopPreviewEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_STOPPREVIEW) {}
  312. ~StopPreviewEvent() {}
  313. SpReqAnsContext<HSPScannerService_CancelPreview_Req,
  314. HSPScannerService_CancelPreview_Ans>::Pointer m_ctx;
  315. CHSPScannerFSM* m_fsm;
  316. virtual void OnUnhandled()
  317. {
  318. if (m_ctx != NULL)
  319. {
  320. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_CancelPreview).setAPI("StopPreviewEvent")
  321. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  322. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  323. }
  324. }
  325. };
  326. class ScanImageEvent : public FSMEvent
  327. {
  328. public:
  329. ScanImageEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SCANIMAGE) {}
  330. ~ScanImageEvent() {}
  331. SpReqAnsContext<HSPScannerService_ScanImage_Req,
  332. HSPScannerService_ScanImage_Ans>::Pointer m_ctx;
  333. CHSPScannerFSM* m_fsm;
  334. virtual void OnUnhandled()
  335. {
  336. if (m_ctx != NULL)
  337. {
  338. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImage).setAPI("ScanImageEvent")
  339. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  340. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  341. }
  342. }
  343. };
  344. class ScanImageExEvent : public FSMEvent
  345. {
  346. public:
  347. ScanImageExEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SCANIMAGE_EX) {}
  348. ~ScanImageExEvent() {}
  349. SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
  350. HSPScannerService_ScanImageEx_Ans>::Pointer m_ctx;
  351. CHSPScannerFSM* m_fsm;
  352. virtual void OnUnhandled()
  353. {
  354. if (m_ctx != NULL)
  355. {
  356. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImageEx).setAPI("ScanImageExEvent")
  357. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  358. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  359. }
  360. }
  361. };
  362. class ShowPropertyEvent : public FSMEvent
  363. {
  364. public:
  365. ShowPropertyEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SHOWPROPERTY) {}
  366. ~ShowPropertyEvent() {}
  367. SpReqAnsContext<HSPScannerService_ShowProperty_Req,
  368. HSPScannerService_ShowProperty_Ans>::Pointer m_ctx;
  369. CHSPScannerFSM* m_fsm;
  370. virtual void OnUnhandled()
  371. {
  372. if (m_ctx != NULL)
  373. {
  374. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ShowProperty).setAPI("ShowPropertyEvent")
  375. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  376. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  377. }
  378. }
  379. };
  380. class SetPropertyEvent : public FSMEvent
  381. {
  382. public:
  383. SetPropertyEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SETPROPERTY) {}
  384. ~SetPropertyEvent() {}
  385. SpReqAnsContext<HSPScannerService_SetProperty_Req,
  386. HSPScannerService_SetProperty_Ans>::Pointer m_ctx;
  387. CHSPScannerFSM* m_fsm;
  388. virtual void OnUnhandled()
  389. {
  390. if (m_ctx != NULL)
  391. {
  392. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetProperty).setAPI("SetPropertyEvent")
  393. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  394. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  395. }
  396. }
  397. };
  398. class SetWinPosEvent : public FSMEvent
  399. {
  400. public:
  401. SetWinPosEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SETWINPOS) {}
  402. ~SetWinPosEvent() {}
  403. SpReqAnsContext<HSPScannerService_SetWinPos_Req,
  404. HSPScannerService_SetWinPos_Ans>::Pointer m_ctx;
  405. CHSPScannerFSM* m_fsm;
  406. virtual void OnUnhandled()
  407. {
  408. if (m_ctx != NULL)
  409. {
  410. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetWinPos).setAPI("SetWinPosEvent")
  411. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  412. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  413. }
  414. }
  415. };
  416. class GetDevStatusEvent : public FSMEvent
  417. {
  418. public:
  419. GetDevStatusEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_GETSTATUS) {}
  420. ~GetDevStatusEvent() {}
  421. SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
  422. HSPScannerService_GetDevStatus_Ans>::Pointer m_ctx;
  423. CHSPScannerFSM* m_fsm;
  424. virtual void OnUnhandled()
  425. {
  426. if (m_ctx != NULL)
  427. {
  428. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevStatus).setAPI("GetDevStatusEvent")
  429. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  430. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  431. }
  432. }
  433. };
  434. /** No use now [Gifur@2025318]*/
  435. class GetDevInfoEvent : public FSMEvent
  436. {
  437. public:
  438. GetDevInfoEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_GETINFO) {}
  439. ~GetDevInfoEvent() {}
  440. SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
  441. HSPScannerService_GetDevInfo_Ans>::Pointer m_ctx;
  442. CHSPScannerFSM* m_fsm;
  443. virtual void OnUnhandled()
  444. {
  445. if (m_ctx != NULL)
  446. {
  447. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevInfo).setAPI("GetDevInfoEvent")
  448. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  449. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  450. }
  451. }
  452. };
  453. /** JS Component [Gifur@20241112]*/
  454. namespace JS {
  455. class StartPreviewEvent : public FSMEvent
  456. {
  457. public:
  458. StartPreviewEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_STARTPREVIEW_JS) {}
  459. ~StartPreviewEvent() {}
  460. SpReqAnsContext<HSPScannerService_StartPreviewJS_Req, HSPScannerService_StartPreviewJS_Ans>::Pointer m_ctx;
  461. CHSPScannerFSM* m_fsm;
  462. virtual void OnUnhandled()
  463. {
  464. if (m_ctx != NULL)
  465. {
  466. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_StartPreviewJS).setAPI("StartPreviewEventJS")
  467. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("StartPreviewEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  468. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  469. }
  470. }
  471. };
  472. class CancelPreviewEvent : public FSMEvent
  473. {
  474. public:
  475. CancelPreviewEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_CANCELPREVIEW_JS) {}
  476. ~CancelPreviewEvent() {}
  477. SpReqAnsContext<HSPScannerService_CancelPreviewJS_Req, HSPScannerService_CancelPreviewJS_Ans>::Pointer m_ctx;
  478. CHSPScannerFSM* m_fsm;
  479. virtual void OnUnhandled()
  480. {
  481. if (m_ctx != NULL)
  482. {
  483. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_CancelPreviewJS).setAPI("CancelPreviewJSEvent")
  484. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("CancelPreviewEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  485. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  486. }
  487. }
  488. };
  489. class ScanImageEvent : public FSMEvent
  490. {
  491. public:
  492. ScanImageEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SCANIMAGE_JS) {}
  493. ~ScanImageEvent() {}
  494. SpReqAnsContext<HSPScannerService_ScanImageJS_Req, HSPScannerService_ScanImageJS_Ans>::Pointer m_ctx;
  495. CHSPScannerFSM* m_fsm;
  496. virtual void OnUnhandled()
  497. {
  498. if (m_ctx != NULL)
  499. {
  500. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImageJS).setAPI("ScanImageJSEvent")
  501. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("ScanImageEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  502. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  503. }
  504. }
  505. };
  506. class SetParamEvent : public FSMEvent
  507. {
  508. public:
  509. SetParamEvent(CHSPScannerFSM* val): m_fsm(val), FSMEvent(USER_EVT_SETPARAM_JS) {}
  510. ~SetParamEvent() {}
  511. SpReqAnsContext<HSPScannerService_SetParamJS_Req, HSPScannerService_SetParamJS_Ans>::Pointer m_ctx;
  512. CHSPScannerFSM* m_fsm;
  513. virtual void OnUnhandled()
  514. {
  515. if (m_ctx != NULL)
  516. {
  517. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetParamJS).setAPI("SetParamJSEvent")
  518. .setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("SetParamEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
  519. m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
  520. }
  521. }
  522. };
  523. }
  524. /** JS Component Done [Gifur@20241112]*/
  525. struct InitTask : public ITaskSp
  526. {
  527. CHSPScannerFSM* fsm;
  528. InitTask(CHSPScannerFSM* f) : fsm(f) {}
  529. void Process()
  530. {
  531. const int ret = fsm->Initial();
  532. if (ret == 0) {
  533. FSMEvent* e = new FSMEvent(USER_EVT_INIT_FINISHED);
  534. fsm->PostEventFIFO(e);
  535. }
  536. else {
  537. FSMEvent* e = new FSMEvent(USER_EVT_GOTOHELL);
  538. fsm->PostEventFIFO(e);
  539. }
  540. }
  541. };
  542. struct StartPreviewTask : public ITaskSp
  543. {
  544. CHSPScannerFSM* m_fsm;
  545. SpReqAnsContext<HSPScannerService_StartPreview_Req, HSPScannerService_StartPreview_Ans>::Pointer m_ctx;
  546. StartPreviewTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  547. void Process()
  548. {
  549. FSMEvent* pEvt = new FSMEvent(USER_EVT_STARTPREVIEW_FINISHED);
  550. pEvt->param1 = m_fsm->StartPreview(m_ctx);
  551. m_fsm->PostEventFIFO(pEvt);
  552. return;
  553. }
  554. void SetContext(
  555. SpReqAnsContext<HSPScannerService_StartPreview_Req,
  556. HSPScannerService_StartPreview_Ans>::Pointer ctx)
  557. {
  558. m_ctx = ctx;
  559. return;
  560. }
  561. };
  562. struct SetPropertyInPreviewTask : public ITaskSp
  563. {
  564. CHSPScannerFSM* m_fsm;
  565. SpReqAnsContext<HSPScannerService_StartPreview_Req, HSPScannerService_StartPreview_Ans>::Pointer m_ctx;
  566. SetPropertyInPreviewTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  567. void Process()
  568. {
  569. FSMEvent* pEvt = new FSMEvent(USER_EVT_SETPROPERTYINVIEW_FINISHED);
  570. ErrorCodeEnum eRet;
  571. const int retCode = m_fsm->SetPreviewParam(m_ctx->Req.colorType, m_ctx->Req.rotateType, m_ctx->Req.scanType);
  572. if (retCode == 0)
  573. {
  574. eRet = Error_Succeed;
  575. }
  576. else {
  577. DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("SetPreviewParam return some wrong:0x%X", retCode);
  578. eRet = Error_DevCommFailed;
  579. }
  580. if (ISSUCCEEDED(eRet)) {
  581. pEvt->param1 = 0;
  582. m_ctx->Answer(eRet);
  583. }
  584. else {
  585. m_ctx->Answer(eRet, m_fsm->GetLastUserCode());
  586. pEvt->param1 = 1;
  587. }
  588. m_fsm->PostEventFIFO(pEvt);
  589. return;
  590. }
  591. void SetContext(
  592. SpReqAnsContext<HSPScannerService_StartPreview_Req,
  593. HSPScannerService_StartPreview_Ans>::Pointer ctx)
  594. {
  595. m_ctx = ctx;
  596. return;
  597. }
  598. };
  599. struct StopPreviewTask : public ITaskSp
  600. {
  601. CHSPScannerFSM* m_fsm;
  602. SpReqAnsContext<HSPScannerService_CancelPreview_Req,
  603. HSPScannerService_CancelPreview_Ans>::Pointer m_ctx;
  604. StopPreviewTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  605. void Process()
  606. {
  607. FSMEvent* pEvt = new FSMEvent(USER_EVT_STOPPREVIEW_FINISHED);
  608. pEvt->param1 = m_fsm->StopPreview(m_ctx);
  609. m_fsm->PostEventFIFO(pEvt);
  610. return;
  611. }
  612. void SetContext(
  613. SpReqAnsContext<HSPScannerService_CancelPreview_Req,
  614. HSPScannerService_CancelPreview_Ans>::Pointer ctx)
  615. {
  616. m_ctx = ctx;
  617. return;
  618. }
  619. };
  620. struct ScanImageTask : public ITaskSp
  621. {
  622. CHSPScannerFSM* m_fsm;
  623. SpReqAnsContext<HSPScannerService_ScanImage_Req,
  624. HSPScannerService_ScanImage_Ans>::Pointer m_ctx;
  625. ScanImageTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  626. void Process()
  627. {
  628. FSMEvent* pEvt = new FSMEvent(USER_EVT_SCANIMAGEFINISHED);
  629. pEvt->param1 = m_fsm->ScanImage(m_ctx);
  630. m_fsm->PostEventFIFO(pEvt);
  631. return;
  632. }
  633. void SetContext(
  634. SpReqAnsContext<HSPScannerService_ScanImage_Req,
  635. HSPScannerService_ScanImage_Ans>::Pointer ctx)
  636. {
  637. m_ctx = ctx;
  638. return;
  639. }
  640. };
  641. struct ScanImageExTask : public ITaskSp
  642. {
  643. CHSPScannerFSM* m_fsm;
  644. SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
  645. HSPScannerService_ScanImageEx_Ans>::Pointer m_ctx;
  646. ScanImageExTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  647. void Process()
  648. {
  649. FSMEvent* pEvt = new FSMEvent(USER_EVT_SCANIMAGEFINISHED);
  650. pEvt->param1 = m_fsm->ScanImageEx(m_ctx);
  651. m_fsm->PostEventFIFO(pEvt);
  652. return;
  653. }
  654. void SetContext(
  655. SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
  656. HSPScannerService_ScanImageEx_Ans>::Pointer ctx)
  657. {
  658. m_ctx = ctx;
  659. return;
  660. }
  661. };
  662. struct ShowPropertyTask : public ITaskSp
  663. {
  664. CHSPScannerFSM* m_fsm;
  665. SpReqAnsContext<HSPScannerService_ShowProperty_Req,
  666. HSPScannerService_ShowProperty_Ans>::Pointer m_ctx;
  667. ShowPropertyTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  668. void Process()
  669. {
  670. FSMEvent* pEvt = new FSMEvent(USER_EVT_SHOWPROPERTY_FINISHED);
  671. pEvt->param1 = m_fsm->ShowProperty(m_ctx);
  672. m_fsm->PostEventFIFO(pEvt);
  673. return;
  674. }
  675. void SetContext(
  676. SpReqAnsContext<HSPScannerService_ShowProperty_Req,
  677. HSPScannerService_ShowProperty_Ans>::Pointer ctx)
  678. {
  679. m_ctx = ctx;
  680. return;
  681. }
  682. };
  683. struct SetPropertyTask : public ITaskSp
  684. {
  685. CHSPScannerFSM* m_fsm;
  686. SpReqAnsContext<HSPScannerService_SetProperty_Req,
  687. HSPScannerService_SetProperty_Ans>::Pointer m_ctx;
  688. SetPropertyTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  689. void Process()
  690. {
  691. m_fsm->SetProperty(m_ctx);
  692. return;
  693. }
  694. void SetContext(
  695. SpReqAnsContext<HSPScannerService_SetProperty_Req,
  696. HSPScannerService_SetProperty_Ans>::Pointer ctx)
  697. {
  698. m_ctx = ctx;
  699. return;
  700. }
  701. };
  702. struct SetWinPosTask : public ITaskSp
  703. {
  704. CHSPScannerFSM* m_fsm;
  705. SpReqAnsContext<HSPScannerService_SetWinPos_Req,
  706. HSPScannerService_SetWinPos_Ans>::Pointer m_ctx;
  707. SetWinPosTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  708. void Process()
  709. {
  710. m_fsm->SetWinPos(m_ctx);
  711. return;
  712. }
  713. void SetContext(
  714. SpReqAnsContext<HSPScannerService_SetWinPos_Req,
  715. HSPScannerService_SetWinPos_Ans>::Pointer ctx)
  716. {
  717. m_ctx = ctx;
  718. return;
  719. }
  720. };
  721. struct GetDevStatusTask : public ITaskSp
  722. {
  723. CHSPScannerFSM* m_fsm;
  724. SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
  725. HSPScannerService_GetDevStatus_Ans>::Pointer m_ctx;
  726. GetDevStatusTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  727. void Process()
  728. {
  729. m_fsm->GetDevStatus(m_ctx);
  730. return;
  731. }
  732. void SetContext(
  733. SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
  734. HSPScannerService_GetDevStatus_Ans>::Pointer ctx)
  735. {
  736. m_ctx = ctx;
  737. return;
  738. }
  739. };
  740. struct GetDevInfoTask : public ITaskSp
  741. {
  742. CHSPScannerFSM* m_fsm;
  743. SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
  744. HSPScannerService_GetDevInfo_Ans>::Pointer m_ctx;
  745. GetDevInfoTask(CHSPScannerFSM* fsm): m_fsm(fsm){}
  746. void Process()
  747. {
  748. m_fsm->GetDevInfo(m_ctx);
  749. return;
  750. }
  751. void SetContext(
  752. SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
  753. HSPScannerService_GetDevInfo_Ans>::Pointer ctx)
  754. {
  755. m_ctx = ctx;
  756. return;
  757. }
  758. };
  759. struct ExitClearTask : public ITaskSp
  760. {
  761. CHSPScannerFSM* m_fsm;
  762. ExitClearTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
  763. void Process()
  764. {
  765. FSMEvent* pEvt = new FSMEvent(USER_EVT_EXIT_FINISHED);
  766. if (ISSUCCEEDED(m_fsm->OnDevExit())) {
  767. pEvt->param1 = 0;
  768. }
  769. else {
  770. pEvt->param1 = 1;
  771. }
  772. m_fsm->PostEventFIFO(pEvt);
  773. return;
  774. }
  775. };
  776. /** JS Compoent [Gifur@20241112]*/
  777. namespace JS {
  778. struct StartPreviewTask : public ITaskSp
  779. {
  780. CHSPScannerFSM* m_fsm;
  781. SpReqAnsContext<HSPScannerService_StartPreviewJS_Req, HSPScannerService_StartPreviewJS_Ans>::Pointer m_ctx;
  782. StartPreviewTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
  783. void Process()
  784. {
  785. FSMEvent* pEvt = new FSMEvent(USER_EVT_STARTPREVIEW_JS_DONE);
  786. pEvt->param1 = m_fsm->StartPreviewJS(m_ctx);
  787. m_fsm->PostEventFIFO(pEvt);
  788. return;
  789. }
  790. void SetContext(
  791. SpReqAnsContext<HSPScannerService_StartPreviewJS_Req,
  792. HSPScannerService_StartPreviewJS_Ans>::Pointer ctx)
  793. {
  794. m_ctx = ctx;
  795. return;
  796. }
  797. };
  798. struct CancelPreviewTask : public ITaskSp
  799. {
  800. CHSPScannerFSM* m_fsm;
  801. SpReqAnsContext<HSPScannerService_CancelPreviewJS_Req, HSPScannerService_CancelPreviewJS_Ans>::Pointer m_ctx;
  802. CancelPreviewTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
  803. void Process()
  804. {
  805. FSMEvent* pEvt = new FSMEvent(USER_EVT_CANCELPREVIEW_JS_DONE);
  806. pEvt->param1 = m_fsm->CancelPreview(m_ctx);
  807. pEvt->param2 = m_ctx->Req.hide ? 1 : 0;
  808. m_fsm->PostEventFIFO(pEvt);
  809. return;
  810. }
  811. void SetContext(
  812. SpReqAnsContext<HSPScannerService_CancelPreviewJS_Req,
  813. HSPScannerService_CancelPreviewJS_Ans>::Pointer ctx)
  814. {
  815. m_ctx = ctx;
  816. return;
  817. }
  818. };
  819. struct ScanImageTask : public ITaskSp
  820. {
  821. CHSPScannerFSM* m_fsm;
  822. SpReqAnsContext<HSPScannerService_ScanImageJS_Req, HSPScannerService_ScanImageJS_Ans>::Pointer m_ctx;
  823. ScanImageTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
  824. void Process()
  825. {
  826. FSMEvent* pEvt = new FSMEvent(USER_EVT_SCANIMAGE_JS_DONE);
  827. ////0,succ;1 failed;
  828. pEvt->param1 = m_fsm->ScanImageJS(m_ctx);
  829. ///1 说明隐藏,0说明关闭
  830. pEvt->param2 = m_ctx->Req.hide ? 1 : 0;
  831. m_fsm->PostEventFIFO(pEvt);
  832. return;
  833. }
  834. void SetContext(
  835. SpReqAnsContext<HSPScannerService_ScanImageJS_Req,
  836. HSPScannerService_ScanImageJS_Ans>::Pointer ctx)
  837. {
  838. m_ctx = ctx;
  839. return;
  840. }
  841. };
  842. struct SetParamTask : public ITaskSp
  843. {
  844. CHSPScannerFSM* m_fsm;
  845. SpReqAnsContext<HSPScannerService_SetParamJS_Req, HSPScannerService_SetParamJS_Ans>::Pointer m_ctx;
  846. SetParamTask(CHSPScannerFSM* fsm) : m_fsm(fsm) {}
  847. void Process()
  848. {
  849. m_fsm->SetParam(m_ctx);
  850. return;
  851. }
  852. void SetContext(
  853. SpReqAnsContext<HSPScannerService_SetParamJS_Req,
  854. HSPScannerService_SetParamJS_Ans>::Pointer ctx)
  855. {
  856. m_ctx = ctx;
  857. return;
  858. }
  859. };
  860. }
  861. #endif //_HSPSCANNER_FSM_H_