浏览代码

Merge branch 'ST2' into T25RC761_base_ST2

# Conflicts:
#	Module/mod_mediacontroller/Event.h
#	Module/mod_mediacontroller/capture.cpp
#	Module/mod_mediacontroller/mod_mediacontroller.cpp
80274480 3 月之前
父节点
当前提交
3e5da7580c
共有 55 个文件被更改,包括 1104 次插入1503 次删除
  1. 2 2
      CMakeLists.txt
  2. 11 2
      Framework/Common/RVCEventCode.h
  3. 0 1
      Framework/spbase/sp_httpDefine.cpp
  4. 2 0
      Module/CMakeLists.txt
  5. 67 0
      Module/include/CommEntityUtil.hpp
  6. 5 4
      Module/include/DevEntityCommBase.hpp
  7. 53 151
      Module/include/DevFSMCommBase.hpp
  8. 3 3
      Module/include/EventCode.h
  9. 10 5
      Module/mod_CardIssuerStand/CardIssuerStandFSM.cpp
  10. 3 3
      Module/mod_CardReadAdapter/CardReadAdapterFSM.cpp
  11. 1 0
      Module/mod_CardReadAdapter/CardReadAdapter_UserErrorCode.h
  12. 8 7
      Module/mod_ContactlessCard/ContactlessFSM.cpp
  13. 3 3
      Module/mod_CustMngrAuth/CustMngrAuthFSM.cpp
  14. 3 2
      Module/mod_FingerPrint/FingerPrintFSM.cpp
  15. 2 20
      Module/mod_HSPScanner/HSPSCanner_UserErrorCode.h
  16. 153 130
      Module/mod_HSPScanner/HSPScannerFSM.cpp
  17. 15 15
      Module/mod_HSPScanner/HSPScannerFSM.h
  18. 0 35
      Module/mod_HSPScanner/mod_HSPScanner.cpp
  19. 0 5
      Module/mod_HSPScanner/mod_HSPScanner.h
  20. 16 7
      Module/mod_IDCertificate/IDCertFSM.cpp
  21. 151 1
      Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp
  22. 27 4
      Module/mod_ResourceWatcher/ResourceWatcherFSM.h
  23. 9 1
      Module/mod_ResourceWatcher/mod_ResourceWatcher.h
  24. 8 8
      Module/mod_RomoteController/RemoteControllerCnn.cpp
  25. 0 245
      Module/mod_UpgradeMgr/UpgradeManager_client_g.h
  26. 0 120
      Module/mod_UpgradeMgr/UpgradeManager_def_g.h
  27. 0 15
      Module/mod_UpgradeMgr/UpgradeManager_msg_g.h
  28. 0 135
      Module/mod_UpgradeMgr/UpgradeManager_server_g.h
  29. 159 124
      Module/mod_UpgradeMgr/UpgradeTaskFSM.cpp
  30. 2 2
      Module/mod_UpgradeMgr/UpgradeTaskFSM.h
  31. 50 110
      Module/mod_UpgradeMgr/mod_UpgradeMgr.cpp
  32. 3 58
      Module/mod_UpgradeMgr/mod_UpgradeMgr.h
  33. 5 5
      Module/mod_accessauth/AccessAuthFSM.cpp
  34. 9 9
      Module/mod_accessauth/mod_AccessAuth.cpp
  35. 2 1
      Module/mod_alarm/AlarmFSM.cpp
  36. 13 7
      Module/mod_cardissuerstore/CardIssuerStoreFSM.cpp
  37. 1 0
      Module/mod_chromium/CMethodInterface.h
  38. 24 10
      Module/mod_chromium/CModTools.cpp
  39. 4 3
      Module/mod_chromium/CStructureInterpreter.cpp
  40. 2 0
      Module/mod_chromium/CWSCodec.cpp
  41. 12 8
      Module/mod_chromium/CWebsocketServer.cpp
  42. 3 33
      Module/mod_chromium/mod_chromium.cpp
  43. 122 168
      Module/mod_gpio/GpioFSM.cpp
  44. 8 15
      Module/mod_gpio/GpioFSM.h
  45. 1 1
      Module/mod_gpio/Gpio_UserErrorCode.h
  46. 2 6
      Module/mod_gpio/mod_gpio.cpp
  47. 5 3
      Module/mod_healthmanager/mod_healthmanager.cpp
  48. 1 1
      Module/mod_heartbeat/HeartBeatFSM.cpp
  49. 3 1
      Module/mod_heartbeat/HeartBeatFSM.h
  50. 3 0
      Module/mod_mediacontroller/mod_mediacontroller.cpp
  51. 2 3
      Module/mod_pinpad/PinPadFSM.cpp
  52. 9 7
      Module/mod_upload/UploadFSM.cpp
  53. 34 2
      addin/res/RunScript/startBrower.sh
  54. 32 2
      addin/res/RunScript/startUOSBrower.sh
  55. 41 0
      addin/res/RunScript/stopBrowser.sh

+ 2 - 2
CMakeLists.txt

@@ -882,9 +882,9 @@ if(WITH_LABEL_RECORD AND DEVOPS_ON AND NOT DEVOPS_ON_CMAKE_PRD)
 	string(TOLOWER $ENV{DEVOPS_ENV} LABEL_UPLOAD_ENV_STR) #st|uat
 	
 	if(DEVOPS_ON_CMAKE_ST)
-		set(LABEL_UPLOAD_URL_PREFIX "http://55.11.56.122/rvc/LR04.02_RVCTerminalPlus_ST")
+		set(LABEL_UPLOAD_URL_PREFIX "http://55.150.137.198/upgrade/LR04.02_RVCTerminalPlus_ST")
 	else()
-		set(LABEL_UPLOAD_URL_PREFIX "http://55.11.56.122/rvc/LR04.02_RVCTerminalPlus_UAT")
+		set(LABEL_UPLOAD_URL_PREFIX "http://55.150.137.198/upgrade/LR04.02_RVCTerminalPlus_UAT")
 	endif(DEVOPS_ON_CMAKE_ST)
 	set(LABEL_UPLOAD_URL "${LABEL_UPLOAD_URL_PREFIX}/RVCTerminalPlus-$ENV{PIPELINE_BRANCH}.zip")
 	set(LABEL_UPLOAD_URL_NAME "http://avsuser.paasuat.cmbchina.cn/avsui/other-bean/insert-tmp-version-info")

+ 11 - 2
Framework/Common/RVCEventCode.h

@@ -27,8 +27,8 @@ inline CSimpleStringA DWORD2Hex(DWORD cur)
 #define RTAERR_SPHOST_IOM_FAILED			"RTA0021"	//iom create failed
 
 
-#define VTM_LAUNCH_RESERVERD_START			"RTA0030"
-#define VTM_LAUNCH_RESERVERD_END			"RTA003Z"
+#define VTM_LAUNCH_RESERVERD_START			"RTA0030" //在VTM.exe中使用
+#define VTM_LAUNCH_RESERVERD_END			"RTA003Z" //在VTM.exe中使用
 
 //for public method of read/write(get/set)
 #define RTAERR_CONFIG_OPEN_FAILED			"RTA0041"	//->OpenConfig failed
@@ -40,4 +40,13 @@ inline CSimpleStringA DWORD2Hex(DWORD cur)
 #define RTAERR_SYSVAR_SET_FAILED			"RTA0047"	//->SetSysVar failed
 #define RTAERR_GETPATH_FAILED				"RTA0048"	//->GetPath failed
 
+#define DEVICE_FSM_RESERVERD_START			"RTA0050" // RTA0050 - RTA005Z 在 DevFSMCommBase 中使用
+#define DEVICE_FSM_LOADADDR_DLOPEN_FAILED   "RTA0050"
+#define DEVICE_FSM_LOADADDR_CREATEOJ_FAILED "RTA0051"
+#define DEVICE_FSM_LOADADDR_RELOJ_FAILED    "RTA0052"
+#define DEVICE_FSM_CREATE_DEVOBJ_FAILED     "RTA0053"
+#define DEVICE_FSM_DEVOBJ_NULLPTR           "RTA0054"
+#define DEVICE_FSM_DEVCLOSE_FAILED          "RTA0055"
+#define DEVICE_FSM_DEVGETLE_FAILED          "RTA0056"
+
 #endif

+ 0 - 1
Framework/spbase/sp_httpDefine.cpp

@@ -609,7 +609,6 @@ std::pair<bool, std::string> refreshToken(std::string terminalNo, std::string in
 		}
 	}
 	LogWarn(Severity_Low, Error_Bug, GET_TOKEN_ERR, "total getToken failed");
-	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("refreshToken").setLogCode("QLR0402Z10A00003")("total getToken failed");
 	return std::make_pair(false, "");
 }
 

+ 2 - 0
Module/CMakeLists.txt

@@ -243,6 +243,8 @@ add_subdirectory(mod_vtmloader)
 #below should be compiled succesufully.
 add_subdirectory(mod_SalesRecorder)
 add_subdirectory(mod_sipphone)
+#add uos cardissuerstore
+add_subdirectory(mod_cardissuerstore)
 endif(MSVC)
 
 

+ 67 - 0
Module/include/CommEntityUtil.hpp

@@ -738,6 +738,73 @@ static std::wstring S2W(const std::string str)
 	return std::wstring();
 }
 
+enum DataTypeToMask
+{
+	DataMask_UNKNOWN,
+	DataMask_IDCard,	/*居民身份证*/
+	DataMask_HKMOTWPermit,	/*港澳台居住证*/
+	DataMask_HKMOPermit,	/*港澳往来内地通行证*/
+	DataMask_TWPass,	/*台胞证*/
+	DataMask_ForeignerPR,	/*外国人永久居留证*/
+	DataMask_Passport,	/*外国人护照*/
+	DataMask_CardAccount,	/*卡号*/
+};
+//to mask data
+//if data is null or empty or length of data is short than 3, break ;
+//return the first one and the last two characters by default
+static CSimpleStringA DataMask(DataTypeToMask eDataType, CSimpleStringA data)
+{
+	if (data.IsNullOrEmpty())
+	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data is null or empty");
+		return "";
+	}
+	else if (data.GetLength() < 3)
+	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data length is %d, too short");
+		return "";
+	}
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("data type is %d, length is %d", eDataType, data.GetLength());
+	switch (eDataType)
+	{
+	case DataMask_IDCard:
+	case DataMask_HKMOTWPermit:
+	case DataMask_ForeignerPR:
+		if (data.GetLength() < 7)
+		{
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data length is %d", data.GetLength());
+			break;
+		}
+		return CSimpleStringA::Format("%s****%s", data.SubString(0, 6).GetData(), data.SubString(data.GetLength() - 1, 1).GetData());
+		break;
+	case DataMask_HKMOPermit:
+		if (data.GetLength() < 5)
+		{
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data length is %d", data.GetLength());
+			break;
+		}
+		return CSimpleStringA::Format("%s****%s", data.SubString(0, 1).GetData(), data.SubString(data.GetLength() - 4, 4).GetData());
+		break;
+	case DataMask_CardAccount:
+		if (data.GetLength() < 5)
+		{
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("data length is %d", data.GetLength());
+			break;
+		}
+		if (data.GetLength() < 16)
+			return CSimpleStringA::Format("%s**%s", data.SubString(0, 2).GetData(), data.SubString(data.GetLength() - 2, 2).GetData());
+		else
+			return CSimpleStringA::Format("%s****%s", data.SubString(0, 4).GetData(), data.SubString(data.GetLength() - 4, 4).GetData());
+		break;
+	case DataMask_TWPass:
+	case DataMask_Passport:
+	case DataMask_UNKNOWN:
+	default:
+		break;
+	}
+	return CSimpleStringA::Format("%s****%s", data.SubString(0, 1).GetData(), data.SubString(data.GetLength() - 2, 2).GetData());
+}
+
 } //namespace Util
 
 namespace Net{

+ 5 - 4
Module/include/DevEntityCommBase.hpp

@@ -213,7 +213,7 @@ inline ErrorCodeEnum CDevAdptEntityBase::ExtractVendorLibFullPath(CSimpleStringA
 		rc = IsNotConfigure() ? Error_NotConfig : Error_Succeed;
 	}
 	else {
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Get Dep path failed: %s", SpStrError(rc));
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA0048")("Get Dep path failed: %s", SpStrError(rc));
 	}
 	return rc;
 }
@@ -250,7 +250,6 @@ inline void CDevAdptEntityBase::InitializeVendorLogSwitch()
 	GetFunction()->OpenConfig(Config_CenterSetting, centerConfig);
 
 	CSimpleStringA str;
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("To get config [All]  key...");
 	centerConfig->ReadConfigValue(GetEntityName(), "All", str);
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("All: %s", str.GetData());
 
@@ -267,8 +266,10 @@ inline void CDevAdptEntityBase::InitializeVendorLogSwitch()
 			if (!stLogConfig.strType.IsNullOrEmpty()) stLogConfig.strType += "|";
 			stLogConfig.strType += "FILE";
 		}
-		GetFunction()->GetPath("Dbg", stLogConfig.strLogPath);
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("DbgPath: %s", stLogConfig.strLogPath.GetData());
+		ErrorCodeEnum ec = GetFunction()->GetPath("Dbg", stLogConfig.strLogPath);
+		if (IS_FAILURED(ec)) {
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA0048")("Get Dbg path failed: %s", SpStrError(ec));
+		}
 		stLogConfig.Settle();
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("{\"RecordLevel\":\"%s\", \"RecordType\":\"%s\"}",
 			stLogConfig.strLevel.GetData(),stLogConfig.strType.GetData());

+ 53 - 151
Module/include/DevFSMCommBase.hpp

@@ -33,15 +33,6 @@ do{\
 	ent.dwEntityId = entityID;	\
 } while (false)
 
-#define HARDWARE_ENTITY_SET_DEVCODE(ent, ec, reserved)	\
-do {\
-	ent.dwVendorErroCode = ec;	\
-	ent.dwReserved = reserved;	\
-} while (false)
-
-#define HARDWARE_ENTITY_MAKE_ERRORCODE(ec)	\
-	MAKE_SLV_ERRORCODE(ec.dwEntityId, (ec.dwVendorId), ec.dwVendorErroCode)
-
 #define HARDWARE_ENTITY_MAKE_ERRORCODE_TO_BUSINESS(ec)	\
 	MAKE_SLV_ERRORCODE_TO_BUSINESS(ec.dwEntityId, ec.dwVendorErroCode, ec.dwReserved)
 
@@ -65,9 +56,6 @@ private:
 		for (int i = 0; i < strTest.GetLength(); ++i) {
 			if (strTest[i] >= 'A' && strTest[i] <= 'Z') strTest[i] = strTest[i] + ('a' - 'A');
 		}
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("strTest:%s", strPath.GetData());
-
-
 		if (strTest.IndexOf("pinpad") != -1) {
 			replaceAdapterName = "PinPad.self.1.1.dll";
 			result = true;
@@ -158,28 +146,28 @@ public:
 
 			int res = toolkit_dlopen(strTemp, &m_lib);
 			if (res != 0) {
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("toolkit_dlopen[%s] failed with error %s.", strTemp.GetData(), toolkit_dlerror(&m_lib));
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode(DEVICE_FSM_LOADADDR_DLOPEN_FAILED)("toolkit_dlopen[%s] failed with error %s.", strTemp.GetData(), toolkit_dlerror(&m_lib));
 				erroCode = Error_DevLoadFileFailed;
 				break;
 			}
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to get CreateDevComponent pointer address...");
 			if ((res = toolkit_dlsym(&m_lib, "CreateDevComponent", (void**)&pFuncCreateAdapt)) != 0) 
 			{
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Get 'CreateDevComponent' Func address failed with error: %s", toolkit_dlerror(&m_lib));
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode(DEVICE_FSM_LOADADDR_CREATEOJ_FAILED)("Get 'CreateDevComponent' Func address failed with error: %s", toolkit_dlerror(&m_lib));
 				erroCode = Error_DevLoadFileFailed;
 				break;
 			}
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to get ReleaseDevComponent pointer address...");
 			if ((res = toolkit_dlsym(&m_lib, "ReleaseDevComponent", (void**)&pFuncReleaseAdapt)) != 0) 
 			{
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Get 'ReleaseDevComponent' Func address failed with error: %s", toolkit_dlerror(&m_lib));
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode(DEVICE_FSM_LOADADDR_RELOJ_FAILED)("Get 'ReleaseDevComponent' Func address failed with error: %s", toolkit_dlerror(&m_lib));
 				erroCode = Error_DevLoadFileFailed;
 				break;
 			}
 #if defined(RVC_OS_WIN)
 			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 {
@@ -211,11 +199,11 @@ public:
 				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]"
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode(DEVICE_FSM_CREATE_DEVOBJ_FAILED)("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));
+				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode(DEVICE_FSM_CREATE_DEVOBJ_FAILED)("Create device adapter object failed! EC=%s", SpStrError(erroCode));
 			}
 			return erroCode;
 		}
@@ -238,13 +226,16 @@ public:
 
 	void TearDown()
 	{
-		LOG_FUNCTION();
-
 		if (m_AdptObjPtr != nullptr) 
 		{
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("To DevClose...");
+			ULONGLONG ullStart = SP::Module::Comm::RVCGetTickCount();
 			ErrorCodeEnum result = m_AdptObjPtr->DevClose();
-            DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("DevClose returned %s", SpStrError(result));
+			ULONGLONG ullEnd = SP::Module::Comm::RVCGetTickCount();
+			if (IS_FAILURED(result)) {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(DEVICE_FSM_DEVCLOSE_FAILED)/*.setAPI("DevAdapter::DevClose") 不纳入适配器消费,因为不好分配RTA,只做调研*/
+					.setCostTime(ullEnd - ullStart)("DevClose returned %s", SpStrError(result));
+			}
 			if (nullptr != pFuncReleaseAdapt)
 			{
 				DeviceBaseClass* devBasePtr = static_cast<DeviceBaseClass*>(m_AdptObjPtr);
@@ -252,13 +243,12 @@ public:
 					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("To Release DevAdapter Object...");
                     pFuncReleaseAdapt(devBasePtr);
                     m_AdptObjPtr = nullptr;
-				} else {
-					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("static cast base dev class failed!");
 				}
 			}
 		}
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to dlclose DevAdapter libs...");
 		toolkit_dlclose(&m_lib);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dlclose DevAdapter libs succ");
 		pFuncReleaseAdapt = pFuncCreateAdapt = nullptr;
 		pFuncGetPrefixErr = nullptr;
 	}
@@ -382,14 +372,12 @@ public:
 	CSimpleStringA strPort;
 	CSimpleStringA strBaudrate;
 	CSimpleStringA strPortNum;
-	CSimpleStringA strCheckdata;
-	CSimpleStringA strKeysn;
 	CSimpleStringA strPureAdapterName;
 
 	AdaptorInfo() :strVendor(true), strVersion(true), strBatch(true)
 		, strPort(true), strBaudrate(true)
 		, strPortNum(true)
-		, strCheckdata(true), strKeysn(true), strPureAdapterName(true)
+		, strPureAdapterName(true)
 	{
 	}
 
@@ -482,6 +470,7 @@ struct AdapterInfo : public AdaptorInfo
 		//CheckCategoryInfoFormat();
 	}
 
+	/*
 	void CheckCategoryInfoFormat()
 	{
 		const int DEV_CATINFO_SUM = 3;
@@ -555,6 +544,7 @@ struct AdapterInfo : public AdaptorInfo
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("CheckDevInfoFormat, %s is empty.", devInfo[devSn]);
 		}
 	}
+	*/
 };
 
 struct ErrorPackageEx {
@@ -594,8 +584,6 @@ struct DevEntityErrorCode {
 	{
 		return MAKE_SLV_ERRORCODE(dwEntityId, dwVendorId, dwVendorErroCode);
 	}
-
-
 };
 
 template<class TFSM, class TDevClass>
@@ -603,7 +591,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')
+	CCommDevFSM() : m_iInWhatPage(PageType_Init),m_bOpened(false), m_bOpening(true), m_eDevState(DEVICE_STATUS_NOT_READY), m_preUIState('X')
 	{
 		
 	}
@@ -650,11 +638,9 @@ public:
 		strResult = generateJsonStr(msgInfo);
 		CSimpleStringA csErrMsgWithReturnCode = strResult.second.c_str();
 
-		
 		CSimpleStringA tmpRTA(true), tmpDesc(true);
 		this->GetEntityBase()->GetFunction()->GetVTMErrMsg(dwCode, tmpDesc, tmpRTA);
 
-
 		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());
@@ -704,7 +690,11 @@ public:
 		m_adapterInfo.strPureAdapterName = vendorLib.strFileValue;
 
 		CSmartPointer<IConfigInfo> spConfigRoot;
-		this->GetEntityBase()->GetFunction()->OpenConfig(Config_Root, spConfigRoot);
+		ErrorCodeEnum ec = this->GetEntityBase()->GetFunction()->OpenConfig(Config_Root, spConfigRoot);
+		if (ec != Error_Succeed) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(RTAERR_CONFIG_OPEN_FAILED)("Open Config_Root failed: %s.", SpStrError(ec));
+			return;
+		}
 
 		CSimpleStringA entityName(this->GetEntityBase()->GetEntityName());
 		if (entityName.Compare("CardIssuerStore", true) == 0 || entityName.Compare("CardIssuerStand", true) == 0) {
@@ -718,22 +708,19 @@ public:
 		m_adapterInfo.strPort = csPort;
 		m_adapterInfo.strBaudrate = csBaudrate;
 
-		CSimpleStringA csPortNum(true), csCheckData(true), csKeySN(true), csInOutDir(true);
+		CSimpleStringA csPortNum(true);
 		if (!entityName.Compare("Gpio")) {
 			spConfigRoot->ReadConfigValue(sectionName.GetData(), "PortNum", csPortNum);
 			m_adapterInfo.strPortNum = csPortNum;
-		} else if (!entityName.Compare("PinPad")) {
-			spConfigRoot->ReadConfigValue(sectionName.GetData(), "Checkdata", csCheckData);
-			spConfigRoot->ReadConfigValue(sectionName.GetData(), "Keysn", csKeySN);
-			m_adapterInfo.strCheckdata = csCheckData;
-			m_adapterInfo.strKeysn = csKeySN;
 		}
 
 		m_adapterInfo.adapterFileName = vendorLib.toLibNameString();
 		CSimpleStringA strDepPath(true);
-		this->GetEntityBase()->GetFunction()->GetPath("Dep", strDepPath);
-		m_adapterInfo.adapterFilePath = CSimpleStringA::Format(
-			"%s" SPLIT_SLASH_STR "%s", (LPCTSTR)strDepPath, (LPCTSTR)m_adapterInfo.adapterFileName);
+		ec = this->GetEntityBase()->GetFunction()->GetPath("Dep", strDepPath);
+		if (IS_FAILURED(ec)) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(RTAERR_GETPATH_FAILED)("GetPath for Dep failed: %s.", SpStrError(ec));
+		}
+		m_adapterInfo.adapterFilePath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", (LPCTSTR)strDepPath, (LPCTSTR)m_adapterInfo.adapterFileName);
 	}
 
 	ErrorCodeEnum FulfillAdapterDevCategory()
@@ -744,7 +731,7 @@ public:
 			ZeroMemory(devCat.szModel, sizeof(devCat.szModel));
 			ZeroMemory(devCat.szType, sizeof(devCat.szType));
 			ZeroMemory(devCat.szVendor, sizeof(devCat.szVendor));
-			result = m_hDevHelper->GetDevCategory(devCat);
+			result = m_hDevHelper->GetDevCategory(devCat); /** 这里不加错误的判断,让硬件实体调用方去兜  [Gifur@2025714]*/
 			if (IS_SUCCEED(result)) {
 				m_adapterInfo.FulfillCategoryInfo(devCat);
 			}
@@ -753,56 +740,6 @@ public:
 		return Error_InvalidState;
 	}
 
-#if defined(_MSC_VER)
-
-	const char* LPCSTRSmartPrintString(const CSimpleStringA& str)
-	{
-		return str.IsNullOrEmpty() ? "" : str.GetData();
-	}
-
-	CSimpleStringA GenerateJson(AdaptorInfo adaptorInfo, const CSimpleStringA& devDeviceName)
-	{
-		CSimpleStringA result(true);
-		if (0 == devDeviceName.Compare("Gpio", true)) {
-			result = CSimpleStringA::Format("{\"Vendor\":\"%s\", \"Version\":\"%s\", \"Batch\":\"%s\", \"Port\":\"%s\", \"Baudrate\":\"%s\", \"PortNum\":\"%s\"}",
-				LPCSTRSmartPrintString(adaptorInfo.strVendor), LPCSTRSmartPrintString(adaptorInfo.strVersion),
-				LPCSTRSmartPrintString(adaptorInfo.strBatch), LPCSTRSmartPrintString(adaptorInfo.strPort), LPCSTRSmartPrintString(adaptorInfo.strBaudrate),
-				LPCSTRSmartPrintString(adaptorInfo.strPortNum));
-		} else if (0 == devDeviceName.Compare("PinPad", true)) {
-			result = CSimpleStringA::Format("{\"Vendor\":\"%s\", \"Version\":\"%s\", \"Batch\":\"%s\", \"Port\":\"%s\", \"Baudrate\":\"%s\", \"Checkdata\":\"%s\", \"Keysn\":\"%s\"}",
-				LPCSTRSmartPrintString(adaptorInfo.strVendor), LPCSTRSmartPrintString(adaptorInfo.strVersion),
-				LPCSTRSmartPrintString(adaptorInfo.strBatch), LPCSTRSmartPrintString(adaptorInfo.strPort), LPCSTRSmartPrintString(adaptorInfo.strBaudrate),
-				LPCSTRSmartPrintString(adaptorInfo.strCheckdata), LPCSTRSmartPrintString(adaptorInfo.strKeysn));
-		} else {
-			result = CSimpleStringA::Format("{\"Vendor\":\"%s\", \"Version\":\"%s\", \"Batch\":\"%s\", \"Port\":\"%s\", \"Baudrate\":\"%s\"}",
-				LPCSTRSmartPrintString(adaptorInfo.strVendor), LPCSTRSmartPrintString(adaptorInfo.strVersion),
-				LPCSTRSmartPrintString(adaptorInfo.strBatch), LPCSTRSmartPrintString(adaptorInfo.strPort), LPCSTRSmartPrintString(adaptorInfo.strBaudrate));
-		}
-		return result;
-	}
-
-#endif //_MSC_VER
-
-	void ResetRepeatErrTimes()
-	{
-		m_contiErrTimes = 0;
-	}
-
-	/** TODO等待废弃,不建议再继续使用  [Gifur@2025114]*/
-	ErrorCodeEnum TransECWithRepeat(const ErrorCodeEnum& ec)
-	{
-		ErrorCodeEnum result(ec);
-		if (ec != Error_Succeed) {
-			if (!m_bOpened) {
-				result = Error_DevNotAvailable;
-			} else if (0 < CountDevError(this->GetEntityBase())) {
-				result = Error_DevFailAddUp;
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("exceed max allow repeat error times! 0x%x -> 0x%x", ec, result);
-			}
-		}
-		return result;
-	}
-
 	virtual ErrorCodeEnum PreOpenDevice() { return Error_Succeed; }
 	virtual ErrorCodeEnum ToOpenDevice() { return Error_NotImpl; }
 	virtual ErrorCodeEnum PostOpenDevice() { return Error_Succeed; }
@@ -860,7 +797,6 @@ public:
 			}
 
 			if (trigger) {
-				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("just test EVT_MAINPAGE_DISPLAY");
 				this->PostEventFIFO(new FSMEvent(EVT_MAINPAGE_DISPLAY));
 			}
 		}
@@ -874,9 +810,8 @@ public:
 	}
 
 public:
-
-		bool m_bOpened;
-		bool m_bOpening;
+	bool m_bOpened;
+	bool m_bOpening;
 
 protected:
 
@@ -885,7 +820,6 @@ protected:
 	int m_iInWhatPage/*在哪个页面,区分首页,用户桌面,其他页*/;
 
 	ErrorPackageEx m_errPkgEx;
-	unsigned int m_contiErrTimes;
 	AdapterInfo m_adapterInfo;
 	DevStateEnum m_eDevState;
 
@@ -896,6 +830,8 @@ protected:
 			auto err = this->GetEntityBase()->GetFunction()->GetSysVar("UIState", uiState);
 			if (err == Error_Succeed && !uiState.IsNullOrEmpty()) {
 				UiState2WhatPage(uiState);
+			} else if (err != Error_Succeed) {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(RTAERR_SYSVAR_GET_FAILED)("Get sysVar for UIState failed:%s", SpStrError(err));
 			}
 		}
 	}
@@ -962,26 +898,25 @@ protected:
 		return ((dwVal >> 20) == m_entCode.dwEntityId);
 	}
 
