Browse Source

#IQRV #comment 合并File解耦项目到ST2

80374374 9 months ago
parent
commit
71ddb4f800

+ 1 - 1
DevAdapter/CMakeLists.txt

@@ -297,7 +297,7 @@ if(DEVADAPTER_USING_CONAN)
         #CardLibDB_CMB.db3
         conan_cmake_run(REQUIRES VendorDLL/2024.11.1401@LR04.02_VendorLib/testing
             BASIC_SETUP CMAKE_TARGETS)
-        set(SELF_CONAN_LIB_NAME self/2024.1025.01@LR04.02_VendorLib/testing)
+        set(SELF_CONAN_LIB_NAME self/2024.1217.01@LR04.02_VendorLib/testing)
         add_subdirectory(self)
     endif(MSVC)
 

+ 3 - 0
DevAdapter/liblog4vendor/env_deal.cpp

@@ -74,10 +74,13 @@ namespace cmb {
 
 	bool env_log_config::retrieve_env_value()
 	{
+        record_type = record_level = module_name = record_path = seal_module_name = "";
+
 		env_deal("VENDOR_RECODE_TYPE").get(record_type);
 		env_deal("VENDOR_RECODE_LEVEL").get(record_level);
 		env_deal("VENDOR_DLL_NAME").get(module_name);
 		env_deal("VENDOR_LOG_PATH").get(record_path);
+		env_deal("VENDOR_PARENT_NAME").get(seal_module_name);
         return true;
 	}
 }

+ 1 - 1
DevAdapter/liblog4vendor/env_deal.h

@@ -28,7 +28,7 @@ namespace cmb {
 		std::string record_type;
 		std::string record_path;
 		std::string module_name;
-
+		std::string seal_module_name;
 		bool retrieve_env_value();
 	};
 }

+ 4 - 0
DevAdapter/liblog4vendor/log4vendor.cpp

@@ -124,6 +124,10 @@ namespace cmb {
             }
 #endif //_MSC_VER
 		}
+		else if (!env.seal_module_name.empty()) {
+			config->dev_name = "vendor_";
+			config->dev_name += env.seal_module_name.c_str();
+		}
 		config->log_dir = env.record_path;
 	}
 

+ 4 - 2
Module/include/DevEntityCommBase.hpp

@@ -228,24 +228,26 @@ inline void CDevAdptEntityBase::InitializeVendorLogSwitch()
 
 	struct VendorLogConfig {
 
-		VendorLogConfig() :strLevel("OFF"), strType("FILE"), strDllName(""), strLogPath("") {}
+		VendorLogConfig() :strLevel("OFF"), strType("FILE"), strDllName(""), strLogPath(""), strModuleName(""){}
 
 		CSimpleStringA strLevel;
 		CSimpleStringA strType;
 		CSimpleStringA strDllName;
 		CSimpleStringA strLogPath;
+		CSimpleStringA strModuleName;
 
 		void Settle()  {
 			toolkit_setenv("VENDOR_RECODE_LEVEL", strLevel);
 			toolkit_setenv("VENDOR_RECODE_TYPE", strType);
 			toolkit_setenv("VENDOR_DLL_NAME", strDllName);
 			toolkit_setenv("VENDOR_LOG_PATH", strLogPath);
+			toolkit_setenv("VENDOR_PARENT_NAME", strModuleName);
 		}
 
 	} stLogConfig;
 
 	stLogConfig.strDllName = vendorLibInfo.toLibNameString().GetData();
-
+	stLogConfig.strModuleName = GetEntityName();
 	CSmartPointer<IConfigInfo> centerConfig;
 	GetFunction()->OpenConfig(Config_CenterSetting, centerConfig);
 

+ 1 - 0
Module/include/DevFSMCommBase.hpp

@@ -935,6 +935,7 @@ public:
 	{
 		CSimpleStringA entityName(this->GetEntityBase()->GetEntityName());
 		std::map<std::string, std::string> rootInfo;
+		rootInfo["File"] = m_adapterInfo.strPureAdapterName.GetData();
 		rootInfo["Vendor"] = m_adapterInfo.strVendor.GetData();
 		rootInfo["Version"] = m_adapterInfo.strVersion.GetData();
 		rootInfo["Batch"] = m_adapterInfo.strBatch.GetData();

+ 1 - 2
Module/include/EventCode.h

@@ -471,15 +471,14 @@ ERROR_ACCESSAUTH_CONNECT_ACS_x}
 #define LOG_DEVICECONTROL_SOGOU_SCRIPTS_EXECUTE_FAILED 0x21400009
 #define LOG_DEVICECONTROL_SOGOU_SCRIPTS_EXECUTE_TIMEOUT 0x2140000A
 
+//公有引用
 #define LOG_EVT_HSPS_LIGHT_ON 0x21700002
 #define LOG_EVT_HSPS_LIGHT_OFF 0x21700003
 
 //#define LOG_ERR_DEVICECONTROL_RESTART 0x21480001
 
-#define LOG_ERR_HSPS_DEVOPEN_FAILED 0x21700001
 #define LOG_EVT_HSPS_LIGHT_ON 0x21700002
 #define LOG_EVT_HSPS_LIGHT_OFF 0x21700003
-#define LOG_EVT_HSPS_LOST_CONNECT 0x21700004
 
 
 #define LOG_EVT_HEALTH_FIRST_ENTER_MAINPADE_FROM_HEALTH_START 0x50100002	//健康启动以来首次进首页

+ 8 - 44
Module/mod_CardIssuerStand/CardIssuerFSM.cpp

@@ -19,9 +19,6 @@
 #include <atltime.h>
 #endif //RVC_OS_WIN
 
-char tmpxx[1024];
-char testIC[1024];
-
 #include "CardIssuerClass.h"
 #include "mod_cardissuer.h"
 #include "stdafx.h"
