LAPTOP-SNT8I5JK\Boounion
2025-08-15 697fa6b857fe202fe2e5f50d4ecf2c7268e527cc
SourceCode/Bond/EAPSimulator/CHsmsActive.cpp
@@ -3,6 +3,8 @@
#include "Log.h"
static unsigned int DATAID = 1;
CHsmsActive::CHsmsActive()
{
   m_listener = {};
@@ -69,6 +71,10 @@
      if (nStream == 5 && pHeader->function == 1) {
         // S5F1
         replyAck(5, 2, pMessage->getHeader()->systemBytes, 0, _T("ACK0"));
      }
      else if (nStream == 6 && pHeader->function == 11) {
         // S5F1
         replyAck(6, 12, pMessage->getHeader()->systemBytes, 0, _T("ACK0"));
      }
   };
@@ -289,6 +295,96 @@
   return 0;
}
int CHsmsActive::hsmsSelectedEquipmentStatusRequest(unsigned int SVID)
{
   IMessage* pMessage = nullptr;
   int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 1 | REPLY, 3, ++m_nSystemByte);
   pMessage->getBody()->addU4Item(SVID, "SVID");
   m_pActive->sendMessage(pMessage);
   HSMS_Destroy1Message(pMessage);
   return 0;
}
int CHsmsActive::hsmsQueryPPIDList()
{
   IMessage* pMessage = nullptr;
   int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 7 | REPLY, 19, ++m_nSystemByte);
   m_pActive->sendMessage(pMessage);
   HSMS_Destroy1Message(pMessage);
   return 0;
}
int CHsmsActive::hsmsCarrierActionRequest(unsigned int DATAID,
   const char* pszCarrierAction,
   const char* pszCarrierId,
   unsigned char PTN)
{
   IMessage* pMessage = nullptr;
   int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 3 | REPLY, 17, ++m_nSystemByte);
   pMessage->getBody()->addU4Item(DATAID, "DATAID");
   pMessage->getBody()->addItem(pszCarrierAction, "CARRIERACTION");
   pMessage->getBody()->addItem(pszCarrierId, "CARRIERID");
   pMessage->getBody()->addU1Item(PTN, "PTN");
   pMessage->getBody()->addItem();
   m_pActive->sendMessage(pMessage);
   HSMS_Destroy1Message(pMessage);
   return 0;
}
int CHsmsActive::hsmsProceedWithCarrier(unsigned int DATAID,
   const char* pszCarrierId,
   unsigned char PTN)
{
   return hsmsCarrierActionRequest(DATAID, "ProceedWithCarrier", pszCarrierId, PTN);
}
int CHsmsActive::hsmsCarrierRelease(unsigned int DATAID,
   const char* pszCarrierId,
   unsigned char PTN)
{
   return hsmsCarrierActionRequest(DATAID, "CarrierRelease", pszCarrierId, PTN);
}
int CHsmsActive::hsmsPRJobMultiCreate(std::vector<SERVO::CProcessJob*>& pjs)
{
   IMessage* pMessage = nullptr;
   int nRet = HSMS_Create1Message(pMessage, m_nSessionId, 16 | REPLY, 15, ++m_nSystemByte);
   char szMF[32] = {14};
   pMessage->getBody()->addU4Item(++DATAID, "DATAID");
   auto itemPjs = pMessage->getBody()->addItem();
   for (auto pj : pjs) {
      auto itemPj = itemPjs->addItem();
      itemPj->addItem(pj->id().c_str(), "PRJOBID");
      itemPj->addBinaryItem(szMF, 1, "MF");
      auto itemCarriers = itemPj->addItem();
      for (auto c : pj->carriers()) {
         auto itemCarrier = itemCarriers->addItem();
         itemCarrier->addItem(c.carrierId.c_str(), "CARRIERID");
         auto itemSlots = itemCarrier->addItem();
         for (auto s : c.slots) {
            itemSlots->addU1Item(s, "SLOTID");
         }
      }
      auto recipeItems = itemPj->addItem();
      recipeItems->addU1Item(1, "PRRECIPEMETHOD");
      recipeItems->addItem(pj->recipeSpec().c_str(), "RCPSPEC");
      recipeItems->addItem();
      itemPj->addBoolItem(false, "PRPROCESSSTART");
      itemPj->addItem();
   }
   m_pActive->sendMessage(pMessage);
   HSMS_Destroy1Message(pMessage);
   return 0;
}
int CHsmsActive::replyAck0(IMessage* pMessage)
{
   return 0;