Quellcode durchsuchen

!10797 st2
Merge pull request !10797 from 80174847/ST2

杨诗友80174847 vor 3 Monaten
Ursprung
Commit
1ceec97aaa
47 geänderte Dateien mit 976 neuen und 2402 gelöschten Zeilen
  1. 87 89
      DevAdapter/include/CardAssist.cpp
  2. 1 1
      DevAdapter/include/CardAssist.h
  3. 2 1
      DevAdapter/include/DevErrorCode.h
  4. 0 38
      DevAdapter/simulator/cardissuer.1.1/CMakeLists.txt
  5. 0 123
      DevAdapter/simulator/cardissuer.1.1/cardissuer_httpans.h
  6. 0 578
      DevAdapter/simulator/cardissuer.1.1/cardissuer_impl.cpp
  7. 0 214
      DevAdapter/simulator/cardissuer.1.1/cardissuer_impl.h
  8. 2 0
      DevAdapter/simulator/include/DeviceSimulator.h
  9. 2 1
      Module/ReadMe
  10. 3 2
      Module/include/DevFSMCommBase.hpp
  11. 4 4
      Module/mod_CardIssuerStand/CMakeLists.txt
  12. 159 167
      Module/mod_CardIssuerStand/CardIssuerStandFSM.cpp
  13. 26 22
      Module/mod_CardIssuerStand/CardIssuerStandFSM.h
  14. 6 2
      Module/mod_CardIssuerStand/CardIssuerStand_UserErrorCode.h
  15. 6 9
      Module/mod_CardIssuerStand/mod_cardissuerStand.cpp
  16. 11 11
      Module/mod_CardIssuerStand/mod_cardissuerStand.h
  17. 90 72
      Module/mod_CardReadAdapter/CardReadAdapterFSM.cpp
  18. 7 7
      Module/mod_CardReadAdapter/CardReadAdapterFSM.h
  19. 2 2
      Module/mod_CardReadAdapter/CardReadAdapter_UserErrorCode.h
  20. 2 3
      Module/mod_CardReadAdapter/mod_CardReadAdapter.cpp
  21. 1 1
      Module/mod_CardReadAdapter/mod_CardReadAdapter.h
  22. 5 1
      Module/mod_ContactlessCard/ContactlessCard_UserErrorCode.h
  23. 121 177
      Module/mod_ContactlessCard/ContactlessFSM.cpp
  24. 15 7
      Module/mod_ContactlessCard/ContactlessFSM.h
  25. 2 2
      Module/mod_ContactlessCard/mod_ContactlessCard.cpp
  26. 3 3
      Module/mod_ContactlessCard/mod_ContactlessCard.h
  27. 0 12
      Module/mod_CustMngrAuth/mod_CustMngrAuth.cpp
  28. 24 25
      Module/mod_FingerPrint/FingerPrintFSM.cpp
  29. 12 12
      Module/mod_FingerPrint/FingerPrintFSM.h
  30. 1 0
      Module/mod_FingerPrint/FingerPrint_UserErrorCode.h
  31. 3 3
      Module/mod_FingerPrint/mod_FingerPrint.h
  32. 100 669
      Module/mod_IDCertificate/IDCertFSM.cpp
  33. 76 55
      Module/mod_IDCertificate/IDCertFSM.h
  34. 37 11
      Module/mod_IDCertificate/IDCertificate.xml
  35. 1 0
      Module/mod_IDCertificate/IDCertificate_LogCode.h
  36. 4 1
      Module/mod_IDCertificate/IDCertificate_UserErrorCode.h
  37. 1 3
      Module/mod_IDCertificate/IDCertificate_def_g.h
  38. 37 20
      Module/mod_UpgradeMgr/UpgradeTaskFSM.cpp
  39. 3 0
      Module/mod_UpgradeMgr/UpgradeTaskFSM.h
  40. 3 3
      Module/mod_accessauth/AccessAuthFSM.cpp
  41. 7 7
      Module/mod_alarm/AlarmFSM.cpp
  42. 56 3
      Module/mod_cardissuerstore/CardIssuerFSM.cpp
  43. 37 24
      Module/mod_evtconverter/mod_evtconverter.cpp
  44. 2 2
      Module/mod_gpio/GpioFSM.cpp
  45. 12 12
      Module/mod_heartbeat/HeartBeatFSM.cpp
  46. 1 1
      Module/mod_mediacontroller/mod_mediacontroller.cpp
  47. 2 2
      Module/mod_upload/UploadFSM.cpp

+ 87 - 89
DevAdapter/include/CardAssist.cpp

@@ -390,14 +390,14 @@ bool CCardProcess::DetectIfICCard(CardReadType eType, DeviceBaseClass *pCardX, i
 			QueryLastErr(eType, errMsg);
 			setCardAssistLastErr(eErr,errMsg,"DevAdapter::ContactIC");
 			errMsg = CSimpleStringA::Format("DetectIfICCard::ContactIC failed(%s):%s", SpStrError(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));
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ContactIC_Failed, errMsg.GetData());
-			}
-			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ContactIC").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WC7")("DetectIfICCard::ContactIC err=%s", SpStrError(eErr));
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuerStore_UserErrorCode_ContactIC_Failed, 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));
+			//	LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ContactIC_Failed, errMsg.GetData());
+			//}
+			//else {
+			//	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ContactIC").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WC7")("DetectIfICCard::ContactIC err=%s", SpStrError(eErr));
+			//	LogWarn(Severity_Middle, Error_Unexpect, CardIssuerStore_UserErrorCode_ContactIC_Failed, errMsg.GetData());
+			//}
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ContactIC").setCostTime(l_endTime - l_beginTime)("DetectIfICCard::ContactIC");
@@ -412,26 +412,24 @@ bool CCardProcess::DetectIfICCard(CardReadType eType, DeviceBaseClass *pCardX, i
 			QueryLastErr(eType, errMsg);
 			setCardAssistLastErr(eErr,errMsg,"DevAdapter::ActiveICCard");
 			errMsg = CSimpleStringA::Format("DetectIfICCard::ActiveICCard failed(%s):%s", SpStrError(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));
-
-				if (bIssue) {
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed, errMsg.GetData());
-				}
-				else {
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed, errMsg.GetData());
-				}
-			}
-			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WCT")("DetectIfICCard::ActiveICCard err=%s", SpStrError(eErr));
-
-				if (bIssue) {
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuerStore_UserErrorCode_IssueCard_ActiveICCard_Failed, errMsg.GetData());
-				}
-				else {
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuerStore_UserErrorCode_ActiveICCard_Failed, 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));
+			//	if (bIssue) {
+			//		LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed, errMsg.GetData());
+			//	}
+			//	else {
+			//		LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed, errMsg.GetData());
+			//	}
+			//}
+			//else {
+			//	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WCT")("DetectIfICCard::ActiveICCard err=%s", SpStrError(eErr));
+			//	if (bIssue) {
+			//		LogWarn(Severity_Middle, Error_Unexpect, CardIssuerStore_UserErrorCode_IssueCard_ActiveICCard_Failed, errMsg.GetData());
+			//	}
+			//	else {
+			//		LogWarn(Severity_Middle, Error_Unexpect, CardIssuerStore_UserErrorCode_ActiveICCard_Failed, errMsg.GetData());
+			//	}
+			//}
 			pCardI->DeactivateICCard();
 			pCardI->ReleaseIC();
 			return false;
@@ -453,8 +451,8 @@ bool CCardProcess::DetectIfICCard(CardReadType eType, DeviceBaseClass *pCardX, i
 			//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DetectIfICCard::ActiveContactlessICCard err=%s", SpStrError(eErr));
 			//QueryLastErr(eType, errMsg);
 			//setCardAssistLastErr(eErr,errMsg, "DevAdapter::ActiveContactlessICCard");
-			errMsg = CSimpleStringA::Format("DetectIfICCard::ActiveContactlessICCard failed(%s):%s", SpStrError(eErr), errMsg.GetData());
-			LogWarn(Severity_Middle, Error_Unexpect, ContactlessCard_UserErrorCode_ActiveContactlessICCard_Failed, errMsg.GetData());
+			//errMsg = CSimpleStringA::Format("DetectIfICCard::ActiveContactlessICCard failed(%s):%s", SpStrError(eErr), errMsg.GetData());
+			//LogWarn(Severity_Middle, Error_Unexpect, ContactlessCard_UserErrorCode_ActiveContactlessICCard_Failed, errMsg.GetData());
 			return false;
 		}
 		else {
@@ -475,19 +473,19 @@ bool CCardProcess::DetectIfICCard(CardReadType eType, DeviceBaseClass *pCardX, i
 		{
 			QueryLastErr(eType, errMsg);
 			setCardAssistLastErr(eErr,errMsg,"DevAdapter::ActiveContactlessICCard");
-			errMsg = CSimpleStringA::Format("(CardIssuer)DetectIfICCard::ActiveContactlessICCard failed(%s):%s", SpStrError(eErr), errMsg.GetData());
-			if (eType == CARD_MACHINE_ISSUER_RF) {
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, errMsg.GetData());
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23C6")("DetectIfICCard::ActiveContactlessICCard err=%s", SpStrError(eErr));
-			}
-			else {
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuerStore_UserErrorCode_ActiveContactlessICCard_Failed, errMsg.GetData());
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WC6")("DetectIfICCard::ActiveContactlessICCard err=%s", SpStrError(eErr));
-			}
+			errMsg = CSimpleStringA::Format("DetectIfICCard::ActiveContactlessICCard failed(%s):%s", SpStrError(eErr), errMsg.GetData());
+			//if (eType == CARD_MACHINE_ISSUER_RF) {
+			//	LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, errMsg.GetData());
+			//	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23C6")("DetectIfICCard::ActiveContactlessICCard err=%s", SpStrError(eErr));
+			//}
+			//else {
+			//	LogWarn(Severity_Middle, Error_Unexpect, CardIssuerStore_UserErrorCode_ActiveContactlessICCard_Failed, errMsg.GetData());
+			//	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WC6")("DetectIfICCard::ActiveContactlessICCard err=%s", SpStrError(eErr));
+			//}
 			return false; 
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime)("DetectIfICCard::ActiveContactlessICCard,(CardIssuer)Detect contactless card type %d", ch);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime)("DetectIfICCard::ActiveContactlessICCard,Detect contactless card type %d", ch);
 		}
 		cardType = ch;
 		
@@ -597,16 +595,16 @@ ErrorCodeEnum CCardProcess::BuildSupportedAppList(CardReadType eType,DeviceBaseC
 	{
 		if (eType == CARD_MACHINE_ISSUER || eType == CARD_MACHINE_ISSUER_STORE)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("BuildSupportedAppList::ICCommand");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("BuildSupportedAppList::ICCommand recv %d len", cmdRecv.dwSize);
 		}
 		else if (eType == CARD_MACHINE_ISSUER_RF || eType == CARD_MACHINE_ISSUER_STORE_RF)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("BuildSupportedAppList::RFTypeABCommand");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("BuildSupportedAppList::RFTypeABCommand recv %d len", cmdRecv.dwSize);
 		}
 		memcpy(recvBuf,cmdRecv.data,cmdRecv.dwSize);
 		lenRecv = cmdRecv.dwSize;
 		TtestIC[showLen++] = 'b';