@@ -30,12 +27,6 @@ char testIC[1024];
 //oiltest@20200915 temp for GetTickCount
 #ifdef RVC_OS_WIN
 #define _ATL_NO_AUTOMATIC_NAMESPACE
-#include <winsock2.h>
-#include <Ws2bth.h>
-// Link to Bthprops.lib
-#include <BluetoothAPIs.h>
-#pragma comment (lib, "Ws2_32.lib")
-#pragma comment (lib, "Bthprops.lib")
 #else
 #include<sys/time.h>
 #include <dlfcn.h>
@@ -1149,7 +1140,7 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create card process failed.");
 		return Error_Resource;
 	}
-	Load();
+	m_csDevSN = "";
 	CSystemStaticInfo sysInfo;
 	//oilyang 20160331
 	//so many function always return Error_Succeed,so is useless to process it.
@@ -1163,7 +1154,8 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("CardIssuer, MachineType:%s, Site:%s, TerminalNo:%s, MachineVersion:%d.%d",
 		m_csMachineType.GetData(), m_csSite.GetData(), m_terminalNo.GetData(), m_majorVerion, m_minorVerion));
 
-	//因替换实体名,需要兼容把以前旧的运行时文件拷贝成新的实体名运行文件
+	//因替换实体名,需要兼容把以前旧的运行时文件拷贝成新的实体名运行文件,卡机分离后,拷贝旧版运行时文件,后期稳定后直接去除
+	//////////////////////////////////////////////////////////////////////////
 	CSimpleStringA runinfoPath(true);
 	CSmartPointer<IConfigInfo> spConfig;
 	ErrorCodeEnum  err = GetEntityBase()->GetFunction()->GetPath("RunInfo", runinfoPath);
@@ -1176,7 +1168,7 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("get cfg file failed ");
 		return err;
 	}
-
+	
 	CSimpleStringA runinfoOldFile = runinfoPath + SPLIT_SLASH_STR + "runcfg" + SPLIT_SLASH_STR + "CardIssuer.ini"; 
 	CSimpleStringA runinfoNewFile = runinfoPath + SPLIT_SLASH_STR + "runcfg" + SPLIT_SLASH_STR + "CardIssuerStand.ini";
 
@@ -1251,7 +1243,7 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 		}
 	}
 
-
+	//////////////////////////////////////////////////////////////////////////
 	m_devStatus.eMedia = CI_MEDIA_NOTPRESENT;
 	m_bHasHopper[0] = false;
 	m_bHasHopper[1] = false;
@@ -1541,10 +1533,10 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 	long l_beginTime,l_endTime;
 	do {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CreateDevComponent suc. m_port:%d, m_baudRate:%d, pDevSN:%s",
-			m_port, m_baudRate, pDevSN);
+			m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt(), pDevSN);
 
 		l_beginTime = GetTickCountRVC();
-		eErrDev = m_hDevHelper->DevOpenEx(m_port, m_baudRate, btOpenType, pDevSN, m_connectType);
+		eErrDev = m_hDevHelper->DevOpenEx(m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt(), btOpenType, pDevSN, m_connectType);
 		l_endTime = GetTickCountRVC();
 		
 		if (eErrDev == Error_Succeed)
@@ -1571,15 +1563,13 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 			else
 			{
 				SetErrorAndLog(eErrDev, MEC_DEVAPI_CARDISSUER_GetDevCategory, "DevAdapter::GetDevCategory", __FUNCTION__, false, l_endTime - l_beginTime, "", "");
-
-				///*TODO: need to clear adapter object? (80374374@4/4/2023)*/
 				return Error_Unexpect;
 			}
 
 			if (!LoadCMBPrint(csBinPath))
 			{
 				errMsg = CSimpleStringA::Format("CardIssuer启动失败:Load CMBPrint failed.");
-				//LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_LoadLibraryA_CMBPrint_Failed, errMsg.GetData());
+				LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_LoadLibraryA_CMBPrint_Failed, errMsg.GetData());
 				return Error_DevLoadFileFailed;
 			}
 			initTries = 0;
@@ -1662,15 +1652,6 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 		}
 		if (m_hopperNum == 1 && btOpenType == DEV_OPEN_TYPE_COM)//oilyang 如果没有配置,使用原来的配置
 		{
-			//spConfig->ReadConfigValueInt("RunInfo", "CardRemains", m_remainsEx[0]);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardIssued", m_issuedEx[0]);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardCaptured", m_CardCaptured);
-			//spConfig->ReadConfigValueInt("RunInfo", "IsIssue", isIssue);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardMixed", m_mixedEx[0]);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardInit", m_CardInitEx[0]);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardPercent", m_CardPercentEx[0]);
-			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("use old record, CardRemains:%d, CardIssued:%d, CardCaptured:%d, IsIssue:%d, CardMixed:%d, CardInit:%d",
-			//	m_remainsEx[0], m_issuedEx[0], m_CardCaptured, isIssue, m_mixedEx[0], m_CardInitEx[0]));
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("use new hopper cfg record"));
 		}
 		//oilyang 回写卡机配置
@@ -1753,24 +1734,7 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 		}
 	}
 }
