Эх сурвалжийг харах

!10780 归并最新的st到卡机日志精简分支
Merge pull request !10780 from 80174520/ST2

刘文涛80174520 3 сар өмнө
parent
commit
ef0692d7c5

+ 8 - 1
Framework/Common/SpDefine.h

@@ -33,15 +33,22 @@ public:
 #endif
 
 	//default endpoint and topic
+	// 发送的节点地址, 默认使用程序中写死的地址,但可以通过集中配置修改
 	static constexpr const char* endpoint = "https://kafkaproxy.paas.cmbchina.cn/api/kafka/log/send";
+
+	// 发送的topic, 默认使用程序中写死的地址,但可以通过集中配置修改;已经固定好就这6个,不可随意增加,如果增加;需要修改代码。
+	//终端使用的topic
 	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";
+	// 北斗topic
 	static constexpr const char* topicBeidou = "LR18_23_VTMTerminalLogService_L_trace_VTMTerminalTraceLog_SRC_SZ";
+	// 业务日志的topic
 	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";
+	// 招乎音视频日志的topic
 	static constexpr const char* topicVTMWeb = "LR18_23_VTMWebSDKUserLog";
 
-	//const log params
+	//const log params, 默认的日志参数
 	static constexpr const char* cmptId = "LR04.02";
 	static constexpr const char* CmptName = "RVCTerminalPlus";
 	static constexpr const char* deployUnitId = "LR04.02_RVCTerminalPlus";

+ 3 - 0
Framework/Common/SpFSM.h

@@ -145,6 +145,9 @@ public:
 
 	void __ProcessEvent(FSMEvent *e);
 
+protected:
+	virtual void __PostInit() { }
+
 protected:
 	int m_iState;
 	CEntityBase *m_pEntity;

+ 1 - 0
Framework/spbase/SpFSM.cpp

