darker
2025-02-18 4289dfbba5033a08e9aea375f439e2ea7e0648da
SourceCode/Bond/Servo/CEquipment.cpp
@@ -7,8 +7,9 @@
   CEquipment::CEquipment() : m_nID(0), m_strName(""), m_strDescription(""), m_station(0, 255)
   {
      m_listener = { nullptr, nullptr };
      m_alive = {FALSE, 0, FALSE};
      m_listener.onAlive = {nullptr};
      m_bCimState = FALSE;
      InitializeCriticalSection(&m_criticalSection);
   }
@@ -20,6 +21,7 @@
   void CEquipment::setListener(EquipmentListener listener)
   {
      m_listener.onAlive = listener.onAlive;
      m_listener.onCimStateChanged = listener.onCimStateChanged;
   }
   void CEquipment::init()
@@ -131,7 +133,10 @@
      }
      // 解释数据
      // 以下解释和处理数据
      // alive
      /*
      BOOL bAliveFlag = isBitOn(pszData, size, 0x340);
      if (m_alive.flag != bAliveFlag) {
         m_alive.flag = bAliveFlag;
@@ -145,6 +150,15 @@
            }
         }
      }
      */
      // CIM State
      BOOL bCimState = isBitOn(pszData, size, 0x341);
      if ((bCimState && !m_bCimState) || (!bCimState && m_bCimState)) {
         m_bCimState = bCimState;
         if (m_listener.onCimStateChanged != nullptr) {
            m_listener.onCimStateChanged(this, m_bCimState);
         }
      }
   }
   BOOL CEquipment::isBitOn(const char* pszData, size_t size, int index)