123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- #ifndef __DEVICEBASE_HELPER_H
- #define __DEVICEBASE_HELPER_H
- #pragma once
- #include "DeviceBaseClass.h"
- /*
- assert(DeviceBaseHelper::GetCurVendorType("") == Vendor_Invalide);
- assert(DeviceBaseHelper::GetCurVendorType("buzhidao") == Vendor_Invalide);
- assert(DeviceBaseHelper::GetCurVendorType("hyosung") == Vendor_Hyosung);
- assert(DeviceBaseHelper::GetCurVendorType("KXD") == Vendor_Kxd);
- assert(DeviceBaseHelper::GetCurVendorType("KEBa") == Vendor_Keba);
- assert(DeviceBaseHelper::GetCurVendorType("nanTiAn") == Vendor_Nantian);
- assert(DeviceBaseHelper::GetCurVendorType("YOTAP") == Vendor_yotap);
- assert(DeviceBaseHelper::GetCurVendorType("zSs") == Vendor_ZSS);
- assert(DeviceBaseHelper::GetCurVendorType("GWI") == Vendor_GreateWall);
- assert(DeviceBaseHelper::GetCurVendorType("yihua") == Vendor_YiHua);
- assert(DeviceBaseHelper::GetCurVendorType("yh") == Vendor_YiHua);
- assert(DeviceBaseHelper::GetCurVendorType("GRG") == Vendor_GRG);
- assert(DeviceBaseHelper::GetCurVendorType("cw") == Vendor_CW);
- assert(DeviceBaseHelper::GetCurVendorType("eastCOM") == Vendor_EastCom);
- assert(DeviceBaseHelper::GetCurVendorType("hx") == Vendor_HuaXin);
- assert(DeviceBaseHelper::GetCurVendorType("sankyo") == Vendor_Sankyo);
- assert(DeviceBaseHelper::GetCurVendorType("chinavision") == Vendor_ChinaVision);
- */
- enum VendorNameType {
- Vendor_Invalide,
- Vendor_Sankyo,
- Vendor_ChinaVision,
- Vendor_Hyosung,
- Vendor_Kxd,
- Vendor_Keba,
- Vendor_Nantian,
- Vendor_yotap,
- Vendor_ZSS,
- Vendor_GreateWall,
- Vendor_YiHua,
- Vendor_GRG,
- Vendor_CW,
- Vendor_EastCom,
- Vendor_HuaXin,
- Vendor_MAX
- };
- static const char* VendorNameStr[] = {
- "Unknown",
- "Sankyo",
- "ChinaVision",
- "hyosung",
- "kxd",
- "keba",
- "nantian",
- "yotap",
- "zss",
- "gwi",
- "yh", // "yihua"
- "grg",
- "CW",
- "EastCom",
- "hx"
- };
- class DeviceBaseHelper
- {
- public:
- static ErrorCodeEnum GetAndSplitDevErrInfo(
- DeviceBaseClass* inst,
- CSimpleStringA& csErrMsg,
- WORD& wdDevErrCode,
- LPCTSTR lpszFuncNameForDisplay = ""
- )
- {
- csErrMsg = "";
- wdDevErrCode = 0;
- BOOL bDisplayFunName = TRUE;
- if( lpszFuncNameForDisplay == NULL || strlen(lpszFuncNameForDisplay) == 0 )
- bDisplayFunName = FALSE;
- if(inst == NULL)
- {
- Dbg("inst occurs nullptr !!!");
- return Error_Param;
- }
- DevErrorInfo devErrInfo;
- ZeroMemory(&devErrInfo, sizeof(DevErrorInfo));
- ErrorCodeEnum erroCode = inst->GetLastErr(devErrInfo);
- if(erroCode == Error_Succeed)
- {
- if(strlen(devErrInfo.szErrMsg) > 0)
- {
- csErrMsg = devErrInfo.szErrMsg;
- }
- if(devErrInfo.dwErrMsgLen > MAX_DEV_ERROR_MSG_LEN)
- {
- //oiltmp@20200520 comment the following line
- //wdDevErrCode = (WORD)((devErrInfo.dwErrMsgLen >> 16) & 0x0000FFFF);
- }
- if(bDisplayFunName)
- {
- Dbg("Invoke <%s> failed, Dev_GLE: DevErrCode[%d], ErrMsg[%s]",
- lpszFuncNameForDisplay, wdDevErrCode, (LPCTSTR)csErrMsg);
- }
- else
- {
- Dbg("Dev_GLE: DevErrCode[%d], ErrMsg[%s]", wdDevErrCode, (LPCTSTR)csErrMsg);
- }
- }
- else
- {
- if(bDisplayFunName)
- {
- Dbg("Invoke <%s> failed, and unfortunately Dev_GLE failed returned EC: %d(0x%X)",
- lpszFuncNameForDisplay, erroCode, erroCode);
- csErrMsg = CSimpleStringA::Format("Invoke <%s> failed", lpszFuncNameForDisplay);
- }
- else
- {
- Dbg("Dev_GLE failed returned EC: %d(0x%X)",
- erroCode, erroCode);
- }
- }
- return erroCode;
- }
- static ErrorCodeEnum LogDevErrInfo(DeviceBaseClass* inst, LPCTSTR lpszFuncName = "")
- {
- CSimpleStringA csMsg;
- WORD wdErrorCode = 0;
- return GetAndSplitDevErrInfo(inst, csMsg, wdErrorCode, lpszFuncName);
- }
- static BOOL GetDevErrorCode(DeviceBaseClass* inst, WORD& wdErrorCode)
- {
- CSimpleStringA csMsg;
- ErrorCodeEnum eRet = GetAndSplitDevErrInfo(inst, csMsg, wdErrorCode);
- return ((eRet == Error_Succeed) ? (TRUE) : (FALSE));
- }
- static VendorNameType GetCurVendorType(LPCTSTR vendorName)
- {
- if(vendorName == NULL || strlen(vendorName) == 0) {
- return Vendor_Invalide;
- }
- int idx = -1;
- for(int i=0; i<sizeof(VendorNameStr)/sizeof(VendorNameStr[0]); ++i)
- {
- if(strnicmp(vendorName, VendorNameStr[i], strlen(VendorNameStr[i])) == 0) {
- idx = i;
- break;
- }
- }
- if(idx == -1) {
- /*历史遗留原因,怡化厂商有两个适配器名字*/
- if(strnicmp(vendorName, "yihua", strlen("yihua")) == 0) {
- idx = Vendor_YiHua;
- } else {
- idx = Vendor_Invalide;
- }
- }
- return (VendorNameType)idx;
- }
- };
- struct HardwareEntityCode {
- DWORD dwEntityId;
- DWORD dwVendorId;
- DWORD dwVendorErroCode;
- DWORD dwReserved;
- };
- #define HARDWARE_ENTITY_RESET_ENTITYID(ent, entityID) \
- do{\
- memset(&ent, 0, sizeof(ent)); \
- ent.dwEntityId = entityID; \
- } while (false)
- #define HARDWARE_ENTITY_SET_DEVCODE(ent, ec, reserved) \
- do {\
- ent.dwVendorErroCode = ec; \
- ent.dwReserved = reserved; \
- } while (false)
- // 先不上厂商标识 [5/14/2020 7:34 @Gifur]
- #define HARDWARE_ENTITY_SET_VENDOR_NAME(ent, str) \
- ent.dwVendorId = 0/*(DWORD)DeviceBaseHelper::GetCurVendorType(str)*/
- #define HARDWARE_ENTITY_MAKE_ERRORCODE(ec) \
- MAKE_SLV_ERRORCODE(ec.dwEntityId, (ec.dwVendorId), ec.dwVendorErroCode)
- #define HARDWARE_ENTITY_MAKE_ERRORCODE_TO_BUSINESS(ec) \
- MAKE_SLV_ERRORCODE_TO_BUSINESS(ec.dwEntityId, ec.dwVendorErroCode, ec.dwReserved)
- /*class object must have 'LogErrMsg' function.*/
- #define LOG_ERROR_MSG_MACRO(errCode, MethodSig, DeviceType)\
- do {\
- if(errCode != Error_Succeed) {\
- LogErrMsg(CSimpleStringA::Format("%s::%s at line:%d", __FUNCTION__, #MethodSig, __LINE__), \
- errCode, MEC_DEVAPI_##DeviceType##_(MethodSig), TRUE);\
- }\
- } while (false)
- #define LOG_CARDISSUER_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, CARDISSUER)
- #define LOG_CARDSWIPER_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, CARDSWIPER)
- #define LOG_THERMALPRINT_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, THERMALPRINT)
- #define LOG_DEVCONTROL_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, DEVCONTROL)
- #define LOG_PRINTSEAL_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, PRINTSEAL)
- #define LOG_FINGERPRINT_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, FINGERPRINT)
- #define LOG_HSPSCANNER_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, HSPSCANNER)
- #define LOG_UPS_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, UPS)
- #define LOG_GPIO_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, GPIO)
- #define LOG_IDCER_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, IDCER)
- #define LOG_RF_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, RF)
- #define LOG_PINPAD_ERROR_MSG_MACRO(errCode, MethodSig)\
- LOG_ERROR_MSG_MACRO(errCode, MethodSig, EPP)
- #endif // __DEVICEBASE_HELPER_H
|