Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • cs/ds/ionpump
1 result
Show changes
Commits on Source (4)
#
# Resource backup , created Mon Apr 04 17:13:20 CEST 2022
#
#---------------------------------------------------------
# SERVER ionpump-srv/3hca11, Ionpump device declaration
#---------------------------------------------------------
ionpump-srv/3hca11/DEVICE/Ionpump: "sr/3hc/sip3hc_s11.01"
# --- sr/3hc/sip3hc_s11.01 properties
sr/3hc/sip3hc_s11.01->__SubDevices: "sr/3hc/pssip_3hc.01"
# --- sr/3hc/sip3hc_s11.01 attribute properties
#---------------------------------------------------------
# CLASS Ionpump properties
#---------------------------------------------------------
CLASS/Ionpump->cvs_location: "/home/cvsadm/cvsroot/fermi/servers/ionpump/src/"
CLASS/Ionpump->cvs_tag: release_02
CLASS/Ionpump->Description: "This is the device server of the ion pump."
CLASS/Ionpump->doc_url: "http://"
CLASS/Ionpump->helperApplication: "/runtime/elettra/bin/sip"
CLASS/Ionpump->InheritedFrom: Device_3Impl
CLASS/Ionpump->ProjectTitle: "Ionpump device server"
# CLASS Ionpump attribute properties
This diff is collapsed.
#
# Resource backup , created Thu Aug 26 11:45:09 CEST 2021
#
#---------------------------------------------------------
# SERVER ionpump-srv/test, Ionpump device declaration
#---------------------------------------------------------
ionpump-srv/test/DEVICE/Ionpump: "test/vacuum/2"
# --- test/vacuum/2 properties
test/vacuum/2->polled_attr: voltage,\
3000,\
state,\
3000,\
pressure,\
3000,\
current,\
3000
test/vacuum/2->__SubDevices: "sa/vacuum/sippwr_s02.01"
# --- test/vacuum/2 attribute properties
test/vacuum/2/Pressure->archive_period: 360000
test/vacuum/2/Pressure->archive_rel_change: -20,\
20
test/vacuum/2/Pressure->rel_change: -10,\
10
test/vacuum/2/State->archive_period: 360000
#---------------------------------------------------------
# CLASS Ionpump properties
#---------------------------------------------------------
CLASS/Ionpump->cvs_location: "/home/cvsadm/cvsroot/fermi/servers/ionpump/src/"
CLASS/Ionpump->cvs_tag: release_02
CLASS/Ionpump->Description: "This is the device server of the ion pump."
CLASS/Ionpump->doc_url: "http://"
CLASS/Ionpump->helperApplication: "/runtime/elettra/bin/sip"
CLASS/Ionpump->InheritedFrom: Device_3Impl
CLASS/Ionpump->ProjectTitle: "Ionpump device server"
# CLASS Ionpump attribute properties
# --- dserver/ionpump-srv/test properties
dserver/ionpump-srv/test->polling_threads_pool_conf: "sr/vacuum/sip120_s01.06"
......@@ -71,12 +71,12 @@ namespace Ionpump_ns
//--------------------------------------------------------
/**
* Method : Ionpump::Ionpump()
* Description : Constructors for a Tango device
* Method : Ionpump::Ionpump()
* Description: Constructors for a Tango device
* implementing the classIonpump
*/
//--------------------------------------------------------
Ionpump::Ionpump(Tango::DeviceClass *cl, string &s)
Ionpump::Ionpump(Tango::DeviceClass *cl, std::string &s)
: TANGO_BASE_CLASS(cl, s.c_str())
{
/*----- PROTECTED REGION ID(Ionpump::constructor_1) ENABLED START -----*/
......@@ -102,16 +102,21 @@ Ionpump::Ionpump(Tango::DeviceClass *cl, const char *s, const char *d)
/*----- PROTECTED REGION END -----*/ // Ionpump::constructor_3
}
//--------------------------------------------------------
Ionpump::~Ionpump()
{
delete_device();
}
//--------------------------------------------------------
/**
* Method : Ionpump::delete_device()
* Description : will be called at device destruction or at init command
* Method : Ionpump::delete_device()
* Description: will be called at device destruction or at init command
*/
//--------------------------------------------------------
void Ionpump::delete_device()
{
DEBUG_STREAM << "Ionpump::delete_device() " << device_name << endl;
DEBUG_STREAM << "Ionpump::delete_device() " << device_name << std::endl;
/*----- PROTECTED REGION ID(Ionpump::delete_device) ENABLED START -----*/
// Delete device allocated objects
......@@ -142,13 +147,13 @@ void Ionpump::delete_device()
//--------------------------------------------------------
/**
* Method : Ionpump::init_device()
* Description : will be called at device initialization.
* Method : Ionpump::init_device()
* Description: will be called at device initialization.
*/
//--------------------------------------------------------
void Ionpump::init_device()
{
DEBUG_STREAM << "Ionpump::init_device() create device " << device_name << endl;
DEBUG_STREAM << "Ionpump::init_device() create device " << device_name << std::endl;
/*----- PROTECTED REGION ID(Ionpump::init_device_before) ENABLED START -----*/
// Initialization before get_device_property() call
......@@ -161,18 +166,22 @@ void Ionpump::init_device()
attr_Current_read = new Tango::DevDouble;
*attr_Current_read = 0;
attrs.clear();
/*----- PROTECTED REGION END -----*/ // Ionpump::init_device_before
// No device property to be read from database
/*----- PROTECTED REGION ID(Ionpump::init_device) ENABLED START -----*/
// Initialize device
char attr[20];
try {
get_ps_name();
}
catch(Tango::DevFailed &e) {
sprintf(attr,"State%d",channel);
attrs.push_back(attr);
sprintf(attr,"Status%d",channel);
attrs.push_back(attr);
} catch(Tango::DevFailed &e) {
cout << "Can't get dual name" << endl;
exit(1);
}
......@@ -183,69 +192,43 @@ void Ionpump::init_device()
//--------------------------------------------------------
/**
* Method : Ionpump::always_executed_hook()
* Description : method always executed before any command is executed
* Method : Ionpump::always_executed_hook()
* Description: method always executed before any command is executed
*/
//--------------------------------------------------------
void Ionpump::always_executed_hook()
{
DEBUG_STREAM << "Ionpump::always_executed_hook() " << device_name << endl;
DEBUG_STREAM << "Ionpump::always_executed_hook() " << device_name << std::endl;
/*----- PROTECTED REGION ID(Ionpump::always_executed_hook) ENABLED START -----*/
// code always executed before all requests
/*
* bit 0 = off(0) --- on(1)
* bit 1 = loc(0) --- rem(1)
* bit 2 = noerr(0) --- err(1)
* bit 3 = fix(0) --- step(1)
* bit 4 = start(0) --- protect(1)
* bit 5 = panel interlock (1 = active)
* bit 6 = remote interlock (1 = active)
* bit 7 = cable interlock (1 = active)
*/
char mask[14];
std::stringstream s;
sprintf(mask,"StatMask%d",channel);
string stat_attr(mask);
Tango::DevLong statmask = 0;
try {
devps->read_attribute(stat_attr) >> statmask;
if ((statmask & 0x4) || (statmask & 0xE0)) {
set_state(Tango::FAULT);
s << "Ion pump ERROR" << endl;
} else {
if (statmask & 0x1) {
set_state(Tango::ON);
s << "Ion pump is ON" << endl;
} else {
set_state(Tango::OFF);
s << "Ion pump is OFF" << endl;
}
}
vector<Tango::DeviceAttribute> *devattrs = NULL;
Tango::DevState state;
string status;
try {
devattrs = devps->read_attributes(attrs);
(*devattrs)[0] >> state;
(*devattrs)[1] >> status;
set_state(state);
set_status(status);
} catch(Tango::DevFailed &e) {
set_state(Tango::FAULT);
s << "Error reading PS status" << endl;
}
// Fallback to StatMaskX
get_statmask();
}
set_status(s.str());
/*----- PROTECTED REGION END -----*/ // Ionpump::always_executed_hook
}
//--------------------------------------------------------
/**
* Method : Ionpump::read_attr_hardware()
* Description : Hardware acquisition for attributes
* Method : Ionpump::read_attr_hardware()
* Description: Hardware acquisition for attributes
*/
//--------------------------------------------------------
void Ionpump::read_attr_hardware(TANGO_UNUSED(vector<long> &attr_list))
void Ionpump::read_attr_hardware(TANGO_UNUSED(std::vector<long> &attr_list))
{
DEBUG_STREAM << "Ionpump::read_attr_hardware(vector<long> &attr_list) entering... " << endl;
DEBUG_STREAM << "Ionpump::read_attr_hardware(std::vector<long> &attr_list) entering... " << std::endl;
/*----- PROTECTED REGION ID(Ionpump::read_attr_hardware) ENABLED START -----*/
// Add your own code
......@@ -265,7 +248,7 @@ void Ionpump::read_attr_hardware(TANGO_UNUSED(vector<long> &attr_list))
//--------------------------------------------------------
void Ionpump::read_Pressure(Tango::Attribute &attr)
{
DEBUG_STREAM << "Ionpump::read_Pressure(Tango::Attribute &attr) entering... " << endl;
DEBUG_STREAM << "Ionpump::read_Pressure(Tango::Attribute &attr) entering... " << std::endl;
/*----- PROTECTED REGION ID(Ionpump::read_Pressure) ENABLED START -----*/
double pressure;
......@@ -313,7 +296,7 @@ void Ionpump::read_Pressure(Tango::Attribute &attr)
//--------------------------------------------------------
void Ionpump::read_Voltage(Tango::Attribute &attr)
{
DEBUG_STREAM << "Ionpump::read_Voltage(Tango::Attribute &attr) entering... " << endl;
DEBUG_STREAM << "Ionpump::read_Voltage(Tango::Attribute &attr) entering... " << std::endl;
/*----- PROTECTED REGION ID(Ionpump::read_Voltage) ENABLED START -----*/
double voltage;
......@@ -350,7 +333,7 @@ void Ionpump::read_Voltage(Tango::Attribute &attr)
//--------------------------------------------------------
void Ionpump::read_Current(Tango::Attribute &attr)
{
DEBUG_STREAM << "Ionpump::read_Current(Tango::Attribute &attr) entering... " << endl;
DEBUG_STREAM << "Ionpump::read_Current(Tango::Attribute &attr) entering... " << std::endl;
/*----- PROTECTED REGION ID(Ionpump::read_Current) ENABLED START -----*/
double current;
......@@ -379,8 +362,8 @@ void Ionpump::read_Current(Tango::Attribute &attr)
//--------------------------------------------------------
/**
* Method : Ionpump::add_dynamic_attributes()
* Description : Create the dynamic attributes if any
* Method : Ionpump::add_dynamic_attributes()
* Description: Create the dynamic attributes if any
* for specified device.
*/
//--------------------------------------------------------
......@@ -393,6 +376,21 @@ void Ionpump::add_dynamic_attributes()
/*----- PROTECTED REGION END -----*/ // Ionpump::add_dynamic_attributes
}
//--------------------------------------------------------
/**
* Method : Ionpump::add_dynamic_commands()
* Description: Create the dynamic commands if any
* for specified device.
*/
//--------------------------------------------------------
void Ionpump::add_dynamic_commands()
{
/*----- PROTECTED REGION ID(Ionpump::add_dynamic_commands) ENABLED START -----*/
/* clang-format on */
// Add your own code to create and add dynamic commands if any
/* clang-format off */
/*----- PROTECTED REGION END -----*/ // Ionpump::add_dynamic_commands
}
/*----- PROTECTED REGION ID(Ionpump::namespace_ending) ENABLED START -----*/
......@@ -501,6 +499,51 @@ void Ionpump::get_ps_name()
}
void Ionpump::get_statmask()
{
DEBUG_STREAM << "Dual::get_statmask(): entering... !" << endl;
/*
* bit 0 = off(0) --- on(1)
* bit 1 = loc(0) --- rem(1)
* bit 2 = noerr(0) --- err(1)
* bit 3 = fix(0) --- step(1)
* bit 4 = start(0) --- protect(1)
* bit 5 = panel interlock (1 = active)
* bit 6 = remote interlock (1 = active)
* bit 7 = cable interlock (1 = active)
*/
char mask[14];
std::stringstream s;
sprintf(mask,"StatMask%d",channel);
string stat_attr(mask);
Tango::DevLong statmask = 0;
try {
devps->read_attribute(stat_attr) >> statmask;
if ((statmask & 0x4) || (statmask & 0xE0)) {
set_state(Tango::FAULT);
s << "Ion pump ERROR" << endl;
} else {
if (statmask & 0x1) {
set_state(Tango::ON);
s << "Ion pump is ON" << endl;
} else {
set_state(Tango::OFF);
s << "Ion pump is OFF" << endl;
}
}
} catch(Tango::DevFailed &e) {
set_state(Tango::FAULT);
s << "Error reading PS status" << endl;
}
set_status(s.str());
}
/*----- PROTECTED REGION END -----*/ // Ionpump::namespace_ending
} // namespace
......@@ -38,11 +38,22 @@
/*----- PROTECTED REGION END -----*/ // Ionpump.h
#ifdef TANGO_LOG
// cppTango after c934adea (Merge branch 'remove-cout-definition' into 'main', 2022-05-23)
// nothing to do
#else
// cppTango 9.3-backports and older
#define TANGO_LOG cout
#define TANGO_LOG_INFO cout2
#define TANGO_LOG_DEBUG cout3
#endif // TANGO_LOG
/**
* Ionpump class description:
* This is the device server of the ion pump.
*/
namespace Ionpump_ns
{
/*----- PROTECTED REGION ID(Ionpump::Additional Class Declarations) ENABLED START -----*/
......@@ -58,8 +69,7 @@ class Ionpump : public TANGO_BASE_CLASS
// Add your own data members
public:
vector<string> attrs;
/*----- PROTECTED REGION END -----*/ // Ionpump::Data Members
......@@ -78,7 +88,7 @@ public:
* @param cl Class.
* @param s Device Name
*/
Ionpump(Tango::DeviceClass *cl,string &s);
Ionpump(Tango::DeviceClass *cl,std::string &s);
/**
* Constructs a newly device object.
*
......@@ -96,8 +106,8 @@ public:
Ionpump(Tango::DeviceClass *cl,const char *s,const char *d);
/**
* The device object destructor.
*/
~Ionpump() {delete_device();};
*/
~Ionpump();
// Miscellaneous methods
......@@ -120,11 +130,11 @@ public:
public:
//--------------------------------------------------------
/*
* Method : Ionpump::read_attr_hardware()
* Description : Hardware acquisition for attributes.
* Method : Ionpump::read_attr_hardware()
* Description: Hardware acquisition for attributes.
*/
//--------------------------------------------------------
virtual void read_attr_hardware(vector<long> &attr_list);
virtual void read_attr_hardware(std::vector<long> &attr_list);
/**
* Attribute Pressure related methods
......@@ -157,22 +167,23 @@ public:
//--------------------------------------------------------
/**
* Method : Ionpump::add_dynamic_attributes()
* Description : Add dynamic attributes if any.
* Method : Ionpump::add_dynamic_attributes()
* Description: Add dynamic attributes if any.
*/
//--------------------------------------------------------
void add_dynamic_attributes();
// Command related methods
public:
//--------------------------------------------------------
/**
* Method : Ionpump::add_dynamic_commands()
* Description : Add dynamic commands if any.
* Method : Ionpump::add_dynamic_commands()
* Description: Add dynamic commands if any.
*/
//--------------------------------------------------------
void add_dynamic_commands();
......@@ -190,6 +201,7 @@ protected :
* Get sip names from database
*/
void get_ps_name(void);
void get_statmask(void);
/*----- PROTECTED REGION END -----*/ // Ionpump::Additional Method prototypes
};
......
<?xml version="1.0" encoding="ASCII"?>
<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl">
<classes name="Ionpump" pogoRevision="8.4">
<description description="This is the device server of the ion pump." title="Ionpump device server" sourcePath="/home/alessio/WIP/fermi/servers/ionpump/src" language="Cpp" filestogenerate="XMI file,Code files" license="GPL" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="false" hasAbstractAttribute="false">
<classes name="Ionpump" pogoRevision="9.7">
<description description="This is the device server of the ion pump." title="Ionpump device server" sourcePath="/home/alessio/Sources/git-trees/4uhv/deps/ionpump/src" language="Cpp" filestogenerate="XMI file,Code files,Protected Regions" license="GPL" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="false" hasAbstractAttribute="false">
<inheritances classname="Device_4Impl" sourcePath=""/>
<identification contact="at elettra.eu> - Alessio Igor Bogani &lt;alessio.bogani" author="Alessio Igor Bogani &lt;alessio.bogani" emailDomain="elettra.eu>" classFamily="Vacuum" siteSpecific="" platform="Unix Like" bus="Socket" manufacturer="" reference=""/>
</description>
......@@ -53,6 +53,6 @@
<states name="FAULT" description="PS is in fault state">
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
</states>
<preferences docHome="./doc_html" makefileHome="/usr/local/tango-8.1.2.c/share/pogo/preferences"/>
<preferences docHome="./doc_html" makefileHome="$(TANGO_HOME)"/>
</classes>
</pogoDsl:PogoSystem>
......@@ -63,17 +63,20 @@ namespace Ionpump_ns
//===================================================================
IonpumpClass *IonpumpClass::_instance = NULL;
//===================================================================
// Class constants
//===================================================================
//--------------------------------------------------------
/**
* method : IonpumpClass::IonpumpClass(string &s)
* method : IonpumpClass::IonpumpClass(std::string &s)
* description : constructor for the IonpumpClass
*
* @param s The class name
*/
//--------------------------------------------------------
IonpumpClass::IonpumpClass(string &s):Tango::DeviceClass(s)
IonpumpClass::IonpumpClass(std::string &s):Tango::DeviceClass(s)
{
cout2 << "Entering IonpumpClass constructor" << endl;
TANGO_LOG_INFO << "Entering IonpumpClass constructor" << std::endl;
set_default_property();
write_class_property();
......@@ -81,7 +84,7 @@ IonpumpClass::IonpumpClass(string &s):Tango::DeviceClass(s)
/*----- PROTECTED REGION END -----*/ // IonpumpClass::constructor
cout2 << "Leaving IonpumpClass constructor" << endl;
TANGO_LOG_INFO << "Leaving IonpumpClass constructor" << std::endl;
}
//--------------------------------------------------------
......@@ -115,14 +118,14 @@ IonpumpClass *IonpumpClass::init(const char *name)
{
try
{
string s(name);
std::string s(name);
_instance = new IonpumpClass(s);
}
catch (bad_alloc &)
catch (std::bad_alloc &)
{
throw;
}
}
}
}
return _instance;
}
......@@ -137,7 +140,7 @@ IonpumpClass *IonpumpClass::instance()
{
if (_instance == NULL)
{
cerr << "Class is not initialised !!" << endl;
std::cerr << "Class is not initialized !!" << std::endl;
exit(-1);
}
return _instance;
......@@ -154,11 +157,11 @@ IonpumpClass *IonpumpClass::instance()
//===================================================================
//--------------------------------------------------------
/**
* Method : IonpumpClass::get_class_property()
* Description : Get the class property for specified name.
* Method : IonpumpClass::get_class_property()
* Description: Get the class property for specified name.
*/
//--------------------------------------------------------
Tango::DbDatum IonpumpClass::get_class_property(string &prop_name)
Tango::DbDatum IonpumpClass::get_class_property(std::string &prop_name)
{
for (unsigned int i=0 ; i<cl_prop.size() ; i++)
if (cl_prop[i].name == prop_name)
......@@ -169,11 +172,11 @@ Tango::DbDatum IonpumpClass::get_class_property(string &prop_name)
//--------------------------------------------------------
/**
* Method : IonpumpClass::get_default_device_property()
* Description : Return the default value for device property.
* Method : IonpumpClass::get_default_device_property()
* Description: Return the default value for device property.
*/
//--------------------------------------------------------
Tango::DbDatum IonpumpClass::get_default_device_property(string &prop_name)
Tango::DbDatum IonpumpClass::get_default_device_property(std::string &prop_name)
{
for (unsigned int i=0 ; i<dev_def_prop.size() ; i++)
if (dev_def_prop[i].name == prop_name)
......@@ -184,11 +187,11 @@ Tango::DbDatum IonpumpClass::get_default_device_property(string &prop_name)
//--------------------------------------------------------
/**
* Method : IonpumpClass::get_default_class_property()
* Description : Return the default value for class property.
* Method : IonpumpClass::get_default_class_property()
* Description: Return the default value for class property.
*/
//--------------------------------------------------------
Tango::DbDatum IonpumpClass::get_default_class_property(string &prop_name)
Tango::DbDatum IonpumpClass::get_default_class_property(std::string &prop_name)
{
for (unsigned int i=0 ; i<cl_def_prop.size() ; i++)
if (cl_def_prop[i].name == prop_name)
......@@ -200,8 +203,8 @@ Tango::DbDatum IonpumpClass::get_default_class_property(string &prop_name)
//--------------------------------------------------------
/**
* Method : IonpumpClass::set_default_property()
* Description : Set default property (class and device) for wizard.
* Method : IonpumpClass::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.
......@@ -209,10 +212,10 @@ Tango::DbDatum IonpumpClass::get_default_class_property(string &prop_name)
//--------------------------------------------------------
void IonpumpClass::set_default_property()
{
string prop_name;
string prop_desc;
string prop_def;
vector<string> vect_data;
std::string prop_name;
std::string prop_desc;
std::string prop_def;
std::vector<std::string> vect_data;
// Set Default Class Properties
......@@ -221,12 +224,42 @@ void IonpumpClass::set_default_property()
//--------------------------------------------------------
/**
* Method : IonpumpClass::write_class_property()
* Description : Set class description fields as property in database
* Method : IonpumpClass::write_class_property()
* Description: Set class description fields as property in database
*/
//--------------------------------------------------------
void IonpumpClass::write_class_property()
{
// First time, check if database used
if (Tango::Util::_UseDb == false)
return;
Tango::DbData data;
std::string classname = get_name();
std::string header;
// Put title
Tango::DbDatum title("ProjectTitle");
std::string str_title("Ionpump device server");
title << str_title;
data.push_back(title);
// Put Description
Tango::DbDatum description("Description");
std::vector<std::string> str_desc;
str_desc.push_back("This is the device server of the ion pump.");
description << str_desc;
data.push_back(description);
// Put inheritance
Tango::DbDatum inher_datum("InheritedFrom");
std::vector<std::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);
}
//===================================================================
......@@ -235,8 +268,8 @@ void IonpumpClass::write_class_property()
//--------------------------------------------------------
/**
* Method : IonpumpClass::device_factory()
* Description : Create the device object(s)
* Method : IonpumpClass::device_factory()
* Description: Create the device object(s)
* and store them in the device list
*/
//--------------------------------------------------------
......@@ -251,7 +284,7 @@ void IonpumpClass::device_factory(const Tango::DevVarStringArray *devlist_ptr)
// 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;
TANGO_LOG_DEBUG << "Device name : " << (*devlist_ptr)[i].in() << std::endl;
device_list.push_back(new Ionpump(this, (*devlist_ptr)[i]));
}
......@@ -280,12 +313,12 @@ void IonpumpClass::device_factory(const Tango::DevVarStringArray *devlist_ptr)
}
//--------------------------------------------------------
/**
* Method : IonpumpClass::attribute_factory()
* Description : Create the attribute object(s)
* Method : IonpumpClass::attribute_factory()
* Description: Create the attribute object(s)
* and store them in the attribute list
*/
//--------------------------------------------------------
void IonpumpClass::attribute_factory(vector<Tango::Attr *> &att_list)
void IonpumpClass::attribute_factory(std::vector<Tango::Attr *> &att_list)
{
/*----- PROTECTED REGION ID(IonpumpClass::attribute_factory_before) ENABLED START -----*/
......@@ -309,7 +342,6 @@ void IonpumpClass::attribute_factory(vector<Tango::Attr *> &att_list)
// min_warning not set for Pressure
// delta_t not set for Pressure
// delta_val not set for Pressure
pressure->set_default_properties(pressure_prop);
// Not Polled
pressure->set_disp_level(Tango::OPERATOR);
......@@ -333,7 +365,6 @@ void IonpumpClass::attribute_factory(vector<Tango::Attr *> &att_list)
// min_warning not set for Voltage
// delta_t not set for Voltage
// delta_val not set for Voltage
voltage->set_default_properties(voltage_prop);
// Not Polled
voltage->set_disp_level(Tango::OPERATOR);
......@@ -357,13 +388,13 @@ void IonpumpClass::attribute_factory(vector<Tango::Attr *> &att_list)
// min_warning not set for Current
// delta_t not set for Current
// delta_val not set for Current
current->set_default_properties(current_prop);
// Not Polled
current->set_disp_level(Tango::OPERATOR);
// Not Memorized
att_list.push_back(current);
// Create a list of static attributes
create_static_attribute_list(get_class_attr()->get_attr_list());
/*----- PROTECTED REGION ID(IonpumpClass::attribute_factory_after) ENABLED START -----*/
......@@ -374,8 +405,28 @@ void IonpumpClass::attribute_factory(vector<Tango::Attr *> &att_list)
}
//--------------------------------------------------------
/**
* Method : IonpumpClass::command_factory()
* Description : Create the command object(s)
* Method : IonpumpClass::pipe_factory()
* Description: Create the pipe object(s)
* and store them in the pipe list
*/
//--------------------------------------------------------
void IonpumpClass::pipe_factory()
{
/*----- PROTECTED REGION ID(IonpumpClass::pipe_factory_before) ENABLED START -----*/
/* clang-format on */
// Add your own code
/* clang-format off */
/*----- PROTECTED REGION END -----*/ // IonpumpClass::pipe_factory_before
/*----- PROTECTED REGION ID(IonpumpClass::pipe_factory_after) ENABLED START -----*/
/* clang-format on */
// Add your own code
/* clang-format off */
/*----- PROTECTED REGION END -----*/ // IonpumpClass::pipe_factory_after
}
//--------------------------------------------------------
/**
* Method : IonpumpClass::command_factory()
* Description: Create the command object(s)
* and store them in the command list
*/
//--------------------------------------------------------
......@@ -404,19 +455,19 @@ void IonpumpClass::command_factory()
* method : IonpumpClass::create_static_attribute_list
* description : Create the a list of static attributes
*
* @param att_list the ceated attribute list
* @param att_list the created attribute list
*/
//--------------------------------------------------------
void IonpumpClass::create_static_attribute_list(vector<Tango::Attr *> &att_list)
void IonpumpClass::create_static_attribute_list(std::vector<Tango::Attr *> &att_list)
{
for (unsigned long i=0 ; i<att_list.size() ; i++)
{
string att_name(att_list[i]->get_name());
std::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;
TANGO_LOG_INFO << defaultAttList.size() << " attributes in default list" << std::endl;
/*----- PROTECTED REGION ID(IonpumpClass::create_static_att_list) ENABLED START -----*/
......@@ -433,26 +484,26 @@ void IonpumpClass::create_static_attribute_list(vector<Tango::Attr *> &att_list)
* @param list of all attributes
*/
//--------------------------------------------------------
void IonpumpClass::erase_dynamic_attributes(const Tango::DevVarStringArray *devlist_ptr, vector<Tango::Attr *> &att_list)
void IonpumpClass::erase_dynamic_attributes(const Tango::DevVarStringArray *devlist_ptr, std::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());
{
Tango::DeviceImpl *dev_impl = tg->get_device_by_name(((std::string)(*devlist_ptr)[i]).c_str());
Ionpump *dev = static_cast<Ionpump *> (dev_impl);
vector<Tango::Attribute *> &dev_att_list = dev->get_device_attr()->get_attribute_list();
vector<Tango::Attribute *>::iterator ite_att;
std::vector<Tango::Attribute *> &dev_att_list = dev->get_device_attr()->get_attribute_list();
std::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());
std::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);
std::vector<std::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_LOG_INFO << att_name << " is a UNWANTED dynamic attribute for device " << (*devlist_ptr)[i] << std::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;
......@@ -466,14 +517,14 @@ void IonpumpClass::erase_dynamic_attributes(const Tango::DevVarStringArray *devl
//--------------------------------------------------------
/**
* Method : IonpumpClass::get_attr_by_name()
* Description : returns Tango::Attr * object found by name
* Method : IonpumpClass::get_attr_object_by_name()
* Description: returns Tango::Attr * object found by name
*/
//--------------------------------------------------------
Tango::Attr *IonpumpClass::get_attr_object_by_name(vector<Tango::Attr *> &att_list, string attname)
Tango::Attr *IonpumpClass::get_attr_object_by_name(std::vector<Tango::Attr *> &att_list, std::string attname)
{
vector<Tango::Attr *>::iterator it;
for (it=att_list.begin() ; it<att_list.end() ; it++)
std::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
......
......@@ -56,8 +56,8 @@ class PressureAttrib: public Tango::Attr
{
public:
PressureAttrib():Attr("Pressure",
Tango::DEV_DOUBLE, Tango::READ) {};
~PressureAttrib() {};
Tango::DEV_DOUBLE, Tango::READ) {}
~PressureAttrib() {}
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<Ionpump *>(dev))->read_Pressure(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
......@@ -69,8 +69,8 @@ class VoltageAttrib: public Tango::Attr
{
public:
VoltageAttrib():Attr("Voltage",
Tango::DEV_DOUBLE, Tango::READ) {};
~VoltageAttrib() {};
Tango::DEV_DOUBLE, Tango::READ) {}
~VoltageAttrib() {}
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<Ionpump *>(dev))->read_Voltage(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
......@@ -82,8 +82,8 @@ class CurrentAttrib: public Tango::Attr
{
public:
CurrentAttrib():Attr("Current",
Tango::DEV_DOUBLE, Tango::READ) {};
~CurrentAttrib() {};
Tango::DEV_DOUBLE, Tango::READ) {}
~CurrentAttrib() {}
virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
{(static_cast<Ionpump *>(dev))->read_Current(att);}
virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
......@@ -101,42 +101,42 @@ class __declspec(dllexport) IonpumpClass : public Tango::DeviceClass
class IonpumpClass : public Tango::DeviceClass
#endif
{
/*----- PROTECTED REGION ID(IonpumpClass::Additionnal DServer data members) ENABLED START -----*/
/*----- PROTECTED REGION ID(IonpumpClass::Additional DServer data members) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // IonpumpClass::Additionnal DServer data members
/*----- PROTECTED REGION END -----*/ // IonpumpClass::Additional DServer data members
public:
// write class properties data members
Tango::DbData cl_prop;
Tango::DbData cl_def_prop;
Tango::DbData dev_def_prop;
// Method prototypes
static IonpumpClass *init(const char *);
static IonpumpClass *instance();
~IonpumpClass();
Tango::DbDatum get_class_property(string &);
Tango::DbDatum get_default_device_property(string &);
Tango::DbDatum get_default_class_property(string &);
Tango::DbDatum get_class_property(std::string &);
Tango::DbDatum get_default_device_property(std::string &);
Tango::DbDatum get_default_class_property(std::string &);
protected:
IonpumpClass(string &);
IonpumpClass(std::string &);
static IonpumpClass *_instance;
void command_factory();
void attribute_factory(vector<Tango::Attr *> &);
void attribute_factory(std::vector<Tango::Attr *> &);
void pipe_factory();
void write_class_property();
void set_default_property();
void get_class_property();
string get_cvstag();
string get_cvsroot();
std::string get_cvstag();
std::string get_cvsroot();
private:
void device_factory(const Tango::DevVarStringArray *);
void create_static_attribute_list(vector<Tango::Attr *> &);
void erase_dynamic_attributes(const Tango::DevVarStringArray *,vector<Tango::Attr *> &);
vector<string> defaultAttList;
Tango::Attr *get_attr_object_by_name(vector<Tango::Attr *> &att_list, string attname);
void device_factory(TANGO_UNUSED(const Tango::DevVarStringArray *));
void create_static_attribute_list(std::vector<Tango::Attr *> &);
void erase_dynamic_attributes(const Tango::DevVarStringArray *,std::vector<Tango::Attr *> &);
std::vector<std::string> defaultAttList;
Tango::Attr *get_attr_object_by_name(std::vector<Tango::Attr *> &att_list, std::string attname);
};
} // End of namespace
......
......@@ -47,8 +47,8 @@ namespace Ionpump_ns
//--------------------------------------------------------
/**
* Method : Ionpump::is_Pressure_allowed()
* Description : Execution allowed for Pressure attribute
* Method : Ionpump::is_Pressure_allowed()
* Description: Execution allowed for Pressure attribute
*/
//--------------------------------------------------------
bool Ionpump::is_Pressure_allowed(TANGO_UNUSED(Tango::AttReqType type))
......@@ -63,8 +63,8 @@ bool Ionpump::is_Pressure_allowed(TANGO_UNUSED(Tango::AttReqType type))
//--------------------------------------------------------
/**
* Method : Ionpump::is_Voltage_allowed()
* Description : Execution allowed for Voltage attribute
* Method : Ionpump::is_Voltage_allowed()
* Description: Execution allowed for Voltage attribute
*/
//--------------------------------------------------------
bool Ionpump::is_Voltage_allowed(TANGO_UNUSED(Tango::AttReqType type))
......@@ -79,8 +79,8 @@ bool Ionpump::is_Voltage_allowed(TANGO_UNUSED(Tango::AttReqType type))
//--------------------------------------------------------
/**
* Method : Ionpump::is_Current_allowed()
* Description : Execution allowed for Current attribute
* Method : Ionpump::is_Current_allowed()
* Description: Execution allowed for Current attribute
*/
//--------------------------------------------------------
bool Ionpump::is_Current_allowed(TANGO_UNUSED(Tango::AttReqType type))
......@@ -93,8 +93,16 @@ bool Ionpump::is_Current_allowed(TANGO_UNUSED(Tango::AttReqType type))
return true;
}
//=================================================
// Commands Allowed Methods
//=================================================
/*----- PROTECTED REGION ID(Ionpump::IonpumpStateAllowed.AdditionalMethods) ENABLED START -----*/
/* clang-format on */
// Additional Methods
/* clang-format off */
/*----- PROTECTED REGION END -----*/ // Ionpump::IonpumpStateAllowed.AdditionalMethods
} // End of namespace