|
@@ -0,0 +1,142 @@
|
|
|
+#include "VirtualDeviceClass.h"
|
|
|
+#include "libFingerPrintLoader.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;
|
|
|
+ result = Bridge_DevOpen(dwPort, dwBaudRate);
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum VirtualDeviceClassImpl::Image2Feature(const char* imageName, LPBYTE lpbFeature, int& iLength)
|
|
|
+{
|
|
|
+ ErrorCodeEnum result = Error_Unexpect;
|
|
|
+ int inner_iLength = iLength;
|
|
|
+ result = Bridge_Image2Feature(imageName,(BYTE*)lpbFeature, &inner_iLength);
|
|
|
+ if (result == Error_Succeed) {
|
|
|
+ iLength = inner_iLength;
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum VirtualDeviceClassImpl::Image2Template(const char* imagePath1, const char* imagePath2, const char* imagePath3, LPBYTE lpbTemplate, int& iLength)
|
|
|
+{
|
|
|
+ ErrorCodeEnum result = Error_Unexpect;
|
|
|
+ int inner_iLength = iLength;
|
|
|
+ result = Bridge_Image2Template(imagePath1, imagePath2, imagePath3,(BYTE*)lpbTemplate, &inner_iLength);
|
|
|
+ if (result == Error_Succeed) {
|
|
|
+ iLength = inner_iLength;
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum VirtualDeviceClassImpl::Match(LPBYTE lpbTemplate[], int iTemplateLen[], int templateNum, LPBYTE lbpFeature, int& iFeatureLen, int level /*= 3*/)
|
|
|
+{
|
|
|
+ ErrorCodeEnum result = Error_Unexpect;
|
|
|
+ int inner_iFeatureLen = iFeatureLen;
|
|
|
+ result = Bridge_Match(lpbTemplate, iTemplateLen, templateNum, (BYTE*)lbpFeature, &inner_iFeatureLen, level);
|
|
|
+ if (result == Error_Succeed) {
|
|
|
+ iFeatureLen = inner_iFeatureLen;
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+ErrorCodeEnum VirtualDeviceClassImpl::Cancel()
|
|
|
+{
|
|
|
+ ErrorCodeEnum result = Error_Unexpect;
|
|
|
+ result = Bridge_Cancel();
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+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;
|
|
|
+}
|
|
|
+
|