| | |
| | | #include "stdafx.h" |
| | | #include "CEquipment.h" |
| | | #include "ToolUnits.h" |
| | | #include <regex> |
| | | |
| | | |
| | | #define CHECK_READ_STEP_SIGNAL(addr, data, size) { \ |
| | |
| | | |
| | | CEquipment::CEquipment() : m_nID(0), m_strName(""), m_strDescription(""), m_station(0, 255) |
| | | { |
| | | m_listener = { nullptr, nullptr, nullptr, nullptr }; |
| | | m_listener = { nullptr, nullptr, nullptr, nullptr, nullptr }; |
| | | m_alive = { FALSE, 0, FALSE }; |
| | | m_bCimState = FALSE; |
| | | m_bUpstreamInline = FALSE; |
| | |
| | | m_listener.onCimStateChanged = listener.onCimStateChanged; |
| | | m_listener.onAlarm = listener.onAlarm; |
| | | m_listener.onDataChanged = listener.onDataChanged; |
| | | m_listener.onVcrEventReport = listener.onVcrEventReport; |
| | | } |
| | | |
| | | void CEquipment::setCcLink(CCCLinkIEControl* pCcLink) |
| | |
| | | // CIM Message Confirm |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_CIM_MSG_CONFIRM_REPORT, pszData, size); |
| | | |
| | | // VCR1 Event report |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_VCR1_EVENT_REPORT, pszData, size); |
| | | |
| | | // EQ Job Event |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_RECIVE_JOB_UPS1, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_RECIVE_JOB_UPS2, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_SENT_OUT_JOB_DOWNS1, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_SENT_OUT_JOB_DOWNS2, pszData, size); |
| | | |
| | | // Port1 ~ Port4 |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_TYPE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_TYPE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_TYPE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_TYPE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTE_TYPE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_CASSETTE_TYPE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_CASSETTE_TYPE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_CASSETTE_TYPE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_TRANSFER_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_TRANSFER_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_TRANSFER_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_TRANSFER_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_ENABLE_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_ENABLE_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_ENABLE_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_ENABLE_MODE_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_TYPE_AUTO_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT2_TYPE_AUTO_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT3_TYPE_AUTO_CHANGE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_TYPE_AUTO_CHANGE, pszData, size); |
| | | |
| | | // CEqCassetteTranserStateStep |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT1_CASSETTIE_EMPTY, pszData, size); |
| | |
| | | msgId = (value & 0xffff0000 >> 16); |
| | | panelNo = (value & 0xffff); |
| | | LOGI("Cim Message Confirm(msgID = %d, panel no.=%d).", msgId, panelNo); |
| | | } |
| | | else if (isVcrEventStep(pStep)) { |
| | | SERVO::CEqVcrEventStep* pEqVcrEventStep = (SERVO::CEqVcrEventStep*)pStep; |
| | | CVcrEventReport* pVcrEventReport = pEqVcrEventStep->getVcrEventReport(); |
| | | ASSERT(pVcrEventReport); |
| | | if (m_listener.onVcrEventReport != nullptr) { |
| | | m_listener.onVcrEventReport(this, pVcrEventReport); |
| | | } |
| | | |
| | | // 0426, 先固定返回1(OK) |
| | | pEqVcrEventStep->setReturnCode(1); |
| | | return 1; |
| | | } |
| | | } |
| | | |
| | |
| | | return CToolUnits::startsWith(pStep->getName(), STEP_ALARM_START); |
| | | } |
| | | |
| | | bool CEquipment::isPortTypeStep(SERVO::CStep* pStep) |
| | | { |
| | | std::regex pattern("^EQPort\\d+Type$"); |
| | | return std::regex_match(pStep->getName(), pattern); |
| | | } |
| | | |
| | | bool CEquipment::isPortModeStep(SERVO::CStep* pStep) |
| | | { |
| | | std::regex pattern("^EQPort\\d+Mode$"); |
| | | return std::regex_match(pStep->getName(), pattern); |
| | | } |
| | | |
| | | bool CEquipment::isPortCassetteTypeStep(SERVO::CStep* pStep) |
| | | { |
| | | std::regex pattern("^EQPort\\d+CassetteType$"); |
| | | return std::regex_match(pStep->getName(), pattern); |
| | | } |
| | | |
| | | bool CEquipment::isPortTransferModeStep(SERVO::CStep* pStep) |
| | | { |
| | | std::regex pattern("^EQPort\\d+TransferMode$"); |
| | | return std::regex_match(pStep->getName(), pattern); |
| | | } |
| | | |
| | | bool CEquipment::isPortEnableStep(SERVO::CStep* pStep) |
| | | { |
| | | std::regex pattern("^EQPort\\d+Enable$"); |
| | | return std::regex_match(pStep->getName(), pattern); |
| | | } |
| | | |
| | | bool CEquipment::isPortTypeAutoChangeEnableStep(SERVO::CStep* pStep) |
| | | { |
| | | std::regex pattern("^EQPort\\d+CassetteType$"); |
| | | return std::regex_match(pStep->getName(), pattern); |
| | | } |
| | | |
| | | bool CEquipment::isCassetteTransferStateStep(SERVO::CStep* pStep) |
| | | { |
| | | return CToolUnits::startsWith(pStep->getName(), "EQPort") |
| | | && pStep->getName().find("Cassette") != std::string::npos; |
| | | std::regex pattern("^EQPort\\d+Cassette.*"); |
| | | return std::regex_match(pStep->getName(), pattern); |
| | | } |
| | | |
| | | bool CEquipment::isCimMessageConfirmStep(SERVO::CStep* pStep) |
| | |
| | | return pStep->getName().compare(STEP_EQ_CIM_MESSAGE_CONFIRM) == 0; |
| | | } |
| | | |
| | | bool CEquipment::isVcrEventStep(SERVO::CStep* pStep) |
| | | { |
| | | return pStep->getName().compare(STEP_EQ_VCR1_EVENT_REPORT) == 0; |
| | | } |
| | | |
| | | int CEquipment::setEqMode(short mode) |
| | | { |
| | | SERVO::CEqModeChangeStep* pStep = (SERVO::CEqModeChangeStep*)getStepWithName(STEP_EQ_MODE_CHANGE); |