| | |
| | | CGlass* pGlass = (CGlass*)m_slot[i].getContext(); |
| | | if (pGlass != nullptr && compareJobDataB(pJobDataB, pGlass->getJobDataB())) { |
| | | pContext = pGlass; |
| | | if (pGlass != nullptr) pGlass->addRef(); |
| | | m_slot[i].setContext(nullptr); |
| | | break; |
| | | } |
| | |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | CGlass* pGlass = (CGlass*)m_slot[i].getContext(); |
| | | if (pGlass != nullptr && compareJobDataB(pBuddy->getJobDataB(), pGlass->getJobDataB())) { |
| | | pContext->release(); |
| | | m_slot[i].setContext(nullptr); |
| | | break; |
| | | } |
| | |
| | | } |
| | | |
| | | return FALSE; |
| | | } |
| | | |
| | | CGlass* CEquipment::getGlass(const char* pszGlassId) |
| | | { |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | if (!m_slot[i].isEnable()) continue; |
| | | CGlass* pGlass = (CGlass*)m_slot[i].getContext(); |
| | | if (pGlass == nullptr) continue; |
| | | if (pGlass->getID().compare(pszGlassId) == 0) { |
| | | return pGlass; |
| | | } |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | bool CEquipment::isAlarmStep(SERVO::CStep* pStep) |
| | |
| | | return nullptr; |
| | | } |
| | | |
| | | CSlot* CEquipment::getAvailableSlotForGlass2(MaterialsType type, const std::vector<int>& candidates) |
| | | { |
| | | for (auto item : candidates) { |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | if (item == i + 1) { |
| | | if (!m_slot[i].isEnable()) continue; |
| | | if (m_slot[i].isLock()) continue; |
| | | if (!m_slot[i].isEmpty()) continue; |
| | | |
| | | MaterialsType slotType = m_slot[i].getType(); |
| | | if (type == MaterialsType::G1 && slotType == MaterialsType::G2) continue; |
| | | if (type == MaterialsType::G2 && slotType == MaterialsType::G1) continue; |
| | | |
| | | return &m_slot[i]; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | CSlot* CEquipment::getNonEmptySlot(MaterialsType putSlotType) |
| | | { |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | |
| | | MaterialsType glassType = pGlass->getType(); |
| | | if (glassType == MaterialsType::G1 && putSlotType == MaterialsType::G2) continue; |
| | | if (glassType == MaterialsType::G2 && putSlotType == MaterialsType::G1) continue; |
| | | |
| | | return &m_slot[i]; |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | CSlot* CEquipment::getProcessedSlot(MaterialsType putSlotType) |
| | | { |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | if (!m_slot[i].isEnable()) continue; |
| | | if (m_slot[i].isLock()) continue; |
| | | CGlass* pGlass = (CGlass*)m_slot[i].getContext(); |
| | | if (pGlass == nullptr) continue; |
| | | |
| | | MaterialsType glassType = pGlass->getType(); |
| | | if (glassType == MaterialsType::G1 && putSlotType == MaterialsType::G2) continue; |
| | | if (glassType == MaterialsType::G2 && putSlotType == MaterialsType::G1) continue; |
| | | if (!pGlass->isProcessed(m_nID)) continue; |
| | | |
| | | return &m_slot[i]; |
| | | } |
| | |
| | | int CEquipment::onProcessData(CProcessData* pProcessData) |
| | | { |
| | | LOGI("<CEquipment-%s>onProcessData.", m_strName.c_str()); |
| | | CGlass* pGlass = getGlass(pProcessData->getGlassId().c_str()); |
| | | if (pGlass != nullptr) { |
| | | pGlass->processEnd(m_nID); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |