contactless_impl.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. #include "contactless_impl.h"
  2. #include "contactless_httpans.h"
  3. #include<cstring>
  4. #include <cstdio>
  5. #include <cstring>
  6. #include <cstdio>
  7. #include "log4vendor.h"
  8. #include <path.h>
  9. ContactlessCardImpl::ContactlessCardImpl()
  10. :m_mode(0)
  11. {
  12. }
  13. ContactlessCardImpl::~ContactlessCardImpl()
  14. {
  15. }
  16. ErrorCodeEnum ContactlessCardImpl::GetDevCategory(DevCategoryInfo &devCategory)
  17. {
  18. ErrorCodeEnum err = Error_Succeed;
  19. SimulatorDevCategoryAns ans;
  20. err = SimulatorHttpFunction(EntityName, "GetDevCategory", ans);
  21. LOG4VTM(INFO, "GetDevCategory err = " << err);
  22. strcpy(devCategory.szType, ans.szType.c_str());
  23. strcpy(devCategory.szModel, ans.szModel.c_str());
  24. strcpy(devCategory.szVendor, ans.szVendor.c_str());
  25. devCategory.eState = (DevStateEnum)ans.eState;
  26. devCategory.version.wMajor = ans.version.wMajor;
  27. devCategory.version.wMinor = ans.version.wMinor;
  28. devCategory.version.wRevision = ans.version.wRevision;
  29. devCategory.version.wBuild = ans.version.wBuild;
  30. return err;
  31. }
  32. ErrorCodeEnum ContactlessCardImpl::Reset()
  33. {
  34. ErrorCodeEnum err = Error_Succeed;
  35. err = SimulatorHttpFunction(EntityName, "Reset");
  36. LOG4VTM(INFO, "Reset err = " << err);
  37. return err;
  38. }
  39. ErrorCodeEnum ContactlessCardImpl::DevClose()
  40. {
  41. ErrorCodeEnum err = Error_Succeed;
  42. err = SimulatorHttpFunction(EntityName, "DevClose");
  43. LOG4VTM(INFO, "DevClose err = " << err);
  44. return err;
  45. }
  46. ErrorCodeEnum ContactlessCardImpl::GetLastErr(DevErrorInfo &devErrInfo)
  47. {
  48. ErrorCodeEnum err = Error_Succeed;
  49. SimulatorDevErrInfoAns ans;
  50. err = SimulatorHttpFunction(EntityName, "GetLastErr", ans);
  51. LOG4VTM(INFO, "GetLastErr err = " << err);
  52. devErrInfo.dwErrMsgLen = ans.dwErrMsgLen;
  53. strcpy(devErrInfo.szErrMsg, ans.szErrMsg.c_str());
  54. return err;
  55. }
  56. ErrorCodeEnum ContactlessCardImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
  57. {
  58. ErrorCodeEnum err = Error_Succeed;
  59. err = SimulatorHttpFunction(EntityName, "DevOpen");
  60. LOG4VTM(INFO, "DevOpen err = " << err);
  61. return err;
  62. }
  63. ErrorCodeEnum ContactlessCardImpl::GetDevStatus(RFICReaderStatus& devStatus)
  64. {
  65. ErrorCodeEnum err = Error_Succeed;
  66. RFICReaderStatusAns ans;
  67. err = SimulatorHttpFunction(EntityName, "GetDevStatus", ans);
  68. LOG4VTM(INFO, "GetDevStatus err = " << err);
  69. if (err == Error_Succeed) {
  70. devStatus.eMediaPos = (CardStatusEnum)ans.eMediaPos;
  71. }
  72. return err;
  73. }
  74. ErrorCodeEnum ContactlessCardImpl::AbortRead()
  75. {
  76. ErrorCodeEnum err = Error_Succeed;
  77. err = SimulatorHttpFunction(EntityName, "AbortRead");
  78. LOG4VTM(INFO, "AbortRead err = " << err);
  79. return err;
  80. }
  81. ErrorCodeEnum ContactlessCardImpl::ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType)
  82. {
  83. ErrorCodeEnum err = Error_Succeed;
  84. ActiveContactlessICCardAns ans;
  85. err = SimulatorHttpFunction(EntityName, "ActiveContactlessICCard", ans);
  86. LOG4VTM(INFO, "ActiveContactlessICCard err = " << err);
  87. if (err == Error_Succeed) {
  88. outType = (char)ans.outType;
  89. }
  90. return err;
  91. }
  92. ErrorCodeEnum ContactlessCardImpl::DeactContactlessICCard()
  93. {
  94. ErrorCodeEnum err = Error_Succeed;
  95. err = SimulatorHttpFunction(EntityName, "DeactContactlessICCard");
  96. LOG4VTM(INFO, "DeactContactlessICCard err = " << err);
  97. return err;
  98. }
  99. ErrorCodeEnum ContactlessCardImpl::WarmReset()
  100. {
  101. ErrorCodeEnum err = Error_Succeed;
  102. err = SimulatorHttpFunction(EntityName, "WarmReset");
  103. LOG4VTM(INFO, "WarmReset err = " << err);
  104. return err;
  105. }
  106. ErrorCodeEnum ContactlessCardImpl::MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf)
  107. {
  108. ErrorCodeEnum err = Error_Succeed;
  109. CmdInfoAns ans;
  110. err = SimulatorHttpFunction(EntityName, "ActiveContactlessICCard", ans);
  111. LOG4VTM(INFO, "ActiveContactlessICCard err = " << err);
  112. if (err == Error_Succeed) {
  113. recvBuf.dwSize = ans.dwSize;
  114. memcpy(recvBuf.data, ans.data.c_str(), ans.data.length() + 1);
  115. }
  116. return err;
  117. }
  118. ErrorCodeEnum ContactlessCardImpl::RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
  119. {
  120. ErrorCodeEnum err = Error_Succeed;
  121. CmdInfoAns ans;
  122. err = SimulatorHttpFunction(EntityName, "RFTypeABCommand", ans);
  123. LOG4VTM(INFO, "RFTypeABCommand err = " << err);
  124. if (err == Error_Succeed) {
  125. recvBuf.dwSize = ans.dwSize;
  126. memcpy(recvBuf.data, ans.data.c_str(), ans.data.length() + 1);
  127. }
  128. return err;
  129. }
  130. ErrorCodeEnum ContactlessCardImpl::HaltCard()
  131. {
  132. ErrorCodeEnum err = Error_Succeed;
  133. err = SimulatorHttpFunction(EntityName, "HaltCard");
  134. LOG4VTM(INFO, "HaltCard err = " << err);
  135. return err;
  136. }
  137. DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj)
  138. {
  139. baseObj = new ContactlessCardImpl();
  140. if(baseObj == NULL) {
  141. return Error_Resource;
  142. }
  143. cmb::log_init_config config;
  144. config.dev_name = "vendor_ContactlessCard";
  145. #ifdef _MSC_VER
  146. config.log_dir = ("D:\\rvc\\dbg\\");
  147. #else
  148. config.log_dir = ("/opt/rvc/dbg/");
  149. #endif
  150. std::string str;
  151. cmb::log4vendor::init(config, str);
  152. std::string tmpStr = GetSimulatorUrl();
  153. LOG4VTM(INFO, "URL = " << tmpStr.c_str());
  154. return Error_Succeed;
  155. }
  156. DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass *&pBaseObj)
  157. {
  158. if(pBaseObj == NULL) {
  159. return Error_Param;
  160. }
  161. if(ContactlessCardImpl* pTmp = dynamic_cast<ContactlessCardImpl*>(pBaseObj))
  162. {
  163. delete pTmp;
  164. pTmp = NULL;
  165. return Error_Succeed;
  166. }
  167. return Error_Param;
  168. }
  169. #ifdef NEWER_COMPILER_WORKAROUNDS
  170. DEVICEBASE_API ErrorCodeEnum GetDevAdapterVersion(DevSoftVersion& retVesion)
  171. {
  172. retVesion.wMajor = retVesion.wMinor = retVesion.wBuild = retVesion.wRevision = 0;
  173. return Error_Succeed;
  174. }
  175. #endif // NEWER_COMPILER_WORKAROUNDS