#pragma once class CNetServer; #include "IOCPNetwork/NetServer.h" #include "CHSignalControls_Network/MessageProcessor.h" #include "CHSignalControls_Network/SignalControlProcessor.h" namespace CHSignalControls_Network { interface ISignalControl_NetServer2Parent { // command virtual int ISCNS2P_CommandLight(int nModuleIndex, int nLevel) = 0; virtual int ISCNS2P_CommandLens(int nModuleIndex, int nLevel) = 0; virtual int ISCNS2P_CommandMotorGo(int nModuleIndex, int nPosUmX, int nPosUmY) = 0; virtual int ISCNS2P_CommandGlassGo(int nModuleIndex, int nPosUmX, int nPosUmY) = 0; virtual int ISCNS2P_CommandJog(int nModuleIndex, int nJog) = 0; virtual int ISCNS2P_CommandJogSpeed(int nModuleIndex, int nSpeed) = 0; virtual int ISCNS2P_CommandAfm(int nModuleIndex, int nAfm) = 0; virtual int ISCNS2P_CommandAfmJog(int nModuleIndex, int nJog) = 0; virtual int ISCNS2P_CommandAfmJogSpeed(int nModuleIndex, int nSpeed) = 0; virtual int ISCNS2P_CommandAfmHome(int nModuleIndex) = 0; // status virtual int ISCNS2P_StatusReviewResult(int nModuleIndex, int nPlanIndex, int nResultCount, CSignalControlResultData* pResultData) = 0; // ack virtual void ISCNS2P_AckStatusLight(int nModuleIndex) = 0; virtual void ISCNS2P_AckStatusLens(int nModuleIndex) = 0; virtual void ISCNS2P_AckStatusModulePos(int nModuleIndex) = 0; virtual void ISCNS2P_AckStatusJogSpeed(int nModuleIndex) = 0; virtual void ISCNS2P_AckStatusAfm(int nModuleIndex) = 0; virtual void ISCNS2P_AckCommandLoading(int nModuleIndex) = 0; virtual void ISCNS2P_AckCommandReviewResult(int nModuleIndex) = 0; virtual void ISCNS2P_AckCommandPlanStart(int nModuleIndex) = 0; virtual void ISCNS2P_AckCommandPlanEnd(int nModuleIndex) = 0; virtual void ISCNS2P_DisplayMessage(const TCHAR* lpstrFormat, ...) = 0; }; class AFX_EXT_CLASS CSignalControl_NetServer : public IIOCPNetwork2Parent, public IMessageProcessor2Parent { public: CSignalControl_NetServer(ISignalControl_NetServer2Parent* pISCNS2P); virtual ~CSignalControl_NetServer(void); // net 2 parent virtual void IOCPNet2P_Connected(int Type); virtual void IOCPNet2P_Disconnected(int Type, int nModuleNo = -1); virtual BOOL IOCPNet2P_Received(int Type, CNetPacket* pPacket, int nContext = -1); // command virtual int Send_StatusLight(int nModuleIndex, int nLight); virtual int Send_StatusLens(int nModuleIndex, int nLens); virtual int Send_StatusModulePos(int nModuleIndex, int nPosUmX, int nPosUmY); virtual int Send_StatusJogSpeed(int nModuleIndex, double dJogSpeed); virtual int Send_StatusAfm(int nModuleIndex, int nAfm); virtual int Send_CommandLoading(char* pTrasferData); virtual int Send_CommandReviewResult(int nModuleIndex, int nPlanIndex, int nResultCount, char* pResultData, int nMagLevel = 0,int nDrsEtcCount = 100); virtual int Send_CommandPlanStart(int nPlanIndex); virtual int Send_CommandPlanEnd(int nPlanIndex); BOOL InitNetwork(); void DeinitNetwork(); protected: // message processor 2 parent virtual void IMP2P_ProcessMessageData(CMessageProcessData* pData); // command void Process_ModuleIndex(int nModuleIndex, int nContext); void Process_CommandLight(int nModuleIndex, CNetPacket *pPacket); void Process_CommandLens(int nModuleIndex, CNetPacket *pPacket); void Process_CommandMotorGo(int nModuleIndex, CNetPacket *pPacket); void Process_CommandGlassGo(int nModuleIndex, CNetPacket *pPacket); void Process_CommandJog(int nModuleIndex, CNetPacket *pPacket); void Process_CommandJogSpeed(int nModuleIndex, CNetPacket *pPacket); void Process_CommandAfm(int nModuleIndex, CNetPacket *pPacket); void Process_CommandAfmJog(int nModuleIndex, CNetPacket *pPacket); void Process_CommandAfmJogSpeed(int nModuleIndex, CNetPacket *pPacket); void Process_CommandAfmHome(int nModuleIndex, CNetPacket *pPacket); // status void Process_StatusReviewResult(int nModuleIndex, CNetPacket *pPacket); // ack void Process_AckStatusLight(int nModuleIndex, CNetPacket *pPacket); void Process_AckStatusLens(int nModuleIndex, CNetPacket *pPacket); void Process_AckStatusModulePos(int nModuleIndex, CNetPacket *pPacket); void Process_AckStatusJogSpeed(int nModuleIndex, CNetPacket *pPacket); void Process_AckStatusAfm(int nModuleIndex, CNetPacket *pPacket); void Process_AckCommandLoading(int nModuleIndex, CNetPacket *pPacket); void Process_AckCommandReviewResult(int nModuleIndex, CNetPacket *pPacket); void Process_AckCommandPlanStart(int nModuleIndex, CNetPacket *pPacket); void Process_AckCommandPlanEnd(int nModuleIndex, CNetPacket *pPacket); protected: ISignalControl_NetServer2Parent* m_pISCNS2P; CMessageProcessor* m_pMessageProcessor; CNetServer* m_pNetServer; CCriticalSection m_csReceivePacket; }; };