Explorar o código

#IQRV #comment PR T24PU791_IDCertificateJS_0909

80374374 hai 1 ano
pai
achega
c2c5890262

+ 26 - 0
DevAdapter/DeviceSimulator.h

@@ -5,8 +5,12 @@
 #include <fstream>
 #include <string>
 #include <map>
+#include "path.h"
+
 #ifdef RVC_OS_WIN
 #include <WinSock2.h>
+#include <direct.h>
+#define GetCurrentDir _getcwd
 #else
 #include <arpa/inet.h>  //ntohl
 #include <unistd.h> // Linux系统中
@@ -17,8 +21,16 @@
 #include <sys/types.h>  
 #include <sys/socket.h>
 #include <netinet/in.h>
+#define GetCurrentDir getcwd
 #endif
 
+std::string GetCurrentDirectory() {
+	char buff[256];
+	GetCurrentDir(buff, 256);
+	std::string  current_working_directory(buff);
+	return current_working_directory;
+}
+
 //读取配置文件功能类
 class iniReader
 {
@@ -221,6 +233,20 @@ private:
 	std::map<std::string, std::map<std::string, std::string> >settings_;
 };
 
+//获取硬件模拟器地址
+std::string GetSimulatorUrl()
+{
+	std::string depCfgPath = GetCurrentDirectory() + SPLIT_SLASH_STR + "dep" + SPLIT_SLASH_STR + "cmbsz.ini";
+	iniReader iniRead;
+	bool ret = iniRead.ReadConfig(depCfgPath);
+	if (!ret)
+	{
+		return "";
+	}
+
+	std::string urlStr = iniRead.ReadString("server", "url", "");
+	return urlStr;
+}
 
 //读取本地IP功能函数
 std::string GetLocalIP()

+ 11 - 11
DevAdapter/include/DevErrorCode.h

@@ -1134,17 +1134,17 @@ typedef short DECRESULT;
 #define DEC_NO_E_IDCERTIFICATE_START 0x800
 
 #define MEC_DEVAPI_IDCER_(funcName)	( MEC_DEVAPI_IDCER_##funcName )
-#define MEC_DEVAPI_IDCER_DevOpen				     (DEC_NO_E_IDCERTIFICATE_START + 1)
-#define MEC_DEVAPI_IDCER_IDCerRFControl				 (DEC_NO_E_IDCERTIFICATE_START + 2)
-#define MEC_DEVAPI_IDCER_IDCerAuthenticate			 (DEC_NO_E_IDCERTIFICATE_START + 3)
-#define MEC_DEVAPI_IDCER_IDCerGetData				 (DEC_NO_E_IDCERTIFICATE_START + 4)
-#define MEC_DEVAPI_IDCER_IDCerGetDataEx				 (DEC_NO_E_IDCERTIFICATE_START + 5)
-#define MEC_DEVAPI_IDCER_ForceIDEject				 (DEC_NO_E_IDCERTIFICATE_START + 6)
-#define MEC_DEVAPI_IDCER_ScanIDAndSaveImage			 (DEC_NO_E_IDCERTIFICATE_START + 7)
-#define MEC_DEVAPI_IDCER_QueryCardPos				 (DEC_NO_E_IDCERTIFICATE_START + 8)
-#define MEC_DEVAPI_IDCER_GetDevCategory              (DEC_NO_E_IDCERTIFICATE_START + 9)
-#define MEC_DEVAPI_IDCER_Reset                       (DEC_NO_E_IDCERTIFICATE_START + 10)
-#define MEC_DEVAPI_IDCER_DevClose                    (DEC_NO_E_IDCERTIFICATE_START + 11)
+#define MEC_DEVAPI_IDCER_DevOpen				     (DEC_NO_E_IDCERTIFICATE_START + 1) //20100001
+#define MEC_DEVAPI_IDCER_IDCerRFControl				 (DEC_NO_E_IDCERTIFICATE_START + 2) //20100002
+#define MEC_DEVAPI_IDCER_IDCerAuthenticate			 (DEC_NO_E_IDCERTIFICATE_START + 3) //20100003
+#define MEC_DEVAPI_IDCER_IDCerGetData				 (DEC_NO_E_IDCERTIFICATE_START + 4) //20100004
+#define MEC_DEVAPI_IDCER_IDCerGetDataEx2			 (DEC_NO_E_IDCERTIFICATE_START + 5) //20100005
+#define MEC_DEVAPI_IDCER_ForceIDEject				 (DEC_NO_E_IDCERTIFICATE_START + 6) //20100006
+#define MEC_DEVAPI_IDCER_ScanIDAndSaveImage			 (DEC_NO_E_IDCERTIFICATE_START + 7) //20100007
+#define MEC_DEVAPI_IDCER_QueryCardPos				 (DEC_NO_E_IDCERTIFICATE_START + 8) //20100008
+#define MEC_DEVAPI_IDCER_GetDevCategory              (DEC_NO_E_IDCERTIFICATE_START + 9) //20100009
+#define MEC_DEVAPI_IDCER_Reset                       (DEC_NO_E_IDCERTIFICATE_START + 10) //2010000A
+#define MEC_DEVAPI_IDCER_DevClose                    (DEC_NO_E_IDCERTIFICATE_START + 11) //2010000B
 
 
 #define DEC_NO_E_IDCERTIFICATE (DEC_NO_E_IDCERTIFICATE_START + CAPACITY_FOR_MEC_DEVAPI)

+ 2 - 2
DevAdapter/simulator/idcer.1.1/CMakeLists.txt

@@ -4,8 +4,8 @@ set(${MODULE_PREFIX}_VERSION "1")
 set(${MODULE_PREFIX}_BATCH "1")
 
 set(${MODULE_PREFIX}_SRCS SHARED
-		idcer.cmbsz.h
-        idcer.cmbsz.cpp
+		idcer_impl.h
+        idcer_impl.cpp
         )
 
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})

+ 14 - 9
DevAdapter/simulator/idcer.1.1/idcer.cmbsz.cpp → DevAdapter/simulator/idcer.1.1/idcer_impl.cpp

@@ -1,6 +1,6 @@
 // dllmain.cpp : 定义 DLL 应用程序的入口点。
 #include "stdafx.h"
-#include "idcer.cmbsz.h"
+#include "idcer_impl.h"
 #include <cstring>
 #include <cstdio>
 #include "log4vendor.h"
@@ -193,7 +193,7 @@ void WriteBMP(char* img, const char* filename)
 IDCerClassImpl::IDCerClassImpl()
     :m_mode(0)
 {
-
+    lastErrMsg = "";
 }
 
 IDCerClassImpl::~IDCerClassImpl()
@@ -227,6 +227,7 @@ ErrorCodeEnum IDCerClassImpl::IDCerAuthenticate()
     if (!flag)
     {
         err = Error_Dev_IDCardNotFound;
+        lastErrMsg = "未识别到身份证件";
     }
 
     return err;
@@ -325,6 +326,11 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx2(IDCerInfoEx2& idCerInfoEx2)
     WriteBMP(img, path.c_str());
 
     bool testRe = ex2HttpFunction(idCerInfoEx2);
+    if (!testRe)
+    {
+        lastErrMsg = "获取身份证芯片数据失败";
+        err = Error_Unexpect;
+    }
 
     return err;
 }
@@ -334,9 +340,9 @@ ErrorCodeEnum IDCerClassImpl::GetLastErr(DevErrorInfo& devErrInfo)
 {
     static int times = 0;
     char szMessage[128];
-    sprintf(szMessage, "这是第 %d 条错误信息", ++times);
-    strcpy(devErrInfo.szErrMsg, szMessage);
-    devErrInfo.dwErrMsgLen = strlen(szMessage);
+    //sprintf(szMessage, "这是第 %d 条错误信息", ++times);
+    strcpy(devErrInfo.szErrMsg, lastErrMsg.c_str());
+    devErrInfo.dwErrMsgLen = lastErrMsg.length();
     return Error_Succeed;
 }
 
@@ -353,7 +359,7 @@ bool IDCerClassImpl::authHttpFunction()
     idCerReq.method = "readAndScan";
     idCerReq.adapterInterName = "IDCerAuthenticate";
 