-		DbgInfo(CSimpleStringA::Format("<BuildSupportedAppList>, recv %d len",lenRecv));
+		//DbgInfo(CSimpleStringA::Format("<BuildSupportedAppList>, recv %d len",lenRecv));
 		if (recvBuf[lenRecv-2] == 0x90 && recvBuf[lenRecv-1] == 0x00)
 		{			
 			HexBuf2StrBuf(recvBuf,&show,lenRecv);
@@ -679,16 +677,16 @@ ErrorCodeEnum CCardProcess::BuildSupportedAppList(CardReadType eType,DeviceBaseC
 					{
 						if (eType == CARD_MACHINE_ISSUER || eType == CARD_MACHINE_ISSUER_STORE)
 						{
-							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("BuildSupportedAppList::ICCommand");
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("BuildSupportedAppList::ICCommand recv %d len", cmdRecv.dwSize);
 						}
 						else if (eType == CARD_MACHINE_ISSUER_RF || eType == CARD_MACHINE_ISSUER_STORE_RF)
 						{
-							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("BuildSupportedAppList::RFTypeABCommand");
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("BuildSupportedAppList::RFTypeABCommand recv %d len", cmdRecv.dwSize);
 						}
 						memcpy(recvBuf,cmdRecv.data,cmdRecv.dwSize);
 						lenRecv = cmdRecv.dwSize;
 						HexBuf2StrBuf(recvBuf,&show,lenRecv);
-						DbgInfo(CSimpleStringA::Format("<BuildSupportedAppList>show[%s]",show));
+						//DbgInfo(CSimpleStringA::Format("<BuildSupportedAppList>show[%s]",show));
 						if(recvBuf[lenRecv-2] == 0x6A && recvBuf[lenRecv-1] == 0x83)
 						{
 							bNoMoreRec = true;
@@ -741,19 +739,19 @@ ErrorCodeEnum CCardProcess::BuildSupportedAppList(CardReadType eType,DeviceBaseC
 					{
 						if (eType == CARD_MACHINE_ISSUER)
 						{
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
+							DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
 						}
 						else if (eType == CARD_MACHINE_ISSUER_STORE)
 						{
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
+							DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
 						}
 						else if (eType == CARD_MACHINE_ISSUER_RF)
 						{
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
+							DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
 						}
 						else if (eType == CARD_MACHINE_ISSUER_STORE_RF)
 						{
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
+							DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
 						}
 						else if (eType == CARD_MACHINE_RFIC)
 						{
@@ -812,19 +810,19 @@ ErrorCodeEnum CCardProcess::BuildSupportedAppList(CardReadType eType,DeviceBaseC
 	{
 		if (eType == CARD_MACHINE_ISSUER)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_ISSUER_STORE)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_ISSUER_RF)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
 		}
 		else if(eType == CARD_MACHINE_ISSUER_STORE_RF)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_RFIC)
 		{
@@ -1007,19 +1005,19 @@ Step7:
 		}else{
 			if (eType == CARD_MACHINE_ISSUER)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildAppListByAIDs::ICCommand err=%s", SpStrError(eErr));
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildAppListByAIDs::ICCommand err=%s", SpStrError(eErr));
 			}
 			else if (eType == CARD_MACHINE_ISSUER_STORE)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildAppListByAIDs::ICCommand err=%s", SpStrError(eErr));
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildAppListByAIDs::ICCommand err=%s", SpStrError(eErr));
 			}
 			else if (eType == CARD_MACHINE_ISSUER_RF)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildAppListByAIDs::RFTypeABCommand err=%s", SpStrError(eErr));
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildAppListByAIDs::RFTypeABCommand err=%s", SpStrError(eErr));
 			}
 			else if (eType == CARD_MACHINE_ISSUER_STORE_RF)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildAppListByAIDs::RFTypeABCommand err=%s", SpStrError(eErr));
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildAppListByAIDs::RFTypeABCommand err=%s", SpStrError(eErr));
 			}
 			else if (eType == CARD_MACHINE_RFIC)
 			{
@@ -1103,11 +1101,11 @@ ErrorCodeEnum CCardProcess::AppSelected(CardReadType eType,DeviceBaseClass *pCar
 	{
 		if (eType == CARD_MACHINE_ISSUER || eType == CARD_MACHINE_ISSUER_STORE)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("AppSelected::ICCommand");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("AppSelected::ICCommand recv %d len", cmdRecv.dwSize);
 		}
 		else if (eType == CARD_MACHINE_ISSUER_RF || eType == CARD_MACHINE_ISSUER_STORE_RF)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("AppSelected::RFTypeABCommand");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("AppSelected::RFTypeABCommand recv %d len", cmdRecv.dwSize);
 		}
 		memcpy(recvBuf,cmdRecv.data,cmdRecv.dwSize);
 		lenRecv = cmdRecv.dwSize;
@@ -1180,11 +1178,11 @@ ErrorCodeEnum CCardProcess::AppSelected(CardReadType eType,DeviceBaseClass *pCar
 			{
 				if (eType == CARD_MACHINE_ISSUER || eType == CARD_MACHINE_ISSUER_STORE)
 				{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("AppSelected::ICCommand");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("AppSelected::ICCommand recv %d len", cmdRecv.dwSize);
 				}
 				else if (eType == CARD_MACHINE_ISSUER_RF || eType == CARD_MACHINE_ISSUER_STORE_RF)
 				{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("AppSelected::RFTypeABCommand");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("AppSelected::RFTypeABCommand recv %d len", cmdRecv.dwSize);
 				}
 				memcpy(recvBuf,cmdRecv.data,cmdRecv.dwSize);
 				lenRecv = cmdRecv.dwSize;
@@ -1219,19 +1217,19 @@ ErrorCodeEnum CCardProcess::AppSelected(CardReadType eType,DeviceBaseClass *pCar
 
 				if (eType == CARD_MACHINE_ISSUER)
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("AppSelected::ICCommand err=%s", SpStrError(eErr));
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("AppSelected::ICCommand err=%s", SpStrError(eErr));
 				}
 				else if (eType == CARD_MACHINE_ISSUER_STORE)
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("AppSelected::ICCommand err=%s", SpStrError(eErr));
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("AppSelected::ICCommand err=%s", SpStrError(eErr));
 				}
 				else if (eType == CARD_MACHINE_ISSUER_RF)
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("AppSelected::RFTypeABCommand err=%s", SpStrError(eErr));
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("AppSelected::RFTypeABCommand err=%s", SpStrError(eErr));
 				}
 				else if (eType == CARD_MACHINE_ISSUER_STORE_RF)
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("AppSelected::RFTypeABCommand err=%s", SpStrError(eErr));
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("AppSelected::RFTypeABCommand err=%s", SpStrError(eErr));
 				}
 				else if (eType == CARD_MACHINE_RFIC)
 				{
@@ -1273,19 +1271,19 @@ ErrorCodeEnum CCardProcess::AppSelected(CardReadType eType,DeviceBaseClass *pCar
 	{
 		if (eType == CARD_MACHINE_ISSUER)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_ISSUER_STORE)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::ICCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_ISSUER_RF)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_ISSUER_STORE_RF)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BuildSupportedAppList::RFTypeABCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_RFIC)
 		{
@@ -1357,11 +1355,11 @@ ErrorCodeEnum CCardProcess::ReadData(CardReadType eType,DeviceBaseClass *pCardX,
 			{
 				if (eType == CARD_MACHINE_ISSUER || eType == CARD_MACHINE_ISSUER_STORE)
 				{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("ReadData::ICCommand");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime)("ReadData::ICCommand recv %d len", cmdRecv.dwSize);
 				}
 				else if (eType == CARD_MACHINE_ISSUER_RF || eType == CARD_MACHINE_ISSUER_STORE_RF)
 				{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("ReadData::RFTypeABCommand");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime)("ReadData::RFTypeABCommand recv %d len", cmdRecv.dwSize);
 				}
 				memcpy(recvBuf,cmdRecv.data,cmdRecv.dwSize);
 				lenRecv = cmdRecv.dwSize;
@@ -1374,19 +1372,19 @@ ErrorCodeEnum CCardProcess::ReadData(CardReadType eType,DeviceBaseClass *pCardX,
 			{
 				if (eType == CARD_MACHINE_ISSUER)
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadData::ICCommand err=%s", SpStrError(eErr));
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ReadData::ICCommand err=%s", SpStrError(eErr));
 				}
 				else if (eType == CARD_MACHINE_ISSUER_STORE)
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadData::ICCommand err=%s", SpStrError(eErr));
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ReadData::ICCommand err=%s", SpStrError(eErr));
 				}
 				else if (eType == CARD_MACHINE_ISSUER_RF)
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadData::RFTypeABCommand err=%s", SpStrError(eErr));
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ReadData::RFTypeABCommand err=%s", SpStrError(eErr));
 				}
 				else if (eType == CARD_MACHINE_ISSUER_STORE_RF)
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadData::RFTypeABCommand err=%s", SpStrError(eErr));
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ReadData::RFTypeABCommand err=%s", SpStrError(eErr));
 				}
 				else if (eType == CARD_MACHINE_RFIC)
 				{
@@ -1589,19 +1587,19 @@ void CCardProcess::ProcessDDFRecord(CardReadType eType,DeviceBaseClass *pCardX,v
 					else{
 						if (eType == CARD_MACHINE_ISSUER)
 						{
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ProcessDDFRecord::ICCommand err=%s", SpStrError(eErr));
+							DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ProcessDDFRecord::ICCommand err=%s", SpStrError(eErr));
 						}
 						else if (eType == CARD_MACHINE_ISSUER_STORE)
 						{
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ProcessDDFRecord::ICCommand err=%s", SpStrError(eErr));
+							DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ProcessDDFRecord::ICCommand err=%s", SpStrError(eErr));
 						}
 						else if (eType == CARD_MACHINE_ISSUER_RF)
 						{
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ProcessDDFRecord::RFTypeABCommand err=%s", SpStrError(eErr));
+							DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ProcessDDFRecord::RFTypeABCommand err=%s", SpStrError(eErr));
 						}
 						else if (eType == CARD_MACHINE_ISSUER_STORE_RF)
 						{
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ProcessDDFRecord::RFTypeABCommand err=%s", SpStrError(eErr));
+							DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ProcessDDFRecord::RFTypeABCommand err=%s", SpStrError(eErr));
 						}
 						else if (eType == CARD_MACHINE_RFIC)
 						{
@@ -1619,19 +1617,19 @@ void CCardProcess::ProcessDDFRecord(CardReadType eType,DeviceBaseClass *pCardX,v
 
 		if (eType == CARD_MACHINE_ISSUER)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ProcessDDFRecord::ICCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ProcessDDFRecord::ICCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_ISSUER_STORE)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ProcessDDFRecord::ICCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ProcessDDFRecord::ICCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_ISSUER_RF)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ProcessDDFRecord::RFTypeABCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ProcessDDFRecord::RFTypeABCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_ISSUER_STORE_RF)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ProcessDDFRecord::RFTypeABCommand err=%s", SpStrError(eErr));
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ProcessDDFRecord::RFTypeABCommand err=%s", SpStrError(eErr));
 		}
 		else if (eType == CARD_MACHINE_RFIC)
 		{
@@ -2024,7 +2022,7 @@ int CCardProcess::TermActionAnalyze(CardReadType eType,DeviceBaseClass *pCardX,C
 			memcpy(cmdSend.data,m_APDUsendBuf,m_lenAPDU);
 			ZeroMemory(show,MAX_TEST_SHOW);
 			HexBuf2StrBuf(cmdSend.data,&show,m_lenAPDU);
-			DbgInfo(CSimpleStringA::Format("get response cmd[%s]",show));
+			//DbgInfo(CSimpleStringA::Format("get response cmd[%s]",show));
 			if (eType == CARD_MACHINE_ISSUER || eType == CARD_MACHINE_ISSUER_STORE)
 			{
 				eErr = pCardI->ICCommand(cmdSend,cmdRecv);
@@ -2048,7 +2046,7 @@ int CCardProcess::TermActionAnalyze(CardReadType eType,DeviceBaseClass *pCardX,C
 				if (recvBuf[lenRecv - 2] == 0x90 && recvBuf[lenRecv - 1] == 0x00)
 				{
 					bFirstGenAC = true;
-					DbgInfo("first generate ac suc.");
+					//DbgInfo("first generate ac suc.");
 				}
 				else
 				{
@@ -2627,7 +2625,7 @@ void CCardProcess::GetBaseInfoNotInRecord(CardReadType eType,DeviceBaseClass *pC
 		memcpy(recvBuf,cmdRecv.data,cmdRecv.dwSize);
 		lenRecv = cmdRecv.dwSize;
 		HexBuf2StrBuf(recvBuf,&show,lenRecv);
-		DbgInfo(CSimpleStringA::Format("base info not in record[%s]",show));
+		//DbgInfo(CSimpleStringA::Format("base info not in record[%s]",show));
 		if (recvBuf[lenRecv-2] == 0x90 && recvBuf[lenRecv-1] == 0x00)
 		{
 
@@ -2696,7 +2694,7 @@ int CCardProcess::DetectAndReadICData(CardReadType eType, DeviceBaseClass *pCard
 			if ( bIssue && cardType != 'A' && cardType != 'B' && cardType != 'M') {
 				CSimpleStringA errMsg = CSimpleStringA::Format("{\"ErrCode\":2147483646,\"Description\":\"<DetectIfICCard>, not ic card,cardType=%d\"}", cardType);
 				setCardAssistLastErr(Error_Exception, errMsg.GetData(), "DevAdapter::ActiveContactlessICCard");
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("<DetectIfICCard>, not ic card.");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<DetectIfICCard>, not ic card.");
 				return -1;
 			}
 		}
@@ -2732,7 +2730,7 @@ int CCardProcess::GetICDataFromCard(CardReadType eType,DeviceBaseClass *pCardX,
 		char* aidTest = new char[128];
 		int aidStrLen = HexBuf2StrBuf(aidData.aid,&aidTest,5);
 		//DbgInfo(CSimpleStringA::Format("<GetICDataFromCard>, aid[%s][%s]",pAIDs[index].GetData(),aidTest));
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<GetICDataFromCard>, aid[%s][%s]", pAIDs[index].GetData(), aidTest);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<GetICDataFromCard>, aid[%s][%s]", pAIDs[index].GetData(), aidTest);
 		vector<AIDData> vAIDs;
 		vAIDs.push_back(aidData);
 

+ 1 - 1
DevAdapter/include/CardAssist.h

@@ -5,7 +5,7 @@
 #include "ICDataElement.h"
 #include "CardIssuerClass.h"
 #include "RFICClass.h"
-#include "../../Module/mod_CardIssuerStand/CardIssuer_UserErrorCode.h"
+#include "../../Module/mod_CardIssuerStand/CardIssuerStand_UserErrorCode.h"
 #include "../../Module/mod_cardissuerstore/CardIssuerStore_UserErrorCode.h"
 #include "../../Module/mod_ContactlessCard/ContactlessCard_UserErrorCode.h"
 

+ 2 - 1
DevAdapter/include/DevErrorCode.h

@@ -1136,7 +1136,7 @@ typedef short DECRESULT;
 #define MEC_DEVAPI_IDCER_(funcName)	( MEC_DEVAPI_IDCER_##funcName )
 #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_IDCerAuthenticate_Error	 (DEC_NO_E_IDCERTIFICATE_START + 3) //20100003
 #define MEC_DEVAPI_IDCER_IDCerAuthenticate_NotIDCard (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
@@ -1145,6 +1145,7 @@ typedef short DECRESULT;
 #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 MEC_DEVAPI_IDCER_IDCerAuthenticate_NoCard    (DEC_NO_E_IDCERTIFICATE_START + 12) //2010000C
 
 
 #define DEC_NO_E_IDCERTIFICATE (DEC_NO_E_IDCERTIFICATE_START + CAPACITY_FOR_MEC_DEVAPI)

+ 0 - 38
DevAdapter/simulator/cardissuer.1.1/CMakeLists.txt

@@ -1,38 +0,0 @@
-rvc_dev_define_module("CardIssuer")
-set(${MODULE_PREFIX}_VENDOR ${CURRENT_VENDOR})
-set(${MODULE_PREFIX}_VERSION "1")
-set(${MODULE_PREFIX}_BATCH "1")
-
-set(${MODULE_PREFIX}_SRCS SHARED
-        cardissuer_impl.h
-		cardissuer_impl.cpp
-		cardissuer_httpans.h
-        )
-
-
-rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
-
-#头文件地址
-target_include_directories(${MODULE_FULL_NAME} PRIVATE
-	${DevHeadPath}
-	${DEVADAPTER_BASE_DIR}/liblog4vendor
-	${VENDOR_CURRENT_DEPS_DIR}/libSimulaRestful
-	${CONAN_INCLUDE_DIRS_JSONCPP}
-)
-
-#库链接地址
-target_link_directories(${MODULE_FULL_NAME} PRIVATE
-     ${CONAN_LIB_DIRS_JSONCPP}
-)
-
-#需要链接的库
-set(${MODULE_PREFIX}_LIBS SimulaRestful ${CONAN_PKG_LIBS_JSONCPP} ${VENDOR_LOG_LIB_NAME})
-if(MSVC)
-	list(APPEND ${MODULE_PREFIX}_LIBS Ws2_32 IPHLPAPI)
-endif(MSVC)
-target_link_libraries(
-	${MODULE_FULL_NAME} ${${MODULE_PREFIX}_LIBS} 
-)
-
-#  =-=-=-=-=-=-=-=-=-= {适配器工程}/CMakeLists.txt 文件最后必须声明如下内容=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=
-rvc_dev_target_install(${MODULE_FULL_NAME})

+ 0 - 123
DevAdapter/simulator/cardissuer.1.1/cardissuer_httpans.h

@@ -1,123 +0,0 @@
-#include "CardIssuerClass.h"
-#include "DeviceSimulator.h"
-#include <vector>
-
-typedef struct CardIssuerStatusAns {
-
-
-	int eMedia;	//state about card
-	int eRetainBin;
-	int dwRetainCount;	//回收箱容量
-	//根据实际的卡箱数量对相关字段进行赋值
-	std::vector<int> eIssuerBin;//0,1,2,... => hopper 1,2,3,... 需要对1,2,3,...三个卡箱进行对应赋值
-	std::vector<int> dwIssuerCount;	//发卡箱容量,0,1,2,... => 1,2,3,...
-	std::vector<int> eKakuTape;//eKakuTape[0],eKakuTape[1],eKakuTape[2],eKakuTape[3]分别存放平面,凹,凸(金),凸(银)的状态
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(eMedia, eRetainBin, dwRetainCount, eIssuerBin, dwIssuerCount, eKakuTape)
-}CardIssuerStatusAns;
-
-typedef struct GetDeviceSNAns {
-
-	std::string pDevSN;
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(pDevSN)
-}GetDeviceSNAns;
-
-//////MagRead中MagTracks 嵌套结构体/////////////
-struct TrackInfoJson
-{
-	int eSource;
-	int eStatus;
-	int dwSize;
-	std::string data;
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(eSource, eStatus, dwSize, data)
-};
-
-typedef struct MagTracksAns {
-
-	int eRange;
-	std::vector<TrackInfoJson> track;
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(eRange, track)
-}MagTracksAns;
-//////////////////////////////////////////
-
-typedef struct CmdInfoAns {
-
-	int dwSize;
-	ByteData data; //字节流数据
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(dwSize, data)
-}CmdInfoAns;
-
-typedef struct ActiveContactlessICCardAns {
-
-	int outType;
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(outType)
-}ActiveContactlessICCardAns;
-
-typedef struct DevOpenExAns {
-
-	int btType;
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(btType)
-}DevOpenExAns;
-
-typedef struct TransferEnInitAns {
-
-	int iStatus;
-	std::string Cr1;
-	int lenR1;
-	std::string Cr3;
-	int lenR3;
-	std::string dKey;
-	int lenKey;
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(iStatus, Cr1, lenR1, Cr3, lenR3, dKey, lenKey)
-}TransferEnInit;
-
-typedef struct SetR2Ans {
-
-	int iStatus;
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(iStatus)
-}SetR2Ans;
-
-
-typedef struct CardNoAns {
-
-	int dwSize;
-	int dwTrack2Size;
-	int dwTrack3Size;
-	std::string account;
-	std::string track2;
-	std::string track3;
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(dwSize, dwTrack2Size, dwTrack3Size, account, track2, track3)
-}CardNoAns;
-
-typedef struct GetSlotSumAns {
-
-	int sum;
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(sum)
-}GetSlotSumAns;
-
-typedef struct SlotStatusAns {
-
-	int dwSize;//sum of slots
-	//数据下标0~x 表示对应卡槽号0~x的是否有卡的状态
-	//0:卡槽为空,1:卡槽有卡;
-	std::vector<int> status;//int 数组
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(dwSize, status)
-}SlotStatusAns;
-
-typedef struct SAMStatusAns {
-
-	int isActive;//0:Inactive; 1:acitve
-	int chosenOfSAM;//the selected sam number:1,2,...
-
-	JSONCONVERT2OBJECT_MEMEBER_REGISTER(isActive, chosenOfSAM)
-}SAMStatusAns;

+ 0 - 578
DevAdapter/simulator/cardissuer.1.1/cardissuer_impl.cpp

@@ -1,578 +0,0 @@
-// dllmain.cpp : 定义 DLL 应用程序的入口点。
-#include "cardissuer_impl.h"
-#include "cardissuer_httpans.h"
-#include <cstring>
-#include <cstdio>
-#include "log4vendor.h"
-#include <path.h>"
-
-#ifdef _MSC_VER
-BOOL APIENTRY DllMain(HMODULE hModule,
-	DWORD  ul_reason_for_call,
-	LPVOID lpReserved
-)
-{
-	switch (ul_reason_for_call)
-	{
-	case DLL_PROCESS_ATTACH:
-	case DLL_THREAD_ATTACH:
-	case DLL_THREAD_DETACH:
-	case DLL_PROCESS_DETACH:
-		break;
-	}
-	return TRUE;
-}
-#endif
-
-DEVICEBASE_API ErrorCodeEnum CreateDevComponent(DeviceBaseClass*& pBaseObj)
-{
-	pBaseObj = new CardIssuerImpl();
-	if (pBaseObj == NULL) {
-		return Error_Resource;
-	}
-	cmb::log_init_config config;
-	config.dev_name = "vendor_CardIssuer";
-#ifdef _MSC_VER
-	config.log_dir = ("C:\\rvc\\dbg\\");
-#else
-	config.log_dir = ("/opt/rvc/dbg/");
-#endif 
-	std::string str;
-	cmb::log4vendor::init(config, str);
-
-	std::string tmpStr = GetSimulatorUrl();
-	LOG4VTM(INFO, "URL = " << tmpStr.c_str());
-
-	return Error_Succeed;
-}
-DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pBaseObj)
-{
-	if (pBaseObj == NULL) {
-		return Error_Param;
-	}
-	if (CardIssuerImpl* pTmp = dynamic_cast<CardIssuerImpl*>(pBaseObj))
-	{
-		delete pTmp;
-		pTmp = NULL;
-		return Error_Succeed;
-	}
-	return Error_Param;
-}
-
-
-CardIssuerImpl::CardIssuerImpl()
-{
-
-}
-
-CardIssuerImpl::~CardIssuerImpl()
-{
-
-}
-
-ErrorCodeEnum CardIssuerImpl::GetDevCategory(DevCategoryInfo& devCategory)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	SimulatorDevCategoryAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "GetDevCategory", ans);
-	LOG4VTM(INFO, "GetDevCategory err = " << err);
-
-	strcpy(devCategory.szType, ans.szType.c_str());
-	strcpy(devCategory.szModel, ans.szModel.c_str());
-	strcpy(devCategory.szVendor, ans.szVendor.c_str());
-	devCategory.eState = (DevStateEnum)ans.eState;
-	devCategory.version.wMajor = ans.version.wMajor;
-	devCategory.version.wMinor = ans.version.wMinor;
-	devCategory.version.wRevision = ans.version.wRevision;
-	devCategory.version.wBuild = ans.version.wBuild;
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::Reset()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "Reset");
-	LOG4VTM(INFO, "Reset err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::DevClose()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "DevClose");
-	LOG4VTM(INFO, "DevClose err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::GetLastErr(DevErrorInfo& devErrInfo)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	SimulatorDevErrInfoAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "GetLastErr", ans);
-	LOG4VTM(INFO, "GetLastErr err = " << err);
-
-	devErrInfo.dwErrMsgLen = ans.dwErrMsgLen;
-	strcpy(devErrInfo.szErrMsg, ans.szErrMsg.c_str());
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::GetDevStatus(CardIssuerStatus& devStatus)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	CardIssuerStatusAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "GetDevStatus", ans);
-	LOG4VTM(INFO, "GetDevStatus err = " << err);
-
-	if (err == Error_Succeed) {
-		devStatus.eMedia = (CardStatusEnum)ans.eMedia;
-		devStatus.eRetainBin = (RtBinStatusEnum)ans.eRetainBin;
-		devStatus.dwRetainCount = ans.dwRetainCount;
-
-		for (int i = 0; i < 12; i++)
-		{
-			if (i >= ans.eIssuerBin.size())
-			{
-				break;
-			}
-			devStatus.eIssuerBin[i] = (IssHopperStatusEnum)ans.eIssuerBin[i];
-		}
-
-		for (int i = 0; i < 12; i++)
-		{
-			if (i >= ans.dwIssuerCount.size())
-			{
-				break;
-			}
-			devStatus.dwIssuerCount[i] = ans.dwIssuerCount[i];
-		}
-
-		for (int i = 0; i < 8; i++)
-		{
-			if (i >= ans.eKakuTape.size())
-			{
-				break;
-			}
-			devStatus.eKakuTape[i] = (KakuPrintStatusEnum)ans.eKakuTape[i];
-		}
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::GetDeviceSN(char*& pDevSN)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	GetDeviceSNAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "GetDeviceSN", ans);
-	LOG4VTM(INFO, "GetDeviceSN err = " << err);
-
-	if (err == Error_Succeed) {
-		strncpy(pDevSN, ans.pDevSN.c_str(), (128 > ans.pDevSN.length()) ? ans.pDevSN.length() : 128);
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "MoveCard");
-	LOG4VTM(INFO, "MoveCard err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::SetCardInType(CardInEnum eCardIn)
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "SetCardInType");
-	LOG4VTM(INFO, "SetCardInType err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::MagRead(MagTracks& magTracks)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	MagTracksAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "MagRead", ans);
-	LOG4VTM(INFO, "MagRead err = " << err);
-
-	if (err == Error_Succeed) {
-		magTracks.eRange = (TrackRange)ans.eRange;
-		for (int i = 0; i < MAX_MAG_TRACK_NUM; ++i) {
-			magTracks.track[i].eSource = (TrackSrcEnum)ans.track[i].eSource;
-			magTracks.track[i].eStatus = (TrackDataStateEnum)ans.track[i].eStatus;
-			magTracks.track[i].dwSize = ans.track[i].dwSize;
-			memset(magTracks.track[i].data, 0, sizeof(BYTE) * MAX_MAG_TRACK_SIZE);
-			memcpy(magTracks.track[i].data, ans.track[i].data.c_str(), ans.track[i].data.length() + 1);
-		}
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::MagWrite(MagTracks magTracks, MagWriteModeEnum eWriteMode)
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "MagWrite");
-	LOG4VTM(INFO, "MagWrite err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::ActiveICCard()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "ActiveICCard");
-	LOG4VTM(INFO, "ActiveICCard err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::ContactIC()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "ContactIC");
-	LOG4VTM(INFO, "ContactIC err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::ReleaseIC()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "ReleaseIC");
-	LOG4VTM(INFO, "ReleaseIC err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::WarmReset()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "WarmReset");
-	LOG4VTM(INFO, "WarmReset err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::ICCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	CmdInfoAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "ICCommand", ans);
-	LOG4VTM(INFO, "ICCommand err = " << err);
-
-	if (err == Error_Succeed) {
-		recvBuf.dwSize = ans.dwSize;
-		memcpy(recvBuf.data, ans.data.bData, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::SAMActive(BYTE vcc)
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "SAMActive");
-	LOG4VTM(INFO, "SAMActive err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::SAMDeactivate()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "SAMDeactivate");
-	LOG4VTM(INFO, "SAMDeactivate err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::SAMWarmReset()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "SAMWarmReset");
-	LOG4VTM(INFO, "SAMWarmReset err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::SAMCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	CmdInfoAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "SAMCommand", ans);
-	LOG4VTM(INFO, "SAMCommand err = " << err);
-
-	if (err == Error_Succeed) {
-		recvBuf.dwSize = ans.dwSize;
-		memcpy(recvBuf.data, ans.data.bData, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::SAMQueryStatus(SAMStatus& samStatus)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	SAMStatusAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "SAMQueryStatus", ans);
-	LOG4VTM(INFO, "SAMQueryStatus err = " << err);
-
-	if (err == Error_Succeed) {
-		samStatus.isActive = ans.isActive;
-		samStatus.chosenOfSAM = ans.chosenOfSAM;
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::SAMSelect(const int sn)
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "SAMSelect");
-	LOG4VTM(INFO, "SAMSelect err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::ActiveICCardATR(CmdInfo& atrBuf)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	CmdInfoAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "ActiveICCardATR", ans);
-	LOG4VTM(INFO, "ActiveICCardATR err = " << err);
-
-	if (err == Error_Succeed) {
-		atrBuf.dwSize = ans.dwSize;
-		memcpy(atrBuf.data, ans.data.bData, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	ActiveContactlessICCardAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "ActiveContactlessICCard", ans);
-	LOG4VTM(INFO, "ActiveContactlessICCard err = " << err);
-
-	if (err == Error_Succeed) {
-		outType = (char)ans.outType;
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::DeactivateICCard()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "DeactivateICCard");
-	LOG4VTM(INFO, "DeactivateICCard err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::DeactContactlessICCard()
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "DeactContactlessICCard");
-	LOG4VTM(INFO, "DeactContactlessICCard err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	CmdInfoAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "RFTypeABCommand", ans);
-	LOG4VTM(INFO, "RFTypeABCommand err = " << err);
-
-	if (err == Error_Succeed) {
-		recvBuf.dwSize = ans.dwSize;
-		memcpy(recvBuf.data, ans.data.bData, sizeof(BYTE) * MAX_IC_BUFFER_SIZE);
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYTE btOpenType, const char* pDevSN, BYTE& btType)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	DevOpenExAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "DevOpenEx", ans);
-	LOG4VTM(INFO, "DevOpenEx err = " << err);
-
-	if (err == Error_Succeed) {
-		btType = (BYTE)ans.btType;
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::TransferEnInit(int& iStatus, BYTE*& Cr1, int& lenR1, BYTE*& Cr3, int& lenR3, BYTE*& dKey, int& lenKey)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	TransferEnInitAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "TransferEnInit", ans);
-	LOG4VTM(INFO, "TransferEnInit err = " << err);
-
-	if (err == Error_Succeed) {
-		iStatus = ans.iStatus;
-		lenR1 = ans.lenR1;
-		lenR3 = ans.lenR3;
-		lenKey = ans.lenKey;
-
-		memcpy(Cr1, ans.Cr1.c_str(), 256);
-		memcpy(Cr3, ans.Cr3.c_str(), 256);
-		memcpy(dKey, ans.dKey.c_str(), 256);
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::SetR2(int& iStatus, BYTE* pCr2, int lenR2)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	SetR2Ans ans;
-
-	err = SimulatorHttpFunction(EntityName, "SetR2", ans);
-	LOG4VTM(INFO, "SetR2 err = " << err);
-
-	if (err == Error_Succeed) {
-		iStatus = ans.iStatus;
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::SendWorkingKey(const char* pWorkingKey)
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "SendWorkingKey");
-	LOG4VTM(INFO, "SendWorkingKey err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::MoveCardToSlot(int slot)
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "MoveCardToSlot");
-	LOG4VTM(INFO, "MoveCardToSlot err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::MoveCardFromSlot(int slot)
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "MoveCardFromSlot");
-	LOG4VTM(INFO, "MoveCardFromSlot err = " << err);
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::ReadAccount(CardNo& cardNo)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	CardNoAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "ReadAccount", ans);
-	LOG4VTM(INFO, "ReadAccount err = " << err);
-
-	if (err == Error_Succeed) {
-		cardNo.dwSize = ans.dwSize;
-		cardNo.dwTrack2Size = ans.dwTrack2Size;
-		cardNo.dwTrack3Size = ans.dwTrack3Size;
-		memcpy(cardNo.account, ans.account.c_str(), ans.account.length() + 1);
-		memcpy(cardNo.track2, ans.track2.c_str(), ans.track2.length() + 1);
-		memcpy(cardNo.track3, ans.track3.c_str(), ans.track3.length() + 1);
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::GetSlotSum(int& sum)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	GetSlotSumAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "GetSlotSum", ans);
-	LOG4VTM(INFO, "GetSlotSum err = " << err);
-
-	if (err == Error_Succeed) {
-		sum = ans.sum;
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::QuerySlotsStatus(SlotStatus& slots, const int slot, bool bFull /*= false*/)
-{
-	ErrorCodeEnum err = Error_Succeed;
-	SlotStatusAns ans;
-
-	err = SimulatorHttpFunction(EntityName, "QuerySlotsStatus", ans);
-	LOG4VTM(INFO, "QuerySlotsStatus err = " << err);
-
-	if (err == Error_Succeed) {
-		slots.dwSize = ans.dwSize;
-
-		for (int i = 0; i < ans.status.size(); i++)
-		{
-			slots.status[i] = (BYTE)ans.status[i];
-		}
-	}
-
-	return err;
-}
-
-ErrorCodeEnum CardIssuerImpl::PrintCardFaceRightNow(const KakuPrintInfo printInfo)
-{
-	ErrorCodeEnum err = Error_Succeed;
-
-	err = SimulatorHttpFunction(EntityName, "PrintCardFaceRightNow");
-	LOG4VTM(INFO, "PrintCardFaceRightNow err = " << err);
-
-	return err;
-}

+ 0 - 214
DevAdapter/simulator/cardissuer.1.1/cardissuer_impl.h

@@ -1,214 +0,0 @@
-#ifndef LIBFRAMEWORK_CARDISSUER_IMPL_H
-#define LIBFRAMEWORK_CARDISSUER_IMPL_H
-#include "CardIssuerClass.h"
-#include <string>
-#include "DeviceSimulator.h"
-
-#define EntityName "CardIssuer"
-
-using namespace std;
-
-class CardIssuerImpl : public CardIssuerClass
-{
-public:
-	CardIssuerImpl();
-	~CardIssuerImpl();
-	static void HttpsLogCallBack(const char* logtxt) {}
-
-	//DeviceBaseClass
-	ErrorCodeEnum GetDevCategory(DevCategoryInfo& devCategory);
-	ErrorCodeEnum Reset();
-	ErrorCodeEnum DevClose();
-	ErrorCodeEnum GetLastErr(DevErrorInfo& devErrInfo);
-
-	//本接口几乎废弃不用。连接卡机,请使用DevOpenEx替代本接口
-	ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate) { return Error_NotImpl; }//废弃
-
-	//	Get card issuer status
-	//使用(卡库,卡机)
-	ErrorCodeEnum GetDevStatus(CardIssuerStatus& devStatus);
-	//
-	//	Get device serial number.
-	//	设备唯一标识,且需贴在设备外壳上
-	// 使用(pad)
-	ErrorCodeEnum GetDeviceSN(char*& pDevSN);
-	//
-	//	Move card to specified position.
-	//	hopperNo:多卡箱发卡时指定发卡箱号(面对发卡机,从左往右依次是1,2,3,...号卡箱)
-	//		卡库:卡片从卡库加卡箱移动到读卡器,eCardPos为CI_MOVECARD_FROM_HOPPER,hopperNo固定传入99
-	//		卡库:卡片从卡库加卡箱移动到读卡器,若加卡箱已经无卡,返回Error_Dev_HopperHasNoCard
-	//使用(卡库,卡机)*****
-	ErrorCodeEnum MoveCard(CardPosEnum eCardPos, int hopperNo = 1);
-	//
-	//	Set card entry
-	//使用(卡库,卡机)*****
-	ErrorCodeEnum SetCardInType(CardInEnum eCardIn);
-
-	//
-	//	Read data from magnetic track.
-	//使用(卡库,卡机)
-	ErrorCodeEnum MagRead(MagTracks& magTracks);
-
-	//	Write data to magnetic track.
-	//使用(卡库)*****
-	ErrorCodeEnum MagWrite(MagTracks magTracks, MagWriteModeEnum eWriteMode);
-	//
-	//	Set retract counter
-	ErrorCodeEnum SetRetractCounter(DWORD dwCount) { return Error_NotImpl; }	//废弃
-	//
-	//	Set issuer counter
-	//	hopperNo:多卡箱发卡时指定发卡箱号(面对发卡机,从左往右依次是1,2,3,...号卡箱)
-	ErrorCodeEnum SetIssuerCounter(DWORD dwCount, int hopperNo = 1) { return Error_NotImpl; }//废弃
-	//
-	//	Active contact IC card
-	//使用(卡库,卡机)*****
-	ErrorCodeEnum ActiveICCard();
-	//
-	//	Move IC card to contact position
-	//使用(卡库,卡机)*****
-	ErrorCodeEnum ContactIC();
-	//
-	//	Release IC contact
-	//使用(卡库,卡机)*****
-	ErrorCodeEnum ReleaseIC();
-	//
-	//	Warm reset card(IC)
-	//使用(卡库,卡机)*****
-	ErrorCodeEnum WarmReset();
-
-	//	APDU:Application Protocol Data Unit
-	//	CmdSend.lpCmd:Command-APDU
-	//	CmdRecv.lpData:Response-APDU
-	//使用(卡库,卡机)
-	ErrorCodeEnum ICCommand(CmdInfo sendBuf, CmdInfo& recvBuf);
-	//////////////////SAM 卡操作部分////////////////////
-	ErrorCodeEnum SAMActive(BYTE vcc = 0x30);//使用(卡库,卡机)
-	ErrorCodeEnum SAMDeactivate();//使用(卡库,卡机)
-	ErrorCodeEnum SAMWarmReset();//使用(卡库,卡机)
-	ErrorCodeEnum SAMQueryStatus(SAMStatus& samStatus);//使用(卡库,卡机)
-	ErrorCodeEnum SAMSelect(const int sn);//使用(卡库,卡机)
-	//即时制卡卡库需要实现SAMCommand,用来执行apdu指令
-	ErrorCodeEnum SAMCommand(CmdInfo sendBuf, CmdInfo& recvBuf);//使用(卡库,卡机)
-	//即时制卡卡库需要实现ActiveICCardATR,用来激活卡片,返回ATR
-	ErrorCodeEnum ActiveICCardATR(CmdInfo& atrBuf);//使用(卡库,卡机)
-
-	////////////////卡面打印部分(非即时制卡的卡面印刷,即时制卡的卡面打印接口为PrintCardFaceRightNow),部分机型(例如合肥分行大机)有此功能//////////////////
-	ErrorCodeEnum Print(BYTE*& data, const int dataSize, const int side) { return Error_NotImpl; }//废弃
-	ErrorCodeEnum QueryPrinterStatus() { return Error_NotImpl; }//废弃
-
-	////////////////////////////////////////////////////////////////////////////
-	////////非接(IC)部分 start,没有此部分,在接口实现中直接返回Error_NotImpl///////////////
-	////////////////////////////////////////////////////////////////////////////
-	//	Active contactless IC card(Type A,B,Mifare)
-	//	The first,second,third activation order decided by fstType,scdType,thdType respectively
-	//	fstType,scdType,thdType can be one of 'A','B','M','0'(30H,no type)
-	//	outType indicates the type of  activation result
-	//
-	ErrorCodeEnum ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType);//使用(卡库,卡机)
-	//
-	//	Deactivate contact IC card *****
-	//
-	ErrorCodeEnum DeactivateICCard(); //使用(卡库,卡机)
-	//
-	//	Deactivate contactless IC card *****
-	//
-	ErrorCodeEnum DeactContactlessICCard();//使用(卡库,卡机)
-	//
-	//	RF Mifare Classic protocol operation
-	//	Arguments:
-	//	- eFunType:function type as load key,authentication and so on
-	//	- sendBuf:[parameter][data]
-	//	- recvBuf:[status(1byte)][return data]
-	//
-	ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf) { return Error_NotImpl; }//废弃
-	//
-	//	RF Type A,B command.
-	//	APDU:Application Protocol Data Unit
-	//	Arguments:
-	// 	- CmdSend.lpCmd:Command-APDU
-	// 	- CmdRecv.lpData:Response-APDU
-	//
-	ErrorCodeEnum RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf);//使用(卡库,卡机)
-	////////非接(IC)部分 end/////////////////////////////////////////////////////////
-
-	//	发卡机调用打开设备
-	//	1. btOpenType:设定通过哪种方式连接设备,由DevOpenType的枚举值组合。usb及蓝牙设备连接可忽略dwPort,dwBaudRate
-	//	2.通过pDevSN来指定连接对应设备号的蓝牙发卡机(考虑存在多台发卡机的情况)
-	//		例如通过蓝牙或者usb连接设备,则btOpenType = (DEV_OPEN_TYPE_USB|DEV_OPEN_TYPE_BLUETOOTH)
-	//	3. btType返回设备实际通过哪种方式相连,返回值参考DevOpenType(大机,卡库参考下一条)
-	//	4.对于大机(柜式可视柜台,卡库)dwPort,dwBaudRate传入端口,波特率,btOpenType为DEV_OPEN_TYPE_COM,pDevSN为""
-	//		,btType返回值表示卡槽数量(例如目前存在单卡槽1,双卡槽2,三卡槽3的机型)
-	//	*****
-	ErrorCodeEnum DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYTE btOpenType, const char* pDevSN, BYTE& btType);//使用(卡库,卡机)
-
-	/////////////////////////////////////////////////////////////////////////
-	///以下是便携式卡机特有API,接口实现中其他机型直接返回Error_NotImpl即可//
-	/////////////////////////////////////////////////////////////////////////
-
-	//	返回值Error_Succeed表示成功,其他值表示失败
-	//	iStatus   0:成功   -1:银行公钥不存在   -2:产生设备密钥故障  -x:其他厂商自定义故障
-	//	Cr1:随机数r1的密文; Cr3:随机数r3的密文,dKey:用银行公钥加密的设备公钥密文
-	//	r1,r3第16字节为数据完整性校验字节,例如r1为B1B2...B15B16,则B16=B1^B2^...^B15
-	ErrorCodeEnum TransferEnInit(int& iStatus, BYTE*& Cr1, int& lenR1, BYTE*& Cr3, int& lenR3, BYTE*& dKey, int& lenKey);//使用(刷卡器)
-
-	//	返回值Error_Succeed表示成功,其他值表示失败
-	//	iStatus   0:成功   -x:厂商自定义故障
-	//	r2第16字节为数据完整性校验字节,例如r2为B1B2...B15B16,则B16=B1^B2^...^B15
-	ErrorCodeEnum SetR2(int& iStatus, BYTE* pCr2, int lenR2);//使用(刷卡器)
-	//
-	//	设置会话密钥
-	//	pWorkingKey:会话密钥,传递16进制的字符形式,例如0x123456FFAB  --> "123456FFAB"
-	ErrorCodeEnum SendWorkingKey(const char* pWorkingKey);//使用(刷卡器)
-
-	//安全锁接口部分 begin
-	ErrorCodeEnum SLLoadKey(const SCIKeyInfo key) { return Error_NotImpl; }// 使用(刷卡器) 废弃
-	//case ParamBeep: value:0,close beep;value:1,open beep
-	//case ParamLed: value:0,close led;value:1,open led
-	//case ParamLevelTime: value:the duration of level,100ms per unit
-	//		ex.	the value 10 means duration time is 1 second
-	ErrorCodeEnum SLSetParam(SCIParamType eType, int value) { return Error_NotImpl; }//废弃
-	ErrorCodeEnum SLLock() { return Error_NotImpl; }//废弃
-	ErrorCodeEnum SLUnLock(const SCICheckCode checkCode, bool bTemp = true) { return Error_NotImpl; }//废弃
-	ErrorCodeEnum SLGetTempData(SCITempData& ksnData, SCITempData& ramData) { return Error_NotImpl; }//废弃
-	ErrorCodeEnum SLOpenDoor(const SCITempData data) { return Error_NotImpl; }//废弃
-	//安全锁接口部分 end
-
-	//蓝牙控制部分 start
-	//蓝牙指令控制,命令参看SCIBluetoothCMD说明
-	ErrorCodeEnum BluetoothControl(SCIBluetoothCMD eCmd) { return Error_NotImpl; }//废弃
-	//修改配对密码
-	ErrorCodeEnum BluetoothModifyKey(unsigned char* key) { return Error_NotImpl; }//废弃
-	//修改蓝牙设备名称
-	ErrorCodeEnum BluetoothModifyName(unsigned char* name) { return Error_NotImpl; }//废弃
-	//获取版本信息
-	ErrorCodeEnum BluetoothGetVersion(char*& version) { return Error_NotImpl; }//废弃
-	//获取连接设备名称
-	ErrorCodeEnum BluetoothGetConnectName(unsigned char*& name) { return Error_NotImpl; }//废弃
-	//获取连接设备信号强度
-	ErrorCodeEnum BluetoothGetSignalStrength(unsigned char*& signal) { return Error_NotImpl; }//废弃
-	//蓝牙控制部分 end
-
-	//控制灯光
-	//eLight:所控制的灯 ;
-	//bOnOff:true 亮灯;fasle 灭灯
-	ErrorCodeEnum LightControl(SCILightType eLight, bool bOnOff) { return Error_NotImpl; }//废弃
-	//以百分比数值返回剩余电量(1-100),例如剩余51%,则bat赋值为51
-	ErrorCodeEnum QueryBatteryPower(int& bat) { return Error_NotImpl; }//废弃
-	//oiltest
-	//virtual ErrorCodeEnum EncryptData(TempData ramData, TempData bdk, TempData curksn, TempData &encryptedData) ;
-	//把卡片从读卡器移动到指定卡槽位
-	ErrorCodeEnum MoveCardToSlot(int slot);//使用(卡库,卡机)
-   //把卡片从指定卡槽位移动到读卡器
-	ErrorCodeEnum MoveCardFromSlot(int slot);//使用(卡库,卡机)
-   //读取卡号
-   //优先从IC卡解析卡号,如果纯磁条卡,则返回磁道解析的卡号
-	ErrorCodeEnum ReadAccount(CardNo& cardNo);//使用(卡库,卡机)
-   //获取总卡槽数
-	ErrorCodeEnum GetSlotSum(int& sum);//使用(卡库,卡机)
-   //获取卡槽状态
-	ErrorCodeEnum QuerySlotsStatus(SlotStatus& slots, const int slot, bool bFull = false);//使用(卡库,卡机)
-   //即时制卡卡库专用接口
-	ErrorCodeEnum PrintCardFaceRightNow(const KakuPrintInfo printInfo);//使用(卡库,卡机)
-};
-
-#endif //LIBFRAMEWORK_CARDISSUER_IMPL_H

+ 2 - 0
DevAdapter/simulator/include/DeviceSimulator.h

@@ -381,6 +381,7 @@ ErrorCodeEnum SimulatorHttpFunction(string entityName, string devFuncName)
 	SP::Simulator::Restful::FulfillRequestJsonBody(&config, simulatorCommonReq);
 	RestfulClient client = RestfulClient::getInstance();
 	config.PreDo();
+	config.SetTimeout(125); //访问后台Http目前最高设置延迟是120s,多5秒避免边界情况
 	client.Do(&config, &result);
 	if (result.ResponseOK()) {
 		SP::Simulator::Restful::CommSimulatorRes commRes;
@@ -410,6 +411,7 @@ ErrorCodeEnum SimulatorHttpFunction(string entityName, string devFuncName, T& ob
 	RestfulClient client = RestfulClient::getInstance();
 
 	config.PreDo();
+	config.SetTimeout(125);
 	client.Do(&config, &result);
 	if (result.ResponseOK()) {
 		SP::Simulator::Restful::CommSimulatorRes commRes;

+ 2 - 1
Module/ReadMe

@@ -15,7 +15,8 @@ UpLog RTA1D
 MediaController RTA28
 IDCertificate RTA21
 CardSwiper RTA22
-CardIssuer RTA23
+CardIssuerStand RTA23
+CardIssuerStore RTA2W
 FingerPrint RTA24
 PinPad RTA26
 Gpio RTA29

+ 3 - 2
Module/include/DevFSMCommBase.hpp

@@ -13,6 +13,7 @@
 #include <map>
 #include <string>
 #include "fileutil.h"
+#include "RVCEventCode.h"
 
 #if defined(_MSC_VER)
 #pragma comment(lib, "Version.lib")
@@ -182,7 +183,7 @@ public:
 				pFuncGetPrefixErr = nullptr;
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Get 'GetMoreErrorDetail' Func address succ");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Get 'GetMoreErrorDetail' Func address succ");
 			}
 #endif //RVC_OS_WIN
 		} while (false);
@@ -674,7 +675,7 @@ public:
 			ErrorCodeEnum eErrOld = this->GetEntityBase()->GetFunction()->GetPath("DepBak", strOldPath);
 			if (eErrOld != Error_Succeed)
 			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Get [DepBak] Path failed! errcode:%s.", SpStrError(eErrOld));
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(RTAERR_GETPATH_FAILED)("Get [DepBak] Path failed! errcode:%s.", SpStrError(eErrOld));
 			}
 			strOldPath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", strOldPath.GetData(), filename);
 

+ 4 - 4
Module/mod_CardIssuerStand/CMakeLists.txt

@@ -1,10 +1,10 @@
 define_module("CardIssuerStand")
 
 set(${MODULE_PREFIX}_SRCS
-	mod_cardissuer.cpp
-	mod_cardissuer.h
-	CardIssuerFSM.cpp
-	CardIssuerFSM.h
+	mod_cardissuerStand.cpp
+	mod_cardissuerStand.h
+	CardIssuerStandFSM.cpp
+	CardIssuerStandFSM.h
 	${DevHeadPath}/CardAssist.cpp)
 list(APPEND ${MODULE_PREFIX}_SRCS)
 set(MOD_VERSION_STRING "1.0.0-dev1")

Datei-Diff unterdrückt, da er zu groß ist
+ 159 - 167
Module/mod_CardIssuerStand/CardIssuerStandFSM.cpp


+ 26 - 22
Module/mod_CardIssuerStand/CardIssuerFSM.h → Module/mod_CardIssuerStand/CardIssuerStandFSM.h

@@ -143,7 +143,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card accept unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card accept unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -158,7 +158,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card issue unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card issue unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -171,7 +171,7 @@ public:
 	~CancelAcceptEvent() {}
 	virtual void OnUnhandled()
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card cancel accept unhandled");
+		//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card cancel accept unhandled");
 	}
 };
 
@@ -185,7 +185,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card read unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card read unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -202,7 +202,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card read unhandled(new)");
+			//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card read unhandled(new)");
 		}
 	}
 protected:
@@ -291,7 +291,6 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card read unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -308,7 +307,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card read unhandled(new)");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("card read unhandled(new)");
 		}
 	}
 protected:
@@ -352,7 +351,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card issue ex unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("card issue ex unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -384,7 +383,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectJS Operate unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("EjectJS Operate unhandled");
 		}
 	}
 };
@@ -399,7 +398,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CaptureJS Operate unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("CaptureJS Operate unhandled");
 		}
 	}
 };
@@ -414,7 +413,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("PostOnlineJS Operate unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("PostOnlineJS Operate unhandled");
 		}
 	}
 };
@@ -429,7 +428,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("IssueFromBoxJS Operate unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("IssueFromBoxJS Operate unhandled");
 		}
 	}
 };
