LAPTOP-SNT8I5JK\Boounion
2025-02-17 0d885fe2e84ac5a6390ddc4d43ab701112eedc64
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,7 @@
   public:
      virtual const char* getClassName() = 0;
      virtual void setListener(EquipmentListener listener);
      void setName(const char* pszName);
      std::string& getName();
      void setDescription(const char* pszDescription);
@@ -34,18 +52,25 @@
      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;
   };
}