@@ -114,6 +114,7 @@ ErrorCodeEnum FSMBase::Init(CEntityBase *pEntity)
 
 	ErrorCodeEnum Error = OnInit();
 	if (Error == Error_Succeed) {
+		__PostInit();
 		Trans(GetInitState());
 	}
 	else {

+ 2 - 4
Framework/spshell/spshell.cpp

@@ -277,11 +277,12 @@ static bool AddFirewallRules()
 	*strrchr(szBinDir, SPLIT_SLASH) = 0;
 
 	int nRet = (int)ShellExecute(NULL, "open", "cmd.exe", "/s /c  \"netsh advfirewall firewall delete rule name=\"\"SpShell\"\"", NULL, SW_HIDE);
-	nRet = (int)ShellExecute(NULL, "open", "cmd.exe", "/s /c  \"netsh advfirewall firewall delete rule name=\"\"SpShell\"\"", NULL, SW_HIDE);
+	nRet = (int)ShellExecute(NULL, "open", "cmd.exe", "/s /c  \"netsh advfirewall firewall delete rule name=\"\"SpHost_re\"\"", NULL, SW_HIDE);
 	nRet = (int)ShellExecute(NULL, "open", "cmd.exe", "/s /c  \"netsh advfirewall firewall delete rule name=\"\"SpHost\"\"", NULL, SW_HIDE);
 	nRet = (int)ShellExecute(NULL, "open", "cmd.exe", "/s /c  \"netsh advfirewall firewall delete rule name=\"\"SpGuardian\"\"", NULL, SW_HIDE);
 	nRet = (int)ShellExecute(NULL, "open", "cmd.exe", "/s /c  \"netsh advfirewall firewall delete rule name=\"\"cefclient\"\"", NULL, SW_HIDE);
 
+
 	char szParam[1024] = {};
 	sprintf_s(szParam, 1024, "/s /c  \"netsh advfirewall firewall add rule name=\"\"SpShell\"\" dir=out program=\"\"%s\\spshell.exe\"\" action=allow\"", szBinDir);
 	nRet = (int)ShellExecute(NULL, "open", "cmd.exe", szParam, NULL, SW_HIDE);
@@ -289,9 +290,6 @@ static bool AddFirewallRules()
 	sprintf_s(szParam, 1024, "/s /c  \"netsh advfirewall firewall add rule name=\"\"SpHost\"\" dir=out program=\"\"%s\\sphost.exe\"\" action=allow\"", szBinDir);
 	nRet = (int)ShellExecute(NULL, "open", "cmd.exe", szParam, NULL, SW_HIDE);
 
-	sprintf_s(szParam, 1024, "/s /c  \"netsh advfirewall firewall add rule name=\"\"SpHost_re\"\" dir=out program=\"\"%s\\sphost_re.exe\"\" action=allow\"", szBinDir);
-	nRet = (int)ShellExecute(NULL, "open", "cmd.exe", szParam, NULL, SW_HIDE);
-
 	sprintf_s(szParam, 1024, "/s /c  \"netsh advfirewall firewall add rule name=\"\"SpGuardian\"\" dir=out program=\"\"%s\\guardian.exe\"\" action=allow\"", szBinDir);
 	nRet = (int)ShellExecute(NULL, "open", "cmd.exe", szParam, NULL, SW_HIDE);
 

+ 29 - 12
Module/include/DevFSMCommBase.hpp

@@ -604,7 +604,7 @@ class CCommDevFSM : public FSMImpl<TFSM>
 public:
 	CCommDevFSM() : m_iInWhatPage(PageType_Init),m_bOpened(false), m_bOpening(true), m_eDevState(DEVICE_STATUS_NOT_READY),m_contiErrTimes(0), m_preUIState('X')
 	{
-
+		
 	}
 
 	ErrorCodeEnum GetAndSplitDevErrInfo(
@@ -850,17 +850,7 @@ public:
 	void OnUIState4SetWhatPage(const char* pcszValue) {
 		if (pcszValue != NULL && strlen(pcszValue) > 0) {
 			bool trigger(false);
-			//增加页面位置判断
-			if (_strnicmp(pcszValue, "M", strlen("M")) == 0) {
-				SetInWhatPage(PageType_MainPage);
-			}
-			else if (_strnicmp(pcszValue, "U", strlen("U")) == 0) {
-				SetInWhatPage(PageType_UserDesktop);
-			}
-			else {
-				SetInWhatPage(PageType_Other);
-			}
-			
+			UiState2WhatPage(pcszValue);
 			if (m_preUIState != pcszValue[0]) {
 				if (pcszValue[0] == 'M') {
 					trigger = true;
@@ -898,6 +888,17 @@ protected:
 	AdapterInfo m_adapterInfo;
 	DevStateEnum m_eDevState;
 
+	void __PostInit() override
+	{
+		if (this->GetEntityBase() != NULL) {
+			CSimpleStringA uiState(true);
+			auto err = this->GetEntityBase()->GetFunction()->GetSysVar("UIState", uiState);
+			if (err == Error_Succeed && !uiState.IsNullOrEmpty()) {
+				UiState2WhatPage(uiState);
+			}
+		}
+	}
+
 	void UpdateEntityIDIfZero()
 	{
 		if (m_entCode.dwEntityId == 0) {
@@ -986,6 +987,22 @@ protected:
 	
 	virtual void OnHardwareShakeHand(CSmartPointer<ITransactionContext> pTransactionContext);
 
+private:
+
+	void UiState2WhatPage(const char* pcszValue)
+	{
+		//增加页面位置判断
+		if (_strnicmp(pcszValue, "M", strlen("M")) == 0) {
+			SetInWhatPage(PageType_MainPage);
+		}
+		else if (_strnicmp(pcszValue, "U", strlen("U")) == 0) {
+			SetInWhatPage(PageType_UserDesktop);
+		}
+		else if (_strnicmp(pcszValue, "X", strlen("X")) != 0) {
+			SetInWhatPage(PageType_Other);
+		}
+	}
+
 private:
 	char m_preUIState;
 };

+ 1 - 1
Module/mod_HSPScanner/HSPSCanner_UserErrorCode.h

@@ -17,7 +17,7 @@
 #define HSPScanner_UserErrorCode_READ_IMAGE_FILE_FAILED			0x21700201
 #define HSPScanner_UserErrorCode_LOAD_DLLFILE_NOTEIXT			0x21700202
 #define HSPScanner_UserErrorCode_LOAD_DLLFILE_FAILED			0x21700203
-#define HSPScanner_UserErrorCode_GET_CDC_ADDR_FAILED			0x21700204
+#define HSPScanner_UserErrorCode_DuplicateCancelPreview			0x21700204
 #define HSPScanner_UserErrorCode_GET_RDC_ADDR_FAILED			0x21700205
 #define HSPScanner_UserErrorCode_CLEAR_RESOURCE_FAILED			0x21700206
 #define HSPScanner_UserErrorCode_UPLOAD_VENDORINFO				0x21700207

+ 86 - 27
Module/mod_HSPScanner/HSPScannerFSM.cpp

@@ -35,38 +35,49 @@ const char* EvtTypeToString(int nEvtType)
 	{
 		T_STRINGY(USER_EVT_STARTPREVIEW)
 			T_STRINGY(USER_EVT_STARTPREVIEW_FINISHED)
+			T_STRINGY(USER_EVT_SETPROPERTYINVIEW_FINISHED)
+
+			T_STRINGY(USER_EVT_STARTPREVIEW_JS)
+			T_STRINGY(USER_EVT_STARTPREVIEW_JS_DONE)
+
+			T_STRINGY(USER_EVT_CANCELPREVIEW_JS)
+			T_STRINGY(USER_EVT_CANCELPREVIEW_JS_DONE)
+
+			T_STRINGY(USER_EVT_SCANIMAGE_JS)
+			T_STRINGY(USER_EVT_SCANIMAGE_JS_DONE)
+
+			T_STRINGY(USER_EVT_SETPARAM_JS)
+
 			T_STRINGY(USER_EVT_STOPPREVIEW)
+			T_STRINGY(USER_EVT_HIDEPREVIEW)
 			T_STRINGY(USER_EVT_STOPPREVIEW_FINISHED)
+
 			T_STRINGY(USER_EVT_SETWINPOS)
 			T_STRINGY(USER_EVT_SETWINPOSFINISHED)
-			T_STRINGY(USER_EVT_SCANIMAGE)
-			T_STRINGY(USER_EVT_SCANIMAGE_EX)
-			T_STRINGY(USER_EVT_SCANIMAGEFINISHED)
+
+			T_STRINGY(USER_EVT_SHOWPROPERTY)
+			T_STRINGY(USER_EVT_SHOWPROPERTY_FINISHED)
+
 			T_STRINGY(USER_EVT_SETPROPERTY)
 			T_STRINGY(USER_EVT_SETPROPERTY_FINISHED)
+
 			T_STRINGY(USER_EVT_GETSTATUS)
 			T_STRINGY(USER_EVT_GETINFO)
+
 			T_STRINGY(USER_EVT_DISCONNECT)
-			T_STRINGY(USER_EVT_EXIT)
-			T_STRINGY(USER_EVT_QUIT)
 			T_STRINGY(USER_EVT_RESET)
+			T_STRINGY(USER_EVT_EXIT)
 			T_STRINGY(USER_EVT_EXIT_FINISHED)
-			T_STRINGY(USER_EVT_SHOWPROPERTY)
-			T_STRINGY(USER_EVT_SHOWPROPERTY_FINISHED)
-			T_STRINGY(EVT_TIMER)
-			T_STRINGY(USER_EVT_SETPROPERTYINVIEW_FINISHED)
-			T_STRINGY(USER_EVT_HIDEPREVIEW)
+
 			T_STRINGY(USER_EVT_GOTOHELL)
-			T_STRINGY(USER_EVT_STARTPREVIEW_JS)
-			T_STRINGY(USER_EVT_STARTPREVIEW_JS_DONE)
-			T_STRINGY(USER_EVT_CANCELPREVIEW_JS)
-			T_STRINGY(USER_EVT_CANCELPREVIEW_JS_DONE)
-			T_STRINGY(USER_EVT_SCANIMAGE_JS)
-			T_STRINGY(USER_EVT_SCANIMAGE_JS_DONE)
-			T_STRINGY(USER_EVT_SETPARAM_JS)
-			T_STRINGY(EVT_MAINPAGE_DISPLAY)
+			T_STRINGY(USER_EVT_QUIT)
 			T_STRINGY(USER_EVT_INIT)
 			T_STRINGY(USER_EVT_INIT_FINISHED)
+
+			T_STRINGY(EVT_INTERNAL)
+			T_STRINGY(EVT_TIMER)
+			T_STRINGY(EVT_MAINPAGE_DISPLAY)
+			T_STRINGY(EVT_USER)
 	default:
 		return "Unknown EventType";
 		break;
@@ -142,7 +153,7 @@ CHSPScannerFSM::CHSPScannerFSM(void)
 	m_nSrcState(sIdle),
 	m_desiredAction(USER_EVT_QUIT),
 	dwLastUserCode(0),
-	m_dwMaxImageSize(500), m_lightOn(false)
+	m_dwMaxImageSize(500), m_lightOn(false), m_dupFlag4ExitCancel(false)
 {
 	HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x217);
 }
@@ -351,7 +362,7 @@ unsigned int CHSPScannerFSM::s0_Idle_on_event(FSMEvent* e)
 		break;
 	default:
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("%s::UnHandle event ! %d", __FUNCTION__, e->iEvt);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("%s::UnHandle event ! %s", __FUNCTION__, EvtTypeToString(e->iEvt));
 		}
 		break;
 	}
@@ -360,12 +371,12 @@ unsigned int CHSPScannerFSM::s0_Idle_on_event(FSMEvent* e)
 
 void CHSPScannerFSM::s1_Preview_on_entry()
 {
-
+	m_dupFlag4ExitCancel = false;
 }
 
 void CHSPScannerFSM::s1_Preview_on_exit()
 {
-
+	m_dupFlag4ExitCancel = false;
 }
 
 unsigned int CHSPScannerFSM::s1_Preview_on_event(FSMEvent* e)
@@ -399,20 +410,29 @@ unsigned int CHSPScannerFSM::s1_Preview_on_event(FSMEvent* e)
 		JS::CancelPreviewTask* pTask = new JS::CancelPreviewTask(this);
 		JS::CancelPreviewEvent* pEvt = dynamic_cast<JS::CancelPreviewEvent*>(e);
 		pTask->SetContext(pEvt->m_ctx);
+		if (!pEvt->m_ctx->Req.hide) {
+			m_dupFlag4ExitCancel = true;
+		}
 		GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
 		e->SetHandled();
 	}
 	break;
 	case USER_EVT_CANCELPREVIEW_JS_DONE:
 	{
+		m_dupFlag4ExitCancel = false;
 		if (e->param1 == 0) {//取消预览成功
 			if (e->param2 == 1) uRet = 2; //仅仅是隐藏
-			else uRet = 1;
+			else {
+				uRet = 1; 
+			}
 			m_nFatalTimes = 0;
 		}
 		else {
 			uRet = 3;
-			if (e->param2 == 1) m_desiredAction = USER_EVT_HIDEPREVIEW; else m_desiredAction = USER_EVT_STOPPREVIEW;
+			if (e->param2 == 1) { m_desiredAction = USER_EVT_HIDEPREVIEW; }
+			else {
+				m_desiredAction = USER_EVT_STOPPREVIEW;
+			}
 			if (IsDevConnected() == 0) {
 				PostEventFIFO(new FSMEvent(USER_EVT_DISCONNECT));
 			}
@@ -474,12 +494,16 @@ unsigned int CHSPScannerFSM::s1_Preview_on_event(FSMEvent* e)
 			StopPreviewTask* pTask = new StopPreviewTask(this);
 			StopPreviewEvent* pEvt = dynamic_cast<StopPreviewEvent*>(e);
 			pTask->SetContext(pEvt->m_ctx);
+			if (!pEvt->m_ctx->Req.bOnlyHide) {
+				m_dupFlag4ExitCancel = true;
+			}
 			GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
 		}
 		e->SetHandled();
 		break;
 	case USER_EVT_STOPPREVIEW_FINISHED:
 		{
+			m_dupFlag4ExitCancel = false;
 			uRet = e->param1;
 			if((uRet == 0 || uRet == 4) && ++m_nFatalTimes <= MAX_ERROR_TIMES)
 			{
@@ -495,6 +519,7 @@ unsigned int CHSPScannerFSM::s1_Preview_on_event(FSMEvent* e)
 			{
 				PostEventFIFO(new FSMEvent(USER_EVT_DISCONNECT));
 			}
+			//fault
 			else if(uRet == 0) {
 				m_desiredAction = USER_EVT_STOPPREVIEW;
 			}
@@ -572,7 +597,19 @@ unsigned int CHSPScannerFSM::s1_Preview_on_event(FSMEvent* e)
 		}
 		e->SetHandled();
 		break;
+	case EVT_MAINPAGE_DISPLAY:
+	case USER_EVT_EXIT:
+		{
+			e->SetHandled();
+			if (m_dupFlag4ExitCancel) {
+				LogWarn(Severity_Low, Error_Debug, HSPScanner_UserErrorCode_DuplicateCancelPreview, CSimpleStringA::Format("%s::recv %s while CancelPreviewing", __FUNCTION__, EvtTypeToString(e->iEvt)));
+				uRet = 1;
+				//TODO: need to settimer ??  [Gifur@202565]
+			}
+		}
+		break;
 	}
+
 	return uRet;
 }
 
@@ -1107,11 +1144,12 @@ unsigned int CHSPScannerFSM::s5_DeviceOff_on_event(FSMEvent* e)
 
 void CHSPScannerFSM::s6_HidePreview_on_entry()
 {
+	m_dupFlag4ExitCancel = false;
 }
 
 void CHSPScannerFSM::s6_HidePreview_on_exit()
 {
-
+	m_dupFlag4ExitCancel = false;
 }
 
 unsigned int CHSPScannerFSM::s6_HidePreview_on_event(FSMEvent* e)
@@ -1149,6 +1187,7 @@ unsigned int CHSPScannerFSM::s6_HidePreview_on_event(FSMEvent* e)
 			pEvt->m_ctx->Answer(Error_Succeed);
 		}
 		else {
+			m_dupFlag4ExitCancel = true;
 			JS::CancelPreviewTask* pTask = new JS::CancelPreviewTask(this);
 			pTask->SetContext(pEvt->m_ctx);
 			GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
@@ -1162,6 +1201,13 @@ unsigned int CHSPScannerFSM::s6_HidePreview_on_event(FSMEvent* e)
 		e->SetHandled();
 	}
 	break;
+	case USER_EVT_CANCELPREVIEW_JS_DONE:
+	{
+		m_dupFlag4ExitCancel = false;
+		uRet = e->param1;
+		e->SetHandled();
+	}
+	break;
 	case USER_EVT_SCANIMAGE_JS:
 	{
 		JS::ScanImageTask* pTask = new JS::ScanImageTask(this);
@@ -1220,6 +1266,7 @@ unsigned int CHSPScannerFSM::s6_HidePreview_on_event(FSMEvent* e)
 			StopPreviewEvent* pEvt = dynamic_cast<StopPreviewEvent*>(e);
 			if(!pEvt->m_ctx->Req.bOnlyHide)
 			{//业务在s6状态仅能进行彻底取消预览的操作
+				m_dupFlag4ExitCancel = true;
 				StopPreviewTask* pTask = new StopPreviewTask(this);
 				pTask->SetContext(pEvt->m_ctx);
 				GetEntityBase()->GetFunction()->PostThreadPoolTask(pTask);
@@ -1229,6 +1276,7 @@ unsigned int CHSPScannerFSM::s6_HidePreview_on_event(FSMEvent* e)
 		break;
 	case USER_EVT_STOPPREVIEW_FINISHED:
 		{
+			m_dupFlag4ExitCancel = false;
 			uRet = e->param1;
 			if (uRet == 0 && ++m_nFatalTimes < MAX_ERROR_TIMES) {
 				uRet = 3;
@@ -1278,7 +1326,19 @@ unsigned int CHSPScannerFSM::s6_HidePreview_on_event(FSMEvent* e)
 		}
 		e->SetHandled();
 		break;
+	case EVT_MAINPAGE_DISPLAY:
+	case USER_EVT_EXIT:
+		{
+			e->SetHandled();
+			if (m_dupFlag4ExitCancel) {
+				LogWarn(Severity_Low, Error_Debug, HSPScanner_UserErrorCode_DuplicateCancelPreview, CSimpleStringA::Format("%s::recv %s while CancelPreviewing", __FUNCTION__, EvtTypeToString(e->iEvt)));
+				uRet = 1;
+				//TODO: need to settimer ??  [Gifur@202565]
+			}
+		}
+		break;
 	}
+
 	return uRet;
 }
 
@@ -1342,9 +1402,8 @@ unsigned int CHSPScannerFSM::s7_Exit_on_event(FSMEvent* e)
 		break;
 	default:
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("%s::UnHandle event ! %d", __FUNCTION__, e->iEvt);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("%s::UnHandle event ! %s", __FUNCTION__, EvtTypeToString(e->iEvt));
 			break;
-
 		}
 	}
 	return uRet;

+ 9 - 11
Module/mod_HSPScanner/HSPScannerFSM.h

@@ -146,8 +146,6 @@ public:
 		FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_STOPPREVIEW_FINISHED, 0)
 		FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_STOPPREVIEW_FINISHED, 4)
 
