From 9198ac12e4e2ff64a2cf65c32d576f02d54c346a Mon Sep 17 00:00:00 2001
From: chenluhua1980 <Chenluhua@qq.com>
Date: 星期六, 10 一月 2026 16:50:32 +0800
Subject: [PATCH] 1.S1F3_CurrentRecipe,S6F11_RecipeChange实现。
---
SourceCode/Bond/EAPSimulator/CHsmsActive.cpp | 97 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 94 insertions(+), 3 deletions(-)
diff --git a/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp b/SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
index 5b98173..b06c325 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
@@ -140,6 +153,48 @@
m_pActive->sendMessage(pMessage);
HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
+int CHsmsActive::hsmsRequestOnline()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 17, ++m_nSystemByte);
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
+int CHsmsActive::hsmsRequestOffline()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 15, ++m_nSystemByte);
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
+int CHsmsActive::hsmsGoLocal()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 41, ++m_nSystemByte);
+ ISECS2Item* pBody = pMessage->getBody();
+ pBody->addItem("GoLocal", "RCMD");
+ pBody->addItem(); // L: empty params
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
+int CHsmsActive::hsmsGoRemote()
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 41, ++m_nSystemByte);
+ ISECS2Item* pBody = pMessage->getBody();
+ pBody->addItem("GoRemote", "RCMD");
+ pBody->addItem(); // L: empty params
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
return 0;
}
@@ -300,10 +355,32 @@
IMessage* pMessage = nullptr;
int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 3, ++m_nSystemByte);
- pMessage->getBody()->addU4Item(SVID, "SVID");
+ pMessage->getBody()->addU2Item(static_cast<unsigned short>(SVID), "SVID");
m_pActive->sendMessage(pMessage);
HSMS_Destroy1Message(pMessage);
+ 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;
}
@@ -317,6 +394,20 @@
return 0;
}
+int CHsmsActive::hsmsDeletePPID(const std::vector<std::string>& ppids)
+{
+ IMessage* pMessage = nullptr;
+ int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 7 | REPLY, 17, ++m_nSystemByte);
+ if (nRet != 0 || pMessage == nullptr) return -1;
+ ISECS2Item* pBody = pMessage->getBody();
+ for (const auto& ppid : ppids) {
+ pBody->addItem(ppid.c_str(), "PPID");
+ }
+ m_pActive->sendMessage(pMessage);
+ HSMS_Destroy1Message(pMessage);
+ return 0;
+}
+
int CHsmsActive::hsmsCarrierActionRequest(unsigned int DATAID,
const char* pszCarrierAction,
const char* pszCarrierId,
--
Gitblit v1.9.3