#include "contactless_impl.h" #include "contactless_httpans.h" #include #include #include #include #include "log4vendor.h" #include ContactlessCardImpl::ContactlessCardImpl() :m_mode(0) { } ContactlessCardImpl::~ContactlessCardImpl() { } ErrorCodeEnum ContactlessCardImpl::GetDevCategory(DevCategoryInfo &devCategory) { ErrorCodeEnum err = Error_Succeed; SimulatorDevCategoryAns ans; err = SimulatorHttpFunction(EntityName, "GetDevCategory", ans); LOG4VTM(INFO, "GetDevCategory err = " << err); strcpy(devCategory.szType, ans.szType.c_str()); strcpy(devCategory.szModel, ans.szModel.c_str()); strcpy(devCategory.szVendor, ans.szVendor.c_str()); devCategory.eState = (DevStateEnum)ans.eState; devCategory.version.wMajor = ans.version.wMajor; devCategory.version.wMinor = ans.version.wMinor; devCategory.version.wRevision = ans.version.wRevision; devCategory.version.wBuild = ans.version.wBuild; return err; } ErrorCodeEnum ContactlessCardImpl::Reset() { ErrorCodeEnum err = Error_Succeed; err = SimulatorHttpFunction(EntityName, "Reset"); LOG4VTM(INFO, "Reset err = " << err); return err; } ErrorCodeEnum ContactlessCardImpl::DevClose() { ErrorCodeEnum err = Error_Succeed; err = SimulatorHttpFunction(EntityName, "DevClose"); LOG4VTM(INFO, "DevClose err = " << err); return err; } ErrorCodeEnum ContactlessCardImpl::GetLastErr(DevErrorInfo &devErrInfo) { ErrorCodeEnum err = Error_Succeed; SimulatorDevErrInfoAns ans; err = SimulatorHttpFunction(EntityName, "GetLastErr", ans); LOG4VTM(INFO, "GetLastErr err = " << err); devErrInfo.dwErrMsgLen = ans.dwErrMsgLen; strcpy(devErrInfo.szErrMsg, ans.szErrMsg.c_str()); return err; } ErrorCodeEnum ContactlessCardImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate) { ErrorCodeEnum err = Error_Succeed; err = SimulatorHttpFunction(EntityName, "DevOpen"); LOG4VTM(INFO, "DevOpen err = " << err); return err; } ErrorCodeEnum ContactlessCardImpl::GetDevStatus(RFICReaderStatus& devStatus) { ErrorCodeEnum err = Error_Succeed; RFICReaderStatusAns ans; err = SimulatorHttpFunction(EntityName, "GetDevStatus", ans); LOG4VTM(INFO, "GetDevStatus err = " << err); if (err == Error_Succeed) { devStatus.eMediaPos = (CardStatusEnum)ans.eMediaPos; } return err; } ErrorCodeEnum ContactlessCardImpl::AbortRead() { ErrorCodeEnum err = Error_Succeed; err = SimulatorHttpFunction(EntityName, "AbortRead"); LOG4VTM(INFO, "AbortRead err = " << err); return err; } ErrorCodeEnum ContactlessCardImpl::ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType) { ErrorCodeEnum err = Error_Succeed; ActiveContactlessICCardAns ans; err = SimulatorHttpFunction(EntityName, "ActiveContactlessICCard", ans); LOG4VTM(INFO, "ActiveContactlessICCard err = " << err); if (err == Error_Succeed) { outType = (char)ans.outType; } return err; } ErrorCodeEnum ContactlessCardImpl::DeactContactlessICCard() { ErrorCodeEnum err = Error_Succeed; err = SimulatorHttpFunction(EntityName, "DeactContactlessICCard"); LOG4VTM(INFO, "DeactContactlessICCard err = " << err); return err; } ErrorCodeEnum ContactlessCardImpl::WarmReset() { ErrorCodeEnum err = Error_Succeed; err = SimulatorHttpFunction(EntityName, "WarmReset"); LOG4VTM(INFO, "WarmReset err = " << err); return err; } ErrorCodeEnum ContactlessCardImpl::MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf) { ErrorCodeEnum err = Error_Succeed; CmdInfoAns ans; err = SimulatorHttpFunction(EntityName, "ActiveContactlessICCard", ans); LOG4VTM(INFO, "ActiveContactlessICCard err = " << err); if (err == Error_Succeed) { recvBuf.dwSize = ans.dwSize; memcpy(recvBuf.data, ans.data.c_str(), ans.data.length() + 1); } return err; } ErrorCodeEnum ContactlessCardImpl::RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf) { ErrorCodeEnum err = Error_Succeed; CmdInfoAns ans; err = SimulatorHttpFunction(EntityName, "RFTypeABCommand", ans); LOG4VTM(INFO, "RFTypeABCommand err = " << err); if (err == Error_Succeed) { recvBuf.dwSize = ans.dwSize; memcpy(recvBuf.data, ans.data.c_str(), ans.data.length() + 1); } return err; } ErrorCodeEnum ContactlessCardImpl::HaltCard() { ErrorCodeEnum err = Error_Succeed; err = SimulatorHttpFunction(EntityName, "HaltCard"); LOG4VTM(INFO, "HaltCard err = " << err); return err; } DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass *&baseObj) { baseObj = new ContactlessCardImpl(); if(baseObj == NULL) { return Error_Resource; } cmb::log_init_config config; config.dev_name = "vendor_ContactlessCard"; #ifdef _MSC_VER config.log_dir = ("D:\\rvc\\dbg\\"); #else config.log_dir = ("/opt/rvc/dbg/"); #endif std::string str; cmb::log4vendor::init(config, str); std::string tmpStr = GetSimulatorUrl(); LOG4VTM(INFO, "URL = " << tmpStr.c_str()); return Error_Succeed; } DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass *&pBaseObj) { if(pBaseObj == NULL) { return Error_Param; } if(ContactlessCardImpl* pTmp = dynamic_cast(pBaseObj)) { delete pTmp; pTmp = NULL; return Error_Succeed; } return Error_Param; } #ifdef NEWER_COMPILER_WORKAROUNDS DEVICEBASE_API ErrorCodeEnum GetDevAdapterVersion(DevSoftVersion& retVesion) { retVesion.wMajor = retVesion.wMinor = retVesion.wBuild = retVesion.wRevision = 0; return Error_Succeed; } #endif // NEWER_COMPILER_WORKAROUNDS