mod_DeviceControl.h 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. #ifndef _MOD_DEVICECONTROL_H
  2. #define _MOD_DEVICECONTROL_H
  3. #pragma once
  4. #include "modVer.h"
  5. #include "SpTest.h"
  6. #include "DeviceControlFSM.h"
  7. #include "DevEntityCommBase.hpp"
  8. #include "TerminalInfoQueryConn.h"
  9. // to get mac address
  10. #include <string>
  11. #include <vector>
  12. #ifdef RVC_OS_WIN
  13. #include <Winsock2.h>
  14. #include <WS2tcpip.h>
  15. #include <Iphlpapi.h>
  16. #endif // RVC_OS_WIN
  17. #pragma warning( disable : 4996 )
  18. #define MACSESION 6
  19. using namespace DeviceControl;
  20. class CDeviceControlEntity;
  21. class CDeviceControlServerSession: public DeviceControlService_ServerSessionBase
  22. {
  23. public:
  24. CDeviceControlServerSession(CDeviceControlEntity *pEntity):m_pEntity(pEntity){}
  25. virtual ~CDeviceControlServerSession(){}
  26. virtual void Handle_USB(SpReqAnsContext<DeviceControlService_USB_Req, DeviceControlService_USB_Ans>::Pointer ctx);
  27. virtual void Handle_GetUkeyID(SpReqAnsContext<DeviceControlService_GetUkeyID_Req, DeviceControlService_GetUkeyID_Ans>::Pointer ctx);
  28. virtual void Handle_InitToken(SpReqAnsContext<DeviceControlService_InitToken_Req, DeviceControlService_InitToken_Ans>::Pointer ctx);
  29. virtual void Handle_QueryUSBStatus(SpReqAnsContext<DeviceControlService_QueryUSBStatus_Req, DeviceControlService_QueryUSBStatus_Ans>::Pointer ctx);
  30. virtual void Handle_QueryHardwareInfo(SpReqAnsContext<DeviceControlService_QueryHardwareInfo_Req, DeviceControlService_QueryHardwareInfo_Ans>::Pointer ctx);
  31. virtual void Handle_ReadCenterConfigStr(SpReqAnsContext<DeviceControlService_ReadCenterConfigStr_Req, DeviceControlService_ReadCenterConfigStr_Ans>::Pointer ctx);
  32. virtual void Handle_ReadConfigValue(SpReqAnsContext<DeviceControlService_ReadConfigValue_Req, DeviceControlService_ReadConfigValue_Ans>::Pointer ctx);
  33. virtual void Handle_GetDevInfo(SpReqAnsContext<DeviceControlService_GetDevInfo_Req, DeviceControlService_GetDevInfo_Ans>::Pointer ctx);
  34. virtual void Handle_TestConnectivity(SpReqAnsContext<DeviceControlService_TestConnectivity_Req, DeviceControlService_TestConnectivity_Ans>::Pointer ctx);
  35. virtual void Handle_DeployTerminal(SpReqAnsContext<DeviceControlService_DeployTerminal_Req, DeviceControlService_DeployTerminal_Ans>::Pointer ctx);
  36. private:
  37. CDeviceControlEntity *m_pEntity;
  38. };
  39. class CDeviceControlEntity : public CDevAdptEntityBase
  40. {
  41. public:
  42. CDeviceControlEntity():m_ServerConn(nullptr){ }
  43. virtual ~CDeviceControlEntity(){
  44. if (m_ServerConn) {
  45. if(m_ServerConn->IsConnectionOK()) {
  46. m_ServerConn->Close();
  47. }
  48. delete m_ServerConn;
  49. m_ServerConn = nullptr;
  50. }
  51. }
  52. virtual const char *GetEntityName() const { return "DeviceControl"; }
  53. const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
  54. ON_ENTITYT_TEST()
  55. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext)
  56. {
  57. LOG_FUNCTION();
  58. ErrorCodeEnum rt = m_fsm.Init(this);
  59. pTransactionContext->SendAnswer(rt);
  60. }
  61. static void PrintTerminalRegistInfo(const TerminalRegistRet* info)
  62. {
  63. Dbg("TerminalNo: %s", info->TerminalNo);
  64. Dbg("DeviceNo: %s", info->DeviceNo);
  65. Dbg("OutletNo: %s", info->OutletNo);
  66. Dbg("Initializer: %s", info->Initializer);
  67. Dbg("PadDeviceID: %s", info->PadDeviceID);
  68. Dbg("MachineType: %s", info->MachineType);
  69. Dbg("MachineVersion: %s", info->MachineVersion);
  70. Dbg("Sites: %s", info->Sites);
  71. Dbg("EnrolAddr: %s", info->EnrolAddr);
  72. Dbg("Editor: %s", info->Editor);
  73. Dbg("State: %c", info->State);
  74. Dbg("PublicKey: %s", info->PublicKey);
  75. Dbg("FingerPrint: %s", info->FingerPrint);
  76. }
  77. virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
  78. {
  79. //QueryHardwareInfo(NULL);
  80. if (!m_ServerConn) {
  81. m_ServerConn = new CTerminalInfoQuery(this);
  82. }
  83. m_ServerConn->ConnectServer("55.14.131.137", 1050);
  84. if (m_ServerConn->IsConnectionOK()) {
  85. TerminalRegistRet info;
  86. m_ServerConn->GetTerminalInfo("7555980028", &info);
  87. PrintTerminalRegistInfo(&info);
  88. }
  89. pTransactionContext->SendAnswer(Error_Succeed);
  90. }
  91. virtual void OnPreContinue(CSmartPointer<ITransactionContext> pTransactionContext)
  92. {
  93. if (m_ServerConn) {
  94. if (m_ServerConn->IsConnectionOK()) {
  95. m_ServerConn->Close();
  96. }
  97. delete m_ServerConn;
  98. m_ServerConn = nullptr;
  99. }
  100. pTransactionContext->SendAnswer(Error_Succeed);
  101. }
  102. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
  103. {
  104. m_fsm.OnExit();
  105. pTransactionContext->SendAnswer(Error_Succeed);
  106. }
  107. virtual CServerSessionBase* OnNewSession(const char*,const char*)
  108. {
  109. return new CDeviceControlServerSession(this);
  110. }
  111. void USB(SpReqAnsContext<DeviceControlService_USB_Req, DeviceControlService_USB_Ans>::Pointer ctx)
  112. {
  113. USBEvent *pEvt = new USBEvent();
  114. pEvt->ctx = ctx;
  115. m_fsm.PostEventFIFO(pEvt);
  116. }
  117. void GetUkeyID(SpReqAnsContext<DeviceControlService_GetUkeyID_Req, DeviceControlService_GetUkeyID_Ans>::Pointer ctx)
  118. {
  119. GetUkeyIDEvent *pEvt = new GetUkeyIDEvent();
  120. pEvt->ctx = ctx;
  121. m_fsm.PostEventFIFO(pEvt);
  122. }
  123. void InitToken(SpReqAnsContext<DeviceControlService_InitToken_Req, DeviceControlService_InitToken_Ans>::Pointer ctx)
  124. {
  125. InitTokenEvent *pEvt = new InitTokenEvent();
  126. pEvt->ctx = ctx;
  127. m_fsm.PostEventFIFO(pEvt);
  128. }
  129. void QueryUSBStatus(SpReqAnsContext<DeviceControlService_QueryUSBStatus_Req, DeviceControlService_QueryUSBStatus_Ans>::Pointer ctx)
  130. {
  131. QueryUSBEvent *pEvt = new QueryUSBEvent();
  132. pEvt->ctx = ctx;
  133. m_fsm.PostEventFIFO(pEvt);
  134. }
  135. void QueryHardwareInfo(SpReqAnsContext<DeviceControlService_QueryHardwareInfo_Req, DeviceControlService_QueryHardwareInfo_Ans>::Pointer ctx);
  136. void ReadCenterConfigStr(SpReqAnsContext<DeviceControlService_ReadCenterConfigStr_Req, DeviceControlService_ReadCenterConfigStr_Ans>::Pointer ctx);
  137. void ReadConfigValue(SpReqAnsContext<DeviceControlService_ReadConfigValue_Req, DeviceControlService_ReadConfigValue_Ans>::Pointer ctx);
  138. void GetDevInfo(SpReqAnsContext<DeviceControlService_GetDevInfo_Req, DeviceControlService_GetDevInfo_Ans>::Pointer ctx)
  139. {
  140. ctx->Answer(Error_NotImpl);
  141. }
  142. void TestConnectivity(SpReqAnsContext<DeviceControlService_TestConnectivity_Req, DeviceControlService_TestConnectivity_Ans>::Pointer ctx);
  143. void DeployTerminal(SpReqAnsContext<DeviceControlService_DeployTerminal_Req, DeviceControlService_DeployTerminal_Ans>::Pointer ctx);
  144. void OnSelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext)
  145. {
  146. m_fsm.SelfTest(eTestType,pTransactionContext);
  147. }
  148. virtual bool IsService()const{return true;}
  149. virtual bool IsMultiThread()const{return true;}
  150. private:
  151. std::pair<ErrorCodeEnum, CSimpleStringA> __ReadCenterConfigStr(CSimpleStringA key, CSimpleStringA entityName);
  152. private:
  153. CDeviceControlFSM m_fsm;
  154. CTerminalInfoQuery* m_ServerConn;
  155. };
  156. #endif //_MOD_DEVICECONTROL_H