Newer
Older
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
Tango::DbDatum svn_tag("svn_tag");
svn_tag << strtag;
data.push_back(svn_tag);
}
}
// Get URL location
string httpServ(HttpServer);
if (httpServ.length()>0)
{
Tango::DbDatum db_doc_url("doc_url");
db_doc_url << httpServ;
data.push_back(db_doc_url);
}
// 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 : DataImporterClass::device_factory()
* Description : Create the device object(s)
* and store them in the device list
*/
//--------------------------------------------------------
void DataImporterClass::device_factory(const Tango::DevVarStringArray *devlist_ptr)
{
/*----- PROTECTED REGION ID(DataImporterClass::device_factory_before) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // DataImporterClass::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 DataImporter(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
DataImporter *dev = static_cast<DataImporter *>(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(DataImporterClass::device_factory_after) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // DataImporterClass::device_factory_after
}
//--------------------------------------------------------
/**
* Method : DataImporterClass::attribute_factory()
* Description : Create the attribute object(s)
* and store them in the attribute list
*/
//--------------------------------------------------------
void DataImporterClass::attribute_factory(vector<Tango::Attr *> &att_list)
{
/*----- PROTECTED REGION ID(DataImporterClass::attribute_factory_before) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // DataImporterClass::attribute_factory_before
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
// Attribute : RegularFileCounter
RegularFileCounterAttrib *regularfilecounter = new RegularFileCounterAttrib();
Tango::UserDefaultAttrProp regularfilecounter_prop;
// description not set for RegularFileCounter
// label not set for RegularFileCounter
// unit not set for RegularFileCounter
// standard_unit not set for RegularFileCounter
// display_unit not set for RegularFileCounter
// format not set for RegularFileCounter
// max_value not set for RegularFileCounter
// min_value not set for RegularFileCounter
// max_alarm not set for RegularFileCounter
// min_alarm not set for RegularFileCounter
// max_warning not set for RegularFileCounter
// min_warning not set for RegularFileCounter
// delta_t not set for RegularFileCounter
// delta_val not set for RegularFileCounter
regularfilecounter->set_default_properties(regularfilecounter_prop);
// Not Polled
regularfilecounter->set_disp_level(Tango::OPERATOR);
// Not Memorized
att_list.push_back(regularfilecounter);
// Attribute : FailedFileCounter
FailedFileCounterAttrib *failedfilecounter = new FailedFileCounterAttrib();
Tango::UserDefaultAttrProp failedfilecounter_prop;
// description not set for FailedFileCounter
// label not set for FailedFileCounter
// unit not set for FailedFileCounter
// standard_unit not set for FailedFileCounter
// display_unit not set for FailedFileCounter
// format not set for FailedFileCounter
// max_value not set for FailedFileCounter
// min_value not set for FailedFileCounter
// max_alarm not set for FailedFileCounter
// min_alarm not set for FailedFileCounter
// max_warning not set for FailedFileCounter
// min_warning not set for FailedFileCounter
// delta_t not set for FailedFileCounter
// delta_val not set for FailedFileCounter
failedfilecounter->set_default_properties(failedfilecounter_prop);
// Not Polled
failedfilecounter->set_disp_level(Tango::OPERATOR);
// Not Memorized
att_list.push_back(failedfilecounter);
// Create a list of static attributes
create_static_attribute_list(get_class_attr()->get_attr_list());
/*----- PROTECTED REGION ID(DataImporterClass::attribute_factory_after) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // DataImporterClass::attribute_factory_after
}
//--------------------------------------------------------
/**
* Method : DataImporterClass::command_factory()
* Description : Create the command object(s)
* and store them in the command list
*/
//--------------------------------------------------------
void DataImporterClass::command_factory()
{
/*----- PROTECTED REGION ID(DataImporterClass::command_factory_before) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // DataImporterClass::command_factory_before
// Command On
OnClass *pOnCmd =
new OnClass("On",
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR);
command_list.push_back(pOnCmd);
// Command Off
OffClass *pOffCmd =
new OffClass("Off",
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR);
command_list.push_back(pOffCmd);
// Command ResetCounter
ResetCounterClass *pResetCounterCmd =
new ResetCounterClass("ResetCounter",
Tango::DEV_VOID, Tango::DEV_VOID,
"",
"",
Tango::OPERATOR);
command_list.push_back(pResetCounterCmd);
/*----- PROTECTED REGION ID(DataImporterClass::command_factory_after) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // DataImporterClass::command_factory_after
}
//===================================================================
// Dynamic attributes related methods
//===================================================================
//--------------------------------------------------------
/**
* method : DataImporterClass::create_static_attribute_list
* description : Create the a list of static attributes
*
* @param att_list the ceated attribute list
*/
//--------------------------------------------------------
void DataImporterClass::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(DataImporterClass::create_static_att_list) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // DataImporterClass::create_static_att_list
}
//--------------------------------------------------------
/**
* method : DataImporterClass::erase_dynamic_attributes
* description : delete the dynamic attributes if any.
*
* @param devlist_ptr the device list pointer
* @param list of all attributes
*/
//--------------------------------------------------------
void DataImporterClass::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());
DataImporter *dev = static_cast<DataImporter *> (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(DataImporterClass::erase_dynamic_attributes) ENABLED START -----*/
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
/*----- PROTECTED REGION END -----*/ // DataImporterClass::erase_dynamic_attributes
}
//--------------------------------------------------------
/**
* Method : DataImporterClass::get_attr_by_name()
* Description : returns Tango::Attr * object found by name
*/
//--------------------------------------------------------
Tango::Attr *DataImporterClass::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(DataImporterClass::Additional Methods) ENABLED START -----*/
/*----- PROTECTED REGION END -----*/ // DataImporterClass::Additional Methods
} // namespace