123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #include "VirtualDeviceClass.h"
- #include "libGPIOLoader.h"
- static VirtualDeviceClassImpl* object = NULL;
- 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;
- }
- }
- }
- 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(GpioInitParam initParam)
- {
- Bridge_GpioInitParam inner;
- inner.dwPort = initParam.dwPort;
- inner.dwBaudRate = initParam.dwBaudRate;
- inner.dwPortNum = initParam.dwPortNum;
- for (int i = 0; i < MAX_PORT_NUM; ++i) {
- inner.dir[i] = initParam.dir[i] ? 1 : 0;
- }
- return Bridge_DevOpen(inner);
- }
- ErrorCodeEnum VirtualDeviceClassImpl::WritePort(DWORD dwPort, BYTE btData)
- {
- return Bridge_WritePort(dwPort, btData);
- }
- ErrorCodeEnum VirtualDeviceClassImpl::ReadPort(DWORD dwPort, BYTE& btStatus)
- {
- BYTE inner = btStatus;
- ErrorCodeEnum result = Bridge_ReadPort(dwPort, &inner);
- btStatus = inner;
- return result;
- }
|