-		// Try sHidePreview state --Josephus at 10:10:05 2016/11/22
-		//FSM_RULE_ENTRY(sPreview, sIdle, USER_EVT_STOPPREVIEW_FINISHED, 1) //隐藏
 		FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_STOPPREVIEW_FINISHED, 1)
 
 		FSM_RULE_ENTRY(sPreview, sIdle, USER_EVT_STOPPREVIEW_FINISHED, 2) //关闭预览
@@ -187,15 +185,14 @@ public:
 		FSM_RULE_ENTRY(sHidePreview, sHidePreview, USER_EVT_STOPPREVIEW_FINISHED, 3) //错误还不足够严重,停留在当前状态
 
 
-		FSM_RULE_ENTRY_ANY(sPreview, sExit, USER_EVT_EXIT)
+		FSM_RULE_ENTRY(sPreview, sExit, USER_EVT_EXIT, 0)
 		FSM_RULE_ENTRY_ANY(sProperty, sExit, USER_EVT_EXIT)
-		FSM_RULE_ENTRY_ANY(sHidePreview, sExit, USER_EVT_EXIT)
+		FSM_RULE_ENTRY(sHidePreview, sExit, USER_EVT_EXIT, 0)
 		FSM_RULE_ENTRY(sExit, sIdle, USER_EVT_EXIT_FINISHED, 0)