@@ -453,7 +452,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadJS Operate unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("ReadJS Operate unhandled");
 		}
 	}
 };
@@ -468,7 +467,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("InsertJS Operate unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("InsertJS Operate unhandled");
 		}
 	}
 };
@@ -480,7 +479,7 @@ public:
 	~CancelInsertJSEvent() {}
 	virtual void OnUnhandled()
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CancelInsertJS Operate unhandled");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA23CL")("CancelInsertJS Operate unhandled");
 	}
 };
 
@@ -648,7 +647,7 @@ typedef struct CQueryCardTypeRet : CHTTPRet {
 		Json::Value::UInt index;
 		if (!reader.parse(strData, root, false))
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("reader.parse false");//又不能打印,有什么太大意义?
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("reader.parse false");
 			return false;
 		}
 		index = 0;
@@ -708,12 +707,12 @@ typedef struct CRegistSwallowCardRet : CHTTPRet {
 	struct data {
 	}data;
 	bool Parse(string strData) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(strData.c_str());
+		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(strData.c_str());
 		Json::Value root, tmpZ1;
 		Json::Reader reader;
 		if (!reader.parse(strData, root, false))
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("reader.parse false");//又不能打印,有什么太大意义?
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("reader.parse false");
 			return false;
 		}
 		if (!root["returnInfo"].isNull()) {
@@ -812,7 +811,7 @@ struct SyncMaterialCountHTTPRet : CHTTPRet {
 };
 
 
-class CCardIssuerFSM : public CCommDevFSM<CCardIssuerFSM, CardIssuerClass>
+class CCardIssuerFSM : public CCommDevFSM<CCardIssuerFSM, CardIssuerClass>, public IFSMStateHooker
 {
 public:
 	enum {s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s14,s15,s16};
@@ -1076,7 +1075,6 @@ public:
 	CSimpleStringA GetPreOnlineICCardNo() { return m_currCardNo; }
 	void CloseAndClearDevObj(bool bCheckConnecting = true, bool bCloseOnly = false);
 
-	void SetEnterMainPage();
 	static void HttpsLogCallBack(const char* logtxt);
 	//0:unknow(havn't access microservice or access failed),1:both mag & ic ,2:mag only,3:ic only
 	int JudgeCardType(CSimpleStringA cardno, bool &bMismatch);
@@ -1131,7 +1129,6 @@ private:
 	bool IfUseRf();
 	CSimpleStringA m_EacQueryHost, m_csSwallowCardUrl, m_csSyncMaterialUrl;
 	MagTracks m_magTracks;
-
 public:
 	int EjectJS(SpReqAnsContext<CardIssuerStandService_EjectJS_Req, CardIssuerStandService_EjectJS_Ans>::Pointer ctx);
 
@@ -1166,6 +1163,13 @@ public:
 	}
 	void SetDoExitFlag(bool bFlag) { m_bDoExit = bFlag; }
 	int PowerOffIC(int type);//0:接触IC 1:非接
+	virtual void OnStateTrans(int iSrcState, int iDstState);
+
+	CSimpleStringA getRTACode(DWORD dwUserCode) {
+		CSimpleStringA rtaMsg = this->GetEntityBase()->GetFunction()->UserCodeToRTACode(dwUserCode);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("rtaMsg=%s", rtaMsg.GetData());
+		return rtaMsg;
+	}
 private:
 	bool m_bCancelInsert;
 	bool m_quickSelfcheck;
@@ -1214,7 +1218,7 @@ struct IssueTask : public ITaskSp
 			e = new FSMEvent(USER_EVT_ISSUE_EX_FINISHED);
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("IssueTask:ctx is null");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("IssueTask:ctx is null");
 			return;
 		}
 		e->param1 = fsm->IssueCard(ctx,ctxEx);

+ 6 - 2
Module/mod_CardIssuerStand/CardIssuer_UserErrorCode.h → Module/mod_CardIssuerStand/CardIssuerStand_UserErrorCode.h

@@ -173,7 +173,7 @@
 
 //LogWarn real root config
 #define CardIssuer_UserErrorCode_Real_Root_Config					(CardIssuer_UserErrorCode_Start + 153)	//适配器实际的root配置
-#define CardIssuer_UserErrorCode_DupCallPreOnline_WhileInWorking	(CardIssuer_UserErrorCode_Start + 154)	//CardIssuer实体正忙,再次收到跨机激活
+#define CardIssuer_UserErrorCode_DupCallPreOnline_WhileInWorking	(CardIssuer_UserErrorCode_Start + 154)	//实体正忙,再次收到跨机激活
 #define CardIssuer_UserErrorCode_Hopper1_Mixed_Too_Much				(CardIssuer_UserErrorCode_Start + 155)	//卡箱1异常(连续吞卡过多)
 #define CardIssuer_UserErrorCode_Hopper2_Mixed_Too_Much				(CardIssuer_UserErrorCode_Start + 156)	//卡箱2异常(连续吞卡过多)
 #define CardIssuer_UserErrorCode_Hopper3_Mixed_Too_Much				(CardIssuer_UserErrorCode_Start + 157)	//卡箱3异常(连续吞卡过多)
@@ -224,7 +224,11 @@
 #define CardIssuer_UserErrorCode_Forget_Fetch_Card_Capture_Succ					0x20300307 //超时未取卡,已吞卡,请从吞卡箱中取卡
 #define CardIssuer_UserErrorCode_Forget_Fetch_Card_Capture_Fail					0x20300308 //超时未取卡,吞卡失败,请从发卡器取卡
 #define CardIssuer_UserErrorCode_Split_ICTrack2_Failed							0x20300309 //IC磁道2解析失败
-
+#define CardIssuer_UserErrorCode_CardAssistLoadFailed							0x2030030A //加载卡集对象失败
+#define CardIssuer_UserErrorCode_Write_RunCfgFile_Failed						0x2030030B //写运行时文件失败
+#define CardIssuer_UserErrorCode_ParseIC_Data_Fail								0x2030030C //ic数据解析异常
+#define CardIssuer_UserErrorCode_SplitTrack2_Fail								0x2030030D //拆解磁条2信息失败
+#define CardIssuer_UserErrorCode_ParseTrack_Data_Fail							0x2030030E //磁条信息解析异常
 
 //卡机流程状态报错
 #define CardIssuer_UserErrorCode_PROCESS_IDLE				0x20300402		//当前处于卡机无卡空闲状态,无法处理此请求

+ 6 - 9
Module/mod_CardIssuerStand/mod_cardissuer.cpp → Module/mod_CardIssuerStand/mod_cardissuerStand.cpp

@@ -6,7 +6,7 @@
 #pragma once
 
 #include "SpBase.h"
-#include "mod_cardissuer.h"
+#include "mod_cardissuerStand.h"
 
 #include "CardIssuerClass.h"
 
@@ -59,7 +59,7 @@ void CardIssuerServerSession::Handle_PreOnline(SpReqAnsContext<CardIssuerStandSe
 {
 	LOG_FUNCTION();
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("PreOnline");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("PreOnline , req.businessData[%s], req.reserved1:[%s]", ctx->Req.businessData.GetData(), ctx->Req.reserved1.GetData());
 	m_pEntity->PreOnline(ctx);
 }
 void CardIssuerServerSession::Handle_PostOnline(SpReqAnsContext<CardIssuerStandService_PostOnline_Req, CardIssuerStandService_PostOnline_Ans>::Pointer ctx)
@@ -115,14 +115,14 @@ void CardIssuerServerSession::Handle_SetSomeFlag(SpReqAnsContext<CardIssuerStand
 {
 	LOG_FUNCTION();
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("SetSomeFlag");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("SetSomeFlag , IssueBusiness=%d", ctx->Req.IssueBusiness);
 	m_pEntity->SetSomeFlag(ctx);
 }
 void CardIssuerServerSession::Handle_IssueEx(SpReqAnsContext<CardIssuerStandService_IssueEx_Req, CardIssuerStandService_IssueEx_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("IssueEx");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("IssueEx, Req.hopper=%d",ctx->Req.hopper);
 	m_pEntity->IssueEx(ctx);
 }
 void CardIssuerServerSession::Handle_SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCommand_Req, CardIssuerStandService_SAMICCommand_Ans>::Pointer ctx)
@@ -151,7 +151,7 @@ void CardIssuerServerSession::Handle_ReadJS(SpReqAnsContext<CardIssuerStandServi
 {
 	LOG_FUNCTION();
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke ReadJS");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke ReadJS req.aid=%s, req.business=%s", ctx->Req.aid.GetData(), ctx->Req.businessData.GetData());
 	m_pEntity->ReadJS(ctx);
 }
 void CardIssuerServerSession::Handle_PostOnlineJS(SpReqAnsContext<CardIssuerStandService_PostOnlineJS_Req, CardIssuerStandService_PostOnlineJS_Ans>::Pointer ctx)
@@ -186,7 +186,7 @@ void CardIssuerServerSession::Handle_IssueFromBoxJS(SpReqAnsContext<CardIssuerSt
 {
 	LOG_FUNCTION();
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke IssueFromBoxJS");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke IssueFromBoxJS Req.hopper=%d", ctx->Req.hopper);
 	m_pEntity->IssueFromBoxJS(ctx);
 }
 void CardIssuerServerSession::Handle_InsertJS(SpReqAnsContext<CardIssuerStandService_InsertJS_Req, CardIssuerStandService_InsertJS_Ans>::Pointer ctx)
@@ -209,9 +209,6 @@ void CCardIssuerEntity::OnSysVarEvent(const char* pszKey, const char* pszValue,
 	if ((_strnicmp(pszKey, "UIState", strlen("UIState")) == 0))
 	{
 		m_fsm.OnUIState4SetWhatPage(pszValue);
-		if (_strnicmp(pszValue, "M", strlen("M")) == 0) {
-			m_fsm.SetEnterMainPage();//ÉèÖýøÈëÊ×Ò³
-		}
 	}
 
 }

+ 11 - 11
Module/mod_CardIssuerStand/mod_cardissuer.h → Module/mod_CardIssuerStand/mod_cardissuerStand.h

@@ -1,6 +1,6 @@
 #include "CardIssuerStand_server_g.h"
 #include "CardIssuerStand_def_g.h"
-#include "CardIssuerFSM.h"
+#include "CardIssuerStandFSM.h"
 #include "DevEntityCommBase.hpp"
 using namespace CardIssuerStand;
 
@@ -165,7 +165,7 @@ public:
 			if (ctx->Req.reserved1.GetLength() > 0 && strnicmp("kaku#", (const char*)ctx->Req.reserved1, 5) == 0)
 			{
 				int state = m_fsm.GetFSMState();
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("m_currentFSMState:%d", state));
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("PreOnline m_currentFSMState:%d", state));
 				if (state == 9)
 				{
 					ctx->Answer(Error_BridgeNotOK);
@@ -234,7 +234,7 @@ public:
 	}
 	void SetSomeFlag(SpReqAnsContext<CardIssuerStandService_SetSomeFlag_Req, CardIssuerStandService_SetSomeFlag_Ans>::Pointer ctx)
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("set issue flag to %d", ctx->Req.IssueBusiness);
+		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("set issue flag to %d", ctx->Req.IssueBusiness);
 		if (ctx->Req.IssueBusiness == 1)
 			m_fsm.FrontSetIssueFlag(true);
 		else if (ctx->Req.IssueBusiness == 0)
@@ -253,7 +253,7 @@ public:
 		{
 			ctx->Ans.reserved2.Init(1);
 			ctx->Ans.reserved2[0] = m_fsm.GetPreOnlineICCardNo();
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetPreOnlineICCardNo:%d", ctx->Ans.reserved2[0].GetLength());
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("GetPreOnlineICCardNo:%d", ctx->Ans.reserved2[0].GetLength());
 		}
 		if (ctx->Req.reserved1.GetCount() > 0)
 		{
@@ -270,7 +270,7 @@ public:
 	{
 		LOG_FUNCTION();
 		int state = m_fsm.GetFSMState();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("m_currentFSMState:%d", state));
+
 		if (!m_fsm.GetDevInitFlag()) {
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
 		}
@@ -332,7 +332,7 @@ public:
 		else if (_stricmp(m_fsm.GetCurrStateName(), "Hold") != 0) {
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadJS req is unhandled ,CurrState=%d", state);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("ReadJS req is unhandled ,CurrState=%d", state);
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {
@@ -351,7 +351,7 @@ public:
 		else if (_stricmp(m_fsm.GetCurrStateName(), "Hold") != 0) {
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("PostOnlineJS req is unhandled ,CurrState=%d", state);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("PostOnlineJS req is unhandled ,CurrState=%d", state);
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {
@@ -370,7 +370,7 @@ public:
 		else if (_stricmp(m_fsm.GetCurrStateName(), "Hold") != 0) {
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectJS req is unhandled ,CurrState=%d", state);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("EjectJS req is unhandled ,CurrState=%d", state);
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {
@@ -394,7 +394,7 @@ public:
 		else {
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CaptureJS req is unhandled ,CurrState=%d", state);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("CaptureJS req is unhandled ,CurrState=%d", state);
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 
@@ -419,7 +419,7 @@ public:
 		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("IssueFromBoxJS req is unhandled ,CurrState=%d", state);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("IssueFromBoxJS req is unhandled ,CurrState=%d", state);
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {
@@ -437,7 +437,7 @@ public:
 		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("InsertJS req is unhandled ,CurrState=%d", state);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("InsertJS req is unhandled ,CurrState=%d", state);
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {

+ 90 - 72
Module/mod_CardReadAdapter/CardReadAdapterFSM.cpp

@@ -125,7 +125,7 @@ unsigned int CCardReadAdapterFSM::s2_on_event(FSMEvent* pEvt)
 			//RVC.Stand2S, RVC.CardStore
 			//	ContactlessCard:
 			//		--RVC.Stand2S
-			//	CardIssuer:
+			//	CardIssuerStand or CardIssuerStore:
 			//		--no matter what MachineType is,just call it 
 			pEvt->SetHandled();
 			CardReadEvent* cre = dynamic_cast<CardReadEvent*>(pEvt);
@@ -139,7 +139,7 @@ unsigned int CCardReadAdapterFSM::s2_on_event(FSMEvent* pEvt)
 				{
 					bContactlessCard = true;
 					GetEntityBase()->GetFunction()->PostThreadPoolTask(cTask);
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("ReadTask to ContactlessCard");
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("ReadTask to ContactlessCard");
 				}
 			}
 			//oilyang@20200426 暂时未发现这行代码的用处,可能简版?后来废弃。暂时保留,后续考虑去掉
@@ -151,7 +151,6 @@ unsigned int CCardReadAdapterFSM::s2_on_event(FSMEvent* pEvt)
 				{
 					bCardIssuer = true;
 					GetEntityBase()->GetFunction()->PostThreadPoolTask(iTask);
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("ReadTask to CardIssuer");
 				}
 				if (bCardIssuer || bContactlessCard)
 					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("ReadTask, bCardIssuer,bContactlessCard:%d,%d", bCardIssuer, bContactlessCard);
@@ -454,23 +453,30 @@ unsigned int CCardReadAdapterFSM::s3_on_event(FSMEvent* pEvt)
 				ret = 0;
 			}
 		}
-		if (pEvt->param1 == 7)//CardIssuer Timeout,need to cancel ContactlessCard insert
+		if (pEvt->param1 == 7)//CardIssuerStand or CardIssuerStore Timeout,need to cancel ContactlessCard insert
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuer Timeout,need to cancel ContactlessCard insert");
+			if (!IsCardIssuerStore()) {
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand Timeout,need to cancel ContactlessCard insert");
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStore Timeout,need to cancel ContactlessCard insert");
+			}
 			if (IsContactlessCardSessionOK())
 				(*m_pContactless)(EntityResource::getLink().upgradeLink())->CancelInsert();
 			crfe->ctx->Answer(Error_TimeOut);
 			ret = 0;
 			break;
 		}
-		else if (pEvt->param1 == 8)//ContactlessCard Timeout,need to cancel CardIssuer insert
+		else if (pEvt->param1 == 8)//ContactlessCard Timeout,need to cancel CardIssuerStand or CardIssuerStore insert
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ContactlessCard Timeout,need to cancel CardIssuer insert");
+			
 			if (IsCardIssuerSessionOK()) {
 				if (!IsCardIssuerStore()) {
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ContactlessCard Timeout,need to cancel CardIssuerStand insert");
 					(*m_pCardIssuer)(EntityResource::getLink().upgradeLink())->CancelInsert();
 				}
 				else {
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ContactlessCard Timeout,need to cancel CardIssuerStore insert");
 					(*m_pCardIssuerStore)(EntityResource::getLink().upgradeLink())->CancelInsert();
 				}
 			}
@@ -481,7 +487,7 @@ unsigned int CCardReadAdapterFSM::s3_on_event(FSMEvent* pEvt)
 		}
 		else if (pEvt->param1 == 9)//ContactlessCard Timeout,need to cancel ContactlessCard insert
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ContactlessCard Timeout,need to cancel CardIssuer insert");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("need to cancel ContactlessCard insert");
 			if (IsContactlessCardSessionOK())
 				(*m_pContactless)(EntityResource::getLink().upgradeLink())->CancelInsert();
 			crfe->ctx->Answer(Error_TimeOut);
@@ -502,9 +508,15 @@ unsigned int CCardReadAdapterFSM::s3_on_event(FSMEvent* pEvt)
 		}
 		else if (m_busCtx.eCardFromWhich == Card_In_CardIssuer)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("as card in CardIssuer,to cancel others");
-			if (IsContactlessCardSessionOK())
-				(*m_pContactless)(EntityResource::getLink().upgradeLink())->CancelInsert();
+			//在读卡时已发送了非接取消读卡请求,此处不再重复发送
+			//if (!IsCardIssuerStore()) {
+			//	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("as card in CardIssuerStand,to cancel others");
+			//}
+			//else {
+			//	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("as card in CardIssuerStore,to cancel others");
+			//}
+			//if (IsContactlessCardSessionOK())
+			//	(*m_pContactless)(EntityResource::getLink().upgradeLink())->CancelInsert();
 		}
 		return ret;
 	}
@@ -647,7 +659,7 @@ int CCardReadAdapterFSM::Initial()
 	eErr = GetEntityBase()->GetFunction()->SetSysVar("CardEntityState", "E");
 	if (eErr != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("SetSysVar CardEntityState failed.%d",eErr);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SetSysVar CardEntityState failed.%d",eErr);
 	}
 	return 0;//oiltmp no need to connect. let function "CheckAndReconnectSession" do
 }
@@ -690,35 +702,35 @@ int CCardReadAdapterFSM::CardIssuerRead(SpReqAnsContext<CardReadAdapterService_R
 			{
 				if (qciAns.position == 2)//有卡
 				{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuer has card");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand has card, cancel ContactlessCard.");
 					bHasCard = true;
-					//oilyang@20220817 为什么要给默认值?CardIssuer->Read失败,没有必要PreOnline
+					//oilyang@20220817 为什么要给默认值?Read失败,没有必要PreOnline
 					//bNeedPreOnline = true;//不知道卡片类型,默认
 					m_busCtx.eCardFromWhich = Card_In_CardIssuer;
 					if (IsContactlessCardSessionOK())
 						(*m_pContactless)(EntityResource::getLink().upgradeLink())->CancelInsert();
 				}
-				else if (qciAns.position == 1) //CardIssuer GetDevStatus 调用异常
+				else if (qciAns.position == 1) //GetDevStatus 调用异常
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuer GetDevStatus failed");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuerStand GetDevStatus failed");
 					return 1;
 				}
 				else
 				{
 					if (m_bCancelAccept)
 					{
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("before call CardIssuer->Insert, have received cancel event");
+						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("before call CardIssuerStand->Insert, have received cancel event");
 						return 3;
 					}
 					CardIssuerStandService_Insert_Req req;
 					CardIssuerStandService_Insert_Ans ans;
 					req.aid = ctx->Req.aid;
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to call cardissuer insert..");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to call cardissuerStand insert..");
 					m_busCtx.eCardProcStage = Card_ProcStage_WaitForCard;
 					eErr = (*m_pCardIssuer)(EntityResource::getLink().upgradeLink())->Insert(req, ans, 59000, dwUsrErrCode, csRetStr);
 					if (eErr == Error_Succeed)
 					{
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Card insert into CardIssuer.");
+						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Card insert into CardIssuerStand, cancel ContactlessCard.");
 						bHasCard = true;
 						m_busCtx.eCardFromWhich = Card_In_CardIssuer;
 						m_busCtx.eCardProcStage = Card_ProcStage_Read;
@@ -726,7 +738,7 @@ int CCardReadAdapterFSM::CardIssuerRead(SpReqAnsContext<CardReadAdapterService_R
 							(*m_pContactless)(EntityResource::getLink().upgradeLink())->CancelInsert();
 					}
 					else {
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("CardIssuer Insert return:%d", eErr);
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("CardIssuerStand Insert return:%d", eErr);
 						//oilyang@20200827 if time out, we must told front caller 
 						//AND set returned value of 0 to change FSM state
 						if (eErr == Error_TimeOut)
@@ -779,7 +791,7 @@ int CCardReadAdapterFSM::CardIssuerRead(SpReqAnsContext<CardReadAdapterService_R
 				}
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("CardIssuer QueryCardInfo failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("CardIssuerStand QueryCardInfo failed return:%d", eErr);
 				return 1;//oilyang@20190709
 			}
 			if (bHasCard && bNeedPreOnline)
@@ -804,12 +816,12 @@ int CCardReadAdapterFSM::CardIssuerRead(SpReqAnsContext<CardReadAdapterService_R
 						if (eErr == Error_Succeed)
 							ctx->Ans.ICCardNo = ssfAns.reserved2[0];
 						else
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("CardIssuer SetSomeFlag failed return:%d", eErr);
+							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("CardIssuerStand SetSomeFlag failed return:%d", eErr);
 					}
 				}
 				else
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("CardIssuer PreOnline failed return:%d", eErr);
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("CardIssuerStand PreOnline failed return:%d", eErr);
 					ctx->Ans.result = "";
 					ctx->Ans.status = -1;
 				}
