darker
2025-02-18 a886343fc6eaecb4eccd35dc2a5b95fc84212dd5
SourceCode/Bond/Servo/CEquipment.h
@@ -3,13 +3,30 @@
#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
   {
@@ -20,6 +37,9 @@
   public:
      virtual const char* getClassName() = 0;
      virtual void setListener(EquipmentListener listener);
      void setID(int nID);
      int getID();
      void setName(const char* pszName);
      std::string& getName();
      void setDescription(const char* pszDescription);
@@ -34,18 +54,26 @@
      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;
      int m_nID;
      std::string m_strName;
      std::string m_strDescription;
      CRITICAL_SECTION m_criticalSection;
      StationIdentifier m_station;
      MemoryBlock m_blockReadBit;
      MemoryBlock m_blockWriteBit;
      ALIVE m_alive;
   };
}