LAPTOP-SNT8I5JK\Boounion
2025-05-09 29623a829f040af2cd27fd6c477d54294063a0ea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#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);
        CLoadPort* addLoadPort(int index);
        int addFliper();
        int addVacuumBake();
        int addAligner();
        CEFEM* 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;
    };
}