@@ -843,15 +855,15 @@ int CCardReadAdapterFSM::CardIssuerRead(SpReqAnsContext<CardReadAdapterService_R
 			{
 				if (qciAns.position == 2)//有卡
 				{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStore has card");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStore has card, cancel ContactlessCard.");
 					bHasCard = true;
-					//oilyang@20220817 为什么要给默认值?CardIssuer->Read失败,没有必要PreOnline
+					//oilyang@20220817 为什么要给默认值?Read失败,没有必要PreOnline
 					//bNeedPreOnline = true;//不知道卡片类型,默认
 					m_busCtx.eCardFromWhich = Card_In_CardIssuer;
 					if (IsContactlessCardSessionOK())
 						(*m_pContactless)(EntityResource::getLink().upgradeLink())->CancelInsert();
 				}
-				else if (qciAns.position == 1) //CardIssuer GetDevStatus 调用异常
+				else if (qciAns.position == 1) //GetDevStatus 调用异常
 				{
 					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuerStore GetDevStatus failed");
 					return 1;
@@ -871,7 +883,7 @@ int CCardReadAdapterFSM::CardIssuerRead(SpReqAnsContext<CardReadAdapterService_R
 					eErr = (*m_pCardIssuerStore)(EntityResource::getLink().upgradeLink())->Insert(req, ans, 59000, dwUsrErrCode, csRetStr);
 					if (eErr == Error_Succeed)
 					{
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Card insert into CardIssuerStore.");
+						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Card insert into CardIssuerStore, cancel ContactlessCard.");
 						bHasCard = true;
 						m_busCtx.eCardFromWhich = Card_In_CardIssuer;
 						m_busCtx.eCardProcStage = Card_ProcStage_Read;
@@ -1162,11 +1174,11 @@ int CCardReadAdapterFSM::IssueCard(SpReqAnsContext<CardReadAdapterService_Issue_
 				}
 				else
 					m_busCtx.eCardFromWhich = Card_In_CardIssuer;
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("req.hopper:%d Deem that CardIssuer has card after issuing succ. Set busCtx:findCard:%d,cardPos:%d"
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("req.hopper:%d Deem that CardIssuerStand has card after issuing succ. Set busCtx:findCard:%d,cardPos:%d"
 					, req.hopper, ans.reserved1[0], ans.reserved1[1]);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuer IssueCard failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuerStand IssueCard failed return:%d", eErr);
 			}
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("oiltest IssueEx retStr:%s", csRetStr.GetData());
 			ctx->Answer(eErr, dwUsrErrCode, csRetStr);
@@ -1229,7 +1241,7 @@ void CCardReadAdapterFSM::CancelRead()
 	if (IsCardIssuerSessionOK())
 	{
 		if (!IsCardIssuerStore()) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("CardIssuer read canceled by front user.");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("CardIssuerStand read canceled by front user.");
 			(*m_pCardIssuer)(EntityResource::getLink().upgradeLink())->CancelInsert();
 		}
 		else {
@@ -1351,7 +1363,7 @@ int CCardReadAdapterFSM::PreOnline(SpReqAnsContext<CardReadAdapterService_PreOnl
 				ctx->Ans.result = ans.result;
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("PreOnline, CardIssuer PreOnline failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("PreOnline, CardIssuerStand PreOnline failed return:%d", eErr);
 			}
 			ctx->Answer(eErr, dwUsrErrCode, csRetStr);
 		}
@@ -1417,7 +1429,7 @@ int CCardReadAdapterFSM::PostOnline(SpReqAnsContext<CardReadAdapterService_PostO
 				ctx->Ans.result = ans.result;
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("PostOnline, CardIssuer PostOnline failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("PostOnline, CardIssuerStand PostOnline failed return:%d", eErr);
 			}
 			ctx->Answer(eErr, dwUsrErrCode, csRetStr);
 		}
@@ -1473,10 +1485,10 @@ int CCardReadAdapterFSM::EjectCard(SpReqAnsContext<CardReadAdapterService_Eject_
 			{
 				m_busCtx.eCardFromWhich = Card_In_No_Where;
 				m_busCtx.eCardProcStage = Card_ProcStage_Eject;
-				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CardIssuer EjectCard suc.");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CardIssuerStand EjectCard suc.");
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectCard, CardIssuer EjectCard failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectCard, CardIssuerStand EjectCard failed return:%d", eErr);
 			}
 			ctx->Answer(eErr, dwUsrErrCode, csRetStr);
 		}
@@ -1535,12 +1547,12 @@ int CCardReadAdapterFSM::CaptureCard(SpReqAnsContext<CardReadAdapterService_Capt
 			eErr = (*m_pCardIssuer)(EntityResource::getLink().upgradeLink())->Capture(req, ans, 15000, dwUsrErrCode, csRetStr);
 			if (eErr == Error_Succeed)
 			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuer Capture card suc.");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand Capture card suc.");
 				m_busCtx.eCardFromWhich = Card_In_No_Where;
 				m_busCtx.eCardProcStage = Card_ProcStage_Capture;
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CaptureCard, CardIssuer Capture failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CaptureCard, CardIssuerStand Capture failed return:%d", eErr);
 			}
 			ctx->Answer(eErr, dwUsrErrCode, csRetStr);
 		}
@@ -1593,7 +1605,7 @@ int CCardReadAdapterFSM::QueryCardInfo(SpReqAnsContext<CardReadAdapterService_Qu
 				}
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryCardInfo, CardIssuer QueryCardInfo failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryCardInfo, CardIssuerStand QueryCardInfo failed return:%d", eErr);
 			}
 		}
 		else {
@@ -1657,7 +1669,7 @@ void CCardReadAdapterFSM::CheckAndReconnectSession()
 	while (1)
 	{
 		//the first time to connect or need to reconnect
-		//CardIssuer 分为卡机和卡库
+		//分为卡机和卡库
 		if (!IsCardIssuerStore()) {
 			if ((m_pCardIssuer == NULL || (m_pCardIssuer != NULL && m_pCardIssuer->QuerySessionClosed())))
 			{
@@ -1673,7 +1685,7 @@ void CCardReadAdapterFSM::CheckAndReconnectSession()
 					if (eErr != Error_Succeed)
 					{
 						if (cardIssuerCount % 120 == 0)//about 10 minutes can't connect to entity
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to entity CardIssuer failed.%d", eErr);
+							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to entity CardIssuerStand failed.%d", eErr);
 						cardIssuerCount++;
 						m_pCardIssuer->SafeDelete();
 						m_pCardIssuer = NULL;
@@ -1681,7 +1693,7 @@ void CCardReadAdapterFSM::CheckAndReconnectSession()
 					else
 					{
 						cardIssuerCount = 0;
-						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Connect to entity CardIssuer suc.");
+						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Connect to entity CardIssuerStand suc.");
 					}
 				}
 			}
@@ -1819,7 +1831,7 @@ int CCardReadAdapterFSM::SetSomeFlag(SpReqAnsContext<CardReadAdapterService_SetS
 				ctx->Answer(Error_Succeed);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuer SetSomeFlag failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardIssuerStand SetSomeFlag failed return:%d", eErr);
 				ctx->Answer(Error_Unexpect);
 			}
 		}
@@ -1847,7 +1859,7 @@ int CCardReadAdapterFSM::SetSomeFlag(SpReqAnsContext<CardReadAdapterService_SetS
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SetSomeFlag can only apply to CardIssuer.Or CardIssuer connected failed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SetSomeFlag is err, session is not ok");
 		ctx->Answer(Error_Unexpect);
 	}
 	return 0;
@@ -1885,7 +1897,7 @@ int CCardReadAdapterFSM::GetDevInfo(SpReqAnsContext<CardReadAdapterService_GetDe
 				ciState = 0;
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetDevInfo, CardIssuer GetDevInfo failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetDevInfo, CardIssuerStand GetDevInfo failed return:%d", eErr);
 			}
 		}
 		else {
@@ -1958,8 +1970,14 @@ int CCardReadAdapterFSM::GetDevInfo(SpReqAnsContext<CardReadAdapterService_GetDe
 		ctx->Ans.model[index] = csCIModel;
 		ctx->Ans.version[index] = csCIVersion;
 		ctx->Ans.state[index] = ciState;
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("CardIssuer, type:%s, model:%s, version:%s, state:%d", 
+		if (!IsCardIssuerStore()) {
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("CardIssuerStand, type:%s, model:%s, version:%s, state:%d",
 				csCIType.GetData(), csCIModel.GetData(), csCIVersion.GetData(), ciState);
+		}
+		else {
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("CardIssuerStore, type:%s, model:%s, version:%s, state:%d",
+				csCIType.GetData(), csCIModel.GetData(), csCIVersion.GetData(), ciState);
+		}
 		index++;
 	}
 	if (bCC)
@@ -2009,7 +2027,7 @@ int CCardReadAdapterFSM::GetMaterialCount(SpReqAnsContext<CardReadAdapterService
 				ctx->Answer(Error_Succeed);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetMaterialCount, CardIssuer GetMaterialCountEx failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetMaterialCount, CardIssuerStand GetMaterialCountEx failed return:%d", eErr);
 				ctx->Answer(Error_Unexpect, dwUsrErrCode);
 			}
 		}
@@ -2047,7 +2065,7 @@ int CCardReadAdapterFSM::GetMaterialCount(SpReqAnsContext<CardReadAdapterService
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetMaterialCountEx can only apply to CardIssuer.Or CardIssuer connected failed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetMaterialCountEx is err, session is not ok");
 		ctx->Answer(Error_Unexpect);
 	}
 	return 0;
@@ -2084,7 +2102,7 @@ int CCardReadAdapterFSM::SetMaterialCount(SpReqAnsContext<CardReadAdapterService
 				ctx->Answer(Error_Succeed);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SetMaterialCount, CardIssuer SetMaterialCountEx failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SetMaterialCount, CardIssuerStand SetMaterialCountEx failed return:%d", eErr);
 				ctx->Answer(Error_Unexpect, dwUsrErrCode);
 			}
 		}
@@ -2122,7 +2140,7 @@ int CCardReadAdapterFSM::SetMaterialCount(SpReqAnsContext<CardReadAdapterService
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SetMaterialCountEx can only apply to CardIssuer.Or CardIssuer connected failed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SetMaterialCountEx is err, session is not ok");
 		ctx->Answer(Error_Unexpect);
 	}
 	return 0;
@@ -2144,7 +2162,7 @@ int CCardReadAdapterFSM::GetSCIInfo(SpReqAnsContext<CardReadAdapterService_GetSC
 				ctx->Ans.reserved2.Copy(ans.reserved2);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetSCIInfo, CardIssuer GetSCIInfo failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetSCIInfo, CardIssuerStand GetSCIInfo failed return:%d", eErr);
 			}
 			ctx->Answer(eErr);
 		}
@@ -2169,7 +2187,7 @@ int CCardReadAdapterFSM::GetSCIInfo(SpReqAnsContext<CardReadAdapterService_GetSC
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Entity CardIssuer is not ok.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetSCIInfo is err, session is not ok");
 		ctx->Answer(Error_Unexpect);
 	}
 	return 0;
@@ -2192,7 +2210,7 @@ int CCardReadAdapterFSM::OpenSafeLock(SpReqAnsContext<CardReadAdapterService_Ope
 				ctx->Ans.reserved2.Copy(ans.reserved2);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("OpenSafeLock, CardIssuer OpenSafeLock failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("OpenSafeLock, CardIssuerStand OpenSafeLock failed return:%d", eErr);
 			}
 			ctx->Answer(eErr);
 		}
@@ -2217,7 +2235,7 @@ int CCardReadAdapterFSM::OpenSafeLock(SpReqAnsContext<CardReadAdapterService_Ope
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Entity CardIssuer is not ok.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("OpenSafeLock is err, session is not ok");
 		ctx->Answer(Error_Unexpect);
 	}
 	return 0;
@@ -2281,7 +2299,7 @@ int CCardReadAdapterFSM::SAMICCommand(SpReqAnsContext<CardReadAdapterService_SAM
 				ctx->Ans.reserved2.Copy(ans.reserved2);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SAMICCommand, CardIssuer SAMICCommand failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SAMICCommand, CardIssuerStand SAMICCommand failed return:%d", eErr);
 
 			}
 			ctx->Answer(eErr);
@@ -2341,7 +2359,7 @@ int CCardReadAdapterFSM::QueryPrinterStatus(SpReqAnsContext<CardReadAdapterServi
 				ctx->Ans.reserved2.Copy(ans.reserved2);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryPrinterStatus, CardIssuer QueryPrinterStatus failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryPrinterStatus, CardIssuerStand QueryPrinterStatus failed return:%d", eErr);
 			}
 			ctx->Answer(eErr);
 			return 0;
@@ -2371,7 +2389,7 @@ int CCardReadAdapterFSM::QueryPrinterStatus(SpReqAnsContext<CardReadAdapterServi
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuer session is not ok.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryPrinterStatus is err, session is not ok");
 		ctx->Answer(Error_Param);
 		return 1;
 	}
@@ -2400,7 +2418,7 @@ int CCardReadAdapterFSM::Print(SpReqAnsContext<CardReadAdapterService_Print_Req,
 				ctx->Ans.reserved2.Copy(ans.reserved2);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Print, CardIssuer Print failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Print, CardIssuerStand Print failed return:%d", eErr);
 			}
 			ctx->Answer(eErr);
 			return 0;
@@ -2433,7 +2451,7 @@ int CCardReadAdapterFSM::Print(SpReqAnsContext<CardReadAdapterService_Print_Req,
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuer session is not ok.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Print is err, session is not ok");
 		ctx->Answer(Error_Param);
 		return 1;
 	}
@@ -2471,7 +2489,7 @@ int CCardReadAdapterFSM::QuerySCIList(SpReqAnsContext<CardReadAdapterService_Que
 				ctx->Ans.reserved2.Copy(ans.reserved2);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QuerySCIList, CardIssuer QuerySCIList failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QuerySCIList, CardIssuerStand QuerySCIList failed return:%d", eErr);
 			}
 			ctx->Answer(eErr, dwUsrErrCode);
 			return 0;
@@ -2511,7 +2529,7 @@ int CCardReadAdapterFSM::QuerySCIList(SpReqAnsContext<CardReadAdapterService_Que
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuer session is not ok.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QuerySCIList is err, session is not ok");
 		ctx->Answer(Error_Param);
 		return 1;
 	}
@@ -2537,7 +2555,7 @@ int CCardReadAdapterFSM::BindSCI(SpReqAnsContext<CardReadAdapterService_BindSCI_
 				ctx->Ans.reserved2.Copy(ans.reserved2);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BindSCI, CardIssuer BindSCI failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BindSCI, CardIssuerStand BindSCI failed return:%d", eErr);
 			}
 			ctx->Answer(eErr, dwUsrErrCode);
 			return 0;
@@ -2566,7 +2584,7 @@ int CCardReadAdapterFSM::BindSCI(SpReqAnsContext<CardReadAdapterService_BindSCI_
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuer session is not ok.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("BindSCI is err, session is not ok");
 		ctx->Answer(Error_Param);
 		return 1;
 	}
@@ -2712,7 +2730,7 @@ int CCardReadAdapterFSM::QueryCardInfoOnStore(SpReqAnsContext<CardReadAdapterSer
 				ctx->Answer(Error_Succeed);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryCardInfoOnStore, CardIssuer QueryCardInfoOnStore failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryCardInfoOnStore, CardIssuerStand QueryCardInfoOnStore failed return:%d", eErr);
 				ctx->Answer(eErr, dwUserErrorCode);
 			}
 		}
@@ -2746,7 +2764,7 @@ int CCardReadAdapterFSM::QueryCardInfoOnStore(SpReqAnsContext<CardReadAdapterSer
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Entity CardIssuer is not ok.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("QueryCardInfoOnStore is err, session is not ok");
 		ctx->Answer(Error_DevNotAvailable, CardReadAdapter_UserErrorCode_PreOnline_CardIssuer_Not_Ok);
 	}
 	return 0;
@@ -2780,7 +2798,7 @@ int CCardReadAdapterFSM::GetAddCardInfo(SpReqAnsContext<CardReadAdapterService_G
 				ctx->Answer(Error_Succeed);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetAddCardInfo, CardIssuer GetAddCardInfo failed return:%d,%x", eErr, dwUserErrorCode);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetAddCardInfo, CardIssuerStand GetAddCardInfo failed return:%d,%x", eErr, dwUserErrorCode);
 				ctx->Answer(eErr, dwUserErrorCode);
 			}
 		}
@@ -2815,7 +2833,7 @@ int CCardReadAdapterFSM::GetAddCardInfo(SpReqAnsContext<CardReadAdapterService_G
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Entity CardIssuer is not ok.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetAddCardInfo is err, session is not ok");
 		ctx->Answer(Error_DevNotAvailable, CardReadAdapter_UserErrorCode_PreOnline_CardIssuer_Not_Ok);
 	}
 	return 0;
@@ -2840,14 +2858,14 @@ void CCardReadAdapterFSM::SelfTest(EntityTestEnum eTestType, CSmartPointer<ITran
 int CCardReadAdapterFSM::CrossTermCall(SpReqAnsContext<CardReadAdapterService_CrossTermCall_Req, CardReadAdapterService_CrossTermCall_Ans>::Pointer cctx)
 {
 	ErrorCodeEnum eErr = Error_Deprecated;
-	DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("CrossTermCall,type:%x", cctx->Req.type);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CrossTermCall,type:%x", cctx->Req.type);
 	cctx->Answer((ErrorCodeEnum)eErr);
 	return 0;
 }
 void CCardReadAdapterFSM::CrossTermInvokeInfo(SpOnewayCallContext<CardReadAdapterService_CrossTermInvokeInfo_Info>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("entity sn:%x,type:%d,errcode:%x", ctx->Info.nEntityID, ctx->Info.type, ctx->Info.result);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("entity sn:%x,type:%d,errcode:%x", ctx->Info.nEntityID, ctx->Info.type, ctx->Info.result);
 }
 int CCardReadAdapterFSM::LocalCallHeartBeat(int method, CBlob &bbSend,bool bTwoWay)
 {
@@ -2891,7 +2909,7 @@ void CCardReadAdapterFSM::CancelReadForEntity(ModuleType eModule)
 	if (IsTheEntity(eModule, Module_CardIssuer) && IsCardIssuerSessionOK())
 	{
 		if (!IsCardIssuerStore()) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Set cancel read by ContactlessCard flag of CardIssuer.");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Set cancel read by ContactlessCard flag of CardIssuerStand.");
 			CardIssuerStandService_SetSomeFlag_Req req;
 			CardIssuerStandService_SetSomeFlag_Ans ans;
 			req.IssueBusiness = 3;
@@ -2899,7 +2917,7 @@ void CCardReadAdapterFSM::CancelReadForEntity(ModuleType eModule)
 			(*m_pCardIssuer)(EntityResource::getLink().upgradeLink())->CancelInsert();
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Set cancel read by ContactlessCard flag of CardIssuer.");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Set cancel read by ContactlessCard flag of CardIssuerStore.");
 			CardIssuerStoreService_SetSomeFlag_Req req;
 			CardIssuerStoreService_SetSomeFlag_Ans ans;
 			req.IssueBusiness = 3;
@@ -2943,7 +2961,7 @@ int CCardReadAdapterFSM::PrintCardIm(SpReqAnsContext<CardReadAdapterService_Prin
 				ctx->Ans.reserved4.Copy(ans.reserved4);
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("PrintCardImmediately, CardIssuer PrintCardImmediately failed return:%d", eErr);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("PrintCardImmediately, CardIssuerStand PrintCardImmediately failed return:%d", eErr);
 			}
 			ctx->Answer(eErr);
 			return 0;
@@ -2980,7 +2998,7 @@ int CCardReadAdapterFSM::PrintCardIm(SpReqAnsContext<CardReadAdapterService_Prin
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuer session is not ok.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("PrintCardIm is err, session is not ok");
 		ctx->Answer(Error_Param);
 		return 1;
 	}
@@ -3017,7 +3035,7 @@ int CCardReadAdapterFSM::QueryCIStatus(SpReqAnsContext<CardReadAdapterService_Qu
 				}
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("CardIssuer QueryCIStatus failed return:%d", eErr));
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("CardIssuerStand QueryCIStatus failed return:%d", eErr));
 			}
 			ctx->Answer(eErr, dwUsrErrCode);
 			return 0;

+ 7 - 7
Module/mod_CardReadAdapter/CardReadAdapterFSM.h

@@ -8,7 +8,7 @@
 #include "CommEntityUtil.hpp"
 #include "CardIssuerClass.h"
 //#include "CardAssist.h"
-#include "CardIssuer_UserErrorCode.h"
+#include "CardIssuerStand_UserErrorCode.h"
 #include "CardIssuerStore_UserErrorCode.h"
 //#include "ICDataElement.h"
 using namespace CardReadAdapter;
@@ -180,7 +180,7 @@ public:
 	~CancelReadEvent(){}
 	virtual void OnUnhandled()
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card cancel accept unhandled");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("card cancel accept unhandled");
 	}
 };
 class ReadWaitMoreEvent : public FSMEvent
@@ -190,7 +190,7 @@ public:
 	~ReadWaitMoreEvent(){}
 	virtual void OnUnhandled()
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadWaitMore unhandled");
+		
 	}
 };
 class CardReadEvent : public FSMEvent
@@ -220,7 +220,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card read unhandled(new)");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("card read unhandled(new)");
 		}
 	}
 protected:
@@ -311,7 +311,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card read unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card write unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -328,7 +328,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("card read unhandled(new)");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("card write unhandled(new)");
 		}
 	}
 };
@@ -839,7 +839,7 @@ private:
 	SpReqAnsContext<CardReadAdapterService_Read_Req, CardReadAdapterService_Read_Ans>::Pointer m_readCtx;
 
 	//m_lastModule:0~7
-	//0:all; 1:CardIssuer; 2:ContactlessCard
+	//0:all; 1:CardIssuerStand or CardIssuerStore; 2:ContactlessCard
 	int m_lastModule,m_lastS2Event, m_lastS2EvtParam1;
 	SP::Module::Comm::What m_eMachineType;
 	WORD m_majorVerion,m_minorVerion;

+ 2 - 2
Module/mod_CardReadAdapter/CardReadAdapter_UserErrorCode.h

@@ -12,8 +12,8 @@
 
 #define CardReadAdapter_UserErrorCode_PreOnline_Invoke						(CardReadAdapter_UserErrorCode_Start + 6)	//web端发起一笔跨机业务
 #define CardReadAdapter_UserErrorCode_PreOnline_Result						(CardReadAdapter_UserErrorCode_Start + 7)	//跨机返回结果
-#define CardReadAdapter_UserErrorCode_PreOnline_CardIssuer_Not_Ok			(CardReadAdapter_UserErrorCode_Start + 8)	//CardIssuer实体异常
-#define CardReadAdapter_UserErrorCode_CardIssuer_Is_Working					(CardReadAdapter_UserErrorCode_Start + 9)	//CardIssuer实体正忙
+#define CardReadAdapter_UserErrorCode_PreOnline_CardIssuer_Not_Ok			(CardReadAdapter_UserErrorCode_Start + 8)	//卡机实体异常
+#define CardReadAdapter_UserErrorCode_CardIssuer_Is_Working					(CardReadAdapter_UserErrorCode_Start + 9)	//卡机实体正忙
 #define CardReadAdapter_UserErrorCode_HBService_No_Return					(CardReadAdapter_UserErrorCode_Start + 10)	//心跳服务超时未返回
 #define CardReadAdapter_UserErrorCode_CardActive_Unexpect					(CardReadAdapter_UserErrorCode_Start + 11)	//跨机收到未处理的返回(某些返回可能在后期细化中提供处理)
 

+ 2 - 3
Module/mod_CardReadAdapter/mod_CardReadAdapter.cpp

@@ -16,8 +16,7 @@ void CardReadAdapterServerSession::Handle_Read(SpReqAnsContext<CardReadAdapterSe
 {
 	LOG_FUNCTION();
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Read")("Invoke Read");
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Module:%d,lightPos:%d,bus data size:%d",ctx->Req.module,ctx->Req.lightPos,ctx->Req.businessData.GetLength());
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI("Read")("Invoke Read Module:%d,lightPos:%d,bus data size:%d", ctx->Req.module, ctx->Req.lightPos, ctx->Req.businessData.GetLength());
 	if (ctx->Req.reserved1.GetCount() > 0)
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("reserved1[0]:%d",ctx->Req.reserved1[0]);
 	m_pEntity->Read(ctx);
@@ -348,7 +347,7 @@ void CCardReadAdapterEntity::DoStart()
 	CSmartPointer<IConfigInfo> spCerConfig;
 	ErrorCodeEnum eErr = GetFunction()->OpenConfig(Config_CenterSetting, spCerConfig);
 	if (eErr != Error_Succeed) {
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("open CenterSetting file failed!");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open CenterSetting file failed!");
 		return;
 	}
 	do

+ 1 - 1
Module/mod_CardReadAdapter/mod_CardReadAdapter.h

@@ -177,7 +177,7 @@ public:
 		if (m_fsm.GetCurrState()->id == 3)
 		{
 			ctx->Answer(Error_DevNotAvailable, CardReadAdapter_UserErrorCode_CardIssuer_Is_Working);
-			LogWarn(Severity_Middle, Error_DevNotAvailable, CardReadAdapter_UserErrorCode_CardIssuer_Is_Working, "CardIssuer is working,duplicated call.");
+			LogWarn(Severity_Middle, Error_DevNotAvailable, CardReadAdapter_UserErrorCode_CardIssuer_Is_Working, "CardReadAdapter is working,duplicated call.");
 		}
 		else
 		{

+ 5 - 1
Module/mod_ContactlessCard/ContactlessCard_UserErrorCode.h

@@ -11,7 +11,7 @@
 #define ContactlessCard_UserErrorCode_RootInfo	(ContactlessCard_UserErrorCode_Start + 6)	//root信息
 
 #define ContactlessCard_UserErrorCode_FORGET_FETCH	(ContactlessCard_UserErrorCode_Start + 7)	//客户忘记取卡
-#define ContactlessCard_UserErrorCode_DllLoadFailed	 (ContactlessCard_UserErrorCode_Start + 8)	//加载dll失败
+#define ContactlessCard_UserErrorCode_DllLoadFailed	 (ContactlessCard_UserErrorCode_Start + 8)	//加载CMBPrint.dll失败
 
 
 //预留一部分用于CardAssist.cpp中的报错告警
@@ -38,6 +38,10 @@
 #define ContactlessCard_UserErrorCode_ReadAccount							(ContactlessCard_UserErrorCode_Start + 37)	//读到卡片信息
 
 #define ContactlessCard_UserErrorCode_EntityInStateCannotProcess			(CardIssuerStore_UserErrorCode_Start + 38) //卡机当前状态无法处理此请求
+#define ContactlessCard_UserErrorCode_GetDevStatus_Fail						(CardIssuerStore_UserErrorCode_Start + 39) //循环取卡机状态失败
+#define ContactlessCard_UserErrorCode_CardAssistLoadFailed					(ContactlessCard_UserErrorCode_Start + 40)	//加载卡集对象失败
+#define ContactlessCard_UserErrorCode_SplitTrack2_Fail						(ContactlessCard_UserErrorCode_Start + 41)	//拆解磁条2信息失败
+#define ContactlessCard_UserErrorCode_ParseIC_Data_Fail						(ContactlessCard_UserErrorCode_Start + 42)	//ic数据解析异常
 
 //非接流程状态报错
 #define ContactlessCard_UserErrorCode_PROCESS_IDLE					0x21300402		//当前处于卡机无卡空闲状态,无法处理此请求

+ 121 - 177
Module/mod_ContactlessCard/ContactlessFSM.cpp

@@ -63,6 +63,7 @@ void CContactlessCardFSM::s1_on_entry()
 void CContactlessCardFSM::s1_on_exit()
 {
 	LOG_FUNCTION();
+
 }
 unsigned int CContactlessCardFSM::s1_on_event(FSMEvent* event)
 {
@@ -96,7 +97,7 @@ void CContactlessCardFSM::s2_on_exit()
 }
 unsigned int CContactlessCardFSM::s2_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s2 evt(%d)",pEvt->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s2 evt(%d)",pEvt->iEvt);
 	int ret = 0;
 	switch(pEvt->iEvt)
 	{
@@ -195,7 +196,7 @@ void CContactlessCardFSM::s3_on_exit()
 }
 unsigned int CContactlessCardFSM::s3_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s3 evt (%d)(%d)",pEvt->iEvt,pEvt->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s3 evt (%d,%d)",pEvt->iEvt,pEvt->param1);
 	int ret = 0;
 	switch(pEvt->iEvt)
 	{
@@ -255,7 +256,7 @@ void CContactlessCardFSM::s4_on_exit()
 }
 unsigned int CContactlessCardFSM::s4_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s4 evt(%d,%d)",pEvt->iEvt,pEvt->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s4 evt(%d,%d)",pEvt->iEvt,pEvt->param1);
 	switch(pEvt->iEvt){
 		case USER_EVT_ACCEPT:
 		{
@@ -343,7 +344,7 @@ void CContactlessCardFSM::s5_on_exit()
 }
 unsigned int CContactlessCardFSM::s5_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s5 event(%d)",pEvt->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s5 event(%d)",pEvt->iEvt);
 	switch(pEvt->iEvt)
 	{
 
@@ -378,7 +379,7 @@ void CContactlessCardFSM::s6_on_exit()
 }
 unsigned int CContactlessCardFSM::s6_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s6 evt(%d,%d)",pEvt->iEvt,pEvt->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s6 evt(%d,%d)",pEvt->iEvt,pEvt->param1);
 	int ret = 0;
 	switch(pEvt->iEvt)
 	{
@@ -408,7 +409,7 @@ void CContactlessCardFSM::s7_on_exit()
 }
 unsigned int CContactlessCardFSM::s7_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s7 evt(%d)",pEvt->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s7 evt(%d)",pEvt->iEvt);
 	switch(pEvt->iEvt)
 	{
 	case USER_EVT_WAITFINISHED:
@@ -418,7 +419,7 @@ unsigned int CContactlessCardFSM::s7_on_event(FSMEvent* pEvt)
 				FetchCard evt;
 				evt.status = 0;
 				SpSendBroadcast(m_pEntity->GetFunction(),SP_MSG_OF(FetchCard),SP_MSG_SIG_OF(FetchCard),evt);
-				LogEvent(Severity_Middle,LOG_EVT_CONTACTLESS_CARD_OP,"CardIssuer op.");
+				LogEvent(Severity_Middle,LOG_EVT_CONTACTLESS_CARD_OP,"ContactlessCard op.");
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("客户取走卡片msg发送");
 				return 0;
 			} else if (pEvt->param1 == 1) {
@@ -467,7 +468,7 @@ void CContactlessCardFSM::s8_on_exit()
 }
 unsigned int CContactlessCardFSM::s8_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s8 evt(%d)",pEvt->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s8 evt(%d)",pEvt->iEvt);
 	if (pEvt->iEvt == USER_EVT_CAPTUREFINISHED){
 		pEvt->SetHandled();
 		int err = pEvt->param1;
@@ -492,7 +493,7 @@ void CContactlessCardFSM::s9_on_entry()
 	}
 	else {
 		m_testResult = Error_InvalidState;
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("device is fault, wait for restart entity");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("device is fault, wait for restart entity");
 	}
 }
 void CContactlessCardFSM::s9_on_exit()