-void CCardIssuerFSM::Load()
-{
-	LOG_FUNCTION();
-	CSmartPointer<IConfigInfo> spConfig;
-	ErrorCodeEnum eErrDev = GetEntityBase()->GetFunction()->OpenConfig(Config_Root, spConfig);
-	if (spConfig == NULL)
-	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("<Load>, open root.ini failed");
-		return;
-	}
-	spConfig->ReadConfigValueInt("Device.CardIssuer", "Baudrate", m_baudRate);
-	spConfig->ReadConfigValueInt("Device.CardIssuer", "Port", m_port);
 
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)(CSimpleStringA::Format("m_baudRate:%d, m_port:%d",
-			m_baudRate, m_port));
-
-	m_csDevSN = "";
-}
 int CCardIssuerFSM::Initial()
 {
 	m_bOpening = true;

+ 1 - 2
Module/mod_CardIssuerStand/CardIssuerFSM.h

@@ -834,7 +834,6 @@ public:
 	void s14_on_exit();
 	unsigned int s14_on_event(FSMEvent* event);
 	
-	void Load();
 	ErrorCodeEnum OpenDevice(BYTE btOpenType, const char *pDevSN);
 	int Initial();
 	bool GetDevStatus(bool bPrint=true);
@@ -941,7 +940,7 @@ private:
 	//1:default, 2:SCI, 3:no cfg
 	int m_machineType;
 	WORD m_majorVerion, m_minorVerion;
-	int m_port,m_baudRate,m_currentHopper,m_devOpenFailedCount;
+	int m_currentHopper,m_devOpenFailedCount;
 	int m_maxSlot,m_findCard,m_cardPos,m_currentFSMState,m_maxRetainCount, m_eacQueryFlag/*accout query*/
 		,m_ICRetryTimes;
 	CSimpleStringA m_CardBoxNoEx[HOPPER_NUM], m_PsbCodeEx[HOPPER_NUM], m_PsbNameEx[HOPPER_NUM], m_MaintainerEx[HOPPER_NUM],m_csMaintainTimeEx[HOPPER_NUM];

+ 2 - 7
Module/mod_DeviceControl/mod_DeviceControl.cpp

@@ -57,6 +57,7 @@ void CDeviceControlServerSession::Handle_QueryUSBStatus(SpReqAnsContext<DeviceCo
 
     m_pEntity->QueryUSBStatus(ctx);
 }
+/** 无交易量  [Gifur@20241210]*/
 void CDeviceControlServerSession::Handle_QueryHardwareInfo(SpReqAnsContext<DeviceControlService_QueryHardwareInfo_Req, DeviceControlService_QueryHardwareInfo_Ans>::Pointer ctx)
 {
     DbgToBeidou(ctx->link, __FUNCTION__)();
@@ -116,8 +117,6 @@ void CDeviceControlEntity::QueryHardwareInfo(SpReqAnsContext<DeviceControlServic
 {
     CSystemStaticInfo info;
     GetFunction()->GetSystemStaticInfo(info);
-    CSimpleStringA deviceFct("");
-
 	CAutoArray<SP::Module::Net::NetworkAdapterItem> netList;
 	SP::Module::Net::GetINETMacAddresses(netList);
 
@@ -128,10 +127,6 @@ void CDeviceControlEntity::QueryHardwareInfo(SpReqAnsContext<DeviceControlServic
 		ipAddrs.Append(&tmpip, 0, 1);
 		macAddrs.Append(&tmpmac, 0, 1);
 	}
-	CSmartPointer<IConfigInfo> spConfig;
-	GetFunction()->OpenConfig(Config_Root, spConfig);
-	spConfig->ReadConfigValue("Device.PinPad", "Vendor", deviceFct);
-
     //获取操作系统版本信息
 #if defined(_MSC_VER)
         //获取windows系统版本
@@ -182,7 +177,7 @@ void CDeviceControlEntity::QueryHardwareInfo(SpReqAnsContext<DeviceControlServic
         ctx->Ans.reserved1 = 0;
 #endif	
         ctx->Ans.reserved3 = sysVer;
-        ctx->Ans.reserved4 = deviceFct;
+        ctx->Ans.reserved4 = "";
 
         ctx->Answer(Error_Succeed);
     }

+ 10 - 72
Module/mod_FingerPrint/FingerPrintFSM.cpp

@@ -292,8 +292,6 @@ unsigned CFingerPrintFSM::s3_on_event(FSMEvent* e)
 	return 0;
 }
 
-
-
 #pragma region entity init
 
 ErrorCodeEnum CFingerPrintFSM::OnInit()
@@ -315,87 +313,31 @@ ErrorCodeEnum CFingerPrintFSM::OnInit()
 
 int CFingerPrintFSM::Initial()
 {
-	CSmartPointer<IEntityFunction> spEntityFunction = GetEntityBase()->GetFunction();
 	auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
-
-	BOOL triedFlag = FALSE;
-	if (pEntity->vendorLibInfo.IsNotConfig()) {
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Not config the vendor at root.ini");
-		CSmartPointer<IConfigInfo> spConfig;
-		ErrorCodeEnum errDev = spEntityFunction->OpenConfig(Config_Root, spConfig);
-		if (errDev != Error_Succeed)
-		{
-			SetErrPackage("Initial::OpenConfig", m_csDevSN, errDev, FingerPrint_UserErrorCode_OPEN_ROOT_FAILED_ONINIT);
-			AlarmDEC();
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Open_ID).setResultCode("RTA2402")("指纹仪实体初始化时,打开root.ini文件失败");
-			return 2;
-		}
-		CSimpleStringA strVendor(true);
-		CSimpleStringA strVersion(true);
-		CSimpleStringA strBatch(true);
-		spConfig->ReadConfigValue("Device.PinPad", "Vendor", strVendor);
-		spConfig->ReadConfigValue("Device.PinPad", "Version", strVersion);
-		spConfig->ReadConfigValue("Device.PinPad", "Batch", strBatch);
-		if (strVendor.IsNullOrEmpty() || strVersion.IsNullOrEmpty() || strBatch.IsNullOrEmpty()) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Some related node is not set, cannot continue.");
-		}
-		else {
-			strBatch = "1";
-			if (!strVendor.Compare("Hyosung", true)) {
-				strVersion = "1";
-			}
-			else {
-				if (!m_csMachineType.Compare("RVC.Stand2S", true)) {
-					strVersion = "7";
-					//TODO: Support new or old edition machine.
-				}
-				else if (!m_csMachineType.Compare("RVC.CardStore", true)) {
-					strVersion = "5";
-				}
-				else { //TODO:new machine
-					strVersion = "1";
-				}
-			}
-			VendorLibInfo tmpVendorLibInfo(GetEntityBase()->GetEntityName());
-			tmpVendorLibInfo.strVendor = strVendor;
-			tmpVendorLibInfo.strVersion = strVersion;
-			tmpVendorLibInfo.strBatch = strBatch;
-			LogWarn(Severity_Low, Error_Debug, FingerPrint_UserErrorCode_Compact_RootIni, tmpVendorLibInfo.toLibNameString());
-
-			pEntity->vendorLibInfo = tmpVendorLibInfo;
-			triedFlag = !tmpVendorLibInfo.IsNotConfig();
-		}
-	}
-	FulfillAdapterInfoFrom(pEntity->vendorLibInfo);
-	LogWarn(Severity_Low, Error_Unexpect, FingerPrint_UserErrorCode_ROOT_INFO, m_adapterInfo.adapterFilePath.GetData());
 	m_bOpened = false;
 	if (pEntity->vendorLibInfo.IsNotConfig()) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Not config, Allow this condition happend.");
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("没有配置,将其视为指纹仪设备打开成功");
 		return 0;
 	}
+	FulfillAdapterInfoFrom(pEntity->vendorLibInfo);
+	LogWarn(Severity_Low, Error_Unexpect, FingerPrint_UserErrorCode_ROOT_INFO, m_adapterInfo.adapterFilePath.GetData());
 	pEntity->InitializeVendorLogSwitch();
 	ErrorCodeEnum err = LoadUpAdapterLibrary();
 	if (!IS_SUCCEED(err))
 	{
 		if (err != Error_NotExist) { //文件存在,只是因为其他原因导致加载失败的
+			//2024-12-10:4275780002, 1225300001 两台终端存在该情况
 			LogWarn(Severity_High, Error_NotInit, FingerPrint_UserErrorCode_LOAD_ADAPTER_FAILED,
 				CSimpleStringA::Format("Load library file: %s failed, GLE=%d", (LPCTSTR)m_adapterInfo.adapterFileName, GetLastError()));
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Open_ID).setResultCode("RTA2405")("加载厂商适配器失败");
 			return 2;
 		}
 		else {
-			if (!triedFlag) {//是在root.ini进行配置的,而不是程序推断的
-				LogWarn(Severity_High, Error_DevLoadFileFailed, FingerPrint_UserErrorCode_VENDOR_ADAPTER_NOT_EXIST,
-					CSimpleStringA::Format("library file: %s is not existed!", (LPCTSTR)m_adapterInfo.adapterFileName));
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Open_ID).setResultCode("RTA2404")("厂商适配器不存在dep中");
-				return 2;
-			}
-			else {//程序推断出来的适配器名称,但本地不存在该文件,放弃吧
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Config programme,  Allow this condition happend.");
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("动态配置,没有该文件,放弃之");
-				return 0;
-			}
+			//2024年12月10日:7555870003 5715350008 两台终端存在该情况
+			LogWarn(Severity_High, Error_DevLoadFileFailed, FingerPrint_UserErrorCode_VENDOR_ADAPTER_NOT_EXIST,
+				CSimpleStringA::Format("library file: %s is not existed!", (LPCTSTR)m_adapterInfo.adapterFileName));
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Open_ID).setResultCode("RTA2404")("厂商适配器不存在dep中");
+			return 2;
 		}
 
 	}
