Преглед на файлове

Merge branch 'feture_hsps_gpio' of http://gitee.itc.cmbchina.cn/QD_RemoteBankArea/LR04.02_RVCTerminalPlus into feture_hsps_gpio

chenliangyu преди 1 година
родител
ревизия
3161838ca7

+ 4 - 0
DevAdapter/include/CardAssist.cpp

@@ -388,6 +388,7 @@ bool CCardProcess::DetectIfICCard(CardReadType eType, DeviceBaseClass *pCardX, i
 
 		if(eErr != Error_Succeed){
 			QueryLastErr(eType, errMsg);
+			setCardAssistLastErr(eErr,errMsg,"DevAdapter::ContactIC");
 			errMsg = CSimpleStringA::Format("DetectIfICCard::ContactIC failed(%d):%s", eErr, errMsg.GetData());
 			if (eType == CARD_MACHINE_ISSUER) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ContactIC").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23C7")("DetectIfICCard::ContactIC err=%s", SpStrError(eErr));
@@ -409,6 +410,7 @@ bool CCardProcess::DetectIfICCard(CardReadType eType, DeviceBaseClass *pCardX, i
 		if (eErr != Error_Succeed)
 		{
 			QueryLastErr(eType, errMsg);
+			setCardAssistLastErr(eErr,errMsg,"DevAdapter::ActiveICCard");
 			errMsg = CSimpleStringA::Format("DetectIfICCard::ActiveICCard failed(%d):%s", eErr, errMsg.GetData());
 			if (eType == CARD_MACHINE_ISSUER) {
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CT")("DetectIfICCard::ActiveICCard err=%s", SpStrError(eErr));
@@ -450,6 +452,7 @@ bool CCardProcess::DetectIfICCard(CardReadType eType, DeviceBaseClass *pCardX, i
 		{
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2J01")("DetectIfICCard::ActiveContactlessICCard err=%s", SpStrError(eErr));
 			QueryLastErr(eType, errMsg);
+			setCardAssistLastErr(eErr,errMsg, "DevAdapter::ActiveContactlessICCard");
 			errMsg = CSimpleStringA::Format("DetectIfICCard::ActiveContactlessICCard failed(%d):%s", eErr, errMsg.GetData());
 			LogWarn(Severity_Middle, Error_Unexpect, ContactlessCard_UserErrorCode_ActiveContactlessICCard_Failed, errMsg.GetData());
 			return false;
@@ -471,6 +474,7 @@ bool CCardProcess::DetectIfICCard(CardReadType eType, DeviceBaseClass *pCardX, i
 		if (eErr != Error_Succeed)
 		{
 			QueryLastErr(eType, errMsg);
+			setCardAssistLastErr(eErr,errMsg,"DevAdapter::ActiveContactlessICCard");
 			errMsg = CSimpleStringA::Format("(CardIssuer)DetectIfICCard::ActiveContactlessICCard failed(%d):%s", eErr, errMsg.GetData());
 			if (eType == CARD_MACHINE_ISSUER_RF) {
 				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, errMsg.GetData());

+ 18 - 1
DevAdapter/include/CardAssist.h

@@ -59,7 +59,10 @@ class CCardProcess
 {
 public:
 	CCardProcess():m_pARPC(NULL),m_pARC(NULL),m_pScript(NULL),m_pTACReject(NULL),m_pIACOnline(NULL),
-		m_pTACOnline(NULL),m_pIACDefault(NULL),m_pTACDefault(NULL){}
+		m_pTACOnline(NULL),m_pIACDefault(NULL),m_pTACDefault(NULL),m_lastErrMsg(""), m_lastApiName("")
+	{
+		m_lastErrCode = Error_Succeed;
+	}
 	~CCardProcess();
 	void DataInit();
 	bool DetectIfICCard(CardReadType eType, DeviceBaseClass* pCardX, int& cardType, bool bIssue = false);//cardType:0x41'A',type A; 0x42'B',type B; 0x4d'M',type M
@@ -102,6 +105,20 @@ public:
 		}
 		errMsg = devErrInfo.szErrMsg;
 	}
+	void setCardAssistLastErr(ErrorCodeEnum eErr,CSimpleStringA errMsg,CSimpleStringA lastApiName)
+	{
+		m_lastErrCode = eErr;
+		m_lastErrMsg = errMsg;
+		m_lastApiName = lastApiName;
+	}
+	void getCardAssistLastErr(ErrorCodeEnum &eErrCode, CSimpleStringA &errMsg,CSimpleStringA &lastApiName) {
+		eErrCode = m_lastErrCode;
+		errMsg = m_lastErrMsg;
+		lastApiName = m_lastApiName;
+	}
+	CSimpleStringA m_lastErrMsg;
+	ErrorCodeEnum m_lastErrCode;
+	CSimpleStringA m_lastApiName;
 private:
 	CardIssuerClass *pCardI;
 	RFICClass *pCardR;

+ 13 - 6
DevAdapter/simulator/idcer.1.1/idcer_impl.cpp

@@ -206,7 +206,7 @@ ErrorCodeEnum IDCerClassImpl::GetDevCategory(DevCategoryInfo& devCategory)
 
     ErrorCodeEnum err = Error_Succeed;
     err = Error_Unexpect;
-    lastErrMsg = "测试模式,获取适配器信息失败";
+    lastErrMsg = "{\"Description\": \"测试模式,获取适配器信息失败\"}";
     return err;
 
     strcpy(devCategory.szModel, "STYLE=IG#FUNCTION=ITF#CODE=UCS2");
@@ -231,7 +231,7 @@ ErrorCodeEnum IDCerClassImpl::IDCerAuthenticate()
     if (!flag)
     {
         err = Error_Dev_IDCardNotFound;
-        lastErrMsg = "未识别到身份证件";
+        lastErrMsg = "{\"Description\": \"未识别到身份证件\"}";
     }
 
     return err;
@@ -252,7 +252,7 @@ ErrorCodeEnum IDCerClassImpl::ScanIDAndSaveImage()
     if (!flag)
     {
         err = Error_Unexpect;
-        lastErrMsg = "获取扫描图片失败";
+        lastErrMsg = "{\"Description\": \"获取扫描图片失败\"}";
     }
     return err;
 }
@@ -265,7 +265,7 @@ ErrorCodeEnum IDCerClassImpl::QueryCardPos(int& pos)
     if (!flag)
     {
         err = Error_Unexpect;
-        lastErrMsg = "查询卡片位置失败";
+        lastErrMsg = "{\"Description\": \"查询卡片位置失败\"}";
     }
     return err;
 }
@@ -283,7 +283,7 @@ ErrorCodeEnum IDCerClassImpl::IDCerRFControl(bool bControl)
         if (!flag)
         {
             err = Error_Unexpect;
-            lastErrMsg = "退卡失败";
+            lastErrMsg = "{\"Description\": \"退卡失败\"}";
         }
     }
     return err;
@@ -348,7 +348,7 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx2(IDCerInfoEx2& idCerInfoEx2)
     bool testRe = ex2HttpFunction(idCerInfoEx2);
     if (!testRe)
     {
-        lastErrMsg = "获取身份证芯片数据失败";
+        lastErrMsg = "{\"Description\": \"获取身份证芯片数据失败\"}";
         err = Error_Unexpect;
         return err;
     }
@@ -370,6 +370,13 @@ ErrorCodeEnum IDCerClassImpl::GetLastErr(DevErrorInfo& devErrInfo)
     static int times = 0;
     char szMessage[128];
     //sprintf(szMessage, "这是第 %d 条错误信息", ++times);
+
+    bool flag = authHttpFunction("GetLastErr");
+    if (!flag)
+    {
+        lastErrMsg = "";
+    }
+
     strcpy(devErrInfo.szErrMsg, lastErrMsg.c_str());
     devErrInfo.dwErrMsgLen = lastErrMsg.length();
     return Error_Succeed;

+ 1 - 1
Module/include/DevFSMCommBase.hpp

@@ -835,7 +835,7 @@ public:
 		
 		CSimpleStringA tmpRTA(true), tmpDesc(true);
 		if (this->GetEntityBase()->GetFunction()->GetVTMErrMsg(dwCode, tmpDesc, tmpRTA) != Error_Succeed)
-			tmpRTA = CSimpleStringA::Format("%d", dwCode);//if map failed, use dwCode instead
+			tmpRTA = CSimpleStringA::Format("0x%X", dwCode);//if map failed, use dwCode instead
 
 
 		if (bInBusiness) {

+ 34 - 15
Module/mod_CardIssuerStand/CardIssuerFSM.cpp

@@ -3099,19 +3099,28 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerStandService_Pre
 			xCardName = m_PsbNameEx[m_currentHopper - 1];
 		if (retDetectAndRead == -1)
 		{
+			ErrorCodeEnum lastErrCode = Error_Succeed;
+			CSimpleStringA lastErrMsg = "";
+			CSimpleStringA lastApiName = "";
+			m_pCardProcess->getCardAssistLastErr(lastErrCode, lastErrMsg, lastApiName);
+			const CSimpleStringA alarmMsg = CSimpleStringA::Format("{\"Function\":\"%s\", \"DevApi\":\"%s\", \"ReturnCode\":\"%s\", \"Msg\":\"%s\", \"Context\":\"%s\"}"
+				, __FUNCTION__, lastApiName.GetData(), SpStrError(lastErrCode), lastErrMsg.GetData(), "");
+			CSimpleStringA csErrMsgWithReturnCode = CSimpleStringA::Format("{\"ReturnCode\":\"%s\", \"ErrMsg\":\"%s\", \"Context\":\"%s\"}", SpStrError(lastErrCode), lastErrMsg.GetData(), "");
+			
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("检测卡片类型时上电失败");
 			if (!IfUseRf())
 			{
 				if (IsInBusiness())
 				{
 					if (m_issueStatus)
 					{
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")("发卡时,检测卡片类型时上电失败");
-						LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed, "(IssueCard)PreOnline::DetectAndReadICData:DetectIfICCard");
+						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")(csErrMsgWithReturnCode.GetData());
+						LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed, alarmMsg.GetData());
 						ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
 					}
 					else
 					{
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")("检测卡片类型时上电失败");
+						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")(csErrMsgWithReturnCode.GetData());
 						LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed, "PreOnline::DetectAndReadICData:DetectIfICCard");
 						ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed);
 					}
@@ -3120,13 +3129,13 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerStandService_Pre
 				{
 					if (m_issueStatus)
 					{
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")("发卡时,检测卡片类型时上电失败");
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")(csErrMsgWithReturnCode.GetData());
 						LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed, "(IssueCard)PreOnline::DetectAndReadICData:DetectIfICCard");
 						ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
 					}
 					else
 					{
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")("检测卡片类型时上电失败");
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")(csErrMsgWithReturnCode.GetData());
 						LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed, "PreOnline::DetectAndReadICData:DetectIfICCard");
 						ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed);
 					}
@@ -3136,9 +3145,9 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerStandService_Pre
 			else //非终态,还有非接兜底
 			{
 				if (m_issueStatus)
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")("发卡时,检测卡片类型时上电失败");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")(csErrMsgWithReturnCode.GetData());
 				else
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")("检测卡片类型时上电失败");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")(csErrMsgWithReturnCode.GetData());
 			}
 		}
 		else if (retDetectAndRead == -2){
@@ -3469,17 +3478,27 @@ int CCardIssuerFSM::PreOnline_RF(SpReqAnsContext<CardIssuerStandService_PreOnlin
 		if (m_issueStatus && m_currentHopper - 1 >= 0)
 			xCardName = m_PsbNameEx[m_currentHopper - 1];
 		if (retDetectAndRead == -1) {
+			ErrorCodeEnum lastErrCode = Error_Succeed;
+			CSimpleStringA lastErrMsg = "";
+			CSimpleStringA lastApiName = "";
+			m_pCardProcess->getCardAssistLastErr(lastErrCode, lastErrMsg, lastApiName);
+			const CSimpleStringA alarmMsg = CSimpleStringA::Format("{\"Function\":\"%s\", \"DevApi\":\"%s\", \"ReturnCode\":\"%s\", \"Msg\":\"%s\", \"Context\":\"%s\"}"
+				, __FUNCTION__, lastApiName.GetData(), SpStrError(lastErrCode), lastErrMsg.GetData(), "");
+			CSimpleStringA csErrMsgWithReturnCode = CSimpleStringA::Format("{\"ReturnCode\":\"%s\", \"ErrMsg\":\"%s\", \"Context\":\"%s\"}", SpStrError(lastErrCode), lastErrMsg.GetData(), "");
+
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("检测卡片类型时上电失败(非接)");
+
 			if (m_issueStatus)
 			{
 				if (IsInBusiness())
 				{
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")("发卡时,检测卡片类型时上电失败(非接)");
-					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, "(IssueCard)PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
+					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, alarmMsg.GetData());
 				}
 				else
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")("发卡时,检测卡片类型时上电失败(非接)");
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, "(IssueCard)PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
+					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, alarmMsg.GetData());
 				}
 				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed);
 			}
