LAPTOP-SNT8I5JK\Boounion
2025-07-08 d9c3fbc92d2a775674943d4ab882fbd77f0db688
SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
@@ -1,5 +1,6 @@
#include "pch.h"
#include "CHsmsActive.h"
#include "Log.h"
CHsmsActive::CHsmsActive()
@@ -24,7 +25,6 @@
{
   m_strIp = pszIp;
   m_nPort = port;
   ++m_nSessionId;
   auto onStatusChanged = [&](void* pFrom, ACTIVESTATE state) -> void {
      if (m_listener.onStateChanged != nullptr) {
@@ -32,16 +32,21 @@
      }
      if (ACTIVESTATE::NOT_SELECTED == state) {
         LOGI("Active state changed(NOT_SELECTED).");
         hsmsSelectRequest();
      }
      else if (ACTIVESTATE::SELECTED == state) {
         LOGI("Active state changed(SELECTED).");
         hsmsEstablishCommunications();
      }
      else if (ACTIVESTATE::NOT_CONNECTED == state) {
         LOGI("Active state changed(NOT_CONNECTED).");
         m_pActive->disconnect();
      }
   };
   auto onRecvSysMessage = [&](void* pFrom, IMessage* pMessage) -> void {
      LOGI("onRecvSysMessage(sessionId:%d, sType:%d).",
         pMessage->getHeader()->sessionId, pMessage->getHeader()->sType);
      TRACE("sessionId:%d, sType:%d\n", pMessage->getHeader()->sessionId, pMessage->getHeader()->sType);
   };
@@ -57,6 +62,7 @@
      HEADER* pHeader = pMessage->getHeader();
      TRACE("收到消息 S%dF%d================\n", pHeader->stream & 0x7F, pHeader->function);
      TRACE("Body:%s\n", pMessage->toString());
      LOGI("onRecvDataMessage(%s).", pMessage->toString());
   };
   ActiveListener listener;
@@ -113,3 +119,30 @@
   return 0;
}
int CHsmsActive::hsmsAreYouThere()
{
   IMessage* pMessage = nullptr;
   int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 1, ++m_nSystemByte);
   m_pActive->sendMessage(pMessage);
   HSMS_Destroy1Message(pMessage);
   return 0;
}
int CHsmsActive::hsmsDatetimeSync()
{
   CTime time = CTime::GetCurrentTime();
   char szTime[256];
   sprintf_s(szTime, 256, _T("%4d%02d%02d%02d%02d%02d00"), time.GetYear(),
      time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
   IMessage* pMessage = nullptr;
   int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 2 | REPLY, 31, ++m_nSystemByte);
   ISECS2Item* pItem = pMessage->getBody();
   pItem->setString((const char*)szTime, _T("Date time"));
   m_pActive->sendMessage(pMessage);
   HSMS_Destroy1Message(pMessage);
   return 0;
}