-
Graziano Scalamera authorede86da5a7
AlarmHandlerClass.cpp 38.01 KiB
/*----- PROTECTED REGION ID(AlarmClass.cpp) ENABLED START -----*/
static const char *RcsId = "$Id: $";
static const char *TagName = "$Name: $";
static const char *CvsPath = "$Source: $";
static const char *SvnPath = "$HeadURL: $";
static const char *HttpServer = "http://www.esrf.eu/computing/cs/tango/tango_doc/ds_doc/";
//=============================================================================
//
// file : AlarmClass.cpp
//
// description : C++ source for the AlarmClass.
// A singleton class derived from DeviceClass.
// It implements the command and attribute list
// and all properties and methods required
// by the Alarm once per process.
//
// project : alarm
//
// 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 <tango.h>
#include <Alarm.h>
#include <AlarmClass.h>
/*----- PROTECTED REGION END -----*/ // AlarmClass.cpp
//-------------------------------------------------------------------
/**
* Create AlarmClass singleton and
* return it in a C function for Python usage
*/
//-------------------------------------------------------------------
extern "C" {
#ifdef _TG_WINDOWS_
__declspec(dllexport)
#endif
Tango::DeviceClass *_create_Alarm_class(const char *name) {
return Alarm_ns::AlarmClass::init(name);
}
}
namespace Alarm_ns
{
//===================================================================
// Initialize pointer for singleton pattern
//===================================================================
AlarmClass *AlarmClass::_instance = NULL;
//--------------------------------------------------------
/**
* method : AlarmClass::AlarmClass(string &s)
* description : constructor for the AlarmClass
*
* @param s The class name
*/
//--------------------------------------------------------
AlarmClass::AlarmClass(string &s):Tango::DeviceClass(s)
{
cout2 << "Entering AlarmClass constructor" << endl;
set_default_property();
write_class_property();
/*----- PROTECTED REGION ID(AlarmClass::constructor) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmClass::constructor
cout2 << "Leaving AlarmClass constructor" << endl;
}
//--------------------------------------------------------
/**
* method : AlarmClass::~AlarmClass()
* description : destructor for the AlarmClass
*/
//--------------------------------------------------------
AlarmClass::~AlarmClass()
{
/*----- PROTECTED REGION ID(AlarmClass::destructor) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmClass::destructor
_instance = NULL;
}
//--------------------------------------------------------
/**
* method : AlarmClass::init
* description : Create the object if not already done.
* Otherwise, just return a pointer to the object
*
* @param name The class name
*/
//--------------------------------------------------------
AlarmClass *AlarmClass::init(const char *name)
{
if (_instance == NULL)
{
try
{
string s(name);
_instance = new AlarmClass(s);
}
catch (bad_alloc &)
{
throw;
}
}
return _instance;
}
//--------------------------------------------------------
/**
* method : AlarmClass::instance
* description : Check if object already created,
* and return a pointer to the object
*/
//--------------------------------------------------------
AlarmClass *AlarmClass::instance()
{
if (_instance == NULL)
{
cerr << "Class is not initialised !!" << endl;
exit(-1);
}
return _instance;
}
//===================================================================
// Command execution method calls
//===================================================================
//--------------------------------------------------------
/**
* method : AckClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *AckClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
cout2 << "AckClass::execute(): arrived" << endl;
const Tango::DevVarStringArray *argin;
extract(in_any, argin);
((static_cast<Alarm *>(device))->ack(argin));
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : LoadClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *LoadClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
cout2 << "LoadClass::execute(): arrived" << endl;
Tango::DevString argin;
extract(in_any, argin);
((static_cast<Alarm *>(device))->load(argin));
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : RemoveClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *RemoveClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
cout2 << "RemoveClass::execute(): arrived" << endl;
Tango::DevString argin;
extract(in_any, argin);
((static_cast<Alarm *>(device))->remove(argin));
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : SearchAlarmClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *SearchAlarmClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
cout2 << "SearchAlarmClass::execute(): arrived" << endl;
Tango::DevString argin;
extract(in_any, argin);
return insert((static_cast<Alarm *>(device))->search_alarm(argin));
}
//--------------------------------------------------------
/**
* method : StopAudibleClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *StopAudibleClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any))
{
cout2 << "StopAudibleClass::execute(): arrived" << endl;
((static_cast<Alarm *>(device))->stop_audible());
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : SilenceClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *SilenceClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
cout2 << "SilenceClass::execute(): arrived" << endl;
const Tango::DevVarStringArray *argin;
extract(in_any, argin);
((static_cast<Alarm *>(device))->silence(argin));
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : ModifyClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *ModifyClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
cout2 << "ModifyClass::execute(): arrived" << endl;
Tango::DevString argin;
extract(in_any, argin);
((static_cast<Alarm *>(device))->modify(argin));
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : ShelveClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *ShelveClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
cout2 << "ShelveClass::execute(): arrived" << endl;
const Tango::DevVarStringArray *argin;
extract(in_any, argin);
((static_cast<Alarm *>(device))->shelve(argin));
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : EnableClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *EnableClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
cout2 << "EnableClass::execute(): arrived" << endl;
Tango::DevString argin;
extract(in_any, argin);
((static_cast<Alarm *>(device))->enable(argin));
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : DisableClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *DisableClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
cout2 << "DisableClass::execute(): arrived" << endl;
Tango::DevString argin;
extract(in_any, argin);
((static_cast<Alarm *>(device))->disable(argin));
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : ResetStatisticsClass::execute()
* description : method to trigger the execution of the command.
*
* @param device The device on which the command must be executed
* @param in_any The command input data
*
* returns The command output data (packed in the Any object)
*/
//--------------------------------------------------------
CORBA::Any *ResetStatisticsClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any))
{
cout2 << "ResetStatisticsClass::execute(): arrived" << endl;
((static_cast<Alarm *>(device))->reset_statistics());
return new CORBA::Any();
}
//===================================================================
// Properties management
//===================================================================
//--------------------------------------------------------
/**
* Method : AlarmClass::get_class_property()
* Description : Get the class property for specified name.
*/
//--------------------------------------------------------
Tango::DbDatum AlarmClass::get_class_property(string &prop_name)
{
for (unsigned int i=0 ; i<cl_prop.size() ; i++)
if (cl_prop[i].name == prop_name)
return cl_prop[i];
// if not found, returns an empty DbDatum
return Tango::DbDatum(prop_name);
}
//--------------------------------------------------------
/**
* Method : AlarmClass::get_default_device_property()
* Description : Return the default value for device property.
*/
//--------------------------------------------------------
Tango::DbDatum AlarmClass::get_default_device_property(string &prop_name)
{
for (unsigned int i=0 ; i<dev_def_prop.size() ; i++)
if (dev_def_prop[i].name == prop_name)
return dev_def_prop[i];
// if not found, return an empty DbDatum
return Tango::DbDatum(prop_name);
}
//--------------------------------------------------------
/**
* Method : AlarmClass::get_default_class_property()
* Description : Return the default value for class property.
*/
//--------------------------------------------------------
Tango::DbDatum AlarmClass::get_default_class_property(string &prop_name)
{
for (unsigned int i=0 ; i<cl_def_prop.size() ; i++)
if (cl_def_prop[i].name == prop_name)
return cl_def_prop[i];
// if not found, return an empty DbDatum
return Tango::DbDatum(prop_name);
}
//--------------------------------------------------------
/**
* Method : AlarmClass::set_default_property()
* Description : Set default property (class and device) for wizard.
* For each property, add to wizard property name and description.
* If default value has been set, add it to wizard property and
* store it in a DbDatum.
*/
//--------------------------------------------------------
void AlarmClass::set_default_property()
{
string prop_name;
string prop_desc;
string prop_def;
vector<string> vect_data;
// Set Default Class Properties
// Set Default device Properties
prop_name = "GroupNames";
prop_desc = "Labels for Group mask, first is for mask 0x00";
prop_def = "";
vect_data.clear();
if (prop_def.length()>0)
{
Tango::DbDatum data(prop_name);
data << vect_data ;
dev_def_prop.push_back(data);
add_wiz_dev_prop(prop_name, prop_desc, prop_def);
}
else
add_wiz_dev_prop(prop_name, prop_desc);
prop_name = "SubscribeRetryPeriod";
prop_desc = "Retry subscription period in seconds";
prop_def = "30";
vect_data.clear();
vect_data.push_back("30");
if (prop_def.length()>0)
{
Tango::DbDatum data(prop_name);
data << vect_data ;
dev_def_prop.push_back(data);
add_wiz_dev_prop(prop_name, prop_desc, prop_def);
}
else
add_wiz_dev_prop(prop_name, prop_desc);
prop_name = "StatisticsTimeWindow";
prop_desc = "Time window to compute statistics in seconds";
prop_def = "60";
vect_data.clear();
vect_data.push_back("60");
if (prop_def.length()>0)
{
Tango::DbDatum data(prop_name);
data << vect_data ;
dev_def_prop.push_back(data);
add_wiz_dev_prop(prop_name, prop_desc, prop_def);
}
else
add_wiz_dev_prop(prop_name, prop_desc);
}
//--------------------------------------------------------
/**
* Method : AlarmClass::write_class_property()
* Description : Set class description fields as property in database
*/
//--------------------------------------------------------
void AlarmClass::write_class_property()
{
// First time, check if database used
if (Tango::Util::_UseDb == false)
return;
Tango::DbData data;
string classname = get_name();
string header;
string::size_type start, end;
// Put title
Tango::DbDatum title("ProjectTitle");
string str_title("Elettra alarm device server");
title << str_title;
data.push_back(title);
// Put Description
Tango::DbDatum description("Description");
vector<string> str_desc;
str_desc.push_back("Elettra alarm device server");
description << str_desc;
data.push_back(description);
// Put inheritance
Tango::DbDatum inher_datum("InheritedFrom");
vector<string> inheritance;
inheritance.push_back("TANGO_BASE_CLASS");
inher_datum << inheritance;
data.push_back(inher_datum);
// Call database and and values
get_db_class()->put_property(data);
}
//===================================================================
// Factory methods
//===================================================================
//--------------------------------------------------------
/**
* Method : AlarmClass::device_factory()
* Description : Create the device object(s)
* and store them in the device list
*/
//--------------------------------------------------------
void AlarmClass::device_factory(const Tango::DevVarStringArray *devlist_ptr)
{
/*----- PROTECTED REGION ID(AlarmClass::device_factory_before) ENABLED START -----*/
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmClass::device_factory_before
// Create devices and add it into the device list
for (unsigned long i=0 ; i<devlist_ptr->length() ; i++)
{
cout4 << "Device name : " << (*devlist_ptr)[i].in() << endl;
device_list.push_back(new Alarm(this, (*devlist_ptr)[i]));
}
// Manage dynamic attributes if any
erase_dynamic_attributes(devlist_ptr, get_class_attr()->get_attr_list());
// Export devices to the outside world
for (unsigned long i=1 ; i<=devlist_ptr->length() ; i++)
{
// Add dynamic attributes if any
Alarm *dev = static_cast<Alarm *>(device_list[device_list.size()-i]);
dev->add_dynamic_attributes();
// Check before if database used.
if ((Tango::Util::_UseDb == true) && (Tango::Util::_FileDb == false))
export_device(dev);
else
export_device(dev, dev->get_name().c_str());
}
/*----- PROTECTED REGION ID(AlarmClass::device_factory_after) ENABLED START -----*/
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmClass::device_factory_after
}
//--------------------------------------------------------
/**
* Method : AlarmClass::attribute_factory()
* Description : Create the attribute object(s)
* and store them in the attribute list
*/
//--------------------------------------------------------
void AlarmClass::attribute_factory(vector<Tango::Attr *> &att_list)
{
/*----- PROTECTED REGION ID(AlarmClass::attribute_factory_before) ENABLED START -----*/
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmClass::attribute_factory_before
// Attribute : audibleAlarm
audibleAlarmAttrib *audiblealarm = new audibleAlarmAttrib();
Tango::UserDefaultAttrProp audiblealarm_prop;
audiblealarm_prop.set_description("True if there is at least one alarm that needs audible indication on the GUI");
// label not set for audibleAlarm
// unit not set for audibleAlarm
// standard_unit not set for audibleAlarm
// display_unit not set for audibleAlarm
// format not set for audibleAlarm
// max_value not set for audibleAlarm
// min_value not set for audibleAlarm
// max_alarm not set for audibleAlarm
// min_alarm not set for audibleAlarm
// max_warning not set for audibleAlarm
// min_warning not set for audibleAlarm
// delta_t not set for audibleAlarm
// delta_val not set for audibleAlarm
audiblealarm->set_default_properties(audiblealarm_prop);
// Not Polled
audiblealarm->set_disp_level(Tango::OPERATOR);
// Not Memorized
audiblealarm->set_change_event(true, false);
audiblealarm->set_archive_event(true, false);
att_list.push_back(audiblealarm);
// Attribute : StatisticsResetTime
StatisticsResetTimeAttrib *statisticsresettime = new StatisticsResetTimeAttrib();
Tango::UserDefaultAttrProp statisticsresettime_prop;
statisticsresettime_prop.set_description("Time elapsed in seconds since last Resetstatistics");
// label not set for StatisticsResetTime
statisticsresettime_prop.set_unit("s");
statisticsresettime_prop.set_standard_unit("1");
statisticsresettime_prop.set_display_unit("s");
// format not set for StatisticsResetTime
// max_value not set for StatisticsResetTime
// min_value not set for StatisticsResetTime
// max_alarm not set for StatisticsResetTime
// min_alarm not set for StatisticsResetTime
// max_warning not set for StatisticsResetTime
// min_warning not set for StatisticsResetTime
// delta_t not set for StatisticsResetTime
// delta_val not set for StatisticsResetTime
statisticsresettime->set_default_properties(statisticsresettime_prop);
// Not Polled
statisticsresettime->set_disp_level(Tango::OPERATOR);
// Not Memorized
att_list.push_back(statisticsresettime);
// Attribute : alarm
alarmAttrib *alarm = new alarmAttrib();
Tango::UserDefaultAttrProp alarm_prop;
// description not set for alarm
// label not set for alarm
// unit not set for alarm
// standard_unit not set for alarm
// display_unit not set for alarm
// format not set for alarm
// max_value not set for alarm
// min_value not set for alarm
// max_alarm not set for alarm
// min_alarm not set for alarm
// max_warning not set for alarm
// min_warning not set for alarm
// delta_t not set for alarm
// delta_val not set for alarm
alarm->set_default_properties(alarm_prop);
// Not Polled
alarm->set_disp_level(Tango::OPERATOR);
// Not Memorized
att_list.push_back(alarm);
// Attribute : normalAlarms
normalAlarmsAttrib *normalalarms = new normalAlarmsAttrib();
Tango::UserDefaultAttrProp normalalarms_prop;
normalalarms_prop.set_description("List of alarms in normal state");
// label not set for normalAlarms
// unit not set for normalAlarms
// standard_unit not set for normalAlarms
// display_unit not set for normalAlarms
// format not set for normalAlarms
// max_value not set for normalAlarms
// min_value not set for normalAlarms
// max_alarm not set for normalAlarms
// min_alarm not set for normalAlarms
// max_warning not set for normalAlarms
// min_warning not set for normalAlarms
// delta_t not set for normalAlarms
// delta_val not set for normalAlarms
normalalarms->set_default_properties(normalalarms_prop);
// Not Polled
normalalarms->set_disp_level(Tango::OPERATOR);
// Not Memorized
normalalarms->set_change_event(true, true);
normalalarms->set_archive_event(true, true);
att_list.push_back(normalalarms);
// Attribute : unacknowledgedAlarms
unacknowledgedAlarmsAttrib *unacknowledgedalarms = new unacknowledgedAlarmsAttrib();
Tango::UserDefaultAttrProp unacknowledgedalarms_prop;
unacknowledgedalarms_prop.set_description("List of alarms in unacknowledged state");
// label not set for unacknowledgedAlarms
// unit not set for unacknowledgedAlarms
// standard_unit not set for unacknowledgedAlarms
// display_unit not set for unacknowledgedAlarms
// format not set for unacknowledgedAlarms
// max_value not set for unacknowledgedAlarms
// min_value not set for unacknowledgedAlarms
// max_alarm not set for unacknowledgedAlarms
// min_alarm not set for unacknowledgedAlarms
// max_warning not set for unacknowledgedAlarms
// min_warning not set for unacknowledgedAlarms
// delta_t not set for unacknowledgedAlarms
// delta_val not set for unacknowledgedAlarms
unacknowledgedalarms->set_default_properties(unacknowledgedalarms_prop);
// Not Polled
unacknowledgedalarms->set_disp_level(Tango::OPERATOR);
// Not Memorized
unacknowledgedalarms->set_change_event(true, true);
unacknowledgedalarms->set_archive_event(true, true);
att_list.push_back(unacknowledgedalarms);
// Attribute : acknowledgedAlarms
acknowledgedAlarmsAttrib *acknowledgedalarms = new acknowledgedAlarmsAttrib();
Tango::UserDefaultAttrProp acknowledgedalarms_prop;
acknowledgedalarms_prop.set_description("List of alarms in acknowledged state");
// label not set for acknowledgedAlarms
// unit not set for acknowledgedAlarms
// standard_unit not set for acknowledgedAlarms
// display_unit not set for acknowledgedAlarms
// format not set for acknowledgedAlarms
// max_value not set for acknowledgedAlarms
// min_value not set for acknowledgedAlarms
// max_alarm not set for acknowledgedAlarms
// min_alarm not set for acknowledgedAlarms
// max_warning not set for acknowledgedAlarms
// min_warning not set for acknowledgedAlarms
// delta_t not set for acknowledgedAlarms
// delta_val not set for acknowledgedAlarms
acknowledgedalarms->set_default_properties(acknowledgedalarms_prop);
// Not Polled
acknowledgedalarms->set_disp_level(Tango::OPERATOR);
// Not Memorized
acknowledgedalarms->set_change_event(true, true);
acknowledgedalarms->set_archive_event(true, true);
att_list.push_back(acknowledgedalarms);
// Attribute : unacknowledgedNormalAlarms
unacknowledgedNormalAlarmsAttrib *unacknowledgednormalalarms = new unacknowledgedNormalAlarmsAttrib();
Tango::UserDefaultAttrProp unacknowledgednormalalarms_prop;
unacknowledgednormalalarms_prop.set_description("List of alarms in unacknowledged normal state");
// label not set for unacknowledgedNormalAlarms
// unit not set for unacknowledgedNormalAlarms
// standard_unit not set for unacknowledgedNormalAlarms
// display_unit not set for unacknowledgedNormalAlarms
// format not set for unacknowledgedNormalAlarms
// max_value not set for unacknowledgedNormalAlarms
// min_value not set for unacknowledgedNormalAlarms
// max_alarm not set for unacknowledgedNormalAlarms
// min_alarm not set for unacknowledgedNormalAlarms
// max_warning not set for unacknowledgedNormalAlarms
// min_warning not set for unacknowledgedNormalAlarms
// delta_t not set for unacknowledgedNormalAlarms
// delta_val not set for unacknowledgedNormalAlarms
unacknowledgednormalalarms->set_default_properties(unacknowledgednormalalarms_prop);
// Not Polled
unacknowledgednormalalarms->set_disp_level(Tango::OPERATOR);
// Not Memorized
unacknowledgednormalalarms->set_change_event(true, true);
unacknowledgednormalalarms->set_archive_event(true, true);
att_list.push_back(unacknowledgednormalalarms);
// Attribute : shelvedAlarms
shelvedAlarmsAttrib *shelvedalarms = new shelvedAlarmsAttrib();
Tango::UserDefaultAttrProp shelvedalarms_prop;
shelvedalarms_prop.set_description("List of alarms in shelved state");
// label not set for shelvedAlarms
// unit not set for shelvedAlarms
// standard_unit not set for shelvedAlarms
// display_unit not set for shelvedAlarms
// format not set for shelvedAlarms
// max_value not set for shelvedAlarms
// min_value not set for shelvedAlarms
// max_alarm not set for shelvedAlarms
// min_alarm not set for shelvedAlarms
// max_warning not set for shelvedAlarms
// min_warning not set for shelvedAlarms
// delta_t not set for shelvedAlarms
// delta_val not set for shelvedAlarms
shelvedalarms->set_default_properties(shelvedalarms_prop);
// Not Polled
shelvedalarms->set_disp_level(Tango::OPERATOR);
// Not Memorized
shelvedalarms->set_change_event(true, true);
shelvedalarms->set_archive_event(true, true);
att_list.push_back(shelvedalarms);
// Attribute : outOfServiceAlarms
outOfServiceAlarmsAttrib *outofservicealarms = new outOfServiceAlarmsAttrib();
Tango::UserDefaultAttrProp outofservicealarms_prop;
outofservicealarms_prop.set_description("List of alarms in out of service state");
// label not set for outOfServiceAlarms
// unit not set for outOfServiceAlarms
// standard_unit not set for outOfServiceAlarms
// display_unit not set for outOfServiceAlarms
// format not set for outOfServiceAlarms
// max_value not set for outOfServiceAlarms
// min_value not set for outOfServiceAlarms
// max_alarm not set for outOfServiceAlarms
// min_alarm not set for outOfServiceAlarms
// max_warning not set for outOfServiceAlarms
// min_warning not set for outOfServiceAlarms
// delta_t not set for outOfServiceAlarms
// delta_val not set for outOfServiceAlarms
outofservicealarms->set_default_properties(outofservicealarms_prop);
// Not Polled
outofservicealarms->set_disp_level(Tango::OPERATOR);
// Not Memorized
outofservicealarms->set_change_event(true, true);
outofservicealarms->set_archive_event(true, true);
att_list.push_back(outofservicealarms);
// Attribute : silencedAlarms
silencedAlarmsAttrib *silencedalarms = new silencedAlarmsAttrib();
Tango::UserDefaultAttrProp silencedalarms_prop;
silencedalarms_prop.set_description("List of alarms in silenced state");
// label not set for silencedAlarms
// unit not set for silencedAlarms
// standard_unit not set for silencedAlarms
// display_unit not set for silencedAlarms
// format not set for silencedAlarms
// max_value not set for silencedAlarms
// min_value not set for silencedAlarms
// max_alarm not set for silencedAlarms
// min_alarm not set for silencedAlarms
// max_warning not set for silencedAlarms
// min_warning not set for silencedAlarms
// delta_t not set for silencedAlarms
// delta_val not set for silencedAlarms
silencedalarms->set_default_properties(silencedalarms_prop);
// Not Polled
silencedalarms->set_disp_level(Tango::OPERATOR);
// Not Memorized
silencedalarms->set_change_event(true, true);
silencedalarms->set_archive_event(true, true);
att_list.push_back(silencedalarms);
// Attribute : listAlarms
listAlarmsAttrib *listalarms = new listAlarmsAttrib();
Tango::UserDefaultAttrProp listalarms_prop;
listalarms_prop.set_description("List of all alarms");
// label not set for listAlarms
// unit not set for listAlarms
// standard_unit not set for listAlarms
// display_unit not set for listAlarms
// format not set for listAlarms
// max_value not set for listAlarms
// min_value not set for listAlarms
// max_alarm not set for listAlarms
// min_alarm not set for listAlarms
// max_warning not set for listAlarms
// min_warning not set for listAlarms
// delta_t not set for listAlarms
// delta_val not set for listAlarms
listalarms->set_default_properties(listalarms_prop);
// Not Polled
listalarms->set_disp_level(Tango::OPERATOR);
// Not Memorized
listalarms->set_change_event(true, true);
listalarms->set_archive_event(true, true);
att_list.push_back(listalarms);
// Attribute : frequencyAlarms
frequencyAlarmsAttrib *frequencyalarms = new frequencyAlarmsAttrib();
Tango::UserDefaultAttrProp frequencyalarms_prop;
frequencyalarms_prop.set_description("List of frequency of evaluation of all alarms");
// label not set for frequencyAlarms
// unit not set for frequencyAlarms
// standard_unit not set for frequencyAlarms
// display_unit not set for frequencyAlarms
// format not set for frequencyAlarms
// max_value not set for frequencyAlarms
// min_value not set for frequencyAlarms
// max_alarm not set for frequencyAlarms
// min_alarm not set for frequencyAlarms
// max_warning not set for frequencyAlarms
// min_warning not set for frequencyAlarms
// delta_t not set for frequencyAlarms
// delta_val not set for frequencyAlarms
frequencyalarms->set_default_properties(frequencyalarms_prop);
// Not Polled
frequencyalarms->set_disp_level(Tango::OPERATOR);
// Not Memorized
frequencyalarms->set_change_event(true, true);
frequencyalarms->set_archive_event(true, true);
att_list.push_back(frequencyalarms);
// Create a list of static attributes
create_static_attribute_list(get_class_attr()->get_attr_list());
/*----- PROTECTED REGION ID(AlarmClass::attribute_factory_after) ENABLED START -----*/
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmClass::attribute_factory_after
}
//--------------------------------------------------------
/**
* Method : AlarmClass::pipe_factory()
* Description : Create the pipe object(s)
* and store them in the pipe list
*/
//--------------------------------------------------------
void AlarmClass::pipe_factory()
{
/*----- PROTECTED REGION ID(AlarmClass::pipe_factory_before) ENABLED START -----*/
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmClass::pipe_factory_before
/*----- PROTECTED REGION ID(AlarmClass::pipe_factory_after) ENABLED START -----*/
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmClass::pipe_factory_after
}
//--------------------------------------------------------
/**
* Method : AlarmClass::command_factory()
* Description : Create the command object(s)
* and store them in the command list
*/
//--------------------------------------------------------
void AlarmClass::command_factory()
{
/*----- PROTECTED REGION ID(AlarmClass::command_factory_before) ENABLED START -----*/
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmClass::command_factory_before
// Command Ack
AckClass *pAckCmd =
new AckClass("Ack",
Tango::DEVVAR_STRINGARRAY, Tango::DEV_VOID,
"String array containing the alarms to be acknowledged",
"",
Tango::OPERATOR);
command_list.push_back(pAckCmd);
// Command Load
LoadClass *pLoadCmd =
new LoadClass("Load",
Tango::DEV_STRING, Tango::DEV_VOID,
"Alarm entry",
"",
Tango::OPERATOR);
command_list.push_back(pLoadCmd);
// Command Remove
RemoveClass *pRemoveCmd =
new RemoveClass("Remove",
Tango::DEV_STRING, Tango::DEV_VOID,
"Alarm name",
"",
Tango::OPERATOR);
command_list.push_back(pRemoveCmd);
// Command SearchAlarm
SearchAlarmClass *pSearchAlarmCmd =
new SearchAlarmClass("SearchAlarm",
Tango::DEV_STRING, Tango::DEVVAR_STRINGARRAY,
"String containing a filter for output, if empty or * return all alarms",
"Configured alarms",
Tango::OPERATOR);
command_list.push_back(pSearchAlarmCmd);
// Command StopAudible
StopAudibleClass *pStopAudibleCmd =
new StopAudibleClass("StopAudible",
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR);
command_list.push_back(pStopAudibleCmd);
// Command Silence
SilenceClass *pSilenceCmd =
new SilenceClass("Silence",
Tango::DEVVAR_STRINGARRAY, Tango::DEV_VOID,
"String array containing the alarms to be silenced",
"",
Tango::OPERATOR);
command_list.push_back(pSilenceCmd);
// Command Modify
ModifyClass *pModifyCmd =
new ModifyClass("Modify",
Tango::DEV_STRING, Tango::DEV_VOID,
"Alarm entry",
"",
Tango::OPERATOR);
command_list.push_back(pModifyCmd);
// Command Shelve
ShelveClass *pShelveCmd =
new ShelveClass("Shelve",
Tango::DEVVAR_STRINGARRAY, Tango::DEV_VOID,
"String array containing alarm to be shelved",
"",
Tango::OPERATOR);
command_list.push_back(pShelveCmd);
// Command Enable
EnableClass *pEnableCmd =
new EnableClass("Enable",
Tango::DEV_STRING, Tango::DEV_VOID,
"Alarm name",
"",
Tango::OPERATOR);
command_list.push_back(pEnableCmd);
// Command Disable
DisableClass *pDisableCmd =
new DisableClass("Disable",
Tango::DEV_STRING, Tango::DEV_VOID,
"Alarm name",
"",
Tango::OPERATOR);
command_list.push_back(pDisableCmd);
// Command ResetStatistics
ResetStatisticsClass *pResetStatisticsCmd =
new ResetStatisticsClass("ResetStatistics",
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR);
command_list.push_back(pResetStatisticsCmd);
/*----- PROTECTED REGION ID(AlarmClass::command_factory_after) ENABLED START -----*/
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmClass::command_factory_after
}
//===================================================================
// Dynamic attributes related methods
//===================================================================
//--------------------------------------------------------
/**
* method : AlarmClass::create_static_attribute_list
* description : Create the a list of static attributes
*
* @param att_list the ceated attribute list
*/
//--------------------------------------------------------
void AlarmClass::create_static_attribute_list(vector<Tango::Attr *> &att_list)
{
for (unsigned long i=0 ; i<att_list.size() ; i++)
{
string att_name(att_list[i]->get_name());
transform(att_name.begin(), att_name.end(), att_name.begin(), ::tolower);
defaultAttList.push_back(att_name);
}
cout2 << defaultAttList.size() << " attributes in default list" << endl;
/*----- PROTECTED REGION ID(AlarmClass::create_static_att_list) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmClass::create_static_att_list
}
//--------------------------------------------------------
/**
* method : AlarmClass::erase_dynamic_attributes
* description : delete the dynamic attributes if any.
*
* @param devlist_ptr the device list pointer
* @param list of all attributes
*/
//--------------------------------------------------------
void AlarmClass::erase_dynamic_attributes(const Tango::DevVarStringArray *devlist_ptr, vector<Tango::Attr *> &att_list)
{
Tango::Util *tg = Tango::Util::instance();
for (unsigned long i=0 ; i<devlist_ptr->length() ; i++)
{
Tango::DeviceImpl *dev_impl = tg->get_device_by_name(((string)(*devlist_ptr)[i]).c_str());
Alarm *dev = static_cast<Alarm *> (dev_impl);
vector<Tango::Attribute *> &dev_att_list = dev->get_device_attr()->get_attribute_list();
vector<Tango::Attribute *>::iterator ite_att;
for (ite_att=dev_att_list.begin() ; ite_att != dev_att_list.end() ; ++ite_att)
{
string att_name((*ite_att)->get_name_lower());
if ((att_name == "state") || (att_name == "status"))
continue;
vector<string>::iterator ite_str = find(defaultAttList.begin(), defaultAttList.end(), att_name);
if (ite_str == defaultAttList.end())
{
cout2 << att_name << " is a UNWANTED dynamic attribute for device " << (*devlist_ptr)[i] << endl;
Tango::Attribute &att = dev->get_device_attr()->get_attr_by_name(att_name.c_str());
dev->remove_attribute(att_list[att.get_attr_idx()], true, false);
--ite_att;
}
}
}
/*----- PROTECTED REGION ID(AlarmClass::erase_dynamic_attributes) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmClass::erase_dynamic_attributes
}
//--------------------------------------------------------
/**
* Method : AlarmClass::get_attr_by_name()
* Description : returns Tango::Attr * object found by name
*/
//--------------------------------------------------------
Tango::Attr *AlarmClass::get_attr_object_by_name(vector<Tango::Attr *> &att_list, string attname)
{
vector<Tango::Attr *>::iterator it;
for (it=att_list.begin() ; it<att_list.end() ; ++it)
if ((*it)->get_name()==attname)
return (*it);
// Attr does not exist
return NULL;
}
/*----- PROTECTED REGION ID(AlarmClass::Additional Methods) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // AlarmClass::Additional Methods
} // namespace