@@ -3487,13 +3506,13 @@ int CCardIssuerFSM::PreOnline_RF(SpReqAnsContext<CardIssuerStandService_PreOnlin
 			{
 				if (IsInBusiness())
 				{
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")("检测卡片类型时上电失败");
-					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, "PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
+					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, alarmMsg.GetData());
 				}
 				else
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")("检测卡片类型时上电失败");
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, "PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
+					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, alarmMsg.GetData());
 				}
 				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed);
 			}

+ 9 - 120
Module/mod_IDCertificate/IDCertFSM.cpp

@@ -155,19 +155,11 @@ struct ImgChekTask : ITaskSp
 void CIDCertFSM::s0_on_entry()
 {
 	LOG_FUNCTION();
-#ifdef RVC_OS_LINUX
-	m_devState = DEVICE_STATUS_NORMAL;
-	if (m_FirstStart) {
-		m_FirstStart = FALSE;
-		ToLogWarnInfoAboutTerm();
-	}
-#else
 	if (!m_logBefore) {
 		ToLogWarnInfoAboutTermCustom();
 		m_logBefore = true;
 	}
 	m_devState = DEVICE_STATUS_NORMAL;
-#endif
 }
 void CIDCertFSM::s0_on_exit()
 {
@@ -378,10 +370,6 @@ ErrorCodeEnum CIDCertFSM::OnInit()
 	ZeroMemory(m_devCatInfo.szModel, MAX_DEV_MODEL_LEN);
 	ZeroMemory(m_devCatInfo.szType, MAX_DEV_TYPE_LEN);
 	ZeroMemory(m_devCatInfo.szVendor, MAX_DEV_VENDOR_LEN);
-#ifdef RVC_OS_LINUX
-	m_devCatInfo.eState = DEVICE_STATUS_NOT_READY;
-	m_devCatInfo.version = { 0, 0, 0, 0 };
-#endif // RVC_OS_LINUX
 
 #ifdef RVC_OS_WIN //windows使用宽字符
 	nationalCode[1] = L"汉";
@@ -529,105 +517,6 @@ ErrorCodeEnum CIDCertFSM::OnExit()
 	return Error_Succeed;
 }
 
