From 09a0bd46861c8df221983f4ea1458a36c5d8a7c2 Mon Sep 17 00:00:00 2001
From: LAPTOP-SNT8I5JK\Boounion <Chenluhua@qq.com>
Date: 星期五, 13 十二月 2024 11:58:21 +0800
Subject: [PATCH] 1.工具条增加“警告”按钮

---
 SourceCode/Bond/BondEq/AlarmMonitor.cpp |   50 +++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/SourceCode/Bond/BondEq/AlarmMonitor.cpp b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
index 8d3c9f5..86614e5 100644
--- a/SourceCode/Bond/BondEq/AlarmMonitor.cpp
+++ b/SourceCode/Bond/BondEq/AlarmMonitor.cpp
@@ -9,8 +9,8 @@
 
 CAlarmMonitor::CAlarmMonitor()
 {
-	m_pRawData = new char[200];
-	memset(m_pRawData, 0, 200);
+	m_pRawData = new char[512];
+	memset(m_pRawData, 0, 512);
 }
 
 
@@ -54,7 +54,7 @@
 	if (MONITOR_ID_ALARM != id) {
 		return;
 	}
-	
+
 	// 比较有没有变化
 	if (compareData(m_pRawData, (const char*)pData, size)) {
 		return;
@@ -95,13 +95,14 @@
 	for (auto iter = m_mapAlarming.begin(); iter != m_mapAlarming.end();/* iter++*/) {
 		if (!findAlarm(alarmIds, iter->first)) {
 			// 消除警告, 同时将信息发出,以使界面显示和历史记录保存
-			iter->second->alarmOff();
-			addAlarmToHistoryRecord(iter->second);
-			LOGE("消除了警告:%s", iter->second->toString().c_str());
-			SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", iter->second));
-
-			iter->second->release();
+			CAlarm* pAlarm = iter->second;
+			pAlarm->alarmOff();
+			addAlarmToHistoryRecord(pAlarm);
 			m_mapAlarming.erase(iter++);
+
+			LOGE("消除了警告:%s", pAlarm->toString().c_str());
+			SendBroadcast(&CIntent(BC_CODE_ALARM_OFF, "", pAlarm));
+			pAlarm->release();
 		}
 		else {
 			iter++;
@@ -190,11 +191,9 @@
 	}
 }
 
-void CAlarmMonitor::getAlarmingMap(std::map<int, CAlarm*>& alarms)
+std::map<int, CAlarm*>& CAlarmMonitor::getAlarmingMap()
 {
-	Lock();
-	alarms = m_mapAlarming;
-	Unlock();
+	return m_mapAlarming;
 }
 
 BOOL CAlarmMonitor::isAlarming()
@@ -205,6 +204,31 @@
 	return bAlarming;
 }
 
+CAlarm* CAlarmMonitor::getActiveAlarm()
+{
+	Lock();
+	if (m_mapAlarming.empty()) {
+		Unlock();
+		return nullptr;
+	}
+	auto iter = m_mapAlarming.begin();
+	Unlock();
+
+	return iter->second;
+}
+
+std::list< CAlarm*>& CAlarmMonitor::getAlarmRecords()
+{
+	return m_alarms;
+}
+
+void CAlarmMonitor::getAlarmRecords(std::list< CAlarm*>& list)
+{
+	Lock();
+	list = m_alarms;
+	Unlock();
+}
+
 BOOL CAlarmMonitor::compareData(const char* pScrData, const char* pTarData, int len)
 {
 	for (int i = 0; i < len; i++) {

--
Gitblit v1.9.3