#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); unsigned int weight = 31; std::string strTemp; attrubutes.addAttribute(new CAttribute("Dev", ("W" + CToolUnits::toHexString(m_nPortStatusDev, strTemp)).c_str(), "", weight++)); attrubutes.addAttribute(new CAttribute("Port Status", getPortStatusDescription(strTemp).c_str(), "", weight++)); attrubutes.addAttribute(new CAttribute("CassetteSequenceNo", std::to_string(m_nCassetteSequenceNo).c_str(), "", weight++)); attrubutes.addAttribute(new CAttribute("CassetteID", m_strCassetteID.c_str(), "", weight++)); attrubutes.addAttribute(new CAttribute("LoadingCassetteType", getLoadingCassetteTypeDescription(strTemp).c_str(), "", weight++)); attrubutes.addAttribute(new CAttribute("Q-Time Flag", getQTimeFlagDescription(strTemp).c_str(), "", weight++)); attrubutes.addAttribute(new CAttribute("CassetteMappingState", getCassetteMappingStateDescription(strTemp).c_str(), "", weight++)); attrubutes.addAttribute(new CAttribute("CassetteStatus", getCassetteStatusDescription(strTemp).c_str(), "", weight++)); } 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("Port status changed", m_nPortStatusDev, m_nPortStatus, m_nCassetteSequenceNo); return 0; } int CEqCassetteTransferStateStep::onComplete() { CReadStep::onComplete(); LOGI(" onComplete."); return 0; } int CEqCassetteTransferStateStep::onTimeout() { CReadStep::onTimeout(); LOGI(" 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; } }