Newer
Older
/*----- PROTECTED REGION ID(AlarmHandlerClass.cpp) ENABLED START -----*/

Graziano Scalamera
committed
//=============================================================================
//

Graziano Scalamera
committed
//
// description : C++ source for the AlarmHandlerClass.

Graziano Scalamera
committed
// A singleton class derived from DeviceClass.
// It implements the command and attribute list
// and all properties and methods required
// by the AlarmHandler once per process.

Graziano Scalamera
committed
//
// project : Elettra alarm handler device server

Graziano Scalamera
committed
//
// 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)
//=============================================================================

Graziano Scalamera
committed
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass.cpp

Graziano Scalamera
committed
//-------------------------------------------------------------------
/**
* Create AlarmHandlerClass singleton and

Graziano Scalamera
committed
* return it in a C function for Python usage
*/
//-------------------------------------------------------------------
extern "C" {
#ifdef _TG_WINDOWS_
__declspec(dllexport)
#endif
Tango::DeviceClass *_create_AlarmHandler_class(const char *name) {
return AlarmHandler_ns::AlarmHandlerClass::init(name);

Graziano Scalamera
committed
}
}

Graziano Scalamera
committed
{
//===================================================================
// Initialize pointer for singleton pattern
//===================================================================
AlarmHandlerClass *AlarmHandlerClass::_instance = NULL;

Graziano Scalamera
committed
//--------------------------------------------------------
/**
* method : AlarmHandlerClass::AlarmHandlerClass(string &s)
* description : constructor for the AlarmHandlerClass

Graziano Scalamera
committed
*
* @param s The class name
*/
//--------------------------------------------------------
AlarmHandlerClass::AlarmHandlerClass(string &s):Tango::DeviceClass(s)

Graziano Scalamera
committed
{
TANGO_LOG_INFO << "Entering AlarmHandlerClass constructor" << endl;

Graziano Scalamera
committed
set_default_property();

Graziano Scalamera
committed
write_class_property();
/*----- PROTECTED REGION ID(AlarmHandlerClass::constructor) ENABLED START -----*/

Graziano Scalamera
committed
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::constructor

Graziano Scalamera
committed
TANGO_LOG_INFO << "Leaving AlarmHandlerClass constructor" << endl;

Graziano Scalamera
committed
}
//--------------------------------------------------------
/**
* method : AlarmHandlerClass::~AlarmHandlerClass()
* description : destructor for the AlarmHandlerClass

Graziano Scalamera
committed
*/
//--------------------------------------------------------
AlarmHandlerClass::~AlarmHandlerClass()

Graziano Scalamera
committed
{
/*----- PROTECTED REGION ID(AlarmHandlerClass::destructor) ENABLED START -----*/

Graziano Scalamera
committed
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::destructor

Graziano Scalamera
committed
_instance = NULL;
}
//--------------------------------------------------------
/**
* method : AlarmHandlerClass::init

Graziano Scalamera
committed
* description : Create the object if not already done.
* Otherwise, just return a pointer to the object
*
* @param name The class name
*/
//--------------------------------------------------------
AlarmHandlerClass *AlarmHandlerClass::init(const char *name)

Graziano Scalamera
committed
{
if (_instance == NULL)
{
try
{
string s(name);
_instance = new AlarmHandlerClass(s);

Graziano Scalamera
committed
}
catch (bad_alloc &)
{
throw;
}
}
return _instance;
}
//--------------------------------------------------------
/**
* method : AlarmHandlerClass::instance

Graziano Scalamera
committed
* description : Check if object already created,
* and return a pointer to the object
*/
//--------------------------------------------------------
AlarmHandlerClass *AlarmHandlerClass::instance()

Graziano Scalamera
committed
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
{
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)
{
TANGO_LOG_INFO << "AckClass::execute(): arrived" << endl;

Graziano Scalamera
committed
const Tango::DevVarStringArray *argin;
extract(in_any, argin);
((static_cast<AlarmHandler *>(device))->ack(argin));

Graziano Scalamera
committed
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)
{
TANGO_LOG_INFO << "LoadClass::execute(): arrived" << endl;

Graziano Scalamera
committed
Tango::DevString argin;
extract(in_any, argin);
((static_cast<AlarmHandler *>(device))->load(argin));

Graziano Scalamera
committed
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)

Graziano Scalamera
committed
*/
//--------------------------------------------------------
CORBA::Any *RemoveClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
TANGO_LOG_INFO << "RemoveClass::execute(): arrived" << endl;

Graziano Scalamera
committed
Tango::DevString argin;
extract(in_any, argin);
((static_cast<AlarmHandler *>(device))->remove(argin));

Graziano Scalamera
committed
return new CORBA::Any();
}
//--------------------------------------------------------
/**

Graziano Scalamera
committed
* method : SearchAlarmClass::execute()

Graziano Scalamera
committed
* 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)
*/
//--------------------------------------------------------

Graziano Scalamera
committed
CORBA::Any *SearchAlarmClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)

Graziano Scalamera
committed
{
TANGO_LOG_INFO << "SearchAlarmClass::execute(): arrived" << endl;

Graziano Scalamera
committed
Tango::DevString argin;
extract(in_any, argin);
return insert((static_cast<AlarmHandler *>(device))->search_alarm(argin));

Graziano Scalamera
committed
}
//--------------------------------------------------------
/**

Graziano Scalamera
committed
* method : StopAudibleClass::execute()

Graziano Scalamera
committed
* 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)
*/
//--------------------------------------------------------

Graziano Scalamera
committed
CORBA::Any *StopAudibleClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any))

Graziano Scalamera
committed
{
TANGO_LOG_INFO << "StopAudibleClass::execute(): arrived" << endl;
((static_cast<AlarmHandler *>(device))->stop_audible());

Graziano Scalamera
committed
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)
{
TANGO_LOG_INFO << "SilenceClass::execute(): arrived" << endl;

Graziano Scalamera
committed
const Tango::DevVarStringArray *argin;
extract(in_any, argin);
((static_cast<AlarmHandler *>(device))->silence(argin));

Graziano Scalamera
committed
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)
{
TANGO_LOG_INFO << "ModifyClass::execute(): arrived" << endl;

Graziano Scalamera
committed
Tango::DevString argin;
extract(in_any, argin);
((static_cast<AlarmHandler *>(device))->modify(argin));

Graziano Scalamera
committed
return new CORBA::Any();
}

Graziano Scalamera
committed
//--------------------------------------------------------
/**
* 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)
{
TANGO_LOG_INFO << "ShelveClass::execute(): arrived" << endl;

Graziano Scalamera
committed
const Tango::DevVarStringArray *argin;
extract(in_any, argin);
((static_cast<AlarmHandler *>(device))->shelve(argin));

Graziano Scalamera
committed
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)
{
TANGO_LOG_INFO << "EnableClass::execute(): arrived" << endl;

Graziano Scalamera
committed
Tango::DevString argin;
extract(in_any, argin);
((static_cast<AlarmHandler *>(device))->enable(argin));

Graziano Scalamera
committed
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)
{
TANGO_LOG_INFO << "DisableClass::execute(): arrived" << endl;

Graziano Scalamera
committed
Tango::DevString argin;
extract(in_any, argin);
((static_cast<AlarmHandler *>(device))->disable(argin));

Graziano Scalamera
committed
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))
{
TANGO_LOG_INFO << "ResetStatisticsClass::execute(): arrived" << endl;
((static_cast<AlarmHandler *>(device))->reset_statistics());

Graziano Scalamera
committed
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : StopNewClass::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 *StopNewClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any))
{
TANGO_LOG_INFO << "StopNewClass::execute(): arrived" << endl;
((static_cast<AlarmHandler *>(device))->stop_new());
return new CORBA::Any();
}
//--------------------------------------------------------
/**
* method : GetAlarmInfoClass::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 *GetAlarmInfoClass::execute(Tango::DeviceImpl *device, const CORBA::Any &in_any)
{
TANGO_LOG_INFO << "GetAlarmInfoClass::execute(): arrived" << endl;

Graziano Scalamera
committed
const Tango::DevVarStringArray *argin;
extract(in_any, argin);
return insert((static_cast<AlarmHandler *>(device))->get_alarm_info(argin));
}
//--------------------------------------------------------
/**
* method : ReLoadAllClass::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 *ReLoadAllClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any))
{
TANGO_LOG_INFO << "ReLoadAllClass::execute(): arrived" << endl;
((static_cast<AlarmHandler *>(device))->re_load_all());
return new CORBA::Any();
}

Graziano Scalamera
committed
//===================================================================
// Properties management
//===================================================================
//--------------------------------------------------------
/**
* Method : AlarmHandlerClass::get_class_property()

Graziano Scalamera
committed
* Description : Get the class property for specified name.
*/
//--------------------------------------------------------
Tango::DbDatum AlarmHandlerClass::get_class_property(string &prop_name)

