|
@@ -604,6 +604,80 @@ int CFingerPrintFSM::GetFingerPrintJS(SpReqAnsContext<FingerPrintService_GetFing
|
|
|
|
|
|
int CFingerPrintFSM::GenerateTemplateJS(SpReqAnsContext<FingerPrintService_GenerateTemplateJS_Req, FingerPrintService_GenerateTemplateJS_Ans>::Pointer ctx)
|
|
|
{
|
|
|
+ LOG_FUNCTION();
|
|
|
+
|
|
|
+ std::vector<CSimpleStringA> imagePaths;
|
|
|
+ CSimpleStringA strPath;
|
|
|
+ m_pEntity->GetFunction()->GetPath("Dep", strPath);
|
|
|
+
|
|
|
+ if (ctx->Req.fingerSNList.GetCount() != 3) {
|
|
|
+ DeleteRegisterFingerBmp(m_fingerPrintFileSet);
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode(getRTACode(FingerPrint_UserErrorCode_GETTEMPLATE_PARAM_FAIL))("指纹模版生成失败,输入参数错误");
|
|
|
+ ctx->Answer(Error_Unexpect, FingerPrint_UserErrorCode_GETTEMPLATE_PARAM_FAIL);//RTA242B
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < ctx->Req.fingerSNList.GetCount(); ++i)
|
|
|
+ {
|
|
|
+ CSimpleStringA tempStr = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "finger%d.bmp", strPath.GetData(), ctx->Req.fingerSNList[i]);
|
|
|
+
|
|
|
+ UpdateAndWarnFileFindInDepBak(tempStr, CSimpleStringA::Format("finger%d.bmp", ctx->Req.fingerSNList[i]), FingerPrint_UserErrorCode_FindFile_in_DepBak);
|
|
|
+
|
|
|
+ imagePaths.push_back(tempStr);
|
|
|
+
|
|
|
+ if (!ExistsFileA(imagePaths[i]))
|
|
|
+ {
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GenerateTemplate>, image <%s> not exist.", imagePaths[i].GetData());
|
|
|
+ DeleteRegisterFingerBmp(m_fingerPrintFileSet);
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode(getRTACode(FingerPrint_UserErrorCode_GETTEMPLATE_NO_FILE))("指纹模版生成失败,指纹图片不存在");
|
|
|
+ ctx->Answer(Error_Unexpect, FingerPrint_UserErrorCode_GETTEMPLATE_NO_FILE);//RTA242C
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ ErrorCodeEnum errCode;
|
|
|
+ LPBYTE lpbTemplate = new BYTE[MAX_FEATURE_LEN];
|
|
|
+ int lpbLength = MAX_FEATURE_LEN;
|
|
|
+
|
|
|
+ ULLINT l_beginTime, l_endTime;
|
|
|
+ l_beginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
+ errCode = m_hDevHelper->Image2Template(imagePaths[0], imagePaths[1], imagePaths[2], lpbTemplate, lpbLength);
|
|
|
+ l_endTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
+
|
|
|
+ DWORD dwTmpUserErrCode = 0;
|
|
|
+ if (Error_Succeed == errCode)
|
|
|
+ {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::Image2Template").setLogCode(FingerPrint_Generate_Template_ID).setCostTime(l_endTime - l_beginTime)("指纹仪模板生成成功 , template length is %d", lpbLength);
|
|
|
+ if (lpbTemplate != NULL && lpbLength == STANDARD_FEATURE_LEN) {
|
|
|
+ lpbTemplate[lpbLength] = '\0';
|
|
|
+ ctx->Ans.templateFeature = (LPCTSTR)lpbTemplate;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ CSimpleStringA errMsg = CSimpleStringA::Format("template is NULL or template length is not right(%d)", lpbLength);
|
|
|
+ LogWarn(Severity_Middle, Error_Hardware, FingerPrint_UserErrorCode_TEMPLATELEN_ISNOTRIGHT, errMsg.GetData());
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode(getRTACode(FingerPrint_UserErrorCode_TEMPLATELEN_ISNOTRIGHT))("指纹仪模板生成失败,%s", errMsg.GetData());
|
|
|
+ dwTmpUserErrCode = FingerPrint_UserErrorCode_TEMPLATELEN_ISNOTRIGHT;//RTA2428
|
|
|
+ errCode = Error_Unexpect;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ dwTmpUserErrCode = SetErrorAndLog(errCode, MEC_DEVAPI_FINGERPRINT_Image2Template, "DevAdapter::Image2Template", __FUNCTION__, false, l_endTime - l_beginTime, "", "指纹仪模板生成失败");//RTA2418
|
|
|
+ errCode = Error_Unexpect;
|
|
|
+ }
|
|
|
+
|
|
|
+ DeleteRegisterFingerBmp(m_fingerPrintFileSet);
|
|
|
+
|
|
|
+ if (errCode == Error_Succeed) {
|
|
|
+ ctx->Answer(Error_Succeed);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ ctx->Answer(errCode, dwTmpUserErrCode);
|
|
|
+ }
|
|
|
+
|
|
|
+ delete[] lpbTemplate;
|
|
|
+ lpbTemplate = NULL;
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|