| | |
| | | |
| | | CEquipment::~CEquipment() |
| | | { |
| | | for (auto item : m_mapStep) { |
| | | delete item.second; |
| | | } |
| | | m_mapStep.clear(); |
| | | |
| | | DeleteCriticalSection(&m_criticalSection); |
| | | } |
| | | |
| | |
| | | m_listener.onCimStateChanged = listener.onCimStateChanged; |
| | | } |
| | | |
| | | CStep* CEquipment::getStep(unsigned int addr) |
| | | { |
| | | auto iter = m_mapStep.find(addr); |
| | | if (iter == m_mapStep.end()) return nullptr; |
| | | return iter->second; |
| | | } |
| | | |
| | | int CEquipment::addStep(unsigned int addr, CStep* pStep) |
| | | { |
| | | auto iter = m_mapStep.find(addr); |
| | | if (iter != m_mapStep.end()) return -1; |
| | | m_mapStep[addr] = pStep; |
| | | return 0; |
| | | } |
| | | |
| | | void CEquipment::init() |
| | | { |
| | | |
| | | CStep* pStep = new CStep(); |
| | | if (addStep(0x360, pStep) == 0) { |
| | | pStep->init(); |
| | | } |
| | | else { |
| | | delete pStep; |
| | | } |
| | | } |
| | | |
| | | void CEquipment::term() |
| | | { |
| | | |
| | | for (auto item : m_mapStep) { |
| | | item.second->term(); |
| | | } |
| | | } |
| | | |
| | | void CEquipment::setID(int nID) |
| | |
| | | if (!equalBool(m_bVCREnable[0], bFlag)) { |
| | | m_bVCREnable[0] = bFlag; |
| | | } |
| | | |
| | | |
| | | // 以下根据信号做流程处理 |
| | | |
| | | // Equipment Mode Change Report |
| | | index = 0x360; |
| | | bFlag = isBitOn(pszData, size, ++index); |
| | | static int i; |
| | | i++; |
| | | if (i > 10) bFlag = TRUE; |
| | | if (i > 15) bFlag = FALSE; |
| | | if (i > 110) bFlag = TRUE; |
| | | if (i > 115) bFlag = FALSE; |
| | | //if (i == 12) bFlag = FALSE; |
| | | CStep* pStep = getStep(0x360); |
| | | if (pStep != nullptr) { |
| | | pStep->onSignal(bFlag); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | BOOL CEquipment::isBitOn(const char* pszData, size_t size, int index) |