Skip to content
Snippets Groups Projects

develop -> main

2 files
+ 56
33
Compare changes
  • Side-by-side
  • Inline

Files

+ 38
31
@@ -671,6 +671,7 @@ void SingleShotAO::get_device_property()
dev_prop.push_back(Tango::DbDatum("EnableRamps"));
dev_prop.push_back(Tango::DbDatum("OutputMemorizedChannelsAtInit"));
// Call database and extract values
//--------------------------------------------
if (Tango::Util::instance()->_UseDb==true)
@@ -689,23 +690,31 @@ void SingleShotAO::get_device_property()
else {
// Try to initialize BoardNum from default device value
def_prop = ds_class->get_default_device_property(dev_prop[i].name);
if (def_prop.is_empty()==false) def_prop >> boardNum;
if (def_prop.is_empty() == false)
{
def_prop >> boardNum_default;
def_prop >> boardNum;
}
}
// And try to extract BoardNum value from database
if (dev_prop[i].is_empty()==false) dev_prop[i] >> boardNum;
if (dev_prop[i].is_empty() == false) dev_prop[i] >> boardNum;
INFO_STREAM << "Raw BoardNum parsed: " << boardNum << endl;
//- <BoardType> -----------------------
// Try to initialize BoardType from class property
cl_prop = ds_class->get_class_property(dev_prop[++i].name);
if (cl_prop.is_empty()==false) cl_prop >> boardType;
if (cl_prop.is_empty() == false) cl_prop >> boardType;
else {
// Try to initialize BoardType from default device value
def_prop = ds_class->get_default_device_property(dev_prop[i].name);
if (def_prop.is_empty()==false) def_prop >> boardType;
if (def_prop.is_empty() == false)
{
def_prop >> boardType_default;
def_prop >> boardType;
}
}
// And try to extract BoardType value from database
if (dev_prop[i].is_empty()==false) dev_prop[i] >> boardType;
if (dev_prop[i].is_empty() == false) dev_prop[i] >> boardType;
INFO_STREAM << "Raw BoardType parsed: " << boardType << endl;
//- <EnableRamps> -----------------------
@@ -715,7 +724,11 @@ void SingleShotAO::get_device_property()
else {
// Try to initialize EnableRamps from default device value
def_prop = ds_class->get_default_device_property(dev_prop[i].name);
if (def_prop.is_empty() == false) def_prop >> enableRamps;
if (def_prop.is_empty() == false)
{
def_prop >> enableRamps_default;
def_prop >> enableRamps;
}
}
// And try to extract EnableRamps value from database
if (dev_prop[i].is_empty() == false) dev_prop[i] >> enableRamps;
@@ -728,40 +741,38 @@ void SingleShotAO::get_device_property()
else {
// Try to initialize OutputMemorizedChannelsAtInit from default device value
def_prop = ds_class->get_default_device_property(dev_prop[i].name);
if (def_prop.is_empty() == false) def_prop >> outputMemorizedChannelsAtInit;
if (def_prop.is_empty() == false)
{
def_prop >> outputMemorizedChannelsAtInit_default;
def_prop >> outputMemorizedChannelsAtInit;
}
}
// And try to extract OutputMemorizedChannelsAtInit value from database
if (dev_prop[i].is_empty() == false) dev_prop[i] >> outputMemorizedChannelsAtInit;
INFO_STREAM << "OutputMemorizedChannelsAtInit parsed: " << (outputMemorizedChannelsAtInit ? "true" : "false") << endl;
// Create properties if empty and set default values
//--------------------------------------------
DEBUG_STREAM << "Creating properties if empty" << endl;
// boardNum, boardType, enableRamps and outputMemorizedChannelsAtInit variables
// contain the default values at this point if the properties are not set in the database.
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, boardNum, "BoardNum");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, boardType, "BoardType");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, enableRamps, "EnableRamps");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, outputMemorizedChannelsAtInit, "OutputMemorizedChannelsAtInit");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, boardNum_default, "BoardNum");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, boardType_default, "BoardType");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, enableRamps_default, "EnableRamps");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, outputMemorizedChannelsAtInit_default, "OutputMemorizedChannelsAtInit");
// Check critical properties being valid
//--------------------------------------------
DEBUG_STREAM << "Checking if critical properties are valid:" << endl;
critical_properties_missing = false;
yat::OSStream errorMessages;
errorMessages << "\nCritical properties are missing or invalid:\n" << endl;
errorMessages << "Critical properties are missing or invalid:" << endl;
//- <BoardNum> -----------------------
// Case 1 (error): boardNum is set to the default value in the database
// (compare the current value with the default value)
Tango::DbDatum &boardNumDatum = Tango::DbDatum("BoardNum");
std::string defaultBoardNum_str;
def_prop = ds_class->get_default_device_property(boardNumDatum.name);
if (def_prop.is_empty() == false) def_prop >> defaultBoardNum_str;
Tango::DevShort defaultBoardNum = atoi(defaultBoardNum_str.c_str());
if (boardNum == defaultBoardNum)
{
errorMessages << "Device property <BoardNum> is not set (default value " << defaultBoardNum << " needs to be replaced)" << endl;
if (boardNum == boardNum_default)
{
errorMessages << "Device property <BoardNum> is not set (default value " << boardNum_default << " needs to be replaced)" << endl;
critical_properties_missing = true;
}
// Case 2 (error): boardNum is set to a value outside the valid range
@@ -779,14 +790,9 @@ void SingleShotAO::get_device_property()
//- <BoardType> -----------------------
// Case 1 (error): boardType is set to the default value in the database
// (compare the current value with the default value)
Tango::DbDatum &boardTypeDatum = Tango::DbDatum("BoardType");
std::string defaultBoardType;
def_prop = ds_class->get_default_device_property(boardTypeDatum.name);
if (def_prop.is_empty() == false) def_prop >> defaultBoardType;
if (boardType == defaultBoardType)
{
errorMessages << "Device property <BoardType> is not set (default value " << defaultBoardType << " needs to be replaced)" << endl;
if (boardType == boardType_default)
{
errorMessages << "Device property <BoardType> is not set (default value " << boardType_default << " needs to be replaced)" << endl;
critical_properties_missing = true;
}
// Case 2 (ok): boardType is set to a valid
@@ -811,6 +817,7 @@ void SingleShotAO::get_device_property()
critical_properties_missing = true;
}
// If any critical property is missing or invalid, throw an exception
if (critical_properties_missing)
{
Loading