|
@@ -198,15 +198,6 @@ unsigned int CIDCertFSM::s0_on_event(FSMEvent* pEvt)
|
|
|
case USER_EVT_QUIT:
|
|
|
pEvt->SetHandled();
|
|
|
break;
|
|
|
- case USER_EVT_READ_AND_SCAN:
|
|
|
- {
|
|
|
- pEvt->SetHandled();
|
|
|
- ReadAndScanEvent* ide = dynamic_cast<ReadAndScanEvent*>(pEvt);
|
|
|
- ReadAndScanTask* task = new ReadAndScanTask(this);
|
|
|
- task->ctx = ide->ctx;
|
|
|
- GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
|
|
|
- }
|
|
|
- break;
|
|
|
case USER_EVT_READ_AND_SCAN_UTF8: //ex1
|
|
|
{
|
|
|
pEvt->SetHandled();
|
|
@@ -261,15 +252,6 @@ unsigned int CIDCertFSM::s1_on_event(FSMEvent *pEvt)
|
|
|
case USER_EVT_QUIT:
|
|
|
pEvt->SetHandled();
|
|
|
break;
|
|
|
- case USER_EVT_READ_AND_SCAN_FINISHED:
|
|
|
- if(pEvt->param1 == -1)
|
|
|
- {
|
|
|
- invalidBreak = true;
|
|
|
- return 5;
|
|
|
- }
|
|
|
- pEvt->SetHandled();
|
|
|
- ret = pEvt->param1;
|
|
|
- break;
|
|
|
case USER_EVT_READ_AND_SCAN_UTF8_FINISHED:
|
|
|
if (pEvt->param1 == -1)
|
|
|
{
|
|
@@ -676,505 +658,6 @@ void CIDCertFSM::LogDateEx(IDCerInfoEx idInfo)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-int CIDCertFSM::ReadAndScan(SpReqAnsContext<IDCert_ReadAndScan_Req, IDCert_ReadAndScan_Ans>::Pointer ctx)
|
|
|
-{
|
|
|
- LOG_FUNCTION();
|
|
|
- DWORD elapsed = 0;
|
|
|
- ErrorCodeEnum eErr = Error_Unexpect;
|
|
|
- ErrorCodeEnum errRF = Error_Unexpect;
|
|
|
- ErrorCodeEnum errAuth = Error_Unexpect;
|
|
|
- ErrorCodeEnum errRead = Error_Unexpect;
|
|
|
- ErrorCodeEnum errReadEx = Error_Unexpect;
|
|
|
-
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- m_readAndScanCtx = ctx;
|
|
|
- DWORD dwStart = GetTickCount();
|
|
|
- DWORD dwEnd = GetTickCount();
|
|
|
-#else
|
|
|
- DWORD dwStart = RVCGetTickCount();
|
|
|
- DWORD dwEnd = RVCGetTickCount();
|
|
|
-#endif
|
|
|
- LogEvent(Severity_Middle, LOG_EVT_IDCERTIFICATE_GREEN_ON, "IDCer warning on");
|
|
|
-
|
|
|
- DeleteZP(Bmp_ZP|Bmp_SCAN);
|
|
|
-
|
|
|
- bool bOpenRF = false, bGetIDCert = false;
|
|
|
- IDCerInfoEx idInfo;
|
|
|
- IDCerInfo idInfoOld;
|
|
|
- memset(&idInfo, 0, sizeof(idInfo));
|
|
|
- memset(&idInfoOld, 0, sizeof(idInfoOld));
|
|
|
- m_bCancelRead = false;
|
|
|
- m_bWaitReadMore = false;
|
|
|
- m_bReading = true;
|
|
|
- m_bExit = false;
|
|
|
-
|
|
|
- bool bReadSuccess = false;
|
|
|
- bool bInvokeReadEx = false;
|
|
|
- bool bExitWhenReading = false;
|
|
|
- bool bIDCerAuthenticate = false;
|
|
|
-
|
|
|
-#ifdef RVC_OS_LINUX
|
|
|
- ErrorCodeEnum ecForIDCerRFControl(Error_Succeed);
|
|
|
- ErrorCodeEnum ecForIDCerAuthenticate(Error_Succeed);
|
|
|
-#endif
|
|
|
-
|
|
|
- while (elapsed < IDCER_READ_TIMEOUT && !bGetIDCert && !m_bCancelRead)
|
|
|
- {
|
|
|
- if (m_bExit)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("exit");
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- bReadSuccess = false;
|
|
|
- bInvokeReadEx = false;
|
|
|
-
|
|
|
- if (m_bWaitReadMore)
|
|
|
- {
|
|
|
- dwStart = SP::Module::Comm::RVCGetTickCount();
|
|
|
- m_bWaitReadMore = false;
|
|
|
- }
|
|
|
- if (!bOpenRF)
|
|
|
- {
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- errRF = m_hDevHelper->IDCerRFControl(true);
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
-#ifdef RVC_OS_LINUX
|
|
|
- ecForIDCerRFControl = errRF;
|
|
|
-#endif
|
|
|
- if (Error_Succeed == errRF)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("open rf succeed.");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime).setResultCode("RTA2106")
|
|
|
- ("open rf failed.");
|
|
|
- dwEnd = SP::Module::Comm::RVCGetTickCount();
|
|
|
- elapsed = dwEnd - dwStart;
|
|
|
- Sleep(IDCER_AUTH_INTERVAL);
|
|
|
- continue;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- bOpenRF = true;
|
|
|
- Sleep(IDCER_AUTH_INTERVAL);
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- errAuth = m_hDevHelper->IDCerAuthenticate();
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
-
|
|
|
- bIDCerAuthenticate = false;
|
|
|
-
|
|
|
-#ifdef RVC_OS_LINUX
|
|
|
- ecForIDCerAuthenticate = errAuth;
|
|
|
-#endif
|
|
|
-
|
|
|
- if (Error_Succeed != errAuth)
|
|
|
- {
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- DevErrorInfo devErrInfo;
|
|
|
- m_hDevHelper->GetLastErr(devErrInfo);
|
|
|
-#endif
|
|
|
- dwEnd = SP::Module::Comm::RVCGetTickCount();
|
|
|
- elapsed = dwEnd - dwStart;
|
|
|
- continue;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerAuthenticate").setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- ("ReadAndScan IDCerAuthenticate auth succeed.");
|
|
|
-
|
|
|
- bIDCerAuthenticate = true;
|
|
|
-
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- errReadEx = m_hDevHelper->IDCerGetDataEx(idInfo);
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
-
|
|
|
- if (errReadEx == Error_NotImpl)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)
|
|
|
- ("to call old interface");
|
|
|
-
|
|
|
- bInvokeReadEx = false;
|
|
|
-
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- errRead = m_hDevHelper->IDCerGetData(idInfoOld);
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- if (errRead != Error_Succeed)
|
|
|
- {
|
|
|
-
|
|
|
- bReadSuccess = false;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)
|
|
|
- .setAPI("DevAdapter::IDCerGetData").setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setLogCode("QLR040220106")("read succeed.");
|
|
|
-
|
|
|
- bReadSuccess = true;
|
|
|
-
|
|
|
- LogEvent(Severity_Middle, LOG_EVT_IDCERTIFICATE_OP, "IDCertifacate op.");
|
|
|
- ctx->Ans.name = idInfoOld.name.data;
|
|
|
- ctx->Ans.sex = idInfoOld.sex.data;
|
|
|
- ctx->Ans.nation = idInfoOld.nation.data;
|
|
|
- ctx->Ans.birthday = idInfoOld.birthday.data;
|
|
|
- ctx->Ans.address = idInfoOld.address.data;
|
|
|
- ctx->Ans.idcode = idInfoOld.idno.data;
|
|
|
- //oilyang@20180309 根据俞根伟,生产上存在身份证异常为'x'的问题,统一进行转换
|
|
|
- if (ctx->Ans.idcode.GetLength() != 0)
|
|
|
- {
|
|
|
- if (ctx->Ans.idcode[ctx->Ans.idcode.GetLength() - 1] == 'x')
|
|
|
- {
|
|
|
- ctx->Ans.idcode[ctx->Ans.idcode.GetLength() - 1] = 'X';
|
|
|
- }
|
|
|
- }
|
|
|
- ctx->Ans.department = idInfoOld.department.data;
|
|
|
- ctx->Ans.startdate = idInfoOld.startDate.data;
|
|
|
- ctx->Ans.enddate = idInfoOld.endDate.data;
|
|
|
-
|
|
|
- //hyc@2021.3.24
|
|
|
- LogDate(idInfoOld);
|
|
|
-
|
|
|
- CSimpleStringA csIDLogInfo = CSimpleStringA::Format("IDNo:%s****%s,"
|
|
|
- ,(const char*)ctx->Ans.idcode.SubString(0, 4), (const char*)ctx->Ans.idcode.SubString(ctx->Ans.idcode.GetLength() - 1, 1));
|
|
|
- LogWarn(Severity_Low, Error_Succeed, IDCertificate_UserErrorCode_ReadAndScan_GetIDInfo, csIDLogInfo.GetData());
|
|
|
-
|
|
|
- ctx->Ans.photodata = ctx->Ans.headphoto;
|
|
|
- DeleteZP(Bmp_ZP);
|
|
|
-
|
|
|
- bGetIDCert = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
-
|
|
|
- bInvokeReadEx = true;
|
|
|
-
|
|
|
- if (errReadEx != Error_Succeed)
|
|
|
- {
|
|
|
- bReadSuccess = false;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)
|
|
|
- .setAPI("DevAdapter::IDCerGetDataEx").setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setLogCode("QLR040220106")("read succeed(sp scan).");
|
|
|
-
|
|
|
- bReadSuccess = true;
|
|
|
-
|
|
|
- LogEvent(Severity_Middle, LOG_EVT_IDCERTIFICATE_OP, "IDCertifacate op.");
|
|
|
- ctx->Ans.name = idInfo.name.data;
|
|
|
- ctx->Ans.sex = idInfo.sex.data;
|
|
|
- ctx->Ans.nation = idInfo.nation.data;
|
|
|
- ctx->Ans.birthday = idInfo.birthday.data;
|
|
|
- ctx->Ans.address = idInfo.address.data;
|
|
|
- ctx->Ans.idcode = idInfo.idno.data;
|
|
|
- //oilyang@20180309 根据俞根伟,生产上存在身份证异常为'x'的问题,统一进行转换
|
|
|
- if (ctx->Ans.idcode.GetLength() != 0)
|
|
|
- {
|
|
|
- if (ctx->Ans.idcode[ctx->Ans.idcode.GetLength() - 1] == 'x')
|
|
|
- {
|
|
|
- ctx->Ans.idcode[ctx->Ans.idcode.GetLength() - 1] = 'X';
|
|
|
- }
|
|
|
- }
|
|
|
- ctx->Ans.department = idInfo.department.data;
|
|
|
- ctx->Ans.startdate = idInfo.startDate.data;
|
|
|
- ctx->Ans.enddate = idInfo.endDate.data;
|
|
|
- ctx->Ans.englishname = idInfo.englishName.data;
|
|
|
- ctx->Ans.nationality = idInfo.nationality.data;
|
|
|
- ctx->Ans.idversion = idInfo.idVersion.data;
|
|
|
- ctx->Ans.idtype = idInfo.idType.data;
|
|
|
- ctx->Ans.reserved = idInfo.reserved.data;
|
|
|
- ctx->Ans.startdate = idInfo.startDate.data;
|
|
|
-
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- eErr = m_hDevHelper->ScanIDAndSaveImage();
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- if (eErr == Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanIDAndSaveImage")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- ("ReadAndScan ScanIDAndSaveImage succeed");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanIDAndSaveImage")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setResultCode("RTA210C")
|
|
|
- ("ReadAndScan::ScanIDAndSaveImage failed with errCode 0x%x", eErr);
|
|
|
- }
|
|
|
- ctx->Ans.hasscan = 0;
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- //hyc@2021.3.24
|
|
|
- LogDateEx(idInfo);
|
|
|
-#endif
|
|
|
- if (eErr == Error_Succeed)
|
|
|
- {
|
|
|
- transImgMsg.Clear();
|
|
|
-
|
|
|
- //idfront.bmp" and "idback.bmp
|
|
|
- ErrorCodeEnum eErrFront, eErrBack;
|
|
|
- eErrFront = GetPngBlobEx(ctx->Ans.frontphoto, "idfront");
|
|
|
- eErrBack = GetPngBlobEx(ctx->Ans.backphoto, "idback", true);
|
|
|
- if (eErrFront == Error_Succeed && eErrBack == Error_Succeed)
|
|
|
- {
|
|
|
- ctx->Ans.hasscan = 1;
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- if (!closeImgCheck)
|
|
|
- {
|
|
|
- ImgChekTask* frontImgCheck = new ImgChekTask(this);
|
|
|
- frontImgCheck->idNum = ctx->Ans.idcode;
|
|
|
- frontImgCheck->inName = ctx->Ans.name;
|
|
|
- frontImgCheck->inNationality = ctx->Ans.nationality;
|
|
|
- frontImgCheck->inIdType = ctx->Ans.idtype;
|
|
|
- frontImgCheck->imgInput = ctx->Ans.frontphoto;
|
|
|
- frontImgCheck->imgType = "正面";
|
|
|
- GetEntityBase()->GetFunction()->PostThreadPoolTask(frontImgCheck);
|
|
|
-
|
|
|
- ImgChekTask* backImgCheck = new ImgChekTask(this);
|
|
|
- backImgCheck->idNum = ctx->Ans.idcode;
|
|
|
- backImgCheck->inName = ctx->Ans.name;
|
|
|
- backImgCheck->inNationality = ctx->Ans.nationality;
|
|
|
- backImgCheck->inIdType = ctx->Ans.idtype;
|
|
|
- backImgCheck->imgInput = ctx->Ans.backphoto;
|
|
|
- frontImgCheck->imgType = "背面";
|
|
|
- GetEntityBase()->GetFunction()->PostThreadPoolTask(backImgCheck);
|
|
|
- }
|
|
|
-#endif
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (igestionVer == TRUE)
|
|
|
- {
|
|
|
- CSimpleStringA warnMsg = "ScanIDAndSaveImage() suc. But GetPngBlobEx() failed.";
|
|
|
- if (transImgMsg.GetLength() != 0)
|
|
|
- {
|
|
|
- warnMsg = warnMsg + transImgMsg;
|
|
|
- }
|
|
|
- LogWarn(Severity_Middle, Error_Succeed,
|
|
|
- IDCertificate_UserErrorCode_ReadAndScan_TransImgFaild, warnMsg.GetData());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- GetPngBlobEx(ctx->Ans.headphoto, "zp", true);
|
|
|
-
|
|
|
- CSimpleStringA csIDLogInfo = CSimpleStringA::Format("IDNo:%s****%s"
|
|
|
- , (const char*)ctx->Ans.idcode.SubString(0, 4), (const char*)ctx->Ans.idcode.SubString(ctx->Ans.idcode.GetLength() - 1, 1));
|
|
|
-
|
|
|
- LogWarn(Severity_Low, Error_Succeed, IDCertificate_UserErrorCode_ReadAndScan_GetIDInfo, csIDLogInfo.GetData());
|
|
|
-
|
|
|
- ctx->Ans.photodata = ctx->Ans.headphoto;
|
|
|
- DeleteZP(Bmp_ZP);
|
|
|
-
|
|
|
- bGetIDCert = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- dwEnd = SP::Module::Comm::RVCGetTickCount();
|
|
|
- elapsed = dwEnd - dwStart;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- if (errRead != Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2109")
|
|
|
- ("Invoke IDCerGetDataEx failed: %s", SpStrError(eErr));
|
|
|
- }
|
|
|
-
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- if(m_bExit)
|
|
|
- bExitWhenReading = true;
|
|
|
-
|
|
|
- if(!m_bExit && !bOpenRF && errRF != Error_Succeed)
|
|
|
- {
|
|
|
- SetErrPackage("ReadAndScan::IDCerRFControl", m_devSN, errRF, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).
|
|
|
- setResultCode(std::to_string(errRF).c_str())
|
|
|
- ("ReadAndScan::IDCerRFControl failed with errcode: %d", errRF);
|
|
|
- }
|
|
|
-#endif
|
|
|
-
|
|
|
- if (!m_bExit && bOpenRF && !bIDCerAuthenticate)
|
|
|
- {
|
|
|
- SetErrPackage("ReadAndScan::IDCerAuthenticate", m_devSN, errAuth, MEC_DEVAPI_IDCER_IDCerAuthenticate);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).
|
|
|
- setResultCode("RTA2107")
|
|
|
- ("ReadAndScan::IDCerAuthenticate failed with errcode: %d", errAuth);
|
|
|
- }
|
|
|
-
|
|
|
- m_bExit = false;
|
|
|
- m_bReading = false;
|
|
|
- LogEvent(Severity_Middle, LOG_EVT_IDCERTIFICATE_GREEN_OFF, "IDCer warning off");
|
|
|
-
|
|
|
- int pos = 99;
|
|
|
- ErrorCodeEnum eErr1 = m_hDevHelper->QueryCardPos(pos);
|
|
|
- if (eErr1 == Error_NotImpl)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")("old version.no need position.");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if(eErr1 == Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- ("exec QueryCardPos first time succ, pos : %d", pos);
|
|
|
- switch (pos)
|
|
|
- {
|
|
|
- case 1:
|
|
|
- case 2:
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- eErr1 = m_hDevHelper->IDCerRFControl(false);
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- if (eErr1 != Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").
|
|
|
- setCostTime(m_ullEndTime - m_ullBeginTime).setResultCode("RTA2106")
|
|
|
- ("exec IDCerRFControl(false) failed, force eject...");
|
|
|
- SetErrPackage("ReadAndScan::IDCerRFControl", m_devSN, eErr1, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC();
|
|
|
- m_hDevHelper->ForceIDEject();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("exec IDCerRFControl succ.");
|
|
|
- }
|
|
|
- break;
|
|
|
- case 0:
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setResultCode("RTA210A")
|
|
|
- ("exec QueryCardPos first time failed.");
|
|
|
- }
|
|
|
-
|
|
|
- //查询卡片位置以决定跳转
|
|
|
- eErr1 = m_hDevHelper->QueryCardPos(pos);
|
|
|
- if (eErr1 == Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- ("exec QueryCardPos second time succ, pos : %d", pos);
|
|
|
- }else{
|
|
|
- SetErrPackage("ReadAndScan::QueryCardPos", m_devSN, eErr1, MEC_DEVAPI_IDCER_QueryCardPos);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setResultCode("RTA210A")
|
|
|
- ("exec QueryCardPos second time failed with errcode: %d", eErr1);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(eErr1 != Error_Succeed || (eErr1 == Error_Succeed && (pos != 0)))
|
|
|
- {
|
|
|
- //oilyang@20180531 add for close enter card
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Close RF again...");
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- ErrorCodeEnum errRf = m_hDevHelper->IDCerRFControl(false);
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- if (errRf != Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").
|
|
|
- setCostTime(m_ullEndTime - m_ullBeginTime).setResultCode("RTA2106")
|
|
|
- ("exec IDCerRFControl(false) failed, force eject...");
|
|
|
- SetErrPackage("ReadAndScan::IDCerRFControl", m_devSN, errRf, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC();
|
|
|
- m_hDevHelper->ForceIDEject();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("Close RF again succ.");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- if (bGetIDCert)
|
|
|
- ctx->Answer(Error_Succeed);
|
|
|
- else if (m_bCancelRead)
|
|
|
- ctx->Answer(Error_Cancel);
|
|
|
- else if (elapsed >= IDCER_READ_TIMEOUT){
|
|
|
- if(bIDCerAuthenticate){
|
|
|
- if(bInvokeReadEx && !bReadSuccess){
|
|
|
- SetErrPackage("ReadAndScan::IDCerGetDataEx", m_devSN, errReadEx, MEC_DEVAPI_IDCER_IDCerGetDataEx);
|
|
|
- ctx->Answer(Error_TimeOut, AlarmDEC());
|
|
|
- }else if(!bInvokeReadEx && !bReadSuccess){
|
|
|
- SetErrPackage("ReadAndScan::IDCerGetData", m_devSN, errRead, MEC_DEVAPI_IDCER_IDCerGetData);
|
|
|
- ctx->Answer(Error_TimeOut, AlarmDEC());
|
|
|
- }
|
|
|
- }
|
|
|
- }else{
|
|
|
- DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::IDCerGetDataEx").setLogCode("QLR040220106").setResultCode("RTA2104");
|
|
|
- ctx->Answer(Error_Unexpect, IDCertificate_UserErrorCode_ReadAndScan_Failed);
|
|
|
- LogError(Severity_High, Error_Unexpect, IDCertificate_UserErrorCode_ReadAndScan_Failed, "ReadAndScan some thing wrong.");
|
|
|
- }
|
|
|
-#else
|
|
|
- //zjw@20191219 处理完相关操作再返回给前端,防止状态还未跳转又发起流程
|
|
|
- if (bGetIDCert) {
|
|
|
- ctx->Answer(Error_Succeed);
|
|
|
- } else if (m_bCancelRead) {
|
|
|
- ctx->Answer(Error_Cancel);
|
|
|
- LogWarn(Severity_Low, Error_Debug, IDCertificate_UserErrorCode_CancelOperation, "User cancel read IDCard from front.");
|
|
|
- } else if (elapsed >= IDCER_READ_TIMEOUT) {
|
|
|
- ctx->Answer(Error_TimeOut);
|
|
|
-
|
|
|
- if (ecForIDCerRFControl != Error_Succeed) {
|
|
|
- SetErrPackage("ReadAndScan::IDCerRFControl(Timeout)", m_devSN, ecForIDCerRFControl, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC();
|
|
|
- }
|
|
|
- if (ecForIDCerAuthenticate != Error_Succeed) {
|
|
|
- SetErrPackage("ReadAndScan::IDCerAuthenticate(Timeout)", m_devSN, ecForIDCerAuthenticate, MEC_DEVAPI_IDCER_IDCerAuthenticate);
|
|
|
- AlarmDEC();
|
|
|
- }
|
|
|
- } else {
|
|
|
-
|
|
|
- ctx->Answer(Error_Unexpect);
|
|
|
-
|
|
|
- if (ecForIDCerRFControl != Error_Succeed) {
|
|
|
- SetErrPackage("ReadAndScan::IDCerRFControl", m_devSN, ecForIDCerRFControl, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC();
|
|
|
- }
|
|
|
- if (ecForIDCerAuthenticate != Error_Succeed) {
|
|
|
- SetErrPackage("ReadAndScan::IDCerAuthenticate", m_devSN, ecForIDCerAuthenticate, MEC_DEVAPI_IDCER_IDCerAuthenticate);
|
|
|
- AlarmDEC();
|
|
|
- }
|
|
|
-
|
|
|
- LogError(Severity_High, Error_Unexpect, IDCertificate_UserErrorCode_ReadAndScan_Failed, "ReadAndScan some thing wrong.");
|
|
|
- }
|
|
|
-#endif //RVC_OS_WIN
|
|
|
-
|
|
|
- if (eErr1 == Error_Succeed && pos == 2)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("return 4");
|
|
|
- return 4;
|
|
|
- }
|
|
|
-
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- if(m_bCancelRead)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("return 2");
|
|
|
- return 2;
|
|
|
- }
|
|
|
-
|
|
|
- if(bExitWhenReading)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("return 3");
|
|
|
- return 3;
|
|
|
- }
|
|
|
-
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("return 0");
|
|
|
-#endif //RVC_OS_WIN
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx)
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
@@ -1220,11 +703,6 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
bool bExitWhenReading = false;
|
|
|
bool bIDCerAuthenticate = false;
|
|
|
|
|
|
-#ifdef RVC_OS_LINUX
|
|
|
- ErrorCodeEnum ecForIDCerRFControl(Error_Succeed);
|
|
|
- ErrorCodeEnum ecForIDCerAuthenticate(Error_Succeed);
|
|
|
-#endif
|
|
|
-
|
|
|
while (elapsed < IDCER_READ_TIMEOUT && !bGetIDCert && !m_bCancelRead)
|
|
|
{
|
|
|
if (m_bExit)
|
|
@@ -1247,17 +725,12 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
("RreadAndScanUTF8 DevAdapter::IDCerRFControl");
|
|
|
-#ifdef RVC_OS_LINUX
|
|
|
- ecForIDCerRFControl = errRF;
|
|
|
-#endif
|
|
|
if (Error_Succeed == errRF)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("open rf succeed.");
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open rf succeed.");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime).setResultCode("RTA2106")
|
|
|
- ("open rf failed.");
|
|
|
dwEnd = SP::Module::Comm::RVCGetTickCount();
|
|
|
elapsed = dwEnd - dwStart;
|
|
|
Sleep(IDCER_AUTH_INTERVAL);
|
|
@@ -1271,15 +744,8 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
errAuth = m_hDevHelper->IDCerAuthenticate();
|
|
|
m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
-#ifdef RVC_OS_LINUX
|
|
|
- ecForIDCerAuthenticate = errAuth;
|
|
|
-#endif
|
|
|
if (Error_Succeed != errAuth)
|
|
|
{
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- DevErrorInfo devErrInfo;
|
|
|
- m_hDevHelper->GetLastErr(devErrInfo);
|
|
|
-#endif
|
|
|
dwEnd = SP::Module::Comm::RVCGetTickCount();
|
|
|
elapsed = dwEnd - dwStart;
|
|
|
continue;
|
|
@@ -1487,10 +953,8 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanIDAndSaveImage")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setResultCode("RTA210C")
|
|
|
- ("ReadAndScanUTF8::ScanIDAndSaveImage failed with errCode 0x%x", eErr);
|
|
|
+ SetErrorAndLog(eErr, MEC_DEVAPI_IDCER_ScanIDAndSaveImage, "DevAdapter::ScanIDAndSaveImage", __FUNCTION__,
|
|
|
+ false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
|
|
|
}
|
|
|
ctx->Ans.hasscan = 0;
|
|
|
|
|
@@ -1569,32 +1033,13 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
|
|
|
}
|
|
|
|
|
|
- if (errReadEx2 != Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2109")
|
|
|
- ("Invoke IDCerGetDataEx2 failed: %s", SpStrError(eErr));
|
|
|
- }
|
|
|
-
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
if (m_bExit)
|
|
|
bExitWhenReading = true;
|
|
|
|
|
|
if (!m_bExit && !bOpenRF && errRF != Error_Succeed)
|
|
|
{
|
|
|
- SetErrPackage("ReadAndScanUTF8::IDCerRFControl", m_devSN, errRF, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)
|
|
|
- .setResultCode(std::to_string(errRF).c_str())
|
|
|
- ("ReadAndScanUTF8::IDCerRFControl failed with errcode: %d", errRF);
|
|
|
- }
|
|
|
-#endif
|
|
|
- if (!m_bExit && bOpenRF && !bIDCerAuthenticate)
|
|
|
- {
|
|
|
- SetErrPackage("ReadAndScanUTF8::IDCerAuthenticate", m_devSN, errAuth, MEC_DEVAPI_IDCER_IDCerAuthenticate);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).
|
|
|
- setResultCode("RTA2107")
|
|
|
- ("ReadAndScanUTF8::IDCerAuthenticate failed with errcode: %d", errAuth);
|
|
|
+ SetErrorAndLog(errRF, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
|
|
|
+ true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
|
|
|
}
|
|
|
|
|
|
m_bExit = false;
|
|
@@ -1625,16 +1070,20 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
if (eErr1 != Error_Succeed)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").
|
|
|
- setCostTime(m_ullEndTime - m_ullBeginTime).setResultCode("RTA2106")
|
|
|
- ("exec IDCerRFControl(false) failed, force eject...");
|
|
|
- SetErrPackage("ReadAndScanUTF8::IDCerRFControl", m_devSN, eErr1, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC();
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec IDCerRFControl(false) failed, force eject...");
|
|
|
+ SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
|
|
|
+ false, m_ullEndTime - m_ullBeginTime);
|
|
|
+
|
|
|
m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- m_hDevHelper->ForceIDEject();
|
|
|
+ ErrorCodeEnum errEject = m_hDevHelper->ForceIDEject();
|
|
|
m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ForceIDEject").setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
("ReadAndScanUTF8 DevAdapter::ForceIDEject");
|
|
|
+ if (errEject != Error_Succeed)
|
|
|
+ {
|
|
|
+ SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_ForceIDEject, "DevAdapter::ForceIDEject", __FUNCTION__,
|
|
|
+ true, m_ullEndTime - m_ullBeginTime);
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1648,10 +1097,10 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setResultCode("RTA210A")
|
|
|
- ("exec QueryCardPos first time failed.");
|
|
|
+ SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_QueryCardPos, "DevAdapter::QueryCardPos", __FUNCTION__,
|
|
|
+ true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
|
|
|
+
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec QueryCardPos first time failed.");
|
|
|
}
|
|
|
|
|
|
//查询卡片位置以决定跳转
|
|
@@ -1666,12 +1115,10 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- SetErrPackage("ReadAndScanUTF8::QueryCardPos", m_devSN, eErr1, MEC_DEVAPI_IDCER_QueryCardPos);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setResultCode("RTA210A")
|
|
|
- ("exec QueryCardPos second time failed with errcode: %d", eErr1);
|
|
|
+ SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_QueryCardPos, "DevAdapter::QueryCardPos", __FUNCTION__,
|
|
|
+ true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
|
|
|
+
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec QueryCardPos second time failed with errcode: %d", eErr1);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1684,16 +1131,20 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
if (errRf != Error_Succeed)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").
|
|
|
- setCostTime(m_ullEndTime - m_ullBeginTime).setResultCode("RTA2106")
|
|
|
- ("exec IDCerRFControl(false) failed, force eject...");
|
|
|
- SetErrPackage("ReadAndScanUTF8::IDCerRFControl", m_devSN, errRf, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC();
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec IDCerRFControl(false) failed, force eject...");
|
|
|
+ SetErrorAndLog(errRF, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
|
|
|
+ false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
|
|
|
m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- m_hDevHelper->ForceIDEject();
|
|
|
+ ErrorCodeEnum errEject = m_hDevHelper->ForceIDEject();
|
|
|
m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ForceIDEject").setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
("ReadAndScanUTF8 DevAdapter::ForceIDEject");
|
|
|
+
|
|
|
+ if (errEject != Error_Succeed)
|
|
|
+ {
|
|
|
+ SetErrorAndLog(errEject, MEC_DEVAPI_IDCER_ForceIDEject, "DevAdapter::ForceIDEject", __FUNCTION__,
|
|
|
+ true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1711,29 +1162,25 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
}
|
|
|
else if (elapsed >= IDCER_READ_TIMEOUT)
|
|
|
{
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
if (bIDCerAuthenticate) {
|
|
|
- if (bInvokeReadEx && !bReadSuccess) {
|
|
|
- SetErrPackage("ReadAndScanUTF8::IDCerGetDataEx", m_devSN, errReadEx, MEC_DEVAPI_IDCER_IDCerGetDataEx);
|
|
|
- ctx->Answer(Error_TimeOut, AlarmDEC());
|
|
|
- }
|
|
|
- else if (!bInvokeReadEx && !bReadSuccess) {
|
|
|
- SetErrPackage("ReadAndScanUTF8::IDCerGetData", m_devSN, errRead, MEC_DEVAPI_IDCER_IDCerGetData);
|
|
|
- ctx->Answer(Error_TimeOut, AlarmDEC());
|
|
|
+ if (bInvokeReadEx2 && !bReadSuccess) {
|
|
|
+
|
|
|
+ SetErrorAndLog(errReadEx2, MEC_DEVAPI_IDCER_IDCerGetDataEx2, "DevAdapter::IDCerGetDataEx2", __FUNCTION__,
|
|
|
+ true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
|
|
|
+
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Invoke IDCerGetDataEx2(Timeout) failed: %s", SpStrError(eErr));
|
|
|
+
|
|
|
+ ctx->Answer(Error_TimeOut);
|
|
|
}
|
|
|
}
|
|
|
-#else
|
|
|
- ctx->Answer(Error_TimeOut);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SetErrorAndLog(errAuth, MEC_DEVAPI_IDCER_IDCerAuthenticate, "DevAdapter::IDCerAuthenticate", __FUNCTION__,
|
|
|
+ true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8); //RTA2107
|
|
|
+ DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadAndScanUTF8::IDCerAuthenticate(Timeout) failed with errcode: %d", errAuth);
|
|
|
|
|
|
- if (ecForIDCerRFControl != Error_Succeed) {
|
|
|
- SetErrPackage("ReadAndScanUTF8::IDCerRFControl(Timeout)", m_devSN, ecForIDCerRFControl, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC();
|
|
|
+ ctx->Answer(Error_TimeOut);
|
|
|
}
|
|
|
- if (ecForIDCerAuthenticate != Error_Succeed) {
|
|
|
- SetErrPackage("ReadAndScanUTF8::IDCerAuthenticate(Timeout)", m_devSN, ecForIDCerAuthenticate, MEC_DEVAPI_IDCER_IDCerAuthenticate);
|
|
|
- AlarmDEC();
|
|
|
- }
|
|
|
-#endif //RVC_OS_WIN
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1748,7 +1195,6 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
return 4;
|
|
|
}
|
|
|
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
if (m_bCancelRead)
|
|
|
{
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("return 2");
|
|
@@ -1762,7 +1208,6 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
|
|
|
|
|
|
return 3;
|
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("return 0");
|
|
|
return 0;
|
|
@@ -1780,11 +1225,7 @@ ErrorCodeEnum CIDCertFSM::GetPngBlobEx(CBlob &data, CSimpleStringA fileNamePrefi
|
|
|
return Error_Param;
|
|
|
}
|
|
|
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
- strPath = strPath + "\\" + fileNamePrefix;
|
|
|
-#else
|
|
|
strPath = strPath + SPLIT_SLASH_STR + fileNamePrefix;
|
|
|
-#endif
|
|
|
|
|
|
IplImage *src = cvLoadImage(strPath + ".bmp");
|
|
|
if (!src)
|
|
@@ -1902,23 +1343,12 @@ ErrorCodeEnum CIDCertFSM::GetDevCatInfo(DevCategoryInfo &devInfo, CSimpleStringA
|
|
|
if (m_getDevCategory != Error_Succeed)
|
|
|
return m_getDevCategory;
|
|
|
|
|
|
-#ifdef RVC_OS_LINUX
|
|
|
LOG_FUNCTION();
|
|
|
strncpy(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) + 1 : MAX_DEV_MODEL_LEN);
|
|
|
strncpy(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) + 1 : MAX_DEV_TYPE_LEN);
|
|
|
strncpy(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) + 1 : MAX_DEV_VENDOR_LEN);
|
|
|
devType = m_devVer;//适配器版本号
|
|
|
- devInfo.eState = DEVICE_STATUS_NORMAL;
|
|
|
- memcpy(&devInfo.version, &m_devCatInfo.version, sizeof(DevSoftVersion));
|
|
|
return Error_Succeed;
|
|
|
-#else
|
|
|
- LOG_FUNCTION();
|
|
|
- strncpy_s(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) : MAX_DEV_MODEL_LEN);
|
|
|
- strncpy_s(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) : MAX_DEV_TYPE_LEN);
|
|
|
- strncpy_s(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) : MAX_DEV_VENDOR_LEN);
|
|
|
- devType = m_devVer;//适配器版本号
|
|
|
- return Error_Succeed;
|
|
|
-#endif // RVC_OS_LINUX
|
|
|
}
|
|
|
|
|
|
int CIDCertFSM::WaitFetchIDCard()
|
|
@@ -1978,8 +1408,7 @@ void CIDCertFSM::DeleteZP(int type)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#ifdef RVC_OS_WIN
|
|
|
-int CIDCertFSM::Initial() //windows ver
|
|
|
+int CIDCertFSM::Initial()
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
CSystemStaticInfo sysInfo;
|
|
@@ -1993,7 +1422,7 @@ int CIDCertFSM::Initial() //windows ver
|
|
|
//to do device init
|
|
|
ErrorCodeEnum err;
|
|
|
ErrorCodeEnum eErrDev;
|
|
|
- CSimpleStringA tmpVendor(""), tmpDevSN(""),tmpDLLVersion, csDepPath(""), csBackslash("\\");
|
|
|
+ CSimpleStringA tmpVendor(""), tmpDevSN(""), tmpDLLVersion, csDepPath(""), csBackslash("\\");
|
|
|
|
|
|
CSmartPointer<IEntityFunction> spEntityFunction = GetEntityBase()->GetFunction();
|
|
|
CSmartPointer<IConfigInfo> spConfig;
|
|
@@ -2018,7 +1447,6 @@ int CIDCertFSM::Initial() //windows ver
|
|
|
|
|
|
pEntity->InitializeVendorLogSwitch();
|
|
|
|
|
|
- /** 如果是多合一,意义在哪? Gifur@2023330]*/
|
|
|
spConfig->ReadConfigValue("Device.IDCertificate", "Vendor", m_devVendor);
|
|
|
spConfig->ReadConfigValue("Device.IDCertificate", "Version", m_devVer);
|
|
|
spConfig->ReadConfigValue("Device.IDCertificate", "Batch", m_devBatch);
|
|
@@ -2027,7 +1455,7 @@ int CIDCertFSM::Initial() //windows ver
|
|
|
|
|
|
eErrDev = m_hDevHelper.LoadUp(m_adapterInfo.adapterFilePath);
|
|
|
if (!IS_SUCCEED(eErrDev)) {
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, IDCertificate_UserErrorCode_DllLoadFailed,
|
|
|
+ LogWarn(Severity_Middle, Error_Unexpect, IDCertificate_UserErrorCode_DllLoadFailed,
|
|
|
CSimpleStringA::Format("身份证加载厂商适配器失败!GLE=%d.", GetLastError()).GetData());
|
|
|
m_bOpening = false;
|
|
|
return 2;
|
|
@@ -2043,20 +1471,17 @@ int CIDCertFSM::Initial() //windows ver
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
("Initial DevOpen succeed");
|
|
|
}
|
|
|
- else
|
|
|
+ else
|
|
|
{
|
|
|
- SetErrPackage("Initial::DevOpen", m_devSN, err, MEC_DEVAPI_IDCER_DevOpen);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").
|
|
|
- setCostTime(m_ullEndTime - m_ullBeginTime).setResultCode("RTA2105")
|
|
|
- ("Initial::DevOpen with errcode:%d", err);
|
|
|
+ SetErrorAndLog(err, MEC_DEVAPI_IDCER_DevOpen, "DevAdapter::DevOpen", __FUNCTION__,
|
|
|
+ false, m_ullEndTime - m_ullBeginTime);
|
|
|
m_hDevHelper.TearDown();
|
|
|
return 2;
|
|
|
}
|
|
|
ToLogRootINIInfo();
|
|
|
- ZeroMemory(m_devCatInfo.szModel, MAX_DEV_MODEL_LEN);
|
|
|
- ZeroMemory(m_devCatInfo.szType, MAX_DEV_TYPE_LEN);
|
|
|
- ZeroMemory(m_devCatInfo.szVendor, MAX_DEV_VENDOR_LEN);
|
|
|
+ memset(m_devCatInfo.szModel, 0, MAX_DEV_MODEL_LEN);
|
|
|
+ memset(m_devCatInfo.szType, 0, MAX_DEV_TYPE_LEN);
|
|
|
+ memset(m_devCatInfo.szVendor, 0, MAX_DEV_VENDOR_LEN);
|
|
|
m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
eErrDev = m_hDevHelper->GetDevCategory(m_devCatInfo);
|
|
|
m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
@@ -2088,171 +1513,20 @@ int CIDCertFSM::Initial() //windows ver
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- SetErrPackage("Initial::GetDevCategory", m_devSN, eErrDev, MEC_DEVAPI_IDCER_GetDevCategory);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevCategory")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setResultCode("RTA210D")
|
|
|
- ("Initial::GetDevCategory failed with errcode : %d", eErrDev);
|
|
|
+
|
|
|
+ SetErrorAndLog(err, MEC_DEVAPI_IDCER_GetDevCategory, "DevAdapter::GetDevCategory", __FUNCTION__,
|
|
|
+ false, m_ullEndTime - m_ullBeginTime);
|
|
|
}
|
|
|
if (m_hDevHelper != nullptr)
|
|
|
{
|
|
|
m_bOpened = true;
|
|
|
LogWarn(Severity_Low, Error_Unexpect, IDCertificate_UserErrorCode_DevOpen_Success, "身份证打开成功");
|
|
|
- if(invalidBreak && m_readAndScanCtx != nullptr)
|
|
|
- {
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, IDCertificate_UserErrorCode_ReadAndScan_Interrupt, "读证件异常退出");
|
|
|
- m_readAndScanCtx->Answer(Error_Unexpect, IDCertificate_UserErrorCode_ReadAndScan_Interrupt);
|
|
|
- invalidBreak = false;
|
|
|
- }
|
|
|
- else if (invalidBreak && m_readAndScanUTF8Ctx != nullptr) //ex3
|
|
|
- {
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, IDCertificate_UserErrorCode_ReadAndScan_Interrupt, "读证件Ex异常退出");
|
|
|
- m_readAndScanUTF8Ctx->Answer(Error_Unexpect, IDCertificate_UserErrorCode_ReadAndScan_Interrupt);
|
|
|
- invalidBreak = false;
|
|
|
- }
|
|
|
return 0;
|
|
|
}
|
|
|
else
|
|
|
return 2;
|
|
|
return 0;
|
|
|
}
|
|
|
-#else
|
|
|
-int CIDCertFSM::Initial() //linux ver
|
|
|
-{
|
|
|
- LOG_FUNCTION();
|
|
|
-
|
|
|
- bkPicPath = "bk.png"; //初始化默认背景图片名称
|
|
|
-
|
|
|
- auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
|
|
|
- pEntity->InitializeVendorLogSwitch();
|
|
|
- FulfillAdapterInfoFrom(pEntity->vendorLibInfo);
|
|
|
-
|
|
|
- m_devState = DEVICE_STATUS_NOT_READY;
|
|
|
-
|
|
|
- CSimpleStringA csLibFullName;
|
|
|
- ErrorCodeEnum err = pEntity->ExtractVendorLibFullPath(csLibFullName);
|
|
|
- if (err != Error_Succeed)
|
|
|
- {
|
|
|
- LogWarn(Severity_Middle, err, IDCertificate_UserErrorCode_Open_RootCfg_Failed, "get dllname failed");
|
|
|
- return Error_DevLoadFileFailed;
|
|
|
- }
|
|
|
- LogWarn(Severity_Low, Error_Unexpect, IDCertificate_UserErrorCode_RootInfo, csLibFullName.GetData());
|
|
|
- m_adapterInfo.adapterFilePath = csLibFullName;
|
|
|
- err = m_hDevHelper.LoadUp(csLibFullName);
|
|
|
- if (err != Error_Succeed)
|
|
|
- {
|
|
|
- LogWarn(Severity_Middle, Error_Unexpect, IDCertificate_UserErrorCode_DllLoadFailed,
|
|
|
- CSimpleStringA::Format("身份证加载厂商适配器失败!GLE=%d.", GetLastError()).GetData());
|
|
|
- //LogErrMsg("LoadUp", err, DEC_DEV_OBJECT_CREATE_FAILED, TRUE);
|
|
|
- return 2;
|
|
|
- }
|
|
|
-
|
|
|
- CSimpleStringA dllName, tmpVendor(""), tmpDevSN(""), tmpDLLVersion, csDepPath("");
|
|
|
-
|
|
|
- dllName = pEntity->GetVendorLibName();
|
|
|
- CSmartPointer<IConfigInfo> pConfig;
|
|
|
- ErrorCodeEnum rc = GetEntityBase()->GetFunction()->OpenConfig(Config_Root, pConfig);
|
|
|
- CSimpleStringA strSection = CSimpleStringA("Device.") + GetEntityBase()->GetEntityName();
|
|
|
- CSimpleStringA str;
|
|
|
- pConfig->ReadConfigValue(strSection, "Vendor", str);
|
|
|
- HARDWARE_ENTITY_SET_VENDOR_NAME(m_entCode, str);
|
|
|
-
|
|
|
- bool bOpenFlag = false;
|
|
|
- do {
|
|
|
- int tmpPort = 0;
|
|
|
- CSmartPointer<IConfigInfo> spConfig;
|
|
|
- CSmartPointer<IEntityFunction> spEntityFunction = GetEntityBase()->GetFunction();
|
|
|
- err = spEntityFunction->OpenConfig(Config_Root, spConfig);
|
|
|
- if (err != Error_Succeed) {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("open cfg file failed!");
|
|
|
- LogWarn(Severity_Middle, err, IDCertificate_UserErrorCode_Open_RootCfg_Failed, "open root cfg failed.");
|
|
|
- return 2;
|
|
|
- }
|
|
|
-
|
|
|
- spConfig->ReadConfigValueInt("Device.IDCertificate", "Port", tmpPort);
|
|
|
- DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("IDCer open with port %d", tmpPort);
|
|
|
-
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- err = m_hDevHelper->DevOpen(tmpPort);
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- m_bOpening = false;
|
|
|
- if (err == Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- ("Initial DevOpen succeed");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- SetErrPackage("Initial::DevOpen", m_devSN, err, MEC_DEVAPI_IDCER_DevOpen);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").
|
|
|
- setCostTime(m_ullEndTime - m_ullBeginTime).setResultCode("RTA2105")
|
|
|
- ("Initial::DevOpen with errcode:%d", err);
|
|
|
- return 2;
|
|
|
- }
|
|
|
- } while (!m_hDevHelper && bOpenFlag == false);
|
|
|
-
|
|
|
- if (m_hDevHelper) {
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- err = m_hDevHelper->IDCerRFControl(false);
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- if (err != Error_Succeed) {
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").
|
|
|
- setCostTime(m_ullEndTime - m_ullBeginTime).setResultCode("RTA2106")
|
|
|
- ("exec IDCerRFControl(false) failed");
|
|
|
- SetErrPackage("Initial::IDCerRFControl", m_devSN, err, MEC_DEVAPI_IDCER_IDCerRFControl);
|
|
|
- AlarmDEC(false, false);
|
|
|
- } else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("close rf ok.");
|
|
|
- }
|
|
|
- }
|
|
|
- memset(m_devCatInfo.szModel, 0, MAX_DEV_MODEL_LEN);
|
|
|
- memset(m_devCatInfo.szType, 0, MAX_DEV_TYPE_LEN);
|
|
|
- memset(m_devCatInfo.szVendor, 0, MAX_DEV_VENDOR_LEN);
|
|
|
- m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- err = m_hDevHelper->GetDevCategory(m_devCatInfo);
|
|
|
- m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
|
|
|
- m_getDevCategory = err; //获取设备信息的api执行结果
|
|
|
- if (err == Error_Succeed)
|
|
|
- {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevCategory").setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- ("Initial GetDevCategory succeed");
|
|
|
- m_adapterInfo.FulfillCategoryInfo(m_devCatInfo);
|
|
|
- CSimpleStringA szMod(m_devCatInfo.szModel);
|
|
|
- if (strstr(m_devCatInfo.szModel, "CODE=UCS2") != NULL)
|
|
|
- {
|
|
|
- supportUCS2 = TRUE;
|
|
|
- }
|
|
|
-
|
|
|
- if (strstr(m_devCatInfo.szModel, "STYLE=IG") != NULL)
|
|
|
- {
|
|
|
- igestionVer = TRUE;
|
|
|
- }
|
|
|
-
|
|
|
- if (strstr(m_devCatInfo.szModel, "FUNCTION=ITFY") != NULL)
|
|
|
- {
|
|
|
- supportNewForeigner = TRUE;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- else {
|
|
|
- SetErrPackage("Initial::GetDevCategory", m_devSN, err, MEC_DEVAPI_IDCER_GetDevCategory);
|
|
|
- AlarmDEC();
|
|
|
- DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevCategory")
|
|
|
- .setCostTime(m_ullEndTime - m_ullBeginTime)
|
|
|
- .setResultCode("RTA210D")
|
|
|
- ("Initial::GetDevCategory failed with errcode : %d", err);
|
|
|
- }
|
|
|
-
|
|
|
- if (m_hDevHelper) {
|
|
|
- m_devInit = true;
|
|
|
- return 0;
|
|
|
- } else {
|
|
|
- return 2;
|
|
|
- }
|
|
|
-}
|
|
|
-#endif //RVC_OS_WIN
|
|
|
|
|
|
#ifdef RVC_OS_WIN
|
|
|
void CIDCertFSM::ToLogWarnInfoAboutTermCustom()
|