瀏覽代碼

Z991239-3333 #comment other: 指纹模块错误码及告警日志

翟俊伟80258120 3 年之前
父節點
當前提交
cf25fff26d

+ 1 - 1
Module/mod_ContactlessCard/ContactlessFSM.h

@@ -223,7 +223,7 @@ public:
         , m_bCDA(false), m_pDataToARQC(NULL), m_bSM(false), m_bOnlineOnly(false), m_port(true), m_Baudrate(true)
 		, m_csDevNo(true), m_devInit(false), m_repeatErrTimes(0)
     {
-		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x203);
+		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x213);
 		m_FirstStart = TRUE;
 		m_aidList.Init(3);
 		m_aidList[0] = "A000000333";

+ 27 - 5
Module/mod_CustMngrAuth/CustMngrAuthFSM.cpp

@@ -1252,6 +1252,8 @@ void CCustMngrAuthFSM::UpdateDataIntoMemory(map<CSimpleStringA, FeatureData*> te
 ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrint(SpReqAnsContext<CustMngrAuthService_CollectFingerPrint_Req, CustMngrAuthService_CollectFingerPrint_Ans>::Pointer ctx, DWORD& dwUserErrCode)
 {
 	LOG_FUNCTION();
+	LogWarn(Severity_Low, Error_Unexpect, LOG_ERR_CUSTMNGRAUTH_INVOKE_GETIMAGE, "web invoke CollectFingerPrint");
+
 	ErrorCodeEnum errCode = ConnectFingerPrintEntity();
 	if (errCode != Error_Succeed)
 		return errCode;
@@ -1274,7 +1276,13 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintInfo(SpReqAnsContext<CustMngrA
 	LOG_FUNCTION();
 
 	if (ctx == NULL || !(ctx->Req.FingerId > 0 && ctx->Req.FingerId < 10))
+	{
+		Dbg("CollectFingerPrintInfo, Invalid inParam, FingerId:%d", ctx->Req.FingerId);
 		return Error_Param;
+	}
+	CSimpleStringA tmpParam = CSimpleStringA::Format("web invoke CollectFingerPrintInfo with inParam FingerId:%d", ctx->Req.FingerId);
+	LogWarn(Severity_Low, Error_Unexpect, LOG_ERR_CUSTMNGRAUTH_INVOKE_CollectFingerPrintInfo, "web invoke CollectFingerPrintInfo");
+
 	ErrorCodeEnum errCode = ConnectFingerPrintEntity();
 	if (errCode != Error_Succeed)
 		return errCode;
@@ -1297,7 +1305,7 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintInfo(SpReqAnsContext<CustMngrA
 	if (errCode == Error_NotInit)
 	{
 		Dbg("FingerPrintEntity not ready or failed.");
-		return Error_Hardware;
+		return Error_DevNotAvailable;
 	}
 
 	if (errCode == Error_Succeed)
@@ -1331,6 +1339,7 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintInfo(SpReqAnsContext<CustMngrA
 				return Error_Unexpect;
 			}
 			ctx->Ans.fingerImg = data;
+			Dbg("CollectFingerPrintInfo return success.");
 		}
 	}
 	else
@@ -1342,10 +1351,14 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintInfo(SpReqAnsContext<CustMngrA
 ErrorCodeEnum CCustMngrAuthFSM::GenerateTemplate(SpReqAnsContext<CustMngrAuthService_GenerateTemplate_Req, CustMngrAuthService_GenerateTemplate_Ans>::Pointer ctx, DWORD& dwUserErrCode)
 {
 	LOG_FUNCTION();
+	LogWarn(Severity_Low, Error_Unexpect, LOG_ERR_CUSTMNGRAUTH_INVOKE_GenerateTemplate, "web invoke GenerateTemplate");
 
 	int fingerNum = ctx->Req.FingerIDList.GetCount();
 	if (fingerNum != IMAGE_NUM)
+	{
+		Dbg("GenerateTemplate, Invalid inParam, fingerNum:%d", fingerNum);
 		return Error_Param;
+	}
 
 	ErrorCodeEnum errCode;
 	m_pFingerPrint = new FingerPrintService_ClientBase(m_pEntity);
@@ -1355,7 +1368,7 @@ ErrorCodeEnum CCustMngrAuthFSM::GenerateTemplate(SpReqAnsContext<CustMngrAuthSer
 		Dbg("ERROR: connect to fingerprint entity failed while GenerateTemplate");
 		m_pFingerPrint->SafeDelete();
 		m_pFingerPrint = NULL;
-		return Error_Hardware;	//TODO::give one other errCode
+		return Error_DevNotAvailable;	//TODO::give one other errCode
 	}
 
 	CSimpleStringA depPath(true);
@@ -1373,7 +1386,7 @@ ErrorCodeEnum CCustMngrAuthFSM::GenerateTemplate(SpReqAnsContext<CustMngrAuthSer
 	if (m_pFingerPrint == NULL || m_pFingerPrint->QuerySessionClosed())
 	{
 		Dbg("m_pFingerPrint is NULL or connection closed.");
-		return Error_Hardware;
+		return Error_DevNotAvailable;
 	}
 
 	errCode = m_pFingerPrint->GenerateTemplate(generateReq, generateAns, 20000, dwUserErrCode);
@@ -1381,12 +1394,13 @@ ErrorCodeEnum CCustMngrAuthFSM::GenerateTemplate(SpReqAnsContext<CustMngrAuthSer
 	if (errCode == Error_NotInit)
 	{
 		Dbg("FingerPrintEntity not ready or failed.");
-		return Error_Hardware;
+		return Error_DevNotAvailable;
 	}
 
 	if (errCode == Error_Succeed)
 	{
 		ctx->Ans.templateFeature = generateAns.templateFeature;
+		Dbg("GenerateTemplate return success.");
 	}
 	else {
 		Dbg("Invoke GenerateTemplate returned %d", errCode);
@@ -1399,6 +1413,8 @@ ErrorCodeEnum CCustMngrAuthFSM::GenerateTemplate(SpReqAnsContext<CustMngrAuthSer
 ErrorCodeEnum CCustMngrAuthFSM::CollectFingerPrintEx(SpReqAnsContext<CustMngrAuthService_CollectFingerPrintEx_Req, CustMngrAuthService_CollectFingerPrintEx_Ans>::Pointer ctx, DWORD& dwUserErrCode)
 {
 	LOG_FUNCTION();
+	LogWarn(Severity_Low, Error_Unexpect, LOG_ERR_CUSTMNGRAUTH_INVOKE_GETIMAGEEx, "web invoke CollectFingerPrintEx");
+
 	ErrorCodeEnum errCode = ConnectFingerPrintEntity();
 	if (errCode != Error_Succeed)
 		return errCode;
@@ -1565,7 +1581,9 @@ ErrorCodeEnum CCustMngrAuthFSM::CollectProcessEx(SpReqAnsContext<CustMngrAuthSer
 		if (ctx->Req.FingerId == COLLECT_TIMES)
 			ctx->Ans.feature = collectExAns.feature;
 	}
-	else {
+	else if(errCode == Error_NotInit){
+		errCode = Error_DevNotAvailable;
+	}else {
 		errCode = Error_Unexpect;
 	}
 
@@ -1699,6 +1717,8 @@ ErrorCodeEnum CCustMngrAuthFSM::SaveFingerPrint(SpReqAnsContext<CustMngrAuthServ
 ErrorCodeEnum CCustMngrAuthFSM::MatchFingerPrint(SpReqAnsContext<CustMngrAuthService_StartAuthorize_Req, CustMngrAuthService_StartAuthorize_Ans>::Pointer ctx, bool& bStopAuthorize)
 {
 	LOG_FUNCTION();
+	LogWarn(Severity_Low, Error_Unexpect, LOG_ERR_CUSTMNGRAUTH_INVOKE_MATCH, "web invoke MatchFingerPrint");
+
 	ErrorCodeEnum errCode = ConnectFingerPrintEntity();
 	if (errCode != Error_Succeed)
 		return errCode;
@@ -1915,6 +1935,8 @@ ErrorCodeEnum CCustMngrAuthFSM::AnalyzeMatchResult(MatchParams* matchParam, bool
 ErrorCodeEnum CCustMngrAuthFSM::MatchFingerPrintEx(SpReqAnsContext<CustMngrAuthService_QueryAuthorInfo_Req, CustMngrAuthService_QueryAuthorInfo_Ans>::Pointer ctx, bool& bStopAuthorize, DWORD& dwUserErrCode)
 {
 	LOG_FUNCTION();
+	LogWarn(Severity_Low, Error_Unexpect, LOG_ERR_CUSTMNGRAUTH_INVOKE_MATCHEx, "web invoke MatchFingerPrintEx");
+
 	ErrorCodeEnum errCode;
 	m_pFingerPrint = new FingerPrintService_ClientBase(m_pEntity);
 	errCode = m_pFingerPrint->Connect();

+ 15 - 7
Module/mod_CustMngrAuth/CustMngrAuth_UserErrorCode.h

@@ -2,12 +2,20 @@
 #define _CUSTMNGRAUTH_USE_ERRORCODE_H
 #pragma once
 
-#define LOG_ERR_CUSTMNGRAUTH_OPEN_RUNINFO_FAILED_SAVEFINGERPRINT	0x10200200	//注册时,指纹写本地文件时,打开运行时文件失败
-#define LOG_ERR_CUSTMNGRAUTH_REGISTER_WRITE_RUNINFO_FAILED			0x10200201	//注册/更新,数据写入本地文件时失败
-#define LOG_ERR_CUSTMNGRAUTH_OPEN_RUNINFO_FAILED_UPDATE				0x10200202	//从分行服务请求数据时,打开运行时文件失败
-#define LOG_ERR_CUSTMNGRAUTH_FEATUPDATE_CONNECT_FAILED				0x10200204	//连接分行服务失败(连续60次连接不上(30min),报错一次)
-#define LOG_ERR_CUSTMNGRAUTH_AUTHORIZATION_READFEAT_FAILED			0x10200205	//读文件数据到内存失败
-#define LOG_ERR_CUSTMNGRAUTH_READ_INTO_MEMORY_TIME					0x10200206	//读文件到内存耗时
-#define LOG_ERR_CUSTMNGRAUTH_GET_RUNINFO_PATH_FAILED_Init			0x10200207	//初始化时获取运行时路径失败
+#define LOG_ERR_CUSTMNGRAUTH_OPEN_RUNINFO_FAILED_SAVEFINGERPRINT	0x10200200	//注册时,指纹写本地文件时,打开运行时文件失败 - LogError
+#define LOG_ERR_CUSTMNGRAUTH_REGISTER_WRITE_RUNINFO_FAILED			0x10200201	//注册/更新,数据写入本地文件时失败 - LogError
+#define LOG_ERR_CUSTMNGRAUTH_OPEN_RUNINFO_FAILED_UPDATE				0x10200202	//从分行服务请求数据时,打开运行时文件失败 - LogWarn
+#define LOG_ERR_CUSTMNGRAUTH_FEATUPDATE_CONNECT_FAILED				0x10200204	//连接分行服务失败(连续60次连接不上(30min),报错一次) - LogWarn
+#define LOG_ERR_CUSTMNGRAUTH_AUTHORIZATION_READFEAT_FAILED			0x10200205	//读文件数据到内存失败 - LogWarn
+#define LOG_ERR_CUSTMNGRAUTH_READ_INTO_MEMORY_TIME					0x10200206	//读文件到内存耗时 - LogWarn
+#define LOG_ERR_CUSTMNGRAUTH_GET_RUNINFO_PATH_FAILED_Init			0x10200207	//初始化时获取运行时路径失败 - LogWarn
+
+#define LOG_ERR_CUSTMNGRAUTH_INVOKE_MATCH							0x10200208	//web调用旧的比对接口 - LogWarn
+#define LOG_ERR_CUSTMNGRAUTH_INVOKE_MATCHEx							0x10200209	//web调用后端比对接口 - LogWarn
+#define LOG_ERR_CUSTMNGRAUTH_INVOKE_GETIMAGE						0x1020020A	//web调用最初的注册接口 - LogWarn
+#define LOG_ERR_CUSTMNGRAUTH_INVOKE_GETIMAGEEx						0x1020020B	//web调用展示图片的注册接口 - LogWarn
+#define LOG_ERR_CUSTMNGRAUTH_INVOKE_CollectFingerPrintInfo			0x1020020C	//web调用单次采集的注册接口 - LogWarn
+#define LOG_ERR_CUSTMNGRAUTH_INVOKE_GenerateTemplate				0x1020020D	//web调用合成模板接口 - LogWarn
+
 
 #endif

+ 67 - 58
Module/mod_FingerPrint/FingerPrintFSM.cpp

@@ -28,6 +28,10 @@ void CFingerPrintFSM::s0_on_entry()
 {
 	LOG_FUNCTION();
 	m_devState = DEVICE_STATUS_NORMAL;
+	if (m_FirstStart) {
+		m_FirstStart = FALSE;
+		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
+	}
 }
 
 void CFingerPrintFSM::s0_on_exit()
@@ -279,24 +283,32 @@ ErrorCodeEnum CFingerPrintFSM::OnInit()
 		errDev = ExtractVendorLib(strLibFullPath);
 		if (errDev != Error_Succeed) {
 			LogWarn(Severity_High, Error_DevLoadFileFailed
-				, LOG_ERR_FINGERPRINT_GET_DLLNAME_FAILED_ONINIT
+				, FingerPrint_UserErrorCode_GET_DLLNAME_FAILED_ONINIT
 				, "get vendorlib failed while init");
 			return errDev;
 		}
 	}
-	Dbg("vendorlib name : %s", strLibFullPath.GetData());
+
+	LogWarn(Severity_Low, Error_DevLoadFileFailed
+		, FingerPrint_UserErrorCode_ROOT_INFO
+		, strLibFullPath.GetData());
 
 	if (!ExistsFile(strLibFullPath))
 	{
-		Dbg("No vendor fingerprint adapter in dep.");
+		LogWarn(Severity_High, Error_DevLoadFileFailed
+			, FingerPrint_UserErrorCode_VENDOR_ADAPTER_NOT_EXIST
+			, "No vendor fingerprint adapter in dep.");
 		m_devInit = false;
 		return Error_Succeed;
 	}
 
+	m_adapterInfo.adapterFileName = strLibFullPath;
+
 	errDev = m_hDevHelper.LoadUp(strLibFullPath);
 	if (Error_Succeed != errDev)
 	{
-		Dbg("load vendorlib or create DevAdapterObject failed.");
+		LogWarn(Severity_High, Error_NotInit, FingerPrint_UserErrorCode_LOAD_ADAPTER_FAILED,
+			"load vendorlib or create DevAdapterObject failed.");
 		return Error_DevLoadFileFailed;
 	}
 
@@ -324,8 +336,8 @@ ErrorCodeEnum CFingerPrintFSM::ExtractVendorLib(CSimpleStringA& strLibFullPath)
 	if (errCode != Error_Succeed)
 	{
 		Dbg("Get vendor libname(%s) failed.", strLibFullPath.GetData());
-		LogError(Severity_High, Error_DevLoadFileFailed
-			, LOG_ERR_FINGERPRINT_GET_DLLNAME_FAILED_ONINIT
+		LogWarn(Severity_High, Error_DevLoadFileFailed
+			, FingerPrint_UserErrorCode_GET_DLLNAME_FAILED_ONINIT
 			, "get dllname failed while init");
 		errCode = Error_DevLoadFileFailed;
 	}
@@ -342,8 +354,8 @@ ErrorCodeEnum CFingerPrintFSM::QueryRootConfigObj(CSmartPointer<IConfigInfo>& sp
 	if (errDev != Error_Succeed)
 	{
 		Dbg("open cfg file failed!");
-		LogError(Severity_High, Error_DevLoadFileFailed
-			, LOG_ERR_FINGERPRINT_OPEN_ROOT_FAILED_ONINIT
+		LogWarn(Severity_High, Error_DevLoadFileFailed
+			, FingerPrint_UserErrorCode_OPEN_ROOT_FAILED_ONINIT
 			, "get root config file pointer failed while init");
 	}
 
@@ -380,12 +392,8 @@ ErrorCodeEnum CFingerPrintFSM::DoDevOpen(CSmartPointer<IConfigInfo> spConfig)
 		errDev = m_hDevHelper->DevOpen(tmpPort, baudrate);
 		if (errDev != Error_Succeed)
 		{
-			WORD devErrCode = errDev;
-			CSimpleStringA errMsg = "";
-			GetAndSplitDevErrInfo(errMsg, devErrCode, "DevOpen"); //TODO: devErrCode???
-			LogError(Severity_High, Error_Hardware
-				, LOG_ERR_FINGERPRINT_OPEN_FAILED
-				, "Fingerprint init(DevOpen) failed.");
+			SetErrPackage(m_errPkg, "Initial::DevOpen", m_csDevSN, errDev, MEC_DEVAPI_FINGERPRINT_DevOpen);
+			AlarmDEC(m_errPkg);
 			errDev = Error_DevCommFailed;
 		}
 	} while (0);
@@ -406,14 +414,14 @@ ErrorCodeEnum CFingerPrintFSM::DoGetDevInfo()
 		Dbg("szModel = %s", m_devCatInfo.szModel);
 		Dbg("szType = %s", m_devCatInfo.szType);
 		Dbg("szVendor = %s", m_devCatInfo.szVendor);
-
+		m_adapterInfo.devCatInfo = m_devCatInfo;
 		m_devInit = true;
 		errDev = Error_Succeed;
 	}
 	else {
-		LogError(Severity_High, Error_Hardware
-			, LOG_ERR_FINGERPRINT_GETDEVINFO_FAILED
-			, "Get device info(GetDevCategory) failed.");
+		SetErrPackage(m_errPkg, "Initial::GetDevCategory", m_csDevSN, errDev, MEC_DEVAPI_FINGERPRINT_GetDevCategory);
+		AlarmDEC(m_errPkg);
+		m_hDevHelper->DevClose();
 		errDev = Error_DevCommFailed;
 	}
 	return errDev;
@@ -617,28 +625,28 @@ void CFingerPrintFSM::ProcessAfterScan(ScanParam* pScanParam, SpReqAnsContext<Fi
 		if (pScanParam->m_NotFindImage)
 		{
 			LogError(Severity_High, Error_Hardware
-				, LOG_ERR_FINGERPRINT_NO_IMAGE_IN_DEP_REGISTER
+				, FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_REGISTER
 				, "not find fingerprint image in dep while register.");
-			ctx->Answer(Error_Unexpect, LOG_ERR_FINGERPRINT_NO_IMAGE_IN_DEP_REGISTER);
+			ctx->Answer(Error_Unexpect, FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_REGISTER);
 		}
 		else if (pScanParam->m_FeatureIsNull)
 		{
 			LogError(Severity_High, Error_Hardware
-				, LOG_ERR_FINGERPRINT_GETFEATURE_FAILED_REGISTER
+				, FingerPrint_UserErrorCode_GETFEATURE_FAILED_REGISTER
 				, "fingerprint feature is null while register.");
-			ctx->Answer(Error_Unexpect, LOG_ERR_FINGERPRINT_GETFEATURE_FAILED_REGISTER);
+			ctx->Answer(Error_Unexpect, FingerPrint_UserErrorCode_GETFEATURE_FAILED_REGISTER);
 		}
 		else {
 			if (ctx->Req.times == 3 && !pScanParam->m_GetTemplateSuc)
 			{
 				LogError(Severity_High, Error_Hardware
-					, LOG_ERR_FINGERPRINT_GETTEMPLATE_FAILED
+					, FingerPrint_UserErrorCode_GETTEMPLATE_FAILED
 					, "Not generate template correctly.");
-				ctx->Answer(Error_Unexpect, LOG_ERR_FINGERPRINT_GETTEMPLATE_FAILED);
+				ctx->Answer(Error_Unexpect, FingerPrint_UserErrorCode_GETTEMPLATE_FAILED);
 			}
 			else if (pScanParam->m_Quit) {
 				LogWarn(Severity_Middle, Error_Hardware
-					, LOG_ERR_FINGERPRINT_REGISTER_FAILED
+					, FingerPrint_UserErrorCode_REGISTER_FAILED
 					, "Exit to homepage when register.");
 				ctx->Answer(Error_Unexpect);
 			}
@@ -800,31 +808,31 @@ void CFingerPrintFSM::ProcessAfterScanEx(ScanParam* pScanParam, SpReqAnsContext<
 		if (pScanParam->m_NotFindImage)
 		{
 			LogError(Severity_High, Error_Hardware
-				, LOG_ERR_FINGERPRINT_NO_IMAGE_IN_DEP_REGISTER
+				, FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_REGISTER
 				, "not find fingerprint image in dep while register.");
-			ctx->Answer(Error_NotExist, LOG_ERR_FINGERPRINT_NO_IMAGE_IN_DEP_REGISTER);
+			ctx->Answer(Error_NotExist, FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_REGISTER);
 		}
 		else if (pScanParam->m_FeatureIsNull)
 		{
 			ctx->Ans.reserved1[0] = 4;
 			LogError(Severity_High, Error_Hardware
-				, LOG_ERR_FINGERPRINT_GETFEATURE_FAILED_REGISTER
+				, FingerPrint_UserErrorCode_GETFEATURE_FAILED_REGISTER
 				, "fingerprint feature is null while register.");
-			ctx->Answer(Error_Succeed, LOG_ERR_FINGERPRINT_GETFEATURE_FAILED_REGISTER);
+			ctx->Answer(Error_Succeed, FingerPrint_UserErrorCode_GETFEATURE_FAILED_REGISTER);
 		}
 		else {
 			if (ctx->Req.times == 3 && !pScanParam->m_GetTemplateSuc)
 			{
 				ctx->Ans.reserved1[0] = 5;
 				LogError(Severity_High, Error_Hardware
-					, LOG_ERR_FINGERPRINT_GETTEMPLATE_FAILED
+					, FingerPrint_UserErrorCode_GETTEMPLATE_FAILED
 					, "Not generate template correctly.");
-				ctx->Answer(Error_Succeed, LOG_ERR_FINGERPRINT_GETTEMPLATE_FAILED);
+				ctx->Answer(Error_Succeed, FingerPrint_UserErrorCode_GETTEMPLATE_FAILED);
 			}
 			else if (pScanParam->m_Quit) {
 				ctx->Ans.reserved1[0] = 6;
 				LogWarn(Severity_Middle, Error_Hardware
-					, LOG_ERR_FINGERPRINT_REGISTER_FAILED
+					, FingerPrint_UserErrorCode_REGISTER_FAILED
 					, "Exit to homepage when register.");
 				ctx->Answer(Error_Succeed);
 			}
@@ -845,6 +853,11 @@ void CFingerPrintFSM::ProcessAfterScanEx(ScanParam* pScanParam, SpReqAnsContext<
 int CFingerPrintFSM::GetFingerPrint(SpReqAnsContext<FingerPrintService_GetFingerPrint_Req, FingerPrintService_GetFingerPrint_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
+	if (!m_devInit) {
+		Dbg("GetFingerPrint return failed for device isn't init suc.");
+		ctx->Answer(Error_NotInit);  //maybe no vendor adapter
+		return 0;
+	}
 
 	Dbg("ctx->Req.times = %d", ctx->Req.times);
 	if (ctx->Req.times <= 0 || ctx->Req.times > 10)
@@ -901,20 +914,16 @@ void CFingerPrintFSM::CollectProcess(ScanParam* pScanParam, SpReqAnsContext<Fing
 			, pScanParam->m_FeatureLen);
 		if (errCode == Error_Succeed)
 		{
-			Dbg("Invoke routine 'Image2Feature' success while GetFingerPrint.");
-			Dbg("FingerPrint feature length is %d", pScanParam->m_FeatureLen);
-			//Dbg("before add eof, feature = %s", (LPCTSTR)pScanParam->m_Feature);
 			SLEEP(200);
-			Dbg("pScanParam->m_FullFilePath = %s", pScanParam->m_FullFilePath.GetData());
 			if (ExistsFile(pScanParam->m_FullFilePath)
 				&& pScanParam->m_Feature != NULL
 				&& pScanParam->m_FeatureLen == STANDARD_FEATURE_LEN)
 			{
 				ctx->Ans.imageName = fileName;
 				pScanParam->m_Feature[STANDARD_FEATURE_LEN] = '\0';
-				//Dbg("after add eof, feature = %s", (LPCTSTR)pScanParam->m_Feature);
 				ctx->Ans.feature = (LPCTSTR)pScanParam->m_Feature;
 				pScanParam->m_bGetFingerPrintSuc = true;
+				Dbg("Image2Feature success.");
 				break;
 			}
 			else if (!ExistsFile(pScanParam->m_FullFilePath))
@@ -972,22 +981,22 @@ void CFingerPrintFSM::ProcessAfterCollect(ScanParam* pScanParam, SpReqAnsContext
 	}
 	else {
 		if (pScanParam->m_NotFindImage) {
-			LogError(Severity_High, Error_Hardware, LOG_ERR_FINGERPRINT_NO_IMAGE_IN_DEP_REGISTER, "not find fingerprint image in dep while register.");
+			LogError(Severity_High, Error_Hardware, FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_REGISTER, "not find fingerprint image in dep while register.");
 			ctx->Ans.reserved1[0] = 7;
-			ctx->Answer(Error_Succeed, LOG_ERR_FINGERPRINT_NO_IMAGE_IN_DEP_REGISTER);
+			ctx->Answer(Error_Succeed, FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_REGISTER);
 		}
 		else if (pScanParam->m_FeatureIsNull) {
-			LogError(Severity_High, Error_Hardware, LOG_ERR_FINGERPRINT_GETFEATURE_FAILED_REGISTER, "fingerprint feature is null while register.");
+			LogError(Severity_High, Error_Hardware, FingerPrint_UserErrorCode_GETFEATURE_FAILED_REGISTER, "fingerprint feature is null while register.");
 			ctx->Ans.reserved1[0] = 4;
-			ctx->Answer(Error_Succeed, LOG_ERR_FINGERPRINT_GETFEATURE_FAILED_REGISTER);
+			ctx->Answer(Error_Succeed, FingerPrint_UserErrorCode_GETFEATURE_FAILED_REGISTER);
 		}
 		else if (pScanParam->m_bLenIsNotRight) {
-			LogError(Severity_High, Error_Hardware, LOG_ERR_FINGERPRINT_FEATURELEN_ISNOTRIGHT, "fingerprint feature len is not right.");
+			LogError(Severity_High, Error_Hardware, FingerPrint_UserErrorCode_FEATURELEN_ISNOTRIGHT, "fingerprint feature len is not right.");
 			ctx->Ans.reserved1[0] = 5;
 			ctx->Answer(Error_Succeed);
 		}
 		else if (pScanParam->m_Quit) {
-			LogWarn(Severity_High, Error_Hardware, LOG_ERR_FINGERPRINT_REGISTER_FAILED, "Exit to homepage when register.");
+			LogWarn(Severity_High, Error_Hardware, FingerPrint_UserErrorCode_REGISTER_FAILED, "Exit to homepage when register.");
 			ctx->Ans.reserved1[0] = 6;
 			ctx->Answer(Error_Succeed);
 		}
@@ -1011,6 +1020,7 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 	LOG_FUNCTION();
 
 	if (!m_devInit) {
+		Dbg("GenerateTemplate return failed for device isn't init suc.");
 		ctx->Answer(Error_NotInit);
 		return 0;
 	}
@@ -1031,13 +1041,12 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 
 	for (int i = 0; i < ctx->Req.FingerIDList.GetCount(); ++i)
 	{
-		Dbg("fingerIDList = %d", ctx->Req.FingerIDList[i]);
 		char buf[8];
 		ZeroMemory(buf, 8);
 		_itoa(ctx->Req.FingerIDList[i], buf, 10);
 		CSimpleStringA tempStr = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "finger%d.bmp", strPath.GetData(), ctx->Req.FingerIDList[i]);
 		imagePaths.push_back(tempStr);
-		Dbg("%s", imagePaths[i].GetData());
+		Dbg("imageName:%s", imagePaths[i].GetData());
 		if (!ExistsFile(imagePaths[i]))
 		{
 			Dbg("image <%s> not exist.", imagePaths[i].GetData());
@@ -1065,18 +1074,18 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 		}
 	}
 	else {
-		DevErrorInfo devErrorInfo;
-		m_hDevHelper->GetLastErr(devErrorInfo);
-		Dbg("Invoke routine 'Image2Template' failed which returned 0x%x(%s)", errCode, devErrorInfo.szErrMsg);
+		SetErrPackage(m_errPkg, "GenerateTemplate::Image2Template", m_csDevSN, errCode, MEC_DEVAPI_FINGERPRINT_Image2Template);
+		AlarmDEC(m_errPkg);
 		errCode = Error_Unexpect;
 	}
 
 	DeleteBmp(BmpImage);
 	if (errCode == Error_Succeed)
 		ctx->Answer(Error_Succeed);
-	else
-		//ctx->Answer(eErr, AlarmDECToBusiness("generate template failed:", Error_Hardware, LOG_ERR_FINGERPRINT_GETTEMPLATE_FAILED));
-		ctx->Answer(errCode);
+	else {
+		SetErrPackage(m_errPkg, "generate template failed", m_csDevSN, Error_Unexpect, FingerPrint_UserErrorCode_GETTEMPLATE_FAILED);
+		ctx->Answer(errCode, AlarmDEC(m_errPkg));
+	}
 
 	delete[] lpbTemplate;
 	lpbTemplate = NULL;
@@ -1203,7 +1212,7 @@ ErrorCodeEnum CFingerPrintFSM::MatchProcess(ScanParam* initParam, SpReqAnsContex
 			initParam->m_Feature, initParam->m_FeatureLen);
 		ULLINT endMatch = RVCGetTickCount();
 		int duration = endMatch - startMatch;
-		LogWarn(Severity_Middle, Error_Debug, LOG_ERR_FINGERPRINT_MATCH_TIME,
+		LogWarn(Severity_Middle, Error_Debug, FingerPrint_UserErrorCode_MATCH_TIME,
 			GenerateAlarmJson("FingerPrint", duration).GetData());
 
 		if (errCode == Error_Succeed) //always true
@@ -1217,7 +1226,7 @@ ErrorCodeEnum CFingerPrintFSM::MatchProcess(ScanParam* initParam, SpReqAnsContex
 			DevErrorInfo devErrInfo;
 			m_hDevHelper->GetLastErr(devErrInfo);
 			LogError(Severity_High, Error_Hardware
-				, LOG_ERR_FINGERPRINT_INVOKE_MATCH_FAILED
+				, FingerPrint_UserErrorCode_INVOKE_MATCH_FAILED
 				, "Invoke routine 'Match' failed.");//no this situation
 			Dbg("Invoke routine 'Match' failed which returned %s(%s)"
 				, SpStrError(errCode), devErrInfo.szErrMsg);
@@ -1247,19 +1256,19 @@ ErrorCodeEnum CFingerPrintFSM::MatchProcess(ScanParam* initParam, SpReqAnsContex
 		if (initParam->m_NotFindImage)
 		{
 			LogError(Severity_High, Error_Hardware
-				, LOG_ERR_FINGERPRINT_NO_IMAGE_IN_DEP_MATCH
+				, FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_MATCH
 				, "not find fingerprint image in dep while match.");
 		}
 		else if (initParam->m_FeatureIsNull)
 		{
 			LogError(Severity_High, Error_Hardware
-				, LOG_ERR_FINGERPRINT_GETFEATURE_FAILED_MATCH
+				, FingerPrint_UserErrorCode_GETFEATURE_FAILED_MATCH
 				, "fingerprint feature is null while match.");
 		}
 		else if (initParam->m_Quit)
 		{
 			LogWarn(Severity_Middle, Error_Hardware
-				, LOG_ERR_FINGERPRINT_MATCH_FAILED
+				, FingerPrint_UserErrorCode_MATCH_FAILED
 				, "Exit to homepage when match.");
 		}
 		errCode = Error_Unexpect;
@@ -1357,13 +1366,13 @@ ErrorCodeEnum CFingerPrintFSM::InitCommParam(ScanParam* initParam, int operateTy
 
 			Dbg("Get dep path failed while register.");
 			LogError(Severity_High, Error_DevLoadFileFailed
-				, LOG_ERR_FINGERPRINT_GET_DEP_PATH_FAILED_REGISTER
+				, FingerPrint_UserErrorCode_GET_DEP_PATH_FAILED_REGISTER
 				, "Get dep path failed while register.");
 		}
 		else {
 			Dbg("Get dep path failed while match.");
 			LogError(Severity_High, Error_DevLoadFileFailed
-				, LOG_ERR_FINGERPRINT_GET_DEP_PATH_FAILED_MATCH
+				, FingerPrint_UserErrorCode_GET_DEP_PATH_FAILED_MATCH
 				, "get dep path failed while match.");
 		}
 

+ 9 - 1
Module/mod_FingerPrint/FingerPrintFSM.h

@@ -246,7 +246,12 @@ public:
 	END_FSM_RULE()
 
 	CFingerPrintFSM():m_devInit(false), m_bCancelRegister(false), m_bCancelMatch(false),
-					  m_bExit(false), m_testResult(Error_Succeed){};
+					  m_bExit(false), m_testResult(Error_Succeed), m_csDevSN("")
+	{
+		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x204);
+		m_FirstStart = TRUE;
+		ZeroMemory(&m_adapterInfo, sizeof(m_adapterInfo));
+	};
 
 	virtual ErrorCodeEnum OnInit();
 	virtual ErrorCodeEnum OnExit();
@@ -309,6 +314,9 @@ private:
 	bool m_bCancelMatch;
 	bool m_devInit;
 	bool m_bExit;
+
+	ErrorPackage m_errPkg;
+	AdapterInfo m_adapterInfo;
 };
 
 struct ScanTask : public ITaskSp   

+ 31 - 23
Module/mod_FingerPrint/FingerPrint_UserErrorCode.h

@@ -2,28 +2,36 @@
 #define _FINGERPRINT_USER_ERRORCODE_H
 #pragma once
 
-#define LOG_ERR_FINGERPRINT_GET_DLLNAME_FAILED_ONINIT		0x20400200	//指纹仪实体初始化时,获取适配器名称失败
-#define LOG_ERR_FINGERPRINT_OPEN_ROOT_FAILED_ONINIT			0x20400201	//指纹仪实体初始化时,打开root.ini文件失败
-#define LOG_ERR_FINGERPRINT_VENDOR_ADAPTER_NOT_EXIST		0x20400202	//厂商适配器不存在dep中(WARN)
-#define LOG_ERR_FINGERPRINT_LOAD_ADAPTER_FAILED				0x20400203	//加载厂商适配器失败
-#define LOG_ERR_FINGERPRINT_CREATE_COMPONENT_FAILED			0x20400204	//加载适配器成功后,CreateDevComponent失败
-#define LOG_ERR_FINGERPRINT_OPEN_FAILED						0x20400205	//打开厂商设备失败(DevOpen)
-#define LOG_ERR_FINGERPRINT_GETDEVINFO_FAILED				0x20400206	//获取厂商设备信息失败(GetDevCategory)
-#define LOG_ERR_FINGERPRINT_CLOSEDEV_FAILED					0x20400207	//关闭厂商设备失败(DevClose)
-#define LOG_ERR_FINGERPRINT_GET_DEP_PATH_FAILED_REGISTER	0x20400208	//采集接口,获取dep路径失败
-#define LOG_ERR_FINGERPRINT_NO_IMAGE_IN_DEP_REGISTER		0x20400209	//注册时,采集接口调用成功,但未在dep中找到图片文件
-#define LOG_ERR_FINGERPRINT_GETFEATURE_FAILED_REGISTER		0x2040020A	//注册时,采集接口调用成功,但返回的特征值为空
-#define LOG_ERR_FINGERPRINT_GETTEMPLATE_FAILED				0x2040020B	//注册时,合成特征模板失败
-#define LOG_ERR_FINGERPRINT_REGISTER_FAILED					0x2040020C	//手动Exit退出业务(WARN)
-#define LOG_ERR_FINGERPRINT_GET_DEP_PATH_FAILED_MATCH		0x2040020D	//匹配接口,获取dep路径失败
-#define LOG_ERR_FINGERPRINT_NO_IMAGE_IN_DEP_MATCH			0x2040020E	//匹配时,采集接口调用成功,但未在dep中找到图片文件
-#define LOG_ERR_FINGERPRINT_GETFEATURE_FAILED_MATCH			0x2040020F	//匹配时,采集接口调用成功,但返回的特征值为空
-#define LOG_ERR_FINGERPRINT_MATCH_TIME						0x20400210	//匹配接口耗时 (仅用作性能分析,非错误,WARN)
-#define LOG_ERR_FINGERPRINT_INVOKE_MATCH_FAILED				0x20400211	//厂商匹配接口返回失败(Match)
-#define LOG_ERR_FINGERPRINT_MATCH_FAILED					0x20400212	//手动Exit退出业务(WARN)
-#define LOG_ERR_FINGERPRINT_LOGWARN_TERM_INFO				0x20400213	//告警硬件模块信息
-#define LOG_ERR_FINGERPRINT_NO_ADAPTER_FILE					0x20400214	//未找到适配器文件
-#define LOG_ERR_FINGERPRINT_FEATURELEN_ISNOTRIGHT			0x20400215	//返回的指纹特征长度错误
-#define LOG_ERR_FINGERPRINT_ROOT_INFO						0x20400220	//root信息
+#define FingerPrint_UserErrorCode_Start									0x20400200
+#define FingerPrint_UserErrorCode_GET_DLLNAME_FAILED_ONINIT				( FingerPrint_UserErrorCode_Start + 1 )		//指纹仪实体初始化时,获取适配器名称失败 - LogWarn
+#define FingerPrint_UserErrorCode_OPEN_ROOT_FAILED_ONINIT				( FingerPrint_UserErrorCode_Start + 2 )		//指纹仪实体初始化时,打开root.ini文件失败 - LogWarn
+#define FingerPrint_UserErrorCode_VENDOR_ADAPTER_NOT_EXIST				( FingerPrint_UserErrorCode_Start + 3 )		//厂商适配器不存在dep中  - LogWarn
+#define FingerPrint_UserErrorCode_LOAD_ADAPTER_FAILED					( FingerPrint_UserErrorCode_Start + 4 )		//加载厂商适配器失败  - LogWarn
+#define FingerPrint_UserErrorCode_CREATE_COMPONENT_FAILED				( FingerPrint_UserErrorCode_Start + 5 )		//加载适配器成功后,CreateDevComponent失败  - LogWarn
+#define FingerPrint_UserErrorCode_GET_DEP_PATH_FAILED_REGISTER			( FingerPrint_UserErrorCode_Start + 6 )		//采集接口,获取dep路径失败 - LogWarn
+#define FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_REGISTER				( FingerPrint_UserErrorCode_Start + 7 )		//注册时,采集接口调用成功,但未在dep中找到图片文件 - LogError
+#define FingerPrint_UserErrorCode_GETFEATURE_FAILED_REGISTER			( FingerPrint_UserErrorCode_Start + 8 )		//注册时,采集接口调用成功,但返回的特征值为空 - LogError
+#define FingerPrint_UserErrorCode_GETTEMPLATE_FAILED					( FingerPrint_UserErrorCode_Start + 9 )		//注册时,合成特征模板失败 - LogError
+#define FingerPrint_UserErrorCode_REGISTER_FAILED						( FingerPrint_UserErrorCode_Start + 10 )	//手动Exit退出业务(WARN)- LogWarn
+#define FingerPrint_UserErrorCode_GET_DEP_PATH_FAILED_MATCH				( FingerPrint_UserErrorCode_Start + 11 )	//匹配接口,获取dep路径失败 - LogWarn
+#define FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_MATCH					( FingerPrint_UserErrorCode_Start + 12 )	//匹配时,采集接口调用成功,但未在dep中找到图片文件 - LogError
+#define FingerPrint_UserErrorCode_GETFEATURE_FAILED_MATCH				( FingerPrint_UserErrorCode_Start + 13 )	//匹配时,采集接口调用成功,但返回的特征值为空 - LogError
+#define FingerPrint_UserErrorCode_MATCH_TIME							( FingerPrint_UserErrorCode_Start + 14 )	//匹配接口耗时 (仅用作性能分析,非错误,WARN)- LogWarn
+#define FingerPrint_UserErrorCode_INVOKE_MATCH_FAILED					( FingerPrint_UserErrorCode_Start + 15 )	//厂商匹配接口返回失败(Match) - LogWarn
+#define FingerPrint_UserErrorCode_MATCH_FAILED							( FingerPrint_UserErrorCode_Start + 16 )	//手动Exit退出业务(WARN) - LogWarn
+
+#define FingerPrint_UserErrorCode_LOGWARN_TERM_INFO						( FingerPrint_UserErrorCode_Start + 17 )	//告警硬件模块信息
+#define FingerPrint_UserErrorCode_NO_ADAPTER_FILE						( FingerPrint_UserErrorCode_Start + 18 )	//未找到适配器文件
+
+#define FingerPrint_UserErrorCode_FEATURELEN_ISNOTRIGHT					( FingerPrint_UserErrorCode_Start + 19 )	//返回的指纹特征长度错误
+
+#define FingerPrint_UserErrorCode_DEVOPENFAILED_MATCH					( FingerPrint_UserErrorCode_Start + 20 )	//指纹DevOpen失败,业务调用Match时报错
+#define FingerPrint_UserErrorCode_DEVOPENFAILED_GETFINGERPRINT			( FingerPrint_UserErrorCode_Start + 21 )	//指纹DevOpen失败,业务调用GetFingerPrint时报错
+#define FingerPrint_UserErrorCode_DEVOPENFAILED_GenerateTemplate		( FingerPrint_UserErrorCode_Start + 22 )	//指纹DevOpen失败,业务调用GenerateTemplate时报错
+#define FingerPrint_UserErrorCode_DEVOPENFAILED_GetImageAndFeature		( FingerPrint_UserErrorCode_Start + 23 )	//指纹DevOpen失败,业务调用GetImageAndFeature时报错
+#define FingerPrint_UserErrorCode_DEVOPENFAILED_GetImageAndFeatureEx	( FingerPrint_UserErrorCode_Start + 24 )	//指纹DevOpen失败,业务调用GetImageAndFeatureEx时报错
+
+#define FingerPrint_UserErrorCode_ROOT_INFO								( FingerPrint_UserErrorCode_Start + 25 )	//root信息
+
 
 #endif