-    static void GetFileSizeAndCalcHashValue(const char* fileName, int& fileSize, BYTE fileHash[32])
-    {
-        HANDLE hFile;
-        hFile = CreateFile(fileName, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
-        if (hFile == INVALID_HANDLE_VALUE) {
-            fileSize = 0;
-            return;
-        }
-        fileSize = GetFileSize(hFile, NULL);
-        CloseHandle(hFile);
+	/** 目前没有调用方,暂时注释  [Gifur@2025711]*/
+	/*
+	static void GetFileSizeAndCalcHashValue(const char* fileName, int& fileSize, BYTE fileHash[32])
+	{
+		HANDLE hFile;
+		hFile = CreateFile(fileName, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+		if (hFile == INVALID_HANDLE_VALUE) {
+			fileSize = 0;
+			return;
+		}
+		fileSize = GetFileSize(hFile, NULL);
+		CloseHandle(hFile);
 
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to calc vendor dll hash");
-        SM3File(const_cast<char*>(fileName), fileHash);
-
-        return;
-    }
+		SM3File(const_cast<char*>(fileName), fileHash);
 
-	int CountDevError(CEntityBase *pEntityBase);
+		return;
+	}*/
 
-	
 	virtual bool IsInBusiness() const { 
 		return (m_iInWhatPage == PageType_Other); 
 	}
@@ -1021,7 +956,7 @@ inline ErrorCodeEnum CCommDevFSM<TFSM, TDevClass>::GetAndSplitDevErrInfo(
 	}
 
 	if (!m_hDevHelper) {
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("inst occurs nullptr !!!");
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__).setResultCode(DEVICE_FSM_DEVOBJ_NULLPTR)("inst occurs nullptr !!!");
 		return Error_Param;
 	}
 
@@ -1037,11 +972,12 @@ inline ErrorCodeEnum CCommDevFSM<TFSM, TDevClass>::GetAndSplitDevErrInfo(
 		}
 	} else {
 		if (bDisplayFunName) {
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetLastErr")("Invoke <%s> failed, and Dev_GLE failed returned EC: %s",
-				lpszFuncNameForDisplay, SpStrError(erroCode));
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)/*.setAPI("DevAdapter::GetLastErr")不纳入适配器消费,因为不好分配RTA,只做调研*/
+				.setResultCode(DEVICE_FSM_DEVGETLE_FAILED)("GetLastErr after %s failed returned: %s",lpszFuncNameForDisplay, SpStrError(erroCode)); 
 			csErrMsg = CSimpleStringA::Format("Invoke <%s> failed", lpszFuncNameForDisplay);
 		} else {
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetLastErr")("Dev_GLE failed returned EC: %s", SpStrError(erroCode));
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)/*.setAPI("DevAdapter::GetLastErr")不纳入适配器消费,因为不好分配RTA,只做调研*/
+				.setResultCode(DEVICE_FSM_DEVGETLE_FAILED)("GetLastErr failed returned: %s", SpStrError(erroCode));
 		}
 	}
 	/** reset vendor device error code to stop reporting to alarm [12/11/2020 Gifur] */
@@ -1050,40 +986,6 @@ inline ErrorCodeEnum CCommDevFSM<TFSM, TDevClass>::GetAndSplitDevErrInfo(
 	return erroCode;
 }
 
-//1:报错累计到上限,需要返回错误码给业务
-//0:报错累计未到上限,或者不需要计数 
-//-1:出现错误
-template<class TFSM, class TDevClass>
-int CCommDevFSM<TFSM, TDevClass>::CountDevError(CEntityBase* pEntityBase)
-{
-	static int iErrNumLimit = -1;
-	if (iErrNumLimit == -1) {
-		CSmartPointer<IConfigInfo> spCenterConfig;
-		ErrorCodeEnum eErrDev = pEntityBase->GetFunction()->OpenConfig(Config_CenterSetting, spCenterConfig);
-		if (eErrDev != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("open centersetting file failed!");
-			return -1;
-		} else {
-			int value(0);
-			spCenterConfig->ReadConfigValueInt("Common", "ErrUpperLimit", value);
-			if (0 == value) {
-				iErrNumLimit = 5;
-			} else if (0 > value) {
-				iErrNumLimit = 0;
-			} else {
-				iErrNumLimit = value;
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("iErrNumLimit=%d", iErrNumLimit);
-			}
-		}
-	}
-	m_contiErrTimes++;
-	if (iErrNumLimit > 0 && m_contiErrTimes >= iErrNumLimit) {
-		return 1;
-	} else {
-		return 0;
-	}
-}
-
 template<class TFSM, class TDevClass>
 void CCommDevFSM<TFSM, TDevClass>::OnHardwareShakeHand(CSmartPointer<ITransactionContext> pTransactionContext)
 {

+ 3 - 3
Module/include/EventCode.h

@@ -449,9 +449,9 @@ ERROR_ACCESSAUTH_CONNECT_ACS_x}
 #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		//移动检测不正常(非工作时间)
-#define LOG_EVT_MOVEDETECT_ABNORMAL 0x2090000C		//移动检测不正常
+//#define LOG_EVT_MOVEDETECT_ABNORMAL_WORKTIME	0x20980001		//移动检测不正常(工作时间)
+//#define LOG_EVT_MOVEDETECT_ABNORMAL_OFFWORK		0x20980002		//移动检测不正常(非工作时间)
+//#define LOG_EVT_MOVEDETECT_ABNORMAL 0x2090000C		//移动检测不正常
 
 
 

+ 10 - 5
Module/mod_CardIssuerStand/CardIssuerStandFSM.cpp

@@ -2218,7 +2218,7 @@ int CCardIssuerFSM::CaptureCard(SpReqAnsContext<CardIssuerStandService_Capture_R
 	eErr = MachineMoveCardBackNotHold();
 	if (eErr == Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220305")();
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220304")();
 		bool bCaptured = ToRegistCaptureCardInfo();
 		m_currCardNo = m_addCardNo = "";
 	}
@@ -2812,7 +2812,12 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStandService_Read
 				else
 				{
 					//既没有读到磁条,又不是IC,很大概率是插反了
-					LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了");
+					if (m_issueStatus) {
+						LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了,m_issueStatus=1");
+					}
+					else {
+						LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了,m_issueStatus=0");
+					}
 					if (m_issueStatus)
 					{
 						m_mixedEx[m_currentHopper - 1]++;
@@ -2862,7 +2867,7 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStandService_Read
 			return 1;
 	}
 	bICOK = true;
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220303")("ReadCard suc. cardType:%d", ctx->Ans.ICType);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220303")("ReadCard suc. cardType:%d. m_issueStatus:%d", ctx->Ans.ICType, m_issueStatus);
 	return 0;
 }
 int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerStandService_Read_Req, CardIssuerStandService_Read_Ans>::Pointer ctx)
@@ -3120,7 +3125,7 @@ int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerStandService_Read_Req,
 		else
 			return 1;
 	}
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220303")("ReadCard suc. cardType:%d", ctx->Ans.ICType);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220303")("ReadCard suc. cardType:%d. m_issueStatus:%d", ctx->Ans.ICType, m_issueStatus);
 	return 0;
 }
 int CCardIssuerFSM::PreOnline(SpReqAnsContext<CardIssuerStandService_PreOnline_Req, CardIssuerStandService_PreOnline_Ans>::Pointer ctx)
@@ -7438,7 +7443,7 @@ int CCardIssuerFSM::QuickSelfCheckImpl()
 			ret = 0;
 		}
 		pClient->GetFunction()->CloseSession();
-		pClient->SafeDelete();
+		//pClient->SafeDelete();
 		return ret;
 	}
 	else {

+ 3 - 3
Module/mod_CardReadAdapter/CardReadAdapterFSM.cpp

@@ -2416,9 +2416,9 @@ int CCardReadAdapterFSM::NotifyPreonline(SpReqAnsContext<CardReadAdapterService_
 			}
 			else if (ctx->Req.reserved1[0] == CardIssuer_UserErrorCode_DevOpen_Failed || ctx->Req.reserved1[0] == CardIssuerStore_UserErrorCode_DevOpen_Failed)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA2311")("卡库卡机未成功打开");
-				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_DevOpen_Failed, "卡库卡机未成功打开");
-				m_crossCtx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode("QLR040220327").setResultCode("RTA2R04")("卡库卡机未成功打开");
+				LogWarn(Severity_Middle, Error_Unexpect, CardReadAdapter_UserErrorCode_CardIssuerStore_DevOpen_Failed, "卡库卡机未成功打开");
+				m_crossCtx->Answer(Error_DevNotAvailable, CardReadAdapter_UserErrorCode_CardIssuerStore_DevOpen_Failed);
 			}
 			else
 			{

+ 1 - 0
Module/mod_CardReadAdapter/CardReadAdapter_UserErrorCode.h

@@ -16,5 +16,6 @@
 #define CardReadAdapter_UserErrorCode_CardIssuer_Is_Working					(CardReadAdapter_UserErrorCode_Start + 9)	//卡机实体正忙
 #define CardReadAdapter_UserErrorCode_HBService_No_Return					(CardReadAdapter_UserErrorCode_Start + 10)	//心跳服务超时未返回
 #define CardReadAdapter_UserErrorCode_CardActive_Unexpect					(CardReadAdapter_UserErrorCode_Start + 11)	//跨机收到未处理的返回(某些返回可能在后期细化中提供处理)
+#define CardReadAdapter_UserErrorCode_CardIssuerStore_DevOpen_Failed		(CardReadAdapter_UserErrorCode_Start + 12)  //跨机时卡库卡机未成功打开
 
 #endif //_CARDREADADAPTER_USER_ERRORCODE_H

+ 8 - 7
Module/mod_ContactlessCard/ContactlessFSM.cpp

@@ -8,7 +8,7 @@
 #include <map>
 
 #include "publicFunExport.h"
-
+#include "CommEntityUtil.hpp"
 #ifdef RVC_OS_WIN
 #else
 #include <dlfcn.h>
@@ -719,7 +719,8 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Load, GetBasePath failed (%d).",eErrPath);
 		return Error_Param;
 	}
-	LogWarn(Severity_Low, Error_Unexpect, ContactlessCard_UserErrorCode_RootInfo, m_adapterInfo.adapterFilePath.GetData());
+	//LogWarn(Severity_Low, Error_Unexpect, ContactlessCard_UserErrorCode_RootInfo, m_adapterInfo.adapterFilePath.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(m_adapterInfo.adapterFilePath.GetData());
 	if (Error_Succeed != LoadUpAdapterLibrary()) {
 		errMsg = "非接读卡器加载厂商适配器失败!请检查root.ini配置是否正确。";
 		LogWarn(Severity_Middle, Error_Unexpect, ContactlessCard_UserErrorCode_DllLoadFailed, errMsg.GetData());
@@ -786,7 +787,8 @@ ErrorCodeEnum CContactlessCardFSM::Load()
 	else
 	{
 		m_devInit = true;
-		LogWarn(Severity_Low, Error_Unexpect, ContactlessCard_UserErrorCode_DevOpen_Success, "非接读卡器打开成功");
+		//LogWarn(Severity_Low, Error_Unexpect, ContactlessCard_UserErrorCode_DevOpen_Success, "非接读卡器打开成功");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("非接读卡器打开成功");
 		return Error_Succeed;
 	}
 }
@@ -1052,9 +1054,8 @@ int CContactlessCardFSM::AcceptCard(SpReqAnsContext<ContactlessCardService_Inser
 
 				t2ICTrack2 = pICTrack2;
 				t2ICAccount = (char*)ddd;//oiltest
-				LogWarn(Severity_Low, Error_Succeed, ContactlessCard_UserErrorCode_ReadAccount, CSimpleStringA::Format("split pos:%d, card acount:%s,%s"
-					, pos, t2ICAccount.substr(0, 6).c_str(), t2ICAccount.substr(t2ICAccount.length() - 4, 4).c_str()));
 				ctx->Ans.ICData = ctx->Ans.t2Account = t2ICAccount.c_str();
+				LogWarn(Severity_Low, Error_Succeed, ContactlessCard_UserErrorCode_ReadAccount, SP::Module::Util::DataMask(SP::Module::Util::DataMask_CardAccount, t2ICAccount.c_str()));
 				ctx->Ans.ICType = 4;
 				ctx->Ans.status = 0;
 				delete[]ddd;
@@ -2035,8 +2036,8 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 		}
 		delete[]ddd;
 
-		LogWarn(Severity_Low, Error_Succeed, ContactlessCard_UserErrorCode_ReadAccount, CSimpleStringA::Format("split pos:%d, card acount:%s,%s"
-			, pos, t2ICAccount.substr(0, 6).c_str(), t2ICAccount.substr(t2ICAccount.length() - 4, 4).c_str()));//读到的卡号
+		//oiltmp@20250728 what's the purpose of record this?
+		LogWarn(Severity_Low, Error_Succeed, ContactlessCard_UserErrorCode_ReadAccount, SP::Module::Util::DataMask(SP::Module::Util::DataMask_CardAccount, t2ICAccount.c_str()));//读到的卡号
 	}
 	delete[]pICTrack2;
 

+ 3 - 3
Module/mod_CustMngrAuth/CustMngrAuthFSM.cpp

@@ -267,7 +267,7 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 		{
 			pEvt->SetHandled();
 			AuthorizeFinishedEvent* authorEvt = dynamic_cast<AuthorizeFinishedEvent*>(pEvt);
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("authorize finished with param1 as %d", authorEvt->param1);
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("authorize finished with param1 as %d", authorEvt->param1);
 			if (authorEvt->param1 == 0)
 			{
 				 if (m_authCtx.eAuthByWhich == AuthByFngPrnt)
@@ -299,7 +299,7 @@ unsigned int CCustMngrAuthFSM::s3_on_event(FSMEvent* pEvt)
 		{
 			pEvt->SetHandled();
 			QueryAuthorInfoFinishedEvent* qafEvt = dynamic_cast<QueryAuthorInfoFinishedEvent*>(pEvt);
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("authorize finished with param1 as %d", qafEvt->param1);
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("authorize finished with param1 as %d", qafEvt->param1);
 			if (qafEvt->param1 == 0)
 			{
 				 if (m_authCtx.eAuthByWhich == AuthByFngPrnt){
@@ -687,7 +687,7 @@ ErrorCodeEnum CCustMngrAuthFSM::GetImgBlob(CBlob& data, CSimpleStringA imgPath)
 ErrorCodeEnum CCustMngrAuthFSM::MatchFingerPrintEx(SpReqAnsContext<CustMngrAuthService_QueryAuthorInfo_Req, CustMngrAuthService_QueryAuthorInfo_Ans>::Pointer ctx, bool& bStopAuthorize, DWORD& dwUserErrCode)
 {
 	LOG_FUNCTION();
-	LogWarn(Severity_Low, Error_Unexpect, LOG_ERR_CUSTMNGRAUTH_INVOKE_MATCHEx, "web invoke MatchFingerPrintEx");
+	//LogWarn(Severity_Low, Error_Unexpect, LOG_ERR_CUSTMNGRAUTH_INVOKE_MATCHEx, "web invoke MatchFingerPrintEx");
 
 	ErrorCodeEnum errCode;
 	m_pFingerPrint = new FingerPrintService_ClientBase(m_pEntity);

+ 3 - 2
Module/mod_FingerPrint/FingerPrintFSM.cpp

@@ -376,7 +376,8 @@ int CFingerPrintFSM::Initial()
 		return 0;
 	}
 	FulfillAdapterInfoFrom(pEntity->vendorLibInfo);
-	LogWarn(Severity_Low, Error_Unexpect, FingerPrint_UserErrorCode_ROOT_INFO, m_adapterInfo.adapterFilePath.GetData());
+	//LogWarn(Severity_Low, Error_Unexpect, FingerPrint_UserErrorCode_ROOT_INFO, m_adapterInfo.adapterFilePath.GetData());
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)(m_adapterInfo.adapterFilePath.GetData());
 	pEntity->InitializeVendorLogSwitch();
 	ErrorCodeEnum err = LoadUpAdapterLibrary();
 	if (!IS_SUCCEED(err))
@@ -437,7 +438,7 @@ int CFingerPrintFSM::Initial()
 	}
 	m_adapterInfo.FulfillCategoryInfo(m_devCatInfo);
 	SetDevInitFlag();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("指纹仪设备打开成功");
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("指纹仪设备打开成功");
 	return 0;
 }
 

+ 2 - 20
Module/mod_HSPScanner/HSPSCanner_UserErrorCode.h

@@ -17,38 +17,20 @@
 #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_DuplicateCancelPreview			0x21700204
-#define HSPScanner_UserErrorCode_GET_RDC_ADDR_FAILED			0x21700205
+#define HSPScanner_UserErrorCode_READ_IMAGE_FILE_ZERO			0x21700204
 #define HSPScanner_UserErrorCode_CLEAR_RESOURCE_FAILED			0x21700206
-#define HSPScanner_UserErrorCode_UPLOAD_VENDORINFO				0x21700207
-#define HSPScanner_UserErrorCode_ROOT_INFO						0x21700208
+//
 #define HSPScanner_UserErrorCode_FSM_INVALID						0x21700209
-#define HSPScanner_UserErrorCode_DLLNAME_FAILED						0x2170020A
-#define HSPScanner_UserErrorCode_DLLNAME_NOCFG						0x2170020B
 #define HSPScanner_UserErrorCode_DEVICE_OFFLINE						0x2170020C
 #define HSPScanner_UserErrorCode_NOT_SUPPORT					0x2170020E
-#define HSPScanner_UserErrorCode_REAL_ROOT_CONFIG	0x2170020F
 
-#define LOG_DEBUG_HSPS_CRITICAL_OPERATION_START			0x21700210
-#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_KEBA_MATCHED	    0x2170021A //符合切换科堡适配器的告警
 #define LOG_WARN_HSPS_INVALID_OPERATION	    0x2170021B
 #define LOG_WARN_HSPS_OPENING_NOW 0x2170021C
 
-#define LOG_DEBUG_HSPS_CRITICAL_OPERATION_SCANIMAGE_SUCC   0x21700220
-#define LOG_DEBUG_HSPS_CRITICAL_OPERATION_SCANIMAGE_FAILED 0x21700221
-#define LOG_DEBUG_HSPS_CRITICAL_OPERATION_SCANIMAGEEX_SUCC   0x21700223
-#define LOG_DEBUG_HSPS_CRITICAL_OPERATION_SCANIMAGEEX_FAILED 0x21700224
-
 #define HSPScanner_UserErrorCode_FindFile_in_DepBak 0x21700225
 
 #define HSPScanner_UserErrorCode_SetParam_Color 0x21700226

+ 153 - 130
Module/mod_HSPScanner/HSPScannerFSM.cpp

@@ -34,50 +34,55 @@ const char* EvtTypeToString(int nEvtType)
 	switch (nEvtType)
 	{
 		T_STRINGY(USER_EVT_STARTPREVIEW)
-			T_STRINGY(USER_EVT_STARTPREVIEW_FINISHED)
-			T_STRINGY(USER_EVT_SETPROPERTYINVIEW_FINISHED)
+		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_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_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_SCANIMAGE_JS)
+		T_STRINGY(USER_EVT_SCANIMAGE_JS_DONE)
 
-			T_STRINGY(USER_EVT_SETPARAM_JS)
+		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_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_SETWINPOS)
+		T_STRINGY(USER_EVT_SETWINPOSFINISHED)
 
-			T_STRINGY(USER_EVT_SHOWPROPERTY)
-			T_STRINGY(USER_EVT_SHOWPROPERTY_FINISHED)
+		T_STRINGY(USER_EVT_SCANIMAGE)
+		T_STRINGY(USER_EVT_SCANIMAGE_EX)
+		T_STRINGY(USER_EVT_SCANIMAGEFINISHED)
 
-			T_STRINGY(USER_EVT_SETPROPERTY)
-			T_STRINGY(USER_EVT_SETPROPERTY_FINISHED)
+		T_STRINGY(USER_EVT_SHOWPROPERTY)
+		T_STRINGY(USER_EVT_SHOWPROPERTY_FINISHED)
 
-			T_STRINGY(USER_EVT_GETSTATUS)
-			T_STRINGY(USER_EVT_GETINFO)
+		T_STRINGY(USER_EVT_SETPROPERTY)
+		T_STRINGY(USER_EVT_SETPROPERTY_FINISHED)
 
-			T_STRINGY(USER_EVT_DISCONNECT)
-			T_STRINGY(USER_EVT_RESET)
-			T_STRINGY(USER_EVT_EXIT)
-			T_STRINGY(USER_EVT_EXIT_FINISHED)
+		T_STRINGY(USER_EVT_GETSTATUS)
+		T_STRINGY(USER_EVT_GETINFO)
 
-			T_STRINGY(USER_EVT_GOTOHELL)
-			T_STRINGY(USER_EVT_QUIT)
-			T_STRINGY(USER_EVT_INIT)
-			T_STRINGY(USER_EVT_INIT_FINISHED)
+		T_STRINGY(USER_EVT_DISCONNECT)
 
-			T_STRINGY(EVT_INTERNAL)
-			T_STRINGY(EVT_TIMER)
-			T_STRINGY(EVT_MAINPAGE_DISPLAY)
-			T_STRINGY(EVT_USER)
+		T_STRINGY(USER_EVT_RESET)
+		T_STRINGY(USER_EVT_EXIT)
+		T_STRINGY(USER_EVT_EXIT_FINISHED)
+
+		T_STRINGY(USER_EVT_GOTOHELL)
+		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;
@@ -128,18 +133,18 @@ CSimpleStringA CombineJsonContext4SetPreview(bool bOpen, const char* szMessage =
 	CSimpleStringA result(true);
 	if (szMessage == NULL || strlen(szMessage) == 0) {
 		if (bOpen) {
-			result = CSimpleStringA::Format("{\"PreviewSwitch\": ON}");
+			result = CSimpleStringA::Format("{\"PreviewSwitch\": \"ON\"}");
 		}
 		else {
-			result = CSimpleStringA::Format("{\"PreviewSwitch\": OFF}");
+			result = CSimpleStringA::Format("{\"PreviewSwitch\": \"OFF\"}");
 		}
 	}
 	else {
 		if (bOpen) {
-			result = CSimpleStringA::Format("{\"addition\": \"%s\", \"PreviewSwitch\": ON}", szMessage);
+			result = CSimpleStringA::Format("{\"addition\": \"%s\", \"PreviewSwitch\": \"ON\"}", szMessage);
 		}
 		else {
-			result = CSimpleStringA::Format("{\"addition\": \"%s\", \"PreviewSwitch\": OFF}", szMessage);
+			result = CSimpleStringA::Format("{\"addition\": \"%s\", \"PreviewSwitch\": \"OFF\"}", szMessage);
 		}
 	}
 	return  result;
@@ -184,7 +189,6 @@ ErrorCodeEnum CHSPScannerFSM::OnInit()
 	}
 	else {
 		FulfillAdapterInfoFrom(pEntity->vendorLibInfo);
-		LogWarn(Severity_Low, Error_Unexpect, HSPScanner_UserErrorCode_ROOT_INFO, (LPCTSTR)m_adapterInfo.adapterFilePath);
 		PostEventLIFO(new FSMEvent(USER_EVT_INIT));
 	}
 	return Error_Succeed;
@@ -212,7 +216,7 @@ void CHSPScannerFSM::s0_Idle_on_exit()
 
 unsigned int CHSPScannerFSM::s0_Idle_on_event(FSMEvent* e)
 {
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s0_Idle_on_event: %s(%d), %d.", EvtTypeToString(e->iEvt), e->iEvt, e->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s0_Idle_on_event: %s, %d.", EvtTypeToString(e->iEvt), e->param1);
 	unsigned int uRet = 0;
 	switch (e->iEvt)
 	{
@@ -301,6 +305,15 @@ unsigned int CHSPScannerFSM::s0_Idle_on_event(FSMEvent* e)
 			}
 		}
 		break;
+	/** 根据日志查看在空闲状态偶尔会收到取消预览的请求,兼容处理之(参照JS改造) [Gifur@2025613]*/
+	case USER_EVT_STOPPREVIEW:
+		{
+			StopPreviewTask* pTask = new StopPreviewTask(this);
+			StopPreviewEvent* pEvt = dynamic_cast<StopPreviewEvent*>(e);
+			pEvt->m_ctx->Answer(Error_Succeed);
+		}
+		e->SetHandled();
+		break;
 		// Add after ST !!! --Josephus at 12:37:15 2016129
 	case USER_EVT_SETWINPOS:
 		{
@@ -347,7 +360,6 @@ unsigned int CHSPScannerFSM::s0_Idle_on_event(FSMEvent* e)
 		break;
 	case USER_EVT_INIT:
 		e->SetHandled();
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("To open device.");
 		break;
 	case EVT_MAINPAGE_DISPLAY:
 	case USER_EVT_EXIT:
@@ -358,12 +370,8 @@ unsigned int CHSPScannerFSM::s0_Idle_on_event(FSMEvent* e)
 	break;
 	case USER_EVT_GOTOHELL:
 		e->SetHandled();
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("HSPScaner init failed!");
 		break;
 	default:
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("%s::UnHandle event ! %s", __FUNCTION__, EvtTypeToString(e->iEvt));
-		}
 		break;
 	}
 	return uRet;
@@ -602,9 +610,8 @@ unsigned int CHSPScannerFSM::s1_Preview_on_event(FSMEvent* e)
 		{
 			e->SetHandled();
 			if (m_dupFlag4ExitCancel) {
-				LogWarn(Severity_Low, Error_Debug, HSPScanner_UserErrorCode_DuplicateCancelPreview, CSimpleStringA::Format("%s::recv %s while CancelPreviewing", __FUNCTION__, EvtTypeToString(e->iEvt)));
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s::recv %s while CancelPreviewing", __FUNCTION__, EvtTypeToString(e->iEvt));
 				uRet = 1;
-				//TODO: need to settimer ??  [Gifur@202565]
 			}
 		}
 		break;
@@ -659,18 +666,20 @@ unsigned int CHSPScannerFSM::s2_on_event(FSMEvent* e)
 
 void CHSPScannerFSM::s3_Failed_on_entry()
 {
-	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Enter s3_Failed");
 	if (GetDevInitFlag()) {
 		SetLastUserCode(HSPScanner_UserErrorCode_FSM_INVALID);
 		const int nStatus = IsDevConnected();
 		if (nStatus == 0) {
 			PostEventFIFO(new FSMEvent(USER_EVT_DISCONNECT));
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Enter s3_Failed by Disconnected");
 		}
 		else if (nStatus == 1) {
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Enter s3_Failed by Others' reason");
 			ScheduleTimer(RESET_TIMER_ID, MILLISECOND_TO_RESET / 6);
 		}
 	}
 	else {
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Enter s3_Failed by Device open failed");
 		SetDevState(DEVICE_STATUS_FAULT);
 	}
 }
@@ -695,7 +704,9 @@ unsigned int CHSPScannerFSM::s3_Failed_on_event(FSMEvent* e)
 	case USER_EVT_STARTPREVIEW_JS:
 	{
 		JS::StartPreviewEvent* pEvt = dynamic_cast<JS::StartPreviewEvent*>(e);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_StartPreviewJS).setResultCode(MapCode2RTAString(GetLastUserCode()))(GetDevInitFlag()? "高拍仪模块出现异常" : "高拍仪模块未打开");
+		if (GetDevInitFlag()) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_StartPreviewJS).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪模块出现异常");
+		}
 		pEvt->m_ctx->Answer(Error_DevNotAvailable, GetLastUserCode());
 		e->SetHandled();
 	}
@@ -703,7 +714,9 @@ unsigned int CHSPScannerFSM::s3_Failed_on_event(FSMEvent* e)
 	case USER_EVT_CANCELPREVIEW_JS:
 	{
 		JS::CancelPreviewEvent* pEvt = dynamic_cast<JS::CancelPreviewEvent*>(e);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_CancelPreviewJS).setResultCode(MapCode2RTAString(GetLastUserCode()))(GetDevInitFlag() ? "高拍仪模块出现异常" : "高拍仪模块未打开");
+		if (GetDevInitFlag()) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_CancelPreviewJS).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪模块出现异常");
+		}
 		pEvt->m_ctx->Answer(Error_DevNotAvailable, GetLastUserCode());
 		e->SetHandled();
 	}
@@ -711,7 +724,9 @@ unsigned int CHSPScannerFSM::s3_Failed_on_event(FSMEvent* e)
 	case USER_EVT_SCANIMAGE_JS:
 	{
 		JS::ScanImageEvent* pEvt = dynamic_cast<JS::ScanImageEvent*>(e);
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImageJS).setResultCode(MapCode2RTAString(GetLastUserCode()))(GetDevInitFlag() ? "高拍仪模块出现异常" : "高拍仪模块未打开");
+		if (GetDevInitFlag()) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImageJS).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪模块出现异常");
+		}
 		pEvt->m_ctx->Answer(Error_DevNotAvailable, GetLastUserCode());
 		e->SetHandled();
 	}
@@ -726,7 +741,6 @@ unsigned int CHSPScannerFSM::s3_Failed_on_event(FSMEvent* e)
 			e->SetHandled();
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_SetParamJS).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪模块未打开");
 			pEvt->m_ctx->Answer(Error_DevNotAvailable, GetLastUserCode());
 			e->SetHandled();
 		}
