Przeglądaj źródła

#IQRV #comment [Module] 硬件实体root.ini信息上送

gifur 3 lat temu
rodzic
commit
c534311c5b

+ 77 - 0
Module/include/DevFSMCommBase.hpp

@@ -161,6 +161,19 @@ static std::map<CSimpleStringA, DWORD> WarnCodeMap = {
 	{"Ups", 0x20e00201}
 };
 
+static std::map<CSimpleStringA, DWORD> RootIniCodeMap = {
+    {"CardIssuer", 0x20300299},
+    {"ContactlessCard", 0x21300224},
+    {"CardSwiper", 0x20200238},
+    {"FingerPrint", 0x20400229},
+    {"IDCertificate", 0x2010021f},
+    {"PinPad", 0x2060021f},
+    {"Gpio", 0x20900203},
+    {"HSPScanner", 0x2170020f},
+    {"WatchDog", 0x20d00204},
+    {"Ups", 0x20e00204}
+};
+
 inline static VendorNameType GetCurVendorType(LPCTSTR vendorName)
 {
 	if (vendorName == NULL || strlen(vendorName) == 0)  {
@@ -445,6 +458,70 @@ public:
 		return dwCode;
 	}
 
+	void ToLogRootINIInfoOnce(FSMBase* pFSM)
+	{
+        CSmartPointer<IConfigInfo> spConfig;
+        pFSM->GetEntityBase()->GetFunction()->OpenConfig(Config_Cache, spConfig);
+		CSimpleStringA entityName(pFSM->GetEntityBase()->GetEntityName());
+		int nUploadTime(0);
+		spConfig->ReadConfigValueInt("RootUploadFlag", entityName, nUploadTime);
+
+        SYSTEMTIME stNow = CSmallDateTime::GetNow().ToSystemTime();
+        SYSTEMTIME lastUploadTime = CSmallDateTime(nUploadTime).ToSystemTime();
+
+        if (lastUploadTime.wYear != stNow.wYear || lastUploadTime.wMonth != stNow.wMonth || lastUploadTime.wDay != stNow.wDay) {
+			ToLogRootINIInfo(pFSM);
+			spConfig->WriteConfigValue("RootUploadFlag", entityName, CSimpleStringA::Format("0x%08X", (DWORD)CSmallDateTime::GetNow()));
+        }
+	}
+
+	/** GPIO不调用此接口 [Gifur@20221025]*/
+	void ToLogRootINIInfo(FSMBase* pFSM)
+	{
+        CSmartPointer<IConfigInfo> spConfigRoot;
+        pFSM->GetEntityBase()->GetFunction()->OpenConfig(Config_Root, spConfigRoot);
+
+        CSimpleStringA entityName(pFSM->GetEntityBase()->GetEntityName());
+        CSimpleStringA sectionName = CSimpleStringA::Format("Device.%s", entityName.GetData());
+        CSimpleStringA csVendor(true), csVersion(true), csBatch(true), csPort(true), csBaudrate(true);
+        spConfigRoot->ReadConfigValue(sectionName.GetData(), "Vendor", csVendor);
+        spConfigRoot->ReadConfigValue(sectionName.GetData(), "Version", csVersion);
+        spConfigRoot->ReadConfigValue(sectionName.GetData(), "Batch", csBatch);
+        spConfigRoot->ReadConfigValue(sectionName.GetData(), "Port", csPort);
+        spConfigRoot->ReadConfigValue(sectionName.GetData(), "Baudrate", csBaudrate);
+
+		std::map<std::string, std::string> rootInfo;
+        CSimpleStringA csPortNum(true), csCheckData(true), csKeySN(true), csInOutDir(true);
+		rootInfo["Vendor"] = csVendor;
+		rootInfo["Version"] = csVersion;
+        rootInfo["Batch"] = csBatch;
+        rootInfo["Port"] = csPort;
+        rootInfo["Baudrate"] = csBaudrate;
+
+        if (!entityName.Compare("Gpio")) {
+            spConfigRoot->ReadConfigValue(sectionName.GetData(), "PortNum", csPortNum);
+            spConfigRoot->ReadConfigValue(sectionName.GetData(), "InOutDir", csInOutDir);
+            rootInfo["PortNum"] = csPortNum;
+            rootInfo["InOutDir"] = csInOutDir;
+        } else if (!entityName.Compare("PinPad")) {
+            spConfigRoot->ReadConfigValue(sectionName.GetData(), "Checkdata", csCheckData);
+            spConfigRoot->ReadConfigValue(sectionName.GetData(), "Keysn", csKeySN);
+            rootInfo["Checkdata"] = csCheckData;
+            rootInfo["Keysn"] = csKeySN;
+        }
+
+        std::pair<bool, std::string> strResult;
+        strResult = generateJsonStr(rootInfo);
+        strResult.second.c_str();
+
+        if (!entityName.IsNullOrEmpty()) {
+            LogWarn(Severity_Low, Error_Unexpect, RootIniCodeMap[entityName], strResult.second.c_str());
+        } else {
+            Dbg("Entity Name is empty, please check!!!");
+        }
+        return;
+	}
+
 	void ToLogWarnInfoAboutTerm(FSMBase* pFSM, AdapterInfo adapterInfo)
 	{
 		CSmartPointer<IConfigInfo> spConfigRoot;

+ 1 - 0
Module/mod_ContactlessCard/ContactlessFSM.cpp

@@ -83,6 +83,7 @@ void CContactlessCardFSM::s2_on_entry()
 
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
+        ToLogRootINIInfoOnce(this);
 		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
 	}
 }

+ 1 - 0
Module/mod_FingerPrint/FingerPrintFSM.cpp

