X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fo1%2FAlarmManager.cpp;h=0183da5f5d655b68adbf779eb9b4c3dd66366ed8;hb=0a4589de6e89782d734930a2a7648d5921b176d8;hp=b396188d4f808bafa8ab0519ea864002656e3b62;hpb=c9ee9d5360e8cad2cb2f807f5ebfabe9304d88c4;p=o-du%2Fl2.git diff --git a/src/o1/AlarmManager.cpp b/src/o1/AlarmManager.cpp index b396188d4..0183da5f5 100644 --- a/src/o1/AlarmManager.cpp +++ b/src/o1/AlarmManager.cpp @@ -1,6 +1,6 @@ /******************************************************************************* ################################################################################ -# Copyright (c) [2020] [HCL Technologies Ltd.] # +# Copyright (c) [2020-2022] [HCL Technologies Ltd.] # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # @@ -17,14 +17,15 @@ *******************************************************************************/ /* This file contains AlarmManager singleton class which is responsible for - storing and managing alarms. -*/ + storing and managing alarms. +*/ #include #include "AlarmManager.hpp" using std::pair; + /* Default constructor */ AlarmManager::AlarmManager() { @@ -38,12 +39,116 @@ AlarmManager::~AlarmManager() } +/******************************************************************* + * + * @brief Read the data from the connected client application + * + * @details + * + * Function : update + * + * Functionality: + * - Reads the data from the connected client application + * + * + * @params[in] char* + * @return void + ******************************************************************/ + +void AlarmManager::update(char* recvBuf) +{ + O1_LOG("\nO1 AlarmManager update received"); + AlarmRecord *alrmRec = NULL; + Alarm alrm; + MsgHeader *msgHdr = (MsgHeader*)recvBuf; + O1_LOG("\nO1 AlarmManager: MsgType %d",msgHdr->msgType); + + + if ( msgHdr->msgType == ALARM ){ + uint16_t alrmId; + alrmRec = (AlarmRecord*) recvBuf; + O1_LOG("\nO1 AlarmManager:Alarm info\n" + " Action %d\n" + " Alarm ID %s\n" + " Severity %d\n" + " Additional Text %s\n" + " Specific Problem %s\n" + " Additional Info %s\n" + " Alarm Raise Time %s\n", + alrmRec->msgHeader.action, + alrmRec->alarmId, + alrmRec->perceivedSeverity, + alrmRec->additionalText, + alrmRec->specificProblem, + alrmRec->additionalInfo, + alrmRec->alarmRaiseTime + ); + + /*Fill the alarm structure */ + sscanf(alrmRec->alarmId,"%hu",&alrmId); + alrm.setAlarmId(alrmId); + alrm.setPerceivedSeverity(alrmRec->perceivedSeverity); + alrm.setAdditionalText(alrmRec->additionalText); + alrm.setEventType(alrmRec->eventType); + alrm.setSpecificProblem(alrmRec->specificProblem); + alrm.setAdditionalInfo(alrmRec->additionalInfo); + } + + switch(msgHdr->action) + { + case RAISE_ALARM: + + if(raiseAlarm(alrm)) + { + VesEventHandler vesEventHandler; + if (!vesEventHandler.prepare(VesEventType::FAULT_NOTIFICATION, &alrm)) + return ;//O1::FAILURE; + + O1_LOG("\nO1 AlarmManager : Sending Alarm Data"); + if ( !vesEventHandler.send() ) + return ;//O1::FAILURE; + + O1_LOG("\nO1 AlarmManager : " + "Alarm raised for alarm Id %s", + alrmRec->alarmId); + } + + else + { + O1_LOG("\nO1 AlarmManager : " + "Error in raising alarm for alrm Id %s", + alrmRec->alarmId); + } + break; + + case CLEAR_ALARM: + if(clearAlarm(alrm)) + { + O1_LOG("\nO1 AlarmManager : " + "Alarm cleared for alarm Id %s", + alrmRec->alarmId); + + } + else + { + O1_LOG("\nO1 AlarmManager : " + "Error in clearing alarm for alarm Id %s", + alrmRec->alarmId); + } + break; + default: + O1_LOG("\nO1 AlarmManager : No action performed"); + break; + } + +} + -/********************************************************************** +/********************************************************************** Description : Raise an Alarm and store it in alarm list Params[In] : Alarm Return : true - insert in map successful - false - insert in map unsuccessful + false - insert in map unsuccessful **********************************************************************/ bool AlarmManager::raiseAlarm(const Alarm& alarm) { @@ -52,16 +157,16 @@ bool AlarmManager::raiseAlarm(const Alarm& alarm) ret = mAlarmList.insert(pair(alarm.getAlarmId(),alarm)); return ret.second; - + } -/********************************************************************** - Description : Clear an Alarm and delete it from alarm list +/********************************************************************** + Description : Clear an Alarm and delete it from alarm list Params[In] : Alarm instance Return : true - delete successful - false - delete unsuccessful + false - delete unsuccessful **********************************************************************/ bool AlarmManager::clearAlarm(const Alarm& alarm) { @@ -72,17 +177,18 @@ bool AlarmManager::clearAlarm(const Alarm& alarm) { mAlarmList.erase(it); ret = true; - } + } return ret; } -/********************************************************************** + +/********************************************************************** Description : Clear an Alarm and delete it from alarm list with - alarmId + alarmId Params[In] : Alarm Id Return : true - delete successful - false - delete unsuccessful + false - delete unsuccessful **********************************************************************/ bool AlarmManager::clearAlarm(const uint16_t& alarmId) { @@ -90,7 +196,7 @@ bool AlarmManager::clearAlarm(const uint16_t& alarmId) } -/********************************************************************** +/********************************************************************** Description : Return the list of active alarms Params[In] : None Return : constant reference to the map