#pragma once
|
#include <list>
|
#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<void(void* pMaster, CEquipment* pEiuipment, BOOL bAlive)> ONEQALIVE;
|
typedef std::function<void(CStep* pStep, int code, void* pData)> ONEQSTEPEVENT;
|
typedef std::function<void(void* pMaster, CEquipment* pEquipment, int state, int alarmId, int unitId, int level)> ONEQALARM;
|
typedef std::function<void(void* pMaster, CEquipment* pEquipment, CVcrEventReport* pReport)> ONEQVCREVENTREPORT;
|
typedef struct _MasterListener
|
{
|
ONEQALIVE onEqAlive;
|
ONEQALIVE onEqCimStateChanged;
|
ONEQALARM onEqAlarm;
|
ONEQVCREVENTREPORT onEqVcrEventReport;
|
} MasterListener;
|
|
class CMaster
|
{
|
public:
|
CMaster();
|
~CMaster();
|
|
|
public:
|
void setListener(MasterListener listener);
|
int init();
|
int term();
|
unsigned ReadBitsProc();
|
void onTimer(UINT nTimerid);
|
std::list<CEquipment*>& 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<CEquipment*> m_listEquipment;
|
std::string m_strFilepath;
|
BOOL m_bDataModify;
|
|
private:
|
HANDLE m_hEventReadBitsThreadExit[2];
|
HANDLE m_hReadBitsThreadHandle;
|
unsigned m_nReadBitsThreadAddr;
|
};
|
}
|