From 45145e8c6a0eaa5368e390647c2570903dd747b0 Mon Sep 17 00:00:00 2001
From: gscalamera <graziano.scalamera@elettra.eu>
Date: Mon, 27 May 2019 16:34:16 +0200
Subject: [PATCH] Added support for highest, high, medium, low, lowest priority
 levels

---
 src/AlarmHandler.cpp | 8 +++++---
 src/alarm_grammar.h  | 2 +-
 src/alarm_table.h    | 9 ++++++++-
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/AlarmHandler.cpp b/src/AlarmHandler.cpp
index 5352f1c..49fd770 100644
--- a/src/AlarmHandler.cpp
+++ b/src/AlarmHandler.cpp
@@ -2309,7 +2309,8 @@ void AlarmHandler::modify(Tango::DevString argin)
 			if ((alm.name.empty() == false) && \
 					(alm.formula.empty() == false) && \
 					((alm.lev==LEV_LOG)||(alm.lev==LEV_WARNING)|| \
-					(alm.lev==LEV_FAULT)||(alm.lev.empty() == true))) {
+					(alm.lev==LEV_FAULT)||(alm.lev==LEV_LOWEST)||(alm.lev==LEV_LOW)|| \
+					(alm.lev==LEV_MEDIUM)||(alm.lev==LEV_HIGH)||(alm.lev==LEV_HIGHEST)||(alm.lev.empty() == true))) {
 				i->second.stat = S_NORMAL;
 				i->second.ack = ACK;
 				i->second.done = false;
@@ -3331,7 +3332,8 @@ void AlarmHandler::load_alarm(string alarm_string, alarm_t &alm, vector<string>
 	if ((alm.name.empty() == false) && \
 			(alm.formula.empty() == false) && \
 			((alm.lev==LEV_LOG)||(alm.lev==LEV_WARNING)|| \
-			(alm.lev==LEV_FAULT)||(alm.lev.empty() == true))) {
+			(alm.lev==LEV_FAULT)||(alm.lev==LEV_LOWEST)||(alm.lev==LEV_LOW)|| \
+			(alm.lev==LEV_MEDIUM)||(alm.lev==LEV_HIGH)||(alm.lev==LEV_HIGHEST)||(alm.lev.empty() == true))) {
 		alm.stat = S_NORMAL;
 		alm.ack = ACK;
 		alm.done = false;
@@ -4233,7 +4235,7 @@ void AlarmHandler::set_internal_alarm(string name, Tango::TimeVal t, string msg,
 		else
 			alm.grp = GR_DEFAULT;
 		//alm.lev = LEV_DEFAULT;	
-		alm.lev = LEV_LOG;	
+		alm.lev = LEV_LOWEST;
 		internal.push_back(alm);
 	}
 	internallock->writerOut();
diff --git a/src/alarm_grammar.h b/src/alarm_grammar.h
index 5cdcfe0..b6beaf3 100644
--- a/src/alarm_grammar.h
+++ b/src/alarm_grammar.h
@@ -246,7 +246,7 @@ struct alarm_parse : public grammar<alarm_parse>
 				=	discard_node_d[str_p(KEY(LEVEL_KEY))] >>
 					//lexeme_d[(+alnum_p)]		//match only possible levels?? (fault, log, ...)
 					//(+(alnum_p-'\t'))
-					(str_p("fault") | str_p("warning") | str_p("log"))
+					(str_p("highest") | str_p("high") | str_p("medium") | str_p("low") | str_p("lowest") | str_p("fault") | str_p("warning") | str_p("log"))//TODO
 					[
 						assign_a(self.m_alarm.lev)		//save level in alarm_t
 					]
diff --git a/src/alarm_table.h b/src/alarm_table.h
index 0a33962..4756d9a 100644
--- a/src/alarm_table.h
+++ b/src/alarm_table.h
@@ -83,7 +83,14 @@ typedef parse_tree_match_t::tree_iterator iter_t;
 #define LEV_LOG			"log"
 #define LEV_WARNING		"warning"
 #define LEV_FAULT		"fault"
-#define LEV_DEFAULT	LEV_FAULT
+//#define LEV_DEFAULT	LEV_FAULT
+
+#define LEV_LOWEST		"lowest"
+#define LEV_LOW			"low"
+#define LEV_MEDIUM		"medium"
+#define LEV_HIGH		"high"
+#define LEV_HIGHEST		"highest"
+#define LEV_DEFAULT		LEV_HIGH
 
 class alarm_t;
 class alarm_table;
-- 
GitLab