Explorar o código

Z991239-6460 #comment 合并T25UB201分支内容

80374374 hai 1 mes
pai
achega
781d59fac2
Modificáronse 100 ficheiros con 1370 adicións e 2984 borrados
  1. 23 2
      CMakeLists.txt
  2. 11 0
      CMakeSettings.json
  3. 0 1
      DevAdapter/liblog4vendor/test/test4log.cpp
  4. 0 1
      DevAdapter/self/dep/liblog4vendor/test4log/test4log.cpp
  5. 1 3
      Framework/Common/SpBase.h
  6. 26 38
      Framework/Common/SpUtility.h
  7. 40 42
      Framework/RvcLogSdk/CMakeLists.txt
  8. 1 1
      Framework/RvcLogSdk/log_util.cpp
  9. 3 1
      Framework/libtoolkit/CMakeLists.txt
  10. 37 0
      Framework/libtoolkit/fileutil.c
  11. 3 0
      Framework/libtoolkit/fileutil.h
  12. 7 5
      Framework/libtoolkit/log_periodic.c
  13. 0 6
      Framework/libtoolkit/log_single.c
  14. 103 2
      Framework/libtoolkit/osutil.c
  15. 13 0
      Framework/libtoolkit/osutil.h
  16. 1 0
      Framework/libtoolkit/process_monitor.h
  17. 3 3
      Framework/libtoolkit/shm_mem.c
  18. 2 2
      Framework/libtoolkit/sockutil.c
  19. 143 3
      Framework/libtoolkit/strutil.c
  20. 16 5
      Framework/libtoolkit/strutil.h
  21. 0 1
      Framework/libtoolkit/win/bus_daemon.c
  22. 0 2
      Framework/libtoolkit/win/ioqueue.c
  23. 7 5
      Framework/spbase/CMakeLists.txt
  24. 4 3
      Framework/spbase/CodeSignVerify.cpp
  25. 1 31
      Framework/spbase/SpBase.cpp
  26. 1 10
      Framework/spbase/SpEntity.cpp
  27. 0 10
      Framework/spbase/SpEntityPrivilege.cpp
  28. 0 1
      Framework/spbase/SpMisc.cpp
  29. 1 1
      Framework/spbase/SpSecureClient.cpp
  30. 8 47
      Framework/spbase/sp_cfg.cpp
  31. 3 7
      Framework/spbase/sp_dir.c
  32. 1 15
      Framework/spbase/sp_logwithlink.cpp
  33. 1 1
      Framework/spbase/sp_mod.c
  34. 1 1
      Framework/spbase/sp_pst.h
  35. 1 7
      Framework/spbase/sp_sps.c
  36. 1 0
      Framework/spbase/sp_sps.h
  37. 1 1
      Framework/spbase/sp_var.c
  38. 0 15
      Framework/spshell/log.cpp
  39. 1 44
      Framework/spshell/spshell.cpp
  40. 0 8
      Framework/spshell/svc.cpp
  41. 2 0
      Framework/winpr/include/winpr/crt.h
  42. 2 0
      Framework/winpr/include/winpr/sysinfo.h
  43. 30 0
      Framework/winpr/libwinpr/crt/conversion.c
  44. 2 1
      Framework/winpr/libwinpr/error/error.c
  45. 108 154
      Module/include/CommEntityUtil.hpp
  46. 12 21
      Module/mod_CardReadAdapter/CardReadAdapterFSM.cpp
  47. 56 63
      Module/mod_ContactlessCard/ContactlessFSM.cpp
  48. 0 43
      Module/mod_CustMngrAuth/CustMngrAuthFSM.cpp
  49. 24 102
      Module/mod_FingerPrint/FingerPrintFSM.cpp
  50. 42 14
      Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp
  51. 2 57
      Module/mod_ResourceWatcher/mod_ResourceWatcher.cpp
  52. 0 1
      Module/mod_ResourceWatcher/mod_ResourceWatcher.h
  53. 10 90
      Module/mod_SalesRecorder/mod_SalesRecorder.cpp
  54. 0 8
      Module/mod_SalesRecorder/mod_SalesRecorder.h
  55. 0 1
      Module/mod_ScannerSet/ScannerSetFSM.cpp
  56. 37 216
      Module/mod_UpgradeMgr/UpgradeTaskFSM.cpp
  57. 169 169
      Module/mod_UpgradeMgr/UpgradeTaskFSM.h
  58. 4 41
      Module/mod_UpgradeMgr/mod_UpgradeMgr.cpp
  59. 25 35
      Module/mod_accessauth/AccessAuthFSM.cpp
  60. 1 21
      Module/mod_accessauth/AccessAuthFSM.h
  61. 0 48
      Module/mod_accessauth/MyBase64.cpp
  62. 0 2
      Module/mod_accessauth/MyBase64.h
  63. 0 49
      Module/mod_accessauth/comm.cpp
  64. 0 4
      Module/mod_accessauth/comm.h
  65. 32 71
      Module/mod_accessauth/mod_AccessAuth.cpp
  66. 7 35
      Module/mod_alarm/mod_alarm.cpp
  67. 2 17
      Module/mod_assistantchannel/chan_protocol.h
  68. 1 13
      Module/mod_assistantchannel/mod_assistantchannel.cpp
  69. 172 230
      Module/mod_cardissuerstore/CardIssuerStoreFSM.cpp
  70. 1 1
      Module/mod_chromium/CModTools.cpp
  71. 0 39
      Module/mod_chromium/CWSCodec.cpp
  72. 2 20
      Module/mod_chromium/mod_chromium.cpp
  73. 1 2
      Module/mod_counterconnector/CMakeLists.txt
  74. 5 64
      Module/mod_counterconnector/ConnectorFSM.cpp
  75. 1 26
      Module/mod_counterconnector/ConnectorFSM.h
  76. 1 1
      Module/mod_counterconnector/callroute_nodelist.cpp
  77. 1 1
      Module/mod_counterconnector/http_callrouter.cpp
  78. 0 150
      Module/mod_counterconnector/strutil.cpp
  79. 0 18
      Module/mod_counterconnector/strutil.h
  80. 3 11
      Module/mod_facetracking/mod_facetracking.cpp
  81. 2 4
      Module/mod_guiconsole/guiconsole_define.cpp
  82. 3 2
      Module/mod_guiconsole/mod_guiconsole.cpp
  83. 7 25
      Module/mod_healthmanager/HealthManagerFSM.cpp
  84. 45 76
      Module/mod_healthmanager/mod_healthmanager.cpp
  85. 0 17
      Module/mod_healthmanager/mod_healthmanager.h
  86. 5 22
      Module/mod_heartbeat/HeartBeatFSM.cpp
  87. 5 110
      Module/mod_heartbeat/HeartBeatFSM.h
  88. 7 12
      Module/mod_interactivecontrol/mod_interactivecontrol.cpp
  89. 5 13
      Module/mod_livenessdetection/RvcFaceVideo.cpp
  90. 0 153
      Module/mod_localmediaplay/AdvertManage/BaseFun.cpp
  91. 2 7
      Module/mod_localmediaplay/AdvertManage/BaseFun.h
  92. 12 59
      Module/mod_localmediaplay/AdvertManage/MediaManage.cpp
  93. 7 86
      Module/mod_localmediaplay/AdvertManage/resourceIniParse.cpp
  94. 0 3
      Module/mod_localmediaplay/AdvertManage/resourceIniParse.h
  95. 11 73
      Module/mod_localmediaplay/mod_localmediaplay.cpp
  96. 3 14
      Module/mod_mediacontroller/capture.cpp
  97. 2 19
      Module/mod_mediacontroller/mod_mediacontroller.cpp
  98. 6 6
      Module/mod_pinpad/PinPadFSM.cpp
  99. 24 91
      Module/mod_recorder/mod_recorder.cpp
  100. 4 28
      Module/mod_screenshot/mod_screenshot.cpp

+ 23 - 2
CMakeLists.txt

@@ -26,8 +26,11 @@ project(RvcTerminalApp)
 set(CMAKE_CXX_STANDARD 11)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
+# Have cmake create a compile database
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+
 #  Include extend cmake scripts
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/addin/cmake/ )
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/addin/cmake/)
 
 include(CheckStructHasMember)
 include(CheckIncludeFiles)
@@ -59,6 +62,12 @@ if ($ENV{BUILD_NUMBER})
 else()
 	rvc_record_build_number()
 endif()
+message(STATUS "CMake version: ${CMAKE_VERSION}")
+
+# find the cppcheck binary
+# set(CPPCHECK_ROOT_DIR "D:\\OpenSources\\cppcheck-2.18.0\\out\\build\\x64-Debug\\bin\\Debug")
+# include(CppCheckAnalysis)
+
 set(DEVOPS_ON FALSE)
 set(FORMAT_WITH_SUFFIX TRUE)
 set(DEVOPS_ON_CMAKE_ST FALSE)
@@ -267,7 +276,19 @@ if(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
 		message(STATUS "set win32 platform default ${CMAKE_SYSTEM_PROCESSOR}")
 		set(CMAKE_GENERATOR_PLATFORM "${CMAKE_SYSTEM_PROCESSOR}")
 	endif()
-
+elseif(${CMAKE_GENERATOR} MATCHES "Ninja")
+	if(NOT DEFINED CMAKE_CONFIGURATION_TYPES)
+		set(CMAKE_CONFIGURATION_TYPES "Debug")
+	endif()
+	if(CMAKE_CONFIGURATION_TYPES STREQUAL Release)
+		set(BUILD_TYPE_NAME "Release")
+	elseif(CMAKE_CONFIGURATION_TYPES STREQUAL Debug)
+		message(STATUS "debug type")
+		set(BUILD_TYPE_NAME "Debug")
+	else()
+		message(STATUS "Unknown config type: ${CMAKE_CONFIGURATION_TYPES}")
+		set(BUILD_TYPE_NAME "Default")
+	endif()
 elseif(${CMAKE_GENERATOR} MATCHES "Unix*")
 	if(NOT DEFINED CMAKE_BUILD_TYPE)
 		set(CMAKE_BUILD_TYPE "Debug")

+ 11 - 0
CMakeSettings.json

@@ -69,6 +69,17 @@
       "remoteCopyBuildOutput": false,
       "remoteCopySourcesMethod": "rsync",
       "addressSanitizerRuntimeFlags": "detect_leaks=0"
+    },
+    {
+      "name": "x86-ReleaseWithNinja",
+      "generator": "Ninja",
+      "configurationType": "Release",
+      "buildRoot": "${projectDir}\\out\\build\\${name}",
+      "installRoot": "${projectDir}\\out\\install\\${name}",
+      "cmakeCommandArgs": "",
+      "buildCommandArgs": "",
+      "ctestCommandArgs": "",
+      "inheritEnvironments": [ "msvc_x86" ]
     }
   ]
 }

+ 0 - 1
DevAdapter/liblog4vendor/test/test4log.cpp

@@ -181,7 +181,6 @@ void thread1(int param)
 		} else if(nLevel == 5) {
 			LOG4VTM(TRACE,("this is a TRACE log, times: ") << count);
 		}
-		//Sleep(nInterval);
 	} while (++count < times);
 }
 

+ 0 - 1
DevAdapter/self/dep/liblog4vendor/test4log/test4log.cpp

@@ -153,7 +153,6 @@ UINT WINAPI thread1(LPVOID param)
 		} else if(nLevel == 5) {
 			LOG4VTM(TRACE,_T("this is a TRACE log, times: ") << count);
 		}
-		//Sleep(nInterval);
 	} while (++count < times);
 
 	return 0;

+ 1 - 3
Framework/Common/SpBase.h

@@ -72,8 +72,7 @@ enum LogTypeEnum
 	Log_Warning=2,					// Warning
 	Log_Error=3,						// Error notify
 	Log_Debug=4,						// debug alert ec.Assert
-	Log_Fatal = 5,                     // Fatal notify
-	Log_Notify = 6                     //User notify
+	Log_Fatal = 5                     // Fatal notify
 };
 
 /** define the framework internal behavior log */
@@ -1668,7 +1667,6 @@ SPBASE_API void LogFatal(const SeverityLevelEnum eLevel, ErrorCodeEnum dwSysErro
 SPBASE_API void LogAssert(const char *pszMessage,const char *pszSourceFile,const int nLine);
 SPBASE_API void LogTrace(const char *pszMessage,const char *pszSourceFile,const int nLine);
 
-SPBASE_API void LogNotify(const NotifyLevelEnum eLevel, ErrorCodeEnum dwSysErrorCode, DWORD dwUserErrorCode, const char* pszMessage);
 SPBASE_API void LogEvent(const SeverityLevelEnum eLevel, DWORD dwUserEventCode, const char* pszMessage, const linkContext& t_context);
 SPBASE_API void LogError(const SeverityLevelEnum eLevel, ErrorCodeEnum dwSysErrorCode, DWORD dwUserErrorCode, const char* pszMessage, const linkContext& t_context);
 SPBASE_API void LogWarn(const SeverityLevelEnum eLevel, ErrorCodeEnum dwSysErrorCode, DWORD dwUserErrorCode, const char* pszMessage, const linkContext& t_context);

+ 26 - 38
Framework/Common/SpUtility.h

@@ -40,14 +40,6 @@ namespace SP {
 
 	namespace Utility {
 
-		inline static int hex2int(const char c)
-		{
-			if (c >= '0' && c <= '9') return (c - '0');
-			if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
-			if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
-			return 0xFF;
-		}
-
 		inline bool IsStartWith(std::string const& s, std::string const& prefix)
 		{
 			return s.size() >= prefix.size() && std::equal(prefix.begin(), prefix.end(), s.begin());
@@ -126,36 +118,6 @@ namespace SP {
 			return replaced;
 		}
 
-		/** remembe to delete[] return value if not null*/
-		inline static char* HexStr2Bytes(const std::string& str)
-        {
-            const int sz = str.length();
-            char* ret = new char[sz / 2 + 1];
-            if (ret == NULL) {
-                return NULL;
-            }
-            for (int i = 0; i < sz; i += 2) {
-                ret[i / 2] = (char)(((hex2int(str[i])) << 4) | hex2int(str[i + 1]));
-            }
-			ret[sz / 2] = 0x00;
-            return ret;
-        }
-
-		inline static std::string Bytes2HexStr(char* bytes, std::size_t byteLen)
-        {
-            std::string str("");
-            const std::string conv("0123456789ABCDEF");
-            for (std::size_t i = 0; i < byteLen; ++i) {
-                int b = 0x0F & (bytes[i] >> 4);
-                str.push_back(conv[b]);
-                //str.append(1, conv[b]);
-                b = 0x0F & (bytes[i]);
-                str.push_back(conv[b]);
-                //str.append(1, conv[b]);
-            }
-            return str;
-        }
-
 		template<typename T>
 		std::string fpToString(T value, int precision) {
 			std::ostringstream oss;
@@ -188,6 +150,32 @@ namespace SP {
             return strs;
         }
 
+		/** TODO: Migrate from  LocalMediaplyer::AdvManage, which is functionally similar as the above one [Gifur@2025822]
+		两者实现还有些不一样,参考find_first_of的用法,分隔符号更多是separator的其中之一个字符就生效
+		*/
+		inline static void split2(const std::string& src, const std::string& separator, std::vector<std::string>& dest)
+		{
+			std::string str = src;
+			std::string substring;
+			std::string::size_type start = 0, index;
+
+			do
+			{
+				index = str.find_first_of(separator, start);
+				if (index != std::string::npos)
+				{
+					substring = str.substr(start, index - start);
+					dest.push_back(substring);
+					start = str.find_first_not_of(separator, index);
+					if (start == std::string::npos) return;
+				}
+			} while (index != std::string::npos);
+
+			//the last token
+			substring = str.substr(start);
+			dest.push_back(substring);
+		}
+
 		inline std::string ExtractClassName(std::string const& className) 
 		{
 			std::string strClassName = className;

+ 40 - 42
Framework/RvcLogSdk/CMakeLists.txt

@@ -9,39 +9,39 @@ list(APPEND SQLITE3_SRCS ${CMAKE_SOURCE_DIR}/ThirdParty/Include/uuid4/uuid4.cpp)
 add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS} ${SQLITE3_SRCS})
 
 if(MSVC)
-target_include_directories(${MODULE_NAME} PRIVATE
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/sqlite3
-    ${CONAN_INCLUDE_DIRS_LIBKYSM}
-    ${CONAN_INCLUDE_DIRS_JSONCPP}
-    ${RVCFRAMEWORK_SOURCES_DIR}/RvcRestfulSdk
-    ${CMAKE_SOURCE_DIR}/ThirdParty/Include/CJson
-    ${CMAKE_SOURCE_DIR}/ThirdParty/Include/uuid4
-    ${CONAN_INCLUDE_DIRS_ZLIB}
-    ${CONAN_INCLUDE_DIRS_OPENSSL}
-)
-target_link_directories(${MODULE_NAME} PRIVATE 
-    ${CONAN_LIB_DIRS_LIBKYSM} 
-    ${CONAN_LIB_DIRS_JSONCPP}
-    ${CONAN_LIB_DIRS_ZLIB}
-    ${CONAN_LIB_DIRS_OPENSSL} 
-)
+    target_include_directories(${MODULE_NAME} PRIVATE
+        ${CMAKE_CURRENT_SOURCE_DIR}
+        ${CMAKE_CURRENT_SOURCE_DIR}/sqlite3
+        ${CONAN_INCLUDE_DIRS_LIBKYSM}
+        ${CONAN_INCLUDE_DIRS_JSONCPP}
+        ${RVCFRAMEWORK_SOURCES_DIR}/RvcRestfulSdk
+        ${CMAKE_SOURCE_DIR}/ThirdParty/Include/CJson
+        ${CMAKE_SOURCE_DIR}/ThirdParty/Include/uuid4
+        ${CONAN_INCLUDE_DIRS_ZLIB}
+        ${CONAN_INCLUDE_DIRS_OPENSSL}
+    )
+    target_link_directories(${MODULE_NAME} PRIVATE 
+        ${CONAN_LIB_DIRS_LIBKYSM} 
+        ${CONAN_LIB_DIRS_JSONCPP}
+        ${CONAN_LIB_DIRS_ZLIB}
+        ${CONAN_LIB_DIRS_OPENSSL} 
+    )
 else()
-target_include_directories(${MODULE_NAME} PRIVATE
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}/sqlite3
-    ${CONAN_INCLUDE_DIRS_LIBKYSM}
-    ${CONAN_INCLUDE_DIRS_JSONCPP}
-    ${RVCFRAMEWORK_SOURCES_DIR}/RvcRestfulSdk
-    ${CMAKE_SOURCE_DIR}/ThirdParty/Include/CJson
-    ${CMAKE_SOURCE_DIR}/ThirdParty/Include/uuid4
-    ${CONAN_INCLUDE_DIRS_ZLIB}
-)
-target_link_directories(${MODULE_NAME} PRIVATE 
-    ${CONAN_LIB_DIRS_LIBKYSM} 
-    ${CONAN_LIB_DIRS_JSONCPP}
-    ${CONAN_LIB_DIRS_ZLIB}
-)
+    target_include_directories(${MODULE_NAME} PRIVATE
+        ${CMAKE_CURRENT_SOURCE_DIR}
+        ${CMAKE_CURRENT_SOURCE_DIR}/sqlite3
+        ${CONAN_INCLUDE_DIRS_LIBKYSM}
+        ${CONAN_INCLUDE_DIRS_JSONCPP}
+        ${RVCFRAMEWORK_SOURCES_DIR}/RvcRestfulSdk
+        ${CMAKE_SOURCE_DIR}/ThirdParty/Include/CJson
+        ${CMAKE_SOURCE_DIR}/ThirdParty/Include/uuid4
+        ${CONAN_INCLUDE_DIRS_ZLIB}
+    )
+    target_link_directories(${MODULE_NAME} PRIVATE 
+        ${CONAN_LIB_DIRS_LIBKYSM} 
+        ${CONAN_LIB_DIRS_JSONCPP}
+        ${CONAN_LIB_DIRS_ZLIB}
+    )
 endif(MSVC)
 
 target_link_libraries(${MODULE_NAME}
@@ -54,20 +54,18 @@ target_link_libraries(${MODULE_NAME}
 
 message(STATUS "zlib library: ${CONAN_PKG_LIBS_OPENSSL} ${CONAN_PKG_LIBS_ZLIB} ${CONAN_PKG_LIBS_JSONCPP}")
 
-# target_compile_definitions(${MODULE_NAME} PRIVATE "-DCMBSM_LINKED_AS_STATIC_LIBRARY")
-
 if(MSVC)
     install(TARGETS ${MODULE_NAME} 
-    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries
-    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL
-    LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT libraries
+        RUNTIME DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries
+        ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT develops EXCLUDE_FROM_ALL
+        LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT libraries
     )
 else()
-install(TARGETS ${MODULE_NAME} 
-    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
-    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
-    LIBRARY DESTINATION "${RVC_RUNTIME_PATH}"
-	COMPONENT libraries)
+    install(TARGETS ${MODULE_NAME} 
+        RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
+        ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+        LIBRARY DESTINATION "${RVC_RUNTIME_PATH}"
+	    COMPONENT libraries)
 endif(MSVC)
 
 if (WITH_PDB_SAVE AND MSVC AND BUILD_SHARED_LIBS)

+ 1 - 1
Framework/RvcLogSdk/log_util.cpp

@@ -146,7 +146,7 @@ void GetUnitedTimeStr(time_t time, char* szTime)
 	);
 }
 
-//TODO: CrossPlaform  相对独立,不用框架库提供的函数进行IP 获取 [Gifur@2025729]
+//相对独立,不用框架库提供的函数进行IP 获取 [Gifur@2025729]
 int GetLocalIP(char* ip_str)
 {
 	

+ 3 - 1
Framework/libtoolkit/CMakeLists.txt

@@ -62,14 +62,16 @@ if(MSVC)
   target_compile_definitions(${MODULE_NAME} PRIVATE  "-DLIBTOOLKIT_EXPORTS")
   list(APPEND ${MODULE_PREFIX}_LIBS 
     dbghelp 
+    uuid
     ws2_32
     Winmm
+    pdh
     MsWSock # ioqueue
     IPHlpApi
     winpr)
 
 else(MSVC)
-  list(APPEND ${MODULE_PREFIX}_LIBS ${PRIVATE_KEYWORD} winpr ${PRIVATE_KEYWORD} rt)
+  list(APPEND ${MODULE_PREFIX}_LIBS ${PRIVATE_KEYWORD} winpr ${PRIVATE_KEYWORD} rt ${PRIVATE_KEYWORD} uuid)
 endif(MSVC)
 
 set_target_properties(${MODULE_NAME} PROPERTIES DEBUG_POSTFIX "d")

+ 37 - 0
Framework/libtoolkit/fileutil.c

@@ -14,6 +14,7 @@
 #include <sys/types.h>
 #include <dirent.h>
 #include <sys/stat.h>
+#include <fcntl.h>
 #endif
 
 #include "array.h"
@@ -56,6 +57,14 @@ TOOLKIT_API DWORD ReadFileSize(LPCSTR pszFile)
 	return fileSize;
 }
 
+TOOLKIT_API void SureUnixFileAttributeAccessable(LPCSTR pszFile)
+{
+#ifndef _MSC_VER
+	mode_t f_attrib = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH | S_IWOTH;
+	chmod(pszFile, f_attrib);
+#endif
+}
+
 TOOLKIT_API BOOL CreateDirA(LPCSTR lpDirPath, BOOL bRecursive)
 {
 	char* slashPos = NULL;
@@ -210,6 +219,34 @@ TOOLKIT_API BOOL RemoveFileReadOnlyAttributeA(LPCSTR pszFile)
 	return FALSE;
 }
 
+TOOLKIT_API BOOL IsDirectory(LPCSTR pszDir)
+{
+	char szCurPath[MAX_PATH * 2] = { 0 };
+#ifdef _WIN32
+	HANDLE hFile;
+	WIN32_FIND_DATAA FindFileData = { 0 };
+	_snprintf(szCurPath, MAX_PATH * 2, "%s//*", pszDir);
+	hFile = FindFirstFileA(szCurPath, &FindFileData); /**< find first file by given path. */
+	if (hFile == INVALID_HANDLE_VALUE)
+	{
+		return FALSE; /** 如果不能找到第一个文件,那么没有目录 */
+	}
+	else
+	{
+		FindClose(hFile);
+		return TRUE;
+	}
+#else
+	struct stat buf;
+	snprintf(szCurPath, MAX_PATH * 2, "%s//*", pszDir);
+	if (0 == stat(szCurPath, &buf))
+	{
+		return S_ISDIR(buf.st_mode);
+	}
+	return FALSE;
+#endif
+}
+
 // 递归拷贝所有文件及子文件夹
 TOOLKIT_API BOOL CopyDirA(LPCSTR pszSourceDir, LPCSTR pszDestDir)
 {

+ 3 - 0
Framework/libtoolkit/fileutil.h

@@ -29,6 +29,9 @@ TOOLKIT_API DWORD ReadFileSize(LPCSTR pszFile);
 
 TOOLKIT_API BOOL RemoveFileA(LPCSTR pszFile);
 TOOLKIT_API BOOL RemoveFileReadOnlyAttributeA(LPCSTR pszFile);
+TOOLKIT_API void SureUnixFileAttributeAccessable(LPCSTR pszFile);
+
+TOOLKIT_API BOOL IsDirectory(LPCSTR pszDir);
 
 TOOLKIT_API BOOL CopyDirA(LPCSTR pszSourceDir, LPCSTR pszDestDir);
 

+ 7 - 5
Framework/libtoolkit/log_periodic.c

@@ -285,13 +285,15 @@ static int periodicfilefactory_record_log(void *self,
 			plog->first_record = 0;
 		} else {
 			//TODO: CrossPlaform 这个不太好处理,需要直接修改WINPR中的GetCurrentThreadId原始函数,但这个函数有其他引用  [Gifur@202584]
-#if defined(_MSC_VER)
+
             n = sprintf(tmp, LINE_BREAK_STR "[%02d:%02d:%02d.%03d][%5u][%s] ",
-                        st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, GetCurrentThreadId(), log_level2str(level));
+                        st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, 
+#if defined(_MSC_VER)
+				GetCurrentThreadId(), 
 #else
-            n = sprintf(tmp, LINE_BREAK_STR "[%02d:%02d:%02d.%03d][%5u][%s] ",
-                        st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, GetCurrentThreadIdFromSys(), log_level2str(level));
-#endif //_MSC_VER
+				GetCurrentThreadIdFromSys(),
+#endif
+				log_level2str(level));
 		}
 		_fwrite_nolock(tmp, n, 1, plog->fp);
 		_fwrite_nolock(s, sn, 1, plog->fp);

+ 0 - 6
Framework/libtoolkit/log_single.c

@@ -36,7 +36,6 @@ static void singlefilefactory_destroy(void *self)
 
 static void* singlefilefactory_create_log(void *self, const char* inst)
 {
-	singlelogfactory_t *fac = (singlelogfactory_t *)self;
 	singlelog_t *log = MALLOC_T(singlelog_t);
 	log->base.level = XLOG_LEVEL_ALL;
 	log->base.factory = self;
@@ -55,7 +54,6 @@ static int singlefilefactory_set_log_param(void *self,
 													const char *key, 
 													const char *value)
 {
-	singlelogfactory_t *fac = (singlelogfactory_t *)self;
 	singlelog_t *slog = (singlelog_t*)log;
 	if (_stricmp(key, "file") == 0) {
 		char *p;
@@ -110,7 +108,6 @@ static int singlefilefactory_set_log_param(void *self,
 
 static int singlefilefactory_init_log(void *self, void *log)
 {
-	singlelogfactory_t *fac = (singlelogfactory_t *)self;
 	singlelog_t *slog = (singlelog_t*)log;
 	slog->fp = fopen(slog->file_path, "ab");
 	if (slog->fp) {
@@ -121,7 +118,6 @@ static int singlefilefactory_init_log(void *self, void *log)
 
 static int singlefilefactory_term_log(void *self, void *log)
 {
-	singlelogfactory_t *fac = (singlelogfactory_t *)self;
 	singlelog_t *slog = (singlelog_t*)log;
 	if (slog->fp) {
 		fclose(slog->fp);
@@ -153,14 +149,12 @@ static int singlefilefactory_record_log(void *self,
 										const char *s, 
 										int sn)
 {
-	singlelogfactory_t *fac = (singlelogfactory_t *)self;
 	singlelog_t *slog = (singlelog_t*)log;
 	if (slog->fp) {
 		SYSTEMTIME st;
 		FILETIME utc_ft, local_ft;
 		char tmp[64];
 		int n;
-		DWORD dwBytesWritten = 0;
 
 		if (slog->use_lock) {
 			fastlock_enter(slog->lock);

+ 103 - 2
Framework/libtoolkit/osutil.c

@@ -5,9 +5,14 @@
 #include "toolkit.h"
 
 #ifdef _WIN32
-
+#include <Pdh.h>
 #include <TlHelp32.h>
 
+#define DIV (1024 * 1024)
+#define DAY_DIV (24 * 60 * 60)
+#define HOURS_DIV (60 * 60)
+#define MINUS_DIV (60)
+
 TOOLKIT_API int osutil_detect_unique_app(char** pNames, int nNum, int* alive, alive_process_info* alive_process_arr)
 {
 	HANDLE hSnapshot;
@@ -124,7 +129,6 @@ TOOLKIT_API int osutil_uname(tk_utsname_t* buffer)
 	return TOOLKIT_UNKNOWN;
 }
 
-
 TOOLKIT_API int osutil_is32r64_platform()
 {
 	int isWow64 = -1;
@@ -173,6 +177,7 @@ TOOLKIT_API void osutil_reset_redirect_32sys_in_wow64(ostuile_void_ptr* value)
 #include <winpr/wtypes.h>
 #include <sys/reboot.h>
 #include <sys/utsname.h>
+#include <sys/sysinfo.h>
 
 #define DEFAULT_PROCESS_CMDLINE_SIZE 56
 #define DEFAULT_PROCESS_PATH_SIZE 8192
@@ -534,5 +539,101 @@ TOOLKIT_API int osutil_shutdown_system()
 
 
 
+TOOLKIT_API int osutil_system_boot_time(tk_systime_t* ptr_boot_time)
+{
+	int result = -1;
+	
+#if defined(_MSC_VER)
+	const char* SystemElapsedQuery = "\\System\\System Up Time";
+	PDH_STATUS Status;
+	HQUERY Query = NULL;
+	HCOUNTER hcElapsedTimeCount;
+	/** 杀毒软件会对附件这几个系统调用函数有所监控,导致有时会耗费5s时间 Gifur@20221019]*/
+	Status = PdhOpenQuery(NULL, NULL, &Query);
+	PDH_FMT_COUNTERVALUE counterValue;
+	if (Status != ERROR_SUCCESS) {
+		return result;
+	}
+	Status = PdhAddCounter(Query, SystemElapsedQuery, NULL, &hcElapsedTimeCount);
+	if (Status != ERROR_SUCCESS) {
+		return result;
+	}
+
+	Status = PdhCollectQueryData(Query);
+	if (Status != ERROR_SUCCESS) {
+		goto Cleanup;
+	}
+	Status = PdhGetFormattedCounterValue(hcElapsedTimeCount, PDH_FMT_LARGE, NULL, &counterValue);
+	if (Status == ERROR_SUCCESS) {
+		FILETIME ftCurTime, ftStartTime;
+		GetSystemTimeAsFileTime(&ftCurTime);
+		
+		ULARGE_INTEGER uliCurTime;
+		uliCurTime.HighPart = ftCurTime.dwHighDateTime;
+		uliCurTime.LowPart = ftCurTime.dwLowDateTime;
+		uliCurTime.QuadPart -= counterValue.largeValue * 1e7;
+
+		ftStartTime.dwHighDateTime = uliCurTime.HighPart;
+		ftStartTime.dwLowDateTime = uliCurTime.LowPart;
+
+		SYSTEMTIME stUTC, stLocal;
+
+		FileTimeToSystemTime(&ftStartTime, &stUTC);
+		SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);
+
+		ptr_boot_time->year = stLocal.wYear;
+		ptr_boot_time->month = stLocal.wMonth;
+		ptr_boot_time->dayofweek = stLocal.wDayOfWeek;
+		ptr_boot_time->day = stLocal.wDay;
+		ptr_boot_time->hour = stLocal.wHour;
+		ptr_boot_time->minute = stLocal.wMinute;
+		ptr_boot_time->second = stLocal.wSecond;
+		ptr_boot_time->milli_seconds = stLocal.wMilliseconds;
+
+		result = 0;
+	}
+Cleanup:
+	Status = PdhRemoveCounter(hcElapsedTimeCount);
+	if (Query) {
+		PdhCloseQuery(Query);
+	}
+#else
+	DWORD ticks = 0;
+	struct sysinfo info;
+	time_t curTime = 0;
+	time_t bootTime = 0;
+	struct tm* ptm = NULL;
+	if (sysinfo(&info)) {
+		return result;
+	}
+	time(&curTime);
+	if (curTime > info.uptime) {
+		bootTime = curTime - info.uptime;
+	}
+	else
+	{
+		bootTime = info.uptime - curTime;
+	}
+	ptm = localtime(&bootTime);
+	ptr_boot_time->year = (WORD)(ptm->tm_year + 1900);
+	ptr_boot_time->month = (WORD)(ptm->tm_mon + 1);
+	ptr_boot_time->dayofweek = (WORD)ptm->tm_wday;
+	ptr_boot_time->day = (WORD)ptm->tm_mday;
+	ptr_boot_time->hour = (WORD)ptm->tm_hour;
+	ptr_boot_time->minute = (WORD)ptm->tm_min;
+	ptr_boot_time->second = (WORD)ptm->tm_sec;
+
+	struct timespec ts;
+	if (!clock_gettime(CLOCK_MONOTONIC_RAW, &ts)) {//获取毫秒的数据不太准确
+		ticks = (ts.tv_sec * 1000) + (ts.tv_nsec / 1000000);
+	}
+	ptr_boot_time->milli_seconds = (WORD)(ticks % 1000);
+	result = 0;
+
+#endif //_MSC_VER
+
+	return result;
+}
+
 
 

+ 13 - 0
Framework/libtoolkit/osutil.h

@@ -42,6 +42,17 @@ extern "C" {
            to as meaningless in the docs. */
     }tk_utsname_t;
 
+	typedef struct toolkit_systime_s {
+		unsigned short year;
+        unsigned short month;
+        unsigned short dayofweek;
+        unsigned short day;
+        unsigned short hour;
+        unsigned short minute;
+        unsigned short second;
+        unsigned short milli_seconds;
+	} tk_systime_t;
+
 // non-zero: unique
 // zero: has clone
 TOOLKIT_API int osutil_detect_unique_app(char **pNames, int nNum, int* alive, alive_process_info* alive_process_arr);
@@ -52,6 +63,8 @@ TOOLKIT_API void osutil_terminate_related_process(char** process_array, const in
 
 TOOLKIT_API int osutil_uname(tk_utsname_t* buffer);
 
+TOOLKIT_API int osutil_system_boot_time(tk_systime_t* ptr_boot_time);
+
 /*
 * -1:failed
 * 0:no

+ 1 - 0
Framework/libtoolkit/process_monitor.h

@@ -29,6 +29,7 @@ TOOLKIT_API int process_monitor_start(process_monitor_t *monitor);
 TOOLKIT_API int process_monitor_stop(process_monitor_t *monitor);
 TOOLKIT_API int process_monitor_add(process_monitor_t *monitor, tk_process_t* process);
 TOOLKIT_API int process_monitor_remove(process_monitor_t *monitor, tk_process_t* process);
+TOOLKIT_API int process_monitor_destroy(process_monitor_t* monitor);
 
 #ifdef __cplusplus
 } // extern "C" {

+ 3 - 3
Framework/libtoolkit/shm_mem.c

@@ -68,9 +68,6 @@ https://stackoverflow.com/questions/5939578/how-to-choose-a-fixed-address-for-sh
 
 TOOLKIT_API int shm_getmem(int key, void** hint, int newcreate)
 {
-    int fd = -1;
-    int flag = 0;
-
 #ifndef _WIN32
     const size_t region_size = sysconf(_SC_PAGE_SIZE);
     WLog_DBG(TAG, "allocating SHM block, page size: %d", region_size);
@@ -90,6 +87,9 @@ TOOLKIT_API int shm_getmem(int key, void** hint, int newcreate)
 #ifndef USE_ANON_MMAP
 
 #ifdef USE_DEVSHM_MMAP
+	int fd = -1;
+	int flag = 0;
+
     WLog_WARN(TAG, "using /dev/shm memory");
     flag = O_RDWR;
     if (newcreate) {

+ 2 - 2
Framework/libtoolkit/sockutil.c

@@ -36,14 +36,14 @@ static int is_legal_ip(char* content)
 	if (len < strlen("0.0.0.0")) {
 		return -1;
 	}
-	//99¿ªÍ·ÐÐÄÚ°ì¹«Íø£¬10¿ªÍ·ÐÐÄÚÒµÎñÍø¡£¹æ·¶³ö×Ô¡¶ÕÐÉÌÒøÐÐ×ÜÐÐÍøÂç¹æ·¶»ã±à£¨2017Äê°æ£©.pdf¡·
+	//99开头行内办公网,10开头行内业务网。规范出自《招商银行总行网络规范汇编(2017年版).pdf》
 	if (strstr(content, "99.") == content || strstr(content, "10.") == content) {
 		return 1;
 	}
 
 	if (strcmp(content, "127.0.0.1") == 0 /*sipphone*/
 		|| strcmp(content, "2.0.0.1") == 0 /*ConnecotrFSM*/
-		|| strstr(content, "198.168.") == content /*sipphone Ë«Íø¿¨*/
+		|| strstr(content, "198.168.") == content /*sipphone �网�*/
 		) {
 		return -1;
 	}

+ 143 - 3
Framework/libtoolkit/strutil.c

@@ -13,7 +13,13 @@
 
 #include <winpr/wtypes.h>
 #include <winpr/string.h>
+#include <winpr/crt.h>
 #include "dbgutil.h"
+
+#ifndef _MSC_VER 
+#include "uuid/uuid.h"
+#endif //NOT _MSC_VER
+
 #pragma warning(disable : 4311)
 
 TOOLKIT_API const char *memstr(const char *buf, int n, const char *str)
@@ -1893,7 +1899,6 @@ static char *vasnprintf (char *resultbuf, size_t *lengthp, const char *format, v
 		    *p++ = '6';
 		    *p++ = '4';
 		    break;
-		    *p++ = 'l';
 		    /*FALLTHROUGH*/
 		  case TYPE_LONGINT:
 		  case TYPE_ULONGINT:
@@ -2047,8 +2052,6 @@ static char *vasnprintf (char *resultbuf, size_t *lengthp, const char *format, v
 			    {
 			      if (dp->precision_arg_index >= 0)
 				{
-				  int arg;
-				  
 				  if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
 				    abort ();
 				  arg = a.arg[dp->precision_arg_index].a.a_int;
@@ -2400,3 +2403,140 @@ TOOLKIT_API void str_parse_cmdline (char *cmdstart, char **argv, char *args, int
 		*argv++ = NULL;
 	++*numargs;
 }
+
+TOOLKIT_API void str_get_format_uuid(char* strbuffer, size_t ulen)
+{
+#if defined(_MSC_VER)
+	UUID uuid;
+	size_t uuidlen = 0;
+	RPC_CSTR buf;
+	UuidCreate((UUID*)&uuid);
+	UuidToString((UUID*)&uuid, &buf);
+
+	uuidlen = strlen((const char*)buf);
+	if (uuidlen < ulen) {
+		memcpy(strbuffer, (const char*)buf, uuidlen);
+	}
+
+	RpcStringFree(&buf);
+#else
+	uuid_t uuid;
+	uuid_generate(uuid);
+	uuid_unparse(uuid, strbuffer);
+#endif
+
+}
+
+TOOLKIT_API int str_reset_buffer(void* pbuf, int idata, size_t ulen)
+{
+	int ret = -1;
+	if (pbuf) {
+		memset(pbuf, idata, ulen);
+		ret = 0;
+	}
+
+	return ret;
+}
+
+
+TOOLKIT_API int str_rend_string(char* pSrc, int iflag)
+{
+	int ret = -1;
+	if (pSrc) {
+		char* pindex = pSrc;
+		while (*pindex != iflag) {
+			pindex++;
+		};
+		*pindex = '\0';
+		ret = 0;
+	}
+
+	return ret;
+}
+
+TOOLKIT_API int str_fifter_string(char* pbuf, size_t usize, const char* psrc, const char cflag)
+{
+	int ret = -1;
+	int i = 0;
+	int j = 0;
+	size_t ulen = 0;
+	const char* pindex = psrc;
+	if (NULL == psrc) {
+		return ret;
+	}
+
+	ulen = strlen(psrc);
+	for (i = 0; i < ulen && i < usize; i++) {
+		if (pindex[i] != cflag) {
+			pbuf[j++] = pindex[i];
+		}
+	}
+	if (j == ulen - 2) {
+		ret = 0;
+	}
+
+	return ret;
+}
+
+
+TOOLKIT_API int str_get_interger_netaddr(char* strbuf, size_t ubufszie, const char* szip)
+{
+	int ret = -1;
+
+	unsigned long ulip = 0;
+	if (NULL == strbuf || NULL == szip) {
+		return ret;
+	}
+
+	ulip = inet_addr(szip);
+	_ultoa(ulip, strbuf, 10);
+
+	ret = 0;
+	return ret;
+}
+
+TOOLKIT_API int str_convert_interaddr_strip(char* strbuf, size_t ubufszie, const char* szinter_ip)
+{
+	int ret = -1;
+	char* strip = NULL;
+	struct sockaddr_in addr = { 0 };
+	if (!szinter_ip || !strbuf) {
+		return ret;
+	}
+
+	addr.sin_addr.s_addr = strtoul(szinter_ip, NULL, 10);//inet_addr(config->switch_server);
+	strip = inet_ntoa(addr.sin_addr);
+	if (strip) {
+		size_t ulen = strlen(strip);
+		if (ulen < ubufszie) {
+			memcpy(strbuf, strip, ulen);
+			ret = 0;
+		}
+	}
+
+	return ret;
+}
+
+
+TOOLKIT_API int str_connect_strings(char* strbuf, size_t ulen, const char* psrca, const char* pstr, const char* psrcb)
+{
+	int ret = -1;
+	size_t ulena = 0;
+	size_t ulenb = 0;
+	size_t ulenstr = 0;
+
+	if (!psrca || !psrcb || !pstr) {
+		return ret;
+	}
+
+	ulena = strlen(psrca);
+	ulenb = strlen(psrcb);
+	ulenstr = strlen(pstr);
+
+	if (ulen > ulena + ulenb + ulenstr) {
+		snprintf(strbuf, ulen, "%s%s%s", psrca, pstr, psrcb);
+		ret = 0;
+	}
+
+	return ret;
+}

+ 16 - 5
Framework/libtoolkit/strutil.h

@@ -33,7 +33,8 @@ TOOLKIT_API void* memmem(const void* haystack, size_t haystacklen,
 	const void* needle, size_t needlelen);
 
 TOOLKIT_API char* strcasestr(const char* haystack, const char* needle);
-#endif //NOT _WIN32
+
+#endif //_WIN32
 
 
 /**
@@ -110,10 +111,6 @@ TOOLKIT_API char* strdupa(const char* str);
  */
 TOOLKIT_API char *strndup(const char *str, int n);
 
-#else 
-
-#define _strnicmp strncasecmp
-
 #endif //_WIN32
 
 /**
@@ -182,6 +179,20 @@ TOOLKIT_API char *str_xml_escape(const char *src);
 /** parse cmd line */
 TOOLKIT_API void str_parse_cmdline (char *cmdstart,char **argv,char *args,int *numargs,int *numchars);
 
+TOOLKIT_API void str_get_format_uuid(char* strbuffer, size_t ulen);
+
+TOOLKIT_API int str_reset_buffer(void* pbuf, int idata, size_t ulen);
+
+TOOLKIT_API int str_rend_string(char* pSrc, int iflag);
+
+TOOLKIT_API int str_fifter_string(char* pbuf, size_t usize, const char* psrc, const char cflag);
+
+TOOLKIT_API int str_get_interger_netaddr(char* strbuf, size_t ubufszie, const char* szip);
+
+TOOLKIT_API int str_convert_interaddr_strip(char* strbuf, size_t ubufszie, const char* szinter_ip);
+
+TOOLKIT_API int str_connect_strings(char* strbuf, size_t ulen, const char* psrca, const char* psrcb, const char* pstr);
+
 #ifdef __cplusplus
 } // extern "C" {
 #endif

+ 0 - 1
Framework/libtoolkit/win/bus_daemon.c

@@ -980,7 +980,6 @@ TOOLKIT_API int bus_daemon_stop(bus_daemon_t *daemon)
 
 	// close all pending handles
 	{
-		int i;
 		endpt_session_t *pos;
 		for (i = 0; i < daemon->arr_acceptor->nelts; ++i) {
 			daemon_accetpor_t *dacceptor = ARRAY_IDX(daemon->arr_acceptor, i, daemon_accetpor_t*);

+ 0 - 2
Framework/libtoolkit/win/ioqueue.c

@@ -600,7 +600,6 @@ static void dispatch_network(BOOL ret, DWORD dwBytesTransfer, ioqueue_overlapped
 						overlapped->hevt = NULL;
 						overlapped->recved_bytes += dwBytesTransfer;
 						if (err == 0 && overlapped->recved_bytes < overlapped->total_bytes) {
-							BOOL ret;
 							DWORD left = overlapped->total_bytes - overlapped->recved_bytes;
 							inc_pending_io(handle_ctx);
 							overlapped->base.ov.Internal = 0;
@@ -634,7 +633,6 @@ static void dispatch_network(BOOL ret, DWORD dwBytesTransfer, ioqueue_overlapped
 						overlapped->hevt = NULL;
 						overlapped->sended_bytes += dwBytesTransfer;
 						if (err == 0 && overlapped->sended_bytes < overlapped->total_bytes) {
-							BOOL ret;
 							DWORD left = overlapped->total_bytes - overlapped->sended_bytes;
 							inc_pending_io(handle_ctx);
 							overlapped->base.ov.Internal = 0;

+ 7 - 5
Framework/spbase/CMakeLists.txt

@@ -92,6 +92,8 @@ target_link_libraries(${MODULE_NAME}
     ${PRIVATE_KEYWORD} ${OTHER_LIBS}
     )
 
+# target_add_cppcheck(${MODULE_NAME} FORCE_CHECK)
+
 if (BUILD_TESTING)
     add_library(${MODULE_NAME}_a STATIC ${${MODULE_PREFIX}_SRCS})
     target_include_directories(${MODULE_NAME}_a PRIVATE
@@ -117,11 +119,11 @@ if(MSVC)
         LIBRARY DESTINATION "${RVC_LIBRARY_PATH}" COMPONENT libraries
     )
 else()
-install(TARGETS ${MODULE_NAME} 
-    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
-    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
-    LIBRARY DESTINATION "${RVC_RUNTIME_PATH}"
-    COMPONENT libraries)
+    install(TARGETS ${MODULE_NAME} 
+        RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
+        ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+        LIBRARY DESTINATION "${RVC_RUNTIME_PATH}"
+        COMPONENT libraries)
 endif(MSVC)
 
 if (WITH_PDB_SAVE AND MSVC AND BUILD_SHARED_LIBS)

+ 4 - 3
Framework/spbase/CodeSignVerify.cpp

@@ -1,5 +1,4 @@
 #include "stdafx.h"
-
 #include <WinVer.h>
 #pragma comment (lib, "Version.lib")
 #include <Wintrust.h.>
@@ -10,6 +9,8 @@
 #include "fileutil.h"
 #include "CodeSignVerify.h"
 
+//TODO: CrossPlaform 该功能目前没有起到作用,即启动时对文件进行签名检查  [Gifur@2025822]
+
 CCodeSignVerify::CCodeSignVerify(DWORD dwCodePage, DWORD dwLangID)
 :m_dwCodePage(dwCodePage), m_dwLangID(dwLangID)
 {
@@ -462,7 +463,7 @@ bool CCodeSignVerify::GetSignCertInfo(HCERTSTORE hStore, PCMSG_SIGNER_INFO pSign
 		}
 
 		// Allocate memory for Issuer name.
-		LPTSTR szName = (LPTSTR)LocalAlloc(LPTR, dwDataLen * sizeof(TCHAR));
+		szName = (LPTSTR)LocalAlloc(LPTR, dwDataLen * sizeof(TCHAR));
 		if (!szName)
 		{
 			SetLastErrMsg("Unable to allocate memory for issuer name");
@@ -646,7 +647,7 @@ bool CCodeSignVerify::GetTimeOfTimeStamp(HCERTSTORE hStore, PCMSG_SIGNER_INFO pS
 
 				// Loop through authenticated attributes and find
 				// szOID_RSA_signingTime OID.
-				for (DWORD n = 0; n < pCounterSignerInfo->AuthAttrs.cAttr; n++)
+				for (n = 0; n < pCounterSignerInfo->AuthAttrs.cAttr; n++)
 				{
 					if (lstrcmpA(szOID_RSA_signingTime,
 						pCounterSignerInfo->AuthAttrs.rgAttr[n].pszObjId) == 0)

+ 1 - 31
Framework/spbase/SpBase.cpp

@@ -35,7 +35,7 @@
 #include "SpSecureClient.h"
 #include "IHttpFunc.h"
 #include <RestfulFunc.h>
-#include<winpr/library.h>
+#include <winpr/library.h>
 #include <winpr/locale.h>
 #include <winpr/exception.h>
 #include "uuid4.h"
@@ -261,36 +261,6 @@ SPBASE_API void LogFatal(const SeverityLevelEnum eLevel, ErrorCodeEnum dwSysErro
 		("Fatal: {%s}(sc=0x%X, uc=0x%X)", pszMessage, dwSysErrorCode, dwUserErrorCode);
 }
 
-SPBASE_API void LogNotify(const NotifyLevelEnum eLevel, ErrorCodeEnum dwSysErrorCode, DWORD dwUserErrorCode, const char* pszMessage)
-{
-	SpModule* pModule = GetSpModule();
-	if (pModule) {
-		const SeverityLevelEnum severityLevel = (SeverityLevelEnum)(int)eLevel;
-		pModule->LogMessage(Log_Notify, severityLevel, dwSysErrorCode, dwUserErrorCode, pszMessage);
-	} else {
-		sp_dbg_info("LogNotify failed!can not find the module");
-	}
-    
-	switch (eLevel) {
-	case Notify_Info:
-        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__).setVtmCode(DWORD2Hex(dwUserErrorCode).GetData())
-            ("Notify: {%s}(sc=0x%X, uc=0x%X)", pszMessage, dwSysErrorCode, dwUserErrorCode);
-		break;
-	case Notify_Warn:
-        DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__).setVtmCode(DWORD2Hex(dwUserErrorCode).GetData())
-            ("Notify: {%s}(sc=0x%X, uc=0x%X)", pszMessage, dwSysErrorCode, dwUserErrorCode);
-		break;
-	case Notify_Error:
-        DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__).setVtmCode(DWORD2Hex(dwUserErrorCode).GetData())
-            ("Notify: {%s}(sc=0x%X, uc=0x%X)", pszMessage, dwSysErrorCode, dwUserErrorCode);
-		break;
-	default:
-        DbgWithLink(LOG_LEVEL_FATAL, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__).setVtmCode(DWORD2Hex(dwUserErrorCode).GetData())
-            ("Notify: {%s}(sc=0x%X, uc=0x%X)", pszMessage, dwSysErrorCode, dwUserErrorCode);
-		break;
-	}
-}
-
 SPBASE_API void LogWarn(const SeverityLevelEnum eLevel, ErrorCodeEnum dwSysErrorCode,DWORD dwUserErrorCode, const char *pszMessage)
 {
 	SpModule *pModule = GetSpModule();

+ 1 - 10
Framework/spbase/SpEntity.cpp

@@ -969,9 +969,7 @@ ErrorCodeEnum SpEntity::LogMessage( const LogTypeEnum LogType, const SeverityLev
 
 	/*存储当前实体最新一条错误信息*/
 	if ((LogType == Log_Warning && (Level == Severity_High || Level == Severity_Middle))
-		|| LogType == Log_Error || LogType == Log_Fatal 
-		|| (LogType == Log_Notify && (Level == Severity_High/* || Level == Severity_Middle*/))
-		) {
+		|| LogType == Log_Error || LogType == Log_Fatal) {
 		SetEntityLastError((ErrorCodeEnum)dwSysErrorCode, dwUserErrorCode, pMessage);
 	}
 
@@ -1070,7 +1068,6 @@ ErrorCodeEnum SpEntity::OpenConfig(ConfigTypeEnum eConfigType,CSmartPointer<ICon
 	IConfigInfo* pConfigInfo = NULL;
 	sp_env_t* env = sp_get_env();
 	sp_cfg_t* cfg = env->cfg;
-	sp_cfg_root_ini_t* root_ini = cfg->root_ini;
 	if (ConfigTypeEnum::Config_Root == eConfigType)
 	{
 		if (forceFile || cfg->root_ini->root_config == NULL || strlen(cfg->root_ini->root_config) == 0)
@@ -1103,7 +1100,6 @@ ErrorCodeEnum SpEntity::OpenConfig(ConfigTypeEnum eConfigType,CSmartPointer<ICon
 ErrorCodeEnum SpEntity::SetUserDefineState(DWORD dwState)
 {
 	sp_env_t *env = sp_get_env();
-	sp_mod_mgr_t *mod_mgr = env->mod_mgr;
 	//sp_mod_mgr_lock(mod_mgr);
 	DWORD dwOldState = m_ent->user_state;
 	m_ent->user_state = dwState;
@@ -1119,7 +1115,6 @@ ErrorCodeEnum SpEntity::SetUserDefineState(DWORD dwState)
 DWORD SpEntity::GetUserDefineState()
 {
     sp_env_t* env = sp_get_env();
-    sp_mod_mgr_t* mod_mgr = env->mod_mgr;
     return (DWORD)(m_ent->user_state);
 }
 
@@ -2379,8 +2374,6 @@ ErrorCodeEnum SpEntity::RedirectSubscribBroadcast(CUUID SubID, const char *pszSu
 ErrorCodeEnum SpEntity::AskShell(int call_type, iobuffer_t **req_pkt, iobuffer_t **ans_pkt)
 {
 	ErrorCodeEnum Error;
-	iobuffer_t *r_pkt = NULL;
-
 	if (!req_pkt || !*req_pkt || !ans_pkt)
 		return Error_Param;
 	if (*ans_pkt)
@@ -2412,8 +2405,6 @@ ErrorCodeEnum SpEntity::AskShell(int call_type, iobuffer_t **req_pkt, iobuffer_t
 ErrorCodeEnum SpEntity::AskEntityByRPC(const char *pszEntityName, int call_type, iobuffer_t **req_pkt, iobuffer_t **ans_pkt)
 {
 	ErrorCodeEnum Error;
-	iobuffer_t *r_pkt = NULL;
-
 	if (!req_pkt || !*req_pkt || !ans_pkt)
 		return Error_Param;
 	if (*ans_pkt)

+ 0 - 10
Framework/spbase/SpEntityPrivilege.cpp

@@ -666,7 +666,6 @@ ErrorCodeEnum SpEntityPrivilege::RewriteDepVersion(const CSimpleStringA& strVers
 {
 	ErrorCodeEnum rc(Error_Succeed);
 	auto dir = sp_get_env()->dir;
-	auto cfg = sp_get_env()->cfg;
 	
 	if (dir == NULL)
 		return Error_Null;
@@ -687,19 +686,10 @@ ErrorCodeEnum SpEntityPrivilege::RewriteDepVersion(const CSimpleStringA& strVers
 		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("get dep ver txt failed!");
 		return rc;
 	}
-	else {
-		//TODO: 测试专用,待移除  [Gifur@20241016]
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("path:%s", path);
-	}
-
 	rc = UpdateVerTxt(path, strVersion, true);
 	if (rc == Error_Succeed && bRefresh) {
-		//TODO: 调试专用,后移除  [Gifur@20241015]
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to refresh...");
 		rc = (ErrorCodeEnum)sp_dir_refresh_dep_path(dir);
 		if (rc == Error_Succeed) {
-			//TODO: 调试专用,后移除  [Gifur@20241015]
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("to send fresh post");
 			iobuffer_t* pkt = iobuffer_create(-1, -1);
 			rc = PostInfoShell(SHELL_CMD_INFO_REFRESH_ENV, &pkt);
 			if (pkt)

+ 0 - 1
Framework/spbase/SpMisc.cpp

@@ -134,7 +134,6 @@ CUUID CUUID::Create(const CUUID &LastUUID)
 	TOOLKIT_ASSERT(getEntityResource()->m_gAppID != 0);
 #endif //_WIN32
 	CUUID t(0);
-	int repeat = 0;
 #ifdef _WIN32
 	t.m_nAppID = getEntityResource()->m_gAppID;
 #else

+ 1 - 1
Framework/spbase/SpSecureClient.cpp

@@ -678,7 +678,7 @@ bool SpSecureClient::OnAuthRequestSM(CConnAuthSMReq* pReq)
 	strncpy(info.m_arrTerminalNo, (LPCSTR)si.strTerminalID, sizeof(info.m_arrTerminalNo) - 1);
 	strcpy(info.m_arrServiceType, "CMBRVC");
 	{
-		//TODO: CrossPlaform IP [Gifur@2025730]
+		//TODO: CrossPlaform 框架具备统一支持,但不清楚影响范围(继而无法评估测试范围),未敢轻易改动 [Gifur@2025730]
 #ifdef RVC_OS_LINUX
         char buf[512];
         toolkit_interface_address_t* addr;

+ 8 - 47
Framework/spbase/sp_cfg.cpp

@@ -1,7 +1,6 @@
 #include "precompile.h"
 #include "sp_cfg.h"
 #include "sp_def.h"
-//#include "sp_sal.h"
 #include "sp_dir.h"
 
 #include "sp_env.h"
@@ -31,11 +30,11 @@
 
 #include "sp_logwithlink.h"
 #include "RestfulFunc.h"
+
 #if defined(_MSC_VER)
 #include "AutoLock.h"
 #include <memory>
 #include <iostream>
-#include <fstream>
 #include "RVCEventCode.h"
 #include <vsscanf.h>
 #include <ctime>
@@ -43,19 +42,22 @@
 #include <iomanip>
 #include <windows.h>
 #define UPDATE_ROOT_BY_HTTP
+#define MOD_LIB_SUFFIX ".dll"
+#define READ_SHELL_NODE SHELL_ENTITY_HEAD
 #else
 #include "JsonConvertHelper.hpp"
+#define MOD_LIB_SUFFIX ".so"
+#define READ_SHELL_NODE "UOSEntity"
 #endif //_MSC_VER
 #include "sp_checkEntity.h"
 #include <log_producer_config.h>
-
+#define MAX_ENTITY_LEN	33
 
 
 #if defined(_MSC_VER)
 
 std::map<std::string, std::string> g_specialRunInfoArr;
 
-
 class sp_cfg_share
 {
 private:
@@ -92,28 +94,8 @@ LARGE_TIME sp_cfg_getShellFirstStartTime()
     return sp_cfg_share::getInstance()->sp_cfg_getShellFirstStartTime();
 };
 
-
-auto fileExist = [](const char* path) ->bool {
-	fstream f2;
-	f2.open(path);
-	if (!f2)
-	{
-		f2.close();
-		return false;
-	}
-	else
-	{
-		f2.close();
-		return true;
-	}
-};
-
-
-#else
-
-///*TODO(80374374@3/14/2023):  */
-
 #endif //_MSC_VER
+
 ErrorCodeEnum init_shell_byHttp(sp_dir_t* dir, sp_cfg_shell_ini_t* shell, sp_cfg_root_ini_t* root, const sp_cfg_start_args_t* args,
 	const char* shellVarIni, std::map<std::string, std::map<std::string, std::string>> shellConfig);
 
@@ -144,20 +126,9 @@ void shell_getHttpToken(std::string& channelId, std::string& token, std::string&
 		
 }
 
-
-#define MAX_ENTITY_LEN	33
-#ifdef _WIN32
-#define MOD_LIB_SUFFIX ".dll"
-#else
-#define MOD_LIB_SUFFIX ".so"
-#endif //_WIN32
-
 #define T_MALLOC_T(type, shm) \
 	shm ? (type*)shm_malloc(sizeof(type)) : (type*)malloc(sizeof(type))
 
-#define T_MALLOC(size, shm) \
-	shm ? shm_malloc(size) : malloc(size)
-
 #define T_FREE(p, shm) \
 	shm ? shm_free(p) : free(p)
 
@@ -1792,9 +1763,7 @@ static int load_entity_list_byHttp(sp_cfg_shell_ini_t* shell, array_header_t** a
 	for (auto it = startupArr.begin(); it != startupArr.end(); it++)
 	{
 		std::string startupEntity = it->second;
-		sp_cfg_shell_entity_t* ent = find_entity(shell, startupEntity.c_str());
 		char* s = _strdup(startupEntity.c_str());
-		char* cmdline = strchr(s, ' ');
 		if (s) {
 			if (strlen(s)) {
 				int numargs, numchars;
@@ -2048,12 +2017,7 @@ ErrorCodeEnum init_shell_byHttp(sp_dir_t* dir, sp_cfg_shell_ini_t* shell, sp_cfg
 
 	//init entity arr,去除以;开头的实体
 	std::map<std::string, std::string> entityArr = clearUnExistConfig(shellConfig[SHELL_ENTITY_HEAD]);
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef _WIN32
-	CSimpleStringA sectionNameWithType = CSimpleStringA::Format("%s_%s", SHELL_ENTITY_HEAD, root->machine_type);
-#else
-	CSimpleStringA sectionNameWithType = CSimpleStringA::Format("%s_%s", "UOSEntity", root->machine_type);
-#endif
+	CSimpleStringA sectionNameWithType = CSimpleStringA::Format("%s_%s", READ_SHELL_NODE, root->machine_type);
 	if (shellConfig.find(sectionNameWithType.GetData()) != shellConfig.end())	//有带机型的实体
 	{
 		std::map<std::string, std::string> entityTypeArr = clearUnExistConfig(shellConfig[sectionNameWithType.GetData()]);
@@ -2129,7 +2093,6 @@ ErrorCodeEnum init_shell_byHttp(sp_dir_t* dir, sp_cfg_shell_ini_t* shell, sp_cfg
 		char* value;
 		char* name;
 		char* context = NULL;
-		array_header_t* t = NULL;
 
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("override start entity list!");
 
@@ -2449,8 +2412,6 @@ static int generate_install_memory(sp_dir_t* dir, sp_cfg_install_ini_t* inst)
 	ver_info->install_pack = shm_strdup("");
 	SHM_ARRAY_PUSH(inst->arr_version, sp_cfg_version_info_t*) = ver_info;
 
-
-
 	inst->arr_light_pack = T_ARRAY_MAKE(0, sizeof(sp_cfg_version_info_t*), 1);
 	return 0;
 }

+ 3 - 7
Framework/spbase/sp_dir.c

@@ -14,7 +14,7 @@ int sp_dir_create(sp_dir_t **p_dir)
 	dir = shm_malloc(sizeof(sp_dir_t));
 	memset(dir, 0, sizeof(sp_dir_t));
 
-	//TODO(Gifur): duplicate path value set, which would makd memory leak
+	
 	GetModuleFileNameA(NULL, tmp, MAX_PATH);
 	*strrchr(tmp, SPLIT_SLASH) = 0;
 	//C:/Run/version/1.2.3.4/bin
@@ -24,6 +24,8 @@ int sp_dir_create(sp_dir_t **p_dir)
 	dir->base_path = shm_strdup(tmp);
 	*strrchr(tmp, SPLIT_SLASH) = 0;
 	//C:/Run/version
+	// 
+	//TODO(Gifur): duplicate path value set, which would makd memory leak
 	dir->root_ver_path = shm_strdup(tmp);
 	*strrchr(tmp, SPLIT_SLASH) = 0;
 	//C:/Run
@@ -360,13 +362,7 @@ int sp_dir_inner_get_content(const char* file, char* ver)
 		n = fread(szTemp, 1, 256, pFile);
 		fclose(pFile);
 		memset(ver, 0, SP_MAX_VER_LEN);
-		//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
-		strncpy_s(ver, SP_MAX_VER_LEN, szTemp, _TRUNCATE);
-#else
 		strncpy(ver, szTemp, SP_MAX_VER_LEN);
-#endif //RVC_OS_WIN
-		//TODO:   [Gifur@20241014]
 		if (strlen(ver) == 0) {
 			return Error_Null;
 		}

+ 1 - 15
Framework/spbase/sp_logwithlink.cpp

@@ -597,28 +597,14 @@ CSimpleString generateDefaultStoragePath()
 static CSimpleStringA g_entityName = "SpShell";
 
 void logCallback(const char* message) {
-    // 在这里执行您的日志记录逻辑
-    // 在这个示例中,我们简单地将日志消息输出到控制台
     WLog_DBG(TAG, "from rvcLogSDK:%s", message);
 }
 
-std::string toLowerCase(std::string str) {
-    std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) {
-        return std::tolower(c, std::locale());
-        });
-    return str;
-}
-
 SPBASE_API void* create_log_producer_storage(CSimpleStringA entityName, CSimpleStringA item, CSimpleStringA filePath, CSimpleStringA CmptId, CSimpleString CmptName)
 {
     WLog_DBG(TAG, "create log producer storage for %s, %s, %s", entityName.GetData(), item.GetData(), filePath.GetData());
     log_producer_config* config = create_log_producer_config();
-    //TODO: CrossPlaform  [Gifur@2025730]
-#ifdef _WIN32
-    std::string t_entityName = toLowerCase(entityName.GetData());
-#else
-	const std::string t_entityName = SP::Utility::ToLower(entityName.GetData());
-#endif  
+    const std::string t_entityName = SP::Utility::ToLower(entityName.GetData());
     if (config == NULL) {
         WLog_DBG(TAG, "create_log_producer_config return null!");
         return NULL;

+ 1 - 1
Framework/spbase/sp_mod.c

@@ -872,7 +872,7 @@ static int create_module_process(const char *mod_name, int epid, int range, int
 		return -1;
 	}
 
-	//TODO: CrossPlaform  [Gifur@2025729]
+	//TODO: CrossPlaform 这个等良瑜来处理,目前WIN都是Release版本,不需要再区分  [Gifur@2025729]
 	if (runType == 1)
 		sprintf(app, ".\\bin\\sphost.exe {%s} %d", mutexName, shellId);
 	else

+ 1 - 1
Framework/spbase/sp_pst.h

@@ -2,7 +2,7 @@
 #define SP_PST_H
 
 #pragma once
-//TODO: CrossPlaform 文件移除,没有使用  [Gifur@202584]
+//TODO: CrossPlaform 鏂囦欢绉婚櫎锛屾病鏈変娇鐢�紝寰呰�璁虹‘璁�  [Gifur@202584]
 #ifdef __cplusplus
 extern "C" {
 #endif

+ 1 - 7
Framework/spbase/sp_sps.c

@@ -2,13 +2,12 @@
 #include "sp_sps.h"
 #include "sp_def.h"
 #include "sp_logwithlinkforc.h"
-
 #include "memutil.h"
+#include <winpr/winsock.h>
 
 #define SILVERLIGHT_POLICY_PORT	943
 #define MAX_TIMEOUT 30000
 
-
 static const char *req_policy = "<policy-file-request/>";
 static const int req_policy_len = 22;
 
@@ -57,12 +56,7 @@ static void __on_accept(SOCKET policy_fd)
 	DbgWithLinkForC(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM, "accept from %s:%d", inet_ntoa(from_addr.sin_addr), ntohs(from_addr.sin_port));
 
 	WSAEventSelect(conn_fd, NULL, 0);
-	//TODO: CrossPlaform  [Gifur@2025729]
-#ifdef _WIN32
-	ioctlsocket(conn_fd, FIONBIO, &iMode);
-#else
 	_ioctlsocket(conn_fd, FIONBIO, &iMode);
-#endif //_WIN32
 	opt = TRUE;
 	setsockopt(conn_fd, IPPROTO_TCP, TCP_NODELAY, (char*)&opt, sizeof(opt));
 	opt = TRUE;

+ 1 - 0
Framework/spbase/sp_sps.h

@@ -11,6 +11,7 @@
 
 #pragma once
 
+//TODO: CrossPlaform 评审是否需要移除,目前不走Slierlight这一套,直接用Websocket通讯  [Gifur@2025820]
 #ifdef __cplusplus
 extern "C"
 {

+ 1 - 1
Framework/spbase/sp_var.c

@@ -59,7 +59,7 @@ static char* sp_var_get_own_entity(sp_var_client_t* client, const char* key)
 static int sp_var_can_write(sp_var_client_t *client, const char *key, sp_cfg_shell_sysevent_t **p_sysevent)
 {
 	sp_iom_t *iom = sp_svc_get_iom(client->svc);
-	sp_cfg_t *cfg = sp_get_env()->cfg; //TODO
+	sp_cfg_t *cfg = sp_get_env()->cfg;
 	sp_cfg_shell_sysevent_t *sysevent;
 
 	sysevent = sp_cfg_get_sysevent(cfg, key);

+ 0 - 15
Framework/spshell/log.cpp

@@ -278,21 +278,6 @@ static void on_log(void *inst,
 			notifyType = GUI_DISPLAY_ELEM_LOG_FATAL;
 			msgContent = CSimpleString::Format("[%s] F:{%s}(sc:0x%X, uc:0x%X)", ent->name, msg, log_sys_error, log_usr_error);
 		}
-		else if (log_type == 6) {//Log_Notify
-            notifyType = GUI_DISPLAY_ELEM_NOTIFY_INFO;
-            if (log_severity == 2) {//Notify_Warn
-                notifyType = GUI_DISPLAY_ELEM_NOTIFY_WARN;
-            } else if (log_severity == 3) {
-                notifyType = GUI_DISPLAY_ELEM_NOTIFY_ERROR;
-            }
-#if defined(_MSC_VER)
-			msgContent = CSimpleString::Format("[%s] N:{%s}(sc:0x%X, uc:0x%X)", ent->name, msg, log_sys_error, log_usr_error);
-#else
-			CSimpleStringA strMsg = CSimpleStringA::Format("%s V%d.%d.%d", ent->name, ent->version.major, ent->version.minor, ent->version.revision);
-			strMsg += ":][:"; /** arrange with QtGUIConsole to split entity name and msg content [Gifur@202133]*/
-			msgContent = CSimpleString::Format("%s%s", strMsg.GetData(), msg);
-#endif //_MSC_VER
-		}
 
 		if (notifyType != 0) {
 #if defined(_MSC_VER)

+ 1 - 44
Framework/spshell/spshell.cpp

@@ -146,7 +146,6 @@ static CSimpleStringA CutSpPathFromPathValue(const char* value, const char* pref
         if (!values[i].IsStartWith(prefix) && !IsSpPathType(values[i], "version") &&! IsSpPathType(values[i], "dep")) {
             if (!result.IsNullOrEmpty()) result += ENV_SEP_STR;
             result += values[i];
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("toadd:%s", values[i].GetData());
         }
     }
     //if (!result.IsNullOrEmpty() && path[path.GetLength() - 1] == ENV_SEP_CHAR) {
@@ -359,49 +358,6 @@ static bool  IsProcessRunAsAdmin()
 	return  bAdmin == TRUE;
 }
 
-const char *GetMachineType()
-{
-	auto env = sp_get_env();
-	if (env == NULL)
-	{
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("sp_get_env return null");
-		return NULL;
-	}
-	return env->cfg->root_ini->machine_type;
-}
-
-
-
-#ifdef RVC_OS_WIN
-
-//TODO: CrossPlaform 11111  [Gifur@2025730]
-const char *GetCenterSettingNameBySite(const char *pszSite)
-{
-	///*TODO(80374374@3/23/2023): CenterSettings */
-#if defined(_MSC_VER)
-	return  "CenterSetting.ini";
-#else
-	if (pszSite == NULL || strlen(pszSite) == 0)
-		return "CenterSetting.ini";
-
-	if ((stricmp(pszSite, "CMB.LIB") == 0)
-		|| (stricmp(pszSite, "CMB.SSB") == 0)) {
-		return  "CenterSetting.LAN.ini";
-	} else if ((stricmp(pszSite, "CMB.LSS") == 0)
-		|| (stricmp(pszSite, "CMB.FLB") == 0)
-		|| (stricmp(pszSite, "CMB.OSB") == 0)
-		|| (stricmp(pszSite, "CMB.SMM") == 0)) {
-		return   "CenterSetting.DMZ.ini";
-	} else {
-		return  "CenterSetting.DMZ.ini";
-	}
-#endif //_MSC_VER
-}
-
-
-
-#endif //RVC_OS_WIN
-
 static bool SpTerminateProcess(HANDLE hProc, DWORD dwProcID)
 {
 	if (!TerminateProcess(hProc, -1))
@@ -789,6 +745,7 @@ int main(int argc, char** argv)
 
 
 #if defined(_MSC_VER)
+	//TODO: CrossPlaform 等良瑜确认,应该不再涉及本地集中配置了  [Gifur@2025820]
 	auto centersettingPath = generateCenterSettingPath();
 	load_debugLevelInCentersetting(centersettingPath.c_str());
 	load_specialRunInfoInCentersetting(centersettingPath.c_str());

+ 0 - 8
Framework/spshell/svc.cpp

@@ -618,15 +618,11 @@ void on_fresh_env(sp_rpc_server_t* server, int epid, int svc_id, int call_type,
 		if (!values[i].IsStartWith(strPrefix)) {
 			if (!strNewPath.IsNullOrEmpty()) strNewPath += ENV_SEP_STR;
 			strNewPath += values[i];
-			//TODO: 测试代码,后续移除  [Gifur@20241015]
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("toadd:%s", values[i].GetData());
 		}
 	}
 	if (env->dir->dep_ver_path != NULL) {
 		if (!strNewPath.IsNullOrEmpty()) strNewPath += ENV_SEP_STR;
 		strNewPath += env->dir->dep_ver_path;
-		//TODO: 测试代码,后续移除  [Gifur@20241015]
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("toadd1:%s", env->dir->dep_ver_path);
 	}
 	char vendorName[128];
 	size = 127;
@@ -636,14 +632,10 @@ void on_fresh_env(sp_rpc_server_t* server, int epid, int svc_id, int call_type,
 		CSimpleStringA strSubDep(env->dir->dep_ver_path);
 		strSubDep += SPLIT_SLASH_STR;
 		strSubDep += vendorName;
-		//TODO: 测试代码,后续移除  [Gifur@20241015]
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("toadd1:%s", strSubDep.GetData());
 		if (!strNewPath.IsNullOrEmpty()) strNewPath += ENV_SEP_STR;
 		strNewPath += strSubDep;
 	}
 	toolkit_setenv(name, strNewPath.GetData());
-	//TODO: 测试代码,后续移除  [Gifur@20241015]
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("renew env:%s", strNewPath.GetData());
 }
 
 typedef struct

+ 2 - 0
Framework/winpr/include/winpr/crt.h

@@ -155,6 +155,8 @@ extern "C"
 	WINPR_API errno_t _ltoa_s(long value, char* buffer, size_t sizeInCharacters, int radix);
 	WINPR_API char* _itoa(int value, char* buffer, int radix);
 
+	WINPR_API char* _ultoa(unsigned long value, char* pstring, int radix);
+
 	/* Buffer Manipulation */
 
 	WINPR_API errno_t memmove_s(void* dest, size_t numberOfElements, const void* src, size_t count);

+ 2 - 0
Framework/winpr/include/winpr/sysinfo.h

@@ -187,6 +187,8 @@ extern "C"
 
 	WINPR_API void GetSystemTime(LPSYSTEMTIME lpSystemTime);
 	WINPR_API BOOL SetSystemTime(CONST SYSTEMTIME* lpSystemTime);
+
+	//UNIX: localtime
 	WINPR_API VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
 	WINPR_API BOOL SetLocalTime(CONST SYSTEMTIME* lpSystemTime);
 

+ 30 - 0
Framework/winpr/libwinpr/crt/conversion.c

@@ -105,4 +105,34 @@ char* _itoa(int value, char* buffer, int radix)
 	return buffer;
 }
 
+char* _ultoa(unsigned long value, char* pstring, int radix)
+{
+	char tmp[33] = { 0 };
+	char* tp = tmp;
+	long i;
+	unsigned long v = value;
+	char* sp;
+
+	if (radix > 36 || radix <= 1 || NULL == pstring) {
+		return 0;
+	}
+
+
+	while (v || tp == tmp) {
+		i = v % radix;
+		v = v / radix;
+		if (i < 10)
+			*tp++ = i + '0';
+		else
+			*tp++ = i + 'a' - 10;
+	}
+
+	sp = pstring;
+
+	while (tp > tmp)
+		*sp++ = *--tp;
+	*sp = 0;
+	return pstring;
+}
+
 #endif

+ 2 - 1
Framework/winpr/libwinpr/error/error.c

@@ -53,7 +53,8 @@ DWORD GetLastError(VOID)
 		}
 		return tmp;
 	}
-	return ERROR_OUTOFMEMORY;
+	//return ERROR_OUTOFMEMORY;
+	return errno;
 }
 
 VOID SetLastError(DWORD dwErrCode)

+ 108 - 154
Module/include/CommEntityUtil.hpp

@@ -10,23 +10,18 @@
 #include <IPTypes.h>
 #include <WinInet.h>
 #include <ShlObj.h>
-#include <Pdh.h>
 
 #pragma comment(lib, "IPHLPAPI.lib")
 #pragma comment(lib, "Wininet.lib")
-#pragma comment(lib, "pdh.lib")
-#define streq stricmp
 
 #else
 #include <linux/ethtool.h>
 #include <linux/sockios.h>
 #include <net/if.h>
 #include <sys/ioctl.h>
-#include <sys/sysinfo.h>
 #include <unistd.h>
 #include <thread>
 #include <chrono>
-#define streq strcasecmp
 
 #endif //_MSC_VER
 
@@ -37,14 +32,11 @@
 #include <iostream>
 #include <sstream>
 #include <map>
+#include <cmath>
 #include "SpBase.h"
 #include "publicFunExport.h"
 
 #define MACSESION 6
-#define DIV (1024 * 1024)
-#define DAY_DIV (24 * 60 * 60)
-#define HOURS_DIV (60 * 60)
-#define MINUS_DIV (60)
 
 typedef unsigned long long ULLINT;
 
@@ -52,146 +44,10 @@ namespace SP
 {
 namespace Module
 {
-
-	namespace System
-	{
-
-		static BOOL GetSystemBootTime(CSmallDateTime& systemBootTime)
-		{
-#if defined(_MSC_VER)
-			const char* SystemElapsedQuery = "\\System\\System Up Time";
-			PDH_STATUS Status;
-			HQUERY Query = NULL;
-			HCOUNTER hcElapsedTimeCount;
-			BOOL fSuc = FALSE;
-			/** 杀毒软件会对附件这几个系统调用函数有所监控,导致有时会耗费5s时间 Gifur@20221019]*/
-			Status = PdhOpenQuery(NULL, NULL, &Query);
-			PDH_FMT_COUNTERVALUE counterValue;
-			if (Status != ERROR_SUCCESS) {
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("PdhOpenQuery failed with status 0x%x.", Status);
-				goto Cleanup;
-			}
-			Status = PdhAddCounter(Query, SystemElapsedQuery, NULL, &hcElapsedTimeCount);
-			if (Status != ERROR_SUCCESS) {
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("PdhAddCounter for SystemElapsedQuery failed with status 0x%x.", Status);
-				goto Cleanup;
-			}
-			// 查询性能监视器数据
-			Status = PdhCollectQueryData(Query);
-			if (Status != ERROR_SUCCESS) {
-				DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("PdhCollectQueryData failed with 0x%x.", Status);
-				goto Cleanup;
-			}
-			Status = PdhGetFormattedCounterValue(hcElapsedTimeCount, PDH_FMT_LARGE, NULL, &counterValue);
-			if (Status == ERROR_SUCCESS) {
-				ULONGLONG ulSinceSeconds = counterValue.largeValue;
-				ULONG days = 0, hours = 0, minutes = 0, seconds = 0;
-				days = ULONG(ulSinceSeconds / DAY_DIV);
-				ulSinceSeconds %= DAY_DIV;
-				hours = ULONG(ulSinceSeconds / HOURS_DIV);
-				ulSinceSeconds %= HOURS_DIV;
-				minutes = ULONG(ulSinceSeconds / MINUS_DIV);
-				ulSinceSeconds %= MINUS_DIV;
-				seconds = ULONG(ulSinceSeconds);
-
-				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("SystemElapseTime: %uDays-%02u:%02u:%02u", days, hours, minutes, seconds);
-
-				FILETIME ftCurTime, ftStartTime;
-				GetSystemTimeAsFileTime(&ftCurTime);
-				ULARGE_INTEGER uliCurTime;
-				uliCurTime.HighPart = ftCurTime.dwHighDateTime;
-				uliCurTime.LowPart = ftCurTime.dwLowDateTime;
-				uliCurTime.QuadPart -= counterValue.largeValue * 1e7;
-
-				ftStartTime.dwHighDateTime = uliCurTime.HighPart;
-				ftStartTime.dwLowDateTime = uliCurTime.LowPart;
-
-				SYSTEMTIME stUTC, stLocal;
-
-				FileTimeToSystemTime(&ftStartTime, &stUTC);
-				char temp[22];
-				SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);
-				sprintf_s(temp, 22, "%d-%02d-%02d %02d:%02d:%02d",
-					stLocal.wYear, stLocal.wMonth, stLocal.wDay, stLocal.wHour, stLocal.wMinute, stLocal.wSecond);
-				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("OSStartTime: %s", temp);
-				systemBootTime.FromSystemTime(stLocal);
-				fSuc = TRUE;
-			}
-		Cleanup:
-			Status = PdhRemoveCounter(hcElapsedTimeCount);
-			if (Query) {
-				PdhCloseQuery(Query);
-			}
-			return fSuc;
-#else
-			DWORD ticks = 0;
-			SYSTEMTIME systemTime;
-
-			struct sysinfo info;
-			time_t curTime = 0;
-			time_t bootTime = 0;
-			struct tm* ptm = NULL;
-			if (sysinfo(&info)) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Failed to get sysinfo, errno:%u, reason:%s", errno, strerror(errno));
-				return FALSE;
-			}
-			time(&curTime);
-			if (curTime > info.uptime) {
-				bootTime = curTime - info.uptime;
-			}
-			else
-			{
-				bootTime = info.uptime - curTime;
-			}
-			ptm = localtime(&bootTime);
-			struct timespec ts;
-			if (!clock_gettime(CLOCK_MONOTONIC_RAW, &ts))
-				ticks = (ts.tv_sec * 1000) + (ts.tv_nsec / 1000000);
-
-			systemTime.wYear = (WORD)(ptm->tm_year + 1900);
-			systemTime.wMonth = (WORD)(ptm->tm_mon + 1);
-			systemTime.wDayOfWeek = (WORD)ptm->tm_wday;
-			systemTime.wDay = (WORD)ptm->tm_mday;
-			systemTime.wHour = (WORD)ptm->tm_hour;
-			systemTime.wMinute = (WORD)ptm->tm_min;
-			systemTime.wSecond = (WORD)ptm->tm_sec;
-			systemTime.wMilliseconds = (WORD)(ticks % 1000);
-
-			systemBootTime.FromSystemTime(systemTime);
-			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("OSStartTime: %s", systemBootTime.ToTimeString().GetData());
-			return TRUE;
-#endif //_MSC_VER
-		}
-	}//system
-
 namespace Comm
 {
-static BOOL IsFirsRunAppAfterSystemBoot(CEntityBase* pEntity, DWORD theReportUserCode = 0)
-{
-	BOOL result(FALSE);
-	CSystemRunInfo runInfo = { 0 };
-	ErrorCodeEnum ec = pEntity->GetFunction()->GetSystemRunInfo(runInfo);
-	if (ec == Error_Succeed) {
-		CBootInfo bootInfo = { 0 };
-		CSmallDateTime dateTime;
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("systemRunInfo time: %s", (LPCTSTR)runInfo.tmStart.ToTimeString());
-		ec = pEntity->GetFunction()->GetRebootInfo(/*runInfo.tmStart*/dateTime, bootInfo);
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("bootInfor time: %s", (LPCTSTR)bootInfo.tmStart.ToTimeString());
-		CSmallDateTime systemBootTime;
-		const BOOL bRet = System::GetSystemBootTime(systemBootTime);
-		if (bRet && systemBootTime > bootInfo.tmStart) {
-			result = TRUE;
-			if (theReportUserCode != 0) {
-				std::map<std::string, std::string> srcData;
-				CSimpleStringA strData = CSimpleStringA::Format("{\"AppLastStartTime\":\"%s\",\"AppStartTime\":\"%s\",\"OSStartTime\":\"%s\"}"
-					, (LPCTSTR)bootInfo.tmStart.ToTimeString(), (LPCTSTR)runInfo.tmStart.ToTimeString(), systemBootTime.ToTimeString().GetData());
-				LogWarn(Severity_Low, Error_Debug, theReportUserCode, strData.GetData());
-			}
-		}
-	}
-	return result;
-}
 
+//TODO: CrossPlaform !!!!UOS的实现与winpr_GetTickCount64是一样的,可以直接替换无影响  [Gifur@2025822]
 inline ULLINT RVCGetTickCount()
 {
 #ifdef RVC_OS_WIN
@@ -199,10 +55,8 @@ inline ULLINT RVCGetTickCount()
 #else
 	struct timespec ts;
 	clock_gettime(CLOCK_MONOTONIC, &ts);
-
 	return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
 #endif // RVC_OS_WIN
-
 }
 
 } // comm
@@ -268,7 +122,7 @@ static char* ConvertBytesToHexStr(BYTE* pBuf, int nLen)
     return pRet;
 }
 
-
+//same as hex2int ??
 static char HexChar2Dec(char c)
 {
 	if ((c >= '0') && (c <= '9'))
@@ -291,6 +145,17 @@ static int Hex2Int(char* s)
 	}
 	return ret;
 }
+*/
+
+inline static int hex2int(const char c)
+{
+	if (c >= '0' && c <= '9') return (c - '0');
+	if (c >= 'A' && c <= 'F') return (c - 'A' + 10);
+	if (c >= 'a' && c <= 'f') return (c - 'a' + 10);
+	return 0xFF;
+}
+
+/*
 
 static void ConvAscii(unsigned char* Hex, char* Ascii, unsigned int len)
 {
@@ -331,6 +196,95 @@ static bool IsNoStr(const char* str)
 	return true;
 }*/
 
+
+inline static int Char2Int(char* ch) {
+	int num = 0;
+	for (int i = 0; i < strlen(ch); i++) {
+		num += ((int)(ch[i] - '0')) * std::pow((float)10, (float)(strlen(ch) - i - 1));
+	}
+	return num;
+}
+
+static unsigned char Ch2Hex(char ch)
+{
+	static const char* hex = "0123456789ABCDEF";
+	for (unsigned char i = 0; i != 16; ++i)
+		if (ch == hex[i])
+			return i;
+	return 0;
+}
+
+/** remembe to delete[] return value if not null*/
+static char* HexStr2Bytes(const std::string& str)
+{
+	const int sz = str.length();
+	char* ret = new char[sz / 2 + 1];
+	if (ret == NULL) {
+		return NULL;
+	}
+	for (int i = 0; i < sz; i += 2) {
+		ret[i / 2] = (char)(((hex2int(str[i])) << 4) | hex2int(str[i + 1]));
+	}
+	ret[sz / 2] = 0x00;
+	return ret;
+}
+
+/*WARNING: need to delete[] the returned value if it's not null*/
+static char* Hex2Str(const char* src, int& dstLen)
+{
+	int i = 0;
+	int cnt = 0;
+	int len = strlen(src);
+	unsigned char* d = new unsigned char[len];
+	memset(d, 0, len);
+	while (*src)
+	{
+		if (i & 1)
+		{
+			d[cnt++] |= Ch2Hex(*src);
+		}
+		else
+		{
+			d[cnt] = Ch2Hex(*src) << 4;
+		}
+		src++;
+		i++;
+	}
+	dstLen = cnt;
+	return (char*)d;
+}
+
+/*WARNING: need to delete[] the returned value if it's not null*/
+static char* Str2Hex(const char* src, int srcLen)
+{
+	string ret;
+	static const char* hex = "0123456789ABCDEF";
+
+	for (int i = 0; i != srcLen; ++i)
+	{
+		ret.push_back(hex[(src[i] >> 4) & 0xf]);
+		ret.push_back(hex[src[i] & 0xf]);
+	}
+	char* tmp = new char[ret.length() + 1];
+	memset(tmp, 0, ret.length() + 1);
+	memcpy(tmp, ret.c_str(), ret.length());
+	return tmp;
+}
+
+/*duplicate with the above one ??*/
+static std::string Bytes2HexStr(char* bytes, std::size_t byteLen)
+{
+	std::string str("");
+	const std::string conv("0123456789ABCDEF");
+	for (std::size_t i = 0; i < byteLen; ++i) {
+		int b = 0x0F & (bytes[i] >> 4);
+		str.push_back(conv[b]);
+		b = 0x0F & (bytes[i]);
+		str.push_back(conv[b]);
+	}
+	return str;
+}
+
 static std::string formatTime(const SYSTEMTIME& time)
 {
     char tBuf[1024] = "";
@@ -338,6 +292,11 @@ static std::string formatTime(const SYSTEMTIME& time)
     return tBuf;
 }
 
+static CSimpleStringA generateConsumeTimeJson(const CSimpleStringA& entityName, const CSimpleStringA& startTime, int cost)
+{
+	return CSimpleStringA::Format("{\"name\":\"%s\",\"time\":\"%s\",\"cost\":%d}", entityName.GetData(), startTime.GetData(), cost);
+}
+
 static bool ShellExecute(const std::string& cmd, std::string& succResult, std::string& errResult)
 {
 	succResult = errResult = "";
@@ -397,11 +356,6 @@ static bool ShellExecute(const std::string& cmd, std::string& succResult, std::s
 #endif //_MSC_VER
 }
 
-static CSimpleStringA generateConsumeTimeJson(const CSimpleStringA& entityName, const CSimpleStringA& startTime, int cost)
-{
-    return CSimpleStringA::Format("{\"name\":\"%s\",\"time\":\"%s\",\"cost\":%d}", entityName.GetData(), startTime.GetData(), cost);
-}
-
 #if defined(_MSC_VER)
 
 static void ConvertUtf82GBK(std::string& str)

+ 12 - 21
Module/mod_CardReadAdapter/CardReadAdapterFSM.cpp

@@ -5,23 +5,14 @@
 #include "EventCode.h"
 #include <algorithm>
 #include <map>
+
 using namespace std;
+using namespace SP::Module::Comm;
+
 #define _ATL_NO_AUTOMATIC_NAMESPACE
 #define ReadCard_TIMEOUT	62000	//web的超时时间是65s
 #define ReadCard_Min_Time	12000	//Read+PreOnline 
 
-//TODO: CrossPlaform  [Gifur@2025730]
-unsigned long long GetTickCountRVC() {
-#ifdef RVC_OS_WIN
-	return GetTickCount64();
-#else
-	struct timespec ts;
-
-	clock_gettime(CLOCK_MONOTONIC, &ts);
-
-	return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
-#endif //RVC_OS_WIN
-}
 class CCardReadAdapterEntity;
 void CCardReadAdapterFSM::s0_on_entry()
 {
@@ -1004,8 +995,8 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
 	}
 	ErrorCodeEnum eErr = Error_Unexpect;
 	DWORD elapsed = 0;
-	DWORD dwStart = GetTickCountRVC();
-	DWORD dwEnd = GetTickCountRVC();
+	DWORD dwStart = RVCGetTickCount();
+	DWORD dwEnd = RVCGetTickCount();
 	int insertloopNum = 0;
 	int preloopNum = 0;
 	while(elapsed + ReadCard_Min_Time < ReadCard_TIMEOUT)
@@ -1018,7 +1009,7 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
 			DWORD dwUserCode = 0;
 			req.aid = ctx->Req.aid;
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("to call contactless insert...");
-			dwEnd = GetTickCountRVC();
+			dwEnd = RVCGetTickCount();
 			DWORD dwTimeout = ReadCard_TIMEOUT - (dwEnd-dwStart);
 			m_busCtx.eCardFromWhich = Card_In_No_Where;
 			m_busCtx.eCardProcStage = Card_ProcStage_WaitForCard;
@@ -1063,7 +1054,7 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
 			}
 			else if(eErr == Error_Interact){
 				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("maybe ICCommand error, need loop!!!");
-				dwEnd = GetTickCountRVC();
+				dwEnd = RVCGetTickCount();
 				elapsed = dwEnd - dwStart;
 				Sleep(400);
 				insertloopNum++;
@@ -1084,7 +1075,7 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
 			{
 				//oilyang@20210223 add,The Entity FSM is too late to change state ,as the call coming so fast
 				Sleep(200);
-				dwEnd = GetTickCountRVC();
+				dwEnd = RVCGetTickCount();
 				DWORD elapsed1 = ReadCard_TIMEOUT - (dwEnd-dwStart);
 				if(elapsed1 < 5000)//PreOnline较慢,预留一定时间
 				{
@@ -1107,7 +1098,7 @@ int CCardReadAdapterFSM::ContactlessCardRead(SpReqAnsContext<CardReadAdapterServ
 					ctx->Ans.status = 0;
 				}else if(eErr == Error_Interact){
 					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("ContacelssCard return Error_Interact, need loop.");
-					dwEnd = GetTickCountRVC();
+					dwEnd = RVCGetTickCount();
 					elapsed = dwEnd - dwStart;
 					preloopNum++;
 					Sleep(400);
@@ -2286,7 +2277,7 @@ int CCardReadAdapterFSM::PreOnlineOnStore(SpReqAnsContext<CardReadAdapterService
 	ErrorCodeEnum eErr = Error_Unexpect;
 	CSimpleStringA errMsg(true);
 
-	m_ullCrossStart = GetTickCountRVC();
+	m_ullCrossStart = RVCGetTickCount();
 
 	if (m_pHBClient != NULL)
 	{
@@ -2322,7 +2313,7 @@ int CCardReadAdapterFSM::NotifyPreonline(SpReqAnsContext<CardReadAdapterService_
 {
 	LOG_FUNCTION();
 
-	UINT64 crossEnd = GetTickCountRVC();
+	UINT64 crossEnd = RVCGetTickCount();
 	//? ? ? 为什么是110s,重试?从生产实际来看,在25s到40s之间,大部分在30s左右,需要和前端(65s)一致,改成60s oilyang@20221019
 	//in 110 second 
 	if (m_crossCtx != NULL)
@@ -2678,7 +2669,7 @@ void CCardReadAdapterFSM::WaitCardActive()
 	{
 		if (m_bCardActiveNotify)
 			break;
-		UINT64 crossEnd = GetTickCountRVC();
+		UINT64 crossEnd = RVCGetTickCount();
 		if ((crossEnd - m_ullCrossStart) < 62 * 1000)
 			Sleep(1000);
 		else {

+ 56 - 63
Module/mod_ContactlessCard/ContactlessFSM.cpp

@@ -9,8 +9,11 @@
 #include "publicFunExport.h"
 #include "CommEntityUtil.hpp"
 #ifdef RVC_OS_WIN
+#define CMBPRINT_LIBRARY_NAME "CMBPrint.dll"
 #else
 #include <dlfcn.h>
+#include <winpr/crt.h>
+#define CMBPRINT_LIBRARY_NAME "libCMBPrint.so"
 #endif //RVC_OS_WIN
 
 
@@ -1197,10 +1200,6 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 		}
 		return 0;
 	}
-	//if (m_cardType == CI_CARDTYPE_IC)
-	//{
-	//	ProcessRestrict();
-	//	CardholderVerify();
 	m_pCardProcess->TermRiskManage();
 	CSimpleStringA taaResult;
 	BYTE bt9f27 = 0;
@@ -1240,12 +1239,7 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 
 	char arqcLen[8];
 	ZeroMemory(arqcLen,sizeof(arqcLen));
-	//TODO: CrossPlaform  [Gifur@2025729]
-#ifdef RVC_OS_WIN
-    itoa(lenRet, arqcLen, 10);
-#else
-    sprintf(arqcLen, "%d", lenRet);
-#endif // RVC_OS_WIN
+	_itoa(lenRet, arqcLen, 10);
 	ICData appExpiryDate(false,0x5f,0x24);
 	if (m_pCardProcess->FindTagValue(TAG_VECTOR_IC,appExpiryDate,false,0) == -1)
 	{
@@ -1365,11 +1359,34 @@ int CContactlessCardFSM::PreOnline(SpReqAnsContext<ContactlessCardService_PreOnl
 
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("data to host(less)[%s],baseICData length:%d", txtresult.c_str(), baseICData.length());
 
+	if (pCID != NULL)
+	{
+		delete[] pCID;
+		pCID = NULL;
+	}
+
 	if (m_pDataToARQC != NULL)
 	{
-		delete []m_pDataToARQC;
+		delete [] m_pDataToARQC;
 		m_pDataToARQC = NULL;
 	}
+	if (pICCardSerial != NULL)
+	{
+		delete[] pICCardSerial;
+		pICCardSerial = NULL;
+	}
+
+	if (pIssueBankLen != NULL)
+	{
+		delete[] pIssueBankLen;
+		pIssueBankLen = NULL;
+	}
+
+	if (pExpireDate != NULL) {
+		delete[] pExpireDate;
+		pExpireDate = NULL;
+	}
+
 	ctx->Answer(Error_Succeed);
 	return 0;
 }
@@ -1500,59 +1517,41 @@ int CContactlessCardFSM::QueryCardInfo(SpReqAnsContext<ContactlessCardService_Qu
 
 bool CContactlessCardFSM::LoadCMBPrint(CSimpleStringA csBinPath)
 {
-	if (cmdDecodeEx == NULL) {
-		CSimpleStringA csCMBPrint("");
+	if (cmdDecodeEx != NULL) return true;
 
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-		csCMBPrint = "CMBPrint.dll";
-		csCMBPrint = csBinPath + SPLIT_SLASH_STR + csCMBPrint;
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("cmbpath %s", (const char*)csCMBPrint);
-		HMODULE hr = LoadLibraryA(csCMBPrint);
-		if (hr == NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Load CMBPrint failed(%d).", hr);
-			return false;
-		}
-		if ((cmdDecodeMag2 = (lpCMBdecodeMag2)GetProcAddress(hr, "CMBdecodeMag2")) == NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get Mag2 address failed.");
-			return false;
-		}
-		if ((cmdDecodeEx = (lpCMBdecodeEx)GetProcAddress(hr, "CMBdecodeEx")) == NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get Mag23Ex address failed.");
-			cmdDecodeMag2 = NULL;
-			return false;
+	bool result(false);
+	CSimpleStringA csCMBPrint(CMBPRINT_LIBRARY_NAME);
+	csCMBPrint = csBinPath + SPLIT_SLASH_STR + csCMBPrint;
+	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("cmbpath %s", (const char*)csCMBPrint);
+	do
+	{
+		if (!ExistsFileA(csCMBPrint)) {
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Load CMBPrint %s failed: no exist", (const char*)csCMBPrint);
+			break;
 		}
-#else
-		csCMBPrint = "libCMBPrint.so";
-		csCMBPrint = csBinPath + "/" + csCMBPrint;
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("cmbpath %s", (const char*)csCMBPrint);
-		void* hr = NULL;
-		hr = dlopen(csCMBPrint, RTLD_LAZY);
-		if (hr == NULL)
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Load CMBPrint failed(%s).", dlerror());
-			return false;
+		toolkit_lib_t cmbPrintLib;
+		int res = toolkit_dlopen(csCMBPrint, &cmbPrintLib);
+		if (res != 0) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("toolkit_dlopen[%s] failed with error %s.", csCMBPrint.GetData(), toolkit_dlerror(&cmbPrintLib));
+			break;
 		}
-		//pfunc_unpack = (PF_unpack)dlsym(hLib, "_Z6unpackPcS_i");
-		if ((cmdDecodeMag2 = (lpCMBdecodeMag2)dlsym(hr, "CMBdecodeMag2")) == NULL)
+		if ((res = toolkit_dlsym(&cmbPrintLib, "CMBdecodeMag2", (void**)&cmdDecodeMag2)) != 0)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get Mag2 address failed.");
-			return false;
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get 'CMBdecodeMag2' Func address failed with error: %s", toolkit_dlerror(&cmbPrintLib));
+			break;
 		}
-		if ((cmdDecodeEx = (lpCMBdecodeEx)dlsym(hr, "CMBdecodeEx")) == NULL)
+		if ((res = toolkit_dlsym(&cmbPrintLib, "CMBdecodeEx", (void**)&cmdDecodeEx)) != 0)
 		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get Mag23Ex address failed.");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA2J18")("Get 'CMBdecodeEx' Func address failed with error: %s", toolkit_dlerror(&cmbPrintLib));
 			cmdDecodeMag2 = NULL;
-			return false;
+			break;
 		}
-#endif
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load %s succ.", (const char*)csCMBPrint);
-	}
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Load %s suc.", (const char*)csCMBPrint);
+		result = true;
 
-	return true;
+	} while (false);
+
+	return result;
 }
 
 void CContactlessCardFSM::GetCardProcessLastErr(ErrorCodeEnum& eErrCode, CSimpleStringA& ApiName, CSimpleStringA& alarmMsg, CSimpleStringA& csErrMsgWithReturnCode)
@@ -1954,14 +1953,7 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 	}
 	char arqcLen[8];
 	ZeroMemory(arqcLen, sizeof(arqcLen));
-	//TODO: CrossPlaform  [Gifur@2025729]
-#ifdef RVC_OS_WIN
-	itoa(lenRet, arqcLen, 10);
-#else
-	sprintf(arqcLen, "%d", lenRet);
-#endif // RVC_OS_WIN
-
-	
+	_itoa(lenRet, arqcLen, 10);
 
 	ICData track2(false, 0x57, 0x00), ICCardSerial(false, 0x5f, 0x34), appExpiryDate(false, 0x5f, 0x24);
 	string t2ICAccount(""), t2ICCardSerial(""), t2ICCVC(""), t2ICTrack2(""), cardType("0"),t2ICExpireDate("");
@@ -2121,6 +2113,7 @@ int CContactlessCardFSM::PreOnlineJS(SpReqAnsContext<ContactlessCardService_Read
 
 	if (pCID != NULL)
 		delete[]pCID;
+
 	if (pIssueBankLen != NULL)
 		delete[]pIssueBankLen;
 

+ 0 - 43
Module/mod_CustMngrAuth/CustMngrAuthFSM.cpp

@@ -792,53 +792,12 @@ void CCustMngrAuthFSM::DeleteBmp(int type)
 	}
 }
 
-//TODO: CrossPlaform  [Gifur@2025728]
 ErrorCodeEnum CCustMngrAuthFSM::DeleteFileIfExisted(const char* fileName)
 {
-#ifdef RVC_OS_WIN
-	if (strlen(fileName) == 0 || strchr(fileName, (int)'*') != NULL)
-	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Invalid or empty filename(%s)", fileName);
-		return Error_Param;
-	}
-	CSimpleStringA strPath, strObjPath;
-	ErrorCodeEnum errCode = m_pEntity->GetFunction()->GetPath("Dep", strPath);
-	strObjPath = strPath + "\\" + fileName;
-
-	UpdateAndWarnFileFindInDepBak(strObjPath, fileName, LOG_ERR_CUSTMNGRAUTH_FindFile_in_DepBak);
-	//TODO: CrossPlaform  [Gifur@2025728]
-	WIN32_FIND_DATA findData;
-	if (FindFirstFileA((LPCTSTR)strObjPath, &findData) != INVALID_HANDLE_VALUE)
-	{
-		if (DeleteFileA((LPCTSTR)strObjPath) != 0)
-		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteFile(%s) success.", strObjPath.GetData());
-			return Error_Succeed;
-		}
-		else {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteFile(%s) failed LastError(%s).", strObjPath.GetData(), GetLastError());
-			return Error_Unexpect;
-		}
-	}
-	if (GetLastError() == ERROR_FILE_NOT_FOUND)
-	{
-		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("file %s not exist.", fileName);
-		return Error_Succeed;
-	}
-	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DeleteFle(%s) Unexpect GetLastError(%s).", strObjPath.GetData(), GetLastError());
-	return Error_Unexpect;
-#else
-	if (strlen(fileName) == 0 || strchr(fileName, (int)'*') != NULL)
-	{
-		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Invalid or empty filename(%s)", fileName);
-		return Error_Param;
-	}
 	CSimpleStringA strPath, strObjPath;
 	ErrorCodeEnum errCode = m_pEntity->GetFunction()->GetPath("Dep", strPath);
 	strObjPath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", strPath.GetData(), fileName);
-
 	UpdateAndWarnFileFindInDepBak(strObjPath, fileName, LOG_ERR_CUSTMNGRAUTH_FindFile_in_DepBak);
-
 	if (ExistsFileA(strObjPath))
 	{
 		if (RemoveFileA(strObjPath))
@@ -852,10 +811,8 @@ ErrorCodeEnum CCustMngrAuthFSM::DeleteFileIfExisted(const char* fileName)
 		}
 	}
 	else {
-		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("file %s not exist.", fileName);
 		return Error_Succeed;
 	}
-#endif	
 }
 
 void CCustMngrAuthFSM::UpdateAndWarnFileFindInDepBak(CSimpleStringA& newDepPath, const char* filename, DWORD userCode)

+ 24 - 102
Module/mod_FingerPrint/FingerPrintFSM.cpp

@@ -856,61 +856,30 @@ int CFingerPrintFSM::GetFingerPrint(SpReqAnsContext<FingerPrintService_GetFinger
 
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::Image2Feature").setCostTime(l_endTime - l_beginTime)("GetFingerPrint::Image2Feature succ ,fileName:%s, lpbLength:%d", fileName.GetData(), lpbLength);
 			Sleep(200);//save image may be delayed some time, not must happen
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-
-			//TODO: CrossPlaform  [Gifur@2025728]
-			WIN32_FIND_DATA findData;
-			if (FindFirstFileA((LPCTSTR)strPath, &findData) != INVALID_HANDLE_VALUE 
-				&& lpbFeature != NULL && lpbLength == STANDARD_FEATURE_LEN)
-			{
-				ctx->Ans.imageName = fileName;
-				lpbFeature[STANDARD_FEATURE_LEN] = '\0';
-				ctx->Ans.feature = (LPCTSTR)lpbFeature;
-				bGetFingerPrintSuc = true;
-				//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Image2Feature success.");
-				break;
-			}
-			else if(FindFirstFileA((LPCTSTR)strPath, &findData) == INVALID_HANDLE_VALUE)
-			{
-				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Cannot find the fingerprint image %s", fileName.GetData());
-				bNotFindImage = true;
-				break;
-			}else if(lpbLength != STANDARD_FEATURE_LEN){
-				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, vendor returned feature length is not right.");
-				bLenIsNotRight = true;
-				break;
-			}else{
-				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Fingerprint feature is NULL.");
-				bFeatureIsNull = true;
-				break;
-			}
-#else
-			if (ExistsFile(strPath)
-				&& lpbFeature != NULL && lpbLength == STANDARD_FEATURE_LEN)
-			{
-				ctx->Ans.imageName = fileName;
-				lpbFeature[STANDARD_FEATURE_LEN] = '\0';
-				ctx->Ans.feature = (LPCTSTR)lpbFeature;
-				bGetFingerPrintSuc = true;
-				//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Image2Feature success.");
-				break;
-			}
-			else if (!ExistsFile(strPath))
-			{
+			if (ExistsFileA(strPath)) {
+				if (lpbFeature != NULL && lpbLength == STANDARD_FEATURE_LEN) {
+					ctx->Ans.imageName = fileName;
+					lpbFeature[STANDARD_FEATURE_LEN] = '\0';
+					ctx->Ans.feature = (LPCTSTR)lpbFeature;
+					bGetFingerPrintSuc = true;
+					//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Image2Feature success.");
+					break;
+				}
+				else if (lpbLength != STANDARD_FEATURE_LEN) {
+					//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, vendor returned feature length is not right.");
+					bLenIsNotRight = true;
+					break;
+				}
+				else {
+					//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Fingerprint feature is NULL.");
+					bFeatureIsNull = true;
+					break;
+				}
+			} else {
 				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Cannot find the fingerprint image %s", fileName.GetData());
 				bNotFindImage = true;
 				break;
-			}else if(lpbLength != STANDARD_FEATURE_LEN){
-				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, vendor returned feature length is not right.");
-				bLenIsNotRight = true;
-				break;
-			}else{
-				//DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("<GetFingerPrint>, Fingerprint feature is NULL.");
-				bFeatureIsNull = true;
-				break;
 			}
-#endif
 		}
 		dwEnd = SP::Module::Comm::RVCGetTickCount();
 		elapsed = dwEnd - dwStart;
@@ -1012,26 +981,12 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 
 		imagePaths.push_back(tempStr);
 		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("imageName:%s", imagePaths[i].GetData());
-
-		//TODO: CrossPlaform  [Gifur@2025728]
-#ifdef RVC_OS_WIN		
-		WIN32_FIND_DATA findData;
-		if (FindFirstFileA((LPCTSTR)imagePaths[i], &findData) == INVALID_HANDLE_VALUE)
-		{
+		if (!ExistsFileA(imagePaths[i])) {
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode("RTA242C")("<GenerateTemplate>, image <%s> not exist.", imagePaths[i].GetData());
 			DeleteBmp(BmpImage);
 			ctx->Answer(Error_NoTarget);
 			return 0;
 		}
-#else
-		if (!ExistsFile(imagePaths[i]))
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER).setLogCode(FingerPrint_Generate_Template_ID).setResultCode("RTA242C")("<GenerateTemplate>, image <%s> not exist.", imagePaths[i].GetData());
-			DeleteBmp(BmpImage);
-			ctx->Answer(Error_NoTarget);
-			return 0;
-		}
-#endif		
 	}
 
 	ULLINT l_beginTime, l_endTime;
@@ -1084,18 +1039,10 @@ int CFingerPrintFSM::GenerateTemplate(SpReqAnsContext<FingerPrintService_Generat
 
 ErrorCodeEnum CFingerPrintFSM::GetDevCatInfo(DevCategoryInfo& devInfo)
 {
-	//TODO: CrossPlaform  [Gifur@2025730]
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER)("DevCatgoryInfo len:%d, %d, %d", strlen(m_devCatInfo.szModel), strlen(m_devCatInfo.szType), strlen(m_devCatInfo.szVendor));
-#ifdef RVC_OS_WIN
-	strncpy_s(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) : MAX_DEV_MODEL_LEN-1);
-	strncpy_s(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) : MAX_DEV_TYPE_LEN-1);
-	strncpy_s(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) : MAX_DEV_VENDOR_LEN-1);
-#else
-	strncpy(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) : MAX_DEV_MODEL_LEN-1);
-	strncpy(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) : MAX_DEV_TYPE_LEN-1);
-	strncpy(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) : MAX_DEV_VENDOR_LEN-1);
-#endif // RVC_OS_WIN
-
+	strncpy(devInfo.szModel, m_devCatInfo.szModel, (MAX_DEV_MODEL_LEN > strlen(m_devCatInfo.szModel)) ? strlen(m_devCatInfo.szModel) : MAX_DEV_MODEL_LEN - 1);
+	strncpy(devInfo.szType, m_devCatInfo.szType, (MAX_DEV_TYPE_LEN > strlen(m_devCatInfo.szType)) ? strlen(m_devCatInfo.szType) : MAX_DEV_TYPE_LEN - 1);
+	strncpy(devInfo.szVendor, m_devCatInfo.szVendor, (MAX_DEV_VENDOR_LEN > strlen(m_devCatInfo.szVendor)) ? strlen(m_devCatInfo.szVendor) : MAX_DEV_VENDOR_LEN - 1);
 	return Error_Succeed;
 }
 
@@ -1234,30 +1181,6 @@ ErrorCodeEnum CFingerPrintFSM::DeleteFileIfExisted(const char* fileName)
 	strObjPath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", strPath.GetData(), fileName);
 
 	UpdateAndWarnFileFindInDepBak(strObjPath, fileName, FingerPrint_UserErrorCode_FindFile_in_DepBak);
-
-	//TODO: CrossPlaform  [Gifur@2025728]
-#ifdef RVC_OS_WIN
-	WIN32_FIND_DATA findData;
-	if (FindFirstFileA((LPCTSTR)strObjPath, &findData) != INVALID_HANDLE_VALUE)
-	{
-		if (DeleteFileA((LPCTSTR)strObjPath) != 0)
-		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteFile(%s) success.", strObjPath.GetData());
-			return Error_Succeed;
-		}
-		else
-		{
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA242G")("DeleteFile(%s) failed LastError(%s).", strObjPath.GetData(), GetLastError());
-			return Error_Unexpect;
-		}
-	}
-	if (GetLastError() == ERROR_FILE_NOT_FOUND)
-	{
-		return Error_Succeed;
-	}
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteFle(%s) Unexpect GetLastError(%s).", strObjPath.GetData(), GetLastError());
-	return Error_Unexpect;
-#else
 	if (ExistsFileA(strObjPath))
 	{
 		if (RemoveFileA(strObjPath))
@@ -1275,7 +1198,6 @@ ErrorCodeEnum CFingerPrintFSM::DeleteFileIfExisted(const char* fileName)
 		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("file %s not exist.", fileName);
 		return Error_Succeed;
 	}
-#endif
 }
 
 #pragma endregion

+ 42 - 14
Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp

@@ -768,9 +768,9 @@ void ResourceWatcherFSM::AutoDeleteFiles()
     pFunc->OpenConfig(Config_CenterSetting, spConfig);
 
     //判断是否升级完毕,未完成升级不进行删除任务
-    CSimpleStringA strRunInfo, strStartTime;
-    if (m_pEntity->GetFunction()->GetPath("RunInfo", strRunInfo) == Error_Succeed) {
-        strStartTime = strRunInfo + SPLIT_SLASH_STR + "runcfg" + SPLIT_SLASH_STR + "starttime.dat";
+    CSimpleStringA strRunCfg, strStartTime;
+    if (m_pEntity->GetFunction()->GetPath("RunCfg", strRunCfg) == Error_Succeed) {
+        strStartTime = strRunCfg + SPLIT_SLASH_STR + "starttime.dat";
         if (!ExistsFileA(strStartTime.GetData())) {
             DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("upgrade prpcess done, try to delete version files.");//完成升级过程,通过
         }
@@ -4045,17 +4045,45 @@ void ResourceWatcherFSM::AlarmSystemBasicInfo()
 
 BOOL ResourceWatcherFSM::DetectIsFirstRunAtBoot()
 {
-    const BOOL bSet = SP::Module::Comm::IsFirsRunAppAfterSystemBoot(GetEntityBase(), LOG_RESOURCEWATCHER_FIRST_RUN_AFTER_BOOT);
-    if (bSet) {
-		ErrorCodeEnum eRet = GetEntityBase()->GetFunction()->SetSysVar(SYSVAR_FRAMEWORK_FIRST_BOOT, SYSVAR_FRAMEWORK_FIRST_BOOT_YES);
-		if (eRet != Error_Succeed) {
-			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Set %s with %s failed: %d", SYSVAR_FRAMEWORK_FIRST_BOOT, SYSVAR_FRAMEWORK_FIRST_BOOT_YES, eRet);
-		}
-    }
-    else {
-		GetEntityBase()->GetFunction()->SetSysVar(SYSVAR_FRAMEWORK_FIRST_BOOT, SYSVAR_FRAMEWORK_FIRST_BOOT_NO);
-    }
-    return bSet;
+	CSystemRunInfo runInfo = { 0 };
+	ErrorCodeEnum ec = GetEntityBase()->GetFunction()->GetSystemRunInfo(runInfo);
+	if (ec == Error_Succeed) {
+		CBootInfo bootInfo = { 0 };
+		CSmallDateTime dateTime;
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("systemRunInfo time: %s", (LPCTSTR)runInfo.tmStart.ToTimeString());
+		ec = GetEntityBase()->GetFunction()->GetRebootInfo(/*runInfo.tmStart*/dateTime, bootInfo);
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("bootInfor time: %s", (LPCTSTR)bootInfo.tmStart.ToTimeString());
+        tk_systime_t sy_t;
+		SYSTEMTIME systemTime;
+        if (0 == osutil_system_boot_time(&sy_t)) {
+			systemTime.wYear = sy_t.year;
+			systemTime.wMonth = sy_t.month;
+			systemTime.wDayOfWeek = sy_t.dayofweek;
+			systemTime.wDay = sy_t.day;
+			systemTime.wHour = sy_t.hour;
+			systemTime.wMinute = sy_t.minute;
+			systemTime.wSecond = sy_t.second;
+			systemTime.wMilliseconds = sy_t.milli_seconds;
+			CSmallDateTime systemBootTime;
+			systemBootTime.FromSystemTime(systemTime);
+
+			if (systemBootTime > bootInfo.tmStart) {
+				std::map<std::string, std::string> srcData;
+				CSimpleStringA strData = CSimpleStringA::Format("{\"AppLastStartTime\":\"%s\",\"AppStartTime\":\"%s\",\"OSStartTime\":\"%s\"}"
+					, (LPCTSTR)bootInfo.tmStart.ToTimeString(), (LPCTSTR)runInfo.tmStart.ToTimeString(), systemBootTime.ToTimeString().GetData());
+				LogWarn(Severity_Low, Error_Debug, LOG_RESOURCEWATCHER_FIRST_RUN_AFTER_BOOT, strData.GetData());
+
+				ErrorCodeEnum eRet = GetEntityBase()->GetFunction()->SetSysVar(SYSVAR_FRAMEWORK_FIRST_BOOT, SYSVAR_FRAMEWORK_FIRST_BOOT_YES);
+				if (eRet != Error_Succeed) {
+					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Set %s with %s failed: %d", SYSVAR_FRAMEWORK_FIRST_BOOT, SYSVAR_FRAMEWORK_FIRST_BOOT_YES, eRet);
+				}
+
+                return TRUE;
+			}
+        }
+	}
+    GetEntityBase()->GetFunction()->SetSysVar(SYSVAR_FRAMEWORK_FIRST_BOOT, SYSVAR_FRAMEWORK_FIRST_BOOT_NO);
+    return FALSE;
 }
 
 void ResourceWatcherFSM::DetectSoftwareInstallStatus()

+ 2 - 57
Module/mod_ResourceWatcher/mod_ResourceWatcher.cpp

@@ -134,18 +134,6 @@ struct SogouRunVersionInfo
         }
         return installVer;
     }
-    //TODO: CrossPlaform  [Gifur@2025730]
-    //true: 普通调用版本输入法,false: SDK版本输入法
-    bool IsTSFVersion()
-    {
-#if defined(_MSC_VER)
-        CVersion standardVer = CVersion(2, 6, 1, 1967); //对比版本为2.6.1.1967
-#else
-        CVersion standardVer = CVersion(2, 6, 4, 355); //对比版本为2.4.6.355
-#endif //_MSC_VER
-
-        return (ConvertVersion() >= standardVer);
-    }
 };
 
 struct SogouInstallStateInfo
@@ -403,7 +391,7 @@ ErrorCodeEnum SetFileExecutePriviledge(LPCTSTR lpcszDirOrFilePath)
 #endif //RVC_OS_WIN
     return result;
 }
-//TODO: CrossPlaform  [Gifur@2025730]
+/** 特殊逻辑需要这样返回?  [Gifur@2025821]*/
 static int IsFileExists(const char* pfilename)
 {
     int iRet = -1;
@@ -800,46 +788,6 @@ void ResourceWatcherEntity::ChcekDiskFileSpace()
     }
 }
 
-//TODO: CrossPlaform 看是否转移到框架toolkit,太常用了  [Gifur@2025730]
-BOOL ResourceWatcherEntity::KillProcessFromName(const CSimpleStringA& strProcessName)
-{
-
-#if defined(RVC_OS_WIN)
-    //创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照)    
-    HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
-    PROCESSENTRY32 pe;
-    pe.dwSize = sizeof(PROCESSENTRY32);
-    if (!Process32First(hSnapShot, &pe)) {
-        DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("获取进程快照失败。");
-        return FALSE;
-    }
-
-    while (Process32Next(hSnapShot, &pe)) {
-        //pe.szExeFile获取当前进程的可执行文件名称    
-        CSimpleStringA scTmp = pe.szExeFile;
-        if (!scTmp.Compare(strProcessName)) {
-            DWORD dwProcessID = pe.th32ProcessID;
-            HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessID);
-            BOOL killed = ::TerminateProcess(hProcess, 0);
-            CloseHandle(hProcess);
-
-            if (killed) {
-                DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("SUCCESS! Kill process [%s], pid [%d].", strProcessName.GetData(), dwProcessID);
-            }
-            else {
-                DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("FAILED! Kill process [%s], pid [%d].", strProcessName.GetData(), dwProcessID);
-            }
-            return killed;
-        }
-    }
-    return TRUE;
-#else 
-    DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("It's not supported %s", __FUNCTION__);
-    return FALSE;
-#endif //RVC_OS_WIN
-
-}
-
 #endif //RVC_OS_LINUX
 
 #if defined(RVC_OS_LINUX)
@@ -882,7 +830,7 @@ ErrorCodeEnum ResourceWatcherEntity::GetSogouPkgDirPath(CSimpleStringA& strPkgPa
 }
 #endif //RVC_OS_LINUX
 
-//TODO: CrossPlaform  [Gifur@2025730]
+//TODO: CrossPlaform  这段代码感觉像是拷贝的,待处理 [Gifur@2025730]
 ErrorCodeEnum ResourceWatcherEntity::RunShellScript(LPCTSTR cmdline)
 {
 #if defined(RVC_OS_WIN)
@@ -1613,9 +1561,6 @@ void ResourceWatcherEntity::InstallSogou(SpReqAnsContext<ResourceWatcherService_
                         ctx->Ans.path = info.program.strInstallDir;
                         ctx->Ans.reserverd1 = info.program.strVersion;
                         ctx->Ans.reserverd2 = info.state.GetInstallTime().ToTimeString();
-                        //ctx->Ans.reserverd3 = info.program.IsTSFVersion() ? 1 : 0;
-                        //ctx->Ans.reserverd4 = 0;
-
                         if (doTryRestart) {
                             tmpMsg = CSimpleStringA::Format(" 从[%s]安装搜狗输入法成功。", strInstallPkgPath.GetData());
                         }

+ 0 - 1
Module/mod_ResourceWatcher/mod_ResourceWatcher.h

@@ -281,7 +281,6 @@ private:
 	std::vector<std::string> GetUserNameList(bool bExcludeRoot = false);
 	ErrorCodeEnum RunShellScript(LPCTSTR cmdline);
 	ErrorCodeEnum DeleteUnzipDir();//清理临时解压包文件
-	BOOL KillProcessFromName(const CSimpleStringA& strProcessName);
 	bool is_str_utf8(const char* str);
 	/// <summary>
 	/// 通过集中配置检测指定进程是否存在

+ 10 - 90
Module/mod_SalesRecorder/mod_SalesRecorder.cpp

@@ -93,20 +93,10 @@ static void CStringSplit(char* str, char** result, const char* del)
 {
 	char* pdata = NULL;
 	char* p = NULL;
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 	p = strtok_s(str, del, &pdata);
-#else
-	p = strtok_r(str, del, &pdata);
-#endif // RVC_OS_WIN
-
 	while (p != NULL) {
 		*result++ = p;
-#ifdef RVC_OS_WIN
 		p = strtok_s(NULL, del, &pdata);
-#else
-		p = strtok_r(NULL, del, &pdata);
-#endif
 	}
 }
 
@@ -117,9 +107,9 @@ static bool rvcMoveFile(const char* strSrcFile, const char* strDstFile)
 	if (NULL == strSrcFile || NULL == strDstFile) {
 		return bRet;
 	}
-	//TODO: CrossPlaform  [Gifur@2025730]
+	//TODO: CrossPlaform WINPR是支持直接跨平台使用 MoveFileA [Gifur@2025730]
 #ifdef RVC_OS_WIN
-	bRet = MoveFile(strSrcFile, strDstFile);
+	bRet = MoveFileA(strSrcFile, strDstFile);
 #else
 	if (0 == rename(strSrcFile, strDstFile)) {
 		bRet = true;
@@ -128,26 +118,6 @@ static bool rvcMoveFile(const char* strSrcFile, const char* strDstFile)
 	return bRet;
 }
 
-//TODO: CrossPlaform  [Gifur@2025728]
-static bool RvcDeleteFile(const char* strSrcFile)
-{
-	bool bRet = false;
-	if (NULL == strSrcFile) {
-		return bRet;
-	}
-
-#ifdef RVC_OS_WIN
-	bRet = DeleteFile(strSrcFile);
-#else
-	if (0 == remove(strSrcFile)) {
-		bRet = true;
-	}
-#endif // RVC_OS_WIN
-
-	return bRet;
-}
-
-
 #ifdef RVC_OS_WIN
 // 寻找某目录下与通配符匹配的文件
 static bool FindMatchedFile(const char* pstrFindPath, const char* pstrFindFileName, uint32_t & uCountFile)
@@ -267,36 +237,6 @@ static CSimpleStringA DecryptString(const char* lpszEncrpyted)
 	return CSimpleStringA((LPCTSTR)csPlainTxt);
 }
 
-//TODO: CrossPlaform  [Gifur@2025730]
-static unsigned long GetFileSize(const char* pfilename)
-{
-#ifdef RVC_OS_WIN
-	unsigned long usize = 0;
-	if (NULL == pfilename) {
-		return usize;
-	}
-
-	FILE* pFile = fopen(pfilename, "rb");
-	if (pFile) {
-		fseek(pFile, 0, SEEK_END);
-		usize = ftell(pFile);
-		fclose(pFile);
-	}
-
-	return usize;
-#else
-	struct stat statbuf;
-	if (0 == stat(pfilename, &statbuf)) {
-		return statbuf.st_size;
-	}
-	else {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("errno info is %s.", strerror(errno));
-		return 0;
-	}
-#endif
-}
-
-
 static void rvcDbg(filecrypt_loglevel elevel, const char* fmt, ...)
 {
 	va_list arg;
@@ -824,15 +764,10 @@ void CSalesRecorderEntity::DeleteAllVideo( const char * pszVideoName)
 				{
 					fileName = CSimpleStringA::Format("%s%s_%d.%s", strPath.GetData(), strFindFileName.GetData(), i, RECORD_MP4_SUFFIX);
 
-					bRet = RvcDeleteFile(fileName.GetData());
+					bRet = RemoveFileA(fileName.GetData());
 					if(!bRet) {
 						bDeleteSucc = false;
-					#ifdef RVC_OS_WIN
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Error Code %lu while delete %s.", GetLastError(), fileName.GetData());
-					#else
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s(%d) while delete %s.", strerror(errno), errno, fileName.GetData());
-					#endif // RVC_OS_WIN
-						
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Error Code %lu while delete %s.", GetLastError(), fileName.GetData());
 					}
 				}
 				if (!bDeleteSucc) {
@@ -866,15 +801,10 @@ ErrorCodeEnum CSalesRecorderEntity::DeleteVideo( const char *videofilename)
 				{
 					fileName = CSimpleStringA::Format("%s%s_%d.%s", strPath.GetData(), videofilename, i, RECORD_MP4_SUFFIX);
 
-					bRet = RvcDeleteFile(fileName.GetData());
+					bRet = RemoveFileA(fileName.GetData());
 					if(!bRet) {
 						bDeleteSucc = false;
-						//TODO: CrossPlaform  [Gifur@2025730]
-					#ifdef RVC_OS_WIN
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Error Code %lu while delete %s ", GetLastError(), fileName.GetData());
-					#else
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s(%d) while delete %s ", strerror(errno), errno, fileName.GetData());
-					#endif
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Error Code %lu while delete %s ", GetLastError(), fileName.GetData());
 					}
 				}
 				if (!bDeleteSucc) {
@@ -942,7 +872,7 @@ ErrorCodeEnum CSalesRecorderEntity::SaveVideo( const char * videofilename)
 					{
 						sourFileName = CSimpleStringA::Format("%s%s_%d.%s", sourPath.GetData(), strFindFileName.GetData(), i, RECORD_MP4_SUFFIX);
 						destFileName = CSimpleStringA::Format("%s%s_%d.%s", destPath.GetData(), strFindFileName.GetData(), i, RECORD_MP4_SUFFIX);
-						unsigned long ufilesize = GetFileSize(sourFileName.GetData());
+						unsigned long ufilesize = ReadFileSize(sourFileName.GetData());
 						char strhash[MAX_PATH] = { 0 };
 						get_file_sm3digest(strhash, MAX_PATH, sourFileName.GetData());
 						DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s file size is %u byte,sm3 digest is %s.", sourFileName.GetData(), ufilesize, strhash);
@@ -1649,22 +1579,17 @@ int CSalesRecorderEntity::HandleEncryptVideoRecord(const char* videofilename)
 	if (0 != iresult) {
 		LogWarn(Severity_Middle, Error_Debug, LOG_EVT_SALESRECORD_ENCRYPT_FAILED, CSimpleStringA::Format("encryption file %s failed, delete out temp file %s!", videofilename, strOutFile).GetData());
 		if (ExistsFile(strOutFile)) {
-			if (!RvcDeleteFile(strOutFile)) {
+			if (!RemoveFileA(strOutFile)) {
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteFile file %s failed!", strOutFile);
 			}
 		}
 		return iRet;
 	}
 
-	bool bRet = RvcDeleteFile(videofilename);
+	bool bRet = RemoveFileA(videofilename);
 	if (!bRet) {
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 		LogWarn(Severity_Middle, Error_Debug, LOG_EVT_SALESRECORD_DELETE_FAILED, CSimpleStringA::Format("Error Code %lu while delete %s, delete out temp file[%s]!", GetLastError(), videofilename, strOutFile).GetData());
-#else
-		LogWarn(Severity_Middle, Error_Debug, LOG_EVT_SALESRECORD_DELETE_FAILED, CSimpleStringA::Format("%s(%d) while delete %s, delete out temp file[%s]!", strerror(errno), errno, videofilename, strOutFile).GetData());
-#endif // RVC_OS_WIN
-		if (!RvcDeleteFile(strOutFile)) {
+		if (!RemoveFileA(strOutFile)) {
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteFile file %s failed!", strOutFile);
 		}
 		return iRet;
@@ -1675,12 +1600,7 @@ int CSalesRecorderEntity::HandleEncryptVideoRecord(const char* videofilename)
 			iRet = 0;
 		}
 		else {
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 			LogWarn(Severity_Middle, Error_Debug, LOG_EVT_SALESRECORD_RENAME_FAILED, CSimpleStringA::Format("Error Code %lu while rename %s.", GetLastError(), strOutFile).GetData());
-#else
-			LogWarn(Severity_Middle, Error_Debug, LOG_EVT_SALESRECORD_RENAME_FAILED, CSimpleStringA::Format("%s(%d) while rename %s.", strerror(errno), errno, strOutFile).GetData());
-#endif // RVC_OS_WIN	
 		}
 	}
 

+ 0 - 8
Module/mod_SalesRecorder/mod_SalesRecorder.h

@@ -34,18 +34,10 @@ namespace SalesRecorder {
 		char Reserved2[128];
 	} RecordSubTitle;
 
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-	class CSalesRecorderEntity : public CEntityBase, public CHostApi, public ILogListener,public ISysVarListener, public ITimerListener
-	{
-	public:
-		CSalesRecorderEntity() : m_pRecorder(NULL), m_bStarted(false) { ZeroMemory(m_SalesVideoName, MAX_PATH); }
-#else
 	class CSalesRecorderEntity : public CEntityBase, public CHostApi, public ILogListener, public ISysVarListener, public ITimerListener
 	{
 	public:
 		CSalesRecorderEntity() : m_pRecorder(NULL), m_bStarted(false) { ZeroMemory(m_SalesVideoName, MAX_PATH); }
-#endif // RVC_OS_WIN
 
 		virtual ~CSalesRecorderEntity() { /*empty implementation*/ }
 

+ 0 - 1
Module/mod_ScannerSet/ScannerSetFSM.cpp

@@ -72,7 +72,6 @@ const char* EvtTypeToString(int nEvtType)
 		return "Unknown EventType";
 		break;
 	}
-	return "Unknown EventType";
 }
 
 static bool MapErrorCode2Level(ErrorCodeEnum ec)

+ 37 - 216
Module/mod_UpgradeMgr/UpgradeTaskFSM.cpp

@@ -1420,7 +1420,7 @@ namespace Task
 							delete[] content;
 							return 4;//下载失败,算hash失败
 						}
-						//不区分大小写比较文件hash
+						//TODO: CrossPlaform 不区分大小写比较文件hash /** 为什么有平台差异??  [Gifur@2025821]*/
 #ifdef RVC_OS_WIN
 						if(stricmp(strMD5Val.GetData(),resp.sm3.c_str())==0){
 #else
@@ -1431,12 +1431,7 @@ namespace Task
 								if(remove(dPackPath)==0){
 									DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete download old pack succ ", dPackPath);
 									if(rename(dPackPathTemp.GetData(),dPackPath)!=0){
-										//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-										errMsg = CSimpleStringA::Format("exist old file,remove temp file fail, error=%d",(int)GetLastError()).GetData();
-#else
-										errMsg = CSimpleStringA::Format("exist old file,remove temp file fail, error=%d", errno).GetData();
-#endif										
+										errMsg = CSimpleStringA::Format("exist old file,remove temp file fail, error=%d", (int)GetLastError()).GetData();
 										LogWarn(Severity_Middle, Error_Exception, ERR_TASK_DOWNLOAD_PACK_FAIL,errMsg.GetData());
 										delete[] content;
 										return 4;//下载失败,移动文件失败
@@ -1445,24 +1440,14 @@ namespace Task
 										return 1;//成功返回
 									}
 								}else{
-									//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-									errMsg = CSimpleStringA::Format("delete download old pack fail ,error:%d",(int)GetLastError()).GetData();
-#else
-									errMsg = CSimpleStringA::Format("delete download old pack fail ,error:%d", errno).GetData();
-#endif
+									errMsg = CSimpleStringA::Format("delete download old pack fail ,error:%d", (int)GetLastError()).GetData();
 									LogWarn(Severity_Middle, Error_Exception, ERR_TASK_DOWNLOAD_PACK_FAIL,errMsg.GetData());
 									delete[] content;
 									return 4;//下载失败,删除旧文件失败
 								}
 							}else{
 								if(rename(dPackPathTemp.GetData(),dPackPath)!=0){
-									//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-									errMsg = CSimpleStringA::Format("not exist old file,remove temp file fail, error=%d",(int)GetLastError()).GetData();
-#else
-									errMsg = CSimpleStringA::Format("not exist old file,remove temp file fail, error=%d", errno).GetData();
-#endif
+									errMsg = CSimpleStringA::Format("not exist old file,remove temp file fail, error=%d", (int)GetLastError()).GetData();
 									LogWarn(Severity_Middle, Error_Exception, ERR_TASK_DOWNLOAD_PACK_FAIL,errMsg.GetData());
 									delete[] content;
 									return 4;//移动文件失败
@@ -1478,12 +1463,7 @@ namespace Task
 							if(remove(dPackPathTemp.GetData())==0){
 								DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete download temp pack succ ,%s", dPackPathTemp.GetData());
 							}else{
-								//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN							
-								DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete download temp pack fail ,%s  error:%d", dPackPathTemp.GetData(), GetLastError());
-#else
-								DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete download temp pack fail ,%s  error:%d", dPackPathTemp.GetData(), errno);
-#endif								
+								DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete download temp pack fail ,%s  error:%d", dPackPathTemp.GetData(), GetLastError());
 							}
 							delete[] content;
 							return 4;//下载失败,hash不对
@@ -1798,28 +1778,16 @@ ErrorCodeEnum CUpgradeTaskFSM::CreateNewVersion(CVersion NewSoftwareVersion,CSim
 	{
 		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("new version dir [%s] already exist, delete it", strNewVerPath.GetData());
 		if(!RemoveDirRecursiveA(strNewVerPath.GetData())){
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new version fail, delete already exist new version is fail:%d",GetLastError());
-			strErrInfo = CSimpleStringA::Format("Create new version fail, delete already exist new version is fail:%d",(int)GetLastError());
-#else
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new version fail, delete already exist new version is fail:%d", errno);
-			strErrInfo = CSimpleStringA::Format("Create new version fail, delete already exist new version is fail:%d", errno);
-#endif		
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new version fail, delete already exist new version is fail:%d", GetLastError());
+			strErrInfo = CSimpleStringA::Format("Create new version fail, delete already exist new version is fail:%d", (int)GetLastError());
 			return Error_Bug;
 		}
 	}
 
 	if (!CreateDirA(strNewVerPath.GetData(), TRUE))
 	{
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new version dir fail: %d", GetLastError());
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new version dir fail: %d", GetLastError());
 		strErrInfo = CSimpleStringA::Format("create new version dir fail: %d", (int)GetLastError());
-#else
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new version dir fail: %d", errno);
-		strErrInfo = CSimpleStringA::Format("create new version dir fail: %d", errno);
-#endif	
 		return Error_Unexpect;
 	}
 	DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create new version dir succ, dir = %s",strNewVerPath.GetData());
@@ -1938,12 +1906,7 @@ ErrorCodeEnum CUpgradeTaskFSM::ClearUpgradeFailVersion(CVersion NewSoftwareVersi
 	if (ExistsDirA(strNewVerPath.GetData()))
 	{
 		if(!RemoveDirRecursiveA(strNewVerPath.GetData())){
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ClearUpgradeFailVersion fail, delete temp Version [%s] is fail:%d",strNewVerPath.GetData(),(int)GetLastError());
-#else
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ClearUpgradeFailVersion fail, delete temp Version [%s] is fail:%d", strNewVerPath.GetData(), errno);
-#endif
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ClearUpgradeFailVersion fail, delete temp Version [%s] is fail:%d", strNewVerPath.GetData(), (int)GetLastError());
 			return Error_Bug;
 		}else{
 			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ClearUpgradeFailVersion succ, delete temp Version [%s] ", strNewVerPath.GetData());
@@ -1996,18 +1959,10 @@ bool CUpgradeTaskFSM::GetSysUpgradeResult(const char *pszResultLog, CSimpleStrin
 		auto arr2 = arr[i].Split('=');
 		if (arr2.GetCount() == 2)
 		{
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 			if (stricmp(arr2[0], "result") == 0)
 				eErrorCode = arr2[1];
 			else if (stricmp(arr2[0], "msg") == 0)
 				strErrMsg = arr2[1];
-#else
-			if (strcmp(arr2[0], "result") == 0)
-				eErrorCode = arr2[1];
-			else if (strcmp(arr2[0], "msg") == 0)
-				strErrMsg = arr2[1];
-#endif
 		}
 	}
 	return true;
@@ -2193,15 +2148,9 @@ int CUpgradeTaskFSM::ExecRunCmd(CSimpleStringA &strErrMsg,CInstallStep* ins)
 		int ret = system_on(sysPathStr,true,err);
 		osutil_reset_redirect_32sys_in_wow64(&store);
 		if(ret!=0){
-			//TODO: CrossPlaform  [Gifur@2025730]
 			//程序执行异常,结果未知
-#ifdef RVC_OS_WIN
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown ,err=%s",err.GetData());
-			strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail, system_on exec unknown ,err=%s",err.GetData());
-#else
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown , ret=%d, err=%s",ret, strerror(errno));
-			strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail, system_on exec unknown  ret=%d, err=%s", ret, strerror(errno));
-#endif			
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown ,err=%s", err.GetData());
+			strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail, system_on exec unknown ,err=%s", err.GetData());
 			return -1;//未知结果返回
 
 		}else{
@@ -2222,14 +2171,8 @@ int CUpgradeTaskFSM::ExecRunCmd(CSimpleStringA &strErrMsg,CInstallStep* ins)
 				DbgWithLink(LOG_LEVEL_DEBUG,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is succ,[%s] ", destPath.GetData());
 				return 1;//成功
 			}else{
-				//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s", eErrorCode.GetData());
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s", eErrorCode.GetData());
 				strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail,errorCode = %s", eErrorCode.GetData());
-#else
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
-				strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
-#endif			
 				return 0;//失败
 			}
 		}
@@ -2652,17 +2595,12 @@ ErrorCodeEnum CUpgradeTaskFSM::CopyFileOperate(const char* srcPath, const char*
 	case 1:
 		{
 		if (bDestFileExists) {
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-			bRet = CopyFileA(srcPath, destPath, FALSE);
-#else
 			if (fileutil_copy_file(destPath, srcPath) == 0) {
 				bRet = TRUE;
 			}
 			else {
 				bRet = FALSE;
 			}
-#endif
 		}
 		else {
 			LOG_TRACE("ignore file [%s] copy for dest file not exists", srcPath);
@@ -2671,34 +2609,25 @@ ErrorCodeEnum CUpgradeTaskFSM::CopyFileOperate(const char* srcPath, const char*
 		break;
 	case 2:
 		{
-			if (!bDestFileExists)
-				//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-				bRet = CopyFileA(srcPath, destPath, TRUE);
-#else
-				if (fileutil_copy_file(destPath, srcPath) == 0) {
-					bRet = TRUE;
-				}
-				else {
-					bRet = FALSE;
-				}
-#endif
+		if (!bDestFileExists) {
+			if (fileutil_copy_file(destPath, srcPath) == 0) {
+				bRet = TRUE;
+			}
+			else {
+				bRet = FALSE;
+			}
+		}
 			else
 				LOG_TRACE("ignore file [%s] copy for dest file exists", srcPath);
 		}
 		break;
 	case 3:
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-		bRet = CopyFileA(srcPath, destPath, FALSE);
-#else
 		if (fileutil_copy_file(destPath, srcPath) == 0) {
 			bRet = TRUE;
 		}
 		else {
 			bRet = FALSE;
 		}
-#endif
 		break;
 	case 4:
 		{
@@ -2714,12 +2643,7 @@ ErrorCodeEnum CUpgradeTaskFSM::CopyFileOperate(const char* srcPath, const char*
 	if (bRet){
 		RemoveFileReadOnlyAttributeA(destPath);
 	}else{
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 		strErrMsg = CSimpleStringA::Format("CopyFileOperate copy file fail:%d", GetLastError());
-#else
-		strErrMsg = CSimpleStringA::Format("CopyFileOperate copy file fail:%d", errno);
-#endif
 	}
 	ErrorCodeEnum rc = bRet ? Error_Succeed : Error_Unexpect;
 	return rc;
@@ -2739,12 +2663,7 @@ ErrorCodeEnum CUpgradeTaskFSM::SetRunSucceed(const char* pPackFile)
 	}
 	CSimpleStringA strSourcePath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", (const char*)strDownloadPath, pPackFile);
 	CSimpleStringA strDestPath = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s", (const char*)strUpgradedPath, pPackFile);
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-	CopyFileA(strSourcePath.GetData(), strDestPath.GetData(), FALSE);
-#else
 	fileutil_copy_file(strDestPath.GetData(), strSourcePath.GetData());
-#endif
 	return Error_Succeed;
 }
 
@@ -3144,12 +3063,11 @@ bool CUpgradeTaskFSM::IsFileMatch(const char *pszFilter, const char *pszFileName
 }
 
 bool CUpgradeTaskFSM::RecursiveCopyDir(const char *pszSourceDir, const char *pszDestDir,CSimpleStringA &strErrInfo)
-{//TODO: CrossPlaform  [Gifur@2025730]
+{
 	array_header_t *arr;
-#ifdef RVC_OS_WIN
 	if (!ExistsDirA(pszSourceDir))
 	{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("source dir [%s] not exists: %d", pszSourceDir,GetLastError());
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("source dir [%s] not exists: %d", pszSourceDir, GetLastError());
 		strErrInfo = CSimpleStringA::Format("source dir [%s] not exists: %d", pszSourceDir, GetLastError());
 		return false;
 	}
@@ -3159,32 +3077,11 @@ bool CUpgradeTaskFSM::RecursiveCopyDir(const char *pszSourceDir, const char *psz
 		if (!CreateDirRecursiveA(pszDestDir))
 		{
 			strErrInfo = CSimpleStringA::Format("create dir [%s] fail: %d", pszDestDir, GetLastError());
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("create dir fail: %s",strErrInfo.GetData());
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("create dir fail: %s", strErrInfo.GetData());
 			return false;
 		}
-
-		//DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("create dir [%s] succ", pszDestDir);
 	}
-#else
-	if (!ExistsDirA(pszSourceDir))
-	{
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("source dir [%s] not exists: %d", pszSourceDir, errno);
-		strErrInfo = CSimpleStringA::Format("source dir [%s] not exists: %d", pszSourceDir, errno);
-		return false;
-	}
-
-	if (!ExistsDirA(pszDestDir))
-	{
-		if (!CreateDirRecursiveA(pszDestDir))
-		{
-			strErrInfo = CSimpleStringA::Format("create dir [%s] fail: %d", pszDestDir, errno);
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("create dir fail: %s",strErrInfo.GetData());
-			return false;
-		}
 
-		//DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("create dir [%s] succ", pszDestDir);
-	}
-#endif
 	arr = fileutil_get_sub_files_a(pszSourceDir);
 	if (arr)
 	{
@@ -3197,24 +3094,13 @@ bool CUpgradeTaskFSM::RecursiveCopyDir(const char *pszSourceDir, const char *psz
 			if (szDestFile[strlen(szDestFile) - 1] != SPLIT_SLASH)
 				strcat(szDestFile, SPLIT_SLASH_STR);
 			strcat(szDestFile, strrchr(file, SPLIT_SLASH) + 1);
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-			if (!CopyFileA(file, szDestFile, FALSE))
-			{
-				strErrInfo = CSimpleStringA::Format("copy file [%s] fail: %d", file, GetLastError());
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("copy file fail:%s",strErrInfo.GetData());
-				toolkit_array_free2(arr);
-				return false;
-			}
-#else
-			if (fileutil_copy_file(szDestFile, file)!=0)
+			if (fileutil_copy_file(szDestFile, file) != 0)
 			{
 				strErrInfo = CSimpleStringA::Format("copy file [%s] fail: %d", file, errno);
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("copy file fail:%s",strErrInfo.GetData());
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("copy file fail:%s", strErrInfo.GetData());
 				toolkit_array_free2(arr);
 				return false;
 			}
-#endif						
 		}
 		toolkit_array_free2(arr);
 	}
@@ -3234,25 +3120,13 @@ bool CUpgradeTaskFSM::RecursiveCopyDir(const char *pszSourceDir, const char *psz
 
 			if (!RecursiveCopyDir(dir, szDestSubDir,strErrInfo))
 			{
-				//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("copy dir [%s] fail: %d", dir, GetLastError());
-				if(strErrInfo.IsNullOrEmpty()){
-					strErrInfo = CSimpleStringA::Format("copy dir [%s] fail: %d", dir, GetLastError());
-				}
-				toolkit_array_free2(arr);
-				return false;
-#else
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("copy dir [%s] fail: %d", dir, errno);
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("copy dir [%s] fail: %d", dir, GetLastError());
 				if (strErrInfo.IsNullOrEmpty()) {
-					strErrInfo = CSimpleStringA::Format("copy dir [%s] fail: %d", dir, errno);
+					strErrInfo = CSimpleStringA::Format("copy dir [%s] fail: %d", dir, GetLastError());
 				}
 				toolkit_array_free2(arr);
 				return false;
-#endif				
 			}
-
-			//DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("copy dir [%s] succ", dir);
 		}
 		toolkit_array_free2(arr);
 	}
@@ -3528,12 +3402,7 @@ ErrorCodeEnum CUpgradeTaskFSM::DeleteUnzipDir()
 	if (ExistsDirA(strUnzipDir.GetData()))
 	{
 		if(!RemoveDirRecursiveA(strUnzipDir.GetData())){
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN		
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("DeleteUnzipDir fail , temp unzip dir [%s] fail,err=%d",strUnzipDir.GetData(),(int)GetLastError());
-#else
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("DeleteUnzipDir fail , temp unzip dir [%s] fail,err=%d",strUnzipDir.GetData(), errno);
-#endif
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteUnzipDir fail , temp unzip dir [%s] fail,err=%d", strUnzipDir.GetData(), (int)GetLastError());
 			return Error_Unexpect;
 		}else{
 			return Error_Succeed;
@@ -4023,7 +3892,7 @@ ErrorCodeEnum CUpgradeTaskFSM::loadCenterCfgInfo()
 	}
 	return Error_Succeed;
 }
-//TODO: CrossPlaform  [Gifur@2025730]
+//TODO: CrossPlaform  如果是获取文件大小,建议直接采用 fileutil中的 ReadFileSize [Gifur@2025730]
 bool CUpgradeTaskFSM::GetFileLength(const char* filePath,long &fileLen)
 {
 	FILE* file = fopen(filePath, "rb");  
@@ -4701,28 +4570,16 @@ ErrorCodeEnum CUpgradeTaskFSM::CreateNewDepVersion(CSimpleStringA NewSoftwareVer
 	{
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("new version dir [%s] already exist, delete it", strNewVerPath.GetData());
 		if (!RemoveDirRecursiveA(strNewVerPath.GetData())) {
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new dep version fail, delete already exist new dep version is fail:%d", GetLastError());
 			strErrInfo = CSimpleStringA::Format("Create new dep version fail, delete already exist new dep version is fail:%d", (int)GetLastError());
-#else
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new dep version fail, delete already exist new dep version is fail:%d", errno);
-			strErrInfo = CSimpleStringA::Format("Create new dep version fail, delete already exist new dep version is fail:%d", errno);
-#endif		
 			return Error_Bug;
 		}
 	}
 
 	if (!CreateDirA(strNewVerPath.GetData(), TRUE))
 	{
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new dep version dir fail: %d", GetLastError());
 		strErrInfo = CSimpleStringA::Format("create new dep version dir fail: %d", (int)GetLastError());
-#else
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("Create new dep version dir fail: %d", errno);
-		strErrInfo = CSimpleStringA::Format("create new dep version dir fail: %d", errno);
-#endif	
 		return Error_Unexpect;
 	}
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("create new dep version dir succ, dir = %s", strNewVerPath.GetData());
@@ -4800,12 +4657,7 @@ ErrorCodeEnum CUpgradeTaskFSM::ClearUpgradeFailDepVersion(CSimpleStringA NewSoft
 	if (ExistsDirA(strNewVerPath.GetData()))
 	{
 		if (!RemoveDirRecursiveA(strNewVerPath.GetData())) {
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ClearUpgradeFailDepVersion fail, delete temp Version [%s] is fail:%d", strNewVerPath.GetData(), (int)GetLastError());
-#else
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ClearUpgradeFailDepVersion fail, delete temp Version [%s] is fail:%d", strNewVerPath.GetData(), errno);
-#endif
 			return Error_Bug;
 		}
 		else {
@@ -5044,14 +4896,8 @@ int CUpgradeTaskFSM::ExecDepRunCmd(CSimpleStringA& strErrMsg, CInstallStep* ins)
 		osutil_reset_redirect_32sys_in_wow64(&store);
 		if (ret != 0) {
 			//程序执行异常,结果未知
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown ,err=%s", err.GetData());
 			strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail, system_on exec unknown ,err=%s", err.GetData());
-#else
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail, system_on exec unknown , ret=%d, err=%s", ret, strerror(errno));
-			strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail, system_on exec unknown  ret=%d, err=%s", ret, strerror(errno));
-#endif			
 			return -1;//未知结果返回
 		}
 		else {
@@ -5073,14 +4919,8 @@ int CUpgradeTaskFSM::ExecDepRunCmd(CSimpleStringA& strErrMsg, CInstallStep* ins)
 				return 1;//成功
 			}
 			else {
-				//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s", eErrorCode.GetData());
 				strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail,errorCode = %s", eErrorCode.GetData());
-#else
-				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
-				strErrMsg = CSimpleStringA::Format("ExecRunCmd is fail,errorCode = %s,%s", eErrorCode.GetData(), strErrMsg.GetData());
-#endif			
 				return 0;//失败
 			}
 		}
@@ -5681,17 +5521,13 @@ bool CUpgradeTaskFSM::DownloadFileWrite(byte* content,long contentLen,const char
 	}
 	FILE* tempFp =  fopen(filePath,"ab");
 	if(tempFp==NULL){
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("DownloadFileWrite open file fail");
+		DbgWithLink(LOG_LEVEL_WARN,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("DownloadFileWrite open file fail");
 		return false;
 	}
 	int ret = fwrite(content,(size_t)contentLen,1,tempFp);
 
 	if (ret != 1) {
-#ifdef RVC_OS_WIN
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("DownloadFileWrite write file fail,ret = %d,errno = %d", ret, (int)GetLastError());
-#else
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("DownloadFileWrite write file fail,ret = %d,errno = %d", ret, errno);
-#endif	
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("DownloadFileWrite write file fail,ret = %d,errno = %d", ret, (int)GetLastError());
 		fclose(tempFp);
 		return false;
 	}
@@ -5705,12 +5541,7 @@ bool CUpgradeTaskFSM::DownloadFileWrite(byte* content,long contentLen,const char
 #endif
 
 		if (CommitRet != 0) {
-
-#ifdef RVC_OS_WIN
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("DownloadFileWrite write file commit fail,errno = %d",(int)GetLastError());
-#else
-		DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("DownloadFileWrite write file commit fail,errno = %d",errno);
-#endif	
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("DownloadFileWrite write file commit fail,errno = %d", (int)GetLastError());
 		}
 		fclose(tempFp);
 		return true;
@@ -5983,27 +5814,17 @@ bool CUpgradeTaskFSM::isWork()
 	
 	//升级任务
 	if((!m_currentTask.NewVersion.IsNullOrEmpty())&&(m_currentTask.cPendingState=="T"||m_currentTask.cPendingState=="C"||m_currentTask.cPendingState=="X")){
-		CSimpleStringA strRunInfo,strStartTime;
-		if (m_pEntity->GetFunction()->GetPath("RunInfo",strRunInfo) == Error_Succeed){
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-			strStartTime = strRunInfo + "\\runcfg\\starttime.dat";
-#else
-			strStartTime = strRunInfo + "/runcfg/starttime.dat";
-#endif
+		CSimpleStringA strRunCfg,strStartTime;
+		if (m_pEntity->GetFunction()->GetPath("RunCfg",strRunCfg) == Error_Succeed){
+			strStartTime = strRunCfg + SPLIT_SLASH_STR + "starttime.dat";
 			if(!ExistsFileA(strStartTime.GetData())){
 				return true;//完成升级过程,通过
 			}else{
-				//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("upgrade process is not end ,file \\runcfg\\starttime is exist");
-#else
-				DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("upgrade process is not end ,file /runcfg/starttime is exist");
-#endif
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("upgrade process is not end ,file %s is exist", strStartTime.GetData());
 				return false;//继续等待
 			}
 		}else{
-			DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("upgrade process is not end ,get runinfo path is error");
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("upgrade process is not end ,get runinfo path is error");
 			return false;//失败,继续等待
 		}
 	}

+ 169 - 169
Module/mod_UpgradeMgr/UpgradeTaskFSM.h

@@ -14,12 +14,12 @@
 #define	QUERY_IS_WORK_WARN_LIMIT 10
 using namespace std;
 
-#define WARN_TASK_COPY_FILE_ZERO 0x50620022 //升级copy文件夹文件个数为0
-#define ERR_TASK_QUERY_PRE_NEW_TASK_FAIL 0x50620023 //查询新任务报错
-#define ERR_TASK_QUERY_CONTINUE_NEW_TASK_FAIL 0x50620024 //查询继续新任务报错
-#define ERR_TASK_QUERY_CONTINUE_NEW_TASK_ERR 0x50620025 //查询继续新任务异常
+#define WARN_TASK_COPY_FILE_ZERO 0x50620022 //鍗囩骇copy鏂囦欢澶规枃浠朵釜鏁颁负0
+#define ERR_TASK_QUERY_PRE_NEW_TASK_FAIL 0x50620023 //鏌ヨ�鏂颁换鍔℃姤閿�
+#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"
@@ -42,7 +42,7 @@ using namespace std;
 
 namespace HttpStruct
 {
-	//发送文件hash列表接口
+	//鍙戦€佹枃浠秇ash鍒楄〃鎺ュ彛
 	struct SendSM3TaskReq : CHTTPReq {
 		string m_reqStr;
 		string ToJson() {
@@ -57,7 +57,7 @@ namespace HttpStruct
 		}
 	};
 
-	//更新任务状态接口
+	//鏇存柊浠诲姟鐘舵€佹帴鍙�
 	struct UpdateTaskStatusReq : CHTTPReq {
 		string m_reqStr;
 		string ToJson() {
@@ -72,7 +72,7 @@ namespace HttpStruct
 		}
 	};
 
-	//查询当前任务
+	//鏌ヨ�褰撳墠浠诲姟
 	struct QueryCurrTaskReq : CHTTPReq {
 		string m_reqStr;
 		string ToJson() {
@@ -87,7 +87,7 @@ namespace HttpStruct
 		}
 	};
 
-	//查询新任务
+	//鏌ヨ�鏂颁换鍔�
 	struct QueryNewTaskReq : CHTTPReq {
 		string m_reqStr;
 		string ToJson() {
@@ -102,7 +102,7 @@ namespace HttpStruct
 		}
 	};
 
-	//断点下载升级包
+	//鏂�偣涓嬭浇鍗囩骇鍖�
 	struct DownloadPackTaskRet{
 		long content_length;
         long origin_file_length;
@@ -114,7 +114,7 @@ namespace HttpStruct
 
 
 
-// 升级任务状态机
+// 鍗囩骇浠诲姟鐘舵€佹満
 class CUpgradeTaskFSM : public FSMImpl<CUpgradeTaskFSM>, public IFSMStateHooker, public ISysVarListener
 {
 public:
@@ -153,7 +153,7 @@ public:
 
 	struct SendSM3TaskEvent:public FSMEvent
 	{
-		bool isSucc;//是否写入成功
+		bool isSucc;//鏄�惁鍐欏叆鎴愬姛
 		SendSM3TaskEvent(bool isSendSucc) 
 			: FSMEvent(Event_EndSendSM3Task), isSucc(isSendSucc)
 		{}
@@ -162,7 +162,7 @@ public:
 
 	struct UpdateTaskStatusEvent:public FSMEvent
 	{
-		bool isSucc;//是否更新成功
+		bool isSucc;//鏄�惁鏇存柊鎴愬姛
 		UpdateTaskStatusEvent(bool isSendSucc) 
 			: FSMEvent(Event_EndUpdateTask), isSucc(isSendSucc)
 		{}
@@ -170,8 +170,8 @@ public:
 
 	struct QueryCurrTaskEvent:public FSMEvent
 	{
-		bool isSucc;//是否查询成功
-		bool isTask_valid;//任务是否有效
+		bool isSucc;//鏄�惁鏌ヨ�鎴愬姛
+		bool isTask_valid;//浠诲姟鏄�惁鏈夋晥
 		QueryCurrTaskEvent(bool isSendSucc,bool isValid) 
 			: FSMEvent(Event_EndQueryCurrTask), isSucc(isSendSucc),isTask_valid(isValid)
 		{}
@@ -179,7 +179,7 @@ public:
 
 	struct QueryNewTaskEvent:public FSMEvent
 	{
-		bool isSucc;//是否查询成功
+		bool isSucc;//鏄�惁鏌ヨ�鎴愬姛
 		QueryNewTaskEvent(bool isSendSucc) 
 			: FSMEvent(Event_EndPoll), isSucc(isSendSucc)
 		{}
@@ -187,7 +187,7 @@ public:
 
 	struct QueryNewContinueTaskEvent:public FSMEvent
 	{
-		int retParam;//是否查询成功
+		int retParam;//鏄�惁鏌ヨ�鎴愬姛
 		QueryNewContinueTaskEvent(int ret) 
 			: FSMEvent(Event_EndContinuePoll)
 		{
@@ -197,7 +197,7 @@ public:
 
 	struct QueryNewPreTaskEvent:public FSMEvent
 	{
-		bool isSucc;//是否查询成功
+		bool isSucc;//鏄�惁鏌ヨ�鎴愬姛
 		QueryNewPreTaskEvent(bool isSendSucc) 
 			: FSMEvent(Event_EndPrePoll), isSucc(isSendSucc)
 		{}
@@ -205,8 +205,8 @@ public:
 
 	struct QueryTaskStatusEvent:public FSMEvent
 	{
-		bool isSucc;//是否查询成功
-		bool isTask_valid;//任务是否有效
+		bool isSucc;//鏄�惁鏌ヨ�鎴愬姛
+		bool isTask_valid;//浠诲姟鏄�惁鏈夋晥
 		QueryTaskStatusEvent(bool isSendSucc,bool isValid) 
 			: FSMEvent(Event_EndQueryTaskStatus), isSucc(isSendSucc),isTask_valid(isValid)
 		{}
@@ -222,7 +222,7 @@ public:
 
 	struct DownloadPackTaskFailEvent:public FSMEvent
 	{
-		string errMsg;//错误信息
+		string errMsg;//閿欒�淇℃伅
 		DownloadPackTaskFailEvent(string errorMsg) 
 			: FSMEvent(Event_Download_Fail), errMsg(errorMsg)
 		{}
@@ -266,123 +266,123 @@ public:
 
 	struct CInstallStep
 	{
-		//不存储到运行时
-		int stepSeq; //步骤序号
-		CSimpleStringA cmdType;		//升级安装需执行命令类型:Delete、Copy、Run
-		int cmdFail;		//0:执行失败认为升级失败 1:执行失败忽略继续升级
-		CSimpleStringA srcPathType; //0:相对路径 1:绝对路径 2:当前版本相对路径 3:升级包相对路径
+		//涓嶅瓨鍌ㄥ埌杩愯�鏃�
+		int stepSeq; //姝ラ�搴忓彿
+		CSimpleStringA cmdType;		//鍗囩骇瀹夎�闇€鎵ц�鍛戒护绫诲瀷:Delete銆丆opy銆丷un
+		int cmdFail;		//0锛氭墽琛屽け璐ヨ�涓哄崌绾уけ璐� 1锛氭墽琛屽け璐ュ拷鐣ョ户缁�崌绾�
+		CSimpleStringA srcPathType; //0锛氱浉瀵硅矾寰� 1锛氱粷瀵硅矾寰� 2锛氬綋鍓嶇増鏈�浉瀵硅矾寰� 3锛氬崌绾у寘鐩稿�璺�緞
 		CSimpleStringA srcPath;		
-		CSimpleStringA dstPathType;	//0:相对路径 1:绝对路径 2:当前版本相对路径 3:升级版本相对路径 4:升级包相对路径
+		CSimpleStringA dstPathType;	//0锛氱浉瀵硅矾寰� 1锛氱粷瀵硅矾寰� 2锛氬綋鍓嶇増鏈�浉瀵硅矾寰� 3锛氬崌绾х増鏈�浉瀵硅矾寰� 4锛氬崌绾у寘鐩稿�璺�緞
 		CSimpleStringA dstPath;
 	};
 
-	// 待安装任务信息(运行时保存的中间变量)
+	// 寰呭畨瑁呬换鍔′俊鎭�紙杩愯�鏃朵繚瀛樼殑涓�棿鍙橀噺锛�
 	struct CTaskInfo
-	{	//存储到运行时
-		CSimpleStringA upgradeTaskId;	//升级任务编号
-		CSimpleStringA createTaskVersion;//创建升级任务时的版本号
-		CSimpleStringA cPendingState;	// 已下载D、安装中I、等待切换S、任务结果确认T
-		CSimpleStringA NewVersion;		// 任务升级后的版本号
-		CSimpleStringA pack_name;		//升级包名
-		CSimpleStringA task_type;		//任务类型 U:升级任务 R:回退任务
-		CSimpleStringA depNewVersion;    //适配器新版本号
-		//CSimpleStringA task_class;      //任务类别 A:应用版本任务 D:适配器任务 T:体系外任务
-		//不存储到运行时
-		CSimpleStringA pack_version;	//升级包指定的版本号
-		bool stop_media_play;   //停止广告播放(0:不停止 1:停止)
-		int reboot_type;		//重启策略类型(0:不启动 1:重启框架 2:重启系统)
-		CSimpleStringA file_path;       //升级包路径
-		CSimpleStringA download_url;    //升级包下载地址
-		CSimpleStringA pack_hash;		//升级包hash值
-		long pack_length;		//升级包长度(服务端暂时不传)
-
-		queue<CInstallStep*> install_step;//安装步骤队列
+	{	//瀛樺偍鍒拌繍琛屾椂
+		CSimpleStringA upgradeTaskId;	//鍗囩骇浠诲姟缂栧彿
+		CSimpleStringA createTaskVersion;//鍒涘缓鍗囩骇浠诲姟鏃剁殑鐗堟湰鍙�
+		CSimpleStringA cPendingState;	// 宸蹭笅杞紻銆佸畨瑁呬腑I銆佺瓑寰呭垏鎹�銆佷换鍔$粨鏋滅‘璁�
+		CSimpleStringA NewVersion;		// 浠诲姟鍗囩骇鍚庣殑鐗堟湰鍙�
+		CSimpleStringA pack_name;		//鍗囩骇鍖呭悕
+		CSimpleStringA task_type;		//浠诲姟绫诲瀷 U:鍗囩骇浠诲姟 R:鍥為€€浠诲姟
+		CSimpleStringA depNewVersion;    //閫傞厤鍣ㄦ柊鐗堟湰鍙�
+		//CSimpleStringA task_class;      //浠诲姟绫诲埆 A:搴旂敤鐗堟湰浠诲姟 D:閫傞厤鍣ㄤ换鍔� T:浣撶郴澶栦换鍔�
+		//涓嶅瓨鍌ㄥ埌杩愯�鏃�
+		CSimpleStringA pack_version;	//鍗囩骇鍖呮寚瀹氱殑鐗堟湰鍙�
+		bool stop_media_play;   //鍋滄�骞垮憡鎾�斁锛�0:涓嶅仠姝� 1:鍋滄�锛�
+		int reboot_type;		//閲嶅惎绛栫暐绫诲瀷锛�0:涓嶅惎鍔� 1:閲嶅惎妗嗘灦 2:閲嶅惎绯荤粺锛�
+		CSimpleStringA file_path;       //鍗囩骇鍖呰矾寰�
+		CSimpleStringA download_url;    //鍗囩骇鍖呬笅杞藉湴鍧€
+		CSimpleStringA pack_hash;		//鍗囩骇鍖卙ash鍊�
+		long pack_length;		//鍗囩骇鍖呴暱搴�(鏈嶅姟绔�殏鏃朵笉浼�)
+
+		queue<CInstallStep*> install_step;//瀹夎�姝ラ�闃熷垪
 
 	};
 
 	
 	struct CTaskProcess
 	{
-		CSimpleStringA strPackName;//包名
-		CSimpleStringA installVersion;//安装版本号
-		CSimpleStringA CurrentVersion;//当前版本号
-		CSimpleStringA cInstallState;//升级状态
-		CSimpleStringA strInstallComment;//升级状态备注
+		CSimpleStringA strPackName;//鍖呭悕
+		CSimpleStringA installVersion;//瀹夎�鐗堟湰鍙�
+		CSimpleStringA CurrentVersion;//褰撳墠鐗堟湰鍙�
+		CSimpleStringA cInstallState;//鍗囩骇鐘舵€�
+		CSimpleStringA strInstallComment;//鍗囩骇鐘舵€佸�娉�
 	};
 
 	struct CenterUrl
 	{
-		string updateTaskUrl;		//更新升级任务url
-		string queryCurrTaskUrl;	//查询当前任务url
-		string queryNewTaskUrl;		//查询新任务url(旧版本使用)
-		string queryPreTaskUrl;		//预查询新任务url
-		string queryContinueTaskUrl; //继续查询新任务url
-		string queryTaskStatus;		//查询当前任务是否有效url
-		string sendSM3TaskUrl;		//发送文件hashurl
+		string updateTaskUrl;		//鏇存柊鍗囩骇浠诲姟url
+		string queryCurrTaskUrl;	//鏌ヨ�褰撳墠浠诲姟url
+		string queryNewTaskUrl;		//鏌ヨ�鏂颁换鍔�rl锛堟棫鐗堟湰浣跨敤锛�
+		string queryPreTaskUrl;		//棰勬煡璇㈡柊浠诲姟url
+		string queryContinueTaskUrl; //缁х画鏌ヨ�鏂颁换鍔�rl
+		string queryTaskStatus;		//鏌ヨ�褰撳墠浠诲姟鏄�惁鏈夋晥url
+		string sendSM3TaskUrl;		//鍙戦€佹枃浠秇ashurl
 	};
 
 	struct HashScanSet
 	{
-		CSimpleStringA relativeDir;	//相对路径
-		CSimpleStringA absoluteDir;	//绝对路径 
-		CSimpleStringA currVerDir;	//当前版本相对路径
-		CSimpleStringA blackFile;	//不纳入扫描的文件名称
-		CSimpleStringA blackDir;	//不纳入扫描的文件夹
+		CSimpleStringA relativeDir;	//鐩稿�璺�緞
+		CSimpleStringA absoluteDir;	//缁濆�璺�緞 
+		CSimpleStringA currVerDir;	//褰撳墠鐗堟湰鐩稿�璺�緞
+		CSimpleStringA blackFile;	//涓嶇撼鍏ユ壂鎻忕殑鏂囦欢鍚嶇О
+		CSimpleStringA blackDir;	//涓嶇撼鍏ユ壂鎻忕殑鏂囦欢澶�
 	};
 
 public:
 	CUpgradeTaskFSM(){
-		isSendHash = false;//默认查询策略不发送hash
-		m_isSM3HashSucc = false;//默认hash计算失败
+		isSendHash = false;//榛樿�鏌ヨ�绛栫暐涓嶅彂閫乭ash
+		m_isSM3HashSucc = false;//榛樿�hash璁$畻澶辫触
 		m_bDownloadIdle = false;
 		m_bTaskCancel=false;
-		m_fileSM3ListHash="";//终端hash列表64位hash值
-		m_fileSM3List = "";//终端hash列表值
-		m_strPreTaskId="";//预检查任务ID
-		m_bNeedHash=0;//预检查是否需要hash
+		m_fileSM3ListHash="";//缁堢�hash鍒楄〃64浣峢ash鍊�
+		m_fileSM3List = "";//缁堢�hash鍒楄〃鍊�
+		m_strPreTaskId="";//棰勬�鏌ヤ换鍔�D
+		m_bNeedHash=0;//棰勬�鏌ユ槸鍚﹂渶瑕乭ash
 		m_newEachDownloadLen=DOWNLOAD_CONTENT_EACH_LEN;
 		m_PrintHttpLog =false;
 		m_startFlag = false;
 		m_iBlackFileCount=0;
 		m_bSwitchFlag = false;
 		m_bRollbackTask = false;
-		m_TempDepUpgradeFlag = false;//默认非适配器升级
-		m_queryNewTaskInterval = 240;//默认查询任务时间间隔
-		m_installStopCopyDep = false;//默认拷贝
+		m_TempDepUpgradeFlag = false;//榛樿�闈為€傞厤鍣ㄥ崌绾�
+		m_queryNewTaskInterval = 240;//榛樿�鏌ヨ�浠诲姟鏃堕棿闂撮殧
+		m_installStopCopyDep = false;//榛樿�鎷疯礉
 		m_downloadBreakOffCount = 0; 
 		m_queryIsWorkCount = 0;
 	}
 	~CUpgradeTaskFSM(){}
-	//具体实现方法
-	ErrorCodeEnum CreateNewVersion(CVersion NewSoftwareVersion,CSimpleStringA &strErrInfo);//创建新版本
-	ErrorCodeEnum ClearUpgradeFailVersion(CVersion NewSoftwareVersion);//清理升级新版本临时文件
-	bool GetSysUpgradeResult(const char *pszResultLog, CSimpleStringA &eErrorCode, CSimpleStringA &strErrMsg);//从体系外生成的result.log文件中获取结果
+	//鍏蜂綋瀹炵幇鏂规硶
+	ErrorCodeEnum CreateNewVersion(CVersion NewSoftwareVersion,CSimpleStringA &strErrInfo);//鍒涘缓鏂扮増鏈�
+	ErrorCodeEnum ClearUpgradeFailVersion(CVersion NewSoftwareVersion);//娓呯悊鍗囩骇鏂扮増鏈�复鏃舵枃浠�
+	bool GetSysUpgradeResult(const char *pszResultLog, CSimpleStringA &eErrorCode, CSimpleStringA &strErrMsg);//浠庝綋绯诲�鐢熸垚鐨剅esult.log鏂囦欢涓�幏鍙栫粨鏋�
 	
-	//安装执行步骤方法
-	int ExecInstall(CSimpleStringA &strErrMsg);//升级安装 0:失败 1:成功 -1:未知
+	//瀹夎�鎵ц�姝ラ�鏂规硶
+	int ExecInstall(CSimpleStringA &strErrMsg);//鍗囩骇瀹夎� 0锛氬け璐� 1锛氭垚鍔� -1锛氭湭鐭�
 	int ExecRunCmd(CSimpleStringA &strErrMsg,CInstallStep* ins);
 	bool ExecDeleteCmd(CSimpleStringA &strErrMsg,CInstallStep* ins);
 	bool ExecCpoyCmd(CSimpleStringA &strErrMsg,CInstallStep* ins);
-	bool GetRootTypePath(int rootType,CSimpleStringA &rootPath);//1:相对路径 2:当前版本相对路径 3:升级版本相对路径 4:升级包相对路径
+	bool GetRootTypePath(int rootType,CSimpleStringA &rootPath);//1:鐩稿�璺�緞 2锛氬綋鍓嶇増鏈�浉瀵硅矾寰� 3锛氬崌绾х増鏈�浉瀵硅矾寰� 4锛氬崌绾у寘鐩稿�璺�緞
 	ErrorCodeEnum CopyFileOperate(const char* srcPath, const char* destPath, int nCopyMode, CSimpleStringA &strErrMsg);
 
 
 
-	ErrorCodeEnum SetRunSucceed(const char* pPackFile);//成功切换新版本
-	ErrorCodeEnum UpgradeToNewVersion();//设置新版本状态
-	ErrorCodeEnum RollBackToHistoryVersion(CVersion historyVersion);//回退到某个历史版本
+	ErrorCodeEnum SetRunSucceed(const char* pPackFile);//鎴愬姛鍒囨崲鏂扮増鏈�
+	ErrorCodeEnum UpgradeToNewVersion();//璁剧疆鏂扮増鏈�姸鎬�
+	ErrorCodeEnum RollBackToHistoryVersion(CVersion historyVersion);//鍥為€€鍒版煇涓�巻鍙茬増鏈�
 	
 	void RecursiveGetSubFiles(const char *pszDir, const char *pszTrimStart, list<CSimpleStringA>& retList);
 	bool IsFileMatch(const char *pszFilter, const char *pszFileName);
-	bool RecursiveCopyDir(const char *pszSourceDir, const char *pszDestDir,CSimpleStringA &strErrInfo);//可以合并
-	CSimpleStringA GetFileDirectory(const char *pszFullPath);//查找文件的父路径
-	int system_on(string cmdFilePath, bool isWait,CSimpleStringA &errMsg);//cmd窗口程序
-	int waitSystem(string cmd, const char * par, bool nShow,CSimpleStringA &errMsg);//起进程执行cmd
+	bool RecursiveCopyDir(const char *pszSourceDir, const char *pszDestDir,CSimpleStringA &strErrInfo);//鍙�互鍚堝苟
+	CSimpleStringA GetFileDirectory(const char *pszFullPath);//鏌ユ壘鏂囦欢鐨勭埗璺�緞
+	int system_on(string cmdFilePath, bool isWait,CSimpleStringA &errMsg);//cmd绐楀彛绋嬪簭
+	int waitSystem(string cmd, const char * par, bool nShow,CSimpleStringA &errMsg);//璧疯繘绋嬫墽琛宑md
 	
 
-	ErrorCodeEnum UnzipPack(const char* unZipPackName);//解压文件
-	ErrorCodeEnum DeleteUnzipDir();//清理临时解压包文件
-	ErrorCodeEnum RollBackVersionCheck(string &failReason, CSimpleStringA& strErrMsg);//回退版本检查 C:一般错误 X:终端找不到需要回退的版本文件夹 、回退版本比现在版本高
+	ErrorCodeEnum UnzipPack(const char* unZipPackName);//瑙e帇鏂囦欢
+	ErrorCodeEnum DeleteUnzipDir();//娓呯悊涓存椂瑙e帇鍖呮枃浠�
+	ErrorCodeEnum RollBackVersionCheck(string &failReason, CSimpleStringA& strErrMsg);//鍥為€€鐗堟湰妫€鏌� C锛氫竴鑸�敊璇� X锛氱粓绔�壘涓嶅埌闇€瑕佸洖閫€鐨勭増鏈�枃浠跺す 銆佸洖閫€鐗堟湰姣旂幇鍦ㄧ増鏈�珮
 	
 	
 
@@ -390,56 +390,56 @@ public:
 	ErrorCodeEnum GetRunConfigStrValue(const char *pszSection, const char *pszKey, CSimpleStringA &strValue);
 	ErrorCodeEnum SetRunConfigStrValue(const char *pszSection, const char *pszKey, const char *pszValue);
 
-	bool ClearCurrTaskInfo();//任务无效清除运行时记录和残留下载包
-	bool ClearInstallStep();//清理历史任务安装步骤
+	bool ClearCurrTaskInfo();//浠诲姟鏃犳晥娓呴櫎杩愯�鏃惰�褰曞拰娈嬬暀涓嬭浇鍖�
+	bool ClearInstallStep();//娓呯悊鍘嗗彶浠诲姟瀹夎�姝ラ�
 
-	ErrorCodeEnum LoadPersistTaskInfo();//启动开始加载运行时文件
-	ErrorCodeEnum loadCenterCfgInfo();//启动开始加载集中配置文件
+	ErrorCodeEnum LoadPersistTaskInfo();//鍚�姩寮€濮嬪姞杞借繍琛屾椂鏂囦欢
+	ErrorCodeEnum loadCenterCfgInfo();//鍚�姩寮€濮嬪姞杞介泦涓�厤缃�枃浠�
 
-	bool GetFileLength(const char* filePath,long &fileLen);//获取文件长度
-	ErrorCodeEnum GetSM3List(CSimpleStringA &strSM3List);//获取版本文件hash集合字符串
+	bool GetFileLength(const char* filePath,long &fileLen);//鑾峰彇鏂囦欢闀垮害
+	ErrorCodeEnum GetSM3List(CSimpleStringA &strSM3List);//鑾峰彇鐗堟湰鏂囦欢hash闆嗗悎瀛楃�涓�
 	ErrorCodeEnum ScanSM3ByType(int type,CSimpleStringA pathFilter);
-	ErrorCodeEnum NewSM3Folder(CSimpleStringA scanFilter,CSimpleStringA replaceDir);//新的hash扫描文件夹实现
+	ErrorCodeEnum NewSM3Folder(CSimpleStringA scanFilter,CSimpleStringA replaceDir);//鏂扮殑hash鎵�弿鏂囦欢澶瑰疄鐜�
 
-	//新国密SM3函数,isSub表示是否截取新国密中间一段密文
+	//鏂板浗瀵哠M3鍑芥暟锛宨sSub琛ㄧず鏄�惁鎴�彇鏂板浗瀵嗕腑闂翠竴娈靛瘑鏂�
 	ErrorCodeEnum SM3FileToStr(CSimpleStringA strFilePath, CSimpleStringA &strSM3,bool isSub);
 	ErrorCodeEnum SM3DataToStr(CSimpleStringA strData, CSimpleStringA &strSM3,bool isSub);
 	ErrorCodeEnum SM3_Str(CSimpleStringA &strSM3,BYTE * SM3Byte,bool isSub);
 
-	bool IsPackDownloaded(const char *pPackName,const char* packHash,long packLen);//判断安装包是否已下载成功
+	bool IsPackDownloaded(const char *pPackName,const char* packHash,long packLen);//鍒ゆ柇瀹夎�鍖呮槸鍚﹀凡涓嬭浇鎴愬姛
 	bool DownloadFileWrite(byte* content,long contentLen,const char* filePath);
 
-	bool CheckIfCanSwitchNow();//是否允许切换
-	ErrorCodeEnum SwitchUpgradeNow();//切换版本
+	bool CheckIfCanSwitchNow();//鏄�惁鍏佽�鍒囨崲
+	ErrorCodeEnum SwitchUpgradeNow();//鍒囨崲鐗堟湰
 
-	ErrorCodeEnum DownloadProgress(long tempFileLen,long fileSumLen);//返回下载进度
-	char GetInstallState(int nState);//根据状态机获取升级状态
+	ErrorCodeEnum DownloadProgress(long tempFileLen,long fileSumLen);//杩斿洖涓嬭浇杩涘害
+	char GetInstallState(int nState);//鏍规嵁鐘舵€佹満鑾峰彇鍗囩骇鐘舵€�
 	ErrorCodeEnum GetUpgradeState(bool &bInstalling, CSimpleStringA &strPackFile, CSimpleStringA &strExecID,
 		char &cInstallState, bool &bSysInstall, bool &bLightPack, CSimpleStringA &strNewVersion);
 	
 	static void HttpsLogCallBack(const char* logtxt);
 
-	void judgeTaskClass();//临时判定升级任务类别
-	ErrorCodeEnum judgeRollbackTaskClass(CSimpleStringA verDirName, string& failReason, CSimpleStringA& strErrMsg);//临时判定回退任务类别
+	void judgeTaskClass();//涓存椂鍒ゅ畾鍗囩骇浠诲姟绫诲埆
+	ErrorCodeEnum judgeRollbackTaskClass(CSimpleStringA verDirName, string& failReason, CSimpleStringA& strErrMsg);//涓存椂鍒ゅ畾鍥為€€浠诲姟绫诲埆
 	
-	ErrorCodeEnum CreateNewDepVersion(CSimpleStringA NewSoftwareVersion, CSimpleStringA& strErrInfo);//升级时创建新适配器版本
-	ErrorCodeEnum CreateInstallDepVersion(CSimpleStringA NewSoftwareVersion, CSimpleStringA& strErrInfo);//安装时创建新适配器版本
-	ErrorCodeEnum ClearUpgradeFailDepVersion(CSimpleStringA NewSoftwareVersion);//清理升级新版本临时文件
-	ErrorCodeEnum UpgradeDepToNewVersion();//更新depactive文件
-	ErrorCodeEnum SwitchUpgradeDepNow();//切换适配器版本
-	ErrorCodeEnum RollBackDepVersionCheck(string& failReason, CSimpleStringA& strErrMsg);//回退版本检查 C:一般错误 X:终端找不到需要回退的版本文件夹
-	ErrorCodeEnum RollBackToHistoryDepVersion(CSimpleStringA historyDepVersion);//适配器回退到某个历史版本
-
-	//适配器安装函数
-	int ExecDepInstall(CSimpleStringA& strErrMsg);//适配器升级 0:失败 1:成功 
+	ErrorCodeEnum CreateNewDepVersion(CSimpleStringA NewSoftwareVersion, CSimpleStringA& strErrInfo);//鍗囩骇鏃跺垱寤烘柊閫傞厤鍣ㄧ増鏈�
+	ErrorCodeEnum CreateInstallDepVersion(CSimpleStringA NewSoftwareVersion, CSimpleStringA& strErrInfo);//瀹夎�鏃跺垱寤烘柊閫傞厤鍣ㄧ増鏈�
+	ErrorCodeEnum ClearUpgradeFailDepVersion(CSimpleStringA NewSoftwareVersion);//娓呯悊鍗囩骇鏂扮増鏈�复鏃舵枃浠�
+	ErrorCodeEnum UpgradeDepToNewVersion();//鏇存柊depactive鏂囦欢
+	ErrorCodeEnum SwitchUpgradeDepNow();//鍒囨崲閫傞厤鍣ㄧ増鏈�
+	ErrorCodeEnum RollBackDepVersionCheck(string& failReason, CSimpleStringA& strErrMsg);//鍥為€€鐗堟湰妫€鏌� C锛氫竴鑸�敊璇� X锛氱粓绔�壘涓嶅埌闇€瑕佸洖閫€鐨勭増鏈�枃浠跺す
+	ErrorCodeEnum RollBackToHistoryDepVersion(CSimpleStringA historyDepVersion);//閫傞厤鍣ㄥ洖閫€鍒版煇涓�巻鍙茬増鏈�
+
+	//閫傞厤鍣ㄥ畨瑁呭嚱鏁�
+	int ExecDepInstall(CSimpleStringA& strErrMsg);//閫傞厤鍣ㄥ崌绾� 0锛氬け璐� 1锛氭垚鍔� 
 	int ExecDepRunCmd(CSimpleStringA& strErrMsg, CInstallStep* ins);
 	bool ExecDepDeleteCmd(CSimpleStringA& strErrMsg, CInstallStep* ins);
 	bool ExecDepCpoyCmd(CSimpleStringA& strErrMsg, CInstallStep* ins);
-	bool GetDepRootTypePath(int rootType, CSimpleStringA& rootPath);//1:相对路径 2:当前版本相对路径 3:升级版本相对路径 4:升级包相对路径
+	bool GetDepRootTypePath(int rootType, CSimpleStringA& rootPath);//1:鐩稿�璺�緞 2锛氬綋鍓嶇増鏈�浉瀵硅矾寰� 3锛氬崌绾х増鏈�浉瀵硅矾寰� 4锛氬崌绾у寘鐩稿�璺�緞
 
 	CSimpleStringA getAlarmCurrVersion();
 
-	//升级时添加防火墙策略
+	//鍗囩骇鏃舵坊鍔犻槻鐏��绛栫暐
 	ErrorCodeEnum SetNewVersionPathToFirewall();
 
 	bool isWork();
@@ -462,13 +462,13 @@ private:
 	enum{s1, s2, s3, s4, s5, s6, s7};
 
 	BEGIN_FSM_STATE(CUpgradeTaskFSM)
-		FSM_STATE_ENTRY(s1, "Start",s1_on_entry,s1_on_exit,s1_on_event)//计算hash值
-		FSM_STATE_ENTRY(s2, "DealTask",s2_on_entry,s2_on_exit,s2_on_event)//处理上个任务,反馈任务结果,并根据任务状态跳转到其他状态
-		FSM_STATE_ENTRY(s3, "Poll",s3_on_entry,s3_on_exit,s3_on_event)//查询任务
-		FSM_STATE_ENTRY(s4, "Download", s4_on_entry, s4_on_exit, s4_on_event)//下载安装包
-		FSM_STATE_ENTRY(s5, "Install", s5_on_entry, s5_on_exit, s5_on_event)//安装升级包
-		FSM_STATE_ENTRY(s6, "Switch", s6_on_entry, s6_on_exit, s6_on_event)//进行版本切换
-		FSM_STATE_ENTRY(s7, "Disable", s7_on_entry, s7_on_exit, s7_on_event)//静止状态
+		FSM_STATE_ENTRY(s1, "Start",s1_on_entry,s1_on_exit,s1_on_event)//璁$畻hash鍊�
+		FSM_STATE_ENTRY(s2, "DealTask",s2_on_entry,s2_on_exit,s2_on_event)//澶勭悊涓婁釜浠诲姟锛屽弽棣堜换鍔$粨鏋滐紝骞舵牴鎹�换鍔$姸鎬佽烦杞�埌鍏朵粬鐘舵€�
+		FSM_STATE_ENTRY(s3, "Poll",s3_on_entry,s3_on_exit,s3_on_event)//鏌ヨ�浠诲姟
+		FSM_STATE_ENTRY(s4, "Download", s4_on_entry, s4_on_exit, s4_on_event)//涓嬭浇瀹夎�鍖�
+		FSM_STATE_ENTRY(s5, "Install", s5_on_entry, s5_on_exit, s5_on_event)//瀹夎�鍗囩骇鍖�
+		FSM_STATE_ENTRY(s6, "Switch", s6_on_entry, s6_on_exit, s6_on_event)//杩涜�鐗堟湰鍒囨崲
+		FSM_STATE_ENTRY(s7, "Disable", s7_on_entry, s7_on_exit, s7_on_event)//闈欐�鐘舵€�
 	END_FSM_STATE()
 
 	BEGIN_FSM_RULE(CUpgradeTaskFSM,s1)
@@ -478,39 +478,39 @@ private:
 		FSM_RULE_ENTRY(s2, s5, Event_EndQueryCurrTask, 5)	
 		FSM_RULE_ENTRY(s2, s6, Event_EndQueryCurrTask, 6)
 		FSM_RULE_ENTRY_ANY(s3, s4, Event_StartDownload)
-		FSM_RULE_ENTRY_ANY(s3, s5, Event_StartInstall)//回退
+		FSM_RULE_ENTRY_ANY(s3, s5, Event_StartInstall)//鍥為€€
 		FSM_RULE_ENTRY_ANY(s4, s5, Event_StartInstall)
-		FSM_RULE_ENTRY_ANY(s4, s3, Event_StartPoll)//任务取消进入S3
-		FSM_RULE_ENTRY_ANY(s4, s2, Event_StartDealTask)//下载失败进入S2
+		FSM_RULE_ENTRY_ANY(s4, s3, Event_StartPoll)//浠诲姟鍙栨秷杩涘叆S3
+		FSM_RULE_ENTRY_ANY(s4, s2, Event_StartDealTask)//涓嬭浇澶辫触杩涘叆S2
 		FSM_RULE_ENTRY_ANY(s5, s6, Event_StartSwitch)
-		FSM_RULE_ENTRY_ANY(s5, s2, Event_StartDealTask)//安装失败进入S2
-		FSM_RULE_ENTRY_ANY(s6, s2, Event_StartDealTask)//无需重启框架和系统切换成功进入S2
-		FSM_RULE_ENTRY_ANY(s6, s3, Event_StartPoll)//取消任务进入S3
-		FSM_RULE_ENTRY_ANY(s6, s7, Event_PreRestart)//重启服务
+		FSM_RULE_ENTRY_ANY(s5, s2, Event_StartDealTask)//瀹夎�澶辫触杩涘叆S2
+		FSM_RULE_ENTRY_ANY(s6, s2, Event_StartDealTask)//鏃犻渶閲嶅惎妗嗘灦鍜岀郴缁熷垏鎹㈡垚鍔熻繘鍏�2
+		FSM_RULE_ENTRY_ANY(s6, s3, Event_StartPoll)//鍙栨秷浠诲姟杩涘叆S3
+		FSM_RULE_ENTRY_ANY(s6, s7, Event_PreRestart)//閲嶅惎鏈嶅姟
 	END_FSM_RULE()
 
 private:
-	//完成
+	//瀹屾垚
 	void s1_on_entry();
 	void s1_on_exit();
 	unsigned int s1_on_event(FSMEvent* event);
-	//完成
+	//瀹屾垚
 	void s2_on_entry();
 	void s2_on_exit();
 	unsigned int s2_on_event(FSMEvent* event);
-	//完成
+	//瀹屾垚
 	void s3_on_entry();
 	void s3_on_exit();
 	unsigned int s3_on_event(FSMEvent* event);
-	//完成
+	//瀹屾垚
 	void s4_on_entry();
 	void s4_on_exit();
 	unsigned int s4_on_event(FSMEvent* event);
-	//完成
+	//瀹屾垚
 	void s5_on_entry();
 	void s5_on_exit();
 	unsigned int s5_on_event(FSMEvent* event);
-	//完成
+	//瀹屾垚
 	void s6_on_entry();
 	void s6_on_exit();
 	unsigned int s6_on_event(FSMEvent* event);
@@ -523,45 +523,45 @@ private:
 
 	
 	
-	list<CSimpleStringA> m_DepWhitelist; //dep文件夹白名单
-	list<CSimpleStringA> m_DirBlacklist; //整体文件夹黑名单
-	list<CSimpleStringA> m_FileBlacklist; //整体文件黑名单
+	list<CSimpleStringA> m_DepWhitelist; //dep鏂囦欢澶圭櫧鍚嶅崟
+	list<CSimpleStringA> m_DirBlacklist; //鏁翠綋鏂囦欢澶归粦鍚嶅崟
+	list<CSimpleStringA> m_FileBlacklist; //鏁翠綋鏂囦欢榛戝悕鍗�
 
 public:
-	map<CSimpleStringA, CSimpleStringA> m_fileSM3Map;	// 版本文件hash值集合
-
-	CTaskInfo m_currentTask;	//当前的任务缓存变量
-	CVersion m_currentVersion;  //当前终端版本
-	CSimpleStringA m_currentDepVersion; //当前适配器版本
-
-	CenterUrl m_centerUrl;//访问总行的url地址集合
-	int m_newEachDownloadLen;//新的每次下载数据长度阈值(k)
-	bool m_PrintHttpLog;  //是否打印通讯日志
-	bool m_startFlag; //升级实体启动标志位,默认是不开,
-	bool m_stopSetFirewall;//是否停止设置防火墙路径,默认是不停止
-	HashScanSet m_hashScanSet;//扫描文件hash设置
-
-	bool m_isSM3HashSucc;//hash是否计算成功
-	bool isSendHash;//hash是否发送
-	CSimpleStringA m_fileSM3ListHash;//SM3 64位hash
-	CSimpleStringA m_fileSM3List;//版本文件hash集合字符串
-	DWORD m_beginSendSM3Time;//开始发送sm3hahs时间
-	int m_queryNewTaskCount;//查询新任务时无任务次数
+	map<CSimpleStringA, CSimpleStringA> m_fileSM3Map;	// 鐗堟湰鏂囦欢hash鍊奸泦鍚�
+
+	CTaskInfo m_currentTask;	//褰撳墠鐨勪换鍔$紦瀛樺彉閲�
+	CVersion m_currentVersion;  //褰撳墠缁堢�鐗堟湰
+	CSimpleStringA m_currentDepVersion; //褰撳墠閫傞厤鍣ㄧ増鏈�
+
+	CenterUrl m_centerUrl;//璁块棶鎬昏�鐨剈rl鍦板潃闆嗗悎
+	int m_newEachDownloadLen;//鏂扮殑姣忔�涓嬭浇鏁版嵁闀垮害闃堝€�(k)
+	bool m_PrintHttpLog;  //鏄�惁鎵撳嵃閫氳�鏃ュ織
+	bool m_startFlag; //鍗囩骇瀹炰綋鍚�姩鏍囧織浣�,榛樿�鏄�笉寮€锛�
+	bool m_stopSetFirewall;//鏄�惁鍋滄�璁剧疆闃茬伀澧欒矾寰勶紝榛樿�鏄�笉鍋滄�
+	HashScanSet m_hashScanSet;//鎵�弿鏂囦欢hash璁剧疆
+
+	bool m_isSM3HashSucc;//hash鏄�惁璁$畻鎴愬姛
+	bool isSendHash;//hash鏄�惁鍙戦€�
+	CSimpleStringA m_fileSM3ListHash;//SM3 64浣峢ash
+	CSimpleStringA m_fileSM3List;//鐗堟湰鏂囦欢hash闆嗗悎瀛楃�涓�
+	DWORD m_beginSendSM3Time;//寮€濮嬪彂閫乻m3hahs鏃堕棿
+	int m_queryNewTaskCount;//鏌ヨ�鏂颁换鍔℃椂鏃犱换鍔℃�鏁�
 	int m_queryIsWorkCount;
 	int m_downloadBreakOffCount;
 
-	bool m_bDownloadIdle;	//是否下载空闲 true: 不能下载,false: 可下载
-	bool m_bTaskCancel;		//是否任务取消 true: 任务取消,false: 未取消
+	bool m_bDownloadIdle;	//鏄�惁涓嬭浇绌洪棽 true: 涓嶈兘涓嬭浇锛宖alse: 鍙�笅杞�
+	bool m_bTaskCancel;		//鏄�惁浠诲姟鍙栨秷 true: 浠诲姟鍙栨秷锛宖alse: 鏈�彇娑�
 
-	int m_iBlackFileCount;    //黑名单文件数量
+	int m_iBlackFileCount;    //榛戝悕鍗曟枃浠舵暟閲�
 
-	CSimpleStringA m_strPreTaskId; //预检查taskId
-	int m_bNeedHash;//是否需要hash对比查询任务
-	bool m_bSwitchFlag;//是否启动后切换流程直接进入标志
-	bool m_bRollbackTask;//是否已经处于回退流程。
+	CSimpleStringA m_strPreTaskId; //棰勬�鏌�askId
+	int m_bNeedHash;//鏄�惁闇€瑕乭ash瀵规瘮鏌ヨ�浠诲姟
+	bool m_bSwitchFlag;//鏄�惁鍚�姩鍚庡垏鎹㈡祦绋嬬洿鎺ヨ繘鍏ユ爣蹇�
+	bool m_bRollbackTask;//鏄�惁宸茬粡澶勪簬鍥為€€娴佺▼銆�
 
-	bool m_TempDepUpgradeFlag;//临时适配器升级安装的判定标志 true 适配器 false 非适配器
-	int m_queryNewTaskInterval;//查询任务时间间隔,默认是240s
-	bool m_installStopCopyDep;//安装时是否停止拷贝应用dep公共文件夹
+	bool m_TempDepUpgradeFlag;//涓存椂閫傞厤鍣ㄥ崌绾у畨瑁呯殑鍒ゅ畾鏍囧織 true 閫傞厤鍣� false 闈為€傞厤鍣�
+	int m_queryNewTaskInterval;//鏌ヨ�浠诲姟鏃堕棿闂撮殧锛岄粯璁ゆ槸240s
+	bool m_installStopCopyDep;//瀹夎�鏃舵槸鍚﹀仠姝㈡嫹璐濆簲鐢╠ep鍏�叡鏂囦欢澶�
 };
 #endif //RVC_MOD_UPGRADETASK_FSM_H_

+ 4 - 41
Module/mod_UpgradeMgr/mod_UpgradeMgr.cpp

@@ -429,55 +429,20 @@ ErrorCodeEnum CUpgradeMgrEntity::testActive()
 	}
 
 	CSimpleStringA strActiveFile = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "active.txt", rootVerPath.GetData());
-	//TODO: CrossPlaform  [Gifur@2025729]
 	FILE* fp = fopen(strActiveFile.GetData(),"rb+");
 	if(fp==NULL){
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-		LogWarn(Severity_Middle, Error_Exception, ERR_WRAN_OPEN_ACTIVE_FAIL,CSimpleStringA::Format("open write active.txt fail,please edit active attribute, err=%d",(int)GetLastError()).GetData());
-#else
-		LogWarn(Severity_Middle, Error_Exception, ERR_WRAN_OPEN_ACTIVE_FAIL,CSimpleStringA::Format("open write active.txt fail,please edit active attribute, err=%d",errno).GetData());
-#endif	
+		LogWarn(Severity_Middle, Error_Exception, ERR_WRAN_OPEN_ACTIVE_FAIL, CSimpleStringA::Format("open write active.txt fail,please edit active attribute, err=%d", (int)GetLastError()).GetData());
 		return Error_Unexpect;
 	}
 	fclose(fp);
 	return Error_Succeed;
-
 }
 
 
 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_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)
@@ -516,10 +481,8 @@ ErrorCodeEnum CUpgradeMgrEntity::NewStopMediaPlay()
 		pClient->SafeDelete();
 		return rc;
 	}
-	
-//#endif
-	
 }
+
 SP_BEGIN_ENTITY_MAP()
 	SP_ENTITY(CUpgradeMgrEntity)
 SP_END_ENTITY_MAP()

+ 25 - 35
Module/mod_accessauth/AccessAuthFSM.cpp

@@ -31,7 +31,7 @@ using namespace PinPad;
 
 CAccessAuthFSM::CAccessAuthFSM()
 	:m_finishAccess(0), m_nAccessFailedCount(0)
-	, m_accessAuthHost(true), m_initDeviceHost(true)
+	, m_accessAuthHost(true)
 	, m_torelateDiffSyncTimeSecs(180)
 {
 }
@@ -74,11 +74,6 @@ ErrorCodeEnum CAccessAuthFSM::OnExit()
 	return Error_Succeed;
 }
 
-void CAccessAuthFSM::HttpsLogCallBack(const char* logtxt)
-{
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("HttpsLogCallBack")("%s", logtxt);
-}
-
 struct TimeSynTask : ITaskSp
 {
 	CAccessAuthFSM* m_fsm;
@@ -152,11 +147,11 @@ struct TimeSynTask : ITaskSp
 			printFunc();
 
 			int decodedSessionKeyLen = 0;
-			char* decodedSessionKey = Hex2Str(timeSyncAns.sessionKey.c_str(), decodedSessionKeyLen);
+			char* decodedSessionKey = SP::Module::Util::Hex2Str(timeSyncAns.sessionKey.c_str(), decodedSessionKeyLen);
 			DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("decodedSessionKey=%s,%d", decodedSessionKey, decodedSessionKeyLen);
 			DWORD rc = Error_InvalidState;
 			rc = m_fsm->HandleTimeSyn(timeSyncAns.timeDiff, (BYTE*)decodedSessionKey);
-			delete decodedSessionKey;
+			delete [] decodedSessionKey;
 			if (rc == Error_Succeed) {
 				auto pEvent = new FSMEvent(CAccessAuthFSM::Event_EndSyncTime);
 				m_fsm->PostEventFIFO(pEvent);
@@ -537,6 +532,7 @@ unsigned int CAccessAuthFSM::s2_on_event(FSMEvent* pEvent)
 		} 
 		else 
 		{
+			//TODO: 没看到任何地方对 m_finishAccess 赋有意义的值  [Gifur@2025822]
 			CSimpleStringA strErrMsg = CSimpleStringA::Format("准入超时(%d)", m_finishAccess);
 			pEntity->GetFunction()->ShowFatalError(strErrMsg);
 		}
@@ -621,9 +617,9 @@ ErrorCodeEnum CAccessAuthFSM::LoadCenterConfig()
 	if (Error_Succeed == Error) 
 	{
 		spConfig->ReadConfigValue("AccessAuthorization", "HostUrl", m_accessAuthHost);
-		spConfig->ReadConfigValue("AccessAuthorization", "HostInitDeviceUrl", m_initDeviceHost);
+		//TODO: 需要清理集中配置  [Gifur@2025820]
+		//spConfig->ReadConfigValue("AccessAuthorization", "HostInitDeviceUrl", m_initDeviceHost);
 	}
-
 	return Error;
 }
 
@@ -631,15 +627,15 @@ bool CAccessAuthFSM::DecryptWithSessionKey(BYTE* encText, int encTextLen, BYTE*
 {
 	BYTE key[16] = { 0 };
 	memcpy(key, ((CAccessAuthEntity*)m_pEntity)->m_AuthSessionKey, 16);
-	char* keyTmp = Str2Hex((char*)key, 16);
-	delete keyTmp;
+	char* keyTmp = SP::Module::Util::Str2Hex((char*)key, 16);
+	delete[] keyTmp;
 
 	if (!DecWithSM4_ECB(key, encText, encTextLen, decTest, &decTestLen)) {
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("DecryptWithSessionKey ECB error.");
 		return false;
 	}
-	keyTmp = Str2Hex((char*)decTest, decTestLen);
-	delete keyTmp;
+	keyTmp = SP::Module::Util::Str2Hex((char*)decTest, decTestLen);
+	delete[] keyTmp;
 	return true;
 }
 
@@ -689,10 +685,10 @@ DWORD CAccessAuthFSM::HandleGetToken(BYTE* enToken1, BYTE* sharedKey, BYTE* enTo
 	char* enToken1_acs, * sharedKey_acs, * enToken2_acs, * hash_acs;
 	int enToken1_acs_len = 0, sharedKey_acs_len = 0, enToken2_acs_len = 0, hash_acs_len = 0;
 
-	enToken1_acs = Hex2Str((char*)enToken1, enToken1_acs_len);
-	sharedKey_acs = Hex2Str((char*)sharedKey, sharedKey_acs_len);
-	enToken2_acs = Hex2Str((char*)enToken2, enToken2_acs_len);
-	hash_acs = Hex2Str((char*)retHash, hash_acs_len);
+	enToken1_acs = SP::Module::Util::Hex2Str((char*)enToken1, enToken1_acs_len);
+	sharedKey_acs = SP::Module::Util::Hex2Str((char*)sharedKey, sharedKey_acs_len);
+	enToken2_acs = SP::Module::Util::Hex2Str((char*)enToken2, enToken2_acs_len);
+	hash_acs = SP::Module::Util::Hex2Str((char*)retHash, hash_acs_len);
 
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("HandleGetToken")("enToken1_acs_len=%d", enToken1_acs_len);
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM).setAPI("HandleGetToken")("sharedKey_acs_len=%d", sharedKey_acs_len);
@@ -709,10 +705,10 @@ DWORD CAccessAuthFSM::HandleGetToken(BYTE* enToken1, BYTE* sharedKey, BYTE* enTo
 	memcpy(enToken2, enToken2_acs, enToken2_acs_len);
 	memcpy(retHash, hash_acs, hash_acs_len);
 
-	delete enToken1_acs;
-	delete sharedKey_acs;
-	delete enToken2_acs;
-	delete hash_acs;
+	delete [] enToken1_acs;
+	delete [] sharedKey_acs;
+	delete [] enToken2_acs;
+	delete [] hash_acs;
 
 	BYTE enToken[512 + 16] = { 0 };
 	memcpy(enToken, enToken1, 256);
@@ -728,8 +724,8 @@ DWORD CAccessAuthFSM::HandleGetToken(BYTE* enToken1, BYTE* sharedKey, BYTE* enTo
 		rc = Error_Bug;
 		pEntity->SetAuthErrMsg("返回令牌校验不通过");
 		pEntity->GetFunction()->SetSysVar("AuthErrMsg", "返回令牌校验不通过");
-		char* sm3Ret = Str2Hex((char*)sm3, 32);
-		delete sm3Ret;
+		char* sm3Ret = SP::Module::Util::Str2Hex((char*)sm3, 32);
+		delete[] sm3Ret;
 		doWarnMsg(ERR_ACCESSAUTH_TOKEN_HASH, "返回令牌校验不通过", true);
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)(GetOutPutStr("%s%s", "Hash", "返回令牌校验不通过").c_str());
 	} 
@@ -795,17 +791,12 @@ DWORD CAccessAuthFSM::GetEncTerminalInfoWithKey(CBlob& encInfo, BYTE* key)
 	strResult = generateJsonStr(termInfo);
 
 	char* pBuf = new char[2048];
-	int len = 0;
-	//TODO: CrossPlaform
-#ifdef RVC_OS_WIN
 	string tmpStr = strResult.second;
+#ifdef RVC_OS_WIN
 	SP::Module::Util::ConvertGBK2Utf8(tmpStr);
-	strcpy(pBuf, tmpStr.c_str()); //GBK转UTF8
-	len = tmpStr.size();
-#else
-	strcpy(pBuf, strResult.second.c_str());
-	len = strResult.second.size();
 #endif // RVC_OS_WIN
+	strcpy(pBuf, tmpStr.c_str());
+	int len = tmpStr.size();
 
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("HardWareInfo: %s", pBuf);
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("HardWareInfo size: %d", len);
@@ -826,7 +817,6 @@ DWORD CAccessAuthFSM::GetEncTerminalInfoWithKey(CBlob& encInfo, BYTE* key)
 	}
 
 	delete[] pBuf;
-
 	return Error_Succeed;
 }
 
@@ -880,9 +870,9 @@ DWORD CAccessAuthFSM::GetTokenReq(CAccessAuthGetTokenReq* getTokenReq)
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetEncTerminalInfo failed:%d", rc);
 		return rc;
 	}
-	char* pTmp = Str2Hex((char*)encInfo.m_pData, encInfo.m_iLength);
+	char* pTmp = SP::Module::Util::Str2Hex((char*)encInfo.m_pData, encInfo.m_iLength);
 	getTokenReq->encTerminalInfo = pTmp;
-	delete pTmp;
+	delete[] pTmp;
 
 	string tmpStr = "";
 	if ((rc = GetTmk(tmpStr)) != Error_Succeed) 

+ 1 - 21
Module/mod_accessauth/AccessAuthFSM.h

@@ -8,25 +8,9 @@
 #include "IHttpFunc.h"
 #include "json/json.h"
 #include "CommEntityRestful.hpp"
-
-//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-///*TODO:  (80374374@11/27/2023)*/
-typedef CAutoArray<CSimpleStringA>  NetworkAddressesList;
-#define MACSESION 6
-#else
 #include <mutex>
 #include "publicFunExport.h"
 #include <winpr/sysinfo.h>
-static void GetLocalTimeRVC(SYSTEMTIME& stTime)
-{
-	GetLocalTime(&stTime);
-}
-#endif // RVC_OS_WIN
-
-#define ACS_SUCCESS "0"
-#define REFLECTION(var) #var
-#define JUAGEHTTPS(ret) (ret.m_sysCode == 200 || ret.m_sysCode == 201)
 
 typedef struct CSessionkeySynReq
 {
@@ -182,7 +166,6 @@ public:
 	unsigned int s3_on_event(FSMEvent* event);
 
 public:
-	static void HttpsLogCallBack(const char* logtxt);
 	CSimpleStringA GetmAccessAuthHost() { return m_accessAuthHost; }
 	bool DecryptWithSessionKey(BYTE* encText, int encTextLen, BYTE* decTest, int& decTestLen);
 	//oilyang@20210813 add bNeedEvent.
@@ -212,10 +195,7 @@ private:
 	void GetDiffSyncTimeFromCenterSettings();
 private:
 	int m_nAccessFailedCount;
-	CSimpleStringA m_accessAuthHost, m_initDeviceHost;
+	CSimpleStringA m_accessAuthHost;
 	int m_torelateDiffSyncTimeSecs;
 	int m_finishAccess;
-#ifdef RVC_OS_LINUX
-	int m_nCheckMD5;
-#endif // RVC_OS_LINUX
 };

+ 0 - 48
Module/mod_accessauth/MyBase64.cpp

@@ -113,52 +113,4 @@ namespace MyBase64{
 			//}
 		}
 	}
-	unsigned char Ch2Hex(char ch)
-	{
-		static const char* hex = "0123456789ABCDEF";
-		for (unsigned char i = 0;i != 16;++i)
-			if (ch == hex[i])
-				return i;
-		return 0;
-	}
-	char* Hex2Str(const char* src, int& dstLen)
-	{
-		int i = 0;
-		int cnt = 0;
-		int len = strlen(src);
-		unsigned char* d = new unsigned char[len];
-		memset(d, 0, len);
-		while (*src)
-		{
-			if (i & 1)
-			{
-				d[cnt++] |= Ch2Hex(*src);
-			}
-			else
-			{
-				d[cnt] = Ch2Hex(*src) << 4;
-			}
-			src++;
-			i++;
-		}
-		dstLen = cnt;
-		return (char*)d;
-	}
-	char* Str2Hex(const char* src, int srcLen)
-	{
-		string ret;
-		static const char* hex = "0123456789ABCDEF";
-
-		for (int i = 0;i != srcLen;++i)
-		{
-			ret.push_back(hex[(src[i] >> 4) & 0xf]);
-			ret.push_back(hex[src[i] & 0xf]);
-		}
-		char* tmp = new char[ret.length() + 1];
-		memset(tmp, 0, ret.length() + 1);
-		memcpy(tmp, ret.c_str(), ret.length());
-		return tmp;
-	}
-
-
 }

+ 0 - 2
Module/mod_accessauth/MyBase64.h

@@ -27,6 +27,4 @@ namespace MyBase64{
 	const int pemLineSz = 64;
 	void Encode(const string plain,string& encoded);
 	void Decode(const string coded,string& decoded);
-	char* Hex2Str(const char* src, int& dstLen);
-	char* Str2Hex(const char* str, int strLen);
 }

+ 0 - 49
Module/mod_accessauth/comm.cpp

@@ -97,55 +97,6 @@ int str2int(const string str) {
 	return ret;
 }
 
-unsigned char Ch2Hex(char ch)
-{
-	static const char* hex = "0123456789ABCDEF";
-	for (unsigned char i = 0; i != 16; ++i)
-		if (ch == hex[i])
-			return i;
-	return 0;
-}
-
-char* Hex2Str(const char* src, int& dstLen)
-{
-	int i = 0;
-	int cnt = 0;
-	int len = strlen(src);
-	unsigned char* d = new unsigned char[len];
-	memset(d, 0, len);
-	while (*src)
-	{
-		if (i & 1)
-		{
-			d[cnt++] |= Ch2Hex(*src);
-		}
-		else
-		{
-			d[cnt] = Ch2Hex(*src) << 4;
-		}
-		src++;
-		i++;
-	}
-	dstLen = cnt;
-	return (char*)d;
-}
-
-char* Str2Hex(const char* src, int srcLen)
-{
-	string ret;
-	static const char* hex = "0123456789ABCDEF";
-
-	for (int i = 0; i != srcLen; ++i)
-	{
-		ret.push_back(hex[(src[i] >> 4) & 0xf]);
-		ret.push_back(hex[src[i] & 0xf]);
-	}
-	char* tmp = new char[ret.length() + 1];
-	memset(tmp, 0, ret.length() + 1);
-	memcpy(tmp, ret.c_str(), ret.length());
-	return tmp;
-}
-
 #ifdef __linux__
 	
 	void parse_cpu_id(const char* file_name, const char* match_words, std::string& cpu_id)

+ 0 - 4
Module/mod_accessauth/comm.h

@@ -38,10 +38,6 @@ int str2int(const string str, int& ret);
 
 int str2int(const string str);
 
-char* Hex2Str(const char* src, int& dstLen);
-
-char* Str2Hex(const char* str, int strLen);
-
 #ifdef __linux__
 #define RUNTIME_PATH "/opt/run/runinfo/runcfg"
 #include <sys/types.h>

+ 32 - 71
Module/mod_accessauth/mod_AccessAuth.cpp

@@ -447,13 +447,6 @@ void CAccessAuthEntity::printPasswdError(const string& strErrMsg){
 	DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA520C")(strErrMsg.c_str());
 }
 
-int Char2Int(char * ch) {
-	int num = 0;
-	for (int i = 0;i < strlen(ch);i++) {
-		num += ((int)(ch[i] - '0')) * pow((float)10, (float)(strlen(ch) - i - 1));
-	}
-	return num;
-}
 bool CAccessAuthEntity::SaveAuthKey(BYTE *pKey)
 {
 	memset(m_AuthSessionKey, 0, 140);
@@ -484,7 +477,7 @@ bool CAccessAuthEntity::SaveAuthKey(BYTE *pKey)
 
 	int decodedPrivateKeyLen;
 
-	char* pDecodedPrivateKey = Hex2Str(privateKey, decodedPrivateKeyLen);
+	char* pDecodedPrivateKey = SP::Module::Util::Hex2Str(privateKey, decodedPrivateKeyLen);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("privateKey len:%d, decodedPrivateKeyLen=%d", strlen(privateKey), decodedPrivateKeyLen);
 
 	char pDecryptPrivateKey[BUF_SIZE] = { 0 };
@@ -501,16 +494,17 @@ bool CAccessAuthEntity::SaveAuthKey(BYTE *pKey)
 	int plainKeyLen = KEY_SIZE;
 	char pKeyLen[4] = { 0 };
 	memcpy(pKeyLen, pKey, 4);
-	int kenLen = Char2Int(pKeyLen);
-	char* pEncodeKey = Str2Hex((char*)pKey, kenLen + 4);
+	int kenLen = SP::Module::Util::Char2Int(pKeyLen);
+	char* pEncodeKey = SP::Module::Util::Str2Hex((char*)pKey, kenLen + 4);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("kenLen=%d", kenLen);
-	delete pEncodeKey;
+	delete [] pEncodeKey;
 	char* key = new char[kenLen + 1];
 	memset(key, 0, kenLen + 1);
 	memcpy(key, pKey + 4, kenLen);
 	if (!DecWithSM2PriKey((BYTE*)key, kenLen, (BYTE*)pPlainKey, &plainKeyLen, (BYTE*)pDecryptPrivateKey, decryprtLen)) {
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("使用私钥解密失败!");
 		printPasswdError("终端初始化未完成,请重置秘钥进行初始化");
+		delete[] key;
 		return false;
 	}
 	if (plainKeyLen != KEY_SIZE) {
@@ -518,34 +512,11 @@ bool CAccessAuthEntity::SaveAuthKey(BYTE *pKey)
 	}
 
 	memcpy(m_AuthSessionKey, pPlainKey, KEY_SIZE);
+	delete[] key;
 
 	return true;
 }
 
-static BYTE* ConvertHexStrToBytes(const char *pszStr)
-{
-	if (pszStr == NULL || strlen(pszStr) == 0)
-		return NULL;
-
-	int nLen = strlen(pszStr) / 2;
-	BYTE *pRet = (BYTE*)malloc(nLen);
-	memset(pRet, 0, nLen);
-
-	for (int i = 0; i < nLen; i++)
-	{
-		int nTmp(0);
-		if (sscanf(&pszStr[i * 2], "%2X", &nTmp) != 1)
-		{
-			free(pRet);
-			return NULL;
-		}
-
-		pRet[i] = (BYTE)nTmp;
-	}
-
-	return pRet;
-}
-
 // 使用密钥加密
 ErrorCodeEnum CAccessAuthEntity::EncryptDataWithKey(const CBlob &raw, CBlob &enc, BYTE* key)
 {
@@ -554,7 +525,7 @@ ErrorCodeEnum CAccessAuthEntity::EncryptDataWithKey(const CBlob &raw, CBlob &enc
 	BYTE* pEncData = new BYTE[1024];
 	int pEncDataSize = 1024;
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("pEncDataSize=%d", pEncDataSize);
-	char* pPlainInfo = Str2Hex((char*)raw.m_pData, raw.m_iLength);
+	char* pPlainInfo = SP::Module::Util::Str2Hex((char*)raw.m_pData, raw.m_iLength);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("raw Length=%d", raw.m_iLength);
 	delete[] pPlainInfo;
 
@@ -566,11 +537,11 @@ ErrorCodeEnum CAccessAuthEntity::EncryptDataWithKey(const CBlob &raw, CBlob &enc
 	
 	enc.Attach(pEncData,pEncDataSize);
 
-	char* tmp = Str2Hex((char*)pEncData, pEncDataSize);
+	char* tmp = SP::Module::Util::Str2Hex((char*)pEncData, pEncDataSize);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("pEncData size:%d", pEncDataSize);
 	delete[] tmp;
 
-	tmp = Str2Hex((char*)enc.m_pData, enc.m_iLength);
+	tmp = SP::Module::Util::Str2Hex((char*)enc.m_pData, enc.m_iLength);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("EncWithSM4_ECB data size:%d", enc.m_iLength);
 	delete[] tmp;
 
@@ -581,33 +552,20 @@ ErrorCodeEnum CAccessAuthEntity::EncryptDataWithKey(const CBlob &raw, CBlob &enc
 bool CAccessAuthEntity::GetTerminalPublicKey(BYTE* pBuf, int& nBufLen, string& pubkey)
 {
 	LOG_FUNCTION();
-	CSimpleString runInfoPath;
-	auto rc = GetFunction()->GetPath("runinfo", runInfoPath);
+	CSimpleString runCfgPath(true);
+	auto rc = GetFunction()->GetPath("RunCfg", runCfgPath);
 	if (rc != Error_Succeed) {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("GetPath runinfo error=%d.", rc);
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("GetPath RunCfg error=%d.", rc);
 		return false;
 	}
-	runInfoPath += SPLIT_SLASH_STR "runcfg" SPLIT_SLASH_STR;
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-	DWORD dwAttr = GetFileAttributes(runInfoPath.GetData());
-	if (dwAttr == 0xFFFFFFFF)  //目录不存在则创建   
-	{
-		if (!CreateDirectory(runInfoPath.GetData(), NULL))
-		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("Create %s dir failed!", runInfoPath.GetData());
-		}
-	}
-#else
-	if (!dir_is_exist(runInfoPath.GetData()))
-	{
-		if (dir_create(runInfoPath.GetData()) != 0)
+	if (!ExistsDirA(runCfgPath)) {
+		if (!CreateDirA(runCfgPath, TRUE))
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("Create %s dir failed!", runInfoPath.GetData());
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("Create %s dir failed!", runCfgPath.GetData());
 		}
 	}
-#endif // RVC_OS_WIN
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("Dir=%s", runInfoPath.GetData());
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("Dir=%s", runCfgPath.GetData());
+
 	CSmartPointer<IConfigInfo> pConfig;
 	rc = GetFunction()->OpenConfig(Config_Run, pConfig);
 	if (rc != Error_Succeed) {
@@ -630,12 +588,9 @@ bool CAccessAuthEntity::GetTerminalPublicKey(BYTE* pBuf, int& nBufLen, string& p
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("iPublicKeyLen=%d,iPrivateKeyLen=%d", iPublicKeyLen, iPrivateKeyLen);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("[btPublicKey=%s]", (char*)btPublicKey);
 
-	char* pEncode = Str2Hex((char*)btPublicKey, iPublicKeyLen);
+	char* pEncode = SP::Module::Util::Str2Hex((char*)btPublicKey, iPublicKeyLen);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("pEncode=%s,%d", pEncode, strlen(pEncode));
 
-	/*rc = pConfig->WriteConfigValue("TerminalPD", "PublicKey", pEncode);
-	assert(rc == Error_Succeed);*/
-
 	m_publicKey = pEncode;
 	pubkey = pEncode;
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("write public key success.");
@@ -653,7 +608,7 @@ bool CAccessAuthEntity::GetTerminalPublicKey(BYTE* pBuf, int& nBufLen, string& p
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("sm4 encrypt pri key success.");
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("cryptPrivateKeyLen=%d", cryptPrivateKeyLen);
 
-	char* pEncodedCryptPrivateKey = Str2Hex((char*)pCryptPrivateKey, cryptPrivateKeyLen);
+	char* pEncodedCryptPrivateKey = SP::Module::Util::Str2Hex((char*)pCryptPrivateKey, cryptPrivateKeyLen);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("encode pri key success.");
 
 	m_privateKey = pEncodedCryptPrivateKey;
@@ -669,11 +624,14 @@ bool CAccessAuthEntity::GetTerminalPublicKey(BYTE* pBuf, int& nBufLen, string& p
 	delete[] pEncode;
 	delete[] pEncodedCryptPrivateKey;
 
-	char* pDecode = Hex2Str(publicKey.GetData(), nBufLen);
+	char* pDecode = SP::Module::Util::Hex2Str(publicKey.GetData(), nBufLen);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("pDecode=[%s],len=%d", pDecode, nBufLen);
 
 	memcpy(pBuf, pDecode, nBufLen);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("GetTerminalPublicKey")("pBuf[0]=%02X,nBufLen=%d", pBuf[0], nBufLen);
+
+	delete[] pDecode;
+
 	return true;
 }
 
@@ -997,19 +955,22 @@ bool CAccessAuthEntity::SendInitMKReqACS(CInitlizerMKReq& initMKReq)
 	CBlob encInfo;
 	char* hexStr = "21009872C31CBC00D0C8F421D09CF707";
 	BYTE key[KEY_SIZE] = { 0 };
-	memcpy(key, ConvertHexStrToBytes(hexStr), KEY_SIZE);
-	//char key[KEY_SIZE] = { 0 };
-	//memcpy(key, "1234567890123456234", KEY_SIZE);
+	PBYTE btTmp(NULL);
+	SP::Module::Util::StrBuf2HexBuf(hexStr, &btTmp);
+	memcpy(key, btTmp, KEY_SIZE);
+	if (btTmp != NULL) {
+		delete[] btTmp;
+		btTmp = NULL;
+	}
 	nRet = (ErrorCodeEnum)m_FSM.GetEncTerminalInfoWithKey(encInfo, key);
 	if (nRet != Error_Succeed)
 	{
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("GetEncTerminalInfo failed:%d", nRet);
 		return false;
 	}
-	//TODO: CrossPlaform  [Gifur@202584]
-	char* pTmp = Str2Hex((char*)encInfo.m_pData, encInfo.m_iLength);
+	char* pTmp = SP::Module::Util::Str2Hex((char*)encInfo.m_pData, encInfo.m_iLength);
 	initMKReq.iniTerminalInfo = pTmp;
-
+	delete[] pTmp;
 	CSystemStaticInfo si;
 	pFunc->GetSystemStaticInfo(si);
 	initMKReq.terminalVersion = si.InstallVersion.ToString();

+ 7 - 35
Module/mod_alarm/mod_alarm.cpp

@@ -1,26 +1,21 @@
 #include "stdafx.h"
 #include "mod_alarm.h"
-#ifdef RVC_OS_WIN
-
-#else
+#ifdef RVC_OS_LINUX
 #include <sys/timeb.h>
 #include "SpUtility.h"
 #endif
-
+#include <winpr/sysinfo.h>
 
 void CAlarmEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
 	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)
 {
-		//Dbg("receive log,pszEntityName=%s,eLogType=%d,pszMessage=%s",pszEntityName,(int)eLogType,pszMessage);
-#ifdef RVC_OS_WIN
-
-#else
-		CSimpleStringA strMessage(true);
-		if (!(pszMessage == NULL || strlen(pszMessage) == 0))
-			strMessage = pszMessage;
+	CSimpleStringA strMessage(true);
+	if (!(pszMessage == NULL || strlen(pszMessage) == 0))
+		strMessage = pszMessage;
 
-		//如果是旧模式则转GBK码
+#ifdef RVC_OS_LINUX
+		//TODO: CrossPlaform 由文涛确认并处理:UOS现在是否还有区分新旧模式 如果是旧模式则转GBK码  [Gifur@2025820]
 		if (m_fsm.m_CenterModel == 0) {
 			if (!strMessage.IsNullOrEmpty()) {
 				std::string tmpStr = SP::Utility::UTF8ToGBK(pszMessage);
@@ -56,36 +51,13 @@ void CAlarmEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,con
 		}
 
 		char cDescription[512]={0};
-		//char clogTime[32]={0};//2020-20-20 12:12:12.100 日志时间,记得释放
 		char warnTime[20]={0};//2020-20-20 12:12:12 告警时间,记得释放
-
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 		SYSTEMTIME st;
 		GetLocalTime(&st);
-		//sprintf(clogTime, "%04d-%02d-%02d %02d:%02d:%02d.%03d  ", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
 		sprintf(warnTime, "%04d-%02d-%02d %02d:%02d:%02d", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
-#else
-		struct timeb stime = { 0, 0 };
-		tm nowTm = { 0 };
-		ftime(&stime);
-		localtime_r(&stime.time, &nowTm);
-		//sprintf(clogTime, "%04d-%02d-%02d %02d:%02d:%02d.%03d  ", nowTm.tm_year + 1900, nowTm.tm_mon + 1, nowTm.tm_mday, nowTm.tm_hour, nowTm.tm_min, nowTm.tm_sec, stime.millitm);
-		sprintf(warnTime, "%04d-%02d-%02d %02d:%02d:%02d", nowTm.tm_year + 1900, nowTm.tm_mon + 1, nowTm.tm_mday, nowTm.tm_hour, nowTm.tm_min, nowTm.tm_sec);
-#endif
-
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-		strncat(cDescription, pszMessage, 512 - 1);
-#else
 		strncat(cDescription, strMessage.GetData(), 512 - 1);
-#endif
-		
 		Alarm->Description = _strdup(cDescription);
 		Alarm->warnTime = _strdup(warnTime);
-
-
-
 		m_fsm.add_NewAlarm(Alarm);
 		m_fsm.m_iRec++;
 		if(m_fsm.m_iRec%500==0){

+ 2 - 17
Module/mod_assistantchannel/chan_protocol.h

@@ -53,18 +53,13 @@ typedef struct acm_hdr {
 	unsigned char encrypt : 1;
 	unsigned char error : 7;
 	unsigned short sub_type;
-	//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
-	unsigned long length; // 需要注意的是长度最大为2^16-1,65535
-	unsigned long id; // 包id
-	unsigned long hash;
-#else
 	unsigned int length; // 需要注意的是长度最大为2^16-1,65535
 	unsigned int id; // 包id
 	unsigned int hash;
-#endif //RVC_OS_WIN
 	unsigned char data[0]; // 长度由length决定
 }acm_hdr;
+
+
 typedef struct proxy_hdr {
 	char	 tag[3]; // 必须为’ACM’
 	char	 version; // 版本号,目前为1
@@ -73,12 +68,7 @@ typedef struct proxy_hdr {
 	unsigned int rtp_port; // 视频rtp端口
 	int media_desc; // 媒体描述
 	char client_id[20]; // 用户身份证号码,用与视频面签
-	//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
-	unsigned long encrypt_keyhash; // 加密key hash code
-#else
 	unsigned int  encrypt_keyhash; // 加密key hash code
-#endif //RVC_OS_WIN
 	char encrypt_key[16]; // encodestring(密钥),传送过去之后利用decodestring解密
 }proxy_hdr;
 typedef struct proxy_ack_hdr {
@@ -87,12 +77,7 @@ typedef struct proxy_ack_hdr {
 	unsigned int rtp_port; // 视频rtp端口
 	int media_desc; // 媒体描述
 	char client_id[20]; // peer request client_id
-	//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
-	unsigned long encrypt_keyhash; // 加密key hash code
-#else
 	unsigned int encrypt_keyhash; // 加密key hash code
-#endif //RVC_OS_WIN
 	char encrypt_key[16]; // encodestring(密钥),传送过去之后利用decodestring解密
 }proxy_ack_hdr;
 

+ 1 - 13
Module/mod_assistantchannel/mod_assistantchannel.cpp

@@ -1,6 +1,7 @@
 #include "stdafx.h"
 #include "mod_assistantchannel.h"
 #include "EventCode.h"
+#include <winpr/string.h>
 
 static const char *__states[] = {
 	"Idle", "Connecting", "Connected", "Closing"
@@ -68,13 +69,7 @@ static void __on_destroy(bizchan_t *chan, void *user_data)
 
 static void __dbg(void *user_data, const char *fmt, va_list arg)
 {
-	//vDbg(fmt, arg);
-	//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
 	int n = _vscprintf(fmt, arg);
-#else
-	int n = _scprintf(fmt, arg);
-#endif //RVC_OS_WIN
 	if (n >= MAX_PATH) {
 		char* buf = (char*)malloc((size_t)(n + 1));
 		vsnprintf(buf, n + 1, fmt, arg);
@@ -83,18 +78,11 @@ static void __dbg(void *user_data, const char *fmt, va_list arg)
 	}
 	else {
 		char strlog[MAX_PATH] = { 0 };
-		//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
 		_vsnprintf(strlog, MAX_PATH, fmt, arg);
-#else
-		vsnprintf(strlog, MAX_PATH, fmt, arg);
-#endif //RVC_OS_WIN
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s", strlog);
 	}
 }
 
-
-
 void CBizChannelEntity::OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext) 
 { 
 	ErrorCodeEnum Error = __OnStart(Error_Succeed);

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 172 - 230
Module/mod_cardissuerstore/CardIssuerStoreFSM.cpp


+ 1 - 1
Module/mod_chromium/CModTools.cpp

@@ -1150,7 +1150,7 @@ namespace Chromium {
 			CSimpleString runningVer = "";
 			m_pEntity->GetFunction()->GetRunningVersion(runningVer);
 			dstInstallUrl.append("?terminalVersion=").append(runningVer.GetData());
-			//TODO: CrossPlaform  [Gifur@2025730]
+			//TODO: CrossPlaform  由良瑜确认并处理:考虑采用 SpUtility.h 中的 replaceInPlace 函数 [Gifur@2025730]
 #if defined(RVC_OS_LINUX)
 			auto replaceAll = [](std::string& str, const std::string& search, const std::string& replace) {
 				size_t pos = 0;

+ 0 - 39
Module/mod_chromium/CWSCodec.cpp

@@ -1267,45 +1267,6 @@ namespace Chromium {
 		msgInfo.value = value.second;
 	}
 
-	using namespace std;
-	vector<string> split(const string & s, const string & seperator) {
-		vector<string> result;
-		typedef string::size_type string_size;
-		string_size i = 0;
-
-		while (i != s.size()) {
-			//找到字符串中首个不等于分隔符的字母;
-			int flag = 0;
-			while (i != s.size() && flag == 0) {
-				flag = 1;
-				for (string_size x = 0; x < seperator.size(); ++x)
-					if (s[i] == seperator[x]) {
-						++i;
-						flag = 0;
-						break;
-					}
-			}
-
-			//找到又一个分隔符,将两个分隔符之间的字符串取出;
-			flag = 0;
-			string_size j = i;
-			while (j != s.size() && flag == 0) {
-				for (string_size x = 0; x < seperator.size(); ++x)
-					if (s[j] == seperator[x]) {
-						flag = 1;
-						break;
-					}
-				if (flag == 0)
-					++j;
-			}
-			if (i != j) {
-				result.emplace_back(s.substr(i, j - i));
-				i = j;
-			}
-		}
-		return result;
-	}
-
 	void CWSCodec::SerializeGetVarReq(cJSON * js, char* data, int* wpos, int* capacity, CMedthodInterface * pI, char* errmsg, ws_msgInfo& msgInfo) {
 		auto  transID = json_deal::getIntergerFromCjsonObj(js, "transID");
 		if (transID.first == false)

+ 2 - 20
Module/mod_chromium/mod_chromium.cpp

@@ -531,15 +531,6 @@ namespace Chromium {
 	{
 		LogManager::getInstance().logEntityStageChange("OnPreStart_register", 0, "begin");
 		ErrorCodeEnum Error;
-
-		//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_LINUX)
-        Error = GetFunction()->SubscribeLog(m_uuidAllFault, this, Log_Notify, Severity_High, Error_IgnoreAll, -2, NULL, false);
-        if (Error_Succeed != Error) {
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("subscribe log for notify failed! %s", SpStrError(Error));
-        }
-#endif //RVC_OS_LINUX
-
 		if (!ConfigManager::getInstance().m_withBrowser)
 		{
 			if (Error_Succeed == (Error = GetFunction()->SubscribeLog(m_uuidAccessAuth, this, Log_Event, Severity_None, Error_IgnoreAll, -1, "AccessAuthorization")))
@@ -790,16 +781,9 @@ namespace Chromium {
 					return false;
 				}
 				path = csHardwareCfg + SPLIT_SLASH_STR + "root.ini";
-				//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
-				if (_access(path.GetData(), 0) == 0) {
-#else
-				if (access(path.GetData(), F_OK) == 0) {
-#endif
+				if (ExistsFileA(path)) {
 					return true;
-				}
-				else
-				{
+				} else {
 					DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("root.ini(%s) is not exist.", path.GetData());
 					return false;
 				}
@@ -808,8 +792,6 @@ namespace Chromium {
 			//if root.ini not exist
 			CSimpleString rootIni_path;
 			ConfigManager::getInstance().m_existRootIni = IsRootINIExist(rootIni_path);
-			
-
 
 			//the system info may be not complete.If the device is not install ,it can't not read the terminalNo.
 			CSystemStaticInfo t_sysInfo;

+ 1 - 2
Module/mod_counterconnector/CMakeLists.txt

@@ -7,8 +7,6 @@ set(${MODULE_PREFIX}_SRCS
 	ConnectorFSM.cpp
 	mod_counterconnector.h
 	mod_counterconnector.cpp
-	strutil.h
-	strutil.cpp
 	callroute_nodelist.h
 	callroute_nodelist.cpp
 	http_callrouter.h
@@ -19,6 +17,7 @@ set(MOD_VERSION_STRING "0.0.1-dev1")
 add_module_libraries(${MODULE_PREFIX} ${MODULE_NAME} ${MOD_VERSION_STRING})
 
 target_include_directories(${MODULE_NAME} PRIVATE
+	${RVC_TOOLKIT_INCLUDE_DIR}
 	${MODULE_BASE_DIR}/mod_assistantchannel
 	${MODULE_BASE_DIR}/mod_sipphone
 	${MODULE_BASE_DIR}/mod_mediacontroller

+ 5 - 64
Module/mod_counterconnector/ConnectorFSM.cpp

@@ -2,6 +2,9 @@
 #include "ConnectorFSM.h"
 #include "EventCode.h"
 #include "json/json.h"
+#include "strutil.h"
+#include <winpr/crt.h>
+#include <winpr/string.h>
 
 #define RELEASEING_TIMER_INTERVAL	1200
 #define RELEASEING_SIP_TIMER		20000
@@ -391,22 +394,12 @@ static int CStringSplit(char* str, char** result, size_t ucount, const char* del
 {
 	char* ptr = NULL;
 	size_t unum = ucount;
-	//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
 	char* p = strtok_s(str, del, &ptr);
 	while (p != NULL && unum > 0) {
 		*result++ = p;
 		p = strtok_s(NULL, del, &ptr);
 		unum--;
 	}
-#else
-	char* p = strtok_r(str, del, &ptr);
-	while (p != NULL && unum > 0) {
-		*result++ = p;
-		p = strtok_r(NULL, del, &ptr);
-		unum--;
-	}
-#endif //RVC_OS_WIN
 	return ucount - unum;
 }
 
@@ -433,58 +426,6 @@ static int GetCallInfoFromConfig(char* strcallurl, uint32_t ucalllen, char* stra
 	return iRet;
 }
 
-/*无符号长整形转字符型*/
-#if defined(RVC_OS_LINUX)
-namespace
-{
-	//TODO: CrossPlaform  [Gifur@2025730]
-	char* _ultoa(unsigned long value, char* pstring, int radix)
-	{
-		char tmp[33] = { 0 };
-		char* tp = tmp;
-		long i;
-		unsigned long v = value;
-		char* sp;
-
-		if (radix > 36 || radix <= 1 || NULL == pstring) {
-			return 0;
-		}
-
-		while (v || tp == tmp) {
-			i = v % radix;
-			v = v / radix;
-			if (i < 10)
-				*tp++ = i + '0';
-			else
-				*tp++ = i + 'a' - 10;
-		}
-
-		sp = pstring;
-
-		while (tp > tmp)
-			*sp++ = *--tp;
-		*sp = 0;
-		return pstring;
-	}
-}
-#endif //RVC_OS_LINUX
-
-static int get_interger_netaddr(char *strbuf, size_t ubufszie, const char* szip)
-{
-	int ret = -1;
-
-	unsigned long ulip = 0;
-	if (NULL == strbuf || NULL == szip){
-		return ret;
-	}
-
-	ulip = inet_addr(szip);
-	_ultoa(ulip, strbuf, 10);
-
-	ret = 0;
-	return ret;
-}
-
 int ACMCallFSM::ParseDefaultServer(const char* strServer)
 {
 	int iRet = 0;
@@ -877,7 +818,7 @@ void ACMCallFSM::s11_on_entry()
 		callurl_node_t *node = get_no_used_node(m_pCallRouteList);
 
 		char callid_str[64] = { 0 };
-		get_format_uuid(callid_str, 64);
+		str_get_format_uuid(callid_str, 64);
 
 		if (node != NULL){
 			m_LastSipError = MakeCall(node->strcallurl, CSimpleStringA::Format("sip:%s@%s;transport=UDP", node->strnewcallernum, ipstr), 
@@ -899,7 +840,7 @@ void ACMCallFSM::s11_on_entry()
 				snprintf(strserver, MAX_PATH, "%s", m_voipserver[index].c_str());
 				if (0 == GetCallInfoFromConfig(strcallurl, MAX_PATH, strassistip, 32, &iport, strserver)){
 					char strassitinter[32] = {0};
-					get_interger_netaddr(strassitinter, 32, strassistip);
+					str_get_interger_netaddr(strassitinter, 32, strassistip);
 					m_LastSipError = MakeCall(strcallurl, CSimpleStringA::Format("sip:%s#%s@%s;transport=UDP", m_strTerminalId.GetData(), strassitinter, ipstr), 
 						callid_str, m_CallingParam);
 					m_iChanProxyPort[0] = iport;

+ 1 - 26
Module/mod_counterconnector/ConnectorFSM.h

@@ -12,8 +12,6 @@
 
 #ifdef _WIN32
 #include "resource.h"
-#else
-#include "uuid/uuid.h"
 #endif
 
 #include "http_callrouter.h"
@@ -482,30 +480,7 @@ private:
 	int TranslateState(int innerState);
 	ErrorCodeEnum SetCallState(int state);
 
-	//TODO: CrossPlaform  [Gifur@2025730]
-	void get_format_uuid(char* strbuffer, size_t ulen)
-	{
-#ifdef RVC_OS_WIN
-		UUID uuid;
-		size_t uuidlen = 0;
-		RPC_CSTR buf;
-		UuidCreate((UUID*)&uuid);
-		UuidToString((UUID*)&uuid, &buf);
-
-		uuidlen = strlen((const char*)buf);
-		if (uuidlen < ulen) {
-			memcpy(strbuffer, (const char*)buf, uuidlen);
-		}
-
-		RpcStringFree(&buf);
-#else
-		uuid_t uuid;
-		uuid_generate(uuid);
-		uuid_unparse(uuid, strbuffer);
-#endif
-	}
-
-	//TODO: CrossPlaform IP [Gifur@2025729]
+	//TODO: CrossPlaform IP 框架具备统一支持,但不清楚影响范围(继而无法评估测试范围),未敢轻易改动 [Gifur@2025729]
 	ErrorCodeEnum GetLocalIP(char *buff, size_t ulen)
 	{
 #if defined(RVC_OS_WIN)

+ 1 - 1
Module/mod_counterconnector/callroute_nodelist.cpp

@@ -53,7 +53,7 @@ int add_node_to_list(node_list_head_t* plist, const char* newcallernum, const ch
 		int uport = atoi(pstrport);
 
 		memset(psipurl, 0, ulen+1);
-		fifter_string(psipurl, ulen+1, pcallurl, '\'');
+		str_fifter_string(psipurl, ulen+1, pcallurl, '\'');
 
 		ulen = strlen(pstrassistip);
 		pstrip = (char*)malloc(ulen+1);

+ 1 - 1
Module/mod_counterconnector/http_callrouter.cpp

@@ -45,7 +45,7 @@ static int get_http_callnodeinfo(node_info_t* pnode, const char* pcaller_num, co
 		snprintf(pnode->strcallurl, RVC_DATALEN, "%s%s%s@%s", "sip:", "8", paccess_num, strvoiceip);
 	}
 	//new new_caller_id_number=callernum#assist_int_ip
-	get_interger_netaddr(strinterip, RVC_DATALEN, pnode->strassistip);
+	str_get_interger_netaddr(strinterip, RVC_DATALEN, pnode->strassistip);
 	snprintf(pnode->strcallernum, RVC_DATALEN, "%s%s%s", pcaller_num, "#", strinterip);
 
 	iret = 0;

+ 0 - 150
Module/mod_counterconnector/strutil.cpp

@@ -1,150 +0,0 @@
-#include "stdafx.h"
-#include "strutil.h"
-
-int reset_buffer(void* pbuf, int idata, size_t ulen)
-{
-	int ret = -1;
-	if (pbuf){
-		memset(pbuf, idata, ulen);
-		ret = 0;
-	}
-
-	return ret;
-}
-
-
-int rend_string(char* pSrc, int iflag)
-{
-	int ret = -1;
-	if (pSrc){
-		char* pindex = pSrc;
-		while(*pindex != iflag){
-			pindex++;
-		};
-		*pindex = '\0';
-		ret = 0;
-	}
-
-	return ret;
-}
-
-int fifter_string(char*pbuf, size_t usize, const char* psrc, const char cflag)
-{
-	int ret = -1;
-	int i = 0;
-	int j = 0;
-	size_t ulen = 0;
-	const char* pindex = psrc;
-	if (NULL == psrc){
-		return ret;
-	}
-
-	ulen = strlen(psrc);
-	for (i=0; i<ulen && i<usize; i++){
-		if (pindex[i] != cflag){
-			pbuf[j++] = pindex[i];
-		}
-	}
-	if (j == ulen - 2){
-		ret = 0;
-	}
-
-	return ret;
-}
-//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(_MSC_VER)
-#else
-/*无符号长整形转字符型*/
-char* _ultoa(unsigned long value, char* pstring, int radix)
-{
-	char tmp[33] = { 0 };
-	char* tp = tmp;
-	long i;
-	unsigned long v = value;
-	char* sp;
-
-	if (radix > 36 || radix <= 1 || NULL == pstring) {
-		return 0;
-	}
-
-
-	while (v || tp == tmp) {
-		i = v % radix;
-		v = v / radix;
-		if (i < 10)
-			*tp++ = i + '0';
-		else
-			*tp++ = i + 'a' - 10;
-	}
-
-	sp = pstring;
-
-	while (tp > tmp)
-		*sp++ = *--tp;
-	*sp = 0;
-	return pstring;
-}
-
-#endif //_MSC_VER
-
-int get_interger_netaddr(char *strbuf, size_t ubufszie, const char* szip)
-{
-	int ret = -1;
-
-	unsigned long ulip = 0;
-	if (NULL == strbuf || NULL == szip){
-		return ret;
-	}
-
-	ulip = inet_addr(szip);
-	_ultoa(ulip, strbuf, 10);
-
-	ret = 0;
-	return ret;
-}
-
-int convert_interaddr_strip(char *strbuf, size_t ubufszie, const char* szinter_ip)
-{
-	int ret = -1;
-	char* strip = NULL;
-	struct sockaddr_in addr = {0};
-	if (!szinter_ip || !strbuf){
-		return ret;
-	}
-
-	addr.sin_addr.s_addr = strtoul(szinter_ip, NULL, 10);//inet_addr(config->switch_server);
-	strip = inet_ntoa(addr.sin_addr);
-	if (strip){
-		size_t ulen = strlen(strip);
-		if (ulen < ubufszie){
-			memcpy(strbuf, strip, ulen);
-			ret = 0;
-		}
-	}
-
-	return ret;
-}
-
-
-int connect_strings(char* strbuf, size_t ulen, const char* psrca, const char* pstr, const char* psrcb)
-{
-	int ret = -1;
-	size_t ulena = 0;
-	size_t ulenb = 0;
-	size_t ulenstr = 0;
-
-	if(!psrca || !psrcb || !pstr){
-		return ret;
-	}
-
-	ulena = strlen(psrca);
-	ulenb = strlen(psrcb);
-	ulenstr = strlen(pstr);
-
-	if (ulen > ulena + ulenb + ulenstr){
-		snprintf(strbuf, ulen, "%s%s%s", psrca, pstr, psrcb);
-		ret = 0;
-	}
-
-	return ret;
-}

+ 0 - 18
Module/mod_counterconnector/strutil.h

@@ -1,18 +0,0 @@
-#ifndef _STR_UTIL_
-#define _STR_UTIL_
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-#define proxy_copy(pDst, pSrc)		if(pSrc)	{	memcpy(pDst, pSrc, strlen(pSrc));	}
-
-int reset_buffer(void* pbuf, int idata, size_t ulen);
-int rend_string(char* pSrc, int iflag);
-int fifter_string(char*pbuf, size_t usize, const char* psrc, const char cflag);
-int get_interger_netaddr(char *strbuf, size_t ubufszie, const char* szip);
-int convert_interaddr_strip(char *strbuf, size_t ubufszie, const char* szinter_ip);
-int connect_strings(char* strbuf, size_t ulen, const char* psrca, const char* psrcb, const char* pstr);
-
-#endif

+ 3 - 11
Module/mod_facetracking/mod_facetracking.cpp

@@ -10,19 +10,11 @@
 #include "fileutil.h"
 #include "EventCode.h"
 #include "../mod_mediacontroller/Event.h"
+#include <winpr/string.h>
 
 #ifndef MAX_LOG_LEN
 #define MAX_LOG_LEN 512
 #endif
-//TODO: CrossPlaform  [Gifur@2025730]
-#ifndef rvc_snprintf
-#ifdef RVC_OS_WIN
-#define rvc_snprintf _snprintf
-#else
-#define rvc_snprintf snprintf
-#endif // RVC_OS_WIN
-
-#endif // rvc_snprintf
 
 // 脸部跟踪&拍照 devel: 0x302
 
@@ -281,11 +273,11 @@ void CFaceTrackingEntity::GetFaceImgName(char* FaceName, uint32_t uLen)
 	{
 		if (((const char*)strCustomerID == NULL)||(_stricmp(strCustomerID,"N") == 0))
 		{
-			rvc_snprintf(FaceName, uLen,"%s%s%s_0", strPath.GetData(), SPLIT_SLASH_STR, strSessionID.GetData());
+			_snprintf(FaceName, uLen,"%s%s%s_0", strPath.GetData(), SPLIT_SLASH_STR, strSessionID.GetData());
 		}
 		else
 		{
-			rvc_snprintf(FaceName, uLen, "%s%s%s_%s", strPath.GetData(), SPLIT_SLASH_STR, strSessionID.GetData(), strCustomerID.GetData());
+			_snprintf(FaceName, uLen, "%s%s%s_%s", strPath.GetData(), SPLIT_SLASH_STR, strSessionID.GetData(), strCustomerID.GetData());
 		}
 		bIsSessionChange = false;
 		bIsCustomerChange = false;

+ 2 - 4
Module/mod_guiconsole/guiconsole_define.cpp

@@ -386,8 +386,7 @@ static const std::unordered_map<LogTypeEnum, std::string> logTypeEnumToString =
 	{LogTypeEnum::Log_Warning, "Warning"},
 	{LogTypeEnum::Log_Error, "Error"},
 	{LogTypeEnum::Log_Debug, "Debug"},
-	{LogTypeEnum::Log_Fatal, "Fatal"},
-	{LogTypeEnum::Log_Notify, "Notify"}
+	{LogTypeEnum::Log_Fatal, "Fatal"}
 };
 
 static const std::unordered_map<std::string, LogTypeEnum> stringToLogTypeEnum = {
@@ -396,8 +395,7 @@ static const std::unordered_map<std::string, LogTypeEnum> stringToLogTypeEnum =
 	{"Warning", LogTypeEnum::Log_Warning},
 	{"Error", LogTypeEnum::Log_Error},
 	{"Debug", LogTypeEnum::Log_Debug},
-	{"Fatal", LogTypeEnum::Log_Fatal},
-	{"Notify", LogTypeEnum::Log_Notify}
+	{"Fatal", LogTypeEnum::Log_Fatal}
 };
 
 std::string LogTypeEnumToString(LogTypeEnum logType) {

+ 3 - 2
Module/mod_guiconsole/mod_guiconsole.cpp

@@ -443,7 +443,7 @@ std::pair<DWORD, std::string> CGUIConsoleEntity::VTMSystemControl(SpReqAnsContex
 	msg.entityName = GetEntityName();
 	msg.LogType = 1;
 	
-	//TODO: CrossPlaform 采用框架指令去关机,形成完整链路  [Gifur@2025729]
+	
 	DWORD rc = Error_Succeed;
 	if (!ctx->Req.rebootFunction.Compare("RestartApp", true))
 	{
@@ -455,7 +455,7 @@ std::pair<DWORD, std::string> CGUIConsoleEntity::VTMSystemControl(SpReqAnsContex
 	{
 		msg.message = "正在重启系统";
 		SpSendBroadcast(GetFunction(), eMsg_LogInfo, eMsgSig_LogInfo, msg);
-
+		//TODO: CrossPlaform 采用框架指令去关机,形成完整链路  [Gifur@2025729]
 #ifdef RVC_OS_WIN
 		rc = pFuncPrivilege->Reboot(RebootTrigger_ManualLocal, RebootWayEnum::RebootWay_OS);
 #else
@@ -467,6 +467,7 @@ std::pair<DWORD, std::string> CGUIConsoleEntity::VTMSystemControl(SpReqAnsContex
 	{
 		msg.message = "正在关闭系统";
 		SpSendBroadcast(GetFunction(), eMsg_LogInfo, eMsgSig_LogInfo, msg);
+		//TODO: CrossPlaform 采用框架指令去关机,形成完整链路  [Gifur@2025729]
 #ifdef RVC_OS_WIN
 		std::string cmdline = "shutdown -f -s -t 00";
 		openProcess(cmdline);

+ 7 - 25
Module/mod_healthmanager/HealthManagerFSM.cpp

@@ -5,6 +5,8 @@
 #include <regex>
 #include "SpUtility.h"
 #include "iniutil.h"
+#include "fileutil.h"
+
 #if defined(RVC_OS_WIN)
 #include <TlHelp32.h>
 #include <iphlpapi.h>
@@ -17,7 +19,7 @@
 #include <fcntl.h>
 #include <errno.h>
 #endif //RVC_OS_WIN
-
+#include <winpr/sysinfo.h>
 
 #include "mod_healthmanager.h"
 #include "publicFunExport.h"
@@ -27,15 +29,6 @@ using namespace std;
 const int MAX_AYSNC_TIMEOUT = 60000;
 const int MAX_IGNORE_TIMEOUT = 100;
 
-//TODO: CrossPlaform  [Gifur@2025730]
-unsigned long long GetLastErrorRVC() {
-#if defined(RVC_OS_WIN)
-	return GetLastError();
-#else
-	return errno;
-#endif //RVC_OS_WIN
-}
-
 enum EntityOP
 {
 	OP_STOP_ENTITY,
@@ -799,14 +792,8 @@ void CHealthManagerFSM::ToLogWarnTermAboutInfo()
 	char elapseTime[64] = {0};//使用机器启动时间秒数
 	ULONGLONG dwElapse = SP::Module::Comm::RVCGetTickCount();
 	DWORD elapseTimeTemp = dwElapse / 1000;
-	//TODO: CrossPlaform  [Gifur@2025729]
-#if defined(RVC_OS_WIN)
-	termInfo["OSTime"] = itoa(m_elapseTimeFromOSStart, xOSTime, 10);
-	termInfo["elapseTime"] = itoa(elapseTimeTemp, elapseTime, 10);
-#else
 	termInfo["OSTime"] = _itoa(m_elapseTimeFromOSStart, xOSTime, 10);
 	termInfo["elapseTime"] = _itoa(elapseTimeTemp, elapseTime, 10);
-#endif
 	
 	CSimpleStringA csRunPath("");
 	GetEntityBase()->GetFunction()->GetPath("Run", csRunPath);
@@ -846,12 +833,7 @@ bool CHealthManagerFSM::IfInUpgradeProcess()
 	ErrorCodeEnum eErr = GetEntityBase()->GetFunction()->GetPath("RunCfg", csRunCfgPath);
 	csFileName = csRunCfgPath + SPLIT_SLASH_STR + "starttime.dat";
 	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("csFileName:%s", csFileName.GetData());
-	//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
-	if (_access((const char*)csFileName, 0) == 0) {
-#else
-	if (access((const char*)csFileName, F_OK) == 0) {
-#endif
+	if (ExistsFileA(csFileName)) {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("升级切换中");
 		return true;
 	}
@@ -915,7 +897,7 @@ void CHealthManagerFSM::WKUpdatePeriod()
 			stSyncTime.wHour, stSyncTime.wMinute, stSyncTime.wSecond);
 
 	SYSTEMTIME stNow = {};
-	GetLocalTimeRVC(stNow);
+	GetLocalTime(&stNow);
 	int lastUpdateDays = sumday(stSyncTime.wYear, stSyncTime.wMonth, stSyncTime.wDay);
 	int todayDays = sumday(stNow.wYear, stNow.wMonth, stNow.wDay);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("lastUpdateDays:%d,todayDays:%d,x:%d", lastUpdateDays,todayDays, todayDays-lastUpdateDays);
@@ -1143,7 +1125,7 @@ void CHealthManagerFSM::QueryAndSendCPUInfo()
 #else
 	ifstream cpuinfo("/proc/cpuinfo");
 	if (!cpuinfo.is_open()) {
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("opening /proc/cpuinfo error:%s", strerror(GetLastErrorRVC()));
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("opening /proc/cpuinfo error:%s", strerror(errno));
 		return;
 	}
 	std::map<std::string, std::string> map_cpuInfo;
@@ -1310,7 +1292,7 @@ void CHealthManagerFSM::CheckIfPinPadOK()
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("connect to pinpad failed.error code:%d", eErrCode);
 	}
 	else
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("new PinPadService_ClientBase failed.GetLastError:%d", GetLastErrorRVC());
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("new PinPadService_ClientBase failed.GetLastError:%d", GetLastError());
 	m_ullWaitForPinPad = ullWaitEnd - ullWaitStart;
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR0402501A3").setCostTime(m_ullWaitForPinPad)("finish (or time out) check  PinPad");
 	return;

+ 45 - 76
Module/mod_healthmanager/mod_healthmanager.cpp

@@ -30,15 +30,15 @@
 #include "fileutil.h"
 #include "iniutil.h"
 #include "osutil.h"
-
-using namespace std;
+#include <winpr/sysinfo.h>
 
 #include "mod_healthmanager.h"
 #include "CommEntityUtil.hpp"
 #include "TerminalInfoQueryConn.h"
 #include "Chromium_client_g.h" //启动浏览器接口
-using namespace Chromium;
 
+using namespace std;
+using namespace Chromium;
 
 const DWORD HEALTHMANAGER_TIMER_ID = 1;
 const DWORD HEALTHMANAGER_WAIT_MAINPAGE_OPEN_TIMER_ID = 2;
@@ -85,7 +85,6 @@ namespace {
 
 	void InitializeOtherLogSwitch(CEntityBase* pEntity, const CSimpleStringA& strModuleName)
 	{
-		LOG_FUNCTION();
 		if (pEntity == NULL || strModuleName.IsNullOrEmpty()) {
 			return;
 		}
@@ -327,7 +326,7 @@ void CHealthManagerEntity::OnCheckTimeTimeout()
 		}
 	}
 	SYSTEMTIME localTime;
-	GetLocalTimeRVC(localTime);
+	GetLocalTime(&localTime);
 	//for example:[1----6]
 	//               ^ here we go
 	//in reboot period
@@ -384,28 +383,15 @@ void CHealthManagerEntity::OnCheckTimeTimeout()
 				ErrorCodeEnum eErr = GetFunction()->GetPath("RunCfg", csRunCfgPath);
 				csStartTime = csRunCfgPath + SPLIT_SLASH_STR + "starttime.dat";
 				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("csStartTime:%s", csStartTime.GetData());
-
-				//TODO: CrossPlaform  [Gifur@2025728]
-#if defined(RVC_OS_WIN)
-				if (_access((const char*)csStartTime, 0) == 0) {
-					int ret = DeleteFileA(csStartTime);//oiltmp@20240423 why don't use remove ,what's the different?
-					if (ret != 0)//删除成功,清理前次记录的guardian版本记录
-					{
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete start time file [%s] suc.", csStartTime.GetData());
-						spConfigRun->WriteConfigValue("Run", "VersionEx", "");
-					}
-					else
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete time file [%s] error.[%d]", csStartTime.GetData(), GetLastError());
-				}
-#else
-				if (access((const char*)csStartTime, F_OK) == 0) {
-					int ret = remove(csStartTime);
-					if (ret == 0)//删除成功,清理前次记录的guardian版本记录
-						spConfigRun->WriteConfigValue("Run", "VersionEx", "");
-					else
-						DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete time file [%s] error.[%d]", csStartTime.GetData(), errno);
+				if (ExistsFileA(csStartTime)) {
+						if (RemoveFileA(csStartTime))//删除成功,清理前次记录的guardian版本记录
+						{
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete start time file [%s] suc.", csStartTime.GetData());
+							spConfigRun->WriteConfigValue("Run", "VersionEx", "");
+						}
+						else
+							DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM).setAPI(__FUNCTION__)("delete time file [%s] error.[%d]", csStartTime.GetData(), GetLastError());
 				}
-#endif
 			}
 			if (iCheckGuardian > 0)
 			{
@@ -866,8 +852,7 @@ bool CHealthManagerEntity::DoRestart()
 	}
 	DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("[NonExclusive],NonGuardian=%s", csimpleStrMachineTypeCfg.GetData());
 	SYSTEMTIME localTime;
-	GetLocalTimeRVC(localTime);
-
+	GetLocalTime(&localTime);
 
 	ITimerListener *pListener = new TimerOutHelper<CHealthManagerEntity>(this, &CHealthManagerEntity::OnCheckTimeTimeout);
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("set check timer %d(ms)", HEALTHMANAGER_TIMER_INTERVAL);
@@ -897,49 +882,33 @@ bool CHealthManagerEntity::DoRestart()
 		}
 		
 	}
-	//TODO: CrossPlaform  [Gifur@2025730]
-#if defined(RVC_OS_WIN)
 	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("guardian file path [%s]", deamonBasePath.GetData());
-	HMODULE hDll = LoadLibraryA(deamonBasePath);
-	if (hDll == NULL)
+	do 
 	{
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("load guardianbase.dll failed(%d)", GetLastError());
-		return false;
-	}
+		if (!ExistsFileA(deamonBasePath)) {
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("Load guardian %s failed: no exist", (const char*)deamonBasePath);
+			return false;
+		}
+		toolkit_lib_t guardianLib;
+		int res = toolkit_dlopen(deamonBasePath, &guardianLib);
+		if (res != 0) {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("toolkit_dlopen[%s] failed with error %s.", deamonBasePath.GetData(), toolkit_dlerror(&guardianLib));
+			return false;
+		}
+		if ((res = toolkit_dlsym(&guardianLib, "ShakeHands", (void**)&m_pfShake)) != 0)
+		{
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get 'ShakeHands' Func address failed with error: %s", toolkit_dlerror(&guardianLib));
+			toolkit_dlclose(&guardianLib);
+			return false;
+		}
+		if ((res = toolkit_dlsym(&guardianLib, "UpgradeRestart", (void**)&m_pfUpgradeRestart)) != 0)
+		{
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Get 'UpgradeRestart' Func address failed with error: %s", toolkit_dlerror(&guardianLib));
+			toolkit_dlclose(&guardianLib);
+			return false;
+		}
+	} while (false);
 
-	m_pfShake = (pfShakeHands)GetProcAddress(hDll,"ShakeHands");
-	if (m_pfShake == NULL)
-	{
-		DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("get ShakeHands function address failed(%d)",GetLastError());
-		return false;
-	}
-	m_pfUpgradeRestart = (pfUpgradeRestart)GetProcAddress(hDll,"UpgradeRestart");
-	if (m_pfUpgradeRestart == NULL)
-	{
-		DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("get UpgradeRestart function address failed(%d)",GetLastError());
-		return false;
-	}
-#else
-	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("guardian file path [%s]", (LPCTSTR)deamonBasePath);
-	void* handle = dlopen(deamonBasePath, RTLD_LAZY);
-	if (handle == NULL)
-	{
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("load libGuardianBase.so failed(%d)", errno);
-		return false;
-	}
-	m_pfShake = (pfShakeHands)dlsym(handle, "ShakeHands");
-	if (m_pfShake == NULL)
-	{
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("get ShakeHands failed(%d)", GetLastError());
-		return false;
-	}
-	m_pfUpgradeRestart = (pfUpgradeRestart)dlsym(handle, "UpgradeRestart");
-	if (m_pfUpgradeRestart == NULL)
-	{
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("get UpgradeRestart failed(%d)", GetLastError());
-		return false;
-	}
-#endif
 	DbgWithLink(LOG_LEVEL_INFO,LOG_TYPE_SYSTEM)("have load guardian base file (dll/so).");
 	if (CheckGuardianIsRun(true) > 0)
 	{
@@ -963,19 +932,19 @@ bool CHealthManagerEntity::DoRestart()
 
 bool CHealthManagerEntity::SaveCurrentVersion()
 {
-	CSimpleStringA csRootVer,csRunInfo,csBakFile,csVerFile;
+	CSimpleStringA csRootVer,csRunCfg,csBakFile,csVerFile;
 	ErrorCodeEnum eErr;
 	if ((eErr = GetFunction()->GetPath("RootVer",csRootVer)) != Error_Succeed)
 	{
 		DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("Get version path failed(%s).", SpStrError(eErr));
 		return false;
 	}
-	if ((eErr = GetFunction()->GetPath("RunInfo",csRunInfo)) != Error_Succeed)
+	if ((eErr = GetFunction()->GetPath("RunCfg", csRunCfg)) != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("get runinfo path failed(%s)", SpStrError(eErr));
+		DbgWithLink(LOG_LEVEL_ERROR,LOG_TYPE_SYSTEM)("get RunCfg path failed(%s)", SpStrError(eErr));
 		return false;
 	}
-	csBakFile = csRunInfo + SPLIT_SLASH_STR "runcfg" SPLIT_SLASH_STR "version.dat";
+	csBakFile = csRunCfg + SPLIT_SLASH_STR + "version.dat";
 	ofstream outfile (csBakFile,std::ofstream::binary);
 
 	CSmartPointer<IConfigInfo> spConfigRun;
@@ -1002,16 +971,16 @@ bool CHealthManagerEntity::SaveCurrentVersion()
 }
 bool CHealthManagerEntity::SaveFrameStartTimeForUpgrade()
 {
-	CSimpleStringA csRunInfo,csBakFile;
+	CSimpleStringA csRunCfg,csBakFile;
 	ErrorCodeEnum eErr;
 
-	if ((eErr = GetFunction()->GetPath("RunInfo",csRunInfo)) != Error_Succeed)
+	if ((eErr = GetFunction()->GetPath("RunCfg",csRunCfg)) != Error_Succeed)
 	{
-		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("get runinfo path failed(%s)", SpStrError(eErr));
+		DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("get RunCfg path failed(%s)", SpStrError(eErr));
 		return false;
 	}
 
-	csBakFile = csRunInfo + SPLIT_SLASH_STR "runcfg" SPLIT_SLASH_STR "starttime.dat";
+	csBakFile = csRunCfg + SPLIT_SLASH_STR + "starttime.dat";
 	ofstream outfile (csBakFile,std::ofstream::binary);
 
 	CSystemRunInfo sysRunInfo;

+ 0 - 17
Module/mod_healthmanager/mod_healthmanager.h

@@ -17,10 +17,8 @@ using namespace HealthManager;
 using namespace std;
 using namespace UpgradeManager;
 
-
 #include "GuardianBase.h"
 typedef int (*pfShakeHands)(WorkStateEnum &eState);
-
 typedef int (*pfPushUpdateTask)(const char *pszPackName);
 typedef bool (*pfIsInstalling)();
 typedef int (*pfUpgradeRestart)(const DWORD dwParam1,const DWORD dwParam2);
@@ -45,21 +43,6 @@ struct ModuleRunInfo
 	int abnormalCount;
 	bool bAbnormalBusy;
 };
-struct RestartModeInfo
-{
-	DWORD dwTimes;
-	DWORD dwInternal;
-};
-
-#define MACSESION 6
-
-
-#include <winpr/sysinfo.h>
-static void GetLocalTimeRVC(SYSTEMTIME& stTime)
-{
-	GetLocalTime(&stTime);
-}
-
 
 class HealthManagerSession : public HealthManagerService_ServerSessionBase
 {

+ 5 - 22
Module/mod_heartbeat/HeartBeatFSM.cpp

@@ -4,6 +4,7 @@
 #include <regex>
 #include "json/json.h"
 #include <string.h>
+#include <winpr/crt.h>
 
 using namespace CardReadAdapter;
 #include "EventCode.h"
@@ -687,12 +688,7 @@ void CHeartBeatFSM::LocalPreOnline(int slot, CSimpleStringA fromTermNo,CSimpleSt
 	req.businessData = data;
 	char buf[16];
 	ZeroMemory(buf, sizeof(buf));
-	//TODO: CrossPlaform  [Gifur@2025729]
-#ifdef RVC_OS_WIN
-	itoa(slot, buf, 10);
-#else
 	_itoa(slot, buf, 10);
-#endif	
 	CSimpleStringA kaku("kaku#");
 	req.module = 1;
 	req.reserved2.Init(2);
@@ -1194,6 +1190,7 @@ void HeartBeatConnection::SendCardActive(const int type,const int slot,unsigned
 	CSimpleStringA inParm = CSimpleStringA::Format("SendCardActive,type:%d, slot:%d, errCode:%d, fromTerm:%s, termNo:%s, findCard:%d, cardPos:%d, dataSize:%d,errCSCode:%d",
 													type, slot, errCode, m_TerminalNo.GetData(), termNo, findCard, cardPos, dataSize, errCSCode);
 	LogWarn(Severity_Low, Error_Unexpect, HeartBeat_UserErrorCode_SendCardActive_InParam, inParm.GetData());
+	//TODO: 下面这两部分,绝大部分逻辑类似,为什么不把相同的部分抽出来???  [Gifur@2025821]
 	//发起跨机调用包
 	if (type == 0||type==10)
 	{
@@ -1202,19 +1199,12 @@ void HeartBeatConnection::SendCardActive(const int type,const int slot,unsigned
 		m_pEntity->GetFunction()->GetSystemStaticInfo(sysSInfo);
 		req.type = type;
 		req.slot = slot;
-
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-		strncpy_s(req.FromTerminalNo, m_TerminalNo.GetData(), m_TerminalNo.GetLength());
-		strncpy_s(req.Account, account, accSize);
-		strncpy_s(req.TerminalNo, termNo, strlen(termNo));
-		strncpy_s(req.Param2, data, dataSize);
-#else
+		
 		strcpy_s(req.FromTerminalNo, sizeof(req.FromTerminalNo), m_TerminalNo.GetData());
 		strcpy_s(req.Account, accSize, account);
 		strcpy_s(req.TerminalNo, sizeof(req.TerminalNo), termNo);
 		strcpy_s(req.Param2, dataSize, data);
-#endif //RVC_OS_WIN		
+
 		CSmartPointer<IPackage> pkt = CreateNewPackage("CARDACT");
 		pkt->AddStruct("INSREQX", false, false, (LPBYTE)&req, sizeof(CardActiveReq));
 
@@ -1232,18 +1222,11 @@ void HeartBeatConnection::SendCardActive(const int type,const int slot,unsigned
 		req.cardPos = cardPos;
 		req.reserved1 = errCSCode;
 
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-		strncpy_s(req.FromTerminalNo, m_TerminalNo.GetData(), m_TerminalNo.GetLength());
-		strncpy_s(req.Account, account, accSize);
-		strncpy_s(req.TerminalNo, termNo, strlen(termNo));
-		strncpy_s(req.Param2, data, dataSize);
-#else
 		strcpy_s(req.FromTerminalNo, sizeof(req.FromTerminalNo), m_TerminalNo.GetData());
 		strcpy_s(req.Account, accSize, account);
 		strcpy_s(req.TerminalNo, sizeof(req.TerminalNo), termNo);
 		strcpy_s(req.Param2, dataSize, data);
-#endif //RVC_OS_WIN		
+
 		CSmartPointer<IPackage> pkt = CreateNewPackage("CARDACT");
 		pkt->AddStruct("INSREQX", false, false, (LPBYTE)&req, sizeof(CardActiveReq));
 

+ 5 - 110
Module/mod_heartbeat/HeartBeatFSM.h

@@ -36,12 +36,7 @@ typedef DWORD (__stdcall *LpRestorePerfRegistryFromFile)(LPCWSTR szFileName, LPC
 struct HandReq
 {
 	char TerminalNo[16];
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-	unsigned long ip;
-#else
-	uint32_t  ip;
-#endif	
+	uint32_t ip;
 	char WarningLevel;
 	char RunState;
 	char CustomerHandle;
@@ -66,35 +61,11 @@ struct HandErrListReq
 //[StructName("HANDANS")]
 struct HandAns
 {
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN	
-	unsigned long EventCode;
-#else
 	uint32_t EventCode;
-#endif	
 	char param1[16];
 	//int count;
 };
-#ifdef RVC_OS_WIN
-struct CardActiveReq
-{
-	unsigned long type;
-	unsigned long slot;
-	unsigned long reserved1;
-	unsigned long reserved2;
-	char Account[32];
-	char FromTerminalNo[16];
-	char TerminalNo[16];
-	unsigned long EvtCode;
-	unsigned long ErrCode;
-	unsigned long findCard;
-	unsigned long cardPos;
-	char Param1[16];
-	char Param2[1024];
-	char Reserved3[128];
-	char Reserved4[128];
-};
-#else
+
 struct CardActiveReq
 {
 	uint32_t type;
@@ -113,7 +84,7 @@ struct CardActiveReq
 	char Reserved3[128];
 	char Reserved4[128];
 };
-#endif
+
 #pragma pack()
 enum EvtType
 {
@@ -130,43 +101,7 @@ enum EvtType
 	USER_EVT_CARD_ACTIVE,
 	USER_EVT_CARD_ACTIVE_FINISHED,
 };
-struct TerminalInfo
-{
-	char TerminalNo[16];
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-	unsigned long ip;
-#else
-	uint32_t ip;
-#endif
-	char WarningLevel;
-	char RunState;
-	char CustomerHandle;
-	char CallState;
-	char LocalMaintain;
-	char RemoteMaintain;
-	char TermStage;
-	char PreTermStage;
-	char NetState;
-	char PreNetState;
-};
 
-// Terminal Performance Information Struct[Josephus in 9:09:47 2016/4/23]
-#ifdef RVC_OS_WIN
-struct TermianlCounter
-{
-	
-	DWORD			serverIP;
-	unsigned short	totalMem; //MB
-	unsigned short	freeMem;  //MB
-	unsigned short	procNum;
-	unsigned short	threadNum;
-	DWORD			handleNum;
-	DWORD			freeDisk; //MB
-	char			osStartTime[22];
-	unsigned short	cpuLoad;
-};
-#else
 struct TermianlCounter
 {
 
@@ -180,7 +115,7 @@ struct TermianlCounter
 	char			osStartTime[22];
 	uint16_t	cpuLoad;
 };
-#endif
+
 namespace HttpStruct
 {
 	//发送心跳接口
@@ -198,47 +133,6 @@ namespace HttpStruct
 		}
 	};
 }
-struct CShakeHandVO
-{
-	string terminalNo;
-	long ip;
-	string warningLevel;
-	string runState;
-	string customerHandle;
-	string callState;
-	string localMaintain;
-	string remoteMaintain;
-	string termStage;
-	string preTermStage;
-	string netState;
-	string preNetState;
-};
-struct CShakeHandSystemInfo
-{
-	long serverIP;
-	long totalMem;
-	long freeMem;
-	long procNum;
-	long threadNum;
-	long handleNum;
-	long freeDisk;
-	string osStartTime;
-	long cpuLoad;
-};
-
-struct CShakeHandErrorVO
-{
-	long warnLevel;
-	string reserved1;
-	string errList;
-};
-struct CHandShakeHttp
-{	//存储到运行时
-	CShakeHandVO shakehandvo;
-	CShakeHandSystemInfo shakeHandSystemInfo;
-	CShakeHandErrorVO shakeHandErrorVO;
-};
-
 
 enum InstructionType
 {
@@ -260,6 +154,7 @@ enum InstructionType
 	INC_DEVICE_UNLOCK,
 	INC_DEVICE_KICK_OFF,
 };
+
 class CHeartBeatEntity;
 class CHeartBeatFSM;
 class InstructionEvent : public FSMEvent

+ 7 - 12
Module/mod_interactivecontrol/mod_interactivecontrol.cpp

@@ -10,15 +10,19 @@
 #define MAX_PATH 260
 #endif
 
+#include <winpr/string.h>
+#include <winpr/sysinfo.h>
+
+
 #include "../mod_sipphone/SIPPhone_client_g.h"
 #include "../mod_sipphone/SIPPhone_def_g.h"
-using namespace SIPPhone;
-		
 #include "../mod_SalesRecorder/Event.h"
 #include "../mod_mediacontroller/Event.h"
 #include "../mod_sipphone/Event.h"
 #include "../mod_facetracking/Event.h"
 
+using namespace SIPPhone;
+
 struct CRecvValue
 {
 	int nValue;
@@ -1624,23 +1628,14 @@ void CITCtrlEntity::OnSalesRecordingFailed(const char* pszFailedMsg)
 
 void CITCtrlEntity::OnFaceTrackingMsg(const char* pszFaceTrackingMsg)
 {
-#ifdef DEVOPS_ON_PRD
-#else
+#ifndef DEVOPS_ON_PRD
 	char strTime[MAX_PATH] = { 0 };
 	CSimpleStringA strValue;
 	GetFunction()->GetSysVar("ActiveTrackingCamera", strValue); // E or O
 	CSimpleStringA strMsg = CSimpleStringA::Format("[%s] ", strValue.GetData());
-	//TODO: CrossPlaform  [Gifur@202584]
-#ifdef RVC_OS_WIN
 	SYSTEMTIME nowTime;                             // 系统时间结构体
 	GetLocalTime(&nowTime);
 	_snprintf(strTime, MAX_PATH, "(%02d:%02d:%02d)", nowTime.wHour, nowTime.wMinute, nowTime.wSecond);
-#else
-	struct tm* pst = NULL;
-	time_t t = time(NULL);
-	pst = localtime(&t);
-	snprintf(strTime, MAX_PATH, "(%02d:%02d:%02d)", pst->tm_hour, pst->tm_min, pst->tm_sec);
-#endif // RVC_OS_WIN
 	strMsg += pszFaceTrackingMsg;
 	strMsg += strTime;
 	FaceTrackingMsg evt;

+ 5 - 13
Module/mod_livenessdetection/RvcFaceVideo.cpp

@@ -3,15 +3,7 @@
 #include <stdio.h>
 #include <assert.h>
 #include <string.h>
-
-#ifndef rvc_snprintf
-#ifdef _WIN32
-#define rvc_snprintf _snprintf
-#else
-#define rvc_snprintf snprintf
-#endif // _WIN32
-
-#endif // rvc_snprintf
+#include <winpr/string.h>
 
 RvcFaceVideo::RvcFaceVideo(void)
 {
@@ -81,19 +73,19 @@ int RvcFaceVideo::InitVideoQueue(const char* strenvqueue, const char* stroptqueu
 	int iRet = -1;
 
 	if (NULL != strenvqueue){
-		rvc_snprintf(m_env_videoname, MAX_PATH, "%s", strenvqueue);
+		_snprintf(m_env_videoname, MAX_PATH, "%s", strenvqueue);
 	}
 
 	if (NULL != stroptqueue){
-		rvc_snprintf(m_opt_videoname, MAX_PATH, "%s", stroptqueue);
+		_snprintf(m_opt_videoname, MAX_PATH, "%s", stroptqueue);
 	}
 
 	if (NULL != strpreview_envqueue){
-		rvc_snprintf(m_preview_env_videoname, MAX_PATH, "%s", strpreview_envqueue);
+		_snprintf(m_preview_env_videoname, MAX_PATH, "%s", strpreview_envqueue);
 	}
 
 	if (NULL != strpreview_optqueue){
-		rvc_snprintf(m_preview_opt_videoname, MAX_PATH, "%s", strpreview_optqueue);
+		_snprintf(m_preview_opt_videoname, MAX_PATH, "%s", strpreview_optqueue);
 	}
 
 	if (strlen(m_env_videoname)){

+ 0 - 153
Module/mod_localmediaplay/AdvertManage/BaseFun.cpp

@@ -19,76 +19,6 @@
 #endif // !RVC_MAX_INI_LEN
 
 
-void split(const string& src, const string& separator, vector<string>& dest)
-{
-	string str = src;
-	string substring;
-	string::size_type start = 0, index;
-
-	do
-	{
-		index = str.find_first_of(separator, start);
-		if (index != string::npos)
-		{
-			substring = str.substr(start, index - start);
-			dest.push_back(substring);
-			start = str.find_first_not_of(separator, index);
-			if (start == string::npos) return;
-		}
-	} while (index != string::npos);
-
-	//the last token
-	substring = str.substr(start);
-	dest.push_back(substring);
-}
-
-bool  checkDirExist(const string &strPath)
-{
-	if (ExistsDir(strPath.c_str())){
-		return true;
-	}
-	else{
-		return false;
-	}
-}
-
-
-bool checkFileExist(string fileName)
-{
-	if (ExistsFile(fileName.c_str())){
-		return true;
-	}
-	else{
-		return false;
-	}
-}
-
-//TODO: CrossPlaform  [Gifur@2025730]
-void Wchar_tToString(std::string& szDst, wchar_t *wchar)
-{
-#ifdef RVC_OS_WIN
-	wchar_t* wText = wchar;
-	DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, wText, -1, NULL, 0, NULL, FALSE);// WideCharToMultiByte的运用
-	char* psText; // psText为char*的临时数组,作为赋值给std::string的中间变量
-	psText = new char[dwNum];
-	WideCharToMultiByte(CP_OEMCP, NULL, wText, -1, psText, dwNum, NULL, FALSE);// WideCharToMultiByte的再次运用
-	szDst = psText;// std::string赋值
-	delete[]psText;// psText的清除
-#else
-	std::string curLocale = setlocale(LC_ALL, NULL);        // curLocale = "C";
-	setlocale(LC_ALL, "chs");
-	size_t _Dsize = 2 * wcslen(wchar) + 1;
-	char* _Dest = new char[_Dsize];
-	memset(_Dest, 0, _Dsize);
-	wcstombs(_Dest, wchar, _Dsize);
-	std::string result = _Dest;
-	delete[]_Dest;
-	setlocale(LC_ALL, curLocale.c_str());
-	szDst = result;
-#endif 
-}
-
-//TODO: CrossPlaform  [Gifur@2025730]
 void StringToWstring(std::wstring& szDst, std::string str)
 {
 #ifdef RVC_OS_WIN
@@ -114,86 +44,3 @@ void StringToWstring(std::wstring& szDst, std::string str)
 #endif 
 }
 
-//TODO: CrossPlaform  [Gifur@2025730]
-bool createDir(const string &filePath)
-{
-#ifdef RVC_OS_WIN
-	return 0 == _mkdir(filePath.c_str());
-#else
-	if (CreateDirRecursive(filePath.c_str()))
-	{
-		return true;
-	}
-	else
-	{
-		return false;
-	}
-#endif 
-}
-
-//TODO: CrossPlaform 采用框架统一的函数  [Gifur@2025728]
-BOOL IsDirectory(const char *pDir)
-{
-	char szCurPath[MAX_PATH*2] = {0};
-#ifdef RVC_OS_WIN
-	_snprintf(szCurPath, MAX_PATH * 2, "%s//*", pDir);
-
-	WIN32_FIND_DATAA FindFileData = {0};
-	//ZeroMemory(&FindFileData, sizeof(WIN32_FIND_DATAA));
-
-	HANDLE hFile = FindFirstFileA(szCurPath, &FindFileData); /**< find first file by given path. */
-
-	if (hFile == INVALID_HANDLE_VALUE)
-	{
-		FindClose(hFile);
-		return FALSE; /** 如果不能找到第一个文件,那么没有目录 */
-	}
-	else
-	{
-		FindClose(hFile);
-		return TRUE;
-	}
-
-#else
-	snprintf(szCurPath, MAX_PATH * 2, "%s//*", pDir);
-	struct stat buf;
-	if (0 == stat(szCurPath, &buf))
-	{
-		return S_ISDIR(buf.st_mode);
-	}
-	else
-	{
-		return FALSE;
-	}
-#endif // RVC_OS_WIN
-}
-
-
-
-void getDirs(string path, vector<string> &ownname)
-{
-#ifdef RVC_OS_WIN
-	long   hFile = 0;
-	struct _finddata_t fileinfo;
-	string p;
-	if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)
-	{
-		do
-		{
-			//如果是目录加入列表  
-			if ((fileinfo.attrib & _A_SUBDIR) && strcmp(fileinfo.name, ".") && strcmp(fileinfo.name, ".."))
-				ownname.push_back(fileinfo.name);
-		} while (_findnext(hFile, &fileinfo) == 0);
-		_findclose(hFile);
-	}
-#else
-	array_header_t* subdirs = fileutil_get_sub_files(path.c_str());
-	int i;
-	for (i = 0; i < subdirs->nelts; ++i) {
-		char* strsubdir = ARRAY_IDX(subdirs, i, char*);
-		ownname.push_back(strsubdir);
-	}
-
-#endif // RVC_OS_WIN
-}
-

+ 2 - 7
Module/mod_localmediaplay/AdvertManage/BaseFun.h

@@ -10,11 +10,6 @@
 
 using namespace std;
 
-void split(const string& src, const string& separator, vector<string>& dest);
-bool checkDirExist(const string &strPath);
-bool checkFileExist(string fileName);
-void getDirs(string path, vector<string> &ownname);
-bool createDir(const string &filePath);
-bool removeDir(const string &filePaht);
-void Wchar_tToString(std::string& szDst, wchar_t *wchar);
+//TODO: CrossPlaform 这个引入的库文件建议废除,用应用框架提供的替代  [Gifur@2025822]
+
 void StringToWstring(std::wstring& szDst, std::string str);

+ 12 - 59
Module/mod_localmediaplay/AdvertManage/MediaManage.cpp

@@ -7,15 +7,13 @@
 mediaManage::mediaManage()
 {
 	m_curParse.clear();
-	if (checkDirExist(DEFAULT_RESOURSE_PATH))
+	if (ExistsDirA(DEFAULT_RESOURSE_PATH))
 	{
-		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Set defaultAdvertPath:%s, defaultDownloadPath:%s", DEFAULT_RESOURSE_PATH, DEFAULT_DOWNLOAD_PATH);
 		setDefaultAddvertPath(string(DEFAULT_RESOURSE_PATH));
 		setDefaultDownloadPath(string(DEFAULT_DOWNLOAD_PATH));
 	}
 	else
 	{
-		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Set defaultAdvertPath:%s, defaultDownloadPath:%s", DEFAULT_RESOURSE_PATH_C, DEFAULT_DOWNLOAD_PATH_C);
 		setDefaultAddvertPath(string(DEFAULT_RESOURSE_PATH_C));
 		setDefaultDownloadPath(string(DEFAULT_DOWNLOAD_PATH_C));
 	}
@@ -42,16 +40,6 @@ int mediaManage::GetPlayListByLocal(vector<ResourceParse>& resourceList)
 {
 	int iNum = 0;
 	resourceList.clear();
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-	for each (auto i in m_localList)
-	{
-		if (checkInVaildTime(i.vaildTime, true) && checkInPlayTime(i.playTime, true)) {
-			resourceList.push_back(i);
-			iNum++;
-		}
-	}
-#else
 	for (vector<ResourceParse>::iterator it = m_localList.begin(); it != m_localList.end(); it++)
 	{
 		if (checkInVaildTime(it->vaildTime, true) && checkInPlayTime(it->playTime, true)) {
@@ -59,9 +47,6 @@ int mediaManage::GetPlayListByLocal(vector<ResourceParse>& resourceList)
 			iNum++;
 		}
 	}
-
-#endif // _WIN32
-
 	return iNum;
 }
 
@@ -72,7 +57,6 @@ int mediaManage::GetPlayListByLocal(CResourceParse** ResourceArr, int iSize)
 
 	for (vector<ResourceParse>::iterator it = m_localList.begin(); it != m_localList.end() && iNum < iSize; it++)
 	{
-		//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("new deep copy play extend %c:%s, %s, %s, %s", it->type, it->resourcePath.c_str(), it->videoNames.c_str(), it->vaildTime.c_str(), it->playTime.c_str());
 		if (checkInVaildTime(it->vaildTime, true) && checkInPlayTime(it->playTime, true)) {
 			CResourceParse* pNode = new CResourceParse();
 			pNode->type = it->type;
@@ -106,10 +90,6 @@ int mediaManage::GetPlayListByLocal(CResourceParse** ResourceArr, int iSize)
 				memcpy(pNode->playTime, it->playTime.c_str(), it->playTime.length());
 			}
 			ResourceArr[iNum++] = pNode;
-			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("aftercopy play extend pNode->type=0x%08x:pNode->presourcePath=0x%08x, pNode->pvideoNames=0x%08x, pNode->pvaildTime=0x%08x, pNode->playTime=0x%08x", pNode->type, pNode->presourcePath, pNode->pvideoNames, pNode->pvaildTime, pNode->playTime);
-			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("aftercopy play extend %c:%s, %s, %s, %s", pNode->type, pNode->presourcePath, pNode->pvideoNames, pNode->pvaildTime, pNode->playTime);
-			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s:%d    ResourceList[%d] address is 0x%08x, pNode address is 0x%08x.", __FUNCTION__, __LINE__, uNum-1, ResourceArr[uNum-1], pNode);
-			
 		}
 	}
 
@@ -174,18 +154,11 @@ bool mediaManage::AddResourceList(vector<string> resourceList)
 		StringToWstring(wfileName, fileName);
 		StringToWstring(wdirPath, dirPath);
 
-		if (!checkFileExist(dirPath))
+		if (!ExistsFileA(dirPath.c_str()))
 		{
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("dir %s not exist!", dirPath.c_str());
 			continue;
 		}
-/*
-		if (!checkFileExist(dirPath) && createDir(dirPath) && !Unzip2Folder((BSTR)wfileName.c_str(), (BSTR)wdirPath.c_str()))
-		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("unzip %s to %s fail!", fileName.c_str(), dirPath.c_str());
-			continue;
-		}
-		*/
 		string configPath = "";
 		if (!findVaildConfig(dirPath, configPath))
 		{
@@ -219,14 +192,14 @@ void mediaManage::InitResourceListByLocal()
 
 	vector<ResourceParse> headList, branchList, networkList, allList;
 
-	if (!checkFileExist(headFile)) {
+	if (!ExistsFileA(headFile.c_str())) {
 		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("head config %s not exist!", headFile.c_str());
 	}
 	else if (!parseResourceIni(headFile.c_str(), headList)) {
 		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("parse head config %s fail!", headFile.c_str());
 	}
 
-	if (!checkFileExist(branchFile)) {
+	if (!ExistsFileA(branchFile.c_str())) {
 		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("branch config %s not exist!", branchFile.c_str());
 	}
 	else if (!parseResourceIni(branchFile.c_str(), branchList)) {
@@ -234,7 +207,7 @@ void mediaManage::InitResourceListByLocal()
 	}
 
 
-	if (!checkFileExist(networkFile)) {
+	if (!ExistsFileA(networkFile.c_str())) {
 		//DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("network config %s not exist!", networkFile.c_str());
 	}
 	else if (!parseResourceIni(networkFile.c_str(), networkList)) {
@@ -248,40 +221,20 @@ void mediaManage::InitResourceListByLocal()
 	uint32_t unetworkList = 0;
 	bool blog = false;
 
-
-	//TODO: CrossPlaform  [Gifur@2025729]
-#ifdef RVC_OS_WIN
-	for each (auto i in headList) {
-		m_localList.push_back(i);
-		uheadList++;
-	}
-		
-	for each (auto i in branchList) {
-		m_localList.push_back(i);
-		ubranchList++;
-	}
-
-	for each (auto i in networkList) {
-		m_localList.push_back(i);
-		unetworkList++;
-	}
-		
-#else
-	for (vector<ResourceParse>::iterator it = headList.begin(); it < headList.end(); ++it){
+	for (vector<ResourceParse>::iterator it = headList.begin(); it < headList.end(); ++it) {
 		m_localList.push_back(*it);
 		uheadList++;
 	}
 
-	for (vector<ResourceParse>::iterator it = branchList.begin(); it < branchList.end(); ++it){
+	for (vector<ResourceParse>::iterator it = branchList.begin(); it < branchList.end(); ++it) {
 		m_localList.push_back(*it);
 		ubranchList++;
 	}
 
-	for (vector<ResourceParse>::iterator it = networkList.begin(); it < networkList.end(); ++it){
+	for (vector<ResourceParse>::iterator it = networkList.begin(); it < networkList.end(); ++it) {
 		m_localList.push_back(*it);
 		unetworkList++;
 	}
-#endif // RVC_OS_WIN
 
 	if (m_ilist_size != m_localList.size()) {
 		m_ilist_size = (int)m_localList.size();
@@ -334,17 +287,17 @@ bool mediaManage::findVaildConfig(string dirPath, string &configPath)
 	string branchFile = dirPath + SPLIT_SLASH_STR + BRANCHINI_NAME;
 	string networkFile = dirPath + SPLIT_SLASH_STR + NETWORKINI_NAME;
 
-	if (checkFileExist(headFile))
+	if (ExistsFileA(headFile.c_str()))
 	{
 		configPath = headFile;
 		return true;
 	}
-	else if (checkFileExist(branchFile))
+	else if (ExistsFileA(branchFile.c_str()))
 	{
 		configPath = branchFile;
 		return true;
 	}
-	else if (checkFileExist(networkFile))
+	else if (ExistsFileA(networkFile.c_str()))
 	{
 		configPath = networkFile;
 		return true;
@@ -355,5 +308,5 @@ bool mediaManage::findVaildConfig(string dirPath, string &configPath)
 
 bool mediaManage::IsResourceExist(string strPath, string strName)
 {
-	return checkFileExist(strPath + strName);
+	return ExistsFileA((strPath + strName).c_str());
 }

+ 7 - 86
Module/mod_localmediaplay/AdvertManage/resourceIniParse.cpp

@@ -10,12 +10,14 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
-#endif 
+#endif
+#include <winpr/string.h>
+#include "SpUtility.h"
 
+//TODO: CrossPlaform 这个引入的库文件建议废除,用应用框架提供的替代  [Gifur@2025822]
 
 int ReadInterger(LPCTSTR szSection, LPCTSTR szKey, LPCTSTR szFileName, int iDefaultValue)
 {
-	//TODO: CrossPlaform  [Gifur@2025730]
 #ifdef RVC_OS_WIN
 	return GetPrivateProfileInt(szSection, szKey, iDefaultValue, szFileName);
 #else
@@ -46,7 +48,6 @@ bool ReadBoolean(LPCTSTR szSection, LPCTSTR szKey, LPCTSTR szFileName, bool bDef
 string ReadString(LPCTSTR szSection, LPCTSTR szKey, LPCTSTR szFileName, LPCTSTR strDefaultValue)
 {
 	TCHAR  tempResult[MAX_PATH*2] = {0};
-	//TODO: CrossPlaform  [Gifur@2025730]
 #ifdef RVC_OS_WIN
 	GetPrivateProfileString(szSection, szKey, strDefaultValue, tempResult, MAX_PATH * 2, szFileName);
 #else
@@ -57,44 +58,6 @@ string ReadString(LPCTSTR szSection, LPCTSTR szKey, LPCTSTR szFileName, LPCTSTR
 	return string(tempResult);
 }
 
-void WriteBoolean(LPCTSTR szSection, LPCTSTR szKey, BOOL szBool, LPCTSTR szFileName)
-{
-	TCHAR szDefault[MAX_PATH] = {0};
-#ifdef RVC_OS_WIN
-	_stprintf_s(szDefault, _T("%d"), szBool);
-	WritePrivateProfileString(szSection, szKey, szDefault, szFileName);
-#else
-	snprintf(szDefault, MAX_PATH, "%d", szBool);
-	inifile_write_str(szSection, szKey, szDefault, szFileName);
-	//WritePrivateProfileStringEx(szSection, szKey, szDefault, szFileName);
-#endif 
-}
-
-void WriteInt(LPCTSTR szSection, LPCTSTR szKey, int szInt, LPCTSTR szFileName)
-{
-	TCHAR szDefault[MAX_PATH] = { 0 };
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-	_stprintf_s(szDefault, _T("%d"), szInt);
-	WritePrivateProfileString(szSection, szKey, szDefault, szFileName);
-#else
-	//snprintf(szDefault, MAX_PATH, "%d", szInt);
-	inifile_write_int(szFileName,szSection, szKey, szInt);
-	//WritePrivateProfileStringEx(szSection, szKey, szDefault, szFileName);
-#endif 
-}
-
-void WriteString(LPCTSTR szSection, LPCTSTR szKey, LPCTSTR szString, LPCTSTR szFileName)
-{
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-	WritePrivateProfileString(szSection, szKey, szString, szFileName);
-#else
-	inifile_write_str(szSection, szKey, szString, szFileName);
-	//WritePrivateProfileStringEx(szSection, szKey, szString, szFileName);
-#endif 
-}
-
 bool checkInPlayTime(string playTime, bool checkCurTime)
 {
 	//get localTime
@@ -113,13 +76,7 @@ bool checkInPlayTime(string playTime, bool checkCurTime)
 	t_beginHour = t_beginMin = t_endHour = t_endMin = 0;
 	try
 	{
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 		sscanf_s(playTime.c_str(), "%d:%d-%d:%d", &t_beginHour, &t_beginMin, &t_endHour, &t_endMin);
-#else
-		sscanf(playTime.c_str(), "%d:%d-%d:%d", &t_beginHour, &t_beginMin, &t_endHour, &t_endMin);
-#endif // RVC_OS_WIN
-
 		long curTime = local.tm_hour * 3600 + local.tm_min * 60 + local.tm_sec;
 		long beginTime = t_beginHour * 3600 + t_beginMin * 60;
 		long endTime = t_endHour * 3600 + t_endMin * 60 + 60;
@@ -154,37 +111,22 @@ bool checkInVaildTime(string vaildTime, bool checkCurData)
 #endif // RVC_OS_WIN
 
 	vector<string> dateList;
-	split(vaildTime, ",", dateList);
+	SP::Utility::split2(vaildTime, ",", dateList);
 	try {
 		for (vector<string>::iterator i = dateList.begin(); i != dateList.end(); i++)
 		{
 			tm beginData = { 0 }, endData = {0};
 			int tempYear, tempMon, tempDay, tempYear2, tempMon2, tempDay2;
 			tempYear = tempMon = tempDay = tempYear2 = tempMon2 = tempDay2 = 0;
-			//ZeroMemory(&beginData, sizeof(tm));
-			//ZeroMemory(&endData, sizeof(tm));
 			if (-1 == i->find('-'))	//单日期
 			{
-				//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 				sscanf_s(i->c_str(), "%d/%d/%d", &tempYear, &tempMon, &tempDay);
-#else
-				sscanf(i->c_str(), "%d/%d/%d", &tempYear, &tempMon, &tempDay);
-#endif // RVC_OS_WIN
-
-				
 				if (checkCurData && (local.tm_year + 1900 == tempYear) && (local.tm_mon + 1 == tempMon) && (local.tm_mday == tempDay))
 					return true;//find the data
 			}
 			else
 			{
-				//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 				sscanf_s(i->c_str(), "%d/%d/%d-%d/%d/%d", &tempYear, &tempMon, &tempDay, &tempYear2, &tempMon2, &tempDay2);
-#else
-				sscanf(i->c_str(), "%d/%d/%d-%d/%d/%d", &tempYear, &tempMon, &tempDay, &tempYear2, &tempMon2, &tempDay2);
-#endif // RVC_OS_WIN
-
 				beginData.tm_year = tempYear - 1900;
 				beginData.tm_mon = tempMon - 1;
 				beginData.tm_mday = tempDay;
@@ -213,6 +155,7 @@ bool checkInVaildTime(string vaildTime, bool checkCurData)
 
 bool parseResourceIni(const char* filePath, vector<ResourceParse> &ret)
 {
+	/** 这段代码的意义在哪?如果只是判断文件在不在,直接用ExistFileA的跨平台函数即可  [Gifur@2025822]*/
 #ifdef RVC_OS_WIN
 	if (INVALID_FILE_ATTRIBUTES == GetFileAttributes(filePath))
 	{
@@ -237,14 +180,7 @@ bool parseResourceIni(const char* filePath, vector<ResourceParse> &ret)
 	{
 		//get section name
 		TCHAR sectionMedia[30] = STR_NULL;
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-		_stprintf_s(sectionMedia, _T("%s%d"), SECTION_MEDIA, i);
-#else
-		snprintf(sectionMedia, 30, "%s%d", SECTION_MEDIA, i);
-#endif // RVC_OS_WIN
-
-		//ResourceParse curResource;
+		sprintf_s(sectionMedia, 30, "%s%d", SECTION_MEDIA, i);
 		ResourceParse* item = new ResourceParse();
 		//获取type属性及校验
 		string type = ReadString(sectionMedia, MEDIA_TYPE, filePath, STR_NULL);
@@ -271,18 +207,3 @@ bool parseResourceIni(const char* filePath, vector<ResourceParse> &ret)
 		return false;
 	return true;
 }
-
-
-int ReleaseCResourceArrs(CResourceParse** resourceArr, uint32_t uSize)
-{
-	int iRet = 0;
-	for (int i = 0; i < uSize; i++) {
-		if (resourceArr && resourceArr[i]){
-			CResourceParse* pData = resourceArr[i];
-			delete pData;
-			resourceArr[i] = NULL;
-		}
-	}
-
-	return iRet;
-}

+ 0 - 3
Module/mod_localmediaplay/AdvertManage/resourceIniParse.h

@@ -126,9 +126,6 @@ typedef struct rvcResourceParse_s {
 	char strResourcePath[MAX_PATH];
 }rvcResourceParse_t;
 
-
-
 bool checkInPlayTime(string playTime, bool checkCurTime = false);
 bool parseResourceIni(const char* filePath, vector<ResourceParse> &ret);
 bool checkInVaildTime(string vaildTime, bool checkCurData = false);
-int ReleaseCResourceArrs(CResourceParse** resourceArr, uint32_t uSize);

+ 11 - 73
Module/mod_localmediaplay/mod_localmediaplay.cpp

@@ -8,6 +8,8 @@
 #include <stdint.h>
 #include "../mod_interactivecontrol/Event.h"
 #include "Event.h"
+#include <winpr/string.h>
+#include <winpr/sysinfo.h>
 
 #ifndef RVC_MIN_LOCALPLAYER_TIME
 #define RVC_MIN_LOCALPLAYER_TIME 1
@@ -40,17 +42,6 @@ int removeOldTime = 1800;
 #define RVC_VIDEOPLAY_END_TIME "17:30:00"
 #endif // !RVC_VIDEOPLAY_END_TIME
 
-//TODO: CrossPlaform  [Gifur@2025730]
-#ifndef rvc_snprintf
-#ifdef RVC_OS_WIN
-#define rvc_snprintf _snprintf
-#else
-#define rvc_snprintf snprintf
-#endif // RVC_OS_WIN
-
-#endif // rvc_snprintf
-
-
 static uint32_t ConvertStereo2Mono(char* pDstBuf, const uint32_t uDstLen, char* pSrcBuf, uint32_t uSrcLen, uint32_t uBitDeepth)
 {
 	uint32_t uRet = 0;
@@ -146,40 +137,14 @@ static bool IsSupportAudioSamprate(int isamprate)
 	return bret;
 }
 
-static void CStringSplit(char* str, char** result, const char* del)
-{
-	char* pdata = NULL;
-	char* p = NULL;
-	//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-	p = strtok_s(str, del, &pdata);
-#else
-	p = strtok_r(str, del, &pdata);
-#endif // RVC_OS_WIN
-
-	while (p != NULL) {
-		*result++ = p;
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-		p = strtok_s(NULL, del, &pdata);
-#else
-		p = strtok_r(NULL, del, &pdata);
-#endif
-	}
-}
-
-
 static bool IsValidPlayTime(const char* pstrStartTime, const char* pstrEndTime)
 {
 	bool bRet = true;
 	if (NULL == pstrStartTime || NULL == pstrEndTime) {
 		return false;
 	}
+#ifndef DEVOPS_ON_ST
 
-#ifdef DEVOPS_ON_ST
-
-#else
-#ifdef RVC_OS_WIN
 	SYSTEMTIME st;
 	GetLocalTime(&st);
 	char strNow[MAX_PATH] = { 0 };
@@ -187,23 +152,11 @@ static bool IsValidPlayTime(const char* pstrStartTime, const char* pstrEndTime)
 	if (strcmp(strNow, pstrStartTime) < 0 || strcmp(strNow, pstrEndTime) >= 0) {
 		bRet = false;
 	}
-#else
-	struct tm* ptm = NULL;
-	time_t t = time(NULL);
-	ptm = localtime(&t);
-	char strNow[TIME_LEN] = { 0 };
-	snprintf(strNow, TIME_LEN, "%02d:%02d:%02d", ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
-	if (strcmp(strNow, pstrStartTime) < 0 || strcmp(strNow, pstrEndTime) >= 0) {
-		bRet = false;
-	}
-#endif // RVC_OS_WIN
 
 #endif
-
 	return bRet;
 }
 
-
 static bool CheckFileExist(const char* pstrFolder, const char* pstrFileName, bool blog)
 {
 	bool bret = false;
@@ -502,7 +455,7 @@ void CLocalMediaPlayEntity::loadDefaultMedia(bool fNewVersion)
 
 			curImg.nFileCnt = 4;
 			for (int i = 0; i < curImg.nFileCnt; ++i) {
-				rvc_snprintf(curImg.strFileNames[i], MAX_PATH, "Ad0%s%d.jpg", SPLIT_SLASH_STR, i);
+				_snprintf(curImg.strFileNames[i], MAX_PATH, "Ad0%s%d.jpg", SPLIT_SLASH_STR, i);
 			}
 			m_defaultImg.push_back(curImg);
 #endif
@@ -518,7 +471,7 @@ void CLocalMediaPlayEntity::loadDefaultMedia(bool fNewVersion)
 			curImg1.nPlayInterval = 5000;
 			curImg1.nFileCnt = 4;
 			for (int i = 0; i < curImg1.nFileCnt; ++i) {
-				rvc_snprintf(curImg1.strFileNames[i], MAX_PATH, "Ad0%s%d.jpg", SPLIT_SLASH_STR, i);
+				_snprintf(curImg1.strFileNames[i], MAX_PATH, "Ad0%s%d.jpg", SPLIT_SLASH_STR, i);
 			}
 			m_defaultPic.push_back(curImg1);
 		}
@@ -538,7 +491,7 @@ void CLocalMediaPlayEntity::loadDefaultMedia(bool fNewVersion)
 			curImg.nFileCnt = 4;
 
 			for (int i = 0; i < curImg.nFileCnt; ++i) {
-				rvc_snprintf(curImg.strFileNames[i], MAX_PATH, "Ad1%s%d.jpg", SPLIT_SLASH_STR, i);
+				_snprintf(curImg.strFileNames[i], MAX_PATH, "Ad1%s%d.jpg", SPLIT_SLASH_STR, i);
 			}
 			m_defaultImg.push_back(curImg);
 #endif
@@ -554,7 +507,7 @@ void CLocalMediaPlayEntity::loadDefaultMedia(bool fNewVersion)
 			curImg1.nPlayInterval = 1000;
 			curImg1.nFileCnt = 4;
 			for (int i = 0; i < curImg1.nFileCnt; ++i) {
-				rvc_snprintf(curImg1.strFileNames[i], MAX_PATH, "Ad1%s%d.jpg", SPLIT_SLASH_STR, i);
+				_snprintf(curImg1.strFileNames[i], MAX_PATH, "Ad1%s%d.jpg", SPLIT_SLASH_STR, i);
 			}
 			m_defaultPic.push_back(curImg1);
 		}
@@ -1222,12 +1175,7 @@ ErrorCodeEnum CLocalMediaPlayEntity::HandleRemoteRecord(const char* pszMessage)
 				result[i] = const_cast<LPSTR>(arr2[i].GetData());
 			}
 			if (arr1.GetCount() > 4) {
-				//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 				_snprintf(strSwiftName, MAX_PATH, "%s", result[4]);
-#else
-				snprintf(strSwiftName, MAX_PATH, "%s", result[4]);
-#endif // RVC_OS_WIN
 			}
 			delete tmp;
 			tmp = NULL;
@@ -1933,16 +1881,11 @@ void CLocalMediaPlayEntity::StartAudio(const char *pAudioNames)
 {
 	if (NULL != pAudioNames) {
 		char strAudios[MAX_PATH] = { 0 };
-		rvc_snprintf(strAudios, MAX_PATH, "%s", pAudioNames);
+		_snprintf(strAudios, MAX_PATH, "%s", pAudioNames);
 		const char* d = "|";
 		char* pName = NULL;
 		char* pdata = NULL;
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 		pName = strtok_s(strAudios, d, &pdata);
-#else
-		pName = strtok_r(strAudios, d, &pdata);
-#endif
 		while (pName) {
 			CSimpleStringA strAudioFileName = pName;
 			CSimpleStringA strAudioFullPath = m_AudioPath + strAudioFileName;
@@ -1950,12 +1893,7 @@ void CLocalMediaPlayEntity::StartAudio(const char *pAudioNames)
 				LogWarn(Severity_Low, Error_Debug, LOG_EVT_ADV_AUDIO_NOT_EXIST, CSimpleStringA::Format("audio file %s not exist!", strAudioFullPath.GetData()).GetData());
 				return;
 			}
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 			pName = strtok_s(NULL, d, &pdata);
-#else
-			pName = strtok_r(NULL, d, &pdata);
-#endif
 		}
 	}
 #ifdef RVC_OS_WIN
@@ -2245,13 +2183,13 @@ bool CLocalMediaPlayEntity::IsRunConfigExist()
 	CSimpleStringA strPath;
 	ErrorCodeEnum eErr;
 
-	if ((eErr = GetFunction()->GetPath("RunInfo", strPath)) != Error_Succeed){
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get runinfo path failed(%d)", eErr);
+	if ((eErr = GetFunction()->GetPath("RunCfg", strPath)) != Error_Succeed){
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get RunCfg path failed(%d)", eErr);
 		return false;
 	}
 
 	CSimpleStringA strRuninfoFile;
-	strRuninfoFile = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "runcfg" SPLIT_SLASH_STR "%s.ini", (LPCTSTR)strPath, GetEntityName());
+	strRuninfoFile = CSimpleStringA::Format("%s" SPLIT_SLASH_STR "%s.ini", (LPCTSTR)strPath, GetEntityName());
 	if (ExistsFileA(strRuninfoFile)) {
 		return true;
 	}

+ 3 - 14
Module/mod_mediacontroller/capture.cpp

@@ -106,17 +106,6 @@ static void __audiomgrlog(void* user_data, const char* fmt, va_list arg)
 }
 #endif
 
-//TODO: CrossPlaform  [Gifur@2025730]
-static void rvc_sleep(uint32_t umicroseconds) 
-{
-#ifdef RVC_OS_WIN
-	::Sleep(umicroseconds);
-#else
-	usleep(umicroseconds * 1000);
-#endif // RVC_OS_WIN
-}
-
-
 #ifdef RVC_OS_WIN
 static int translate_id(bool in_direction, int idx)
 {
@@ -1580,7 +1569,7 @@ namespace MediaController {
 				{
 					if (cap->env_video) 
 					{
-						rvc_sleep(cap->config.uintervaltime);
+						Sleep(cap->config.uintervaltime);
 					}
 					rc = video_capture_start(cap->opt_video);
 					if (rc != Error_Succeed) 
@@ -1612,7 +1601,7 @@ namespace MediaController {
 				{
 					if (cap->env_video) 
 					{
-						rvc_sleep(cap->config.uintervaltime);
+						Sleep(cap->config.uintervaltime);
 					}
 					rc = video_capture_start(cap->opt_video);
 					if (rc != Error_Succeed) 
@@ -1642,7 +1631,7 @@ namespace MediaController {
 			{
 				if (cap->env_video) 
 				{
-					rvc_sleep(cap->config.uintervaltime);
+					Sleep(cap->config.uintervaltime);
 				}
 				rc = video_capture_start(cap->opt_video);
 				if (rc != Error_Succeed) 

+ 2 - 19
Module/mod_mediacontroller/mod_mediacontroller.cpp

@@ -7,7 +7,7 @@
 #include "fileutil.h"
 #include "brightnessinfo.h"
 #include "SpDefine.h"
-
+#include <winpr/synch.h>
 #ifdef RVC_OS_WIN
 #include "iaudiorenderinterface.h"
 #endif
@@ -100,7 +100,7 @@ static int GetFormatString(char* strVala, size_t uValaLen, char* strValb, size_t
 	char strBuffer[MAX_PATH] = { 0 };
 	memcpy(strBuffer, pSrc, uSrcLen);
 	char* pIndex = NULL;
-	if (pIndex = strrchr(strBuffer, cWord)) {
+	if ((pIndex = strrchr(strBuffer, cWord)) != NULL) {
 		char* pHash = pIndex + sizeof(char);
 		*pIndex = '\0';
 		if (NULL != pHash) {
@@ -1957,13 +1957,7 @@ ErrorCodeEnum CMediaControllerEntity::ReStartCamera(int nCamera)
 		if((stopcamera(m_capture,nCamera)==-1)){
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("restart camera %d, stop camera failed!", nCamera);
 		}
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 		Sleep(2000);
-#else
-		sleep(2);
-#endif
-
 		ErrorCodeEnum Error = Error_Succeed;
 		Error = capture_create(&conf, m_capture, nCamera);
 		if (Error == Error_Succeed) 
@@ -2512,27 +2506,16 @@ void MediaServiceSession::Handle_ManipulateCameras(SpReqAnsContext<MediaService_
 		LogTransToCMSEvt();
 		if (m_pEntity->m_bStartCamera) {
 			Error = m_pEntity->StopCamerasAndRecord();
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 			Sleep(200);
-#else
-			usleep(200*1000);
-#endif
 		}
 		else {
 			m_pEntity->LogTransactionRecordCtrEvt(0);
 			Error = Error_Succeed;
-			//DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("current is not on business, camera is not on.");
 		}
 		m_pEntity->m_bJsOccupyCamera = true;
 	}
 	else {
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 		Sleep(100);
-#else
-		usleep(100*1000);
-#endif
 		if (m_pEntity->m_bOnBusiness) {
 			Error = m_pEntity->StartCamerasAndRecord();
 		}

+ 6 - 6
Module/mod_pinpad/PinPadFSM.cpp

@@ -405,10 +405,10 @@ int CPinPadFSM::Initial()
 	else
 		SetErrorAndLog(eErrDev, MEC_DEVAPI_EPP_GetDevCategory, "DevAdapter::GetDevCategory", __FUNCTION__, IsInBusiness(), m_ullEndTime - m_ullBeginTime);
 
-	CSimpleStringA csRunInfo, csSNBakFile, csBakSN("");
-	if ((eErr = GetEntityBase()->GetFunction()->GetPath("RunInfo", csRunInfo)) == Error_Succeed)
+	CSimpleStringA csRunCfg, csSNBakFile, csBakSN("");
+	if ((eErr = GetEntityBase()->GetFunction()->GetPath("RunCfg", csRunCfg)) == Error_Succeed)
 	{
-		csSNBakFile = csRunInfo + SPLIT_SLASH_STR + "runcfg" + SPLIT_SLASH_STR + "snbak.dat";
+		csSNBakFile = csRunCfg + SPLIT_SLASH_STR + "snbak.dat";
 		ifstream infile(csSNBakFile.GetData(), std::ofstream::binary);
 		char* buffer = new char[16];
 		ZeroMemory(buffer, 16);
@@ -1061,10 +1061,10 @@ int CPinPadFSM::LoadKeySM(SpReqAnsContext<PinPadService_LoadKeysSM_Req, PinPadSe
 			LogWarn(Severity_Low, Error_Unexpect, PinPad_UserErrorCode_PinPad_LoadKey_SMSN
 				, CSimpleStringA::Format("{\"subject\":\"key_sn\",\"value\":\"%s\"}", m_keySNSM.GetData()));
 			//oiltmp@20240521 add for redundancy to check
-			CSimpleStringA csRunInfo,csSNBakFile;
-			if ((eErr = GetEntityBase()->GetFunction()->GetPath("RunInfo", csRunInfo)) == Error_Succeed)
+			CSimpleStringA csRunCfg,csSNBakFile;
+			if ((eErr = GetEntityBase()->GetFunction()->GetPath("RunCfg", csRunCfg)) == Error_Succeed)
 			{
-				csSNBakFile = csRunInfo + SPLIT_SLASH_STR + "runcfg" + SPLIT_SLASH_STR + "snbak.dat";
+				csSNBakFile = csRunCfg + SPLIT_SLASH_STR + "snbak.dat";
 				ofstream outfile(csSNBakFile, std::ofstream::binary|ios::trunc);
 
 				int size = m_keySNSM.GetLength();

+ 24 - 91
Module/mod_recorder/mod_recorder.cpp

@@ -12,6 +12,7 @@
 #include "y2k_time.h"
 #include <string.h>
 #include "filecryption.h"
+#include "fileutil.h"
 
 #include "mod_facetracking/sysvar.h"
 #include "mod_interactivecontrol/Event.h"
@@ -44,34 +45,6 @@ using namespace Recorder;
 #define RVC_MIN_RECORD_FILESIZE 1024
 #endif
 
-//TODO: CrossPlaform  1111 [Gifur@2025730]
-static unsigned long GetFileSize(const char* pfilename)
-{
-#ifdef RVC_OS_WIN
-	unsigned long usize = 0;
-	if (NULL == pfilename) {
-		return usize;
-	}
-
-	FILE* pFile = fopen(pfilename, "rb");
-	if (pFile) {
-		fseek(pFile, 0, SEEK_END);
-		usize = ftell(pFile);
-		fclose(pFile);
-	}
-
-	return usize;
-#else
-	struct stat statbuf;
-	if (0 == stat(pfilename, &statbuf)) {
-		return statbuf.st_size;
-	}
-	else {
-		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("errno info is %s.", strerror(errno));
-		return 0;
-	}	
-#endif
-}
 
 static const char* GetFileName(const char* pfilename)
 {
@@ -84,7 +57,7 @@ static const char* GetFileName(const char* pfilename)
 
 static void LogRecordFileInfo(const char* pszMessage)
 {
-	unsigned long ufilesize = GetFileSize(pszMessage);
+	unsigned long ufilesize = ReadFileSize(pszMessage);
 
 	char strhash[MAX_PATH] = { 0 };
 	get_file_sm3digest(strhash, MAX_PATH, pszMessage);
@@ -127,22 +100,6 @@ static bool rvcMoveFile(const char* strSrcFile, const char* strDstFile)
 	return bRet;
 }
 
-//TODO: CrossPlaform  [Gifur@2025728]
-static bool RvcDeleteFile(const char* strSrcFile)
-{
-	bool bRet = false;
-	if (NULL == strSrcFile) {
-		return bRet;
-	}
-
-	if (0 == remove(strSrcFile)) {
-		bRet = true;
-	}
-	
-	return bRet;
-}
-
-
 void RecordServiceSession::Handle_StartTransactionRecord(SpReqAnsContext<RecorderSerVice_StartTransactionRecord_Req, RecorderSerVice_StartTransactionRecord_Ans>::Pointer ctx)
 {
 	DbgToBeidou(ctx->link, __FUNCTION__)();
@@ -488,7 +445,7 @@ ErrorCodeEnum CRecorderEntity::AddToVideoRecordList(const char* videofilename)
 
 	item->file_path = videofilename;
 
-	item->file_length = (int)GetFileSize(videofilename);
+	item->file_length = (int)ReadFileSize(videofilename);
 
 	const char* strfilename = GetFileName(videofilename);
 	if (strfilename) {
@@ -564,7 +521,7 @@ void CRecorderEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,
 
 	case LOG_EVT_RECORDER_SECTION_FINISHED:
 		{
-			unsigned long uSize = GetFileSize(pszMessage);
+			unsigned long uSize = ReadFileSize(pszMessage);
 			if (RVC_MIN_RECORD_FILESIZE < uSize) {
 				if (m_bEncFlag) {
 					HandleEncryptVideoRecord(pszMessage);
@@ -573,14 +530,14 @@ void CRecorderEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,
 			}
 			else {
 				LogWarn(Severity_Low, Error_Debug, LOG_EVT_INVALID_RECORD_FILE, CSimpleStringA::Format("invalid record file %s, delelte it.", pszMessage).GetData());
-				RvcDeleteFile(pszMessage);
+				RemoveFileA(pszMessage);
 			}
 		}
 		break;
 
 	case LOG_EVT_RECORDER_WHOLE_FINISHED:
 		{
-			unsigned long uSize = GetFileSize(pszMessage);
+			unsigned long uSize = ReadFileSize(pszMessage);
 			if (RVC_MIN_RECORD_FILESIZE < uSize) {
 				if (m_bEncFlag) {
 					HandleEncryptVideoRecord(pszMessage);
@@ -590,7 +547,7 @@ void CRecorderEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,
 			}
 			else {
 				LogWarn(Severity_Low, Error_Debug, LOG_EVT_INVALID_RECORD_FILE, CSimpleStringA::Format("invalid record file %s, delelte it.", pszMessage).GetData());
-				RvcDeleteFile(pszMessage);
+				RemoveFileA(pszMessage);
 			}
 		}
 		break;
@@ -794,12 +751,8 @@ int CRecorderEntity::HandleFinishedVideoRecord(const char* videofilename)
 		LogRecordFileInfo(srcfile.GetData());
 		bRet = rvcMoveFile(srcfile.GetData(), dstfile.GetData());
 		if(!bRet) {
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-			LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_MOVE_FAILED, CSimpleStringA::Format("Error Code %u while move %s ", GetLastError(), srcfile.GetData()).GetData());
-#else
-			LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_MOVE_FAILED, CSimpleStringA::Format("%s(%d) while move %s ", strerror(errno), errno, srcfile.GetData()).GetData());
-#endif // RVC_OS_WIN
+			LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_MOVE_FAILED
+				, CSimpleStringA::Format("Error Code %u while move %s ", GetLastError(), srcfile.GetData()).GetData());
 		}
 		else {
 			AddToVideoRecordList(dstfile.GetData());
@@ -811,12 +764,7 @@ int CRecorderEntity::HandleFinishedVideoRecord(const char* videofilename)
 	if (ExistsFile(srcfile.GetData())){
 		bRet = rvcMoveFile(srcfile.GetData(), dstfile.GetData());
 		if(!bRet) {
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 			LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_MOVE_FAILED, CSimpleStringA::Format("Error Code %u while move %s ", GetLastError(), srcfile.GetData()).GetData());
-#else
-			LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_MOVE_FAILED, CSimpleStringA::Format("%s(%d) while move %s ", strerror(errno), errno, srcfile.GetData()).GetData());
-#endif // RVC_OS_WIN
 		}
 		else {
 			AddToVideoRecordList(dstfile.GetData());
@@ -849,22 +797,16 @@ int CRecorderEntity::HandleEncryptVideoRecord(const char* videofilename)
 	if (0 != iresult){
 		LogWarn(Severity_Middle, Error_Debug, LOG_EVT_RECORDER_ENCRYPT_FAILED, CSimpleStringA::Format("encryption file %s failed, delete out temp file %s!", videofilename, strOutFile).GetData());
 		if (ExistsFile(strOutFile)) {
-			if (!RvcDeleteFile(strOutFile)) {
+			if (!RemoveFileA(strOutFile)) {
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteFile file %s failed!", strOutFile);
 			}
 		}
 		return iRet;
 	}
-	//TODO: CrossPlaform  [Gifur@2025730]
-	bool bRet = RvcDeleteFile(videofilename);
+	bool bRet = RemoveFileA(videofilename);
 	if(!bRet) {
-		//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 		LogWarn(Severity_Middle, Error_Debug, LOG_EVT_RECORDER_DELETE_FAILED, CSimpleStringA::Format("Error Code %lu while delete %s, delete out temp file[%s]!", GetLastError(), videofilename, strOutFile).GetData());
-#else
-		LogWarn(Severity_Middle, Error_Debug, LOG_EVT_RECORDER_DELETE_FAILED, CSimpleStringA::Format("%s(%d) while delete %s, delete out temp file[%s]!", strerror(errno), errno, videofilename, strOutFile).GetData());
-#endif // RVC_OS_WIN
-		if (!RvcDeleteFile(strOutFile)){
+		if (!RemoveFileA(strOutFile)){
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("DeleteFile file %s failed!", strOutFile);
 		}
 		return iRet;
@@ -874,12 +816,8 @@ int CRecorderEntity::HandleEncryptVideoRecord(const char* videofilename)
 			iRet = 0;
 		}
 		else{
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
-			LogWarn(Severity_Middle, Error_Debug, LOG_EVT_RECORDER_RENAME_FAILED, CSimpleStringA::Format("Error Code %lu while rename %s.", GetLastError(), strOutFile).GetData());
-#else
-			LogWarn(Severity_Middle, Error_Debug, LOG_EVT_RECORDER_RENAME_FAILED, CSimpleStringA::Format("%s(%d) while rename %s.", strerror(errno), errno, strOutFile).GetData());
-#endif // RVC_OS_WIN	
+			LogWarn(Severity_Middle, Error_Debug, LOG_EVT_RECORDER_RENAME_FAILED
+				, CSimpleStringA::Format("Error Code %lu while rename %s.", GetLastError(), strOutFile).GetData());
 		}
 	}
 
@@ -921,12 +859,7 @@ int CRecorderEntity::HandleSaveVideoRecord(const char* videofilename)
 		LogRecordFileInfo(srcfile.GetData());
 		bool bRet = rvcMoveFile(srcfile.GetData(), dstfile.GetData());
 		if (!bRet) {
-			//TODO: CrossPlaform  [Gifur@2025730]
-#ifdef RVC_OS_WIN
 			LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_MOVE_FAILED, CSimpleStringA::Format("Error Code %u while move %s ", GetLastError(), srcfile.GetData()));
-#else
-			LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_MOVE_FAILED, CSimpleStringA::Format("%s(%d) while move %s ", strerror(errno), errno, srcfile.GetData()));
-#endif // RVC_OS_WIN
 		}
 		else {
 			AddToVideoRecordList(dstfile.GetData());
@@ -1022,10 +955,10 @@ int CRecorderEntity::SaveExceptionRecordVideos()
 			if (0 == memcmp(FindFileData.cFileName, RVC_TRANSATCION_RECORD_SUFFIX, strlen(RVC_TRANSATCION_RECORD_SUFFIX)) ||
 				0 == memcmp(FindFileData.cFileName, RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX, strlen(RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX))){
 				CSimpleStringA srcfile = CSimpleStringA::Format("%s%s",m_TempDir.GetData(), FindFileData.cFileName);
-				unsigned long uSize = GetFileSize(srcfile.GetData());
+				unsigned long uSize = ReadFileSize(srcfile.GetData());
 				if (RVC_MIN_RECORD_FILESIZE >= uSize) {
 					LogWarn(Severity_Low, Error_Debug, LOG_EVT_INVALID_RECORD_FILE, CSimpleStringA::Format("invalid record file %s, delelte it.", srcfile.GetData()).GetData());
-					RvcDeleteFile(srcfile.GetData());
+					RemoveFileA(srcfile.GetData());
 					goto on_next;
 				}
 
@@ -1034,7 +967,7 @@ int CRecorderEntity::SaveExceptionRecordVideos()
 					cb.dbg = &rvcDbg;
 					if (false == is_file_encrypted(srcfile.GetData(), &cb)){
 						if (strstr(FindFileData.cFileName, RVC_FILEENC_STR)) {
-							RvcDeleteFile(srcfile.GetData());
+							RemoveFileA(srcfile.GetData());
 							goto on_next;
 						}
 
@@ -1055,7 +988,7 @@ int CRecorderEntity::SaveExceptionRecordVideos()
 							}
 							else{
 								LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_RENAME_FAILED, CSimpleStringA::Format("Error Code %lu while rename %s, delete it.", GetLastError(), srcfile.GetData()).GetData());
-								RvcDeleteFile(srcfile.GetData());
+								RemoveFileA(srcfile.GetData());
 								goto on_next;
 							}
 						}
@@ -1064,7 +997,7 @@ int CRecorderEntity::SaveExceptionRecordVideos()
 
 				if (strstr(srcfile.GetData(), RVC_FILEENC_STR)) {
 					LogWarn(Severity_Low, Error_Debug, LOG_EVT_ABNORMAL_RECORD_FILE, CSimpleStringA::Format("abnormal file %s, delete it.",  srcfile.GetData()).GetData());
-					RvcDeleteFile(srcfile.GetData());
+					RemoveFileA(srcfile.GetData());
 					goto on_next;
 				}
 
@@ -1103,10 +1036,10 @@ on_next:
 		if (0 == memcmp(ptr->d_name, RVC_TRANSATCION_RECORD_SUFFIX, strlen(RVC_TRANSATCION_RECORD_SUFFIX)) ||
 			0 == memcmp(ptr->d_name, RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX, strlen(RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX))) {
 			CSimpleStringA srcfile = CSimpleStringA::Format("%s%s", m_TempDir.GetData(), ptr->d_name);
-			unsigned long uSize = GetFileSize(srcfile.GetData());
+			unsigned long uSize = ReadFileSize(srcfile.GetData());
 			if (RVC_MIN_RECORD_FILESIZE >= uSize) {
 				LogWarn(Severity_Low, Error_Debug, LOG_EVT_INVALID_RECORD_FILE, CSimpleStringA::Format("invalid record file %s, delelte it.", srcfile.GetData()).GetData());
-				RvcDeleteFile(srcfile.GetData());
+				RemoveFileA(srcfile.GetData());
 				continue;
 			}
 
@@ -1115,7 +1048,7 @@ on_next:
 				cb.dbg = &rvcDbg;
 				if (false == is_file_encrypted(srcfile.GetData(), &cb)) {
 					if (strstr(ptr->d_name, RVC_FILEENC_STR)) {
-						RvcDeleteFile(srcfile.GetData());
+						RemoveFileA(srcfile.GetData());
 						continue;
 					}
 
@@ -1136,7 +1069,7 @@ on_next:
 						}
 						else {
 							LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_RENAME_FAILED, CSimpleStringA::Format("%s(%d) while rename %s.", strerror(errno), errno, srcfile.GetData()).GetData());
-							RvcDeleteFile(srcfile.GetData());
+							RemoveFileA(srcfile.GetData());
 							continue;
 						}
 					}
@@ -1145,7 +1078,7 @@ on_next:
 
 			if (strstr(srcfile.GetData(), RVC_FILEENC_STR)) {
 				LogWarn(Severity_Low, Error_Debug, LOG_EVT_ABNORMAL_RECORD_FILE, CSimpleStringA::Format("abnormal file %s, delete it.", srcfile.GetData()).GetData());
-				RvcDeleteFile(srcfile.GetData());
+				RemoveFileA(srcfile.GetData());
 				continue;
 			}
 

+ 4 - 28
Module/mod_screenshot/mod_screenshot.cpp

@@ -158,8 +158,6 @@ public:
 		if (preOperationError != Error_Succeed)
 			return preOperationError;
 
-		/** 礼鹏看到对此做下移除,没有壁挂式这个机型了  [Gifur@2025724]*/
-		m_bIsWallMachine = false;
 		return Error_Succeed;
 	}
 
@@ -204,11 +202,6 @@ public:
 		int cx, cy;
 		getScreenSize(&cx, &cy);
 #endif
-		//TODO: CrossPlaform  [Gifur@2025730]
-		if (m_bIsWallMachine)
-		{
-			cy = cy-640;
-		} 
 		screen_encoder_session_create(cx, cy, &m_enc_session);
 		return Error_Succeed;
 	}
@@ -245,7 +238,7 @@ public:
 			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("capture screen failed! %d", err);
 			return;
 		}
-		if((SysInfo.eScreen == 1)&&!m_bIsWallMachine)
+		if(SysInfo.eScreen == 1)
 		{
 			CSimpleStringA strValue;
 			ErrorCodeEnum Error = GetFunction()->GetSysVar("VideoWindowInitializeParam", strValue);
@@ -284,25 +277,9 @@ public:
 		Info.type = ACM_TYPE_SRN;
 		Info.id = id;
 		Info.sub_type = ACM_SRN_ANS | ACM_SRN_SNAPSHOT;
-		if (m_bIsWallMachine)
-		{
-			int width = rc.right - rc.left;
-			int height = rc.bottom - 640;
-			int linesize = (width * 3 + 3) & 0xfffffffc;
-			int newsize = linesize * height;
-			Info.data.Alloc(newsize);
-			void *buftmp = malloc(newsize);
-			memcpy(buftmp,buf,newsize);
-			screen_encoder_session_encode(m_enc_session, buftmp, Info.data.m_pData, &Info.data.m_iLength);
-			(*m_pChannelClient)(EntityResource::getLink().upgradeLink())->Send(Info);
-			free(buftmp);
-		}
-		else
-		{
-			Info.data.Alloc(size);
-			screen_encoder_session_encode(m_enc_session, buf, Info.data.m_pData, &Info.data.m_iLength);
-			(*m_pChannelClient)(EntityResource::getLink().upgradeLink())->Send(Info);
-		}	
+		Info.data.Alloc(size);
+		screen_encoder_session_encode(m_enc_session, buf, Info.data.m_pData, &Info.data.m_iLength);
+		(*m_pChannelClient)(EntityResource::getLink().upgradeLink())->Send(Info);
 
 #if 0
 		int linesize = size / cy;
@@ -504,7 +481,6 @@ private:
 	CAutoArray<CUUID> m_arrListener;
 
 	int m_id_seq;
-	bool m_bIsWallMachine;
 	bool m_bConnectAssist;
 };
 

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio