Skip to content
Snippets Groups Projects
AlarmHandlerDynAttrUtils.cpp 9.16 KiB
Newer Older
/*----- PROTECTED REGION ID(AlarmHandler::DynAttrUtils.cpp) ENABLED START -----*/
//=============================================================================
//
// file :        AlarmHandlerDynAttrUtils.cpp
// description : Dynamic attributes utilities file for the AlarmHandler class
// project :     Elettra alarm handler device server
//
// This file is part of Tango device class.
// 
// Tango is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// Tango is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with Tango.  If not, see <http://www.gnu.org/licenses/>.
// 
//
//
//=============================================================================
//                This file is generated by POGO
//        (Program Obviously used to Generate tango Object)
//=============================================================================


#include <AlarmHandler.h>
#include <AlarmHandlerClass.h>
/*----- PROTECTED REGION END -----*/	//	AlarmHandler::DynAttrUtils.cpp

//================================================================
//================================================================
//  AlarmState    |  Tango::DevEnum	Scalar
//  AlarmFormula  |  Tango::DevString	Scalar
//================================================================

//	For compatibility reason, this file (AlarmHandlerDynAttrUtils)
//	manage also the dynamic command utilities.
//================================================================
//  The following table gives the correspondence
//  between command and method names.
//
//  Command name  |  Method name
//================================================================
//================================================================

namespace AlarmHandler_ns
{
//=============================================================
//	Add/Remove dynamic attribute methods
//=============================================================

//--------------------------------------------------------
/**
 *	Add a AlarmState dynamic attribute.
 *
 *  parameter attname: attribute name to be cretated and added.
 */
//--------------------------------------------------------
void AlarmHandler::add_AlarmState_dynamic_attribute(string attname)
{
	//	Attribute : AlarmState
	AlarmStateAttrib	*alarmstate = new AlarmStateAttrib(attname);
	Tango::UserDefaultAttrProp	alarmstate_prop;
	//	description	not set for AlarmState
	//	label	not set for AlarmState
	//	unit	not set for AlarmState
	//	standard_unit	not set for AlarmState
	//	display_unit	not set for AlarmState
	//	format	not set for AlarmState
	//	max_value	not set for AlarmState
	//	min_value	not set for AlarmState
	//	max_alarm	not set for AlarmState
	//	min_alarm	not set for AlarmState
	//	max_warning	not set for AlarmState
	//	min_warning	not set for AlarmState
	//	delta_t	not set for AlarmState
	//	delta_val	not set for AlarmState
	
	/*----- PROTECTED REGION ID(AlarmHandler::att_AlarmState_dynamic_attribute) ENABLED START -----*/
	DEBUG_STREAM << __func__<<": entering name="<<attname;
	alarm_container_t::iterator i = alarms.v_alarm.find(attname);
	if(i != alarms.v_alarm.end())
	{
		alarmstate_prop.set_description(i->second.formula.c_str());
	}
	else
	{
		INFO_STREAM << __func__<<": name="<<attname<<" NOT FOUND while looking for formula to add as attribute description";
	}
	/*----- PROTECTED REGION END -----*/	//	AlarmHandler::att_AlarmState_dynamic_attribute
	{
		vector<string> labels;
		labels.push_back("NORM");
		labels.push_back("UNACK");
		labels.push_back("ACKED");
		labels.push_back("RTNUN");
		labels.push_back("SHLVD");
		labels.push_back("DSUPR");
		labels.push_back("OOSRV");
		alarmstate_prop.set_enum_labels(labels);
	}
	alarmstate->set_default_properties(alarmstate_prop);
	//	Not Polled
	alarmstate->set_disp_level(Tango::OPERATOR);
	//	Not Memorized
	alarmstate->set_change_event(true, true);
	alarmstate->set_archive_event(true, true);
	AlarmState_data.insert(make_pair(attname, 0));
	add_attribute(alarmstate);
}
//--------------------------------------------------------
/**
 *	remove a AlarmState dynamic attribute.
 *
 *  parameter attname: attribute name to be removed.
 */
//--------------------------------------------------------
void AlarmHandler::remove_AlarmState_dynamic_attribute(string attname)
	remove_attribute(attname, true, Tango::Util::instance()->_UseDb);
	map<string,Tango::DevEnum>::iterator ite;
    if ((ite=AlarmState_data.find(attname))!=AlarmState_data.end())
    {
    	/*----- PROTECTED REGION ID(AlarmHandler::remove_AlarmState_dynamic_attribute) ENABLED START -----*/
    	DEBUG_STREAM << __func__<<": entering name="<<attname;
    	/*----- PROTECTED REGION END -----*/	//	AlarmHandler::remove_AlarmState_dynamic_attribute
//--------------------------------------------------------
/**
 *	Add a AlarmFormula dynamic attribute.
 *
 *  parameter attname: attribute name to be cretated and added.
 */
//--------------------------------------------------------
void AlarmHandler::add_AlarmFormula_dynamic_attribute(string attname)
{
	//	Attribute : AlarmFormula
	AlarmFormulaAttrib	*alarmformula = new AlarmFormulaAttrib(attname);
	Tango::UserDefaultAttrProp	alarmformula_prop;
	//	description	not set for AlarmFormula
	//	label	not set for AlarmFormula
	//	unit	not set for AlarmFormula
	//	standard_unit	not set for AlarmFormula
	//	display_unit	not set for AlarmFormula
	//	format	not set for AlarmFormula
	//	max_value	not set for AlarmFormula
	//	min_value	not set for AlarmFormula
	//	max_alarm	not set for AlarmFormula
	//	min_alarm	not set for AlarmFormula
	//	max_warning	not set for AlarmFormula
	//	min_warning	not set for AlarmFormula
	//	delta_t	not set for AlarmFormula
	//	delta_val	not set for AlarmFormula
	
	/*----- PROTECTED REGION ID(AlarmHandler::att_AlarmFormula_dynamic_attribute) ENABLED START -----*/
	DEBUG_STREAM << __func__<<": entering name="<<attname;
	
	/*----- PROTECTED REGION END -----*/	//	AlarmHandler::att_AlarmFormula_dynamic_attribute
	alarmformula->set_default_properties(alarmformula_prop);
	//	Not Polled
	alarmformula->set_disp_level(Tango::OPERATOR);
	//	Not Memorized
	alarmformula->set_change_event(true, false);
	alarmformula->set_archive_event(true, false);
	char array[1];
	array[0] = '\0';
	AlarmFormula_data.insert(make_pair(attname, array));
	add_attribute(alarmformula);
}
//--------------------------------------------------------
/**
 *	remove a AlarmFormula dynamic attribute.
 *
 *  parameter attname: attribute name to be removed.
 */
//--------------------------------------------------------
void AlarmHandler::remove_AlarmFormula_dynamic_attribute(string attname)
	remove_attribute(attname, true, Tango::Util::instance()->_UseDb);
	map<string,Tango::DevString>::iterator ite;
    if ((ite=AlarmFormula_data.find(attname))!=AlarmFormula_data.end())
    {
    	/*----- PROTECTED REGION ID(AlarmHandler::remove_AlarmFormula_dynamic_attribute) ENABLED START -----*/
    	/*----- PROTECTED REGION END -----*/	//	AlarmHandler::remove_AlarmFormula_dynamic_attribute


//============================================================
//	Tool methods to get pointer on attribute data buffer 
//============================================================
//--------------------------------------------------------
/**
 *	Return a pointer on AlarmState data.
 *
 *  parameter attname: the specified attribute name.
 */
//--------------------------------------------------------
Tango::DevEnum *AlarmHandler::get_AlarmState_data_ptr(string &name)
	map<string,Tango::DevEnum>::iterator ite;
    if ((ite=AlarmState_data.find(name))==AlarmState_data.end())
    {
		TangoSys_OMemStream	tms;
		tms << "Dynamic attribute " << name << " has not been created";
		Tango::Except::throw_exception(
					(const char *)"ATTRIBUTE_NOT_FOUND",
					tms.str().c_str(),
					(const char *)"AlarmHandler::get_AlarmState_data_ptr()");
//--------------------------------------------------------
/**
 *	Return a pointer on AlarmFormula data.
 *
 *  parameter attname: the specified attribute name.
 */
//--------------------------------------------------------
Tango::DevString *AlarmHandler::get_AlarmFormula_data_ptr(string &name)
{
	map<string,Tango::DevString>::iterator ite;
    if ((ite=AlarmFormula_data.find(name))==AlarmFormula_data.end())
    {
		TangoSys_OMemStream	tms;
		tms << "Dynamic attribute " << name << " has not been created";
		Tango::Except::throw_exception(
					(const char *)"ATTRIBUTE_NOT_FOUND",
					tms.str().c_str(),
					(const char *)"AlarmHandler::get_AlarmFormula_data_ptr()");


//=============================================================
//	Add/Remove dynamic command methods
//=============================================================


} //	namespace