@@ -436,10 +378,8 @@ int CFingerPrintFSM::Initial()
 	else {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::GetDevCategory").setCostTime(l_endTime - l_beginTime)("Initial::GetDevCategory");
 	}
-
 	m_adapterInfo.FulfillCategoryInfo(m_devCatInfo);
 	m_bOpened = true;
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("FingerPrint entity open success.");
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("指纹仪设备打开成功");
 	return 0;
 }
@@ -535,8 +475,7 @@ int CFingerPrintFSM::GetFingerPrint(SpReqAnsContext<FingerPrintService_GetFinger
 		delete[] lpbFeature;
 		lpbFeature = NULL;
 		
-		SetErrPackage("GetFingerPrint::GetPath", m_csDevSN, eErr, FingerPrint_UserErrorCode_GET_DEP_PATH_FAILED_REGISTER);
-		AlarmDEC();
+		LogWarn(Severity_Middle, Error_Unexpect, FingerPrint_UserErrorCode_GET_DEP_PATH_FAILED_REGISTER, "GetFingerPrint::GetPath is fail");
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Scan_ID).setResultCode("RTA2410")("指纹扫描失败,获取dep路径失败");
 		ctx->Answer(Error_Param);
 		return 0;
@@ -828,8 +767,7 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 		ctx->Answer(Error_Succeed);
 	}
 	else {
-		SetErrPackage("generate template failed", m_csDevSN, Error_Unexpect, FingerPrint_UserErrorCode_GETTEMPLATE_FAILED);
-		AlarmDEC();
+		LogWarn(Severity_Middle, Error_Unexpect, FingerPrint_UserErrorCode_GETTEMPLATE_FAILED, "generate template failed");
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setResultCode("RTA2419")("指纹仪模板生成失败");
 		ctx->Answer(errCode, FingerPrint_UserErrorCode_GETTEMPLATE_FAILED);
 	}

+ 0 - 2
Module/mod_FingerPrint/FingerPrint_UserErrorCode.h

@@ -50,7 +50,5 @@
 #define FingerPrint_UserErrorCode_Real_Root_Config						( FingerPrint_UserErrorCode_Start + 41 )	//实际加载的root配置
 
 #define FingerPrint_UserErrorCode_FindFile_in_DepBak					( FingerPrint_UserErrorCode_Start + 50 )	//在旧Dep路径下找到文件
