From 5a8bbd2426aeacdbbb2fdb1a7f7a1adce0cac7f9 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 01 八月 2025 16:23:29 +0800
Subject: [PATCH] 1. 新增以下功能函数并集成: - InitStorage():初始化存储区域 - StartStorage():开始数据存储 - StopStorage():停止存储并自动提取、分析数据 - AnalyzeStoredData():分析指定端口数据,返回偏移量
---
SourceCode/Bond/EAPSimulator/CHsmsActive.cpp | 96 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 96 insertions(+), 0 deletions(-)
diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
index 94f5bb7..6d74a5c 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
@@ -170,6 +170,102 @@
return 0;
}
+int CHsmsActive::hsmsEDEventReport(bool bEnable, std::vector<int>& ids)
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 37, ++m_nSystemByte);
+ ISECS2Item* pItem = pMessage->getBody();
+ pItem->addBoolItem(bEnable, "CEED");
+ ISECS2Item* pItem2 = pItem->addItem();
+ for (auto item : ids) {
+ pItem2->addU4Item(item, "CEID");
+ }
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+
+ return 0;
+}
+
+int CHsmsActive::hsmsEDAlarmReport(bool bEnable, unsigned int id)
+{
+ char szEnable[2] = {128, 0};
+
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 5 | REPLY, 3, ++m_nSystemByte);
+ ISECS2Item* pItem = pMessage->getBody();
+ pItem->addBinaryItem(&szEnable[bEnable ? 0 : 1], 1, "ALED");
+ pItem->addU4Item(id, "ALID");
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+
+ return 0;
+}
+
+int CHsmsActive::hsmsDefineReports(std::map<unsigned int, std::vector<unsigned int>>& mapReport)
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 33, ++m_nSystemByte);
+ ISECS2Item* pItem = pMessage->getBody();
+ pItem->addU4Item(1, "DATAID");
+ ISECS2Item* pItemReportList = pItem->addItem();
+ for (auto item : mapReport) {
+ ISECS2Item* pItemReport = pItemReportList->addItem();
+ pItemReport->addU4Item(item.first, "RPTID");
+ ISECS2Item* pItemVidList = pItemReport->addItem();
+ for (auto vid : item.second) {
+ pItemVidList->addU4Item(vid, "VID");
+ }
+ }
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+
+ return 0;
+}
+
+int CHsmsActive::hsmsLinkEventReport(std::map<unsigned int, std::vector<unsigned int>>& mapEvent)
+{
+ if (mapEvent.empty()) return 0;
+
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 35, ++m_nSystemByte);
+ ISECS2Item* pItem = pMessage->getBody();
+ pItem->addU4Item(1, "DATAID");
+ ISECS2Item* pItemEventList = pItem->addItem();
+ for (auto item : mapEvent) {
+ ISECS2Item* pItemEvent = pItemEventList->addItem();
+ pItemEvent->addU4Item(item.first, "CEID");
+ ISECS2Item* pItemRptidList = pItemEvent->addItem();
+ for (auto vid : item.second) {
+ pItemRptidList->addU4Item(vid, "RPTID");
+ }
+ }
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+
+ return 0;
+}
+
+int CHsmsActive::hsmsConfigureSpooling(std::map<unsigned int, std::set<unsigned int>>& spoolingConfig)
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 43, ++m_nSystemByte);
+ if (spoolingConfig.size() > 0) {
+ for (auto s : spoolingConfig) {
+ ISECS2Item* pItemStreamList = pMessage->getBody()->addItem();
+ pItemStreamList->addU1Item(s.first, "STRID");
+ ISECS2Item* pItemFcnList = pItemStreamList->addItem();
+ for (auto f : s.second) {
+ pItemFcnList->addU1Item(f, "FCNID");
+ }
+ }
+ }
+
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+
+ return 0;
+}
+
int CHsmsActive::replyAck0(IMessage* pMessage)
{
return 0;
--
Gitblit v1.9.3