Przeglądaj źródła

Z991239-5694 #comment feat:合并错误信息上送

陈纪林80310970 1 rok temu
rodzic
commit
ac4876ccae
100 zmienionych plików z 2109 dodań i 2489 usunięć
  1. 15 3
      CMakeLists.txt
  2. 6 6
      CMakeSettings.json
  3. 2 1
      DevAdapter/CMakeLists.txt
  4. 1 0
      DevAdapter/DeviceSimulator.h
  5. 4 0
      DevAdapter/include/CardAssist.cpp
  6. 18 1
      DevAdapter/include/CardAssist.h
  7. 1 1
      DevAdapter/self/dep/libHSPSCannerLoader/libHSPSCannerLoader.cpp
  8. 13 1
      DevAdapter/self/hspscanner/VirtualDeviceClass.cpp
  9. 20 7
      DevAdapter/simulator/cardissuerstand.1.1/cardissuer_impl.cpp
  10. 1 0
      DevAdapter/simulator/cardissuerstand.1.1/cardissuer_impl.h
  11. 74 2
      DevAdapter/simulator/hspscanner.1.1/hspscanner_impl.cpp
  12. 7 28
      DevAdapter/simulator/hspscanner.1.1/hspscanner_impl.h
  13. 27 9
      DevAdapter/simulator/idcer.1.1/idcer_impl.cpp
  14. 3 1
      DevAdapter/simulator/idcer.1.1/idcer_impl.h
  15. 1 1
      Framework/Common/SpBase.h
  16. 51 0
      Framework/Common/SpDefine.h
  17. 0 1
      Framework/RVCComm/ClientComm.cpp
  18. 0 1
      Framework/RVCComm/HTTPClient.cpp
  19. 0 2
      Framework/RVCComm/Package.cpp
  20. 14 0
      Framework/RvcLogSdk/log_api.cpp
  21. 22 6
      Framework/RvcLogSdk/log_builder.cpp
  22. 1 1
      Framework/RvcLogSdk/log_producer_config.c
  23. 1 1
      Framework/RvcLogSdk/log_producer_manager.c
  24. 1 0
      Framework/spbase/SpBase.cpp
  25. 3 0
      Framework/spbase/sp_gui.cpp
  26. 11 12
      Framework/spbase/sp_logwithlink.cpp
  27. 5 2
      Framework/spbase/sp_mod.c
  28. 1 1
      Framework/spbase/sp_runTask.cpp
  29. 3 9
      Framework/spshell/app.cpp
  30. 1 1
      Framework/spshell/svc.cpp
  31. 5 5
      Framework/winpr/libwinpr/utils/wlog/wlog.c
  32. 23 0
      Module/include/CommEntityUtil.hpp
  33. 2 6
      Module/include/DevEntityCommBase.hpp
  34. 63 18
      Module/include/DevFSMCommBase.hpp
  35. 4 20
      Module/include/EventCode.h
  36. 147 271
      Module/mod_CardIssuerStand/CardIssuerFSM.cpp
  37. 1 1
      Module/mod_CardIssuerStand/mod_cardissuer.cpp
  38. 8 4
      Module/mod_ContactlessCard/ContactlessFSM.cpp
  39. 1 1
      Module/mod_DeviceControl/DeviceAdaptChecker.cpp
  40. 12 12
      Module/mod_DeviceControl/mod_DeviceControl.cpp
  41. 9 9
      Module/mod_HSPScanner/HSPSCanner_UserErrorCode.h
  42. 228 385
      Module/mod_HSPScanner/HSPScannerFSM.cpp
  43. 12 10
      Module/mod_HSPScanner/HSPScannerFSM.h
  44. 14 0
      Module/mod_HSPScanner/mod_HSPScanner.cpp
  45. 4 2
      Module/mod_HSPScanner/mod_HSPScanner.h
  46. 50 277
      Module/mod_IDCertificate/IDCertFSM.cpp
  47. 8 31
      Module/mod_IDCertificate/IDCertFSM.h
  48. 25 26
      Module/mod_IDCertificate/IDCertificate_UserErrorCode.h
  49. 311 220
      Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp
  50. 10 7
      Module/mod_ResourceWatcher/ResourceWatcherFSM.h
  51. 1 1
      Module/mod_ResourceWatcher/ResourceWatcher_UserCode.h
  52. 0 2
      Module/mod_UpgradeMgr/mod_UpgradeMgr.cpp
  53. 10 10
      Module/mod_accessauth/AccessAuthFSM.cpp
  54. 25 25
      Module/mod_accessauth/mod_AccessAuth.cpp
  55. 29 11
      Module/mod_chromium/CModTools.cpp
  56. 1 1
      Module/mod_chromium/CSocketClient.cpp
  57. 1 1
      Module/mod_chromium/CWSCodec.cpp
  58. 3 3
      Module/mod_chromium/CWebsocketServer.cpp
  59. 1 0
      Module/mod_chromium/baseEx.cpp
  60. 1 0
      Module/mod_chromium/baseEx.h
  61. 43 7
      Module/mod_chromium/mod_chromium.cpp
  62. 2 0
      Module/mod_chromium/mod_chromium.h
  63. 7 17
      Module/mod_counterconnector/ConnectorFSM.cpp
  64. 3 0
      Module/mod_counterconnector/ConnectorFSM.h
  65. 10 5
      Module/mod_counterconnector/mod_counterconnector.cpp
  66. 0 27
      Module/mod_gpio/Gpio.xml
  67. 5 0
      Module/mod_gpio/Gpio_UserErrorCode.h
  68. 1 113
      Module/mod_gpio/Gpio_client_g.h
  69. 2 71
      Module/mod_gpio/Gpio_def_g.h
  70. 0 81
      Module/mod_gpio/Gpio_server_g.h
  71. 353 340
      Module/mod_gpio/mod_gpio.cpp
  72. 79 101
      Module/mod_gpio/mod_gpio.h
  73. 76 26
      Module/mod_healthmanager/HealthManagerFSM.cpp
  74. 12 9
      Module/mod_healthmanager/HealthManagerFSM.h
  75. 15 9
      Module/mod_healthmanager/mod_healthmanager.cpp
  76. 1 1
      Module/mod_heartbeat/HeartBeatFSM.cpp
  77. 0 25
      Module/mod_livenessdetection/Event.h
  78. 41 47
      Module/mod_mediacontroller/capture.cpp
  79. 8 11
      Module/mod_mediacontroller/mod_mediacontroller.cpp
  80. 20 9
      Module/mod_pinpad/PinPadFSM.cpp
  81. 1 6
      Module/mod_pinpad/PinPadFSM.h
  82. 1 1
      Module/mod_pinpad/mod_PinPad.h
  83. 1 1
      Module/mod_recorder/mod_recorder.cpp
  84. 3 19
      Module/mod_recorder/recordinfo.cpp
  85. 0 2
      Module/mod_recorder/recordinfo.h
  86. 8 8
      Module/mod_sipphone/Event.h
  87. 17 4
      Module/mod_sipphone/audio_session.cpp
  88. 5 12
      Module/mod_sipphone/endpoint.cpp
  89. 1 0
      Module/mod_sipphone/endpoint.h
  90. 18 31
      Module/mod_sipphone/mod_sipphone.cpp
  91. 1 0
      Module/mod_sipphone/unix/video_session.cpp
  92. 11 9
      Module/mod_sipphone/video_render.cpp
  93. 1 0
      Module/mod_sipphone/win/video_session.cpp
  94. 9 37
      Module/mod_vtmloader/VtmLoaderFSM.cpp
  95. 1 0
      Other/CMakeLists.txt
  96. 7 0
      Other/libRestfulFunc/RestfulFunc.h
  97. 7 2
      Other/liblog4rvcother/CMakeLists.txt
  98. 18 0
      Other/liblog4rvcother/log4cplus_helper.cpp
  99. 2 0
      Other/liblog4rvcother/log4cplus_helper.h
  100. 3 1
      Other/liblog4rvcother/log4rvcother.cpp

+ 15 - 3
CMakeLists.txt

@@ -850,13 +850,25 @@ if(WITH_PDB_SAVEV2)
 	message(STATUS "config pdb save scripts.")
 	string(TIMESTAMP PDBSAVE_TIME %Y%m%d_%H%M%S)
 	if(DEVOPS_ON)
-		set(PDB_ZIP_FILE_NAME "savepdbVS2019_${RVC_VERSION}_$ENV{PIPELINE_NAME}_${PDBSAVE_TIME}.7z")
+		set(DEVOPS_ENV_UPPER_STR $ENV{DEVOPS_ENV})
+		string(TOUPPER $ENV{DEVOPS_ENV} DEVOPS_ENV_UPPER_STR)
+		set(SUBDIR_STR "${DEVOPS_ENV_UPPER_STR}")
+		set(PDB_ZIP_FILE_PURE_NAME "savepdbVS2019_${RVC_VERSION}_$ENV{PIPELINE_NAME}_${PDBSAVE_TIME}")
 	else()
-		set(PDB_ZIP_FILE_NAME "savepdbVS2019_${RVC_VERSION}_${PDBSAVE_TIME}.7z")
+		set(SUBDIR_STR "LocalBuild")
+		set(PDB_ZIP_FILE_PURE_NAME "savepdbVS2019_${RVC_VERSION}_${PDBSAVE_TIME}")
 	endif(DEVOPS_ON)
+	set(PDB_ZIP_FILE_INFO_NAME "${PDB_ZIP_FILE_PURE_NAME}.txt")
+	file(WRITE ${CMAKE_BINARY_DIR}/${PDB_ZIP_FILE_INFO_NAME} "PIPELINE_PRE_TAG=$ENV{PIPELINE_PRE_TAG}\r\nPIPELINE_BRANCH=$ENV{PIPELINE_BRANCH}\r\nGIT_BRANCH=$ENV{GIT_BRANCH}\r\nGIT_COMMIT=$ENV{GIT_COMMIT}\r\nGIT_COMMIT_ID=$ENV{GIT_COMMIT_ID}")
+	set(PDB_ZIP_FILE_NAME "${PDB_ZIP_FILE_PURE_NAME}.7z")
+	#curl -T <local_file_path> ftp://<username>:<password>@<ftp_server_address>/<remote_directory>/<remote_file_name>
+	#curl -T example.txt ftp://user:pass123@ftp.example.com/uploads/example.txt
+	set (FTP_URL_NAME "ftp://99.12.43.134:3721/${SUBDIR_STR}/")
+	message(STATUS "FTP_URL_NAME: ${FTP_URL_NAME}")
 	install(CODE "MESSAGE(\"----Pack PDB file ${PDB_ZIP_FILE_NAME}----\")" COMPONENT symbols)
 	install(CODE "execute_process(COMMAND 7z a ${PDB_ZIP_FILE_NAME} ${RVC_PDB_BINARY_DIR}/* ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/* -xr!*cmbsz* -xr!*simulator* -xr!*self* WORKING_DIRECTORY ${CMAKE_BINARY_DIR})" COMPONENT symbols)
-	install(CODE "execute_process(COMMAND curl -T ${PDB_ZIP_FILE_NAME} ftp://99.12.43.134:3721 -u savefile:12345678 WORKING_DIRECTORY ${CMAKE_BINARY_DIR})" COMPONENT symbols)
+	install(CODE "execute_process(COMMAND curl -T ${PDB_ZIP_FILE_NAME} ${FTP_URL_NAME} -u savefile:12345678 WORKING_DIRECTORY ${CMAKE_BINARY_DIR})" COMPONENT symbols)
+	install(CODE "execute_process(COMMAND curl -T ${PDB_ZIP_FILE_INFO_NAME} ${FTP_URL_NAME} -u savefile:12345678 WORKING_DIRECTORY ${CMAKE_BINARY_DIR})" COMPONENT symbols)
 	install(CODE "file(REMOVE ${CMAKE_BINARY_DIR}/${PDB_ZIP_FILE_NAME})" COMPONENT symbols)
 	install(CODE "MESSAGE(\"----Pack PDB File Done----\")" COMPONENT symbols)
 endif(WITH_PDB_SAVEV2)

+ 6 - 6
CMakeSettings.json

@@ -22,9 +22,9 @@
       "ctestCommandArgs": "--output-on-failure",
       "inheritEnvironments": [ "linux_arm" ],
       "remoteMachineName": "${defaultRemoteMachineName}",
-      "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src",
-      "remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}",
-      "remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}",
+      "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/src",
+      "remoteBuildRoot": "$HOME/.vs/${projectDirName}/out/build/${name}",
+      "remoteInstallRoot": "$HOME/.vs/${projectDirName}/out/install/${name}",
       "remoteCopySources": true,
       "rsyncCommandArgs": "-t --delete --delete-excluded --exclude \"/build\" --exclude \"/out\" --exclude-from=.gitignore",
       "remoteCopyBuildOutput": false,
@@ -61,9 +61,9 @@
         }
       ],
       "remoteMachineName": "${defaultRemoteMachineName}",
-      "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src",
-      "remoteBuildRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/build/${name}",
-      "remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}",
+      "remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/src",
+      "remoteBuildRoot": "$HOME/.vs/${projectDirName}/out/build/${name}",
+      "remoteInstallRoot": "$HOME/.vs/${projectDirName}/out/install/${name}",
       "remoteCopySources": true,
       "rsyncCommandArgs": "-t --delete --delete-excluded --exclude \"/build\" --exclude \"/out\" --exclude-from=.gitignore",
       "remoteCopyBuildOutput": false,

+ 2 - 1
DevAdapter/CMakeLists.txt

@@ -278,7 +278,8 @@ if(DEVADAPTER_USING_CONAN)
             set(GWI_CONAN_ALL_LIB_NAME gwi/2024.0723.20@LR04.02_VendorLib/stable)
             #Fw: 回复:回复: Fw: 回复:回复: Fw: 南天-缺陷案例解决方案及适配器整合
             set(NANTIAN_CONAN_ALL_LIB_NAME nantian/2024.0802.2@LR04.02_VendorLib/stable)
-            set(GRG_CONAN_ALL_LIB_NAME grg/2023.1213.24@LR04.02_VendorLib/stable)
+            #Fw: 单屏VTM最新版本链接
+            set(GRG_CONAN_ALL_LIB_NAME grg/2024.0913.45@LR04.02_VendorLib/stable)
             rvc_aggerate_vendor_libs(keba)
             rvc_aggerate_vendor_libs(cw)
             rvc_aggerate_vendor_libs(szzt)

+ 1 - 0
DevAdapter/DeviceSimulator.h

@@ -325,6 +325,7 @@ string GetLocalIP()
 
 		return string(xIP);
 	}
+	return "";
 #else
 	string re = "";
 	int sfd, intr;

+ 4 - 0
DevAdapter/include/CardAssist.cpp

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

+ 18 - 1
DevAdapter/include/CardAssist.h

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

+ 1 - 1
DevAdapter/self/dep/libHSPSCannerLoader/libHSPSCannerLoader.cpp

@@ -23,7 +23,7 @@ void SetLastErrInfo(const char* formatStr, ...)
 {
 	va_list arg;
 	va_start(arg, formatStr);
-	sprintf_s(errInfoInstance.szErrMsg, MAX_DEV_ERROR_MSG_LEN, formatStr, arg);
+	vsprintf_s(errInfoInstance.szErrMsg, MAX_DEV_ERROR_MSG_LEN, formatStr, arg);
 	errInfoInstance.dwErrMsgLen = strlen(errInfoInstance.szErrMsg);
 	va_end(arg);
 }

+ 13 - 1
DevAdapter/self/hspscanner/VirtualDeviceClass.cpp

@@ -31,7 +31,7 @@ DEVICEBASE_API ErrorCodeEnum  CreateDevComponent(DeviceBaseClass*& pOutDevAptObj
 	return result;
 }
 
-DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
+DEVICEBASE_API ErrorCodeEnum ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj)
 {
 	ErrorCodeEnum result = Bridge_ReleaseDevObject();
 	if (result == Error_Succeed && pInDevAptObj != NULL) {
@@ -41,6 +41,18 @@ DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass*& pInDevAptObj
 	return result;
 }
 
+extern "C" DEVICEBASE_API void GetMoreErrorDetail(char *szErrMsg, DWORD* pMsgLen)
+{
+	if (szErrMsg != NULL && pMsgLen != NULL && *pMsgLen > 0) {
+		DevErrorInfo inner;
+		ErrorCodeEnum result = Bridge_GetLastErr(&inner);
+		if (result == Error_Succeed) {
+			strcpy_s(szErrMsg, *pMsgLen, inner.szErrMsg);
+			*pMsgLen = inner.dwErrMsgLen;
+		}
+	}
+}
+
 VirtualDeviceClassImpl::VirtualDeviceClassImpl()
 {
 

+ 20 - 7
DevAdapter/simulator/cardissuerstand.1.1/cardissuer_impl.cpp

@@ -106,10 +106,16 @@ CardIssuerImpl::~CardIssuerImpl()
 
 ErrorCodeEnum CardIssuerImpl::GetDevCategory(DevCategoryInfo& devCategory)
 {
-	strcpy(devCategory.szModel, "szModel");
-	strcpy(devCategory.szType, "szType");
-	strcpy(devCategory.szVendor, "szVendor=cmbszSimulator");
-	return Error_Succeed;
+	if (GetDevCategoryHttp(devCategory)) {
+		strcpy(devCategory.szModel, "CM=2.0#CID=00000000");
+		strcpy(devCategory.szType, "PVER=ACT#MID=ACT-F5-5540-0SH");
+		strcpy(devCategory.szVendor, "cmbszSimulator");
+		return Error_Succeed;
+	}
+	else {
+		return Error_Exception;
+	}
+
 }
 
 ErrorCodeEnum CardIssuerImpl::Reset()
@@ -126,9 +132,10 @@ ErrorCodeEnum CardIssuerImpl::GetLastErr(DevErrorInfo& devErrInfo)
 {
 	static int times = 0;
 	char szMessage[1024];
-	sprintf(szMessage, "这是第 %d 条错误信息", ++times);
-	strcpy(devErrInfo.szErrMsg, szMessage);
-	devErrInfo.dwErrMsgLen = strlen(szMessage);
+	string lastErr = "{\"Description\": \"test DevAdapter is execute fail\"}";
+	//sprintf(szMessage, "这是第 %d 条错误信息", ++times);
+	strcpy(devErrInfo.szErrMsg, lastErr.c_str());
+	devErrInfo.dwErrMsgLen = lastErr.length();
 	return Error_Succeed;
 }
 
@@ -409,6 +416,12 @@ ErrorCodeEnum CardIssuerImpl::PrintCardFaceRightNow(const KakuPrintInfo printInf
 	}
 }
 
+bool CardIssuerImpl::GetDevCategoryHttp(DevCategoryInfo& devCategory)
+{
+	LOG4VTM(INFO, "GetDevCategoryHttp");
+	return commonSimpleHttp("GetDevCategory");
+}
+
 /////////////////////////////////////////
 
 bool CardIssuerImpl::GetDevStatusHttp(CardIssuerStatus& devStatus)

+ 1 - 0
DevAdapter/simulator/cardissuerstand.1.1/cardissuer_impl.h

@@ -228,6 +228,7 @@ public:
 
 	 /////////////////////////////////////http实现///////////////////////////////////////
 
+	 bool GetDevCategoryHttp(DevCategoryInfo& devCategory);
 
 	 bool GetDevStatusHttp(CardIssuerStatus& devStatus);
 

+ 74 - 2
DevAdapter/simulator/hspscanner.1.1/hspscanner_impl.cpp

@@ -1,6 +1,8 @@
 #include "hspscanner_impl.h"
 #include<cstring>
 #include <cstdio>
+#include "stdlib.h"
+
 HSPSClassImpl::HSPSClassImpl()
         :m_mode(0)
 {
@@ -40,7 +42,7 @@ ErrorCodeEnum HSPSClassImpl::GetLastErr(DevErrorInfo &devErrInfo)
     static int times = 0;
 	char szMessage[128];
 	char szSubMessage[64];
-	sprintf(szSubMessage, "%d", ++times);
+	sprintf(szSubMessage, "simulator test: %d", ++times);
 	sprintf(szMessage, "{\"ErrCode\":9555, \"Description\":\"Func:%s,Line:%d,Msg:%s\"}", __FUNCTION__, __LINE__, szSubMessage);
     strcpy(devErrInfo.szErrMsg, szMessage);
     devErrInfo.dwErrMsgLen = strlen(szMessage);
@@ -78,4 +80,74 @@ DEVICEBASE_API ErrorCodeEnum  GetDevAdapterVersion(DevSoftVersion& retVesion)
     return Error_Succeed;
 }
 
-#endif // NEWER_COMPILER_WORKAROUNDS
+#endif // NEWER_COMPILER_WORKAROUNDS
+
+
+ErrorCodeEnum HSPSClassImpl::SetParam(ParamType type, ParamTypeValue value)
+{
+	static unsigned SetParam_test = 0;
+	if (SetParam_test++ % 4 == 0) {
+		return Error_Debug;
+	}
+	return Error_Succeed;
+}
+
+ErrorCodeEnum HSPSClassImpl::SetPreview(short nValue)
+{
+    static unsigned preview_test = 0;
+    if (nValue == 1) {
+        return Error_Succeed;
+    }
+    if (preview_test++ % 2 == 0) {
+        return Error_Debug;
+    }
+	return Error_Succeed;
+}
+
+ErrorCodeEnum HSPSClassImpl::ScanImage(const char* pszFileName)
+{
+	static unsigned ScanImage_test = 0;
+	if (ScanImage_test++ % 2 == 0) {
+		return Error_Debug;
+	}
+#ifdef _WIN32
+    CopyFileA("D:\\Run\\version\\7.9.4.261\\bin\\agent.jpg", "D:\\Run\\version\\7.9.4.261\\dep\\MaterialImage.jpg", TRUE);
+#else
+	char buff[256] = { 0 };
+	sprintf(buff, "cp /opt/Run/version/2.9.4.420/bin/agent.jpg /opt/Run/version/2.9.4.420/bin/MaterialImage.jpg");
+	system(buff);
+#endif 
+    return Error_Succeed;
+}
+
+ErrorCodeEnum HSPSClassImpl::ScanImageEx(BYTE* pBtImg, int& nBtLen, const char* pszFileName)
+{
+	return Error_NotImpl;
+}
+
+ErrorCodeEnum HSPSClassImpl::SetViewPos(int nX, int nY, int nWidth)
+{
+	static unsigned SetViewPos_test = 0;
+	if (SetViewPos_test++ % 2 == 0) {
+		return Error_Debug;
+	}
+	return Error_Succeed;
+}
+
+
+ErrorCodeEnum HSPSClassImpl::SetProperty()
+{
+	return Error_Succeed;
+}
+
+ErrorCodeEnum HSPSClassImpl::GetDevStatus(HspsDevStatus& status)
+{
+	static unsigned GetDevStatus_test = 0;
+	if (GetDevStatus_test++ % 2 == 0) {
+		return Error_Debug;
+	}
+    status.inPreview = 0;
+    status.inShow = 0;
+    status.isConnected = 1;
+	return Error_Succeed;
+}

+ 7 - 28
DevAdapter/simulator/hspscanner.1.1/hspscanner_impl.h

@@ -25,10 +25,7 @@ public:
     //
     //	Set param, more detail please to see ParamType and its according ParamTypeValue.
     //
-    virtual ErrorCodeEnum SetParam(ParamType type, ParamTypeValue value)
-    {
-        return Error_Succeed;
-    }
+    virtual ErrorCodeEnum SetParam(ParamType type, ParamTypeValue value);
 
     //
     //	Command the device to start to preview or stop previewing.
@@ -40,10 +37,7 @@ public:
     //	nValue值为 0 时关闭预览并隐藏窗口
     //		
     //
-    virtual ErrorCodeEnum SetPreview(short nValue)
-    {
-        return Error_Succeed;
-    }
+    virtual ErrorCodeEnum SetPreview(short nValue);
 
     //
     //	Scan Image from device and store the image.
@@ -51,10 +45,7 @@ public:
     //		specifies that where the image will be located and what it would be named.
     //	拍摄照片,传入的文件名已带绝对路径,无需再进行拼接处理
     //
-    virtual ErrorCodeEnum ScanImage(const char* pszFileName)
-    {
-        return Error_Succeed;
-    }
+    virtual ErrorCodeEnum ScanImage(const char* pszFileName);
 
     //
     //	Scan Image from device and return the image data in byte format.
@@ -70,10 +61,7 @@ public:
     //		文件名长度为零表示不在本地生成图片文件
     //  
     //
-    virtual ErrorCodeEnum ScanImageEx(BYTE* pBtImg, int& nBtLen, const char* pszFileName = "")
-    {
-        return Error_Succeed;
-    }
+    virtual ErrorCodeEnum ScanImageEx(BYTE* pBtImg, int& nBtLen, const char* pszFileName = "");
 
     //
     //	Set position and width of preview dialog with the rate of length to width: 16:9.
@@ -82,28 +70,19 @@ public:
     //	-nWidth[in] The Width of Preview Dialog .
     //	传入预览窗口显示的坐标,左上角的横坐标nX,左上角的纵坐标nY,以及预览窗口的宽,宽与高的比例为 16:9
     //
-    virtual ErrorCodeEnum SetViewPos(int nX, int nY, int nWidth)
-    {
-        return Error_Succeed;
-    }
+    virtual ErrorCodeEnum SetViewPos(int nX, int nY, int nWidth);
 
     //
     //	Show property dialog of HSPS of LiangTian.
     //	If there is no property dialog function, ignore it and return Error_NotImpl(更新20161117).
     //  更新20161117:用于打开良田高拍仪设备的设置属性页,可能用不到
     //
-    virtual ErrorCodeEnum SetProperty()
-    {
-        return Error_Succeed;
-    }
+    virtual ErrorCodeEnum SetProperty();
 
     //
     //	Get current status of device.
     //
-    virtual ErrorCodeEnum GetDevStatus(HspsDevStatus& status)
-    {
-        return Error_Succeed;
-    }
+    virtual ErrorCodeEnum GetDevStatus(HspsDevStatus& status);
 
 private:
     int m_mode;

+ 27 - 9
DevAdapter/simulator/idcer.1.1/idcer_impl.cpp

@@ -205,6 +205,10 @@ ErrorCodeEnum IDCerClassImpl::GetDevCategory(DevCategoryInfo& devCategory)
 {
 
     ErrorCodeEnum err = Error_Succeed;
+    err = Error_Unexpect;
+    lastErrMsg = "{\"Description\": \"测试模式,获取适配器信息失败\"}";
+    return err;
+
     strcpy(devCategory.szModel, "STYLE=IG#FUNCTION=ITF#CODE=UCS2");
     strcpy(devCategory.szType, "szCategory");
     strcpy(devCategory.szVendor, "szVendor=cmbszSimulator");
@@ -332,6 +336,14 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx2(IDCerInfoEx2& idCerInfoEx2)
     ErrorCodeEnum err = Error_Succeed;
     memset(&idCerInfoEx2, 0, sizeof(IDCerInfoEx2));
 
+    bool testRe = ex2HttpFunction(idCerInfoEx2);
+    if (!testRe)
+    {
+        lastErrMsg = "{\"Description\": \"获取身份证芯片数据失败\"}";
+        err = Error_Unexpect;
+        return err;
+    }
+
     std::string path;
     path = current_working_directory();
     path = path + "/dep/zp.bmp";
@@ -340,13 +352,6 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx2(IDCerInfoEx2& idCerInfoEx2)
     for (int i = 0; i < w * h * 3; i++)img[i] = rand() % 256;
     WriteBMP(img, path.c_str());
 
-    bool testRe = ex2HttpFunction(idCerInfoEx2);
-    if (!testRe)
-    {
-        lastErrMsg = "获取身份证芯片数据失败";
-        err = Error_Unexpect;
-    }
-
     return err;
 }
 
@@ -356,12 +361,19 @@ ErrorCodeEnum IDCerClassImpl::GetLastErr(DevErrorInfo& devErrInfo)
     static int times = 0;
     char szMessage[128];
     //sprintf(szMessage, "这是第 %d 条错误信息", ++times);
+
+    bool flag = authHttpFunction("GetLastErr");
+    if (!flag)
+    {
+        lastErrMsg = "";
+    }
+
     strcpy(devErrInfo.szErrMsg, lastErrMsg.c_str());
     devErrInfo.dwErrMsgLen = lastErrMsg.length();
     return Error_Succeed;
 }
 
-bool IDCerClassImpl::authHttpFunction()
+bool IDCerClassImpl::authHttpFunction(string depName)
 {
     IHttpFunc* client;
     client = create_http(HttpsLogCallBack);
@@ -372,7 +384,7 @@ bool IDCerClassImpl::authHttpFunction()
     idCerReq.ip = GetLocalIP();
     idCerReq.entityName = "IDCertificate";
     idCerReq.method = "readAndScan";
-    idCerReq.adapterInterName = "IDCerAuthenticate";
+    idCerReq.adapterInterName = depName.c_str();
 
     string url = GetSimulatorUrl();
     if (url.length() == 0)
@@ -524,6 +536,12 @@ bool IDCerClassImpl::ex2HttpFunction(IDCerInfoEx2& idCerInfoEx2)
             return false;
         }
 
+
+        if (idCerRet.name.length() <= 0)
+        {
+            return false;
+        }
+
 #ifdef RVC_OS_WIN
         ConvertGBKToUtf8(idCerRet.name);
         ConvertGBKToUtf8(idCerRet.englishname);

+ 3 - 1
DevAdapter/simulator/idcer.1.1/idcer_impl.h

@@ -56,6 +56,7 @@ typedef struct IDCerDevRet : CHTTPRet {
     std::string idtype;
     std::string othercode;
     std::string reserved;
+    std::string res;
 
     bool success;
     bool result;
@@ -68,6 +69,7 @@ typedef struct IDCerDevRet : CHTTPRet {
 
         result = root["data"][REFLECTION(result)].asBool();
 
+        res = root["data"][REFLECTION(res)].asString();
         name = root["data"][REFLECTION(name)].asString();
         sex = root["data"][REFLECTION(sex)].asString();
         nation = root["data"][REFLECTION(nation)].asString();
@@ -123,7 +125,7 @@ public:
     int m_mode;
     bool exHttpFunction(IDCerInfoEx& idCerInfoEx);
     bool ex2HttpFunction(IDCerInfoEx2& idCerInfoEx2);
-    bool authHttpFunction();
+    bool authHttpFunction(string depName);
 
     string depCfgPath;
     iniReader iniRead;

+ 1 - 1
Framework/Common/SpBase.h

@@ -464,7 +464,7 @@ struct linkContext
 	}
 
 	void AutoGenerate() {
-		bussinessId = "VTMAutoGen";
+		bussinessId = "LR0402VTMAutoGen";
 		traceId = uuid4_generateStr(LINKINFO_TRACEID_LEN);
 		spanId = uuid4_generateStr(LINKINFO_SPANID_LEN);
 		parentSpanId = "0";

+ 51 - 0
Framework/Common/SpDefine.h

@@ -0,0 +1,51 @@
+
+
+class SpDefine
+{
+private:
+	SpDefine() = delete;
+public:
+	//update token params
+#ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
+	static constexpr const char* channelId = "5fdd82e3b90a4de69f9da4738e5f1216";
+	static constexpr const char*  tokenSecret = "eca829c78067c686561bd844129321c8a78af3";
+	static constexpr const char*  CommonLaunchUrl = "https://rvc-gateway.paasst.cmbchina.cn";
+	static constexpr const char*  CenterConfigTotal = "https://accessproxy-service.paasst.cmbchina.cn/centerconfig";
+	static constexpr const char* endpoint_env = "https://kafkaproxy.paasst.cmbchina.cn/api/kafka/log/send";
+#elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
+	static constexpr const char*  channelId = "7eb748cb71744c87b5c126e05af8cce7";
+	static constexpr const char*  tokenSecret = "eca529c78967c640561bd844229391c8a78af3";
+	static constexpr const char*  CommonLaunchUrl = "https://rvc-gateway.paasuat.cmbchina.cn";
+	static constexpr const char*  CenterConfigTotal = "https://accessproxy-service.paasuat.cmbchina.cn/centerconfig";
+	static constexpr const char* endpoint_env = "https://kafkaproxy.paasuat.cmbchina.cn/api/kafka/log/send";
+#elif defined(DEVOPS_ON_PRD)/*DevOps流水线编译,PRD环境*/
+	static constexpr const char*  channelId = "572f7577fa9f425c8475a8d77db4ae31";
+	static constexpr const char*  tokenSecret = "eca129c78767c670561bd844629361c8a78af3";
+	static constexpr const char*  CommonLaunchUrl = "https://rvc-gateway.paas.cmbchina.cn";
+	static constexpr const char*  CenterConfigTotal = "https://accessproxy-service.paas.cmbchina.cn/centerconfig";
+	static constexpr const char* endpoint_env = "https://kafkaproxy.paas.cmbchina.cn/api/kafka/log/send";
+#else/*本地编译等非DevOps环境编译的版本*/
+	static constexpr const char*  channelId = "5fdd82e3b90a4de69f9da4738e5f1216";
+	static constexpr const char*  tokenSecret = "eca829c78067c686561bd844129321c8a78af3";
+	static constexpr const char*  CommonLaunchUrl = "https://rvc-gateway.paasst.cmbchina.cn";
+	static constexpr const char*  CenterConfigTotal = "https://accessproxy-service.paasst.cmbchina.cn/centerconfig";
+	static constexpr const char* endpoint_env = "https://kafkaproxy.paasst.cmbchina.cn/api/kafka/log/send";
+#endif
+
+	//default endpoint and topic
+	static constexpr const char* endpoint = "https://kafkaproxy.paas.cmbchina.cn/api/kafka/log/send";
+	static constexpr const char* topicSys = "LR18_23_VTMTerminalLogService_L_sys_VTMTerminalSysLog_SRC_SZ";
+	static constexpr const char* topicUser = "LR18_23_VTMTerminalLogService_L_biz_VTMTerminalUserLog_SRC_SZ";
+	static constexpr const char* topicBeidou = "LR18_23_VTMTerminalLogService_L_trace_VTMTerminalTraceLog_SRC_SZ";
+	static constexpr const char* topicBussSys = "LR18_23_VTMTerminalLogService_L_sys_VTMBusiness_SRC_SZ";
+	static constexpr const char* topicBussUser = "LR18_23_VTMTerminalLogService_L_biz_VTMBusiness_SRC_SZ";
+	static constexpr const char* topicVTMWeb = "LR18_23_VTMWebSDKUserLog";
+
+	//const log params
+	static constexpr const char* cmptId = "LR04";
+	static constexpr const char* CmptName = "FrameworkLib";
+	static constexpr const char* deployUnitId = "LR04.02@FrameworkLib_PRD_PRD";
+	static constexpr const char* serviceUnitId = "LR04.02_FrameworkLib";
+
+
+};

+ 0 - 1
Framework/RVCComm/ClientComm.cpp

@@ -415,7 +415,6 @@ void CClientComm::RecvThreadProcess()
 					{
 						WLog_DBG(TAG, "receive error flag recv package.");
 						DWORD dwSysCode(0), dwUserCode(0);
-						string strErrMsg;
 						if (!ppkg->GetErrMsg(dwSysCode, dwUserCode, strErrMsg))
 						{
 							dwSysCode = Error_Bug;

+ 0 - 1
Framework/RVCComm/HTTPClient.cpp

@@ -1585,7 +1585,6 @@ const bool CHTTPClient::Get(CHTTPReq &req, CHTTPRet &ret){
 	m_iCurlTimeout = req.m_timeOut;
 
 	CHTTPClient::HttpResponse g_Response;
-	int nLen = 0;
 	string url = req.m_url + "?" + param;
 	if(req.m_bTransCode){
 		if(req.m_printDbg)

+ 0 - 2
Framework/RVCComm/Package.cpp

@@ -744,8 +744,6 @@ bool CCommPackage::GenerateMacSM3(BYTE* pData, int nLen, BYTE mac[8])
 
 	BYTE buf[16];
 	memset(buf, 0, sizeof(buf));
-	int nBufLen = 16;
-
 	memcpy(mac, sm3, 8);
 	return true;
 }

+ 14 - 0
Framework/RvcLogSdk/log_api.cpp

@@ -258,6 +258,20 @@ int LOG_OS_HttpPost(const char* url,
 			if (responseIns.success) {
 				retCode = 200;
 			} else {
+				/*
+				HttpClientRequestConfig sendErr(HttpRequestMethod::POST, "http://99.12.43.134:9000/upload_msg");
+				HttpClientResponseResult curResult;
+				Json::Value rootReq;
+				Json::FastWriter writer;
+				rootReq["req"] = str.c_str();
+				rootReq["ans"] = result.content;
+				std::string jsonReq = writer.write(rootReq);
+				sendErr.SetJsonBody(jsonReq.c_str());
+				RestfulClient client = RestfulClient::getInstance();
+				sendErr.PreDo();
+				client.Do(&sendErr, &curResult);
+				*/
+
 				if (responseIns.errorCode.find("RTI1002") != -1)
 					retCode = 300;	
 				else if (!is_utf8((const char*)str.c_str())) {

+ 22 - 6
Framework/RvcLogSdk/log_builder.cpp

@@ -1,3 +1,4 @@
+#include "RestfulFunc.h"
 #include "log_builder.h"
 #include <string.h>
 #include <stdio.h>
@@ -6,6 +7,7 @@
 #include <stdlib.h>
 #include "inner_log.h"
 #include <lz4.h>
+#include "json/json.h"
 
 /**
  * adjust buffer, this function will ensure tag's buffer size >= tag->now_buffer_len + new_len
@@ -218,14 +220,10 @@ int add_log(log_group_builder* bder, long start_time, uint32_t pack_index, log_i
 
     memset(bder->grp->logs[bder->grp->n_logs].uuid, 0, MAX_UUID_LEN);
     get_format_uuid(bder->grp->logs[bder->grp->n_logs].uuid, MAX_UUID_LEN);
-    aos_debug_log((LB, "add_log 1"));
-    aos_debug_log((LB, "add_log 2"));
+
     now = record_time;
-    aos_debug_log((LB, "add_log 3"));
     GetTimeStr(now, nowTime);
-    aos_debug_log((LB, "add_log 4"));
     GetUnitedTimeStr(now, unitedNowTime);
-    aos_debug_log((LB, "add_log 5"));
 
     skyeye_content = cJSON_CreateObject();
     meta_log_content = cJSON_CreateObject();
@@ -660,14 +658,32 @@ void clear_errJson_msg(log_group_builder* bder)
     cJSON* message_content = NULL;
 
     for (i = 0; i < bder->grp->n_logs; i++) {
-        if (bder->grp->logs[i].buffer != NULL)
+        if (bder->grp->logs[i].buffer != NULL && bder->grp->logs[i].type != build_type_e::LOG_TYPE_BEIDOU)
         {
             cJSON* message_content = cJSON_Parse(bder->grp->logs[i].buffer);
             if (message_content == NULL)
+            {
                 bder->grp->logs[i].check = 0;
+                /*
+                HttpClientRequestConfig sendErr(HttpRequestMethod::POST, "http://99.12.43.134:9000/upload_msg");
+                HttpClientResponseResult curResult;
+                Json::Value rootReq;
+                Json::FastWriter writer;
+                rootReq["req"] = bder->grp->logs[i].buffer;
+                rootReq["ans"] = "Json_not_vaild";
+                std::string jsonReq = writer.write(rootReq);
+                sendErr.SetJsonBody(jsonReq.c_str());
+                RestfulClient client = RestfulClient::getInstance();
+                sendErr.PreDo();
+                client.Do(&sendErr, &curResult);
+                */
+            }                
             else
                 bder->grp->logs[i].check = 1;
             cJSON_Delete(message_content);
+
+
+            
         }
     }
 }

+ 1 - 1
Framework/RvcLogSdk/log_producer_config.c

@@ -30,7 +30,7 @@ static void _set_default_producer_config(log_producer_config* pConfig)
     pConfig->enableGuarder = 0;
     pConfig->tokenFun = NULL;
 
-    pConfig->sendThreadCount = 2;
+    pConfig->sendThreadCount = 4;
     pConfig->sendThreadWaitMs = 100;
 
     pConfig->logBytesPerPackage = MAX_LOG_COUNT * 1024;

+ 1 - 1
Framework/RvcLogSdk/log_producer_manager.c

@@ -212,7 +212,7 @@ void* log_producer_read_persistent_thread(void* param)
                     aos_debug_log((LB, "get from persistent, send log count : %d.", persistent_manager->SendLogCount));
 
                     CS_ENTER(persistent_manager->lock);
-                    if (forceClean || persistent_manager->SendLogCount - persistent_manager->LastCleanLogCount > 1000) {//每5000条清理一次                        
+                    if (forceClean || persistent_manager->SendLogCount - persistent_manager->LastCleanLogCount > 5000) {//每5000条清理一次                        
                         log_persistent_manager_clean(persistent_manager, modular);                        
                         persistent_manager->LastCleanLogCount = persistent_manager->SendLogCount;
                         forceClean = 0;

+ 1 - 0
Framework/spbase/SpBase.cpp

@@ -667,6 +667,7 @@ extern "C" SPBASE_API int __stdcall SpRun(const char *mod_name, int epid, int ra
 		curModule = NULL;
 		goto on_error;
 	}
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("init moudle succ.");
 #else
 	g_module = new SpModule(mod, cfg_mod);
 	hModule = LoadModuleLibrary(mod);

+ 3 - 0
Framework/spbase/sp_gui.cpp

@@ -565,6 +565,9 @@ static int RepaintWindow(HWND hWnd,  bool bCanUseCache)
 	static RECT lastRect = {};
 	static HDC hBkgMemDC = NULL;
 
+	if (!g_guiShowFirst)
+		return 0;
+
 	RECT rect = {};
 	GetClientRect(hWnd, &rect);
 

+ 11 - 12
Framework/spbase/sp_logwithlink.cpp

@@ -24,6 +24,7 @@
 #include <winpr/file.h>
 #include <winpr/wlog.h>
 #include "sp_httpDefine.h"
+#include <mutex>
 #define TAG SPBASE_TAG("sp_logwithlink")
 
 void* g_logProducer = NULL;//为spshell、spbase共用,所以不放入getEntityResource中
@@ -37,6 +38,7 @@ int g_curEntityIdx = 0;
 std::map<std::string, int> g_entityDebugLevelArr;
 void* g_logProduceSender = NULL;
 int curEntityLogLevel = 1;
+std::mutex g_logMtx;
 
 
 void Log_GetToken(char* channelId, char* token, char *terminalno, char *reserve1) {
@@ -113,11 +115,9 @@ public:
     CSimpleString VtmCode;
     void* logProducer;
     bool m_doLog;
-    long m_time;
     Link_private(LOG_LEVEL_E t_level, LOG_TYPE_E t_type)
         : Level(t_level), Type(t_type), BeginTime(0), EndTime(0), CostTime(0), ResultCode("SUC0000"), m_doLog(true)
     {
-        m_time = time(NULL);
         TraceID = ResultMsg = LogCode = API = BussID = TipMsg = SourceType = VtmCode = "";
         logProducer = NULL;
     }
@@ -137,7 +137,7 @@ public:
 
 /*北斗链路实例
 {
-    "businessId": "ChromiumAutoGen",
+    "businessId": "LR0402ChromiumAutoGen",
     "traceId": "d2a04ca0a4834623a1323372b88e4e0a",
     "parentSpanId": "0",
     "spanId": "db5e25dffa78475c",
@@ -416,7 +416,7 @@ DbgWithLink& DbgWithLink::setVtmCode(CSimpleStringA t_VtmCode) {
 }
 
 void DbgWithLink::operator () (const char* str, ...)  const  {
-   
+    std::lock_guard<std::mutex> lock(g_logMtx);
     if (str == nullptr)
         return;
 
@@ -478,12 +478,11 @@ void DbgWithLink::operator () (const char* str, ...)  const  {
         }
         if (cur != NULL) {
             if (log.Type == LOG_TYPE_SYSTEM && curEntityLogLevel <= log.Level)
-                rst = log_producer_client_add_log(cur, &log, 1, m_priPtr->m_time);
+                rst = log_producer_client_add_log(cur, &log, 1, time(NULL));
             else if (log.Type != LOG_TYPE_SYSTEM)
-                rst = log_producer_client_add_log(cur, &log, 1, m_priPtr->m_time);
+                rst = log_producer_client_add_log(cur, &log, 1, time(NULL));
         }
     }
-
     //LOG_LEVEL_DEBUG, LOG_LEVEL_INFO, LOG_LEVEL_WARN, LOG_LEVEL_ERROR, LOG_LEVEL_FATAL
     if (!m_priPtr->m_doLog) {
         return;
@@ -512,7 +511,7 @@ void DbgWithLink::operator () (const char* str, ...)  const  {
 }
 
 void DbgWithLink::operator () ()  const  {
-
+    std::lock_guard<std::mutex> lock(g_logMtx);
     log_item log;
     log.Level = m_priPtr->Level;
     log.Type = m_priPtr->Type;
@@ -541,9 +540,9 @@ void DbgWithLink::operator () ()  const  {
     }
     if (cur != NULL) {
         if (log.Type == LOG_TYPE_SYSTEM && curEntityLogLevel <= log.Level)
-            log_producer_client_add_log(cur, &log, 1, m_priPtr->m_time);
+            log_producer_client_add_log(cur, &log, 1, time(NULL));
         else if (log.Type != LOG_TYPE_SYSTEM)
-            log_producer_client_add_log(cur, &log, 1, m_priPtr->m_time);
+            log_producer_client_add_log(cur, &log, 1, time(NULL));
     }
 
     if (!m_priPtr->m_doLog)
@@ -635,7 +634,7 @@ SPBASE_API void* create_log_producer_storage(CSimpleStringA entityName, CSimpleS
     log_producer_config_set_max_buffer_limit(config, 64 * 1024 * 1024);
     // set send thread count
     log_producer_config_set_send_thread_count(config, 1);
-    log_producer_config_set_persistent_max_log_count(config, 50 * 1000);
+    log_producer_config_set_persistent_max_log_count(config, 20 * 1000);
     log_producer_config_set_skyeye_servname(config, (char*)"Terminal");
     if(CmptId.GetLength() > 0)
         log_producer_config_set_skyeye_cmptId(config, (char*)CmptId.GetData());
@@ -735,7 +734,7 @@ SPBASE_API void* create_log_producer_send(CSimpleStringA endpoint, CSimpleString
     log_producer_config_set_max_buffer_limit(config, 64 * 1024 * 1024);
     // set send thread count
     log_producer_config_set_send_thread_count(config, 1);
-    log_producer_config_set_persistent_max_log_count(config, 50 * 1000);
+    log_producer_config_set_persistent_max_log_count(config, 20 * 1000);
     log_producer_config_set_skyeye_servname(config, (char*)"Terminal");
     log_producer_config_set_skyeye_cmptId(config, (char*)"LR04");
     log_producer_config_set_skyeye_cmptname(config, (char*)"FrameworkLib");

+ 5 - 2
Framework/spbase/sp_mod.c

@@ -1811,7 +1811,8 @@ static int load_module(sp_mod_mgr_t *mgr, sp_mod_t *mod, int trigger_entity_id,
 			int state = BUS_STATE_OFF;
 			rc = sp_svc_get_state(mgr->shell_svc, mod->cfg->idx, &state);
 			WLog_DBG(TAG, "cfg::idx: %d, state: %d", mod->cfg->idx, state);
-			if (rc == 0) {
+			if (rc == 0) 
+			{
 				if (state != BUS_STATE_ON) {
 					DWORD dwRet;
 					dwRet = WaitForSingleObject(mod->process.handle, (DWORD)interval);	//wait for entity thread end
@@ -1824,7 +1825,9 @@ static int load_module(sp_mod_mgr_t *mgr, sp_mod_t *mod, int trigger_entity_id,
 					DbgWithLinkForC(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM, "mod is online now!, %s", mod->cfg->name);
 					break;
 				}
-			} else {
+			} 
+			else 
+			{
 				DbgWithLinkForC(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM, "get epid state failed!");
 				break;
 			}

+ 1 - 1
Framework/spbase/sp_runTask.cpp

@@ -72,7 +72,7 @@ int sp_runtask_startprocess()
 
     for each (auto it in startArr) {
 		if (!ExistsFileA(it.c_str())) {
-            DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("%s not exist", it.c_str());
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("%s not exist", it.c_str());
             return 0;
         }
         DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("run %s", it.c_str());

+ 3 - 9
Framework/spshell/app.cpp

@@ -24,6 +24,7 @@
 #include "SpBase.h"
 #include "sp_dbg_export.h"
 #include "sp_gui.h"
+#include "SpDefine.h"
 
 #ifdef realloc
 	#undef realloc //(p, s)
@@ -850,17 +851,10 @@ void app_upload_last_log()
     if (env && env->cfg && env->cfg->root_ini && env->cfg->root_ini->terminal_no)
         t_terminalNo = env->cfg->root_ini->terminal_no;
 
-    const char* endpoint = "https://kafkaproxy.paas.cmbchina.cn/api/kafka/log/send";
-    const char* topicSys = "LR18_23_VTMTerminalLogService_L_sys_VTMTerminalSysLog_SRC_SZ";
-    const char* topicUser = "LR18_23_VTMTerminalLogService_L_biz_VTMTerminalUserLog_SRC_SZ";
-    const char* topicBeidou = "LR18_23_VTMTerminalLogService_L_trace_VTMTerminalTraceLog_SRC_SZ";
-    const char* topicBussSys = "LR18_23_VTMTerminalLogService_L_sys_VTMBusiness_SRC_SZ";
-    const char* topicBussUser = "LR18_23_VTMTerminalLogService_L_biz_VTMBusiness_SRC_SZ";
-	const char* topicVTMWeb = "LR18_23_VTMWebSDKUserLog";
-
 	char dstVer[SP_MAX_VER_LEN] = "";
 	auto ret = sp_cfg_getVer(dstVer);
 	if (ret != Error_Succeed)
 		sprintf_s(dstVer, SP_MAX_VER_LEN, "Unknown");
-    create_log_producer_send(endpoint, topicSys, topicUser, topicBeidou, topicBussSys, topicBussUser, topicVTMWeb, t_terminalNo, dstVer, "", 100);
+    create_log_producer_send(SpDefine::endpoint, SpDefine::topicSys, SpDefine::topicUser, SpDefine::topicBeidou,
+		SpDefine::topicBussSys, SpDefine::topicBussUser, SpDefine::topicVTMWeb, t_terminalNo, dstVer, "", 100);
 }

+ 1 - 1
Framework/spshell/svc.cpp

@@ -538,7 +538,7 @@ void on_start_upload_log(sp_rpc_server_t* server, int epid, int svc_id, int call
 	auto ret = sp_cfg_getVer(dstVer);
 	if (ret != Error_Succeed)
 		sprintf_s(dstVer, SP_MAX_VER_LEN, "Unknown");
-	auto logSender = create_log_producer_send(endpoint, topicSys, topicUser, topicBeidou, bussSys, bussUser, vtmWeb, env->cfg->root_ini->terminal_no, dstVer, "", 20000);
+	auto logSender = create_log_producer_send(endpoint, topicSys, topicUser, topicBeidou, bussSys, bussUser, vtmWeb, env->cfg->root_ini->terminal_no, dstVer, "", 10000);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create log produce sender %s-%s-%s-%s-%s-%s-%s %s",
 		endpoint, topicSys, topicUser, topicBeidou, bussSys, bussUser, vtmWeb, logSender == NULL ? "failed" : "success");
 	toolkit_free(endpoint);

+ 5 - 5
Framework/winpr/libwinpr/utils/wlog/wlog.c

@@ -80,7 +80,7 @@ static void WLog_Uninit_(void) __attribute__((destructor));
 #include <windows.h>
 #include <tchar.h>
 char* get_process_name() {
-	// 拼接前缀、进程名和后缀
+	// 鎷兼帴鍓嶇紑銆佽繘绋嬪悕鍜屽悗缂€
 	char date_str[MAX_PATH];
 	char* full_path = malloc(MAX_PATH);
 	
@@ -94,10 +94,10 @@ char* get_process_name() {
 
 	snprintf(full_path, MAX_PATH, "%s\\wlog_%s.log", g_logRoot, date_str);
 	//MessageBox(NULL, full_path, NULL, 0);
-	// 检查文件是否存在
+	// 妫€鏌ユ枃浠舵槸鍚﹀瓨鍦�
 	FILE* fp = fopen(full_path, "r");
 	if (!fp) {
-		// 创建文件
+		// 鍒涘缓鏂囦欢
 		fp = fopen(full_path, "w");
 		if (!fp) {
 			printf("Failed to create file: %s\n", full_path);
@@ -131,7 +131,7 @@ void WLog_WriteLogFile(int type, const char* fmt, ...)
 	GetSystemTimePreciseAsFileTime(&ft);
 	FileTimeToSystemTime(&ft, &st);
 
-	// 将 UTC 时间转换为本地时间
+	// 灏� UTC 鏃堕棿杞�崲涓烘湰鍦版椂闂�
 	SYSTEMTIME local_st;
 	FileTimeToLocalFileTime(&ft, &ft);
 	FileTimeToSystemTime(&ft, &local_st);
@@ -153,7 +153,7 @@ void WLog_WriteLogFile(int type, const char* fmt, ...)
 		pFile = fopen(path, "a");
 		if (!pFile) {
 			pFile = NULL;
-			// 错误处理
+			// 閿欒�澶勭悊
 			return;
 		}
 	}

+ 23 - 0
Module/include/CommEntityUtil.hpp

@@ -1159,6 +1159,29 @@ static std::string GetWWWInfoThroughDig(const std::string& wwwUrl)
 
 }//Net
 
+namespace FileSystem {
+
+	static DWORD FetchFileSize(const char* filePath)
+	{
+		int fileSize = 0;
+#if defined(RVC_OS_LINUX)
+		struct stat statbuf;
+		ZeroMemory(&statbuf, sizeof(statbuf));
+		stat(filePath, &statbuf);
+		fileSize = statbuf.st_size;
+#else
+		
+		HANDLE hFile;
+		hFile = CreateFile(filePath, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+		if (hFile != INVALID_HANDLE_VALUE) {
+			fileSize = GetFileSize(hFile, NULL);
+			CloseHandle(hFile);
+		}
+#endif //RVC_OS_LINUX
+		return fileSize;
+	}
+}
+
 } // mod
 } // sp
 

+ 2 - 6
Module/include/DevEntityCommBase.hpp

@@ -158,10 +158,10 @@ inline ErrorCodeEnum CDevAdptEntityBase::ExtractVendorLibName()
 		CSimpleStringA strDeviceEntityName = GetEntityName();		
 		
 #ifndef DEVOPS_ON_PRD
-		//非生产情况下,才支持测试模式
+		//闈炵敓浜ф儏鍐典笅锛屾墠鏀�寔娴嬭瘯妯″紡
 		CSystemRunInfo runInfo = { 0 };
 		ErrorCodeEnum ec = GetFunction()->GetSystemRunInfo(runInfo);
-		if (ec == Error_Succeed && runInfo.autoTest) //识别成测试模式的条件
+		if (ec == Error_Succeed && runInfo.autoTest) //璇嗗埆鎴愭祴璇曟ā寮忕殑鏉′欢
 		{
 			vendorLibInfo.strDevice = strDeviceEntityName;
 			vendorLibInfo.strVendor = "simulator";
@@ -176,10 +176,6 @@ inline ErrorCodeEnum CDevAdptEntityBase::ExtractVendorLibName()
 			}
 			CSimpleStringA strSection = CSimpleStringA("Device.") + strDeviceEntityName;
 			vendorLibInfo.strDevice = strDeviceEntityName;
-
-			CSystemRunInfo runInfo = { 0 };
-			ErrorCodeEnum ec = GetFunction()->GetSystemRunInfo(runInfo);
-
 			spRootConfig->ReadConfigValue(strSection, "Vendor", vendorLibInfo.strVendor);
 			spRootConfig->ReadConfigValue(strSection, "Version", vendorLibInfo.strVersion);
 			spRootConfig->ReadConfigValue(strSection, "Batch", vendorLibInfo.strBatch);

+ 63 - 18
Module/include/DevFSMCommBase.hpp

@@ -18,9 +18,11 @@
 #pragma comment(lib, "Version.lib")
 typedef ErrorCodeEnum(*DevAdaptObjCreateFunc)(DeviceBaseClass*& baseObj);
 typedef ErrorCodeEnum(*DevAdaptObjReleaseFunc)(DeviceBaseClass*& pBaseObj);
+typedef void(*GetPrefixErrMsgFunc)(char* szErrMsg, DWORD* pMsgLen);
 #else //C/C++ Compiler 
 using DevAdaptObjCreateFunc = ErrorCodeEnum(*)(DeviceBaseClass*& pOutDevAptObj);
 using DevAdaptObjReleaseFunc = ErrorCodeEnum(*)(DeviceBaseClass*& pInDevAptObj);
+using GetPrefixErrMsgFunc = void(*)(char* szErrMsg, DWORD* pMsgLen);
 #endif //_MSC_VER
 typedef ErrorCodeEnum(*GetDevAdapterVersionFunc)(DevSoftVersion& retVersion);
 
@@ -279,7 +281,15 @@ public:
 				erroCode = Error_DevLoadFileFailed;
 				break;
 			}
-
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to get GetMoreErrorDetail pointer address...");
+			if ((res = toolkit_dlsym(&m_lib, "GetMoreErrorDetail", (void**)&pFuncGetPrefixErr)) != 0)
+			{
+				pFuncGetPrefixErr = nullptr;
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Get 'GetMoreErrorDetail' Func address succ");
+			}
+			
 		} while (false);
 
 		if (IS_FAILURED(erroCode)) 
@@ -300,7 +310,17 @@ public:
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to get Adapter object...");
 		ErrorCodeEnum erroCode = pFuncCreateAdapt((DeviceBaseClass*&)m_AdptObjPtr);
 		if (IS_FAILURED(erroCode)) {
-			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Create device adapter object failed! EC=%s", SpStrError(erroCode));
+			if (pFuncGetPrefixErr != nullptr) {
+				char szErrMsg[MAX_DEV_ERROR_MSG_LEN];
+				memset(szErrMsg, '\0', sizeof(szErrMsg));
+				DWORD dwLen = MAX_DEV_ERROR_MSG_LEN;
+				pFuncGetPrefixErr(szErrMsg, &dwLen);
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Create device adapter object failed! EC=%s, Msg:[%s]"
+					, SpStrError(erroCode), szErrMsg);
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Create device adapter object failed! EC=%s", SpStrError(erroCode));
+			}
 			return erroCode;
 		}
 		LOG_ASSERT(m_AdptObjPtr != nullptr);
@@ -345,13 +365,14 @@ public:
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to dlclose DevAdapter libs...");
 		toolkit_dlclose(&m_lib);
 		pFuncReleaseAdapt = pFuncCreateAdapt = nullptr;
+		pFuncGetPrefixErr = nullptr;
 	}
 
 #if defined(RVC_OS_WIN)
 	ErrorCodeEnum GetDllVersionInfo(LPCTSTR lpcszFilePath, DWORD& dwMajor, DWORD& dwMinor, DWORD& dwBuild, DWORD& dwRevision)
 	{
 		char* buf = NULL;
-		dwMajor = dwMinor = dwBuild = dwRevision = -1;
+		dwMajor = dwMinor = dwBuild = dwRevision = (DWORD)(-1);
 
 		DWORD dwHnd;
 		DWORD dwVerInfoSize;
@@ -426,7 +447,7 @@ public:
 	}
 
 	DevAdptLibHelper()
-		: pFuncCreateAdapt(nullptr), pFuncReleaseAdapt(nullptr)
+		: pFuncCreateAdapt(nullptr), pFuncReleaseAdapt(nullptr), pFuncGetPrefixErr(nullptr)
 		, m_AdptObjPtr(nullptr), m_VS2010BridgeMode(false)
 	{
 		memset(&m_lib, 0, sizeof(toolkit_lib_t));
@@ -447,6 +468,7 @@ private:
 	DevAdaptObjCreateFunc pFuncCreateAdapt;
 	DevAdaptObjReleaseFunc pFuncReleaseAdapt;
 	GetDevAdapterVersionFunc pFuncGetDevAdapterVer;
+	GetPrefixErrMsgFunc pFuncGetPrefixErr;
 
 	TSubAdpt* m_AdptObjPtr;
 	bool m_VS2010BridgeMode;
@@ -510,6 +532,22 @@ public:
 		}
 		return result;
 	}
+	int GetPortNumInt() const
+	{
+		int result = 0;
+		if (!strPortNum.IsNullOrEmpty()) {
+			result = atoi(strPortNum.GetData());
+		}
+		return result;
+	}
+	int GetInOutDirInt() const
+	{
+		int result = 0;
+		if (!strInOutDir.IsNullOrEmpty()) {
+			result = atoi(strInOutDir.GetData());
+		}
+		return result;
+	}
 };
 
 struct AdapterInfo : public AdaptorInfo
@@ -538,7 +576,7 @@ struct AdapterInfo : public AdaptorInfo
 		strcpy(devCatInfo.szModel, rhs.szModel);
 		strcpy(devCatInfo.szVendor, rhs.szVendor);
 
-        CSimpleStringA strVersion = CSimpleStringA::Format("%d.%d.%d.%d", devCatInfo.version.wMajor, devCatInfo.version.wMinor, devCatInfo.version.wRevision, devCatInfo.version.wBuild);
+        CSimpleStringA strCatVersion = CSimpleStringA::Format("%d.%d.%d.%d", devCatInfo.version.wMajor, devCatInfo.version.wMinor, devCatInfo.version.wRevision, devCatInfo.version.wBuild);
 
 		if (strlen(devCatInfo.szType) >= MAX_DEV_TYPE_LEN) {
 			devCatInfo.szType[MAX_DEV_TYPE_LEN - 1] = '\0';
@@ -550,7 +588,7 @@ struct AdapterInfo : public AdaptorInfo
 			devCatInfo.szVendor[MAX_DEV_VENDOR_LEN - 1] = '\0';
 		}
 
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetDevCategory")("{\"szVendor\":\"%s\",\"szType\":\"%s\",\"szModel\":\"%s\",\"szVersion\":\"%s\"}", devCatInfo.szVendor, devCatInfo.szType, devCatInfo.szModel, strVersion.GetData());
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetDevCategory")("{\"szVendor\":\"%s\",\"szType\":\"%s\",\"szModel\":\"%s\",\"szVersion\":\"%s\"}", devCatInfo.szVendor, devCatInfo.szType, devCatInfo.szModel, strCatVersion.GetData());
 		
 		CheckCategoryInfoFormat();
 	}
@@ -695,7 +733,7 @@ class CCommDevFSM : public FSMImpl<TFSM>
 {
 
 public:
-	CCommDevFSM() :m_FirstStart(TRUE), m_bOpened(false), m_bOpening(true), m_csAlarmMsg("No more information"), m_contiErrTimes(0)
+	CCommDevFSM() :m_FirstStart(TRUE), m_iInWhatPage(PageType_Init),m_bOpened(false), m_bOpening(true), m_csAlarmMsg("No more information"), m_contiErrTimes(0)
 	{
 		m_WarnCodeMap.insert(std::make_pair<std::string, DWORD>("CardIssuerStand", 0x2030021f));
 		m_WarnCodeMap.insert(std::make_pair<std::string, DWORD>("CardIssuerStore", 0x2200021f));
@@ -758,7 +796,7 @@ public:
             LogErrMsgEx(m_errPkg, csErrMsg, dwCode, bToBusiness);
 		} else {
 			DbgWithLink(bToBusiness ? LOG_LEVEL_ERROR : LOG_LEVEL_WARN, bToBusiness ? LOG_TYPE_USER : LOG_TYPE_SYSTEM).setAPI(m_errPkg.msgHead)("{\"DevSN\":\"%s\", \"Code\":\"%s\", \"Msg\":\"%s\"}"
-				, m_errPkg.devSN.GetData(), SpStrError(m_errPkg.devErrCode), csErrMsg);
+				, m_errPkg.devSN.GetData(), SpStrError(m_errPkg.devErrCode), csErrMsg.GetData());
 		}
 		return dwCode;
 	}
@@ -786,15 +824,20 @@ public:
 		else if (m_errPkgEx.apiUserCode != 0) {
 			UpdateDEC(m_errPkgEx.apiUserCode);
 		}
-		//oilyang@20200525 if have been set ErrorCode of entity defined (not device),use it directly
-		DWORD dwCode = GetAlarmDEC();
 
-		const CSimpleStringA alarmMsg = CSimpleStringA::Format("{\"Function\":\"%s\", \"DevApi\":\"%s\", \"returnCode\":\"%s\", \"Msg\":\"%s\", \"context\":\"%s\"}"
+		//oilyang@20200525 if have been set ErrorCode of entity defined (not device),use it directly
+		const DWORD dwCode = GetAlarmDEC();
+		const CSimpleStringA alarmMsg = CSimpleStringA::Format("{\"Function\":\"%s\", \"DevApi\":\"%s\", \"ReturnCode\":\"%s\", \"Msg\":\"%s\", \"Context\":\"%s\"}"
 			, funPath.GetData(), devApi.GetData(), SpStrError(m_errPkgEx.errCode), csErrMsg.GetData(), context.GetData());
-		CSimpleStringA csErrMsgWithReturnCode = CSimpleStringA::Format("{\"returnCode\":%d, \"errMsg\":\"%s\", \"context\":\"%s\"}", errCode, csErrMsg.GetData(), context.GetData()).GetData();
+		
+		CSimpleStringA csErrMsgWithReturnCode = CSimpleStringA::Format("{\"ReturnCode\":\"%s\", \"ErrMsg\":\"%s\", \"Context\":\"%s\"}", SpStrError(errCode), csErrMsg.GetData(), context.GetData());
+		
+		
 		CSimpleStringA tmpRTA(true), tmpDesc(true);
 		if (this->GetEntityBase()->GetFunction()->GetVTMErrMsg(dwCode, tmpDesc, tmpRTA) != Error_Succeed)
-			tmpRTA = CSimpleStringA::Format("%d", dwCode);//if map failed, use dwCode instead
+			tmpRTA = CSimpleStringA::Format("0x%X", dwCode);//if map failed, use dwCode instead
+
+
 		if (bInBusiness) {
 			LogError(Severity_High, m_errPkgEx.errCode, dwCode, alarmMsg.GetData());
 			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setLogCode(logCode).setAPI(devApi).setResultCode(tmpRTA.GetData()).setCostTime(costTime)(csErrMsgWithReturnCode.GetData());
@@ -931,8 +974,6 @@ public:
 
         std::pair<bool, std::string> strResult;
         strResult = generateJsonStr(rootInfo);
-        strResult.second.c_str();
-
         if (!entityName.IsNullOrEmpty()) {
             LogWarn(Severity_Low, Error_Debug, m_RootIniCodeMap[entityName.GetData()], strResult.second.c_str());
         } else {
@@ -1019,7 +1060,6 @@ public:
 
 		std::pair<bool, std::string> strResult;
 		strResult = generateJsonStr(termInfo);
-		strResult.second.c_str();
 
 		CSmartPointer<IConfigInfo> spConfigRun;
 		CSimpleStringA csWarnMsg;
@@ -1097,6 +1137,8 @@ public:
 		return result;
  	}
 
+	virtual void SetInWhatPage(int iPageType) { m_iInWhatPage = iPageType; }
+
 public:
 
 		bool m_bOpened;
@@ -1107,7 +1149,8 @@ protected:
 	DevAdptLibHelper<TDevClass> m_hDevHelper;
 	DevEntityErrorCode m_entCode;
 	BOOL m_FirstStart;
-	
+	int m_iInWhatPage/*在哪个页面,区分首页,用户桌面,其他页*/;
+
 	ErrorPackage m_errPkg;
 	ErrorPackageEx m_errPkgEx;
 	CSimpleStringA m_csAlarmMsg;
@@ -1214,7 +1257,9 @@ protected:
 
 	int CountDevError(CEntityBase *pEntityBase);
 
-	private:
+	bool IsInBusiness() const { return (m_iInWhatPage == PageType_Other); }
+	
+private:
 
 		std::map<std::string, DWORD> m_WarnCodeMap;
 		std::map<std::string, DWORD> m_RootIniCodeMap;

+ 4 - 20
Module/include/EventCode.h

@@ -1,25 +1,7 @@
 #ifndef __EVENT_CODE_H
 #define __EVENT_CODE_H
 
-enum LightSeq{
-	UNKNOWN_DEVICE,
-	CARDREADER,
-	CARDREADER_RED,
-	IDCERTIFICATE,
-	PINPAD,
-	PINPADLIGHT,
-	SHAKEDETECT,
-	SWITCHINDUCTOR,
-	PHONEPICKUP,
-	MOVEDETECT,
-	CARDGATEDETECT,
-	HEADLIGHT,
-	HEADLIGHT_RED,
-	CONTACTLESSCARD,
-	HEADLIGHT_ASSIST,
-	HSPSCANNER,
-	FINGERPRINT
-};
+
 //设备类型枚举
 enum DeviceTypeEnum
 {
@@ -469,7 +451,9 @@ ERROR_ACCESSAUTH_CONNECT_ACS_x}
 #define LOG_EVT_OPENSENSOR_OFF 0x20900008		//关门
 #define LOG_EVT_MOVESENSOR_ON 0x20900009		//有移动
 #define LOG_EVT_MOVESENSOR_OFF 0x2090000A		//无移动
-#define LOG_EVT_CARDGATESENSOR 0x2090000B		//卡嘴感应
+#define LOG_EVT_CARDGATESENSOR 0x2090000B		//卡嘴感应有异物
+#define LOG_EVT_CARDGATESENSOR_OFF 0x2090000C		//卡嘴感应异物消失
+#define LOG_EVT_VIBRATIONSENSOR_OFF 0x2090000D		//震动消失
 //以上gpio部分和错误码改造的厂商错误冲突,需要调整,涉及到gpio和上下文感知的配置文件
 #define LOG_EVT_MOVEDETECT_ABNORMAL_WORKTIME	0x20980001		//移动检测不正常(工作时间)
 #define LOG_EVT_MOVEDETECT_ABNORMAL_OFFWORK		0x20980002		//移动检测不正常(非工作时间)

+ 147 - 271
Module/mod_CardIssuerStand/CardIssuerFSM.cpp

@@ -396,7 +396,6 @@ unsigned int CCardIssuerFSM::s3_on_event(FSMEvent* pEvt)
 		break;
 	case USER_EVT_ACCEPT_CANCEL:
 		m_bCancelAccept = true;
-		//m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
 		pEvt->SetHandled();
 		ret = 3;
 		break;
@@ -709,17 +708,9 @@ unsigned int CCardIssuerFSM::s5_on_event(FSMEvent* pEvt)
 			}
 			else
 			{
-				SetErrPackage("Read finished", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_GetDevStatus);
-				if (IsInBusiness())
-				{
-					pCRNFE->ctx->Answer(Error_Unexpect, AlarmDEC(true));
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::GetDevStatus").setLogCode("QLR040220303").setResultCode("RTA2322")("获取设备状态GetDevStatus失败");
-				}
-				else
-				{
-					pCRNFE->ctx->Answer(Error_Unexpect, AlarmDEC());
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::GetDevStatus").setLogCode("QLR040220303").setResultCode("RTA2322")("获取设备状态GetDevStatus失败");
-				}
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("Read finished,获取设备状态GetDevStatus失败");
+				SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, IsInBusiness(), 10, "QLR040220303", "");
+				pCRNFE->ctx->Answer(Error_Unexpect, GetAlarmDEC());
 
 				ret = 1;
 			}
@@ -1358,8 +1349,7 @@ bool CCardIssuerFSM::GetDevStatus(bool bPrint)
 		l_beginTime = GetTickCountRVC();
 		errCode = m_hDevHelper->GetDevStatus(m_devStatus);
 		l_endTime = GetTickCountRVC();
-		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevStatus").setCostTime(l_endTime - l_beginTime)("GetDevStatus::GetDevStatus");
-
+		
 		if (bPrint)
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetDevStatus, GetDevStatus::eMedia: %d,errCode:%d", m_devStatus.eMedia, errCode);
 		if (Error_Succeed == errCode) 
@@ -1439,9 +1429,7 @@ int CCardIssuerFSM::Reset()
 		}
 	}
 	else {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::Reset").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23A6")("Reset::Reset err=%s", SpStrError(ec));
-		SetErrPackage("Reset::Reset", m_csDevSN, ec, MEC_DEVAPI_CARDISSUER_Reset);
-		AlarmDEC();
+		SetErrorAndLog(ec, MEC_DEVAPI_CARDISSUER_Reset, "DevAdapter::Reset", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		return 1;
 	}
 	return 0;
@@ -1583,9 +1571,8 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 			}
 			else
 			{
-				SetErrPackage("OpenDevice::GetDevCategory", m_csDevSN, eErrDev, MEC_DEVAPI_CARDISSUER_GetDevCategory);
-				AlarmDEC();
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevCategory").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CH")("CardIssuer启动失败(GetDevCategory failed.)");
+				SetErrorAndLog(eErrDev, MEC_DEVAPI_CARDISSUER_GetDevCategory, "DevAdapter::GetDevCategory", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
+
 				///*TODO: need to clear adapter object? (80374374@4/4/2023)*/
 				return Error_Unexpect;
 			}
@@ -1600,9 +1587,9 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 			break;
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpenEx").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23AE")("OpenDevice::DevOpenEx, openType:%d, connectType:%d", btOpenType, m_connectType);
-			SetErrPackage("OpenDevice::DevOpenEx", m_csDevSN, eErrDev, MEC_DEVAPI_CARDISSUER_DevOpenEx);
-			AlarmDEC();
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("OpenDevice::DevOpenEx err, openType:%d, connectType:%d", btOpenType, m_connectType);
+			SetErrorAndLog(eErrDev, MEC_DEVAPI_CARDISSUER_DevOpenEx, "DevAdapter::DevOpenEx", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
+			
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CardIssuer启动失败:DevOpenEx failed.重试:%d", initTries);
 			Sleep(200);
 			initTries++;
@@ -1743,9 +1730,7 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 			l_endTime = GetTickCountRVC();
 
 			if (eErrDev != Error_Succeed) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevStatus").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2322")("OpenDevice::GetDevStatus err=%s", SpStrError(eErrDev));
-				SetErrPackage("OpenDevice::GetDevStatus", m_csDevSN, eErrDev, MEC_DEVAPI_CARDISSUER_GetDevStatus);
-				AlarmDEC();
+				SetErrorAndLog(eErrDev, MEC_DEVAPI_CARDISSUER_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 			}
 			else
 			{
@@ -1983,9 +1968,7 @@ int CCardIssuerFSM::IssueCard(SpReqAnsContext<CardIssuerStandService_Issue_Req,
 	
 
 	if (errCode != Error_Succeed) {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevStatus").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2322")("IssueCard::GetDevStatus err=%s", SpStrError(errCode));
-		SetErrPackage("IssueCard::GetDevStatus", m_csDevSN, errCode, MEC_DEVAPI_CARDISSUER_GetDevStatus);
-		AlarmDEC();
+		SetErrorAndLog(errCode, MEC_DEVAPI_CARDISSUER_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 	}
 	else
 	{
@@ -2081,9 +2064,7 @@ int CCardIssuerFSM::IssueCard(SpReqAnsContext<CardIssuerStandService_Issue_Req,
 
 	if (errCode != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B5")("IssueCard::SetCardInType err=%s", SpStrError(errCode));
-		SetErrPackage("IssueCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, errCode, MEC_DEVAPI_CARDISSUER_SetCardInType);
-		AlarmDEC();
+		SetErrorAndLog(errCode, MEC_DEVAPI_CARDISSUER_SetCardInType, "DevAdapter::SetCardInType", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 	}
 	else {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime)("IssueCard::SetCardInType");
@@ -2102,26 +2083,16 @@ int CCardIssuerFSM::IssueCard(SpReqAnsContext<CardIssuerStandService_Issue_Req,
 	{
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("IssueCard::MoveCard, m_currentHopper:%d", m_currentHopper);
 		FSMSetIssueFlag(2);
-		SetErrPackage("IssueCard::MoveCard", m_csDevSN, errCode, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_FROM_HOPPER);
+		
 		if (ctx != NULL) {
-			if (IsInBusiness()) {
-				ctx->Answer(Error_Unexpect, AlarmDEC(true));
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2306")("从卡箱移动卡片到读卡器失败,请重试或检查是否有塞卡");
-			}
-			else {
-				ctx->Answer(Error_Unexpect, AlarmDEC());
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2306")("从卡箱移动卡片到读卡器失败,请重试或检查是否有塞卡");
-			}
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("从卡箱移动卡片到读卡器失败,请重试或检查是否有塞卡");
+			SetErrorAndLog(errCode, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_FROM_HOPPER, "DevAdapter::MoveCard", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "");
+			ctx->Answer(Error_Unexpect, GetAlarmDEC());
 		}
 		else {
-			if (IsInBusiness()) {
-				ctxEx->Answer(Error_Unexpect, AlarmDEC(true));
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2306")("从卡箱移动卡片到读卡器失败,请重试或检查是否有塞卡");
-			}
-			else {
-				ctxEx->Answer(Error_Unexpect, AlarmDEC());
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2306")("从卡箱移动卡片到读卡器失败,请重试或检查是否有塞卡");
-			}
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("从卡箱移动卡片到读卡器失败,请重试或检查是否有塞卡");
+			SetErrorAndLog(errCode, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_FROM_HOPPER, "DevAdapter::MoveCard", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "");
+			ctxEx->Answer(Error_Unexpect, GetAlarmDEC());
 		}
 		return 1;
 	}
@@ -2192,9 +2163,7 @@ int CCardIssuerFSM::CaptureCard(SpReqAnsContext<CardIssuerStandService_Capture_R
 
 
 		if (eErr != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B5")("CaptureCard::SetCardInType err=%s", SpStrError(eErr));
-			SetErrPackage("CaptureCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SetCardInType, "DevAdapter::SetCardInType", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime)("CaptureCard::SetCardInType");
@@ -2263,10 +2232,8 @@ int CCardIssuerFSM::WaitFetchingCard()
 				l_endTime = GetTickCountRVC();
 
 
-				if (eErr != Error_Succeed) {
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B5")("WaitFetchingCard::SetCardInType err=%s", SpStrError(eErr));
-					SetErrPackage("WaitFetchingCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
-					AlarmDEC();
+				if (eErr != Error_Succeed) {			
+					SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SetCardInType, "DevAdapter::SetCardInType", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 				}
 				else {
 					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime)("WaitFetchingCard::SetCardInType");
@@ -2340,8 +2307,9 @@ int CCardIssuerFSM::InternalAcceptCard()
 
 				}
 				if (Error_Succeed != eErr) {
-					SetErrPackage("InternalAcceptCard::SetCardInType(CI_CARD_IN_TYPE_ALL)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
-					AlarmDEC();
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("InternalAcceptCard::SetCardInType CI_CARD_IN_TYPE_ALL err");
+					SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SetCardInType, "DevAdapter::SetCardInType", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
+
 				}
 				else {
 					bHasSetCardInType = true;
@@ -2366,9 +2334,8 @@ Err:
 
 	if (Error_Succeed != eErr)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B5")("InternalAcceptCard::SetCardInType err=%s", SpStrError(eErr));
-		SetErrPackage("InternalAcceptCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
-		AlarmDEC();
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("InternalAcceptCard::SetCardInType CI_CARD_IN_TYPE_FORBIDDEN err");
+		SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SetCardInType, "DevAdapter::SetCardInType", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 	}
 	else {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime)("InternalAcceptCard::SetCardInType CI_CARD_IN_TYPE_FORBIDDEN");
@@ -2393,9 +2360,9 @@ Err:
 					l_endTime = GetTickCountRVC();	
 
 					if (eErr != Error_Succeed) {
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B5")("InternalAcceptCard::SetCardInType err=%s", SpStrError(eErr));
-						SetErrPackage("InternalAcceptCard::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SetCardInType);
-						AlarmDEC();
+						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("InternalAcceptCard::SetCardInType CI_CARD_IN_TYPE_FORBIDDEN err");
+						SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SetCardInType, "DevAdapter::SetCardInType", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
+
 					}
 					else {
 						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime)("InternalAcceptCard::SetCardInType CI_MEDIA_PRESENT CI_CARD_IN_TYPE_FORBIDDEN");
@@ -2452,15 +2419,8 @@ int CCardIssuerFSM::AcceptCard(SpReqAnsContext<CardIssuerStandService_Insert_Req
 	}else 
 	{
 		if (ctx != NULL){
-			SetErrPackage("AcceptCard::InternalAcceptCard", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_GetDevStatus);
-			if (IsInBusiness())
-			{
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::GetDevStatus").setLogCode("QLR040220303").setResultCode("RTA2322")("获取设备状态GetDevStatus失败");
-			}
-			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::GetDevStatus").setLogCode("QLR040220303").setResultCode("RTA2322")("获取设备状态GetDevStatus失败");
-			}
-			ctx->Answer(Error_Unexpect, AlarmDEC(m_iInWhatPage == PageType_Other));
+			SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, IsInBusiness(), 10, "QLR040220303", "");
+			ctx->Answer(Error_Unexpect, GetAlarmDEC());
 		}
 	}
 	return rc;
@@ -2571,9 +2531,8 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStandService_Read
 				magTracks.track[1].eStatus, magTracks.track[2].eStatus, magTracks.track[1].dwSize, magTracks.track[2].dwSize);
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MagRead").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B4")("ReadCard_Contact::MagRead err=%d", eMagReadErr);
-			SetErrPackage("ReadCard_Contact::MagRead", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_MagRead);
-			AlarmDEC();
+			SetErrorAndLog(eMagReadErr, MEC_DEVAPI_CARDISSUER_MagRead, "DevAdapter::MagRead", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
+
 		}
 
 		//oilyang@20230204 copy mag data for RF
@@ -2775,9 +2734,7 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStandService_Read
 				l_endTime = GetTickCountRVC();
 				
 				if (eErr != Error_Succeed) {
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactivateICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23AB")("ReadCard_Contact::DeactivateICCard err=%s", SpStrError(eErr));
-					SetErrPackage("ReadCard::DeactivateICCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard);
-					AlarmDEC();
+					SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard, "DevAdapter::DeactivateICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 				}
 				else {
 					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactivateICCard").setCostTime(l_endTime - l_beginTime)("ReadCard_Contact::DeactivateICCard");
@@ -2788,9 +2745,7 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStandService_Read
 				l_endTime = GetTickCountRVC();
 
 				if (eErr != Error_Succeed) {
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ReleaseIC").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B6")("ReadCard_Contact::ReleaseIC err=%s", SpStrError(eErr));
-					SetErrPackage("ReadCard::ReleaseIC", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_ReleaseIC);
-					AlarmDEC();
+					SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_ReleaseIC, "DevAdapter::ReleaseIC", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 				}
 				else {
 					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ReleaseIC").setCostTime(l_endTime - l_beginTime)("ReadCard_Contact::ReleaseIC");
@@ -2829,9 +2784,7 @@ int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerStandService_Read_Req,
 
 	if (eErr != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23BE")("ReadCard_RF::MoveCard err=%s", SpStrError(eErr));
-		SetErrPackage("ReadCard_RF::MoveCard(CI_MOVECARD_RF_POSITION)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_MoveCard);
-		AlarmDEC();
+		SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_MoveCard, "DevAdapter::MoveCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 	}
 	else {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime)("ReadCard_RF::MoveCard");
@@ -3041,9 +2994,7 @@ int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerStandService_Read_Req,
 				l_endTime = GetTickCountRVC();
 				
 				if (eErr != Error_Succeed) {
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactContactlessICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23AB")("ReadCard_RF::DeactContactlessICCard err=%s", SpStrError(eErr));
-					SetErrPackage("ReadCard::DeactContactlessICCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard);
-					AlarmDEC();
+					SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard, "DevAdapter::DeactContactlessICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 				}
 				else {
 					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactContactlessICCard").setCostTime(l_endTime - l_beginTime)("ReadCard_RF::DeactContactlessICCard");
@@ -3148,19 +3099,28 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerStandService_Pre
 			xCardName = m_PsbNameEx[m_currentHopper - 1];
 		if (retDetectAndRead == -1)
 		{
+			ErrorCodeEnum lastErrCode = Error_Succeed;
+			CSimpleStringA lastErrMsg = "";
+			CSimpleStringA lastApiName = "";
+			m_pCardProcess->getCardAssistLastErr(lastErrCode, lastErrMsg, lastApiName);
+			const CSimpleStringA alarmMsg = CSimpleStringA::Format("{\"Function\":\"%s\", \"DevApi\":\"%s\", \"ReturnCode\":\"%s\", \"Msg\":\"%s\", \"Context\":\"%s\"}"
+				, __FUNCTION__, lastApiName.GetData(), SpStrError(lastErrCode), lastErrMsg.GetData(), "");
+			CSimpleStringA csErrMsgWithReturnCode = CSimpleStringA::Format("{\"ReturnCode\":\"%s\", \"ErrMsg\":\"%s\", \"Context\":\"%s\"}", SpStrError(lastErrCode), lastErrMsg.GetData(), "");
+			
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("检测卡片类型时上电失败");
 			if (!IfUseRf())
 			{
 				if (IsInBusiness())
 				{
 					if (m_issueStatus)
 					{
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")("发卡时,检测卡片类型时上电失败");
-						LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed, "(IssueCard)PreOnline::DetectAndReadICData:DetectIfICCard");
+						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")(csErrMsgWithReturnCode.GetData());
+						LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed, alarmMsg.GetData());
 						ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
 					}
 					else
 					{
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")("检测卡片类型时上电失败");
+						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")(csErrMsgWithReturnCode.GetData());
 						LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed, "PreOnline::DetectAndReadICData:DetectIfICCard");
 						ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed);
 					}
@@ -3169,13 +3129,13 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerStandService_Pre
 				{
 					if (m_issueStatus)
 					{
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")("发卡时,检测卡片类型时上电失败");
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")(csErrMsgWithReturnCode.GetData());
 						LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed, "(IssueCard)PreOnline::DetectAndReadICData:DetectIfICCard");
 						ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveICCard_Failed);
 					}
 					else
 					{
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")("检测卡片类型时上电失败");
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")(csErrMsgWithReturnCode.GetData());
 						LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed, "PreOnline::DetectAndReadICData:DetectIfICCard");
 						ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveICCard_Failed);
 					}
@@ -3185,77 +3145,55 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerStandService_Pre
 			else //非终态,还有非接兜底
 			{
 				if (m_issueStatus)
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")("发卡时,检测卡片类型时上电失败");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA230V")(csErrMsgWithReturnCode.GetData());
 				else
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")("检测卡片类型时上电失败");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA230M")(csErrMsgWithReturnCode.GetData());
 			}
 		}
 		else if (retDetectAndRead == -2){
 			if (!IfUseRf())
 			{
-				SetErrPackage(xCardName + " PreOnline::DetectAndReadICData:GetICDataFromCard(-2)", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand);
-				if (IsInBusiness())
-				{
-					if (m_issueStatus)
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("读取IC数据失败");
-					else
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("读取IC数据失败");
-					ctx->Answer(Error_Unexpect, AlarmDEC(true));
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("读取IC数据失败");
+				if (m_issueStatus) {
+					SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "");
 				}
-				else
-				{
-					if (m_issueStatus)
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("读取IC数据失败");
-					else
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("读取IC数据失败");
-					ctx->Answer(Error_Unexpect, AlarmDEC());
+				else {
+					SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220303", "");
 				}
+				ctx->Answer(Error_Unexpect, GetAlarmDEC());
 			}
 			else //非终态,还有非接兜底
 			{
-				if (m_issueStatus)
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("读取IC数据失败");
-				else
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("读取IC数据失败");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("读取IC数据失败");
+				if (m_issueStatus) {
+					SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220320", "");
+				}
+				else {
+					SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220303", "");
+				}
 			}
 		}else if (retDetectAndRead == -3){
 			if (!IfUseRf())
 			{
-				SetErrPackage(xCardName + " PreOnline::DetectAndReadICData:GetICDataFromCard(-3)", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand);
-				if (IsInBusiness())
-				{
-					//TODO 完善日志(LogCode及ResultCode
-					if (m_issueStatus) {
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("IC卡建立应用列表失败");
-					}
-					else {
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("IC卡建立应用列表失败");
-					}
-					ctx->Answer(Error_Unexpect, AlarmDEC(true));
-
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("IC卡建立应用列表失败");
+				if (m_issueStatus) {
+					SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "");
 				}
-				else
-				{
-					//TODO 完善日志(LogCode及ResultCode
-					if (m_issueStatus) {
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("IC卡建立应用列表失败");
-					}
-					else {
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("IC卡建立应用列表失败");
-					}
-					ctx->Answer(Error_Unexpect, AlarmDEC());
-
-
+				else {
+					SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220303", "");
 				}
+				ctx->Answer(Error_Unexpect, GetAlarmDEC());
 				
 			}
 			else //非终态,还有非接兜底
 			{
-				//TODO 完善日志(LogCode及ResultCode
-				if (m_issueStatus)
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("IC卡建立应用列表失败");
-				else
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("IC卡建立应用列表失败");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("IC卡建立应用列表失败");
+				if (m_issueStatus) {
+					SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220320", "");
+				}
+				else {
+					SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220303", "");
+				}
 			}
 		}
 		bICOK = false;
@@ -3334,9 +3272,7 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerStandService_Pre
 		eErr = m_hDevHelper->ReleaseIC();
 		l_endTime = GetTickCountRVC();
 		if (eErr != Error_Succeed){
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ReleaseIC").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B6")("PreOnline::ReleaseIC err=%s", SpStrError(eErr));
-			SetErrPackage("PreOnline::ReleaseIC", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_ReleaseIC);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_ReleaseIC, "DevAdapter::ReleaseIC", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ReleaseIC").setCostTime(l_endTime - l_beginTime)("PreOnline::ReleaseIC");
@@ -3478,9 +3414,7 @@ int CCardIssuerFSM::PreOnline_RF(SpReqAnsContext<CardIssuerStandService_PreOnlin
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime)("PreOnline_RF::MoveCard, (CI_MOVECARD_RF_POSITION)");
 	}
 	else {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23BE")("PreOnline_RF::MoveCard err=%s", SpStrError(eErr));
-		SetErrPackage("PreOnline_RF::MoveCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_MoveCard);
-		AlarmDEC();
+		SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_MoveCard, "DevAdapter::MoveCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 	}
 	bool bCrossPreOnline = false;
 
@@ -3544,17 +3478,27 @@ int CCardIssuerFSM::PreOnline_RF(SpReqAnsContext<CardIssuerStandService_PreOnlin
 		if (m_issueStatus && m_currentHopper - 1 >= 0)
 			xCardName = m_PsbNameEx[m_currentHopper - 1];
 		if (retDetectAndRead == -1) {
+			ErrorCodeEnum lastErrCode = Error_Succeed;
+			CSimpleStringA lastErrMsg = "";
+			CSimpleStringA lastApiName = "";
+			m_pCardProcess->getCardAssistLastErr(lastErrCode, lastErrMsg, lastApiName);
+			const CSimpleStringA alarmMsg = CSimpleStringA::Format("{\"Function\":\"%s\", \"DevApi\":\"%s\", \"ReturnCode\":\"%s\", \"Msg\":\"%s\", \"Context\":\"%s\"}"
+				, __FUNCTION__, lastApiName.GetData(), SpStrError(lastErrCode), lastErrMsg.GetData(), "");
+			CSimpleStringA csErrMsgWithReturnCode = CSimpleStringA::Format("{\"ReturnCode\":\"%s\", \"ErrMsg\":\"%s\", \"Context\":\"%s\"}", SpStrError(lastErrCode), lastErrMsg.GetData(), "");
+
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("检测卡片类型时上电失败(非接)");
+
 			if (m_issueStatus)
 			{
 				if (IsInBusiness())
 				{
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")("发卡时,检测卡片类型时上电失败(非接)");
-					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, "(IssueCard)PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
+					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, alarmMsg.GetData());
 				}
 				else
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")("发卡时,检测卡片类型时上电失败(非接)");
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, "(IssueCard)PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2327")(csErrMsgWithReturnCode.GetData());
+					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed, alarmMsg.GetData());
 				}
 				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_IssueCard_ActiveRF_Failed);
 			}
@@ -3562,54 +3506,39 @@ int CCardIssuerFSM::PreOnline_RF(SpReqAnsContext<CardIssuerStandService_PreOnlin
 			{
 				if (IsInBusiness())
 				{
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")("检测卡片类型时上电失败");
-					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, "PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
+					LogError(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, alarmMsg.GetData());
 				}
 				else
 				{
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")("检测卡片类型时上电失败");
-					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, "PreOnline_RF::DetectAndReadICData:DetectIfICCard");
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(lastApiName.GetData()).setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2326")(csErrMsgWithReturnCode.GetData());
+					LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed, alarmMsg.GetData());
 				}
 				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_ActiveContactlessICCard_Failed);
 			}
 		}
 		else if (retDetectAndRead == -2) {
 
-			SetErrPackage(xCardName + " PreOnline::DetectAndReadICData:GetICDataFromCard(-2)", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand);
-			
-			if (IsInBusiness()) {
-				if (m_issueStatus)
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("读取IC数据失败");
-				else
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("读取IC数据失败");
-				ctx->Answer(Error_Unexpect, AlarmDEC(true));
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("读取IC数据失败");
+			if (m_issueStatus) {
+				SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "");
 			}
 			else {
-				if (m_issueStatus)
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("读取IC数据失败");
-				else
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("读取IC数据失败");
-				ctx->Answer(Error_Unexpect, AlarmDEC());
+				SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220303", "");
 			}
+			ctx->Answer(Error_Unexpect, GetAlarmDEC());
+
 		}
 		else if (retDetectAndRead == -3) {
 
-			SetErrPackage(xCardName + " PreOnline::DetectAndReadICData:GetICDataFromCard(-3)", m_csDevSN, Error_Unexpect, MEC_DEVAPI_CARDISSUER_ICCommand);
-			
-			if (IsInBusiness()) {
-				if (m_issueStatus)
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("IC卡建立应用列表失败");
-				else
-					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("IC卡建立应用列表失败");
-				ctx->Answer(Error_Unexpect, AlarmDEC(true));
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("IC卡建立应用列表失败");
+			if (m_issueStatus) {
+				SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220320", "");
 			}
 			else {
-				if (m_issueStatus)
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220320").setResultCode("RTA2302")("IC卡建立应用列表失败");
-				else
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220303").setResultCode("RTA2302")("IC卡建立应用列表失败");
-				ctx->Answer(Error_Unexpect, AlarmDEC());
+				SetErrorAndLog(Error_Unexpect, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220303", "");
 			}
+			ctx->Answer(Error_Unexpect, GetAlarmDEC());
 		}
 		return 0;
 	}
@@ -3878,16 +3807,9 @@ int CCardIssuerFSM::WriteCard(SpReqAnsContext<CardIssuerStandService_WriteTrack_
 
 		if (eErr != Error_Succeed)
 		{
-			SetErrPackage("WriteCard::MoveCard(CI_MOVECARD_MAG_POSITION)", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_MAG_POSITION);
-
-			if (IsInBusiness()) {
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setLogCode("QLR040220315").setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2309")("从卡箱移动卡片到磁条写卡位置失败");
-				ctx->Answer(Error_Unexpect, AlarmDEC(true));
-			}
-			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220315").setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2309")("从卡箱移动卡片到磁条写卡位置失败");
-				ctx->Answer(Error_Unexpect, AlarmDEC());
-			}
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("从卡箱移动卡片到磁条写卡位置失败");
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_MAG_POSITION, "DevAdapter::MoveCard", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220315", "");
+			ctx->Answer(Error_Unexpect, GetAlarmDEC());
 			return ret;
 		}
 		else {
@@ -3938,9 +3860,7 @@ int CCardIssuerFSM::WriteCard(SpReqAnsContext<CardIssuerStandService_WriteTrack_
 	
 	if (eErr != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MagWrite").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B3")("WriteCard::MagWrite err=%s", SpStrError(eErr));
-		SetErrPackage("WriteCard::MagWrite", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_MagWrite);
-		AlarmDEC();
+		SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_MagWrite, "DevAdapter::MagWrite", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		ret = 1;
 	}
 	else {
@@ -4201,9 +4121,7 @@ ErrorCodeEnum CCardIssuerFSM::MachineMoveCardBackNotHold()
 	//2016-11-10 14:30:54 joseph
 	if (eMoveNotHold != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2307")("MachineMoveCardBackNotHold::MoveCard err=%s", SpStrError(eMoveNotHold));
-		SetErrPackage("MachineMoveCardBackNotHold::MoveCard(CI_MOVECARD_BACK_NOT_HOLD)", m_csDevSN, eMoveNotHold, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_BACK_NOT_HOLD);
-		AlarmDEC();
+		SetErrorAndLog(eMoveNotHold, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_BACK_NOT_HOLD, "DevAdapter::MoveCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		return eMoveNotHold;
 	}
 	else {
@@ -4222,26 +4140,17 @@ ErrorCodeEnum CCardIssuerFSM::MachineMoveCardFrontGate(bool bInBussiness)
 	if (eMoveFrontGate != Error_Succeed){
 		if (m_bCardFromHopper)
 		{
-			SetErrPackage("MachineMoveCardFrontGate::MoveCard(CI_MOVECARD_FRONT_GATE)", m_csDevSN, eMoveFrontGate, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_FRONT_GATE);
-			if (bInBussiness) {
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220305").setResultCode("RTA2308")("发卡,卡片吐出失败,请联系厂商检查卡嘴是否没对齐或是否有塞卡");
-			}
-			else {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220305").setResultCode("RTA2308")("发卡,卡片吐出失败,请联系厂商检查卡嘴是否没对齐或是否有塞卡");
-			}
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("发卡,卡片吐出失败,请联系厂商检查卡嘴是否没对齐或是否有塞卡");
+			SetErrorAndLog(eMoveFrontGate, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_FRONT_GATE, "DevAdapter::MoveCard", __FUNCTION__, bInBussiness, l_endTime - l_beginTime, "QLR040220305", "");
+
 		}
 		else
 		{
-			SetErrPackage("MachineMoveCardFrontGate::MoveCard(CI_MOVECARD_FRONT_GATE)", m_csDevSN, eMoveFrontGate, CardIssuer_UserErrorCode_MoveCardToGate_Failed);
-			if (bInBussiness) {
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_USER).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220305").setResultCode("RTA2301")("前端进卡,卡片吐出失败,请确认卡片是否平整");
-			}
-			else {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime).setLogCode("QLR040220305").setResultCode("RTA2301")("前端进卡,卡片吐出失败,请确认卡片是否平整");
-			}
-
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("前端进卡,卡片吐出失败,请确认卡片是否平整");
+			SetErrorAndLog(eMoveFrontGate, CardIssuer_UserErrorCode_MoveCardToGate_Failed, "DevAdapter::MoveCard", __FUNCTION__, bInBussiness, l_endTime - l_beginTime, "QLR040220305", "");
+		
 		}
-		AlarmDEC(bInBussiness);
+		//AlarmDEC(bInBussiness);
 			
 	}
 	else {
@@ -4508,9 +4417,7 @@ bool CCardIssuerFSM::JustReadCardNo()
 		l_endTime = GetTickCountRVC();
 		
 		if (eErr != Error_Succeed){
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactivateICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23AB")("JustReadCardNo::DeactivateICCard err=%s", SpStrError(eErr));
-			SetErrPackage("JustReadCardNo::DeactivateICCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard, "DevAdapter::DeactivateICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactivateICCard").setCostTime(l_endTime - l_beginTime)("JustReadCardNo::DeactivateICCard");
@@ -4522,9 +4429,7 @@ bool CCardIssuerFSM::JustReadCardNo()
 		
 
 		if (eErr != Error_Succeed){
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ReleaseIC").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B6")("JustReadCardNo::ReleaseIC err=%s", SpStrError(eErr));
-			SetErrPackage("JustReadCardNo::ReleaseIC", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_ReleaseIC);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_ReleaseIC, "DevAdapter::ReleaseIC", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ReleaseIC").setCostTime(l_endTime - l_beginTime)("JustReadCardNo::ReleaseIC");
@@ -4570,9 +4475,7 @@ bool CCardIssuerFSM::JustReadCardNo()
 			}
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MagRead").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B4")("JustReadCardNo::MagRead err=%s", SpStrError(eErr));
-			SetErrPackage("JustReadCardNo::MagRead", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_MagRead);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_MagRead, "DevAdapter::MagRead", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 	}
 	if (m_currCardNo.GetLength() > 8)
@@ -4783,33 +4686,31 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 	{
 	case SAMICCommand_SAM_Select:
 	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMICCommand::SAMSelect, req.param1:%d ", ctx->Req.param1[0]);
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->SAMSelect(ctx->Req.param1[0]);
 		l_endTime = GetTickCountRVC();
 
 		if (eErr) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMSelect").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CA")("SAMICCommand::SAMSelect, req.param1:%d ,err=%s", ctx->Req.param1[0], SpStrError(eErr));
-			SetErrPackage("SAMICCommand::SAMSelect", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMSelect);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SAMSelect, "DevAdapter::SAMSelect", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMSelect").setCostTime(l_endTime - l_beginTime)("SAMICCommand::SAMSelect, req.param1:%d", ctx->Req.param1[0]);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMSelect").setCostTime(l_endTime - l_beginTime)("SAMICCommand::SAMSelect succ");
 		}
 	}
 		break;
 	case SAMICCommand_SAM_Active:
 	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SAMICCommand::SAMActive, req.param1:%d ", ctx->Req.param1[0]);
 		l_beginTime = GetTickCountRVC();
 		eErr = m_hDevHelper->SAMActive(ctx->Req.param1[0]);
 		l_endTime = GetTickCountRVC();	
 
 		if (eErr) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMActive").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CB")("SAMICCommand::SAMActive, req.param1:%d ,err=%s", ctx->Req.param1[0], SpStrError(eErr));
-			SetErrPackage("SAMICCommand::SAMActive", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMActive);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SAMActive, "DevAdapter::SAMActive", __FUNCTION__, false, l_endTime - l_beginTime, "","");
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMActive").setCostTime(l_endTime - l_beginTime)("SAMICCommand::SAMActive, req.param1:%d", ctx->Req.param1[0]);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMActive").setCostTime(l_endTime - l_beginTime)("SAMICCommand::SAMActive succ");
 		}
 	}
 		break;
@@ -4820,9 +4721,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 		l_endTime = GetTickCountRVC();	
 
 		if (eErr) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMDeactivate").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CC")("SAMICCommand::SAMDeactivate err=%s", SpStrError(eErr));
-			SetErrPackage("SAMICCommand::SAMDeactivate", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMDeactivate);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SAMDeactivate, "DevAdapter::SAMDeactivate", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMDeactivate").setCostTime(l_endTime - l_beginTime)("SAMICCommand::SAMDeactivate");
@@ -4836,9 +4735,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 		l_endTime = GetTickCountRVC();
 
 		if (eErr) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMWarmReset").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CD")("SAMICCommand::SAMWarmReset err=%s", SpStrError(eErr));
-			SetErrPackage("SAMICCommand::SAMWarmReset", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMWarmReset);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SAMWarmReset, "DevAdapter::SAMWarmReset", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMWarmReset").setCostTime(l_endTime - l_beginTime)("SAMICCommand::SAMWarmReset");
@@ -4862,9 +4759,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMQueryStatus").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CE")("SAMICCommand::SAMQueryStatus err=%s", SpStrError(eErr));
-			SetErrPackage("SAMICCommand::SAMQueryStatus", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMQueryStatus);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SAMQueryStatus, "DevAdapter::SAMQueryStatus", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 	}
 		break;
@@ -4897,9 +4792,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SAMCommand").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CF")("SAMICCommand::SAMCommand err=%s", SpStrError(eErr));
-			SetErrPackage("SAMICCommand::SAMCommand", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_SAMCommand);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SAMCommand, "DevAdapter::SAMCommand", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		delete[]pTmp;
 	}
@@ -4942,17 +4835,13 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 			}
 			else
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveICCardATR").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23B7")("SAMICCommand::ActiveICCardATR err=%s", SpStrError(eErr));
-				SetErrPackage("SAMICCommand::ActiveICCardATR", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_ActiveICCardATR);
-				AlarmDEC();
+				SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_ActiveICCardATR, "DevAdapter::ActiveICCardATR", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 			}
 
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ContactIC").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23C7")("SAMICCommand::ContactIC err=%s", SpStrError(eErr));
-			SetErrPackage("SAMICCommand::ContactIC", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_ContactIC);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_ContactIC, "DevAdapter::ContactIC", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 	}
 		break;
@@ -4969,9 +4858,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 			
 			if (eErr != Error_Stoped)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactivateICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23AB")("SAMICCommand::DeactivateICCard err=%s", SpStrError(eErr));
-				SetErrPackage("SAMICCommand::DeactivateICCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard);
-				AlarmDEC();
+				SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_DeactivateICCard, "DevAdapter::DeactivateICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 			}
 			else {
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactivateICCard").setCostTime(l_endTime - l_beginTime)("SAMICCommand::DeactivateICCard");
@@ -4989,9 +4876,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 		l_endTime = GetTickCountRVC();
 
 		if (eErr != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::WarmReset").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23CG")("SAMICCommand::WarmReset err=%s", SpStrError(eErr));
-			SetErrPackage("SAMICCommand::WarmReset", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_WarmReset);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_WarmReset, "DevAdapter::WarmReset", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::WarmReset").setCostTime(l_endTime - l_beginTime)("SAMICCommand::WarmReset");
@@ -5041,9 +4926,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ICCommand").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2302")("SAMICCommand::ICCommand err=%s", SpStrError(eErr));
-			SetErrPackage("SAMICCommand::ICCommand", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_ICCommand);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_ICCommand, "DevAdapter::ICCommand", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		delete[]pTmp;
 	}
@@ -5063,9 +4946,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ActiveContactlessICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23C6")("SAMICCommand::ActiveContactlessICCard, err=%s", SpStrError(eErr));
-			SetErrPackage("SAMICCommand::ActiveContactlessICCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_ActiveContactlessICCard);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_ActiveContactlessICCard, "DevAdapter::ActiveContactlessICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 	}
 		break;
@@ -5082,9 +4963,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 			l_endTime = GetTickCountRVC();
 
 			if (eErr != Error_Succeed) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactContactlessICCard").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23C8")("SAMICCommand::DeactContactlessICCard err=%s", SpStrError(eErr));
-				SetErrPackage("SAMICCommand::DeactContactlessICCard", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_DeactContactlessICCard);
-				AlarmDEC();
+				SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_DeactContactlessICCard, "DevAdapter::DeactContactlessICCard", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 			}
 			else {
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DeactContactlessICCard").setCostTime(l_endTime - l_beginTime)("SAMICCommand::DeactContactlessICCard");
@@ -5136,9 +5015,7 @@ int CCardIssuerFSM::SAMICCommand(SpReqAnsContext<CardIssuerStandService_SAMICCom
 			}
 		}
 		else{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::RFTypeABCommand").setCostTime(l_endTime - l_beginTime).setResultCode("RTA23C9")("SAMICCommand::RFTypeABCommand err=%s", SpStrError(eErr));
-			SetErrPackage("SAMICCommand::RFTypeABCommand", m_csDevSN, eErr, MEC_DEVAPI_CARDISSUER_RFTypeABCommand);
-			AlarmDEC();
+			SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_RFTypeABCommand, "DevAdapter::RFTypeABCommand", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
 		}
 		delete[]pTmp;
 	}
@@ -5441,9 +5318,8 @@ void CCardIssuerFSM::QueryCIStatus(SpReqAnsContext<CardIssuerStandService_QueryC
 	l_endTime = GetTickCountRVC();
 
 	if (errCode != Error_Succeed) {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevStatus").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2322")("QueryCIStatus::GetDevStatus err=%s", SpStrError(errCode));
-		SetErrPackage("QueryCiStatus::GetDevStatus", m_csDevSN, errCode, MEC_DEVAPI_CARDISSUER_GetDevStatus);
-		ctx->Answer(Error_Unexpect, AlarmDEC());
+		SetErrorAndLog(errCode, MEC_DEVAPI_CARDISSUER_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
+		ctx->Answer(Error_Unexpect, GetAlarmDEC());
 	}
 	else
 	{

+ 1 - 1
Module/mod_CardIssuerStand/mod_cardissuer.cpp

@@ -151,7 +151,7 @@ void CCardIssuerEntity::OnSysVarEvent(const char* pszKey, const char* pszValue,
 	{
 		if (_strnicmp(pszValue, "M", strlen("M")) == 0) {
 			m_fsm.SetInWhatPage(PageType_MainPage);
-			m_fsm.SetEnterMainPage();//ÉèÖýøÈëÊ×Ò³
+			m_fsm.SetEnterMainPage();//设置进入首页
 		}
 		else if (_strnicmp(pszValue, "U", strlen("U")) == 0) {
 			m_fsm.SetInWhatPage(PageType_UserDesktop);

+ 8 - 4
Module/mod_ContactlessCard/ContactlessFSM.cpp

@@ -661,10 +661,14 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 #endif // RVC_OS_WIN
 
         } else {
-            WORD devErrCode = eErrDev;
-            CSimpleStringA errMsg = "";
-            GetAndSplitDevErrInfo(errMsg, devErrCode, "DevOpen");
-            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ContactlessCard DevOpen failed (%s)", SpStrError(eErrDev));
+            //WORD devErrCode = eErrDev;
+            //CSimpleStringA errMsg = "";
+            //GetAndSplitDevErrInfo(errMsg, devErrCode, "DevOpen");
+            //DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ContactlessCard DevOpen failed (%s)", SpStrError(eErrDev));
+
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").setCostTime(l_endTime - l_beginTime).setResultCode("RTA2J03")("ContactlessCard DevOpen failed , dwPort:%d, dwBaudRate:%d", m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt());
+			SetErrPackage("Load::DevOpen", "", hr, MEC_DEVAPI_RF_DevOpen);
+			AlarmDEC();
             initTries++;
         }
     } while (initTries < INIT_TRY_NUM);

+ 1 - 1
Module/mod_DeviceControl/DeviceAdaptChecker.cpp

@@ -192,7 +192,7 @@ bool VendorLibInfoEx::Load(CSimpleStringA& adapterFilename)
             break;
         }
     }
-    ///**TODO(Gifur@10/19/2021): 保守写法,需考虑到文件名异常的情况 */
+    ///**TODO(Gifur@10/19/2021): 淇濆畧鍐欐硶锛岄渶鑰冭檻鍒版枃浠跺悕寮傚父鐨勬儏鍐� */
     for (int i = 0; result && i < adapterElems.GetCount(); ++i) {
         switch (i) {
         case 0:

+ 12 - 12
Module/mod_DeviceControl/mod_DeviceControl.cpp

@@ -32,7 +32,7 @@
 
 #endif //RVC_OS_WIN
 
-#define DeviceControl_MouseMove  0x21400301	//鼠标移动
+#define DeviceControl_MouseMove  0x21400301	//榧犳爣绉诲姩
 
 void CDeviceControlServerSession::Handle_USB(SpReqAnsContext<DeviceControlService_USB_Req, DeviceControlService_USB_Ans>::Pointer ctx)
 {
@@ -115,9 +115,9 @@ void CDeviceControlEntity::QueryHardwareInfo(SpReqAnsContext<DeviceControlServic
 	GetFunction()->OpenConfig(Config_Root, spConfig);
 	spConfig->ReadConfigValue("Device.PinPad", "Vendor", deviceFct);
 
-    //获取操作系统版本信息
+    //鑾峰彇鎿嶄綔绯荤粺鐗堟湰淇℃伅
 #if defined(_MSC_VER)
-        //获取windows系统版本
+        //鑾峰彇windows绯荤粺鐗堟湰
     DWORD dwMajorVer, dwMinorVer, dwBuildNumber;
     BOOL bRet = FALSE;
     HMODULE hModNtdll = NULL;
@@ -153,15 +153,15 @@ void CDeviceControlEntity::QueryHardwareInfo(SpReqAnsContext<DeviceControlServic
         ctx->Ans.terminalNo = info.strTerminalID;
         ctx->Ans.termLimit = "";
         ctx->Ans.termVersion = info.InstallVersion.ToString();
-#ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
+#ifdef DEVOPS_ON_ST /*DevOps娴佹按绾跨紪璇戯紝ST鐜��*/
         ctx->Ans.reserved1 = 1;
-#elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
+#elif defined(DEVOPS_ON_UAT)/*DevOps娴佹按绾跨紪璇戯紝UAT鐜��*/
         ctx->Ans.reserved1 = 2;
-#elif defined(DEVOPS_ON_PRD)/*DevOps流水线编译,PRD环境*/
+#elif defined(DEVOPS_ON_PRD)/*DevOps娴佹按绾跨紪璇戯紝PRD鐜��*/
         ctx->Ans.reserved1 = 3;
-#elif defined(DEVOPS_ON_DEV)/*DevOps流水线编译,Dev环境*/
+#elif defined(DEVOPS_ON_DEV)/*DevOps娴佹按绾跨紪璇戯紝Dev鐜��*/
         ctx->Ans.reserved1 = 0;
-#else/*本地编译等非DevOps环境编译的版本*/
+#else/*鏈�湴缂栬瘧绛夐潪DevOps鐜��缂栬瘧鐨勭増鏈�*/
         ctx->Ans.reserved1 = 0;
 #endif	
         ctx->Ans.reserved3 = sysVer;
@@ -322,7 +322,7 @@ void CDeviceControlEntity::ReadConfigValue(SpReqAnsContext<DeviceControlService_
         CSimpleStringA section(ctx->Req.section);
         CSimpleStringA key(ctx->Req.key);
 #ifndef DEVOPS_ON_PRD
-        /** 被逼的,方便测试环境验证,并且在只读的情况下 [Gifur@2022127]*/
+        /** 琚�€肩殑锛屾柟渚挎祴璇曠幆澧冮獙璇侊紝骞朵笖鍦ㄥ彧璇荤殑鎯呭喌涓� [Gifur@2022127]*/
         if (ctx->Req.reserved1 == 1 && !ctx->Req.option) {
 #ifdef DEVOPS_ON_ST
             section.Append("_ST");
@@ -519,7 +519,7 @@ void CDeviceControlEntity::GetVendorFileList(SpReqAnsContext<DeviceControlServic
 				regerror(ret, &reg, ebuff, 256);
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("regex failed: %s", ebuff);
 				tmpResult = Error_Unexpect;
-				tmpMsg = CSimpleStringA::Format("内部错误:REGEX %s", ebuff);
+				tmpMsg = CSimpleStringA::Format("鍐呴儴閿欒�锛歊EGEX %s", ebuff);
 			} else {
 				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("pattern: %s", pattern.GetData());
 				for (int i = 0; i < subs->nelts; ++i) {
@@ -586,7 +586,7 @@ void CDeviceControlEntity::TestAdapterFileAvailable(
 	CSimpleStringA tmpMsg(true);
 
 
-	if (ctx->Req.type == 1) /*循环验证配置适配器的有效性*/ {
+	if (ctx->Req.type == 1) /*寰�幆楠岃瘉閰嶇疆閫傞厤鍣ㄧ殑鏈夋晥鎬�*/ {
 		CAdapterLoadChecker* checker = new CAdapterLoadChecker();
 		checker->Init(this);
 		CAutoArray<CAdapterLoader*>& tmp = checker->AdapterCoinfigList();
@@ -720,7 +720,7 @@ void CDeviceControlEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmart
 {
     LOG_FUNCTION();
     ErrorCodeEnum rt = m_fsm.Init(this);
-    ///**TODO(Gifur@9/28/2023): UOS 下需要监控鼠标移动状态吗? */
+    ///**TODO(Gifur@9/28/2023): UOS 涓嬮渶瑕佺洃鎺ч紶鏍囩Щ鍔ㄧ姸鎬佸悧锛� */
 #if defined(_MSC_VER)
     CloseHandle(CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&cursorPosUpdate, NULL, 0, NULL));
 #endif //_MSC_VER

+ 9 - 9
Module/mod_HSPScanner/HSPSCanner_UserErrorCode.h

@@ -38,15 +38,15 @@
 #define LOG_DEBUG_HSPS_CRITICAL_OPERATION_SCANIMAGE_START  0x21700211
 #define LOG_DEBUG_HSPS_CRITICAL_OPERATION_SCANIMAGEEX_START  0x21700212
 
-#define LOG_WARN_HSPS_READ_CONFIG_FILE_FAILED						0x21700213 //图片大小限制参数读取失败
-#define LOG_WARN_HSPS_OPENCV_READ_FAILED							0x21700214 //opencv读图片失败
-#define LOG_WARN_HSPS_OPENCV_WRITE_FAILED							0x21700215 //opencv写图片失败
-#define LOG_WARN_HSPS_RESIZE_IMAGE_FILE_FAILED					0x21700216 //图片缩小失败
-#define LOG_WARN_HSPS_RESIZE_IMAGEEX_FILE_FAILED				0x21700217 //ex图片缩小失败
-#define LOG_WARN_HSPS_RESIZE_FUNCTION_SUCCEED					0x21700218 //resize函数执行成功
-
-#define LOG_WARN_HSPS_VENDORDLL_CHANGE					0x21700219 //修改加载DLL的名称
-#define LOG_WARN_HSPS_VENDORDLL_KEBA_MATCHED	    0x2170021A //符合切换科堡适配器的告警
+#define LOG_WARN_HSPS_READ_CONFIG_FILE_FAILED						0x21700213 //鍥剧墖澶у皬闄愬埗鍙傛暟璇诲彇澶辫触
+#define LOG_WARN_HSPS_OPENCV_READ_FAILED							0x21700214 //opencv璇诲浘鐗囧け璐�
+#define LOG_WARN_HSPS_OPENCV_WRITE_FAILED							0x21700215 //opencv鍐欏浘鐗囧け璐�
+#define LOG_WARN_HSPS_RESIZE_IMAGE_FILE_FAILED					0x21700216 //鍥剧墖缂╁皬澶辫触
+#define LOG_WARN_HSPS_RESIZE_IMAGEEX_FILE_FAILED				0x21700217 //ex鍥剧墖缂╁皬澶辫触
+#define LOG_WARN_HSPS_RESIZE_FUNCTION_SUCCEED					0x21700218 //resize鍑芥暟鎵ц�鎴愬姛
+
+#define LOG_WARN_HSPS_VENDORDLL_CHANGE					0x21700219 //淇�敼鍔犺浇DLL鐨勫悕绉�
+#define LOG_WARN_HSPS_VENDORDLL_KEBA_MATCHED	    0x2170021A //绗﹀悎鍒囨崲绉戝牎閫傞厤鍣ㄧ殑鍛婅�
 
 #define LOG_DEBUG_HSPS_CRITICAL_OPERATION_SCANIMAGE_SUCC   0x21700220
 #define LOG_DEBUG_HSPS_CRITICAL_OPERATION_SCANIMAGE_FAILED 0x21700221

Plik diff jest za duży
+ 228 - 385
Module/mod_HSPScanner/HSPScannerFSM.cpp


+ 12 - 10
Module/mod_HSPScanner/HSPScannerFSM.h

@@ -366,9 +366,6 @@ public:
 	int StartPreview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
 		HSPScannerService_StartPreview_Ans>::Pointer ctx);
 
-	ErrorCodeEnum SetPreview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
-		HSPScannerService_StartPreview_Ans>::Pointer ctx);
-
 	int StopPreview(SpReqAnsContext<HSPScannerService_CancelPreview_Req,
 		HSPScannerService_CancelPreview_Ans>::Pointer ctx);
 	
@@ -407,6 +404,8 @@ public:
 	}
 	LPCTSTR MapCode2RTAString(DWORD dwValue = 0);
 
+	int SetPreviewParam(int colorType, int rotateType, int scanType, bool abortIfFault = false);
+
 private:
 	int m_version, m_batch;
 
@@ -419,15 +418,11 @@ private:
 
 	int m_nRecX, m_nRecY, m_nRecW;
 
-	CSimpleStringA m_csDllName;
-	CSimpleStringA m_csDllFullPath;
-
-	CSimpleStringA m_csDevNo;
-	CSimpleStringA m_csPort, m_csBuadrate;
 	DevStateEnum m_eDevStatus;
 	EvtType m_desiredAction;
 	CSimpleStringA m_csMachineType;
 	DevCategoryInfo m_devCat;
+	CSimpleStringA m_csDevNo;
 
 	DWORD dwLastUserCode;
 	DWORD m_dwMaxImageSize;
@@ -436,7 +431,6 @@ public:
 
 	DWORD GetCustLastErrorCode() { return m_dwErroCode; }
 	void SetCustLastErrorCode(DWORD dwVal = 0) { m_dwErroCode = dwVal; }
-
 	ErrorCodeEnum TryToOpenDevice();
 
 private:
@@ -494,7 +488,15 @@ struct SetPropertyInPreviewTask : public ITaskSp
 	void Process()
 	{
 		FSMEvent* pEvt = new FSMEvent(USER_EVT_SETPROPERTYINVIEW_FINISHED);
-		ErrorCodeEnum eRet = m_fsm->SetPreview(m_ctx);
+		ErrorCodeEnum eRet;
+		const int retCode = m_fsm->SetPreviewParam(m_ctx->Req.colorType, m_ctx->Req.rotateType, m_ctx->Req.scanType);
+		if (retCode == 0)
+		{
+			eRet = Error_Succeed;
+		}
+		else {
+			eRet = Error_DevCommFailed;
+		}
 		m_ctx->Answer(eRet);
 		if(ISSUCCEEDED(eRet))
 			pEvt->param1 = 0;

+ 14 - 0
Module/mod_HSPScanner/mod_HSPScanner.cpp

@@ -73,7 +73,21 @@ void CHSPScannerServerSession::Handle_Exit(SpOnewayCallContext<HSPScannerService
 	m_pEntity->Exit(ctx);
 }
 
+void CHSPScannerEntity::OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName)
+{
+	if ((_strnicmp(pszKey, "UIState", strlen("UIState")) == 0))
+	{
+		if (_strnicmp(pszValue, "M", strlen("M")) == 0)
+			m_fsm.SetInWhatPage(PageType_MainPage);
+		else if (_strnicmp(pszValue, "U", strlen("U")) == 0)
+			m_fsm.SetInWhatPage(PageType_UserDesktop);
+		else
+			m_fsm.SetInWhatPage(PageType_Other);
+	}
+}
+
 #if defined(_MSC_VER)
+
 ErrorCodeEnum CHSPScannerEntity::CustomVendorLibInfo()
 {
 	if (vendorLibInfo.strVendor.Compare("keba", true) == 0

+ 4 - 2
Module/mod_HSPScanner/mod_HSPScanner.h

@@ -56,7 +56,7 @@ private:
 };
 
 
-class CHSPScannerEntity : public CDevAdptEntityBase
+class CHSPScannerEntity : public CDevAdptEntityBase, public ISysVarListener
 {
 public:
 	CHSPScannerEntity() {}
@@ -105,11 +105,13 @@ public:
 	virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,
 		CSmartPointer<ITransactionContext> pTransactionContext)
 	{
-		LOG_FUNCTION();
 		ErrorCodeEnum erroCode = m_fsm.OnExit();
 		pTransactionContext->SendAnswer(erroCode);
 	}
 
+	virtual void OnSysVarEvent(const char* pszKey,
+		const char* pszValue, const char* pszOldValue, const char* pszEntityName);
+
 	void Preview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
 		HSPScannerService_StartPreview_Ans>::Pointer ctx)
 	{

+ 50 - 277
Module/mod_IDCertificate/IDCertFSM.cpp

@@ -30,6 +30,18 @@ using namespace SP::Module::Comm;
 #define IDCER_READ_TIMEOUT 60000
 #define IDCER_AUTH_INTERVAL 300
 
+#ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
+#define IMAGE_DETECT_URL "https://carddetect.paasst.cmbchina.cn/api/card/image-detect";
+#elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
+#define IMAGE_DETECT_URL "https://carddetect.paasuat.cmbchina.cn/api/card/image-detect";
+#elif defined(DEVOPS_ON_PRD)/*DevOps流水线编译,PRD环境*/
+#define IMAGE_DETECT_URL "https://carddetect.paas.cmbchina.cn/api/card/image-detect";
+#elif defined(DEVOPS_ON_DEV)/*DevOps流水线编译,Dev&生产环境*/
+#define IMAGE_DETECT_URL "https://carddetect.paas.cmbchina.cn/api/card/image-detect";
+#else/*本地编译等非DevOps环境编译的版本*/
+#define IMAGE_DETECT_URL "https://carddetect.paasst.cmbchina.cn/api/card/image-detect";
+#endif
+
 #ifdef RVC_OS_WIN
 static const std::string base64_chars =
 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
@@ -115,29 +127,7 @@ struct ImgChekTask : ITaskSp
 		//string encodeIn;
 		//Encode(imgIn, encodeIn); //传给服务端应base64编码
 		imgCheckReq.imageBase64 = encodeIn;
-
-		CSmartPointer<IConfigInfo> spCtSettingConfig;
-		m_fsm->GetEntityBase()->GetFunction()->OpenConfig(Config_CenterSetting, spCtSettingConfig);
-		CSimpleStringA tUrl;
-		spCtSettingConfig->ReadConfigValue("IDCertificate", "CardDetectUrl", tUrl);
-		
-		string m_url = tUrl.GetData();
-		if (m_url.size() == 0)
-		{
-#ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
-			m_url = "https://carddetect.paasst.cmbchina.cn/api/card/image-detect";
-#elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
-			m_url = "https://carddetect.paasuat.cmbchina.cn/api/card/image-detect";
-#elif defined(DEVOPS_ON_PRD)/*DevOps流水线编译,PRD环境*/
-			m_url = "https://carddetect.paas.cmbchina.cn/api/card/image-detect";
-#elif defined(DEVOPS_ON_DEV)/*DevOps流水线编译,Dev&生产环境*/
-			m_url = "https://carddetect.paas.cmbchina.cn/api/card/image-detect";
-#else/*本地编译等非DevOps环境编译的版本*/
-			m_url = "https://carddetect.paasst.cmbchina.cn/api/card/image-detect";
-#endif
-		}
-
-		imgCheckReq.m_url = m_url;
+		imgCheckReq.m_url = m_fsm->checkImgURL;
 		long beg = GetTickCount();
 		bool ret = client->Post(imgCheckReq, imgCheckRet);
 		long end = GetTickCount();
@@ -165,22 +155,11 @@ struct ImgChekTask : ITaskSp
 void CIDCertFSM::s0_on_entry()
 {
 	LOG_FUNCTION();
-#ifdef RVC_OS_LINUX
-	m_devState = DEVICE_STATUS_NORMAL;
-	//GetEntityBase()->GetFunction()->SetUserDefineState(IDCertificate_UserErrorCode_Status_Idle);
-
-	if (m_FirstStart) {
-		m_FirstStart = FALSE;
-		ToLogWarnInfoAboutTerm();
-	}
-#else
 	if (!m_logBefore) {
-		ToLogWarnInfoAboutTermCustom();
+		ToLogWarnInfoAboutTerm();
 		m_logBefore = true;
 	}
 	m_devState = DEVICE_STATUS_NORMAL;
-	//GetEntityBase()->GetFunction()->SetUserDefineState(IDCertificate_UserErrorCode_Status_Idle);
-#endif
 }
 void CIDCertFSM::s0_on_exit()
 {
@@ -188,7 +167,6 @@ void CIDCertFSM::s0_on_exit()
 }
 unsigned int CIDCertFSM::s0_on_event(FSMEvent* pEvt)
 {
-	LOG_FUNCTION();
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("s0 evt %d",pEvt->iEvt);
 	switch (pEvt->iEvt)
 	{
@@ -236,7 +214,6 @@ unsigned int CIDCertFSM::s0_on_event(FSMEvent* pEvt)
 void CIDCertFSM::s1_on_entry()
 {
 	LOG_FUNCTION();
-	//GetEntityBase()->GetFunction()->SetUserDefineState(IDCertificate_UserErrorCode_Status_Reading);
 }
 void CIDCertFSM::s1_on_exit()
 {
@@ -244,7 +221,6 @@ void CIDCertFSM::s1_on_exit()
 }
 unsigned int CIDCertFSM::s1_on_event(FSMEvent *pEvt)
 {
-	LOG_FUNCTION();
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("s1 evt %d", pEvt->iEvt);
 	int ret = 0;
 	switch(pEvt->iEvt)
@@ -300,7 +276,6 @@ void CIDCertFSM::s2_on_entry()
 {
 	LOG_FUNCTION();
 	m_devState = DEVICE_STATUS_FAULT;
-	//GetEntityBase()->GetFunction()->SetUserDefineState(IDCertificate_UserErrorCode_Status_Failed);
 	m_testResult = Error_InvalidState;
 }
 void CIDCertFSM::s2_on_exit()
@@ -370,7 +345,6 @@ void CIDCertFSM::s5_on_exit()
 }
 unsigned int CIDCertFSM::s5_on_event(FSMEvent* pEvt)
 {
-	LOG_FUNCTION();
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("s5 evt %d", pEvt->iEvt);
 	int ret = 0;
 	switch (pEvt->iEvt)
@@ -407,34 +381,13 @@ ErrorCodeEnum CIDCertFSM::GetVendorDllPath(CSimpleStringA &strPath)
 {
 	strPath = "termb.dll";
 	return Error_Succeed;//oiltest
-	CSimpleStringA strDepPath;
-	ErrorCodeEnum Error = m_pEntity->GetFunction()->GetPath("Dep", strDepPath);
-	if (Error == Error_Succeed) {
-		strPath = "termb.dll";//CSimpleStringA::Format("%s\\mod_IDCertificate\\termb.dll", (LPCSTR)strDepPath);
-	}
-	return Error;
-}
-bool isnostr(const char *str)
-{
-	int len = strlen(str);
-	if (len == 0)
-		return true;
-	for (int i = 0; i < len; ++i)
-	{
-		if (*(str+i) != ' ')
-			return false;
-	}
-	return true;
 }
+
 ErrorCodeEnum CIDCertFSM::OnInit()
 {
 	ZeroMemory(m_devCatInfo.szModel, MAX_DEV_MODEL_LEN);
 	ZeroMemory(m_devCatInfo.szType, MAX_DEV_TYPE_LEN);
 	ZeroMemory(m_devCatInfo.szVendor, MAX_DEV_VENDOR_LEN);
-#ifdef RVC_OS_LINUX
-	m_devCatInfo.eState = DEVICE_STATUS_NOT_READY;
-	m_devCatInfo.version = { 0, 0, 0, 0 };
-#endif // RVC_OS_LINUX
 
 #ifdef RVC_OS_WIN //windows使用宽字符
 	nationalCode[1] = L"汉";
@@ -564,6 +517,10 @@ ErrorCodeEnum CIDCertFSM::OnInit()
 	{
 		closeImgCheck = TRUE;
 	}
+	checkImgURL = IMAGE_DETECT_URL;
+	CSimpleStringA tUrl;
+	spCtSettingConfig->ReadConfigValue("IDCertificate", "CardDetectUrl", tUrl);
+	if (!tUrl.IsNullOrEmpty()) { checkImgURL = tUrl.GetData(); }
 
 	return Error_Succeed;
 }
@@ -578,104 +535,6 @@ ErrorCodeEnum CIDCertFSM::OnExit()
 	return Error_Succeed;
 }
 
-ErrorCodeEnum CIDCertFSM::CheckDate(const char* date)
-{
-	string strDate = date;
-	if(strDate.find("长期") != string::npos)
-	{
-		return Error_Succeed;
-	}
-	else
-	{
-		regex pattern("^(([0-9]{4})(\.|-|年)(0[1-9]|1[0-2])(\.|-|月)(0[1-9]|[12][0-9]|3[01])(日)*)$");
-		smatch sm;
-		if(regex_match(strDate, sm, pattern))
-		{
-			int month = atoi(sm[4].str().c_str());
-			int day = atoi(sm[6].str().c_str());
-			if(month > 0 && month <= 12 && day > 0 && day <= 31)
-			{
-				return Error_Succeed;
-			}
-		}
-	}
-	return Error_Unexpect;
-}
-
-ErrorCodeEnum CIDCertFSM::CheckDate(const char* startDate, const char* endDate)
-{
-	string strStartDate = startDate, strEndDate = endDate;
-	regex pattern("^(([0-9]{4})(\.|-))");
-	smatch smStart, smEnd;
-	if (regex_search(strStartDate, smStart, pattern) && regex_search(strEndDate, smEnd, pattern))
-	{
-		strStartDate = smStart.suffix().str();
-		strEndDate = smEnd.suffix().str();
-		if(strStartDate == strEndDate)
-			return Error_Succeed;
-	}
-	else if(strEndDate == "长期")
-		return Error_Succeed;
-
-	return Error_Unexpect;
-}
-
-void CIDCertFSM::LogDate(IDCerInfo idInfo)
-{
-	ErrorCodeEnum eErrCode = CheckDate(idInfo.startDate.data);
-	CSimpleStringA errMsg;
-	if(Error_Succeed != eErrCode)
-	{
-		errMsg = CSimpleStringA::Format("Invalid startDate");
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidStartDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-
-	eErrCode = CheckDate(idInfo.endDate.data);
-	if(Error_Succeed != eErrCode)
-	{
-		CSimpleStringA errMsg = CSimpleStringA::Format("Invalid endDate");
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidEndDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-
-	eErrCode = CheckDate(idInfo.birthday.data);
-	if(Error_Succeed != eErrCode)
-	{
-		CSimpleStringA errMsg = CSimpleStringA::Format("Invalid birthDate");
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidBirthDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-}
-
-void CIDCertFSM::LogDateEx(IDCerInfoEx idInfo)
-{
-	ErrorCodeEnum eErrCode = CheckDate(idInfo.startDate.data);
-	CSimpleStringA errMsg;
-	if(Error_Succeed != eErrCode)
-	{
-		errMsg = CSimpleStringA::Format("Invalid startDate");
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidStartDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-
-	eErrCode = CheckDate(idInfo.endDate.data);
-	if(Error_Succeed != eErrCode)
-	{
-		CSimpleStringA errMsg = CSimpleStringA::Format("Invalid endDate");
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidEndDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-
-	eErrCode = CheckDate(idInfo.birthday.data);
-	if(Error_Succeed != eErrCode)
-	{
-		CSimpleStringA errMsg = CSimpleStringA::Format("Invalid birthDate");
-		LogWarn(Severity_Middle, eErrCode, IDCertificate_UserErrorCode_InvalidBirthDate, (const char*)errMsg);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(errMsg);
-	}
-}
-
 int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
@@ -684,13 +543,13 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 		ctx->Ans.msgtype = 0;
 		ctx->Answer(Error_Succeed);
 		return 0;
-	}
+	}*/
 
 	DWORD elapsed = 0;
 	DWORD dwStart = SP::Module::Comm::RVCGetTickCount();
 	DWORD dwEnd = SP::Module::Comm::RVCGetTickCount();
 	ErrorCodeEnum eErr = Error_Unexpect;
-	ErrorCodeEnum errRF = Error_Unexpect;
+	ErrorCodeEnum errRfOpen = Error_Unexpect;
 	ErrorCodeEnum errAuth = Error_Unexpect;
 	ErrorCodeEnum errRead = Error_Unexpect;
 	ErrorCodeEnum errReadEx = Error_Unexpect;
@@ -736,11 +595,11 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 		if (!bOpenRF)
 		{
 			m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
-			errRF = m_hDevHelper->IDCerRFControl(true);
+			errRfOpen = m_hDevHelper->IDCerRFControl(true);
 			m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)
 				("RreadAndScanUTF8 DevAdapter::IDCerRFControl");
-			if (Error_Succeed == errRF)
+			if (Error_Succeed == errRfOpen)
 			{
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open rf succeed.");
 			}
@@ -968,13 +827,9 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 					}
 					else
 					{
+						if(eErr != Error_NotImpl)
 						SetErrorAndLog(eErr, MEC_DEVAPI_IDCER_ScanIDAndSaveImage, "DevAdapter::ScanIDAndSaveImage", __FUNCTION__,
 							false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
-
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanIDAndSaveImage")
-							.setCostTime(m_ullEndTime - m_ullBeginTime)
-							.setResultCode("RTA210C")
-							("ReadAndScanUTF8::ScanIDAndSaveImage failed with errCode 0x%x", eErr);
 					}
 					ctx->Ans.hasscan = 0;
 
@@ -1056,16 +911,6 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 	if (m_bExit)
 		bExitWhenReading = true;
 
-	if (!m_bExit && !bOpenRF && errRF != Error_Succeed)
-	{
-		SetErrorAndLog(errRF, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
-			true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
-		
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)
-			.setResultCode(std::to_string(errRF).c_str())
-			("ReadAndScanUTF8::IDCerRFControl Open failed with errcode: %d", errRF);
-	}
-
 	m_bExit = false;
 	m_bReading = false;
 	LogEvent(Severity_Middle, LOG_EVT_IDCERTIFICATE_GREEN_OFF, "IDCer warning off");
@@ -1098,8 +943,6 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 					SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
 						false, m_ullEndTime - m_ullBeginTime);
 					
-					SetErrPackage("ReadAndScanUTF8::IDCerRFControl", m_devSN, eErr1, MEC_DEVAPI_IDCER_IDCerRFControl);
-					AlarmDEC();
 					m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 					ErrorCodeEnum errEject = m_hDevHelper->ForceIDEject();
 					m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
@@ -1107,8 +950,8 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 						("ReadAndScanUTF8 DevAdapter::ForceIDEject");
 					if (errEject != Error_Succeed)
 					{
-						SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_ForceIDEject, "DevAdapter::ForceIDEject", __FUNCTION__,
-							true, m_ullEndTime - m_ullBeginTime);
+						SetErrorAndLog(errEject, MEC_DEVAPI_IDCER_ForceIDEject, "DevAdapter::ForceIDEject", __FUNCTION__,
+							false, m_ullEndTime - m_ullBeginTime);
 					}
 				}
 				else
@@ -1124,12 +967,9 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 		else
 		{
 			SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_QueryCardPos, "DevAdapter::QueryCardPos", __FUNCTION__,
-				true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
+				false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
 
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")
-				.setCostTime(m_ullEndTime - m_ullBeginTime)
-				.setResultCode("RTA210A")
-				("exec QueryCardPos first time failed.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec QueryCardPos first time failed.");
 		}
 
 		//查询卡片位置以决定跳转
@@ -1144,16 +984,10 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 		}
 		else
 		{
-			SetErrPackage("ReadAndScanUTF8::QueryCardPos", m_devSN, eErr1, MEC_DEVAPI_IDCER_QueryCardPos);
-			AlarmDEC();
-
 			SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_QueryCardPos, "DevAdapter::QueryCardPos", __FUNCTION__,
-				true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
+				false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
 
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")
-				.setCostTime(m_ullEndTime - m_ullBeginTime)
-				.setResultCode("RTA210A")
-				("exec QueryCardPos second time failed with errcode: %d", eErr1);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec QueryCardPos second time failed with errcode: %d", eErr1);
 		}
 	}
 
@@ -1167,11 +1001,8 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 		if (errRf != Error_Succeed)
 		{
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec IDCerRFControl(false) failed, force eject...");
-			SetErrorAndLog(errRF, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
+			SetErrorAndLog(errRf, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
 				false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
-
-			SetErrPackage("ReadAndScanUTF8::IDCerRFControl", m_devSN, errRf, MEC_DEVAPI_IDCER_IDCerRFControl);
-			AlarmDEC();
 			m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 			ErrorCodeEnum errEject = m_hDevHelper->ForceIDEject();
 			m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
@@ -1181,7 +1012,7 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 			if (errEject != Error_Succeed)
 			{
 				SetErrorAndLog(errEject, MEC_DEVAPI_IDCER_ForceIDEject, "DevAdapter::ForceIDEject", __FUNCTION__,
-					true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
+					false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
 			}
 		}
 		else
@@ -1206,21 +1037,26 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 				SetErrorAndLog(errReadEx2, MEC_DEVAPI_IDCER_IDCerGetDataEx2, "DevAdapter::IDCerGetDataEx2", __FUNCTION__,
 					true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
 
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2109")
-					("Invoke IDCerGetDataEx2(Timeout) failed: %s", SpStrError(eErr));
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Invoke IDCerGetDataEx2(Timeout) failed: %s", SpStrError(errReadEx2));
 
-				ctx->Answer(Error_TimeOut, AlarmDEC());
+				ctx->Answer(Error_TimeOut, MEC_DEVAPI_IDCER_IDCerGetDataEx2);
 			}
 		}
+		else if (!bOpenRF)
+		{
+			SetErrorAndLog(errRfOpen, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
+				true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Open IDCerRFControl(Timeout) failed: %s", SpStrError(errRfOpen));
+
+			ctx->Answer(Error_TimeOut, MEC_DEVAPI_IDCER_IDCerRFControl);
+		}
 		else
 		{
 			SetErrorAndLog(errAuth, MEC_DEVAPI_IDCER_IDCerAuthenticate, "DevAdapter::IDCerAuthenticate", __FUNCTION__,
 				true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8); //RTA2107
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).
-				setResultCode("RTA2107")
-				("ReadAndScanUTF8::IDCerAuthenticate(Timeout) failed with errcode: %d", errAuth);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ReadAndScanUTF8::IDCerAuthenticate(Timeout) failed with errcode: %d", errAuth);
 
-			ctx->Answer(Error_TimeOut, AlarmDEC());
+			ctx->Answer(Error_TimeOut, MEC_DEVAPI_IDCER_IDCerAuthenticate);
 		}
 	}
 	else 
@@ -1905,6 +1741,7 @@ ErrorCodeEnum CIDCertFSM::DeleteFileIfExisted(LPCTSTR fileName)
 	}
 	CSimpleStringA strPath, strAimPath;
 	ErrorCodeEnum erroCode = m_pEntity->GetFunction()->GetPath("Dep", strPath);
+	//TODO: 删除文件逻辑屏蔽系统差异  [Gifur@2024925]
 #ifdef RVC_OS_LINUX
 	strAimPath = strPath + SPLIT_SLASH_STR + fileName;
 	if (ExistsFileA((LPCTSTR)strAimPath))
@@ -1953,11 +1790,10 @@ ErrorCodeEnum CIDCertFSM::GetDevCatInfo(DevCategoryInfo &devInfo, CSimpleStringA
 	if (m_getDevCategory != Error_Succeed)
 		return m_getDevCategory;
 
-	LOG_FUNCTION();
 	strncpy(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) + 1 : MAX_DEV_MODEL_LEN);
 	strncpy(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) + 1 : MAX_DEV_TYPE_LEN);
 	strncpy(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) + 1 : MAX_DEV_VENDOR_LEN);
-	devType = m_devVer;//适配器版本号
+	devType = m_adapterInfo.strVersion;//适配器版本号
 	return Error_Succeed;
 }
 
@@ -2030,10 +1866,7 @@ int CIDCertFSM::Initial()
 	auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
 
 	//to do device init
-	ErrorCodeEnum err;
 	ErrorCodeEnum eErrDev;
-	CSimpleStringA tmpVendor(""), tmpDevSN(""), tmpDLLVersion, csDepPath(""), csBackslash("\\");
-
 	CSmartPointer<IEntityFunction> spEntityFunction = GetEntityBase()->GetFunction();
 	CSmartPointer<IConfigInfo> spConfig;
 	eErrDev = spEntityFunction->OpenConfig(Config_Root, spConfig);
@@ -2044,7 +1877,6 @@ int CIDCertFSM::Initial()
 		return 2;
 	}
 
-	m_devSN = "";
 	eErrDev = pEntity->LoadVendorLibName();
 	if (eErrDev != Error_Succeed) {
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("get vendor dll(%s)name failed.", pEntity->GetVendorLibName().GetData());
@@ -2056,24 +1888,19 @@ int CIDCertFSM::Initial()
 	HARDWARE_ENTITY_SET_VENDOR_NAME(m_entCode, m_adapterInfo.strVendor);
 
 	pEntity->InitializeVendorLogSwitch();
-
-	spConfig->ReadConfigValue("Device.IDCertificate", "Vendor", m_devVendor);
-	spConfig->ReadConfigValue("Device.IDCertificate", "Version", m_devVer);
-	spConfig->ReadConfigValue("Device.IDCertificate", "Batch", m_devBatch);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)
-		("Vendor=%s#Version=%s#Batch=%s", (const char*)m_devVendor, (const char*)m_devVer, (const char*)m_devBatch);
-
+		("Vendor=%s#Version=%s#Batch=%s", (const char*)m_adapterInfo.strVendor, (const char*)m_adapterInfo.strVersion, (const char*)m_adapterInfo.strBatch);
 	eErrDev = m_hDevHelper.LoadUp(m_adapterInfo.adapterFilePath);
 	if (!IS_SUCCEED(eErrDev)) {
 		LogWarn(Severity_Middle, Error_Unexpect, IDCertificate_UserErrorCode_DllLoadFailed,
-			CSimpleStringA::Format("身份证加载厂商适配器失败!GLE=%d.", GetLastError()).GetData());
+			CSimpleStringA::Format("身份证加载厂商适配器失败!GLE=%d.", GetLastError()));
 		m_bOpening = false;
 		return 2;
 	}
 
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("IDCer open with port %d", m_adapterInfo.GetPortInt());
 	m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
-	err = m_hDevHelper->DevOpen(m_adapterInfo.GetPortInt());
+	ErrorCodeEnum err = m_hDevHelper->DevOpen(m_adapterInfo.GetPortInt());
 	m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
 	m_bOpening = false;
 	if (err == Error_Succeed)
@@ -2083,8 +1910,6 @@ int CIDCertFSM::Initial()
 	}
 	else
 	{
-		SetErrPackage("Initial::DevOpen", m_devSN, err, MEC_DEVAPI_IDCER_DevOpen);
-		AlarmDEC();
 		SetErrorAndLog(err, MEC_DEVAPI_IDCER_DevOpen, "DevAdapter::DevOpen", __FUNCTION__,
 			false, m_ullEndTime - m_ullBeginTime);
 		m_hDevHelper.TearDown();
@@ -2125,10 +1950,8 @@ int CIDCertFSM::Initial()
 	}
 	else
 	{
-		SetErrPackage("Initial::GetDevCategory", m_devSN, eErrDev, MEC_DEVAPI_IDCER_GetDevCategory);
-		AlarmDEC();
 
-		SetErrorAndLog(err, MEC_DEVAPI_IDCER_GetDevCategory, "DevAdapter::GetDevCategory", __FUNCTION__,
+		SetErrorAndLog(eErrDev, MEC_DEVAPI_IDCER_GetDevCategory, "DevAdapter::GetDevCategory", __FUNCTION__,
 			false, m_ullEndTime - m_ullBeginTime);
 	}
 	if (m_hDevHelper != nullptr)
@@ -2142,56 +1965,6 @@ int CIDCertFSM::Initial()
 	return 0;
 }
 
-#ifdef RVC_OS_WIN
-void CIDCertFSM::ToLogWarnInfoAboutTermCustom()
-{
-	LOG_FUNCTION();
-	ToLogWarnInfoAboutTerm();
-
-	if(!m_csMachineType.Compare("RVC.Stand2S", true) && !m_adapterInfo.strVendor.Compare("kxd", true))
-	{
-		//先读取系统变量是否有该值?
-		CSimpleStringA deviceInfo(true);
-		GetEntityBase()->GetFunction()->GetSysVar("kxdInfo", deviceInfo);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("deviceInfo = %s", deviceInfo.GetData());
-		if(!deviceInfo.Compare("KXD", true))
-		{
-			//读取运行时信息,如果有值,不再写,如果没有值,读取告警的信息
-			//这中间会存在这里还在写,但其他模块已经要去读取该运行时的信息了,可能有先后顺序?
-			CSimpleStringA strWarnMsg(true);
-			CSimpleStringA szTypeInfo(true);
-			CSimpleStringA deviceType(true);
-			CSmartPointer<IConfigInfo> spConfigRun;
-			GetEntityBase()->GetFunction()->OpenConfig(Config_Run, spConfigRun);
-			spConfigRun->ReadConfigValue("Run", "WarnMsg", strWarnMsg);
-			if(!strWarnMsg.IsNullOrEmpty())
-			{
-				Json::Value root;
-				Json::Reader reader;
-				if(reader.parse((const char*)strWarnMsg, root))
-				{
-					szTypeInfo = root.isMember("szType") ? CSimpleStringA(root["szType"].asCString()) : "";
-					if(!szTypeInfo.IsNullOrEmpty())
-					{
-						if(!szTypeInfo.Compare("KXD.IDCertificate.SNBC-ID8101", true) || !szTypeInfo.Compare("KXD.IDCertificate.SNBC-ID81", true))
-						{
-							deviceType =  "KS218";
-						}
-						else
-						{
-							deviceType = "KL286";
-						}
-						GetEntityBase()->GetFunction()->SetSysVar("kxdInfo", deviceType, true);
-						//加个告警?
-						LogWarn(Severity_Low, Error_Unexpect, IDCertificate_UserErrorCode_KxdDeviceInfo, deviceType.GetData());
-					}
-				}
-			}
-		}
-	}
-}
-#endif
-
 BOOL CIDCertFSM::UCS2_to_UTF8(UINT16* ucs2_code, UINT8* utf8_code)
 {
 	UINT8* out = utf8_code;

+ 8 - 31
Module/mod_IDCertificate/IDCertFSM.h

@@ -206,22 +206,13 @@ public:
 		FSM_RULE_ENTRY(s5, s2, USER_EVT_INIT_FINISHED, 2)
 	END_FSM_RULE()
 
-#ifdef RVC_OS_LINUX
-		CIDCertFSM() :m_devInit(false), m_bCancelRead(false), m_bReading(false), m_bWaitReadMore(false),
-		m_bExit(false), m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect),m_csMachineType(""), m_csSite(""), m_terminalNo(""), m_devSN("")
-		, m_devVendor(""), m_devVer(""), m_devBatch(""){
-		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x201);
-		m_FirstStart = TRUE;
-		ZeroMemory(&m_adapterInfo, sizeof(m_adapterInfo));
-	};
-#else
-		CIDCertFSM():m_bCancelRead(false),m_bReading(false),m_bWaitReadMore(false),
-	m_bExit(false),m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect), m_csMachineType(""), m_csSite(""), m_terminalNo("")
-	,m_devVendor(""), m_devVer(""), m_devBatch(""), invalidBreak(false), m_logBefore(false), transImgMsg("")
+		CIDCertFSM() :m_bCancelRead(false), m_bReading(false), m_bWaitReadMore(false),
+		m_bExit(false), m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect), m_csMachineType(""), m_terminalNo(""), invalidBreak(false), m_logBefore(false), transImgMsg("")
 	{
+		ZeroMemory(&m_adapterInfo, sizeof(m_adapterInfo));
 		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x201);
 	};
-#endif // RVC_OS_LINUX
+
 	virtual ~CIDCertFSM() {};
 
 	virtual ErrorCodeEnum OnInit();
@@ -263,12 +254,8 @@ public:
 		pTransactionContext->SendAnswer(Error_Succeed);
 	}
 
-#ifdef RVC_OS_WIN
 	bool GetDevInitFlag() { return m_bOpened; }
 	void ResetDevInitFlag() { m_bOpened = false; }
-#else
-	bool GetDevInitFlag() { return m_devInit; }
-#endif
 
 	int Initial();
 	void SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext);
@@ -280,18 +267,9 @@ private:
 	ErrorCodeEnum GetPngBlobEx(CBlob &data, CSimpleStringA fileNamePrefix,bool bClear=false);
 	//type:1,delete img about zp; type:2,delete img about scan ID;type:3,delete both zp and scan ID
 	void DeleteZP(int type);
-	ErrorCodeEnum CheckDate(const char* date);
-	ErrorCodeEnum CheckDate(const char* startDate, const char* endDate);
-	void LogDate(IDCerInfo idInfo);
-	void LogDateEx(IDCerInfoEx idInfo);
 
 	//Delete bmp file in dep directory, you should just convey fileName only without paths -Joseph
 	ErrorCodeEnum DeleteFileIfExisted(LPCTSTR fileName);
-#ifdef RVC_OS_LINUX
-	bool GetAttachedTerminal(CSimpleStringA& csTerm);
-#else
-	void ToLogWarnInfoAboutTermCustom();
-#endif // RVC_OS_LINUX
 	BOOL UCS2_to_UTF8(UINT16* ucs2_code, UINT8* utf8_code);
 	BOOL GetSexUTF8String(UINT16* in, UINT8* out);
 	BOOL GetNationalUTF8String(UINT16* in, UINT8* out);
@@ -300,17 +278,15 @@ private:
 	int GetUCS2ByteLength(UINT16* ucs2_code);
 	void CheckHanZi(UINT16* ucs2_code);
 
+public:
+		std::string checkImgURL;
 private:
-#ifdef RVC_OS_LINUX
-	bool m_devInit;
-#endif
 	bool m_bCancelRead, m_bReading, m_bWaitReadMore, m_bExit;
 	ErrorCodeEnum m_testResult;
 	ErrorCodeEnum m_getDevCategory;
 	DevCategoryInfo m_devCatInfo;
 	DevStateEnum m_devState;
-	CSimpleStringA m_csMachineType, m_csSite, m_terminalNo;
-	CSimpleStringA m_devVendor, m_devVer, m_devBatch, m_devSN/*fwb SN*/;
+	CSimpleStringA m_csMachineType, m_terminalNo;
 	CSimpleStringA transImgMsg;
 #ifdef RVC_OS_WIN
 	unordered_map<int, wstring> nationalCode; 
@@ -321,6 +297,7 @@ private:
 	BOOL igestionVer; //吸入式设备
 	BOOL supportNewForeigner; //支持新版外国人永居证 2023.11.10
 	CSimpleStringA bkPicPath; //合成背景的图片路径
+	
 
 	BOOL closeImgCheck;
 

+ 25 - 26
Module/mod_IDCertificate/IDCertificate_UserErrorCode.h

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

+ 311 - 220
Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp

@@ -131,13 +131,30 @@ void GetCurUserName(CSimpleStringA& strUserName)
 static void GetUserDesktopDirectory(CSimpleStringA& outDir)
 {
 	LPITEMIDLIST lp;
-	SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, &lp);
-	CHAR lstr[128] = "";
-	SHGetPathFromIDList(lp, lstr);
-	outDir = lstr;
+    HRESULT hr = SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, &lp);
+    if (hr == S_OK) {
+		CHAR lstr[128] = "";
+		SHGetPathFromIDListA(lp, lstr);
+		outDir = lstr;
+    }
+    else {
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("SHGetSpecialFolderLocation failed:%d", hr);
+        outDir.Clear();
+    }
 	return;
 }
 
+bool IsDesktopIconExist() 
+{
+	CSimpleStringA s(true);
+	GetUserDesktopDirectory(s);
+    if (!s.IsNullOrEmpty()) {
+        s += "\\可视柜台.lnk";
+        return !!ExistsFileA(s);
+    }
+    return false;
+}
+
 void GetAutoStartFile(std::string& userDirPath, std::vector<std::string>& userDirFiles, std::string& pubDirPath, std::vector<std::string>& pubDirFiles)
 {
 	CSimpleStringA startMenuPublicPath(STARTUP_DIR_FULL_PATH);
@@ -203,7 +220,7 @@ private:
 ResourceWatcherFSM::ResourceWatcherFSM(void)
     :m_strTerminalNo(true),
     m_bFirstRunAfterBoot(FALSE),
-    m_cpuTop(0), flag4DeleteKeyAutoStartFile(false)
+    m_cpuTop(0), flag4DeleteKeyAutoStartFile(false), flag4DoAutoStartTaskIgnoreBoot(FALSE), m_skipDesktopDetect(FALSE)
 {
 #ifdef RVC_OS_WIN
     m_forceStartupWithExeFlag = 0;
@@ -452,8 +469,18 @@ ErrorCodeEnum ResourceWatcherFSM::OnInit()
     spCtSettingConfig->ReadConfigValueInt(m_pEntity->GetEntityName(), "DisplayCnt", m_iNonSignedDisplay);
     if (m_iNonSignedDisplay <= 0)
         m_iNonSignedDisplay = 10;
-
+    int nValue(0);
+    spCtSettingConfig->ReadConfigValueInt(m_pEntity->GetEntityName(), "DoAutoStartTaskFlag", nValue);
+    if (!!nValue) {
+        flag4DoAutoStartTaskIgnoreBoot = TRUE;
+    }
+    nValue = 0;
+    spCtSettingConfig->ReadConfigValueInt(m_pEntity->GetEntityName(), "SkipDetectDesktopIcon", nValue);
+    if (!!nValue) {
+        m_skipDesktopDetect = TRUE;
+    }
     spRunConfig->ReadConfigValueInt("WarnRecord", "disk", m_diskLastWarnHour);
+
     return Error_Succeed;
 }
 
@@ -468,43 +495,16 @@ ErrorCodeEnum ResourceWatcherFSM::OnExit()
 void ResourceWatcherFSM::AfterInit()
 {
 #if defined(RVC_OS_WIN)
-
+    
     if (m_bFirstRunAfterBoot) {
-		do
-		{
-			CSmartPointer<IConfigInfo> spCtSettingConfig;
-			GetEntityBase()->GetFunction()->OpenConfig(Config_CenterSetting, spCtSettingConfig);
-			CSimpleStringA strFileInterestSheet(true);
-			spCtSettingConfig->ReadConfigValue(GetEntityBase()->GetEntityName(), "AutoStartUserFileSheet", strFileInterestSheet);
-			if (!strFileInterestSheet.IsNullOrEmpty()) {
-				auto fileNames = strFileInterestSheet.Split('|');
-				if (fileNames.GetCount() > 0) {
-					for (int i = 0; i < fileNames.GetCount(); ++i) {
-						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("AutoStartUserFileSheet[%s]", fileNames[i].GetData());
-						keyUserlist.push_back(fileNames[i].GetData());
-					}
-				}
-			}
-			strFileInterestSheet.Clear();
-			spCtSettingConfig->ReadConfigValue(GetEntityBase()->GetEntityName(), "AutoStartPubFileSheet", strFileInterestSheet);
-			if (!strFileInterestSheet.IsNullOrEmpty()) {
-				auto fileNames = strFileInterestSheet.Split('|');
-				if (fileNames.GetCount() > 0) {
-					for (int i = 0; i < fileNames.GetCount(); ++i) {
-						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("AutoStartPubFileSheet[%s]", fileNames[i].GetData());
-						keyPublist.push_back(fileNames[i].GetData());
-					}
-				}
-			}
-			//int value(0);
-			//spConfig->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "DeleteCustomAutoStartFile", value);
-	  //      if (!!value) { 
-	  //          DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Get DeleteCustomAutoStartFile execute flag from CenterSettings");
-	  //          flag4DeleteKeyAutoStartFile = !!value;
-	  //      }
-		} while (false);
-		
-		ClearDesktopFileTask* task = new ClearDesktopFileTask(this);
+        InitCustomAutoStartFileSheet();
+        AggerateAutoStatTask* task = new AggerateAutoStatTask(this);
+		GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
+    }
+    else if(flag4DoAutoStartTaskIgnoreBoot){
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Do AutoStart Job from CenterSettings");
+		InitCustomAutoStartFileSheet();
+		AggerateAutoStatTask* task = new AggerateAutoStatTask(this);
 		GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
     }
 	DetectVersionHasChangedAndWarnCover();
@@ -1502,47 +1502,72 @@ ErrorCodeEnum ResourceWatcherFSM::GetBizLinks(
 }
 
 #ifdef _MSC_VER
-bool ResourceWatcherFSM::CreateLinkFile(const CSimpleStringA& szStartAppPath, const CSimpleStringA& szAddCmdLine,
+ErrorCodeEnum ResourceWatcherFSM::CreateLinkFile(const CSimpleStringA& szStartAppPath, const CSimpleStringA& szAddCmdLine,
     const CSimpleStringA& szDestLnkPath, const CSimpleStringA& szIconPath)
 {
     HRESULT hr = CoInitialize(NULL);
-    bool bRet = false;
+    ErrorCodeEnum result(Error_Unexpect);
     if (SUCCEEDED(hr))
     {
         IShellLink* pShellLink;
         hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pShellLink);
         if (SUCCEEDED(hr))
         {
-            pShellLink->SetPath(szStartAppPath);
-            string strTmp = szStartAppPath;
-            int nStart = strTmp.find_last_of("/\\");
-            pShellLink->SetWorkingDirectory(strTmp.substr(0, nStart).c_str());
-            pShellLink->SetArguments(szAddCmdLine);
-            if (szIconPath)
-            {
-                pShellLink->SetIconLocation(szIconPath, 0);
+            hr = pShellLink->SetPath(szStartAppPath);
+			if (SUCCEEDED(hr)) {
+				string strTmp = szStartAppPath;
+				int nStart = strTmp.find_last_of("/\\");
+				hr = pShellLink->SetWorkingDirectory(strTmp.substr(0, nStart).c_str());
+                if (SUCCEEDED(hr)) {
+                    hr = pShellLink->SetArguments(szAddCmdLine);
+					if (szIconPath)
+					{
+						hr = pShellLink->SetIconLocation(szIconPath, 0);
+                        if (!SUCCEEDED(hr)) {
+							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("SetIconLocation failed: %d", hr);
+                        }
+					}
+					IPersistFile* pPersistFile;
+					hr = pShellLink->QueryInterface(IID_IPersistFile, (void**)&pPersistFile);
+					if (SUCCEEDED(hr))
+					{
+						hr = pPersistFile->Save(CSimpleStringA2W(szDestLnkPath).GetData(), FALSE);
+						if (SUCCEEDED(hr))
+						{
+                            result = Error_Succeed;
+						}
+						else {
+							DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Save failed: %d", hr);
+						}
+						pPersistFile->Release();
+					}
+					else {
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("QueryInterface failed: %d", hr);
+					}
+				}
+				else {
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("SetWorkingDirectory failed: %d", hr);
+				}
             }
-            IPersistFile* pPersistFile;
-            hr = pShellLink->QueryInterface(IID_IPersistFile, (void**)&pPersistFile);
-            if (SUCCEEDED(hr))
-            {
-                hr = pPersistFile->Save(CSimpleStringA2W(szDestLnkPath).GetData(), FALSE);
-                if (SUCCEEDED(hr))
-                {
-                    bRet = true;
-                }
-                pPersistFile->Release();
+            else {
+                DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("SetPath failed: %d", hr);
             }
             pShellLink->Release();
         }
+        else {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("CoCreateInstance failed: %d", hr);
+        }
         CoUninitialize();
     }
-    return bRet;
+    else {
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("CoInitialize failed: %u", hr);
+    }
+    return result;
 }
 
-bool ResourceWatcherFSM::CreateLink(int nType, const CSimpleStringA& exePath)
+ErrorCodeEnum ResourceWatcherFSM::CreateLink(int nType, const CSimpleStringA& exePath)
 {
-    bool result(false);
+    ErrorCodeEnum result = Error_Unexpect;
 	CSimpleStringA icoPath;
 	ErrorCodeEnum Error = GetEntityBase()->GetFunction()->GetPath("Bin", icoPath);
 	icoPath = icoPath + "\\" + "VTM.ico";
@@ -1571,36 +1596,51 @@ bool ResourceWatcherFSM::CreateLink(int nType, const CSimpleStringA& exePath)
     if (nType == 0) {
 		CSimpleStringA s(true);
 		GetUserDesktopDirectory(s);
-		s += "\\可视柜台.lnk";
-		if (!(result = CreateLinkFile(exePath, "", s, icoPath))) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Create link file for DESKTOP fail");
+        if (!s.IsNullOrEmpty()) {
+			s += "\\可视柜台.lnk";
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to create %s", s.GetData());
+			if (Error_Succeed != (result = CreateLinkFile(exePath, "", s, icoPath))) {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Create link file for DESKTOP fail");
+			}
         }
     }
     else if (nType == 1) {
-		SHGetSpecialFolderLocation(0, CSIDL_PROGRAMS, &lp);
-		memset(lstr, 0, strlen(lstr));
-		SHGetPathFromIDList(lp, lstr);
-        CSimpleStringA s = lstr;
-		s += "\\可视柜台.lnk";
-		if (!(result = CreateLinkFile(exePath, "", s, icoPath)))
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Create link file for PROGRAMS fail");
+		HRESULT hr = SHGetSpecialFolderLocation(0, CSIDL_PROGRAMS, &lp);
+        if (SUCCEEDED(hr)) {
+			memset(lstr, 0, strlen(lstr));
+			SHGetPathFromIDListA(lp, lstr);
+			CSimpleStringA s = lstr;
+			s += "\\可视柜台.lnk";
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to create %s", s.GetData());
+			if (Error_Succeed != (result = CreateLinkFile(exePath, "", s, icoPath)))
+			{
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Create link file for PROGRAMS fail");
+			}
+		}
+		else {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("SHGetSpecialFolderLocation failed %d", hr);
 		}
     }
     else if (nType == 2) {
-		SHGetSpecialFolderLocation(0, CSIDL_STARTUP /*CSIDL_COMMON_STARTUP*/, &lp);
-		memset(lstr, 0, strlen(lstr));
-		SHGetPathFromIDList(lp, lstr);
-        CSimpleStringA s = lstr;
-        s += "\\";
-        s += STRATUP_FILENAME_FROM_SCRIPTS;
-		if (!(result = CreateLinkFile(exePath, "", s, icoPath)))
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Create link file for STARTUP fail");
-		}
+        HRESULT hr = SHGetSpecialFolderLocation(0, CSIDL_STARTUP /*CSIDL_COMMON_STARTUP*/, &lp);
+        if (SUCCEEDED(hr)) {
+			memset(lstr, 0, strlen(lstr));
+			SHGetPathFromIDListA(lp, lstr);
+			CSimpleStringA s = lstr;
+			s += "\\";
+			s += STRATUP_FILENAME_FROM_SCRIPTS;
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to create %s", s.GetData());
+			if (Error_Succeed != (result = CreateLinkFile(exePath, "", s, icoPath)))
+			{
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Create link file for STARTUP fail");
+			}
+        }
+        else {
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("SHGetSpecialFolderLocation failed %d", hr);
+        }
     }
     else {
-        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("cannot support link create type: %d", nType);
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("cannot support link create type: %d", nType);
     }
     return result;
 }
@@ -1731,7 +1771,7 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
 			rc = ChangeAutoStartupWithExe();
 			if (rc == Error_Succeed && (nStartupType == 3 || nStartupType == 4 || nStartupType == 5)) {
 				toDeleteAutoStartFile = true;
-                //这里不做DeleteDuplicateAutoStartFile清理,因为以前也没有问题
+                //这里不做清理,因为以前也没有问题
 			}
 		}
 		break;
@@ -1741,7 +1781,7 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
         }
         else if (nStartupType == 3 || nStartupType == 4 || nStartupType == 5) {
             toDeleteAutoStartFile = true;
-            //这里不做DeleteDuplicateAutoStartFile清理,因为可以自动的一个一个删除
+            //这里不做清理,因为可以自动的一个一个删除
         }
         break;
     case 4: //恢复VBS启动(防止EXE启动失败),几乎不会用到
@@ -1753,6 +1793,11 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
     {
         CSimpleStringA exePath(true);
         if (nStartupType == 1 || nStartupType == 2 || nStartupType == 3 || nStartupType == 5) {
+            if (!m_skipDesktopDetect && !IsDesktopIconExist()) {
+				LogWarn(Severity_Low, Error_InvalidState, LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_ABORT,
+					CSimpleStringA::Format("detect desktop icon is not exist, abort the op, old start type: %d", nStartupType));
+                break;
+            }
 			if (GetVTMExePath(exePath, true)) {
 				if (nStartupType == 1 || nStartupType == 2) {
 					//TODO: 如果出现修改注册表成功但是设置自启动图标失败的情况  [Gifur@202492]
@@ -1762,7 +1807,7 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
                     rc = Error_Succeed;
 				}
 				if (rc == Error_Succeed) {
-					rc = CreateLink(2, exePath) ? Error_Succeed : Error_Unexpect;
+					rc = CreateLink(2, exePath);
 					if (rc != Error_Succeed) {
 						LogWarn(Severity_Middle, Error_InvalidState, LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_FAILED,
 							CSimpleStringA::Format("Create autostart lnk failed, old start type: %d", nStartupType));
@@ -1770,6 +1815,7 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
 					else {
 						LogWarn(Severity_Low, Error_Debug, LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_SUCC,
 							CSimpleStringA::Format("Create autostart lnk succ, old start type: %d", nStartupType));
+                        if ((nStartupType == 3 || nStartupType == 5)) { toDeleteAutoStartFile = true; }
 						DeleteDuplicateAutoStartFile(true);
 					}
 				}
@@ -1784,9 +1830,13 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
 	{
 		CSimpleStringA exePath(true);
 		if ((nStartupType == 3 || nStartupType == 5)) {
+			if (!m_skipDesktopDetect && !IsDesktopIconExist()) {
+				LogWarn(Severity_Low, Error_InvalidState, LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_ABORT,
+                    CSimpleStringA::Format("detect desktop icon is not exist, abort the op, old start type: %d", nStartupType));
+				break;
+			}
 			if (GetVTMExePath(exePath, true)) {
-				rc = CreateLink(2, exePath) ? Error_Succeed : Error_Unexpect;
-				if (rc != Error_Succeed) {
+				if ((rc = CreateLink(2, exePath)) != Error_Succeed) {
 					LogWarn(Severity_Middle, Error_InvalidState, LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_FAILED,
 						CSimpleStringA::Format("Create autostart lnk failed, old start type: %d", nStartupType));
 				}
@@ -2001,20 +2051,13 @@ int ResourceWatcherFSM::InitialAutoStartupSetType()
     return ret;
 }
 
-void ResourceWatcherFSM::DeleteDuplicateAutoStartFile(bool forceDelete)
+void ResourceWatcherFSM::DeleteDuplicateAutoStartFile(bool toDeleteLastLegity)
 {
 	std::vector<std::string> userlist;
 	std::vector<std::string> publist;
 	std::string userPath(""), pubPath("");
-    bool toDelete = forceDelete;
-    if (!toDelete) {
-        toDelete = flag4DeleteKeyAutoStartFile;
-    }
-    if (!toDelete) {
-        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("do not delete interest auto start file");
-        return;
-    }
-
+	std::vector<std::string> autolist;
+	autolist.push_back(CMB_LINK_FILE_NAME);
 	GetAutoStartFile(userPath, userlist, pubPath, publist);
 	if (!keyPublist.empty() || !keyUserlist.empty()) {
 		for (auto it = userlist.cbegin(); keyUserlist.size() > 0 && it != userlist.cend(); ++it) {
@@ -2030,6 +2073,20 @@ void ResourceWatcherFSM::DeleteDuplicateAutoStartFile(bool forceDelete)
 					}
 				}
 			}
+            if (toDeleteLastLegity) {
+				for (auto kt = autolist.cbegin(); kt != autolist.cend(); ++kt) {
+					CSimpleStringA strfilename(it->c_str());
+					if (strfilename.Compare(kt->c_str()) == 0) {
+						CSimpleStringA fullStartFileNameFromScripts(userPath.c_str());
+						fullStartFileNameFromScripts += "\\";
+						fullStartFileNameFromScripts += strfilename;
+						if (ExistsFileA(fullStartFileNameFromScripts)) {
+							const auto r = DeleteFileA(fullStartFileNameFromScripts);
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Delete AutoStart from autolist File:[%s]", fullStartFileNameFromScripts);
+						}
+					}
+				}
+            }
 		}
 		for (auto it = publist.cbegin(); keyPublist.size() > 0 && it != publist.cend(); ++it) {
 			for (auto kt = keyPublist.cbegin(); kt != keyPublist.cend(); ++kt) {
@@ -2044,6 +2101,20 @@ void ResourceWatcherFSM::DeleteDuplicateAutoStartFile(bool forceDelete)
 					}
 				}
 			}
+            if (toDeleteLastLegity) {
+				for (auto kt = autolist.cbegin(); kt != autolist.cend(); ++kt) {
+					CSimpleStringA strfilename(it->c_str());
+					if (strfilename.Compare(kt->c_str()) == 0) {
+						CSimpleStringA fullStartFileNameFromScripts(pubPath.c_str());
+						fullStartFileNameFromScripts += "\\";
+						fullStartFileNameFromScripts += strfilename;
+						if (ExistsFileA(fullStartFileNameFromScripts)) {
+							const auto r = DeleteFileA(fullStartFileNameFromScripts);
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Delete AutoStart from autolist File:[%s]", fullStartFileNameFromScripts);
+						}
+					}
+				}
+            }
 		}
 	}
 }
@@ -2057,49 +2128,9 @@ BOOL ResourceWatcherFSM::IsHasSetAutoStartupByFolder(CSimpleStringA& strPath, in
 	std::vector<std::string> publist;
 	std::string userPath(""), pubPath("");
 	GetAutoStartFile(userPath, userlist, pubPath, publist);
-    for (auto it = publist.cbegin(); !result && it != publist.cend(); ++it) {
-        CSimpleStringA strfilename(it->c_str());
-        int tmpType = (strfilename.Compare(CMB_LINK_FILE_NAME) == 0 || (strfilename.IsStartWith("招商银行可视柜台") && strfilename.IsEndWith(".lnk"))) ? 0 : -1;
-        if (tmpType == -1 && strfilename.Compare(STRATUP_FILENAME_FROM_SCRIPTS) == 0) {
-            tmpType = 1;
-        }
-        if (tmpType >= 0) {
-			CSimpleStringA fullStartFileNameFromScripts(pubPath.c_str());
-			fullStartFileNameFromScripts += "\\";
-			fullStartFileNameFromScripts += strfilename;
-			if (ExistsFileA(fullStartFileNameFromScripts)) {
-				setType = tmpType;
-				strPath = fullStartFileNameFromScripts;
-				result = TRUE;
-                break;
-			}
-			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("[%d]file is not exist:%s", __LINE__, fullStartFileNameFromScripts.GetData());
-			}
-        }
-    }
-	for (auto it = userlist.cbegin(); !result && it != userlist.cend(); ++it) {
-		CSimpleStringA strfilename(it->c_str());
-		int tmpType = (strfilename.Compare(CMB_LINK_FILE_NAME) == 0 || (strfilename.IsStartWith("招商银行可视柜台") && strfilename.IsEndWith(".lnk"))) ? 0 : -1;
-		if (tmpType == -1 && strfilename.Compare(STRATUP_FILENAME_FROM_SCRIPTS) == 0) tmpType = 1;
-		if (tmpType >= 0) {
-			CSimpleStringA fullStartFileNameFromScripts(userPath.c_str());
-			fullStartFileNameFromScripts += "\\";
-			fullStartFileNameFromScripts += strfilename;
-			if (ExistsFileA(fullStartFileNameFromScripts)) {
-				setType = tmpType;
-				strPath = fullStartFileNameFromScripts;
-				result = TRUE;
-				break;
-			}
-			else {
-                DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("[%d]file is not exist:%s", __LINE__, fullStartFileNameFromScripts.GetData());
-			}
-		}
-	}
-    
-    if (!result && (!keyPublist.empty() || !keyUserlist.empty())) {
-        //检查是否由用户自定义的开机自启动快捷键
+
+    //检查是否由用户自定义的开机自启动快捷键
+	if (!result && (!keyPublist.empty() || !keyUserlist.empty())) {
 		for (auto it = userlist.cbegin(); !result && keyUserlist.size() > 0 && it != userlist.cend(); ++it) {
 			for (auto kt = keyUserlist.cbegin(); kt != keyUserlist.cend(); ++kt) {
 				CSimpleStringA strfilename(it->c_str());
@@ -2138,7 +2169,83 @@ BOOL ResourceWatcherFSM::IsHasSetAutoStartupByFolder(CSimpleStringA& strPath, in
 				}
 			}
 		}
+	}
+    if (!result) {
+        //检查是否旧安装向导安装的脚本
+		for (auto it = publist.cbegin(); !result && it != publist.cend(); ++it) {
+			CSimpleStringA strfilename(it->c_str());
+			const int tmpType = (strfilename.Compare(CMB_LINK_FILE_NAME) == 0 || (strfilename.IsStartWith("招商银行可视柜台") && strfilename.IsEndWith(".lnk"))) ? 0 : -1;
+			if (tmpType == 0) {
+				CSimpleStringA fullStartFileNameFromScripts(pubPath.c_str());
+				fullStartFileNameFromScripts += "\\";
+				fullStartFileNameFromScripts += strfilename;
+				if (ExistsFileA(fullStartFileNameFromScripts)) {
+					setType = tmpType;
+					strPath = fullStartFileNameFromScripts;
+					result = TRUE;
+					break;
+				}
+				else {
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("[%d]file is not exist:%s", __LINE__, fullStartFileNameFromScripts.GetData());
+				}
+			}
+		}
+		for (auto it = userlist.cbegin(); !result && it != userlist.cend(); ++it) {
+			CSimpleStringA strfilename(it->c_str());
+			const int tmpType = (strfilename.Compare(CMB_LINK_FILE_NAME) == 0 || (strfilename.IsStartWith("招商银行可视柜台") && strfilename.IsEndWith(".lnk"))) ? 0 : -1;
+			if (tmpType == 0) {
+				CSimpleStringA fullStartFileNameFromScripts(userPath.c_str());
+				fullStartFileNameFromScripts += "\\";
+				fullStartFileNameFromScripts += strfilename;
+				if (ExistsFileA(fullStartFileNameFromScripts)) {
+					setType = tmpType;
+					strPath = fullStartFileNameFromScripts;
+					result = TRUE;
+					break;
+				}
+				else {
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("[%d]file is not exist:%s", __LINE__, fullStartFileNameFromScripts.GetData());
+				}
+			}
+		}
     }
+	if (!result) {
+        //最终再检查是否由安装脚本执行的安装向导
+		for (auto it = publist.cbegin(); !result && it != publist.cend(); ++it) {
+			CSimpleStringA strfilename(it->c_str());
+			if (strfilename.Compare(STRATUP_FILENAME_FROM_SCRIPTS) == 0) {
+				CSimpleStringA fullStartFileNameFromScripts(pubPath.c_str());
+				fullStartFileNameFromScripts += "\\";
+				fullStartFileNameFromScripts += strfilename;
+				if (ExistsFileA(fullStartFileNameFromScripts)) {
+					setType = 1;
+					strPath = fullStartFileNameFromScripts;
+					result = TRUE;
+					break;
+				}
+				else {
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("[%d]file is not exist:%s", __LINE__, fullStartFileNameFromScripts.GetData());
+				}
+			}
+		}
+		for (auto it = userlist.cbegin(); !result && it != userlist.cend(); ++it) {
+			CSimpleStringA strfilename(it->c_str());
+			if (strfilename.Compare(STRATUP_FILENAME_FROM_SCRIPTS) == 0) {
+				CSimpleStringA fullStartFileNameFromScripts(userPath.c_str());
+				fullStartFileNameFromScripts += "\\";
+				fullStartFileNameFromScripts += strfilename;
+				if (ExistsFileA(fullStartFileNameFromScripts)) {
+					setType = 1;
+					strPath = fullStartFileNameFromScripts;
+					result = TRUE;
+					break;
+				}
+				else {
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("[%d]file is not exist:%s", __LINE__, fullStartFileNameFromScripts.GetData());
+				}
+			}
+		}
+	}
     return result;
 }
 
@@ -2419,7 +2526,6 @@ void ResourceWatcherFSM::MakeSureWin8IntoDesktopPageAtLogon()
 void ResourceWatcherFSM::DetectAutoStartFileAndWarn()
 {
     std::vector<std::string> userlist;
-
 	std::vector<std::string> publist;
     std::string r1, r2;
     GetAutoStartFile(r1, userlist, r2, publist);
@@ -2429,6 +2535,7 @@ void ResourceWatcherFSM::DetectAutoStartFileAndWarn()
 	std::string strUserAutoList = "";
 	std::string strPubAutoList = "";
     int userAutoCnt = 0, pubAutoCnt = 0;
+    int userAutoPureCnt = 0, pubAutoPureCnt = 0;
     int catchLegitCnt = 0;
     std::vector<std::string> autolist;
     autolist.push_back(CMB_LINK_FILE_NAME);
@@ -2443,6 +2550,7 @@ void ResourceWatcherFSM::DetectAutoStartFileAndWarn()
 				if (!strUserAutoList.empty()) { strUserAutoList += "|"; }
                 strUserAutoList += it->c_str();
                 userAutoCnt++;
+                userAutoPureCnt++;
                 break;
             }
         }
@@ -2465,6 +2573,7 @@ void ResourceWatcherFSM::DetectAutoStartFileAndWarn()
 				if (!strPubAutoList.empty()) { strPubAutoList += "|"; }
                 strPubAutoList += it->c_str();
                 pubAutoCnt++;
+                pubAutoPureCnt++;
                 break;
 			}
 		}
@@ -2487,6 +2596,11 @@ void ResourceWatcherFSM::DetectAutoStartFileAndWarn()
 			, CSimpleStringA::Format("{\"subject\":\"duplicate_vtm_autostart_file\", \"user_count\":%d, \"pub_count\":%d, \"user\":\"%s\",\"public\":\"%s\", \"legal_count\":%d, \"delete_flag\":%d}"
 				, userAutoCnt, pubAutoCnt, strUserAutoList.c_str(), strPubAutoList.c_str(), catchLegitCnt, flag4DeleteKeyAutoStartFile));
     }
+
+    if (catchLegitCnt > 0 && flag4DeleteKeyAutoStartFile && (pubAutoPureCnt > 0 || userAutoPureCnt > 0)) {
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to delete duplicate auto start file.");
+        DeleteDuplicateAutoStartFile();
+    }
 }
 
 ErrorCodeEnum ResourceWatcherFSM::DetectVTMInstalledBySetup(BOOL& fYes)
@@ -2688,11 +2802,9 @@ bool ResourceWatcherFSM::RegOperation4LnkFile()
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("RegWtVtmVersion failed.");
 		}
     }
-    CSimpleStringA s(true);
-    GetUserDesktopDirectory(s);
-	s += "\\可视柜台.lnk";
-    if (bRet && !ExistsFileA(s)) {
-        bRet = CreateLink(0, exePath);
+    if (bRet && !IsDesktopIconExist()) {
+        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to create desktop application lnk");
+        bRet = (CreateLink(0, exePath) == Error_Succeed);
     }
     return bRet;
 }
@@ -3415,7 +3527,6 @@ void ResourceWatcherFSM::CheckDiskFileSpace()
     }
 }
 
-
 void ResourceWatcherFSM::GetSystemDiskStatus()
 {
     if (m_diskHighPercent <= 0)
@@ -3653,7 +3764,7 @@ void ResourceWatcherFSM::GetSystemCPUStatus()
     if (cpuRatio > (double)m_cpuHighPercent)
     {
         cpuWarnTime = cpuWarnTime % cpuWarnThreshold;   
-        if (cpuWarnThreshold == 0) //每达到一次阈值告警一次
+        if (cpuWarnTime == 0) //每达到一次阈值告警一次
         {
             CSimpleStringA warn = CSimpleStringA::Format("{\"type\":\"cpu\", \"total_used\":\" %.2f", cpuRatio);
             warn = warn + "%\"" + procWarn + "}";
@@ -3679,7 +3790,6 @@ unsigned long long convert_time_format(const FILETIME* ftime)
     return li.QuadPart;
 }
 
-
 /// 时间转换
 static uint64_t file_time_2_utc(const FILETIME* ftime)
 {
@@ -3852,72 +3962,6 @@ void ResourceWatcherFSM::GetSystemMemoryStatus()
     }
 }
 
-int ResourceWatcherFSM::IsWifiConnected()
-{
-    DWORD service_ver;
-    HANDLE handle = NULL;
-    int result = -1;
-
-    DWORD err = WlanOpenHandle(WLAN_API_VERSION, NULL, &service_ver, &handle);
-    if (err != 0) {
-        DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("open wlan handle failed %d", err);
-        return result;
-    }
-
-    PWLAN_INTERFACE_INFO_LIST info_list = NULL;
-    PWLAN_INTERFACE_INFO interface_info = NULL;
-    err = WlanEnumInterfaces(handle, NULL, &info_list);
-    if (err != ERROR_SUCCESS) {
-        DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Enum wlan interface failed %d", err);
-        WlanCloseHandle(handle, NULL);
-        return -1;
-    }
-
-    const int count = info_list->dwNumberOfItems;
-
-    for (int i = 0; i < count; ++i) {
-        interface_info = &info_list->InterfaceInfo[i];
-        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("wireless interface name:  %s", SP::Module::Util::W2S(interface_info->strInterfaceDescription).c_str());
-        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("state:  %d", interface_info->isState);
-        if (interface_info->isState == wlan_interface_state_connected) {
-            result = 1;
-        }
-        DWORD radio_state_info_size = sizeof(WLAN_RADIO_STATE);
-        PWLAN_RADIO_STATE radio_state_info_ptr = NULL;
-        WLAN_OPCODE_VALUE_TYPE op_code = wlan_opcode_value_type_invalid;
-        err = WlanQueryInterface(handle, &interface_info->InterfaceGuid, wlan_intf_opcode_radio_state,
-            NULL, &radio_state_info_size, (PVOID*)&radio_state_info_ptr, &op_code);
-        if (err != ERROR_SUCCESS) {
-            DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("WlanQueryInterface failed %d", err);
-        }
-        else
-        {
-            const uint32_t count_of_phys = radio_state_info_ptr->dwNumberOfPhys;
-            //DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Number of valid PHYs: %d", count_of_phys);
-            if (count_of_phys > 0 && result == -1) {
-                if (dot11_radio_state_on == radio_state_info_ptr->PhyRadioState[0].dot11SoftwareRadioState) {
-                    result = 0;
-                }
-                else
-                {
-                    /*
-                    for (int j = 0; j < count_of_phys; ++j) {
-                        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("software radio state: %d, %d", j , radio_state_info_ptr->PhyRadioState[j].dot11SoftwareRadioState);
-                        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("hardware radio state: %d, %d", j, radio_state_info_ptr->PhyRadioState[j].dot11HardwareRadioState);
-                        DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("**********************");
-                    }
-                    */
-                }
-            }
-        }
-    }
-    if (info_list != NULL) {
-        WlanFreeMemory(info_list);
-    }
-    WlanCloseHandle(handle, NULL);
-    return result;
-}
-
 void ResourceWatcherFSM::DetectWallpaperAndWarn()
 {
 	DWORD dwFlag = KEY_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS;
@@ -4036,6 +4080,53 @@ void ResourceWatcherFSM::DetectWallpaperAndWarn()
 	}
 }
 
+void ResourceWatcherFSM::InitCustomAutoStartFileSheet()
+{
+	CSmartPointer<IConfigInfo> spCtSettingConfig;
+	GetEntityBase()->GetFunction()->OpenConfig(Config_CenterSetting, spCtSettingConfig);
+	CSimpleStringA strFileInterestSheet(true);
+	spCtSettingConfig->ReadConfigValue(GetEntityBase()->GetEntityName(), "AutoStartUserFileSheet", strFileInterestSheet);
+	if (!strFileInterestSheet.IsNullOrEmpty()) {
+		auto fileNames = strFileInterestSheet.Split('|');
+		if (fileNames.GetCount() > 0) {
+			for (int i = 0; i < fileNames.GetCount(); ++i) {
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("AutoStartUserFileSheet[%s]", fileNames[i].GetData());
+				keyUserlist.push_back(fileNames[i].GetData());
+			}
+		}
+	}
+	strFileInterestSheet.Clear();
+	spCtSettingConfig->ReadConfigValue(GetEntityBase()->GetEntityName(), "AutoStartPubFileSheet", strFileInterestSheet);
+	if (!strFileInterestSheet.IsNullOrEmpty()) {
+		auto fileNames = strFileInterestSheet.Split('|');
+		if (fileNames.GetCount() > 0) {
+			for (int i = 0; i < fileNames.GetCount(); ++i) {
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("AutoStartPubFileSheet[%s]", fileNames[i].GetData());
+				keyPublist.push_back(fileNames[i].GetData());
+			}
+		}
+	}
+	int value(0);
+    spCtSettingConfig->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "DeleteCustomAutoStartFile", value);
+	if (!!value) {
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Get DeleteCustomAutoStartFile execute flag from CenterSettings");
+		flag4DeleteKeyAutoStartFile = !!value;
+	}
+  //  if (flag4DeleteKeyAutoStartFile) {
+		//strFileInterestSheet.Clear();
+		//spCtSettingConfig->ReadConfigValue(GetEntityBase()->GetEntityName(), "DeleteAutoStartFileSheet", strFileInterestSheet);
+		//if (!strFileInterestSheet.IsNullOrEmpty()) {
+		//	auto fileNames = strFileInterestSheet.Split('|');
+		//	if (fileNames.GetCount() > 0) {
+		//		for (int i = 0; i < fileNames.GetCount(); ++i) {
+		//			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("DeleteAutoStartFileSheet[%s]", fileNames[i].GetData());
+  //                  delKeylist.push_back(fileNames[i].GetData());
+		//		}
+		//	}
+		//}
+  //  }
+}
+
 #endif // _MSC_VER end硬件资源监控相关系统功能 CPU、内存、硬盘、网络wifi
 
 #ifdef RVC_OS_LINUX

+ 10 - 7
Module/mod_ResourceWatcher/ResourceWatcherFSM.h

@@ -227,6 +227,7 @@ private:
     BOOL m_bFirstRunAfterBoot;
 
 	int m_diskLastWarnHour;
+	BOOL m_skipDesktopDetect;
 
 #ifdef RVC_OS_WIN
 	bool m_DoneDetectAutostart;
@@ -257,8 +258,9 @@ private:
 
 	std::vector<std::string> keyUserlist;
 	std::vector<std::string> keyPublist;
+	//std::vector<std::string> delKeylist;
 	BOOL flag4DeleteKeyAutoStartFile;
-
+	BOOL flag4DoAutoStartTaskIgnoreBoot;
 public:
 	void CheckDiskFileSpace();
 
@@ -325,8 +327,8 @@ public:
 	bool RegWtVtmPath(const CSimpleStringA& vtmExtPath, const CSimpleStringA& rootPath);
 	bool RegWtVtmVersion(const CSimpleStringA& vtmVer);
 	//nType: 0 桌面,1 开始菜单,2 启动列表
-	bool CreateLink(int nType, const CSimpleStringA& exePath);
-	bool CreateLinkFile(const CSimpleStringA& szStartAppPath, const CSimpleStringA& szAddCmdLine,
+	ErrorCodeEnum CreateLink(int nType, const CSimpleStringA& exePath);
+	ErrorCodeEnum CreateLinkFile(const CSimpleStringA& szStartAppPath, const CSimpleStringA& szAddCmdLine,
 		const CSimpleStringA& szDestLnkPath, const CSimpleStringA& szIconPath);
 	bool GetVtmVersionFromActiveTxt(CSimpleStringA& csVersion);
 	bool UpdateExe();
@@ -345,7 +347,7 @@ public:
 	int DetectAutoStartupType(CSimpleStringA& strValue);
 	ErrorCodeEnum ChangeAutoStartupWithExe(bool resetVBS = false, bool resetExplorer = false);
 	int InitialAutoStartupSetType();
-	void DeleteDuplicateAutoStartFile(bool forceDelete = false);
+	void DeleteDuplicateAutoStartFile(bool toDeleteLastLegity = false);
 	//0:startmenu lnk from RVCTermimalApplicationSetup
 	//1:startmenu lnk from install scripts
 	//2:startmenu lnk from user customization
@@ -373,8 +375,9 @@ public:
 	bool VerifyFirstCertificate(HCERTSTORE hStore, PCMSG_SIGNER_INFO pSignerInfo);
 	bool VerifyOtherCertificate(PCMSG_SIGNER_INFO pSignerInfo);
 
-	int IsWifiConnected();
 	void DetectWallpaperAndWarn();
+
+	void InitCustomAutoStartFileSheet();
 #endif // RVC_OS_LINUX
 
 	void AlarmSystemBasicInfo();
@@ -430,10 +433,10 @@ struct VerifyDigitSignTask : public ITaskSp
 	}
 };
 
-struct ClearDesktopFileTask : public ITaskSp
+struct AggerateAutoStatTask : public ITaskSp
 {
 	ResourceWatcherFSM* m_pFSM;
-	ClearDesktopFileTask(ResourceWatcherFSM* pFSM) : m_pFSM(pFSM) {}
+	AggerateAutoStatTask(ResourceWatcherFSM* pFSM) : m_pFSM(pFSM) {}
 	void Process()
 	{
 		m_pFSM->DetectWallpaperAndWarn();

+ 1 - 1
Module/mod_ResourceWatcher/ResourceWatcher_UserCode.h

@@ -67,7 +67,7 @@
 #define LOG_WARN_CREATE_EXELINK_FROMDESKTOP_FAILED 0x50A0004C //设置桌面图标失败
 #define LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_SUCC 0x50A0004D //设置自启动应用图标成功
 #define LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_FAILED 0x50A0004E //设置自启动应用图标失败
-
+#define LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_ABORT 0x50A0004F //条件不具备(设置快捷键图标失败),不允许执行设置
 
 
 #define LOG_WARN_GET_FILE_CONTENT 0x50A00050

+ 0 - 2
Module/mod_UpgradeMgr/mod_UpgradeMgr.cpp

@@ -209,8 +209,6 @@ void CUpgradeMgrEntity::OnSelfTest(EntityTestEnum eTestType,CSmartPointer<ITrans
 
 void CUpgradeMgrEntity::OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
 {
-	GetFunction()->UnsubscribeBroadcast("Download");
-	GetFunction()->UnsubscribeBroadcast("UpgradeRun");
 	pTransactionContext->SendAnswer(Error_Succeed); 
 }
 

+ 10 - 10
Module/mod_accessauth/AccessAuthFSM.cpp

@@ -883,15 +883,15 @@ DWORD CAccessAuthFSM::HandleTimeSyn(long nTimeDiff, BYTE* nSessionKey)
 #else
 		if (set_system_time_by_sec(nTimeDiff)) {
 #endif // RVC_OS_WIN
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sync time with server succeed, server time: [%s]", (const char*)dtServerTime.ToTimeString());
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sync time with server succeed, server time: [%s]", dtServerTime.ToTimeString().GetData());
 			LogWarn(Severity_Low, Error_Debug, AccessAuthorization_UserErrorCode_Sync_Time_Succ,
 				CSimpleStringA::Format("sync time succ:  server time: [%s],diff[%ld],threshold:[%d]", 
-					(const char*)dtServerTime.ToTimeString(), nTimeDiff, m_torelateDiffSyncTimeSecs));
+					dtServerTime.ToTimeString().GetData(), nTimeDiff, m_torelateDiffSyncTimeSecs));
 		}
 		else {
 			LogWarn(Severity_Middle, Error_Unexpect, AccessAuthorization_UserErrorCode_Sync_Time_Failed,
 				CSimpleStringA::Format("sync time failed:  server time: [%s],diff[%ld],threshold:[%d](GLE=%u)",
-					(const char*)dtServerTime.ToTimeString(), nTimeDiff, m_torelateDiffSyncTimeSecs, GetLastError()));
+					dtServerTime.ToTimeString().GetData(), nTimeDiff, m_torelateDiffSyncTimeSecs, GetLastError()));
 			return ERR_ACCESSAUTH_SET_LOCALE_TIME;
 		}
 	} 
@@ -1001,7 +1001,7 @@ DWORD CAccessAuthFSM::GetEncTerminalInfo(CBlob& encInfo)
 	CSimpleStringA strPinPadID = "", strDeviceID = "";
 	bool isPinPadMac = false, bPinPadOnline = false;
 	int nRet = ((CAccessAuthEntity*)m_pEntity)->GetPinPadIDAndDeviceID(strPinPadID, strDeviceID, isPinPadMac, bPinPadOnline);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetPinPadIDAndDeviceID ret: %d, PinPadID: %s, DeviceID: %s", nRet, (const char*)strPinPadID, (const char*)strDeviceID);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetPinPadIDAndDeviceID ret: %d, PinPadID: %s, DeviceID: %s", nRet, strPinPadID.GetData(), strDeviceID.GetData());
 	if (nRet == 2 || nRet == 3) {
 		strncpy(pInfo->szPadDeviceID, (const char*)strDeviceID, sizeof(pInfo->szPadDeviceID) - 1);
 	}
@@ -1062,9 +1062,9 @@ DWORD CAccessAuthFSM::GetEncTerminalInfo(CBlob& encInfo)
 	DWORD rc = m_pEntity->GetFunction()->GetSysVar("TerminalStage", ts);
 	if (rc != Error_Succeed) 
 	{
-		doWarnMsg(ERR_ACCESSAUTH_GET_SYS_VAR,
-			GetOutPutStr("%s%08X%s%s", "GetSysVar", rc, "TerminalStage", ts).c_str());
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(GetOutPutStr("%s%08X%s%s", "GetSysVar", rc, "TerminalStage", ts).c_str());
+		string outStr = GetOutPutStr("%s%08X%s%s", "GetSysVar", rc, "TerminalStage", ts.GetData());
+		doWarnMsg(ERR_ACCESSAUTH_GET_SYS_VAR, outStr.c_str());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(outStr.c_str());
 		return ERR_ACCESSAUTH_GET_SYS_VAR;
 	}
 	assert(ts.GetLength() >= 1);
@@ -1074,9 +1074,9 @@ DWORD CAccessAuthFSM::GetEncTerminalInfo(CBlob& encInfo)
 	rc = m_pEntity->GetFunction()->GetSysVar("RunState", rs);
 	if (rc != Error_Succeed) 
 	{
-		doWarnMsg(ERR_ACCESSAUTH_GET_SYS_VAR,
-			GetOutPutStr("%s%08X%s%s", "GetSysVar", rc, "RunState", rs).c_str());
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(GetOutPutStr("%s%08X%s%s", "GetSysVar", rc, "RunState", ts).c_str());
+		string outStr = GetOutPutStr("%s%08X%s%s", "GetSysVar", rc, "RunState", rs.GetData());
+		doWarnMsg(ERR_ACCESSAUTH_GET_SYS_VAR, outStr.c_str());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(outStr.c_str());
 		return ERR_ACCESSAUTH_GET_SYS_VAR;
 	}
 	assert(rs.GetLength() >= 1);

+ 25 - 25
Module/mod_accessauth/mod_AccessAuth.cpp

@@ -359,12 +359,12 @@ DWORD CAccessAuthEntity::SaveSM2KeyPair(const CBlob &pubKey, const CBlob &priKey
 	if (rc != Error_Succeed)
 	{
 		strErrMsg = "连接令牌管理实体失败";
-		SetAuthErrMsg((const char *)strErrMsg);
+		SetAuthErrMsg(strErrMsg.GetData());
 		rc = ERR_ACCESSAUTH_CONNECT_TOKEN_SERVICE;
 		m_FSM.doWarnMsg(rc,
 			"连接令牌管理实体失败", true);
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5206")
-			(GetOutPutStr("%s%08X%s%s", "Connect", rc, "strErrMsg", strErrMsg).c_str());
+			(GetOutPutStr("%s%08X%s%s", "Connect", rc, "strErrMsg", strErrMsg.GetData()).c_str());
 		pTokenServiceClient->SafeDelete();
 	}
 	else
@@ -378,12 +378,12 @@ DWORD CAccessAuthEntity::SaveSM2KeyPair(const CBlob &pubKey, const CBlob &priKey
 		if (rc != Error_Succeed)
 		{
 			strErrMsg = "保存密钥对失败";
-			SetAuthErrMsg((const char *)strErrMsg);
+			SetAuthErrMsg(strErrMsg.GetData());
 			rc = ERR_ACCESSAUTH_FROM_TOKEN_SERVICE_SET_KEYS;
 			m_FSM.doWarnMsg(rc,
 				"保存密钥对失败", true);
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5207")
-				(GetOutPutStr("%s%08X%s%s", "SetKeyPair", rc, "strErrMsg", (const char*)strErrMsg).c_str());
+				(GetOutPutStr("%s%08X%s%s", "SetKeyPair", rc, "strErrMsg", strErrMsg.GetData()).c_str());
 		}
 	}
 
@@ -402,11 +402,11 @@ ErrorCodeEnum CAccessAuthEntity::SaveTokenAndSharedSK(const CBlob &token, const
 	if (rc != Error_Succeed)
 	{
 		strErrMsg = "连接令牌管理实体失败";
-		SetAuthErrMsg((const char *)strErrMsg);		
+		SetAuthErrMsg(strErrMsg.GetData());		
 
-		m_FSM.doWarnMsg(ERR_ACCESSAUTH_CONNECT_TOKEN_SERVICE,
-			GetOutPutStr("%s%08X%s%s", "Connect", rc,"strErrMsg", (const char*)strErrMsg).c_str());
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(GetOutPutStr("%s%08X%s%s", "Connect", rc, "strErrMsg", (const char*)strErrMsg).c_str());
+		string outStr = GetOutPutStr("%s%08X%s%s", "Connect", rc, "strErrMsg", strErrMsg.GetData());
+		m_FSM.doWarnMsg(ERR_ACCESSAUTH_CONNECT_TOKEN_SERVICE, outStr.c_str());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(outStr.c_str());
 		pTokenServiceClient->SafeDelete();
 	}
 	else
@@ -421,11 +421,11 @@ ErrorCodeEnum CAccessAuthEntity::SaveTokenAndSharedSK(const CBlob &token, const
 		else
 		{
 			strErrMsg = "保存令牌失败";
-			SetAuthErrMsg((const char *)strErrMsg);
+			SetAuthErrMsg(strErrMsg.GetData());
 
-			m_FSM.doWarnMsg(ERR_ACCESSAUTH_FROM_TOKEN_SERVICE_SET_TOKEN,
-				GetOutPutStr("%s%08X%s%s", "SetToken", rc,"strErrMsg", strErrMsg).c_str());
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(GetOutPutStr("%s%08X%s%s", "SetToken", rc, "strErrMsg", strErrMsg).c_str());
+			string outStr = GetOutPutStr("%s%08X%s%s", "SetToken", rc, "strErrMsg", strErrMsg.GetData());
+			m_FSM.doWarnMsg(ERR_ACCESSAUTH_FROM_TOKEN_SERVICE_SET_TOKEN, outStr.c_str());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(outStr.c_str());
 		}
 
 		TokenService_SetSharedSK_Req req2 = {};
@@ -435,11 +435,11 @@ ErrorCodeEnum CAccessAuthEntity::SaveTokenAndSharedSK(const CBlob &token, const
 		if (rc != Error_Succeed)
 		{
 			strErrMsg = "保存会话密钥失败";
-			SetAuthErrMsg((const char *)strErrMsg);
+			SetAuthErrMsg(strErrMsg.GetData());
 
-			m_FSM.doWarnMsg(ERR_ACCESSAUTH_FROM_TOKEN_SERVICE_SET_SHAREKEY,
-				GetOutPutStr("%s%08X%s%s", "SetSharedSK", rc,"strErrMsg", (const char*)strErrMsg).c_str());
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(GetOutPutStr("%s%08X%s%s", "SetSharedSK", rc, "strErrMsg", (const char*)strErrMsg).c_str());
+			string outStr = GetOutPutStr("%s%08X%s%s", "SetSharedSK", rc, "strErrMsg", strErrMsg.GetData());
+			m_FSM.doWarnMsg(ERR_ACCESSAUTH_FROM_TOKEN_SERVICE_SET_SHAREKEY, outStr.c_str());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(outStr.c_str());
 		}
 		pTokenServiceClient->GetFunction()->CloseSession();
 	}
@@ -453,7 +453,7 @@ bool CAccessAuthEntity::HasPinPad()
 	//oilyang@20210514 
 	if (!IsMachineTypeConfigurePinPad(m_info.strMachineType))
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MachineType[%s], not exist pinpad", m_info.strMachineType);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MachineType[%s], not exist pinpad", m_info.strMachineType.GetData());
 		return false;
 	}
 	else
@@ -920,7 +920,7 @@ int CAccessAuthEntity::GetPinPadIDAndDeviceID(CSimpleStringA &strPinPadID, CSimp
 		{
 			bPinPadOnline = true;
 			nRet = 0;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("pinpad model: %s", (const char*)ans.model);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("pinpad model: %s", ans.model.GetData());
 
 			// CM = V2.0#PM = V1.0#MID = 75500001#PID = 12345678#FWID = V1234567#Vendor = nantian
 			// 密码键盘ID,PID,8到16字节;  设备ID,MID,8到16字节;  固件版本号,FWID,8字节
@@ -963,7 +963,7 @@ int CAccessAuthEntity::GetPinPadIDAndDeviceID(CSimpleStringA &strPinPadID, CSimp
 						else if (!strnicmp((LPCTSTR)arr2[0], "FWBID", strlen("FWBID")))
 						{
 							strBluetoothID = arr2[1];
-							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("strBluetoothID=%s", strBluetoothID);
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("strBluetoothID=%s", strBluetoothID.GetData());
 							if (!strBluetoothID.IsNullOrEmpty())
 								bBluetooth = true;
 						}
@@ -983,11 +983,11 @@ int CAccessAuthEntity::GetPinPadIDAndDeviceID(CSimpleStringA &strPinPadID, CSimp
 			if (!HasPinPad())
 				isPinPadMac = false;
 			strErrMsg = "调用PinPad实体的GetDevInfo方法失败";
-			SetAuthErrMsg((const char*)strErrMsg);
-			m_FSM.doWarnMsg(ERR_ACCESSAUTH_FROM_PINPAD,
-				GetOutPutStr("%s%08X%s%s", "GetDevInfo", rc, "strErrMsg", (const char*)strErrMsg).c_str());
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5205")
-				(GetOutPutStr("%s%08X%s%s", "GetDevInfo", rc, "strErrMsg", (const char*)strErrMsg).c_str());
+			SetAuthErrMsg(strErrMsg.GetData());
+
+			string outStr = GetOutPutStr("%s%08X%s%s", "GetDevInfo", rc, "strErrMsg", strErrMsg.GetData());
+			m_FSM.doWarnMsg(ERR_ACCESSAUTH_FROM_PINPAD, outStr.c_str());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5205")(outStr.c_str());
 			
 			return nRet; //此时nRet = -1, pinpad调用失败
 		}
@@ -1251,7 +1251,7 @@ bool CAccessAuthEntity::SendInitMKReqACS(CInitlizerMKReq& initMKReq)
 	CSimpleStringA strPinPadID = "", strDeviceID = "";
 	bool isPinPadMac, bPinPadOnline;
 	int nRet = GetPinPadIDAndDeviceID(strPinPadID, strDeviceID, isPinPadMac, bPinPadOnline);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetPinPadIDAndDeviceID ret: %d, PinPadID: %s, DeviceID: %s", nRet, (const char*)strPinPadID, (const char*)strDeviceID);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetPinPadIDAndDeviceID ret: %d, PinPadID: %s, DeviceID: %s", nRet, strPinPadID.GetData(), strDeviceID.GetData());
 
 	if (nRet < 0)
 	{

+ 29 - 11
Module/mod_chromium/CModTools.cpp

@@ -261,10 +261,14 @@ namespace Chromium {
         this->m_pEntity->GetFunction()->GetPath("Temp", cachePath);
         cachePath.Append(CSimpleStringA(SPLIT_SLASH_STR)).Append("cefCache_").Append(m_strCacheHead.length() > 0 ? m_strCacheHead.c_str() : "").Append(errType._to_string());
 		errPageUrl.Append(" --cache-path=").Append(cachePath);
+        if (g_useMagic)
+			errPageUrl.Append(" --magic-str=").Append(m_magicStr.c_str());
 		if (g_withMedia)
 			errPageUrl.Append(" --enable-media-stream=1 --enable-speech-input=1");
 		if (g_withConsole)
 			errPageUrl.Append(" --with-console");
+		if(g_sogouForce != 0)
+			errPageUrl.Append(" --adapt-sogou=").Append(std::to_string(g_sogouForce).c_str());
 		errPageUrl.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver").Append(" --always-on-top");
 
         switch (errType) {
@@ -478,12 +482,17 @@ namespace Chromium {
         this->m_pEntity->GetFunction()->GetPath("Temp", cachePath);
         cachePath.Append(CSimpleStringA(SPLIT_SLASH_STR)).Append("cefCache_").Append(m_strCacheHead.length() > 0 ? m_strCacheHead.c_str() : "").Append((+ERR_PAGE_REASON::Ad)._to_string());
         strCmdLine.Append(" --cache-path=").Append(cachePath);
+        if (g_useMagic)
+            strCmdLine.Append(" --magic-str=").Append(m_magicStr.c_str());
 		if (g_withMedia)
 			strCmdLine.Append(" --enable-media-stream=1 --enable-speech-input=1");
 		if (g_withConsole)
 			strCmdLine.Append(" --with-console");
+		if (g_sogouForce != 0)
+			strCmdLine.Append(" --adapt-sogou=").Append(std::to_string(g_sogouForce).c_str());
         strCmdLine.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver");
         strCmdLine.Append(" --logextend=").Append((+PAGE_TYPE::Ad)._to_string());
+        strCmdLine.Append(" --top=-1");
         strCmdLine.Append(" --run-extend");
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("cmdline : %s", strCmdLine.GetData());
         return strCmdLine.GetData();
@@ -505,11 +514,15 @@ namespace Chromium {
             .Append(isExtend ? (+ERR_PAGE_REASON::extend)._to_string() : (+ERR_PAGE_REASON::main)._to_string());
         //strCmdLine.Append(" --hide-controls=true")
         strCmdLine.Append(" --cache-path=").Append(cachePath);
-        strCmdLine.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver");
+        strCmdLine.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver --hide-tabs");
+		if (g_useMagic)
+            strCmdLine.Append(" --magic-str=").Append(m_magicStr.c_str());
 		if (g_withMedia)
 			strCmdLine.Append(" --enable-media-stream=1 --enable-speech-input=1");
 		if (g_withConsole)
 			strCmdLine.Append(" --with-console");
+		if (g_sogouForce != 0)
+			strCmdLine.Append(" --adapt-sogou=").Append(std::to_string(g_sogouForce).c_str());
         if (m_withDebugMode)
             strCmdLine.Append(" --remote-debugging-port=9222");
         if (isExtend) {
@@ -542,7 +555,7 @@ namespace Chromium {
 		this->m_pEntity->GetFunction()->GetPath("Temp", cachePath);
 		cachePath.Append(CSimpleStringA(SPLIT_SLASH_STR)).Append("cefCache_").Append(m_strCacheHead.length() > 0 ? m_strCacheHead.c_str() : "").Append((+ERR_PAGE_REASON::Ad)._to_string());
 		strCmdLine.Append(" --cache-path=").Append(cachePath);
-		strCmdLine.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver");
+		strCmdLine.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver --hide-tabs");
 		strCmdLine.Append(" --lang=zh-CN");//install page need language chinese
 		strCmdLine.Append(" --logextend=").Append((+PAGE_TYPE::Install)._to_string());
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("cmdline : %s", strCmdLine.GetData());
@@ -648,18 +661,19 @@ namespace Chromium {
 		CSimpleStringA strChromiumPath = GetCefHead(this->m_pEntity), strCmdLine = "";
 		strCmdLine.Append(strChromiumPath).Append(" --url=").Append(url.c_str());
 		if (width > 0 && height > 0)
-			strCmdLine.Append(" --window-size=").Append(std::to_string(width).c_str()).Append(",").Append(std::to_string(height).c_str());
+			strCmdLine.Append(" --center-size=").Append(std::to_string(width).c_str()).Append("*").Append(std::to_string(height).c_str());
 		if (point_x != -1 && point_y != -1)
 		{
-			strCmdLine.Append(" --window-position=").Append(std::to_string(point_x).c_str()).Append(",").Append(std::to_string(point_y).c_str());
+			strCmdLine.Append(" --src-pos=").Append(std::to_string(point_x).c_str()).Append("*").Append(std::to_string(point_y).c_str());
 		}
 		CSimpleStringA cachePath;
 		this->m_pEntity->GetFunction()->GetPath("Temp", cachePath);
 		cachePath.Append(CSimpleStringA(SPLIT_SLASH_STR)).Append("cefCache_").Append(m_strCacheHead.length() > 0 ? m_strCacheHead.c_str() : "").Append(name.c_str());
 		strCmdLine.Append(" --cache-path=").Append(cachePath);
-		strCmdLine.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver --bring-top");
+		strCmdLine.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver --hide-tabs");
 		strCmdLine.Append(" --lang=zh-CN");//install page need language chinese
 		strCmdLine.Append(" --logextend=").Append(name.c_str());
+		strCmdLine.Append(" --top=").Append(std::to_string(top).c_str());
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("%s cmdline : %s", name.c_str(), strCmdLine.GetData());
 		return strCmdLine.GetData();
 #endif
@@ -676,16 +690,21 @@ namespace Chromium {
         cachePath.Append(CSimpleStringA(SPLIT_SLASH_STR)).Append("cefCache_").Append(m_strCacheHead.length() > 0 ? m_strCacheHead.c_str() : "").Append(m_specialPage_temp_name.c_str());
         //strCmdLine.Append(" --hide-controls=true")
         strCmdLine.Append(" --cache-path=").Append(cachePath);
-        strCmdLine.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver");;//don't use single-process, it will affect the cef log
+        strCmdLine.Append(" --no-sandbox").Append(" --hide-controls --hide-overlays --hide-frame  --winhttp-proxy-resolver  --hide-tabs");;//don't use single-process, it will affect the cef log
+        if (g_useMagic)
+            strCmdLine.Append(" --magic-str=").Append(m_magicStr.c_str());
 		if (g_withMedia)
 			strCmdLine.Append(" --enable-media-stream=1 --enable-speech-input=1");
 		if (g_withConsole)
 			strCmdLine.Append(" --with-console");
+		if (g_sogouForce != 0)
+			strCmdLine.Append(" --adapt-sogou=").Append(std::to_string(g_sogouForce).c_str());
         strCmdLine.Append(" --logextend=").Append(m_specialPage_temp_name.c_str());
         if (m_specialPage_temp_size.length() > 0)
-            strCmdLine.Append(" --window-size=").Append(m_specialPage_temp_size.c_str());
+            strCmdLine.Append(" --center-size=").Append(m_specialPage_temp_size.c_str());
         if (m_specialPage_temp_point.length() > 0)
-            strCmdLine.Append(" --window-positio=").Append(m_specialPage_temp_point.c_str());
+            strCmdLine.Append(" --src-pos=").Append(m_specialPage_temp_point.c_str());
+        strCmdLine.Append(" --top=").Append(std::to_string((unsigned long long)m_specialPage_temp_top).c_str());
         strCmdLine.Append(" --errurl=file:\/\/\/").Append(getErrUrl(ERR_PAGE_REASON::main).second.c_str());
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("cmdline : %s", strCmdLine.GetData());
         return strCmdLine.GetData();
@@ -904,8 +923,7 @@ namespace Chromium {
 			if (Error_Succeed == openCefRet.first) {
                 LogWarn(Severity_Low, Error_Debug, LOG_EVT_CHROMIUM_OPEN_MAIN_URL,
                         CSimpleStringA::Format("StartChromiumBrowser %s", mainUrlRet.second.c_str()));
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402402F0")
-					(CSimpleStringA::Format("StartChromiumBrowser %s", mainUrlRet.second.c_str()).GetData());
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)(CSimpleStringA::Format("StartChromiumBrowser %s", mainUrlRet.second.c_str()).GetData());
 #ifndef DEVOPS_ON_PRD
                 LogEvent(Severity_High, LOG_EVT_CHROMIUM_OPEN_MAIN_URL, CSimpleStringA::Format("当前打开的业务链接:%s", mainUrlRet.second.c_str()));
 #endif
@@ -1077,7 +1095,7 @@ namespace Chromium {
 
 	void CModTools::cefClientGuardian(std::string cmdline)
 	{
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 		m_isGuardMainBrowser = true;
 		while (m_isGuardMainBrowser)
 		{

+ 1 - 1
Module/mod_chromium/CSocketClient.cpp

@@ -216,7 +216,7 @@ namespace Chromium {
 	}
 
 	void CSocketClient::thread_recv() {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 		try
 		{
 			// time out for select

+ 1 - 1
Module/mod_chromium/CWSCodec.cpp

@@ -852,7 +852,7 @@ namespace Chromium {
 		else// 生成链路信息
 		{
 			linkContext curLink;
-			curLink.bussinessId = "ChromiumAutoGen";
+			curLink.bussinessId = "LR0402ChromiumAutoGen";
 			curLink.traceId = uuid4_generate(32).c_str();
 			curLink.spanId = uuid4_generate(16).c_str();
 			curLink.parentSpanId = "0";

+ 3 - 3
Module/mod_chromium/CWebsocketServer.cpp

@@ -691,7 +691,7 @@ namespace Chromium {
 
 		auto msgHandleFun = [&]() {
 			//DbgEx("CWebsocketServer -> message_handler");
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+			//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 			std::string payload = msg->get_payload();
 			// proto convert here
 #if (defined _WIN32 || defined _WIN64)
@@ -840,7 +840,7 @@ namespace Chromium {
 	}
 
 	void CWebsocketServer::do_run() {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 		// Start the Asio io_service run loop
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("CWebsocketServer -> do_run, Start the Asio io_service run loop");
 		while (!boost::this_thread::interruption_requested())
@@ -1165,7 +1165,7 @@ namespace Chromium {
 
 	// socket message handler
 	void CWebsocketServer::message_from_socket(CMessage& msg, unsigned int id) {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 		// get message from socket and deserialize 
 		// then send back to the web client
 		auto bufferLength = msg.getBufferLength();

+ 1 - 0
Module/mod_chromium/baseEx.cpp

@@ -44,6 +44,7 @@ bool g_withSpecialTest = false;
 bool g_withLinkLog = false;
 bool g_hasInitCfg = false;
 bool g_unsafeAd = false;
+int g_sogouForce = 0;
 std::string g_usercodeTranslateFile = "";
 std::map<std::string, std::vector<std::string>> g_networkParse;
 std::map<std::string, clock_t> g_networkExpiredData;

+ 1 - 0
Module/mod_chromium/baseEx.h

@@ -13,6 +13,7 @@ extern bool g_withConsole;
 extern bool g_withLinkLog;
 extern bool g_hasInitCfg;
 extern bool g_unsafeAd;
+extern int g_sogouForce;
 
 #define DEFAULT_KEY_LEN 256
 

+ 43 - 7
Module/mod_chromium/mod_chromium.cpp

@@ -32,6 +32,7 @@
 #endif // OPEN_PERF
 #include <boost/date_time/posix_time/posix_time.hpp>
 #include "../mod_ResourceWatcher/ResourceWatcher_msg_g.h"
+#include "../mod_guiconsole/GUIConsole_client_g.h"
 #include "CommEntityUtil.hpp"
 
 
@@ -233,6 +234,7 @@ namespace Chromium {
 #endif // RVC_OS_WIN
 
 			ctx->Answer(ErrorCodeEnum::Error_Succeed);
+			startupPageClean();
 		};
 		std::thread(closePage, ctx).detach();
 		
@@ -389,6 +391,10 @@ namespace Chromium {
 								g_withConsole = m_withConsole = true;
 							else if (!trimStr.Compare("no_startup", true))//control browser will print console logs
 								no_startup = true;
+							else if (!trimStr.Compare("sogou_force", true))//force click setfocus page every time
+								g_sogouForce = 1;
+							else if (!trimStr.Compare("sogou_no", true))//not adapt to sogou
+								g_sogouForce = 2;
 						}
 						CSmartPointer<IConfigInfo> chromiumCfg;
 						if (m_runMain == true && Error_Succeed == GetFunction()->OpenConfig(Config_Cache, chromiumCfg))
@@ -568,6 +574,7 @@ namespace Chromium {
 
 	void CChromiumEntity::openMainPage()
 	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setLogCode("QLR0402402F0")("open main page");
 #if (defined _WIN32 || defined _WIN64)
 		generateCefclientTimer();
 #else
@@ -693,7 +700,7 @@ namespace Chromium {
 
 		//all the init,register,openWeb run thread
 		auto startFun = [&]() {
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+			//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("OnPreStart - startFun");
 			// init cef logger first
 #if (defined _WIN32 || defined _WIN64)
@@ -711,7 +718,7 @@ namespace Chromium {
 			if (!OnPreStart_socketStart(m_strArgs, m_pTransactionContext)) {//OnPreStart_socketStart()->new CWebsocketServer(strStructPath, this) 时间过长
 				return;
 			}
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("OnPreStart - OnPreStart_socketStart end");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("OnPreStart - OnPreStart_socketStartF end");
 
 
 			//the system info may be not complete.If the device is not install ,it can't not read the terminalNo.
@@ -782,6 +789,7 @@ namespace Chromium {
 #else
 				CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::startup);
 #endif
+				startupPageClean();
 				return;
 			}
 
@@ -829,8 +837,34 @@ namespace Chromium {
 #ifdef TEST_FUNCTION
 		boost::thread(boost::bind(&CChromiumEntity::testLogError, this)).detach();
 #endif // #ifdef TEST_FUNCTION
+	}
 
-		
+	void CChromiumEntity::startupPageClean()
+	{
+		GUIConsole::GUIConsoleService_ClientBase* client = new GUIConsole::GUIConsoleService_ClientBase(this);
+		ErrorCodeEnum error = client->Connect();
+		if (error == Error_Succeed)
+		{
+			{
+				GUIConsole::GUIConsoleService_CloseLogSender_Req req;
+				GUIConsole::GUIConsoleService_CloseLogSender_Ans ans;
+				error = (*client)(EntityResource::getLink().upgradeLink())->CloseLogSender(req, ans, 1000);
+			}
+
+			{
+				GUIConsole::GUIConsoleService_CloseEntityMonitor_Req req;
+				GUIConsole::GUIConsoleService_CloseEntityMonitor_Ans ans;
+				error = (*client)(EntityResource::getLink().upgradeLink())->CloseEntityMonitor(req, ans, 1000);
+			}
+
+			{
+				GUIConsole::GUIConsoleService_ClosePerformanceSender_Req req;
+				GUIConsole::GUIConsoleService_ClosePerformanceSender_Ans ans;
+				error = (*client)(EntityResource::getLink().upgradeLink())->ClosePerformanceSender(req, ans, 1000);
+		}
+
+			client->GetFunction()->CloseSession();
+	}
 	}
 
 	bool CChromiumEntity::CheckIsCardStore() {
@@ -839,7 +873,7 @@ namespace Chromium {
 
 	void CChromiumEntity::DoWithSysVarEvent()
 	{
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 		while (true)
 		{
 			if (m_eventArr.size() == 0)
@@ -897,6 +931,7 @@ namespace Chromium {
 #else
 							CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::startup);
 #endif
+							startupPageClean();
 
 							//DbgEx("UnregistSysVarEvent TerminalStage %s", Error_Succeed == GetFunction()->UnregistSysVarEvent("TerminalStage") ? "success" : "fail");
 						}
@@ -929,6 +964,7 @@ namespace Chromium {
 #else
 							CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::startup);
 #endif
+							startupPageClean();
 							ERR_PAGE_REASON reson = ERR_PAGE_REASON::breakdown;
 							if (0 == CSimpleStringA("S").Compare(curEvent.value.c_str(), true))
 								reson = ERR_PAGE_REASON::warnPrompt;
@@ -1131,7 +1167,7 @@ namespace Chromium {
 			tmpDirArr.get()->push_back(it);
 
 		auto runCacheClean = [](std::shared_ptr<std::vector<std::string>> p) ->void {
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+			//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 			CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::breakdown, true);//close all tab
 			for each (auto it in *p.get())
 			{
@@ -1202,7 +1238,7 @@ namespace Chromium {
 	}
 
 	void CChromiumEntity::checkUrlStartTime() {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 		std::string startTimeStr = boost::posix_time::to_iso_extended_string(boost::posix_time::microsec_clock::local_time());
 		int pos = startTimeStr.find('T');
 		startTimeStr.replace(pos, 1, std::string(" "));
@@ -1311,7 +1347,7 @@ namespace Chromium {
 			else
 			{
 				auto monitorThread = [&](HANDLE job, HANDLE process) {
-					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
+					//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
 					while (1)
 					{
 						if (WaitForSingleObject(process, 10) != WAIT_OBJECT_0)	//process end

+ 2 - 0
Module/mod_chromium/mod_chromium.h

@@ -197,6 +197,8 @@ namespace Chromium {
 		bool OnPreStart_register(CAutoArray<CSimpleStringA>& strArgs, CSmartPointer<ITransactionContext>& pTransactionContext);
 		bool OnPreStart_openWeb();
 
+		void startupPageClean();
+
 
 #ifdef TEST_FUNCTION
 	public:

+ 7 - 17
Module/mod_counterconnector/ConnectorFSM.cpp

@@ -45,16 +45,6 @@ static const char* connect_failed_rtamsg_table[] = {
 };
 
 
-#ifdef RVC_OS_LINUX
-unsigned long GetTickCount()
-{
-	struct timespec ts;
-	clock_gettime(CLOCK_MONOTONIC, &ts);
-	return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
-}
-#endif
-
-
 class  SyncServiceClient:public SyncService_ClientBase
 {
 public:
@@ -877,7 +867,7 @@ void ACMCallFSM::s11_on_entry()
 	LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_MAKECALL,"begin make call");
 	m_uConnectTime = y2k_time_now();
 	m_bConnected = false;
-	m_lConnectCostTime = GetTickCount();
+	m_lConnectCostTime = SP::Module::Comm::RVCGetTickCount();
 	
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR0402304Z80101")("begin remote video call");
 
@@ -908,7 +898,7 @@ void ACMCallFSM::s11_on_entry()
 		else{
 			int icount = m_voipserver.size();
 			if (icount > 0){
-				int index = GetTickCount()%icount;
+				int index = SP::Module::Comm::RVCGetTickCount()%icount;
 				char strcallurl[MAX_PATH] = {0};
 				char strassistip[32] = {0};
 				size_t uport = 0;
@@ -1454,7 +1444,7 @@ void ACMCallFSM::s3_on_entry()
 		unsigned int unowtime = y2k_time_now();
 		LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALL_CONNECTING_TIME, CSimpleStringA::Format("handfree call connecting time is %us.", unowtime - m_uConnectTime).GetData());
 		m_uConnectTime = unowtime;
-		long lnowtime = GetTickCount();
+		long lnowtime = SP::Module::Comm::RVCGetTickCount();
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RemoteVideoCall::Connecting").setCostTime(lnowtime - m_lConnectCostTime)("RemoteVideoCall::Connecting");
 		m_lConnectCostTime = lnowtime;
 	}
@@ -1507,7 +1497,7 @@ void ACMCallFSM::s4_on_entry()
 		unsigned int unowtime = y2k_time_now();
 		LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALL_CONNECTING_TIME, CSimpleStringA::Format("pickup call connecting time is %us.", unowtime - m_uConnectTime).GetData());
 		m_uConnectTime = unowtime;
-		long lnowtime = GetTickCount();
+		long lnowtime = SP::Module::Comm::RVCGetTickCount();
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RemoteVideoCall::Connecting").setCostTime(lnowtime - m_lConnectCostTime)("RemoteVideoCall::Connecting");
 		m_lConnectCostTime = lnowtime;
 	}
@@ -1578,7 +1568,7 @@ void ACMCallFSM::s51_on_entry()
 	if (m_bConnected) {
 		m_bConnected = false;
 		LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALL_CONNECT_TIME, CSimpleStringA::Format("call connected time is %us.", y2k_time_now() - m_uConnectTime).GetData());
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RemoteVideoCall::Connected").setCostTime(GetTickCount() - m_lConnectCostTime)("RemoteVideoCall::Connected");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RemoteVideoCall::Connected").setCostTime(SP::Module::Comm::RVCGetTickCount() - m_lConnectCostTime)("RemoteVideoCall::Connected");
 	}
 }
 
@@ -1598,7 +1588,7 @@ void ACMCallFSM::s52_on_entry()
 	if (m_bConnected) {
 		m_bConnected = false;
 		LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALL_CONNECT_TIME, CSimpleStringA::Format("call connected time is %us.", y2k_time_now() - m_uConnectTime).GetData());
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RemoteVideoCall::Connected").setCostTime(GetTickCount() - m_lConnectCostTime)("RemoteVideoCall::Connected");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RemoteVideoCall::Connected").setCostTime(SP::Module::Comm::RVCGetTickCount() - m_lConnectCostTime)("RemoteVideoCall::Connected");
 	}
 }
 
@@ -1685,7 +1675,7 @@ void ACMCallFSM::s60_on_entry()
 	if (m_bConnected) {
 		m_bConnected = false;
 		LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALL_CONNECT_TIME, CSimpleStringA::Format("call connected time is %us.", y2k_time_now() - m_uConnectTime).GetData());
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RemoteVideoCall::Connected").setCostTime(GetTickCount() - m_lConnectCostTime)("RemoteVideoCall::Connected");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RemoteVideoCall::Connected").setCostTime(SP::Module::Comm::RVCGetTickCount() - m_lConnectCostTime)("RemoteVideoCall::Connected");
 	}
 }
 

+ 3 - 0
Module/mod_counterconnector/ConnectorFSM.h

@@ -8,6 +8,7 @@
 #include "Event.h"
 #include "../include/EventCode.h"
 #include "y2k_time.h"
+#include "CommEntityUtil.hpp"
 
 #ifdef _WIN32
 #include "resource.h"
@@ -828,9 +829,11 @@ private:
 	int LogFailedWarns(int iFailedCode, const char* strmsg);
 
 public:
+	//话机的物理状态
 	bool m_bHandFree;
 	//坐席控制话筒的当前状态
 	bool m_bAgentHandFree;
+	//是否处于接通坐席状态
 	bool m_bIsAgentControl;
 	//流程拨号,带技能号
 	CSimpleStringA m_strHintCallNum;

+ 10 - 5
Module/mod_counterconnector/mod_counterconnector.cpp

@@ -296,13 +296,14 @@ void CCounterConnectorEntity::HandleGetVideoFailedEvent()
 		strmsg = CSimpleStringA::Format("connect mediacontroller entity failed");
 		pMSClient->SafeDelete();
 		pMSClient = NULL;
-		
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode("RTA3408")("连线接通时媒体资源控制实体状态异常");
 	}
 	else{
 		strmsg = CSimpleStringA::Format("connect mediacontroller entity success");
 		pMSClient->GetFunction()->CloseSession();
 		pMSClient->SafeDelete();
 		pMSClient = NULL;
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode("RTA3409")("连线接通时摄像头故障");
 	}
 
 	strinfo = CSimpleStringA::Format("%s, and CustomerBeing is %s, CustomerHandle is %s, CameraState is %s.", strmsg, strCustomerBeing.GetData(), strCustomerHandle.GetData(), strCameraState.GetData());
@@ -664,7 +665,6 @@ void CCounterConnectorEntity ::OnReceivePkt(int type, int sub_type, const char *
 			{
 				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("agent want change audiodevice to handfree,but the device is handfree now");
 			}
-			SendCurAudioDevice();
 			break;
 			//change to pickup
 		case ACM_CHANGE_PICKUP:
@@ -676,9 +676,8 @@ void CCounterConnectorEntity ::OnReceivePkt(int type, int sub_type, const char *
 			}
 			else
 			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("agent want change audio device to pickup,but the device is pickup now");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("agent want change audio device to pickup,but the device is pickup now");
 			}
-			SendCurAudioDevice();
 			break;
 		default:
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("unknown sub_type %d from agent!", sub_type);
@@ -890,13 +889,19 @@ void CCounterConnectorEntity ::SendCurAudioDevice()
 	CSmartPointer<IEntityFunction> Func = GetFunction();
 	CSimpleStringA strValue("");
 	Func->GetSysVar(SYSVAR_SOUNDCARDSTATE, strValue);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
 
 	if ('H' == strValue[0]) {
 		nDevice = 1;
+		if (m_fsm.m_bIsAgentControl){
+			m_fsm.m_bAgentHandFree = false;
+		}
 	}
 	else if('P' == strValue[0]){
 		nDevice = 0;
+		if (m_fsm.m_bIsAgentControl) {
+			m_fsm.m_bAgentHandFree = true;
+		}
 	}
 
 	buf & nDevice;

+ 0 - 27
Module/mod_gpio/Gpio.xml

@@ -1,33 +1,6 @@
 <?xml version="1.0" encoding="gb2312" ?>
 <entity name="Gpio">
 	<class name="GpioService" overlap="true" exclusive="false">
-		<oneway name="Set" overlap="true">
-				<!-- 灯模块的序号标识,实体内部定义-->
-				<param name="devseq" type="int" />
-        <!--目前只有打印盖章有用到-->
-				<param name="mode" type="int" />
-				<!--目前只有 1 时才会处理,表明关灯-->
-				<param name="close" type="int" />
-		</oneway>
-		<twoway name="GetStatus" overlap="true">
-			<req>
-				<param name="devseq" type="int" />
-			</req>
-			<res>
-				<param name="status" type="int" />
-			</res>			
-		</twoway>
-		<twoway name="QueryCurrSet" overlap="true">
-			<req>
-				<param name="devseq" type="int" />
-			</req>
-			<res>
-				<param name="dir" type="int" />
-				<param name="output" type="int" />
-				<param name="reserved1" type="int" />
-				<param name="reserved2" type="string" />
-			</res>			
-		</twoway>
 		<twoway name="GetDevInfo" overlap="true" method_id="65535">
 			<req>
 			</req>

+ 5 - 0
Module/mod_gpio/Gpio_UserErrorCode.h

@@ -10,5 +10,10 @@
 //adapter func failed
 #define GPIO_UserErrorCode_DevOpen_Failed		0x20900204
 #define GPIO_UserErrorCode_GetDevCategory_Failed	0x20900205
+#define GPIO_UserErrorCode_WritePort_Failed	0x20900206
+#define GPIO_UserErrorCode_SetStatus_Failed	0x20900207
+#define GPIO_UserErrorCode_ReadPort_Failed	0x20900208
+#define GPIO_UserErrorCode_DetectStatus_Failed	0x20900209
+
 
 #endif //_CONTACTLESSCARD_USER_ERRORCODE_H

+ 1 - 113
Module/mod_gpio/Gpio_client_g.h

@@ -32,6 +32,7 @@ public:
 	}
 	void OnClose(ErrorCodeEnum)
 	{
+		Dbg("session closed.");
 		bSessionClosed = true;
 	}
 	bool QuerySessionClosed()
@@ -58,119 +59,6 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum Set(GpioService_Set_Info &Info)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		CAutoBuffer Buf = SpObject2Buffer(Info);
-		auto ret = pFunc->OnewayCall(GpioService_Method_Set, GpioService_MethodSignature_Set, Buf, m_context);
-		m_context.clear();
-		return ret;
-	}
-
-	ErrorCodeEnum GetStatus(GpioService_GetStatus_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(GpioService_Method_GetStatus, GpioService_MethodSignature_GetStatus, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetStatus(GpioService_GetStatus_Req &Req, GpioService_GetStatus_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetStatus(GpioService_GetStatus_Req &Req, GpioService_GetStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetStatus(GpioService_GetStatus_Req &Req, GpioService_GetStatus_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetStatus(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
-	ErrorCodeEnum QueryCurrSet(GpioService_QueryCurrSet_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
-	{
-		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
-		CAutoBuffer Buf = SpObject2Buffer(Req);
-		if (m_context.checkEmpty())
-		{
-			m_context.AutoGenerate();
-			DbgToBeidou(m_context, m_pEntityBase != NULL ? m_pEntityBase->GetEntityName() : "")();
-			m_context = m_context.upgradeLink();
-		}
-		auto ret = pFunc->AsyncRequest(GpioService_Method_QueryCurrSet, GpioService_MethodSignature_QueryCurrSet, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum QueryCurrSet(GpioService_QueryCurrSet_Req &Req, GpioService_QueryCurrSet_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCurrSet(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryCurrSet(GpioService_QueryCurrSet_Req &Req, GpioService_QueryCurrSet_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCurrSet(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum QueryCurrSet(GpioService_QueryCurrSet_Req &Req, GpioService_QueryCurrSet_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = QueryCurrSet(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			CSimpleString str;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwUserError, str, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-
 	ErrorCodeEnum GetDevInfo(GpioService_GetDevInfo_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();

+ 2 - 71
Module/mod_gpio/Gpio_def_g.h

@@ -12,83 +12,14 @@ namespace Gpio {
 // const goes here
 //
 
-#define GpioService_Method_Set 0
-#define GpioService_Method_GetStatus 1
-#define GpioService_Method_QueryCurrSet 2
 #define GpioService_Method_GetDevInfo 65535
-#define GpioService_Method_Exit 3
+#define GpioService_Method_Exit 0
 
-#define GpioService_MethodSignature_Set 1228126872
-#define GpioService_MethodSignature_GetStatus 1783612278
-#define GpioService_MethodSignature_QueryCurrSet -1281718647
 #define GpioService_MethodSignature_GetDevInfo -70806533
 #define GpioService_MethodSignature_Exit -736432874
 
-#define GpioService_LogCode_Set "QLR040220900"
-#define GpioService_LogCode_GetStatus "QLR040220901"
-#define GpioService_LogCode_QueryCurrSet "QLR040220902"
 #define GpioService_LogCode_GetDevInfo "QLR040220999"
-#define GpioService_LogCode_Exit "QLR040220903"
-
-struct GpioService_Set_Info
-{
-	int devseq;
-	int mode;
-	int close;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & devseq & mode & close;
-	}
-
-};
-
-struct GpioService_GetStatus_Req
-{
-	int devseq;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & devseq;
-	}
-
-};
-
-struct GpioService_GetStatus_Ans
-{
-	int status;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & status;
-	}
-
-};
-
-struct GpioService_QueryCurrSet_Req
-{
-	int devseq;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & devseq;
-	}
-
-};
-
-struct GpioService_QueryCurrSet_Ans
-{
-	int dir;
-	int output;
-	int reserved1;
-	CSimpleStringA reserved2;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & dir & output & reserved1 & reserved2;
-	}
-
-};
+#define GpioService_LogCode_Exit "QLR040220900"
 
 struct GpioService_GetDevInfo_Req
 {

+ 0 - 81
Module/mod_gpio/Gpio_server_g.h

@@ -30,27 +30,6 @@ public:
 	{
 		ErrorCodeEnum Error = Error_Succeed;
 		switch (dwMessageID) {
-		case GpioService_Method_Set:
-			if (dwSignature == GpioService_MethodSignature_Set) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case GpioService_Method_GetStatus:
-			if (dwSignature == GpioService_MethodSignature_GetStatus) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case GpioService_Method_QueryCurrSet:
-			if (dwSignature == GpioService_MethodSignature_QueryCurrSet) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case GpioService_Method_GetDevInfo:
 			if (dwSignature == GpioService_MethodSignature_GetDevInfo) {
 				bOverlap = true;
@@ -76,21 +55,6 @@ public:
 	{
 		ErrorCodeEnum Error = Error_Succeed;
 		switch (dwMessageID) {
-		case GpioService_Method_Set:
-			if (dwSignature != GpioService_MethodSignature_Set) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case GpioService_Method_GetStatus:
-			if (dwSignature != GpioService_MethodSignature_GetStatus) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case GpioService_Method_QueryCurrSet:
-			if (dwSignature != GpioService_MethodSignature_QueryCurrSet) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case GpioService_Method_GetDevInfo:
 			if (dwSignature != GpioService_MethodSignature_GetDevInfo) {
 				Error = Error_MethodSignatureFailed;
@@ -108,21 +72,6 @@ public:
 		return Error;
 	}
 
-	virtual void Handle_Set(SpOnewayCallContext<GpioService_Set_Info>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetStatus(SpReqAnsContext<GpioService_GetStatus_Req, GpioService_GetStatus_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_QueryCurrSet(SpReqAnsContext<GpioService_QueryCurrSet_Req, GpioService_QueryCurrSet_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
 	virtual void Handle_GetDevInfo(SpReqAnsContext<GpioService_GetDevInfo_Req, GpioService_GetDevInfo_Ans>::Pointer ctx)
 	{
 	/// override by user
@@ -149,36 +98,6 @@ public:
 			}
 #endif
 			switch (dwMessageID) {
-				case GpioService_Method_Set:
-					{
-						SpOnewayCallContext<GpioService_Set_Info>::Pointer ctx;
-						ctx.Attach(new SpOnewayCallContext<GpioService_Set_Info>());
-						SpBuffer2Object(Buf, ctx->Info);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_Set(ctx);
-					}
-					break;
-				case GpioService_Method_GetStatus:
-					{
-						SpReqAnsContext<GpioService_GetStatus_Req,GpioService_GetStatus_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<GpioService_GetStatus_Req,GpioService_GetStatus_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_GetStatus(ctx);
-					}
-					break;
-				case GpioService_Method_QueryCurrSet:
-					{
-						SpReqAnsContext<GpioService_QueryCurrSet_Req,GpioService_QueryCurrSet_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<GpioService_QueryCurrSet_Req,GpioService_QueryCurrSet_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_QueryCurrSet(ctx);
-					}
-					break;
 				case GpioService_Method_GetDevInfo:
 					{
 						SpReqAnsContext<GpioService_GetDevInfo_Req,GpioService_GetDevInfo_Ans>::Pointer ctx;

Plik diff jest za duży
+ 353 - 340
Module/mod_gpio/mod_gpio.cpp


+ 79 - 101
Module/mod_gpio/mod_gpio.h

@@ -19,7 +19,6 @@ typedef ErrorCodeEnum (*lpCreateDevCom)(DeviceBaseClass *&baseObj);
 typedef ErrorCodeEnum (*lpReleaseDevCom)(DeviceBaseClass *&pBaseObj);
 enum OutputMode{
 	OM_POSITIVE_LEVEL,
-	OM_NEGATIVE_LEVEL,
 	OM_POSITIVE_FLICKER,
 	OM_NEGATIVE_FLICKER
 };
@@ -68,48 +67,67 @@ struct ReceivingInfo
 	int ContinuousTriggerTime;
 };
 
-enum PrintSealType{
-	PRINTERSEAL_UNKNOWN = 0,
-	PRINTER_LIGHT_GREEN,
-	PRINTER_LIGHT_RED,
-	PRINTER_LIGHT_OFF,
-	PAPER_LIGHT_GREEN,
-	PAPER_LIGHT_RED,
-	PAPER_LIGHT_OFF
+enum LightSeq {
+	UNKNOWN_DEVICE,
+	CARDREADER,
+	CARDREADER_RED,
+	IDCERTIFICATE,
+	PINPAD,
+	PINPADLIGHT,
+	SHAKEDETECT,
+	SWITCHINDUCTOR,
+	PHONEPICKUP,
+	MOVEDETECT,
+	CARDGATEDETECT,
+	HEADLIGHT,
+	HEADLIGHT_RED,
+	CONTACTLESSCARD,
+	HEADLIGHT_ASSIST,
+	HSPSCANNER,
+	FINGERPRINT
 };
 
-
+/** 添加注释:对应规格说明书中的引脚信号,这里是从0开始,适应程序  [Gifur@202494]*/
 enum DevicePinSeq
 {
-	PIN_CARD_READER_LIGHT,
-	PIN_USB_CONTROL_SWITCH,
+	PIN_CARD_READER_LIGHT = 0,
+	PIN_USB_CONTROL_SWITCH, //已下线
 	PIN_IDCERTIFICATE_LIGHT,
 	PIN_PINPAD_LIGHT,
 	PIN_HEAD_LIGHT,
-	PIN_TROUBLE_LIGHT,
+	PIN_TROUBLE_LIGHT = 5,
 	PIN_CARD_ISSUE_MAINTAIN_LIGHT,
-	PIN_USB_CONTROL_LIGHT,
+	PIN_USB_CONTROL_LIGHT,//已下线
 	PIN_CONTACELESS_LIGHT,
-	PIN_QR_LIGHT,
-	PIN_FINGERPRINT_LIGHT,
-	PIN_THERMPRINT_LIGHT,
+	PIN_RESERVED1, //RESERVED未使用,下同
+	PIN_FINGERPRINT_LIGHT = 10,
+	PIN_RESERVED2,
 	PIN_HSPSCANNER_PREVIEW_LIGHT,
-	PIN_PRINTERSEAL_GREEN_LIGHT,
-	PIN_PAPER_SLOT_GREEN_LIGHT,
-	PIN_PAPER_SHORTAGE_RED_LIGHT,
-	PIN_PRINTERSEAL_RED_LIGHT = 24,
-	PIN_HSPSCANNER_LIGHT
+	PIN_RESERVED3,
+	PIN_RESERVED4,
+	PIN_RESERVED5 = 15,
+	PIN_DETECT_SHAKE = 16,
+	PIN_DETECT_OPENDOOR,
+	PIN_DETECT_PHONE,
+	PIN_DETECT_BODY,
+	PIN_HSPSCANNER_LIGHT = 25
+};
+
+//TODO: 临时  [Gifur@202494]
+struct GpioService_Set_Info
+{
+	int devseq;
+	int mode;
+	int close;
 };
 
+
 class CGpioEntity;
 
 class CGpioServiceSession : public GpioService_ServerSessionBase
 {
 public:
 	CGpioServiceSession(CGpioEntity* pEntity):m_pEntity(pEntity){};
-	virtual void Handle_Set(SpOnewayCallContext<GpioService_Set_Info>::Pointer ctx);
-	virtual void Handle_GetStatus(SpReqAnsContext<GpioService_GetStatus_Req, GpioService_GetStatus_Ans>::Pointer ctx);
-	virtual void Handle_QueryCurrSet(SpReqAnsContext<GpioService_QueryCurrSet_Req, GpioService_QueryCurrSet_Ans>::Pointer ctx);
 	virtual void Handle_GetDevInfo(SpReqAnsContext<GpioService_GetDevInfo_Req,
 		GpioService_GetDevInfo_Ans>::Pointer ctx);
 	virtual void Handle_Exit(SpOnewayCallContext<GpioService_Exit_Info>::Pointer ctx);
@@ -123,9 +141,7 @@ struct DevOutputInfo
 };
 struct SetContextInfo
 {
-	SpOnewayCallContext<GpioService_Set_Info>::Pointer ctx;
 	ULONG timerID;
-	BYTE index;
 	ULONG pinSeq;
 	int setTime;
 	int resetTime;
@@ -133,59 +149,35 @@ struct SetContextInfo
 };
 struct GetContextInfo
 {
-	int Port;
-	SpReqAnsContext<GpioService_GetStatus_Req, GpioService_GetStatus_Ans>::Pointer ctx;
 	ULONG timerID;
-	ULONG index;
-	int CttPhone,CttMove,CttShake,CttSwitch,CttCard;
-
-	//ContinuousTriggerTime get from configure file
-	int InitCTT;
 };
-class CGpioEntity : public CDevAdptEntityBase, public ILogListener
+
+class CGpioEntity : public CDevAdptEntityBase, public ILogListener, ISysVarListener
 {
 public:
 	//0000 0000 0000 0010 0110 1111 1100 0000
-	CGpioEntity():m_devEnableStatus(0x1f),m_bPickUpRound(false),m_bVibrationRound(false)
-		,m_bOpenRound(false),m_bMoveRound(false),m_bCardGateRound(false), m_ePickUpFlag(UnknownStatus)
+	CGpioEntity():m_ePickUpFlag(UnknownStatus)
 		,m_bVibrationFlag(false),m_bOpenFlag(false),m_bMoveFlag(false),m_bCardGateFlag(false)
-		, m_pLogListener(NULL), m_bHeadLightFlag(false), m_headlightDevPort(0), m_moveHoldTimes(0)
+		, m_pLogListener(NULL), m_bHeadLightFlag(false), m_headlightDevPort(4), m_moveHoldTimes(0)
 		, m_moveDisappearTimes(0),m_eMachineType(SP::Module::Comm::RVC_UNKNOWN)
-		, m_bNewVersion(FALSE), m_bFuncVer2(FALSE), m_FirstStart(true)
-		, m_csDevNo(true), m_port(true), m_portNum(true), m_Baudrate(true), m_bOpened(false), m_bOpening(true)
+		, m_bNewVersion(TRUE), m_bFuncVer2(FALSE)
+		, m_bOpened(false), m_bOpening(true), m_btLastRevcInput(-1), m_iInWhatPage(PageType_Init)
 	{
-		m_timerID = 1;
-		currDevStatus.dir = 0x3eFC0;
-		//   11 1110 1111 1100 0000
-		//currDevStatus.dir = 0x7ffb0;
-		memset(m_btOutputStatus,0,MAX_PORT_NUM);
-		currDevStatus.output = 0x0;
-//		currDir = 0x2007ffff;
-		//m_pPIUT = new PositivePulseUpTimer();
-		HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x209);
+		memset(m_btOutputStatus,0,MAX_PORT_NUM*sizeof(BYTE));
 	}
 	virtual ~CGpioEntity(){}
 	virtual const char* GetEntityName()const {return "Gpio";}
 	const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
 	
 	virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext);
-	
 	virtual void OnPrePause(CSmartPointer<ITransactionContext> pTransactionContext)
 	{
-		CSimpleStringA initDriver = "";
-		int driverPort;
-        initDriver = "CardReaderNormal";
-        driverPort = 0;
-		OutDrivingInfo odi;
-		GetOutDrivingModInfo(initDriver,odi);
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("read port[%u]",(ULONG)driverPort);
 		pTransactionContext->SendAnswer(Error_Succeed);
 	}
 
 	virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext)
 	{
-		LOG_FUNCTION();
-		m_hDevHelper.TearDown();
+		if(m_hDevHelper != nullptr) m_hDevHelper.TearDown();
 		pTransactionContext->SendAnswer(Error_Succeed);
 	}
 
@@ -193,42 +185,28 @@ public:
 	{
 		return new CGpioServiceSession(this);
 	}
-
 	void OnSelfTest(EntityTestEnum eTestType, CSmartPointer<ITransactionContext> pTransactionContext);
+	virtual bool IsService()const { return true; }
+	virtual bool IsMultiThread()const { return false; }
 
-	void Exit(SpOnewayCallContext<GpioService_Exit_Info>::Pointer ctx) {}
+	virtual void OnSysVarEvent(const char* pszKey,
+		const char* pszValue, const char* pszOldValue, const char* pszEntityName);
 
 	void GetDevInfo(SpReqAnsContext<GpioService_GetDevInfo_Req,
 		GpioService_GetDevInfo_Ans>::Pointer ctx);
 
-	bool SetOutDriving(GpioService_Set_Info req,OutDrivingInfo od, ULONG iIndex,ULONG devSeq);
-
-	bool GetReceiving(int deviceSeq,ReceivingInfo ri, ULONG iIndex);
-
-	DevOutputInfo GetCurrDevStatus()const {return currDevStatus;}
-
-	void SaveCurrDevStatus(DevOutputInfo devOutputInfo) {currDevStatus = devOutputInfo;}
-
-	ULONG GetDevEnableStatus(){return m_devEnableStatus;}
-
-	void SetDevEnableStatus(ULONG devEnableStatus){m_devEnableStatus = devEnableStatus;}
-
-	ULONG GetNewTimerID(){return m_timerID++;}
-
-	BYTE GetOutputStatus(int sn=0);
+	void Exit(SpOnewayCallContext<GpioService_Exit_Info>::Pointer ctx) {}
 
-	virtual bool IsService()const{return true;}
-	virtual bool IsMultiThread()const{return false;}
+	//////////////////////////////////////////////////////////////////////////
 	ErrorCodeEnum Initial();
-	void OnOutputPositiveLevelTimerout(void *pData);
 	void OnPositiveFlickerSetTimerout(void *pData);
 	void OnPositiveFlickerResetTimerout(void *pData);
-	void OnPositiveLevelTimerOut(void* pData);
-	void GetOutDrivingModInfo(CSimpleStringA modName, OutDrivingInfo& odi);
-	void GetReceivingModInfo(CSimpleStringA modName, ReceivingInfo& ri);
-	void GetStatus(int deviceSeq,SpReqAnsContext<GpioService_GetStatus_Req, GpioService_GetStatus_Ans>::Pointer ctx);
+	void OnEventDetect(void* pData);
+	//开了一个监听线程,用于监听震动、开关门等事件
+	void StartDetectWorkThread();
 	void Set(GpioService_Set_Info info);
 	void SetEx(GpioService_Set_Info info);
+	bool SetOutDriving(GpioService_Set_Info req, OutDrivingInfo od, ULONG iIndex, ULONG devSeq);
 	void WritePin(DWORD dwPinSeq,bool bHighLevel);
 
 	virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
@@ -237,45 +215,45 @@ public:
 
 	void ToLogRootINIInfo();
 	void ToLogWarnInfoAboutTerm(const AdapterInfo& m_adapterInfo);
-	bool DetectBit(ULONG data, int pos);
+
+	void SetErrorAndLog(ErrorCodeEnum errCode, DWORD userCode, CSimpleStringA devApi, CSimpleStringA funPath, bool bInBusiness = false, int costTime = 0, CSimpleStringA logCode = "", CSimpleStringA context = "");
 
 public:
 
-    CUUID m_uuidHealth, m_uuidPtr, m_uuidCR, m_uuidIDC, m_uuidFP, m_uuidKB, m_uuidCA, m_uuidCC, m_uuidDD, m_uuidCS, m_uuidIE;
+    CUUID m_uuidHealth, m_uuidCR, m_uuidIDC, m_uuidFP, m_uuidKB, m_uuidCA, m_uuidCC, m_uuidDD, m_uuidCS;
     CUUID m_uuidHSPscanner;
 
+private:
+	/** 支持机型判断 */
+	bool IfHaveMoveDetect();
+	bool DetectBit(ULONG data, int pos);
+	bool IsInBusiness() const { return (m_iInWhatPage == PageType_Other); }
+	void SetInWhatPage(int iPageType) { m_iInWhatPage = iPageType; }
 private:
 	DevAdptLibHelper<GpioClass> m_hDevHelper;
 	SP::Module::Comm::What m_eMachineType;
 
 	BYTE m_btOutputStatus[MAX_PORT_NUM];
-	DWORD m_dwPortNum,m_dwInOutDir;
+
 	BOOL m_bNewVersion;
 	BOOL m_bFuncVer2;
 
-	DevOutputInfo currDevStatus;
-	DevCategoryInfo m_devCatInfo;
-	ULONG m_devEnableStatus;
-	ULONG m_timerID;
-	bool m_bPickUpRound,m_bVibrationRound,m_bOpenRound,m_bMoveRound,m_bCardGateRound;
+	BYTE m_btLastRevcInput;
 	bool m_bVibrationFlag,m_bOpenFlag,m_bMoveFlag,m_bCardGateFlag;
 	PinActiveStatus m_ePickUpFlag;
+
 	bool m_bHeadLightFlag;
-	int m_headlightDevPort, m_moveHoldTimes, m_moveDisappearTimes;
+	int m_headlightDevPort;
+	unsigned long m_moveHoldTimes, m_moveDisappearTimes;
+
 	ILogListener *m_pLogListener;
-	CSimpleStringA m_csMachineType, m_csAlarmMsg;
-	DevEntityErrorCode m_entCode;
-	bool IfHaveMoveDetect();
-	ErrorPackage m_errPkg;
+
 	AdapterInfo m_adapterInfo;
-	CSimpleStringA m_csDevNo;
-	CSimpleStringA m_port;
-	CSimpleStringA m_portNum;
-	CSimpleStringA m_Baudrate;
-	bool m_FirstStart;
 
 	bool m_bOpened;
 	bool m_bOpening;
+
+	int m_iInWhatPage/*在哪个页面,区分首页,用户桌面,其他页*/;
 };
 
 template<class T>

+ 76 - 26
Module/mod_healthmanager/HealthManagerFSM.cpp

@@ -91,6 +91,11 @@ ErrorCodeEnum CHealthManagerFSM::Initial()
 	if (m_wkUpdatePeriod <= 0 || m_wkUpdatePeriod > 365)
 		m_wkUpdatePeriod = 30;//default
 	spConfigCen->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "DoNotUpdateWKDaily", m_iDoNotUpdateWKDaily);
+	
+	spConfigCen->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "MaxWaitForPinPad", m_maxWaitForPinPad);
+	if (m_maxWaitForPinPad <= 0 || m_maxWaitForPinPad > 5000)
+		m_maxWaitForPinPad = 5000;//default
+
 	CSimpleStringA csTmpTS("");
 	GetEntityBase()->GetFunction()->GetSysVar("TerminalStage", csTmpTS);
 	if (csTmpTS.Compare("N") != 0)
@@ -367,19 +372,7 @@ int CHealthManagerFSM::WaitDeamonFinish()
 int CHealthManagerFSM::AccessAuthDoWork()
 {
 	LOG_FUNCTION();
-	//to check if PinPad is ok, wait for 5 seconds,then go on
-	//RVC.CardStore have no PinPad
-	int waitCount = 0;
-	while (waitCount < 5)
-	{
-		if (m_bPinPadOpenSuc || m_sysInfo.strMachineType.Compare("RVC.CardStore",true) == 0)
-			break;
-		else
-		{
-			Sleep(1000);
-			waitCount++;
-		}
-	}
+	CheckIfPinPadOK();
 
 	m_bInAccessAuthDoWork = true;
 	CSimpleStringA csTermStage("");
@@ -478,12 +471,12 @@ void CHealthManagerFSM::SetVtmLoadResult(int bResult)
 	if (bResult == VtmLoad_AccessAuth_Suc)
 	{
 		eErrCode = GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "A");
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("AccessAuthSuc")("%d", SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart);
+		m_ullAccessAuthCost = SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart;
 	}
 	else if (bResult == VtmLoad_AccessAuth_servFail) //准入服务端返回失败
 	{
 		eErrCode = GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "S");
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("AccessAuthFailServ")("%d", SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart);
+		m_ullAccessAuthCost = SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart;
 	}
 	else if (bResult == VtmLoad_MediaLoadFail) //音视频校验不通过
 	{
@@ -492,7 +485,8 @@ void CHealthManagerFSM::SetVtmLoadResult(int bResult)
 	else //其他失败
 	{
 		eErrCode = GetEntityBase()->GetFunction()->SetSysVar("TerminalStage", "C");
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("AccessAuthFailOther")("%d", SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart);
+		if (bResult != VtmLoad_OtherSyncEntityLoadFail)//if haven't call Regist(), no need to calulate the AccessAuth cost
+			m_ullAccessAuthCost = SP::Module::Comm::RVCGetTickCount() - m_ullAuthStart;
 	}
 	if (eErrCode != Error_Succeed)
 		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("set TerminalStage %d,failed:%s", bResult, SpStrError(eErrCode));
@@ -862,14 +856,11 @@ DWORD GetDualTime(SYSTEMTIME& t1, SYSTEMTIME& t2)
 void CHealthManagerFSM::ToLogWarnTermAboutInfo()
 {
 	LOG_FUNCTION();
-	QueryAndSaveDNS();
-	QueryAndSendCPUInfo();
-	QueryAndSendDisplayInfo();
 	bool bTmpEtyNewStart = m_bEntityNewStart;
 	if (m_bEntityNewStart)
 	{
 		SYSTEMTIME shellStartTime;
-		ULONGLONG totalCost = 0;
+		m_ullTotalCost = 0;
 		m_bEntityNewStart = false;
 		CAutoArray<CSimpleStringA> strEntityNames;
 		CAutoArray<int> strEntityIdx;
@@ -881,15 +872,32 @@ void CHealthManagerFSM::ToLogWarnTermAboutInfo()
 			{
 				shellStartTime = Infos[i].startTime;
 				ULONGLONG dwElapseNow = SP::Module::Comm::RVCGetTickCount();
-				totalCost = dwElapseNow - m_ullElapseFromOSStart;
+				m_ullTotalCost = dwElapseNow - m_ullElapseFromOSStart;
 				LogWarn(Severity_Low, Error_Debug, LOG_TRACE_ENTITY_START_TIME,
-					SP::Module::Util::generateConsumeTimeJson("total", SP::Module::Util::formatTime(shellStartTime).c_str(), totalCost).GetData());
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("EntityStartCost")(SP::Module::Util::generateConsumeTimeJson("total", SP::Module::Util::formatTime(shellStartTime).c_str(), totalCost).GetData());
-				break;
+					SP::Module::Util::generateConsumeTimeJson("total", SP::Module::Util::formatTime(shellStartTime).c_str(), m_ullTotalCost).GetData());
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("EntityStartCost")(SP::Module::Util::generateConsumeTimeJson("total", SP::Module::Util::formatTime(shellStartTime).c_str(), m_ullTotalCost).GetData());
+				//break;
 			}
+			//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s,%d", strEntityNames[i].GetData(), GetDualTime(Infos[i].startTime, Infos[i].startEndTime));
+			if (strEntityNames[i].Compare("SIPPhone") == 0)
+				m_ullSIPPhoneCost = GetDualTime(Infos[i].startTime, Infos[i].startEndTime);
+			else if (strEntityNames[i].Compare("TokenKeeper") == 0)
+				m_ullTokenKeeperCost = GetDualTime(Infos[i].startTime, Infos[i].startEndTime);
 		}
+		std::map<std::string, std::string> termStartInfo;
+		termStartInfo["SIPPhoneCost"] = CSimpleStringA::Format("%d", m_ullSIPPhoneCost);
+		termStartInfo["TokenKeeperCost"] = CSimpleStringA::Format("%d", m_ullTokenKeeperCost);
+		termStartInfo["WaitForPinPadCost"] = CSimpleStringA::Format("%d", m_ullWaitForPinPad);
+		termStartInfo["TotalCost"] = CSimpleStringA::Format("%d", m_ullTotalCost);
+		termStartInfo["AccessAuthCost"] = CSimpleStringA::Format("%d", m_ullAccessAuthCost);
+		termStartInfo["AccessAuthResult"] = CSimpleStringA::Format("%d", m_iAccessAuth);
 		
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("TerminalStartCost")("%s", generateJsonStr(termStartInfo).second.c_str());
 	}
+	QueryAndSaveDNS();
+	QueryAndSendCPUInfo();
+	QueryAndSendDisplayInfo();
+
     CSimpleStringA csOSVerion(""), csWarnMsg("");
 	std::map<std::string, std::string> termInfo;
 	termInfo["version"] = m_sysInfo.InstallVersion.ToString();
@@ -1292,7 +1300,7 @@ void CHealthManagerFSM::QueryAndSaveDNS()
 	string line;
 	while (!is.eof()) {
 		getline(is, line);
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("line:%s", line.c_str());
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("line:%s", line.c_str());
 		size_t start = line.find(csDNSKeyword.GetData());
 		if (start != string::npos)
 		{
@@ -1437,7 +1445,7 @@ void CHealthManagerFSM::QueryAndSendDisplayInfo()
 	string line;
 	while (!is.eof()) {
 		getline(is, line);
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("line:%s", line.c_str());
+		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("line:%s", line.c_str());
 
 		if (line.find("connected") != string::npos)
 		{
@@ -1463,4 +1471,46 @@ string CHealthManagerFSM::QueryHarddiskInfo()
 		return SP::Utility::ToTrim(elems[2]);
 	}
 	return "";
+}
+void CHealthManagerFSM::CheckIfPinPadOK()
+{
+	//to check if PinPad is ok, wait for 5 seconds,then go on
+	//RVC.CardStore have no PinPad
+	if (m_sysInfo.strMachineType.Compare("RVC.CardStore", true) == 0)
+		return;
+	ULONGLONG ullWaitStart, ullWaitEnd;
+	ullWaitEnd = ullWaitStart = SP::Module::Comm::RVCGetTickCount();
+	PinPadService_ClientBase* pClient = new PinPadService_ClientBase(this->m_pEntity);
+
+	if (pClient != NULL)
+	{
+		ErrorCodeEnum eErrCode = pClient->Connect();
+		if (eErrCode == Error_Succeed)
+		{
+			do {
+				PinPadService_GetDevInfo_Req reqQ;
+				PinPadService_GetDevInfo_Ans ansQ;
+				eErrCode = (*pClient)(EntityResource::getLink().upgradeLink())->GetDevInfo(reqQ, ansQ, 1000);
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("eErrCode:%d,ansQ.state:%d", eErrCode, ansQ.state);
+				ullWaitEnd = SP::Module::Comm::RVCGetTickCount();
+				if (eErrCode == Error_DevNotAvailable)
+				{
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("pinpad open failed");
+					break;
+				}
+				else if (eErrCode == Error_Succeed)
+					break;
+
+				if (ullWaitEnd - ullWaitStart > m_maxWaitForPinPad)
+					break;
+				Sleep(500);
+			} while (true);
+		}
+		else
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to pinpad failed.error code:%d", eErrCode);
+	}
+	else
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("new PinPadService_ClientBase failed.GetLastError:%d", GetLastErrorRVC());
+	m_ullWaitForPinPad = ullWaitEnd - ullWaitStart;
+	return;
 }

+ 12 - 9
Module/mod_healthmanager/HealthManagerFSM.h

@@ -155,13 +155,14 @@ public:
 		FSM_RULE_ENTRY(s11,s6,USER_EVT_SWITCH_BACK_TO_RVC,6)
 	END_FSM_RULE()
 
-	CHealthManagerFSM():m_SysState("I"),m_pACClient(NULL)
-	, m_iAccessAuth(VtmLoad_AccessAuth_Init)
-	, m_custMngerState(0), m_pDevCtrlClient(NULL), m_bHasAuthEver(false)
-	, m_checkCode(""), m_bFirstAccessAuth(true)
-	, m_bIEBeforeHealth(false), m_bInAccessAuthDoWork(false)
-	, m_bEntityNewStart(true), m_iDoNotUpdateWKDaily(0)
-	, m_wkUpdatePeriod(1), m_bPinPadOpenSuc(false), m_LoadEntityList(""), m_cpuInfo(""){}
+		CHealthManagerFSM() :m_SysState("I"), m_pACClient(NULL)
+		, m_iAccessAuth(VtmLoad_AccessAuth_Init)
+		, m_custMngerState(0), m_pDevCtrlClient(NULL), m_bHasAuthEver(false)
+		, m_checkCode(""), m_bFirstAccessAuth(true)
+		, m_bIEBeforeHealth(false), m_bInAccessAuthDoWork(false)
+		, m_bEntityNewStart(true), m_iDoNotUpdateWKDaily(0)
+		, m_wkUpdatePeriod(1), m_bPinPadOpenSuc(false), m_LoadEntityList(""), m_cpuInfo(""), m_ullAccessAuthCost(0), m_ullSIPPhoneCost(0), m_ullTokenKeeperCost(0) 
+		, m_ullWaitForPinPad(0){}
 	~CHealthManagerFSM(){}
 	virtual ErrorCodeEnum OnInit();
 	virtual ErrorCodeEnum OnExit();
@@ -222,6 +223,7 @@ public:
 	void QueryHardwareInfo(SpReqAnsContext<HealthManagerService_QueryHardwareInfo_Req, HealthManagerService_QueryHardwareInfo_Ans>::Pointer ctx);
 	void SetPinPadOpenSuc() { m_bPinPadOpenSuc = true; }
 	void SetLoadEntityList(CSimpleStringA csEntityList) { m_LoadEntityList = csEntityList; }
+	void CheckIfPinPadOK();
 
 private:
 	
@@ -244,12 +246,13 @@ private:
 private:
 	CSimpleStringA m_SysState, m_checkCode, m_LoadEntityList, m_cpuInfo;
 	int m_fsmState, m_stateBeforeMaintain, m_custMngerState, m_preFsmState
-		,m_iAccessAuth/*-1 未准入; 0 准入失败;1 准入成功*/, m_iDoNotUpdateWKDaily, m_wkUpdatePeriod/*if exceed the period time,we should update key*/;
+		,m_iAccessAuth/*-1 未准入; 0 准入失败;1 准入成功*/, m_iDoNotUpdateWKDaily, m_wkUpdatePeriod/*if exceed the period time,we should update key*/
+		,m_maxWaitForPinPad/*ms*/;
 	AccessAuthService_ClientBase *m_pACClient;
 	bool m_bHasAuthEver, m_bFirstAccessAuth
 		, m_bIEBeforeHealth, m_bInAccessAuthDoWork, m_bEntityNewStart, m_bPinPadOpenSuc;
 	DWORD m_elapseTimeFromOSStart;
-	ULONGLONG m_ullElapseFromOSStart, m_ullAuthStart;
+	ULONGLONG m_ullElapseFromOSStart, m_ullAuthStart, m_ullAccessAuthCost, m_ullTotalCost, m_ullSIPPhoneCost, m_ullTokenKeeperCost, m_ullWaitForPinPad;
 	DeviceControlService_ClientBase *m_pDevCtrlClient;
 	CSystemStaticInfo m_sysInfo;
 	std::map<string, string> m_computerInfo;

+ 15 - 9
Module/mod_healthmanager/mod_healthmanager.cpp

@@ -612,6 +612,8 @@ bool CHealthManagerEntity::StartGuardian()
 
 	//oiltmp TODO 如果是未安装,不启动guardian
 	//root.ini 不存在,表示未安装
+	CSystemStaticInfo staticInfo;
+	GetFunction()->GetSystemStaticInfo(staticInfo);
 
 	/** 添加日志控制逻辑 Gifur@202414]*/
 	SP::Module::Comm::Settings::InitializeOtherLogSwitch(this, "guardian");
@@ -641,8 +643,12 @@ bool CHealthManagerEntity::StartGuardian()
 		}
 
 	}
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("guardian path[%s]", csBinPath.GetData());
-	csAll = csSep +  csBinPath + csSep;
+
+	csAll = csSep + csBinPath + csSep + " " + staticInfo.strTerminalID;//add terminalno to guardian
+
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("guardian path[%s], run script[%s]", csBinPath.GetData(), csAll.GetData());
+	
+	
 	LPTSTR szCmdline = _strdup(csAll);
 	if( !CreateProcessA( NULL,szCmdline,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) 
 	{
@@ -657,8 +663,8 @@ bool CHealthManagerEntity::StartGuardian()
 	tk_process_t* process = NULL;
 	tk_process_option_t option;
 	csBinPath += "/guardian";
-	Dbg("path:%s", (const char*)csBinPath);
-	sprintf(app, "%s %s %d", (const char*)csBinPath, "oiltest", 1);
+	sprintf(app, "%s %s %s %d", (const char*)csBinPath, staticInfo.strTerminalID.GetData(), "oiltest", 1);
+	Dbg("path:%s, app:%s", (const char*)csBinPath, (const char*)app);
 	option.exit_cb = NULL;
 	option.file = NULL;
 	option.flags = 0;
@@ -1332,8 +1338,8 @@ bool CHealthManagerEntity::StartManagerDesktopPage(CSimpleStringA pageName)
 		req.mainUrl = statusPagePath;
 		req.type = "SpecialPageFromOtherEntity";
 		req.name = "tempMessage";
-		req.param1 = CSimpleStringA::Format("%d,%d", width, height);
-		req.param2 = CSimpleStringA::Format("0,0");
+		req.param1 = CSimpleStringA::Format("%d*%d", width, height);
+		req.param2 = CSimpleStringA::Format("0*0");
 		req.top = -1;
 
 		error = (*chromiumClient)(EntityResource::getLink().upgradeLink())->OpenBrowser(req, ans, 10000);
@@ -1458,7 +1464,7 @@ void CHealthManagerEntity::OnEntityStateHook(const char* pszEntityName, const ch
 				m_modRunInfo[pszEntityName].abnormalCount++;
 				EntityLostProcTask* task;
 				//oiltmp@20240415 to be delete after x months
-				if (_strnicmp("CardIssuer", pszEntityName, strlen("CardIssuer")) == 0)
+				if (_strnicmp("CardIssuer", pszEntityName, strlen(pszEntityName)) == 0)
 				{
 					if (m_sysStaticInfo.strMachineType.Compare("RVC.CardStore") == 0 || m_sysStaticInfo.strMachineType.Compare("RVC.CardPrinter") == 0)
 						task = new EntityLostProcTask(this, "CardIssuerStore");
@@ -1527,7 +1533,7 @@ void CHealthManagerEntity::OnAnswer(CSmartPointer<IAsynWaitSp> pAsynWaitSp)
 		if (!m_modRunInfo[new_entry->EntityName].bAbnormalBusy)
 		{
 			//oiltmp@20240415 to be delete after x months
-			if (_strnicmp("CardIssuer", new_entry->EntityName.GetData(), strlen("CardIssuer")) == 0)
+			if (_strnicmp("CardIssuer", new_entry->EntityName.GetData(), new_entry->EntityName.GetLength()) == 0)
 			{
 				if (m_sysStaticInfo.strMachineType.Compare("RVC.CardStore") == 0 || m_sysStaticInfo.strMachineType.Compare("RVC.CardPrinter") == 0)
 				{
@@ -1623,7 +1629,7 @@ ErrorCodeEnum CHealthManagerEntity::CheckEntity(const char* pszEntityName, Entit
 	CSmartPointer<IAsynWaitSp> spWait;
 	ErrorCodeEnum errCode;
 	//oiltmp@20240415 to be delete after x months
-	if (_strnicmp("CardIssuer", pszEntityName, strlen("CardIssuer")) == 0)
+	if (_strnicmp("CardIssuer", pszEntityName, strlen(pszEntityName)) == 0)
 	{
 		if (m_sysStaticInfo.strMachineType.Compare("RVC.CardStore") == 0 || m_sysStaticInfo.strMachineType.Compare("RVC.CardPrinter") == 0)
 		{

+ 1 - 1
Module/mod_heartbeat/HeartBeatFSM.cpp

@@ -60,7 +60,7 @@ ErrorCodeEnum CHeartBeatFSM::OnInit()
 	spConfig->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "CrossUseJS", tmpCrossUseJS);
 	if (tmpCrossUseJS == 1) {
 		m_bCrossUseJS = true;//使用JS跨机接口
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CrossUseJS=", tmpCrossUseJS);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CrossUseJS=%d", tmpCrossUseJS);
 	}
 	
 	spConfig->ReadConfigValueInt(GetEntityBase()->GetEntityName(),"TestFlag",m_tmpTestFlag);

+ 0 - 25
Module/mod_livenessdetection/Event.h

@@ -1,30 +1,5 @@
 #pragma once
 
-#define WM_CAMERA_FAULT	    (WM_USER+100)
-#define WM_LIVENESS_DONE	(WM_USER+101)
-#define WM_IMAGE_INFO		(WM_USER+102)
-#define WM_TIME_UPDATE		(WM_USER+103)
-#define WM_CAMERA_ECHO	    (WM_USER+104)
-
-// 被动活体超时时间
-#define TIME_LIMIT_PASSIVE		300
-// 主动活体超时时间
-#define TIME_LIMIT_ACTIVE		120
-// 主动回显最短时间
-#define TIME_LEAST_ACTIVE_SHOW	5
-//消息发送间隔时间
-#define TIME_INTERVAL_SENDINFO 3000
-
-#define LOG_EVT_STARTACTIVECAPTURE			0x31400001				//开始主动活体
-#define LOG_EVT_STOPACTIVECAPTURE			0x31400002				//停止主动活体
-#define LOG_EVT_SHOWACTIVECAPTUREMSG		0x31400003				//显示主动活体提示消息
-#define LOG_EVT_ECHOACTIVECAPTURECAM		0x31400004				//通知主动活体回显摄像头号
-#define LOG_EVT_ECHOACTIVECAPTUREIMG		0x31400005				//通知主动活体回显图片
-#define LOG_EVT_ACTIVECAPTURECOST           0x31400006              //主动抓拍时长
-#define LOG_EVT_ACTIVECAPTURELOADDEPFAIL    0x31400007              //主动抓拍依赖加载失败
-#define LOG_EVT_ACTIVECAPTURENOVIDEO        0x31400008              //没有获取到视频帧
-
-
 #define LOG_EVT_STARTVIDEOTRANS				0x31480001				//开始视频传输
 #define LOG_EVT_STOPVIDEOTRANS				0x31480002				//停止视频传输
 #define LOG_EVT_STARTVIDEOCAPTURE			0x31480003				//开始视频抓拍

+ 41 - 47
Module/mod_mediacontroller/capture.cpp

@@ -321,12 +321,12 @@ static int portaudio_capture_start(audio_capture_t* audio_cap)
 	}
 	int in_dev_id = translate_id(true, nId);
 	if (in_dev_id < 0) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("audio in device translate failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("audio in device translate failed!");
 		return Error_AudioIN;
 	}
 	info = Pa_GetDeviceInfo(in_dev_id);
 	if (!info) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get device info failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get device info failed!");
 		return Error_AudioIN;
 	}
 	inParam.channelCount = 1;
@@ -335,7 +335,7 @@ static int portaudio_capture_start(audio_capture_t* audio_cap)
 	inParam.sampleFormat = paInt16;
 	inParam.hostApiSpecificStreamInfo = NULL;
 	if (Pa_IsFormatSupported(&inParam, NULL, CAPTURE_CLOCK) != paNoError) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("audio capture create error, cannot open audio input device");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("audio capture create error, cannot open audio input device");
 		return Error_AudioIN;
 	}
 
@@ -347,12 +347,12 @@ static int portaudio_capture_start(audio_capture_t* audio_cap)
 	}
 	int out_dev_id = translate_id(false, nId);
 	if (out_dev_id < 0) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("audio out device translate failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("audio out device translate failed!");
 		return Error_AudioOut;
 	}
 	info = Pa_GetDeviceInfo(out_dev_id);
 	if (!info) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get device info failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get device info failed!");
 		return Error_AudioOut;
 	}
 	outParam.channelCount = 1;
@@ -361,7 +361,7 @@ static int portaudio_capture_start(audio_capture_t* audio_cap)
 	outParam.sampleFormat = paInt16;
 	outParam.hostApiSpecificStreamInfo = NULL;
 	if (Pa_IsFormatSupported(NULL, &outParam, CAPTURE_CLOCK) != paNoError) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("audio capture create error, cannot open audio input device");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("audio capture create error, cannot open audio input device");
 		return Error_AudioOut;
 	}
 
@@ -369,13 +369,13 @@ static int portaudio_capture_start(audio_capture_t* audio_cap)
 		CAPTURE_FRAME_TIME * CAPTURE_CLOCK/1000, paClipOff|paDitherOff, &StreamCallback, audio_cap);
 
 	if (paError != paNoError) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("port audio open stream failed! paError = %d", paError);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("port audio open stream failed! paError = %d", paError);
 		return Error_AudioIN;
 	}
 
 	paError = Pa_StartStream(audio_cap->stream);
 	if (paError != paNoError) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("port audio start stream failed! paError = %d", paError);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("port audio start stream failed! paError = %d", paError);
 		return Error_AudioIN;
 	}
 
@@ -409,12 +409,12 @@ static int record_portaudio_capture_start(rvc_audio_capture_t* audio_cap)
 
 	int in_dev_id = translate_id(true, nId);
 	if (in_dev_id < 0) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sales audio in device translate failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("sales audio in device translate failed!");
 		return Error_AudioIN;
 	}
 	info = Pa_GetDeviceInfo(in_dev_id);
 	if (!info) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get device info failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get device info failed!");
 		return Error_AudioIN;
 	}
 
@@ -424,7 +424,7 @@ static int record_portaudio_capture_start(rvc_audio_capture_t* audio_cap)
 	salesInParam.sampleFormat = paInt16;
 	salesInParam.hostApiSpecificStreamInfo = NULL;
 	if (Pa_IsFormatSupported(&salesInParam, NULL, audio_cap->iaudio_capture_samplerate) != paNoError) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sales audio capture create error, cannot open audio input device, and current capture sample rate is %d.",audio_cap->iaudio_capture_samplerate);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("sales audio capture create error, cannot open audio input device, and current capture sample rate is %d.",audio_cap->iaudio_capture_samplerate);
 		return Error_AudioIN;
 	}
 
@@ -432,13 +432,13 @@ static int record_portaudio_capture_start(rvc_audio_capture_t* audio_cap)
 		audio_cap->iaudio_capture_peroid * audio_cap->iaudio_capture_samplerate/1000, paClipOff|paDitherOff, &Sales_StreamCallback, audio_cap);
 
 	if (paError != paNoError) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("port audio open sales stream failed! paError = %d", paError);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("port audio open sales stream failed! paError = %d", paError);
 		return Error_AudioIN;
 	}
 
 	paError = Pa_StartStream(audio_cap->stream);
 	if (paError != paNoError) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("port audio start sales stream failed! paError = %d", paError);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("port audio start sales stream failed! paError = %d", paError);
 		return Error_AudioIN;
 	}
 
@@ -797,7 +797,7 @@ static int video_shm_enqueue(Clibvideoqueue *shm_queue, video_frame *frame, unsi
 	tmp_frm.iframeid = iframeid;
 	//unsigned int nowtime = y2k_time_now();
 	if (!shm_queue->InsertVideo(&tmp_frm, flags, ucaptime)) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("caution: insert shm video failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("caution: insert shm video failed!");
 		return Error_Unexpect;
 	} else {
 		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("insert shm video ok, and video frame id is %d.", tmp_frm.iframeid);
@@ -831,7 +831,7 @@ static void env_cap_on_frame(void *user_data, video_frame *frame)
 
 	if (rc != Error_Succeed) 
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("env snapshot queue enqueue failed! Error = %d, camera_type=%d.", rc, video_cap->camera_type);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("env snapshot queue enqueue failed! Error = %d, camera_type=%d.", rc, video_cap->camera_type);
 	}
 	else {
 		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("env snapshot queue enqueue[%d] success and camera_type=%d.", video_cap->frame_id, video_cap->camera_type);
@@ -875,7 +875,7 @@ static void env_cap_on_frame(void *user_data, video_frame *frame)
 		video_shm_enqueue(video_cap->preview_shm_queue, &preview_frame, video_cap->ulastcaptime, 0, video_cap->frame_id);
 		
 		if (rc != Error_Succeed){
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("env preview_shm_queue enqueue failed, error = %d", rc);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("env preview_shm_queue enqueue failed, error = %d", rc);
 		}
 		else {
 			//if (0 == video_cap->frame_id%10){
@@ -898,7 +898,7 @@ static void env_cap_on_frame(void *user_data, video_frame *frame)
 		sws_scale(video_cap->rtp_sws_ctx, src_data, src_linesize, 0, frame->height, rtp_frame.data, rtp_frame.linesize);
 		video_shm_enqueue(video_cap->rtp_shm_queue, &rtp_frame, video_cap->ulastcaptime, 0, video_cap->frame_id);
 		if (rc != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("env rtp_shm_queue enqueue failed! Error = %d", rc);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("env rtp_shm_queue enqueue failed! Error = %d", rc);
 		}
 		else {
 			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("env rtp_shm_queue enqueue[%d] success, and current video queue len is %d.", video_cap->frame_id, video_cap->rtp_shm_queue->GetVideoLens());
@@ -993,7 +993,7 @@ static void opt_cap_on_frame(void *user_data, video_frame *frame)
 
 	if (rc != Error_Succeed) 
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("opt snapshot queue enqueue shm failed! Error = %d, camera_type=%d", rc, video_cap->camera_type);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("opt snapshot queue enqueue shm failed! Error = %d, camera_type=%d", rc, video_cap->camera_type);
 	}
 	else {
 		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("opt snapshot queue enqueue[%d] success, and current video queue len is %d.", video_cap->frame_id, video_cap->snapshot_shm_queue->GetVideoLens());
@@ -1047,7 +1047,7 @@ static void opt_cap_on_frame(void *user_data, video_frame *frame)
 		
 		rc = video_shm_enqueue(video_cap->rtp_shm_queue, &rtp_frame, video_cap->ulastcaptime, 0, video_cap->frame_id);
 		if (rc != Error_Succeed){
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("opt rtp_shm_queue enqueue shm failed! Error = %d, camera_type=%d", rc, video_cap->camera_type);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("opt rtp_shm_queue enqueue shm failed! Error = %d, camera_type=%d", rc, video_cap->camera_type);
 		}
 
 		//static int irtp_frame = 0;
@@ -1191,7 +1191,7 @@ static int video_capture_start_win(video_capture_t* video_cap)
 		dev_id = capture_get_video_device_id(conf->strVideoEnv);
 		if (dev_id == -1) 
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("No environment camera,please check config file or device!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("No environment camera,please check config file or device!");
 			return -1;
 		}
 	}
@@ -1200,7 +1200,7 @@ static int video_capture_start_win(video_capture_t* video_cap)
 		dev_id = capture_get_video_device_id(conf->strVideoOpt);
 		if (dev_id == -1) 
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("No operation camera,please check config file or device!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("No operation camera,please check config file or device!");
 			return -1;
 		}
 	}
@@ -1210,7 +1210,7 @@ static int video_capture_start_win(video_capture_t* video_cap)
 	rc = calc_capture_mode(REC_COMMON_VIDEO_SNAPSHOT_WIDTH, REC_COMMON_VIDEO_SNAPSHOT_HEIGHT, &cap_mode);
 	if (rc != 0) 
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("calc cap_mode failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("calc cap_mode failed!");
 		return rc;
 	}
 
@@ -1230,14 +1230,14 @@ static int video_capture_start_win(video_capture_t* video_cap)
 	rc = videocap_create(&video_cap->cap, &param);
 	if (rc != 0) 
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("videocap create failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("videocap create failed!");
 		return rc;
 	}
 
 	rc = videocap_start(video_cap->cap);
 	if (rc != 0) 
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("videocap start failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("videocap start failed!");
 		videocap_destroy(video_cap->cap);
 		video_cap->cap = NULL;
 		return rc;
@@ -1373,7 +1373,7 @@ namespace MediaController {
 		memcpy(&cap->config, config, sizeof(capture_config_t));
 		cap->audio = audio_capture_create(cap);
 		if (!cap->audio) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create audio capture object failed!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create audio capture object failed!");
 			return Error_Unexpect;
 		}
 
@@ -1381,7 +1381,7 @@ namespace MediaController {
 		if (dev_id_env != -1) {
 			cap->env_video = video_capture_create(cap, CAMERA_TYPE_ENV);
 			if (!cap->env_video) {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create env video object failed!");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create env video object failed!");
 				return Error_Unexpect;
 			}
 		}
@@ -1394,13 +1394,13 @@ namespace MediaController {
 		if (dev_id_opt != -1){
 			cap->opt_video = video_capture_create(cap, CAMERA_TYPE_OPT);
 			if (!cap->opt_video) {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create opt video object failed!");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create opt video object failed!");
 				return Error_Unexpect;
 			}
 		}
 
 		if((dev_id_env == -1)&&(dev_id_opt == -1)){
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("all camera device id error!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("all camera device id error!");
 			capture_destroy(cap);
 			return Error_AllCamera;
 		}
@@ -1419,7 +1419,7 @@ namespace MediaController {
 			cap->env_video = video_capture_create(cap, CAMERA_TYPE_ENV);
 			if (!cap->env_video) 
 			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create env video object failed!");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create env video object failed!");
 				return Error_Unexpect;
 			}
 		}
@@ -1428,7 +1428,7 @@ namespace MediaController {
 			cap->opt_video = video_capture_create(cap, CAMERA_TYPE_OPT);
 			if (!cap->opt_video) 
 			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create opt video object failed!");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create opt video object failed!");
 				return Error_Unexpect;
 			}
 		}
@@ -1446,7 +1446,7 @@ namespace MediaController {
 		memcpy(&cap->rvc_audio_config, config, sizeof(rvc_audio_capture_config_t));
 		cap->rvc_audio = salesrecord_audio_capture_create(cap);
 		if (!cap->rvc_audio) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create sales record audio capture object failed!");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create sales record audio capture object failed!");
 			salesaudio_capture_destroy(cap);
 			cap = NULL;
 			return Error_Unexpect;
@@ -1517,11 +1517,11 @@ namespace MediaController {
 			if (rc != Error_Succeed) {
 				rslt = (ErrorCodeEnum)rc;
 				if (rslt == Error_AudioIN){
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start audio In object failed! rc:%d", rc);
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("start audio In object failed! rc:%d", rc);
 					LogWarn(Severity_Middle, Error_Debug,ERROR_MOD_MEDIACONTROLLER_HANDFREE_OPENFAIL,"open audioIn device fail,please check device");	
 				} 
 				else{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start audio Out object failed! rc:%d", rc);
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("start audio Out object failed! rc:%d", rc);
 					LogWarn(Severity_Middle, Error_Debug,ERROR_MOD_MEDIACONTROLLER_HANDFREE_OPENFAIL,"open audioOut device fail,please check device");	
 				}
 			}
@@ -1544,7 +1544,6 @@ namespace MediaController {
 			if (rc != Error_Succeed) 
 			{
 				cap->env_video->ustarttime = 0;
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start env video capture object failed! rc:%d", rc);
 				char strMessage[MAX_PATH*2] = {0};
 				get_camera_exception_message(strMessage, MAX_PATH*2, cap->config.strVideoEnv, "open environ camera fail, please check device.");
 				LogWarn(Severity_Middle,Error_NotInit,ERROR_MOD_MEDIACONTROLLER_ENVCAM_OPEN,strMessage);
@@ -1559,7 +1558,6 @@ namespace MediaController {
 					if (rc != Error_Succeed) 
 					{
 						cap->opt_video->ustarttime = 0;
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start opt video capture object failed! rc:%d", rc);
 						char strMessage[MAX_PATH*2] = {0};
 						get_camera_exception_message(strMessage, MAX_PATH*2, cap->config.strVideoOpt, "open operate camera fail, please check device.");
 						LogWarn(Severity_Middle,Error_NotInit,ERROR_MOD_MEDIACONTROLLER_OPTCAM_OPEN, strMessage);
@@ -1570,13 +1568,12 @@ namespace MediaController {
 					{
 						cap->opt_video->ustarttime = y2k_time_now();
 						LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_OPTCAM_OPEN, "start optcam success.");
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start env video capture object failed!");
 						return Error_EnvCamera;
 					}
 				}
 				else
 				{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start all video capture object failed!");
+					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("start all video capture object failed!");
 					return Error_AllCamera;
 				}
 			}
@@ -1594,7 +1591,6 @@ namespace MediaController {
 					if (rc != Error_Succeed) 
 					{
 						cap->opt_video->ustarttime = 0;
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start opt video capture object failed! rc:%d", rc);
 						char strMessage[MAX_PATH*2] = {0};
 						get_camera_exception_message(strMessage, MAX_PATH*2, cap->config.strVideoOpt, "open operate camera fail, please check device.");
 						LogWarn(Severity_Middle,Error_NotInit,ERROR_MOD_MEDIACONTROLLER_OPTCAM_OPEN,strMessage);
@@ -1626,7 +1622,6 @@ namespace MediaController {
 				if (rc != Error_Succeed) 
 				{
 					cap->opt_video->ustarttime = 0;
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start opt video capture object failed! rc:%d", rc);
 					char strMessage[MAX_PATH*2] = {0};
 					get_camera_exception_message(strMessage, MAX_PATH*2, cap->config.strVideoOpt, "open operate camera fail,please check device.");
 					LogWarn(Severity_Middle,Error_NotInit,ERROR_MOD_MEDIACONTROLLER_OPTCAM_OPEN,strMessage);
@@ -1636,14 +1631,13 @@ namespace MediaController {
 				else
 				{
 					cap->opt_video->ustarttime = y2k_time_now();
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start env video capture object failed!");
 					LogWarn(Severity_Low, Error_Debug, LOG_EVT_MEDIACONTROLLER_OPTCAM_OPEN, "start optcam success.");
 					return Error_EnvCamera;
 				}
 			}
 			else
 			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start env video Error_AllCamera");
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("start env video Error_AllCamera");
 				return Error_AllCamera;
 			}
 		}
@@ -1660,7 +1654,7 @@ namespace MediaController {
 			}
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("handfree audio is error, not start it.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("handfree audio is error, not start it.");
 		}
 
 		return capture_start_envopt(cap);
@@ -1720,7 +1714,7 @@ namespace MediaController {
 			int rslt = record_audio_capture_start(cap->rvc_audio);
 			if (rslt != Error_Succeed) {
 				if (Error_AudioIN == rslt){
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start audio In object failed! rc:%d", rc);
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("start audio In object failed! rc:%d", rc);
 					LogWarn(Severity_Middle, Error_Debug,ERROR_MOD_MEDIACONTROLLER_HANDFREE_OPENFAIL,"open audioIn device fail,please check device");	
 				} 
 				rc = (ErrorCodeEnum)rslt;
@@ -1748,7 +1742,7 @@ namespace MediaController {
 			}
 		}
 		else{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sales record audio capture stop failed for param error.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("sales record audio capture stop failed for param error.");
 		}
 	}
 
@@ -1916,17 +1910,17 @@ namespace MediaController {
 			if (Error == paNoError) {
 				rc = videoframework_init();
 				if (rc != 0) {
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("videoframework_init failed, rc=%d", rc);
+					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("videoframework_init failed, rc=%d", rc);
 					return Error_Resource;
 				}
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("PaInitialize failed, rc=%d", Error);
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("PaInitialize failed, rc=%d", Error);
 				return Error_Resource;
 			}
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("coinitialze failed! hr:%d", hr);
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("coinitialze failed! hr:%d", hr);
 			return Error_Resource;
 		}
 

+ 8 - 11
Module/mod_mediacontroller/mod_mediacontroller.cpp

@@ -578,7 +578,7 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 	if (env_n == 0) {
 		if (iEnvEmptyTimes < CAMERA_BUG_THRESHOLD){
 			iEnvEmptyTimes++; 
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get env camera picture fail, times=%d.",iEnvEmptyTimes);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get env camera picture fail, times=%d.",iEnvEmptyTimes);
 		}	
 	} 
 	else if (env_n == -1){
@@ -597,7 +597,7 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 		if(((y2k_time_now()-nLastEnvTime) > m_iCamTimeout)&&!bEnvTimeout)
 		{
 			bEnvTimeout = true;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("bEnvTimeout.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("bEnvTimeout.");
 		} 
 		else if (((y2k_time_now()-nLastEnvTime) < m_iCamTimeout)&&bEnvTimeout)
 		{
@@ -647,7 +647,7 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 			}
 			else if (m_nCameraErrorCode == Error_AllCamera){
 				m_nCameraErrorCode = Error_OptCamera;
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("changeSysvar to Opt_Error");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("changeSysvar to Opt_Error");
 			}
 		}
 		ChangeSysvar(m_nCameraErrorCode);
@@ -661,7 +661,7 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 			if (iOptEmptyTimes < CAMERA_BUG_THRESHOLD)
 			{
 				iOptEmptyTimes++; 
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get opt camera picture fail, times = %d.",iOptEmptyTimes);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get opt camera picture fail, times = %d.",iOptEmptyTimes);
 			}
 		}
 		else if (opt_n == -1)
@@ -685,12 +685,12 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 			if (((y2k_time_now() - nLastOptTime) > m_iCamTimeout) && !bOptTimeout)
 			{
 				bOptTimeout = true;
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("bOptTimeout");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("bOptTimeout");
 			}
 			else if (((y2k_time_now() - nLastOptTime) < m_iCamTimeout) && bOptTimeout)
 			{
 				bOptTimeout = false;
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("change opt camera from bOptTimeout to ok");
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("change opt camera from bOptTimeout to ok");
 			}
 		}
 	}
@@ -730,7 +730,7 @@ void CMediaControllerEntity::OnTimeCameraStatusCheck()
 		else if (m_nCameraErrorCode == Error_AllCamera)
 		{
 			m_nCameraErrorCode = Error_EnvCamera;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("changeSysvar to Env_Error");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("changeSysvar to Env_Error");
 		}
 		ChangeSysvar(m_nCameraErrorCode);
 	}
@@ -1533,7 +1533,7 @@ ErrorCodeEnum CMediaControllerEntity::StartCamera()
 			CSimpleStringA strValue("");
 			Func->GetSysVar(SYSVAR_SOUNDCARDSTATE, strValue);
 			m_capture->config.strAudioState = strValue;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
 
 			Error = capture_start(m_capture);
 			if (Error != Error_Succeed)
@@ -1992,9 +1992,6 @@ void MediaServiceSession::Handle_StartSpeakerRender(SpOnewayCallContext<MediaSer
 void MediaServiceSession::Handle_StopSpeakerRender(SpOnewayCallContext<MediaService_StopSpeakerRender_Info>::Pointer ctx)
 {
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	//if (true == m_pEntity->m_bHasStartSpeakerRender){
-	//	m_pEntity->StopSpeakerAudioRender();
-	//} 
 }
 
 void MediaServiceSession::Handle_ManipulateMediaDevice(SpReqAnsContext<MediaService_ManipulateMediaDevice_Req, MediaService_ManipulateMediaDevice_Ans>::Pointer ctx)

+ 20 - 9
Module/mod_pinpad/PinPadFSM.cpp

@@ -704,10 +704,15 @@ ErrorCodeEnum CPinPadFSM::GetEncryptText(SpReqAnsContext<PinPadService_GetInputS
 	if (errCode != Error_Succeed)
 	{
 		SetErrorAndLog(errCode, MEC_DEVAPI_EPP_StartPinInput, "DevAdapter::StartPinInput", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, PinPadService_LogCode_GetInputSM);
-		ctxSM->Answer(Error_DevCommFailed, GetAlarmDEC());
+		DWORD dwCode = GetAlarmDEC();
+		ctxSM->Answer(Error_DevCommFailed, dwCode);
+		CSimpleStringA tmpRTA(true), tmpDesc(true);
+		if (GetEntityBase()->GetFunction()->GetVTMErrMsg(dwCode, tmpDesc, tmpRTA) == Error_Succeed)
+			DbgToBeidou(ctxSM->link, "GetEncryptTextJS").setReturnCode(tmpRTA)();
 		return Error_DevCommFailed;
 	}
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::StartPinInput").setCostTime(m_ullEndTime - m_ullBeginTime)();
+	DbgToBeidou(ctxSM->link, "GetEncryptText")();
 	char* buf = new char[len + 1];
 	memset(buf, 0, len + 1);
 	int readed = 0;
@@ -1172,15 +1177,20 @@ int CPinPadFSM::EncryptSM(SpReqAnsContext<PinPadService_EncryptDataSM_Req, PinPa
 	m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 	ErrorCodeEnum eErr = m_hDevHelper->ActiveWorkingKey(1, 1);
 	m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
-	DbgToBeidou(ctx->link, "ActiveWorkingKey")();
+		
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(PinPadService_LogCode_EncryptDataSM).setCostTime(m_ullEndTime - m_ullBeginTime)("%s", SpStrError(eErr));
 	if (eErr != Error_Succeed)
 	{
 		SetErrorAndLog(eErr, MEC_DEVAPI_EPP_ActiveWorkingKey, "DevAdapter::ActiveWorkingKey", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime);
-		ctx->Answer(Error_Unexpect, GetAlarmDEC());
+		DWORD dwCode = GetAlarmDEC();
+		ctx->Answer(Error_Unexpect, dwCode);
+		CSimpleStringA tmpRTA(true), tmpDesc(true);
+		if (GetEntityBase()->GetFunction()->GetVTMErrMsg(dwCode, tmpDesc, tmpRTA) == Error_Succeed)
+			DbgToBeidou(ctx->link, "ActiveWorkingKey").setReturnCode(tmpRTA)();
 		m_bEncrypt = false;
 		return 0;
 	}
+	DbgToBeidou(ctx->link, "ActiveWorkingKey")();
 	EnDecryptInfo srcData, dstData;
 	ZeroMemory(srcData.data, MAX_EN_DECRYPT_DATA_SIZE);
 	ZeroMemory(dstData.data, MAX_EN_DECRYPT_DATA_SIZE);
@@ -1310,11 +1320,7 @@ ErrorCodeEnum CPinPadFSM::GetDevInfo(DevCategoryInfo &devInfo)
 
 	return eErrDev;
 }
-void CPinPadFSM::SetInWhatPage(int iPageType)
-{
-	m_iInWhatPage = iPageType;
-	return;//oilyang@20200319 去掉任意情况下可输入
-}
+
 void CPinPadFSM::SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext)
 {
 	if (m_eDevState == DEVICE_STATUS_NORMAL)
@@ -1396,10 +1402,15 @@ ErrorCodeEnum CPinPadFSM::GetEncryptTextJS(SpReqAnsContext<PinPadService_GetInpu
 	if (errCode != Error_Succeed)
 	{
 		SetErrorAndLog(errCode, MEC_DEVAPI_EPP_StartPinInput, "DevAdapter::StartPinInput", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime, PinPadService_LogCode_GetInputSM);
-		ctxJS->Answer(Error_DevCommFailed, GetAlarmDEC());
+		DWORD dwCode = GetAlarmDEC();
+		ctxJS->Answer(Error_DevCommFailed, dwCode);
+		CSimpleStringA tmpRTA(true), tmpDesc(true);
+		if (GetEntityBase()->GetFunction()->GetVTMErrMsg(dwCode, tmpDesc, tmpRTA) == Error_Succeed)
+			DbgToBeidou(ctxJS->link, "GetEncryptTextJS").setReturnCode(tmpRTA)();
 		return Error_DevCommFailed;
 	}
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::StartPinInput").setCostTime(m_ullEndTime - m_ullBeginTime)();
+	DbgToBeidou(ctxJS->link, "GetEncryptTextJS")();
 	char* buf = new char[CurrentPasswordLen + 1];
 	memset(buf, 0, CurrentPasswordLen + 1);
 	int readed = 0;

+ 1 - 6
Module/mod_pinpad/PinPadFSM.h

@@ -172,7 +172,7 @@ public:
 		m_bWaitingMore(false), m_bExit(false), m_bPlainPin(true),
 		m_bEntityExit(false), m_bPinInput(false), m_bLoadKey(false), m_bEncrypt(false)
 		, m_dwDevCommFailCount(0), m_dwPinPadRunCount(0), m_eDevState(DEVICE_STATUS_NOT_READY), m_encryptkey(1)
-		, m_bSM(false), m_bSMLoaded(false), m_iInWhatPage(PageType_Init), m_szModel(""), m_szType("")
+		, m_bSM(false), m_bSMLoaded(false), m_szModel(""), m_szType("")
 		, m_szVendor(""),m_csMachineType(true), m_csSite(true), m_terminalNo(true), m_port(true), m_Baudrate(true)
 		, m_devSN(""), m_bPinInputJS(false), m_bUseBackupSN(true){
 			HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x206);
@@ -275,7 +275,6 @@ public:
 		return 0;
 	}
 
-	void SetInWhatPage(int iPageType);
 	void SelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext);
 	void ToLogWarnInfoAboutTermCustom();
 	bool IsInGetInputJS() { return m_bPinInputJS; }
@@ -296,12 +295,8 @@ private:
 	DWORD m_dwDevCommFailCount,m_dwPinPadRunCount;
 	DevStateEnum m_eDevState;
 	int m_encryptkey;
-	int m_iInWhatPage/*在哪个页面,区分首页,用户桌面,其他页*/;
 	CSimpleStringA m_csMachineType, m_csSite, m_terminalNo,m_lastCheckCode;
 	CSystemStaticInfo m_sysStaticInfo;
-
-	CSimpleStringA m_csAlarmMsg;
-	bool IsInBusiness() { return (m_iInWhatPage == PageType_Other); }
 };
 
 struct InitTask : public ITaskSp

+ 1 - 1
Module/mod_pinpad/mod_PinPad.h

@@ -181,7 +181,7 @@ public:
 			ErrorCodeEnum eGetDevInfo = m_fsm.GetDevInfo(devInfo);
 			if (eGetDevInfo == Error_Succeed)
 			{
-				//oiltmp@20240823 纪林的与业务组的初始化优化完成之后,是不是不要再拼接了?
+				//oiltmp@20240823 绾�灄鐨勪笌涓氬姟缁勭殑鍒濆�鍖栦紭鍖栧畬鎴愪箣鍚庯紝鏄�笉鏄�笉瑕佸啀鎷兼帴浜嗭紵
 				CSimpleStringA tmpAddStr("");
 				tmpAddStr = tmpAddStr + "Vendor=" + devInfo.szVendor;
 				if (devInfo.szModel[strlen(devInfo.szModel) - 1] == '#')

+ 1 - 1
Module/mod_recorder/mod_recorder.cpp

@@ -677,7 +677,7 @@ void CRecorderEntity::StartRecord(const char *videofilename)
 	CSmartPointer<IEntityFunction> Func = GetFunction();
 	CSimpleStringA strValue("");
 	Func->GetSysVar(SYSVAR_SOUNDCARDSTATE, strValue);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
 	if ('N' == strValue[0] || 'P' == strValue[0]) {
 		tAudioParams.bMuteAudioMode = false;
 	}

+ 3 - 19
Module/mod_recorder/recordinfo.cpp

@@ -1,7 +1,7 @@
 #include "recordinfo.h"
 #include "strutil.h"
 #include "Event.h"
-
+#include "CommEntityUtil.hpp"
 
 void HttpsLogCallBack(const char* logtxt) {
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("HttpsLogCallBack")("HttpsLogCallBack: %s.", logtxt);
@@ -67,13 +67,13 @@ int post_video_recordinfo_list(unsigned int& uposttime, CSimpleStringA& errormsg
 
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("begin http get request, timeout is %d, printdbg flag is %s.", req.m_timeOut, req.m_printDbg ? "true" : "false");
 
-	unsigned int ustarttime = get_millisec_time();
+	unsigned int ustarttime = SP::Module::Comm::RVCGetTickCount();
 
 	RecordInfoHTTPRet ret;
 	if (client->Post(req, ret)) {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("post result is %s, returnCode:%s, code:%s, errorMsg:%s, message:%s.",
 			ret.m_success ? "success" : "failed", ret.m_returnCode.c_str(), ret.m_code.c_str(), ret.m_errorMsg.c_str(), ret.m_message.c_str());
-		uposttime = get_millisec_time() - ustarttime;
+		uposttime = SP::Module::Comm::RVCGetTickCount() - ustarttime;
 		iret = 0;
 	}
 	else {
@@ -83,19 +83,3 @@ int post_video_recordinfo_list(unsigned int& uposttime, CSimpleStringA& errormsg
 	return iret;
 }
 
-
-unsigned int get_millisec_time()
-{
-#ifdef RVC_OS_LINUX
-	unsigned int uptime = 0;
-	struct timespec on;
-	if (clock_gettime(CLOCK_MONOTONIC, &on) == 0) {
-		uptime = on.tv_sec * 1000 + on.tv_nsec / 1000000;
-	}
-		
-	return uptime;
-
-# else
-	return GetTickCount();
-#endif
-}

+ 0 - 2
Module/mod_recorder/recordinfo.h

@@ -99,6 +99,4 @@ struct RecordInfoHTTPRet : CHTTPRet {
 
 int post_video_recordinfo_list(unsigned int& uposttime, CSimpleStringA& errormsg, video_record_info_t* pinfo, int itimeout, bool bprintdbg);
 
-unsigned int get_millisec_time();
-
 #endif

+ 8 - 8
Module/mod_sipphone/Event.h

@@ -153,6 +153,7 @@
 #define EVENT_MOD_SIP_ENTITY_STARTED								0x301A0001	//sipphone entity start
 #define EVENT_MOD_SIP_INVITE_SEND									0x301A0002	//sip invite send
 #define EVENT_MOD_SIP_PROCESS_MSG									0x301A0003	//sip process messsage
+#define EVENT_MOD_SIP_ENTITY_STARTING_COST							0x301A0004	//实体启动耗时
 
 //event
 #define EVENT_MOD_CONNECT_PICKUP_CALL								0x10303041	//提机呼叫
@@ -175,7 +176,6 @@
 #define LOG_EVT_EXIT_ACM_FLOW										0x30500002  //进入坐席控制流程(initiactivetransfer发送)
 
 
-#define LOG_EVT_CHANGELIVEDETECTIONCAM								0x31400004  //通知主动活体回显摄像头号
 #define LOG_EVT_RELEASELIVEDETECTION								0x30400003  //通知sipphone释放主动活体
 //add by chh 20170104
 #define LOG_EVT_UI_HIDEONLINEVIDEO									0x30B00010	//隐藏视频连线窗口
@@ -188,15 +188,15 @@
 #define LOG_EVT_UI_SHOWPERSONAREA									0x30B00015	//显示隐藏人形框
 
 	
-#define LOG_EVT_UI_STARTRECORD					0x30B00001				//开始录像
-#define LOG_EVT_UI_STOPRECORD					0x30B00002				//停止录像
-#define LOG_EVT_UI_RETURNMENU					0x30B00006				//退出到主菜单
+#define LOG_EVT_UI_STARTRECORD										0x30B00001	//开始录像
+#define LOG_EVT_UI_STOPRECORD										0x30B00002	//停止录像
+#define LOG_EVT_UI_RETURNMENU										0x30B00006	//退出到主菜单
 
-#define LOG_EVT_UI_STARTREMOTERECORD			0x30B0000F				//开始远程双录
-#define LOG_EVT_UI_STOPREMOTERECORD				0x30B00018				//停止远程录像
+#define LOG_EVT_UI_STARTREMOTERECORD								0x30B0000F	//开始远程双录
+#define LOG_EVT_UI_STOPREMOTERECORD									0x30B00018	//停止远程录像
 
-#define LOG_EVT_HANDFREE_MODE_REMOTE_CALL		0x30400006				//以免提模式开始远程连线
-#define LOG_EVT_PICKUP_MODE_REMOTE_CALL			0x30400007				//以话筒模式开始远程连线
+#define LOG_EVT_HANDFREE_MODE_REMOTE_CALL							0x30400006	//以免提模式开始远程连线
+#define LOG_EVT_PICKUP_MODE_REMOTE_CALL								0x30400007	//以话筒模式开始远程连线
 
 #define ACM_CONTROL_PERSONAREA					0x30 // 控制人形框,0:隐藏,1:显示
 

+ 17 - 4
Module/mod_sipphone/audio_session.cpp

@@ -447,24 +447,28 @@ static int phonemedia_start(audio_session_t *session)
 	status = apr_pool_create(&media->pool, NULL);
 	if (status != APR_SUCCESS) {
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_APR_POOL_CREATE_FAILED, "create media pool failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA310C")("创建音频引擎内存分配失败");
 		return Error_Resource;
 	}
 
 	status = audioengine_create(media->pool, &media->engine);
 	if (status != APR_SUCCESS) {
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_ENGINE_CREATE_FAILED, "create audio engine failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA310D")("创建音频引擎失败");
 		goto on_error;
 	}
 
 	status = audioengine_start(media->engine);
 	if (status != APR_SUCCESS) {
-		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_ENGINE_START_FAILED, "audio engine  start failed!");
+		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_ENGINE_START_FAILED, "audio engine start failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA310E")("启动音频引擎失败");
 		goto on_error;
 	}
 
 	rc = rtp_session_create2(conf->local_rtp_ip, conf->local_rtp_port, 2, &media->rtpsess);
 	if (rc != 0) {
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_RTP_SESSION_CREATE_FAILED, CSimpleStringA::Format("audio rtp session create2 failed and local port is %d, rc=%d", conf->local_rtp_port, rc).GetData());
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA310F")("创建音频流通道失败");
 		//LogWarn(Severity_Low, Error_InvalidState, EVENT_MOD_SIP_AUDIO_RTP_CREATE, CSimpleStringA::Format("audio rtp session create2 failed and local port is %d, rc=%d", conf->local_rtp_port, rc).GetData());
 		goto on_error;
 	}
@@ -473,18 +477,21 @@ static int phonemedia_start(audio_session_t *session)
 	rc = rtp_session_reset2(media->rtpsess, conf->dir, conf->remote_rtp_ip, conf->remote_rtp_port, conf->remote_rtp_port + 1);
 	if (rc != 0) {
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_RTP_SESSION_RESET_FAILED, "audio rtp session reset failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3110")("重置音频流通道失败");
 		goto on_error;
 	}
 	
 	status = audiobridge_create(media->pool, media->engine, &media->bridge);
 	if (status != APR_SUCCESS){
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_BRIDGE_CREATE_FAILED, "audio bridge create failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3111")("音频通道桥接失败");
 		goto on_error;
 	}
 
 	status = apr_pool_create(&media->micspk_pool, media->pool);
 	if (status != APR_SUCCESS){
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_APR_POOL_CREATE_FAILED, "create media micspk_pool failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3112")("创建音频设备管理内存分配失败");
 		goto on_error;
 	}
 
@@ -502,6 +509,7 @@ status = audiomicspk2_create(media->micspk_pool, media->engine, opt_micspk, AUDI
 #endif
 	if (status != APR_SUCCESS){
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_MICSPK_CREATE_FAILED, "create audio audio micspk create failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3113")("创建音频设备管理失败");
 		goto on_error;
 	}
 	//音频回调
@@ -525,6 +533,7 @@ status = audiomicspk2_create(media->micspk_pool, media->engine, opt_micspk, AUDI
 		status = audiodsp_create(media->micspk_pool, media->engine, read_opt, write_opt, AUDIO_CLOCK, &media->dspstream);
 		if (status != APR_SUCCESS){
 			LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_DSP_CREATE_FAILED, "create audio dsp failed!");
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3114")("创建音频信号处理器失败");
 			goto on_error;
 		}
 	}
@@ -541,6 +550,7 @@ status = audiomicspk2_create(media->micspk_pool, media->engine, opt_micspk, AUDI
 		conf->local_ptime*2*AUDIO_CLOCK/1000, &media->resizestream);
 	if (status != APR_SUCCESS){
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_RESIZE_CREATE_FAILED, "create audio resize failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3115")("创建音频重采样失败");
 		goto on_error;
 	}
 
@@ -548,12 +558,14 @@ status = audiomicspk2_create(media->micspk_pool, media->engine, opt_micspk, AUDI
 		AUDIO_CODEC_OPT_ENCODE_WRITE, &media->codecstream);
 	if (status != APR_SUCCESS){
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_CODEC_CREATE_FAILED, "create audio codec failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3116")("创建音频编解码器失败");
 		goto on_error;
 	}
 
 	status = audiortp_create(media->pool, media->engine, media->rtpsess, &media->rtpstream);
 	if (status != APR_SUCCESS){
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_RTP_CREATE_FAILED, "create audio rtp failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3117")("创建音频rtp失败");
 		goto on_error;
 	}
 
@@ -631,6 +643,7 @@ status = audiomicspk2_create(media->micspk_pool, media->engine, opt_micspk, AUDI
 	status = audiocontext_create(media->pool, media->engine, &media->context);
 	if (status != APR_SUCCESS){
 		LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_CONTEXT_CREATE_FAILED, "create audio context failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3118")("创建音频流水线管理器失败");
 		goto on_error;
 	}
 
@@ -641,7 +654,7 @@ status = audiomicspk2_create(media->micspk_pool, media->engine, opt_micspk, AUDI
 
 on_error:
 	phonemedia_stop(media);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("phonemedia_stop error!!!");
+	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("phonemedia_stop error!!!");
 	return Error_Resource;
 }
 
@@ -833,13 +846,13 @@ static void __audionslog(void* user_data, const char* fmt, va_list arg)
 	if (n >= MAX_PATH) {
 		char* buf = (char*)malloc((size_t)(n + 1));
 		vsnprintf(buf, n + 1, fmt, arg);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s", buf);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s", buf);
 		free(buf);
 	}
 	else {
 		char strlog[MAX_PATH] = { 0 };
 		vsnprintf(strlog, MAX_PATH, fmt, arg);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s", strlog);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s", strlog);
 	}
 }
 

+ 5 - 12
Module/mod_sipphone/endpoint.cpp

@@ -465,7 +465,8 @@ static void endpoint_media_update_audio(endpoint_call_t *call, media_desc_t *aud
 			conf.aec[DEV_HANDFREE] = !!ep_conf->audio_dsp.audio_handfree_aec;
 			rc = audio_session_create(&conf, &call->audio);
 			if (rc != 0) {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create audio session failed! rc = %d", rc);
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("create audio session failed! rc = %d", rc);
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3109")("视频连线创建音频通道失败");
 				return;
 			}
 		}
@@ -492,6 +493,7 @@ static void endpoint_media_update_audio(endpoint_call_t *call, media_desc_t *aud
 		if (rc != 0) 
 		{
 			LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_AUDIO_INITFAIL, CSimpleStringA::Format("start audio session failed! rc = %d.", rc).GetData());
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA310A")("视频连线启动音频通道失败");
 			audio_session_destroy(call->audio);
 			call->audio = NULL;
 			return;
@@ -1151,15 +1153,6 @@ static int __endpoint_break(void *arg)
 	return 0;
 }
 
-#ifdef RVC_OS_WIN
-#else
-unsigned long GetTickCount()
-{
-	struct timespec ts;
-	clock_gettime(CLOCK_MONOTONIC, &ts);
-	return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
-}
-#endif
 
 static endpoint_t *__endpoint_create(CEntityBase *pEntity, const endpoint_conf_t *conf,int nDev)
 {
@@ -1171,10 +1164,10 @@ static endpoint_t *__endpoint_create(CEntityBase *pEntity, const endpoint_conf_t
 
 	memcpy(&ep->conf, conf, sizeof(endpoint_conf_t));
 
-	ep->media_port_seq = (conf->media_start_port + (GetTickCount() % (conf->media_stop_port - conf->media_start_port))) & 0xfffc;
+	ep->media_port_seq = (conf->media_start_port + (SP::Module::Comm::RVCGetTickCount() % (conf->media_stop_port - conf->media_start_port))) & 0xfffc;
 	
 	ep->entity = pEntity;
-	ep->call_seq = GetTickCount();
+	ep->call_seq = SP::Module::Comm::RVCGetTickCount();
 	ep->curr_audio_dev_type = nDev;
 	INIT_LIST_HEAD(&ep->call_list);
 

+ 1 - 0
Module/mod_sipphone/endpoint.h

@@ -4,6 +4,7 @@
 #pragma once
 #include "EventCode.h"
 #include "mod_counterconnector/CallType.h"
+#include "CommEntityUtil.hpp"
 
 #ifdef _WIN32
 #else

+ 18 - 31
Module/mod_sipphone/mod_sipphone.cpp

@@ -248,6 +248,7 @@ static int tovalidwidth(int iwidth)
 	}
 }
 
+
 CSIPEntity::CSIPEntity() : m_pCurrentSession(NULL), m_state(INIT),m_iPickupPhoneState(ePickupMicrophoneState_Off) 
 {
 	m_kept_volume_in[0] = m_kept_volume_in[1] = 0;
@@ -384,20 +385,6 @@ void CSIPEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const
 		}
 		break;
 
-	case LOG_EVT_CHANGELIVEDETECTIONCAM:
-		{
-			if (pszMessage && strlen(pszMessage) > 0) 
-			{
-				int i = atoi(pszMessage);
-				m_stVideoParam.iCameraSwitch = i;
-			} 
-			else 
-			{
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("change active display camera param error");
-			}
-		}
-		break;
-
 	case LOG_EVT_RELEASELIVEDETECTION:
 		{
 			m_stVideoParam.bActiveInspect = 0;
@@ -549,7 +536,7 @@ void CSIPEntity::OnSysVarEvent(const char *pszKey, const char *pszValue,const ch
 	}
 	else if (_stricmp(pszKey, "UIState") == 0)
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("UIState %s -> %s.", pszOldValue, pszValue);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("UIState %s -> %s.", pszOldValue, pszValue);
 		if (pszOldValue[0] == 'X' && pszValue[0] == 'M')
 		{
 			if (false == m_bFirstLaunched) {
@@ -573,8 +560,12 @@ void CSIPEntity::OnSelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionC
 
 void CSIPEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext) 
 { 
+	long lstarttime = SP::Module::Comm::RVCGetTickCount();
 	ErrorCodeEnum Error = __OnStart(Error_Succeed);
 	pTransactionContext->SendAnswer(Error);
+	long lcosttime = SP::Module::Comm::RVCGetTickCount() - lstarttime;
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("Sipphone::Starting").setCostTime(lcosttime)("Sipphone::Starting");
+	LogWarn(Severity_Low, Error_Debug, EVENT_MOD_SIP_ENTITY_STARTING_COST, CSimpleStringA::Format("sipphone entity starting cost time is %dms.", lcosttime));
 }
 
 void CSIPEntity::OnStarted() 
@@ -876,6 +867,7 @@ ErrorCodeEnum CSIPEntity::__OnStart(ErrorCodeEnum preOperationError)
 	}
 	else {
 		LogWarn(Severity_Middle, Error_Debug, LOG_EVT_SIPPHONE_AUDIOMGR_INITIAL_FAILED, "audio manager initialize failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA310B")("音频服务初始化失败");
 	}
 	SetSoundCardSysVar(SOUNDCARD_INIT_STATE);
 
@@ -970,7 +962,7 @@ ErrorCodeEnum CSIPEntity::__OnStart(ErrorCodeEnum preOperationError)
 		CSmartPointer<IEntityFunction> Func = GetFunction();
 		CUUID id;
 		int i = 0;
-		m_arrListener.Init(27);
+		m_arrListener.Init(26);
 		Func->SubscribeLog(id, this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CONNECT_HANDFREE_TO_PICKUP, EVT_CONVERTER);
 		m_arrListener[i++] = id;
 		Func->SubscribeLog(id, this, Log_Event, Severity_None, Error_IgnoreAll, EVENT_MOD_CONNECT_PICKUP_TO_HANDFREE, EVT_CONVERTER);
@@ -991,8 +983,6 @@ ErrorCodeEnum CSIPEntity::__OnStart(ErrorCodeEnum preOperationError)
 		m_arrListener[i++] = id;
 		Func->SubscribeLog(id, this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_EXIT_ACM_FLOW,NULL,false);
 		m_arrListener[i++] = id;
-		Func->SubscribeLog(id, this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_CHANGELIVEDETECTIONCAM,NULL,false);
-		m_arrListener[i++] = id;
 		Func->SubscribeLog(id, this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_RELEASELIVEDETECTION,NULL,false);
 		m_arrListener[i++] = id;
 		Func->SubscribeLog(id, this, Log_Event, Severity_None, Error_IgnoreAll, LOG_EVT_UI_HIDEONLINEVIDEO,NULL,false);
@@ -1096,7 +1086,7 @@ ErrorCodeEnum CSIPEntity::__OnStart(ErrorCodeEnum preOperationError)
 		CSimpleStringA strValue("");
 		Func->RegistSysVarEvent("UIState", this);
 		Func->GetSysVar("UIState", strValue);
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("UIState %s.", strValue.GetData());
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("UIState %s.", strValue.GetData());
 	}
 
 	{
@@ -1486,9 +1476,9 @@ void CSIPEntity::HandleCheckAudioDevice(const char* pszValue)
 	CSmartPointer<IEntityFunction> Func = GetFunction();
 	CSimpleStringA strValue("");
 	Func->GetSysVar(SYSVAR_SOUNDCARDSTATE, strValue);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("callstate is %s.", pszValue);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Pickup Phone State = %s. ",m_iPickupPhoneState ? "off" : "on");
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("callstate is %s.", pszValue);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Pickup Phone State = %s. ",m_iPickupPhoneState ? "off" : "on");
 
 	if ('N' != strValue[0]) {
 		if (pszValue[0] == 'H' && m_iPickupPhoneState == ePickupMicrophoneState_On) {
@@ -1520,7 +1510,7 @@ void CSIPEntity::HandleSendBroadcastMsg(bool bHandfreeError)
 			m_bMessageBox = false;
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MessageBox broadcast has post, ignore it.");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("MessageBox broadcast has post, ignore it.");
 		}
 	}
 	else {
@@ -1535,7 +1525,7 @@ void CSIPEntity::HandleSendBroadcastMsg(bool bHandfreeError)
 			m_bMessageBox = false;
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("MessageBox broadcast has post, ignore it.");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("MessageBox broadcast has post, ignore it.");
 		}
 	}
 }
@@ -1982,13 +1972,11 @@ static int __change_dev(void *arg)
 
 void CSIPEntity::SwitchHandFree()
 {
-	LOG_FUNCTION();
-
 	int rc = 0;
 	CSmartPointer<IEntityFunction> Func = GetFunction();
 	CSimpleStringA strValue("");
 	Func->GetSysVar(SYSVAR_SOUNDCARDSTATE, strValue);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("m_bMessageBox %s.", m_bMessageBox ? "true" : "false");
 	if ('B' == strValue[0] || 'H' == strValue[0]) {
 		HandleSendBroadcastMsg(true);
@@ -1999,7 +1987,7 @@ void CSIPEntity::SwitchHandFree()
 	pCmd->pEntity = this;
 	pCmd->dev_type = DEV_HANDFREE;
 	if (endpoint_invoke(m_pEndpoint, &__change_dev, pCmd, &rc) != 0) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("endpoint invoke failed!");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("endpoint invoke failed!");
 		delete pCmd;
 	}
 }
@@ -2007,13 +1995,11 @@ void CSIPEntity::SwitchHandFree()
 
 void CSIPEntity::SwitchPickup()
 {
-	LOG_FUNCTION();
-	
 	int rc = 0;
 	CSmartPointer<IEntityFunction> Func = GetFunction();
 	CSimpleStringA strValue("");
 	Func->GetSysVar(SYSVAR_SOUNDCARDSTATE, strValue);
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Sound Card State is %s.", strValue.GetData());
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("m_bMessageBox %s.", m_bMessageBox ? "true" : "false");
 	if ('B' == strValue[0] || 'P' == strValue[0]) {
 		HandleSendBroadcastMsg(false);
@@ -2081,6 +2067,7 @@ ErrorCodeEnum CSIPEntity::LoadConfig(endpoint_conf_t *conf)
 {
 	CSmartPointer<IEntityFunction> spFunction = GetFunction();
 	CSmartPointer<IConfigInfo> spRootConfig;
+
 	ErrorCodeEnum Error = spFunction->OpenConfig(Config_Root, spRootConfig);
 	if (Error == Error_Succeed) {
 		CSimpleStringA strHandFreeIn;

+ 1 - 0
Module/mod_sipphone/unix/video_session.cpp

@@ -136,6 +136,7 @@ static bool __camera_error_event(bool bhaspost, int icameraid)
 			LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_GET_OPT_VIDEO_FAILED, "get video from opt queue failed!");
 		}		
 		LogEvent(Severity_Middle, EVENT_MOD_SIP_GET_VIDEO_FAILED, "connected and get video failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3119")("接通坐席后本地视频回显异常");
 
 		bret = true;
 	}

+ 11 - 9
Module/mod_sipphone/video_render.cpp

@@ -118,15 +118,17 @@ static int get_local_video_frame(video_frame** frame, int itype, Clibvideoqueue*
 
 int rvc_remote_video_render(rvc_video_render_t* prender, void* videoframe)
 {
-	if (NULL != prender->premote_render) {
-		video_frame* echoframe = NULL;
-		if (0 == translate_image_resolution(&echoframe, prender->render_param.iremote_view_cx, prender->render_param.iremote_view_cy, (const video_frame*)videoframe)) {
-			prender->premote_render->RenderVideoFrame(echoframe, RVC_FLIP_VERTICAL);
-			video_frame_delete(echoframe);
-			echoframe = NULL;
-		}
-		else {
-			prender->premote_render->RenderVideoFrame((video_frame*)videoframe, RVC_FLIP_VERTICAL);
+	if (NULL != prender && NULL != videoframe) {
+		if (NULL != prender->premote_render) {
+			video_frame* echoframe = NULL;
+			if (0 == translate_image_resolution(&echoframe, prender->render_param.iremote_view_cx, prender->render_param.iremote_view_cy, (const video_frame*)videoframe)) {
+				prender->premote_render->RenderVideoFrame(echoframe, RVC_FLIP_VERTICAL);
+				video_frame_delete(echoframe);
+				echoframe = NULL;
+			}
+			else {
+				prender->premote_render->RenderVideoFrame((video_frame*)videoframe, RVC_FLIP_VERTICAL);
+			}
 		}
 	}
 

+ 1 - 0
Module/mod_sipphone/win/video_session.cpp

@@ -95,6 +95,7 @@ static bool __camera_error_event(bool bhaspost, int icameraid)
 			LogWarn(Severity_Middle, Error_Debug, ERROR_MOD_SIP_GET_OPT_VIDEO_FAILED, "get video from opt queue failed!");
 		}		
 		LogEvent(Severity_Middle, EVENT_MOD_SIP_GET_VIDEO_FAILED, "connected and get video failed!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA3119")("接通坐席后本地视频回显异常");
 
 		bret = true;
 	}

+ 9 - 37
Module/mod_vtmloader/VtmLoaderFSM.cpp

@@ -22,6 +22,7 @@
 #include "../mod_ContactlessCard/ContactlessCard_client_g.h"
 #include "../mod_FingerPrint/FingerPrint_client_g.h"
 #include "../mod_gpio/Gpio_client_g.h"
+#include "SpDefine.h"
 
 using namespace HealthManager;
 using namespace PinPad;
@@ -73,15 +74,15 @@ DWORD tokenUpdate(void* param)
 		if (elapsedTime >= (t_entity->m_refreshWaitSec * 1000))
 		{
 			// 如果距离上次更新时间已经超过了指定的刷新间隔
-		if (t_entity->refreshToken())
+			if (t_entity->refreshToken())
 			{
 				// 更新成功,更新上次更新时间
 				lastUpdateTime = currentTime;
 			}
-		else
+			else
 			{
 				// 更新失败,可以处理一些错误逻辑
-	}
+			}
 		}
 
 		// 等待一段时间后再次检查
@@ -670,7 +671,7 @@ void CVtmLoaderFSM::s3_on_entry()
 		case LOADOPT_IGNORE:
 		{
 			//oiltmp@20240415 to be delete after x months
-			if (_strnicmp("CardIssuer", it->first, strlen("CardIssuer")) == 0)
+			if (_strnicmp("CardIssuer", it->first, it->first.GetLength()) == 0)
 			{
 				if (m_sysInfo.strMachineType.Compare("RVC.CardStore") == 0 || m_sysInfo.strMachineType.Compare("RVC.CardPrinter") == 0)
 					pFuncPrivilege->StartEntity("CardIssuerStore", NULL, spWait);
@@ -1645,29 +1646,8 @@ bool CVtmLoaderFSM::GetConfig()
 		return false;
 	}
 	ErrorCodeEnum eErr = Error_Succeed;
-#ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
-	CSimpleString channelId = "5fdd82e3b90a4de69f9da4738e5f1216";
-	CSimpleString tokenSecret = "eca829c78067c686561bd844129321c8a78af3";
-	CSimpleString CommonLaunchUrl = "https://rvc-gateway.paasst.cmbchina.cn";
-	CSimpleString CenterConfigTotal = "https://accessproxy-service.paasst.cmbchina.cn/centerconfig";
-#elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
-	CSimpleString channelId = "7eb748cb71744c87b5c126e05af8cce7";
-	CSimpleString tokenSecret = "eca529c78967c640561bd844229391c8a78af3";
-	CSimpleString CommonLaunchUrl = "https://rvc-gateway.paasuat.cmbchina.cn";
-	CSimpleString CenterConfigTotal = "https://accessproxy-service.paasuat.cmbchina.cn/centerconfig";
-#elif defined(DEVOPS_ON_PRD)/*DevOps流水线编译,PRD环境*/
-	CSimpleString channelId = "572f7577fa9f425c8475a8d77db4ae31";
-	CSimpleString tokenSecret = "eca129c78767c670561bd844629361c8a78af3";
-	CSimpleString CommonLaunchUrl = "https://rvc-gateway.paas.cmbchina.cn";
-	CSimpleString CenterConfigTotal = "https://accessproxy-service.paas.cmbchina.cn/centerconfig";
-#else/*本地编译等非DevOps环境编译的版本*/
-	CSimpleString channelId = "5fdd82e3b90a4de69f9da4738e5f1216";
-	CSimpleString tokenSecret = "eca829c78067c686561bd844129321c8a78af3";
-	CSimpleString CommonLaunchUrl = "https://rvc-gateway.paasst.cmbchina.cn";
-	CSimpleString CenterConfigTotal = "https://accessproxy-service.paasst.cmbchina.cn/centerconfig";
-#endif
 	LogWarn(Severity_Low, Error_Succeed, VtmLoader_BootInfoPrint, "开始拉取配置");
-	VTMInitParam vtmInitParam(m_terminalNoFromWeb.GetData(), channelId, tokenSecret, CommonLaunchUrl, CenterConfigTotal);
+	VTMInitParam vtmInitParam(m_terminalNoFromWeb.GetData(), SpDefine::channelId, SpDefine::tokenSecret, SpDefine::CommonLaunchUrl, SpDefine::CenterConfigTotal);
 	if (Error_Succeed != (eErr = GetEntityBase()->GetFunction()->GetPrivilegeFunction()->InitCfgUrl(vtmInitParam)))
 	{
 		LogWarn(Severity_High, Error_Unexpect, VtmLoader_GetConfig_InitCfgUrl_Failed, CSimpleStringA::Format("拉取配置,初始化配置地址失败:0x%x(%s)", eErr, SpStrError(eErr)).GetData());
@@ -1699,8 +1679,6 @@ bool CVtmLoaderFSM::GetConfig()
 	refreshLogLevel();
 
 
-
-
 	//all cfg is ready, then init the entity
 
 	eErr = SubscribeEntitysEvents();
@@ -1740,16 +1718,10 @@ bool CVtmLoaderFSM::GetConfig()
 	}
 	else
 	{
-		const char* default_endpoint = "https://kafkaproxy.paas.cmbchina.cn/api/kafka/log/send";
-		const char* topicSys = "LR18_23_VTMTerminalLogService_L_sys_VTMTerminalSysLog_SRC_SZ";
-		const char* topicUser = "LR18_23_VTMTerminalLogService_L_biz_VTMTerminalUserLog_SRC_SZ";
-		const char* topicBeidou = "LR18_23_VTMTerminalLogService_L_trace_VTMTerminalTraceLog_SRC_SZ";
-		const char* topicBussSys = "LR18_23_VTMTerminalLogService_L_sys_VTMBusiness_SRC_SZ";
-		const char* topicBussUser = "LR18_23_VTMTerminalLogService_L_biz_VTMBusiness_SRC_SZ";
-		const char* topicVTMWeb = "LR18_23_VTMWebSDKUserLog";
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("read endpoint and topic err, need check centersetting, use default %s-%s-%s-%s-%s-%s-%s"
-			, default_endpoint, topicSys, topicUser, topicBeidou, topicBussSys, topicBussUser, topicVTMWeb);
-		GetEntityBase()->GetFunction()->GetPrivilegeFunction()->BeginLogSend(default_endpoint, topicSys, topicUser, topicBeidou, topicBussSys, topicBussUser, topicVTMWeb);
+			, SpDefine::endpoint, SpDefine::topicSys, SpDefine::topicUser, SpDefine::topicBeidou, SpDefine::topicBussSys, SpDefine::topicBussUser, SpDefine::topicVTMWeb);
+		GetEntityBase()->GetFunction()->GetPrivilegeFunction()->BeginLogSend(SpDefine::endpoint, SpDefine::topicSys, SpDefine::topicUser, SpDefine::topicBeidou,
+			SpDefine::topicBussSys, SpDefine::topicBussUser, SpDefine::topicVTMWeb);
 	}
 
 	

+ 1 - 0
Other/CMakeLists.txt

@@ -22,6 +22,7 @@ macro(deploy_others _module_prefix _module_name)
     set_property(TARGET ${_module_name} PROPERTY FOLDER "other/")
 
 endmacro(deploy_others)
+add_definitions(-DRVC_VERSION_STR="${RVC_VERSION}")
 
 add_subdirectory(libpublicFun)
 add_subdirectory(acmstrdec)

+ 7 - 0
Other/libRestfulFunc/RestfulFunc.h

@@ -217,9 +217,16 @@ private:
     restFul_GetTokenCallBack g_tokenCall;
     void InitGetToken(restFul_GetTokenCallBack t_getToken) {
         if (t_getToken)
+        {
+            m_withToken = true;
             g_tokenCall = t_getToken;
+        }            
         else
+        {
+            m_withToken = false;
             g_tokenCall = nullptr;
+        }
+            
 
         
     };

+ 7 - 2
Other/liblog4rvcother/CMakeLists.txt

@@ -13,17 +13,22 @@ set(${MODULE_PREFIX}_SRCS
     log4link.cpp
     )
 
+add_definitions(-DUSE_SKYEYELOG)
 
+#set(CMAKE_CXX_FLAGS "${CMAK_CXX_FLAGS} -g3")
 add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
 target_include_directories(${MODULE_NAME} 
     PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
-    PRIVATE ${RVC_COMMON_INCLUDE_DIR})
+    PRIVATE ${RVC_COMMON_INCLUDE_DIR}
+    ${OTHER_LIB_BASE_DIR}/libpublicFun
+    ${CONAN_INCLUDE_DIRS_JSONCPP})
+target_link_directories(${MODULE_NAME} PRIVATE ${CONAN_LIB_DIRS_JSONCPP})
 set_target_properties(${MODULE_NAME} PROPERTIES COMPILE_DEFINITIONS "LIBLOG4RVCOTHER_EXPORTS")
 set_target_properties(${MODULE_NAME} PROPERTIES DEBUG_POSTFIX "d")
 
 if(MSVC)
     list(APPEND OTHER_LIBS Psapi)
 endif(MSVC)
-target_link_libraries(${MODULE_NAME} CONAN_PKG::log4cplus ${OTHER_LIBS})
+target_link_libraries(${MODULE_NAME} CONAN_PKG::log4cplus ${OTHER_LIBS} libpublicFun ${CONAN_PKG_LIBS_JSONCPP})
 
 deploy_others(${MODULE_PREFIX} ${MODULE_NAME})

+ 18 - 0
Other/liblog4rvcother/log4cplus_helper.cpp

@@ -2,14 +2,18 @@
 #include <iostream>
 #include <string>
 #include <string.h>
+#include <mutex>
 
 #include "log4link.h"
+#include "exLog/skyeyeLog.h"
 
 #if defined(_WIN32) && defined (LOG4CPLUS_HAVE_WIN32_CONSOLE)
 #include <log4cplus/win32consoleappender.h>
 #define WIN32_CONSOLE 1
 #endif
 
+
+
 using namespace log4cplus;
 using namespace log4cplus::helpers;
 
@@ -299,7 +303,9 @@ namespace cmb {
 			_append_none = NULL;
 			_append_socket = NULL;
 			log4cplus::Logger::shutdown();
+#ifndef USE_SKYEYELOG
 			_upload_helper.unitialize();
+#endif
 			_initialized = false;
 		}
 	}
@@ -513,11 +519,22 @@ namespace cmb {
 
     void log4cplus_helper::initialize_linklog(const log_init_config& config)
     {
+#ifdef USE_SKYEYELOG
+		CreateDefaultLogger(config.terminalno, RVC_VERSION_STR, config.dev_name, "100");
+#else
 		_upload_helper.initialize(config);
+#endif
+
     }
 
     void log4cplus_helper::loglink(LOG_LEVEL_E level, vtm_string text)
     {
+#ifdef USE_SKYEYELOG
+		static std::mutex logMtx;
+		logMtx.lock();
+		GetDefaultLogger()(level, text.c_str());
+		logMtx.unlock();
+#else
         if (_upload_helper.is_initialized()) {
 			/*LOG_LEVEL_DEBUG = 0, LOG_LEVEL_INFO = 1, LOG_LEVEL_WARN = 2, LOG_LEVEL_ERROR = 3, LOG_LEVEL_FATAL = 4*/
 			const int converted_ll = ((int)(level)+1) * 10000;
@@ -529,5 +546,6 @@ namespace cmb {
 				_upload_helper.pinst_log_producer_client_add_log(_upload_helper._client, &logitem, 1, cur_time);
 			}
         }
+#endif
     }
 }

+ 2 - 0
Other/liblog4rvcother/log4cplus_helper.h

@@ -176,7 +176,9 @@ namespace cmb {
 		int _log_level;
 
 		bool _initialize_uploaded;
+#ifndef USE_SKYEYELOG
 		upload_helper _upload_helper;
+#endif
 	};
 }
 

+ 3 - 1
Other/liblog4rvcother/log4rvcother.cpp

@@ -81,6 +81,7 @@ namespace cmb {
 		config->log_dir = "";
 		config->log_level = CMB_LOG_LEVEL_OFF;
 		config->log_type = 0; /*OFF*/
+		
 
 		//if(env.record_type.find("CONSOLE") != std::string::npos)
 		//	config->log_type |= CMB_LOG_TYPE_CONSOLE;
@@ -158,13 +159,13 @@ namespace cmb {
 		log_init_config log_env_config;
 		std::string instance_name;
 		bool is_vtm_env(false);
+		std::string terminalno = config.terminalno;
 
 		if(log4plus_initialized) {
 			assert(log4rvcother::instance() != &default_instance);
 			ret_msg = "WARN: log instance has been initialized.";
 			goto error_point;
 		}
-
 		if(IsVTMProcess()) {
 			is_vtm_env = true;
 			ret_msg = env_string + "INFO: vtm runtime, it's VTMers' responsibility to do initialize job.";
@@ -210,6 +211,7 @@ namespace cmb {
 		/*提前在这里赋值,以便让 LOG4VTM 宏生效*/
 		log4plus_initialized = true;
         if (is_vtm_env && (lhs->log_type & CMB_LOG_TYPE_SOCKET) != 0) {
+			lhs->terminalno = terminalno;
             log4cplus_helper::get_instance()->initialize_linklog(*lhs);
         }
 		LOG4VTM(INFO, "==============Log4Vendor(" << instance_name << ") start==============");

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików