LAPTOP-SNT8I5JK\Boounion
2025-05-06 5bcbdac9793e19713d41b58c9eeefbd0818d192b
SourceCode/Bond/Servo/CEquipment.cpp
@@ -132,6 +132,7 @@
   void CEquipment::init()
   {
      initPins();
      initSteps();
      for (auto item : m_mapStep) {
         item.second->init();
      }
@@ -142,6 +143,11 @@
      for (auto item : m_mapStep) {
         item.second->term();
      }
   }
   void CEquipment::initSteps()
   {
   }
   void CEquipment::setID(int nID)
@@ -364,7 +370,7 @@
         m_bAutoRecipeChange = bFlag;
      }
      // AutoRecipeChange
      // VCR Enable
      bFlag = isBitOn(pszData, size, ++index);
      if (!equalBool(m_bVCREnable[0], bFlag)) {
         m_bVCREnable[0] = bFlag;
@@ -394,6 +400,9 @@
      // EQ mode change cmd reply
      CHECK_WRITE_STEP_SIGNAL(STEP_ID_EQMODE_CHANGE_CMD_REPLY, pszData, size);
      // EQ Master recipe request cmd reply
      CHECK_WRITE_STEP_SIGNAL(STEP_ID_MASTER_RECIPE_LIST_CMD_REPLY, pszData, size);
      // CIM Message Confirm
      CHECK_READ_STEP_SIGNAL(STEP_ID_CIM_MSG_CONFIRM_REPORT, pszData, size);
@@ -869,4 +878,64 @@
      return pStep->setDateTime(year, month, day, hour, minute, second);
   }
   int CEquipment::masterRecipeListRequest(short unitNo)
   {
      SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(STEP_EQ_MASTER_RECIPE_LIST_REQ);
      if (pStep == nullptr) {
         return -1;
      }
      LOGI("<CEquipment-%s>正在请求单元<%d>主配方列表", m_strName.c_str(), unitNo);
      if (m_recipesManager.syncing() != 0) {
         return -2;
      }
      pStep->writeShort(unitNo, [&, unitNo](int code) -> int {
         if (code == WOK) {
            LOGI("<CEquipment-%s>请求单元<%d>主配方列表成功,正在等待数据.", m_strName.c_str(), unitNo);
         }
         else {
            m_recipesManager.syncFailed();
            LOGI("<CEquipment-%s>请求单元<%d>主配方列表失败,code:%d", m_strName.c_str(), unitNo, code);
         }
         return 0;
      });
      return 0;
   }
   int CEquipment::recipeParameterRequest(short masterRecipeId, short localRecipeId, short unitNo)
   {
      SERVO::CEqWriteStep* pStep = (SERVO::CEqWriteStep*)getStepWithName(STEP_EQ_MASTER_RECIPE_LIST_REQ);
      if (pStep == nullptr) {
         return -1;
      }
      LOGI("<CEquipment-%s>正在请求单元<%d>主配方列表", m_strName.c_str(), unitNo);
      if (m_recipesManager.syncing() != 0) {
         return -2;
      }
      pStep->writeShort(unitNo, [&, unitNo](int code) -> int {
         if (code == WOK) {
            LOGI("<CEquipment-%s>请求单元<%d>主配方列表成功,正在等待数据.", m_strName.c_str(), unitNo);
         }
         else {
            m_recipesManager.syncFailed();
            LOGI("<CEquipment-%s>请求单元<%d>主配方列表失败,code:%d", m_strName.c_str(), unitNo, code);
         }
         return 0;
         });
      return 0;
   }
   short CEquipment::decodeRecipeListReport(const char* pszData, size_t size)
   {
      return m_recipesManager.decodeRecipeListReport(pszData, size);
   }
   short CEquipment::decodeRecipeParameterReport(const char* pszData, size_t size)
   {
      return m_recipesManager.decodeRecipeParameterReport(pszData, size);
   }
}