| | |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | CContext* pContext = m_slot[i].getContext(); |
| | | if (pContext != nullptr) { |
| | | pContext->release(); |
| | | m_slot[i].setContext(nullptr); |
| | | } |
| | | } |
| | |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_INUSE, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_UNLOAD_READY, pszData, size); |
| | | CHECK_READ_STEP_SIGNAL(STEP_ID_PORT4_BLOCKED, pszData, size); |
| | | |
| | | // robot cmd reply |
| | | CHECK_WRITE_STEP_SIGNAL(STEP_ID_ROBOT_CMD_REPLY, pszData, size); |
| | | |
| | | } |
| | | |
| | | BOOL CEquipment::isBitOn(const char* pszData, size_t size, int index) |
| | |
| | | if (m_slot[i].isLock()) continue; |
| | | CGlass* pGlass = (CGlass*)m_slot[i].getContext(); |
| | | if (pGlass == nullptr) continue; |
| | | if(!m_bLinkSignal[0][SIGNAL_UPSTREAM_INLINE] |
| | | || m_bLinkSignal[0][SIGNAL_UPSTREAM_TROUBLE] |
| | | || !m_bLinkSignal[0][SIGNAL_INTERLOCK] |
| | | || !m_bLinkSignal[0][SIGNAL_SEND_ABLE] ) continue; |
| | | int lsPath = m_slot[i].getLinkSignalPath(); |
| | | if(!m_bLinkSignal[lsPath][SIGNAL_UPSTREAM_INLINE] |
| | | || m_bLinkSignal[lsPath][SIGNAL_UPSTREAM_TROUBLE] |
| | | || !m_bLinkSignal[lsPath][SIGNAL_INTERLOCK] |
| | | || !m_bLinkSignal[lsPath][SIGNAL_SEND_ABLE] ) continue; |
| | | |
| | | MaterialsType glassType = pGlass->getType(); |
| | | if (glassType == MaterialsType::G1 && putSlotType == MaterialsType::G2) continue; |
| | |
| | | if (m_slot[i].isLock()) continue; |
| | | CGlass* pGlass = (CGlass*)m_slot[i].getContext(); |
| | | if (pGlass == nullptr) continue; |
| | | if (!m_bLinkSignal[0][SIGNAL_UPSTREAM_INLINE] |
| | | || m_bLinkSignal[0][SIGNAL_UPSTREAM_TROUBLE] |
| | | || !m_bLinkSignal[0][SIGNAL_INTERLOCK] |
| | | || !m_bLinkSignal[0][SIGNAL_SEND_ABLE]) continue; |
| | | int lsPath = m_slot[i].getLinkSignalPath(); |
| | | if (!m_bLinkSignal[lsPath][SIGNAL_UPSTREAM_INLINE] |
| | | || m_bLinkSignal[lsPath][SIGNAL_UPSTREAM_TROUBLE] |
| | | || !m_bLinkSignal[lsPath][SIGNAL_INTERLOCK] |
| | | || !m_bLinkSignal[lsPath][SIGNAL_SEND_ABLE]) continue; |
| | | |
| | | MaterialsType glassType = pGlass->getType(); |
| | | if (glassType == MaterialsType::G1 && putSlotType == MaterialsType::G2) continue; |
| | |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | CSlot* CEquipment::getSlot(int index) |
| | | { |
| | | if (index >= SLOT_MAX) return nullptr; |
| | | return &m_slot[index]; |
| | | } |
| | | |
| | | CGlass* CEquipment::getGlassFromSlot(int slotNo) |
| | |
| | | return TRUE; |
| | | } |
| | | |
| | | int CEquipment::removeGlass(int slotNo) |
| | | { |
| | | CSlot* pSlot = nullptr; |
| | | for (int i = 0; i < SLOT_MAX; i++) { |
| | | if (!m_slot[i].isEnable()) continue; |
| | | if (m_slot[i].getNo() != slotNo) continue; |
| | | pSlot = &m_slot[i]; |
| | | break; |
| | | } |
| | | |
| | | if (pSlot == nullptr) return -1; |
| | | pSlot->setContext(nullptr); |
| | | return 0; |
| | | } |
| | | |
| | | short CEquipment::decodeRecipeListReport(const char* pszData, size_t size) |
| | | { |
| | | return m_recipesManager.decodeRecipeListReport(pszData, size); |