-    string url = iniRead.ReadString("server", "url", "");
+    string url = GetSimulatorUrl();
     if (url.length() == 0)
     {
         url = DEFAULT_URL;
@@ -400,7 +406,7 @@ bool IDCerClassImpl::exHttpFunction(IDCerInfoEx& idCerInfoEx)
     idCerReq.method = "readAndScan";
     idCerReq.adapterInterName = "IDCerGetDataEx";
 
-    string url = iniRead.ReadString("server", "url", "");
+    string url = GetSimulatorUrl();
     if (url.length() == 0)
     {
         url = DEFAULT_URL;
@@ -484,10 +490,9 @@ bool IDCerClassImpl::ex2HttpFunction(IDCerInfoEx2& idCerInfoEx2)
 
     idCerReq.ip = GetLocalIP();
     idCerReq.entityName = "IDCertificate";
-    idCerReq.method = "readAndScanUTF8";
     idCerReq.adapterInterName = "IDCerGetDataEx2";
 
-    string url = iniRead.ReadString("server", "url", "");
+    string url = GetSimulatorUrl();
     if (url.length() == 0)
     {
         url = DEFAULT_URL;

+ 2 - 1
DevAdapter/simulator/idcer.1.1/idcer.cmbsz.h → DevAdapter/simulator/idcer.1.1/idcer_impl.h

@@ -56,7 +56,7 @@ typedef struct IDCerDevRet : CHTTPRet {
     std::string othercode;
     std::string reserved;
 
-    bool	success;
+    bool success;
     bool result;
     bool Parse(string strData) {
         Json::Value root;
@@ -128,6 +128,7 @@ public:
 
     string depCfgPath;
     iniReader iniRead;
+    string lastErrMsg;
 };
 
 

+ 59 - 785
Module/mod_IDCertificate/IDCertFSM.cpp

@@ -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()

+ 0 - 61
Module/mod_IDCertificate/IDCertFSM.h

@@ -76,10 +76,7 @@ enum EvtType
 	USER_EVT_EXIT,
 	USER_EVT_GET_DEVINFO,
 	USER_EVT_ERROR,
-	USER_EVT_EJECT,
 	USER_EVT_WAIT_FETCH_IDCARD_FINISHED,
-	USER_EVT_READ_AND_SCAN,
-	USER_EVT_READ_AND_SCAN_FINISHED,
 	USER_EVT_INIT_FINISHED,
 	USER_EVT_TODO_INIT,
 	USER_EVT_TODO_INIT_FINISHED,
@@ -97,11 +94,6 @@ enum BmpType
 #pragma region forsonar
 typedef IDCertificate::IDCertService_CancelRead_Info IDCert_CancelRead_Info;
 typedef IDCertificate::IDCertService_ReadWaitMore_Info IDCert_ReadWaitMore_Info;
-typedef IDCertificate::IDCertService_Exit_Info IDCert_Exit_Info;
-typedef IDCertificate::IDCertService_Eject_Req IDCert_Eject_Req;
-typedef IDCertificate::IDCertService_Eject_Ans IDCert_Eject_Ans;
-typedef IDCertificate::IDCertService_ReadAndScan_Req IDCert_ReadAndScan_Req;
-typedef IDCertificate::IDCertService_ReadAndScan_Ans IDCert_ReadAndScan_Ans;
 typedef IDCertificate::IDCertService_ReadAndScanUTF8_Req IDCert_ReadAndScanUTF8_Req; //ex2
 typedef IDCertificate::IDCertService_ReadAndScanUTF8_Ans IDCert_ReadAndScanUTF8_Ans;
 typedef IDCertificate::IDCertService_GetDevInfo_Req IDCert_GetDevInfo_Req;
@@ -142,30 +134,6 @@ public:
 			ctx->Answer(Error_InvalidState);
 	}
 };
-class EjectEvent : public FSMEvent
-{
-public:
-	EjectEvent() : FSMEvent(USER_EVT_EJECT){}
-	virtual ~EjectEvent(){}
-	SpReqAnsContext<IDCert_Eject_Req, IDCert_Eject_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
-};
-class ReadAndScanEvent : public FSMEvent
-{
-public:
-	ReadAndScanEvent() : FSMEvent(USER_EVT_READ_AND_SCAN) {}
-	virtual ~ReadAndScanEvent() {}
-	SpReqAnsContext<IDCert_ReadAndScan_Req, IDCert_ReadAndScan_Ans>::Pointer ctx;
-	virtual void OnUnhandled()
-	{
-		if (ctx != NULL)
-			ctx->Answer(Error_InvalidState);
-	}
-};
 
 class ReadAndScanUTF8Event : public FSMEvent //ex3
 {
@@ -197,15 +165,8 @@ public:
 	BEGIN_FSM_RULE(CIDCertFSM, s5)
 		FSM_RULE_ENTRY(s0, s2, USER_EVT_ERROR, 0)
 		FSM_RULE_ENTRY(s0, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
-		FSM_RULE_ENTRY(s0, s1, USER_EVT_READ_AND_SCAN, 0)
 		FSM_RULE_ENTRY(s0, s1, USER_EVT_READ_AND_SCAN_UTF8, 0) //ex4
 		FSM_RULE_ENTRY(s0, s5, USER_EVT_TODO_INIT_FINISHED, 0)
-		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_FINISHED, 0)
-		FSM_RULE_ENTRY(s1, s2, USER_EVT_READ_AND_SCAN_FINISHED, 1)
-		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_FINISHED, 2)
-		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_FINISHED, 3)
-		FSM_RULE_ENTRY(s1, s4, USER_EVT_READ_AND_SCAN_FINISHED, 4)
-		FSM_RULE_ENTRY(s1, s5, USER_EVT_READ_AND_SCAN_FINISHED, 5)
 		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 0)
 		FSM_RULE_ENTRY(s1, s2, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 1)
 		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 2)
@@ -263,7 +224,6 @@ public:
 	virtual void s5_on_exit();
 	virtual unsigned int s5_on_event(FSMEvent* e);
 
-	int ReadAndScan(SpReqAnsContext<IDCert_ReadAndScan_Req, IDCert_ReadAndScan_Ans>::Pointer ctx);
 	int ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx); 
 
 	int WaitFetchIDCard();
@@ -285,11 +245,6 @@ public:
 	bool GetDevInitFlag() { return m_devInit; }
 #endif
 
-
-	void SaveCtxAA(int methodID, SpReqAnsContext<IDCert_ReadAndScan_Req, IDCert_ReadAndScan_Ans>::Pointer ctx)
-	{
-		m_readAndScanCtx = ctx;
-	}
 	void SaveCtxAAEx(int methodID, SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx)//UTF8
 	{
 		m_readAndScanUTF8Ctx = ctx;
@@ -336,7 +291,6 @@ private:
 	CSimpleStringA m_csMachineType, m_csSite, m_terminalNo;
 	CSimpleStringA m_devVendor, m_devVer, m_devBatch, m_devSN/*fwb SN*/;
 	CSimpleStringA transImgMsg;
-	SpReqAnsContext<IDCert_ReadAndScan_Req, IDCert_ReadAndScan_Ans>::Pointer m_readAndScanCtx;
 	SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer m_readAndScanUTF8Ctx; //ex7
 #ifdef RVC_OS_WIN
 	unordered_map<int, wstring> nationalCode; 
@@ -357,21 +311,6 @@ private:
 	ULLINT m_ullBeginTime, m_ullEndTime;
 };
 