-#define FingerPrint_UserErrorCode_Compact_RootIni					( FingerPrint_UserErrorCode_Start + 51 )	//本地未做硬件配置,实体做兼容
-
 
 #endif

+ 1 - 1
Module/mod_HSPScanner/HSPSCanner_UserErrorCode.h

@@ -19,7 +19,7 @@
 
 #define HSPScanner_UserErrorCode_Start							0x21700200
 #define HSPScanner_UserErrorCode_READ_IMAGE_FILE_FAILED			0x21700201
-#define HSPScanner_UserErrorCode_CREATE_OBJECT_FAILED			0x21700202
+#define HSPScanner_UserErrorCode_LOAD_DLLFILE_NOTEIXT			0x21700202
 #define HSPScanner_UserErrorCode_LOAD_DLLFILE_FAILED			0x21700203
 #define HSPScanner_UserErrorCode_GET_CDC_ADDR_FAILED			0x21700204
 #define HSPScanner_UserErrorCode_GET_RDC_ADDR_FAILED			0x21700205

+ 7 - 1
Module/mod_HSPScanner/HSPScannerFSM.cpp

@@ -129,7 +129,7 @@ LPCTSTR CHSPScannerFSM::MapCode2RTAString(DWORD dwValue)
 	case HSPScanner_UserErrorCode_READ_IMAGE_FILE_FAILED:
 		return "RTA2N0D";
 		break;
-	case HSPScanner_UserErrorCode_CREATE_OBJECT_FAILED:
+	case HSPScanner_UserErrorCode_LOAD_DLLFILE_NOTEIXT:
 		return "RTA2N0E";
 		break;
 	case HSPScanner_UserErrorCode_LOAD_DLLFILE_FAILED:
@@ -246,6 +246,12 @@ ErrorCodeEnum CHSPScannerFSM::OnInit()
 			return erroCode;
 		}
 	}
+	else if (erroCode == Error_NotExist) {
+		SetLastUserCode(HSPScanner_UserErrorCode_LOAD_DLLFILE_NOTEIXT);
+	}
+	else {
+		SetLastUserCode(HSPScanner_UserErrorCode_LOAD_DLLFILE_FAILED);
+	}
 
 FAIL:
 	m_bOpened = false;

+ 14 - 76
Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp

@@ -403,13 +403,9 @@ void ResourceWatcherFSM::TriggerAtStatusChanged(bool bMStatus)
                 RecoverDDEClipboardEnable();
             }
             GetEntityBase()->GetFunction()->PostThreadPoolTask(new DetectSoftwareInstallStatusTask(this));
-            GetEntityBase()->GetFunction()->PostThreadPoolTask(new UploadMonitorInfoTask(this));
-            AlarmSystemBasicInfo();
-#else
-			AlarmSystemBasicInfo();
 #endif //RVC_OS_LINUX
+            AlarmSystemBasicInfo();
         }
-
     }
 }
 
@@ -1747,15 +1743,6 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
 			}
         }
         break;
-	case 5: //设置使用EXE注册表自启动(涵盖所有类型)
-		if (nStartupType == 1 || nStartupType == 0 || nStartupType == 3 || nStartupType == 4 || nStartupType == 5) {
-			rc = ChangeAutoStartupWithExe();
-			if (rc == Error_Succeed && (nStartupType == 3 || nStartupType == 4 || nStartupType == 5)) {
-				toDeleteAutoStartFile = true;
-                //这里不做清理,因为以前也没有问题
-			}
-		}
-		break;
     case 3: //不设置开机自启动
 		if (nStartupType == 1 || nStartupType == 2) {
 			rc = ChangeAutoStartupWithExe(false, true);
@@ -1770,10 +1757,19 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
 			rc = ChangeAutoStartupWithExe(true);
 		}
         break;
+	case 5: //设置使用EXE注册表自启动(涵盖所有类型)
+		if (nStartupType == 1 || nStartupType == 0 || nStartupType == 3 || nStartupType == 4 || nStartupType == 5) {
+			rc = ChangeAutoStartupWithExe();
+			if (rc == Error_Succeed && (nStartupType == 3 || nStartupType == 4 || nStartupType == 5)) {
+				toDeleteAutoStartFile = true;
+				//这里不做清理,因为以前也没有问题
+			}
+		}
+		break;
 	case 6: //设置为开机后开始菜单自启动(涵盖所有类型)
     {
         CSimpleStringA exePath(true);
-        if (nStartupType == 1 || nStartupType == 2 || nStartupType == 3 || nStartupType == 5) {
+        if (nStartupType == 1 || nStartupType == 2 || nStartupType == 3 || nStartupType == 5 || nStartupType == 0) {
             CSimpleStringA strNoUse(true);
             if (!m_skipDesktopDetect && !IsDesktopIconExist(strNoUse)) {
 				LogWarn(Severity_Low, Error_InvalidState, LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_ABORT,
@@ -1785,7 +1781,7 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
 					//TODO: 如果出现修改注册表成功但是设置自启动图标失败的情况  [Gifur@202492]
 					rc = ChangeAutoStartupWithExe(false, true);
 				}
-				else if (nStartupType == 3 || nStartupType == 5) {
+				else if (nStartupType == 3 || nStartupType == 5 || nStartupType == 0) {
                     rc = Error_Succeed;
 				}
 				if (rc == Error_Succeed) {
@@ -1798,7 +1794,7 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
 						LogWarn(Severity_Low, Error_Debug, LOG_WARN_CREATE_EXELINK_FROMAUTOSTART_SUCC,
 							CSimpleStringA::Format("Create autostart lnk succ, old start type: %d", nStartupType));
                         if ((nStartupType == 3 || nStartupType == 5)) { toDeleteAutoStartFile = true; }
-						DeleteDuplicateAutoStartFile(true);
+						if(nStartupType != 0) DeleteDuplicateAutoStartFile(true);
 					}
 				}
 			}
@@ -1808,7 +1804,7 @@ void ResourceWatcherFSM::DetectAutoStartupCover()
 			}
         }
     }