-ErrorCodeEnum CIDCertFSM::CheckDate(const char* date)
-{
-	string strDate = date;
-	if(strDate.find("长期") != string::npos)
-	{
-		return Error_Succeed;
-	}
-	else
-	{
-		regex pattern("^(([0-9]{4})(\.|-|年)(0[1-9]|1[0-2])(\.|-|月)(0[1-9]|[12][0-9]|3[01])(日)*)$");
-		smatch sm;
-		if(regex_match(strDate, sm, pattern))
-		{
-			int month = atoi(sm[4].str().c_str());
-			int day = atoi(sm[6].str().c_str());
-			if(month > 0 && month <= 12 && day > 0 && day <= 31)
-			{
-				return Error_Succeed;
-			}
-		}
-	}
-	return Error_Unexpect;
-}
-
-ErrorCodeEnum CIDCertFSM::CheckDate(const char* startDate, const char* endDate)
-{
-	string strStartDate = startDate, strEndDate = endDate;
-	regex pattern("^(([0-9]{4})(\.|-))");
-	smatch smStart, smEnd;
-	if (regex_search(strStartDate, smStart, pattern) && regex_search(strEndDate, smEnd, pattern))
-	{
-		strStartDate = smStart.suffix().str();
-		strEndDate = smEnd.suffix().str();
-		if(strStartDate == strEndDate)
-			return Error_Succeed;
-	}
-	else if(strEndDate == "长期")
-		return Error_Succeed;
-
-	return Error_Unexpect;
-}
-
-void CIDCertFSM::LogDate(IDCerInfo idInfo)
-{
-	ErrorCodeEnum eErrCode = CheckDate(idInfo.startDate.data);
-	CSimpleStringA errMsg;
-	if(Error_Succeed != eErrCode)
-	{
-		errMsg = "Invalid startDate";
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidStartDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-
-	eErrCode = CheckDate(idInfo.endDate.data);
-	if(Error_Succeed != eErrCode)
-	{
-		errMsg = "Invalid endDate";
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidEndDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-
-	eErrCode = CheckDate(idInfo.birthday.data);
-	if(Error_Succeed != eErrCode)
-	{
-		errMsg = "Invalid birthDate";
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidBirthDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-}
-
-//TODO: 上下两个函数重复程度太高,需要合并  [Gifur@2024925]
-void CIDCertFSM::LogDateEx(IDCerInfoEx idInfo)
-{
-	ErrorCodeEnum eErrCode = CheckDate(idInfo.startDate.data);
-	CSimpleStringA errMsg;
-	if(Error_Succeed != eErrCode)
-	{
-		errMsg = "Invalid startDate";
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidStartDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-
-	eErrCode = CheckDate(idInfo.endDate.data);
-	if(Error_Succeed != eErrCode)
-	{
-		errMsg = "Invalid endDate";
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidEndDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-
-	eErrCode = CheckDate(idInfo.birthday.data);
-	if(Error_Succeed != eErrCode)
-	{
-		errMsg = "Invalid birthDate";
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidBirthDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-}
-
 int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
@@ -1490,19 +1379,19 @@ int CIDCertFSM::Initial()
 	return 0;
 }
 
-#ifdef RVC_OS_WIN
 void CIDCertFSM::ToLogWarnInfoAboutTermCustom()
 {
 	LOG_FUNCTION();
 	ToLogWarnInfoAboutTerm();
 
-	if(!m_csMachineType.Compare("RVC.Stand2S", true) && !m_adapterInfo.strVendor.Compare("kxd", true))
+#ifdef RVC_OS_WIN
+	if (!m_csMachineType.Compare("RVC.Stand2S", true) && !m_adapterInfo.strVendor.Compare("kxd", true))
 	{
 		//先读取系统变量是否有该值?
 		CSimpleStringA deviceInfo(true);
 		GetEntityBase()->GetFunction()->GetSysVar("kxdInfo", deviceInfo);
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("deviceInfo = %s", deviceInfo.GetData());
-		if(!deviceInfo.Compare("KXD", true))
+		if (!deviceInfo.Compare("KXD", true))
 		{
 			//读取运行时信息,如果有值,不再写,如果没有值,读取告警的信息
 			//这中间会存在这里还在写,但其他模块已经要去读取该运行时的信息了,可能有先后顺序?
@@ -1512,18 +1401,18 @@ void CIDCertFSM::ToLogWarnInfoAboutTermCustom()
 			CSmartPointer<IConfigInfo> spConfigRun;
 			GetEntityBase()->GetFunction()->OpenConfig(Config_Run, spConfigRun);
 			spConfigRun->ReadConfigValue("Run", "WarnMsg", strWarnMsg);
-			if(!strWarnMsg.IsNullOrEmpty())
+			if (!strWarnMsg.IsNullOrEmpty())
 			{
 				Json::Value root;
 				Json::Reader reader;
-				if(reader.parse((const char*)strWarnMsg, root))
+				if (reader.parse((const char*)strWarnMsg, root))
 				{
 					szTypeInfo = root.isMember("szType") ? CSimpleStringA(root["szType"].asCString()) : "";
-					if(!szTypeInfo.IsNullOrEmpty())
+					if (!szTypeInfo.IsNullOrEmpty())
 					{
-						if(!szTypeInfo.Compare("KXD.IDCertificate.SNBC-ID8101", true) || !szTypeInfo.Compare("KXD.IDCertificate.SNBC-ID81", true))
+						if (!szTypeInfo.Compare("KXD.IDCertificate.SNBC-ID8101", true) || !szTypeInfo.Compare("KXD.IDCertificate.SNBC-ID81", true))
 						{
-							deviceType =  "KS218";
+							deviceType = "KS218";
 						}
 						else
 						{
@@ -1537,8 +1426,8 @@ void CIDCertFSM::ToLogWarnInfoAboutTermCustom()
 			}
 		}
 	}
+#endif // RVC_OS_WIN
 }
-#endif
 
 BOOL CIDCertFSM::UCS2_to_UTF8(UINT16* ucs2_code, UINT8* utf8_code)
 {

+ 4 - 30
Module/mod_IDCertificate/IDCertFSM.h

@@ -182,20 +182,13 @@ public:
 		FSM_RULE_ENTRY(s5, s2, USER_EVT_INIT_FINISHED, 2)
 	END_FSM_RULE()
 
-#ifdef RVC_OS_LINUX
-		CIDCertFSM() :m_devInit(false), m_bCancelRead(false), m_bReading(false), m_bWaitReadMore(false),
-		m_bExit(false), m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect),m_csMachineType(""), m_terminalNo(""), m_devSN("") {
-		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x201);
-		m_FirstStart = TRUE;
-		ZeroMemory(&m_adapterInfo, sizeof(m_adapterInfo));
-	};
-#else
-		CIDCertFSM():m_bCancelRead(false),m_bReading(false),m_bWaitReadMore(false),
-	m_bExit(false),m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect), m_csMachineType(""), m_terminalNo(""),invalidBreak(false), m_logBefore(false), transImgMsg("")
+		CIDCertFSM() :m_bCancelRead(false), m_bReading(false), m_bWaitReadMore(false),
+		m_bExit(false), m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect), m_csMachineType(""), m_terminalNo(""), invalidBreak(false), m_logBefore(false), transImgMsg("")
 	{
+		ZeroMemory(&m_adapterInfo, sizeof(m_adapterInfo));
 		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x201);
 	};
-#endif // RVC_OS_LINUX
+
 	virtual ~CIDCertFSM() {};
 
 	virtual ErrorCodeEnum OnInit();
@@ -236,17 +229,9 @@ public:
 		pTransactionContext->SendAnswer(Error_Succeed);
 	}
 
-#ifdef RVC_OS_WIN
 	bool GetDevInitFlag() { return m_bOpened; }
 	void ResetDevInitFlag() { m_bOpened = false; }
-#else
-	bool GetDevInitFlag() { return m_devInit; }
-#endif
 
-	void SaveCtxAAEx(int methodID, SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx)//UTF8
-	{
-		m_readAndScanUTF8Ctx = ctx;
-	}
 	int Initial();
 	void SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext);
 
@@ -257,18 +242,10 @@ private:
 	ErrorCodeEnum GetPngBlobEx(CBlob &data, CSimpleStringA fileNamePrefix,bool bClear=false);
 	//type:1,delete img about zp; type:2,delete img about scan ID;type:3,delete both zp and scan ID
 	void DeleteZP(int type);
-	ErrorCodeEnum CheckDate(const char* date);
-	ErrorCodeEnum CheckDate(const char* startDate, const char* endDate);
-	void LogDate(IDCerInfo idInfo);
-	void LogDateEx(IDCerInfoEx idInfo);
 
 	//Delete bmp file in dep directory, you should just convey fileName only without paths -Joseph
 	ErrorCodeEnum DeleteFileIfExisted(LPCTSTR fileName);
-#ifdef RVC_OS_LINUX
-	bool GetAttachedTerminal(CSimpleStringA& csTerm);
-#else
 	void ToLogWarnInfoAboutTermCustom();
-#endif // RVC_OS_LINUX
 	BOOL UCS2_to_UTF8(UINT16* ucs2_code, UINT8* utf8_code);
 	BOOL GetSexUTF8String(UINT16* in, UINT8* out);
 	BOOL GetNationalUTF8String(UINT16* in, UINT8* out);
@@ -280,9 +257,6 @@ private:
 public:
 		std::string checkImgURL;
 private:
-#ifdef RVC_OS_LINUX
-	bool m_devInit;
-#endif
 	bool m_bCancelRead, m_bReading, m_bWaitReadMore, m_bExit;
 	ErrorCodeEnum m_testResult;
 	ErrorCodeEnum m_getDevCategory;

+ 5 - 5
Module/mod_gpio/mod_gpio.cpp

@@ -386,7 +386,7 @@ void CGpioEntity::SetErrorAndLog(ErrorCodeEnum errCode
 	
 	CSimpleStringA tmpRTA(true), tmpDesc(true);
 	if (GetFunction()->GetVTMErrMsg(userCode, tmpDesc, tmpRTA) != Error_Succeed)
-		tmpRTA = CSimpleStringA::Format("%d", userCode);//if map failed, use dwCode instead
+		tmpRTA = CSimpleStringA::Format("0x%X", userCode);//if map failed, use dwCode instead
 
 	if (bInBusiness) {
 		LogError(Severity_High, errCode, userCode, alarmMsg.GetData());
@@ -708,7 +708,7 @@ void CGpioEntity::WritePin(DWORD dwPinSeq, bool bHighLevel)
 	result = m_hDevHelper->WritePort(idx, m_btOutputStatus[idx]);
 	const auto iEnd = SP::Module::Comm::RVCGetTickCount();
 	if (result != Error_Succeed) {
-		SetErrorAndLog(result, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, IsInBusiness(), iEnd - iBegin, "", CombineJsonContext(CSimpleStringA::Format("write port[%d] with %d", idx, m_btOutputStatus[idx])));
+		SetErrorAndLog(result, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, false, iEnd - iBegin, "", CombineJsonContext(CSimpleStringA::Format("write port[%d] with %d", idx, m_btOutputStatus[idx])));
 	}
 	else {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::WritePort").setAPI(__FUNCTION__).setCostTime(iEnd - iBegin)("write port[%d] with %d succ", idx, m_btOutputStatus[idx]);
@@ -789,7 +789,7 @@ void CGpioEntity::SetEx(GpioService_Set_Info req)
 		const ErrorCodeEnum ec = m_hDevHelper->SetStatus(dwReq, dwMode);
         const auto iEnd = SP::Module::Comm::RVCGetTickCount();
 		if (ec != Error_Succeed) {
-			SetErrorAndLog(ec, GPIO_UserErrorCode_SetStatus_Failed, "DevAdapter::SetStatus", __FUNCTION__, IsInBusiness(), iEnd - iBegin, "", CombineJsonContext(CSimpleStringA::Format("SetStatus with 0x%X,0x%X", dwReq, dwMode)));
+			SetErrorAndLog(ec, GPIO_UserErrorCode_SetStatus_Failed, "DevAdapter::SetStatus", __FUNCTION__, false, iEnd - iBegin, "", CombineJsonContext(CSimpleStringA::Format("SetStatus with 0x%X,0x%X", dwReq, dwMode)));
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetStatus").setAPI(__FUNCTION__).setCostTime(iEnd - iBegin)("SetStatus with 0x%X,0x%X", dwReq, dwMode);
@@ -1035,7 +1035,7 @@ void CGpioEntity::OnEventDetect(void* pData)
 		err = m_hDevHelper->ReadPort(INPUT_PORT_2, btInput);
 		const auto iEnd = SP::Module::Comm::RVCGetTickCount();
 		if (err != Error_Succeed) {
-			SetErrorAndLog(err, GPIO_UserErrorCode_ReadPort_Failed, "DevAdapter::ReadPort", __FUNCTION__, IsInBusiness(), iEnd - iBegin, "",
+			SetErrorAndLog(err, GPIO_UserErrorCode_ReadPort_Failed, "DevAdapter::ReadPort", __FUNCTION__, false, iEnd - iBegin, "",
 				CombineJsonContext(CSimpleStringA::Format("read port[%d] with %d", INPUT_PORT_2, btInput)));
 		}
 		else if(btInput != m_btLastRevcInput){
@@ -1052,7 +1052,7 @@ void CGpioEntity::OnEventDetect(void* pData)
 		const auto iEnd = SP::Module::Comm::RVCGetTickCount();
 		btInput = dwMode;
 		if (err != Error_Succeed) {
-			SetErrorAndLog(err, GPIO_UserErrorCode_DetectStatus_Failed, "DevAdapter::DetectStatus", __FUNCTION__, IsInBusiness(), iEnd - iBegin, "",
+			SetErrorAndLog(err, GPIO_UserErrorCode_DetectStatus_Failed, "DevAdapter::DetectStatus", __FUNCTION__, false, iEnd - iBegin, "",
 				CombineJsonContext(CSimpleStringA::Format("detect status[%d] with %d", dwReq, dwMode)));
 		}
 		else if (btInput != m_btLastRevcInput) {