@@ -30,6 +30,7 @@ void CFingerPrintFSM::s0_on_entry()
 	m_devState = DEVICE_STATUS_NORMAL;
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
+		ToLogRootINIInfoOnce(this);
 		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
 	}
 }

+ 1 - 0
Module/mod_HSPScanner/HSPScannerFSM.cpp

@@ -184,6 +184,7 @@ void CHSPScannerFSM::s0_on_entry()
 
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
+		ToLogRootINIInfo(this);
 		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
 	}
 }

+ 1 - 0
Module/mod_IDCertificate/IDCertFSM.cpp

@@ -64,6 +64,7 @@ void CIDCertFSM::s0_on_entry()
 
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
+		ToLogRootINIInfo(this);
 		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
 	}
 }

+ 1 - 0
Module/mod_cardissuer/CardIssuerFSM.cpp

@@ -212,6 +212,7 @@ void CCardIssuerFSM::s2_on_entry()
 	}
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
+		ToLogRootINIInfoOnce(this);
 		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
 	}
 }

+ 40 - 0
Module/mod_gpio/mod_gpio.cpp

@@ -160,6 +160,44 @@ int HexBuf2StrBuf(PBYTE hexBuf, char** strBuf, DWORD len)
 	return 0;
 }
 
+void CGpioEntity::ToLogRootINIInfo()
+{
+    CSmartPointer<IConfigInfo> spConfigRoot;
+    GetFunction()->OpenConfig(Config_Root, spConfigRoot);
+
+    CSimpleStringA entityName(GetEntityName());
+    CSimpleStringA sectionName = CSimpleStringA::Format("Device.%s", entityName.GetData());
+    CSimpleStringA csVendor(true), csVersion(true), csBatch(true), csPort(true), csBaudrate(true);
+    spConfigRoot->ReadConfigValue(sectionName.GetData(), "Vendor", csVendor);
+    spConfigRoot->ReadConfigValue(sectionName.GetData(), "Version", csVersion);
+    spConfigRoot->ReadConfigValue(sectionName.GetData(), "Batch", csBatch);
+    spConfigRoot->ReadConfigValue(sectionName.GetData(), "Port", csPort);
+    spConfigRoot->ReadConfigValue(sectionName.GetData(), "Baudrate", csBaudrate);
+
+    std::map<std::string, std::string> rootInfo;
+    CSimpleStringA csPortNum(true), csCheckData(true), csKeySN(true), csInOutDir(true);
+    rootInfo["Vendor"] = csVendor;
+    rootInfo["Version"] = csVersion;
+    rootInfo["Batch"] = csBatch;
+    rootInfo["Port"] = csPort;
+    rootInfo["Baudrate"] = csBaudrate;
+    spConfigRoot->ReadConfigValue(sectionName.GetData(), "PortNum", csPortNum);
+    spConfigRoot->ReadConfigValue(sectionName.GetData(), "InOutDir", csInOutDir);
+    rootInfo["PortNum"] = csPortNum;
+    rootInfo["InOutDir"] = csInOutDir;
+
+    std::pair<bool, std::string> strResult;
+    strResult = generateJsonStr(rootInfo);
+    strResult.second.c_str();
+
+    if (!entityName.IsNullOrEmpty()) {
+        LogWarn(Severity_Low, Error_Unexpect, GPIO_UserErrorCode_Real_Root_Config, strResult.second.c_str());
+    } else {
+        Dbg("Entity Name is empty, please check!!!");
+    }
+    return;
+}
+
 void CGpioEntity::ToLogWarnInfoAboutTerm(const AdapterInfo& m_adapterInfo)
 {
 	LOG_FUNCTION();
@@ -230,6 +268,7 @@ ErrorCodeEnum CGpioEntity::Initial()
     spConfig->ReadConfigValue("Device.Gpio", "Vendor", devVendor);
     spConfig->ReadConfigValue("Device.Gpio", "Version", devVer);
     spConfig->ReadConfigValue("Device.Gpio", "Batch", devBatch);
+
 #if defined(RVC_OS_WIN)
     DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("[%s],[%s],[%s]", devVendor.GetData(), devVer.GetData(), devBatch.GetData());
     if (!_stricmp(devVendor, "Hyosung") || !_stricmp(devVendor, "Keba") || !_stricmp(devVendor, "Kxd")) {
@@ -357,6 +396,7 @@ ErrorCodeEnum CGpioEntity::Initial()
 
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
+        ToLogRootINIInfo();
 		ToLogWarnInfoAboutTerm(m_adapterInfo);
 	}
 

+ 1 - 0
Module/mod_gpio/mod_gpio.h

@@ -282,6 +282,7 @@ public:
 		const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID, 
 		const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext& pLinkInfo);
 
+	void ToLogRootINIInfo();
 	void ToLogWarnInfoAboutTerm(const AdapterInfo& m_adapterInfo);
 
 private:

+ 1 - 0
Module/mod_pinpad/PinPadFSM.cpp

@@ -136,6 +136,7 @@ void CPinPadFSM::s2_on_entry()
 
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
+		ToLogRootINIInfo(this);
 		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
 	}
 }

+ 1 - 0
Module/mod_ups/UpsFSM.cpp

@@ -79,6 +79,7 @@ void CUpsFSM::s0_on_entry()
 
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
+		ToLogRootINIInfo(this);
 		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
 	}
 }

+ 1 - 0
Module/mod_watchdog/WatchDogFSM.cpp

@@ -25,6 +25,7 @@ void CWatchDogFSM::s0_on_entry()
 	LOG_FUNCTION();
 	if (m_FirstStart) {
 		m_FirstStart = FALSE;
+		ToLogRootINIInfo(this);
 		ToLogWarnInfoAboutTerm(this, m_adapterInfo);
 	}
 }