-        break;
+    break;
 	case 7: //设置为开机后开始菜单自启动(针对仅有桌面开机自启动的)
 	{
 		CSimpleStringA exePath(true);
@@ -4670,64 +4666,6 @@ BOOL ResourceWatcherFSM::DetectIsFirstRunAtBoot()
 }
 
 #ifdef RVC_OS_LINUX
-void ResourceWatcherFSM::UploadMonitorSettings()
-{
-    CSmartPointer<IConfigInfo> spCtSettingConfig;
-    GetEntityBase()->GetFunction()->OpenConfig(Config_CenterSetting, spCtSettingConfig);
-    int nSwitchOff(0);
-    spCtSettingConfig->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "MonitorListenOFF", nSwitchOff);
-    if (!!nSwitchOff) {
-        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Cancel monitor change listen!");
-        if (m_bFirstRunAfterBoot) {
-            CSimpleStringA value(true);
-            bool res = GetMonitorInfo(value);
-            LogWarn(Severity_Low, Error_Debug, LOG_INFO_MONITOR_SETTINGS, value);
-        }
-    }
-    else
-    {
-
-        int nInterval(10000);
-        int nValue(0);
-        spCtSettingConfig->ReadConfigValueInt(GetEntityBase()->GetEntityName(), "MonitorListenInterval", nValue);
-        if (nValue >= 10000) {
-            DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Update monitor listen interval from %d to %d", nInterval, nValue);
-            nInterval = nValue;
-        }
-
-        CSimpleStringA strLastMonitor(true);
-        bool readFromCfgFalg(true);
-        CSmartPointer<IConfigInfo> spRunConfig;
-        GetEntityBase()->GetFunction()->OpenConfig(Config_Run, spRunConfig);
-        spRunConfig->ReadConfigValue("MonitorAttribute", "LastInfo", strLastMonitor);
-
-        do
-        {
-            CSimpleStringA value(true);
-            bool res = GetMonitorInfo(value);
-            if (!value.IsNullOrEmpty() && (strLastMonitor.IsNullOrEmpty() || (strLastMonitor.Compare(value) != 0))) {
-                LogWarn(Severity_Low, Error_Debug, LOG_INFO_MONITOR_SETTINGS, value);
-                CSmartPointer<IConfigInfo> spRunConfig;
-                GetEntityBase()->GetFunction()->OpenConfig(Config_Run, spRunConfig);
-                spRunConfig->WriteConfigValue("MonitorAttribute", "LastInfo", value);
-                strLastMonitor = value;
-                if (readFromCfgFalg) {
-                    readFromCfgFalg = false;
-                }
-
-            }
-            else if (readFromCfgFalg && !strLastMonitor.IsNullOrEmpty() && strLastMonitor.Compare(value) == 0)
-            {
-                LogWarn(Severity_Low, Error_Debug, LOG_INFO_MONITOR_SETTINGS, value);
-                readFromCfgFalg = false;
-            }
-
-            Sleep(nInterval);
-
-        } while (true);
-    }
-}
-
 void ResourceWatcherFSM::DetectSoftwareInstallStatus()
 {
     CSmartPointer<IConfigInfo> spCtSettingConfig;

+ 0 - 10
Module/mod_ResourceWatcher/ResourceWatcherFSM.h

@@ -201,7 +201,6 @@ public:
 		return m_bFirstRunAfterBoot;
 	}
 #ifdef RVC_OS_LINUX
-	void UploadMonitorSettings();
 	bool GetMonitorInfo(CSimpleStringA& outInfo);
 	bool GetSysActiveStatus(CSimpleStringA& outInfo);
 	void DetectSoftwareInstallStatus();
@@ -386,15 +385,6 @@ public:
 };
 
 #ifdef RVC_OS_LINUX
-struct UploadMonitorInfoTask : public ITaskSp
-{
-	ResourceWatcherFSM* m_pFSM;
-	UploadMonitorInfoTask(ResourceWatcherFSM* pFSM) : m_pFSM(pFSM) {}
-	void Process()
-	{
-		m_pFSM->UploadMonitorSettings();
-	}
-};
 
 struct DetectSoftwareInstallStatusTask : public ITaskSp
 {

+ 7 - 41
Module/mod_cardissuerstore/CardIssuerFSM.cpp

@@ -18,9 +18,6 @@
 #include <atltime.h>
 #endif //RVC_OS_WIN
 
-char tmpxx[1024];
-char testIC[1024];
-
 #include "CardIssuerClass.h"
 #include "mod_cardissuer.h"
 #include "stdafx.h"
@@ -1394,7 +1391,7 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("create card process failed.");
 		return Error_Resource;
 	}
-	Load();
+	m_csDevSN = "";
 	CSystemStaticInfo sysInfo;
 	//oilyang 20160331
 	//so many function always return Error_Succeed,so is useless to process it.
@@ -1409,13 +1406,7 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 	//如果是东信卡库,将CardLibDB_CMB.db3文件拷贝到运行时中,若运行时已存在该文件,不再拷贝
 	if(!m_csMachineType.Compare("RVC.CardStore", true))
 	{
-		CSmartPointer<IConfigInfo> spConfig;
-		GetEntityBase()->GetFunction()->OpenConfig(Config_Root, spConfig);
-		
-		CSimpleStringA csVendor("");
-		spConfig->ReadConfigValue("Device.CardIssuer", "Vendor", csVendor);
-
-		if(!csVendor.Compare("Eastcom", true))
+		if(!sysInfo.strManufacturer.Compare("Eastcom", true))
 		{
 			CSimpleStringA runinfoPath(true);
 			CSimpleStringA depPath(true);
@@ -1447,7 +1438,8 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 		}
 	}
 
