From 2ebccf831b56d30089924f2eefa2d790e2b8f3fc Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期四, 07 八月 2025 09:20:21 +0800
Subject: [PATCH] 1.为CVariable增加值的设置和获取 2.当发生Port状态改变为InUse时,此时也刚好获取到CarrierID,上报S6F11_CarrierID_Readed

---
 SourceCode/Bond/Servo/HsmsPassive.cpp |   66 ++++++++++++++++++++++++++++++---
 1 files changed, 60 insertions(+), 6 deletions(-)

diff --git a/SourceCode/Bond/Servo/HsmsPassive.cpp b/SourceCode/Bond/Servo/HsmsPassive.cpp
index 76bb93a..7a80fd5 100644
--- a/SourceCode/Bond/Servo/HsmsPassive.cpp
+++ b/SourceCode/Bond/Servo/HsmsPassive.cpp
@@ -256,12 +256,39 @@
 	return nullptr;
 }
 
+SERVO::CVariable* CHsmsPassive::getVariable(const char* pszName)
+{
+	for (auto item : m_variabels) {
+		if (item->getName().compare(pszName) == 0) {
+			return item;
+		}
+	}
+
+	return nullptr;
+}
+
 void CHsmsPassive::clearAllVariabel()
 {
 	for (auto item : m_variabels) {
 		delete item;
 	}
 	m_variabels.clear();
+}
+
+void CHsmsPassive::setVariableValue(const char* pszName, __int64 value)
+{
+	auto v = getVariable(pszName);
+	if (v != nullptr) {
+		v->setValue(value);
+	}
+}
+
+void CHsmsPassive::setVariableValue(const char* pszName, const char* value)
+{
+	auto v = getVariable(pszName);
+	if (v != nullptr) {
+		v->setValue(value);
+	}
 }
 
 int CHsmsPassive::loadReports(const char* pszFilepath)
@@ -1095,7 +1122,7 @@
 
 	// 妫�楠岀粨鏋滄槸鍚︽纭�
 	for (auto item : m_collectionEvents) {
-		LOGE("=== ceid:%d, prtid:%d", item->getEventId(), item->getPortID());
+		LOGE("=== ceid:%d, prtid:%d", item->getEventId(), item->getFirstPortID());
 	}
 	
 MYREPLY:
@@ -1450,15 +1477,19 @@
 }
 
 // S6F11
-int CHsmsPassive::requestEventReportSend(unsigned int DATAID, unsigned int CEID, const std::vector<std::string>& values)
+static unsigned int DATAID = 1;
+int CHsmsPassive::requestEventReportSend(unsigned int CEID)
 {
 	SERVO::CCollectionEvent* pEvent = getEvent(CEID);
 	if (pEvent == nullptr) {
 		return ER_NO_EVENT;
 	}
-	if (pEvent == nullptr) {
+
+	SERVO::CReport* pReport = pEvent->getFirstReport();
+	if (pReport == nullptr) {
 		return ER_UNLINK_EVENT_REPORT;
 	}
+
 
 	Lock();
 	CHsmsAction* pAction = new CHsmsAction(ACTION_EVENT_REPORT, TRUE, m_nActionTimeout);
@@ -1466,14 +1497,16 @@
 	HSMS_Create1Message(pMessage, m_nSessionId, 6 | REPLY, 11, ++m_nSystemByte);
 	ASSERT(pMessage);
 	ISECS2Item* pItem = pMessage->getBody();
-	pItem->addU4Item(DATAID, "DATAID");
+	pItem->addU4Item(++DATAID, "DATAID");
 	pItem->addU4Item(CEID, "CEID");
 	ISECS2Item* pItemList1 = pItem->addItem();
 	ISECS2Item* pItemList2 = pItemList1->addItem();
-	pItemList2->addU4Item(pEvent->getPortID(), "RPTID");
+	pItemList2->addU4Item(pReport->getReportId(), "RPTID");
 	ISECS2Item* pItemList3 = pItemList2->addItem();
+
+	auto values = pReport->getVariables();
 	for (auto item : values) {
-		pItemList3->addItem(item.c_str(), "V");
+		pItemList3->addItem(item->getValue().c_str(), "V");
 	}
 	pAction->setSendMessage(pMessage);
 	if (m_pPassive == NULL || STATE::SELECTED != m_pPassive->getState()) {
@@ -1488,5 +1521,26 @@
 	return ER_NOERROR;
 }
 
+int CHsmsPassive::requestEventReportSend(const char* pszEventName)
+{
+	SERVO::CCollectionEvent* pEvent = nullptr;
+	for (auto e : m_collectionEvents) {
+		if (e->getName().compare(pszEventName) == 0) {
+			pEvent = e;
+			break;
+		}
+	}
+	if (pEvent == nullptr) {
+		return ER_NO_EVENT;
+	}
+	return requestEventReportSend(pEvent->getEventId());
+}
+
+int CHsmsPassive::requestEventReportSend_CarrierID_Readed()
+{
+	return requestEventReportSend("CarrierID_Readed");
+}
+
+
 
 

--
Gitblit v1.9.3