@@ -501,7 +502,7 @@ void CContactlessCardFSM::s9_on_exit()
 }
 unsigned int CContactlessCardFSM::s9_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s9 evt(%d)(%d)",pEvt->iEvt, pEvt->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s9 evt(%d)(%d)",pEvt->iEvt, pEvt->param1);
 	switch(pEvt->iEvt)
 	{
 	case USER_EVT_RESET:
@@ -563,7 +564,7 @@ void CContactlessCardFSM::s10_on_exit()
 
 unsigned int CContactlessCardFSM::s10_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s10 event(%d)", pEvt->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s10 event(%d)", pEvt->iEvt);
 	int ret = 0;
 	switch (pEvt->iEvt)
 	{
@@ -613,7 +614,7 @@ void CContactlessCardFSM::s11_on_exit()
 
 unsigned int CContactlessCardFSM::s11_on_event(FSMEvent* pEvt)
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("s11 event(%d)", pEvt->iEvt);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s11 event(%d)", pEvt->iEvt);
 	int ret = 0;
 	switch (pEvt->iEvt)
 	{
@@ -640,6 +641,7 @@ unsigned int CContactlessCardFSM::s11_on_event(FSMEvent* pEvt)
 ErrorCodeEnum CContactlessCardFSM::OnInit()
 {
 	LOG_FUNCTION();
+	AddStateHooker(this);
 
 	auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
 	pEntity->InitializeVendorLogSwitch();
@@ -648,7 +650,7 @@ ErrorCodeEnum CContactlessCardFSM::OnInit()
 	m_pCardProcess = new CCardProcess();
 	if (m_pCardProcess == NULL)//almost no use...
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create card process failed.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J19")("create card process failed.");
 		return Error_Resource;
 	}
 
@@ -662,7 +664,7 @@ ErrorCodeEnum CContactlessCardFSM::OnInit()
 	
 	if (errCode != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Load failed(%d).",errCode);
+		//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Load failed(%d).",errCode);
 		SetDevInitFlag(false);//打开失败
 	}
 	devStatus.eMediaPos = CI_MEDIA_NOTPRESENT;
@@ -679,7 +681,7 @@ ErrorCodeEnum CContactlessCardFSM::OnExit()
 		l_beginTime = SP::Module::Comm::RVCGetTickCount();
 		eExit = m_hDevHelper->GetDevStatus(devStatus);
 		l_endTime = SP::Module::Comm::RVCGetTickCount();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("OnExit::GetDevStatus eMedia:%d, eErr:%d", devStatus.eMediaPos, eExit);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("OnExit::GetDevStatus eMedia:%d, eErr:%d", devStatus.eMediaPos, eExit);
 		if (eExit == Error_Succeed)
 		{
 			if (devStatus.eMediaPos == CI_MEDIA_PRESENT){
@@ -692,8 +694,7 @@ ErrorCodeEnum CContactlessCardFSM::OnExit()
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevClose").setCostTime(l_endTime - l_beginTime)("读卡器关闭成功");
 		}
 		else{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("读卡器关闭失败");
-			SetErrorAndLog(eExit, MEC_DEVAPI_RF_DevClose, "DevAdapter::DevClose", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
+			SetErrorAndLog(eExit, MEC_DEVAPI_RF_DevClose, "DevAdapter::DevClose", __FUNCTION__, false, l_endTime - l_beginTime, "", "读卡器关闭失败");
 		}
 	}
 	FSMImpl<CContactlessCardFSM>::OnExit();
@@ -715,7 +716,7 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 	ErrorCodeEnum eErrPath = GetEntityBase()->GetFunction()->GetPath("Bin", csBinPath);
 	if (eErrPath != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Load, GetBasePath failed (%d).",eErrPath);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Load, GetBasePath failed (%d).",eErrPath);
 		return Error_Param;
 	}
 	LogWarn(Severity_Low, Error_Unexpect, ContactlessCard_UserErrorCode_RootInfo, m_adapterInfo.adapterFilePath.GetData());
@@ -726,12 +727,10 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 	}
 
 	do{
-
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open card issuer, port:%d, baudRate:%d", m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt());
+	
 		l_beginTime = SP::Module::Comm::RVCGetTickCount();
 		hr = m_hDevHelper->DevOpen(m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt());
 		l_endTime = SP::Module::Comm::RVCGetTickCount();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("port:%d, baudRate:%d, hr:%d",m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt(), hr);
 		
 		if (hr == Error_Succeed)
 		{
@@ -747,7 +746,7 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 			
 			if(eErrDev == Error_Succeed)
 			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevCategory").setCostTime(l_endTime - l_beginTime)("OpenDevice, szVendor:%s, szType:%s, szModel:%s",m_devCatInfo.szVendor, m_devCatInfo.szType, m_devCatInfo.szModel);
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevCategory").setCostTime(l_endTime - l_beginTime)("OpenDevice::GetDevCategory");
 				m_adapterInfo.FulfillCategoryInfo(m_devCatInfo);
 			}
 			else
@@ -755,69 +754,21 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 				SetErrorAndLog(eErrDev, MEC_DEVAPI_RF_GetDevCategory, "DevAdapter::GetDevCategory", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 				return Error_DevCommFailed;
 			}
-//#ifdef RVC_OS_WIN
-//			CSimpleStringA csCMBPrint("CMBPrint.dll");
-//			csCMBPrint = csBinPath + csBackslash + csCMBPrint;
-//			DbgInfo(CSimpleStringA::Format("cmbpath %s", (LPCTSTR)csCMBPrint));
-//			HMODULE hr = LoadLibraryA(csCMBPrint);
-//			if (hr == NULL)
-//			{
-//				DbgWarn(CSimpleStringA::Format("Load CMBPrint failed(%d).", hr));
-//				return Error_DevLoadFileFailed;
-//			}
-//			if ((cmdDecodeMag2 = (lpCMBdecodeMag2)GetProcAddress(hr, "CMBdecodeMag2")) == NULL)
-//			{
-//				DbgWarn("Get Mag2 address failed.");
-//				return Error_DevLoadFileFailed;
-//			}
-//			if ((cmdDecodeEx = (lpCMBdecodeEx)GetProcAddress(hr, "CMBdecodeEx")) == NULL)
-//			{
-//				DbgWarn("Get Mag23Ex address failed.");
-//				return Error_DevLoadFileFailed;
-//			}
-//			initTries = 0;
-//			break;
-//#else
-//			CSimpleStringA csCMBPrint("libCMBPrint.so");
-//			csCMBPrint = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s",
-//				csBinPath.GetData(), csCMBPrint.GetData());
-//			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("cmbpath %s", csCMBPrint.GetData());
-//
-//			toolkit_lib_t dlOpen;
-//			int res = toolkit_dlopen(csCMBPrint, &dlOpen);
-//			if (res != 0) {
-//				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Load CMBPrint failed with error %s.", toolkit_dlerror(&dlOpen));
-//				return Error_DevLoadFileFailed;
-//			}
-//
-//			if ((res = toolkit_dlsym(&dlOpen, "CMBdecodeMag2", (void**)&cmdDecodeMag2)) != 0) {
-//				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Get Mag2 address failed.");
-//				return Error_DevLoadFileFailed;
-//			}
-//
-//			if ((res = toolkit_dlsym(&dlOpen, "CMBdecodeEx", (void**)&cmdDecodeEx)) != 0) {
-//				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Get Mag23Ex address failed.");
-//				return Error_DevLoadFileFailed;
-//			}
-//
-//			initTries = 0;
-//			break;
-//#endif // RVC_OS_WIN
 
 			if (!LoadCMBPrint(csBinPath))
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Contactless 启动失败:Load CMBPrint failed.");
-				//LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_LoadLibraryA_CMBPrint_Failed, errMsg.GetData());
+				errMsg = CSimpleStringA::Format("Contactless 启动失败:Load CMBPrint failed.");
+				LogWarn(Severity_Middle, Error_Unexpect, ContactlessCard_UserErrorCode_DllLoadFailed, errMsg.GetData());
 				return Error_DevLoadFileFailed;
 			}
 			initTries = 0;
 			break;
 
         } else {
-
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ContactlessCard DevOpen failed , dwPort:%d, dwBaudRate:%d", m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt());
-			SetErrorAndLog(hr, MEC_DEVAPI_RF_DevOpen, "DevAdapter::DevOpen", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ContactlessCard 启动失败:DevOpen failed.重试:%d", initTries);
+			//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ContactlessCard DevOpen failed ,重试:%d, dwPort:%d, dwBaudRate:%d", initTries, m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt());
+			CSimpleStringA errmsg = CSimpleStringA::Format("ContactlessCard DevOpen failed ,重试:%d, dwPort:%d, dwBaudRate:%d", initTries, m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt());
+			SetErrorAndLog(hr, MEC_DEVAPI_RF_DevOpen, "DevAdapter::DevOpen", __FUNCTION__, false, l_endTime - l_beginTime, "", errmsg.GetData());
+			//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ContactlessCard 启动失败:DevOpen failed.重试:%d", initTries);
             initTries++;
         }
     } while (initTries < INIT_TRY_NUM);
@@ -834,47 +785,17 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 	}
 	else
 	{
-		eErrDev = spEntityFunction->OpenConfig(Config_Run, spConfig);
-		if (eErrDev != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Load, open run cfg file failed!");
-			return eErrDev;
-		}
-		int ret = 0,isIssue = 0;
-		if ((spConfig->ReadConfigValueInt("RunInfo","CardRemains",m_CardRemains) == Error_Succeed)
-			&& (spConfig->ReadConfigValueInt("RunInfo","CardIssued",m_CardIssued) == Error_Succeed)
-			&& (spConfig->ReadConfigValueInt("RunInfo","CardCaptured",m_CardCaptured) == Error_Succeed)
-			&& (spConfig->ReadConfigValueInt("RunInfo","IsIssue",isIssue) == Error_Succeed)
-			&& (spConfig->ReadConfigValueInt("RunInfo","CardMixed",m_CardMixed) == Error_Succeed)
-			&& (spConfig->ReadConfigValueInt("RunInfo","CardInit",m_CardInit) == Error_Succeed)
-			&& (spConfig->ReadConfigValueInt("RunInfo","CardPercent",m_CardPercent) == Error_Succeed))
-		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CardRemains:%d, m_CardIssued:%d, CardCaptured:%d, isIssue:%d, CardMixed:%d, CardInit:%d",
-					m_CardRemains, m_CardIssued, m_CardCaptured, isIssue, m_CardMixed, m_CardInit);
-			m_bIssued = !!(isIssue);
-			//ret = UnAcceptCard();
-		}
-		else
-			return Error_IO;
-		if (ret == 0)
-		{
-			m_devInit = true;
-			LogWarn(Severity_Low, Error_Unexpect, ContactlessCard_UserErrorCode_DevOpen_Success, "非接读卡器打开成功");
-			return Error_Succeed;
-		}
-		else{
-			LogWarn(Severity_Middle, Error_Unexpect, ContactlessCard_UserErrorCode_DevOpen_Failed, "非接读卡器打开失败1");
-			return Error_Unexpect;
-		}
+		m_devInit = true;
+		LogWarn(Severity_Low, Error_Unexpect, ContactlessCard_UserErrorCode_DevOpen_Success, "非接读卡器打开成功");
+		return Error_Succeed;
 	}
 }
 int CContactlessCardFSM::Initial()
 {
 	if (!m_bOpened) {
 		m_bNeedReset = false;
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Initial,ret = 1");
 		return 1;//故障模式
 	}
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Initial,ret = 0");
 	return 0;
 }
 bool CContactlessCardFSM::GetDevStatus(bool bPrint)
@@ -886,22 +807,28 @@ bool CContactlessCardFSM::GetDevStatus(bool bPrint)
 		l_beginTime = SP::Module::Comm::RVCGetTickCount();
 		eErr = m_hDevHelper->GetDevStatus(devStatus);
 		l_endTime = SP::Module::Comm::RVCGetTickCount();
-		if (bPrint)
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevStatus eMedia:%d, eErr:%d", devStatus.eMediaPos, eErr);
+		//if (bPrint)
+		//	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevStatus eMedia:%d, eErr:%d", devStatus.eMediaPos, eErr);
 		if (Error_Succeed == eErr) {
+			if (bPrint) {
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevStatus").setCostTime(l_endTime - l_beginTime)("GetDevStatus eMedia:%d", devStatus.eMediaPos);
+			}
 			return true;
 		}
 		else
 		{
-			DevErrorInfo devErrInfo;
-			m_hDevHelper->GetLastErr(devErrInfo);
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetDevStatus, errMsg:%s",devErrInfo.szErrMsg);
+			//DevErrorInfo devErrInfo;
+			//m_hDevHelper->GetLastErr(devErrInfo);
+			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevStatus, errMsg:%s",devErrInfo.szErrMsg);
+			if (bPrint) {
+				SetErrorAndLog(eErr, MEC_DEVAPI_RF_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
+			}
 			getDevInfoCount++;
 			Sleep(3000);
 		}
 	} while (getDevInfoCount < GET_DEV_STATUS_COUNT);
 
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("getdevstatus to reset");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("get devstatus to reset");
 	eErr = m_hDevHelper->Reset();
 	Sleep(MAX_RESET_TIMEROUT);
 	if (eErr == Error_Succeed)
@@ -1038,15 +965,14 @@ int CContactlessCardFSM::AcceptCard(SpReqAnsContext<ContactlessCardService_Inser
 	LogEvent(Severity_Middle,LOG_EVT_CONTACTLESS_CARD_GREEN_ON,"ContactCard green on");
 	m_bWaitAccepteMore = false;
 	int rc = InternalAcceptCard();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("InternalAcceptCard ret:%d", rc);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("InternalAcceptCard ret:%d", rc);
 	LogEvent(Severity_Middle,LOG_EVT_CONTACTLESS_CARD_GREEN_OFF,"ContactCard green off");
 	if (rc == 0) {
-		//FSMSetIssueFlag(false);
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("insert error_succeed");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("insert error_succeed");
 			//FetchCard evt;
-			//evt.status = 3;//oilyang@20181210 用于通知CardIssuer取消插卡
+			//evt.status = 3;//oilyang@20181210 用于通知卡机取消插卡
 			//SpSendBroadcast(m_pEntity->GetFunction(), SP_MSG_OF(FetchCard), SP_MSG_SIG_OF(FetchCard), evt);
 
 			ctx->Ans.ICData = "";
@@ -1056,7 +982,7 @@ int CContactlessCardFSM::AcceptCard(SpReqAnsContext<ContactlessCardService_Inser
 			int retDetectAndRead = -1;
 			if (!ctx->Req.aid.IsNullOrEmpty())
 			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("front business provide aid:[%s]",(const char*)ctx->Req.aid);
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("front business provide aid:[%s]",(const char*)ctx->Req.aid);
 				CAutoArray<CSimpleStringA> aidReq;
 				aidReq.Init(1);
 				aidReq[0] = ctx->Req.aid;
@@ -1100,7 +1026,7 @@ int CContactlessCardFSM::AcceptCard(SpReqAnsContext<ContactlessCardService_Inser
 			string t2ICAccount(""),t2ICCardSerial(""),t2ICCVC(""),t2ICTrack2(""),cardType;
 			if (m_pCardProcess->FindTagValue(TAG_VECTOR_IC,track2,false,0) == -1)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("no track2 data in ic");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("no track2 data in ic");
 
 				l_beginTime = SP::Module::Comm::RVCGetTickCount();
 				eErr = m_hDevHelper->HaltCard();
@@ -1140,21 +1066,23 @@ int CContactlessCardFSM::AcceptCard(SpReqAnsContext<ContactlessCardService_Inser
 	}
 	else if(rc == 2)
 	{
-		if (ctx != NULL)
+		if (ctx != NULL) {
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("AcceptCard, insert timeout");
 			ctx->Answer(Error_TimeOut);
+		}
 	}
 	else if(rc == 3 || rc == 4)
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("insert cancel (%d)",rc);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("AcceptCard, insert cancel");
 			ctx->Answer(Error_Cancel);
 		}
 	}else 
 	{
 		//oilyang@20221212 
 		//actully,we reach here only when calling GetDevStatus failed
-		//we have ContactlessCard AND CardIssuer,no need to throw Error_Unexpect here
+		//we have ContactlessCard AND 卡机,no need to throw Error_Unexpect here
 		if (ctx != NULL)
 			ctx->Answer(Error_DevNotAvailable);
 	}
@@ -1180,9 +1108,16 @@ static CSimpleStringA GetStrData(TrackInfo trackInfo)
 
 int CContactlessCardFSM::SplitTrack2(CSimpleStringA pTrack2,Track2Data &decodeData)
 {
-	if (pTrack2.GetLength() == 0)
-		return -1;
+	LOG_FUNCTION();
+
 	int dataLen = strlen(pTrack2);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<SplitTrack2>, pTrack2.len:%d", dataLen);
+
+	if (pTrack2.GetLength() == 0) {
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J1A")("<SplitTrack2>, pTrack2.len=0");
+		return -1;
+	}
+
 	switch(dataLen)
 	{
 	case 28:
@@ -1207,8 +1142,10 @@ int CContactlessCardFSM::SplitTrack2(CSimpleStringA pTrack2,Track2Data &decodeDa
 		decodeData.t2Region = "";
 		break;
 	case 38:
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<SplitTrack2>, pTrack2.len=38 Not implemented ");
 		break;
 	default:
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<SplitTrack2>, pTrack2.len=%d Not implemented ", dataLen);
 		return -1;
 	}
 	decodeData.status = 0;
@@ -1219,7 +1156,6 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 	LOG_FUNCTION();
 	long l_beginTime, l_endTime;
 	m_pCardProcess->DataInit();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnline>, bus data[%s]", ctx->Req.businessData.GetData());
 	m_pCardProcess->SplitBusinessData(ctx->Req.businessData,ctx->Req.businessData.GetLength());
 	m_pCardProcess->SplitBusinessData("DF690101",strlen("DF690101"));
 	int activeCardType;
@@ -1228,7 +1164,7 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 	ICData aidFromBus(false, 0x4f, 0x00);
 	if (m_pCardProcess->FindTagValue(TAG_VECTOR_BUS, aidFromBus, false, 0) == -1)
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("the front BusinessData han't provide aid data.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("the front BusinessData han't provide aid data.");
 		retDetectAndRead = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, m_aidList, activeCardType);
 
 	}
@@ -1277,7 +1213,9 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 	CSimpleStringA taaResult;
 	BYTE bt9f27 = 0;
 	int retTAA = m_pCardProcess->TermActionAnalyze(CARD_MACHINE_RFIC,m_hDevHelper,taaResult,true,m_bCDA,bt9f27);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("TermActionAnalyze %d",retTAA);
+	if (retTAA != 0) {
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnline>, TermActionAnalyze , retTAA:%d, taaResult:%s", retTAA, taaResult.GetData());
+	}
 	switch(retTAA)
 	{//to be added oiltest 20140929
 	case -1:	//some data may be wrong
@@ -1290,19 +1228,15 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 		break;
 	}
 	ctx->Ans.result = taaResult;
-	//	Dbg("[%d,%d,%d,%d]",m_TVR[0],m_TVR[1],m_TVR[2],m_TVR[3]);
-	//}
+
 	if (ctx->Ans.result.GetLength() == 0)
 	{
 		ctx->Answer(Error_Succeed);
 		return 0;
 	}
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnline>, term action analyze result[%s]",(const char*)ctx->Ans.result);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<PreOnline>, term action analyze result[%s]",(const char*)ctx->Ans.result);
+
 
-	//char tmpResult[1024,]result[1024];
-	//ZeroMemory(tmpResult,sizeof(tmpResult));
-	//ZeroMemory(result,sizeof(result));
-	//memcpy(tmpResult,ctx->Ans.result,ctx->Ans.result.GetLength());
 	string tmpResult, actionType, result = "", baseICData = "";
 	tmpResult = ctx->Ans.result;
 	char *pSomeICData = new char[1024];
@@ -1322,7 +1256,7 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 	ICData appExpiryDate(false,0x5f,0x24);
 	if (m_pCardProcess->FindTagValue(TAG_VECTOR_IC,appExpiryDate,false,0) == -1)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("can't find expire date");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J1B")("can't find expire date");
 		return 0;
 	}
 	char *pExpireDate = new char[12];
@@ -1335,7 +1269,7 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 	ZeroMemory(pICCardSerial,4);
 	if (m_pCardProcess->FindTagValue(TAG_VECTOR_IC,ICCardSerial,false) == -1)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("can't find card serial.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J1B")("can't find card serial.");
 	}
 	else
 	{
@@ -1343,7 +1277,7 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 	}
 	if (m_pCardProcess->FindTagValue(TAG_VECTOR_IC,track2,false,0) == -1)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("no track2 data in ic");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("no track2 data in ic");
 	}
 	else
 	{
@@ -1352,7 +1286,7 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 		ZeroMemory(pICTrack2,128);
 		HexBuf2StrBuf(track2.value,&pICTrack2,track2.lenth);
 		pICTrack2[37] = '\0';
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnline>, split pos:%d", pos);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<PreOnline>, split pos:%d", pos);
 		char *ddd = new char[40];
 		ZeroMemory(ddd,40);
 		memcpy(ddd,pICTrack2,pos-1);
@@ -1371,7 +1305,7 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 			//t2ICCardSerial = track2Data.t2CardSerial;
 			t2ICCVC = track2Data.t2CVC;
 			t2ICTrack2 = pICTrack2;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("done(ic).");
+			
 		}
 		//}
 		if (strnicmp(track2Data.t2Account,ddd,strlen(ddd)))
@@ -1386,10 +1320,12 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 		delete []pICTrack2;
 	}
 	//80 1e 80 0008 328ab54bfc986b85 07010103a0b000010a010000000000754048769000
-	if (m_pCardProcess->GetP1() == 0x1)
+	if (m_pCardProcess->GetP1() == 0x1) {
 		actionType = "ARQC";
-	else
+	}
+	else {
 		actionType = "";
+	}
 	//【55域】
 	//	基本域:
 	//	9F26	8b	应用密文AC
@@ -1434,7 +1370,7 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 		+ "ARQCDATA," + m_pDataToARQC + "|T2ACCOUNT(F6)," + t2ICAccount.substr(0, 6) + "|T2ACCOUNT(L4)," + t2ICAccount.substr(t2ICAccount.length() - 4, 4)
 		+ "|T2CARDSERIAL(len)," + t2ICCardSerial + "|CARDCAT," + cardType;
 
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data to host(less)[%s],baseICData length:%d", txtresult.c_str(), baseICData.length());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("data to host(less)[%s],baseICData length:%d", txtresult.c_str(), baseICData.length());
 
 	if (m_pDataToARQC != NULL)
 	{
@@ -1491,7 +1427,7 @@ int CContactlessCardFSM::EjectCard(SpReqAnsContext<ContactlessCardService_Eject_
 		ErrorCodeEnum eErr = m_hDevHelper->GetDevStatus(devStatus);
 		if (eErr == Error_Succeed)
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("EjectCard, devStatus.eMedia %d",devStatus.eMediaPos);
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("EjectCard, devStatus.eMedia %d",devStatus.eMediaPos);
 			if (devStatus.eMediaPos == CI_MEDIA_RF || devStatus.eMediaPos == CI_MEDIA_NOTPRESENT)
 			{
 				if (devStatus.eMediaPos == CI_MEDIA_NOTPRESENT)
@@ -1503,7 +1439,7 @@ int CContactlessCardFSM::EjectCard(SpReqAnsContext<ContactlessCardService_Eject_
 		}
 		Sleep(100);
 	}
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("eject return.");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("eject, ret:%d",ret);
 	if (ctx != NULL)
 		ctx->Answer(Error_Succeed);
 	return ret;
@@ -1580,17 +1516,17 @@ bool CContactlessCardFSM::LoadCMBPrint(CSimpleStringA csBinPath)
 		HMODULE hr = LoadLibraryA(csCMBPrint);
 		if (hr == NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Load CMBPrint failed(%d).", hr);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Load CMBPrint failed(%d).", hr);
 			return false;
 		}
 		if ((cmdDecodeMag2 = (lpCMBdecodeMag2)GetProcAddress(hr, "CMBdecodeMag2")) == NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get Mag2 address failed.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get Mag2 address failed.");
 			return false;
 		}
 		if ((cmdDecodeEx = (lpCMBdecodeEx)GetProcAddress(hr, "CMBdecodeEx")) == NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get Mag23Ex address failed.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get Mag23Ex address failed.");
 			cmdDecodeMag2 = NULL;
 			return false;
 		}
@@ -1602,23 +1538,23 @@ bool CContactlessCardFSM::LoadCMBPrint(CSimpleStringA csBinPath)
 		hr = dlopen(csCMBPrint, RTLD_LAZY);
 		if (hr == NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Load CMBPrint failed(%s).", dlerror());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Load CMBPrint failed(%s).", dlerror());
 			return false;
 		}
 		//pfunc_unpack = (PF_unpack)dlsym(hLib, "_Z6unpackPcS_i");
 		if ((cmdDecodeMag2 = (lpCMBdecodeMag2)dlsym(hr, "CMBdecodeMag2")) == NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get Mag2 address failed.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get Mag2 address failed.");
 			return false;
 		}
 		if ((cmdDecodeEx = (lpCMBdecodeEx)dlsym(hr, "CMBdecodeEx")) == NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get Mag23Ex address failed.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get Mag23Ex address failed.");
 			cmdDecodeMag2 = NULL;
 			return false;
 		}
 #endif
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Load %s succ.", (const char*)csCMBPrint);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load %s succ.", (const char*)csCMBPrint);
 	}
 
 	return true;
