chenluhua1980
2026-01-09 6e0341c6356cdb6e527fbd89d1dc876f4e47ce46
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,13 +355,35 @@
   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;
}
int CHsmsActive::hsmsQueryPPIDList()
{
   IMessage* pMessage = nullptr;