#include "stdafx.h"
|
#include "CEqStatusStep.h"
|
#include "Log.h"
|
#include "ToolUnits.h"
|
|
|
namespace SERVO {
|
CEqStatusStep::CEqStatusStep() : CReadStep()
|
{
|
m_nStatusDev = 0;
|
for (int i = 0; i < STATUS_MAX; i++) {
|
m_nStatus[i] = 0;
|
m_nReasonCode[i] = 0;
|
}
|
|
|
}
|
|
CEqStatusStep::~CEqStatusStep()
|
{
|
|
}
|
|
void CEqStatusStep::getAttributeVector(CAttributeVector& attrubutes)
|
{
|
CReadStep::getAttributeVector(attrubutes);
|
|
unsigned int weight = 31;
|
char szName[256];
|
for (int i = 0; i < STATUS_MAX; i++) {
|
sprintf_s(szName, 256, "Status %d", i + 1);
|
attrubutes.addAttribute(new CAttribute(szName,
|
std::to_string(m_nStatus[i]).c_str(), "", weight++));
|
sprintf_s(szName, 256, "Reason Code %d", i + 1);
|
attrubutes.addAttribute(new CAttribute(szName,
|
std::to_string(m_nReasonCode[i]).c_str(), "", weight++));
|
}
|
|
std::string strTemp;
|
attrubutes.addAttribute(new CAttribute("Status Dev",
|
("W" + CToolUnits::toHexString(m_nStatusDev, strTemp)).c_str(), "", weight++));
|
}
|
|
int CEqStatusStep::getStatus(unsigned int uint)
|
{
|
if (uint < STATUS_MAX) {
|
return m_nStatus[uint];
|
}
|
|
return -1;
|
}
|
int CEqStatusStep::onReadData()
|
{
|
CReadStep::onReadData();
|
|
char szBuffer[64];
|
int nRet = m_pCclink->ReadData2(m_station, DeviceType::W,
|
m_nStatusDev, 64, szBuffer);
|
if (0 != nRet) {
|
return -1;
|
}
|
|
unsigned int unitId = (unsigned int)CToolUnits::toInt16(&szBuffer[0]);
|
if (unitId >= STATUS_MAX) {
|
return -2;
|
}
|
|
if (unitId == 0) {
|
m_nStatus[unitId] = CToolUnits::toInt16(&szBuffer[2 + unitId * 4]);
|
m_nReasonCode[unitId] = CToolUnits::toInt16(&szBuffer[2 + unitId * 4 + 2]);
|
}
|
else {
|
m_nStatus[unitId] = CToolUnits::toInt16(&szBuffer[2 + 3 * 2 + unitId * 4]);
|
m_nReasonCode[unitId] = CToolUnits::toInt16(&szBuffer[2 + 3 * 2 + unitId * 4 + 2]);
|
}
|
|
std::string strTemp;
|
LOGI("<CEqStatusStep> Equipment Status Changed<Unit:%d, %s, ReasonCode=%d>\n",
|
unitId, getStatusDescription(unitId, strTemp).c_str(), m_nReasonCode[unitId]);
|
|
|
return 0;
|
}
|
|
int CEqStatusStep::onComplete()
|
{
|
CReadStep::onComplete();
|
LOGI("<CEqStatusStep> onComplete.");
|
|
return 0;
|
}
|
|
int CEqStatusStep::onTimeout()
|
{
|
CReadStep::onTimeout();
|
LOGE("<CEqStatusStep> onTimeout.");
|
|
return 0;
|
}
|
|
void CEqStatusStep::setStatusDev(int nDev)
|
{
|
m_nStatusDev = nDev;
|
}
|
|
/*
|
Lower (1byte, 0~7) : Status
|
1 : PM
|
2 : Down(BM)
|
3 : Pause
|
4 : Idle
|
5: Run
|
6: Job Change
|
7 : ETC
|
*/
|
std::string& CEqStatusStep::getStatusDescription(unsigned int unid, std::string& strDescription)
|
{
|
if (unid < STATUS_MAX) {
|
switch (m_nStatus[unid]) {
|
case 1:
|
strDescription = _T("PM");
|
break;
|
case 2:
|
strDescription = _T("Down(BM)");
|
break;
|
case 3:
|
strDescription = _T("Pause");
|
break;
|
case 4:
|
strDescription = _T("Idle");
|
break;
|
case 5:
|
strDescription = _T("Run");
|
break;
|
case 6:
|
strDescription = _T("Job Change");
|
break;
|
case 7:
|
strDescription = _T("ETC");
|
break;
|
default:
|
strDescription = _T("");
|
break;
|
}
|
}
|
|
|
return strDescription;
|
}
|
}
|