-		FSM_RULE_ENTRY(sExit, sPreview, USER_EVT_EXIT_FINISHED, 2)
-		FSM_RULE_ENTRY(sExit, sHidePreview, USER_EVT_EXIT_FINISHED, 3)
-		FSM_RULE_ENTRY(sExit, sFault_Offline, USER_EVT_EXIT_FINISHED, 4)
-
 		FSM_RULE_ENTRY(sExit, sFault, USER_EVT_EXIT_FINISHED, 1)
+		FSM_RULE_ENTRY(sExit, sPreview, USER_EVT_EXIT_FINISHED, 2) //TODO: remove it  [Gifur@202565]
+		FSM_RULE_ENTRY(sExit, sHidePreview, USER_EVT_EXIT_FINISHED, 3) //TODO: remove it  [Gifur@202565]
+		FSM_RULE_ENTRY(sExit, sFault_Offline, USER_EVT_EXIT_FINISHED, 4) //TODO: remove it  [Gifur@202565]
 
 		FSM_RULE_ENTRY_ANY(sIdle, sInit, USER_EVT_INIT)
 		FSM_RULE_ENTRY_ANY(sIdle, sFault, USER_EVT_GOTOHELL)
@@ -209,15 +206,15 @@ public:
 
 		FSM_RULE_ENTRY(sPreview, sIdle, USER_EVT_CANCELPREVIEW_JS_DONE, 1) //取消预览成功
 		FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_CANCELPREVIEW_JS_DONE, 2) //隐藏成功
-		FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_CANCELPREVIEW_JS_DONE, 4)
+		FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_CANCELPREVIEW_JS_DONE, 4)//TODO: remove it  [Gifur@202565]
 
 		FSM_RULE_ENTRY(sHidePreview, sIdle, USER_EVT_CANCELPREVIEW_JS_DONE, 0)
 
 		FSM_RULE_ENTRY(sPreview, sHidePreview, USER_EVT_SCANIMAGE_JS_DONE, 2)
 		FSM_RULE_ENTRY(sPreview, sFault, USER_EVT_SCANIMAGE_JS_DONE, 4)
 
-		FSM_RULE_ENTRY_ANY(sPreview, sExit, EVT_MAINPAGE_DISPLAY)
-		FSM_RULE_ENTRY_ANY(sHidePreview, sExit, EVT_MAINPAGE_DISPLAY)
+		FSM_RULE_ENTRY(sPreview, sExit, EVT_MAINPAGE_DISPLAY, 0)
+		FSM_RULE_ENTRY(sHidePreview, sExit, EVT_MAINPAGE_DISPLAY, 0)
 		/** JS Compoent Done [Gifur@20241114]*/
 
 		FSM_RULE_ENTRY_ANY(sInit, sIdle, USER_EVT_INIT_FINISHED)
@@ -341,6 +338,7 @@ private:
 	DWORD dwLastUserCode;
 	DWORD m_dwMaxImageSize;
 	bool m_lightOn;
+	bool m_dupFlag4ExitCancel;
 
 private:
 

+ 1 - 13
Module/mod_IDCertificate/mod_IDCertificate.h

@@ -138,21 +138,9 @@ public:
 			DevCategoryInfo devCatInfo;
 			CSimpleStringA devType = "";
 			ctx->Ans.state = m_fsm.GetDevCatInfo(devCatInfo, devType);
-
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetDevInfo")
-				("devType:%s", (const char*)devType);
 			ctx->Ans.model = devCatInfo.szModel;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetDevInfo")
-				("szModel:%s", (const char*)devCatInfo.szModel);
 			ctx->Ans.type = devCatInfo.szType;
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetDevInfo")
-				("szType:%s", (const char*)devCatInfo.szType);
-			ctx->Ans.type += ((devType == "4") ? "#IG" : "#");//如果版本号为4,说明是嵌入式多合一(目前也有可能是新大机20190910@zjw),郭丹再判断机型是PAD,说明是PAD+嵌入式多合一,则读完证后不调用吐卡操作
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetDevInfo")
-				("%s", (const char*)ctx->Ans.type);
-			if (ctx->Ans.model.GetLength() < 256)
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetDevInfo")
-				("%s", (const char*)ctx->Ans.model);
+			ctx->Ans.type += ((devType == "4") ? "#IG" : "#");
 
 			ctx->Answer(Error_Succeed);
 

+ 17 - 12
Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp

@@ -266,11 +266,11 @@ void ResourceWatcherFSM::TriggerAtStatusChanged(bool bMStatus)
         GetEntityBase()->GetFunction()->OpenConfig(Config_CenterSetting, spCtSettingConfig);
         spCtSettingConfig->ReadConfigValueInt(m_pEntity->GetEntityName(), "VerifySignature", m_iVerify);
 #if defined(RVC_OS_WIN)
-        if (m_iVerify == 1) {//文件签名校验
-            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Verify digitsign...");
-            VerifyDigitSignTask* task = new VerifyDigitSignTask(this);
-            GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
-        }
+		if (m_iVerify == 1) {//文件签名校验
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Verify digitsign...");
+			VerifyDigitSignTask* task = new VerifyDigitSignTask(this);
+			GetEntityBase()->GetFunction()->PostThreadPoolTask(task);
+		}
         
 #endif //RVC_OS_WIN
         
@@ -574,7 +574,7 @@ void ResourceWatcherFSM::CenterSettingDelete()
     if (delResult.failCnt != 0) {
         bFailFlag = true;
     }
-    else {
+    else if(delResult.sucCnt > 0){
 		LogWarn(Severity_Low, Error_Debug, LOG_WARN_FILE_DELETE_SUC, CSimpleStringA::Format("Delete files in [%s] success", tempPath.GetData()));
     }
 }