@@ -737,7 +751,6 @@ unsigned int CHSPScannerFSM::s3_Failed_on_event(FSMEvent* e)
 		{
 			StartPreviewEvent* pEvt = dynamic_cast<StartPreviewEvent*>(e);
 			if (!GetDevInitFlag()) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_StartPreview).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪模块未打开");
 				pEvt->m_ctx->Answer(Error_DevNotAvailable, GetLastUserCode());
 			} else {
 				StartPreviewTask* pTask = new StartPreviewTask(this);
@@ -773,17 +786,16 @@ unsigned int CHSPScannerFSM::s3_Failed_on_event(FSMEvent* e)
 						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_CancelPreview).setAPI("DevAdapter::SetParam").setCostTime(ullEnd - ullStart)("HSPS_VIEW_HIDE");
 					} else {
 						//RTA2N0Q
-						SetErrorAndLog(erroCode, MEC_DEVAPI_HSPSCANNER_SetParam, "DevAdapter::SetParam", __FUNCTION__, IsInBusiness(), ullEnd - ullStart, HSPScannerService_LogCode_CancelPreview, CombineJsonContext("HSPS_VIEW_HIDE failed"));
+						SetErrorAndLog(erroCode, MEC_DEVAPI_HSPSCANNER_SetParam, "DevAdapter::SetParam", __FUNCTION__, IsInBusiness(), ullEnd - ullStart, HSPScannerService_LogCode_CancelPreview, CombineJsonContext("HSPS_VIEW_HIDE"));
 						SetLastUserCode(GetAlarmDEC());
 					}
-					pEvt->m_ctx->Answer(TransECWithRepeat(erroCode));
+					pEvt->m_ctx->Answer(erroCode);
 					FSMEvent* timerEvent = new FSMEvent(EVT_TIMER);
 					timerEvent->param1 = RESET_TIMER_ID;
 					PostEventFIFO(timerEvent);
 				}
 			} else {
 				StopPreviewEvent* pEvt = dynamic_cast<StopPreviewEvent*>(e);
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_CancelPreview).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪设备未打开");
 				pEvt->m_ctx->Answer(Error_DevNotAvailable, GetLastUserCode());
 			} 
 		}
@@ -914,7 +926,6 @@ unsigned int CHSPScannerFSM::s3_Failed_on_event(FSMEvent* e)
 		{
 			GetDevStatusEvent* pEvt = dynamic_cast<GetDevStatusEvent*>(e);
 			if (!GetDevInitFlag()) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_GetDevStatus).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪设备未打开");
 				pEvt->m_ctx->Answer(Error_DevNotAvailable, GetLastUserCode());
 			} else {
 				GetDevStatusTask* pTask = new GetDevStatusTask(this);
@@ -928,7 +939,6 @@ unsigned int CHSPScannerFSM::s3_Failed_on_event(FSMEvent* e)
 		{
 			GetDevInfoEvent* pEvt = dynamic_cast<GetDevInfoEvent*>(e);
 			if (!GetDevInitFlag()) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_GetDevInfo).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪设备未打开");
 				pEvt->m_ctx->Answer(Error_DevNotAvailable, GetLastUserCode());
 				e->SetHandled();
 			}
@@ -944,7 +954,6 @@ unsigned int CHSPScannerFSM::s3_Failed_on_event(FSMEvent* e)
 	{
 		SetWinPosEvent* pEvt = dynamic_cast<SetWinPosEvent*>(e);
         if (!GetDevInitFlag()) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_SetWinPos).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪设备未打开");
             pEvt->m_ctx->Answer(Error_DevNotAvailable, GetLastUserCode());
 			e->SetHandled();
 		}
@@ -1033,8 +1042,9 @@ unsigned int CHSPScannerFSM::s4_ScanImage_on_event(FSMEvent* e)
 void CHSPScannerFSM::s5_DeviceOff_on_entry()
 {
 	SetDevState(DEVICE_STATUS_CONNECTING);
-	LogWarn(Severity_Low, Error_DevNotAvailable, HSPScanner_UserErrorCode_DEVICE_OFFLINE, "高拍仪断开连接!");
 	SetLastUserCode(HSPScanner_UserErrorCode_DEVICE_OFFLINE);
+	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode(MapCode2RTAString(GetLastUserCode()))("高拍仪断开连接!");
+	m_ullTS4Disconnect = SP::Module::Comm::RVCGetTickCount();
 	ScheduleTimer(CHECK_CONNECT_TIMER_ID, MILLISECOND_TO_CHECK_CONNECT);
 }
 
@@ -1097,13 +1107,18 @@ unsigned int CHSPScannerFSM::s5_DeviceOff_on_event(FSMEvent* e)
 				if (status.isConnected == 0) {
 					ScheduleTimer(CHECK_CONNECT_TIMER_ID, MILLISECOND_TO_CHECK_CONNECT);
 				}
-				else if (status.inShow == 1 && status.inPreview == 1) {
-					//回到预览状态
-					uRet = 2;
-				} else if(status.inShow == 0 && status.inPreview == 1) {
-					uRet = 3;
-				} else {
-					uRet = 1;
+				else {
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setCostTime(SP::Module::Comm::RVCGetTickCount() - m_ullTS4Disconnect)("高拍仪恢复连接");
+					if (status.inShow == 1 && status.inPreview == 1) {
+						//回到预览状态
+						uRet = 2;
+					}
+					else if (status.inShow == 0 && status.inPreview == 1) {
+						uRet = 3;
+					}
+					else {
+						uRet = 1;
+					}
 				}
 			} else {
 				//RTA2N09
@@ -1154,7 +1169,7 @@ void CHSPScannerFSM::s6_HidePreview_on_exit()
 
 unsigned int CHSPScannerFSM::s6_HidePreview_on_event(FSMEvent* e)
 {
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s6_HidePreview_on_event: %s(%d), %d.", EvtTypeToString(e->iEvt), e->iEvt, e->param1);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("s6_HidePreview_on_event: %s, %d.", EvtTypeToString(e->iEvt), e->param1);
 	unsigned int uRet = 0;
 	switch(e->iEvt)
 	{
@@ -1183,7 +1198,7 @@ unsigned int CHSPScannerFSM::s6_HidePreview_on_event(FSMEvent* e)
 	{
 		JS::CancelPreviewEvent* pEvt = dynamic_cast<JS::CancelPreviewEvent*>(e);
 		if (pEvt->m_ctx->Req.hide) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_CancelPreviewJS)("current state is already hide preview");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_CancelPreviewJS)("current state is already hide preview");
 			pEvt->m_ctx->Answer(Error_Succeed);
 		}
 		else {
@@ -1331,9 +1346,8 @@ unsigned int CHSPScannerFSM::s6_HidePreview_on_event(FSMEvent* e)
 		{
 			e->SetHandled();
 			if (m_dupFlag4ExitCancel) {
-				LogWarn(Severity_Low, Error_Debug, HSPScanner_UserErrorCode_DuplicateCancelPreview, CSimpleStringA::Format("%s::recv %s while CancelPreviewing", __FUNCTION__, EvtTypeToString(e->iEvt)));
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s::recv %s while CancelPreviewing", __FUNCTION__, EvtTypeToString(e->iEvt));
 				uRet = 1;
-				//TODO: need to settimer ??  [Gifur@202565]
 			}
 		}
 		break;
@@ -1580,7 +1594,7 @@ int CHSPScannerFSM::StartPreview(SpReqAnsContext<HSPScannerService_StartPreview_
 		/** 无论如何都打开一次灯,所以这里应该是有所冗余的  [Gifur@2025325]*/
 		ToSwithLight();
 	}
-	ctx->Answer(TransECWithRepeat(erroCode), GetLastUserCode());
+	ctx->Answer(erroCode, GetLastUserCode());
 	return nRes;
 }
 
@@ -1625,28 +1639,30 @@ int CHSPScannerFSM::StopPreview(SpReqAnsContext<HSPScannerService_CancelPreview_
 		/** 取消预览时如果仅仅是隐藏也会关闭灯  [Gifur@2025325]*/
 		ToSwithLight(false);
 	}
-	ctx->Answer(TransECWithRepeat(erroCode), GetLastUserCode());
+	ctx->Answer(erroCode, GetLastUserCode());
 	return nRes;
 }
 
-bool CHSPScannerFSM::ResizeImage(const CSimpleStringA& fileName, int kbSize)
+bool CHSPScannerFSM::ResizeImage(const CSimpleStringA& fileName, int kbSize, long& originSize, CSimpleStringA& retMsg)
 {
 	double rate; //limit rate
 	int width;
 	int height;
-	bool success = TRUE;
 
+	originSize = 0;
 	const int imageSize = kbSize * 1024;
+	if (imageSize == 0) return TRUE;
 
 	FILE* fHandle = fopen(fileName.GetData(), "rb");
 	if (!fHandle) {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(__FUNCTION__)("fopen image %s for resize failed: %d", fileName.GetData(), errno);
+		retMsg = CSimpleStringA::Format("fopen image %s failed: %d", fileName.GetData(), errno);
 		return FALSE;
 	}
 
 	fseek(fHandle, 0, SEEK_END);
 	long fileSize = ftell(fHandle);
 	fclose(fHandle);
+	originSize = fileSize;
 	if (fileSize <= (imageSize)) {
 		return TRUE;
 	}
@@ -1654,19 +1670,16 @@ bool CHSPScannerFSM::ResizeImage(const CSimpleStringA& fileName, int kbSize)
     m_pEntity->GetFunction()->GetPath("Temp", backUpPath);
 	backUpFile = backUpPath + SPLIT_SLASH_STR + "backupHSPSCannerImage";
 	DeleteFileIfExisted(backUpFile);
-#ifndef _WIN32
 	fileutil_copy_file((LPCTSTR)backUpFile, (LPCTSTR)fileName);
-#else
-	CopyFileA(fileName, backUpFile, FALSE);
-#endif //NOT _WIN32
 
+	bool success = TRUE;
 	while (fileSize > imageSize)
 	{
 		rate = (double)fileSize / imageSize; 
 		rate = 1.0 / sqrt(rate); //width and height limit rate
 		cv::Mat img = cv::imread(fileName.GetData());
 		if (!img.data) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI(__FUNCTION__)("Opencv READ failed!");
+			retMsg = CSimpleStringA::Format("Opencv READ failed!");
 			success = FALSE;
 			break;
 		}
@@ -1675,7 +1688,7 @@ bool CHSPScannerFSM::ResizeImage(const CSimpleStringA& fileName, int kbSize)
 		cv::resize(img, img, cv::Size(width * rate, height * rate));
 		const bool openwrite = cv::imwrite(fileName.GetData(), img);
 		if (!openwrite) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Opencv WRITE failed!");
+			retMsg = CSimpleStringA::Format("Opencv WRITE failed!");
 			success = FALSE;
 			break;
 		}
@@ -1688,11 +1701,7 @@ bool CHSPScannerFSM::ResizeImage(const CSimpleStringA& fileName, int kbSize)
 	}
 
 	if (!success) {
-#ifndef _WIN32
-		///*TODO(80374374@3/3/2023):  */
 		fileutil_copy_file((LPCTSTR)fileName, (LPCTSTR)backUpFile); //recover original img
-#endif //NOT _WIN32
-		CopyFileA(backUpFile, fileName, FALSE);
 		DeleteFileIfExisted(backUpFile);
 		return FALSE;
 	}
@@ -1711,18 +1720,18 @@ int CHSPScannerFSM::ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
 	BOOL bRet = DelAndGetNewFileName(csImageFile);
 	if (!bRet) {
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImage).setResultCode(MapCode2RTAString(HSPScanner_UserErrorCode_CLEAR_RESOURCE_FAILED))("Cleare previous image failed before ScanImage");
-		ctx->Answer(TransECWithRepeat(Error_Resource), HSPScanner_UserErrorCode_CLEAR_RESOURCE_FAILED);
+		ctx->Answer(Error_Resource, HSPScanner_UserErrorCode_CLEAR_RESOURCE_FAILED);
 		return 1;
 	}
-	///*TODO:  (80374374@2/20/2024)*/
+	long pictureSize(0), resizeSize(0);
 	ULONGLONG ullStart = SP::Module::Comm::RVCGetTickCount();
 	erroCode = m_hDevHelper->ScanImage((LPCTSTR)csImageFile);
 	ULONGLONG ullEnd = SP::Module::Comm::RVCGetTickCount();
 	if (ISSUCCEEDED(erroCode)) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanImage").setCostTime(ullEnd - ullStart)("ScanImage succ");
-		///*TODO:  (80374374@2/20/2024)*/
-		if (!ResizeImage(csImageFile, m_dwMaxImageSize)) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode(MapCode2RTAString(LOG_WARN_HSPS_RESIZE_IMAGE_FILE_FAILED)).setAPI(__FUNCTION__)("HSPScanner resize image failed");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::ScanImage").setCostTime(ullEnd - ullStart)();
+		CSimpleStringA resizeMsg(true);
+		if (ExistsFileA(csImageFile) && !ResizeImage(csImageFile, m_dwMaxImageSize, pictureSize, resizeMsg)) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode(MapCode2RTAString(LOG_WARN_HSPS_RESIZE_IMAGE_FILE_FAILED)).setAPI(__FUNCTION__)("Resize image failed:%s", resizeMsg.GetData());
 		}
 		ctx->Ans.filePath = csImageFile;
 		CBlob& cbData = ctx->Ans.imageData;
@@ -1732,12 +1741,14 @@ int CHSPScannerFSM::ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
 			fseek(fHandle, 0, SEEK_END);
 			long fileSize = ftell(fHandle);
 			if (fileSize <= 0) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImage).setResultCode(MapCode2RTAString(tmpCode))("ftell(%s) error after invoking scanimage: %ld.", (LPCTSTR)csImageFile, fileSize);
+				LogWarn(Severity_Middle, Error_NotExist, HSPScanner_UserErrorCode_READ_IMAGE_FILE_ZERO, CSimpleStringA::Format("ftell(%s) error after invoking scanimage: %ld.", (LPCTSTR)csImageFile, fileSize));
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImage).setResultCode(MapCode2RTAString(HSPScanner_UserErrorCode_READ_IMAGE_FILE_ZERO))("ftell(%s) error after invoking scanimage: %ld.", (LPCTSTR)csImageFile, fileSize);
 				erroCode = Error_NotExist;
 				fclose(fHandle);
 				nRes = 4;
 			} else {
-				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("picture size:%ld", fileSize);
+				resizeSize = fileSize;
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("picture size:%ld", resizeSize);
 				cbData.Alloc(fileSize);
 				fseek(fHandle, 0, SEEK_SET);
 				fread(cbData.m_pData, 1, fileSize, fHandle);
@@ -1752,28 +1763,28 @@ int CHSPScannerFSM::ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
 			nRes = 4;
 		}
 		if (ISSUCCEEDED(erroCode)) {
+			
 			// Additional ChangeTo Hide --Josephus at 11:32:29 2016/11/22
 			if (true/*TODO: */) {
 				ullStart = SP::Module::Comm::RVCGetTickCount();
 				ErrorCodeEnum eHide = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
 				ullEnd = SP::Module::Comm::RVCGetTickCount();
 				if (ISSUCCEEDED(eHide)) {
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::SetParam").setCostTime(ullEnd - ullStart)("HSPS_MODEL_VIEW::HSPS_VIEW_HIDE");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::SetParam").setCostTime(ullEnd - ullStart)("HSPS_VIEW_HIDE");
 					nRes = 6;
 				} else {
 					//RTA2N0Q
-					SetErrorAndLog(eHide, MEC_DEVAPI_HSPSCANNER_SetParam, "DevAdapter::SetParam", __FUNCTION__, IsInBusiness(), ullEnd - ullStart, HSPScannerService_LogCode_ScanImage, CombineJsonContext("HSPS_MODEL_VIEW::HSPS_VIEW_HIDE"));
+					SetErrorAndLog(eHide, MEC_DEVAPI_HSPSCANNER_SetParam, "DevAdapter::SetParam", __FUNCTION__, IsInBusiness(), ullEnd - ullStart, "", CombineJsonContext("HSPS_VIEW_HIDE"));
 				}
 				/** 拍照成功虽然隐藏了但没有关闭灯  [Gifur@2025325]*/
 			}
-
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImage).setAPI(__FUNCTION__)("ScanImage succ");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImage).setAPI(__FUNCTION__)("ScanImage succ, originalPicSize:%ld, resizePicSize:%ld", pictureSize, resizeSize);
 		}
-		ctx->Answer(TransECWithRepeat(erroCode), GetLastUserCode());
+		ctx->Answer(erroCode, GetLastUserCode());
 	} else {
 		SetErrorAndLog(erroCode, MEC_DEVAPI_HSPSCANNER_ScanImage, "DevAdapter::ScanImage", __FUNCTION__, IsInBusiness(), ullEnd - ullStart, HSPScannerService_LogCode_ScanImage);
 		SetLastUserCode(GetAlarmDEC());
-		ctx->Answer(TransECWithRepeat(erroCode), GetLastUserCode());
+		ctx->Answer(erroCode, GetLastUserCode());
 		nRes = 2;
 	}
 	ClearPictureFileSure(1);
@@ -1790,7 +1801,7 @@ int CHSPScannerFSM::ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Re
 	BOOL bRet = DelAndGetNewFileName(csImageFile);
 	if (!bRet) {
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode(MapCode2RTAString(HSPScanner_UserErrorCode_CLEAR_RESOURCE_FAILED))("Cleare previous image failed before ScanImageEx");
-		ctx->Answer(TransECWithRepeat(Error_Resource), HSPScanner_UserErrorCode_CLEAR_RESOURCE_FAILED);
+		ctx->Answer(Error_Resource, HSPScanner_UserErrorCode_CLEAR_RESOURCE_FAILED);
 		return 1;
 	}
 
@@ -1818,11 +1829,13 @@ int CHSPScannerFSM::ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Re
 		erroCode = m_hDevHelper->ScanImageEx(pBtImage, len, (LPCTSTR)csImageFile);
 		ullEnd = SP::Module::Comm::RVCGetTickCount();
 		if (erroCode == Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::ScanImageEx").setCostTime(ullEnd - ullStart)("ScanImageEx suc %d, %d.", len, strlen((const char*)pBtImage));
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::ScanImageEx").setCostTime(ullEnd - ullStart)("len: %d, btLen:%d.", len, strlen((const char*)pBtImage));
 		}
 	}
 	if (ISSUCCEEDED(erroCode)) {
-		if (ResizeImage(csImageFile, m_dwMaxImageSize)) {
+		long pictureSize(0);
+		CSimpleStringA resizeMsg(true);
+		if (ResizeImage(csImageFile, m_dwMaxImageSize, pictureSize, resizeMsg)) {
 			FILE* fHandle = fopen(csImageFile.GetData(), "rb");
 			fseek(fHandle, 0, SEEK_END);
 			len = ftell(fHandle);
@@ -1834,7 +1847,7 @@ int CHSPScannerFSM::ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Re
 			fclose(fHandle);
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode(MapCode2RTAString(LOG_WARN_HSPS_RESIZE_IMAGE_FILE_FAILED)).setAPI(__FUNCTION__)("HSPScanner resize image failed");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode(MapCode2RTAString(LOG_WARN_HSPS_RESIZE_IMAGE_FILE_FAILED)).setAPI(__FUNCTION__)("Resize image failed:%s", resizeMsg.GetData());
 		}
 		ctx->Ans.filePath = csImageFile;
 		CBlob& cbData = ctx->Ans.imageData;
@@ -1850,19 +1863,19 @@ int CHSPScannerFSM::ScanImageEx(SpReqAnsContext<HSPScannerService_ScanImageEx_Re
 			ErrorCodeEnum eHide = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, HSPS_VIEW_HIDE);
 			ullEnd = SP::Module::Comm::RVCGetTickCount();
 			if (ISSUCCEEDED(eHide)) {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::SetParam").setCostTime(ullEnd - ullStart)("HSPS_MODEL_VIEW::HSPS_VIEW_HIDE");
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::SetParam").setCostTime(ullEnd - ullStart)("HSPS_VIEW_HIDE");
 				nRes = 6;
 			} else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::SetParam").setCostTime(ullEnd - ullStart).setResultCode(MapCode2RTAString(HSPScanner_UserErrorCode_SetParam_Hide))("HSPS_MODEL_VIEW::HSPS_VIEW_HIDE failed: %s", SpStrError(eHide));
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setAPI("DevAdapter::SetParam").setCostTime(ullEnd - ullStart).setResultCode(MapCode2RTAString(HSPScanner_UserErrorCode_SetParam_Hide))("HSPS_VIEW_HIDE failed: %s", SpStrError(eHide));
 			}
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI(__FUNCTION__).setLogCode(HSPScannerService_LogCode_ScanImageEx)("ScanImageEx ctx: %s, %d.", (LPCTSTR)ctx->Ans.filePath, ctx->Ans.imageData.m_iLength);
 		}
-		ctx->Answer(TransECWithRepeat(erroCode));
+		ctx->Answer(erroCode);
 	} else {
 		//RTA2N06
 		SetErrorAndLog(erroCode, MEC_DEVAPI_HSPSCANNER_ScanImageEx, "DevAdapter::ScanImageEx", __FUNCTION__, IsInBusiness(), ullEnd - ullStart, HSPScannerService_LogCode_ScanImageEx);
 		SetLastUserCode(GetAlarmDEC());
-		ctx->Answer(TransECWithRepeat(erroCode), GetLastUserCode());
+		ctx->Answer(erroCode, GetLastUserCode());
 		nRes = 2;
 		}
 
@@ -1888,7 +1901,7 @@ int CHSPScannerFSM::ShowProperty(SpReqAnsContext<HSPScannerService_ShowProperty_
 	} else {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ShowProperty).setAPI("DevAdapter::SetViewPos").setCostTime(ullEnd - ullStart)();
 	}
-	ctx->Answer(TransECWithRepeat(erroCode));
+	ctx->Answer(erroCode);
 	
 	DWORD dwStart = GetTickCount();
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Start to show Property dialog...");
@@ -1945,7 +1958,7 @@ int CHSPScannerFSM::SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
 		erroCode = m_hDevHelper->SetViewPos(ctx->Req.pointX, ctx->Req.pointY, ctx->Req.nWidth);
 		const ULONGLONG ullEnd = SP::Module::Comm::RVCGetTickCount();
 		if (ISSUCCEEDED(erroCode)) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::SetViewPos").setCostTime(ullEnd - ullStart)("x: %d, y: %d, w: %d", ctx->Req.pointX, ctx->Req.pointY, ctx->Req.nWidth);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::SetViewPos").setLogCode(HSPScannerService_LogCode_SetWinPos).setCostTime(ullEnd - ullStart)("x:%d, y:%d, w:%d", ctx->Req.pointX, ctx->Req.pointY, ctx->Req.nWidth);
 			m_nRecX = ctx->Req.pointX;
 			m_nRecY = ctx->Req.pointY;
 			m_nRecW = ctx->Req.nWidth;
@@ -1960,7 +1973,7 @@ int CHSPScannerFSM::SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
 		erroCode = m_hDevHelper->SetParam(HSPS_MODEL_VIEW, value);
 		const ULONGLONG ullEnd = SP::Module::Comm::RVCGetTickCount();
 		if (ISSUCCEEDED(erroCode)) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::SetParam").setCostTime(ullEnd - ullStart)("%d", value);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::SetParam").setLogCode(HSPScannerService_LogCode_SetWinPos).setCostTime(ullEnd - ullStart)("%d", value);
 		} else {
 			//RTA2N02
 			SetErrorAndLog(erroCode, MEC_DEVAPI_HSPSCANNER_SetParam, "DevAdapter::SetParam", __FUNCTION__, IsInBusiness(), ullEnd - ullStart, HSPScannerService_LogCode_SetWinPos);
@@ -1968,15 +1981,12 @@ int CHSPScannerFSM::SetWinPos(SpReqAnsContext<HSPScannerService_SetWinPos_Req,
 			nRes = 1;
 		}
 	}
-	if (ISSUCCEEDED(erroCode)) {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_SetWinPos)("SetWinPos succ.");
-	}
-	else {
+	if (!ISSUCCEEDED(erroCode)) {
 		CSimpleStringA tmpRTA(true), tmpDesc(true);
 		if (GetEntityBase()->GetFunction()->GetVTMErrMsg(GetLastUserCode(), tmpDesc, tmpRTA) == Error_Succeed)
 			DbgToBeidou(ctx->link, "SetWinPos").setReturnCode(tmpRTA)();
 	}
-	ctx->Answer(TransECWithRepeat(erroCode), GetLastUserCode());
+	ctx->Answer(erroCode, GetLastUserCode());
 	return nRes;
 }
 
@@ -1995,7 +2005,7 @@ int CHSPScannerFSM::GetDevStatus(SpReqAnsContext<HSPScannerService_GetDevStatus_
 	else {
 		nRes = 1;
 	}
-	ctx->Answer(TransECWithRepeat(erroCode), GetLastUserCode());
+	ctx->Answer(erroCode, GetLastUserCode());
 	return nRes;
 }
 
@@ -2175,7 +2185,7 @@ void CHSPScannerFSM::SelfTest(EntityTestEnum eTestType,
 
 void CHSPScannerFSM::OnStateTrans(int iSrcState, int iDstState) 
 {
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("trans from %s to %s", GetStateName(iSrcState), GetStateName(iDstState));
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("trans from %s to %s", GetStateName(iSrcState), GetStateName(iDstState));
 	m_nSrcState = iSrcState;
 }
 
@@ -2225,6 +2235,7 @@ int CHSPScannerFSM::CancelPreview(SpReqAnsContext<HSPScannerService_CancelPrevie
 			ret = 1;
 		}
 		else {
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_CancelPreviewJS)("HSPS_VIEW_HIDE");
 			ctx->Answer(Error_Succeed);
 		}
 	}
@@ -2265,22 +2276,27 @@ int CHSPScannerFSM::ScanImageJS(SpReqAnsContext<HSPScannerService_ScanImageJS_Re
 	erroCode = m_hDevHelper->ScanImage((LPCTSTR)csImageFile);
 	ULONGLONG ullEnd = SP::Module::Comm::RVCGetTickCount();
 	if (ISSUCCEEDED(erroCode)) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanImage").setCostTime(ullEnd - ullStart)("ScanImage succ");
-		if (ctx->Req.compress > 0 && !ResizeImage(csImageFile, ctx->Req.compress/*KB*/)) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode(MapCode2RTAString(LOG_WARN_HSPS_RESIZE_IMAGE_FILE_FAILED)).setAPI(__FUNCTION__).setLogCode(HSPScannerService_LogCode_ScanImageJS).setCostTime(ullEnd - ullStart)("HSPScanner resize image failed");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setAPI("DevAdapter::ScanImage").setCostTime(ullEnd - ullStart)();
+		long pictureSize(0), resizeSize(0);
+		CSimpleStringA resizeMsg(true);
+		if (ctx->Req.compress > 0 && ExistsFileA(csImageFile) && !ResizeImage(csImageFile, ctx->Req.compress/*KB*/, pictureSize, resizeMsg)) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode(MapCode2RTAString(LOG_WARN_HSPS_RESIZE_IMAGE_FILE_FAILED)).setAPI(__FUNCTION__).setLogCode(HSPScannerService_LogCode_ScanImageJS).setCostTime(ullEnd - ullStart)("Resize image failed:%s", resizeMsg.GetData());
 			SetLastUserCode(LOG_WARN_HSPS_RESIZE_IMAGE_FILE_FAILED);
 			erroCode = Error_Unexpect;
 			ret = 1;
 		}
 		else {
 			CSimpleStringA tmpMsg(true);
+			DWORD tmpCode(0);
 			CBlob& cbData = ctx->Ans.imageData;
 			FILE* fHandle = fopen(csImageFile, "rb");
 			if (fHandle) {
 				fseek(fHandle, 0, SEEK_END);
 				long fileSize = ftell(fHandle);
+				resizeSize = fileSize;
 				if (fileSize <= 0) {
 					tmpMsg = CSimpleStringA::Format("ftell(%s) error after invoking scanimage: %ld.", (LPCTSTR)csImageFile, fileSize);
+					tmpCode = HSPScanner_UserErrorCode_READ_IMAGE_FILE_ZERO;
 				}
 				else {
 					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("picture size:%ld", fileSize);
@@ -2292,20 +2308,19 @@ int CHSPScannerFSM::ScanImageJS(SpReqAnsContext<HSPScannerService_ScanImageJS_Re
 			}
 			else {
 				tmpMsg = CSimpleStringA::Format("fopen(%s) error after invoking scanimage: %d.", (LPCTSTR)csImageFile, errno);
+				tmpCode = HSPScanner_UserErrorCode_READ_IMAGE_FILE_FAILED;
 			}
 
-			if (tmpMsg.IsNullOrEmpty()) {
-				//Succ
+			if (!tmpCode) {//Succ
 				if (ctx->Req.hide && FAILURED(SetPreviewProperty(JS::PreviewSettings(false), HSPScannerService_LogCode_ScanImageJS))) {
 					erroCode = Error_Unexpect;
 					ret = 1;
 				}
 				else {
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImageJS).setAPI(__FUNCTION__)("ScanImage succ");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImageJS).setAPI(__FUNCTION__)("ScanImage succ, originalPicSize:%ld, resizePicSize:%ld", pictureSize, resizeSize);
 				}
 			}
 			else {
-				const DWORD tmpCode(HSPScanner_UserErrorCode_READ_IMAGE_FILE_FAILED);
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImageJS).setResultCode(MapCode2RTAString(tmpCode))(tmpMsg.GetData());
 				SetLastUserCode(tmpCode);
 				erroCode = Error_Unexpect;
@@ -2387,7 +2402,7 @@ ErrorCodeEnum CHSPScannerFSM::SetPreviewProperty(const JS::PreviewSettings& val,
 
 	//////////////////////////////////////////////////////////////////////////
 	if (val.pos != 0) {
-		CSimpleStringA tmpParm = CSimpleStringA::Format("x(%d), y(%d), w(%d)", val.pos_x, val.pos_y, val.pos_w);
+		CSimpleStringA tmpParm = CSimpleStringA::Format("x:%d, y:%d, w:%d", val.pos_x, val.pos_y, val.pos_w);
 		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_USER)("Start to SetViewPos %s...", tmpParm.GetData());
 		const ULONGLONG ullStart = SP::Module::Comm::RVCGetTickCount();
 		erroCode = m_hDevHelper->SetViewPos(val.pos_x, val.pos_y, val.pos_w);
@@ -2489,7 +2504,7 @@ ErrorCodeEnum CHSPScannerFSM::DeleteFileIfExisted(LPCTSTR fileName)
 		}
 		else {
 			LogWarn(Severity_High, Error_Unexpect, HSPScanner_UserErrorCode_CLEAR_RESOURCE_FAILED, CSimpleStringA::Format(
-				"DeleteFile(%s) failed LastError(%d) at ResizeImage proc", fileName, GetLastError()));
+				"DeleteFile(%s) failed LastError(%d)", fileName, GetLastError()));
 			return Error_Unexpect;
 		}
 	}
