// // Created by LocalUser on 2019/1/7. // #include #include "pinpad_impl.h" //#include "sample.h" //typedef unsigned char *PBYTE; //typedef unsigned char CEvent[256]; //#include "OEPPDevDll.h" #include "log4vendor.h" #include "GrgPinPadImpl.h" PinPadClassImpl::PinPadClassImpl() // :m_mode(0) { m_pDeviceImpl = new CGrgPinPadImpl(); } PinPadClassImpl::~PinPadClassImpl() { if(m_pDeviceImpl!=NULL) { delete (CGrgPinPadImpl*)m_pDeviceImpl; m_pDeviceImpl = NULL; } } ErrorCodeEnum PinPadClassImpl::GetDevCategory(DevCategoryInfo &devCategory) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->GetDevCategory(devCategory); /* LOG4VTM_FUNCTION(); ErrorCodeEnum err = Error_Succeed; std::strcpy(devCategory.szModel, "szModel"); std::strcpy(devCategory.szType, "szCategory"); std::strcpy(devCategory.szVendor, "szVendor"); return err;*/ } ErrorCodeEnum PinPadClassImpl::Reset() { return ((CGrgPinPadImpl*)m_pDeviceImpl)->Reset(); /* ErrorCodeEnum err = Error_Unexpect; m_mode = 0; return err;*/ } ErrorCodeEnum PinPadClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->DevOpen(dwPort,dwBaudRate); // LOG4VTM_FUNCTION(); /*static int nums = 0; ErrorCodeEnum err = Error_Succeed; if (nums == 0) { err = Error_Unexpect; nums = 1; } else { LOG4VTM(TRACE, ("This is first TRACE type message.")); LOG4VTM(INFO, ("This is first INFO type message.")); LOG4VTM(WARN, ("This is first WARN type message.")); LOG4VTM(ERROR, ("This is first ERROR type message.")); LOG4VTM(FATAL, ("This is first FATAL type message.")); } return err;*/ } ErrorCodeEnum PinPadClassImpl::DevClose() { return ((CGrgPinPadImpl*)m_pDeviceImpl)->DevClose(); /* ErrorCodeEnum err = Error_Succeed; return err;*/ } ErrorCodeEnum PinPadClassImpl::KeyRead(BYTE &ch) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->KeyRead(ch); /* ErrorCodeEnum err = Error_Succeed; static int cursor = 0; if(m_mode == 0) { ch = 0x0d; cursor = 0; } else { ch = 0x3f; } return err;*/ } ErrorCodeEnum PinPadClassImpl::StartPinInput(BYTE byLen) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->StartPinInput(byLen); /* ErrorCodeEnum err = Error_Succeed; m_mode = 1; return err;*/ } ErrorCodeEnum PinPadClassImpl::StartPinInputConfirm(BYTE byLen) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->StartPinInputConfirm(byLen); /* ErrorCodeEnum err = Error_Succeed; m_mode = 1; return err;*/ } ErrorCodeEnum PinPadClassImpl::StartPlainInput() { return ((CGrgPinPadImpl*)m_pDeviceImpl)->StartPlainInput(); /* ErrorCodeEnum err = Error_Succeed; m_mode = 0; return err;*/ } ErrorCodeEnum PinPadClassImpl::StopInput() { return ((CGrgPinPadImpl*)m_pDeviceImpl)->StopInput(); /* ErrorCodeEnum err = Error_Succeed; m_mode = 0; return err;*/ } ErrorCodeEnum PinPadClassImpl::LoadMasterKey(MasterKeyParam masterKey) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->LoadMasterKey(masterKey); /* ErrorCodeEnum err = Error_Succeed; return err;*/ } ErrorCodeEnum PinPadClassImpl::LoadWorkingKey(WorkKeyParam wkKey) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->LoadWorkingKey(wkKey); /* ErrorCodeEnum err = Error_Succeed; return err;*/ } ErrorCodeEnum PinPadClassImpl::ActiveWorkingKey(DWORD dwMkSN, DWORD dwWkSN) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->ActiveWorkingKey(dwMkSN,dwWkSN); /* ErrorCodeEnum err = Error_Succeed; return err;*/ } ErrorCodeEnum PinPadClassImpl::SetParam(SetParamTypeEnum eType, SetParamValueEnum eValue) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->SetParam(eType,eValue); /* ErrorCodeEnum err = Error_Succeed; return err;*/ } ErrorCodeEnum PinPadClassImpl::EncryptData(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->EncryptData(srcInfo,destInfo); /* ErrorCodeEnum err = Error_Succeed; memset(destInfo.data, 0, sizeof(destInfo.data)); if(std::strcmp((const char*)srcInfo.data, "0000000000000000") == 0) { std::strcpy((char*)destInfo.data, "EC6162E6E08C7279"); destInfo.dwSize = 16; } else if(std::strcmp((const char*)srcInfo.data, "1234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456ff00ff001122334400000000000000001234567890123456") == 0) { std::strcpy((char*)destInfo.data, "9DFE47D355F40F33FC634AF5BA511337DC36261313DDF70F6B7E5696EC55BDE4C39F7CE724AA864AC3074B2F4A51FC87C2A160A9102507E8126312B204392EB4BDA42A724E2F75FC9B87EE02B4CB47813A0F9A734EF5680D20D897CB2DB4EB2EF0D24B8AE2FA277F569F222AABE660AA2D276B9432D8941AAA64D1E62209ABFC"); destInfo.dwSize = 256; } else { err = Error_NotImpl; } return err;*/ } ErrorCodeEnum PinPadClassImpl::MacEncrypt(EnDecryptInfo srcInfo, EnDecryptInfo &destInfo) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->MacEncrypt(srcInfo,destInfo); /* ErrorCodeEnum err = Error_NotImpl; return err;*/ } ErrorCodeEnum PinPadClassImpl::GetPinBlock(PinBlock &block) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->GetPinBlock(block); /* ErrorCodeEnum err = Error_Succeed; std::strcpy((char*)block.data, "147DE54A44497DDB"); block.dwSize = 16; return err;*/ } ErrorCodeEnum PinPadClassImpl::SetAccNo(AccountInfo accInfo) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->SetAccNo(accInfo); /* ErrorCodeEnum err = Error_Succeed; return err;*/ } ErrorCodeEnum PinPadClassImpl::GetLastErr(DevErrorInfo &devErrInfo) { return ((CGrgPinPadImpl*)m_pDeviceImpl)->GetLastErr(devErrInfo); /* TRACE4VTM_FUNCTION(&devErrInfo.dwErrMsgLen); //strcpy(devErrInfo.szErrMsg, helloWorld()); //devErrInfo.dwErrMsgLen = strlen(helloWorld()); return Error_Succeed; */ } int PinPadClassImpl::GetEncryptFunc() { return ((CGrgPinPadImpl*)m_pDeviceImpl)->GetEncryptFunc(); } DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pOutDevAptObj) { cmb::log_init_config config; config.dev_name = "PinPad"; #if defined(_MSC_VER) config.log_dir = ("C:\\rvc\\dbg\\"); #else config.log_dir = ("/opt/rvc/dbg/"); #endif //_MSC_VER std::string str; cmb::log4vendor::init(config, str); printf("init after: %s\n", str.c_str()); pOutDevAptObj = new PinPadClassImpl(); if(pOutDevAptObj == NULL) { return Error_Resource; } return Error_Succeed; } DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj) { if(pInDevAptObj == NULL) { return Error_Param; } if(PinPadClassImpl* pTmp = dynamic_cast(pInDevAptObj)) { delete pTmp; pTmp = NULL; return Error_Succeed; } return Error_Param; }