| | |
| | | #include "CCLinkIEControl.h" |
| | | |
| | | namespace SERVO { |
| | | #define BLOCK_BUFFER_MAX 1024 |
| | | #define ALIVE_TIMEOUT 15 |
| | | |
| | | typedef std::function<void(void* pEiuipment, BOOL bAlive)> ONALIVE; |
| | | typedef struct _EquipmentListener |
| | | { |
| | | ONALIVE onAlive; |
| | | } EquipmentListener; |
| | | |
| | | // Memory Block 结构体定义 |
| | | typedef struct _MemoryBlock { |
| | | unsigned int type; |
| | | unsigned int start; |
| | | unsigned int end; |
| | | unsigned int size; |
| | | char buffer[BLOCK_BUFFER_MAX]; |
| | | } MemoryBlock; |
| | | |
| | | // ALIVE |
| | | typedef struct _ALIVE { |
| | | BOOL flag; |
| | | int count; |
| | | BOOL alive; |
| | | } ALIVE; |
| | | |
| | | class CEquipment |
| | | { |
| | |
| | | |
| | | public: |
| | | virtual const char* getClassName() = 0; |
| | | virtual void setListener(EquipmentListener listener); |
| | | void setName(const char* pszName); |
| | | std::string& getName(); |
| | | void setDescription(const char* pszDescription); |
| | |
| | | virtual void term(); |
| | | virtual void onTimer(UINT nTimerid); |
| | | virtual void serialize(CArchive& ar); |
| | | virtual void onReceiveLBData(const char* pszData, size_t size); |
| | | BOOL isAlive(); |
| | | |
| | | private: |
| | | BOOL isBitOn(const char* pszData, size_t size, int index); |
| | | |
| | | protected: |
| | | inline void Lock() { EnterCriticalSection(&m_criticalSection); } |
| | | inline void Unlock() { LeaveCriticalSection(&m_criticalSection); } |
| | | |
| | | protected: |
| | | EquipmentListener m_listener; |
| | | std::string m_strName; |
| | | std::string m_strDescription; |
| | | CRITICAL_SECTION m_criticalSection; |
| | | StationIdentifier m_station; |
| | | MemoryBlock m_blockReadBit; |
| | | MemoryBlock m_blockWriteBit; |
| | | ALIVE m_alive; |
| | | }; |
| | | } |
| | | |