mod_HSPScanner.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. #ifndef _MOD_HSPSCANNER_H_
  2. #define _MOD_HSPSCANNER_H_
  3. #pragma once
  4. #ifndef _WIN32
  5. #include "modVer.h"
  6. #include "SpTest.h"
  7. #include "DevEntityCommBase.hpp"
  8. #endif //NOT _WIN32
  9. #include "HSPScannerFSM.h"
  10. using namespace HSPScanner;
  11. class CHSPScannerEntity;
  12. class CHSPScannerServerSession: public HSPScannerService_ServerSessionBase
  13. {
  14. public:
  15. CHSPScannerServerSession(CHSPScannerEntity *pEntity):m_pEntity(pEntity){}
  16. virtual ~CHSPScannerServerSession(){}
  17. virtual void Handle_StartPreview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
  18. HSPScannerService_StartPreview_Ans>::Pointer ctx);
  19. virtual void Handle_CancelPreview(SpReqAnsContext<HSPScannerService_CancelPreview_Req,
  20. HSPScannerService_CancelPreview_Ans>::Pointer ctx);
  21. virtual void Handle_ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
  22. HSPScannerService_ScanImage_Ans>::Pointer ctx);
  23. virtual void Handle_ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
  24. HSPScannerService_ScanImageEx_Ans>::Pointer ctx);
  25. virtual void Handle_SetProperty(SpReqAnsContext<HSPScannerService_SetProperty_Req,
  26. HSPScannerService_SetProperty_Ans>::Pointer ctx);
  27. virtual void Handle_SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
  28. HSPScannerService_SetWinPos_Ans>::Pointer ctx);
  29. virtual void Handle_ShowProperty(SpReqAnsContext<HSPScannerService_ShowProperty_Req,
  30. HSPScannerService_ShowProperty_Ans>::Pointer ctx);
  31. virtual void Handle_GetDevStatus(SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
  32. HSPScannerService_GetDevStatus_Ans>::Pointer ctx);
  33. virtual void Handle_GetDevInfo(SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
  34. HSPScannerService_GetDevInfo_Ans>::Pointer ctx);
  35. virtual void Handle_Exit(SpOnewayCallContext<HSPScannerService_Exit_Info>::Pointer ctx);
  36. private:
  37. CHSPScannerEntity *m_pEntity;
  38. };
  39. class CHSPScannerEntity : public CDevAdptEntityBase, public ISysVarListener
  40. {
  41. public:
  42. CHSPScannerEntity() {}
  43. virtual ~CHSPScannerEntity() {}
  44. virtual const char *GetEntityName() const { return "HSPScanner"; }
  45. #ifndef _WIN32
  46. const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
  47. ON_ENTITYT_TEST()
  48. #endif //NOT _WIN32
  49. virtual CServerSessionBase* OnNewSession(const char* , const char * )
  50. {
  51. return new CHSPScannerServerSession(this);
  52. }
  53. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,
  54. CSmartPointer<ITransactionContext> pTransactionContext)
  55. {
  56. ErrorCodeEnum erroCode = m_fsm.Init(this);
  57. pTransactionContext->SendAnswer(erroCode);
  58. }
  59. virtual void OnStarted()
  60. {
  61. }
  62. virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  63. {
  64. ErrorCodeEnum ec = Error_Succeed;
  65. #ifdef TWINKLE_LOCAL_DEBUG
  66. int ret = m_fsm.UnitTest("");
  67. if(ret != 0) {
  68. LogError(Severity_High, Error_Unexpect, ret, CSimpleStringA::Format("line: %d", ret));
  69. }
  70. ec = (ErrorCodeEnum)(ret);
  71. #endif //TWINKLE_LOCAL_DEBUG
  72. pTransactionContext->SendAnswer(ec);
  73. }
  74. virtual void OnPreContinue(CSmartPointer<ITransactionContext> pTransactionContext)
  75. {
  76. pTransactionContext->SendAnswer(Error_Succeed);
  77. }
  78. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,
  79. CSmartPointer<ITransactionContext> pTransactionContext)
  80. {
  81. ErrorCodeEnum erroCode = m_fsm.OnExit();
  82. pTransactionContext->SendAnswer(erroCode);
  83. }
  84. virtual void OnSysVarEvent(const char* pszKey,
  85. const char* pszValue, const char* pszOldValue, const char* pszEntityName);
  86. void Preview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
  87. HSPScannerService_StartPreview_Ans>::Pointer ctx)
  88. {
  89. StartPreviewEvent* pEvent = new StartPreviewEvent();
  90. pEvent->m_ctx = ctx;
  91. m_fsm.PostEventFIFO(pEvent);
  92. }
  93. void CancelPreview(SpReqAnsContext<HSPScannerService_CancelPreview_Req,
  94. HSPScannerService_CancelPreview_Ans>::Pointer ctx)
  95. {
  96. StopPreviewEvent* pEvent = new StopPreviewEvent();
  97. pEvent->m_ctx = ctx;
  98. m_fsm.PostEventFIFO(pEvent);
  99. }
  100. void ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
  101. HSPScannerService_ScanImage_Ans>::Pointer ctx)
  102. {
  103. ScanImageEvent* pEvent = new ScanImageEvent();
  104. pEvent->m_ctx = ctx;
  105. m_fsm.PostEventFIFO(pEvent);
  106. }
  107. void ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Req,
  108. HSPScannerService_ScanImageEx_Ans>::Pointer ctx)
  109. {
  110. ScanImageExEvent* pEvent = new ScanImageExEvent();
  111. pEvent->m_ctx = ctx;
  112. m_fsm.PostEventFIFO(pEvent);
  113. }
  114. void Exit(SpOnewayCallContext<HSPScannerService_Exit_Info>::Pointer ctx)
  115. {
  116. m_fsm.PostEventFIFO(new FSMEvent(USER_EVT_EXIT));
  117. }
  118. void GetDevInfo(SpReqAnsContext<HSPScannerService_GetDevInfo_Req,
  119. HSPScannerService_GetDevInfo_Ans>::Pointer ctx)
  120. {
  121. m_fsm.GetDevInfo(ctx);
  122. //GetDevInfoEvent* pEvent = new GetDevInfoEvent();
  123. //pEvent->m_ctx = ctx;
  124. //m_fsm.PostEventFIFO(pEvent);
  125. }
  126. void GetDevStatus(SpReqAnsContext<HSPScannerService_GetDevStatus_Req,
  127. HSPScannerService_GetDevStatus_Ans>::Pointer ctx)
  128. {
  129. GetDevStatusEvent* pEvent = new GetDevStatusEvent();
  130. pEvent->m_ctx = ctx;
  131. m_fsm.PostEventFIFO(pEvent);
  132. }
  133. void SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
  134. HSPScannerService_SetWinPos_Ans>::Pointer ctx)
  135. {
  136. SetWinPosEvent* pEvent = new SetWinPosEvent();
  137. pEvent->m_ctx = ctx;
  138. m_fsm.PostEventFIFO(pEvent);
  139. }
  140. void ShowProperty(SpReqAnsContext<HSPScannerService_ShowProperty_Req,
  141. HSPScannerService_ShowProperty_Ans>::Pointer ctx)
  142. {
  143. ShowPropertyEvent* pEvent = new ShowPropertyEvent();
  144. pEvent->m_ctx = ctx;
  145. m_fsm.PostEventFIFO(pEvent);
  146. }
  147. void SetProperty(SpReqAnsContext<HSPScannerService_SetProperty_Req,
  148. HSPScannerService_SetProperty_Ans>::Pointer ctx)
  149. {
  150. SetPropertyEvent* pEvent = new SetPropertyEvent();
  151. pEvent->m_ctx = ctx;
  152. m_fsm.PostEventFIFO(pEvent);
  153. }
  154. void OnSelfTest(EntityTestEnum eTestType, CSmartPointer<ITransactionContext> pTransactionContext)
  155. {
  156. m_fsm.SelfTest(eTestType, pTransactionContext);
  157. }
  158. virtual bool IsService() const { return true; }
  159. virtual bool IsMultiThread() const { return true; };
  160. protected:
  161. #if defined(_MSC_VER)
  162. ErrorCodeEnum CustomVendorLibInfo();
  163. #endif //_MSC_VER
  164. private:
  165. CHSPScannerFSM m_fsm;
  166. };
  167. #endif