@@ -1627,7 +1563,7 @@ bool CContactlessCardFSM::LoadCMBPrint(CSimpleStringA csBinPath)
 void CContactlessCardFSM::GetCardProcessLastErr(ErrorCodeEnum& eErrCode, CSimpleStringA& ApiName, CSimpleStringA& alarmMsg, CSimpleStringA& csErrMsgWithReturnCode)
 {
 	if (m_pCardProcess == NULL) {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetCardProcessLastErr m_pCardProcess is null");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetCardProcessLastErr m_pCardProcess is null");
 		eErrCode = Error_Null;
 		ApiName = "";
 		alarmMsg = "";
@@ -1734,7 +1670,7 @@ void CContactlessCardFSM::QueryHasCardJS(SpReqAnsContext<ContactlessCardService_
 int CContactlessCardFSM::EjectJS(SpReqAnsContext<ContactlessCardService_EjectJS_Req, ContactlessCardService_EjectJS_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("吐卡开始");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("吐卡开始");
 	m_pCardProcess->DataInit();
 	int ret = 0;
 	int getDevInfoCount = 0;
@@ -1771,17 +1707,17 @@ int CContactlessCardFSM::EjectJS(SpReqAnsContext<ContactlessCardService_EjectJS_
 			}
 		}
 		else {
-			getDevInfoCount++;
-			if (getDevInfoCount % 10 == 0) {
-				DevErrorInfo devErrInfo;
-				m_hDevHelper->GetLastErr(devErrInfo);
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetDevStatus, errMsg:%s", devErrInfo.szErrMsg);
-			}
+			//getDevInfoCount++;
+			//if (getDevInfoCount % 10 == 0) {
+			//	DevErrorInfo devErrInfo;
+			//	m_hDevHelper->GetLastErr(devErrInfo);
+			//	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevStatus, errMsg:%s", devErrInfo.szErrMsg);
+			//}
 		}
 		Sleep(WAIT_INTERVAL);
 	}
 	LogEvent(Severity_Middle, LOG_EVT_CONTACTLESS_CARD_GREEN_OFF, "ContactCard(fetch) warning off");
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("eject return.ret=%d",ret);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("eject return.ret=%d",ret);
 	if (ctx != NULL) {
 		if (ret == 0) {
 			ctx->Answer(Error_Succeed);
@@ -1796,7 +1732,7 @@ int CContactlessCardFSM::EjectJS(SpReqAnsContext<ContactlessCardService_EjectJS_
 int CContactlessCardFSM::ReadJS(SpReqAnsContext<ContactlessCardService_ReadJS_Req, ContactlessCardService_ReadJS_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("读卡开始");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("读卡开始");
 	int ret = InternalAcceptCardJS();
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("InternalAcceptCardJS ret:%d", ret);
 
@@ -1822,7 +1758,7 @@ int CContactlessCardFSM::ReadJS(SpReqAnsContext<ContactlessCardService_ReadJS_Re
 int CContactlessCardFSM::PostOnlineJS(SpReqAnsContext<ContactlessCardService_PostOnlineJS_Req, ContactlessCardService_PostOnlineJS_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("(PostOnlineJS) 联机后IC接触处理");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("(PostOnlineJS) 联机后IC接触处理");
 	m_pCardProcess->DataInit();
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("postOnLine data[%s]", ctx->Req.data.GetData());
 	m_pCardProcess->SplitOnlineReplyData(ctx->Req.data, strlen(ctx->Req.data));
@@ -1881,7 +1817,7 @@ int CContactlessCardFSM::InternalAcceptCardJS()
 				bool bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_RFIC, m_hDevHelper, activeCardType);
 				l_endTime = SP::Module::Comm::RVCGetTickCount();
 				if (bIC) {
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("InternalAcceptCardJS::DetectIfICCard activeCardType=%d", activeCardType);
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("InternalAcceptCardJS::DetectIfICCard activeCardType=%d", activeCardType);
 					if (activeCardType == 'A' || activeCardType == 'B' || activeCardType == 'M') {
 						err = 0;//探测到IC卡
 					}
@@ -1937,7 +1873,7 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 	LOG_FUNCTION();
 	long l_beginTime, l_endTime;
 	m_pCardProcess->DataInit();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnlineJS>, aid[%s], bus data[%s]", ctx->Req.aid.GetData(),ctx->Req.businessData.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<PreOnlineJS>, aid[%s], bus data[%s]", ctx->Req.aid.GetData(),ctx->Req.businessData.GetData());
 	m_pCardProcess->SplitBusinessData(ctx->Req.businessData, ctx->Req.businessData.GetLength());
 	m_pCardProcess->SplitBusinessData("DF690101", strlen("DF690101"));
 	int activeCardType;
@@ -1946,7 +1882,7 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 	ICData aidFromBus(false, 0x4f, 0x00);
 	if (m_pCardProcess->FindTagValue(TAG_VECTOR_BUS, aidFromBus, false, 0) == -1)
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("the front BusinessData han't provide aid data.");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("the front BusinessData han't provide aid data.");
 		retDetectAndRead = m_pCardProcess->DetectAndReadICData(CARD_MACHINE_RFIC, m_hDevHelper, m_aidList, activeCardType);
 
 	}
@@ -1954,7 +1890,7 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 		char* pAIDTmp = new char[64];
 		memset(pAIDTmp, 0, 64);
 		HexBuf2StrBuf(aidFromBus.value, &pAIDTmp, aidFromBus.lenth);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnline>, the aid is[%s],len:%d .", pAIDTmp, strlen(pAIDTmp));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnlineJS>, the aid is[%s],len:%d .", pAIDTmp, strlen(pAIDTmp));
 		CAutoArray<CSimpleString> preAIDs;
 		preAIDs.Init(1);
 		preAIDs[0] = (CSimpleStringA)pAIDTmp;
@@ -1989,7 +1925,9 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 	CSimpleStringA taaResult;
 	BYTE bt9f27 = 0;
 	int retTAA = m_pCardProcess->TermActionAnalyze(CARD_MACHINE_RFIC, m_hDevHelper, taaResult, true, m_bCDA, bt9f27);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnlineJS>,TermActionAnalyze retTAA:%d, taaResult:%s", retTAA, taaResult.GetData());
+	if (retTAA != 0) {
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnlineJS>,TermActionAnalyze retTAA:%d, taaResult:%s", retTAA, taaResult.GetData());
+	}
 	switch (retTAA)
 	{//to be added oiltest 20140929
 	case -1:	//some data may be wrong
@@ -2005,7 +1943,6 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 
 	if (ctx->Ans.result.GetLength() == 0)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("<PreOnlineJS>,TermActionAnalyze result len = 0");
 		ctx->Ans.icState = 0;
 		ctx->Answer(Error_Succeed);
 		return 0;
@@ -2037,7 +1974,7 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 	ZeroMemory(pExpireDate, 12);
 	if (m_pCardProcess->FindTagValue(TAG_VECTOR_IC, appExpiryDate, false, 0) == -1)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("can't find expire date");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J1B")("can't find expire date");
 	}
 	else {
 		HexBuf2StrBuf(appExpiryDate.value, &pExpireDate, appExpiryDate.lenth);
@@ -2049,7 +1986,7 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 	ZeroMemory(pICCardSerial, 4);
 	if (m_pCardProcess->FindTagValue(TAG_VECTOR_IC, ICCardSerial, false) == -1)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("can't find card serial.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J1B")("can't find card serial.");
 	}
 	else
 	{
@@ -2062,7 +1999,7 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 	ZeroMemory(pICTrack2, 128);
 	if (m_pCardProcess->FindTagValue(TAG_VECTOR_IC, track2, false, 0) == -1)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("no track2 data in ic");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("no track2 data in ic");
 	}
 	else
 	{
@@ -2071,7 +2008,7 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 
 		int pos = FindHexCharPosition(track2.value, 0x0d, track2.lenth);
 		pICTrack2[37] = '\0';
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<PreOnline>, split pos:%d", pos);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("<PreOnlineJS>, split pos:%d", pos);
 		char* ddd = new char[40];
 		ZeroMemory(ddd, 40);
 		memcpy(ddd, pICTrack2, pos - 1);
@@ -2088,7 +2025,6 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 			t2ICAccount = track2Data.t2Account;
 			//t2ICCardSerial = track2Data.t2CardSerial;
 			t2ICCVC = track2Data.t2CVC;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("done(ic).");
 		}
 
 		if (strnicmp(track2Data.t2Account, ddd, strlen(ddd)))
@@ -2106,10 +2042,12 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 
 
 	//80 1e 80 0008 328ab54bfc986b85 07010103a0b000010a010000000000754048769000
-	if (m_pCardProcess->GetP1() == 0x1)
+	if (m_pCardProcess->GetP1() == 0x1) {
 		actionType = "ARQC";
-	else
+	}
+	else {
 		actionType = "";
+	}
 	//【55域】
 	//	基本域:
 	//	9F26	8b	应用密文AC
@@ -2199,3 +2137,9 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 	return 0;
 
 }
+
+void CContactlessCardFSM::OnStateTrans(int iSrcState, int iDstState)
+{
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("trans from %s to %s", GetStateName(iSrcState), GetStateName(iDstState));
+}
+

+ 15 - 7
Module/mod_ContactlessCard/ContactlessFSM.h

@@ -85,7 +85,8 @@ public:
 	{
 		if (ctx != NULL)
 		{
-            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("card accept unhandled");
+			
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode("RTA2J1C")("card accept unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -173,7 +174,7 @@ public:
 	virtual void OnUnhandled()
 	{
 		if (ctx != NULL) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectJS unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J1C")("EjectJS unhandled");
 			//ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -190,7 +191,7 @@ public:
 	virtual void OnUnhandled()
 	{
 		if (ctx != NULL) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("PostOnlineJS unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J1C")("PostOnlineJS unhandled");
 			//ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -207,7 +208,7 @@ public:
 	virtual void OnUnhandled()
 	{
 		if (ctx != NULL) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadJS unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J1C")("ReadJS unhandled");
 			//ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -215,7 +216,7 @@ protected:
 private:
 };
 
-class CContactlessCardFSM : public CCommDevFSM<CContactlessCardFSM, RFICClass>
+class CContactlessCardFSM : public CCommDevFSM<CContactlessCardFSM, RFICClass>, public IFSMStateHooker
 {
 public:
 	enum {s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11};
@@ -377,21 +378,28 @@ public:
 
 	int PreOnlineJS(SpReqAnsContext<ContactlessCardService_ReadJS_Req, ContactlessCardService_ReadJS_Ans>::Pointer ctx);
 
+	CSimpleStringA getRTACode(DWORD dwUserCode) {
+		CSimpleStringA rtaMsg = this->GetEntityBase()->GetFunction()->UserCodeToRTACode(dwUserCode);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("rtaMsg=%s",rtaMsg.GetData());
+		return rtaMsg;
+	}
+
 protected:
 	int m_iInsertTries;
 	int m_resetTries;
 	int m_ejectTries;
 private:
+	virtual void OnStateTrans(int iSrcState, int iDstState);
 	///
 	int m_resetTimes;
 	lpCMBdecodeMag2 cmdDecodeMag2;
 	lpCMBdecodeEx cmdDecodeEx;	
-	bool m_devInit, m_bCancelAccept, m_bWaitingAccept, m_bWaitAccepteMore, m_bExit, m_bIssued;
+	bool m_devInit, m_bCancelAccept, m_bWaitingAccept, m_bWaitAccepteMore, m_bExit;
 	ErrorCodeEnum m_testResult;
 	CSimpleStringA m_csMachineType;
 	DevCategoryInfo m_devCatInfo;
 
-	int m_CardInit,m_CardRemains,m_CardIssued,m_CardCaptured,m_CardMixed,m_CardPercent;
+	
 	RFICReaderStatus devStatus;
 	CCardProcess *m_pCardProcess;
 	char *m_pDataToARQC;

+ 2 - 2
Module/mod_ContactlessCard/mod_ContactlessCard.cpp

@@ -31,7 +31,7 @@ void ContactlessCardServerSession::Handle_PreOnline(SpReqAnsContext<ContactlessC
 {
 	LOG_FUNCTION();
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke PreOnline");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke PreOnline, bus data[%s]", ctx->Req.businessData.GetData());
 	m_pEntity->PreOnline(ctx);
 }
 
@@ -87,7 +87,7 @@ void ContactlessCardServerSession::Handle_ReadJS(SpReqAnsContext<ContactlessCard
 {
 	LOG_FUNCTION();
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke ReadJS");
+	DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("Invoke ReadJS req.aid=%s, req.business=%s", ctx->Req.aid.GetData(), ctx->Req.businessData.GetData());
 	m_pEntity->ReadJS(ctx);
 }
 void ContactlessCardServerSession::Handle_PostOnlineJS(SpReqAnsContext<ContactlessCardService_PostOnlineJS_Req, ContactlessCardService_PostOnlineJS_Ans>::Pointer ctx)

+ 3 - 3
Module/mod_ContactlessCard/mod_ContactlessCard.h

@@ -193,7 +193,7 @@ public:
 		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadJS req is unhandled ,CurrState=%d", state);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("ReadJS req is unhandled ,CurrState=%d", state);
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {
@@ -212,7 +212,7 @@ public:
 		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("PostOnlineJS req is unhandled ,CurrState=%d", state);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("PostOnlineJS req is unhandled ,CurrState=%d", state);
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {
@@ -231,7 +231,7 @@ public:
 		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			int state = m_fsm.GetFSMState();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectJS req is unhandled ,CurrState=%d", state);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("EjectJS req is unhandled ,CurrState=%d", state);
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {

+ 0 - 12
Module/mod_CustMngrAuth/mod_CustMngrAuth.cpp

@@ -84,7 +84,6 @@ void CCustMngrAuthEntity::OnTimeout(DWORD dwTimerID)
 void CCustMngrAuthEntity::StartAuthorize(SpReqAnsContext<CustMngrAuthService_StartAuthorize_Req, CustMngrAuthService_StartAuthorize_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	if (m_fsm.m_ctx == NULL) m_fsm.m_ctx = ctx;
 	AuthorizeStartEvent* e = new AuthorizeStartEvent();
 	e->ctx = ctx;
@@ -94,7 +93,6 @@ void CCustMngrAuthEntity::StartAuthorize(SpReqAnsContext<CustMngrAuthService_Sta
 void CCustMngrAuthEntity::StopAuthorize(SpReqAnsContext<CustMngrAuthService_StopAuthorize_Req, CustMngrAuthService_StopAuthorize_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	AuthorizeCancelEvent* e = new AuthorizeCancelEvent();
 	m_fsm.PostEventFIFO(e);
 }
@@ -102,7 +100,6 @@ void CCustMngrAuthEntity::StopAuthorize(SpReqAnsContext<CustMngrAuthService_Stop
 void CCustMngrAuthEntity::QueryAuthorInfo(SpReqAnsContext<CustMngrAuthService_QueryAuthorInfo_Req, CustMngrAuthService_QueryAuthorInfo_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	if (m_fsm.qaInfoCtx == NULL) m_fsm.qaInfoCtx = ctx;
 	QueryAuthorInfoEvent* e = new QueryAuthorInfoEvent();
 	e->ctx = ctx;
@@ -112,7 +109,6 @@ void CCustMngrAuthEntity::QueryAuthorInfo(SpReqAnsContext<CustMngrAuthService_Qu
 void CCustMngrAuthEntity::StopAuthorizeEx(SpReqAnsContext<CustMngrAuthService_StopAuthorizeEx_Req, CustMngrAuthService_StopAuthorizeEx_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	AuthorizeCancelExEvent* e = new AuthorizeCancelExEvent();
 	m_fsm.PostEventFIFO(e);
 }
@@ -120,7 +116,6 @@ void CCustMngrAuthEntity::StopAuthorizeEx(SpReqAnsContext<CustMngrAuthService_St
 void CCustMngrAuthEntity::CollectFingerPrint(SpReqAnsContext<CustMngrAuthService_CollectFingerPrint_Req, CustMngrAuthService_CollectFingerPrint_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	CollectFingerPrintStartEvent *pEvt = new CollectFingerPrintStartEvent();
 	pEvt->ctx = ctx;
 	m_fsm.PostEventFIFO(pEvt);
@@ -129,7 +124,6 @@ void CCustMngrAuthEntity::CollectFingerPrint(SpReqAnsContext<CustMngrAuthService
 void CCustMngrAuthEntity::StopCollect(SpReqAnsContext<CustMngrAuthService_StopCollect_Req, CustMngrAuthService_StopCollect_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	CancelCollectFingerPrintEvent* pEvt = new CancelCollectFingerPrintEvent();
 	m_fsm.PostEventFIFO(pEvt);
 }
@@ -137,7 +131,6 @@ void CCustMngrAuthEntity::StopCollect(SpReqAnsContext<CustMngrAuthService_StopCo
 void CCustMngrAuthEntity::CollectFingerPrintEx(SpReqAnsContext<CustMngrAuthService_CollectFingerPrintEx_Req, CustMngrAuthService_CollectFingerPrintEx_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	CollectFingerPrintExStartEvent* pEvt = new CollectFingerPrintExStartEvent();
 	pEvt->ctx = ctx;
 	m_fsm.PostEventFIFO(pEvt);
@@ -146,7 +139,6 @@ void CCustMngrAuthEntity::CollectFingerPrintEx(SpReqAnsContext<CustMngrAuthServi
 void CCustMngrAuthEntity::CollectFingerPrintInfo(SpReqAnsContext<CustMngrAuthService_CollectFingerPrintInfo_Req, CustMngrAuthService_CollectFingerPrintInfo_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	CollectFingerPrintInfoEvent *pEvt = new CollectFingerPrintInfoEvent();
 	pEvt->ctx = ctx;
 	m_fsm.PostEventFIFO(pEvt);
@@ -155,7 +147,6 @@ void CCustMngrAuthEntity::CollectFingerPrintInfo(SpReqAnsContext<CustMngrAuthSer
 void CCustMngrAuthEntity::GenerateTemplate(SpReqAnsContext<CustMngrAuthService_GenerateTemplate_Req, CustMngrAuthService_GenerateTemplate_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	GenerateTemplateEvent* gtEvt = new GenerateTemplateEvent();
 	gtEvt->ctx = ctx;
 	m_fsm.PostEventFIFO(gtEvt);
@@ -164,7 +155,6 @@ void CCustMngrAuthEntity::GenerateTemplate(SpReqAnsContext<CustMngrAuthService_G
 void CCustMngrAuthEntity::SaveFingerPrint(SpReqAnsContext<CustMngrAuthService_SaveFingerPrint_Req, CustMngrAuthService_SaveFingerPrint_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	SaveFingerPrintStartEvent *pEvt = new SaveFingerPrintStartEvent();
 	pEvt->ctx = ctx;
 	m_fsm.PostEventFIFO(pEvt);
@@ -173,7 +163,6 @@ void CCustMngrAuthEntity::SaveFingerPrint(SpReqAnsContext<CustMngrAuthService_Sa
 void CCustMngrAuthEntity::CheckUkey(SpReqAnsContext<CustMngrAuthService_CheckUkey_Req, CustMngrAuthService_CheckUkey_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	CheckUkeyEvent *pEvt = new CheckUkeyEvent();
 	m_fsm.PostEventFIFO(pEvt);
 }
@@ -181,7 +170,6 @@ void CCustMngrAuthEntity::CheckUkey(SpReqAnsContext<CustMngrAuthService_CheckUke
 void CCustMngrAuthEntity::HoldOn(SpReqAnsContext<CustMngrAuthService_HoldOn_Req, CustMngrAuthService_HoldOn_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgToBeidou(ctx->link, __FUNCTION__)();
 	HoldOnEvent *pEvt = new HoldOnEvent();
 	pEvt->ctx = ctx;
 	m_fsm.PostEventFIFO(pEvt);

+ 24 - 25
Module/mod_FingerPrint/FingerPrintFSM.cpp

@@ -270,7 +270,7 @@ unsigned int CFingerPrintFSM::s1_on_event(FSMEvent* e)
 void CFingerPrintFSM::s2_on_entry()
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("FingerPrint entity failed.");
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("FingerPrint entity failed.");
 	SetDevState(DEVICE_STATUS_FAULT);
 	m_testResult = Error_InvalidState;
 }
@@ -372,7 +372,7 @@ int CFingerPrintFSM::Initial()
 	auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
 	SetDevInitFlag(false);
 	if (pEntity->vendorLibInfo.IsNotConfig()) {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("没有配置,将其视为指纹仪设备打开成功");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("没有配置,将其视为指纹仪设备打开成功");
 		return 0;
 	}
 	FulfillAdapterInfoFrom(pEntity->vendorLibInfo);
@@ -385,7 +385,7 @@ int CFingerPrintFSM::Initial()
 			//2024-12-10:4275780002, 1225300001 两台终端存在该情况
 			LogWarn(Severity_High, Error_NotInit, FingerPrint_UserErrorCode_LOAD_ADAPTER_FAILED,
 				CSimpleStringA::Format("Load library file: %s failed, GLE=%d", (LPCTSTR)m_adapterInfo.adapterFileName, GetLastError()));
-			//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Open_ID).setResultCode("RTA2405")("加载厂商适配器失败");
+			
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Open_ID).setResultCode(getRTACode(FingerPrint_UserErrorCode_LOAD_ADAPTER_FAILED))("加载厂商适配器失败");
 			return 2;
 		}
@@ -393,7 +393,7 @@ int CFingerPrintFSM::Initial()
 			//2024年12月10日:7555870003 5715350008 两台终端存在该情况
 			LogWarn(Severity_High, Error_DevLoadFileFailed, FingerPrint_UserErrorCode_VENDOR_ADAPTER_NOT_EXIST,
 				CSimpleStringA::Format("library file: %s is not existed!", (LPCTSTR)m_adapterInfo.adapterFileName));
-			//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Open_ID).setResultCode("RTA2404")("厂商适配器不存在dep中");
+			
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Open_ID).setResultCode(getRTACode(FingerPrint_UserErrorCode_VENDOR_ADAPTER_NOT_EXIST))("厂商适配器不存在dep中");
 			return 2;
 		}
@@ -543,19 +543,19 @@ int CFingerPrintFSM::GetFingerPrintJS(SpReqAnsContext<FingerPrintService_GetFing
 			Sleep(200);
 
 			if (!ExistsFile(strPath)) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Cannot find the fingerprint image %s", strPath.GetData());
+				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Cannot find the fingerprint image %s", strPath.GetData());
 				bNotFindImage = true;
 				bTimeOut = false;
 				break;
 			}
 			else if(lpbLength != STANDARD_FEATURE_LEN) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, vendor returned feature length is not right.");
+				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, vendor returned feature length is not right.");
 				bTimeOut = false;
 				bLenIsNotRight = true;
 				break;
 			}
 			else if (lpbFeature == NULL) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Fingerprint feature is NULL.");
+				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Fingerprint feature is NULL.");
 				bTimeOut = false;
 				bFeatureIsNull = true;
 				break;
@@ -613,7 +613,7 @@ int CFingerPrintFSM::GetFingerPrintJS(SpReqAnsContext<FingerPrintService_GetFing
 		if (bNotFindImage) {
 			//未发现文件
 			LogWarn(Severity_Middle, Error_Unexpect, FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_MATCH, "not find fingerprint image in dep while match");
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Scan_ID).setResultCode(getRTACode(FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_MATCH))("指纹扫描失败,采集接口调用成功,但未在dep中找到图片文件");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Scan_ID).setResultCode(getRTACode(FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_MATCH))("<GetFingerPrint>, Cannot find the fingerprint image %s", strPath.GetData());
 			ctx->Answer(Error_Unexpect, FingerPrint_UserErrorCode_NO_IMAGE_IN_DEP_MATCH);//RTA2416
 			
 		}
@@ -760,7 +760,7 @@ ErrorCodeEnum CFingerPrintFSM::GetImgBlob(CBlob& data, CSimpleStringA imgPath)
 		eErr = Error_Succeed;
 	}
 	else {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetImgBlob %s failed!", imgPath.GetData());
+		//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetImgBlob %s failed!", imgPath.GetData());
 		eErr = Error_IO;
 	}
 	return eErr;
@@ -885,15 +885,15 @@ int CFingerPrintFSM::GetFingerPrint(SpReqAnsContext<FingerPrintService_GetFinger
 			}
 			else if(FindFirstFileA((LPCTSTR)strPath, &findData) == INVALID_HANDLE_VALUE)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Cannot find the fingerprint image %s", fileName.GetData());
+				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Cannot find the fingerprint image %s", fileName.GetData());
 				bNotFindImage = true;
 				break;
 			}else if(lpbLength != STANDARD_FEATURE_LEN){
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, vendor returned feature length is not right.");
+				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, vendor returned feature length is not right.");
 				bLenIsNotRight = true;
 				break;
 			}else{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Fingerprint feature is NULL.");
+				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Fingerprint feature is NULL.");
 				bFeatureIsNull = true;
 				break;
 			}
@@ -911,15 +911,15 @@ int CFingerPrintFSM::GetFingerPrint(SpReqAnsContext<FingerPrintService_GetFinger
 			}
 			else if (!ExistsFile(strPath))
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Cannot find the fingerprint image %s", fileName.GetData());
+				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Cannot find the fingerprint image %s", fileName.GetData());
 				bNotFindImage = true;
 				break;
 			}else if(lpbLength != STANDARD_FEATURE_LEN){
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, vendor returned feature length is not right.");
+				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, vendor returned feature length is not right.");
 				bLenIsNotRight = true;
 				break;
 			}else{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Fingerprint feature is NULL.");
+				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Fingerprint feature is NULL.");
 				bFeatureIsNull = true;
 				break;
 			}
@@ -997,8 +997,7 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 	LOG_FUNCTION();
 	
 	if(!m_bOpened) {
-		//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode("RTA2425")("GenerateTemplate return failed for device isn't init suc.");
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode(getRTACode(FingerPrint_UserErrorCode_DEVOPENFAILED_GenerateTemplate))("GenerateTemplate return failed for device isn't init suc.");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode("RTA2425")("GenerateTemplate return failed for device isn't init suc.");
 		ctx->Answer(Error_NotInit, FingerPrint_UserErrorCode_DEVOPENFAILED_GenerateTemplate);  //maybe no vendor adapter
 		return 0;
 	}
@@ -1030,7 +1029,7 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 		WIN32_FIND_DATA findData;
 		if (FindFirstFileA((LPCTSTR)imagePaths[i], &findData) == INVALID_HANDLE_VALUE)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GenerateTemplate>, image <%s> not exist.", imagePaths[i].GetData());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode("RTA242C")("<GenerateTemplate>, image <%s> not exist.", imagePaths[i].GetData());
 			DeleteBmp(BmpImage);
 			ctx->Answer(Error_NoTarget);
 			return 0;
@@ -1038,7 +1037,7 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 #else
 		if (!ExistsFile(imagePaths[i]))
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GenerateTemplate>, image <%s> not exist.", imagePaths[i].GetData());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode("RTA242C")("<GenerateTemplate>, image <%s> not exist.", imagePaths[i].GetData());
 			DeleteBmp(BmpImage);
 			ctx->Answer(Error_NoTarget);
 			return 0;
@@ -1164,7 +1163,7 @@ ErrorCodeEnum CFingerPrintFSM::DeleteFingerBmp(CSimpleStringA imgPath)
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteFile(%s) failed LastError(%d).", imgPath.GetData(), errno);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242G")("DeleteFile(%s) failed LastError(%d).", imgPath.GetData(), errno);
 			return Error_Unexpect;
 		}
 	}
@@ -1190,7 +1189,7 @@ ErrorCodeEnum CFingerPrintFSM::DeleteRegisterFingerBmp()
 			}
 			else
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteFile(%s) failed LastError(%d).", imgPath.GetData(), errno);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242G")("DeleteFile(%s) failed LastError(%d).", imgPath.GetData(), errno);
 				m_fingerfileMtx.unlock();
 				return Error_Unexpect;
 			}
@@ -1237,7 +1236,7 @@ ErrorCodeEnum CFingerPrintFSM::DeleteFileIfExisted(const char* fileName)
 {
 	if (strlen(fileName) == 0 || strchr(fileName, (int)'*') != NULL)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Invalid or empty filename(%s)", fileName);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242G")("Invalid or empty filename(%s)", fileName);
 		return Error_Param;
 	}
 	CSimpleStringA strPath, strOldPath, strObjPath;
@@ -1256,7 +1255,7 @@ ErrorCodeEnum CFingerPrintFSM::DeleteFileIfExisted(const char* fileName)
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteFile(%s) failed LastError(%s).", strObjPath.GetData(), GetLastError());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242G")("DeleteFile(%s) failed LastError(%s).", strObjPath.GetData(), GetLastError());
 			return Error_Unexpect;
 		}
 	}
@@ -1264,7 +1263,7 @@ ErrorCodeEnum CFingerPrintFSM::DeleteFileIfExisted(const char* fileName)
 	{
 		return Error_Succeed;
 	}
-	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteFle(%s) Unexpect GetLastError(%s).", strObjPath.GetData(), GetLastError());
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteFle(%s) Unexpect GetLastError(%s).", strObjPath.GetData(), GetLastError());
 	return Error_Unexpect;
 #else
 	if (ExistsFileA(strObjPath))
@@ -1276,7 +1275,7 @@ ErrorCodeEnum CFingerPrintFSM::DeleteFileIfExisted(const char* fileName)
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteFile(%s) failed LastError(%d).", strObjPath.GetData(), errno);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242G")("DeleteFile(%s) failed LastError(%d).", strObjPath.GetData(), errno);
 			return Error_Unexpect;
 		}
 	}

+ 12 - 12
Module/mod_FingerPrint/FingerPrintFSM.h

@@ -67,7 +67,7 @@ public:
 	virtual void OnUnhandled()
 	{
 		if (ctx != NULL) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ScanEvent unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("ScanEvent unhandled.");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -83,7 +83,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ScanEx unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("ScanEx unhandled");
 			ctx->Answer(Error_InvalidState);
 		}
 	}
@@ -100,7 +100,7 @@ public:
 		if (ctx != NULL)
 		{
 			ctx->Answer(Error_InvalidState);
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetFinger unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("GetFinger unhandled");
 		}
 	}
 };
@@ -116,7 +116,7 @@ public:
 		if (ctx != NULL)
 		{
 			ctx->Answer(Error_InvalidState);
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GenerateTemplate unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("GenerateTemplate unhandled.");
 		}
 	}
 };
@@ -128,7 +128,7 @@ public:
 	virtual ~CancelRegisterEvent(){}
 	virtual void OnUnhandled()
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Cancel scan not handled");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("Cancel scan not handled");
 	}
 };
 
@@ -143,7 +143,7 @@ public:
 		if (ctx != NULL)
 		{
 			ctx->Answer(Error_InvalidState);
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Match unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("Match unhandled.");
 		}
 	}
 };
