pinpad_impl.cpp 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. //
  2. // Created by LocalUser on 2019/1/7.
  3. //
  4. #include "pinpad_impl.h"
  5. #include <cstring>
  6. #include "sample.h"
  7. #include "log4vendor.h"
  8. PinPadClassImpl::PinPadClassImpl()
  9. :m_mode(0)
  10. {
  11. }
  12. PinPadClassImpl::~PinPadClassImpl()
  13. {
  14. }
  15. ErrorCodeEnum PinPadClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
  16. {
  17. LOG4VTM_FUNCTION();
  18. ErrorCodeEnum err = Error_Succeed;
  19. std::strcpy(devCategory.szModel, "szModel");
  20. std::strcpy(devCategory.szType, "szCategory");
  21. std::strcpy(devCategory.szVendor, "szVendor");
  22. return err;
  23. }
  24. ErrorCodeEnum PinPadClassImpl::Reset()
  25. {
  26. ErrorCodeEnum err = Error_Unexpect;
  27. m_mode = 0;
  28. return err;
  29. }
  30. ErrorCodeEnum PinPadClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
  31. {
  32. // LOG4VTM_FUNCTION();
  33. static int nums = 1;
  34. ErrorCodeEnum err = Error_Succeed;
  35. if (nums == 0) {
  36. err = Error_Unexpect;
  37. nums = 1;
  38. } else {
  39. LOG4VTM(TRACE, ("This is first TRACE type message."));
  40. LOG4VTM(INFO, ("This is first INFO type message."));
  41. LOG4VTM(WARN, ("This is first WARN type message."));
  42. LOG4VTM(ERROR, ("This is first ERROR type message."));
  43. LOG4VTM(FATAL, ("This is first FATAL type message."));
  44. }
  45. return err;
  46. }
  47. ErrorCodeEnum PinPadClassImpl::DevClose()
  48. {
  49. ErrorCodeEnum err = Error_Succeed;
  50. return err;
  51. }
  52. ErrorCodeEnum PinPadClassImpl::KeyRead(BYTE &ch)
  53. {
  54. ErrorCodeEnum err = Error_Succeed;
  55. static int cursor = 0;
  56. if(m_mode == 0) {
  57. ch = 0x0d;
  58. cursor = 0;
  59. }
  60. else {
  61. ch = 0x3f;
  62. }
  63. return err;
  64. }
  65. ErrorCodeEnum PinPadClassImpl::StartPinInput(BYTE byLen)
  66. {
  67. ErrorCodeEnum err = Error_Succeed;
  68. m_mode = 1;
  69. return err;
  70. }
  71. ErrorCodeEnum PinPadClassImpl::StartPinInputConfirm(BYTE byLen)
  72. {
  73. ErrorCodeEnum err = Error_Succeed;
  74. m_mode = 1;
  75. return err;
  76. }
  77. ErrorCodeEnum PinPadClassImpl::StartPlainInput()
  78. {
  79. ErrorCodeEnum err = Error_Succeed;
  80. m_mode = 0;
  81. return err;
  82. }
  83. ErrorCodeEnum PinPadClassImpl::StopInput()
  84. {
  85. ErrorCodeEnum err = Error_Succeed;
  86. m_mode = 0;
  87. return err;
  88. }
  89. ErrorCodeEnum PinPadClassImpl::LoadMasterKey(MasterKeyParam masterKey)
  90. {
  91. ErrorCodeEnum err = Error_Succeed;
  92. return err;
  93. }
  94. ErrorCodeEnum PinPadClassImpl::LoadWorkingKey(WorkKeyParam wkKey)
  95. {
  96. ErrorCodeEnum err = Error_Succeed;
  97. return err;
  98. }
  99. ErrorCodeEnum PinPadClassImpl::ActiveWorkingKey(DWORD dwMkSN, DWORD dwWkSN)
  100. {
  101. ErrorCodeEnum err = Error_Succeed;
  102. return err;
  103. }
  104. ErrorCodeEnum PinPadClassImpl::SetParam(SetParamTypeEnum eType, SetParamValueEnum eValue)
  105. {
  106. ErrorCodeEnum err = Error_Succeed;
  107. return err;
  108. }
  109. ErrorCodeEnum PinPadClassImpl::EncryptData(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo)
  110. {
  111. ErrorCodeEnum err = Error_Succeed;
  112. memset(destInfo.data, 0, sizeof(destInfo.data));
  113. if(std::strcmp((const char*)srcInfo.data, "0000000000000000") == 0) {
  114. std::strcpy((char*)destInfo.data, "EC6162E6E08C7279");
  115. destInfo.dwSize = 16;
  116. } else if(std::strcmp((const char*)srcInfo.data, "1234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456") == 0) {
  117. std::strcpy((char*)destInfo.data, "9DFE47D355F40F33FC634AF5BA511337DC36261313DDF70F6B7E5696EC55BDE4C39F7CE724AA864AC3074B2F4A51FC87C2A160A9102507E8126312B204392EB4BDA42A724E2F75FC9B87EE02B4CB47813A0F9A734EF5680D20D897CB2DB4EB2EF0D24B8AE2FA277F569F222AABE660AA2D276B9432D8941AAA64D1E62209ABFC");
  118. destInfo.dwSize = 256;
  119. } else {
  120. err = Error_NotImpl;
  121. }
  122. return err;
  123. }
  124. ErrorCodeEnum PinPadClassImpl::MacEncrypt(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo)
  125. {
  126. ErrorCodeEnum err = Error_NotImpl;
  127. return err;
  128. }
  129. ErrorCodeEnum PinPadClassImpl::GetPinBlock(PinBlock &block)
  130. {
  131. ErrorCodeEnum err = Error_Succeed;
  132. std::strcpy((char*)block.data, "147DE54A44497DDB");
  133. block.dwSize = 16;
  134. return err;
  135. }
  136. ErrorCodeEnum PinPadClassImpl::SetAccNo(AccountInfo accInfo)
  137. {
  138. ErrorCodeEnum err = Error_Succeed;
  139. return err;
  140. }
  141. ErrorCodeEnum PinPadClassImpl::GetLastErr(DevErrorInfo &devErrInfo)
  142. {
  143. TRACE4VTM_FUNCTION(&devErrInfo.dwErrMsgLen);
  144. strcpy(devErrInfo.szErrMsg, helloWorld());
  145. devErrInfo.dwErrMsgLen = strlen(helloWorld());
  146. return Error_Succeed;
  147. }
  148. DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pOutDevAptObj)
  149. {
  150. pOutDevAptObj = new PinPadClassImpl();
  151. if(pOutDevAptObj == NULL)
  152. {
  153. return Error_Resource;
  154. }
  155. cmb::log_init_config config;
  156. config.dev_name = "PinPad";
  157. #if defined(_MSC_VER)
  158. config.log_dir = ("C:\\rvc\\dbg\\");
  159. #else
  160. config.log_dir = ("/opt/rvc/dbg/");
  161. #endif //_MSC_VER
  162. std::string str;
  163. cmb::log4vendor::init(config, str);
  164. printf("init after: %s\n", str.c_str());
  165. return Error_Succeed;
  166. }
  167. DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
  168. {
  169. if(pInDevAptObj == NULL)
  170. {
  171. return Error_Param;
  172. }
  173. if(PinPadClassImpl* pTmp = dynamic_cast<PinPadClassImpl*>(pInDevAptObj))
  174. {
  175. delete pTmp;
  176. pTmp = NULL;
  177. return Error_Succeed;
  178. }
  179. return Error_Param;
  180. }
  181. #ifdef NEWER_COMPILER_WORKAROUNDS
  182. DEVICEBASE_API ErrorCodeEnum GetDevAdapterVersion(DevSoftVersion& retVesion)
  183. {
  184. retVesion.wMajor = retVesion.wMinor = retVesion.wBuild = retVesion.wRevision = 0;
  185. return Error_Succeed;
  186. }
  187. #endif // NEWER_COMPILER_WORKAROUNDS