#pragma once #include #include "IUnit.h" #include #include #define LAYER_LOAD_INIT 0 #define LAYER_LOAD_REQ 1 #define LAYER_UNLOAD_REQ 2 namespace BEQ { typedef std::function ONSTATECHANGED; typedef std::function ONDOORSTATECHANGED; typedef std::function ONALARM; typedef std::function ONSTEPCHANGED; typedef std::function ONDATACHANGED; typedef std::function ONREQLOAD; typedef struct _UnitListener { ONSTATECHANGED onStateChanged; ONDOORSTATECHANGED onDoorStateChanged; ONALARM onAlarm; ONALARM onRemoveAlarm; ONSTEPCHANGED onStepChanged; ONDATACHANGED onDataChanged; ONREQLOAD onReqLoad; ONREQLOAD onReqUnload; } UnitListener; class CUnit : public IUnit { public: CUnit(); CUnit(const char* pszName); ~CUnit(); public: virtual int getName(char* pszBuffer, int nMaxCount); virtual void setState(EQ_STATE state); virtual EQ_STATE getState(); virtual void setDoorCount(int count); virtual void setDoorState(int state); virtual int getDoorState(); virtual void setLayerCount(int count); virtual int getLayerCount(); virtual void setIndex(int index); virtual int getIndex(); virtual void setAlarm(int code, int level, const char* pszText); virtual int getAlarmCode(); virtual int getAlarmLevel(); virtual void stepIdle(); virtual void stepMaterialReceived(const char* pszID); virtual void stepMaterialRemoved(const char* pszID); virtual void stepProcessingStarted(const char* pszID); virtual void stepProcessing(const char* pszID, int nSvTime, int nTvTime); virtual void stepProcessingCompleted(const char* pszID); virtual STEP_STATE getStepState(); virtual void setDataTime(unsigned long long time); virtual void setDataTimeAndResetData(unsigned long long time); virtual unsigned long long getDataTime(); virtual void addData(const char* pszName, const char* pszDataText, bool bComplete); virtual void addRecipe(int id, const char* pszName, bool bComplete); virtual int reqLoad(int layer); virtual int reqUnload(int layer); public: void setListener(UnitListener listener); std::string& getName(); const char* getStateText(); void setStateFromString(std::string& strState); std::string& getDoorState(std::string& strState); std::string& getAlarmText(); const char* getStepStateText(); std::string& getStepMaterialId(); int getStepSvTime(); int getSetpPvTime(); uint64_t stringToTimeStamp(const std::string& strTime); const char* getDataTimeText(uint64_t time); std::map& getDatas(); std::map& getRecipes(); bool checkRecipe(int id, const char* pszName); void resetLoadState(); private: UnitListener m_listener; std::string m_strName; EQ_STATE m_eqState; int m_nDoorCount; int m_doorState; int m_nAlarmCode; int m_nAlarmLevel; std::string m_strAlarmText; private: STEP_STATE m_stepState; std::string m_stepMaterialId; int m_stepSvTime; int m_stepPvTime; unsigned long long m_dataTime; std::map m_dataMap; std::map m_mapRecipe; private: int m_nLayerCount; int m_nLayerLoadState[8]; // ¸÷²ãÉÏÏÂÁÏ״̬£¬0£ºÎ´Öª£»1£ºÉÏÁÏÇëÇó£»2£ºÏÂÁÏÇëÇó int m_nIndex; }; }