Sfoglia il codice sorgente

提交平台层的最新代码

lwk 2 mesi fa
parent
commit
0aa644c0ef

+ 1 - 0
CCOS.Dev.IODevice/CCOS.Dev.IODevice.cpp

@@ -90,6 +90,7 @@ void IODevice::SubscribeSelf()
 
 void SYSTEM_CALL IODevice::CompleteInit()
 {
+	cout << "IODevice::CompleteInit() IN" << endl;
 	//ÕâÀïΪIODevice´´½¨Ò»¸öµ¥¶ÀµÄmqttConnection
 
 }

+ 14 - 14
CDI/CDI.cpp

@@ -491,20 +491,20 @@ bool CDI::InitAs(CCOS_PROC_TYPE Master, UINT64 MasterProcId)
 
 	SetConfigMode(Master);
 
-	std::cout << "Start backgroud InitShareMemory " << "\n";
-	{
-		pthread_attr_t attr;
-		pthread_attr_init(&attr);
-		pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
-
-		// ´´½¨Ïß³Ì
-		if (pthread_create(&hShareMemoryHandle, &attr,
-			InitShareMemory, this) != 0) {
-			perror("pthread_create failed");
-			return false;
-		}
-		pthread_attr_destroy(&attr);
-	}
+	//std::cout << "Start backgroud InitShareMemory " << "\n";
+	//{
+	//	pthread_attr_t attr;
+	//	pthread_attr_init(&attr);
+	//	pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
+
+	//	// ´´½¨Ïß³Ì
+	//	if (pthread_create(&hShareMemoryHandle, &attr,
+	//		InitShareMemory, this) != 0) {
+	//		perror("pthread_create failed");
+	//		return false;
+	//	}
+	//	pthread_attr_destroy(&attr);
+	//}
 
 	//mLog::FINFO("CDI  ");
 	//Master & Channel

+ 11 - 1
CDI/DriverManager.cpp

@@ -2019,7 +2019,7 @@ bool DriverHandle::DynRegistToRoot(const char* RootPath, DWORD timeout)
 	//me second
 	if (rootclient.Open(RootPath, ACTION, timeout) == false)
 	{
-		//printf("Thread:%d,Open Failed\n", GetCurrentThreadId());
+		std::cout << "Thread:" << GetCurrentThreadId() << ", Open RootPath failed. Path: " << RootPath << ", Timeout: " << timeout << std::endl;
 		return false;
 	}
 