@@ -2515,7 +2530,7 @@ void CHSPScannerFSM::InitialMaxResizeValue()
 ErrorCodeEnum CHSPScannerFSM::TryToOpenDevice()
 {
 	ErrorCodeEnum result(Error_Succeed);
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to open device...");
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to open device...");
 	ULONGLONG ullStart = SP::Module::Comm::RVCGetTickCount();
 	result = m_hDevHelper->DevOpen();
 	ULONGLONG ullEnd = SP::Module::Comm::RVCGetTickCount();
@@ -2526,7 +2541,7 @@ ErrorCodeEnum CHSPScannerFSM::TryToOpenDevice()
 	}
 	else {
 		SetLastUserCode();
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").setCostTime(ullEnd - ullStart)("Open HSPS succ");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").setCostTime(ullEnd - ullStart)();
 		ullStart = SP::Module::Comm::RVCGetTickCount();
 		result = FulfillAdapterDevCategory();
 		ullEnd = SP::Module::Comm::RVCGetTickCount();
@@ -2537,12 +2552,17 @@ ErrorCodeEnum CHSPScannerFSM::TryToOpenDevice()
 		m_nRecY = 224;
 		m_nRecW = 1024;
 		ErrorCodeEnum ecInit = m_hDevHelper->SetViewPos(m_nRecX, m_nRecY, m_nRecW);
+		if (FAILURED(ecInit))
+			SetErrorAndLog(ecInit, MEC_DEVAPI_HSPSCANNER_SetViewPos, "DevAdapter::SetViewPos", __FUNCTION__, false);
 		ErrorCodeEnum ecInitScan = m_hDevHelper->SetParam(HSPS_MODEL_SCANSIZE, HSPS_SCAN_FULL);
+		if (FAILURED(ecInitScan))
+			SetErrorAndLog(ecInitScan, MEC_DEVAPI_HSPSCANNER_SetParam, "DevAdapter::SetParam", __FUNCTION__, false, 0, "", CombineJsonContext("HSPS_SCAN_FULL"));
 		ErrorCodeEnum ecInitRotate = m_hDevHelper->SetParam(HSPS_MODEL_ROTATE, HSPS_ROTATE_NOANGLE);
+		if (FAILURED(ecInitRotate))
+			SetErrorAndLog(ecInitRotate, MEC_DEVAPI_HSPSCANNER_SetParam, "DevAdapter::SetParam", __FUNCTION__, false, 0, "", CombineJsonContext("HSPS_ROTATE_NOANGLE"));
 		ErrorCodeEnum ecInitColor = m_hDevHelper->SetParam(HSPS_MODEL_COLOR, HSPS_COLOR_FULL);
-		if (FAILURED(ecInit) || FAILURED(ecInitScan) || FAILURED(ecInitRotate) || FAILURED(ecInitColor)) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ViewPos: %s, Scan: %s, rotate: %s, color: %s.", SpStrError(ecInit), SpStrError(ecInitScan), SpStrError(ecInitRotate), SpStrError(ecInitColor));
-		}
+		if (FAILURED(ecInitColor))
+			SetErrorAndLog(ecInitColor, MEC_DEVAPI_HSPSCANNER_SetParam, "DevAdapter::SetParam", __FUNCTION__, false, 0, "", CombineJsonContext("HSPS_COLOR_FULL"));
 	}
 	return result;
 }
@@ -2564,6 +2584,9 @@ LPCTSTR CHSPScannerFSM::MapCode2RTAString(DWORD dwValue)
 	case 0x2170000C: /*未登记到资源管理平台*/
 		return "RTA2N0C";
 		break;
+	case 0x21700204: /*未登记到资源管理平台*/
+		return "RTA2N0S";
+		break;
 	case 0:
 	default:
 		return "SUC0000";

+ 15 - 15
Module/mod_HSPScanner/HSPScannerFSM.h

@@ -282,7 +282,7 @@ public:
 	int StopPreview(SpReqAnsContext<HSPScannerService_CancelPreview_Req,
 		HSPScannerService_CancelPreview_Ans>::Pointer ctx);
 	
-	bool ResizeImage(const CSimpleStringA& fileName, int kbSize);
+	bool ResizeImage(const CSimpleStringA& fileName, int kbSize, long& originSize, CSimpleStringA& retMsg);
 	
 	int ScanImage(SpReqAnsContext<HSPScannerService_ScanImage_Req,
 		HSPScannerService_ScanImage_Ans>::Pointer ctx);
@@ -339,7 +339,7 @@ private:
 	DWORD m_dwMaxImageSize;
 	bool m_lightOn;
 	bool m_dupFlag4ExitCancel;
-
+	ULONGLONG m_ullTS4Disconnect;
 private:
 
 	BOOL GetCurImageName(CSimpleStringA& csImagName, bool bExt = false);
@@ -390,7 +390,7 @@ public:
 	{
 		if (m_ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_StartPreview)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_StartPreview).setAPI("StartPreviewEvent")
 				.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 			m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 		}
@@ -409,7 +409,7 @@ public:
 	{
 		if (m_ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_CancelPreview)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_CancelPreview).setAPI("StopPreviewEvent")
 				.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 			m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 		}
@@ -428,7 +428,7 @@ public:
 	{
 		if (m_ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImage)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImage).setAPI("ScanImageEvent")
 				.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 			m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 		}
@@ -447,7 +447,7 @@ public:
 	{
 		if (m_ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImageEx)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImageEx).setAPI("ScanImageExEvent")
 				.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 			m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 		}
@@ -466,7 +466,7 @@ public:
 	{
 		if (m_ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ShowProperty)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ShowProperty).setAPI("ShowPropertyEvent")
 				.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 			m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 		}
@@ -485,7 +485,7 @@ public:
 	{
 		if (m_ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetProperty)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetProperty).setAPI("SetPropertyEvent")
 				.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 			m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 		}
@@ -504,7 +504,7 @@ public:
 	{
 		if (m_ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetWinPos)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetWinPos).setAPI("SetWinPosEvent")
 				.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 			m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 		}
@@ -523,7 +523,7 @@ public:
 	{
 		if (m_ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevStatus)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevStatus).setAPI("GetDevStatusEvent")
 				.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 			m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 		}
@@ -544,7 +544,7 @@ public:
 	{
 		if (m_ctx != NULL)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevInfo)
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_GetDevInfo).setAPI("GetDevInfoEvent")
 				.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 			m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 		}
@@ -565,7 +565,7 @@ namespace JS {
 		{
 			if (m_ctx != NULL)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_StartPreviewJS)
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_StartPreviewJS).setAPI("StartPreviewEventJS")
 					.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("StartPreviewEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 				m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 			}
@@ -583,7 +583,7 @@ namespace JS {
 		{
 			if (m_ctx != NULL)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_CancelPreviewJS)
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_CancelPreviewJS).setAPI("CancelPreviewJSEvent")
 					.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("CancelPreviewEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 				m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 			}
@@ -601,7 +601,7 @@ namespace JS {
 		{
 			if (m_ctx != NULL)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImageJS)
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_ScanImageJS).setAPI("ScanImageJSEvent")
 					.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("ScanImageEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 				m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 			}
@@ -619,7 +619,7 @@ namespace JS {
 		{
 			if (m_ctx != NULL)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetParamJS)
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode(HSPScannerService_LogCode_SetParamJS).setAPI("SetParamJSEvent")
 					.setResultCode(m_fsm->MapCode2RTAString(LOG_WARN_HSPS_INVALID_OPERATION))("SetParamEvent::Error_InvalidState in [%s] State", m_fsm->GetCurrStateName());
 				m_ctx->Answer(Error_InvalidState, LOG_WARN_HSPS_INVALID_OPERATION);
 			}

+ 0 - 35
Module/mod_HSPScanner/mod_HSPScanner.cpp

@@ -3,7 +3,6 @@
 
 #include "stdafx.h"
 #include "mod_HSPScanner.h"
-#include "fileutil.h"
 
 void CHSPScannerServerSession::Handle_StartPreview(SpReqAnsContext<HSPScannerService_StartPreview_Req,
 	HSPScannerService_StartPreview_Ans>::Pointer ctx)
@@ -76,28 +75,24 @@ void CHSPScannerServerSession::Handle_Exit(SpOnewayCallContext<HSPScannerService
 void CHSPScannerServerSession::Handle_StartPreviewJS(SpReqAnsContext<HSPScannerService_StartPreviewJS_Req, HSPScannerService_StartPreviewJS_Ans>::Pointer ctx)
 {
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_StartPreviewJS).setAPI(__FUNCTION__)(__FUNCTION__);
 	m_pEntity->StartPreviewJS(ctx);
 }
 
 void CHSPScannerServerSession::Handle_CancelPreviewJS(SpReqAnsContext<HSPScannerService_CancelPreviewJS_Req, HSPScannerService_CancelPreviewJS_Ans>::Pointer ctx)
 {
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_CancelPreviewJS).setAPI(__FUNCTION__)(__FUNCTION__);
 	m_pEntity->CancelPreviewJS(ctx);
 }
 
 void CHSPScannerServerSession::Handle_ScanImageJS(SpReqAnsContext<HSPScannerService_ScanImageJS_Req, HSPScannerService_ScanImageJS_Ans>::Pointer ctx)
 {
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_ScanImageJS).setAPI(__FUNCTION__)(__FUNCTION__);
 	m_pEntity->ScanImageJS(ctx);
 }
 
 void CHSPScannerServerSession::Handle_SetParamJS(SpReqAnsContext<HSPScannerService_SetParamJS_Req, HSPScannerService_SetParamJS_Ans>::Pointer ctx)
 {
 	DbgToBeidou(ctx->link, __FUNCTION__)();
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(HSPScannerService_LogCode_SetParamJS).setAPI(__FUNCTION__)(__FUNCTION__);
 	m_pEntity->SetParamJS(ctx);
 }
 
@@ -109,36 +104,6 @@ void CHSPScannerEntity::OnSysVarEvent(const char* pszKey, const char* pszValue,
 	}
 }
 
-#if defined(_MSC_VER)
-
-ErrorCodeEnum CHSPScannerEntity::CustomVendorLibInfo()
-{
-	/** 仅做调查使用  [Gifur@2024118]*/
-	if (vendorLibInfo.strVendor.Compare("keba", true) == 0
-		&& ((vendorLibInfo.strVersion == "7" && vendorLibInfo.strBatch == "1")
-			|| (vendorLibInfo.strVersion == "1" && vendorLibInfo.strBatch == "1"))) {
-		CSimpleStringA strExistDriver(true);
-		BOOL isNewOne(FALSE);
-		if (ExistsFileA("C:\\Program Files (x86)\\eloamDll_2.4\\bin\\eloamDll.dll")) {
-			strExistDriver = "C:\\Program Files (x86)\\eloamDll_2.4\\bin\\eloamDll.dll";
-			isNewOne = TRUE;
-		} else if (ExistsFileA("C:\\Program Files\\eloamDll_2.4\\bin\\eloamDll.dll")) {
-			strExistDriver = "C:\\Program Files\\eloamDll_2.4\\bin\\eloamDll.dll";
-			isNewOne = TRUE;
-		} else if (ExistsFileA("C:\\Program Files (x86)\\eloamDll_2.3\\bin\\eloamDll.dll")) {
-			strExistDriver = "C:\\Program Files (x86)\\eloamDll_2.3\\bin\\eloamDll.dll";
-		} else if (ExistsFileA("C:\\Program Files\\eloamDll_2.3\\bin\\eloamDll.dll")) {
-			strExistDriver = "C:\\Program Files\\eloamDll_2.3\\bin\\eloamDll.dll";
-		}
-		if (!strExistDriver.IsNullOrEmpty() && isNewOne) {
-			LogWarn(Severity_Low, Error_Debug, LOG_WARN_HSPS_VENDORDLL_KEBA_MATCHED, strExistDriver);
-		}
-	}
-	return Error_Succeed;
-}
-#endif //_MSC_VER
-
-
 SP_BEGIN_ENTITY_MAP()
 	SP_ENTITY(CHSPScannerEntity)
 SP_END_ENTITY_MAP()

+ 0 - 5
Module/mod_HSPScanner/mod_HSPScanner.h

@@ -222,11 +222,6 @@ public:
 	virtual bool IsService() const { return true; }
 	virtual bool IsMultiThread() const { return true; }; 
 
-	protected:
-#if defined(_MSC_VER)
-		ErrorCodeEnum CustomVendorLibInfo();
-#endif //_MSC_VER
-
 private:
 	CHSPScannerFSM m_fsm;
 };

+ 16 - 7
Module/mod_IDCertificate/IDCertFSM.cpp

@@ -1677,16 +1677,25 @@ void CIDCertFSM::CopyIDCerDataToCtx(IDCerInfoEx2 idInfoEx2, T& ctx)
 
 	//转换头像图片
 	GetPngBlobEx(ctx->Ans.headphoto, "zp");
-
+	CSimpleStringA csIDInfo, csIDLogInfo, csIDType;
 #ifdef RVC_OS_WIN
-	CSimpleStringA csIDLogInfo = CSimpleStringA::Format("IDNo:%s****%s"
-		, (const char*)CSimpleStringA(GetGBKString((UINT16*)idInfoEx2.idno.data)).SubString(0, 4)
-		, (const char*)CSimpleStringA(GetGBKString((UINT16*)idInfoEx2.idno.data)).SubString(CSimpleStringA(GetGBKString((UINT16*)idInfoEx2.idno.data)).GetLength() - 1, 1));
+	csIDInfo = CSimpleStringA::Format("%s", GetGBKString((UINT16*)idInfoEx2.idno.data));
+	csIDType = CSimpleStringA::Format("%s", GetGBKString((UINT16*)idInfoEx2.idType.data));
 #else
-	CSimpleStringA tIdcode = (char*)utf8Data->idno;
-	CSimpleStringA csIDLogInfo = CSimpleStringA::Format("IDNo:%s****%s"
-		, (const char*)tIdcode.SubString(0, 4), (const char*)tIdcode.SubString(tIdcode.GetLength() - 1, 1));
+	csIDInfo = CSimpleStringA::Format("%s", utf8Data->idno);
+	csIDType = CSimpleStringA::Format("%s", utf8Data->idType);
 #endif
+	if (csIDType.IsNullOrEmpty())
+		csIDLogInfo = SP::Module::Util::DataMask(SP::Module::Util::DataMask_IDCard, csIDInfo);
+	else if (csIDType.Compare("I") == 0 || csIDType.Compare("Y") == 0)
+		csIDLogInfo = SP::Module::Util::DataMask(SP::Module::Util::DataMask_ForeignerPR, csIDInfo);
+	else if (csIDType.Compare("J") == 0)
+		csIDLogInfo = SP::Module::Util::DataMask(SP::Module::Util::DataMask_HKMOTWPermit, csIDInfo);
+	else
+	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("IdType:[%s]", csIDType.GetData());
+		csIDLogInfo = SP::Module::Util::DataMask(SP::Module::Util::DataMask_UNKNOWN, csIDInfo);
+	}
 	LogWarn(Severity_Low, Error_Succeed, IDCertificate_UserErrorCode_ReadAndScan_GetIDInfo, csIDLogInfo.GetData());
 
 	if (utf8Data != nullptr)

+ 151 - 1
Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp

@@ -330,6 +330,21 @@ void ResourceWatcherFSM::TriggerProccessUpload()
     }
 }
 
+void ResourceWatcherFSM::TriggerFileListUpload()
+{
+    CSmartPointer<IConfigInfo> spCtSettingConfig;
+    GetEntityBase()->GetFunction()->OpenConfig(Config_CenterSetting, spCtSettingConfig);
+    //集中配置读取需要上送的路径
+    CSimpleStringA fileListPath("");
+    spCtSettingConfig->ReadConfigValue(m_pEntity->GetEntityName(), "DirPathToUploadFileList", fileListPath);
+    if (!fileListPath.IsNullOrEmpty())
+    {
+        m_fileListPath = fileListPath.Split('|');
+        UploadDirPathFileListTask* uploadFileListTask = new UploadDirPathFileListTask(this);
+        GetEntityBase()->GetFunction()->PostThreadPoolTask(uploadFileListTask);
+    }
+}
+
 ErrorCodeEnum ResourceWatcherFSM::OnInit()
 {
     neverMainPage = true;		//是否未进入过首页
@@ -4890,7 +4905,7 @@ void ResourceWatcherFSM::ConfirmWindowEffectHasBeenOpen()
 }
 #endif // RVC_OS_LINUX
 
-void ResourceWatcherFSM::GetSystemProccess()
+void ResourceWatcherFSM::UploadSystemProccess()
 {
     if(processName.empty())
     {
@@ -4933,4 +4948,139 @@ void ResourceWatcherFSM::GetSystemProccess()
         }
         
     }
+}
+
+void ResourceWatcherFSM::UploadDirPathFileList(CSimpleStringA dirFilePath)
+{
+    CSimpleStringA realPath(true);
+    int res = ExpandDir(dirFilePath, realPath);
+    switch (res)
+    {
+    case -1: //映射无效,使用原数据
+    {
+        realPath = dirFilePath;
+        break;
+    }
+    case -2: //GetPath映射错误,ExpandDir有报错,这里就不报了
+    {
+        return;
+    }
+    default:
+        break;
+    }
+
+    DWORD attrs = GetFileAttributesA(realPath);
+    if (attrs == INVALID_FILE_ATTRIBUTES)
+    {
+        const DWORD lastError = GetLastError();
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A15")("Acess to path error:[%s], GLE = %u.", realPath.GetData(), lastError);
+        return;
+    }
+    else  if (!(attrs & FILE_ATTRIBUTE_DIRECTORY))
+    { //非文件夹类型
+        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A15")("Path [%s]  is not Directory!", realPath.GetData());
+        return;
+    }
+
+    int len = 0;
+    vector<CSimpleStringA> fileList = GetFileListFromDirectory(realPath);
+    if (!fileList.empty())
+    {
+
+        string tPath = realPath.GetData();
+        string jsonPath;
+        for (char c : tPath) { //替换反斜杠
+            if (c == '\\') {
+                jsonPath += '\\';
+                jsonPath += '\\';
+            }
+            else {
+                jsonPath += c;
+            }
+        }
+        CSimpleStringA curListStr = "";
+        CSimpleStringA endStr = ",";
+        CSimpleStringA totalListStr = CSimpleStringA::Format("{\"path\":\"%s\", \"fileList\":[", jsonPath.c_str());
+
+        if (totalListStr.GetLength() > 1000)
+        {
+            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Dir Path length over 1000!");
+            DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("%s", totalListStr.SubString(0, 1000));
+            return;
+        }
+
+        for (int i = 0; i < fileList.size(); i++)
+        {
+            curListStr = CSimpleStringA("\"") + fileList[i] + "\"";
+            len = totalListStr.GetLength() + curListStr.GetLength();
+            if (len > 1000 || i == (fileList.size() - 1))
+            {
+                endStr = "]}";
+                if (i == (fileList.size() - 1)) //最后一个
+                {
+                    totalListStr = totalListStr + curListStr + endStr;
+                    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetFileListFromDirectory")(totalListStr.GetData());
+                    break;
+                }
+                else //长度超限
+                {
+                    totalListStr[totalListStr.GetLength() - 1] = ']';
+                    totalListStr = totalListStr + "}";
+                    DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetFileListFromDirectory")(totalListStr.GetData());
+                    totalListStr = CSimpleStringA::Format("{\"path\":\"%s\", \"fileList\":[", jsonPath.c_str()) + curListStr + ","; //超过长度则从当前进程开始重新搭建日志
+                }
+            }
+            else
+            {
+                endStr = ",";
+                totalListStr = totalListStr + curListStr + endStr;
+            }
+        }
+    }
+}
+
+vector<CSimpleStringA> ResourceWatcherFSM::GetFileListFromDirectory(CSimpleStringA path)
+{
+    vector<CSimpleStringA> files;
+#ifdef _WIN32
+    WIN32_FIND_DATAA data;
+    HANDLE hFind;
+
+    CSimpleStringA searchPath = path + "\\*";
+    hFind = FindFirstFileA(searchPath.GetData(), &data);
+    if (hFind != INVALID_HANDLE_VALUE) {
+        do {
+            if (strcmp(data.cFileName, ".") == 0 || strcmp(data.cFileName, "..") == 0)
+                continue;
+            
+            files.push_back(data.cFileName);
+
+            if ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) { //文件夹类型,只传文件夹名
+                CSimpleStringA fullPath = path + "\\" + data.cFileName;
+                UploadDirPathFileList(fullPath); //上送子文件夹下的文件列表
+            }
+        } while (FindNextFileA(hFind, &data) != 0);
+        FindClose(hFind);
+    }
+#else
+    DIR* dir = opendir(path.GetData());
+    if (!dir) return files;
+
+    struct dirent* entry;
+    while ((entry = readdir(dir)) != nullptr) {
+        if (CSimpleStringA(entry->d_name) == "." || CSimpleStringA(entry->d_name) == "..")
+            continue;
+        
+        files.push_back(entry->d_name);
+
+        CSimpleStringA fullPath = path + "/" + entry->d_name;
+        DWORD attrs = GetFileAttributesA(fullPath);
+        if (attrs & FILE_ATTRIBUTE_DIRECTORY) { //文件夹类型,只传文件夹名
+            UploadDirPathFileList(fullPath); //上送子文件夹下的文件列表
+        }
+    }
+    closedir(dir);
+#endif
+
+    return files;
 }

+ 27 - 4
Module/mod_ResourceWatcher/ResourceWatcherFSM.h

@@ -24,7 +24,6 @@
 #include <sys/types.h>
 #include <dirent.h>
 #include <sys/stat.h>
-#include "CommEntityUtil.hpp"
 #else
 #include <ws2tcpip.h>
 #include <tchar.h>
@@ -238,6 +237,7 @@ public:
 	//进入首页时触发的功能在此
 	void TriggerAtStatusChanged(bool bMStatus);
 	void TriggerProccessUpload();
+	void TriggerFileListUpload();
 
 	void AfterInit();
 
@@ -272,6 +272,7 @@ private:
 
 	int m_diskLastWarnHour;
 	BOOL m_skipDesktopDetect;
+	CAutoArray<CSimpleStringA> m_fileListPath;
 
 #ifdef RVC_OS_WIN
 	vector<CSimpleStringA>m_nonSignedFiles;
@@ -319,11 +320,16 @@ public:
 		ResourceWatcherService_GetBizLinks_Ans>::Pointer ctx);
 
 	bool GetNeverMainPageFlag() { return neverMainPage; } //是否未进过首页
-	void GetSystemProccess();
 	void GetSystemCPUStatus();
 	void GetSystemMemoryStatus();
 	void GetSystemDiskStatus();
 	void GetDiskStatusFrom(LPCTSTR path);
+
+	vector<CSimpleStringA> GetFileListFromDirectory(CSimpleStringA path);
+	void UploadDirPathFileList(CSimpleStringA dirFilePath);
+	CAutoArray<CSimpleStringA> GetUploadPathList() { return m_fileListPath; }
+	void UploadSystemProccess();
+
 	void HardwareInfoTimer(void* pData);
 	void DiskCheckTimer(void* pData);
 
@@ -519,6 +525,9 @@ struct DiskAndFilesTask : public ITaskSp
 			m_pFSM->GetEntityBase()->GetFunction()->SetTimer(TIMER_DISK_CHECK, pListener, checkTime);
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Set DISK CHECK Timer!");
 		}
+
+		//清理结束后触发
+		m_pFSM->TriggerFileListUpload();
 	}
 };
 
@@ -539,7 +548,6 @@ struct UploadSysProcInfoTask : public ITaskSp
 	UploadSysProcInfoTask(ResourceWatcherFSM* pFSM) : m_pFSM(pFSM) {}
 	void Process()
 	{
-		CSimpleStringA t_terminalState;
 		DWORD elapsed = 0;
 		DWORD dwStart = SP::Module::Comm::RVCGetTickCount();
 		DWORD dwEnd = SP::Module::Comm::RVCGetTickCount();
@@ -551,6 +559,21 @@ struct UploadSysProcInfoTask : public ITaskSp
 			elapsed = dwEnd - dwStart;
 		}
 		m_pFSM->GetSystemCPUStatus();
-		m_pFSM->GetSystemProccess();
+		m_pFSM->UploadSystemProccess();
+	}
+};
+
+//获取指定路径并将文件列表上送
+struct UploadDirPathFileListTask : public ITaskSp
+{
+	ResourceWatcherFSM* m_pFSM;
+	UploadDirPathFileListTask(ResourceWatcherFSM* pFSM) : m_pFSM(pFSM) {}
+	void Process()
+	{
+		CAutoArray<CSimpleStringA> list = m_pFSM->GetUploadPathList();
+		for (int i = 0; i < list.GetCount(); i++)
+		{
+			m_pFSM->UploadDirPathFileList(list[i]);
+		}
 	}
 };

+ 9 - 1
Module/mod_ResourceWatcher/mod_ResourceWatcher.h

@@ -98,11 +98,15 @@ public:
 		{
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Terminal has been lastStage(%s) before ResourceWatcher start.", terminalStage);
 			m_fsm.TriggerProccessUpload();
+			if (!(0 == CSimpleStringA("A").Compare(terminalStage, true))) //非首页,已达终态
+			{
+				m_fsm.TriggerFileListUpload();
+			}
 		}
 		else
 		{
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Terminal is starting, regist the teminalStage Event.");
-			spEntityFunction->RegistSysVarEvent("terminalStage", this);
+			spEntityFunction->RegistSysVarEvent("TerminalStage", this);
 		}
 		
 
@@ -247,6 +251,10 @@ public:
 			{
 				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Status changed, teminalStage = %s.", pszValue);
 				m_fsm.TriggerProccessUpload();
+				if (!(0 == CSimpleStringA("A").Compare(pszValue, true))) //非通过准入的情况下,直接开始文件列表获取
+				{
+					m_fsm.TriggerFileListUpload();
+				}
 			}
 		}
 	}

+ 8 - 8
Module/mod_RomoteController/RemoteControllerCnn.cpp

@@ -1582,11 +1582,11 @@ ErrorCodeEnum CRemoteControllerCnn::HandleUpgradePackReq(const CSmartPointer<IPa
 	auto rc = pClient->Connect();
 	if (rc == Error_Succeed)
 	{
-		UpgradeMgrService_RegistLocalPack_Req req = {};
-		req.strPackFile = strPack;
+		//UpgradeMgrService_RegistLocalPack_Req req = {};
+		//req.strPackFile = strPack;
 
-		UpgradeMgrService_RegistLocalPack_Ans ans = {};
-		rc = (*pClient)(EntityResource::getLink().upgradeLink())->RegistLocalPack(req, ans, 10000);
+		//UpgradeMgrService_RegistLocalPack_Ans ans = {};
+		//rc = (*pClient)(EntityResource::getLink().upgradeLink())->RegistLocalPack(req, ans, 10000);
 
 		pClient->GetFunction()->CloseSession();
     } else {
@@ -3387,11 +3387,11 @@ ErrorCodeEnum CRemoteControllerCnn::HandleCancelUpgradeReq(const CSmartPointer<I
 	auto rc = pClient->Connect();
 	if (rc == Error_Succeed)
 	{
-		UpgradeMgrService_CancelUpdate_Req req = {};
-		req.strPackFile = strPack;
+		//UpgradeMgrService_CancelUpdate_Req req = {};
+		//req.strPackFile = strPack;
 
-		UpgradeMgrService_CancelUpdate_Ans ans = {};
-		rc = (*pClient)(EntityResource::getLink().upgradeLink())->CancelUpdate(req, ans, 10000);
+		//UpgradeMgrService_CancelUpdate_Ans ans = {};
+		//rc = (*pClient)(EntityResource::getLink().upgradeLink())->CancelUpdate(req, ans, 10000);
 
 		pClient->GetFunction()->CloseSession();
     } else {

+ 0 - 245
Module/mod_UpgradeMgr/UpgradeManager_client_g.h

@@ -107,104 +107,6 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum RegistLocalPack(UpgradeMgrService_RegistLocalPack_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(UpgradeMgrService_Method_RegistLocalPack, UpgradeMgrService_MethodSignature_RegistLocalPack, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum RegistLocalPack(UpgradeMgrService_RegistLocalPack_Req &Req, UpgradeMgrService_RegistLocalPack_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = RegistLocalPack(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum RegistLocalPack(UpgradeMgrService_RegistLocalPack_Req &Req, UpgradeMgrService_RegistLocalPack_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = RegistLocalPack(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 RegistLocalPack(UpgradeMgrService_RegistLocalPack_Req &Req, UpgradeMgrService_RegistLocalPack_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = RegistLocalPack(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 CancelUpdate(UpgradeMgrService_CancelUpdate_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(UpgradeMgrService_Method_CancelUpdate, UpgradeMgrService_MethodSignature_CancelUpdate, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum CancelUpdate(UpgradeMgrService_CancelUpdate_Req &Req, UpgradeMgrService_CancelUpdate_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = CancelUpdate(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum CancelUpdate(UpgradeMgrService_CancelUpdate_Req &Req, UpgradeMgrService_CancelUpdate_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = CancelUpdate(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 CancelUpdate(UpgradeMgrService_CancelUpdate_Req &Req, UpgradeMgrService_CancelUpdate_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = CancelUpdate(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 RollbackUpdate(UpgradeMgrService_RollbackUpdate_Req &Req, CSmartPointer<IAsynWaitSp> &spAsyncWait, DWORD dwTimeout)
 	{
 		CSmartPointer<IClientSessionFunction> pFunc = GetFunction();
@@ -254,153 +156,6 @@ public:
 		return Error;
 	}
 
-	ErrorCodeEnum SwitchUpgrade(UpgradeMgrService_SwitchUpgrade_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(UpgradeMgrService_Method_SwitchUpgrade, UpgradeMgrService_MethodSignature_SwitchUpgrade, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum SwitchUpgrade(UpgradeMgrService_SwitchUpgrade_Req &Req, UpgradeMgrService_SwitchUpgrade_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SwitchUpgrade(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum SwitchUpgrade(UpgradeMgrService_SwitchUpgrade_Req &Req, UpgradeMgrService_SwitchUpgrade_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SwitchUpgrade(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 SwitchUpgrade(UpgradeMgrService_SwitchUpgrade_Req &Req, UpgradeMgrService_SwitchUpgrade_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = SwitchUpgrade(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 RegistManualPack(UpgradeMgrService_RegistManualPack_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(UpgradeMgrService_Method_RegistManualPack, UpgradeMgrService_MethodSignature_RegistManualPack, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum RegistManualPack(UpgradeMgrService_RegistManualPack_Req &Req, UpgradeMgrService_RegistManualPack_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = RegistManualPack(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum RegistManualPack(UpgradeMgrService_RegistManualPack_Req &Req, UpgradeMgrService_RegistManualPack_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = RegistManualPack(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 RegistManualPack(UpgradeMgrService_RegistManualPack_Req &Req, UpgradeMgrService_RegistManualPack_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = RegistManualPack(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 GetManualPacks(UpgradeMgrService_GetManualPacks_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(UpgradeMgrService_Method_GetManualPacks, UpgradeMgrService_MethodSignature_GetManualPacks, Buf, spAsyncWait, m_context, dwTimeout);
-		m_context.clear();
-		return ret;
-	}
-	ErrorCodeEnum GetManualPacks(UpgradeMgrService_GetManualPacks_Req &Req, UpgradeMgrService_GetManualPacks_Ans &Ans, DWORD dwTimeout)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetManualPacks(Req, spAsyncWait, dwTimeout);
-		if (Error == Error_Succeed) {
-			bool bEnd = false;
-			Error = SpWaitAnswerObject(spAsyncWait, Ans, bEnd, dwTimeout);
-			LOG_ASSERT(Error || bEnd);
-		}
-		return Error;
-	}
-	ErrorCodeEnum GetManualPacks(UpgradeMgrService_GetManualPacks_Req &Req, UpgradeMgrService_GetManualPacks_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError, CSimpleString &str)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetManualPacks(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 GetManualPacks(UpgradeMgrService_GetManualPacks_Req &Req, UpgradeMgrService_GetManualPacks_Ans &Ans, DWORD dwTimeout, DWORD &dwUserError)
-	{
-		CSmartPointer<IAsynWaitSp> spAsyncWait;
-		ErrorCodeEnum Error = GetManualPacks(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;
-	}
-
 
 	bool SafeDelete()
 	{

+ 0 - 120
Module/mod_UpgradeMgr/UpgradeManager_def_g.h

@@ -13,28 +13,13 @@ namespace UpgradeManager {
 //
 
 #define UpgradeMgrService_Method_GetUpgradeState 0
-#define UpgradeMgrService_Method_RegistLocalPack 1
-#define UpgradeMgrService_Method_CancelUpdate 2
 #define UpgradeMgrService_Method_RollbackUpdate 3
-#define UpgradeMgrService_Method_SwitchUpgrade 4
-#define UpgradeMgrService_Method_RegistManualPack 5
-#define UpgradeMgrService_Method_GetManualPacks 6
 
 #define UpgradeMgrService_MethodSignature_GetUpgradeState 787774394
-#define UpgradeMgrService_MethodSignature_RegistLocalPack 1118477438
-#define UpgradeMgrService_MethodSignature_CancelUpdate -1276919305
 #define UpgradeMgrService_MethodSignature_RollbackUpdate -1898507850
-#define UpgradeMgrService_MethodSignature_SwitchUpgrade -2116882538
-#define UpgradeMgrService_MethodSignature_RegistManualPack -1924952337
-#define UpgradeMgrService_MethodSignature_GetManualPacks -905215373
 
 #define UpgradeMgrService_LogCode_GetUpgradeState "QLR040250600"
-#define UpgradeMgrService_LogCode_RegistLocalPack "QLR040250601"
-#define UpgradeMgrService_LogCode_CancelUpdate "QLR040250602"
 #define UpgradeMgrService_LogCode_RollbackUpdate "QLR040250603"
-#define UpgradeMgrService_LogCode_SwitchUpgrade "QLR040250604"
-#define UpgradeMgrService_LogCode_RegistManualPack "QLR040250605"
-#define UpgradeMgrService_LogCode_GetManualPacks "QLR040250606"
 
 struct UpgradeMgrService_GetUpgradeState_Req
 {
@@ -62,46 +47,6 @@ struct UpgradeMgrService_GetUpgradeState_Ans
 
 };
 
-struct UpgradeMgrService_RegistLocalPack_Req
-{
-	CSimpleStringA strPackFile;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & strPackFile;
-	}
-
-};
-
-struct UpgradeMgrService_RegistLocalPack_Ans
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct UpgradeMgrService_CancelUpdate_Req
-{
-	CSimpleStringA strPackFile;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & strPackFile;
-	}
-
-};
-
-struct UpgradeMgrService_CancelUpdate_Ans
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
 struct UpgradeMgrService_RollbackUpdate_Req
 {
 	CSimpleStringA strVersion;
@@ -122,71 +67,6 @@ struct UpgradeMgrService_RollbackUpdate_Ans
 
 };
 
-struct UpgradeMgrService_SwitchUpgrade_Req
-{
-	CSimpleStringA strPackFile;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & strPackFile;
-	}
-
-};
-
-struct UpgradeMgrService_SwitchUpgrade_Ans
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct UpgradeMgrService_RegistManualPack_Req
-{
-	CSimpleStringA strPackFile;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & strPackFile;
-	}
-
-};
-
-struct UpgradeMgrService_RegistManualPack_Ans
-{
-	double Errcode;
-	CSimpleStringA ErrMsg;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & Errcode & ErrMsg;
-	}
-
-};
-
-struct UpgradeMgrService_GetManualPacks_Req
-{
-
-	void Serialize(SpBuffer &Buf)
-	{
-	}
-
-};
-
-struct UpgradeMgrService_GetManualPacks_Ans
-{
-	CSimpleStringA strPackFileList;
-	double Errcode;
-	CSimpleStringA ErrMsg;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & strPackFileList & Errcode & ErrMsg;
-	}
-
-};
-
 
 ///////////////////////////
 

+ 0 - 15
Module/mod_UpgradeMgr/UpgradeManager_msg_g.h

@@ -10,11 +10,9 @@
 
 namespace UpgradeManager {
 #define eMsg_UpgradeStateEvent 0
-#define eMsg_ManualTaskEvent 1
 #define eMsg_UpgradeDownloadProgress 2
 
 #define eMsgSig_UpgradeStateEvent -1650087685
-#define eMsgSig_ManualTaskEvent 1253338878
 #define eMsgSig_UpgradeDownloadProgress -498820347
 
 struct UpgradeStateEvent
@@ -35,19 +33,6 @@ struct UpgradeStateEvent
 
 ///////////////////////////
 
-struct ManualTaskEvent
-{
-	int nTaskNum;
-
-	void Serialize(SpBuffer &Buf)
-	{
-		auto & buf = Buf & nTaskNum;
-	}
-
-};
-
-///////////////////////////
-
 struct UpgradeDownloadProgress
 {
 	CSimpleStringA currentFile;

+ 0 - 135
Module/mod_UpgradeMgr/UpgradeManager_server_g.h

@@ -37,20 +37,6 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case UpgradeMgrService_Method_RegistLocalPack:
-			if (dwSignature == UpgradeMgrService_MethodSignature_RegistLocalPack) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case UpgradeMgrService_Method_CancelUpdate:
-			if (dwSignature == UpgradeMgrService_MethodSignature_CancelUpdate) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case UpgradeMgrService_Method_RollbackUpdate:
 			if (dwSignature == UpgradeMgrService_MethodSignature_RollbackUpdate) {
 				bOverlap = true;
@@ -58,27 +44,6 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case UpgradeMgrService_Method_SwitchUpgrade:
-			if (dwSignature == UpgradeMgrService_MethodSignature_SwitchUpgrade) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case UpgradeMgrService_Method_RegistManualPack:
-			if (dwSignature == UpgradeMgrService_MethodSignature_RegistManualPack) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case UpgradeMgrService_Method_GetManualPacks:
-			if (dwSignature == UpgradeMgrService_MethodSignature_GetManualPacks) {
-				bOverlap = true;
-			} else {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		default:
 			Error = Error_MethodNotFound;
 			break;
@@ -95,36 +60,11 @@ public:
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case UpgradeMgrService_Method_RegistLocalPack:
-			if (dwSignature != UpgradeMgrService_MethodSignature_RegistLocalPack) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case UpgradeMgrService_Method_CancelUpdate:
-			if (dwSignature != UpgradeMgrService_MethodSignature_CancelUpdate) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		case UpgradeMgrService_Method_RollbackUpdate:
 			if (dwSignature != UpgradeMgrService_MethodSignature_RollbackUpdate) {
 				Error = Error_MethodSignatureFailed;
 			}
 			break;
-		case UpgradeMgrService_Method_SwitchUpgrade:
-			if (dwSignature != UpgradeMgrService_MethodSignature_SwitchUpgrade) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case UpgradeMgrService_Method_RegistManualPack:
-			if (dwSignature != UpgradeMgrService_MethodSignature_RegistManualPack) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
-		case UpgradeMgrService_Method_GetManualPacks:
-			if (dwSignature != UpgradeMgrService_MethodSignature_GetManualPacks) {
-				Error = Error_MethodSignatureFailed;
-			}
-			break;
 		default:
 			Error = Error_MethodNotFound;
 			break;
@@ -137,36 +77,11 @@ public:
 	/// override by user
 	}
 
-	virtual void Handle_RegistLocalPack(SpReqAnsContext<UpgradeMgrService_RegistLocalPack_Req, UpgradeMgrService_RegistLocalPack_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_CancelUpdate(SpReqAnsContext<UpgradeMgrService_CancelUpdate_Req, UpgradeMgrService_CancelUpdate_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
 	virtual void Handle_RollbackUpdate(SpReqAnsContext<UpgradeMgrService_RollbackUpdate_Req, UpgradeMgrService_RollbackUpdate_Ans>::Pointer ctx)
 	{
 	/// override by user
 	}
 
-	virtual void Handle_SwitchUpgrade(SpReqAnsContext<UpgradeMgrService_SwitchUpgrade_Req, UpgradeMgrService_SwitchUpgrade_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_RegistManualPack(SpReqAnsContext<UpgradeMgrService_RegistManualPack_Req, UpgradeMgrService_RegistManualPack_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
-	virtual void Handle_GetManualPacks(SpReqAnsContext<UpgradeMgrService_GetManualPacks_Req, UpgradeMgrService_GetManualPacks_Ans>::Pointer ctx)
-	{
-	/// override by user
-	}
-
 	virtual void OnRequest(CSmartPointer<ITransactionContext> pTransactionContext)
 	{
 		CAutoBuffer Buf;
@@ -193,26 +108,6 @@ public:
 						Handle_GetUpgradeState(ctx);
 					}
 					break;
-				case UpgradeMgrService_Method_RegistLocalPack:
-					{
-						SpReqAnsContext<UpgradeMgrService_RegistLocalPack_Req,UpgradeMgrService_RegistLocalPack_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<UpgradeMgrService_RegistLocalPack_Req,UpgradeMgrService_RegistLocalPack_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_RegistLocalPack(ctx);
-					}
-					break;
-				case UpgradeMgrService_Method_CancelUpdate:
-					{
-						SpReqAnsContext<UpgradeMgrService_CancelUpdate_Req,UpgradeMgrService_CancelUpdate_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<UpgradeMgrService_CancelUpdate_Req,UpgradeMgrService_CancelUpdate_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_CancelUpdate(ctx);
-					}
-					break;
 				case UpgradeMgrService_Method_RollbackUpdate:
 					{
 						SpReqAnsContext<UpgradeMgrService_RollbackUpdate_Req,UpgradeMgrService_RollbackUpdate_Ans>::Pointer ctx;
@@ -223,36 +118,6 @@ public:
 						Handle_RollbackUpdate(ctx);
 					}
 					break;
-				case UpgradeMgrService_Method_SwitchUpgrade:
-					{
-						SpReqAnsContext<UpgradeMgrService_SwitchUpgrade_Req,UpgradeMgrService_SwitchUpgrade_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<UpgradeMgrService_SwitchUpgrade_Req,UpgradeMgrService_SwitchUpgrade_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_SwitchUpgrade(ctx);
-					}
-					break;
-				case UpgradeMgrService_Method_RegistManualPack:
-					{
-						SpReqAnsContext<UpgradeMgrService_RegistManualPack_Req,UpgradeMgrService_RegistManualPack_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<UpgradeMgrService_RegistManualPack_Req,UpgradeMgrService_RegistManualPack_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_RegistManualPack(ctx);
-					}
-					break;
-				case UpgradeMgrService_Method_GetManualPacks:
-					{
-						SpReqAnsContext<UpgradeMgrService_GetManualPacks_Req,UpgradeMgrService_GetManualPacks_Ans>::Pointer ctx;
-						ctx.Attach(new SpReqAnsContext<UpgradeMgrService_GetManualPacks_Req,UpgradeMgrService_GetManualPacks_Ans>(pTransactionContext));
-						SpBuffer2Object(Buf, ctx->Req);
-						pTransactionContext->GetLinkContext(ctx->link);
-						EntityResource::setLink(ctx->link);
-						Handle_GetManualPacks(ctx);
-					}
-					break;
 				default:
 					assert(0);
 					break;

文件差异内容过多而无法显示
+ 159 - 124
Module/mod_UpgradeMgr/UpgradeTaskFSM.cpp


+ 2 - 2
Module/mod_UpgradeMgr/UpgradeTaskFSM.h

@@ -10,7 +10,7 @@
 #include "IHttpFunc.h"
 #define DOWNLOAD_CONTENT_EACH_LEN 512*1024
 #define DOWNLOAD_TIMEOUT 2*60
-#define QUERY_NO_TASK_WARN_LIMIT 10
+#define QUERY_NO_TASK_WARN_LIMIT 15
 #define	QUERY_IS_WORK_WARN_LIMIT 10
 using namespace std;
 
@@ -19,7 +19,7 @@ using namespace std;
 #define ERR_TASK_QUERY_CONTINUE_NEW_TASK_FAIL 0x50620024 //查询继续新任务报错
 #define ERR_TASK_QUERY_CONTINUE_NEW_TASK_ERR 0x50620025 //查询继续新任务异常
 
-#define WARN_BLACK_FILE_SUM 0x50600023 //黑名单文件数量
+//#define WARN_BLACK_FILE_SUM 0x50600023 //黑名单文件数量
 
 #define UpgradeMgr_VERSION_DOWNLOAD_ID "QLR0402506Z10101"
 #define UpgradeMgr_VERSION_INSTALL_ID "QLR0402506Z10201"

+ 50 - 110
Module/mod_UpgradeMgr/mod_UpgradeMgr.cpp

@@ -64,7 +64,7 @@ namespace Task
 					return;
 				}
 				else {
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("InitFSMTask")("init new upgradeTaskMgr FSM succ");
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("InitFSMTask")("init new upgradeTaskMgr FSM succ");
 					Mgr->m_initSucc = true;
 				}
 
@@ -92,10 +92,10 @@ namespace Task
 				int rollbackTemp = 0;
 				if (ret == Error_Succeed) {
 					spConfig->ReadConfigValueInt("UpgradeManager", "RollbackFlag", rollbackTemp);
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RollbackUpdate")("get centerSetting RollbackFlag=%d", rollbackTemp);
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("RollbackUpdate")("get centerSetting RollbackFlag=%d", rollbackTemp);
 				}
 				else {
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RollbackUpdate")("get centerSetting RollbackFlag fail");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("RollbackUpdate")("get centerSetting RollbackFlag fail,use default value 0");
 				}
 				if (rollbackTemp == 0) {
 					//立即回退模式
@@ -155,7 +155,7 @@ namespace Task
 				int rollbackTemp = 0;
 				if (ret == Error_Succeed) {
 					spConfig->ReadConfigValueInt("UpgradeManager", "RollbackFlag", rollbackTemp);
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get centerSetting RollbackFlag=%d", rollbackTemp);
+					DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("get centerSetting RollbackFlag=%d", rollbackTemp);
 				}
 				else {
 					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get centerSetting RollbackFlag fail");
@@ -218,7 +218,7 @@ void CUpgradeMgrEntity::OnStarted()
 	if (pFunc->GetSysVar("UIState", strValue) == Error_Succeed && strValue.Compare("M") ==0)
 	{
 		// 已经进入首页状态
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("system page isStartup 1");
+		DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("system page isStartup 1");
 		m_bStartUp =true;
 	}		
 	else
@@ -230,7 +230,7 @@ void CUpgradeMgrEntity::OnStarted()
 			LogWarn(Severity_Middle, rc, ERR_WRAN_REGIST_SYS_VAR_FAIL, CSimpleStringA::Format("RegistSysVarEvent UIState  is fail,%d",(int)rc).GetData());
 			m_testResult=Error_InvalidState;//自检失败
 		}else{
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RegistSysVarEvent UIState succ");
+			DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RegistSysVarEvent UIState succ");
 		}
 
 	}
@@ -267,7 +267,7 @@ void CUpgradeMgrEntity::OnSysVarEvent(const char *pszKey, const char *pszValue,c
 	if(strcmp("UIState",pszKey)==0){
 		if(!m_bStartUp){
 			if (strcmp(pszValue, "M") ==0){
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("system page isStartup 2");
+				DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("system page isStartup 2");
 				m_bStartUp = true;				
 			}
 		}
@@ -317,50 +317,12 @@ char CUpgradeMgrEntity::GetInstallStateVal(const InstallStateEnum enumVal)
 	return ' ';  // error
 }
 
-//新状态机不处理
-ErrorCodeEnum CUpgradeMgrEntity::RegistLocalPack(const CSimpleStringA &strPackFile)
-{
-	if(m_initSucc){
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RegistLocalPack new UpgradeMgr is not deal with");
-		return Error_NotImpl;
-	}else{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("initFSM is not end");
-		return Error_Pending;//状态机还未启动
-	}
-	
-}
-
-//新状态机不处理
-DWORD CUpgradeMgrEntity::RegistManualPack(const CSimpleStringA &strPackFile)
-{
-	if(m_initSucc){
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RegistManualPack new UpgradeMgr is not deal with");
-		return UPGRADE_MGR_NOT_IMPLEMENT;
-	}else{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("initFSM is not end");
-		return Error_Pending;//状态机还未启动
-	}
-}
-
-
-//新状态机不处理
-ErrorCodeEnum CUpgradeMgrEntity::CancelUpdate(const CSimpleStringA &strPackFile)
-{
-	if(m_initSucc){
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("CancelUpdate new UpgradeMgr is not deal with");
-		return Error_NotImpl;
-	}else{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("initFSM is not end");
-		return Error_Pending;//状态机还未启动
-	}
-}
-
 //新状态机处理
 ErrorCodeEnum CUpgradeMgrEntity::RollbackUpdate(const CSimpleStringA &strVersion)
 {
 	if(m_initSucc){
 		if(bNewUpgradeMgr){
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RollbackUpdate new UpgradeMgr deal with");
+			DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RollbackUpdate new UpgradeMgr deal with");
 			if(strVersion.GetLength()==0){
 				LogWarn(Severity_Low, Error_NotImpl, ERR_TASK_ROLLBACK_FAIL, "version is empty , rollback upgrade fail");
 				return Error_NotImpl;
@@ -392,7 +354,7 @@ ErrorCodeEnum CUpgradeMgrEntity::RollbackUpdate(const CSimpleStringA &strVersion
 								Task::RollBackTask* rTask = new Task::RollBackTask(this, CVersion(w1, w2, w3, w4));
 								ErrorCodeEnum rc = this->GetFunction()->PostThreadPoolTask(rTask);
 								if (Error_Succeed == rc) {
-									DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RollbackFlag thread start succ");
+									DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RollbackFlag thread start succ");
 									m_taskFSM.m_bRollbackTask = true;//启动线程
 									return Error_Succeed;
 								}
@@ -413,7 +375,7 @@ ErrorCodeEnum CUpgradeMgrEntity::RollbackUpdate(const CSimpleStringA &strVersion
 							Task::RollBackDepTask* rTask = new Task::RollBackDepTask(this, strVersion);
 							ErrorCodeEnum rc = this->GetFunction()->PostThreadPoolTask(rTask);
 							if (Error_Succeed == rc) {
-								DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RollbackFlag Dep thread start succ");
+								DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("RollbackFlag Dep thread start succ");
 								m_taskFSM.m_bRollbackTask = true;//启动线程
 								return Error_Succeed;
 							}
@@ -439,34 +401,11 @@ ErrorCodeEnum CUpgradeMgrEntity::RollbackUpdate(const CSimpleStringA &strVersion
 	}
 }
 
-//新状态机不处理
-DWORD CUpgradeMgrEntity::GetManualPacks(CSimpleStringA &strManualPacks)
-{	
-	if(m_initSucc){
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("GetManualPacks new UpgradeMgr is not deal with");
-		return UPGRADE_MGR_NOT_IMPLEMENT;
-	}else{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("initFSM is not end");
-		return Error_Pending;//状态机还未启动
-	}
-}
-
 CServerSessionBase* CUpgradeMgrEntity::OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszParam*/)
 {
 	return new CUpgradeMgrSession(this);
 }
 
-//新状态机不处理
-ErrorCodeEnum CUpgradeMgrEntity::SwitchUpgrade(const CSimpleStringA &strPack)
-{
-	if(m_initSucc){
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("SwitchUpgrade new UpgradeMgr is not deal with");
-		return Error_NotImpl;
-	}else{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("initFSM is not end");
-		return Error_Pending;//状态机还未启动
-	}
-}
 
 //新状态机处理
 ErrorCodeEnum CUpgradeMgrEntity::GetUpgradeState(bool &bInstalling, CSimpleStringA &strPackFile, CSimpleStringA &strExecID,
@@ -509,75 +448,76 @@ ErrorCodeEnum CUpgradeMgrEntity::testActive()
 
 ErrorCodeEnum CUpgradeMgrEntity::NewStopMediaPlay()
 {
-#ifdef RVC_OS_WIN
-	// 通知媒体停止播放广告和声音
-	LocalMediaPlay::PlayService_ClientBase *pClient = new LocalMediaPlay::PlayService_ClientBase(this);
-	ErrorCodeEnum rc = pClient->Connect();
-	if (rc == Error_Succeed)
-	{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("connect to entity [LocalMediaPlay] succeed, start StopMediaPlay now");
-		//采用新接口停止所有音视频播放
-		LocalMediaPlay::PlayService_StopPlayAllMedias_Req req1 = {};
-		LocalMediaPlay::PlayService_StopPlayAllMedias_Ans ans1 = {};
-		if (Error_Succeed == (*pClient)(EntityResource::getLink().upgradeLink())->StopPlayAllMedias(req1, ans1, 10000))
-		{
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopPlayAllMedias success");
-		}else{
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopPlayAllMedias fail");
-			pClient->GetFunction()->CloseSession();
-			pClient->SafeDelete();
-			return rc;
-		}
-		pClient->GetFunction()->CloseSession();
-	}
-	else
-	{
-		LogWarn(Severity_Low, rc, ERR_TASK_STOP_MEDIA_FAIL, "connect to entity [LocalMediaPlay] fail");
-	}
-	pClient->SafeDelete();
-	return rc;
-#else
+//#ifdef RVC_OS_WIN
+//	// 通知媒体停止播放广告和声音
+//	LocalMediaPlay::PlayService_ClientBase *pClient = new LocalMediaPlay::PlayService_ClientBase(this);
+//	ErrorCodeEnum rc = pClient->Connect();
+//	if (rc == Error_Succeed)
+//	{
+//		DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("connect to entity [LocalMediaPlay] succeed, start StopMediaPlay now");
+//		//采用新接口停止所有音视频播放
+//		LocalMediaPlay::PlayService_StopPlayAllMedias_Req req1 = {};
+//		LocalMediaPlay::PlayService_StopPlayAllMedias_Ans ans1 = {};
+//		rc = (*pClient)(EntityResource::getLink().upgradeLink())->StopPlayAllMedias(req1, ans1, 30000);
+//		if (Error_Succeed == rc )
+//		{
+//			DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopPlayAllMedias success");
+//		}else{
+//			DbgWithLink(LOG_LEVEL_WARN,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopPlayAllMedias fail, err=%d",(int)rc);
+//			pClient->GetFunction()->CloseSession();
+//			pClient->SafeDelete();
+//			return rc;
+//		}
+//		pClient->GetFunction()->CloseSession();
+//	}
+//	else
+//	{
+//		LogWarn(Severity_Low, rc, ERR_TASK_STOP_MEDIA_FAIL, "connect to entity [LocalMediaPlay] fail");
+//	}
+//	pClient->SafeDelete();
+//	return rc;
+//#else
 		// 通知媒体停止播放广告和声音
 	LocalMediaPlay::PlayService_ClientBase *pClient = new LocalMediaPlay::PlayService_ClientBase(this);
 	ErrorCodeEnum rc = pClient->Connect();
 	if (rc == Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("connect to entity [LocalMediaPlay] succeed, start StopMediaPlay now");
+		DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("connect to entity [LocalMediaPlay] succeed, start StopMediaPlay now");
 		LocalMediaPlay::PlayService_StopPlayVideo_Req req1 = {};
 		LocalMediaPlay::PlayService_StopPlayVideo_Ans ans1 = {};
 		req1.CfgInx = 1;
-		rc = (*pClient)(EntityResource::getLink().upgradeLink())->StopPlayVideo(req1, ans1, 10000);
+		rc = (*pClient)(EntityResource::getLink().upgradeLink())->StopPlayVideo(req1, ans1, 30000);
 		if (Error_Succeed == rc)
 		{
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopPlayVideo success");
+			DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopPlayVideo success");
 		}else{
-			Dbg("StopPlayVideo fail");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopPlayVideo fail, err=%d", (int)rc);
 			pClient->GetFunction()->CloseSession();
-			pClient->SafeDelete();
 			return rc;
 		}
 
 		LocalMediaPlay::PlayService_StopPlayAudio_Req req2 = {};
 		LocalMediaPlay::PlayService_StopPlayAudio_Ans ans2 = {};
-		rc = (*pClient)(EntityResource::getLink().upgradeLink())->StopPlayAudio(req2, ans2, 10000);
+		rc = (*pClient)(EntityResource::getLink().upgradeLink())->StopPlayAudio(req2, ans2, 30000);
 		if (Error_Succeed == rc)
 		{
-			Dbg("StopPlayAudio success");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopPlayAudio success");
 		}else{
-			Dbg("StopPlayAudio fail");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopPlayAudio fail, err=%d", (int)rc);
 			pClient->GetFunction()->CloseSession();
-			pClient->SafeDelete();
 			return rc;
 		}
 		pClient->GetFunction()->CloseSession();
+		return rc;
 	}
 	else
 	{
 		LogWarn(Severity_Low, rc, ERR_TASK_STOP_MEDIA_FAIL, "connect to entity [LocalMediaPlay] fail");
 		pClient->SafeDelete();
+		return rc;
 	}
-	return rc;
-#endif
+	
+//#endif
 	
 }
 SP_BEGIN_ENTITY_MAP()

+ 3 - 58
Module/mod_UpgradeMgr/mod_UpgradeMgr.h

@@ -52,12 +52,10 @@ public:
 	virtual void OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName);
 	static char GetInstallStateVal(const InstallStateEnum enumVal);
 	
-	ErrorCodeEnum RegistLocalPack(const CSimpleStringA &strPackFile);
-	DWORD RegistManualPack(const CSimpleStringA &strPackFile);
-	DWORD GetManualPacks(CSimpleStringA &strManualPacks);
-	ErrorCodeEnum CancelUpdate(const CSimpleStringA &strPackName);
+	
+
 	ErrorCodeEnum RollbackUpdate(const CSimpleStringA &strVersion);
-	ErrorCodeEnum SwitchUpgrade(const CSimpleStringA &strPack);
+	
 	ErrorCodeEnum GetUpgradeState(bool &bInstalling, CSimpleStringA &strPackFile, CSimpleStringA &strExecID,
 		char &nInstallState, bool &bSysInstall, bool &bLightPack, CSimpleStringA &strNewVersion);
 	//检测active文件是否被锁
@@ -98,36 +96,6 @@ public:
 	CUpgradeMgrSession(CUpgradeMgrEntity *pEntity) : m_pEntity(pEntity) {}
 	virtual ~CUpgradeMgrSession() {}
 
-	virtual void Handle_RegistLocalPack(SpReqAnsContext<UpgradeMgrService_RegistLocalPack_Req, UpgradeMgrService_RegistLocalPack_Ans>::Pointer ctx)
-	{
-		DbgToBeidou(ctx->link, __FUNCTION__)();
-		ErrorCodeEnum rc = m_pEntity->RegistLocalPack(ctx->Req.strPackFile);
-		ctx->Answer(rc);
-	}
-
-	virtual void Handle_RegistManualPack(SpReqAnsContext<UpgradeMgrService_RegistManualPack_Req, UpgradeMgrService_RegistManualPack_Ans>::Pointer ctx)
-	{
-		LOG_FUNCTION();
-		DbgToBeidou(ctx->link, __FUNCTION__)();
-		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("RegistManualPack received!");
-		DWORD dwRet = 0;
-		CSimpleStringA strErrmsg="RegistManualPack new UpgradeMgr is not deal with";
-		
-		dwRet = m_pEntity->RegistManualPack(ctx->Req.strPackFile);
-
-		ctx->Ans.Errcode = dwRet;
-		ctx->Ans.ErrMsg = strErrmsg;
-		ctx->Answer(Error_Succeed);
-	}
-
-	virtual void Handle_CancelUpdate(SpReqAnsContext<UpgradeMgrService_CancelUpdate_Req, UpgradeMgrService_CancelUpdate_Ans>::Pointer ctx)
-	{
-		DbgToBeidou(ctx->link, __FUNCTION__)();
-		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("CancelUpdate received!");
-		ErrorCodeEnum rc = m_pEntity->CancelUpdate(ctx->Req.strPackFile);
-		ctx->Answer(rc);
-	}
-
 	virtual void Handle_RollbackUpdate(SpReqAnsContext<UpgradeMgrService_RollbackUpdate_Req, UpgradeMgrService_RollbackUpdate_Ans>::Pointer ctx)
 	{
 		DbgToBeidou(ctx->link, __FUNCTION__)();
@@ -145,29 +113,6 @@ public:
 		ctx->Answer(rc);
 	}
 
-	virtual void Handle_SwitchUpgrade(SpReqAnsContext<UpgradeMgrService_SwitchUpgrade_Req, UpgradeMgrService_SwitchUpgrade_Ans>::Pointer ctx)
-	{
-		DbgToBeidou(ctx->link, __FUNCTION__)();
-		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("SwitchUpgrade received!");
-		auto rc = m_pEntity->SwitchUpgrade(ctx->Req.strPackFile);
-		ctx->Answer(rc);
-	}
-
-	virtual void Handle_GetManualPacks(SpReqAnsContext<UpgradeMgrService_GetManualPacks_Req, UpgradeMgrService_GetManualPacks_Ans>::Pointer ctx)
-	{
-		LOG_FUNCTION();
-		DbgToBeidou(ctx->link, __FUNCTION__)();
-		DbgWithLink(LOG_LEVEL_INFO, ctx->link.checkEmpty() ? LOG_TYPE_SYSTEM : LOG_TYPE_USER).setAPI(__FUNCTION__)("GetManualPacks received!");
-		DWORD dwRet = 0;
-		CSimpleStringA strErrmsg= "GetManualPacks new UpgradeMgr is not deal with";
-		CSimpleStringA strPackList="";
-		dwRet = m_pEntity->GetManualPacks(strPackList);
-
-		ctx->Ans.Errcode = dwRet;
-		ctx->Ans.ErrMsg = strErrmsg;
-		ctx->Answer(Error_Succeed);
-	}
-
 private:
 	CUpgradeMgrEntity *m_pEntity;
 };

+ 5 - 5
Module/mod_accessauth/AccessAuthFSM.cpp

@@ -1045,7 +1045,7 @@ CSimpleStringA CAccessAuthFSM::GetOsVersion()
 	ErrorCodeEnum eErr = GetEntityBase()->GetFunction()->GetPath("runinfo", runInfoPath);
 	if (eErr != Error_Succeed) {
 		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("GetPath runinfo error=%s.", SpStrError(eErr));
-		errInfo["getLastErr"] = GetLastError();
+		errInfo["getLastErr"] = to_string(GetLastError());
 		errMsg = generateJsonStr(errInfo).second.c_str();
 		return errMsg;
 	}
@@ -1056,7 +1056,7 @@ CSimpleStringA CAccessAuthFSM::GetOsVersion()
 	{
 		DWORD dwErr = GetLastError();
 		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("open runcfg\\osverion file failed. [%d]", dwErr);
-		errInfo["getLastErr"] = dwErr;
+		errInfo["getLastErr"] = to_string(dwErr);
 		errMsg = generateJsonStr(errInfo).second.c_str();
 		return errMsg;
 	}
@@ -1071,7 +1071,7 @@ CSimpleStringA CAccessAuthFSM::GetOsVersion()
 			continue;
 	}
 
-	errInfo["getLastErr"] = GetLastError();
+	errInfo["getLastErr"] = to_string(GetLastError());
 	errMsg = generateJsonStr(errInfo).second.c_str();
 	return errMsg;
 #else
@@ -1107,12 +1107,12 @@ void CAccessAuthFSM::GetIPandMac(CSimpleStringA& ip, CSimpleStringA& mac)
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Get sys netinfo failed!. rc=%d.", rc);
 		errInfo["errcode"] = "RTA5216";
 		errInfo["msg"] = "调用系统api获取ip失败";
-		errInfo["getLastErr"] = GetLastError();
+		errInfo["getLastErr"] = to_string(GetLastError());
 		ip = generateJsonStr(errInfo).second.c_str();
 
 		errInfo["errcode"] = "RTA5217";
 		errInfo["msg"] = "调用系统api获取mac地址失败";
-		errInfo["getLastErr"] = GetLastError();
+		errInfo["getLastErr"] = to_string(GetLastError());
 		mac = generateJsonStr(errInfo).second.c_str();
 
 		auto pEntity = (CAccessAuthEntity*)m_pEntity;

+ 9 - 9
Module/mod_accessauth/mod_AccessAuth.cpp

@@ -782,7 +782,7 @@ ErrorCodeEnum CAccessAuthEntity::GetPinPadModel(CSimpleStringA& pinpadModel, boo
 
 		errInfo["errcode"] = "RTA5204";
 		errInfo["msg"] = "PinPad超时未打开";
-		errInfo["getLastErr"] = GetLastError();
+		errInfo["getLastErr"] = to_string(GetLastError());
 		pinpadModel = generateJsonStr(errInfo).second.c_str();
 
 	}
@@ -797,7 +797,7 @@ ErrorCodeEnum CAccessAuthEntity::GetPinPadModel(CSimpleStringA& pinpadModel, boo
 
 		errInfo["errcode"] = "RTA5218";
 		errInfo["msg"] = "PinPad打开失败";
-		errInfo["getLastErr"] = GetLastError();
+		errInfo["getLastErr"] = to_string(GetLastError());
 		pinpadModel = generateJsonStr(errInfo).second.c_str();
 	}
 	else if(rc != Error_Succeed)
@@ -811,7 +811,7 @@ ErrorCodeEnum CAccessAuthEntity::GetPinPadModel(CSimpleStringA& pinpadModel, boo
 
 		errInfo["errcode"] = "RTA5205";
 		errInfo["msg"] = "连接PinPad取数据异常";
-		errInfo["getLastErr"] = GetLastError();
+		errInfo["getLastErr"] = to_string(GetLastError());
 		pinpadModel = generateJsonStr(errInfo).second.c_str();
 	}
 
@@ -1347,7 +1347,7 @@ void CAccessAuthEntity::GetHardWareInfo()
 		{
 			errInfo["errcode"] = "RTA5213";
 			errInfo["msg"] = "调用系统api获取CPU序号失败";
-			errInfo["getLastErr"] = GetLastError();
+			errInfo["getLastErr"] = to_string(GetLastError());
 			m_cpuId = generateJsonStr(errInfo).second.c_str();
 
 			m_iGetTermSysInfo = -1;
@@ -1373,7 +1373,7 @@ void CAccessAuthEntity::GetHardWareInfo()
 		{
 			errInfo["errcode"] = "RTA5214";
 			errInfo["msg"] = "调用系统api获取主板ID号失败";
-			errInfo["getLastErr"] = GetLastError();
+			errInfo["getLastErr"] = to_string(GetLastError());
 			m_mainBoardId = generateJsonStr(errInfo).second.c_str();
 
 			m_iGetTermSysInfo = -1;
@@ -1400,7 +1400,7 @@ void CAccessAuthEntity::GetHardWareInfo()
 		{
 			errInfo["errcode"] = "RTA5215";
 			errInfo["msg"] = "调用系统api获取硬盘ID号失败";
-			errInfo["getLastErr"] = GetLastError();
+			errInfo["getLastErr"] = to_string(GetLastError());
 			m_hardDiskId = generateJsonStr(errInfo).second.c_str();
 
 			m_iGetTermSysInfo = -1;
@@ -1434,7 +1434,7 @@ void CAccessAuthEntity::GetHardWareInfo()
 		{
 			errInfo["errcode"] = "RTA5213";
 			errInfo["msg"] = "调用系统api获取CPU序号失败";
-			errInfo["getLastErr"] = GetLastError();
+			errInfo["getLastErr"] = to_string(GetLastError());
 			m_cpuId = generateJsonStr(errInfo).second.c_str();
 
 			m_iGetTermSysInfo = -1;
@@ -1461,7 +1461,7 @@ void CAccessAuthEntity::GetHardWareInfo()
 		{
 			errInfo["errcode"] = "RTA5214";
 			errInfo["msg"] = "调用系统api获取主板ID号失败";
-			errInfo["getLastErr"] = GetLastError();
+			errInfo["getLastErr"] = to_string(GetLastError());
 			m_mainBoardId = generateJsonStr(errInfo).second.c_str();
 
 			m_iGetTermSysInfo = -1;
@@ -1489,7 +1489,7 @@ void CAccessAuthEntity::GetHardWareInfo()
 		{
 			errInfo["errcode"] = "RTA5215";
 			errInfo["msg"] = "调用系统api获取硬盘ID号失败";
-			errInfo["getLastErr"] = GetLastError();
+			errInfo["getLastErr"] = to_string(GetLastError());
 			m_hardDiskId = generateJsonStr(errInfo).second.c_str();
 
 			m_iGetTermSysInfo = -1;

+ 2 - 1
Module/mod_alarm/AlarmFSM.cpp

@@ -323,7 +323,8 @@ void AlarmFSM::s0_on_entry()
 {
 	if(!m_initAlarm){
 		m_initAlarm=true;
-		LogWarn(Severity_Low,Error_Exception,WARN_ALARM_START_NEW_MODE,CSimpleStringA::Format("init alarm new model,model=%d",m_CenterModel));
+		//LogWarn(Severity_Low,Error_Exception,WARN_ALARM_START_NEW_MODE,CSimpleStringA::Format("init alarm new model,model=%d",m_CenterModel));
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("init alarm new model,model=%d", m_CenterModel);
 	}
 
 	//新模式

+ 13 - 7
Module/mod_cardissuerstore/CardIssuerStoreFSM.cpp

@@ -14,6 +14,7 @@
 #pragma comment(lib, "libpublicFun.lib")
 #include <algorithm>
 #include <map>
+#include <list>
 #ifdef RVC_OS_WIN
 #define _ATL_NO_AUTOMATIC_NAMESPACE
 #include <atltime.h>
@@ -2965,7 +2966,12 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStoreService_Read
 				else
 				{
 					//既没有读到磁条,又不是IC,很大概率是插反了
-					LogWarn(Severity_Low, Error_Unexpect, CardIssuerStore_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了");
+					if (m_issueStatus) {
+						LogWarn(Severity_Low, Error_Unexpect, CardIssuerStore_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了,m_issueStatus=1");
+					}
+					else {
+						LogWarn(Severity_Low, Error_Unexpect, CardIssuerStore_UserErrorCode_Maybe_InsertCard_InWrongStyle, "<ReadCard>, 既没读到磁条,又没检测到IC,可能插反了,m_issueStatus=0");
+					}
 					if (m_issueStatus)
 					{
 						m_mixedEx[m_currentHopper - 1]++;
@@ -3015,7 +3021,7 @@ int CCardIssuerFSM::ReadCard_Contact(SpReqAnsContext<CardIssuerStoreService_Read
 			return 1;
 	}
 	bICOK = true;
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040222003")("ReadCard suc. cardType:%d", ctx->Ans.ICType);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040222003")("ReadCard suc. cardType:%d. m_issueStatus:%d", ctx->Ans.ICType, m_issueStatus);
 	return 0;
 }
 int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerStoreService_Read_Req, CardIssuerStoreService_Read_Ans>::Pointer ctx)
@@ -3274,7 +3280,7 @@ int CCardIssuerFSM::ReadCard_RF(SpReqAnsContext<CardIssuerStoreService_Read_Req,
 		else
 			return 1;
 	}
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040222003")("ReadCard suc. cardType:%d", ctx->Ans.ICType);
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040222003")("ReadCard suc. cardType:%d. m_issueStatus:%d", ctx->Ans.ICType, m_issueStatus);
 	return 0;
 }
 int CCardIssuerFSM::PreOnline(SpReqAnsContext<CardIssuerStoreService_PreOnline_Req, CardIssuerStoreService_PreOnline_Ans>::Pointer ctx)
@@ -3397,7 +3403,7 @@ int CCardIssuerFSM::PreOnline_Contact(SpReqAnsContext<CardIssuerStoreService_Pre
 		else {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MoveCardFromSlot").setCostTime(l_endTime - l_beginTime)("PreOnline_Contact::MoveCardFromSlot");
 		}
-		LogWarn(Severity_Low, Error_Succeed, CardIssuerStore_UserErrorCode_MoveCardFromSlot, "PreOnline_Contact MoveCardFromSlot suc.");
+		//LogWarn(Severity_Low, Error_Succeed, CardIssuerStore_UserErrorCode_MoveCardFromSlot, "PreOnline_Contact MoveCardFromSlot suc.");
 		CardNo card;
 		ZeroMemory(card.account, sizeof(card.account));
 		ZeroMemory(card.track2, sizeof(card.track2));
@@ -6073,7 +6079,7 @@ int CCardIssuerFSM::AddCardToStoreStepFirst(SpReqAnsContext<CardIssuerStoreServi
 	m_addCardSerial = "";
 	ErrorCodeEnum eErr = Error_Unexpect;
 	long l_beginTime, l_endTime;
-	LogWarn(Severity_Low, Error_Unexpect, CardIssuerStore_UserErrorCode_AddCardToStoreStepFirst, "AddCardToStoreStepFirst");
+	//LogWarn(Severity_Low, Error_Unexpect, CardIssuerStore_UserErrorCode_AddCardToStoreStepFirst, "AddCardToStoreStepFirst");
 	l_beginTime = GetTickCountRVC();
 	eErr = m_hDevHelper->MoveCard(CI_MOVECARD_FROM_HOPPER,99);
 	l_endTime = GetTickCountRVC();
@@ -6442,7 +6448,7 @@ void CCardIssuerFSM::AfterPreOnlineOnStore(ErrorCodeEnum err, const int slot)
 		if (eErr == Error_Succeed)
 		{
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MoveCardToSlot").setCostTime(l_endTime - l_beginTime)("AfterPreOnlineOnStore::MoveCardToSlot, slot:%d", slot);
-			LogWarn(Severity_Low, Error_Succeed, CardIssuerStore_UserErrorCode_MoveCardToSlot, "AfterPreOnlineOnStore MoveCardToSlot suc.");
+			//LogWarn(Severity_Low, Error_Succeed, CardIssuerStore_UserErrorCode_MoveCardToSlot, "AfterPreOnlineOnStore MoveCardToSlot suc.");
 			m_cardPos = 1;
 		}
 		else
@@ -10903,7 +10909,7 @@ int CCardIssuerFSM::QuickSelfCheckImpl()
 			ret = 0;
 		}
 		pClient->GetFunction()->CloseSession();
-		pClient->SafeDelete();
+		//pClient->SafeDelete();
 		return ret;
 	}
 	else {

+ 1 - 0
Module/mod_chromium/CMethodInterface.h

@@ -8,6 +8,7 @@ namespace Chromium {
 	class CMedthodInterface {
 	public:
 		bool m_forceNewReturn;
+		std::string mEntityName;
 		std::string mMethodName;
 		std::string mMethodType;
 		CTransStruct mRequestInterpreter;

+ 24 - 10
Module/mod_chromium/CModTools.cpp

@@ -408,8 +408,18 @@ namespace Chromium {
 		if (stopAll)
 			killAllChromium();
 		else
-			LogWarn(Severity_Low, Error_NotSupport, LOG_WARN_CHROMIUM_NOT_SUPPORT_TOKILL_SPECIFIED_BROWSER,
-					CSimpleStringA::Format("StopChromiumBrowser: %s", reason._to_string()));
+		{
+			CSimpleStringA strBasePath(true);
+			this->m_pEntity->GetFunction()->GetPath("BaseDir", strBasePath);
+			std::string strPath(strBasePath.GetData());
+			std::string stopBrowser_path = "sudo " + strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "stopBrowser.sh";
+			stopBrowser_path.append(" --vtm_browser_type=").append(reason._to_string());
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("StopChromiumBrowser cmdline:%s", stopBrowser_path.c_str());
+			do {
+				boost::process::child child_process(stopBrowser_path);
+				child_process.wait();
+			} while (false);
+		}
 #endif //_MSC_VER
 	}
 
@@ -599,8 +609,8 @@ namespace Chromium {
 		CSimpleStringA strBasePath(true);
 		this->m_pEntity->GetFunction()->GetPath("BaseDir", strBasePath);
 		std::string strPath(strBasePath.GetData());
-		const std::string execute_newbrowser_path = strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startBrower.sh";
-		const std::string execute_oldbrowser_path = strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startUOSBrower.sh";
+		const std::string execute_newbrowser_path = "sudo " + strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startBrower.sh";
+		const std::string execute_oldbrowser_path = "sudo " + strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startUOSBrower.sh";
 		CSimpleStringA strParams(true);
 		if (width > 0 && height > 0)
 			strParams.Append(" --window-size=").Append(std::to_string(width).c_str()).Append(",").Append(std::to_string(height).c_str());
@@ -669,6 +679,7 @@ namespace Chromium {
 			CSimpleStringA usrDataPath(tempPath);
 			usrDataPath.Append(SPLIT_SLASH_STR).Append("UOSBrowserConfig_").Append(name.c_str());
 			strParams.Append(" --user-data-dir=").Append(usrDataPath);
+			strParams.Append(" --vtm_browser_type=").Append(name.c_str());
 
 			CSimpleStringA debug_log_path = usrDataPath + "/chrome_debug.log";
 			if (ConfigManager::getInstance().m_withDebugMode)
@@ -706,6 +717,7 @@ namespace Chromium {
 			CSimpleStringA usrDataPath(tempPath);
 			usrDataPath.Append(SPLIT_SLASH_STR).Append("BrowserConfig_").Append(name.c_str());
 			strParams.Append(" --user-data-dir=").Append(usrDataPath);
+			strParams.Append(" --vtm_browser_type=").Append(name.c_str());
 			CSimpleStringA debug_log_path = usrDataPath + "/chrome_debug.log";
 			if (ConfigManager::getInstance().m_withDebugMode)
 				strParams.Append(" --enable-logging --vmodule=*/webrtc/*=2,*/media/*=2 --log-file=").Append(debug_log_path);
@@ -787,11 +799,11 @@ namespace Chromium {
         CSimpleStringA strBasePath(true);
         this->m_pEntity->GetFunction()->GetPath("BaseDir", strBasePath);
         std::string strPath(strBasePath.GetData());
-        const std::string execute_newbrowser_path = strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startBrower.sh";
-        const std::string execute_oldbrowser_path = strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startUOSBrower.sh";
+        const std::string execute_newbrowser_path = "sudo " + strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startBrower.sh";
+        const std::string execute_oldbrowser_path = "sudo " + strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startUOSBrower.sh";
 
 		std::string name = "";
-		if (pageType == 0 || pageType == 2 || pageType == 3) {
+		if (pageType == 0) {
 			name = (+ERR_PAGE_REASON::main)._to_string();
 		}
 		else if (pageType == 1) {
@@ -891,6 +903,7 @@ namespace Chromium {
                 usrDataPath.Append(CSimpleStringA(SPLIT_SLASH_STR)).Append("UOSBrowserConfigMain_").Append((+ERR_PAGE_REASON::OutsideRequest)._to_string());
             }
             strParams.Append(" --user-data-dir=").Append(usrDataPath);
+			strParams.Append(" --vtm_browser_type=").Append(name.c_str());
 
 			CSimpleStringA debug_log_path = usrDataPath + "/chrome_debug.log";
 			if (ConfigManager::getInstance().m_withDebugMode)
@@ -967,6 +980,7 @@ namespace Chromium {
                 cachePath.Append(CSimpleStringA(SPLIT_SLASH_STR)).Append("BrowserConfigMain_").Append((+ERR_PAGE_REASON::OutsideRequest)._to_string());
             }
             strParams.Append(" --user-data-dir=").Append(usrDataPath);
+			strParams.Append(" --vtm_browser_type=").Append(name.c_str());
 			CSimpleStringA debug_log_path = usrDataPath + "/chrome_debug.log";
 			if (ConfigManager::getInstance().m_withDebugMode)
 				strParams.Append(" --enable-logging --vmodule=*/webrtc/*=2,*/media/*=2 --log-file=").Append(debug_log_path);
@@ -1138,7 +1152,7 @@ namespace Chromium {
 			if (!checkRet.first)
 			{
 				LogWarn(Severity_High, Error_NetBroken, LOG_WARN_CHROMIUM_INSTALL_URLS_CHECK,
-					CSimpleString::Format("install page check err, can not connect to %s or %s", installUrls[0].c_str(), installUrls[1].c_str()).GetData());
+					CSimpleString::Format("install page check err, can not connect to %s", installUrls[0].c_str()));
 			}
 			std::string dstInstallUrl = checkRet.first ? checkRet.second : installUrls[0];
 			CSimpleString runningVer = "";
@@ -1450,8 +1464,8 @@ namespace Chromium {
         CSimpleStringA strBasePath(true);
         this->m_pEntity->GetFunction()->GetPath("BaseDir", strBasePath);
         std::string strPath(strBasePath.GetData());
-        const std::string execute_newbrowser_path = strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startBrower.sh";
-        const std::string execute_oldbrowser_path = strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startUOSBrower.sh";
+        const std::string execute_newbrowser_path = "sudo " + strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startBrower.sh";
+        const std::string execute_oldbrowser_path = "sudo " + strPath + SPLIT_SLASH_STR + "res" + SPLIT_SLASH_STR + "RunScript" + SPLIT_SLASH_STR + "startUOSBrower.sh";
 
 		int result(0);
 		std::string additional("");

+ 4 - 3
Module/mod_chromium/CStructureInterpreter.cpp

@@ -45,6 +45,8 @@ namespace Chromium {
 		std::string strEntityName = pEntity->Attribute("name");
 		std::vector<CMedthodInterface> messageInterface;
 		this->loadMessageInterface(messageInterface, pEntity);
+		for (auto &it : messageInterface)
+			it.mEntityName = strEntityName;
 		this->mMessageStructureMap.insert(std::pair<std::string, std::vector<CMedthodInterface>>(strEntityName, messageInterface));
 		// get class node
 		tinyxml2::XMLElement* pClass = pEntity->FirstChildElement("class");
@@ -53,6 +55,8 @@ namespace Chromium {
 		std::string strClassName = pClass->Attribute("name");
 		std::map<int, CMedthodInterface> functionInterface;
 		this->loadFunctionInterface(functionInterface, pClass);
+		for (auto &it : functionInterface)
+			it.second.mEntityName = strEntityName;
 		m_inServiceEntity.insert(strEntityName);
 		this->mMethodStructureMap.insert(std::pair<std::string, std::map<int, CMedthodInterface>>(strEntityName.append(strClassName), functionInterface));
 		
@@ -96,9 +100,6 @@ namespace Chromium {
 				functionInterface.insert(std::pair<int, CMedthodInterface>(i, method));
 			}
 			
-			
-
-
 			//		functionInterface.emplace_back(method);
 			element = element->NextSiblingElement();
 		}

+ 2 - 0
Module/mod_chromium/CWSCodec.cpp

@@ -682,6 +682,8 @@ namespace Chromium {
 				free(str);
 				return s;
 			}
+			if(iter->second->size() > 0)
+				msgInfo.entityName = iter->second->at(0).mEntityName;
 			DeserializeEvent(msg, iter->second, rpos, ret, isSafe);
 		}
 

+ 12 - 8
Module/mod_chromium/CWebsocketServer.cpp

@@ -1297,17 +1297,20 @@ namespace Chromium {
 		}
 		else
 		{
+			/*
 			if (ConfigManager::getInstance().m_withLinkLog)
 				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("WebSocket Search message_from_socket : json = %s", js.c_str());
 			else if (messageType != MessageType::RequestAck && messageType != MessageType::Event)//do not upload message which messageType equals to RequestAck or Event
 				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("WebSocket Search message_from_socket : json = %s", js.c_str());
+			*/
 			if (js.empty())
 			{
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("string empty");
 				return;
 			}
-			if (ConfigManager::getInstance().m_connection_hdls.empty() && ConfigManager::getInstance().m_connection_ws_sm2_hdls.empty())
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("message_from_socket : no websocket client connection");
+			if (ConfigManager::getInstance().m_connection_hdls.empty() && ConfigManager::getInstance().m_connection_ws_sm2_hdls.empty() && messageType != MessageType::Event)
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)
+					("message_from_socket : no websocket client connection, messageType:%s", GetMessageTypeString(messageType));
 			else {
 #if(defined _WIN32 || defined _WIN64)
 				js = string_to_utf8(js);
@@ -1331,12 +1334,13 @@ namespace Chromium {
 		// get message from socket and deserialize 
 		// then send back to the web client
 		auto bufferLength = msg.getBufferLength();
+		
 		/*
 		if (bufferLength > MAX_TRANSFER_LEN)
-			DbgEx("WebSocket Search message_from_socket : buffer len = %d, buffer pre50:%s", msg.getBufferLength(), msg.printfHEX(50).c_str());
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("WebSocket Search message_from_socket : buffer len = %d, buffer pre50:%s", msg.getBufferLength(), msg.printfHEX(50).c_str());
 		else
 			receivehexdump(msg.getPayload(), msg.getLength());
-			*/
+		*/
 		//else
 		//	DbgEx("WebSocket Search message_from_socket : buffer len = %d", msg.getBufferLength());
 
@@ -1384,14 +1388,14 @@ namespace Chromium {
 				unaccurate_js = js;
 			}
 			auto signatureID = msg.getSignatureID();
-			auto sessionId = msg.getSessionID();
-			auto sessionEntityName = EntitySessionManager::FromSessionIdToEntityName(sessionId);
+			auto sessionId = cur_from_socket.sessionId;
+			auto sessionEntityName = cur_from_socket.entityName;
 			if (sendArr.size() == 0)
-				LogManager::getInstance().logVtmEvent(-1, -1, sessionId, sessionEntityName.second, 0, "send", sendArr,
+				LogManager::getInstance().logVtmEvent(-1, -1, sessionId, sessionEntityName, 0, "send", sendArr,
 					cur_from_socket.payLoad, cur_from_socket.msgBytes, Error_NotExist, "message_from_socket event sendArr.size() == 0");
 			else if (signatureID != eMsgSig_LogInfo && signatureID != eMsgSig_EntityStatus && signatureID != eMsgSig_PerformanceList)//fiter guiconsole msg
 			{
-				LogManager::getInstance().logVtmEvent(-1, -1, sessionId, sessionEntityName.second, 0, "send", sendArr,
+				LogManager::getInstance().logVtmEvent(-1, -1, sessionId, sessionEntityName, 0, "send", sendArr,
 					cur_from_socket.payLoad, cur_from_socket.msgBytes);
 				/*
 #ifdef DEVOPS_ON_ST 

+ 3 - 33
Module/mod_chromium/mod_chromium.cpp

@@ -872,16 +872,8 @@ namespace Chromium {
 
 				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();
 				return;
 			}
@@ -993,9 +985,6 @@ namespace Chromium {
 		{
 			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();
@@ -1004,16 +993,9 @@ namespace Chromium {
 				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");
@@ -1036,22 +1018,10 @@ namespace Chromium {
 		{
 			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))

+ 122 - 168
Module/mod_gpio/GpioFSM.cpp

@@ -8,6 +8,7 @@ const int INPUT_PORT_2 = 2;
 const int MAX_MOVE_HOLD_TIMES = 5000;
 const int ON_EVENT_DETECT_TIMOUE_MILLSECS = 500;
 const int REPEAT_FIRE_TIMEOUT_VALUE = 10000; //10s
+const int REPEAT_FIRE_TIMEOUT_TIMES = (REPEAT_FIRE_TIMEOUT_VALUE / ON_EVENT_DETECT_TIMOUE_MILLSECS);
 const int TRY_FILED_TIMES_VALUE = 10;
 
 #define SETBIT(x,y) x|=(1<<(y))
@@ -258,7 +259,6 @@ CGPIOFSM::CGPIOFSM(void) :m_ePickUpFlag(UnknownStatus),m_bVibrationFlag(false),
 
 ErrorCodeEnum CGPIOFSM::OnInit()
 {
-	LOG_FUNCTION();
 	ErrorCodeEnum erroCode = Error_Succeed, eErrDev = Error_Succeed;
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Source Code complied at: %s %s", __DATE__, __TIME__);
 	auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
@@ -268,13 +268,12 @@ ErrorCodeEnum CGPIOFSM::OnInit()
 	CSimpleStringA strNoUse(true);
 	erroCode = pEntity->ExtractVendorLibFullPath(strNoUse);
 	if (erroCode != Error_Succeed) {
+		//TODO: RTA  [Gifur@202577]
 		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("load vendor dll or so(%s) failed, ec=%s", strNoUse.GetData(), SpStrError(erroCode));
 		SetDevInitingFlag(false);
 		return Error_DevLoadFileFailed;
 	}
-
 	FulfillAdapterInfoFrom(pEntity->vendorLibInfo);
-	LogWarn(Severity_Low, Error_Unexpect, GPIO_UserErrorCode_RootInfo, (LPCTSTR)m_adapterInfo.adapterFilePath);
 	erroCode = LoadUpAdapterLibrary();
 	if (erroCode != Error_Succeed) {
 		SetDevInitingFlag(false);
@@ -294,24 +293,22 @@ ErrorCodeEnum CGPIOFSM::OnInit()
 		m_bNewVersion = TRUE;
 		initParam.dwPortNum = 4;
 		initParam.dir[3] = true;
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("New available 4 port num");
 	}
 
-	int initTries = 0;
-	ErrorCodeEnum err;
 	do {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to open device...port(%d), baudrate(%d).", m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt());
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to open device...port: % d, baudrate : % d, portnum : % d",
+			m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt(), m_adapterInfo.GetPortNumInt());
 		ULONGLONG ullStart = SP::Module::Comm::RVCGetTickCount();
-		err = m_hDevHelper->DevOpen(initParam);
+		erroCode = m_hDevHelper->DevOpen(initParam);
 		ULONGLONG ullEnd = SP::Module::Comm::RVCGetTickCount();
-		if (err == Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").setCostTime(ullEnd - ullStart)("open device succ");
+		if (erroCode == Error_Succeed) {
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::DevOpen").setCostTime(ullEnd - ullStart)();
 			DevCategoryInfo devCatInfo;
 			ZeroMemory(devCatInfo.szModel, sizeof(devCatInfo.szModel));
 			ZeroMemory(devCatInfo.szType, sizeof(devCatInfo.szType));
 			ZeroMemory(devCatInfo.szVendor, sizeof(devCatInfo.szVendor));
 			ullStart = SP::Module::Comm::RVCGetTickCount();
-			err = m_hDevHelper->GetDevCategory(devCatInfo);
+			ErrorCodeEnum err = m_hDevHelper->GetDevCategory(devCatInfo);
 			ullEnd = SP::Module::Comm::RVCGetTickCount();
 			if (err == Error_Succeed) {
 				m_adapterInfo.FulfillCategoryInfo(devCatInfo);
@@ -327,37 +324,31 @@ ErrorCodeEnum CGPIOFSM::OnInit()
 				SetErrorAndLog(err, GPIO_UserErrorCode_GetDevCategory_Failed, "DevAdapter::GetDevCategory", "FulfillAdapterDevCategory", false, ullEnd - ullStart);
 			}
 			SetDevInitFlag(true);
-			break;
 		}
 		else {
-			SetErrorAndLog(err, GPIO_UserErrorCode_DevOpen_Failed, "DevAdapter::DevOpen", __FUNCTION__, false, ullEnd - ullStart);
-			Sleep(300);
-			initTries++;
-			continue;
+			SetErrorAndLog(erroCode, GPIO_UserErrorCode_DevOpen_Failed, "DevAdapter::DevOpen", __FUNCTION__, false, ullEnd - ullStart,"",
+				CSimpleStringA::Format("{\"port\":%d, \"baudrate\":%d, \"portnum\":%d}", m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt(), m_adapterInfo.GetPortNumInt()));
 		}
-	} while (initTries < MAX_GPIO_INIT_TRIES);
+	} while (false);
 
-	if (!GetDevInitFlag()) {
-		err = Error_DevConnFailed;
-	}
-	else {
+	if (GetDevInitFlag()) {
 		if (!m_bFuncVer2) {
 			ULONGLONG ullStart = SP::Module::Comm::RVCGetTickCount();
 			eErrDev = m_hDevHelper->WritePort(0, 0x00);
 			ULONGLONG ullEnd = SP::Module::Comm::RVCGetTickCount();
 			if (eErrDev != Error_Succeed)
-				SetErrorAndLog(eErrDev, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, false, ullEnd - ullStart, "", CombineJsonContext("WritePort(0) after DevOpen"));
+				SetErrorAndLog(eErrDev, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, false, ullEnd - ullStart, "", CombineJsonContext("ResetPort0 after DevOpen"));
 			ullStart = SP::Module::Comm::RVCGetTickCount();
 			eErrDev = m_hDevHelper->WritePort(1, 0x00);
 			ullEnd = SP::Module::Comm::RVCGetTickCount();
 			if (eErrDev != Error_Succeed)
-				SetErrorAndLog(eErrDev, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, false, ullEnd - ullStart, "", CombineJsonContext("WritePort(1) after DevOpen"));
+				SetErrorAndLog(eErrDev, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, false, ullEnd - ullStart, "", CombineJsonContext("ResetPort1 after DevOpen"));
 			if (m_bNewVersion) {
 				ullStart = SP::Module::Comm::RVCGetTickCount();
 				eErrDev = m_hDevHelper->WritePort(3, 0x00);
 				ullEnd = SP::Module::Comm::RVCGetTickCount();
 				if (eErrDev != Error_Succeed)
-					SetErrorAndLog(eErrDev, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, false, ullEnd - ullStart, "", CombineJsonContext("WritePort(3) after DevOpen"));
+					SetErrorAndLog(eErrDev, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, false, ullEnd - ullStart, "", CombineJsonContext("ResetPort3 after DevOpen"));
 			}
 		}
 		else {
@@ -366,16 +357,13 @@ ErrorCodeEnum CGPIOFSM::OnInit()
 			eErrDev = m_hDevHelper->SetStatus(GPIO_DEV_SN_LIGHT_SENSOR_ALL, GPIO_DEV_LIGHT_MODE_RESET);
 			ULONGLONG ullEnd = SP::Module::Comm::RVCGetTickCount();
 			if (eErrDev != Error_Succeed)
-				SetErrorAndLog(eErrDev, GPIO_UserErrorCode_SetStatus_Failed, "DevAdapter::SetStatus", __FUNCTION__, false, ullEnd - ullStart, "", CombineJsonContext("SetStatus after DevOpen"));
+				SetErrorAndLog(eErrDev, GPIO_UserErrorCode_SetStatus_Failed, "DevAdapter::SetStatus", __FUNCTION__, false, ullEnd - ullStart, "", CombineJsonContext("ResetStatus after DevOpen"));
 #endif //RVC_OS_LINUX
 		}
 		SetDevState(DEVICE_STATUS_NORMAL);
 	}
 	SetDevInitingFlag(false);
-	m_moveHoldTimes = MAX_MOVE_HOLD_TIMES;//oiltmp about 5000*300ms = 25 minutes
-	m_moveDisappearTimes = m_moveHoldTimes;
-	return err;
-
+	return erroCode;
 }
 
 void CGPIOFSM::AfterInit()
@@ -457,105 +445,100 @@ void CGPIOFSM::OnLogEvent(DWORD dwUserCode)
 	switch (dwUserCode) {
 	case LOG_EVT_CARDISSUER_GREEN_ON:
 	case LOG_EVT_CARDISSUER_STORE_GREEN_ON:
+		Req.devseq = CARDREADER;
+		Req.mode = 1; //flick
+		break;
+	case LOG_EVT_CARDISSUER_GREEN_OFF:
+	case LOG_EVT_CARDISSUER_STORE_GREEN_OFF:
 		Req.devseq = CARDREADER;
 		Req.mode = 1;
+		Req.close = 1;
 		break;
 	case LOG_EVT_CARDISSUER_RED_ON:
 		Req.devseq = CARDREADER_RED;
-		Req.mode = 1;
+		Req.mode = 0; //substain
+		break;
+	case LOG_EVT_CARDISSUER_RED_OFF:
+		Req.devseq = CARDREADER_RED;
+		Req.mode = 0; //substain
+		Req.close = 1;
 		break;
 	case LOG_EVT_IDCERTIFICATE_GREEN_ON:
+		Req.devseq = IDCERTIFICATE;
+		Req.mode = 1; //flick
+		break;
+	case LOG_EVT_IDCERTIFICATE_GREEN_OFF:
 		Req.devseq = IDCERTIFICATE;
 		Req.mode = 1;
+		Req.close = 1;
 		break;
 	case LOG_EVT_FINGERPRINT_GREEN_ON:
+		Req.devseq = FINGERPRINT;
+		Req.mode = 1; //flick
+		break;
+	case LOG_EVT_FINGERPRINT_GREEN_OFF:
 		Req.devseq = FINGERPRINT;
 		Req.mode = 1;
+		Req.close = 1;
 		break;
 	case LOG_EVT_PINPAD_GREEN_ON:
 		Req.devseq = PINPAD;
-		Req.mode = 1;
-		break;
-	case LOG_EVT_HEADLIGHT_GREEN_ON:
-		Req.devseq = HEADLIGHT;
-		Req.mode = 0;
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("machine light on");
+		Req.mode = 1; //flick
 		break;
-	case LOG_EVT_HEADLIGHT_RED_ON:
-		Req.devseq = HEADLIGHT_RED;
+	case LOG_EVT_PINPAD_GREEN_OFF:
+		Req.devseq = PINPAD;
 		Req.mode = 1;
+		Req.close = 1;
 		break;
 	case LOG_EVT_CONTACTLESS_CARD_GREEN_ON:
 		Req.devseq = CONTACTLESSCARD;
-		Req.mode = 1;
-		break;
-	case LOG_EVT_IEBROWSER_LIGHT_ASSISTANT_ON:
-		Req.devseq = HEADLIGHT_ASSIST;
-		Req.mode = 1;
+		Req.mode = 1; //flick
 		break;
-	case LOG_EVT_CARDISSUER_GREEN_OFF:
-	case LOG_EVT_CARDISSUER_STORE_GREEN_OFF:
-		Req.devseq = CARDREADER;
-		Req.mode = 1;
-		Req.close = 1;
-		break;
-	case LOG_EVT_CARDISSUER_RED_OFF:
-		Req.devseq = CARDREADER_RED;
+	case LOG_EVT_CONTACTLESS_CARD_GREEN_OFF:
+		Req.devseq = CONTACTLESSCARD;
 		Req.mode = 1;
 		Req.close = 1;
 		break;
-	case LOG_EVT_IDCERTIFICATE_GREEN_OFF:
-		Req.devseq = IDCERTIFICATE;
-		Req.mode = 1;
-		Req.close = 1;
+	case LOG_EVT_HSPS_LIGHT_ON:
+		Req.devseq = HSPSCANNER;
+		Req.mode = 0; //substain
 		break;
-	case LOG_EVT_FINGERPRINT_GREEN_OFF:
-		Req.devseq = FINGERPRINT;
-		Req.mode = 1;
+	case LOG_EVT_HSPS_LIGHT_OFF:
+		Req.devseq = HSPSCANNER;
+		Req.mode = 0;
 		Req.close = 1;
 		break;
-	case LOG_EVT_PINPAD_GREEN_OFF:
-		Req.devseq = PINPAD;
-		Req.mode = 1;
-		Req.close = 1;
+	case LOG_EVT_HEADLIGHT_GREEN_ON:
+		Req.devseq = HEADLIGHT;
+		Req.mode = 0; //substain
 		break;
 	case LOG_EVT_HEADLIGHT_GREEN_OFF:
 		Req.devseq = HEADLIGHT;
-		Req.mode = 1;
+		Req.mode = 0;
 		Req.close = 1;
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("machine light off");
+		break;
+	case LOG_EVT_HEADLIGHT_RED_ON: //TODO: 有请求调用吗?  [Gifur@202578]
+		Req.devseq = HEADLIGHT_RED;
+		Req.mode = 0; //substain
 		break;
 	case LOG_EVT_HEADLIGHT_RED_OFF:
 		Req.devseq = HEADLIGHT_RED;
-		Req.mode = 1;
+		Req.mode = 0;
 		Req.close = 1;
 		break;
-	case LOG_EVT_CONTACTLESS_CARD_GREEN_OFF:
-		Req.devseq = CONTACTLESSCARD;
-		Req.mode = 1;
-		Req.close = 1;
+	case LOG_EVT_IEBROWSER_LIGHT_ASSISTANT_ON:
+		Req.devseq = HEADLIGHT_ASSIST;
+		Req.mode = 1; //flick
 		break;
 	case LOG_EVT_IEBROWSER_LIGHT_ASSISTANT_OFF:
 		Req.devseq = HEADLIGHT_ASSIST;
 		Req.mode = 1;
 		Req.close = 1;
 		break;
-	case LOG_EVT_HSPS_LIGHT_ON:
-		Req.devseq = HSPSCANNER;
-		Req.mode = 1;
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("hspscanner light on");
-		break;
-	case LOG_EVT_HSPS_LIGHT_OFF:
-		Req.devseq = HSPSCANNER;
-		Req.mode = 1;
-		Req.close = 1;
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("hspscanner light off");
-		break;
 	default:
 		return;
 	}
-
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("devseq[%d],mode[%d]close[%d]", Req.devseq, Req.mode, Req.close);
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("{\"devseq\":\"%s\",\"mode\":%d,\"close\": %d}", GetLightSeqString(Req.devseq), Req.mode, Req.close);
 	if (Req.devseq >= 0) {
 		if (!Req.close) {
 			if (m_bLightStatus[Req.devseq]) {
@@ -580,63 +563,49 @@ void CGPIOFSM::OnLogEvent(DWORD dwUserCode)
 }
 
 //老接口,用于控制灯
-bool CGPIOFSM::SetOutDriving(GpioSet_Info req, OutDrivingInfo od, ULONG iIndex, ULONG pinSeq)
+bool CGPIOFSM::SetOutDriving(GpioSet_Info req, OutDrivingInfo od)
 {
 	int ret(-1);
 	if (req.close == 1) {
-		GetEntityBase()->GetFunction()->KillTimer(req.devseq);
-		if (pinSeq == PIN_HSPSCANNER_PREVIEW_LIGHT) {
-			//额外多关闭高拍仪提示灯
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("off light hspsanner.");
+		if (!!req.mode) {
+			GetEntityBase()->GetFunction()->KillTimer(req.devseq);
+		}
+		if (od.Port == PIN_HSPSCANNER_PREVIEW_LIGHT) {
 			WritePin(PIN_HSPSCANNER_LIGHT, false);
 		}
-		ret = WritePin(pinSeq, false);
+		ret = WritePin(od.Port, false);
 		return (ret == 0);
 	}
-
-	switch (od.OutputMode) {
-	case OM_POSITIVE_LEVEL:
-	{
-		if (od.StopMode == SM_CALLTRIGGER) {
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("0.0 mode: pinSeq=%u", pinSeq);
-			//if it is hspsanner
-			if (pinSeq == PIN_HSPSCANNER_PREVIEW_LIGHT) {
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("light hspsanner.");
-				WritePin(PIN_HSPSCANNER_LIGHT, true);
-			}
-			ret = WritePin(pinSeq, true);
-		}
-	}
-	break;
-	case OM_POSITIVE_FLICKER:
-		if (od.StopMode == SM_CYCLE) {
+	else {
+		if (!!req.mode) {
 			SetContextInfo* pSci = new SetContextInfo();
-			pSci->pinSeq = pinSeq;
+			pSci->pinSeq = od.Port;
 			pSci->timerID = req.devseq;
 			pSci->setTime = od.SetTime;
 			pSci->resetTime = od.ResetTime;
 			pSci->timeout = od.TimeOut;
 
-			ret = WritePin(pinSeq, true);
+			ret = WritePin(od.Port, true);
 			if (ret == 0) {
 				ITimerListener* pListener = new TimerOutHelper<CGPIOFSM>(this, &CGPIOFSM::OnPositiveFlickerSetTimerout, pSci, true);
 				GetEntityBase()->GetFunction()->SetTimer(pSci->timerID, pListener, pSci->setTime);
 			}
 		}
-		break;
-	default:
-		break;
+		else {
+			if (od.Port == PIN_HSPSCANNER_PREVIEW_LIGHT) {
+				WritePin(PIN_HSPSCANNER_LIGHT, true);
+			}
+			ret = WritePin(od.Port, true);
+		}
 	}
 	return (ret == 0);
 }
 
-
 int CGPIOFSM::WritePin(DWORD dwPinSeq, bool bHighLevel)
 {
 	ErrorCodeEnum result(Error_Succeed);
 	int ret(-1);
 	int idx = -1;
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Write Pin %s with %s", GetDriverPortString(dwPinSeq + 1), bHighLevel ? "[Active]" : "[InActive]");
 	if (dwPinSeq > 16) {/** 目前只有一个高拍仪的提示灯会超过该值  [Gifur@202495]*/
 		if (!m_bNewVersion || dwPinSeq < 24) {
 			return ret;
@@ -659,11 +628,11 @@ int CGPIOFSM::WritePin(DWORD dwPinSeq, bool bHighLevel)
 	result = m_hDevHelper->WritePort(idx, m_btOutputStatus[idx]);
 	const auto iEnd = SP::Module::Comm::RVCGetTickCount();
 	if (result != Error_Succeed) {
-		SetErrorAndLog(result, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, false, iEnd - iBegin, "", CombineJsonContext(CSimpleStringA::Format("write port[%d] with %d", idx, m_btOutputStatus[idx])));
+		SetErrorAndLog(result, GPIO_UserErrorCode_WritePort_Failed, "DevAdapter::WritePort", __FUNCTION__, false, iEnd - iBegin, "", CombineJsonContext(CSimpleStringA::Format("index: %d, value: %d", idx, m_btOutputStatus[idx])));
 		ret = 1;
 	}
 	else {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::WritePort").setAPI(__FUNCTION__).setCostTime(iEnd - iBegin)("write port[%d] with %d succ", idx, m_btOutputStatus[idx]);
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::WritePort").setCostTime(iEnd - iBegin)("%s %s", GetDriverPortString(dwPinSeq + 1), bHighLevel ? "[LightOn]" : "[LightOff]");
 		ret = 0;
 	}
 	return ret;
@@ -672,9 +641,7 @@ int CGPIOFSM::WritePin(DWORD dwPinSeq, bool bHighLevel)
 void CGPIOFSM::SetEx(GpioSet_Info req)
 {
 #if defined(RVC_OS_LINUX)
-
 	int devicePort;
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("SetEx request %s arrived!", GetLightSeqString(req.devseq));
 	switch (req.devseq) {
 	case CARDREADER:
 	{
@@ -743,10 +710,10 @@ void CGPIOFSM::SetEx(GpioSet_Info req)
 		const ErrorCodeEnum ec = m_hDevHelper->SetStatus(dwReq, dwMode);
 		const auto iEnd = SP::Module::Comm::RVCGetTickCount();
 		if (ec != Error_Succeed) {
-			SetErrorAndLog(ec, GPIO_UserErrorCode_SetStatus_Failed, "DevAdapter::SetStatus", __FUNCTION__, false, iEnd - iBegin, "", CombineJsonContext(CSimpleStringA::Format("SetStatus with 0x%X,0x%X", dwReq, dwMode)));
+			SetErrorAndLog(ec, GPIO_UserErrorCode_SetStatus_Failed, "DevAdapter::SetStatus", __FUNCTION__, false, iEnd - iBegin, "", CombineJsonContext(CSimpleStringA::Format("dwReq: 0x%X, dwMode: 0x%X", dwReq, dwMode)));
 		}
 		else {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetStatus").setAPI(__FUNCTION__).setCostTime(iEnd - iBegin)("SetStatus with 0x%X,0x%X", dwReq, dwMode);
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetStatus").setCostTime(iEnd - iBegin)("%s %s", GetDriverPortString(devicePort), req.close ? "[LightOff]" : (req.mode ? "[LightFlick]" : "[LightOn]"));
 		}
 	}
 	else {
@@ -757,18 +724,15 @@ void CGPIOFSM::SetEx(GpioSet_Info req)
 
 void CGPIOFSM::Set(GpioSet_Info req)
 {
-	CSimpleStringA activeModeSecName = "";
 	int devicePort;
 	OutDrivingInfo odi;
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Set request %s arrived!", GetLightSeqString(req.devseq));
 	switch (req.devseq) {
 	case CARDREADER:
 	case PINPAD:
 	case CONTACTLESSCARD:
 	{
-		devicePort = req.devseq == CARDREADER ? 0 : (req.devseq == PINPAD ? 3 : 8);
-		odi.OutputMode = OM_POSITIVE_FLICKER;
-		odi.StopMode = SM_CYCLE;
+		devicePort = req.devseq == CARDREADER ? PIN_CARD_READER_LIGHT : (req.devseq == PINPAD ? PIN_PINPAD_LIGHT : PIN_CONTACELESS_LIGHT);
+		odi.Port = devicePort;
 		odi.SetTime = 200;
 		odi.ResetTime = 200;
 		odi.TimeOut = 5000;
@@ -777,9 +741,8 @@ void CGPIOFSM::Set(GpioSet_Info req)
 	case CARDREADER_RED:
 	case HEADLIGHT_RED:
 	{
-		devicePort = req.devseq == CARDREADER_RED ? 6 : 5;
-		odi.OutputMode = OM_POSITIVE_LEVEL;
-		odi.StopMode = SM_CALLTRIGGER;
+		devicePort = req.devseq == CARDREADER_RED ? PIN_CARD_ISSUE_MAINTAIN_LIGHT : PIN_TROUBLE_LIGHT;
+		odi.Port = devicePort;
 		odi.SetTime = 200;
 		odi.ResetTime = 200;
 		odi.TimeOut = 3000;
@@ -788,9 +751,8 @@ void CGPIOFSM::Set(GpioSet_Info req)
 	case IDCERTIFICATE:
 	case FINGERPRINT:
 	{
-		devicePort = req.devseq == IDCERTIFICATE ? 2 : 10;
-		odi.OutputMode = OM_POSITIVE_FLICKER;
-		odi.StopMode = SM_CYCLE;
+		devicePort = req.devseq == IDCERTIFICATE ? PIN_IDCERTIFICATE_LIGHT : PIN_FINGERPRINT_LIGHT;
+		odi.Port = devicePort;
 		odi.SetTime = 150;
 		odi.ResetTime = 150;
 		odi.TimeOut = 5000;
@@ -799,9 +761,8 @@ void CGPIOFSM::Set(GpioSet_Info req)
 	case HEADLIGHT:
 	case HSPSCANNER:
 	{
-		devicePort = req.devseq == HEADLIGHT ? 4 : 12;
-		odi.OutputMode = OM_POSITIVE_LEVEL;
-		odi.StopMode = SM_CALLTRIGGER;
+		devicePort = req.devseq == HEADLIGHT ? PIN_HEAD_LIGHT : PIN_HSPSCANNER_PREVIEW_LIGHT;
+		odi.Port = devicePort;
 		odi.SetTime = 1000;
 		odi.ResetTime = 1000;
 		odi.TimeOut = 5000;
@@ -809,24 +770,17 @@ void CGPIOFSM::Set(GpioSet_Info req)
 	}
 	case HEADLIGHT_ASSIST:
 	{
-		devicePort = 4;
-		odi.OutputMode = OM_POSITIVE_FLICKER;
-		odi.StopMode = SM_CYCLE;
+		odi.Port = PIN_HEAD_LIGHT;
 		odi.SetTime = 1000;
 		odi.ResetTime = 500;
 		odi.TimeOut = 5000;
 		break;
 	}
 	default:
-		odi.OutputMode = OM_POSITIVE_LEVEL;
-		odi.StopMode = SM_CALLTRIGGER;
-		odi.SetTime = 200;
-		odi.ResetTime = 200;
-		odi.TimeOut = 5000;
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("unsupport device seq: %d", req.devseq);
 		return;
 	}
-	SetOutDriving(req, odi, 0, devicePort);
+	SetOutDriving(req, odi);
 }
 
 void CGPIOFSM::StartDetectWorkThread()
@@ -834,8 +788,7 @@ void CGPIOFSM::StartDetectWorkThread()
 	ReceivingInfo ri;
 	ri.ContinuousTriggerTime = 2;
 	GetContextInfo* pGci = new GetContextInfo();
-	/** 注意设备序号是实体内定义的逻辑,不是设备端口号,最后用作于计时器的ID去了*/
-	pGci->timerID = PHONEPICKUP; /*8*/
+	pGci->timerID = PHONEPICKUP; /*8 随便拿了一个不可能用在其他地方的ID*/
 	m_PickUpTimeStamp = m_PutDownTimeStamp = SP::Module::Comm::RVCGetTickCount();
 	m_DoorOpenTimeStamp = m_DoorCloseTimeStamp = SP::Module::Comm::RVCGetTickCount();
 	ITimerListener* pListener = new TimerOutHelper<CGPIOFSM>(this, &CGPIOFSM::OnEventDetect, pGci);
@@ -867,7 +820,6 @@ void CGPIOFSM::OnPositiveFlickerResetTimerout(void* pData)
 void CGPIOFSM::OnEventDetect(void* pData)
 {
 	GetContextInfo* pGci = (GetContextInfo*)pData;
-
 	ULONG input = 0;
 	BYTE btInput;
 	ErrorCodeEnum err(Error_Succeed);
@@ -877,7 +829,7 @@ void CGPIOFSM::OnEventDetect(void* pData)
 		const auto iEnd = SP::Module::Comm::RVCGetTickCount();
 		if (err != Error_Succeed) {
 			SetErrorAndLog(err, GPIO_UserErrorCode_ReadPort_Failed, "DevAdapter::ReadPort", __FUNCTION__, false, iEnd - iBegin, "",
-				CombineJsonContext(CSimpleStringA::Format("read port[%d] with %d", INPUT_PORT_2, btInput)));
+				CombineJsonContext(CSimpleStringA::Format("Port:%d, Status:%d", INPUT_PORT_2, btInput)));
 		}
 		else if (btInput != m_btLastRevcInput) {
 			m_btLastRevcInput = btInput;
@@ -894,7 +846,7 @@ void CGPIOFSM::OnEventDetect(void* pData)
 		btInput = dwMode;
 		if (err != Error_Succeed) {
 			SetErrorAndLog(err, GPIO_UserErrorCode_DetectStatus_Failed, "DevAdapter::DetectStatus", __FUNCTION__, false, iEnd - iBegin, "",
-				CombineJsonContext(CSimpleStringA::Format("detect status[%d] with %d", dwReq, dwMode)));
+				CombineJsonContext(CSimpleStringA::Format("dwReq:%d,dwMode:%d", dwReq, dwMode)));
 		}
 		else if (btInput != m_btLastRevcInput) {
 			m_btLastRevcInput = btInput;
@@ -923,10 +875,10 @@ void CGPIOFSM::OnEventDetect(void* pData)
 	/** 震动感应 */
 	if (DetectBit(btInput, VIBRATIONSENSOR) && !m_bVibrationFlag) {
 		m_bVibrationFlag = true;
-		LogEvent(Severity_Middle, LOG_EVT_VIBRATIONSENSOR, CSimpleStringA::Format("%s [Active] line: %d", GetDriverPortString(17), __LINE__));
+		LogEvent(Severity_Middle, LOG_EVT_VIBRATIONSENSOR, CSimpleStringA::Format("%s [Active]", GetDriverPortString(PIN_DETECT_SHAKE + 1)));
 	}
 	else if (!DetectBit(btInput, VIBRATIONSENSOR) && m_bVibrationFlag) {
-		LogEvent(Severity_Middle, LOG_EVT_VIBRATIONSENSOR_OFF, CSimpleStringA::Format("%s [InActive] line: %d", GetDriverPortString(17), __LINE__));
+		LogEvent(Severity_Middle, LOG_EVT_VIBRATIONSENSOR_OFF, CSimpleStringA::Format("%s [InActive]", GetDriverPortString(PIN_DETECT_SHAKE + 1)));
 		m_bVibrationFlag = false;
 	}
 
@@ -934,14 +886,14 @@ void CGPIOFSM::OnEventDetect(void* pData)
 	if (DetectBit(btInput, OPENSENSOR) && !m_bOpenFlag) {
 		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");
+		LogEvent(Severity_Middle, LOG_EVT_OPENSENSOR_ON, CSimpleStringA::Format("%s [Active]", GetDriverPortString(PIN_DETECT_OPENDOOR + 1)));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_DoorOpen)("[Receiver] The chassis door is open");
 	}
 	else if (!DetectBit(btInput, OPENSENSOR) && m_bOpenFlag) {
 		m_bOpenFlag = false;
 		m_DoorCloseTimeStamp = SP::Module::Comm::RVCGetTickCount();
-		LogEvent(Severity_Middle, LOG_EVT_OPENSENSOR_OFF, CSimpleStringA::Format("%s [InActive] line: %d", GetDriverPortString(18), __LINE__));
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_DoorClose).setCostTime(m_DoorCloseTimeStamp - m_DoorOpenTimeStamp)("[GPIO] The chassis door is close");
+		LogEvent(Severity_Middle, LOG_EVT_OPENSENSOR_OFF, CSimpleStringA::Format("%s [InActive]", GetDriverPortString(PIN_DETECT_OPENDOOR + 1)));
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_DoorClose).setCostTime(m_DoorCloseTimeStamp - m_DoorOpenTimeStamp)("[Receiver] The chassis door is close");
 	}
 
 	/**话机检测*/
@@ -950,12 +902,12 @@ void CGPIOFSM::OnEventDetect(void* pData)
 			m_ePickUpFlag = Actived;
 			m_PickUpTimeStamp = SP::Module::Comm::RVCGetTickCount();
 			LogEvent(Severity_Middle, LOG_EVT_PICKUP, "Life the Phone up");
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_PhonePickup)("[GPIO] 话机提起");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_PhonePickup)("[Receiver] 话机提起");
 		}
 		else if (m_ePickUpFlag == UnknownStatus) {
 			m_ePickUpFlag = Actived;
 			m_PickUpTimeStamp = SP::Module::Comm::RVCGetTickCount();
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_PhonePickup)("[GPIO] 话机提起(启动时)");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_PhonePickup)("[Receiver] 话机提起(启动时)");
 		}
 	}
 	else if (!DetectBit(btInput, PICKUPSENSOR)) {
@@ -963,7 +915,7 @@ void CGPIOFSM::OnEventDetect(void* pData)
 			m_ePickUpFlag = InActive;
 			m_PutDownTimeStamp = SP::Module::Comm::RVCGetTickCount();
 			LogEvent(Severity_Middle, LOG_EVT_ONHOOK, "Put the Phone down");
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_PhonePutDown).setCostTime(m_PutDownTimeStamp - m_PickUpTimeStamp)("[GPIO] 话机放下");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode(GpioService_LogCode_Detect_PhonePutDown).setCostTime(m_PutDownTimeStamp - m_PickUpTimeStamp)("[Receiver] 话机放下");
 		}
 		else if (m_ePickUpFlag == UnknownStatus) {
 			m_ePickUpFlag = InActive;
@@ -975,24 +927,24 @@ void CGPIOFSM::OnEventDetect(void* pData)
 		if (!m_bMoveFlag) {
 			m_bMoveFlag = true;
 			m_moveDisappearTimes = 0;
-			LogEvent(Severity_Middle, LOG_EVT_MOVESENSOR_ON, CSimpleStringA::Format("%s [Active] line: %d, times: %lu", GetDriverPortString(20), __LINE__, m_moveHoldTimes));
+			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[Receiver] Someone approached now");
+			LogEvent(Severity_Middle, LOG_EVT_MOVESENSOR_ON, CSimpleStringA::Format("%s [Active], times: %lu", GetDriverPortString(PIN_DETECT_BODY + 1), m_moveHoldTimes));
 		}
 		/** 只是发一次时间时,发现感知实体没有收到或者不处理第一次发出的时间,所以需要沿用原有的发送频率,再继续发送消失的事件,下同  [Gifur@202496]*/
-		else if (m_moveHoldTimes != 0 && (m_moveHoldTimes % (REPEAT_FIRE_TIMEOUT_VALUE / ON_EVENT_DETECT_TIMOUE_MILLSECS)) == 0) {
-			LogEvent(Severity_Middle, LOG_EVT_MOVESENSOR_ON, CSimpleStringA::Format("%s [Active] line: %d, times: %lu", GetDriverPortString(20), __LINE__, m_moveHoldTimes));
+		else if (m_moveHoldTimes != 0 && (m_moveHoldTimes % REPEAT_FIRE_TIMEOUT_TIMES) == 0) {
+			LogEvent(Severity_Middle, LOG_EVT_MOVESENSOR_ON, CSimpleStringA::Format("%s [Active], times: %lu", GetDriverPortString(PIN_DETECT_BODY + 1), m_moveHoldTimes));
 		}
-		const bool toCheck = !!(m_moveHoldTimes != 0 && (m_moveHoldTimes % (8/*mins*/ * 60 * 1000 / ON_EVENT_DETECT_TIMOUE_MILLSECS) == 0));
+		/** TODO:诗友确定  [Gifur@202579]*/
+		const bool toCheck = !!(m_moveHoldTimes != 0 && (m_moveHoldTimes % (10/*mins*/ * 60 * 1000 / ON_EVENT_DETECT_TIMOUE_MILLSECS) == 0));
 		if (toCheck) {
 			SYSTEMTIME localTime;
 			GetLocalTime(&localTime);
 			if (localTime.wHour < (WORD)8 || (localTime.wHour == 8 && localTime.wMinute <= (WORD)30) || localTime.wHour >= (WORD)18)
 			{
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2903")("Move detect is abnormal(off work).");
-				LogWarn(Severity_High, Error_Unexpect, LOG_EVT_MOVEDETECT_ABNORMAL_OFFWORK, "Move detect is abnormal(off work).");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2903")("%s is abnormal(off work)", GetDriverPortString(PIN_DETECT_BODY + 1));
 			}
 			else {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2902")("Move detect is abnormal(Work time).");
-				LogWarn(Severity_High, Error_Unexpect, LOG_EVT_MOVEDETECT_ABNORMAL_WORKTIME, "Move detect is abnormal(Work time).");
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2902")("%s is abnormal(Work time)", GetDriverPortString(PIN_DETECT_BODY + 1));
 			}
 		}
 		m_moveHoldTimes++;
@@ -1001,20 +953,22 @@ void CGPIOFSM::OnEventDetect(void* pData)
 		if (m_bMoveFlag) {
 			m_bMoveFlag = false;
 			m_moveHoldTimes = 0;
-			LogEvent(Severity_Middle, LOG_EVT_MOVESENSOR_OFF, CSimpleStringA::Format("%s [InActive] line: %d", GetDriverPortString(20), __LINE__));
+			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("[Receiver] Someone stays away already");
+			LogEvent(Severity_Middle, LOG_EVT_MOVESENSOR_OFF, CSimpleStringA::Format("%s [InActive]", GetDriverPortString(PIN_DETECT_BODY + 1)));
 		}
-		else if (m_moveDisappearTimes != 0 && (m_moveDisappearTimes % (REPEAT_FIRE_TIMEOUT_VALUE / ON_EVENT_DETECT_TIMOUE_MILLSECS)) == 0) {
-			LogEvent(Severity_Middle, LOG_EVT_MOVESENSOR_OFF, CSimpleStringA::Format("%s [InActive] line: %d", GetDriverPortString(20), __LINE__));
+		else if (m_moveDisappearTimes != 0 && (m_moveDisappearTimes % REPEAT_FIRE_TIMEOUT_TIMES) == 0) {
+			if((m_moveDisappearTimes / REPEAT_FIRE_TIMEOUT_TIMES <= 6/*一分钟内10s打印一次*/) || (m_moveDisappearTimes % (REPEAT_FIRE_TIMEOUT_TIMES * 3/*超过一分钟后半分钟打印一次*/)) == 0)
+				LogEvent(Severity_Middle, LOG_EVT_MOVESENSOR_OFF, CSimpleStringA::Format("%s [InActive]", GetDriverPortString(PIN_DETECT_BODY + 1)));
 		}
 		m_moveDisappearTimes++;
 	}
 	/*卡嘴异物检测*/
 	if (DetectBit(btInput, CARDGATESENSOR) && !m_bCardGateFlag) {
 		m_bCardGateFlag = true;
-		LogEvent(Severity_Middle, LOG_EVT_CARDGATESENSOR, CSimpleStringA::Format("%s [Active] line: %d", GetDriverPortString(21), __LINE__));
+		LogEvent(Severity_Middle, LOG_EVT_CARDGATESENSOR, CSimpleStringA::Format("%s [Active]", GetDriverPortString(PIN_DETECT_CARDMOUSE_JAM + 1)));
 	}
 	else if (!DetectBit(btInput, CARDGATESENSOR) && m_bCardGateFlag) {
-		LogEvent(Severity_Middle, LOG_EVT_CARDGATESENSOR_OFF, CSimpleStringA::Format("%s [InActive] line: %d", GetDriverPortString(21), __LINE__));
+		LogEvent(Severity_Middle, LOG_EVT_CARDGATESENSOR_OFF, CSimpleStringA::Format("%s [InActive]", GetDriverPortString(PIN_DETECT_CARDMOUSE_JAM + 1)));
 		m_bCardGateFlag = false;
 	}
 

+ 8 - 15
Module/mod_gpio/GpioFSM.h

@@ -15,17 +15,6 @@
 #define GpioService_LogCode_Detect_DoorClose "QLR0402209A4"
 #define GpioService_LogCode_Detect_PhonePutDown "QLR0402209A5"
 
-
-enum OutputMode {
-	OM_POSITIVE_LEVEL,
-	OM_POSITIVE_FLICKER,
-	OM_NEGATIVE_FLICKER
-};
-enum StopMode {
-	SM_CALLTRIGGER,
-	SM_TIMEOUT,
-	SM_CYCLE
-};
 enum PinPort {
 	VIBRATIONSENSOR, /**震动探测器*/
 	OPENSENSOR, /*开机箱门感应器*/
@@ -44,9 +33,7 @@ enum PinActiveStatus
 
 struct OutDrivingInfo
 {
-	ULONG Port;
-	int OutputMode;
-	int StopMode;
+	int Port;
 	int SetTime;
 	int ResetTime;
 	int TimeOut;
@@ -114,12 +101,16 @@ enum DevicePinSeq
 	PIN_DETECT_OPENDOOR,
 	PIN_DETECT_PHONE,
 	PIN_DETECT_BODY,
+	PIN_DETECT_CARDMOUSE_JAM,
 	PIN_HSPSCANNER_LIGHT = 25
 };
 struct GpioSet_Info
 {
+	/** 注意设备序号是实体内定义的逻辑,不是设备端口号,最后用作于计时器*/
 	int devseq;
+	/*目前用于灯亮模式标记,1表示闪烁,0表示常亮*/
 	int mode;
+	/*关灯还是开灯的标记,1表示关灯,0表示开灯*/
 	int close;
 };
 
@@ -166,12 +157,14 @@ public:
 	//////////////////////////////////////////////////////////////////////////
 	void OnPositiveFlickerSetTimerout(void* pData);
 	void OnPositiveFlickerResetTimerout(void* pData);
+	//具体的监听事件函数
 	void OnEventDetect(void* pData);
 	//开了一个监听线程,用于监听震动、开关门等事件
 	void StartDetectWorkThread();
 	void Set(GpioSet_Info info);
 	void SetEx(GpioSet_Info info);
-	bool SetOutDriving(GpioSet_Info req, OutDrivingInfo od, ULONG iIndex, ULONG devSeq);
+	bool SetOutDriving(GpioSet_Info req, OutDrivingInfo od);
+	//调用硬件适配器接口,不涉及到其他复杂逻辑
 	//0:success; 1:false;-1:other(ignore)
 	int WritePin(DWORD dwPinSeq, bool bHighLevel);
 

+ 1 - 1
Module/mod_gpio/Gpio_UserErrorCode.h

@@ -4,7 +4,7 @@
 
 #define GPIO_UserErrorCode_Start				0x20900200
 #define GPIO_UserErrorCode_LogInfoAboutTerm		0x20900201
-#define GPIO_UserErrorCode_RootInfo				0x20900202
+//#define GPIO_UserErrorCode_RootInfo				0x20900202
 #define GPIO_UserErrorCode_Real_Root_Config		0x20900203
 
 //adapter func failed

+ 2 - 6
Module/mod_gpio/mod_gpio.cpp

@@ -11,7 +11,6 @@ void CGpioServiceSession::Handle_GetDevInfo(SpReqAnsContext<GpioService_GetDevIn
 
 void CGpioServiceSession::Handle_Exit(SpOnewayCallContext<GpioService_Exit_Info>::Pointer ctx)
 {
-    DbgToBeidou(ctx->link, __FUNCTION__)();
     m_pEntity->Exit(ctx);
 }
 
@@ -21,8 +20,7 @@ void CGpioEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<I
 	GetFunction()->RegistSysVarEvent("UIState", this);
 
 	if (erroCode == Error_Succeed) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Gpio open succeeded.");
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("subscribelog...");
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Gpio open succeeded.");
 		//oiltmp the subscribelog should distinct machine type?
 		GetFunction()->SubscribeLog(m_uuidHealth, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "HealthManager");
 		GetFunction()->SubscribeLog(m_uuidIDC, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "IDCertificate");
@@ -33,14 +31,12 @@ void CGpioEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<I
 		GetFunction()->SubscribeLog(m_uuidCC, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "ContactlessCard");
 		GetFunction()->SubscribeLog(m_uuidCS, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "CardIssuerStore");
 		GetFunction()->SubscribeLog(m_uuidHSPscanner, this, Log_Event, Severity_Middle, Error_IgnoreAll, -1, "HSPScanner");
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sub ok...");
 		m_fsm.AfterInit();
 	}
 	else
 	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("gpio open failed: %s.", SpStrError(erroCode));
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("init gpio failed: %s", SpStrError(erroCode));
 	}
-
 	pTransactionContext->SendAnswer(Error_Succeed);
 }
 

+ 5 - 3
Module/mod_healthmanager/mod_healthmanager.cpp

@@ -568,6 +568,7 @@ bool CHealthManagerEntity::StopGuardian()
 					if( hProcess == NULL )
 					{
 						DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("Fail to open process(%d)!",GetLastError());
+						CloseHandle(hSnapshot);
 						return false;
 					}
 					else
@@ -575,6 +576,8 @@ bool CHealthManagerEntity::StopGuardian()
 						result = TerminateProcess(hProcess,-1);
 						if (result)
 						{
+							CloseHandle(hProcess);
+							CloseHandle(hSnapshot);
 							Sleep(3000);
 							DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("Terminate guardian suc.");
 							return true;
@@ -582,13 +585,12 @@ bool CHealthManagerEntity::StopGuardian()
 						else
 						{
 							DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("Terminate guardian failed(%d).",GetLastError());
+							CloseHandle(hProcess);
+							CloseHandle(hSnapshot);
 							return false;
 						}
-						CloseHandle( hProcess );
 					}
-
 					Sleep(3000);
-
 					WaitForSingleObject(&pe.th32ProcessID, INFINITE );
 					break;
 				}

+ 1 - 1
Module/mod_heartbeat/HeartBeatFSM.cpp

@@ -428,7 +428,7 @@ int CHeartBeatFSM::DoNewHandShake() {
 	while (true)
 	{
 		if (warnSum == 50) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("HandShakeHttp")("HandShakeHttp send 50 times");
+			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("HandShakeHttp")("HandShakeHttp send 50 times");
 			warnSum = 0;
 		}		
 		IHttpFunc* client;

+ 3 - 1
Module/mod_heartbeat/HeartBeatFSM.h

@@ -2,7 +2,9 @@
 #define __HEARTBEAT_FSM_H
 #pragma once
 #ifdef RVC_OS_WIN
-#define WIN32_LEAN_AND_MEAN
+#ifndef WIN32_LEAN_AND_MEAN
+	#define WIN32_LEAN_AND_MEAN
+#endif
 
 #include <windows.h>
 #include <winsock2.h>

+ 3 - 0
Module/mod_mediacontroller/mod_mediacontroller.cpp

@@ -58,6 +58,9 @@
 #ifndef RVC_DEFAULT_CAMERA_BRIGHNESS
 #define RVC_DEFAULT_CAMERA_BRIGHNESS 50
 #endif // !RVC_DEFAULT_CAMERA_BRIGHNESS
+#ifndef RVC_DEFAULT_KERNEL_VERSION
+#define RVC_DEFAULT_KERNEL_VERSION "4.19.0-arm64-desktop"
+#endif
 
 #ifdef RVC_OS_WIN
 typedef HRESULT(__stdcall* PFNREGISTERSERVER)(void);

+ 2 - 3
Module/mod_pinpad/PinPadFSM.cpp

@@ -600,7 +600,7 @@ ErrorCodeEnum CPinPadFSM::GetEncryptText(SpReqAnsContext<PinPadService_GetInputS
 	AccountInfo accInfo;
 	memset(accInfo.account, 0, MAX_ACCOUNT_LEN);
 	CSimpleStringA errMsg(true);
-
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("account[%s]", SP::Module::Util::DataMask(SP::Module::Util::DataMask_CardAccount, ctxSM->Req.account).GetData());
 	if (Get12Account(const_cast<char*>(ctxSM->Req.account.GetData())))
 		memcpy(accInfo.account, m_szAccount + 4, 12);
 	else
@@ -621,7 +621,6 @@ ErrorCodeEnum CPinPadFSM::GetEncryptText(SpReqAnsContext<PinPadService_GetInputS
 
 	//memcpy(accInfo.account,"588571006555",12);
 	accInfo.dwAccLen = 12;
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("acc(%s)", accInfo.account);
 	m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 	errCode = m_hDevHelper->SetAccNo(accInfo);
 	m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
@@ -1313,6 +1312,7 @@ ErrorCodeEnum CPinPadFSM::GetEncryptTextJS(SpReqAnsContext<PinPadService_GetInpu
 	memset(accInfo.account, 0, MAX_ACCOUNT_LEN);
 	CSimpleStringA errMsg(true);
 
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("account[%s]", SP::Module::Util::DataMask(SP::Module::Util::DataMask_CardAccount, ctxJS->Req.account).GetData());
 	if (Get12Account(const_cast<char*>(ctxJS->Req.account.GetData())))
 		memcpy(accInfo.account, m_szAccount + 4, 12);
 	else
@@ -1333,7 +1333,6 @@ ErrorCodeEnum CPinPadFSM::GetEncryptTextJS(SpReqAnsContext<PinPadService_GetInpu
 
 	//memcpy(accInfo.account,"588571006555",12);
 	accInfo.dwAccLen = 12;
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("acc(%s)", accInfo.account);
 	m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 	errCode = m_hDevHelper->SetAccNo(accInfo);
 	m_ullEndTime = SP::Module::Comm::RVCGetTickCount();

+ 9 - 7
Module/mod_upload/UploadFSM.cpp

@@ -365,7 +365,8 @@ namespace Task
 			//调用上传接口
 			//最后一次上传时,文件hash和长度告警
 			if (m_fsm->m_currUploadFile->lastMD5Str.length() != 0) {
-				LogWarn(Severity_Low, Error_Unexpect, LOG_WARN_UPLOAD_FILE_INFO, CSimpleStringA::Format("upload %s file size is %s byte,sm3 digest is %s.", m_fsm->m_currUploadFile->fileName.c_str(), lastFileLength.c_str(), m_fsm->m_currUploadFile->lastMD5Str.c_str()).GetData());
+				//LogWarn(Severity_Low, Error_Unexpect, LOG_WARN_UPLOAD_FILE_INFO, CSimpleStringA::Format("upload %s file size is %s byte,sm3 digest is %s.", m_fsm->m_currUploadFile->fileName.c_str(), lastFileLength.c_str(), m_fsm->m_currUploadFile->lastMD5Str.c_str()).GetData());
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("upload %s file size is %s byte,sm3 digest is %s.", m_fsm->m_currUploadFile->fileName.c_str(), lastFileLength.c_str(), m_fsm->m_currUploadFile->lastMD5Str.c_str());
 			}
 			PROCESS_LINK_CONTEXT("LR0402104UploadFile")
 			if (!client->UploadFileBlock(qTempReq, qTempRet, &nextLink)) {
@@ -750,7 +751,7 @@ namespace Task
 
 void UploadFSM::OnStateTrans( int iSrcState, int iDstState )
 {
-	DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("trans from %s to %s", GetStateName(iSrcState), GetStateName(iDstState));
+	DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("trans from %s to %s", GetStateName(iSrcState), GetStateName(iDstState));
 
 }
 
@@ -1089,7 +1090,7 @@ unsigned int UploadFSM::s2_on_event(FSMEvent* event)
 			scanFile();
 		}
 		if (m_uploadList->size() == 0) {
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("m_uploadList is 0,wait for 8 min retry scan");
+			DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM)("m_uploadList is 0,wait for 8 min retry scan");
 			ScheduleTimer(1, 480000);
 		} else {
 			PostEventLIFO(new FSMEvent(USER_EVT_JMP_NEW_UPLOAD));//跳到新的上传状态
@@ -1221,7 +1222,7 @@ unsigned int UploadFSM::s7_on_event(FSMEvent* event)
 			}else{
 				m_uploadReport.isBreak =false;
 				reportBatchMsg();
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("NewUpload m_uploadList is empty,wait 240s retry scan");
+				DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM)("NewUpload m_uploadList is empty,wait 240s retry scan");
 				ScheduleTimer(7, 240000);// goto s2
 			}
 
@@ -1262,7 +1263,7 @@ unsigned int UploadFSM::s7_on_event(FSMEvent* event)
 			}else{
 				m_uploadReport.isBreak =false;
 				reportBatchMsg();
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("NewUpload m_uploadList is empty,wait 240s retry scan");
+				DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM)("NewUpload m_uploadList is empty,wait 240s retry scan");
 				ScheduleTimer(7, 240000);// goto s2
 			}
 		}else{
@@ -1274,7 +1275,7 @@ unsigned int UploadFSM::s7_on_event(FSMEvent* event)
 		
 	}else if (event->iEvt == EVT_TIMER) {
 		// goto s2
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("NewUpload ,jump to s2");
+		DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM)("NewUpload ,jump to s2");
 	}
 	
 	return 0;
@@ -1874,7 +1875,8 @@ void UploadFSM::reportBatchMsg()
 		strReport =CSimpleStringA::Format("batch=succ isbreak=%d sum=%d succ=%d fail=%d detail fail: uploadFail=%d updateState=%d operateFileFail=%d (decodeFail=%d queryTempFail=%d)",
 			m_uploadReport.isBreak, m_uploadReport.sum, m_uploadReport.succ, m_uploadReport.fail, m_uploadReport.uploadFail, m_uploadReport.updateState,
 			m_uploadReport.operateFileFail, m_uploadReport.decodeFail, m_uploadReport.queryTempFail);
-		LogWarn(Severity_Low, Error_Unexpect, LOG_WARN_UPLOAD_FILE_REPORT, strReport.GetData());
+		//LogWarn(Severity_Low, Error_Unexpect, LOG_WARN_UPLOAD_FILE_REPORT, strReport.GetData());
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)(strReport.GetData());
 	}else{
 		strReport =CSimpleStringA::Format("batch=fail isbreak=%d sum=%d succ=%d fail=%d detail fail: uploadFail=%d updateState=%d operateFileFail=%d (decodeFail=%d queryTempFail=%d)",
 			m_uploadReport.isBreak, m_uploadReport.sum, m_uploadReport.succ, m_uploadReport.fail, m_uploadReport.uploadFail, m_uploadReport.updateState,

+ 34 - 2
addin/res/RunScript/startBrower.sh

@@ -6,6 +6,26 @@ echo "start $0 with $name"
 
 exec="/usr/share/browser/browser"  # 使用传入的参数值作为要执行的命令
 echo "run $exec"
+
+#!/bin/bash
+declare -A params  # 关联数组存储参数
+
+for arg in "$@"; do
+    if [[ "$arg" =~ ^--vtm_browser_type=(.*)$ ]]; then
+        vtm_browser_type="${BASH_REMATCH[1]}"
+        echo "浏览器类型: $vtm_browser_type"
+        break  # 找到后退出循环
+    fi
+done
+
+if [[ -z "$vtm_browser_type" ]]; then
+    echo "未指定浏览器类型"
+fi
+
+
+GROUP_NAME=${vtm_browser_type:-default_browser}
+
+
 # get env
 pid=$(pgrep startdde)
 # source env from $pid
@@ -13,10 +33,22 @@ pid=$(pgrep startdde)
 . <(xargs -0 bash -c 'printf "export %q\n" "$@"' -- </proc/$pid/environ)
 name=$(ps -o uname= -p "${pid}")
 echo "run in $name"
+
+FILE="/tmp/$GROUP_NAME.pgid"
+rm -f "$FILE"  # 强制删除文件(忽略不存在的情况)
+touch "$FILE"  # 创建新文件
+chmod 666 "$FILE"  # 可选:设置权限
+
 if [ $# -eq 0 ]
 then
-	runuser -u "$name" -- bash -c "$exec &" &  #无参数执行
+    runuser -u  $name -- bash -c "setsid $exec & sudo echo \$! > /tmp/$GROUP_NAME.pgid"
 else
-	runuser -u "$name" -- bash -c "$exec $* &" &  # 将参数传递给命令
+    runuser -u  $name -- bash -c "setsid $exec $* & sudo echo \$! > /tmp/$GROUP_NAME.pgid"
 fi
+
+PGID=$(cat /tmp/$GROUP_NAME.pgid)
+
+echo "UOS Browser 已启动:"
+echo "PGID: $PGID"
+
 exit $?

+ 32 - 2
addin/res/RunScript/startUOSBrower.sh

@@ -4,6 +4,21 @@ set -x
 name=$(whoami)
 echo "start $0 with $name"
 
+for arg in "$@"; do
+    if [[ "$arg" =~ ^--vtm_browser_type=(.*)$ ]]; then
+        vtm_browser_type="${BASH_REMATCH[1]}"
+        echo "浏览器类型: $vtm_browser_type"
+        break  # 找到后退出循环
+    fi
+done
+
+if [[ -z "$vtm_browser_type" ]]; then
+    echo "未指定浏览器类型"
+fi
+
+GROUP_NAME=${vtm_browser_type:-default_browser}
+
+
 exec="/usr/share/uosbrowser/uosbrowser"  # 使用传入的参数值作为要执行的命令
 echo "run $exec"
 # get env
@@ -13,10 +28,25 @@ pid=$(pgrep startdde)
 . <(xargs -0 bash -c 'printf "export %q\n" "$@"' -- </proc/$pid/environ)
 name=$(ps -o uname= -p "${pid}")
 echo "run in $name"
+
+FILE="/tmp/$GROUP_NAME.pgid"
+rm -f "$FILE"  # 强制删除文件(忽略不存在的情况)
+touch "$FILE"  # 创建新文件
+chmod 666 "$FILE"  # 可选:设置权限
+
 if [ $# -eq 0 ]
 then
-	runuser -u "$name" -- bash -c "$exec &" &  #无参数执行
+    runuser -u  $name -- bash -c "setsid $exec & sudo echo \$! > /tmp/$GROUP_NAME.pgid"
 else
-	runuser -u "$name" -- bash -c "$exec $* &" &  # 将参数传递给命令
+    runuser -u  $name -- bash -c "setsid $exec $* & sudo echo \$! > /tmp/$GROUP_NAME.pgid"
 fi
+
+PGID=$(cat /tmp/$GROUP_NAME.pgid)
+
+
+echo "UOS Browser 已启动:"
+echo "PGID: $PGID"
+
+
+
 exit $?

+ 41 - 0
addin/res/RunScript/stopBrowser.sh

@@ -0,0 +1,41 @@
+#!/bin/bash
+
+# 检查是否提供了进程组名称参数
+if [ $# -eq 0 ]; then
+    echo "错误:请提供进程组名称作为参数,例如:./stop_browser.sh my-group"
+    exit 1
+fi
+
+
+for arg in "$@"; do
+    if [[ "$arg" =~ ^--vtm_browser_type=(.*)$ ]]; then
+        vtm_browser_type="${BASH_REMATCH[1]}"
+        echo "浏览器类型: $vtm_browser_type"
+        break  # 找到后退出循环
+    fi
+done
+
+if [[ -z "$vtm_browser_type" ]]; then
+    echo "未指定浏览器类型"
+fi
+
+GROUP_NAME=$vtm_browser_type
+
+
+# 通过 PGID 关闭(推荐)
+if [ -f /tmp/$GROUP_NAME.pgid ]; then
+    PGID=$(cat /tmp/$GROUP_NAME.pgid)
+    kill -15 -$PGID 2>/dev/null  # 终止整个进程组
+    sleep 1
+    if ps -o pgid= | grep -q $PGID; then
+        kill -9 -$PGID
+    fi
+    rm -rf /tmp/$GROUP_NAME.pgid
+fi
+
+# 清理 cgroup(如果存在)
+if command -v cgdelete &> /dev/null; then
+    sudo cgdelete cpu,memory:"$GROUP_NAME" 2>/dev/null
+fi
+
+echo "UOS Browser 已终止"

部分文件因为文件数量过多而无法显示