-	//因替换实体名,需要兼容把以前旧的运行时文件拷贝成新的实体名运行文件
+	//因替换实体名,需要兼容把以前旧的运行时文件拷贝成新的实体名运行文件,卡机分离后,拷贝旧版运行时文件,后期稳定后直接去除
+	//////////////////////////////////////////////////////////////////////////
 	CSimpleStringA runinfoPath(true);
 	CSmartPointer<IConfigInfo> spConfig;
 	ErrorCodeEnum  err = GetEntityBase()->GetFunction()->GetPath("RunInfo", runinfoPath);
@@ -1535,7 +1527,7 @@ ErrorCodeEnum CCardIssuerFSM::OnInit()
 		}
 	}
 	
-
+	//////////////////////////////////////////////////////////////////////////
 
 #endif //RVC_OS_WIN
 	m_devStatus.eMedia = CI_MEDIA_NOTPRESENT;
@@ -1828,10 +1820,10 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 	long l_beginTime,l_endTime;
 	do {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CreateDevComponent suc. m_port:%d, m_baudRate:%d, pDevSN:%s",
-			m_port, m_baudRate, pDevSN);
+			m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt(), pDevSN);
 
 		l_beginTime = GetTickCountRVC();
-		eErrDev = m_hDevHelper->DevOpenEx(m_port, m_baudRate, btOpenType, pDevSN, m_connectType);
+		eErrDev = m_hDevHelper->DevOpenEx(m_adapterInfo.GetPortInt(), m_adapterInfo.GetBaudrateInt(), btOpenType, pDevSN, m_connectType);
 		l_endTime = GetTickCountRVC();
 		
 		if (eErrDev == Error_Succeed)
@@ -1966,15 +1958,6 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 		}
 		if (m_hopperNum == 1 && btOpenType == DEV_OPEN_TYPE_COM)//oilyang 如果没有配置,使用原来的配置
 		{
-			//spConfig->ReadConfigValueInt("RunInfo", "CardRemains", m_remainsEx[0]);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardIssued", m_issuedEx[0]);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardCaptured", m_CardCaptured);
-			//spConfig->ReadConfigValueInt("RunInfo", "IsIssue", isIssue);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardMixed", m_mixedEx[0]);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardInit", m_CardInitEx[0]);
-			//spConfig->ReadConfigValueInt("RunInfo", "CardPercent", m_CardPercentEx[0]);
-			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("use old record, CardRemains:%d, CardIssued:%d, CardCaptured:%d, IsIssue:%d, CardMixed:%d, CardInit:%d",
-			//	m_remainsEx[0], m_issuedEx[0], m_CardCaptured, isIssue, m_mixedEx[0], m_CardInitEx[0]);
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("use new hopper cfg record");
 		}
 		//oilyang 回写卡机配置
@@ -2081,24 +2064,7 @@ ErrorCodeEnum CCardIssuerFSM::OpenDevice(BYTE btOpenType, const char* pDevSN)
 		}
 	}
 }
