123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- #include "VirtualDeviceClass.h"
- #include "libContactlessCardLoader.h"
- static VirtualDeviceClassImpl* object = NULL;
- VirtualDeviceClassImpl::VirtualDeviceClassImpl()
- {
- }
- VirtualDeviceClassImpl::~VirtualDeviceClassImpl()
- {
- }
- ErrorCodeEnum VirtualDeviceClassImpl::GetDevCategory(DevCategoryInfo& devCategory)
- {
- ErrorCodeEnum result;
- DevCategoryInfo inner;
- result = Bridge_GetDevCategory(&inner);
- if (result == Error_Succeed) {
- strcpy_s(devCategory.szType, MAX_DEV_TYPE_LEN, inner.szType);
- strcpy_s(devCategory.szModel, MAX_DEV_MODEL_LEN, inner.szModel);
- strcpy_s(devCategory.szVendor, MAX_DEV_VENDOR_LEN, inner.szVendor);
- devCategory.eState = inner.eState;
- devCategory.version.wMajor = inner.version.wMajor;
- devCategory.version.wMinor = inner.version.wMinor;
- devCategory.version.wRevision = inner.version.wRevision;
- devCategory.version.wBuild = inner.version.wBuild;
- }
- return result;
- }
- ErrorCodeEnum VirtualDeviceClassImpl::Reset()
- {
- return Bridge_Reset();
- }
- ErrorCodeEnum VirtualDeviceClassImpl::DevClose()
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_DevClose());
- }
- ErrorCodeEnum VirtualDeviceClassImpl::GetLastErr(DevErrorInfo& devErrInfo)
- {
- ErrorCodeEnum result = Error_Succeed;
- DevErrorInfo inner;
- result = Bridge_GetLastErr(&inner);
- if (result == Error_Succeed) {
- devErrInfo.dwErrMsgLen = inner.dwErrMsgLen;
- strcpy_s(devErrInfo.szErrMsg, MAX_DEV_ERROR_MSG_LEN, inner.szErrMsg);
- }
- return (result);
- }
- ErrorCodeEnum VirtualDeviceClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_DevOpen(dwPort, dwBaudRate));
- }
- ErrorCodeEnum VirtualDeviceClassImpl::GetDevStatus(RFICReaderStatus& devStatus)
- {
- ErrorCodeEnum result = Error_Unexpect;
- Bridge_RFICReaderStatus inner;
- result = Bridge_GetDevStatus(&inner);
- if (result == Error_Succeed) {
- devStatus.eMediaPos = (CardStatusEnum)inner.eMediaPos;
- }
- return result;
- }
- ErrorCodeEnum VirtualDeviceClassImpl::AbortRead()
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_AbortRead());
- }
- ErrorCodeEnum VirtualDeviceClassImpl::ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType)
- {
- ErrorCodeEnum result = Error_Unexpect;
- char inner = outType;
- result = Bridge_ActiveContactlessICCard(fstType, scdType, thdType, &inner);
- if (result == Error_Succeed) {
- outType = inner;
- }
- return result;
- }
- ErrorCodeEnum VirtualDeviceClassImpl::DeactContactlessICCard()
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_DeactContactlessICCard());
- }
- ErrorCodeEnum VirtualDeviceClassImpl::WarmReset()
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_WarmReset());
- }
- //δÕÒµ½ÒýÓÃ
- ErrorCodeEnum VirtualDeviceClassImpl::MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf)
- {
- ErrorCodeEnum result = Error_Unexpect;
- Bridge_CmdInfo inner_sendBuf;
- Bridge_CmdInfo inner_recvBuf;
- inner_sendBuf.dwSize = sendBuf.dwSize;
- memcpy(inner_sendBuf.data, sendBuf.data, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
- result = Bridge_MifareCommand((MifareFuctionEnum)eFunType, inner_sendBuf, &inner_recvBuf);
- if (result == Error_Succeed) {
- recvBuf.dwSize = inner_recvBuf.dwSize;
- memcpy(recvBuf.data, inner_recvBuf.data, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
- }
- return result;
- }
- ErrorCodeEnum VirtualDeviceClassImpl::RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
- {
- ErrorCodeEnum result = Error_Unexpect;
- Bridge_CmdInfo inner_sendBuf;
- Bridge_CmdInfo inner_recvBuf;
- inner_sendBuf.dwSize = sendBuf.dwSize;
- memcpy(inner_sendBuf.data, sendBuf.data, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
- result = Bridge_RFTypeABCommand(inner_sendBuf, &inner_recvBuf);
- if (result == Error_Succeed) {
- recvBuf.dwSize = inner_recvBuf.dwSize;
- memcpy(recvBuf.data, inner_recvBuf.data, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
- }
- return result;
- }
- ErrorCodeEnum VirtualDeviceClassImpl::HaltCard()
- {
- ErrorCodeEnum result = Error_Succeed;
- return (result = Bridge_HaltCard());
- }
- DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pOutDevAptObj)
- {
- ErrorCodeEnum result(Error_Unexpect);
- if (object == NULL) {
- char* buf;
- DWORD size;
- const char* var = "INVOKE_VENDOR_ADAPTER_NAME";
- size = GetEnvironmentVariableA(var, NULL, 0);
- //ERROR_ENVVAR_NOT_FOUND
- if (size <= 0) {
- return Error_InvalidState;
- }
- buf = new char[size + 3];
- if (buf == NULL) {
- return Error_Resource;
- }
- memset(buf, 0, sizeof(char) * (size + 3));
- size = GetEnvironmentVariableA(var, buf, size);
- result = Bridge_LoadDevObject(buf);
- if (result == Error_Succeed) {
- object = new VirtualDeviceClassImpl();
- }
- delete[] buf;
- }
- pOutDevAptObj = object;
- return result;
- }
- DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
- {
- ErrorCodeEnum result = Bridge_ReleaseDevObject();
- if (result == Error_Succeed && pInDevAptObj != NULL) {
- delete pInDevAptObj;
- pInDevAptObj = NULL;
- }
- return result;
- }
- extern "C" DEVICEBASE_API void GetMoreErrorDetail(char* szErrMsg, DWORD * pMsgLen)
- {
- if (szErrMsg != NULL && pMsgLen != NULL && *pMsgLen > 0) {
- DevErrorInfo inner;
- ErrorCodeEnum result = Bridge_GetLastErr(&inner);
- if (result == Error_Succeed) {
- strcpy_s(szErrMsg, *pMsgLen, inner.szErrMsg);
- *pMsgLen = inner.dwErrMsgLen;
- }
- }
- }
|