#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<int, short>& CRecipeList::getIds()
|
{
|
return m_ids;
|
}
|
|
void CRecipeList::reset()
|
{
|
m_nToatlGroupCount = 0;
|
m_nCurrentGroupCount = 0;
|
m_ids.clear();
|
}
|
}
|