#include "stdafx.h" #include "CRecipeList.h" #include "Common.h" #include "ToolUnits.h" namespace SERVO { CRecipeList::CRecipeList() { m_nToatlGroupCount = 0; m_nCurrentGroupCount = 0; } CRecipeList::CRecipeList(int unitNo) { m_nUnitNo = unitNo; } CRecipeList::~CRecipeList() { } int CRecipeList::getUnitNo() { return m_nUnitNo; } int CRecipeList::addRecipePacket(int totalGroup, int currentGroup, const char* pszData, size_t size) { if (m_nToatlGroupCount == 0) m_nToatlGroupCount = totalGroup; if (m_nToatlGroupCount != totalGroup) { reset(); return MRLRC_GROUP_COUNT_NG; } if (m_nCurrentGroupCount + 1 > currentGroup) { return MRLRC_DUPLICATION_GROUP_COUNT_NG; } if (m_nCurrentGroupCount + 1 < currentGroup) { return ORDER_BY_GROUP_COUNT_NG; } m_nCurrentGroupCount++; for (int i = 0; i < size; i += 4) { int index = CToolUnits::toInt16(&pszData[i]); short id = CToolUnits::toInt16(&pszData[i + 2]); addRecipe(index, id); } if (m_nCurrentGroupCount == m_nToatlGroupCount) { return MRLRC_CURRENT_RECIPE_COMPLETE; } return MRLRC_CONTINUE; } int CRecipeList::addRecipe(int index, short id) { for (auto item : m_ids) { if (item.second == id) { return -1; } } m_ids[index] = id; return 0; } std::map& CRecipeList::getIds() { return m_ids; } void CRecipeList::reset() { m_nToatlGroupCount = 0; m_nCurrentGroupCount = 0; m_ids.clear(); } }