-void CCardIssuerFSM::Load()
-{
-	LOG_FUNCTION();
-	/** 使用封装的公共逻辑去获取适配器打开的相关信息,参考其他硬件实体  [Gifur@20241111]*/
-	CSmartPointer<IConfigInfo> spConfig;
-	ErrorCodeEnum eErrDev = GetEntityBase()->GetFunction()->OpenConfig(Config_Root, spConfig);
-	if (spConfig == NULL)
-	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("<Load>, open root.ini failed");
-		return;
-	}
-	spConfig->ReadConfigValueInt("Device.CardIssuer", "Baudrate", m_baudRate);
-	spConfig->ReadConfigValueInt("Device.CardIssuer", "Port", m_port);
 
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_baudRate:%d, m_port:%d", m_baudRate, m_port);
-
-	m_csDevSN = "";
-}
 int CCardIssuerFSM::Initial()
 {
 	m_bOpening = true;

+ 1 - 2
Module/mod_cardissuerstore/CardIssuerFSM.h

@@ -1182,7 +1182,6 @@ public:
 	void s19_on_exit();
 	unsigned int s19_on_event(FSMEvent* event);
 	
-	void Load();
 	ErrorCodeEnum OpenDevice(BYTE btOpenType, const char *pDevSN);
 	int Initial();
 	bool GetDevStatus(bool bPrint=true);
@@ -1304,7 +1303,7 @@ private:
 	int m_issueStatusFromFile, m_issueStatus/*the status maybe changed by Business call*/;
 	//1:default, 2:SCI, 3:no cfg
 	int m_machineType;
-	int m_port, m_baudRate, m_currentHopper, m_devOpenFailedCount;
+	int m_currentHopper, m_devOpenFailedCount;
 	int m_maxSlot,m_findCard,m_cardPos,m_currentFSMState,m_maxRetainCount, m_eacQueryFlag/*accout query*/
 		,m_ICRetryTimes;
 	CSimpleStringA m_CardBoxNoEx[HOPPER_NUM], m_PsbCodeEx[HOPPER_NUM], m_PsbNameEx[HOPPER_NUM], m_MaintainerEx[HOPPER_NUM],m_csMaintainTimeEx[HOPPER_NUM];

+ 39 - 17
Module/mod_gpio/mod_gpio.cpp

@@ -269,15 +269,18 @@ void CGpioEntity::ToLogRootINIInfo()
     CSimpleStringA entityName(GetEntityName());
 	if (!entityName.IsNullOrEmpty()) {
 		CSimpleStringA sectionName = CSimpleStringA::Format("Device.%s", entityName.GetData());
-		CSimpleStringA csVendor(true), csVersion(true), csBatch(true), csPort(true), csBaudrate(true);
-		spConfigRoot->ReadConfigValue(sectionName, "Vendor", csVendor);
-		spConfigRoot->ReadConfigValue(sectionName, "Version", csVersion);
-		spConfigRoot->ReadConfigValue(sectionName, "Batch", csBatch);
+		CSimpleStringA csVendor(true), csVersion(true), csBatch(true), csPort(true), csBaudrate(true), csFileName(true);
+		spConfigRoot->ReadConfigValue(sectionName, "File", csFileName);
+		if (csFileName.IsNullOrEmpty()) {
+			spConfigRoot->ReadConfigValue(sectionName, "Vendor", csVendor);
+			spConfigRoot->ReadConfigValue(sectionName, "Version", csVersion);
+			spConfigRoot->ReadConfigValue(sectionName, "Batch", csBatch);
+		}
 		spConfigRoot->ReadConfigValue(sectionName, "Port", csPort);
 		spConfigRoot->ReadConfigValue(sectionName, "Baudrate", csBaudrate);
-
 		std::map<std::string, std::string> rootInfo;
 		CSimpleStringA csCheckData(true), csKeySN(true);
+		rootInfo["File"] = csFileName.GetData();
 		rootInfo["Vendor"] = csVendor.GetData();
 		rootInfo["Version"] = csVersion.GetData();
 		rootInfo["Batch"] = csBatch.GetData();
@@ -454,22 +457,42 @@ ErrorCodeEnum CGpioEntity::Initial()
 	m_adapterInfo.strPort = csPort;
 	m_adapterInfo.strBaudrate = csBaudrate;
 	m_adapterInfo.strPortNum = csPortNum; //Just load from Config
-
+	BOOL nSwitchFlag(FALSE);
+	BOOL useOld = TRUE;
+	CSmartPointer<IConfigInfo> spConfigCenter;
+	eErrDev = spEntityFunction->OpenConfig(Config_CenterSetting, spConfigCenter);
+	if (eErrDev == Error_Succeed) {
+		int nValue(0);
+		spConfigCenter->ReadConfigValueInt(GetEntityName(), "PortNumChoiceSwitch", nValue);
+		if (nValue != 0) {
+			nSwitchFlag = TRUE;
+		}
+	}
 #if defined(RVC_OS_WIN)
-    DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("[%s],[%s],[%s]", m_adapterInfo.strVendor.GetData()
-		, m_adapterInfo.strVersion.GetData(), m_adapterInfo.strBatch.GetData());
-    //TODO: 这个看怎么兼容后移除  [Gifur@202494]
-	//Gpio.keba.1.1 , Gpio.Hyosung.1.1, Gpio.kxd.1.1 均为 老设备,2024-9-11发现现有生产有2249台
-	if (!_stricmp(m_adapterInfo.strVendor, "Hyosung") || !_stricmp(m_adapterInfo.strVendor, "Keba") || !_stricmp(m_adapterInfo.strVendor, "Kxd")) {
-		if (m_adapterInfo.strVersion == "1" && m_adapterInfo.strVersion == "1") {
-			m_bNewVersion = FALSE;
+	if (nSwitchFlag && !csPortNum.IsNullOrEmpty()) {
+		if (csPortNum.Compare("3") == 0) { m_bNewVersion = FALSE;  useOld = FALSE; }
+		else if (csPortNum.Compare("4") == 0) { m_bNewVersion = TRUE;  useOld = FALSE; }
+	}
+	if (useOld) {
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("[%s],[%s],[%s]", m_adapterInfo.strVendor.GetData()
+			, m_adapterInfo.strVersion.GetData(), m_adapterInfo.strBatch.GetData());
+		//Gpio.keba.1.1 , Gpio.Hyosung.1.1, Gpio.kxd.1.1 均为 老设备,2024-9-11发现现有生产有2249台
+		if (!_stricmp(m_adapterInfo.strVendor, "Hyosung") || !_stricmp(m_adapterInfo.strVendor, "Keba") || !_stricmp(m_adapterInfo.strVendor, "Kxd")) {
+			if (m_adapterInfo.strVersion == "1" && m_adapterInfo.strBatch == "1") {
+				m_bNewVersion = FALSE;
+			}
 		}
 	}
-#endif
+#endif //RVC_OS_WIN
 	bool theSameFlag = false;
 	if ((m_bNewVersion && csPortNum.Compare("4") == 0) || (!m_bNewVersion && csPortNum.Compare("3") == 0)) { theSameFlag = true; }
 	LogWarn(Severity_Low, Error_Debug, GPIO_UserErrorCode_PortNumOldVersion
-		, CSimpleStringA::Format("Required:%s,NewVersion:%s,PortNum:%s", theSameFlag ? "True" : "False", m_bNewVersion ? "True" : "False", csPortNum.GetData()));
+		, CSimpleStringA::Format(",%s,%s,%s,%s,%s"
+			, theSameFlag ? "True" : "False"
+			, m_bNewVersion ? "True" : "False"
+			, csPortNum.GetData()
+			, nSwitchFlag ? "True" : "False"
+			, useOld ? "True" : "False"));
 
 	m_hDevHelper.SetAdapterName(GetEntityName());
     eErrDev = m_hDevHelper.LoadUp(dllName);
@@ -478,7 +501,6 @@ ErrorCodeEnum CGpioEntity::Initial()
         m_bOpening = false;
         return Error_DevLoadFileFailed;
     }
-
 	GpioInitParam initParam;
 	initParam.dwPort = m_adapterInfo.GetPortInt();
 	initParam.dwBaudRate = m_adapterInfo.GetBaudrateInt();
@@ -491,7 +513,7 @@ ErrorCodeEnum CGpioEntity::Initial()
 	if (m_bNewVersion) {
 		initParam.dwPortNum = 4;
 		initParam.dir[3] = true;
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("New available 4 port num");
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("New available 4 port num");
 	}
     int initTries = 0;
 	ErrorCodeEnum err;