Graziano Scalamera
committed
{
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 : AlarmHandlerClass::get_default_device_property()

Graziano Scalamera
committed
* Description : Return the default value for device property.
*/
//--------------------------------------------------------
Tango::DbDatum AlarmHandlerClass::get_default_device_property(string &prop_name)

Graziano Scalamera
committed
{
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 : AlarmHandlerClass::get_default_class_property()

Graziano Scalamera
committed
* Description : Return the default value for class property.
*/
//--------------------------------------------------------
Tango::DbDatum AlarmHandlerClass::get_default_class_property(string &prop_name)

Graziano Scalamera
committed
{
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 : AlarmHandlerClass::get_class_property()
* Description : Read database to initialize class property data members.
*/
//--------------------------------------------------------
void AlarmHandlerClass::get_class_property()
{
/*----- PROTECTED REGION ID(AlarmHandlerClass::get_class_property_before) ENABLED START -----*/
// Initialize class property data members
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::get_class_property_before
// Read class properties from database.
cl_prop.push_back(Tango::DbDatum("GroupNames"));
cl_prop.push_back(Tango::DbDatum("SubscribeRetryPeriod"));
cl_prop.push_back(Tango::DbDatum("StatisticsTimeWindow"));
cl_prop.push_back(Tango::DbDatum("ErrorDelay"));

Graziano Scalamera
committed
cl_prop.push_back(Tango::DbDatum("SetAlarmQuality"));
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
// Call database and extract values
if (Tango::Util::instance()->_UseDb==true)
get_db_class()->get_property(cl_prop);
Tango::DbDatum def_prop;
int i = -1;
// Try to extract GroupNames value
if (cl_prop[++i].is_empty()==false) cl_prop[i] >> groupNames;
else
{
// Check default value for GroupNames
def_prop = get_default_class_property(cl_prop[i].name);
if (def_prop.is_empty()==false)
{
def_prop >> groupNames;
cl_prop[i] << groupNames;
}
}
// Try to extract SubscribeRetryPeriod value
if (cl_prop[++i].is_empty()==false) cl_prop[i] >> subscribeRetryPeriod;
else
{
// Check default value for SubscribeRetryPeriod
def_prop = get_default_class_property(cl_prop[i].name);
if (def_prop.is_empty()==false)
{
def_prop >> subscribeRetryPeriod;
cl_prop[i] << subscribeRetryPeriod;
}
}
// Try to extract StatisticsTimeWindow value
if (cl_prop[++i].is_empty()==false) cl_prop[i] >> statisticsTimeWindow;
else
{
// Check default value for StatisticsTimeWindow
def_prop = get_default_class_property(cl_prop[i].name);
if (def_prop.is_empty()==false)
{
def_prop >> statisticsTimeWindow;
cl_prop[i] << statisticsTimeWindow;
}
}
// Try to extract ErrorDelay value
if (cl_prop[++i].is_empty()==false) cl_prop[i] >> errorDelay;
else
{
// Check default value for ErrorDelay
def_prop = get_default_class_property(cl_prop[i].name);
if (def_prop.is_empty()==false)
{
def_prop >> errorDelay;
cl_prop[i] << errorDelay;
}
}

Graziano Scalamera
committed
// Try to extract SetAlarmQuality value
if (cl_prop[++i].is_empty()==false) cl_prop[i] >> setAlarmQuality;
else
{
// Check default value for SetAlarmQuality
def_prop = get_default_class_property(cl_prop[i].name);
if (def_prop.is_empty()==false)
{
def_prop >> setAlarmQuality;
cl_prop[i] << setAlarmQuality;
}
}
/*----- PROTECTED REGION ID(AlarmHandlerClass::get_class_property_after) ENABLED START -----*/
// Check class property data members init
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::get_class_property_after
}

Graziano Scalamera
committed
//--------------------------------------------------------
/**
* Method : AlarmHandlerClass::set_default_property()

Graziano Scalamera
committed
* 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 AlarmHandlerClass::set_default_property()

Graziano Scalamera
committed
{
string prop_name;
string prop_desc;
string prop_def;
vector<string> vect_data;
// Set Default Class Properties
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
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 ;
cl_def_prop.push_back(data);
add_wiz_class_prop(prop_name, prop_desc, prop_def);
}
else
add_wiz_class_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 ;
cl_def_prop.push_back(data);
add_wiz_class_prop(prop_name, prop_desc, prop_def);
}
else
add_wiz_class_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 ;
cl_def_prop.push_back(data);
add_wiz_class_prop(prop_name, prop_desc, prop_def);
}
else
add_wiz_class_prop(prop_name, prop_desc);
prop_name = "ErrorDelay";
prop_desc = "Delay in seconds before changing to ERROR state after an exception is received.";
prop_def = "30";
vect_data.clear();
vect_data.push_back("30");
if (prop_def.length()>0)
{
Tango::DbDatum data(prop_name);
data << vect_data ;
cl_def_prop.push_back(data);
add_wiz_class_prop(prop_name, prop_desc, prop_def);
}

Graziano Scalamera
committed
else
add_wiz_class_prop(prop_name, prop_desc);
prop_name = "SetAlarmQuality";
prop_desc = "Set alarm attribute quality as computed using quality of attributes in the formula";
prop_def = "false";
vect_data.clear();
vect_data.push_back("false");
if (prop_def.length()>0)
{
Tango::DbDatum data(prop_name);
data << vect_data ;
cl_def_prop.push_back(data);
add_wiz_class_prop(prop_name, prop_desc, prop_def);
}
else
add_wiz_class_prop(prop_name, prop_desc);

Graziano Scalamera
committed
// 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);

Graziano Scalamera
committed
prop_name = "SubscribeRetryPeriod";
prop_desc = "Retry subscription period in seconds";
prop_def = "30";

Graziano Scalamera
committed
vect_data.clear();

Graziano Scalamera
committed
vect_data.push_back("30");

Graziano Scalamera
committed
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);

Graziano Scalamera
committed
prop_name = "StatisticsTimeWindow";
prop_desc = "Time window to compute statistics in seconds";
prop_def = "60";

Graziano Scalamera
committed
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);
prop_name = "ErrorDelay";
prop_desc = "Delay in seconds before changing to ERROR state after an exception is received.";
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);

Graziano Scalamera
committed
prop_name = "SetAlarmQuality";
prop_desc = "Set alarm attribute quality as computed using quality of attributes in the formula";
prop_def = "false";
vect_data.clear();
vect_data.push_back("false");
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);

Graziano Scalamera
committed
}
//--------------------------------------------------------
/**
* Method : AlarmHandlerClass::write_class_property()

Graziano Scalamera
committed
* Description : Set class description fields as property in database
*/
//--------------------------------------------------------
void AlarmHandlerClass::write_class_property()

Graziano Scalamera
committed
{
// 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 handler device server");

Graziano Scalamera
committed
title << str_title;
data.push_back(title);
// Put Description
Tango::DbDatum description("Description");
vector<string> str_desc;
str_desc.push_back("Elettra alarm handler device server");

Graziano Scalamera
committed
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 : AlarmHandlerClass::device_factory()

Graziano Scalamera
committed
* Description : Create the device object(s)
* and store them in the device list
*/
//--------------------------------------------------------
void AlarmHandlerClass::device_factory(const Tango::DevVarStringArray *devlist_ptr)

Graziano Scalamera
committed
{
/*----- PROTECTED REGION ID(AlarmHandlerClass::device_factory_before) ENABLED START -----*/

Graziano Scalamera
committed
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::device_factory_before

Graziano Scalamera
committed
// Create devices and add it into the device list
for (unsigned long i=0 ; i<devlist_ptr->length() ; i++)
{
TANGO_LOG_DEBUG << "Device name : " << (*devlist_ptr)[i].in() << endl;
device_list.push_back(new AlarmHandler(this, (*devlist_ptr)[i]));

Graziano Scalamera
committed
}
// 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
AlarmHandler *dev = static_cast<AlarmHandler *>(device_list[device_list.size()-i]);

Graziano Scalamera
committed
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(AlarmHandlerClass::device_factory_after) ENABLED START -----*/

Graziano Scalamera
committed
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::device_factory_after

Graziano Scalamera
committed
}
//--------------------------------------------------------
/**
* Method : AlarmHandlerClass::attribute_factory()

Graziano Scalamera
committed
* Description : Create the attribute object(s)
* and store them in the attribute list
*/
//--------------------------------------------------------
void AlarmHandlerClass::attribute_factory(vector<Tango::Attr *> &att_list)

Graziano Scalamera
committed
{
/*----- PROTECTED REGION ID(AlarmHandlerClass::attribute_factory_before) ENABLED START -----*/

Graziano Scalamera
committed
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::attribute_factory_before
// Attribute : alarmAudible
alarmAudibleAttrib *alarmaudible = new alarmAudibleAttrib();
Tango::UserDefaultAttrProp alarmaudible_prop;
alarmaudible_prop.set_description("True if there is at least one alarm that needs audible indication on the GUI");
// label not set for alarmAudible
// unit not set for alarmAudible
// standard_unit not set for alarmAudible
// display_unit not set for alarmAudible
// format not set for alarmAudible
// max_value not set for alarmAudible
// min_value not set for alarmAudible
// max_alarm not set for alarmAudible
// min_alarm not set for alarmAudible
// max_warning not set for alarmAudible
// min_warning not set for alarmAudible
// delta_t not set for alarmAudible
// delta_val not set for alarmAudible

Graziano Scalamera
committed
alarmaudible->set_default_properties(alarmaudible_prop);

Graziano Scalamera
committed
// Not Polled
alarmaudible->set_disp_level(Tango::OPERATOR);

Graziano Scalamera
committed
// Not Memorized

Graziano Scalamera
committed
alarmaudible->set_change_event(true, true);
alarmaudible->set_archive_event(true, true);

Graziano Scalamera
committed
// 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);

Graziano Scalamera
committed
// 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 : alarmNormal
alarmNormalAttrib *alarmnormal = new alarmNormalAttrib();
Tango::UserDefaultAttrProp alarmnormal_prop;
alarmnormal_prop.set_description("List of alarms in normal state");
// label not set for alarmNormal
// unit not set for alarmNormal
// standard_unit not set for alarmNormal
// display_unit not set for alarmNormal
// format not set for alarmNormal
// max_value not set for alarmNormal
// min_value not set for alarmNormal
// max_alarm not set for alarmNormal
// min_alarm not set for alarmNormal
// max_warning not set for alarmNormal
// min_warning not set for alarmNormal
// delta_t not set for alarmNormal
// delta_val not set for alarmNormal

Graziano Scalamera
committed
alarmnormal->set_default_properties(alarmnormal_prop);

Graziano Scalamera
committed
// Not Polled
alarmnormal->set_disp_level(Tango::OPERATOR);

Graziano Scalamera
committed
// Not Memorized
alarmnormal->set_change_event(true, true);
alarmnormal->set_archive_event(true, true);
att_list.push_back(alarmnormal);
// Attribute : alarmUnacknowledged
alarmUnacknowledgedAttrib *alarmunacknowledged = new alarmUnacknowledgedAttrib();
Tango::UserDefaultAttrProp alarmunacknowledged_prop;
alarmunacknowledged_prop.set_description("List of alarms in unacknowledged state");
// label not set for alarmUnacknowledged
// unit not set for alarmUnacknowledged
// standard_unit not set for alarmUnacknowledged
// display_unit not set for alarmUnacknowledged
// format not set for alarmUnacknowledged
// max_value not set for alarmUnacknowledged
// min_value not set for alarmUnacknowledged
// max_alarm not set for alarmUnacknowledged
// min_alarm not set for alarmUnacknowledged
// max_warning not set for alarmUnacknowledged
// min_warning not set for alarmUnacknowledged
// delta_t not set for alarmUnacknowledged
// delta_val not set for alarmUnacknowledged

Graziano Scalamera
committed
alarmunacknowledged->set_default_properties(alarmunacknowledged_prop);

Graziano Scalamera
committed
// Not Polled
alarmunacknowledged->set_disp_level(Tango::OPERATOR);

Graziano Scalamera
committed
// Not Memorized
alarmunacknowledged->set_change_event(true, true);
alarmunacknowledged->set_archive_event(true, true);
att_list.push_back(alarmunacknowledged);
// Attribute : alarmAcknowledged
alarmAcknowledgedAttrib *alarmacknowledged = new alarmAcknowledgedAttrib();
Tango::UserDefaultAttrProp alarmacknowledged_prop;
alarmacknowledged_prop.set_description("List of alarms in acknowledged state");
// label not set for alarmAcknowledged
// unit not set for alarmAcknowledged
// standard_unit not set for alarmAcknowledged
// display_unit not set for alarmAcknowledged
// format not set for alarmAcknowledged
// max_value not set for alarmAcknowledged
// min_value not set for alarmAcknowledged
// max_alarm not set for alarmAcknowledged
// min_alarm not set for alarmAcknowledged
// max_warning not set for alarmAcknowledged
// min_warning not set for alarmAcknowledged
// delta_t not set for alarmAcknowledged
// delta_val not set for alarmAcknowledged

Graziano Scalamera
committed
alarmacknowledged->set_default_properties(alarmacknowledged_prop);

Graziano Scalamera
committed
// Not Polled
alarmacknowledged->set_disp_level(Tango::OPERATOR);

Graziano Scalamera
committed
// Not Memorized
alarmacknowledged->set_change_event(true, true);
alarmacknowledged->set_archive_event(true, true);
att_list.push_back(alarmacknowledged);
// Attribute : alarmUnacknowledgedNormal
alarmUnacknowledgedNormalAttrib *alarmunacknowledgednormal = new alarmUnacknowledgedNormalAttrib();
Tango::UserDefaultAttrProp alarmunacknowledgednormal_prop;
alarmunacknowledgednormal_prop.set_description("List of alarms in unacknowledged normal state");
// label not set for alarmUnacknowledgedNormal
// unit not set for alarmUnacknowledgedNormal
// standard_unit not set for alarmUnacknowledgedNormal
// display_unit not set for alarmUnacknowledgedNormal
// format not set for alarmUnacknowledgedNormal
// max_value not set for alarmUnacknowledgedNormal
// min_value not set for alarmUnacknowledgedNormal
// max_alarm not set for alarmUnacknowledgedNormal
// min_alarm not set for alarmUnacknowledgedNormal
// max_warning not set for alarmUnacknowledgedNormal
// min_warning not set for alarmUnacknowledgedNormal
// delta_t not set for alarmUnacknowledgedNormal
// delta_val not set for alarmUnacknowledgedNormal

Graziano Scalamera
committed
alarmunacknowledgednormal->set_default_properties(alarmunacknowledgednormal_prop);

Graziano Scalamera
committed
// Not Polled
alarmunacknowledgednormal->set_disp_level(Tango::OPERATOR);

Graziano Scalamera
committed
// Not Memorized
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
alarmunacknowledgednormal->set_change_event(true, true);
alarmunacknowledgednormal->set_archive_event(true, true);
att_list.push_back(alarmunacknowledgednormal);
// Attribute : alarmShelved
alarmShelvedAttrib *alarmshelved = new alarmShelvedAttrib();
Tango::UserDefaultAttrProp alarmshelved_prop;
alarmshelved_prop.set_description("List of alarms in shelved state");
// label not set for alarmShelved
// unit not set for alarmShelved
// standard_unit not set for alarmShelved
// display_unit not set for alarmShelved
// format not set for alarmShelved
// max_value not set for alarmShelved
// min_value not set for alarmShelved
// max_alarm not set for alarmShelved
// min_alarm not set for alarmShelved
// max_warning not set for alarmShelved
// min_warning not set for alarmShelved
// delta_t not set for alarmShelved
// delta_val not set for alarmShelved

Graziano Scalamera
committed
alarmshelved->set_default_properties(alarmshelved_prop);

Graziano Scalamera
committed
// Not Polled
alarmshelved->set_disp_level(Tango::OPERATOR);

Graziano Scalamera
committed
// Not Memorized
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
alarmshelved->set_change_event(true, true);
alarmshelved->set_archive_event(true, true);
att_list.push_back(alarmshelved);
// Attribute : alarmOutOfService
alarmOutOfServiceAttrib *alarmoutofservice = new alarmOutOfServiceAttrib();
Tango::UserDefaultAttrProp alarmoutofservice_prop;
alarmoutofservice_prop.set_description("List of alarms in out of service state");
// label not set for alarmOutOfService
// unit not set for alarmOutOfService
// standard_unit not set for alarmOutOfService
// display_unit not set for alarmOutOfService
// format not set for alarmOutOfService
// max_value not set for alarmOutOfService
// min_value not set for alarmOutOfService
// max_alarm not set for alarmOutOfService
// min_alarm not set for alarmOutOfService
// max_warning not set for alarmOutOfService
// min_warning not set for alarmOutOfService
// delta_t not set for alarmOutOfService
// delta_val not set for alarmOutOfService

Graziano Scalamera
committed
alarmoutofservice->set_default_properties(alarmoutofservice_prop);

Graziano Scalamera
committed
// Not Polled
alarmoutofservice->set_disp_level(Tango::OPERATOR);

Graziano Scalamera
committed
// Not Memorized
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
alarmoutofservice->set_change_event(true, true);
alarmoutofservice->set_archive_event(true, true);
att_list.push_back(alarmoutofservice);
// Attribute : alarmSilenced
alarmSilencedAttrib *alarmsilenced = new alarmSilencedAttrib();
Tango::UserDefaultAttrProp alarmsilenced_prop;
alarmsilenced_prop.set_description("List of alarms in silenced state");
// label not set for alarmSilenced
// unit not set for alarmSilenced
// standard_unit not set for alarmSilenced
// display_unit not set for alarmSilenced
// format not set for alarmSilenced
// max_value not set for alarmSilenced
// min_value not set for alarmSilenced
// max_alarm not set for alarmSilenced
// min_alarm not set for alarmSilenced
// max_warning not set for alarmSilenced
// min_warning not set for alarmSilenced
// delta_t not set for alarmSilenced
// delta_val not set for alarmSilenced

Graziano Scalamera
committed
alarmsilenced->set_default_properties(alarmsilenced_prop);

Graziano Scalamera
committed
// Not Polled
alarmsilenced->set_disp_level(Tango::OPERATOR);

Graziano Scalamera
committed
// Not Memorized
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
alarmsilenced->set_change_event(true, true);
alarmsilenced->set_archive_event(true, true);
att_list.push_back(alarmsilenced);
// Attribute : alarmList
alarmListAttrib *alarmlist = new alarmListAttrib();
Tango::UserDefaultAttrProp alarmlist_prop;
alarmlist_prop.set_description("List of all alarms");
// label not set for alarmList
// unit not set for alarmList
// standard_unit not set for alarmList
// display_unit not set for alarmList
// format not set for alarmList
// max_value not set for alarmList
// min_value not set for alarmList
// max_alarm not set for alarmList
// min_alarm not set for alarmList
// max_warning not set for alarmList
// min_warning not set for alarmList
// delta_t not set for alarmList
// delta_val not set for alarmList

Graziano Scalamera
committed
alarmlist->set_default_properties(alarmlist_prop);

Graziano Scalamera
committed
// Not Polled

Graziano Scalamera
committed
// Not Memorized
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
alarmlist->set_change_event(true, true);
alarmlist->set_archive_event(true, true);
att_list.push_back(alarmlist);
// Attribute : alarmFrequency
alarmFrequencyAttrib *alarmfrequency = new alarmFrequencyAttrib();
Tango::UserDefaultAttrProp alarmfrequency_prop;
alarmfrequency_prop.set_description("List of frequency of evaluation of all alarms");
// label not set for alarmFrequency
// unit not set for alarmFrequency
// standard_unit not set for alarmFrequency
// display_unit not set for alarmFrequency
// format not set for alarmFrequency
// max_value not set for alarmFrequency
// min_value not set for alarmFrequency
// max_alarm not set for alarmFrequency
// min_alarm not set for alarmFrequency
// max_warning not set for alarmFrequency
// min_warning not set for alarmFrequency
// delta_t not set for alarmFrequency
// delta_val not set for alarmFrequency

Graziano Scalamera
committed
alarmfrequency->set_default_properties(alarmfrequency_prop);

Graziano Scalamera
committed
// Not Polled
alarmfrequency->set_disp_level(Tango::OPERATOR);

Graziano Scalamera
committed
// Not Memorized
alarmfrequency->set_change_event(true, true);
alarmfrequency->set_archive_event(true, true);
att_list.push_back(alarmfrequency);

Graziano Scalamera
committed
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
// Attribute : alarmSummary
alarmSummaryAttrib *alarmsummary = new alarmSummaryAttrib();
Tango::UserDefaultAttrProp alarmsummary_prop;
// description not set for alarmSummary
// label not set for alarmSummary
// unit not set for alarmSummary
// standard_unit not set for alarmSummary
// display_unit not set for alarmSummary
// format not set for alarmSummary
// max_value not set for alarmSummary
// min_value not set for alarmSummary
// max_alarm not set for alarmSummary
// min_alarm not set for alarmSummary
// max_warning not set for alarmSummary
// min_warning not set for alarmSummary
// delta_t not set for alarmSummary
// delta_val not set for alarmSummary
alarmsummary->set_default_properties(alarmsummary_prop);
// Not Polled
alarmsummary->set_disp_level(Tango::OPERATOR);
// Not Memorized
alarmsummary->set_change_event(true, true);
alarmsummary->set_archive_event(true, true);
att_list.push_back(alarmsummary);
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
// Attribute : eventList
eventListAttrib *eventlist = new eventListAttrib();
Tango::UserDefaultAttrProp eventlist_prop;
eventlist_prop.set_description("List of all subscribed attributes");
// label not set for eventList
// unit not set for eventList
// standard_unit not set for eventList
// display_unit not set for eventList
// format not set for eventList
// max_value not set for eventList
// min_value not set for eventList
// max_alarm not set for eventList
// min_alarm not set for eventList
// max_warning not set for eventList
// min_warning not set for eventList
// delta_t not set for eventList
// delta_val not set for eventList
eventlist->set_default_properties(eventlist_prop);
// Not Polled
eventlist->set_disp_level(Tango::OPERATOR);
// Not Memorized
att_list.push_back(eventlist);
// Attribute : eventSummary
eventSummaryAttrib *eventsummary = new eventSummaryAttrib();
Tango::UserDefaultAttrProp eventsummary_prop;
// description not set for eventSummary
// label not set for eventSummary
// unit not set for eventSummary
// standard_unit not set for eventSummary
// display_unit not set for eventSummary
// format not set for eventSummary
// max_value not set for eventSummary
// min_value not set for eventSummary
// max_alarm not set for eventSummary
// min_alarm not set for eventSummary
// max_warning not set for eventSummary
// min_warning not set for eventSummary
// delta_t not set for eventSummary
// delta_val not set for eventSummary
eventsummary->set_default_properties(eventsummary_prop);
// Not Polled
eventsummary->set_disp_level(Tango::OPERATOR);
// Not Memorized
att_list.push_back(eventsummary);
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
// Attribute : alarmDisabled
alarmDisabledAttrib *alarmdisabled = new alarmDisabledAttrib();
Tango::UserDefaultAttrProp alarmdisabled_prop;
alarmdisabled_prop.set_description("List of alarms in out of service or shelved state");
// label not set for alarmDisabled
// unit not set for alarmDisabled
// standard_unit not set for alarmDisabled
// display_unit not set for alarmDisabled
// format not set for alarmDisabled
// max_value not set for alarmDisabled
// min_value not set for alarmDisabled
// max_alarm not set for alarmDisabled
// min_alarm not set for alarmDisabled
// max_warning not set for alarmDisabled
// min_warning not set for alarmDisabled
// delta_t not set for alarmDisabled
// delta_val not set for alarmDisabled
alarmdisabled->set_default_properties(alarmdisabled_prop);
// Not Polled
alarmdisabled->set_disp_level(Tango::OPERATOR);
// Not Memorized
alarmdisabled->set_change_event(true, true);
alarmdisabled->set_archive_event(true, true);
att_list.push_back(alarmdisabled);

Graziano Scalamera
committed
// Create a list of static attributes
create_static_attribute_list(get_class_attr()->get_attr_list());
/*----- PROTECTED REGION ID(AlarmHandlerClass::attribute_factory_after) ENABLED START -----*/

Graziano Scalamera
committed
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::attribute_factory_after

Graziano Scalamera
committed
}
//--------------------------------------------------------
/**
* Method : AlarmHandlerClass::pipe_factory()

Graziano Scalamera
committed
* Description : Create the pipe object(s)
* and store them in the pipe list
*/
//--------------------------------------------------------
void AlarmHandlerClass::pipe_factory()

Graziano Scalamera
committed
{
/*----- PROTECTED REGION ID(AlarmHandlerClass::pipe_factory_before) ENABLED START -----*/

Graziano Scalamera
committed
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::pipe_factory_before
/*----- PROTECTED REGION ID(AlarmHandlerClass::pipe_factory_after) ENABLED START -----*/

Graziano Scalamera
committed
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::pipe_factory_after

Graziano Scalamera
committed
}
//--------------------------------------------------------
/**
* Method : AlarmHandlerClass::command_factory()

Graziano Scalamera
committed
* Description : Create the command object(s)
* and store them in the command list
*/
//--------------------------------------------------------
void AlarmHandlerClass::command_factory()

Graziano Scalamera
committed
{
/*----- PROTECTED REGION ID(AlarmHandlerClass::command_factory_before) ENABLED START -----*/

Graziano Scalamera
committed
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::command_factory_before

Graziano Scalamera
committed
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
// 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);

Graziano Scalamera
committed
// Command SearchAlarm
SearchAlarmClass *pSearchAlarmCmd =
new SearchAlarmClass("SearchAlarm",

Graziano Scalamera
committed
Tango::DEV_STRING, Tango::DEVVAR_STRINGARRAY,

Graziano Scalamera
committed
"String containing a filter for output, if empty or * return all alarms",
"Configured alarms",

Graziano Scalamera
committed
Tango::OPERATOR);

Graziano Scalamera
committed
command_list.push_back(pSearchAlarmCmd);

Graziano Scalamera
committed

Graziano Scalamera
committed
// Command StopAudible
StopAudibleClass *pStopAudibleCmd =
new StopAudibleClass("StopAudible",

Graziano Scalamera
committed
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR);

Graziano Scalamera
committed
command_list.push_back(pStopAudibleCmd);

Graziano Scalamera
committed
// 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);

Graziano Scalamera
committed
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
// 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);
// Command StopNew
StopNewClass *pStopNewCmd =
new StopNewClass("StopNew",
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR);
command_list.push_back(pStopNewCmd);
// Command GetAlarmInfo
GetAlarmInfoClass *pGetAlarmInfoCmd =
new GetAlarmInfoClass("GetAlarmInfo",

Graziano Scalamera
committed
Tango::DEVVAR_STRINGARRAY, Tango::DEVVAR_STRINGARRAY,
"Alarm name followed optionally by wanted key names",
"Complete attribute info as an array of key=value",
Tango::OPERATOR);
command_list.push_back(pGetAlarmInfoCmd);
// Command ReLoadAll
ReLoadAllClass *pReLoadAllCmd =
new ReLoadAllClass("ReLoadAll",
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR);
command_list.push_back(pReLoadAllCmd);
/*----- PROTECTED REGION ID(AlarmHandlerClass::command_factory_after) ENABLED START -----*/

Graziano Scalamera
committed
// Add your own code
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::command_factory_after

Graziano Scalamera
committed
}
//===================================================================
// Dynamic attributes related methods
//===================================================================
//--------------------------------------------------------
/**
* method : AlarmHandlerClass::create_static_attribute_list

Graziano Scalamera
committed
* description : Create the a list of static attributes
*
* @param att_list the ceated attribute list
*/
//--------------------------------------------------------
void AlarmHandlerClass::create_static_attribute_list(vector<Tango::Attr *> &att_list)

Graziano Scalamera
committed
{
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);
}
TANGO_LOG_INFO << defaultAttList.size() << " attributes in default list" << endl;

Graziano Scalamera
committed
/*----- PROTECTED REGION ID(AlarmHandlerClass::create_static_att_list) ENABLED START -----*/

Graziano Scalamera
committed
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::create_static_att_list

Graziano Scalamera
committed
}
//--------------------------------------------------------
/**
* method : AlarmHandlerClass::erase_dynamic_attributes

Graziano Scalamera
committed
* description : delete the dynamic attributes if any.
*
* @param devlist_ptr the device list pointer
* @param list of all attributes
*/
//--------------------------------------------------------
void AlarmHandlerClass::erase_dynamic_attributes(const Tango::DevVarStringArray *devlist_ptr, vector<Tango::Attr *> &att_list)

Graziano Scalamera
committed
{
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());
AlarmHandler *dev = static_cast<AlarmHandler *> (dev_impl);

Graziano Scalamera
committed
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())
{
TANGO_LOG_INFO << att_name << " is a UNWANTED dynamic attribute for device " << (*devlist_ptr)[i] << endl;

Graziano Scalamera
committed
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(AlarmHandlerClass::erase_dynamic_attributes) ENABLED START -----*/

Graziano Scalamera
committed
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::erase_dynamic_attributes

Graziano Scalamera
committed
}
//--------------------------------------------------------
/**
* Method : AlarmHandlerClass::get_attr_object_by_name()

Graziano Scalamera
committed
* Description : returns Tango::Attr * object found by name
*/
//--------------------------------------------------------
Tango::Attr *AlarmHandlerClass::get_attr_object_by_name(vector<Tango::Attr *> &att_list, string attname)

Graziano Scalamera
committed
{
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(AlarmHandlerClass::Additional Methods) ENABLED START -----*/

Graziano Scalamera
committed
/*----- PROTECTED REGION END -----*/ // AlarmHandlerClass::Additional Methods

Graziano Scalamera
committed
} // namespace