-struct ReadAndScanTask : public ITaskSp
-{
-	CIDCertFSM* fsm;
-	SpReqAnsContext<IDCert_ReadAndScan_Req, IDCert_ReadAndScan_Ans>::Pointer ctx;
-	ReadAndScanTask(CIDCertFSM* f) : fsm(f) {}
-
-	void Process()
-	{
-		FSMEvent *e = new FSMEvent(USER_EVT_READ_AND_SCAN_FINISHED);
-		e->param1 = -1;
-		e->param1 = fsm->ReadAndScan(ctx);
-		fsm->PostEventFIFO(e);
-	}
-};
-
 struct ReadAndScanUTF8Task : public ITaskSp  //ex8
 {
 	CIDCertFSM* fsm;

+ 50 - 114
Module/mod_IDCertificate/IDCertificate.xml

@@ -1,74 +1,38 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <entity name="IDCertificate">
 	<class name="IDCertService" overlap="true" exclusive="false">			
-		<twoway name="Read" overlap="true">
-			<res>
-				<param name="name" type="string" />
-				<param name="sex" type="string" />				
-				<param name="nation" type="string" />
-				<param name="birthday" type="string" />
-				<param name="address" type="string" />
-				<param name="idcode" type="string" />
-				<param name="department" type="string" />
-				<param name="startdate" type="string" />
-				<param name="enddate" type="string" />
-				<param name="photodata" type="blob" />
-			</res>			
-		</twoway>
-		<oneway name="CancelRead" overlap="true">		
+		<oneway name="CancelRead" overlap="true" method_id="1">		
 		</oneway>
-		<oneway name="ReadWaitMore" overlap="true">		
+		<oneway name="ReadWaitMore" overlap="true" method_id="2">		
 		</oneway>
-		<oneway name="Exit" overlap="true">		
+		<oneway name="Exit" overlap="true" method_id="3">		
 		</oneway>
-		<twoway name="ReadEx" overlap="true">
+		<twoway name="Eject" overlap="true" method_id="5">
 			<req>
-				<param name="type" type="int"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>
-			</req>		
+			</req>
 			<res>
-				<param name="name" type="string" />
-				<param name="sex" type="string" />				
-				<param name="nation" type="string" />
-				<param name="birthday" type="string" />
-				<param name="address" type="string" />
-				<param name="idcode" type="string" />
-				<param name="department" type="string" />
-				<param name="startdate" type="string" />
-				<param name="enddate" type="string" />
-				<param name="photodata" type="blob" />
-				<param name="englishname" type="string" />
-				<param name="nationality" type="string" />
-				<param name="idversion" type="string" />
-				<param name="idtype" type="string" />
-				<param name="reserved" type="string" />
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>				
 			</res>			
-		</twoway>
-		<twoway name="Eject" overlap="true">
+		</twoway>		
+		<!-- 1銆佽�澶囨湭鎵撳紑,errorCode为Error_DevNotAvailable(2050),rtaCode为RTA2105 -->
+		<twoway name="GetDevInfo" overlap="true" method_id="65535">
 			<req>
 			</req>
 			<res>
+				<param name="type" type="string" />
+				<param name="model" type="string" />
+				<param name="version" type="string" />
+				<param name="state" type="int" />
 			</res>			
-		</twoway>		
-		<twoway name="ReadAndScan" overlap="true">
+		</twoway>
+		<twoway name="ReadAndScanUTF8" overlap="true" method_id="9">
 			<req>
 				<param name="type" type="int"/>
 				<param name="reserved1" type="array_int"/>
 				<param name="reserved2" type="array_string"/>
-			</req>		
+			</req>
 			<res>
-				<param name="name" type="string" />
-				<param name="sex" type="string" />				
-				<param name="nation" type="string" />
-				<param name="birthday" type="string" />
-				<param name="address" type="string" />
-				<param name="idcode" type="string" />
-				<param name="department" type="string" />
-				<param name="startdate" type="string" />
-				<param name="enddate" type="string" />
+				<!--msgtype鐢ㄤ簬鍖哄垎浼犻€掓柟寮忕殑鏂版棫-->
+				<param name="msgtype" type="int" />
 				<param name="hasscan" type="int" />
 				<param name="photodata" type="blob" />
 				<param name="frontphoto" type="blob" />
@@ -78,76 +42,39 @@
 				<param name="finger2" type="blob" />
 				<param name="imgreserved1" type="blob" />
 				<param name="imgreserved2" type="blob" />
-				<param name="englishname" type="string" />
-				<param name="nationality" type="string" />
-				<param name="idversion" type="string" />
-				<param name="idtype" type="string" />
-				<param name="othercode" type="string" />
-				<param name="reserved" type="string" />
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>				
-			</res>			
-		</twoway>
-		<twoway name="CrossTermCall" overlap="true">
-			<req>
-				<param name="type" type="int"/>
-				<param name="fromTerminalNo" type="string"/>
-				<param name="toTerminalNo" type="string"/>
-				<param name="nEntityID" type="int"/>
-				<param name="param1" type="string"/>
-				<param name="param2" type="string"/>
-				<param name="param3" type="int"/>
-				<param name="param4" type="int"/>
-				<param name="paramX" type="blob"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>
-				<param name="reservedX" type="array_blob"/>					
-			</req>
-			<res>
-				<param name="retCode" type="int"/>
-				<param name="retParam1" type="string"/>
-				<param name="retParam2" type="string"/>
-				<param name="retParam3" type="int"/>
-				<param name="retParam4" type="int"/>
-				<param name="retParamX" type="blob"/>
-				<param name="reserved1" type="array_int"/>
-				<param name="reserved2" type="array_string"/>
-				<param name="reservedX" type="array_blob"/>
-			</res>				
-		</twoway>
-		<oneway name="CrossTermInvokeInfo" overlap="true">
-				<param name="type" type="int"/>
-				<param name="result" type="int"/>
-				<param name="fromTerminalNo" type="string"/>
-				<param name="toTerminalNo" type="string"/>
-				<param name="nEntityID" type="int"/>
-				<param name="param1" type="string"/>
-				<param name="param2" type="string"/>
-				<param name="param3" type="int"/>
-				<param name="param4" type="int"/>
-				<param name="paramX" type="blob"/>
 				<param name="reserved1" type="array_int"/>
 				<param name="reserved2" type="array_string"/>
-				<param name="reservedX" type="array_blob"/>	
-		</oneway>									
-		<twoway name="GetDevInfo" overlap="true" method_id="65535">
-			<req>
-			</req>
-			<res>
-				<param name="type" type="string" />
-				<param name="model" type="string" />
-				<param name="version" type="string" />
-				<param name="state" type="int" />
-			</res>			
+				<param name="name_utf8" type="blob" />
+				<param name="sex_utf8" type="blob" />
+				<param name="nation_utf8" type="blob" />
+				<param name="birthday_utf8" type="blob" />
+				<param name="address_utf8" type="blob" />
+				<param name="idcode_utf8" type="blob" />
+				<param name="department_utf8" type="blob" />
+				<param name="startdate_utf8" type="blob" />
+				<param name="enddate_utf8" type="blob" />
+				<param name="englishname_utf8" type="blob" />
+				<param name="nationality_utf8" type="blob" />
+				<param name="idversion_utf8" type="blob" />
+				<param name="idtype_utf8" type="blob" />
+				<param name="othercode_utf8" type="blob" />
+				<param name="reserved_utf8" type="blob" />
+			</res>
 		</twoway>
-		<twoway name="ReadAndScanUTF8" overlap="true">
+		<!-- 璇诲彇韬�唤璇�,鎴愬姛鏃惰繑鍥濫rror_Succeed(0)锛屽強鐩稿叧鏁版嵁 -->
+		<!-- 1銆佽�澶囨湭鎵撳紑,errorCode涓篍rror_DevNotAvailable(2050),rtaCode涓篟TA2105 -->
+		<!-- 2銆侀€€璇佸け璐�,errorCode涓篍rror_Unexpect(2147483646),rtaCode涓篟TA2106 -->
+		<!-- 3銆佽秴鏃舵湭鎻掑崱,errorCode涓篍rror_Unexpect(2147483646),rtaCode涓篟TA2107 -->
+		<!-- 4銆佹彃鍏ラ潪韬�唤璇佷欢,errorCode涓篍rror_Unexpect(2147483646),rtaCode涓篟TA2108 -->
+		<!-- 5銆佽�鍙栬韩浠借瘉鑺�墖鏁版嵁澶辫触,errorCode涓篍rror_Unexpect(2147483646),rtaCode涓篟TA2109 -->
+		<twoway name="ReadAndScanUTF8JS" overlap="true" jsflag="true" method_id="10">
 			<req>
 				<param name="type" type="int"/>
 				<param name="reserved1" type="array_int"/>
 				<param name="reserved2" type="array_string"/>
 			</req>
 			<res>
-				<!--msgtype用于区分传递方式的新旧-->
+				<!--msgtype鐢ㄤ簬鍖哄垎浼犻€掓柟寮忕殑鏂版棫-->
 				<param name="msgtype" type="int" />
 				<param name="hasscan" type="int" />
 				<param name="photodata" type="blob" />
@@ -177,6 +104,15 @@
 				<param name="reserved_utf8" type="blob" />
 			</res>
 		</twoway>
+		<!-- 鍙栨秷韬�唤璇佽�璇�,鎴愬姛鏃秂rrorCode涓篍rror_Succeed(0) -->
+		<!-- 1銆佽�澶囨湭鎵撳紑,errorCode涓篍rror_DevNotAvailable(2050),rtaCode涓篟TA2105 -->
+		<!-- 2銆佸綋鍓嶅苟鏈��浜庤�璇佺姸鎬�,errorCode涓篍rror_Unexpect(2147483646),rtaCode涓篟TA2110 -->
+		<twoway name="CancelReadJS" overlap="true" jsflag="true" method_id="11">
+			<req>
+			</req>
+			<res>
+			</res>
+		</twoway>
 	</class>
 	<message name="FetchIDCard">
 			<param name="status" type="int"/>

+ 26 - 26
Module/mod_IDCertificate/IDCertificate_UserErrorCode.h

@@ -3,35 +3,35 @@
 #pragma once
 
 #define IDCertificate_UserErrorCode_Start 0x20100200
-#define IDCertificate_UserErrorCode_Open_RootCfg_Failed		(IDCertificate_UserErrorCode_Start + 1)	//鎵撳紑Root.ini澶辫触 201000201
-#define IDCertificate_UserErrorCode_LogInfoAboutTerm		(IDCertificate_UserErrorCode_Start + 2)	//鍛婅�涓婇€佺粓绔�ā鍧椾俊鎭�
-#define IDCertificate_UserErrorCode_KxdDeviceInfo			(IDCertificate_UserErrorCode_Start + 3) //鍛婅�涓婇€佸嚡娆h揪鏈哄瀷淇℃伅
-#define IDCertificate_UserErrorCode_RootInfo			    (IDCertificate_UserErrorCode_Start + 4) //root淇℃伅
-#define IDCertificate_UserErrorCode_ScanIImageFailed        (IDCertificate_UserErrorCode_Start + 5) //鎵�弿鍥惧儚澶辫触
-#define IDCertificate_UserErrorCode_InvalidStartDate		(IDCertificate_UserErrorCode_Start + 6) //鍛婅�寮€濮嬫棩鏈熼潪娉�
-#define IDCertificate_UserErrorCode_InvalidEndDate		    (IDCertificate_UserErrorCode_Start + 7) //鍛婅�缁撴潫鏃ユ湡闈炴硶
-#define IDCertificate_UserErrorCode_InvalidBirthDate		(IDCertificate_UserErrorCode_Start + 8) //鍛婅�鐢熸棩鏃ユ湡闈炴硶
-#define IDCertificate_UserErrorCode_StartDate				(IDCertificate_UserErrorCode_Start + 9) //涓婁紶寮€濮嬫棩鏈�
-#define IDCertificate_UserErrorCode_EndDate					(IDCertificate_UserErrorCode_Start + 10) //涓婁紶缁撴潫鏃ユ湡
-#define IDCertificate_UserErrorCode_BirthDate				(IDCertificate_UserErrorCode_Start + 11) //涓婁紶鐢熸棩鏃ユ湡
-#define IDCertificate_UserErrorCode_NotMatch         		(IDCertificate_UserErrorCode_Start + 12) //璧锋�鏃ユ湡涓嶅尮閰�
-#define IDCertificate_UserErrorCode_DevOpenFailed			(IDCertificate_UserErrorCode_Start + 13) //瀹炰綋鎵撳紑澶辫触 2010020d
-#define IDCertificate_UserErrorCode_DllLoadFailed			(IDCertificate_UserErrorCode_Start + 14) //鍘傚晢閫傞厤鍣ㄥ姞杞藉け璐� 2010020e
-#define IDCertificate_UserErrorCode_Release_Object_Failed	(IDCertificate_UserErrorCode_Start + 15) //閲婃斁璁惧�澶辫触
+#define IDCertificate_UserErrorCode_Open_RootCfg_Failed		(IDCertificate_UserErrorCode_Start + 1)	//打开Root.ini失败 201000201
+#define IDCertificate_UserErrorCode_LogInfoAboutTerm		(IDCertificate_UserErrorCode_Start + 2)	//告警上送终端模块信息
+#define IDCertificate_UserErrorCode_KxdDeviceInfo			(IDCertificate_UserErrorCode_Start + 3) //告警上送凯欣达机型信息
+#define IDCertificate_UserErrorCode_RootInfo			    (IDCertificate_UserErrorCode_Start + 4) //root信息
+#define IDCertificate_UserErrorCode_ScanIImageFailed        (IDCertificate_UserErrorCode_Start + 5) //扫描图像失败
+#define IDCertificate_UserErrorCode_InvalidStartDate		(IDCertificate_UserErrorCode_Start + 6) //告警开始日期非法
+#define IDCertificate_UserErrorCode_InvalidEndDate		    (IDCertificate_UserErrorCode_Start + 7) //告警结束日期非法
+#define IDCertificate_UserErrorCode_InvalidBirthDate		(IDCertificate_UserErrorCode_Start + 8) //告警生日日期非法
+#define IDCertificate_UserErrorCode_StartDate				(IDCertificate_UserErrorCode_Start + 9) //上传开始日期
+#define IDCertificate_UserErrorCode_EndDate					(IDCertificate_UserErrorCode_Start + 10) //上传结束日期
+#define IDCertificate_UserErrorCode_BirthDate				(IDCertificate_UserErrorCode_Start + 11) //上传生日日期
+#define IDCertificate_UserErrorCode_NotMatch         		(IDCertificate_UserErrorCode_Start + 12) //起止日期不匹配
+#define IDCertificate_UserErrorCode_DevOpenFailed			(IDCertificate_UserErrorCode_Start + 13) //实体打开失败 2010020d
+#define IDCertificate_UserErrorCode_DllLoadFailed			(IDCertificate_UserErrorCode_Start + 14) //厂商适配器加载失败 2010020e
+#define IDCertificate_UserErrorCode_Release_Object_Failed	(IDCertificate_UserErrorCode_Start + 15) //释放设备失败
 #define IDCertificate_UserErrorCode_CancelOperation			(IDCertificate_UserErrorCode_Start + 16)
-#define IDCertificate_UserErrorCode_DevOpen_Success			(IDCertificate_UserErrorCode_Start + 20) //韬�唤璇佹墦寮€鎴愬姛 201000214
-#define IDCertificate_UserErrorCode_FWB_NotConnected		(IDCertificate_UserErrorCode_Start + 21) //RVC.PAD鏈哄瀷钃濈墮澶氬悎涓€鏈�繛鎺�
-#define IDCertificate_UserErrorCode_Reading_Disconnected	(IDCertificate_UserErrorCode_Start + 22) //璇昏瘉鏃惰摑鐗欏�鍚堜竴鏂�紑
+#define IDCertificate_UserErrorCode_DevOpen_Success			(IDCertificate_UserErrorCode_Start + 20) //身份证打开成功 20100214
+#define IDCertificate_UserErrorCode_GetDevCategory_Failed	(IDCertificate_UserErrorCode_Start + 21) //适配器GetDevCategory失败 20100215
+#define IDCertificate_UserErrorCode_Reading_Disconnected	(IDCertificate_UserErrorCode_Start + 22) //读证时蓝牙多合一断开
 
-#define IDCertificate_UserErrorCode_ScanImg_Failed			(IDCertificate_UserErrorCode_Start + 25) //韬�唤璇佸浘鐗囨�娴嬪け璐� 
-#define IDCertificate_UserErrorCode_ReadAndScan_Failed		(IDCertificate_UserErrorCode_Start + 26) //璇诲彇韬�唤璇佸け璐� 2010021a
-#define IDCertificate_UserErrorCode_ReadAndScan_Interrupt	(IDCertificate_UserErrorCode_Start + 27) //璇诲彇韬�唤璇佸紓甯搁€€鍑� 2010021b
-#define IDCertificate_UserErrorCode_ReadAndScan_NotHanZi	(IDCertificate_UserErrorCode_Start + 28) //璇诲彇韬�唤璇侀潪姹夊瓧 閿欒�鐮佷负 2010021c
-#define IDCertificate_UserErrorCode_ReadAndScan_GetIDInfo	(IDCertificate_UserErrorCode_Start + 29) //璇诲彇韬�唤璇佷俊鎭� 閿欒�鐮佷负 2010021d
-#define IDCertificate_UserErrorCode_ReadAndScan_TransImgFaild (IDCertificate_UserErrorCode_Start + 30) // 鎵�弿鍥剧墖鑾峰彇澶辫触閿欒�鐮佷负 2010021e
-#define IDCertificate_UserErrorCode_ReadAndScan_NotOnReading	0x2010021f //瀹炰綋涓嶅湪璇昏瘉鐘舵€�
+#define IDCertificate_UserErrorCode_ScanImg_Failed			(IDCertificate_UserErrorCode_Start + 25) //身份证图片检测失败 
+#define IDCertificate_UserErrorCode_ReadAndScan_Failed		(IDCertificate_UserErrorCode_Start + 26) //读取身份证失败 2010021a
+#define IDCertificate_UserErrorCode_ReadAndScan_Interrupt	(IDCertificate_UserErrorCode_Start + 27) //读取身份证异常退出 2010021b
+#define IDCertificate_UserErrorCode_ReadAndScan_NotHanZi	(IDCertificate_UserErrorCode_Start + 28) //读取身份证非汉字 错误码为 2010021c
+#define IDCertificate_UserErrorCode_ReadAndScan_GetIDInfo	(IDCertificate_UserErrorCode_Start + 29) //读取身份证信息 错误码为 2010021d
+#define IDCertificate_UserErrorCode_ReadAndScan_TransImgFaild (IDCertificate_UserErrorCode_Start + 30) // 扫描图片获取失败错误码为 2010021e
+#define IDCertificate_UserErrorCode_ReadAndScan_NotOnReading	0x2010021f //实体不在读证状态
 
 
-//#define IDCertificate_UserErrorCode_Real_Root_Config		(IDCertificate_UserErrorCode_Start + 31) //鍔犺浇瀹為檯鐨剅oot閰嶇疆
+//#define IDCertificate_UserErrorCode_Real_Root_Config		(IDCertificate_UserErrorCode_Start + 31) //加载实际的root配置
 
 #endif //_IDCERTIFICATE_USER_ERRORCODE_H

+ 32 - 146
Module/mod_IDCertificate/IDCertificate_client_g.h

@@ -32,7 +32,6 @@ public:
 	}
 	void OnClose(ErrorCodeEnum)
 	{
-		Dbg("session closed.");
 		bSessionClosed = true;
 	}
 	bool QuerySessionClosed()
