#pragma once
|
#include <map>
|
#include "CRecipeList.h"
|
#include <functional>
|
|
|
#define SS_NONE 0
|
#define SS_SYNCING 1
|
#define SS_LIST_COMPLETE 2
|
#define SS_PARAMS_COMPLETE 3
|
#define SS_TIMEOUT 4
|
#define SS_FAILED 5
|
|
namespace SERVO {
|
typedef std::function<void(int state)> ONSYNCINGSTATECHANGED;
|
|
class CRecipesManager
|
{
|
public:
|
CRecipesManager();
|
virtual ~CRecipesManager();
|
|
public:
|
void setOnSyncingStateChanged(ONSYNCINGSTATECHANGED block);
|
unsigned TimeoutCheckWorkingProc();
|
int syncing();
|
void syncFailed();
|
void syncTimeout();
|
short decodeRecipeListReport(const char* pszData, size_t size);
|
short decodeRecipeParameterReport(const char* pszData, size_t size);
|
CRecipeList* getRecipeListFromTemp(int unitNo);
|
CRecipeList* getRecipeList(int unitNo);
|
bool saveRecipeList(int unitNo, std::string& strFilepath);
|
bool readRecipeList(int unitNo, std::string& strFilepath);
|
|
public:
|
inline void lock() { ::EnterCriticalSection(&m_cs); };
|
inline void unlock() { ::LeaveCriticalSection(&m_cs); };
|
|
private:
|
HANDLE m_hWorkThreadHandle;
|
unsigned m_nWordThreadAddr;
|
HANDLE m_hWorkStop;
|
int m_nTimeoutCount;
|
CRITICAL_SECTION m_cs; // ͬ²½Ëø
|
int m_nSyncStatus;
|
int m_nTotalMasterRecipeCount;
|
int m_nTotalParameterCount;
|
std::map<int, CRecipeList*> m_mapRecipes;
|
std::map<int, CRecipeList*> m_mapRecipesTemp;
|
ONSYNCINGSTATECHANGED m_onSyncingStateChanged;
|
};
|
}
|