mrDarker
2025-04-01 1bc4fecb9cc1641ed3ad0a2fda30766fc06fb13e
SourceCode/Bond/Servo/CEqCassetteTransferStateStep.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,293 @@
#include "stdafx.h"
#include "CEqCassetteTransferStateStep.h"
#include "Log.h"
#include "Common.h"
namespace SERVO {
   CEqCassetteTransferStateStep::CEqCassetteTransferStateStep()
   {
      m_nPortStatusDev = 0;
      m_nPortStatus = 0;
      m_nCassetteSequenceNo = 0;
      m_nLoadingCassetteType = 0;
      m_nQTimeFlag = 0;
      m_nCassetteMappingState = 0;
      m_nCassetteStatus = 0;
   }
   CEqCassetteTransferStateStep::~CEqCassetteTransferStateStep()
   {
   }
   void CEqCassetteTransferStateStep::getAttributeVector(CAttributeVector& attrubutes)
   {
      CReadStep::getAttributeVector(attrubutes);
      std::string strTemp;
      attrubutes.addAttribute(new CAttribute("Dev",
         ("W" + CToolUnits::toHexString(m_nPortStatusDev, strTemp)).c_str(), ""));
      attrubutes.addAttribute(new CAttribute("Port Status",
         getPortStatusDescription(strTemp).c_str(), ""));
      attrubutes.addAttribute(new CAttribute("CassetteSequenceNo",
         std::to_string(m_nCassetteSequenceNo).c_str(), ""));
      attrubutes.addAttribute(new CAttribute("CassetteID",
         m_strCassetteID.c_str(), ""));
      attrubutes.addAttribute(new CAttribute("LoadingCassetteType",
         getLoadingCassetteTypeDescription(strTemp).c_str(), ""));
      attrubutes.addAttribute(new CAttribute("Q-Time Flag",
         getQTimeFlagDescription(strTemp).c_str(), ""));
      attrubutes.addAttribute(new CAttribute("CassetteMappingState",
         getCassetteMappingStateDescription(strTemp).c_str(), ""));
      attrubutes.addAttribute(new CAttribute("CassetteStatus",
         getCassetteStatusDescription(strTemp).c_str(), ""));
   }
   int CEqCassetteTransferStateStep::onReadData()
   {
      CReadStep::onReadData();
      char szBuffer[64];
      int nRet = m_pCclink->ReadData2(m_station, DeviceType::W, m_nPortStatusDev,
         64, szBuffer);
      if (0 != nRet) {
         return -1;
      }
      // Port status,
      // æ³¨ï¼šä¹Ÿå¯ä»¥æ ¹æ®m_nSignalType的值来判断状态值
      m_nPortStatus = (unsigned int)CToolUnits::toInt16(&szBuffer[0]);
      // Cassette序号、ID
      m_nCassetteSequenceNo = (unsigned int)CToolUnits::toInt16(&szBuffer[2]);
      convertString(&szBuffer[4], 20, m_strCassetteID);
      // Job Existence Slot
      if (PORT_INUSE == m_nPortStatus) {
      }
      // Q-Time
      if (PORT_UNLOAD_READY == m_nPortStatus) {
         m_nQTimeFlag = (unsigned int)CToolUnits::toInt16(&szBuffer[50]);
      }
      // å…¶å®ƒ
      m_nCassetteMappingState = (unsigned int)CToolUnits::toInt16(&szBuffer[52]);
      m_nCassetteStatus = (unsigned int)CToolUnits::toInt16(&szBuffer[54]);
      if (m_nCassetteStatus > 1) {
         m_nLoadingCassetteType = (unsigned int)CToolUnits::toInt16(&szBuffer[48]);
      }
      LOGI("<CCassetteTranserStateStep>Port status changed<Dev:%d, Status:%d, CassetteSequenceNo:%d>",
         m_nPortStatusDev, m_nPortStatus, m_nCassetteSequenceNo);
      return 0;
   }
   int CEqCassetteTransferStateStep::onComplete()
   {
      CReadStep::onComplete();
      LOGI("<CCassetteTranserStateStep> onComplete.");
      return 0;
   }
   int CEqCassetteTransferStateStep::onTimeout()
   {
      CReadStep::onTimeout();
      LOGI("<CCassetteTranserStateStep> onTimeout.");
      return 0;
   }
   void CEqCassetteTransferStateStep::setPortStatusDev(int nDev)
   {
      m_nPortStatusDev = nDev;
   }
   int CEqCassetteTransferStateStep::getPortStatus()
   {
      return m_nPortStatus;
   }
   int CEqCassetteTransferStateStep::getCassetteSequenceNo()
   {
      return m_nCassetteSequenceNo;
   }
   std::string& CEqCassetteTransferStateStep::getCassetteID()
   {
      return m_strCassetteID;
   }
   int CEqCassetteTransferStateStep::getLoadingCassetteType()
   {
      return m_nLoadingCassetteType;
   }
   int CEqCassetteTransferStateStep::getQTimeFlag()
   {
      return m_nQTimeFlag;
   }
   int CEqCassetteTransferStateStep::getCassetteMappingState()
   {
      return m_nCassetteMappingState;
   }
   int CEqCassetteTransferStateStep::getCassetteStatus()
   {
      return m_nCassetteStatus;
   }
   /*
    1: Load Ready(Load Request)
    2: Loaded
    3: In Use (Load Complete)
    4: Unload Ready (Unload Request)
    5: Empty (Unload Complete)
    6: Blocked
    */
   std::string& CEqCassetteTransferStateStep::getPortStatusDescription(std::string& strDescription)
   {
      switch (m_nPortStatus) {
      case PORT_LOAD_READY:
         strDescription = _T("Load Ready(Load Request)");
         break;
      case PORT_LOADED:
         strDescription = _T("Loaded");
         break;
      case PORT_INUSE:
         strDescription = _T("In Use (Load Complete)");
         break;
      case PORT_UNLOAD_READY:
         strDescription = _T("Unload Ready (Unload Request)");
         break;
      case PORT_EMPTY:
         strDescription = _T("Empty (Unload Complete)");
         break;
      case PORT_BLOCKED:
         strDescription = _T("Blocked");
         break;
      default:
         strDescription = _T("");
         break;
      }
      return strDescription;
   }
   /*
    1: Actual Cassette
    2: Empty Cassette
      *Include this item only when cassette exists
    */
   std::string& CEqCassetteTransferStateStep::getLoadingCassetteTypeDescription(std::string& strDescription)
   {
      switch (m_nLoadingCassetteType) {
      case PORT_LOADING_CASSETTE_ACTUAL:
         strDescription = _T("Actual Cassette");
         break;
      case PORT_LOADING_CASSETTE_EMPTY:
         strDescription = _T("Empty Cassette");
         break;
      default:
         strDescription = _T("");
         break;
      }
      return strDescription;
   }
   /*
    1: Normal Un-loading
    2: Q-Time Over & Un-loading
       * Include this item only when Port Status is 'Unload Ready'
    */
   std::string& CEqCassetteTransferStateStep::getQTimeFlagDescription(std::string& strDescription)
   {
      switch (m_nQTimeFlag) {
      case Q_TIME_NORMAL:
         strDescription = _T("Normal Un-loading");
         break;
      case Q_TIME_OVER:
         strDescription = _T("Q-Time Over & Un-loading");
         break;
      default:
         strDescription = _T("");
         break;
      }
      return strDescription;
   }
   /*
    1: mapping use
    2: mapping not use
    */
   std::string& CEqCassetteTransferStateStep::getCassetteMappingStateDescription(std::string& strDescription)
   {
      switch (m_nCassetteMappingState) {
      case CASSETTE_MAPPING_USE:
         strDescription = _T("mapping use");
         break;
      case CASSETTE_MAPPING_NOT_USE:
         strDescription = _T("mapping not use");
         break;
      default:
         strDescription = _T("");
         break;
      }
      return strDescription;
   }
   /*
    1: No Cassette Exist
    2: Waiting for Cassette Data
    3: Waiting for Start Command
    4: Waiting for Processing
    5: In Processing
    6: Process Paused
    7: Process Completed
    */
   std::string& CEqCassetteTransferStateStep::getCassetteStatusDescription(std::string& strDescription)
   {
      switch (m_nCassetteStatus) {
      case CASSETTE_NO_EXIST:
         strDescription = _T("No Cassette Exist");
         break;
      case CASSETTE_WAITING_DATA:
         strDescription = _T("Waiting for Cassette Data");
         break;
      case CASSETTE_WAITING_START:
         strDescription = _T("Waiting for Start Command");
         break;
      case CASSETTE_WAITING_PROCCESSING:
         strDescription = _T("Waiting for Processing");
         break;
      case CASSETTE_IN_PROCCESSING:
         strDescription = _T("In Processing");
         break;
      case CASSETTE_PROCCESS_PAUSED:
         strDescription = _T("Process Paused");
         break;
      case CASSETTE_PROCCESS_COMPLETED:
         strDescription = _T("Process Completed");
         break;
      default:
         strDescription = _T("");
         break;
      }
      return strDescription;
   }
}