From 6b306b81f8a07c3e36676a0a5c305b3b1ea68c60 Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期五, 09 一月 2026 15:33:05 +0800
Subject: [PATCH] 1.实现S1F23_QueryAllCEID和S1F11_QueryAllSVID
---
SourceCode/Bond/EAPSimulator/CHsmsActive.cpp | 39 +++++++
SourceCode/Bond/EAPSimulator/Resource.h | 4
SourceCode/Bond/Servo/HsmsPassive.h | 2
SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp | 44 ++++++++
SourceCode/Bond/EAPSimulator/CHsmsActive.h | 2
SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h | 2
SourceCode/Bond/Servo/HsmsPassive.cpp | 201 +++++++++++++++++++++++++++++++++++++--
7 files changed, 277 insertions(+), 17 deletions(-)
diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
index f7f7ffa..d4e6fe5 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
@@ -5,6 +5,19 @@
static unsigned short DATAID = 1;
+// Truncated SECS message logging to avoid overly long strings crashing UI/log
+static void LogSecsMessageBrief(const char* tag, IMessage* pMessage, size_t maxLen = 1024)
+{
+ if (pMessage == nullptr) return;
+ const char* msgStr = pMessage->toString();
+ if (msgStr == nullptr) return;
+ std::string buf(msgStr);
+ if (buf.size() > maxLen) {
+ buf = buf.substr(0, maxLen) + "...<truncated>";
+ }
+ LOGI("%s%s", tag, buf.c_str());
+}
+
CHsmsActive::CHsmsActive()
{
m_listener = {};
@@ -65,8 +78,8 @@
int nStream = (pHeader->stream & 0x7F);
TRACE("鏀跺埌娑堟伅 S%dF%d================\n", pHeader->stream & 0x7F, pHeader->function);
- TRACE("Body:%s\n", pMessage->toString());
- LOGI("onRecvDataMessage(%s).", pMessage->toString());
+ LogSecsMessageBrief("Body:", pMessage);
+ LogSecsMessageBrief("onRecvDataMessage:", pMessage);
if (nStream == 5 && pHeader->function == 1) {
// S5F1
@@ -349,6 +362,28 @@
return 0;
}
+int CHsmsActive::hsmsQueryAllStatusVariables()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 11, ++m_nSystemByte);
+ // Host sends L:0 (empty list) to request all SVIDs.
+ pMessage->getBody()->addItem(); // empty list
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
+int CHsmsActive::hsmsQueryAllCollectionEvents()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 23, ++m_nSystemByte);
+ // Host sends L:0 (empty list) to request all CEIDs.
+ pMessage->getBody()->addItem(); // empty list
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
int CHsmsActive::hsmsQueryPPIDList()
{
IMessage* pMessage = nullptr;
diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.h b/SourceCode/Bond/EAPSimulator/CHsmsActive.h
index cb63df1..6362b6e 100644
--- a/SourceCode/Bond/EAPSimulator/CHsmsActive.h
+++ b/SourceCode/Bond/EAPSimulator/CHsmsActive.h
@@ -79,6 +79,8 @@
// 鏌ヨ鍙橀噺
int hsmsSelectedEquipmentStatusRequest(unsigned int SVID);
+ int hsmsQueryAllStatusVariables(); // S1F11
+ int hsmsQueryAllCollectionEvents(); // S1F23
// 鏌ヨPPID List
int hsmsQueryPPIDList();
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
index 1ec5d11..93dd187 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.cpp
@@ -103,6 +103,8 @@
ON_BN_CLICKED(IDC_BUTTON_CTRL_ONLINE_REMOTE, &CEAPSimulatorDlg::OnBnClickedButtonCtrlOnlineRemote)
ON_BN_CLICKED(IDC_BUTTON_QUERY_CONTROL_STATE, &CEAPSimulatorDlg::OnBnClickedButtonQueryControlState)
ON_BN_CLICKED(IDC_BUTTON_QUERY_PROCESS_STATE, &CEAPSimulatorDlg::OnBnClickedButtonQueryProcessState)
+ ON_BN_CLICKED(IDC_BUTTON_QUERY_ALL_SVID, &CEAPSimulatorDlg::OnBnClickedButtonQueryAllSvid)
+ ON_BN_CLICKED(IDC_BUTTON_QUERY_ALL_CEID, &CEAPSimulatorDlg::OnBnClickedButtonQueryAllCeid)
END_MESSAGE_MAP()
@@ -239,12 +241,36 @@
}
// S1F3 Query ProcessState (SVID=700) button
{
- CRect rc(14, 152, 14 + 140, 152 + 14); // dialog units, new row
+ CRect rc(14 + 140 + 5, 136, 14 + 140 + 5 + 140, 136 + 14); // dialog units, same row offset
MapDialogRect(&rc);
HWND hBtn = ::CreateWindow(_T("BUTTON"), _T("S1F3_QueryProcessState"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
rc.left, rc.top, rc.Width(), rc.Height(),
m_hWnd, (HMENU)IDC_BUTTON_QUERY_PROCESS_STATE, AfxGetInstanceHandle(), nullptr);
+ if (hBtn != nullptr) {
+ ::SendMessage(hBtn, WM_SETFONT, (WPARAM)GetFont()->GetSafeHandle(), TRUE);
+ }
+ }
+ // S1F11 QueryAllSVID
+ {
+ CRect rc(14 + 140 + 5 + 140 + 5, 136, 14 + 140 + 5 + 140 + 5 + 140, 136 + 14); // dialog units, next row
+ MapDialogRect(&rc);
+ HWND hBtn = ::CreateWindow(_T("BUTTON"), _T("S1F11_QueryAllSVID"),
+ WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
+ rc.left, rc.top, rc.Width(), rc.Height(),
+ m_hWnd, (HMENU)IDC_BUTTON_QUERY_ALL_SVID, AfxGetInstanceHandle(), nullptr);
+ if (hBtn != nullptr) {
+ ::SendMessage(hBtn, WM_SETFONT, (WPARAM)GetFont()->GetSafeHandle(), TRUE);
+ }
+ }
+ // S1F23 QueryAllCEID
+ {
+ CRect rc(14, 152, 14 + 140, 152 + 14); // dialog units, next row
+ MapDialogRect(&rc);
+ HWND hBtn = ::CreateWindow(_T("BUTTON"), _T("S1F23_QueryAllCEID"),
+ WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
+ rc.left, rc.top, rc.Width(), rc.Height(),
+ m_hWnd, (HMENU)IDC_BUTTON_QUERY_ALL_CEID, AfxGetInstanceHandle(), nullptr);
if (hBtn != nullptr) {
::SendMessage(hBtn, WM_SETFONT, (WPARAM)GetFont()->GetSafeHandle(), TRUE);
}
@@ -377,6 +403,12 @@
}
if (GetDlgItem(IDC_BUTTON_QUERY_PROCESS_STATE) != nullptr) {
GetDlgItem(IDC_BUTTON_QUERY_PROCESS_STATE)->EnableWindow(enabled);
+ }
+ if (GetDlgItem(IDC_BUTTON_QUERY_ALL_SVID) != nullptr) {
+ GetDlgItem(IDC_BUTTON_QUERY_ALL_SVID)->EnableWindow(enabled);
+ }
+ if (GetDlgItem(IDC_BUTTON_QUERY_ALL_CEID) != nullptr) {
+ GetDlgItem(IDC_BUTTON_QUERY_ALL_CEID)->EnableWindow(enabled);
}
}
@@ -552,3 +584,13 @@
{
theApp.m_model.m_pHsmsActive->hsmsSelectedEquipmentStatusRequest(SVID_CurrentProcessState);
}
+
+void CEAPSimulatorDlg::OnBnClickedButtonQueryAllSvid()
+{
+ theApp.m_model.m_pHsmsActive->hsmsQueryAllStatusVariables();
+}
+
+void CEAPSimulatorDlg::OnBnClickedButtonQueryAllCeid()
+{
+ theApp.m_model.m_pHsmsActive->hsmsQueryAllCollectionEvents();
+}
diff --git a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
index 6dd9524..6bfda45 100644
--- a/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
+++ b/SourceCode/Bond/EAPSimulator/EAPSimulatorDlg.h
@@ -69,4 +69,6 @@
afx_msg void OnBnClickedButtonCtrlOnlineRemote();
afx_msg void OnBnClickedButtonQueryControlState();
afx_msg void OnBnClickedButtonQueryProcessState();
+ afx_msg void OnBnClickedButtonQueryAllSvid();
+ afx_msg void OnBnClickedButtonQueryAllCeid();
};
diff --git a/SourceCode/Bond/EAPSimulator/Resource.h b/SourceCode/Bond/EAPSimulator/Resource.h
index 35a9c71..21dbcc7 100644
--- a/SourceCode/Bond/EAPSimulator/Resource.h
+++ b/SourceCode/Bond/EAPSimulator/Resource.h
@@ -63,6 +63,8 @@
#define IDC_BUTTON_CTRL_ONLINE_REMOTE 1045
#define IDC_BUTTON_QUERY_CONTROL_STATE 1046
#define IDC_BUTTON_QUERY_PROCESS_STATE 1047
+#define IDC_BUTTON_QUERY_ALL_SVID 1048
+#define IDC_BUTTON_QUERY_ALL_CEID 1049
// Next default values for new objects
//
@@ -70,7 +72,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 143
#define _APS_NEXT_COMMAND_VALUE 32771
-#define _APS_NEXT_CONTROL_VALUE 1048
+#define _APS_NEXT_CONTROL_VALUE 1050
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
diff --git a/SourceCode/Bond/Servo/HsmsPassive.cpp b/SourceCode/Bond/Servo/HsmsPassive.cpp
index 20ae2db..d35b5b8 100644
--- a/SourceCode/Bond/Servo/HsmsPassive.cpp
+++ b/SourceCode/Bond/Servo/HsmsPassive.cpp
@@ -20,6 +20,19 @@
const char* ACK0 = &ACK[0];
const char* ACK1 = &ACK[1];
+// Log SECS-II message briefly to avoid huge strings causing issues.
+static void LogSecsMessageBrief(const char* tag, IMessage* pMessage, size_t maxLen = 1024)
+{
+ if (pMessage == nullptr) return;
+ const char* msgStr = pMessage->toString();
+ if (msgStr == nullptr) return;
+ std::string buf(msgStr);
+ if (buf.size() > maxLen) {
+ buf = buf.substr(0, maxLen) + "...<truncated>";
+ }
+ LOGI("%s%s", tag, buf.c_str());
+}
+
unsigned __stdcall CimWorkThreadFunction(LPVOID lpParam)
{
CHsmsPassive* pPassive = (CHsmsPassive*)lpParam;
@@ -1298,13 +1311,19 @@
HEADER* pHeader = pMessage->getHeader();
int nStream = (pHeader->stream & 0x7F);
- LOGI("<HSMS>[Received]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[Received]", pMessage);
if (nStream == 1 && pHeader->function == 1) {
// S1F1
replyAreYouThere(pMessage);
}
else if (nStream == 1 && pHeader->function == 3) {
replySelectedEquipmentStatusData(pMessage);
+ }
+ else if (nStream == 1 && pHeader->function == 11) {
+ replyStatusVariableNamelistRequest(pMessage);
+ }
+ else if (nStream == 1 && pHeader->function == 23) {
+ replyCollectionEventNamelistRequest(pMessage);
}
else if (nStream == 1 && pHeader->function == 13) {
replyEstablishCommunications(pMessage);
@@ -1632,7 +1651,7 @@
ASSERT(pMessage);
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]SysByte=%u sessionId:%d", pMessage->getHeader()->systemBytes, pMessage->getHeader()->sessionId);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
int nRet = WaitForSingleObject(pAction->getEvent(), pAction->getTimeout() * 1000);
if (nRet == WAIT_TIMEOUT) {
@@ -1658,7 +1677,7 @@
ASSERT(pMessage);
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]SysByte=%u sessionId:%d", pMessage->getHeader()->systemBytes, pMessage->getHeader()->sessionId);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
}
}
@@ -1682,7 +1701,7 @@
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
HSMS_Destroy1Message(pMessage);
}
@@ -1725,7 +1744,7 @@
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
HSMS_Destroy1Message(pMessage);
return 0;
@@ -1788,7 +1807,7 @@
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
HSMS_Destroy1Message(pMessage);
return 0;
@@ -1835,12 +1854,168 @@
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
HSMS_Destroy1Message(pMessage);
return 0;
+}
+
+// S1F11
+int CHsmsPassive::replyStatusVariableNamelistRequest(IMessage* pRecv)
+{
+ if (m_pPassive == NULL || STATE::SELECTED != m_pPassive->getState()) {
+ return ER_NOTSELECT;
+ }
+
+ std::vector<unsigned short> reqIds;
+ ISECS2Item* pBody = pRecv->getBody();
+ if (pBody != nullptr && pBody->getType() == SITYPE::L) {
+ const int sz = pBody->getSubItemSize();
+ for (int i = 0; i < sz; ++i) {
+ unsigned short id = 0;
+ if (pBody->getSubItemU2(i, id)) {
+ reqIds.push_back(id);
+ }
+ }
+ }
+
+ // Build response list items: {L:3 SVID, SVNAME, UNITS}
+ std::vector<unsigned short> svids;
+ std::set<unsigned short> requested(reqIds.begin(), reqIds.end());
+ Lock();
+ if (reqIds.empty()) {
+ for (auto v : m_variabels) {
+ svids.push_back(static_cast<unsigned short>(v->getVarialbleId()));
+ }
+ }
+ else {
+ // include requested IDs (existing + unknown marker)
+ for (auto id : requested) {
+ svids.push_back(id);
+ }
+ }
+ Unlock();
+
+ IMessage* pMessage = NULL;
+ HSMS_Create1Message(pMessage, m_nSessionId, 1, 12, pRecv->getHeader()->systemBytes);
+ ASSERT(pMessage);
+
+ ISECS2Item* pList = pMessage->getBody(); // Body is L[n] of {SVID, SVNAME, UNITS}
+ for (auto id : svids) {
+ ISECS2Item* pEntry = pList->addItem();
+ pEntry->addU2Item(id, "SVID");
+ SERVO::CVariable* v = getVariable((int)id);
+ if (v != nullptr) {
+ pEntry->addItem(v->getName().c_str(), "SVNAME");
+ // Use remark as UNITS if provided; empty string if none.
+ pEntry->addItem(v->getRemark().c_str(), "UNITS");
+ }
+ else {
+ // Unknown SVID: A:0 for name/units
+ pEntry->addItem("", "SVNAME");
+ pEntry->addItem("", "UNITS");
+ }
+ }
+
+ m_pPassive->sendMessage(pMessage);
+ LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
+ pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
+ HSMS_Destroy1Message(pMessage);
+
+ return ER_NOERROR;
+}
+
+// S1F23
+int CHsmsPassive::replyCollectionEventNamelistRequest(IMessage* pRecv)
+{
+ if (m_pPassive == NULL || STATE::SELECTED != m_pPassive->getState()) {
+ return ER_NOTSELECT;
+ }
+
+ std::vector<unsigned short> reqIds;
+ ISECS2Item* pBody = pRecv->getBody();
+ if (pBody != nullptr && pBody->getType() == SITYPE::L) {
+ const int sz = pBody->getSubItemSize();
+ for (int i = 0; i < sz; ++i) {
+ unsigned short id = 0;
+ if (pBody->getSubItemU2(i, id)) {
+ reqIds.push_back(id);
+ }
+ }
+ }
+
+ struct CEInfo {
+ unsigned short id{ 0 };
+ std::string name;
+ std::vector<unsigned short> vids;
+ };
+ std::vector<CEInfo> ceInfos;
+ {
+ Lock();
+ if (reqIds.empty()) {
+ for (auto e : m_collectionEvents) {
+ if (e == nullptr) continue;
+ CEInfo info;
+ info.id = static_cast<unsigned short>(e->getEventId());
+ info.name = e->getName();
+ std::set<unsigned short> vidSet;
+ for (auto rpt : e->getReports()) {
+ if (rpt == nullptr) continue;
+ for (auto vid : rpt->getVids()) {
+ vidSet.insert(static_cast<unsigned short>(vid));
+ }
+ }
+ info.vids.assign(vidSet.begin(), vidSet.end());
+ ceInfos.push_back(std::move(info));
+ }
+ }
+ else {
+ for (auto id : reqIds) {
+ CEInfo info;
+ info.id = id;
+ SERVO::CCollectionEvent* e = getEvent(id);
+ if (e != nullptr) {
+ info.name = e->getName();
+ std::set<unsigned short> vidSet;
+ for (auto rpt : e->getReports()) {
+ if (rpt == nullptr) continue;
+ for (auto vid : rpt->getVids()) {
+ vidSet.insert(static_cast<unsigned short>(vid));
+ }
+ }
+ info.vids.assign(vidSet.begin(), vidSet.end());
+ }
+ ceInfos.push_back(std::move(info));
+ }
+ }
+ Unlock();
+ }
+
+ IMessage* pMessage = NULL;
+ HSMS_Create1Message(pMessage, m_nSessionId, 1, 24, pRecv->getHeader()->systemBytes);
+ ASSERT(pMessage);
+
+ ISECS2Item* pList = pMessage->getBody(); // Body is L[n] of {CEID, CENAME, L[VIDs]}
+ for (const auto& info : ceInfos) {
+ ISECS2Item* pEntry = pList->addItem();
+ pEntry->addU2Item(info.id, "CEID");
+ pEntry->addItem(info.name.c_str(), "CENAME"); // empty if unknown
+ ISECS2Item* pVidList = pEntry->addItem();
+ for (auto vid : info.vids) {
+ pVidList->addU2Item(vid, "VID");
+ }
+ }
+
+ m_pPassive->sendMessage(pMessage);
+ LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
+ pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
+ HSMS_Destroy1Message(pMessage);
+
+ return ER_NOERROR;
}
// S2F13
@@ -1886,7 +2061,7 @@
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
HSMS_Destroy1Message(pMessage);
return 0;
@@ -2287,7 +2462,7 @@
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
HSMS_Destroy1Message(pMessage);
return 0;
@@ -2392,7 +2567,7 @@
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
HSMS_Destroy1Message(pMessage);
return 0;
@@ -2565,7 +2740,7 @@
m_pPassive->sendMessage(pReply);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pReply->getHeader()->sessionId, pReply->getHeader()->sType, pReply->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pReply->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pReply);
HSMS_Destroy1Message(pReply);
@@ -2595,7 +2770,7 @@
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
HSMS_Destroy1Message(pMessage);
return 0;
}
@@ -2682,7 +2857,7 @@
m_pPassive->sendMessage(pMessage);
LOGI("<HSMS>[SEND]sessionId:%d, sType:%d systemBytes:%d",
pMessage->getHeader()->sessionId, pMessage->getHeader()->sType, pMessage->getHeader()->systemBytes);
- LOGI("<HSMS>[SEND]%s", pMessage->toString());
+ LogSecsMessageBrief("<HSMS>[SEND]", pMessage);
HSMS_Destroy1Message(pMessage);
diff --git a/SourceCode/Bond/Servo/HsmsPassive.h b/SourceCode/Bond/Servo/HsmsPassive.h
index e38ccb5..3461a77 100644
--- a/SourceCode/Bond/Servo/HsmsPassive.h
+++ b/SourceCode/Bond/Servo/HsmsPassive.h
@@ -234,6 +234,8 @@
int replyAreYouThere(IMessage* pRecv);
int replyEstablishCommunications(IMessage* pRecv);
int replySelectedEquipmentStatusData(IMessage* pRecv);
+ int replyStatusVariableNamelistRequest(IMessage* pRecv); // S1F11/S1F12
+ int replyCollectionEventNamelistRequest(IMessage* pRecv); // S1F23/S1F24
int replyOnLine(IMessage* pRecv);
int replyOffLine(IMessage* pRecv);
int replyEquipmentConstantRequest(IMessage* pRecv);
--
Gitblit v1.9.3