Skip to content
Snippets Groups Projects
AlarmDynAttrUtils.cpp 5.51 KiB
Newer Older
/*----- PROTECTED REGION ID(Alarm::DynAttrUtils.cpp) ENABLED START -----*/
static const char *RcsId = "$Id:  $";
//=============================================================================
//
// file :        AlarmDynAttrUtils.cpp
//
// description : Dynamic attributes utilities file for the Alarm class
//
// project :     Elettra alarm 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/>.
// 
// $Author:  $
//
// $Revision:  $
// $Date:  $
//
// $HeadURL:  $
//
//=============================================================================
//                This file is generated by POGO
//        (Program Obviously used to Generate tango Object)
//=============================================================================


#include <Alarm.h>
#include <AlarmClass.h>

/*----- PROTECTED REGION END -----*/	//	Alarm::DynAttrUtils.cpp

//================================================================
//  Attributes managed is:
//================================================================
//  AlarmState  |  Tango::DevBoolean	Scalar
//================================================================

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

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

//--------------------------------------------------------
/**
 *	Add a AlarmState dynamic attribute.
 *
 *  parameter attname: attribute name to be cretated and added.
 */
//--------------------------------------------------------
void Alarm::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(Alarm::att_AlarmState_dynamic_attribute) ENABLED START -----*/
	DEBUG_STREAM << __func__<<": entering name="<<attname;
	
	/*----- PROTECTED REGION END -----*/	//	Alarm::att_AlarmState_dynamic_attribute
	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, false));
	add_attribute(alarmstate);
}
//--------------------------------------------------------
/**
 *	remove a AlarmState dynamic attribute.
 *
 *  parameter attname: attribute name to be removed.
 */
//--------------------------------------------------------
void Alarm::remove_AlarmState_dynamic_attribute(string attname)
{
	remove_attribute(attname, true);
	map<string,Tango::DevBoolean>::iterator ite;
    if ((ite=AlarmState_data.find(attname))!=AlarmState_data.end())
    {
    	/*----- PROTECTED REGION ID(Alarm::remove_AlarmState_dynamic_attribute) ENABLED START -----*/
    	DEBUG_STREAM << __func__<<": entering name="<<attname;
    	/*----- PROTECTED REGION END -----*/	//	Alarm::remove_AlarmState_dynamic_attribute
		AlarmState_data.erase(ite);
	}
}


//============================================================
//	Tool methods to get pointer on attribute data buffer 
//============================================================
//--------------------------------------------------------
/**
 *	Return a pointer on AlarmState data.
 *
 *  parameter attname: the specified attribute name.
 */
//--------------------------------------------------------
Tango::DevBoolean *Alarm::get_AlarmState_data_ptr(string &name)
{
	map<string,Tango::DevBoolean>::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 *)"Alarm::get_AlarmState_data_ptr()");
    }
	return  &(ite->second);
}


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


} //	namespace