| | |
| | | |
| | | |
| | | namespace SERVO { |
| | | CEqStatusStep::CEqStatusStep() : CStep() |
| | | CEqStatusStep::CEqStatusStep() : CReadStep() |
| | | { |
| | | m_nStatusDev = 0; |
| | | for (int i = 0; i < STATUS_MAX; i++) { |
| | | m_nStatus[i] = 7; |
| | | m_nStatus[i] = 0; |
| | | m_nReasonCode[i] = 0; |
| | | } |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | void CEqStatusStep::getAttributeVector(CAttributeVector& attrubutes) |
| | | { |
| | | CReadStep::getAttributeVector(attrubutes); |
| | | |
| | | 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(), "")); |
| | | sprintf_s(szName, 256, "Reason Code %d", i + 1); |
| | | attrubutes.addAttribute(new CAttribute(szName, |
| | | std::to_string(m_nReasonCode[i]).c_str(), "")); |
| | | } |
| | | |
| | | std::string strTemp; |
| | | attrubutes.addAttribute(new CAttribute("Status Dev", |
| | | ("W" + CToolUnits::toHexString(m_nStatusDev, strTemp)).c_str(), "")); |
| | | } |
| | | |
| | | int CEqStatusStep::getStatus(unsigned int uint) |
| | | { |
| | | if (uint < STATUS_MAX) { |
| | | return m_nStatus[uint]; |
| | | } |
| | | |
| | | return -1; |
| | | } |
| | | int CEqStatusStep::onReadData() |
| | | { |
| | | CStep::onReadData(); |
| | | CReadStep::onReadData(); |
| | | |
| | | char szBuffer[64]; |
| | | int nRet = m_pCclink->ReadData2(m_station, DeviceType::W, |
| | | m_nStatusDev, 64, szBuffer); |
| | | if (0 == nRet) { |
| | | unsigned int unitId = (unsigned int)CToolUnits::toInt16(&szBuffer[0]); |
| | | if (unitId < STATUS_MAX) { |
| | | 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]); |
| | | } |
| | | |
| | | for (int i = 0; i < 64; i++) { |
| | | TRACE("bbb %d, %x\n", i, szBuffer[i]); |
| | | } |
| | | TRACE("cccc %d %d %d\n", unitId, m_nStatus[unitId], m_nReasonCode[unitId]); |
| | | std::string strTemp; |
| | | LOGI("<CEqStatusStep> Equipment Status Changed<Unit:%d, %s, ReasonCode=%d>\n", |
| | | unitId, getStatusDescription(unitId, strTemp).c_str(), m_nReasonCode[unitId]); |
| | | } |
| | | 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() |
| | | { |
| | | CStep::onComplete(); |
| | | CReadStep::onComplete(); |
| | | LOGI("<CEqStatusStep> onComplete."); |
| | | |
| | | return 0; |
| | |
| | | |
| | | int CEqStatusStep::onTimeout() |
| | | { |
| | | CStep::onTimeout(); |
| | | CReadStep::onTimeout(); |
| | | LOGI("<CEqStatusStep> onTimeout."); |
| | | |
| | | return 0; |