#pragma once #include #include "CEquipment.h" #include "CEFEM.h" #include "CBonder.h" #include "CLoadPort.h" #include "CFliper.h" #include "CAligner.h" #include "CVacuumBake.h" #include "CBakeCooling.h" #include "CCLinkIEControl.h" namespace SERVO { typedef std::function ONEQALIVE; typedef std::function ONEQSTEPEVENT; typedef std::function ONEQALARM; typedef struct _MasterListener { ONEQALIVE onEqAlive; ONEQALIVE onEqCimStateChanged; ONEQALARM onEqAlarm; } MasterListener; class CMaster { public: CMaster(); ~CMaster(); public: void setListener(MasterListener listener); int init(); int term(); unsigned ReadBitsProc(); void onTimer(UINT nTimerid); std::list& getEquipmentList(); CEquipment* getEquipment(int id); void setCacheFilepath(const char* pszFilepath); private: int addToEquipmentList(CEquipment* pEquipment); int addLoadPort(int index); int addFliper(); int addVacuumBake(); int addAligner(); int addEFEM(); int addBonder(int index); int addBakeCooling(); void connectEquipments(); int saveCache(); int saveCacheAndBackups(); int readCache(); void serialize(CArchive& ar); private: MasterListener m_listener; CCCLinkIEControl m_cclink; std::list m_listEquipment; std::string m_strFilepath; BOOL m_bDataModify; private: HANDLE m_hEventReadBitsThreadExit[2]; HANDLE m_hReadBitsThreadHandle; unsigned m_nReadBitsThreadAddr; }; }