@@ -624,11 +624,15 @@ int ResourceWatcherFSM::ProcessFileDelete(const DeleteParam& delParam, DeleteRes
 
     DWORD attrs = GetFileAttributesA(delParam.path);
     if (attrs == INVALID_FILE_ATTRIBUTES)
-    {     
-        CSimpleStringA errMsg = CSimpleStringA::Format("Can not find path:[%s], GLE = %u.", delParam.path.GetData(), GetLastError());
-        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(delParam.logCode).setResultCode(delParam.rtaCode).setAPI("DeleteFiles")(errMsg.GetData());
-        LogWarn(Severity_Middle, Error_Debug, LOG_WARN_FILE_DELETE_FAILED, errMsg);
-        delResult.failCnt++;
+    {
+        const DWORD lastError = GetLastError();
+        if (lastError != 2) /*NOT Found*/
+        {
+			CSimpleStringA errMsg = CSimpleStringA::Format("Can not find path:[%s], GLE = %u.", delParam.path.GetData(), lastError);
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(delParam.logCode).setResultCode(delParam.rtaCode).setAPI("DeleteFiles")(errMsg.GetData());
+			LogWarn(Severity_Middle, Error_Debug, LOG_WARN_FILE_DELETE_FAILED, errMsg);
+			delResult.failCnt++;
+        }
     }
     else if (attrs & FILE_ATTRIBUTE_DIRECTORY) //文件夹类型
     {
@@ -2592,7 +2596,7 @@ void ResourceWatcherFSM::VerifySignature()
 
     strMsg = strMsg + CSimpleStringA::Format("签名耗时:%dms", elapsed);
     LogWarn(Severity_Low, Error_Unexpect, LOG_WARN_FILE_NOT_TRUSTED, (LPCTSTR)strMsg);
-    delete buffer;
+    delete[] buffer;
 }
 
 void ResourceWatcherFSM::VerifySignature(const CSimpleStringA& filePath)
@@ -2605,6 +2609,7 @@ void ResourceWatcherFSM::VerifySignature(const CSimpleStringA& filePath)
         return;
 
     string strDirPath = filePath;
+    if (strDirPath.find("\\dep\\*") != std::string::npos) return;
     do
     {
         if (fileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

+ 114 - 96
Module/mod_chromium/mod_chromium.cpp

@@ -688,7 +688,7 @@ namespace Chromium {
 			}
 			//if contain default setting, then oepn web by setting
 #if (defined _WIN32 || defined _WIN64)
-			if (m_strArgs.GetCount())
+			if (m_strArgs.GetCount())//It do not contain default setting normally
 			{
 				if (ConfigManager::getInstance().m_strCustomMainUrl.length() > 0)
 					openMainPage();
@@ -898,11 +898,6 @@ namespace Chromium {
 				if (Error_Succeed == ret)
 					InitUserCodeToMsgTip(strErrorCodeArr, strDescriptionArr, strRemarkArr);
 
-				if (ConfigManager::getInstance().m_withSpecialTest)
-				{
-					CSimpleStringA strDescription, strVTMCode;
-					GetFunction()->GetVTMErrMsg(123456, strDescription, strVTMCode);
-				}
 				//should not open startup page, since it is already run before.
 				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("startWithCfg:open normal page");
 				startWithCfg();//属于chromium重启或者其他情况,已经初始化好配置, open main, ad and other page
@@ -910,6 +905,14 @@ namespace Chromium {
 			else
 			{
 				if (!ConfigManager::getInstance().m_noStartupPage) openStartupPage();//open startup page in normal mode
+				// startup page may open long time
+				if(ErrorCodeEnum::Error_Succeed == GetFunction()->GetSysVar("TerminalStage", t_terminalState))
+				{
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("may open startup too long, current terminalStage:%s", t_terminalState.GetData());
+					DoWithErrMsgListUpdate();
+					startWithCfg();
+				}
+				
 				ErrorCodeEnum rc = Error_Succeed;
 				if (Error_Succeed == (rc = GetFunction()->SubscribeLog(m_uuidVTMLoader, this, Log_Event, Severity_None, Error_IgnoreAll, -1, "VtmLoader")))
 					LogManager::getInstance().logEntityStatus("订阅VtmLoader成功", LOG_LEVEL_INFO, 0, "none");
@@ -967,6 +970,107 @@ namespace Chromium {
 		return ConfigManager::getInstance().getSysInfo().strMachineType.IsEndWith("CardStore", true) || ConfigManager::getInstance().getSysInfo().strMachineType.IsEndWith("CardPrinter", true);
 	}
 
+	void CChromiumEntity::DoWithErrMsgListUpdate()
+	{
+		if (!isMsgTipExist())
+		{
+			CAutoArray<CSimpleStringA> strErrorCodeArr;
+			CAutoArray<CSimpleStringA> strDescriptionArr;
+			CAutoArray<CSimpleStringA> strRemarkArr;
+			auto ret = GetFunction()->GetPrivilegeFunction()->GetVTMErrMsgArr(strErrorCodeArr, strDescriptionArr, strRemarkArr);
+			if (Error_Succeed == ret && strErrorCodeArr.GetCount() > 0)
+			{
+				InitUserCodeToMsgTip(strErrorCodeArr, strDescriptionArr, strRemarkArr);
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("update msg tips success");
+			}
+				
+		}
+	}
+
+	void CChromiumEntity::DoWithTerminalStage_toA()
+	{
+		try
+		{
+			if (CModTools::get_mutable_instance().IsConfigWork())//url正常时才关闭
+			{
+#if defined(RVC_OS_LINUX)
+				auto srcPids = getUosBrowserPIDs(CModTools::get_mutable_instance().getUosBrowser());
+#endif // RVC_OS_UOS
+
+				if (ConfigManager::getInstance().m_runAd) openAdPage();
+				openMainPage();
+				CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::breakdown);
+
+				std::this_thread::sleep_for(std::chrono::seconds(3));
+				LogWarn(Severity_Low, Error_Debug, LOG_SLV_CHROMIUM_URLOPEN, "正在启动业务界面");
+
+#if defined(RVC_OS_LINUX)
+				for (auto it : srcPids)
+				{
+					CSimpleStringA cmd = CSimpleStringA::Format("sudo kill -9 %d", it);
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CloseCommonPage %s", cmd.GetData());
+					system(cmd.GetData());
+				}
+#else
+				CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::startup);
+#endif
+				startupPageClean();
+
+				//DbgEx("UnregistSysVarEvent TerminalStage %s", Error_Succeed == GetFunction()->UnregistSysVarEvent("TerminalStage") ? "success" : "fail");
+			}
+		}
+		catch (const std::exception& e)
+		{
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("TerminalStage:A run exception, %s", e.what());
+		}
+	}
+
+	void CChromiumEntity::DoWithTerminalStage_toX()
+	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("TerminalStage X, do nothing.");
+	}
+
+	void CChromiumEntity::DoWithTerminalStage_toOther(std::string terminalStageVal)
+	{
+		try
+		{
+			if (!ConfigManager::getInstance().m_withBrowser)
+			{
+#if defined(RVC_OS_LINUX)
+				auto srcPids = getUosBrowserPIDs(CModTools::get_mutable_instance().getUosBrowser());
+#endif // RVC_OS_UOS
+
+				if (ConfigManager::getInstance().m_existRootIni && ConfigManager::getInstance().m_installMode)
+					return;//if root.ini exist and in install mode, do not close startup page
+#if defined(RVC_OS_LINUX)
+				for (auto it : srcPids)
+				{
+					CSimpleStringA cmd = CSimpleStringA::Format("sudo kill -9 %d", it);
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CloseCommonPage %s", cmd.GetData());
+					system(cmd.GetData());
+				}
+#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(terminalStageVal.c_str(), true))
+					reson = ERR_PAGE_REASON::warnPrompt;
+				else if(0 == CSimpleStringA("M").Compare(terminalStageVal.c_str(), true))
+					reson = ERR_PAGE_REASON::audioErr;
+
+				auto openRet = CModTools::get_mutable_instance().StartChromiumBrowser(reson, 
+					std::tuple < std::string, std::string>(ConfigManager::getInstance().getSysInfo().strTerminalID.GetData(), generateTimeStr()));
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("access failed, open err page %s, %d", Error_Succeed == openRet.first ? "success" : "fail", openRet.second);
+				CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::main);
+			}
+		}
+		catch (const std::exception& e)
+		{
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("TerminalStage:other run exception, %s", e.what());
+		}
+	}
+
 	void CChromiumEntity::DoWithSysVarEvent()
 	{
 		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create thread:%s", __FUNCTION__);
@@ -1000,100 +1104,14 @@ namespace Chromium {
 			/** 该事件有变化才会触发错误页 [Gifur@2022324]*/
 			else if (0 == CSimpleStringA("TerminalStage").Compare(curEvent.key.c_str(), true))
 			{
-				if (!isMsgTipExist())
-				{
-					CAutoArray<CSimpleStringA> strErrorCodeArr;
-					CAutoArray<CSimpleStringA> strDescriptionArr;
-					CAutoArray<CSimpleStringA> strRemarkArr;
-					auto ret = GetFunction()->GetPrivilegeFunction()->GetVTMErrMsgArr(strErrorCodeArr, strDescriptionArr, strRemarkArr);
-					if (Error_Succeed == ret && strErrorCodeArr.GetCount() > 0)
-					{
-						InitUserCodeToMsgTip(strErrorCodeArr, strDescriptionArr, strRemarkArr);
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("update msg tips over the change of TerminalStage");
-					}
-						
-				}
-
+				DoWithErrMsgListUpdate();
 
 				if (0 == CSimpleStringA("A").Compare(curEvent.value.c_str(), true))
-				{
-					try
-					{
-						if (CModTools::get_mutable_instance().IsConfigWork())//url正常时才关闭
-						{
-#if defined(RVC_OS_LINUX)
-							auto srcPids = getUosBrowserPIDs(CModTools::get_mutable_instance().getUosBrowser());
-#endif // RVC_OS_UOS
-
-							if (ConfigManager::getInstance().m_runAd) openAdPage();
-							openMainPage();
-							CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::breakdown);
-
-							std::this_thread::sleep_for(std::chrono::seconds(3));
-							LogWarn(Severity_Low, Error_Debug, LOG_SLV_CHROMIUM_URLOPEN, "正在启动业务界面");
-
-#if defined(RVC_OS_LINUX)
-							for (auto it : srcPids)
-							{
-								CSimpleStringA cmd = CSimpleStringA::Format("sudo kill -9 %d", it);
-								DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CloseCommonPage %s", cmd.GetData());
-								system(cmd.GetData());
-							}
-#else
-							CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::startup);
-#endif
-							startupPageClean();
-
-							//DbgEx("UnregistSysVarEvent TerminalStage %s", Error_Succeed == GetFunction()->UnregistSysVarEvent("TerminalStage") ? "success" : "fail");
-						}
-					}
-					catch (const std::exception& e)
-					{
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("TerminalStage:A run exception, %s", e.what());
-					}
-				}
+					DoWithTerminalStage_toA();
 				else if (0 == CSimpleStringA("X").Compare(curEvent.value.c_str(), true))
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("TerminalStage X, do nothing.");
+					DoWithTerminalStage_toX();
 				else
-				{
-					try
-					{
-						if (!ConfigManager::getInstance().m_withBrowser)
-						{
-#if defined(RVC_OS_LINUX)
-							auto srcPids = getUosBrowserPIDs(CModTools::get_mutable_instance().getUosBrowser());
-#endif // RVC_OS_UOS
-
-							if (ConfigManager::getInstance().m_existRootIni && ConfigManager::getInstance().m_installMode)
-								return;//if root.ini exist and in install mode, do not close startup page
-#if defined(RVC_OS_LINUX)
-							for (auto it : srcPids)
-							{
-								CSimpleStringA cmd = CSimpleStringA::Format("sudo kill -9 %d", it);
-								DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CloseCommonPage %s", cmd.GetData());
-								system(cmd.GetData());
-							}
-#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;
-							else if(0 == CSimpleStringA("M").Compare(curEvent.value.c_str(), true))
-								reson = ERR_PAGE_REASON::audioErr;
-
-							auto openRet = CModTools::get_mutable_instance().StartChromiumBrowser(reson, 
-								std::tuple < std::string, std::string>(ConfigManager::getInstance().getSysInfo().strTerminalID.GetData(), generateTimeStr()));
-							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("access failed, open err page %s, %d", Error_Succeed == openRet.first ? "success" : "fail", openRet.second);
-							CModTools::get_mutable_instance().StopChromiumBrowser(ERR_PAGE_REASON::main);
-						}
-					}
-					catch (const std::exception& e)
-					{
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("TerminalStage:other run exception, %s", e.what());
-					}
-				}
+					DoWithTerminalStage_toOther(curEvent.value);
 
 			}
 			else if (0 == CSimpleStringA("CardStoreInUse").Compare(curEvent.key.c_str(), true) && CheckIsCardStore())

+ 5 - 0
Module/mod_chromium/mod_chromium.h

@@ -139,6 +139,11 @@ namespace Chromium {
 		virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName);
 		void DoWithSysVarEvent();
 
+		void DoWithErrMsgListUpdate();
+		void DoWithTerminalStage_toA();
+		void DoWithTerminalStage_toX();
+		void DoWithTerminalStage_toOther(std::string terminalStageVal);
+
 		void checkUrlStartTime();
 
 		void DoBrowserCacheClearJob();

+ 1 - 0
Module/mod_gpio/GpioFSM.cpp

@@ -935,6 +935,7 @@ void CGPIOFSM::OnEventDetect(void* pData)
 		m_bOpenFlag = true;
 		m_DoorOpenTimeStamp = SP::Module::Comm::RVCGetTickCount();
 		LogEvent(Severity_Middle, LOG_EVT_OPENSENSOR_ON, CSimpleStringA::Format("%s [Active] line: %d", GetDriverPortString(18), __LINE__));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_DoorOpen)("[GPIO] The chassis door is open");
 	}
 	else if (!DetectBit(btInput, OPENSENSOR) && m_bOpenFlag) {
 		m_bOpenFlag = false;

+ 1 - 0
Module/mod_healthmanager/HealthManagerFSM.cpp

@@ -755,6 +755,7 @@ void CHealthManagerFSM::ToLogWarnTermAboutInfo()
 		termStartInfo["TotalCost"] = CSimpleStringA::Format("%d", m_ullTotalCost);
 		termStartInfo["AccessAuthCost"] = CSimpleStringA::Format("%d", m_ullAccessAuthCost);
 		termStartInfo["AccessAuthResult"] = CSimpleStringA::Format("%d", m_iAccessAuth);
+		termStartInfo["OSElapseTime"] = CSimpleStringA::Format("%d", m_elapseTimeFromOSStart);
 		
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("TerminalStartCost")("%s", generateJsonStr(termStartInfo).second.c_str());
 		LogWarn(Severity_Low, Error_Debug, HealthManager_UserErrorCode_TerminalAppLoadInfo, generateJsonStr(termStartInfo).second.c_str());

+ 3 - 1
Module/mod_healthmanager/mod_healthmanager.cpp

@@ -1561,7 +1561,9 @@ void CHealthManagerEntity::OnAnswer(CSmartPointer<IAsynWaitSp> pAsynWaitSp)
 			msgInfo["SelfTestReturnCode"] = SpStrError(new_entry->ErrorResult);
 			std::pair<bool, std::string> strResult;
 			strResult = generateJsonStr(msgInfo);
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402501S2")(strResult.second.c_str());
+			//oilyang@20250604 don't log "Error_DevNotAvailable" any more
+			if (new_entry->ErrorResult != Error_DevNotAvailable)
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402501S2")(strResult.second.c_str());
 		}
 	}
 }