@@ -158,7 +158,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Match finished unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("Match finished unhandled.");
 		}
 	}
 };
@@ -173,7 +173,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetFingerFinished unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("GetFingerFinished unhandled.");
 		}
 	}
 };
@@ -185,7 +185,7 @@ public:
 	virtual ~CancelMatchEvent(){}
 	virtual void OnUnhandled()
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Cancel match not handled");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("Cancel match not handled");
 	}
 };
 
@@ -213,7 +213,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetFingerPrintJS unhandled");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("GetFingerPrintJS unhandled");
 		}
 	}
 };
@@ -228,7 +228,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GenerateTemplateJS unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("GenerateTemplateJS unhandled.");
 		}
 	}
 };
@@ -243,7 +243,7 @@ public:
 	{
 		if (ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GenerateTemplateJS unhandled.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242H")("GenerateTemplateJS unhandled.");
 		}
 	}
 };

+ 1 - 0
Module/mod_FingerPrint/FingerPrint_UserErrorCode.h

@@ -54,6 +54,7 @@
 
 #define FingerPrint_UserErrorCode_FindFile_in_DepBak					0x20400232	//在旧Dep路径下找到文件
 #define FingerPrint_UserErrorCode_GET_FINGERPRINT_PARAM_FAIL			0x20400233	//指纹扫描输入参数错误
+#define FingerPrint_UserErrorCode_DeleteImg_Fail						0x20400234	//删除指纹文件失败
 
 //指纹流程状态报错
 #define FingerPrint_UserErrorCode_PROCESS_NORMAL						0x20400401		//当前处于指纹仪空闲状态,无法处理此请求

+ 3 - 3
Module/mod_FingerPrint/mod_FingerPrint.h

@@ -200,7 +200,7 @@ public:
 			//不符合请求调用,告知具体错误流程
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			CSimpleStringA stateName = m_fsm.GetCurrStateName();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetFingerPrintJS req is unhandled ,CurrState=%d", stateName.GetData());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("GetFingerPrintJS req is unhandled ,CurrState=%d", stateName.GetData());
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {
@@ -220,7 +220,7 @@ public:
 			//不符合请求调用,告知具体错误流程
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			CSimpleStringA stateName = m_fsm.GetCurrStateName();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GenerateTemplateJS req is unhandled ,CurrState=%d", stateName.GetData());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("GenerateTemplateJS req is unhandled ,CurrState=%d", stateName.GetData());
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {
@@ -240,7 +240,7 @@ public:
 			//不符合请求调用,告知具体错误流程
 			DWORD errCode = m_fsm.GetFsmStateErrCode();
 			CSimpleStringA stateName = m_fsm.GetCurrStateName();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CancelScanJS req is unhandled ,CurrState=%d", stateName.GetData());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(m_fsm.getRTACode(errCode))("CancelScanJS req is unhandled ,CurrState=%d", stateName.GetData());
 			ctx->Answer(Error_Unexpect, errCode);
 		}
 		else {

Datei-Diff unterdrückt, da er zu groß ist
+ 100 - 669
Module/mod_IDCertificate/IDCertFSM.cpp


+ 76 - 55
Module/mod_IDCertificate/IDCertFSM.h

@@ -76,7 +76,6 @@ enum EvtType
 	USER_EVT_EXIT,
 	USER_EVT_GET_DEVINFO,
 	USER_EVT_ERROR,
-	USER_EVT_WAIT_FETCH_IDCARD_FINISHED,
 	USER_EVT_INIT_FINISHED,
 	USER_EVT_TODO_INIT,
 	USER_EVT_TODO_INIT_FINISHED,
@@ -94,6 +93,8 @@ enum BmpType
 #include "IDCerClass.h"
 #include "IDCertificate_def_g.h"
 #include "IDCertificate_LogCode.h"
+#include "RVCEventCode.h"
+
 #pragma region forsonar
 typedef IDCertificate::IDCertService_CancelRead_Info IDCert_CancelRead_Info;
 typedef IDCertificate::IDCertService_ReadAndScanUTF8_Req IDCert_ReadAndScanUTF8_Req; //ex2
@@ -109,10 +110,40 @@ typedef IDCertificate::IDCertService_GetDevInfo_Ans IDCert_GetDevInfo_Ans;
 #include <map>
 using namespace std;
 
-struct CtxInfo
+struct IDCerTextData
+{
+	unsigned char name[1024];
+	unsigned char sex[1024]; 
+	unsigned char nation[1024]; 
+	unsigned char birthday[1024];
+	unsigned char address[1024]; 
+	unsigned char idno[1024];
+	unsigned char department[1024];
+	unsigned char startDate[1024]; 
+	unsigned char endDate[1024]; 
+	unsigned char englishName[1024];
+	unsigned char nationality[1024];
+	unsigned char idVersion[1024];
+	unsigned char idType[1024];
+	unsigned char reserved[1024];
+	unsigned char englishNameEx[1024]; //英文名备用字段
+	unsigned char IssuedSN[1024]; //换证次数
+};
+
+struct HeadImgDelRTA
+{
+	CSimpleStringA findLast = "RTA2117";
+	CSimpleStringA delLastErr = "RTA2118";
+	CSimpleStringA noFindCur = "RTA2119";
+	CSimpleStringA delCurErr = "RTA211A";
+};
+
+struct ScanImgDelRTA
 {
-	int dataSize;
-	LPVOID pCtx;
+	CSimpleStringA findLast = "RTA2112";
+	CSimpleStringA delLastErr = "RTA2113";
+	CSimpleStringA noFindCur = "RTA2114";
+	CSimpleStringA delCurErr = "RTA2115";
 };
 
 class CancelReadEvent : public FSMEvent
@@ -167,46 +198,38 @@ public:
 class CIDCertFSM : public CCommDevFSM<CIDCertFSM, IDCerClass>
 {
 public:
-	enum {s0,s1,s2,s3,s4,s5};
+	enum {s0,s1,s2,s3};
 
 	BEGIN_FSM_STATE(CIDCertFSM)
 		FSM_STATE_ENTRY(s0,"Normal",s0_on_entry,s0_on_exit,s0_on_event)
 		FSM_STATE_ENTRY(s1,"Reading",s1_on_entry,s1_on_exit,s1_on_event)
 		FSM_STATE_ENTRY(s2,"Fail",s2_on_entry,s2_on_exit,s2_on_event)
-		FSM_STATE_ENTRY(s3, "Eject", s3_on_entry, s3_on_exit, s3_on_event)
-		FSM_STATE_ENTRY(s4, "WaitingFetch", s4_on_entry, s4_on_exit, s4_on_event)
-		FSM_STATE_ENTRY(s5, "Init", s5_on_entry, s5_on_exit, s5_on_event)
+		FSM_STATE_ENTRY(s3, "Init", s3_on_entry, s3_on_exit, s3_on_event)
 	END_FSM_STATE()
 
-	BEGIN_FSM_RULE(CIDCertFSM, s5)
+	BEGIN_FSM_RULE(CIDCertFSM, s3)
 		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_UTF8, 0) //ex4
 		FSM_RULE_ENTRY(s0, s1, USER_EVT_READ_AND_SCAN_UTF8JS, 0) //ex4
-		FSM_RULE_ENTRY(s0, s5, USER_EVT_TODO_INIT_FINISHED, 0)
+		FSM_RULE_ENTRY(s0, s3, USER_EVT_TODO_INIT_FINISHED, 0)
 		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, 1)
 		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 2)
-		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 3)
-		FSM_RULE_ENTRY(s1, s4, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 4)
-		FSM_RULE_ENTRY(s1, s5, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 5)
+		FSM_RULE_ENTRY(s1, s3, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 3)
 		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 0)
-		FSM_RULE_ENTRY(s1, s2, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 1)
-		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 2)
-		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 3)
-		FSM_RULE_ENTRY(s1, s4, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 4)
-		FSM_RULE_ENTRY(s1, s5, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 5)
+		FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 1)
+		FSM_RULE_ENTRY(s1, s3, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 3)
 		FSM_RULE_ENTRY(s1, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
 		FSM_RULE_ENTRY(s1, s0, USER_EVT_CANCEL_READ, 2)
 		FSM_RULE_ENTRY(s1, s0, USER_EVT_EXIT, 3)
-		FSM_RULE_ENTRY(s2, s5, USER_EVT_TODO_INIT_FINISHED, 0)
-		FSM_RULE_ENTRY(s4, s0, USER_EVT_WAIT_FETCH_IDCARD_FINISHED, 0)
-		FSM_RULE_ENTRY(s5, s0, USER_EVT_INIT_FINISHED, 0)
-		FSM_RULE_ENTRY(s5, s2, USER_EVT_INIT_FINISHED, 2)
+		FSM_RULE_ENTRY(s2, s3, USER_EVT_TODO_INIT_FINISHED, 0)
+		FSM_RULE_ENTRY(s3, s0, USER_EVT_INIT_FINISHED, 0)
+		FSM_RULE_ENTRY(s3, s2, USER_EVT_INIT_FINISHED, 2)
 	END_FSM_RULE()
 
-		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), transImgMsg("")
+		CIDCertFSM() :m_bCancelRead(false), m_bReading(false),
+		m_bExit(false), m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect), m_csMachineType(""), m_terminalNo(""), transImgMsg("")
 	{
 		ZeroMemory(&m_adapterInfo, sizeof(m_adapterInfo));
 		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x201);
@@ -231,18 +254,10 @@ public:
 	virtual void s3_on_entry();
 	virtual void s3_on_exit();
 	virtual unsigned int s3_on_event(FSMEvent* e);
-	virtual void s4_on_entry();
-	virtual void s4_on_exit();
-	virtual unsigned int s4_on_event(FSMEvent* e);
-	virtual void s5_on_entry();
-	virtual void s5_on_exit();
-	virtual unsigned int s5_on_event(FSMEvent* e);
 
 	int ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx); 
 	int ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req, IDCert_ReadAndScanUTF8JS_Ans>::Pointer ctx);
 
-	int WaitFetchIDCard();
-	void SetReadMore(){m_bWaitReadMore = true;}
 	void SetExitFlag(){m_bExit = true;}
 	bool GetReadFlag(){return m_bReading;}
 	ErrorCodeEnum GetDevCatInfo(DevCategoryInfo &devInfo, CSimpleStringA& devType);
@@ -264,22 +279,33 @@ private:
 
 	//Delete bmp file in dep directory, you should just convey fileName only without paths -Joseph
 	//deleteTiming:0, defalut; deleteTiming:1, delete before Read IDCard; deleteTiming:2, delete after Read IDCard
-	ErrorCodeEnum DeleteFileIfExisted(LPCTSTR fileName, int deleteTiming = 0);
-	BOOL UCS2_to_UTF8(UINT16* ucs2_code, UINT8* utf8_code);
-	BOOL GetSexUTF8String(UINT16* in, UINT8* out);
-	BOOL GetNationalUTF8String(UINT16* in, UINT8* out);
-	BOOL GetDateStandardFormatUTF8(UINT16* in, UINT8* out);
-	BOOL RemoveUCS2Blank(UINT16* ucs2_code);
+	//T:struct of RTAcode, use for HEAD photo OR SCAN photo
+	template <typename T>
+	ErrorCodeEnum DeleteFileIfExisted(LPCTSTR fileName, T picRta, int deleteTiming = 0);
+	void UCS2_to_UTF8(UINT16* ucs2_code, UINT8* utf8_code);
+	void GetSexUTF8String(UINT16* in, UINT8* out);
+	void GetNationalUTF8String(UINT16* in, UINT8* out);
+	void GetDateStandardFormatUTF8(UINT16* in, UINT8* out);
+	void RemoveUCS2Blank(UINT16* ucs2_code);
 	int GetUCS2ByteLength(UINT16* ucs2_code);
 	void CheckHanZi(UINT16* ucs2_code);
 
 	CSimpleStringA GetFileHashStr(CSimpleStringA filePath);
 	CSimpleStringA GetFileLastModifyTime(CSimpleStringA filePath);
 
+	template <typename T>
+	void CopyIDCerDataToCtx(IDCerInfoEx2 idInfoEx2, T& ctx); //兼容JS接口
+	BOOL GetScanImg(IDCerInfoEx2 idInfoEx2, CBlob& frontImg, CBlob& backImg);
+#ifdef RVC_OS_WIN
+	char* GetGBKString(UINT16* ucs2_code); //WIN打印源数据日志或其他中文用途
+#endif
+	//记录身份证相关图片的最近修改时间,用于上送信息调研,后续下掉 - 2025.6.13 CJL
+	void WarnImgCreateTime();
+
 public:
 		std::string checkImgURL;
 private:
-	bool m_bCancelRead, m_bReading, m_bWaitReadMore, m_bExit;
+	bool m_bCancelRead, m_bReading, m_bExit;
 	ErrorCodeEnum m_testResult;
 	ErrorCodeEnum m_getDevCategory;
 	DevCategoryInfo m_devCatInfo;
@@ -293,12 +319,17 @@ private:
 	BOOL supportUCS2; //支持生僻字
 	BOOL igestionVer; //吸入式设备
 	BOOL supportNewForeigner; //支持新版外国人永居证 2023.11.10
-	CSimpleStringA bkPicPath; //合成背景的图片路径
-	
 
 	BOOL closeImgCheck;
-	bool invalidBreak; //TODO: 只有赋值,没有调用,考虑移除  [Gifur@2025228]
 	ULLINT m_ullBeginTime, m_ullEndTime;
+	ULLINT OpenRFControlTime;
+	ULLINT CloseRFControlTime;
+	ULLINT IDCerAuthenticateTime;
+	ULLINT IDCerGetDataEx2Time;
+	ULLINT ScanIDAndSaveImageTime;
+	//记录身份证相关图片的最近修改时间,用于上送信息调研,后续下掉 - 2025.6.13 CJL
+	CSimpleStringA headPhotoTimeStr, frontPhotoTimeStr, backPhotoTimeStr;
+	time_t headPhotoTime, frontPhotoTime, backPhotoTime, currentSysTime;
 };
 
 struct ReadAndScanUTF8Task : public ITaskSp  //ex8
@@ -331,18 +362,6 @@ struct ReadAndScanUTF8JSTask : public ITaskSp  //ex8
 	}
 };
 
-struct WaitFetchIDCardTask : public ITaskSp
-{
-	CIDCertFSM* fsm;
-	WaitFetchIDCardTask(CIDCertFSM* f) : fsm(f) {}
-
-	void Process()
-	{
-		FSMEvent *e = new FSMEvent(USER_EVT_WAIT_FETCH_IDCARD_FINISHED);
-		e->param1 = fsm->WaitFetchIDCard();
-		fsm->PostEventFIFO(e);
-	}
-};
 struct InitTask : public ITaskSp
 {
 	CIDCertFSM* fsm;
@@ -355,4 +374,6 @@ struct InitTask : public ITaskSp
 		fsm->PostEventFIFO(e);
 	}
 };
+
+
 #endif //IDCERTFSM_H

+ 37 - 11
Module/mod_IDCertificate/IDCertificate.xml

@@ -1,18 +1,22 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <entity name="IDCertificate">
-	<class name="IDCertService" overlap="true" exclusive="false">			
-		<oneway name="CancelRead" overlap="true" method_id="1">		
-		</oneway>		
-		<!-- 1、设备未打开,errorCodeΪError_DevNotAvailable(2050),rtaCodeΪRTA2105 -->
-		<twoway name="GetDevInfo" overlap="true" method_id="65535">
+	<class name="IDCertService" overlap="true" exclusive="false">
+		<oneway name="CancelRead" overlap="true" method_id="1">
+		</oneway>
+		<!-- 1、设备未打开,errorCode为Error_DevNotAvailable(2050),rtaCode为RTA2105 -->
+		<twoway name="GetDevInfo" overlap="true" jsflag="true" method_id="65535">
 			<req>
 			</req>
 			<res>
+				<!--设备适配器DevCategoryInfo的szType-->
 				<param name="type" type="string" />
+				<!--设备适配器DevCategoryInfo的szModel-->
 				<param name="model" type="string" />
+				<!--设备适配器DevCategoryInfo的version-->
 				<param name="version" type="string" />
+				<!--硬件实体内置的状态,目前暂无使用场景,有需要再讨论如何定义-->
 				<param name="state" type="int" />
-			</res>			
+			</res>
 		</twoway>
 		<twoway name="ReadAndScanUTF8" overlap="true" method_id="9">
 			<req>
@@ -64,33 +68,55 @@
 				<param name="reserved2" type="array_string"/>
 			</req>
 			<res>
-				<!--msgtype用于区分传递方式的新旧-->
-				<param name="msgtype" type="int" />
+				<!--是否扫描成功-->
 				<param name="hasscan" type="int" />
-				<param name="photodata" type="blob" />
+				<!--正面扫描件-->
 				<param name="frontphoto" type="blob" />
+				<!--背面扫描件-->
 				<param name="backphoto" type="blob" />
+				<!--头像图片-->
 				<param name="headphoto" type="blob" />
+				<!--指纹数据1-->
 				<param name="finger1" type="blob" />
+				<!--指纹数据2-->
 				<param name="finger2" type="blob" />
+				<!--图片预留字段1-->
 				<param name="imgreserved1" type="blob" />
+				<!--图片预留字段2-->
 				<param name="imgreserved2" type="blob" />
+				<!--预留字段1-->
 				<param name="reserved1" type="array_int"/>
+				<!--预留字段2-->
 				<param name="reserved2" type="array_string"/>
+				<!--姓名-->
 				<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>
@@ -105,6 +131,6 @@
 		</twoway>
 	</class>
 	<message name="FetchIDCard">
-			<param name="status" type="int"/>
-	</message>	
+		<param name="status" type="int"/>
+	</message>
 </entity>

+ 1 - 0
Module/mod_IDCertificate/IDCertificate_LogCode.h

@@ -6,6 +6,7 @@ namespace IDCertificate {
 
 #define IDCertService_LogCode_OpenIDCerRFControl "QLR040220121"
 #define IDCertService_LogCode_CloseIDCerRFControl "QLR040220122"
+#define IDCertService_LogCode_IDCerGetDataEx2 "QLR040220123"
 
 }
 #endif

+ 4 - 1
Module/mod_IDCertificate/IDCertificate_UserErrorCode.h

@@ -8,6 +8,7 @@
 #define IDCertificate_UserErrorCode_RootInfo			    0x20100204	//root信息
 #define IDCertificate_UserErrorCode_ScanIImageFailed        0x20100205	//扫描图像失败
 
+#define IDCertificate_UserErrorCode_Get_DevAdapter_Path_Failed	0x2010020c //获取适配器路径失败
 #define IDCertificate_UserErrorCode_DevOpenFailed			0x2010020d	//设备打开失败 2010020d
 #define IDCertificate_UserErrorCode_DllLoadFailed			0x2010020e  //厂商适配器加载失败 2010020e
 #define IDCertificate_UserErrorCode_Release_Object_Failed	0x2010020f //释放设备失败
@@ -25,7 +26,9 @@
 #define IDCertificate_UserErrorCode_ReadAndScan_NotOnReading	0x2010021f //实体不在读证状态
 #define IDCertificate_UserErrorCode_FindFile_in_DepBak			0x20100220 //旧dep目录下获取到厂商文件
 #define IDCertificate_UserErrorCode_Timeout_NoCard			0x20100221 //超时未插卡
-#define IDCertificate_UserErrorCode_Timeout_OtherCard		0x20100221 //插入其他卡片(非身份证)
+#define IDCertificate_UserErrorCode_Timeout_OtherCard		0x20100222 //插入其他卡片(非身份证)
+
+#define IDCertificate_UserErrorCode_GetImgFileTime			0x20100230 //图片文件的最近修改时间
 
 
 //#define IDCertificate_UserErrorCode_Real_Root_Config		(IDCertificate_UserErrorCode_Start + 31) //加载实际的root配置

+ 1 - 3
Module/mod_IDCertificate/IDCertificate_def_g.h

@@ -127,9 +127,7 @@ struct IDCertService_ReadAndScanUTF8JS_Req
 
 struct IDCertService_ReadAndScanUTF8JS_Ans
 {
-	int msgtype;
 	int hasscan;
-	CBlob photodata;
 	CBlob frontphoto;
 	CBlob backphoto;
 	CBlob headphoto;
@@ -157,7 +155,7 @@ struct IDCertService_ReadAndScanUTF8JS_Ans
 
 	void Serialize(SpBuffer &Buf)
 	{
-		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;
+		auto & buf = Buf & hasscan & 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;
 	}
 
 };

+ 37 - 20
Module/mod_UpgradeMgr/UpgradeTaskFSM.cpp

@@ -451,7 +451,7 @@ namespace Task
 						}
 						else {
 							m_fsm->m_currentTask.task_type = "U";//兼容旧服务端程序,无字段值时默认是升级模式
-							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("QueryCurrTask query task_type is not exist , use default value  task_type = U");
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("QueryCurrTask query task_type is not exist , use default value  task_type = U");
 						}
 						if (m_fsm->m_currentTask.task_type.Compare("U") == 0) {
 							//升级任务
@@ -956,7 +956,7 @@ namespace Task
 							}
 							else {
 								m_fsm->m_currentTask.task_type = "U";//兼容旧服务端程序,无字段值时默认是升级模式
-								DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("QueryNewContinueTask query task_type is not exist , use default value  task_type = U");
+								DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("QueryNewContinueTask query task_type is not exist , use default value  task_type = U");
 							}
 							if (m_fsm->m_currentTask.task_type.Compare("U") == 0) {
 								//pack_status 0-准备中 1-已就绪
@@ -1586,6 +1586,10 @@ namespace Task
 					resp.origin_file_length = (long)rootRet["origin_file_length"].asInt();
 					resp.bfinish = rootRet["finish"].asBool();//是否传送完毕
 					resp.sm3 = rootRet["sm3"].asString();//包hash码
+					int retlen = *(content.curLen);
+					if (resp.content_length != retlen) {
+						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("DownloadPackTask download len not equal, retlen = %d,content_length=%d", retlen, resp.content_length);
+					}
 					return true;//查询成功
 				}else{
 					CSimpleStringA msg = rootRet["message"].asString().c_str();
@@ -2186,7 +2190,7 @@ int CUpgradeTaskFSM::ExecRunCmd(CSimpleStringA &strErrMsg,CInstallStep* ins)
 			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown ,err=%s",err.GetData());
 			strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail, system_on exec unknown ,err=%s",err.GetData());
 #else
-			DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown , ret=%d, err=%s",ret, strerror(errno));
+			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown , ret=%d, err=%s",ret, strerror(errno));
 			strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail, system_on exec unknown  ret=%d, err=%s", ret, strerror(errno));
 #endif			
 
@@ -2218,7 +2222,7 @@ int CUpgradeTaskFSM::ExecRunCmd(CSimpleStringA &strErrMsg,CInstallStep* ins)
 				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s", eErrorCode.GetData());
 				strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail,errorCode = %s", eErrorCode.GetData());
 #else
-				DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
+				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
 				strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
 #endif			
 				return 0;//失败
@@ -3627,7 +3631,7 @@ ErrorCodeEnum CUpgradeTaskFSM::DeleteUnzipDir()
 	}
 	//判断解压缩文件夹名是否存在,不存在告警
 	if (m_currentTask.pack_name.IsNullOrEmpty()) {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteUnzipDir is fail ,temp unzip dir name is null");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteUnzipDir is fail ,temp unzip dir name is null");
 		return Error_Unexpect;
 	}
 	CSimpleStringA strUnzipDir = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", strDownloadsPath.GetData(), m_currentTask.pack_name.GetData());
@@ -4633,7 +4637,7 @@ int CUpgradeTaskFSM::ExecDepInstall(CSimpleStringA& strErrMsg)
 
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecDepInstall fail ,pack_version is null");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecDepInstall fail ,pack_version is null");
 			strErrMsg = CSimpleStringA::Format("ExecDepInstall fail ,pack_version is null");
 			return 0;
 		}
@@ -5145,7 +5149,7 @@ int CUpgradeTaskFSM::ExecDepRunCmd(CSimpleStringA& strErrMsg, CInstallStep* ins)
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown ,err=%s", err.GetData());
 			strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail, system_on exec unknown ,err=%s", err.GetData());
 #else
-			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown , ret=%d, err=%s", ret, strerror(errno));
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown , ret=%d, err=%s", ret, strerror(errno));
 			strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail, system_on exec unknown  ret=%d, err=%s", ret, strerror(errno));
 #endif			
 
@@ -5179,7 +5183,7 @@ int CUpgradeTaskFSM::ExecDepRunCmd(CSimpleStringA& strErrMsg, CInstallStep* ins)
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s", eErrorCode.GetData());
 				strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail,errorCode = %s", eErrorCode.GetData());
 #else
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
 				strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
 #endif			
 				return 0;//失败
@@ -6021,11 +6025,10 @@ bool CUpgradeTaskFSM::isWork()
 	}
 	//判断是否在设备安装状态,不受一般升级影响
 	if (isTerminalInstall()) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("isTerminalInstall get TerminalStage is N");
 		return true;
 	}
 	else {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("isTerminalInstall get TerminalStage is not N");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("isTerminalInstall get TerminalStage is not N");
 	}
 	
 	//判断升级实体是否工作
@@ -6065,15 +6068,29 @@ bool CUpgradeTaskFSM::isWork()
 	//非升级任务和无任务
 	CSimpleStringA strValue;
 	if(m_pEntity->GetFunction()->GetSysVar("TerminalStage", strValue) == Error_Succeed){
-		if(strValue.Compare("X")==0){	
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("TerminalStage = X ,continue wait");
+		if(strValue.Compare("X")==0){
+			m_queryIsWorkCount++;
+			if (m_queryIsWorkCount >= QUERY_IS_WORK_WARN_LIMIT) {
+				m_queryIsWorkCount = 0;
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("TerminalStage = X ,continue wait");
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("TerminalStage = X ,continue wait");
+			}
 			return false;//状态是x继续等待
 		}
 		if(strValue.Compare("A")==0){
 			if(((CUpgradeMgrEntity*)m_pEntity)->m_bStartUp){
 				return true;//通过
 			}else{
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("TerminalStage = A ,but UIState is not M , continue wait");
+				m_queryIsWorkCount++;
+				if (m_queryIsWorkCount >= QUERY_IS_WORK_WARN_LIMIT) {
+					m_queryIsWorkCount = 0;
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("TerminalStage = A ,but UIState is not M , continue wait");
+				}
+				else {
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("TerminalStage = A ,but UIState is not M , continue wait");
+				}
 				return false;//准入过,但进入首页,继续等待
 			}
 		}
@@ -6254,13 +6271,13 @@ void CUpgradeTaskFSM::s1_on_entry()
 {
 	//判断是否进入了首页
 	CSimpleStringA strValue;
-
+	m_queryIsWorkCount = 0;
 	if(isWork()&&((CUpgradeMgrEntity*)m_pEntity)->m_initSucc){
 		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("====upgrade is start up ====");
-		ScheduleTimer(2,10*1000);//首次进入等待hash时间
+		ScheduleTimer(2,15*1000);//首次进入等待hash时间
 	}else{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("last upgrade progress is not end or is not initSucc,wait 10s ");
-		ScheduleTimer(1, 10*1000);//等待一段时间再判断是否进入首页
+		DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM)("last upgrade progress is not end or is not initSucc,wait 15s ");
+		ScheduleTimer(1, 15*1000);//等待一段时间再判断是否进入首页
 	}
 }
 
@@ -6279,10 +6296,10 @@ unsigned int CUpgradeTaskFSM::s1_on_event(FSMEvent* event)
 
 			if(isWork()&&((CUpgradeMgrEntity*)m_pEntity)->m_initSucc){
 				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("====upgrade is start up ====");
-				ScheduleTimer(2,10*1000);//首次进入等待hash时间
+				ScheduleTimer(2,15*1000);//首次进入等待hash时间
 			}else{
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("last upgrade progress is not end or is not initSucc,wait 10s ");
-				ScheduleTimer(1, 10*1000);//等待一段时间再判断是否进入首页
+				DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM)("last upgrade progress is not end or is not initSucc,wait 15s ");
+				ScheduleTimer(1, 15*1000);//等待一段时间再判断是否进入首页
 			}
 
 		}else if(event->param1 ==2){

+ 3 - 0
Module/mod_UpgradeMgr/UpgradeTaskFSM.h

@@ -11,6 +11,7 @@
 #define DOWNLOAD_CONTENT_EACH_LEN 512*1024
 #define DOWNLOAD_TIMEOUT 2*60
 #define QUERY_NO_TASK_WARN_LIMIT 10
+#define	QUERY_IS_WORK_WARN_LIMIT 10
 using namespace std;
 
 #define WARN_TASK_COPY_FILE_ZERO 0x50620022 //升级copy文件夹文件个数为0
@@ -349,6 +350,7 @@ public:
 		m_queryNewTaskInterval = 240;//默认查询任务时间间隔
 		m_installStopCopyDep = false;//默认拷贝
 		m_downloadBreakOffCount = 0; 
+		m_queryIsWorkCount = 0;
 	}
 	~CUpgradeTaskFSM(){}
 	//具体实现方法
@@ -550,6 +552,7 @@ public:
 	CSimpleStringA m_fileSM3List;//版本文件hash集合字符串
 	DWORD m_beginSendSM3Time;//开始发送sm3hahs时间
 	int m_queryNewTaskCount;//查询新任务时无任务次数
+	int m_queryIsWorkCount;
 	int m_downloadBreakOffCount;
 
 	bool m_bDownloadIdle;	//是否下载空闲 true: 不能下载,false: 可下载

+ 3 - 3
Module/mod_accessauth/AccessAuthFSM.cpp

@@ -656,7 +656,7 @@ void CAccessAuthFSM::s3_on_entry()
 {
 	LOG_FUNCTION();
 	CSystemStaticInfo si;
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setLogCode(AccessAuthService_LogCode_Regist)("终端准入成功");
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(AccessAuthService_LogCode_Regist)("终端准入成功");
 
 	m_pEntity->GetFunction()->GetSystemStaticInfo(si);
 	if (si.InstallVersion.ToString().IsNullOrEmpty()) {
@@ -1012,7 +1012,7 @@ void CAccessAuthFSM::AuthLogWarn(const T& ret, const string& url, const string&
 			msg = CSimpleStringA::Format("%s失败,请尝试重启应用", method.c_str());
 		}
 		doWarnMsg(acsErrCode, msg.GetData(), bNeedEvent);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setLogCode(AccessAuthService_LogCode_Regist)(msg.GetData());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(AccessAuthService_LogCode_Regist)(msg.GetData());
 	}
 	else {
 		SP::Module::Restful::CommResponseJson responseStatus;
@@ -1020,7 +1020,7 @@ void CAccessAuthFSM::AuthLogWarn(const T& ret, const string& url, const string&
 		msg = CSimpleStringA::Format("{\"errcode\": \"%s\", \"message\": %s}",
 			responseStatus.errorCode.c_str(), responseStatus.errorMsg.c_str());
 		doWarnMsg(ERR_ACCESSAUTH_SERVICE_FAILED, msg.GetData(), bNeedEvent);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA520A").setLogCode(AccessAuthService_LogCode_Regist)
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode("RTA520A").setLogCode(AccessAuthService_LogCode_Regist)
 			(msg.GetData());
 	}
 }

+ 7 - 7
Module/mod_alarm/AlarmFSM.cpp

@@ -253,11 +253,11 @@ ErrorCodeEnum AlarmFSM::OnInit()
 		} 
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("get DealWarningTime from CenterSetting.ini failed");
+			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("get DealWarningTime from CenterSetting.ini failed");
 		}	
 
 		m_CenterModel = 2;
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init use default value CenterModel=2");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init use default value CenterModel=2");
 
 		int maxResendTime = 120;
 		Error = spConfig->ReadConfigValueInt("Alarm", "maxResendTime", maxResendTime);
@@ -270,7 +270,7 @@ ErrorCodeEnum AlarmFSM::OnInit()
 			}
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini maxResendTime=%d", m_maxResendTime);
 		}else{
-			DbgWithLink(LOG_LEVEL_WARN,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini maxResendTime failed");
+			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini maxResendTime failed");
 		}
 
 		CSimpleStringA str="";
@@ -279,7 +279,7 @@ ErrorCodeEnum AlarmFSM::OnInit()
 			m_topic = str;
 			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini topic=%s",str.GetData());
 		}else{
-			DbgWithLink(LOG_LEVEL_WARN,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini topic failed");
+			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini topic failed");
 		}
 
 		Error = spConfig->ReadConfigValue("Alarm", "sendUrl", str);
@@ -287,7 +287,7 @@ ErrorCodeEnum AlarmFSM::OnInit()
 			m_sendUrl = str;
 			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini sendUrl=%s",str.GetData());
 		}else{
-			DbgWithLink(LOG_LEVEL_WARN,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini sendUrl failed");
+			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini sendUrl failed");
 		}
 
 		Error = spConfig->ReadConfigValue("Alarm", "branchNo", str);
@@ -295,10 +295,10 @@ ErrorCodeEnum AlarmFSM::OnInit()
 			m_branchNo = str;
 			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini branchNo=%s",str.GetData());
 		}else{
-			DbgWithLink(LOG_LEVEL_WARN,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini branchNo failed");
+			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("init read CenterSetting.ini branchNo failed");
 		}
 	} else {
-		DbgWithLink(LOG_LEVEL_WARN,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("open CenterSetting.ini failed");
+		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("open CenterSetting.ini failed");
 	}
 
 	if (m_nDealWarningTime == 0)

+ 56 - 3
Module/mod_cardissuerstore/CardIssuerFSM.cpp

@@ -1968,7 +1968,6 @@ int CCardIssuerFSM::Initial()
 	ErrorCodeEnum errCode = OpenDevice(DEV_OPEN_TYPE_COM,"");	
 	if (errCode != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("OpenDevice in Initial return failed with errCode:%d(0x%x)", errCode, errCode);
 		CloseAndClearDevObj(false);
 		SetDevInitFlag(false);
 		m_bOpening = false;
@@ -2944,7 +2943,9 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStoreService_Read
 			int icRetryTimes = 0;
 			while (1)
 			{//for poor mag only card,we always retry...
-			bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER_STORE, m_hDevHelper, activeCardType);
+				l_beginTime = GetTickCountRVC();
+				bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER_STORE, m_hDevHelper, activeCardType);
+				l_endTime = GetTickCountRVC();
 				if (!bIC)
 					icRetryTimes++;
 				else
@@ -2954,6 +2955,15 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStoreService_Read
 					break;
 			}
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<ReadCard::DetectIfICCard>, bIC:%d", bIC);
+			if (!bIC) {
+				ErrorCodeEnum eErrCode = Error_Unexpect;
+				CSimpleStringA ApiName = "";
+				CSimpleStringA alarmMsg = "";
+				CSimpleStringA csErrMsgWithReturnCode = "";
+				GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WCT")(csErrMsgWithReturnCode.GetData());
+				LogWarn(Severity_Middle, Error_Unexpect, 0x2200000a, alarmMsg.GetData());
+			}
 			if (Error_Succeed == eMagReadErr && magTracks.track[1].eStatus == CI_DATA_OK)
 			{
 				if (bIC)
@@ -3209,7 +3219,9 @@ int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerStoreService_Read_Req,
 			int icRetryTimes = 0;
 			while (1)
 			{//for poor mag only card,we always retry...
-			bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER_STORE_RF, m_hDevHelper, activeCardType);
+				l_beginTime = GetTickCountRVC();
+				bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER_STORE_RF, m_hDevHelper, activeCardType);
+				l_endTime = GetTickCountRVC();
 				if (!bIC)
 					icRetryTimes++;
 				else
@@ -3219,6 +3231,15 @@ int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerStoreService_Read_Req,
 					break;
 			}
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<ReadCard::DetectIfICCard>, bIC:%d", bIC);
+			if (!bIC) {
+				ErrorCodeEnum eErrCode = Error_Unexpect;
+				CSimpleStringA ApiName = "";
+				CSimpleStringA alarmMsg = "";
+				CSimpleStringA csErrMsgWithReturnCode = "";
+				GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WC6")(csErrMsgWithReturnCode.GetData());
+				LogWarn(Severity_Middle, Error_Unexpect, 0x22000017, alarmMsg.GetData());
+			}
 			if (!(bIC && activeCardType == 'A'))
 				bIC = false;
 			if (Error_Succeed == eMagReadErr && magTracks.track[1].eStatus == CI_DATA_OK)
@@ -4897,7 +4918,9 @@ bool CCardIssuerFSM::JustReadCardNo()
 	m_currCardNo = "";
 	bool bHasAccount = false;
 	int activeCardType;
+	l_beginTime = GetTickCountRVC();
 	bool bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER_STORE, m_hDevHelper, activeCardType);
+	l_endTime = GetTickCountRVC();
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DetectIfICCard, bIC:%d, activeCardType:%d", bIC, activeCardType);
 
 	if (bIC)
@@ -4959,6 +4982,15 @@ bool CCardIssuerFSM::JustReadCardNo()
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ReleaseIC").setCostTime(l_endTime - l_beginTime)("JustReadCardNo::ReleaseIC");
 		}
 	}
+	else {
+		ErrorCodeEnum eErrCode = Error_Unexpect;
+		CSimpleStringA ApiName = "";
+		CSimpleStringA alarmMsg = "";
+		CSimpleStringA csErrMsgWithReturnCode = "";
+		GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WCT")(csErrMsgWithReturnCode.GetData());
+		LogWarn(Severity_Middle, Error_Unexpect, 0x2200000a, alarmMsg.GetData());
+	}
 	if (!bHasAccount)
 	{
 		MagTracks magTracks;
@@ -9063,7 +9095,9 @@ int CCardIssuerFSM::CheckCardType(CSimpleStringA cardNo, bool bReadMag, int& ICt
 			bool bIC(false);
 			while (1)
 			{//for poor mag only card,we always retry...
+				l_beginTime = GetTickCountRVC();
 				bIC = m_pCardProcess->DetectIfICCard(CARD_MACHINE_ISSUER_STORE, m_hDevHelper, activeCardType);
+				l_endTime = GetTickCountRVC();
 				if (!bIC)
 					icRetryTimes++;
 				else
@@ -9073,6 +9107,15 @@ int CCardIssuerFSM::CheckCardType(CSimpleStringA cardNo, bool bReadMag, int& ICt
 					break;
 			}
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<CheckCardType::DetectIfICCard>, bIC:%d", bIC);
+			if (!bIC) {
+				ErrorCodeEnum eErrCode = Error_Unexpect;
+				CSimpleStringA ApiName = "";
+				CSimpleStringA alarmMsg = "";
+				CSimpleStringA csErrMsgWithReturnCode = "";
+				GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WCT")(csErrMsgWithReturnCode.GetData());
+				LogWarn(Severity_Middle, Error_Unexpect, 0x2200000a, alarmMsg.GetData());
+			}
 
 			//ic探测成功,0.无磁条IC 1.复合 2.磁条 3.纯IC 
 			if (bIC) {
@@ -9149,6 +9192,16 @@ int CCardIssuerFSM::CheckCardType(CSimpleStringA cardNo, bool bReadMag, int& ICt
 							break;
 					}
 					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("<CheckCardType::DetectIfICCard_RF>, bIC:%d", bICRF);
+					if (!bICRF) {
+						ErrorCodeEnum eErrCode = Error_Unexpect;
+						CSimpleStringA ApiName = "";
+						CSimpleStringA alarmMsg = "";
+						CSimpleStringA csErrMsgWithReturnCode = "";
+						GetCardProcessLastErr(eErrCode, ApiName, alarmMsg, csErrMsgWithReturnCode);
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(ApiName.GetData()).setCostTime(l_endTime - l_beginTime).setResultCode("RTA2WC6")(csErrMsgWithReturnCode.GetData());
+						LogWarn(Severity_Middle, Error_Unexpect, 0x22000017, alarmMsg.GetData());
+					}
+
 					if (!(bICRF && activeCardType == 'A')) {
 						bICRF = false;
 					}

+ 37 - 24
Module/mod_evtconverter/mod_evtconverter.cpp

@@ -31,21 +31,11 @@ public:
 	}
 	ErrorCodeEnum __OnStart(ErrorCodeEnum preOperationError)
 	{
-
-		if (m_nIslog){
-
-		}
 		m_eDeviceType = eStand2sType; 
 		m_nIslog = 1;
 		ErrorCodeEnum Error;
 		CSimpleStringA str;
 		CSmartPointer<IEntityFunction> spEntityFunction = GetFunction();
-		CSimpleStringA strConfigDir;
-		Error = spEntityFunction->GetPath("CFG", strConfigDir);
-		if (Error != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get etc directory failed!");
-            return Error;
-        }
 
 		m_eDeviceType = RvcGetDeviceType();
 	
@@ -66,7 +56,7 @@ public:
         }
 		Error = spConfigCenterSetting->ReadConfigValue(GetEntityName(), "IsLog", str);
 		if (Error != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("load config failed, read Log.IsLog failed!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("load config failed, read Log.IsLog failed!");
 			return Error;
 		}
 		m_nIslog = atoi(str);
@@ -87,21 +77,21 @@ public:
 		cb.user_data = this;
 		int rc = evt_engine_create(&cb, &engine);
 		if (rc != 0) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create engine failed!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create engine failed!");
 			return (ErrorCodeEnum)rc;
 		}
 
 		if (num > 0) {
 			rc = evt_engine_load(engine, indexarr, num, slot_trigger_arr, sizeof(slot_trigger_arr)/sizeof(slot_trigger_elem_t));
 			if (rc != 0) {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("load config failed!");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("load config failed!");
 				return (ErrorCodeEnum)rc;
 			}
 		}
 
 		rc = evt_engine_start(engine);
 		if (rc != 0) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start engine failed!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("start engine failed!");
 			return (ErrorCodeEnum)rc;
 		}
 
@@ -144,12 +134,12 @@ public:
 		int rc;
 		rc = evt_engine_stop(m_pEngine);
 		if (rc != 0) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("stop engine failed!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("stop engine failed!");
 			return (ErrorCodeEnum)rc;
 		}
 		rc = evt_engine_unload(m_pEngine);
 		if (rc != 0) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("unload engine failed!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("unload engine failed!");
 			return (ErrorCodeEnum)rc;
 		}
 		evt_engine_destroy(m_pEngine);
@@ -163,7 +153,7 @@ public:
 		if (m_pEngine) {
 			int rc = evt_engine_process_sysvar(m_pEngine, pszKey, pszValue, pszOldValue, pszEntityName);
 			if (rc != 0) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("process sysvar failed! Error; %d, key=%s oldvalue=%s, value=%s", rc,pszKey, pszOldValue, pszValue);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA1301")("process sysvar failed! Error; %d, key=%s oldvalue=%s, value=%s", rc,pszKey, pszOldValue, pszValue);
 			}
 		}
 	}
@@ -203,7 +193,7 @@ private:
 		CSmartPointer<IEntityFunction> spEntityFunction = GetFunction();
 		ErrorCodeEnum Error = spEntityFunction->SetTimer((DWORD)timer_id, pWarp, (DWORD)interval);
 		if (Error != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("set timer %d failed!", timer_id);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("set timer %d failed!", timer_id);
 			delete pWarp;
 		} 
 		else {
@@ -226,7 +216,7 @@ private:
 		CUUID uuid;
 		ErrorCodeEnum Error = GetFunction()->SubscribeLog(uuid, this, eLogType, eSeverityLevel, eSysError, dwUserCode, szEntity, bIgnoreMessage);
 		if (Error != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("subscribe log failed! Error = %d", Error);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("subscribe log failed! Error = %d", Error);
 		} 
 		else {
 			*sub_id = (unsigned long long)uuid;
@@ -240,21 +230,44 @@ private:
 		if (Error == Error_Succeed) {
 		} 
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("unsubscribe log failed! Error = %d", Error);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("unsubscribe log failed! Error = %d", Error);
 		}
 		return (int)Error;
 	}
 
 	int subscribe_sysevent()
 	{
-		CSmartPointer<IEntityFunction> spEntityFunction = GetFunction();
-		return (int)spEntityFunction->RegistSysVarEvent("*", this);
+		ErrorCodeEnum Error = GetFunction()->RegistSysVarEvent("CustomerBeing", this);
+		if (Error != Error_Succeed) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("register sysvar %s failed!", "CustomerBeing");
+		}
+
+		Error = GetFunction()->RegistSysVarEvent("CustomerHandle", this);
+		if (Error != Error_Succeed) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("register sysvar %s failed!", "CustomerHandle");
+		}
+
+		Error = GetFunction()->RegistSysVarEvent("CallState", this);
+		if (Error != Error_Succeed) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("register sysvar %s failed!", "CallState");
+		}
+
+		Error = GetFunction()->RegistSysVarEvent("BackInitiative", this);
+		if (Error != Error_Succeed) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("register sysvar %s failed!", "BackInitiative");
+		}
+
+		return Error;
 	}
 
 	int unsubscribe_sysevent()
 	{
-		CSmartPointer<IEntityFunction> spEntityFunction = GetFunction();
-		return (int)spEntityFunction->UnregistSysVarEvent("*");
+		GetFunction()->UnregistSysVarEvent("CustomerBeing");
+		GetFunction()->UnregistSysVarEvent("CustomerHandle");
+		GetFunction()->UnregistSysVarEvent("CallState");
+		GetFunction()->UnregistSysVarEvent("BackInitiative");
+
+		return Error_Succeed;
 	}
 
 	int get_sysevent(const char *key, CSimpleStringA &strValue)

+ 2 - 2
Module/mod_gpio/GpioFSM.cpp

@@ -88,7 +88,7 @@ static const char* GetDriverPortString(int pin)
 	case 4: return "[Driver] PinPad Tip Light";
 	case 5: return "[Driver] Face Light";
 	case 6: return "[Driver] Maintain Light";
-	case 7: return "[Driver] CardIssuser Mouse Maintain Light";
+	case 7: return "[Driver] CardIssuerMouse Maintain Light";
 	case 8: return "[Driver] USB Tip Light";
 	case 9: return "[Driver] RF Tip Light";
 	case 10: return "";
@@ -102,7 +102,7 @@ static const char* GetDriverPortString(int pin)
 	case 18: return "[Receiver] Door Detecter";
 	case 19: return "[Receiver] Phone Detecter";
 	case 20: return "[Receiver] Body Detecter";
-	case 21: return "[Receiver] CardIssuer Mouse Detecter";
+	case 21: return "[Receiver] CardIssuerMouse Detecter";
 		//case 22: return "";
 		//case 23: return "";
 		//case 24: return "";

+ 12 - 12
Module/mod_heartbeat/HeartBeatFSM.cpp

@@ -701,7 +701,7 @@ void CHeartBeatFSM::LocalPreOnline(int slot, CSimpleStringA fromTermNo,CSimpleSt
 		}
 		else if (eErr == Error_InvalidState)
 		{
-			errMsgData = "CardIssuer in use";
+			errMsgData = "CardIssuerStore in use";
 			if (m_pHandShakeConn && m_pHandShakeConn->IsConnectionOK())
 			{
 				if (type == 0) {
@@ -713,12 +713,12 @@ void CHeartBeatFSM::LocalPreOnline(int slot, CSimpleStringA fromTermNo,CSimpleSt
 						account.GetLength(), errMsgData.GetData(), errMsgData.GetLength() + 1, 9999, 9999, dwUserCode);
 				}
 			}
-			LogWarn(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardStore_CardIssuer_In_Use, "CardIssuer in use");
+			LogWarn(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardStore_CardIssuer_In_Use, "CardIssuerStore in use");
 			return;
 		}
 		else if (eErr == Error_DevNotAvailable)
 		{
-			errMsgData = "CardIssuer not available(open failed)";
+			errMsgData = "CardIssuerStore not available(open failed)";
 			if (m_pHandShakeConn && m_pHandShakeConn->IsConnectionOK())
 			{
 				if (type == 0) {
@@ -730,12 +730,12 @@ void CHeartBeatFSM::LocalPreOnline(int slot, CSimpleStringA fromTermNo,CSimpleSt
 						account.GetLength(), errMsgData.GetData(), errMsgData.GetLength() + 1, 9999, 9999, dwUserCode);
 				}
 			}
-			LogWarn(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardIssuer_Open_Failed, "CardIssuer not available(open failed)");
+			LogWarn(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardIssuer_Open_Failed, "CardIssuerStore not available(open failed)");
 			return;
 		}
 		else if (eErr == Error_TimeOut)
 		{
-			errMsgData = "CardIssuer process cost too long";
+			errMsgData = "CardIssuerStore process cost too long";
 			if (m_pHandShakeConn && m_pHandShakeConn->IsConnectionOK())
 			{
 				if (type == 0) {
@@ -748,7 +748,7 @@ void CHeartBeatFSM::LocalPreOnline(int slot, CSimpleStringA fromTermNo,CSimpleSt
 				}
 			}
 			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA5301")("跨机时卡库处理耗时过长");
-			LogError(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardIssuer_ProcessCostTooLong, "CardIssuer process cost too long");
+			LogError(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardIssuer_ProcessCostTooLong, "CardIssuerStore process cost too long");
 			return;
 		}
 
@@ -806,7 +806,7 @@ void CHeartBeatFSM::LocalPreOnlineJS(int slot, CSimpleStringA fromTermNo, CSimpl
 
 		if (eErr == Error_InvalidState)
 		{
-			errMsgData = "CardIssuer in use";
+			errMsgData = "CardIssuerStore in use";
 			if (m_pHandShakeConn && m_pHandShakeConn->IsConnectionOK())
 			{
 				if (type == 0) {
@@ -818,12 +818,12 @@ void CHeartBeatFSM::LocalPreOnlineJS(int slot, CSimpleStringA fromTermNo, CSimpl
 						account.GetLength(), errMsgData.GetData(), errMsgData.GetLength() + 1, 9999, 9999, dwUserCode);
 				}
 			}
-			LogWarn(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardStore_CardIssuer_In_Use, "CardIssuer in use");
+			LogWarn(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardStore_CardIssuer_In_Use, "CardIssuerStore in use");
 			return;
 		}
 		else if (eErr == Error_DevNotAvailable)
 		{
-			errMsgData = "CardIssuer not available(open failed)";
+			errMsgData = "CardIssuerStore not available(open failed)";
 			if (m_pHandShakeConn && m_pHandShakeConn->IsConnectionOK())
 			{
 				if (type == 0) {
@@ -835,12 +835,12 @@ void CHeartBeatFSM::LocalPreOnlineJS(int slot, CSimpleStringA fromTermNo, CSimpl
 						account.GetLength(), errMsgData.GetData(), errMsgData.GetLength() + 1, 9999, 9999, dwUserCode);
 				}
 			}
-			LogWarn(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardIssuer_Open_Failed, "CardIssuer not available(open failed)");
+			LogWarn(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardIssuer_Open_Failed, "CardIssuerStore not available(open failed)");
 			return;
 		}
 		else if (eErr == Error_TimeOut)
 		{
-			errMsgData = "CardIssuer process cost too long";
+			errMsgData = "CardIssuerStore process cost too long";
 			if (m_pHandShakeConn && m_pHandShakeConn->IsConnectionOK())
 			{
 				if (type == 0) {
@@ -853,7 +853,7 @@ void CHeartBeatFSM::LocalPreOnlineJS(int slot, CSimpleStringA fromTermNo, CSimpl
 				}
 			}
 			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA5301")("跨机时卡库处理耗时过长");
-			LogError(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardIssuer_ProcessCostTooLong, "CardIssuer process cost too long");
+			LogError(Severity_Middle, Error_Unexpect, HeartBeat_UserErrorCode_CardIssuer_ProcessCostTooLong, "CardIssuerStore process cost too long");
 			return;
 		}
 	}

+ 1 - 1
Module/mod_mediacontroller/mod_mediacontroller.cpp

@@ -1692,7 +1692,7 @@ void CMediaControllerEntity::OnLog( const CAutoArray<CUUID> &SubIDs, const CUUID
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402208V3").setResultCode("RTA2810")("上摄像分辨率不符合要求");
 			}
 			else if(idevid == capture_get_video_device_id(conf.strVideoOpt)){
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402208V3").setResultCode("RTA2810")("下摄像分辨率不符合要求");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402208V3").setResultCode("RTA2811")("下摄像分辨率不符合要求");
 			}
 			else {
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("no mathed device id.");

+ 2 - 2
Module/mod_upload/UploadFSM.cpp

@@ -399,10 +399,10 @@ namespace Task
 			}else{
 				//失败
 				if (m_fsm->m_currUploadFile->lastMD5Str.length() == 0) {
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("uploadFile http [success] is false, url[%s],userCode[%s],errmsg[%s],fileName = %s", httpUrl.c_str(), qTempRet.m_userCode.c_str(), qTempRet.m_errMsg.c_str(), m_fsm->m_currUploadFile->fileName.c_str());
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("uploadFile http [success] is false, url[%s],userCode[%s],errmsg[%s],fileName = %s", httpUrl.c_str(), qTempRet.m_userCode.c_str(), qTempRet.m_errMsg.c_str(), m_fsm->m_currUploadFile->fileName.c_str());
 				}
 				else {
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("uploadFile http [success] is false, url[%s],userCode[%s],errmsg[%s],fileName = %s,first_sm3 =[%s],last_sm3=[%s]", httpUrl.c_str(), qTempRet.m_userCode.c_str(), qTempRet.m_errMsg.c_str(), m_fsm->m_currUploadFile->fileName.c_str(), m_fsm->m_currUploadFile->firstMD5Str.c_str(), m_fsm->m_currUploadFile->lastMD5Str.c_str());
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("uploadFile http [success] is false, url[%s],userCode[%s],errmsg[%s],fileName = %s,first_sm3 =[%s],last_sm3=[%s]", httpUrl.c_str(), qTempRet.m_userCode.c_str(), qTempRet.m_errMsg.c_str(), m_fsm->m_currUploadFile->fileName.c_str(), m_fsm->m_currUploadFile->firstMD5Str.c_str(), m_fsm->m_currUploadFile->lastMD5Str.c_str());
 				}
 				return false;
 			}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.