#pragma once #include "CEquipment.h" #include "CLoadPort.h" #include "CAligner.h" #include "CFliper.h" #include "CArmTray.h" namespace SERVO { class CEFEM : public CEquipment { public: CEFEM(); virtual ~CEFEM(); public: virtual const char* getClassName(); virtual void init(); virtual void term(); virtual void initPins(); virtual void initSteps(); virtual void onTimer(UINT nTimerid); virtual void serialize(CArchive& ar); virtual void getAttributeVector(CAttributeVector& attrubutes); virtual int recvIntent(CPin* pPin, CIntent* pIntent); virtual BOOL glassWillArrive(CGlass* pGlass); virtual void onReceiveLBData(const char* pszData, size_t size); virtual int onReceivedJob(int port, CJobDataS* pJobDataS); virtual int onSentOutJob(int port, CJobDataS* pJobDataS); virtual int onFetchedOutJob(int port, CJobDataB* pJobDataB); virtual int onStoredJob(int port, CJobDataB* pJobDataB); virtual int getIndexerOperationModeBaseValue(); public: void setPort(unsigned int index, CLoadPort* pPort); void setAligner(CAligner* pAligner); void setFliper(CFliper* pFliper); void setArmTray(unsigned int index, CArmTray* pArmTray); int robotCmd(ROBOT_CMD_PARAM& robotCmdParam, ONWRITED onWritedBlock = nullptr); int robotCmds(ROBOT_CMD_PARAM* robotCmdParam, unsigned int count, ONWRITED onWritedBlock = nullptr); private: CLoadPort* m_pPort[4]; CAligner* m_pAligner; CFliper* m_pFliper; CArmTray* m_pArmTray[2]; }; }