@@ -2037,6 +2037,7 @@ bool DriverHandle::DynRegistToRoot(const char* RootPath, DWORD timeout)
 			{
 				//log here
 				//unhook it
+				std::cout << "Thread:" << GetCurrentThreadId() << ", Starting rollback for m_DynDeviceFullPathMap. Current path: " << path << std::endl;
 				map<string, UINT64>::iterator iterBk = m_DynDeviceFullPathMap.begin();
 				while (iterBk != iter)
 				{
@@ -2044,6 +2045,7 @@ bool DriverHandle::DynRegistToRoot(const char* RootPath, DWORD timeout)
 					{
 						//log here
 						//shit on going!!!!
+						std::cout << "Thread:" << GetCurrentThreadId() << ", Failed to rollback device. Path: " << iterBk->first << ". Critical error!" << std::endl;
 						rootclient.Close();
 						return false;
 					}
@@ -2066,6 +2068,7 @@ bool DriverHandle::DynRegistToRoot(const char* RootPath, DWORD timeout)
 			//regist driver
 			if (rootclient.AddDeviceDescrpt(path.c_str(), TargetType.c_str(), (const char*)getLocalMachineId(), procId, addr) != RET_SUCCEED)
 			{
+				std::cout << "Thread:" << GetCurrentThreadId() << ", Failed to register Ccos device. Path: " << path << std::endl;
 				//log here
 				//unhook it
 				map<string, UINT64>::iterator iterBk = m_CcosDynDeviceFullPathMap.begin();
@@ -2501,8 +2504,15 @@ const char* DriverManager::GetAllDevice(void** pDevices, int& nDevNums)
 	m_strAllDeviceUri = "";
 	auto it = m_CcosDeviceMap.begin();
 	nDevNums = 0;
+	if (pDevices == nullptr) {
+		return m_strAllDeviceUri.c_str();
+	}
 	while (it != m_CcosDeviceMap.end())
 	{
+		if (nDevNums >= 30) {
+			std::cout << "Warning: Device count exceeds max limit (" << 30 << ")" << std::endl;
+			break;
+		}
 		m_strAllDeviceUri += it->first + ";";
 		pDevices[nDevNums++] = it->second;
 		it++;

+ 5 - 3
CcosThread/CMakeLists.txt

@@ -2,9 +2,11 @@ cmake_minimum_required(VERSION 3.12)
 project(CcosThread VERSION 1.0.0 LANGUAGES CXX)
 
 # 设置 C++ 标准
-# set(CMAKE_CXX_STANDARD 17)
-# set(CMAKE_CXX_STANDARD_REQUIRED ON)
-# set(CMAKE_CXX_EXTENSIONS OFF)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -static-libasan -g")
+#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address -static-libasan")
 
 # 配置输出目录
 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

+ 4 - 4
CcosThread/CcosThread.cpp

@@ -87,7 +87,7 @@ bool Thread_Base::StartThread(bool Sync, bool Inherit)
     }
 
     if (m_ExitFlag == nullptr) { 
-        std::cerr << getLogPrefix() << "Thread_Base::StartThread: m_ExitFlag is NULL! Thread ID: " << std::this_thread::get_id() << std::endl;
+        std::cerr << "Thread_Base::StartThread: m_ExitFlag is NULL! Thread ID: " << std::this_thread::get_id() << std::endl;
     }
     else {
         try {
@@ -95,7 +95,7 @@ bool Thread_Base::StartThread(bool Sync, bool Inherit)
             m_ExitFlag->ResetEvent(); 
         }
         catch (...) {
-            std::cerr << getLogPrefix() << "Thread_Base::StartThread: ResetEvent failed for Thread ID: " << std::this_thread::get_id() << std::endl;
+            std::cerr << "Thread_Base::StartThread: ResetEvent failed for Thread ID: " << std::this_thread::get_id() << std::endl;
         }
     }
 
@@ -415,14 +415,14 @@ bool Thread_Base::Exec() {
 void Thread_Base::ThreadExitProcedure() {
     m_ThreadRunning = false;
     if (m_ExitFlag == nullptr) {  
-        std::cerr << getLogPrefix() << "Thread_Base::ThreadExitProcedure: m_pEvent is NULL! Thread ID: " << std::this_thread::get_id() << std::endl;
+        std::cerr << "Thread_Base::ThreadExitProcedure: m_pEvent is NULL! Thread ID: " << std::this_thread::get_id() << std::endl;
     }
     else {
         try {
             m_ExitFlag->SetEvent();  // Ô­µ÷Óõã
         }
         catch (...) {
-            std::cerr << getLogPrefix() << "Thread_Base::ThreadExitProcedure: SetEvent failed for Thread ID: " << std::this_thread::get_id() << std::endl;
+            std::cerr <<"Thread_Base::ThreadExitProcedure: SetEvent failed for Thread ID: " << std::this_thread::get_id() << std::endl;
         }
     }
     OnEndThread();

+ 5 - 3
DrvProc/libCcosProc/CMakeLists.txt

@@ -2,10 +2,12 @@ cmake_minimum_required(VERSION 3.12)
 project(libCcosProc VERSION 1.0.0 LANGUAGES CXX)
 
 # 设置 C++ 标准
-# set(CMAKE_CXX_STANDARD 17)
-# set(CMAKE_CXX_STANDARD_REQUIRED ON)
-# set(CMAKE_CXX_EXTENSIONS OFF)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
 
+# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -static-libasan -g")
+# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address -static-libasan")
 # 配置输出目录
 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

+ 32 - 23
DrvProc/libCcosProc/DriverManager.cpp

@@ -9,7 +9,7 @@
 #include "common_api.h"
 #include "PacketAnalizer.h"
 
-#include "AutoDmp.h"
+//#include "AutoDmp.h"
 
 
 #define CRTDBG_MAP_ALLOC
@@ -26,9 +26,11 @@ LogicDevice* g_AllDevice[maxDeviceNum];
 
 using namespace std;
 
-AutoDmp atdmp;
+//AutoDmp atdmp;
 
 
+static std::mutex g_device_mutex;
+
 LDM_API const char* add_driver(char* driverName)
 {
 	if (AddDriverConfig(driverName) == false)
@@ -51,27 +53,34 @@ const char* pszAllDevice = "";
 /// <returns>以;分割的可以Open的设备URI列表字符串</returns>
 LDM_API const char* get_all_device(int rpcPort, int httpPort)
 {
-	if (totalDeviceNum <= 0)
-	{
-		if (GetCommandDispathIF()->InitAs(CCOS_PROC_MASTER, (UINT64)getpid()))
-		{
-			//启动成功,返回设备树
-			return (pszAllDevice = GetCommandDispathIF()->GetAllDevice((void**)(&g_AllDevice[0]), totalDeviceNum));
-
-			
-		}
-		else
-		{
-			cout << "Call from GRPC " << "get_all_device init failed." << endl;
-			return "";
-		}
-	}
-	else
-	{
-		return (pszAllDevice = GetCommandDispathIF()->GetAllDevice((void**)(&g_AllDevice[0]), totalDeviceNum));
-	}
+    std::lock_guard<std::mutex> lock(g_device_mutex); // 添加互斥锁
 
-	return "";
+    try {
+        if (totalDeviceNum <= 0) {
+            if (GetCommandDispathIF()->InitAs(CCOS_PROC_MASTER, (UINT64)getpid())) {
+                pszAllDevice = GetCommandDispathIF()->GetAllDevice(
+                    (void**)(&g_AllDevice[0]), totalDeviceNum);
+            }
+            else {
+                std::cerr << "Init failed in get_all_device" << std::endl;
+                return "";
+            }
+        }
+        else {
+            pszAllDevice = GetCommandDispathIF()->GetAllDevice(
+                (void**)(&g_AllDevice[0]), totalDeviceNum);
+        }
+
+        return pszAllDevice;
+    }
+    catch (const std::exception& e) {
+        std::cerr << "C++ Exception in get_all_device: " << e.what() << std::endl;
+        return "";
+    }
+    catch (...) {
+        std::cerr << "Unknown C++ Exception in get_all_device" << std::endl;
+        return "";
+    }
 }
 
 void* CreateCgoStruct(std::vector<string>& argList)
@@ -599,7 +608,7 @@ LDM_API int device_del(int devIdx, char* devUri, char* devProperty, char* devVal
 LDM_API int device_action(int devIdx, char* devUri, char* devFunction, char* devReqParams, void** reply) {
     cout << "GRPC call: device_action - Entering function, devIdx=" << devIdx
         << ", devUri=" << (devUri ? devUri : "nullptr")
-        << ", function=" << (devFunction ? devFunction : "nullptr") << endl;
+        << ", function=" << (devFunction ? devFunction : "nullptr") << endl; 
 
     if (devIdx >= totalDeviceNum) {
         *reply = nullptr;

+ 19 - 4
LogicClient/LogicClient.cpp

@@ -654,12 +654,27 @@ RET_STATUS LogicClient::OpenDevice(bool bAsync)
 
 	if (m_ClosedFlag)
 	{
+		// Subscribe to the default MQTT topic
+		std::cout << "[LogicClient::OpenDevice-Info] " << m_strClientName << " - Subscribing to default MQTT topic: " << m_strDefaultTopic << std::endl;
 		SubscribeTopic(m_pMqttConn, m_strDefaultTopic.c_str());
-		////mLog::FDEBUG("{$} OpenDevice {$} and use default topic {$} with Async", m_strClientName, 			realPath, m_strDefaultTopic, bAsync);
+
+		// 160ms delay: Prevent publishing before subscription is fully established
+		const int delayMs = 160;
+		std::cout << "[LogicClient::OpenDevice-Info] " << m_strClientName << " - Waiting " << delayMs << "ms to ensure MQTT subscription completes" << std::endl;
+		usleep(delayMs * 1000);  // Convert milliseconds to microseconds (1ms = 1000¦Ìs)
+
+		// Log OpenDevice details with async mode status
+		std::cout << "[LogicClient::OpenDevice-Debug] " << m_strClientName << " - OpenDevice (Path: " << realPath
+			<< ", Default Topic: " << m_strDefaultTopic
+			<< ", Async Mode: " << (bAsync ? "Enabled" : "Disabled") << ")" << std::endl;
 	}
 	else
 	{
-		////mLog::FDEBUG("{$} OpenDevice {$} and use default topic {$} with Async and No ReSubscribe", m_strClientName,			realPath, m_strDefaultTopic, bAsync);
+		// Log OpenDevice details (no re-subscription needed as topic is already subscribed)
+		std::cout << "[LogicClient::OpenDevice-Debug] " << m_strClientName << " - OpenDevice (Path: " << realPath
+			<< ", Default Topic: " << m_strDefaultTopic
+			<< ", Async Mode: " << (bAsync ? "Enabled" : "Disabled")
+			<< ", MQTT Topic: No Re-Subscription Required)" << std::endl;
 	}
 
 	DWORD reqidx = PacketAnalizer::MakeOpenRequest(req, (*m_pFileHandle), realPath);
@@ -913,7 +928,7 @@ bool LogicClient::OnStartThread()
 
 	////mLog::FINFO("LogicClient {$} Open Device {$} failed ", m_strClientName, realPath);
 	if (IsClosed()) { 
-		std::cout << "XXXXXX XXXXXX [Thread Exiting] LogicClient Open Device failed" << endl;
+		std::cout << CurrentDateTime()<< " XXXXXX XXXXXX [Thread Exiting] LogicClient Open Device failed" << endl;
 	}
 	else {
 		std::cout << "XXXXXX XXXXXX [" << m_strClientName << "]LogicClient Open Device [" << realPath << "] failed " << endl;
@@ -1010,7 +1025,7 @@ int LogicClient::ReOpenDevice()
 
 int LogicClient::Open(const char *pPath, int flags, const char* pszWS, DWORD timeout, logic_client_open_callback calback)
 {
-	std::cout << CurrentDateTime() << "[" << m_strClientName << "] try Open " << pPath << endl;
+	std::cout << CurrentDateTime() << " LogicClient::Open[" << m_strClientName << "] try Open " << pPath << endl;
 	if (Lock(timeout) == false)
 	{
 		std::cout << "FERROR::OpenDev Lock Timeout for Dev[flag: " << flags << "  ]: " << pPath << endl;

+ 41 - 31
LogicDevice--mqtt/LogicDevice.cpp

@@ -2176,6 +2176,7 @@ void resubscribe_topic(void* client, void* reconnect_date)
 //int msgarrvd(void* context, char* topicName, int topicLen, MQTTAsync_message* message)
 void msgarrivd(void* client, message_data_t* message)
 {
+	std::cout << CurrentDateTime() << "msgarrivd:: TID [" << GetCurrentThreadId() << "] "<<endl;
 	if (client == nullptr)
 	{
 		//printf("************************ somthing happend...");
@@ -2322,6 +2323,7 @@ void* MqttSendThreadFunc(void* pPara)
 	mqtt_client* pConn = (mqtt_client*)std::get<MQTT_CLT_ID>(*connection);
 	std::string client_id = std::get<CLINET_ID_ID>(*connection);
 	sem_t* hSemaphore = std::get<SEMAPHORE_HANDLE_ID>(*connection);
+	mqtt_topic_list* pTopicList = std::get<MQTT_TIPIC_LIST_ID>(*connection);
 
 	// 线程启动日志
 	std::cout << "[" << client_id << "] The MQTT sending thread is started" << std::endl;
@@ -2338,7 +2340,7 @@ void* MqttSendThreadFunc(void* pPara)
 			std::cout << "[" << client_id << "] Received the message semaphore and ready to process the message" << std::endl;
 			
 			pLock->Thread_Lock();
-			std::cout << "[" << client_id << "] Successfully obtained the sending lock" << std::endl;
+			//std::cout << "[" << client_id << "] Successfully obtained the sending lock" << std::endl;
 
 			if (pList->empty()) {
 				std::cout << "[" << client_id << "] The message list is empty, release the lock." << std::endl;
@@ -2348,41 +2350,43 @@ void* MqttSendThreadFunc(void* pPara)
 
 			ResDataObject* pMsg = pList->front();
 			pList->pop_front();
-			std::cout << "[" << client_id << "] Get a message from the message list, the number of remaining messages: " << pList->size() << std::endl;
-
+			//std::cout << "[" << client_id << "] Get a message from the message list, the number of remaining messages: " << pList->size() << std::endl;
+			std::string m_strSendMessage;
 			for (int x = 0; x < pMsg->size(); x++) {
 				const char* pTopic = pMsg->GetKey(x);
-				std::string message = (std::string)(*pMsg)[pTopic];
-
-				std::cout << "[" << client_id << "] Prepare to publish messages to the topic: " << pTopic
-					<< ", Message length: " << message.length() << "Byte" << std::endl;
-
-				mqtt_message_t msg;
-				memset(&msg, 0, sizeof(msg));
-				msg.payload = (void*)message.c_str();
-				msg.payloadlen = message.length();
-				msg.qos = QOS1;
-				// 发布消息
-				int publishResult = mqtt_publish(pConn, pTopic, &msg);
-				if (publishResult == 0) {
-					std::cout << "[" << client_id << "] Message published successfully to the topic: " << pTopic << std::endl;
-				}
-				else {
-					std::cout << "[" << client_id << "] Message publishing failed to the topic: " << pTopic
-						<< ", Error code: " << publishResult << std::endl;
-				}
+				m_strSendMessage = (std::string)(*pMsg)[pTopic];
+
+				std::cout<< CurrentDateTime() << " [" << client_id << "] Prepare to publish messages to the topic: " << pTopic
+					<< ", Message length: " << m_strSendMessage.length() << "Byte" << std::endl;
+				PublishActionWithoutLock(m_strSendMessage, pTopic, pConn, client_id, pTopicList->size() <= 0 ? QOS2 : MQTT_QOS);
+				//mqtt_message_t msg;
+				//memset(&msg, 0, sizeof(msg));
+				//msg.payload = (void*)message.c_str();
+				//msg.payloadlen = message.length();
+				//msg.qos = QOS1;
+				//// 发布消息
+				//int publishResult = mqtt_publish(pConn, pTopic, &msg);
+				//if (publishResult == 0) {
+				//	std::cout << "[" << client_id << "] Message published successfully to the topic: " << pTopic << std::endl;
+				//}
+				//else {
+				//	std::cout << "[" << client_id << "] Message publishing failed to the topic: " << pTopic
+				//		<< ", Error code: " << publishResult << std::endl;
+				//}
 			}
-			delete pMsg;
 			std::cout << "[" << client_id << "] The message processing is completed, and the message object has been released." << std::endl;
+			delete pMsg;
 			pLock->Thread_UnLock();
-			std::cout << "[" << client_id << "] Release the sending lock" << std::endl;
+			//std::cout << "[" << client_id << "] Release the sending lock" << std::endl;
 		}
 		else if (errno == ETIMEDOUT) {
 			//std::cout << "[" << client_id << "] The semaphore wait timed out, continue waiting." << std::endl;
+			continue;
 		}
 		else {
 			// 其他错误情况
 			std::cout << "[" << client_id << "] Semaphore wait error, error code: " << errno << std::endl;
+			continue;
 		}
 	}
 	return NULL;
@@ -2474,7 +2478,7 @@ mqtt_client_t* InnerConnect(ccos_mqtt_connection* connection) {
 	try {
 		while (true) {
 			attempt_count++;
-			std::cout << "[ATTEMPT #" << attempt_count << "] Trying MQTT connect..." << std::endl;
+			std::cout << CurrentDateTime()<< " [ATTEMPT #" << attempt_count << "] Trying MQTT connect..." << std::endl;
 			rc = mqtt_connect(pMqttClient);
 
 			if (rc != MQTT_SUCCESS_ERROR) {
@@ -2615,10 +2619,12 @@ ccos_mqtt_connection* LogicDevice::NewConnection(const char* pszServer,const cha
 	sem_init(semaphore, 0, 0);
 	std::get<SEMAPHORE_HANDLE_ID>(*connection) = semaphore;
 
+	std::get<THREAD_RUNNING_ID>(*connection) = true;
 	// 创建发送线程
 	pthread_t threadId;
 	if (pthread_create(&threadId, NULL, MqttSendThreadFunc, connection) != 0) {
 		std::cerr << "Failed to create MQTT send thread" << std::endl;
+		std::get<THREAD_RUNNING_ID>(*connection) = false;
 		// 错误处理...
 		sem_destroy(semaphore);
 		delete semaphore;
@@ -2628,7 +2634,6 @@ ccos_mqtt_connection* LogicDevice::NewConnection(const char* pszServer,const cha
 	}
 
 	std::get<CONNECTED_HANDLE_ID>(*connection) = threadId;
-	std::get<THREAD_RUNNING_ID>(*connection) = true;
 	std::cout << "MqttSendThreadFunc thread id [" << threadId << "]" << std::endl;
 
 	pLock->Thread_UnLock();
@@ -2735,10 +2740,12 @@ LOGICDEVICE_API ccos_mqtt_connection* NewConnection(const char* pszClientID, cco
 	sem_init(semaphore, 0, 0);
 	std::get<SEMAPHORE_HANDLE_ID>(*connection) = semaphore;
 
+	std::get<THREAD_RUNNING_ID>(*connection) = true;  
 	// 创建发送线程
 	pthread_t threadId;
 	if (pthread_create(&threadId, NULL, MqttSendThreadFunc, connection) != 0) {
 		std::cerr << "Failed to create MQTT send thread" << std::endl;
+		std::get<THREAD_RUNNING_ID>(*connection) = false;
 		// 错误处理...
 		sem_destroy(semaphore);
 		delete semaphore;
@@ -2748,7 +2755,6 @@ LOGICDEVICE_API ccos_mqtt_connection* NewConnection(const char* pszClientID, cco
 	}
 
 	std::get<CONNECTED_HANDLE_ID>(*connection) = threadId;
-	std::get<THREAD_RUNNING_ID>(*connection) = true;  
 	std::cout << "MqttSendThreadFunc thread id [" << threadId << "]" << std::endl;
 
 	pLock->Thread_UnLock();
@@ -2885,8 +2891,11 @@ LOGICDEVICE_API void CloseConnection(ccos_mqtt_connection* hConnection)
 //主动订阅主题
 LOGICDEVICE_API int  SubscribeTopic(ccos_mqtt_connection* hConnection, const char* pszTopic, bool isShare)
 {
+	std::cout << "SubscribeTopic called. Topic: " << (pszTopic ? pszTopic : "null")
+		<< ", isShare: " << (isShare ? "true" : "false") << std::endl;
 	if (hConnection == nullptr)
 	{
+		std::cout << "SubscribeTopic error: hConnection is nullptr" << std::endl;
 		return 0;
 	}
 	mqtt_client* pMqttClient = (mqtt_client*)std::get<MQTT_CLT_ID>(*hConnection);
@@ -2916,7 +2925,7 @@ LOGICDEVICE_API int  SubscribeTopic(ccos_mqtt_connection* hConnection, const cha
 			int ret = mqtt_subscribe(pMqttClient, topicToSubscribe, MQTT_QOS, msgarrivd);
 			//int ret = mqtt_subscribe(pMqttClient, pszTopic, MQTT_QOS, msgarrivd);
 			////mLog::FWARN("mqtt {$} Subscribe ReUse {$}  topic num {$}", std::get<CLINET_ID_ID>(*hConnection), pszTopic, ret, pTopicList->size());
-			std::cout << "mqtt [" << std::get<CLINET_ID_ID>(*hConnection) << " ]Subscribe ReUse " << pszTopic << endl;
+			std::cout << CurrentDateTime() << " mqtt [" << std::get<CLINET_ID_ID>(*hConnection) << " ]Subscribe ReUse " << pszTopic << " ret: "<<ret <<endl;
 		}
 
 		if (rc != MQTT_SUCCESS_ERROR)
@@ -3014,7 +3023,7 @@ LOGICDEVICE_API int  PublishAction(ResDataObject* pAction, const char* pszTopic,
 		std::cout << CurrentDateTime() << "Who ????? " << "Publish to [" << pszTopic << "] Action Body: "<< pAction->encode() << endl; //<< pAction->encode() 
 		return 0;
 	}
-	std::cout << CurrentDateTime() << std::get<CLINET_ID_ID>(*hConnection) << " Publish Action to  ["<< pszTopic << "] Action Body: " << endl; //<< pAction->encode() 
+	std::cout << CurrentDateTime()<<" " << std::get<CLINET_ID_ID>(*hConnection) << " Publish Action to  [" << pszTopic << "] Action Body: " << endl; //<< pAction->encode() 
 
 	string topic = pszTopic;
 	if (topic.length() <= 0)
@@ -3156,9 +3165,10 @@ int  PublishActionWithoutLock(string& message, const char* pszTopic, mqtt_client
 		}
 	} while (rc != MQTT_SUCCESS_ERROR && (nTryTimes <= 2  || GetTickCount() - dwTick < dwTimeout));
 
-	if(nTryTimes > 1)
+	//if(nTryTimes > 1)
 		////mLog::FWARN("CLT {$} PublishAction  to {$} send Times {$} result {$}", client_id, pszTopic, nTryTimes, rc);
 
+	cout << CurrentDateTime() << " CLT " << client_id.c_str() << " PublishAction  to " << pszTopic << " send Times " << nTryTimes << " result " << rc << endl;
 	////mLog::FDEBUG("CLT {$} PublishAction  to {$} send Times {$} result {$}", client_id, pszTopic, nTryTimes, rc);
 
 	if (rc < 0)
@@ -3419,7 +3429,7 @@ LOGICDEVICE_API int  ActionAndRespWithConnDefalt(ccos_mqtt_connection* hConnecti
 			}
 		}
 		pLock->Thread_UnLock();
-		std::cout << "CLT [" << std::get<CLINET_ID_ID>(*hConnection) << "] at " << CurrentDateTime() << "try [" << pszTopic << "] getresp ok Use Time[" << dwTick << "]ms" << endl;
+		std::cout << "CLT [" << std::get<CLINET_ID_ID>(*hConnection) << "] at " << CurrentDateTime() << " try [" << pszTopic << "] getresp ok Use Time[" << dwTick << "]ms" << endl;
 		////mLog::FDEBUG("CLT {$} try {$}  getresp ok Use Time {$}", std::get<CLINET_ID_ID>(*hConnection), pszTopic, dwTick);
 		//std::get<FILTER_RES_OBJ_ID>(*pfilter) = nullptr;
 		return 2;

+ 15 - 9
OemLayer/NewModelDPC/NewModelDPC.cpp

@@ -253,6 +253,12 @@ void* ImgeProcessThread(void* pPara);
 
 bool NewModelDPC::InitDeviceMgr(const char *pDriverpath)
 {
+	std::string strDriverPath = pDriverpath;
+	std::string FilePath = GetFileDirectory(strDriverPath);
+	if (!AddEnvPath(FilePath.c_str())) {
+		std::cerr << "NewModelDPC::InitDeviceMgr: Failed to add library path to LD_LIBRARY_PATH: "
+			<< FilePath << std::endl;
+	}
 	std::cout << "NewModelDPC::InitDeviceMgr: Starting to load library: " << pDriverpath << std::endl;
 	m_Module = dlopen(pDriverpath, RTLD_LAZY);
 	if (m_Module)
@@ -287,15 +293,15 @@ bool NewModelDPC::InitDeviceMgr(const char *pDriverpath)
 
 					std::cout << "NewModelDPC::InitDeviceMgr: Creating image processing thread " << x << std::endl;
 					// 创建线程
-					int ret = pthread_create(&g_hImgThread[x], nullptr, ImgeProcessThread, (void*)(intptr_t)x);
-					if (ret != 0) {
-						std::cout << "NewModelDPC::InitDeviceMgr: Failed to create thread " << x << " with error code: " << ret << std::endl;
-						// 线程创建失败处理
-					}
-					else {
-						std::cout << "NewModelDPC::InitDeviceMgr: Successfully created image processing thread " << x << std::endl;
-						// 可选:设置线程名称或属性
-					}
+					//int ret = pthread_create(&g_hImgThread[x], nullptr, ImgeProcessThread, (void*)(intptr_t)x);
+					//if (ret != 0) {
+					//	std::cout << "NewModelDPC::InitDeviceMgr: Failed to create thread " << x << " with error code: " << ret << std::endl;
+					//	// 线程创建失败处理
+					//}
+					//else {
+					//	std::cout << "NewModelDPC::InitDeviceMgr: Successfully created image processing thread " << x << std::endl;
+					//	// 可选:设置线程名称或属性
+					//}
 
 				}
 				g_hDataReadyEvent.push_back(g_hExit);

+ 5 - 5
ResDataObject/CMakeLists.txt

@@ -2,11 +2,11 @@ cmake_minimum_required(VERSION 3.12)
 project(ResDataObject VERSION 1.0.0 LANGUAGES CXX)
 
 # 设置 C++ 标准
-# set(CMAKE_CXX_STANDARD 17)
-# set(CMAKE_CXX_STANDARD_REQUIRED ON)
-# set(CMAKE_CXX_EXTENSIONS OFF)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -static-libasan -g")
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address -static-libasan")
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -static-libasan -g")
+# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address -static-libasan")
 # 配置输出目录
 set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)

+ 22 - 6
ResDataObject/ResDataObject.cpp

@@ -548,7 +548,7 @@ bool ResDataObject::loadFile( const char *pfileName )
 		throw ResDataObjectExption(("File too large: " + filePath.string()).c_str());
 	}
 
-	ptree pt;  
+	std::unique_ptr<ptree> ptPtr = std::make_unique<ptree>();
 	try
 	{
 		std::string fileName(pfileName);
@@ -587,18 +587,30 @@ bool ResDataObject::loadFile( const char *pfileName )
 
 			// 使用字符串流解析
 			std::istringstream iss(buffer.data());
-			boost::property_tree::read_xml(iss, pt, flags);
+			boost::property_tree::read_xml(iss, *ptPtr, flags);
 		}
 		else if(foundjson != npos && ((foundjson+strlen(".json")) == filenameLow.size()))
 		{
 			// JSON 文件处理
-			std::ifstream ifs(fileName);
+			std::ifstream ifs(fileName, std::ios::binary);
 			if (!ifs) {
 				throwError("Cannot open file: " + fileName);
 			}
+			const size_t MAX_DEPTH = 50;
+			ptPtr->put("debug.max_depth", MAX_DEPTH);
 
 			try {
-				boost::property_tree::read_json(ifs, pt);
+				std::string jsonContent(
+					(std::istreambuf_iterator<char>(ifs)),
+					std::istreambuf_iterator<char>()
+				);
+
+				if (jsonContent.empty()) {
+					throwError("Empty JSON content: " + fileName);
+				}
+
+				std::istringstream jsonStream(jsonContent);
+				boost::property_tree::read_json(jsonStream, *ptPtr);
 			}
 			catch (const boost::property_tree::json_parser_error& e) {
 				throwError(std::string("JSON parse error: ") + e.what());
@@ -613,7 +625,7 @@ bool ResDataObject::loadFile( const char *pfileName )
 			}
 
 			try {
-				boost::property_tree::ini_parser::read_ini(ifs, pt);
+				boost::property_tree::ini_parser::read_ini(ifs, *ptPtr);
 			}
 			catch (const boost::property_tree::ini_parser_error& e) {
 				throwError(std::string("INI parse error: ") + e.what());
@@ -627,7 +639,11 @@ bool ResDataObject::loadFile( const char *pfileName )
 		//got pt
 		clear();
 
-		return ParsePtToDataObject(*this,pt);
+		bool result = ParsePtToDataObject(*this, *ptPtr);
+
+		ptPtr.reset();
+
+		return result;
 
 
 	}

+ 0 - 159
out/build/Linux_GCC_Debug/.cmake/api/v1/reply/target-CcosThread-Debug-27121ed4870d891d9c17.json

@@ -1,159 +0,0 @@
-{
-	"artifacts" : 
-	[
-		{
-			"path" : "lib/libCcosThread.so"
-		}
-	],
-	"backtrace" : 1,
-	"backtraceGraph" : 
-	{
-		"commands" : 
-		[
-			"add_library",
-			"link_directories",
-			"target_link_libraries",
-			"include_directories"
-		],
-		"files" : 
-		[
-			"CcosThread/CMakeLists.txt"
-		],
-		"nodes" : 
-		[
-			{
-				"file" : 0
-			},
-			{
-				"command" : 0,
-				"file" : 0,
-				"line" : 44,
-				"parent" : 0
-			},
-			{
-				"command" : 1,
-				"file" : 0,
-				"line" : 28,
-				"parent" : 0
-			},
-			{
-				"command" : 2,
-				"file" : 0,
-				"line" : 55,
-				"parent" : 0
-			},
-			{
-				"command" : 3,
-				"file" : 0,
-				"line" : 33,
-				"parent" : 0
-			}
-		]
-	},
-	"compileGroups" : 
-	[
-		{
-			"compileCommandFragments" : 
-			[
-				{
-					"fragment" : "-g -fPIC"
-				}
-			],
-			"defines" : 
-			[
-				{
-					"define" : "CcosThread_EXPORTS"
-				}
-			],
-			"includes" : 
-			[
-				{
-					"backtrace" : 4,
-					"path" : "/home/cxdz/codebuild/Deliver/include"
-				}
-			],
-			"language" : "CXX",
-			"sourceIndexes" : 
-			[
-				0
-			]
-		}
-	],
-	"dependencies" : 
-	[
-		{
-			"backtrace" : 3,
-			"id" : "CcosLock::@3c3ab951f6741a222056"
-		}
-	],
-	"id" : "CcosThread::@5848e45f6a2501e2bfeb",
-	"link" : 
-	{
-		"commandFragments" : 
-		[
-			{
-				"fragment" : "",
-				"role" : "flags"
-			},
-			{
-				"backtrace" : 2,
-				"fragment" : "-L/home/cxdz/codebuild/Deliver/lib",
-				"role" : "libraryPath"
-			},
-			{
-				"fragment" : "-Wl,-rpath,/home/cxdz/codebuild/DriverPlatform-V3.1/build/lib:/home/cxdz/codebuild/Deliver/lib",
-				"role" : "libraries"
-			},
-			{
-				"backtrace" : 3,
-				"fragment" : "-lpthread",
-				"role" : "libraries"
-			},
-			{
-				"backtrace" : 3,
-				"fragment" : "lib/libCcosLock.so.1.0.0",
-				"role" : "libraries"
-			}
-		],
-		"language" : "CXX"
-	},
-	"name" : "CcosThread",
-	"nameOnDisk" : "libCcosThread.so",
-	"paths" : 
-	{
-		"build" : "CcosThread",
-		"source" : "CcosThread"
-	},
-	"sourceGroups" : 
-	[
-		{
-			"name" : "Source Files",
-			"sourceIndexes" : 
-			[
-				0
-			]
-		},
-		{
-			"name" : "Header Files",
-			"sourceIndexes" : 
-			[
-				1
-			]
-		}
-	],
-	"sources" : 
-	[
-		{
-			"backtrace" : 1,
-			"compileGroupIndex" : 0,
-			"path" : "CcosThread/CcosThread.cpp",
-			"sourceGroupIndex" : 0
-		},
-		{
-			"backtrace" : 1,
-			"path" : "CcosThread/CcosThread.h",
-			"sourceGroupIndex" : 1
-		}
-	],
-	"type" : "SHARED_LIBRARY"
-}

+ 199 - 1
out/build/x64-Debug/CMakeCache.txt

@@ -14,6 +14,24 @@
 # EXTERNAL cache entries
 ########################
 
+//Value Computed by CMake
+CCOS.Dev.IODevice_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/CCOS.Dev.IODevice
+
+//Value Computed by CMake
+CCOS.Dev.IODevice_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+CCOS.Dev.IODevice_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/CCOS.Dev.IODevice
+
+//Value Computed by CMake
+CDI_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/CDI
+
+//Value Computed by CMake
+CDI_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+CDI_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/CDI
+
 //Path to a program.
 CMAKE_AR:FILEPATH=C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/lib.exe
 
@@ -213,6 +231,24 @@ CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
 // Studio IDE projects all commands are done without /nologo.
 CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
 
+//Value Computed by CMake
+CcosChannel_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/DrvProc/CcosChannel
+
+//Value Computed by CMake
+CcosChannel_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+CcosChannel_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/DrvProc/CcosChannel
+
+//Value Computed by CMake
+CcosFileHandle_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/CcosFileHandle
+
+//Value Computed by CMake
+CcosFileHandle_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+CcosFileHandle_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/CcosFileHandle
+
 //Value Computed by CMake
 CcosLock_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/CcosLock
 
@@ -222,6 +258,60 @@ CcosLock_IS_TOP_LEVEL:STATIC=OFF
 //Value Computed by CMake
 CcosLock_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/CcosLock
 
+//Value Computed by CMake
+CcosPacket_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/CcosPacket
+
+//Value Computed by CMake
+CcosPacket_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+CcosPacket_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/CcosPacket
+
+//Value Computed by CMake
+CcosProc_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/DrvProc/CcosProc
+
+//Value Computed by CMake
+CcosProc_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+CcosProc_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/DrvProc/CcosProc
+
+//Value Computed by CMake
+CcosSMachineV3_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/CcosSMachineV3
+
+//Value Computed by CMake
+CcosSMachineV3_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+CcosSMachineV3_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/CcosSMachineV3
+
+//Value Computed by CMake
+CcosSMachine_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/CcosSMachine
+
+//Value Computed by CMake
+CcosSMachine_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+CcosSMachine_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/CcosSMachine
+
+//Value Computed by CMake
+CcosThread_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/CcosThread
+
+//Value Computed by CMake
+CcosThread_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+CcosThread_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/CcosThread
+
+//Value Computed by CMake
+ContainerDPC_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/OemLayer/ContainerDPC
+
+//Value Computed by CMake
+ContainerDPC_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+ContainerDPC_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/OemLayer/ContainerDPC
+
 //Value Computed by CMake
 Crc64_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/Crc64
 
@@ -231,6 +321,15 @@ Crc64_IS_TOP_LEVEL:STATIC=OFF
 //Value Computed by CMake
 Crc64_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/Crc64
 
+//Value Computed by CMake
+DPC_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/DPC
+
+//Value Computed by CMake
+DPC_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+DPC_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/DPC
+
 //Value Computed by CMake
 DevTree_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/DevTree
 
@@ -240,6 +339,15 @@ DevTree_IS_TOP_LEVEL:STATIC=OFF
 //Value Computed by CMake
 DevTree_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/DevTree
 
+//Value Computed by CMake
+DeviceBus_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/DeviceBus
+
+//Value Computed by CMake
+DeviceBus_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+DeviceBus_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/DeviceBus
+
 //Value Computed by CMake
 DriverPlatform-V3.1_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug
 
@@ -249,6 +357,60 @@ DriverPlatform-V3.1_IS_TOP_LEVEL:STATIC=ON
 //Value Computed by CMake
 DriverPlatform-V3.1_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1
 
+//Value Computed by CMake
+LocalConfig_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/LocalConfig
+
+//Value Computed by CMake
+LocalConfig_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+LocalConfig_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/LocalConfig
+
+//Value Computed by CMake
+LogicClient_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/LogicClient
+
+//Value Computed by CMake
+LogicClient_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+LogicClient_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/LogicClient
+
+//Value Computed by CMake
+LogicDevice_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/LogicDevice--mqtt
+
+//Value Computed by CMake
+LogicDevice_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+LogicDevice_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/LogicDevice--mqtt
+
+//Value Computed by CMake
+LogicDriver_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/LogicDriver
+
+//Value Computed by CMake
+LogicDriver_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+LogicDriver_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/LogicDriver
+
+//Value Computed by CMake
+NewModelDPC_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/OemLayer/NewModelDPC
+
+//Value Computed by CMake
+NewModelDPC_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+NewModelDPC_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/OemLayer/NewModelDPC
+
+//Value Computed by CMake
+OemBusUnit_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/OemLayer/OemBusUnit
+
+//Value Computed by CMake
+OemBusUnit_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+OemBusUnit_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/OemLayer/OemBusUnit
+
 //Value Computed by CMake
 ResDataObject_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/ResDataObject
 
@@ -258,6 +420,42 @@ ResDataObject_IS_TOP_LEVEL:STATIC=OFF
 //Value Computed by CMake
 ResDataObject_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/ResDataObject
 
+//Value Computed by CMake
+SCF_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/SCF/SCF
+
+//Value Computed by CMake
+SCF_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+SCF_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/SCF/SCF
+
+//Value Computed by CMake
+SerialSCF_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/SCF/SerialSCF
+
+//Value Computed by CMake
+SerialSCF_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+SerialSCF_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/SCF/SerialSCF
+
+//Value Computed by CMake
+TcpipSCF_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/SCF/TcpipSCF
+
+//Value Computed by CMake
+TcpipSCF_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+TcpipSCF_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/SCF/TcpipSCF
+
+//Value Computed by CMake
+libCcosProc_BINARY_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/out/build/x64-Debug/DrvProc/libCcosProc
+
+//Value Computed by CMake
+libCcosProc_IS_TOP_LEVEL:STATIC=OFF
+
+//Value Computed by CMake
+libCcosProc_SOURCE_DIR:STATIC=D:/code/code/DriverPlatform-V3.1/DrvProc/libCcosProc
+
 
 ########################
 # INTERNAL cache entries
@@ -351,7 +549,7 @@ CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
 //ADVANCED property for variable: CMAKE_MT
 CMAKE_MT-ADVANCED:INTERNAL=1
 //number of local generators
-CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=5
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=27
 //Platform information initialized
 CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
 //noop for ranlib