#include "stdafx.h" #include "CJobDataB.h" #include "ToolUnits.h" namespace SERVO { CJobDataB::CJobDataB() { } CJobDataB::~CJobDataB() { } short CJobDataB::getPortNo() { return m_nPortNo; } std::string& CJobDataB::getCarrierId() { return m_strCarrierId; } std::string& CJobDataB::getPruductId() { return m_pruductId; } int CJobDataB::serialize(char* pszBuffer, int nBufferSize) { if (nBufferSize < 640) return -1; int index = 0; memcpy(&pszBuffer[index], &m_nPortNo, sizeof(short)); index += sizeof(short); int strLen = min(20, m_strCarrierId.size()); memcpy(&pszBuffer[index], m_strCarrierId.c_str(), strLen); index += 20; strLen = min(20, m_pruductId.size()); memcpy(&pszBuffer[index], m_pruductId.c_str(), strLen); index += 20; memcpy(&pszBuffer[index], &m_nCarrierState, sizeof(short)); index += sizeof(short); memcpy(&pszBuffer[index], &m_nSlotMapping, sizeof(int)); index += sizeof(int); memcpy(&pszBuffer[index], &m_nSlotSelectedFlag, sizeof(int)); index += sizeof(int); for (int i = 0; i < min(25, m_glassIds.size()); i++) { std::string& strGlassId = m_glassIds.at(i); strLen = min(20, strGlassId.size()); memcpy(&pszBuffer[index], strGlassId.c_str(), strLen); index += 20; } return 320 * 2; } int CJobDataB::unserialize(char* pszBuffer, int nBufferSize) { if (nBufferSize < 640) return -1; int index = 0; memcpy(&m_nPortNo, &pszBuffer[index], sizeof(short)); index += sizeof(short); CToolUnits::convertString(&pszBuffer[index], 20, m_strCarrierId); index += 20; CToolUnits::convertString(&pszBuffer[index], 20, m_pruductId); index += 20; memcpy(&m_nCarrierState, &pszBuffer[index], sizeof(short)); index += sizeof(short); memcpy(&m_nSlotMapping, &pszBuffer[index], sizeof(int)); index += sizeof(int); memcpy(&m_nSlotSelectedFlag, &pszBuffer[index], sizeof(int)); index += sizeof(int); std::string strGlassId; m_glassIds.clear(); for (int i = 0; i < 25; i++) { CToolUnits::convertString(&pszBuffer[index], 20, strGlassId); index += 20; if (!strGlassId.empty()) { m_glassIds.push_back(strGlassId); } } return 320 * 2; } short CJobDataB::getCarrierState() { return m_nCarrierState; } std::string& CJobDataB::getCarrierStateDescription(std::string& strDescription) { static char* pszDescription[20] = { "Bind", "CancelPod", "CancelPodNotification", "CancelPodOut", "CancelPodAtPort", "CancelBind", "Clamp", "ClosePod", "IndexDown", "IndexUp", "OpenPod", "PodComplete", "PodIn", "PodNotification", "PodOut", "PodRelease", "PodTagReadData", "PodTagWriteData", "Proceed WithPod", "Unclamp" }; if (0 <= m_nCarrierState && m_nCarrierState < 20) { strDescription = pszDescription[m_nCarrierState]; } else { strDescription = ""; } return strDescription; } int CJobDataB::getSlotMapping() { return m_nSlotMapping; } int CJobDataB::getSlotSelectedFlag() { return m_nSlotSelectedFlag; } std::vector& CJobDataB::getGlassIds() { return m_glassIds; } }