#pragma once #include #include #include "HsmsAction.h" #define ER_NOERROR 0 #define ER_NOTSELECT -1 #define ER_BUSY -2 class CModel; class CHsmsPassive { public: CHsmsPassive(); ~CHsmsPassive(); public: unsigned OnCimWork(); void OnTimer(UINT nTimerid); void setActionTimeout(int nSecond); int init(CModel* pModel, const char* pszName, unsigned int port); int term(); int secsAreYouThereRequest(); int secsAreYouThereReply(unsigned int sessionId, unsigned int systemBytes); private: inline void Lock() { EnterCriticalSection(&m_criticalSection); } inline void Unlock() { LeaveCriticalSection(&m_criticalSection); } int onRecvMsg(IMessage* pMessage); private: CModel* m_pModel; IPassive* m_pPassive; int m_nActionTimeout; unsigned int m_nSystemByte; BOOL m_bAreYouThereRequest; std::string m_strEquipmentModelType; std::string m_strSoftRev; CRITICAL_SECTION m_criticalSection; std::list m_listAction; std::list m_listActionSent; private: BOOL m_bCimWorking; HANDLE m_hCimWorkEvent; HANDLE m_hCimWorkThreadHandle; unsigned m_nCimWorkThrdaddr; };