LAPTOP-SNT8I5JK\Boounion
2025-06-25 4a17d9968a0fd04d672170324a767fa8b224bd52
SourceCode/Bond/Servo/CEquipment.cpp
@@ -410,6 +410,7 @@
         onSendAble();
      }
      index += 0x40 * 2;
      for (int i = 0; i < 8; i++) {
         m_bLinkSignalToDownstream[i][SIGNAL_UPSTREAM_INLINE] = isBitOn(pszData, size, index + 0);
         m_bLinkSignalToDownstream[i][SIGNAL_UPSTREAM_TROUBLE] = isBitOn(pszData, size, index + 1);
@@ -418,7 +419,7 @@
         index += 0x40;
      }
      if (m_bLinkSignalToDownstream[0][SIGNAL_RECEIVE_ABLE]) {
         onSendAble();
         onReceiveAble();
      }
      // 其它信号及响应
@@ -1236,6 +1237,23 @@
      return nullptr;
   }
   CSlot* CEquipment::getAvailableSlotForGlassExcludeSignal(MaterialsType type)
   {
      for (int i = 0; i < SLOT_MAX; i++) {
         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::getAvailableSlotForGlass2(MaterialsType type, const std::vector<int>& candidates)
   {
      for (auto item : candidates) {
@@ -1679,7 +1697,7 @@
      CJobDataS* pJobDataS = pGlass->getJobDataS();
      ASSERT(pJobDataS);
      if (!compareJobData(pJobDataB, pJobDataS)) {
         LOGE("<CFliper-%s>onPreFetchedOutJob,JobData数据不匹配(JobDataB(%d, %d),JobDataS(%d, %d)), 注意排查风险!", m_strName.c_str(),
         LOGE("<CEquipemnt-%s>onPreFetchedOutJob,JobData数据不匹配(JobDataB(%d, %d),JobDataS(%d, %d)), 注意排查风险!", m_strName.c_str(),
            pJobDataB->getCassetteSequenceNo(), pJobDataB->getJobSequenceNo(),
            pJobDataS->getCassetteSequenceNo(), pJobDataS->getJobSequenceNo());
         return FALSE;
@@ -1687,10 +1705,10 @@
      // 如果没有可用位置,报错
      Lock();
      CSlot* pSlot = getAvailableSlotForGlass((MaterialsType)pJobDataS->getMaterialsType());
      CSlot* pSlot = getAvailableSlotForGlassExcludeSignal((MaterialsType)pJobDataS->getMaterialsType());
      if (pSlot == nullptr) {
         Unlock();
         LOGE("<CFliper-%s>onPreFetchedOutJob,找不到匹配的Slot,不能进料,请注意风险!", m_strName.c_str());
         LOGE("<CEquipemnt-%s>onPreFetchedOutJob,找不到匹配的Slot,不能进料,请注意风险!", m_strName.c_str());
         return FALSE;
      }
      Unlock();
@@ -1748,10 +1766,9 @@
      return 0;
   }
   int CEquipment::onRecieveAble()
   int CEquipment::onReceiveAble()
   {
      LOGI("<CEquipment-%s>onRecieveAble.", m_strName.c_str());
      LOGI("<CEquipment-%s>onReceiveAble.", m_strName.c_str());
      return 0;
   }