pinpad_impl.cpp 6.8 KB

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