+ 2 - 3
Module/mod_vtmloader/VtmLoaderFSM.cpp

@@ -3052,18 +3052,17 @@ DWORD CVtmLoaderFSM::GetCenterCfgThread()
 	if (ret != ErrorCodeEnum::Error_Succeed)
 	{
 		LogWarn(Severity_High, Error_Unexpect, VtmLoader_CenterSettingConnectFailed,
-			CSimpleStringA::Format("下载集中配置失败:%d", ret));
+			CSimpleStringA::Format("下载集中配置失败:%s", SpStrError(ret)));
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR0402101Z01").setResultCode("RTA1104")("集中配置下载失败");
 		return -1;
 	}
 
 	if (!isUpdate)
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetCenterSetting")("Centersetting not changed from spshell");
 		return -1;
 	}
 
-	LogWarn(Severity_Low, Error_Succeed, VtmLoader_CenterSettingConnectFailed,
+	LogWarn(Severity_Low, Error_Succeed, VtmLoader_CenterSettingUpdateSucceed,
 		CSimpleStringA::Format("下载集中配置成功,版本号变更成:%s", version.GetData()));
 
 	if (isReset)

+ 2 - 1
Module/mod_vtmloader/VtmLoader_UserCode.h

@@ -29,4 +29,5 @@ const int VtmLoader_SIPPhoneEntityLoad_Cost = 0x10f0021c;
 const int VtmLoader_DepDirCopyFailed = 0x10f0021d;
 const int VtmLoader_DepDirCopySuc = 0x10f0021e;
 const int VtmLoader_InfoAboutBootCost = 0x10f0021f;
-const int VtmLoader_CenterSettingConnectFailed = 0x10f00220;
+const int VtmLoader_CenterSettingConnectFailed = 0x10f00220;
+const int VtmLoader_CenterSettingUpdateSucceed = 0x10f00221;

+ 0 - 198
addin/cfg/shell.ini.in

@@ -1,198 +0,0 @@
-[Main]
-SoftwareVersion=@RVC_FRAMEWORK_VERSION@
-
-[Entity]
-;Simple=0,@LIB_PREFIX@mod_simple@LIB_SUFFIX@,0x903
-TimePolicy=1,@LIB_PREFIX@mod_timepolicy@LIB_SUFFIX@,0x904
-SnapShot=0,@LIB_PREFIX@mod_snapshot@LIB_SUFFIX@,0x905
-AgentInterpreter=0,@LIB_PREFIX@mod_agentip@LIB_SUFFIX@,0x906
-
-CenterSetting=0,@LIB_PREFIX@mod_CenterSetting@LIB_SUFFIX@,0x101
-CustMngrAuth=0,@LIB_PREFIX@mod_CustMngrAuth@LIB_SUFFIX@,0x102
-EventConverter=0,@LIB_PREFIX@mod_evtconverter@LIB_SUFFIX@,0x103
-Upload=0,@LIB_PREFIX@mod_upload@LIB_SUFFIX@,0x104
-InteractiveLog=0,@LIB_PREFIX@mod_interactivelog@LIB_SUFFIX@,0x106
-Alarm=0,@LIB_PREFIX@mod_alarm@LIB_SUFFIX@,0x107
-TokenKeeper=0,@LIB_PREFIX@mod_tokenmgr@LIB_SUFFIX@,0x10A
-HolderContext=0,@LIB_PREFIX@mod_HolderContext@LIB_SUFFIX@,0x315
-UpLog=0,@LIB_PREFIX@mod_uplog@LIB_SUFFIX@,0x10D
-
-IDCertificate=0,@LIB_PREFIX@mod_IDCertificate@LIB_SUFFIX@,0x201
-CardIssuer=0,@LIB_PREFIX@mod_CardIssuer@LIB_SUFFIX@,0x203
-FingerPrint=0,@LIB_PREFIX@mod_FingerPrint@LIB_SUFFIX@,0x204
-PinPad=0,@LIB_PREFIX@mod_PinPad@LIB_SUFFIX@,0x206
-MediaController=0,@LIB_PREFIX@mod_mediacontroller@LIB_SUFFIX@,0x208
-Gpio=0,@LIB_PREFIX@mod_Gpio@LIB_SUFFIX@,0x209
-Ups=0,@LIB_PREFIX@mod_Ups@LIB_SUFFIX@,0x20E
-MaintainWatcher=0,@LIB_PREFIX@mod_MaintainWatcher@LIB_SUFFIX@,0x210
-ContactlessCard=0,@LIB_PREFIX@mod_ContactlessCard@LIB_SUFFIX@,0x213
-DeviceControl=0,@LIB_PREFIX@mod_DeviceControl@LIB_SUFFIX@,0x214
-HSPScanner=0,@LIB_PREFIX@mod_HSPScanner@LIB_SUFFIX@,0x217
-ScannerSet=0,@LIB_PREFIX@mod_ScannerSet@LIB_SUFFIX@,0x218
-SurveillanceRecorder=0,@LIB_PREFIX@mod_SurveillanceRecorder@LIB_SUFFIX@,0x21A
-CardReadAdapter=0,@LIB_PREFIX@mod_CardReadAdapter@LIB_SUFFIX@,0x21B
-
-SIPPhone=0,@LIB_PREFIX@mod_sipphone@LIB_SUFFIX@,0x301
-FaceTracking=0,@LIB_PREFIX@mod_facetracking@LIB_SUFFIX@,0x302
-ScreenShot=0,@LIB_PREFIX@mod_screenshot@LIB_SUFFIX@,0x303
-CounterConnector=0,@LIB_PREFIX@mod_counterconnector@LIB_SUFFIX@,0x304
-InitiativeTransfer=0,@LIB_PREFIX@mod_initiativetransfer@LIB_SUFFIX@,0x305
-CustomerAware=0,@LIB_PREFIX@mod_customeraware@LIB_SUFFIX@,0x308
-InteractionContext=0,@LIB_PREFIX@mod_interactioncontext@LIB_SUFFIX@,0x309
-CounterContext=0,@LIB_PREFIX@mod_countercontext@LIB_SUFFIX@,0x30A
-InteractiveControl=0,@LIB_PREFIX@mod_interactivecontrol@LIB_SUFFIX@,0x30B
-AssistantChannel=0,@LIB_PREFIX@mod_assistantchannel@LIB_SUFFIX@,0x30C
-Recorder=0,@LIB_PREFIX@mod_recorder@LIB_SUFFIX@,0x312
-LocalMediaPlay=0,@LIB_PREFIX@mod_localmediaplay@LIB_SUFFIX@,0x313
-LivenessDetection=0,@LIB_PREFIX@mod_livenessdetection@LIB_SUFFIX@,0x314
-SalesRecorder=0,@LIB_PREFIX@mod_SalesRecorder@LIB_SUFFIX@,0x315
-
-IEBrowser=0,@LIB_PREFIX@mod_browser@LIB_SUFFIX@,0x401
-Chromium=1,@LIB_PREFIX@mod_chromium@LIB_SUFFIX@,0x402
-
-HealthManager=1,@LIB_PREFIX@mod_HealthManager@LIB_SUFFIX@,0x501
-AccessAuthorization=0,@LIB_PREFIX@mod_AccessAuth@LIB_SUFFIX@,0x502
-HeartBeat=1,@LIB_PREFIX@mod_HeartBeat@LIB_SUFFIX@,0x503
-RemoteController=1,@LIB_PREFIX@mod_RomoteController@LIB_SUFFIX@,0x504
-
-UpgradeManager=1,@LIB_PREFIX@mod_UpgradeMgr@LIB_SUFFIX@,0x506
-GUIConsole=1,@LIB_PREFIX@mod_GUIConsole@LIB_SUFFIX@,0x508
-Initializer=0,@LIB_PREFIX@mod_Initializer@LIB_SUFFIX@,0x509
-ResourceWatcher=1,@LIB_PREFIX@mod_ResourceWatcher@LIB_SUFFIX@,0x50A
-
-[Test]
-Number=1
-1=TestDeamon TestMode=OFF Level=3 Entity=BlackSheep -D
-
-[SysEvent]
-CallState=CounterConnector,"O"
-BackInitiative=InitiativeTransfer,"O"
-CustomerBeing=CustomerAware,"S"
-CustomerHandle=CustomerAware,"N"
-VideoWindowInitializeParam=Chromium,"hwnd1_remote:(1728,140,1024,768),hwnd2_local(2830,800,320,240)"
-LockScreen=TimePolicy,"N"
-ActiveTrackingCamera=FaceTracking,"E"
-EntryPermit=AccessAuthorization,"I"
-TerminalStage=HealthManager,"A"
-IEUrl=HealthManager,"http://99.8.42.90/RVC.Web/default.aspx http://99.8.42.90/RVC.Web/default2.aspx"
-RunState=HealthManager,"O"
-NeedGuardian=HealthManager,"Y"
-HeartbeatState=HeartBeat,"S"
-AgentCameraSwitch=AgentInterpreter,"A"
-SessionID=CustomerAware,"N"
-CustomerID=InteractiveLog,"N"
-CameraState=MediaController,"N"
-LocalMaintain=GUIConsole,"N"
-RemoteMaintain=RemoteController,"N"
-UIState=Chromium,"X"
-NetDeviceState=HealthManager,"N"
-CardEntityState=CardReadAdapter,"X"
-DesktopType=Chromium,"B"
-SessionCount=Chromium,"0"
-TradeManageState=Chromium,"T"
-TerminalManagerState=Chromium,"N"
-AttachedTerminal=Chromium,"007"
-calltype=CounterConnector,"N"
-VideoSpaceStatus=ResourceWatcher,"U"
-LockState=AccessAuthorization,"0"
-CardStoreInUse=CardIssuer,"N"
-AuthErrMsg=AccessAuthorization;HealthManager,""
-AccessHavePath=AccessAuthorization,"N"
-FirstLaunchSinceSysBoot=ResourceWatcher,"N"
-UpdateState=UpgradeManager,"0"
-WKSyncSuccTime=AccessAuthorization,""
-WKSyncFailCount=AccessAuthorization,"0"
-NetState=HealthManager,"N"
-CameraOccupyingStatus=ScannerSet;MediaController,""
-ckCode=HealthManager;PinPad,""
-ShellGrayUrl=GUIConsole,"https://rvcgray.paas.cmbchina.cn/api/gray/way https://rvcgraynew.paas.cmbchina.cn/api/gray/way"
-ShellTeriminalInfoUrl=GUIConsole,""
-shell_channelId=GUIConsole,""
-shell_token=GUIConsole,""
-InitFWBFromStart=HealthManager,""
-CameraConfigRet=MediaController,"X"
-
-
-[Startup]
-Number=0
-2=GUIConsole
-1=HealthManager
-
-[Debug]
-;TestDeamon=1
-HelloClient=1
-HelloService=1
-;Initializer=1
-;AccessAuthorization=1
-;TokenKeeper=1
-;Download=1
-;UpgradeManager=1
-;UpgradeRun=1
-;MediaController=1
-;Gpio=0
-;EventConverter=0
-;Upload=0
-;AssistantChannel=0
-;IEBrowser=0
-;SpShell=0
-;GUIConsole=1
-;PinPad=0
-;FaceTracking=0
-
-[MemTrace]
-;mod_simple=1
-;mod_console=1
-
-[killProcess]
-Number=1
-1=cefclient.exe
-
-[RunScript]
-Number=1
-1=SogouServStarter.bat
-
-[InstallProc]
-;SkipTerminalInfoCheck=1
-
-[MicroServiceURL-Dev]
-CenterConfigUrl1=https://centerconfig.paasst.cmbchina.cn/api/terminal/center/config/v3
-CenterConfigUrl2=https://centerconfigdmz.paasst.cmbchina.cn/api/terminal/center/config/v3
-CommonLaunchUrl=https://rvc-gateway.paasst.cmbchina.cn|https://rvc-gateway-out.paasst.cmbchina.cn
-CenterConfigTotal=https://accessproxy-service.paas.cmbchina.cn/centerconfig|https://accessproxy-service.paas.cmbchina.cn/centerconfigdmz
-
-[MicroServiceURL-ST]
-CenterConfigUrl1=https://centerconfig.paasst.cmbchina.cn/api/terminal/center/config/v3
-CenterConfigUrl2=https://centerconfigdmz.paasst.cmbchina.cn/api/terminal/center/config/v3
-CommonLaunchUrl=https://rvc-gateway.paasst.cmbchina.cn|https://rvc-gateway-out.paasst.cmbchina.cn
-CenterConfigTotal=https://accessproxy-service.paasst.cmbchina.cn/centerconfig|https://accessproxy-service.paasst.cmbchina.cn/centerconfigdmz
-
-[MicroServiceURL-UAT]
-CenterConfigUrl1=https://centerconfig.paasuat.cmbchina.cn/api/terminal/center/config/v3
-CenterConfigUrl2=https://centerconfigdmz.paasuat.cmbchina.cn/api/terminal/center/config/v3
-CommonLaunchUrl=https://rvc-gateway.paasuat.cmbchina.cn|https://rvc-gateway-out.paasuat.cmbchina.cn
-CenterConfigTotal=https://accessproxy-service.paasuat.cmbchina.cn/centerconfig|https://accessproxy-service.paasuat.cmbchina.cn/centerconfigdmz
-
-[MicroServiceURL]
-CenterConfigUrl1=https://accessproxy-service.paas.cmbchina.cn/centerconfig/api/terminal/center/config/v3
-CenterConfigUrl2=https://accessproxy-service.paas.cmbchina.com/centerconfig/api/terminal/center/config/v3
-CenterConfigUrl3=https://centerconfig.paas.cmbchina.cn/api/terminal/center/config/v3
-CenterConfigUrl4=https://centerconfig.paas.cmbchina.com/api/terminal/center/config/v3
-CommonLaunchUrl=https://rvc-gateway.paas.cmbchina.cn|https://vtmunify.paas.cmbchina.com/gateway
-CenterConfigTotal=https://accessproxy-service.paas.cmbchina.cn/centerconfig|https://vtmunify.paas.cmbchina.com/centerconfig
-
-[NetworkCheck]
-URL=http://rvcweb.cmbchina.cn/
-URL-ST=https://www.cmbchina.com/
-URL-UAT=https://www.cmbchina.com/
-URL-Dev=https://oa.paas.cmbchina.com/
-URL-Internet=https://rvcweb.cmbchina.com/
-
-[TerminalRegistInfoUrl]
-LAN=https://rvcgateway.paas.cmbchina.cn
-[TerminalRegistInfoUrl_ST]
-LAN=https://rvcgateway.paasst.cmbchina.cn
-[TerminalRegistInfoUrl_UAT]
-LAN=https://rvcgateway.paasuat.cmbchina.cn
-
-
-