@@ -59,55 +58,6 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum Read(IDCertService_Read_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(IDCertService_Method_Read, IDCertService_MethodSignature_Read, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum Read(IDCertService_Read_Req &Req, IDCertService_Read_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Read(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Read(IDCertService_Read_Req &Req, IDCertService_Read_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Read(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum Read(IDCertService_Read_Req &Req, IDCertService_Read_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = Read(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
 	ErrorCodeEnum CancelRead()
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
@@ -150,55 +100,6 @@ public:
 		return ret;
 	}
 
-	ErrorCodeEnum ReadEx(IDCertService_ReadEx_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(IDCertService_Method_ReadEx, IDCertService_MethodSignature_ReadEx, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum ReadEx(IDCertService_ReadEx_Req &Req, IDCertService_ReadEx_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum ReadEx(IDCertService_ReadEx_Req &Req, IDCertService_ReadEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum ReadEx(IDCertService_ReadEx_Req &Req, IDCertService_ReadEx_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadEx(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
 	ErrorCodeEnum Eject(IDCertService_Eject_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
@@ -248,7 +149,7 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum ReadAndScan(IDCertService_ReadAndScan_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
+	ErrorCodeEnum GetDevInfo(IDCertService_GetDevInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
 		CAutoBuffer Buf = SpObject2Buffer(Req);
@@ -258,14 +159,14 @@ public:
 			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
 			m_context = m_context.upgradeLink();
 		}
-		auto ret = pFunc->AsyncRequest(IDCertService_Method_ReadAndScan, IDCertService_MethodSignature_ReadAndScan, Buf, spAsyncWait, m_context, dwTimeout);
+		auto ret = pFunc->AsyncRequest(IDCertService_Method_GetDevInfo, IDCertService_MethodSignature_GetDevInfo, Buf, spAsyncWait, m_context, dwTimeout);
 		m_context.clear();
 		return ret;
 	}
-	ErrorCodeEnum ReadAndScan(IDCertService_ReadAndScan_Req &Req, IDCertService_ReadAndScan_Ans &Ans, DWORD dwTimeout)
+	ErrorCodeEnum GetDevInfo(IDCertService_GetDevInfo_Req &Req, IDCertService_GetDevInfo_Ans &Ans, DWORD dwTimeout)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadAndScan(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = GetDevInfo(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
@@ -273,10 +174,10 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum ReadAndScan(IDCertService_ReadAndScan_Req &Req, IDCertService_ReadAndScan_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
+	ErrorCodeEnum GetDevInfo(IDCertService_GetDevInfo_Req &Req, IDCertService_GetDevInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadAndScan(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = GetDevInfo(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
@@ -284,10 +185,10 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum ReadAndScan(IDCertService_ReadAndScan_Req &Req, IDCertService_ReadAndScan_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
+	ErrorCodeEnum GetDevInfo(IDCertService_GetDevInfo_Req &Req, IDCertService_GetDevInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadAndScan(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = GetDevInfo(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			CSimpleString str;
@@ -297,7 +198,7 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum CrossTermCall(IDCertService_CrossTermCall_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
+	ErrorCodeEnum ReadAndScanUTF8(IDCertService_ReadAndScanUTF8_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
 		CAutoBuffer Buf = SpObject2Buffer(Req);
@@ -307,14 +208,14 @@ public:
 			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
 			m_context = m_context.upgradeLink();
 		}
-		auto ret = pFunc->AsyncRequest(IDCertService_Method_CrossTermCall, IDCertService_MethodSignature_CrossTermCall, Buf, spAsyncWait, m_context, dwTimeout);
+		auto ret = pFunc->AsyncRequest(IDCertService_Method_ReadAndScanUTF8, IDCertService_MethodSignature_ReadAndScanUTF8, Buf, spAsyncWait, m_context, dwTimeout);
 		m_context.clear();
 		return ret;
 	}
-	ErrorCodeEnum CrossTermCall(IDCertService_CrossTermCall_Req &Req, IDCertService_CrossTermCall_Ans &Ans, DWORD dwTimeout)
+	ErrorCodeEnum ReadAndScanUTF8(IDCertService_ReadAndScanUTF8_Req &Req, IDCertService_ReadAndScanUTF8_Ans &Ans, DWORD dwTimeout)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = CrossTermCall(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = ReadAndScanUTF8(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
@@ -322,10 +223,10 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum CrossTermCall(IDCertService_CrossTermCall_Req &Req, IDCertService_CrossTermCall_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
+	ErrorCodeEnum ReadAndScanUTF8(IDCertService_ReadAndScanUTF8_Req &Req, IDCertService_ReadAndScanUTF8_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = CrossTermCall(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = ReadAndScanUTF8(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
@@ -333,10 +234,10 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum CrossTermCall(IDCertService_CrossTermCall_Req &Req, IDCertService_CrossTermCall_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
+	ErrorCodeEnum ReadAndScanUTF8(IDCertService_ReadAndScanUTF8_Req &Req, IDCertService_ReadAndScanUTF8_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = CrossTermCall(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = ReadAndScanUTF8(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			CSimpleString str;
@@ -346,22 +247,7 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum CrossTermInvokeInfo(IDCertService_CrossTermInvokeInfo_Info &Info)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		CAutoBuffer Buf = SpObject2Buffer(Info);
-		auto ret = pFunc->OnewayCall(IDCertService_Method_CrossTermInvokeInfo, IDCertService_MethodSignature_CrossTermInvokeInfo, Buf, m_context);
-		m_context.clear();
-		return ret;
-	}
-
-	ErrorCodeEnum GetDevInfo(IDCertService_GetDevInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
+	ErrorCodeEnum ReadAndScanUTF8JS(IDCertService_ReadAndScanUTF8JS_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
 		CAutoBuffer Buf = SpObject2Buffer(Req);
@@ -371,14 +257,14 @@ public:
 			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
 			m_context = m_context.upgradeLink();
 		}
-		auto ret = pFunc->AsyncRequest(IDCertService_Method_GetDevInfo, IDCertService_MethodSignature_GetDevInfo, Buf, spAsyncWait, m_context, dwTimeout);
+		auto ret = pFunc->AsyncRequest(IDCertService_Method_ReadAndScanUTF8JS, IDCertService_MethodSignature_ReadAndScanUTF8JS, Buf, spAsyncWait, m_context, dwTimeout);
 		m_context.clear();
 		return ret;
 	}
-	ErrorCodeEnum GetDevInfo(IDCertService_GetDevInfo_Req &Req, IDCertService_GetDevInfo_Ans &Ans, DWORD dwTimeout)
+	ErrorCodeEnum ReadAndScanUTF8JS(IDCertService_ReadAndScanUTF8JS_Req &Req, IDCertService_ReadAndScanUTF8JS_Ans &Ans, DWORD dwTimeout)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetDevInfo(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = ReadAndScanUTF8JS(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
@@ -386,10 +272,10 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum GetDevInfo(IDCertService_GetDevInfo_Req &Req, IDCertService_GetDevInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
+	ErrorCodeEnum ReadAndScanUTF8JS(IDCertService_ReadAndScanUTF8JS_Req &Req, IDCertService_ReadAndScanUTF8JS_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetDevInfo(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = ReadAndScanUTF8JS(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
@@ -397,10 +283,10 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum GetDevInfo(IDCertService_GetDevInfo_Req &Req, IDCertService_GetDevInfo_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
+	ErrorCodeEnum ReadAndScanUTF8JS(IDCertService_ReadAndScanUTF8JS_Req &Req, IDCertService_ReadAndScanUTF8JS_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetDevInfo(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = ReadAndScanUTF8JS(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			CSimpleString str;
@@ -410,7 +296,7 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum ReadAndScanUTF8(IDCertService_ReadAndScanUTF8_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
+	ErrorCodeEnum CancelReadJS(IDCertService_CancelReadJS_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
 		CAutoBuffer Buf = SpObject2Buffer(Req);
@@ -420,14 +306,14 @@ public:
 			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
 			m_context = m_context.upgradeLink();
 		}
-		auto ret = pFunc->AsyncRequest(IDCertService_Method_ReadAndScanUTF8, IDCertService_MethodSignature_ReadAndScanUTF8, Buf, spAsyncWait, m_context, dwTimeout);
+		auto ret = pFunc->AsyncRequest(IDCertService_Method_CancelReadJS, IDCertService_MethodSignature_CancelReadJS, Buf, spAsyncWait, m_context, dwTimeout);
 		m_context.clear();
 		return ret;
 	}
-	ErrorCodeEnum ReadAndScanUTF8(IDCertService_ReadAndScanUTF8_Req &Req, IDCertService_ReadAndScanUTF8_Ans &Ans, DWORD dwTimeout)
+	ErrorCodeEnum CancelReadJS(IDCertService_CancelReadJS_Req &Req, IDCertService_CancelReadJS_Ans &Ans, DWORD dwTimeout)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadAndScanUTF8(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = CancelReadJS(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
@@ -435,10 +321,10 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum ReadAndScanUTF8(IDCertService_ReadAndScanUTF8_Req &Req, IDCertService_ReadAndScanUTF8_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
+	ErrorCodeEnum CancelReadJS(IDCertService_CancelReadJS_Req &Req, IDCertService_CancelReadJS_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadAndScanUTF8(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = CancelReadJS(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
@@ -446,10 +332,10 @@ public:
 		}
 		return Error;
 	}
-	ErrorCodeEnum ReadAndScanUTF8(IDCertService_ReadAndScanUTF8_Req &Req, IDCertService_ReadAndScanUTF8_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
+	ErrorCodeEnum CancelReadJS(IDCertService_CancelReadJS_Req &Req, IDCertService_CancelReadJS_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
 	{
 		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = ReadAndScanUTF8(Req, spAsyncWait, dwTimeout);
+		ErrorCodeEnum Error = CancelReadJS(Req, spAsyncWait, dwTimeout);
 		if (Error == Error_Succeed) {
 			bool bEnd = false;
 			CSimpleString str;

+ 54 - 177
Module/mod_IDCertificate/IDCertificate_def_g.h

@@ -12,70 +12,32 @@ namespace IDCertificate {
 // const goes here
 //
 
-#define IDCertService_Method_Read 0
 #define IDCertService_Method_CancelRead 1
 #define IDCertService_Method_ReadWaitMore 2
 #define IDCertService_Method_Exit 3
-#define IDCertService_Method_ReadEx 4
 #define IDCertService_Method_Eject 5
-#define IDCertService_Method_ReadAndScan 6
-#define IDCertService_Method_CrossTermCall 7
-#define IDCertService_Method_CrossTermInvokeInfo 8
 #define IDCertService_Method_GetDevInfo 65535
 #define IDCertService_Method_ReadAndScanUTF8 9
+#define IDCertService_Method_ReadAndScanUTF8JS 10
+#define IDCertService_Method_CancelReadJS 11
 
-#define IDCertService_MethodSignature_Read 1473284635
 #define IDCertService_MethodSignature_CancelRead -342104338
 #define IDCertService_MethodSignature_ReadWaitMore -5778028
 #define IDCertService_MethodSignature_Exit -1158854104
-#define IDCertService_MethodSignature_ReadEx 2103789108
 #define IDCertService_MethodSignature_Eject -377455114
-#define IDCertService_MethodSignature_ReadAndScan -1708866135
-#define IDCertService_MethodSignature_CrossTermCall -2042776719
-#define IDCertService_MethodSignature_CrossTermInvokeInfo 54854091
 #define IDCertService_MethodSignature_GetDevInfo 296205965
 #define IDCertService_MethodSignature_ReadAndScanUTF8 1171255469
+#define IDCertService_MethodSignature_ReadAndScanUTF8JS 1636770944
+#define IDCertService_MethodSignature_CancelReadJS -1728083983
 
-#define IDCertService_LogCode_Read "QLR040220100"
 #define IDCertService_LogCode_CancelRead "QLR040220101"
 #define IDCertService_LogCode_ReadWaitMore "QLR040220102"
 #define IDCertService_LogCode_Exit "QLR040220103"
-#define IDCertService_LogCode_ReadEx "QLR040220104"
 #define IDCertService_LogCode_Eject "QLR040220105"
-#define IDCertService_LogCode_ReadAndScan "QLR040220106"
-#define IDCertService_LogCode_CrossTermCall "QLR040220107"
-#define IDCertService_LogCode_CrossTermInvokeInfo "QLR040220108"
 #define IDCertService_LogCode_GetDevInfo "QLR040220199"
 #define IDCertService_LogCode_ReadAndScanUTF8 "QLR040220109"
-
-struct IDCertService_Read_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct IDCertService_Read_Ans
-{
-	CSimpleStringA name;
-	CSimpleStringA sex;
-	CSimpleStringA nation;
-	CSimpleStringA birthday;
-	CSimpleStringA address;
-	CSimpleStringA idcode;
-	CSimpleStringA department;
-	CSimpleStringA startdate;
-	CSimpleStringA enddate;
-	CBlob photodata;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & name & sex & nation & birthday & address & idcode & department & startdate & enddate & photodata;
-	}
-
-};
+#define IDCertService_LogCode_ReadAndScanUTF8JS "QLR040220110"
+#define IDCertService_LogCode_CancelReadJS "QLR040220111"
 
 struct IDCertService_CancelRead_Info
 {
@@ -104,47 +66,25 @@ struct IDCertService_Exit_Info
 
 };
 
-struct IDCertService_ReadEx_Req
+struct IDCertService_Eject_Req
 {
-	int type;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
 
 	void Serialize(SpBuffer &Buf)
 	{
-		auto & buf = Buf & type & reserved1 & reserved2;
 	}
 
 };
 
-struct IDCertService_ReadEx_Ans
+struct IDCertService_Eject_Ans
 {
-	CSimpleStringA name;
-	CSimpleStringA sex;
-	CSimpleStringA nation;
-	CSimpleStringA birthday;
-	CSimpleStringA address;
-	CSimpleStringA idcode;
-	CSimpleStringA department;
-	CSimpleStringA startdate;
-	CSimpleStringA enddate;
-	CBlob photodata;
-	CSimpleStringA englishname;
-	CSimpleStringA nationality;
-	CSimpleStringA idversion;
-	CSimpleStringA idtype;
-	CSimpleStringA reserved;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
 
 	void Serialize(SpBuffer &Buf)
 	{
-		auto & buf = Buf & name & sex & nation & birthday & address & idcode & department & startdate & enddate & photodata & englishname & nationality & idversion & idtype & reserved & reserved1 & reserved2;
 	}
 
 };
 
-struct IDCertService_Eject_Req
+struct IDCertService_GetDevInfo_Req
 {
 
 	void Serialize(SpBuffer &Buf)
@@ -153,16 +93,21 @@ struct IDCertService_Eject_Req
 
 };
 
-struct IDCertService_Eject_Ans
+struct IDCertService_GetDevInfo_Ans
 {
+	CSimpleStringA type;
+	CSimpleStringA model;
+	CSimpleStringA version;
+	int state;
 
 	void Serialize(SpBuffer &Buf)
 	{
+		auto & buf = Buf & type & model & version & state;
 	}
 
 };
 
-struct IDCertService_ReadAndScan_Req
+struct IDCertService_ReadAndScanUTF8_Req
 {
 	int type;
 	CAutoArray<int> reserved1;
@@ -175,17 +120,9 @@ struct IDCertService_ReadAndScan_Req
 
 };
 
-struct IDCertService_ReadAndScan_Ans
+struct IDCertService_ReadAndScanUTF8_Ans
 {
-	CSimpleStringA name;
-	CSimpleStringA sex;
-	CSimpleStringA nation;
-	CSimpleStringA birthday;
-	CSimpleStringA address;
-	CSimpleStringA idcode;
-	CSimpleStringA department;
-	CSimpleStringA startdate;
-	CSimpleStringA enddate;
+	int msgtype;
 	int hasscan;
 	CBlob photodata;
 	CBlob frontphoto;
@@ -195,110 +132,32 @@ struct IDCertService_ReadAndScan_Ans
 	CBlob finger2;
 	CBlob imgreserved1;
 	CBlob imgreserved2;
-	CSimpleStringA englishname;
-	CSimpleStringA nationality;
-	CSimpleStringA idversion;
-	CSimpleStringA idtype;
-	CSimpleStringA othercode;
-	CSimpleStringA reserved;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & name & sex & nation & birthday & address & idcode & department & startdate & enddate & hasscan & photodata & frontphoto & backphoto & headphoto & finger1 & finger2 & imgreserved1 & imgreserved2 & englishname & nationality & idversion & idtype & othercode & reserved & reserved1 & reserved2;
-	}
-
-};
-
-struct IDCertService_CrossTermCall_Req
-{
-	int type;
-	CSimpleStringA fromTerminalNo;
-	CSimpleStringA toTerminalNo;
-	int nEntityID;
-	CSimpleStringA param1;
-	CSimpleStringA param2;
-	int param3;
-	int param4;
-	CBlob paramX;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-	CAutoArray<CBlob> reservedX;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & type & fromTerminalNo & toTerminalNo & nEntityID & param1 & param2 & param3 & param4 & paramX & reserved1 & reserved2 & reservedX;
-	}
-
-};
-
-struct IDCertService_CrossTermCall_Ans
-{
-	int retCode;
-	CSimpleStringA retParam1;
-	CSimpleStringA retParam2;
-	int retParam3;
-	int retParam4;
-	CBlob retParamX;
 	CAutoArray<int> reserved1;
 	CAutoArray<CSimpleStringA> reserved2;
-	CAutoArray<CBlob> reservedX;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & retCode & retParam1 & retParam2 & retParam3 & retParam4 & retParamX & reserved1 & reserved2 & reservedX;
-	}
-
-};
-
-struct IDCertService_CrossTermInvokeInfo_Info
-{
-	int type;
-	int result;
-	CSimpleStringA fromTerminalNo;
-	CSimpleStringA toTerminalNo;
-	int nEntityID;
-	CSimpleStringA param1;
-	CSimpleStringA param2;
-	int param3;
-	int param4;
-	CBlob paramX;
-	CAutoArray<int> reserved1;
-	CAutoArray<CSimpleStringA> reserved2;
-	CAutoArray<CBlob> reservedX;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & type & result & fromTerminalNo & toTerminalNo & nEntityID & param1 & param2 & param3 & param4 & paramX & reserved1 & reserved2 & reservedX;
-	}
-
-};
-
-struct IDCertService_GetDevInfo_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct IDCertService_GetDevInfo_Ans
-{
-	CSimpleStringA type;
-	CSimpleStringA model;
-	CSimpleStringA version;
-	int state;
+	CBlob name_utf8;
+	CBlob sex_utf8;
+	CBlob nation_utf8;
+	CBlob birthday_utf8;
+	CBlob address_utf8;
+	CBlob idcode_utf8;
+	CBlob department_utf8;
+	CBlob startdate_utf8;
+	CBlob enddate_utf8;
+	CBlob englishname_utf8;
+	CBlob nationality_utf8;
+	CBlob idversion_utf8;
+	CBlob idtype_utf8;
+	CBlob othercode_utf8;
+	CBlob reserved_utf8;
 
 	void Serialize(SpBuffer &Buf)
 	{
-		auto & buf = Buf & type & model & version & state;
+		auto & buf = Buf & msgtype & hasscan & photodata & frontphoto & backphoto & headphoto & finger1 & finger2 & imgreserved1 & imgreserved2 & reserved1 & reserved2 & name_utf8 & sex_utf8 & nation_utf8 & birthday_utf8 & address_utf8 & idcode_utf8 & department_utf8 & startdate_utf8 & enddate_utf8 & englishname_utf8 & nationality_utf8 & idversion_utf8 & idtype_utf8 & othercode_utf8 & reserved_utf8;
 	}
 
 };
 
-struct IDCertService_ReadAndScanUTF8_Req
+struct IDCertService_ReadAndScanUTF8JS_Req
 {
 	int type;
 	CAutoArray<int> reserved1;
@@ -311,7 +170,7 @@ struct IDCertService_ReadAndScanUTF8_Req
 
 };
 
-struct IDCertService_ReadAndScanUTF8_Ans
+struct IDCertService_ReadAndScanUTF8JS_Ans
 {
 	int msgtype;
 	int hasscan;
@@ -348,6 +207,24 @@ struct IDCertService_ReadAndScanUTF8_Ans
 
 };
 
+struct IDCertService_CancelReadJS_Req
+{
+
+	void Serialize(SpBuffer &Buf)
+	{
+	}
+
+};
+
+struct IDCertService_CancelReadJS_Ans
+{
+
+	void Serialize(SpBuffer &Buf)
+	{
+	}
+
+};
+
 
 ///////////////////////////
 

+ 36 - 117
Module/mod_IDCertificate/IDCertificate_server_g.h

@@ -30,13 +30,6 @@ public:
 	{
 		ErrorCodeEnum Error = Error_Succeed;
 		switch (dwMessageID) {
-		case IDCertService_Method_Read:
-			if (dwSignature == IDCertService_MethodSignature_Read) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case IDCertService_Method_CancelRead:
 			if (dwSignature == IDCertService_MethodSignature_CancelRead) {
 				bOverlap = true;
@@ -58,13 +51,6 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_ReadEx:
-			if (dwSignature == IDCertService_MethodSignature_ReadEx) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case IDCertService_Method_Eject:
 			if (dwSignature == IDCertService_MethodSignature_Eject) {
 				bOverlap = true;
@@ -72,36 +58,29 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_ReadAndScan:
-			if (dwSignature == IDCertService_MethodSignature_ReadAndScan) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case IDCertService_Method_CrossTermCall:
-			if (dwSignature == IDCertService_MethodSignature_CrossTermCall) {
+		case IDCertService_Method_GetDevInfo:
+			if (dwSignature == IDCertService_MethodSignature_GetDevInfo) {
 				bOverlap = true;
 			} else {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_CrossTermInvokeInfo:
-			if (dwSignature == IDCertService_MethodSignature_CrossTermInvokeInfo) {
+		case IDCertService_Method_ReadAndScanUTF8:
+			if (dwSignature == IDCertService_MethodSignature_ReadAndScanUTF8) {
 				bOverlap = true;
 			} else {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_GetDevInfo:
-			if (dwSignature == IDCertService_MethodSignature_GetDevInfo) {
+		case IDCertService_Method_ReadAndScanUTF8JS:
+			if (dwSignature == IDCertService_MethodSignature_ReadAndScanUTF8JS) {
 				bOverlap = true;
 			} else {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_ReadAndScanUTF8:
-			if (dwSignature == IDCertService_MethodSignature_ReadAndScanUTF8) {
+		case IDCertService_Method_CancelReadJS:
+			if (dwSignature == IDCertService_MethodSignature_CancelReadJS) {
 				bOverlap = true;
 			} else {
 				Error = Error_MethodSignatureFailed;
@@ -118,11 +97,6 @@ public:
 	{
 		ErrorCodeEnum Error = Error_Succeed;
 		switch (dwMessageID) {
-		case IDCertService_Method_Read:
-			if (dwSignature != IDCertService_MethodSignature_Read) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case IDCertService_Method_CancelRead:
 			if (dwSignature != IDCertService_MethodSignature_CancelRead) {
 				Error = Error_MethodSignatureFailed;
@@ -138,38 +112,28 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_ReadEx:
-			if (dwSignature != IDCertService_MethodSignature_ReadEx) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case IDCertService_Method_Eject:
 			if (dwSignature != IDCertService_MethodSignature_Eject) {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_ReadAndScan:
-			if (dwSignature != IDCertService_MethodSignature_ReadAndScan) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case IDCertService_Method_CrossTermCall:
-			if (dwSignature != IDCertService_MethodSignature_CrossTermCall) {
+		case IDCertService_Method_GetDevInfo:
+			if (dwSignature != IDCertService_MethodSignature_GetDevInfo) {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_CrossTermInvokeInfo:
-			if (dwSignature != IDCertService_MethodSignature_CrossTermInvokeInfo) {
+		case IDCertService_Method_ReadAndScanUTF8:
+			if (dwSignature != IDCertService_MethodSignature_ReadAndScanUTF8) {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_GetDevInfo:
-			if (dwSignature != IDCertService_MethodSignature_GetDevInfo) {
+		case IDCertService_Method_ReadAndScanUTF8JS:
+			if (dwSignature != IDCertService_MethodSignature_ReadAndScanUTF8JS) {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case IDCertService_Method_ReadAndScanUTF8:
-			if (dwSignature != IDCertService_MethodSignature_ReadAndScanUTF8) {
+		case IDCertService_Method_CancelReadJS:
+			if (dwSignature != IDCertService_MethodSignature_CancelReadJS) {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
@@ -180,11 +144,6 @@ public:
 		return Error;
 	}
 
-	virtual void Handle_Read(SpReqAnsContext<IDCertService_Read_Req, IDCertService_Read_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
 	virtual void Handle_CancelRead(SpOnewayCallContext<IDCertService_CancelRead_Info>::Pointer ctx)
 	{
 	/// override by user
@@ -200,37 +159,27 @@ public:
 	/// override by user
 	}
 
-	virtual void Handle_ReadEx(SpReqAnsContext<IDCertService_ReadEx_Req, IDCertService_ReadEx_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
 	virtual void Handle_Eject(SpReqAnsContext<IDCertService_Eject_Req, IDCertService_Eject_Ans>::Pointer ctx)
 	{
 	/// override by user
 	}
 
-	virtual void Handle_ReadAndScan(SpReqAnsContext<IDCertService_ReadAndScan_Req, IDCertService_ReadAndScan_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_CrossTermCall(SpReqAnsContext<IDCertService_CrossTermCall_Req, IDCertService_CrossTermCall_Ans>::Pointer ctx)
+	virtual void Handle_GetDevInfo(SpReqAnsContext<IDCertService_GetDevInfo_Req, IDCertService_GetDevInfo_Ans>::Pointer ctx)
 	{
 	/// override by user
 	}
 
-	virtual void Handle_CrossTermInvokeInfo(SpOnewayCallContext<IDCertService_CrossTermInvokeInfo_Info>::Pointer ctx)
+	virtual void Handle_ReadAndScanUTF8(SpReqAnsContext<IDCertService_ReadAndScanUTF8_Req, IDCertService_ReadAndScanUTF8_Ans>::Pointer ctx)
 	{
 	/// override by user
 	}
 
-	virtual void Handle_GetDevInfo(SpReqAnsContext<IDCertService_GetDevInfo_Req, IDCertService_GetDevInfo_Ans>::Pointer ctx)
+	virtual void Handle_ReadAndScanUTF8JS(SpReqAnsContext<IDCertService_ReadAndScanUTF8JS_Req, IDCertService_ReadAndScanUTF8JS_Ans>::Pointer ctx)
 	{
 	/// override by user
 	}
 
-	virtual void Handle_ReadAndScanUTF8(SpReqAnsContext<IDCertService_ReadAndScanUTF8_Req, IDCertService_ReadAndScanUTF8_Ans>::Pointer ctx)
+	virtual void Handle_CancelReadJS(SpReqAnsContext<IDCertService_CancelReadJS_Req, IDCertService_CancelReadJS_Ans>::Pointer ctx)
 	{
 	/// override by user
 	}
@@ -251,16 +200,6 @@ public:
 			}
 #endif
 			switch (dwMessageID) {
-				case IDCertService_Method_Read:
-					{
-						SpReqAnsContext<IDCertService_Read_Req,IDCertService_Read_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<IDCertService_Read_Req,IDCertService_Read_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_Read(ctx);
-					}
-					break;
 				case IDCertService_Method_CancelRead:
 					{
 						SpOnewayCallContext<IDCertService_CancelRead_Info>::Pointer ctx;
@@ -291,16 +230,6 @@ public:
 						Handle_Exit(ctx);
 					}
 					break;
-				case IDCertService_Method_ReadEx:
-					{
-						SpReqAnsContext<IDCertService_ReadEx_Req,IDCertService_ReadEx_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<IDCertService_ReadEx_Req,IDCertService_ReadEx_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_ReadEx(ctx);
-					}
-					break;
 				case IDCertService_Method_Eject:
 					{
 						SpReqAnsContext<IDCertService_Eject_Req,IDCertService_Eject_Ans>::Pointer ctx;
@@ -311,54 +240,44 @@ public:
 						Handle_Eject(ctx);
 					}
 					break;
-				case IDCertService_Method_ReadAndScan:
+				case IDCertService_Method_GetDevInfo:
 					{
-						SpReqAnsContext<IDCertService_ReadAndScan_Req,IDCertService_ReadAndScan_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<IDCertService_ReadAndScan_Req,IDCertService_ReadAndScan_Ans>(pTransactionContext));
+						SpReqAnsContext<IDCertService_GetDevInfo_Req,IDCertService_GetDevInfo_Ans>::Pointer ctx;
+						ctx.Attach(new SpReqAnsContext<IDCertService_GetDevInfo_Req,IDCertService_GetDevInfo_Ans>(pTransactionContext));
 						SpBuffer2Object(Buf, ctx->Req);
 						pTransactionContext->GetLinkContext(ctx->link);
 						EntityResource::setLink(ctx->link);
-						Handle_ReadAndScan(ctx);
+						Handle_GetDevInfo(ctx);
 					}
 					break;
-				case IDCertService_Method_CrossTermCall:
+				case IDCertService_Method_ReadAndScanUTF8:
 					{
-						SpReqAnsContext<IDCertService_CrossTermCall_Req,IDCertService_CrossTermCall_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<IDCertService_CrossTermCall_Req,IDCertService_CrossTermCall_Ans>(pTransactionContext));
+						SpReqAnsContext<IDCertService_ReadAndScanUTF8_Req,IDCertService_ReadAndScanUTF8_Ans>::Pointer ctx;
+						ctx.Attach(new SpReqAnsContext<IDCertService_ReadAndScanUTF8_Req,IDCertService_ReadAndScanUTF8_Ans>(pTransactionContext));
 						SpBuffer2Object(Buf, ctx->Req);
 						pTransactionContext->GetLinkContext(ctx->link);
 						EntityResource::setLink(ctx->link);
-						Handle_CrossTermCall(ctx);
-					}
-					break;
-				case IDCertService_Method_CrossTermInvokeInfo:
-					{
-						SpOnewayCallContext<IDCertService_CrossTermInvokeInfo_Info>::Pointer ctx;
-						ctx.Attach(new SpOnewayCallContext<IDCertService_CrossTermInvokeInfo_Info>());
-						SpBuffer2Object(Buf, ctx->Info);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_CrossTermInvokeInfo(ctx);
+						Handle_ReadAndScanUTF8(ctx);
 					}
 					break;
-				case IDCertService_Method_GetDevInfo:
+				case IDCertService_Method_ReadAndScanUTF8JS:
 					{
-						SpReqAnsContext<IDCertService_GetDevInfo_Req,IDCertService_GetDevInfo_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<IDCertService_GetDevInfo_Req,IDCertService_GetDevInfo_Ans>(pTransactionContext));
+						SpReqAnsContext<IDCertService_ReadAndScanUTF8JS_Req,IDCertService_ReadAndScanUTF8JS_Ans>::Pointer ctx;
+						ctx.Attach(new SpReqAnsContext<IDCertService_ReadAndScanUTF8JS_Req,IDCertService_ReadAndScanUTF8JS_Ans>(pTransactionContext));
 						SpBuffer2Object(Buf, ctx->Req);
 						pTransactionContext->GetLinkContext(ctx->link);
 						EntityResource::setLink(ctx->link);
-						Handle_GetDevInfo(ctx);
+						Handle_ReadAndScanUTF8JS(ctx);
 					}
 					break;
-				case IDCertService_Method_ReadAndScanUTF8:
+				case IDCertService_Method_CancelReadJS:
 					{
-						SpReqAnsContext<IDCertService_ReadAndScanUTF8_Req,IDCertService_ReadAndScanUTF8_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<IDCertService_ReadAndScanUTF8_Req,IDCertService_ReadAndScanUTF8_Ans>(pTransactionContext));
+						SpReqAnsContext<IDCertService_CancelReadJS_Req,IDCertService_CancelReadJS_Ans>::Pointer ctx;
+						ctx.Attach(new SpReqAnsContext<IDCertService_CancelReadJS_Req,IDCertService_CancelReadJS_Ans>(pTransactionContext));
 						SpBuffer2Object(Buf, ctx->Req);
 						pTransactionContext->GetLinkContext(ctx->link);
 						EntityResource::setLink(ctx->link);
-						Handle_ReadAndScanUTF8(ctx);
+						Handle_CancelReadJS(ctx);
 					}
 					break;
 				default:

+ 0 - 29
Module/mod_IDCertificate/mod_IDCertificate.cpp

@@ -8,13 +8,6 @@ void IDCertServerSession::Handle_CancelRead(SpOnewayCallContext<IDCert_CancelRea
 	m_pEntity->CancelRead(ctx);
 }
 
-void IDCertServerSession::Handle_ReadWaitMore(SpOnewayCallContext<IDCert_ReadWaitMore_Info>::Pointer ctx)
-{
-	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Handle_ReadWaitMore");
-	m_pEntity->ReadWaitMore(ctx);
-}
-
 void IDCertServerSession::Handle_GetDevInfo(SpReqAnsContext<IDCert_GetDevInfo_Req, IDCert_GetDevInfo_Ans>::Pointer ctx)
 {
 	DbgToBeidou(ctx->link, __FUNCTION__)();
@@ -22,28 +15,6 @@ void IDCertServerSession::Handle_GetDevInfo(SpReqAnsContext<IDCert_GetDevInfo_Re
 	m_pEntity->GetDevInfo(ctx);
 }
 
-void IDCertServerSession::Handle_Exit(SpOnewayCallContext<IDCert_Exit_Info>::Pointer ctx)
-{
-	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Handle_Exit");
-	m_pEntity->Exit(ctx);
-}
-
-void IDCertServerSession::Handle_Eject(SpReqAnsContext<IDCert_Eject_Req, IDCert_Eject_Ans>::Pointer ctx)
-{
-	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Handle_Eject");
-	m_pEntity->Eject(ctx);
-}
-
-void IDCertServerSession::Handle_ReadAndScan(SpReqAnsContext<IDCert_ReadAndScan_Req, IDCert_ReadAndScan_Ans>::Pointer ctx)
-{
-	DbgToBeidou(ctx->link, __FUNCTION__)();
-	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Handle_ReadAndScan");
-	m_pEntity->ReadAndScan(ctx);
-}
-
 void IDCertServerSession::Handle_ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx) //ex1
 {
 	DbgToBeidou(ctx->link, __FUNCTION__)();

+ 2 - 48
Module/mod_IDCertificate/mod_IDCertificate.h

@@ -19,10 +19,6 @@ public:
 	virtual ~IDCertServerSession(){}
 	virtual void Handle_CancelRead(SpOnewayCallContext<IDCert_CancelRead_Info>::Pointer ctx);
 	virtual void Handle_GetDevInfo(SpReqAnsContext<IDCert_GetDevInfo_Req, IDCert_GetDevInfo_Ans>::Pointer ctx);
-	virtual void Handle_ReadWaitMore(SpOnewayCallContext<IDCert_ReadWaitMore_Info>::Pointer ctx);
-	virtual void Handle_Exit(SpOnewayCallContext<IDCert_Exit_Info>::Pointer ctx);
-	virtual void Handle_Eject(SpReqAnsContext<IDCert_Eject_Req, IDCert_Eject_Ans>::Pointer ctx);
-	virtual void Handle_ReadAndScan(SpReqAnsContext<IDCert_ReadAndScan_Req, IDCert_ReadAndScan_Ans>::Pointer ctx);
 	virtual void Handle_ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx); //ex1
 private:
 	CIDCertEntity* m_pEntity;
@@ -73,62 +69,20 @@ public:
 		CancelReadEvent* e = new CancelReadEvent();
 		m_fsm.PostEventFIFO(e);
 	}
-	void ReadWaitMore(SpOnewayCallContext<IDCert_ReadWaitMore_Info>::Pointer ctx)
-	{
-		if (m_fsm.GetReadFlag())
-			m_fsm.SetReadMore();
-	}
-
-	void Exit(SpOnewayCallContext<IDCert_Exit_Info>::Pointer ctx)
-	{
-		FSMEvent* evt = new FSMEvent(USER_EVT_EXIT);
-		m_fsm.PostEventFIFO(evt);
-	}
-	void Eject(SpReqAnsContext<IDCert_Eject_Req, IDCert_Eject_Ans>::Pointer ctx)
-	{
-		EjectEvent* e = new EjectEvent();
-		e->ctx = ctx;
-		m_fsm.PostEventFIFO(e);
-	}
-
-	void ReadAndScan(SpReqAnsContext<IDCert_ReadAndScan_Req, IDCert_ReadAndScan_Ans>::Pointer ctx)
-	{
-#ifdef RVC_OS_LINUX
-		ReadAndScanEvent* e = new ReadAndScanEvent();
-		e->ctx = ctx;
-		m_fsm.PostEventFIFO(e);
-#else	//windows
-		if (!m_fsm.GetDevInitFlag())
-		{
-			ctx->Answer(Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed);
-			LogWarn(Severity_Middle, Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed, "Open Dev failed.");
-
-			return;
-		}
-		ReadAndScanEvent* e = new ReadAndScanEvent();
-		e->ctx = ctx;
-		m_fsm.PostEventFIFO(e);
-#endif // RVC_OS_LINUX
-	}
 
 	void ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx) //ex2
 	{
-#ifdef RVC_OS_LINUX
-		ReadAndScanUTF8Event* e = new ReadAndScanUTF8Event();
-		e->ctx = ctx;
-		m_fsm.PostEventFIFO(e);
-#else
 		if (!m_fsm.GetDevInitFlag())
 		{
 			ctx->Answer(Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed);
-			LogWarn(Severity_Middle, Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed, "Open Dev failed.");
+			LogWarn(Severity_Middle, Error_DevNotAvailable, IDCertificate_UserErrorCode_DevOpenFailed, "Open Dev failed.(ReadAndScanUTF8)");
 
 			return;
 		}
+
 		ReadAndScanUTF8Event* e = new ReadAndScanUTF8Event();
 		e->ctx = ctx;
 		m_fsm.PostEventFIFO(e);
-#endif
 	}
 
 	void GetDevInfo(SpReqAnsContext<IDCert_GetDevInfo_Req, IDCert_GetDevInfo_Ans>::Pointer ctx)

+ 8 - 10
Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp

@@ -776,8 +776,9 @@ int ResourceWatcherFSM::ProcessFileDelete(LPCTSTR lpszPath, int& nDelSucCnt, int
         }
         else {
             nDelFailedCnt++;
-            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A08").setAPI("DeleteFiles")("RemoveFileA [%s] failed, GLE = %u.", tempFilePath, errno);
-            LogWarn(Severity_Middle, Error_Debug, LOG_WARN_FILE_DELETE_FAILED, CSimpleStringA::Format("RemoveFileA [%s] failed, GLE = %u.", tempFilePath, errno));
+            CSimpleStringA errMsg = CSimpleStringA::Format("RemoveFileA [%s] failed, GLE = %u.", lpszPath, GetLastError());
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A08").setAPI("DeleteFiles")(errMsg.GetData());
+            LogWarn(Severity_Middle, Error_Debug, LOG_WARN_FILE_DELETE_FAILED, errMsg.GetData());
         }
         if (searchFilePath) delete[] searchFilePath;
         if (tempFilePath) delete[] tempFilePath;
@@ -830,8 +831,6 @@ int ResourceWatcherFSM::ProcessFileDelete(LPCTSTR lpszPath, int& nDelSucCnt, int
         int tDelSucCnt = 0, tDelFailedCnt = 0;
         fileCnt += ProcessFileDelete((LPCTSTR)tempFilePath, tDelSucCnt, tDelFailedCnt, true); //子目录要清理
         if (tDelFailedCnt != 0) {
-            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A08").setAPI("DeleteFiles")("rm(%s) failed, GLE = %u.", (LPCTSTR)tempFilePath, errno);
-            LogWarn(Severity_Middle, Error_Debug, LOG_WARN_FILE_DELETE_FAILED, CSimpleStringA::Format("rm(%s) failed, GLE = %u.", (LPCTSTR)tempFilePath, errno));
             nDelSucCnt += tDelSucCnt;
             nDelFailedCnt += tDelFailedCnt;
             return fileCnt;
@@ -864,10 +863,12 @@ int ResourceWatcherFSM::ProcessFileDelete(LPCTSTR lpszPath, int& nDelSucCnt, int
             if (delDays < saveBackDay) // 未达到需要清理的天数阈值,无需清理
             {
                 DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("存留天数[%d], 删除阈值[%u],无需清理.", (int)delDays, saveBackDay);
+                FindClose(hFind);
                 return fileCnt;
             }
         }
 
+        FindClose(hFind);
         if (DeleteFile(lpszPath) == true)
         {
             nDelSucCnt++;
@@ -876,9 +877,9 @@ int ResourceWatcherFSM::ProcessFileDelete(LPCTSTR lpszPath, int& nDelSucCnt, int
         else
         {
             nDelFailedCnt++;
-            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A08").setAPI("DeleteFiles")
-                ("Delete [%s] failed, GLE = %u.", lpszPath, GetLastError());
-            LogWarn(Severity_Middle, Error_Debug, LOG_WARN_FILE_DELETE_FAILED, CSimpleStringA::Format("RemoveFileA [%s] failed, GLE = %u.", lpszPath, errno));
+            CSimpleStringA errMsg = CSimpleStringA::Format("RemoveFileA [%s] failed, GLE = %u.", lpszPath, GetLastError());
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A08").setAPI("DeleteFiles")(errMsg.GetData());
+            LogWarn(Severity_Middle, Error_Debug, LOG_WARN_FILE_DELETE_FAILED, errMsg.GetData());
         }
         if (searchFilePath) delete[] searchFilePath;
         if (tempFilePath) delete[] tempFilePath;
@@ -927,9 +928,6 @@ int ResourceWatcherFSM::ProcessFileDelete(LPCTSTR lpszPath, int& nDelSucCnt, int
                 fileCnt += ProcessFileDelete((LPCTSTR)tempFilePath, tDelSucCnt, tDelFailedCnt, true); //子目录要删除
                 if (tDelFailedCnt != 0)
                 {
-                    DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A08").setAPI("DeleteFiles")
-                        ("rm(%s) failed, GLE = %u.", (LPCTSTR)tempFilePath, GetLastError());
-                    LogWarn(Severity_Middle, Error_Debug, LOG_WARN_FILE_DELETE_FAILED, CSimpleStringA::Format("RemoveFileA [%s] failed, GLE = %u.", (LPCTSTR)tempFilePath, errno));
                     nDelFailedCnt += tDelFailedCnt;
                     return fileCnt;
                 }

+ 1 - 5
Module/mod_ResourceWatcher/ResourceWatcher_UserCode.h

@@ -44,12 +44,8 @@
 #define LOG_RESOURCEWATCHE_UNINSTALL_THIRDPARTYPROGRAM 0x50A00027
 #define LOG_RESOURCEWATCHE_INSTALL_SOGOU_FAILED 0x50A00028
 #define LOG_RESOURCEWATCHE_SOGOU_FINDPKG_FAILED 0x50A00029
+#define LOG_RESOURCEWATCHE_INSTALL_SOGOU_SUC 0x50A00030
 
-#define LOG_WARN_GET_DNS_CUST		0x50A00030
-#define LOG_WARN_SET_DNS_CUST		0x50A00031
-#define LOG_ERR_SET_DNS_FAILED		0x50A00032
-#define LOG_WARN_DELETE_DNS_CUST	0x50A00033
-#define LOG_ERR_DELETE_DNS_FAILED	0x50A00034
 #define LOG_INFO_MONITOR_SETTINGS	0x50A00035
 #define LOG_INFO_MONITOR_SETTINGS_GET	0x50A00036
 #define LOG_INFO_DEVICE_SMBIOS_GET	0x50A00037

+ 1 - 1
Module/mod_ResourceWatcher/mod_ResourceWatcher.cpp

@@ -2094,7 +2094,7 @@ void ResourceWatcherEntity::InstallSogou(SpReqAnsContext<ResourceWatcherService_
     CSimpleStringA tmpMsg(true);
     CSimpleStringA tmpPath(true);
 
-    DWORD warnCode = LOG_RESOURCEWATCHE_INSTALL_THIRDPARTY; //RTA映射
+    DWORD warnCode = LOG_RESOURCEWATCHE_INSTALL_SOGOU_SUC; //RTA映射
 
     CSimpleStringA newSogouPath(true);
     CSimpleStringA strDownloadDirPath(true);

+ 1 - 1
addin/cfg/simulator/cmbsz.ini

@@ -1,2 +1,2 @@
 [server]
-url=http://emulator.paasuat.cmbchina.cn/emulator/avs/retrieveEmulatorData
+url=http://emulator.paasst.cmbchina.cn/emulator/avs/retrieveEmulatorData