Skip to content
Snippets Groups Projects
Commit e9bc2d69 authored by Alexandre MALFREYT's avatar Alexandre MALFREYT
Browse files

refactor: improve clarity by removing redundancy in get_device_property() for...

refactor: improve clarity by removing redundancy in get_device_property() for default properties values
parent ca7a47a1
No related branches found
No related tags found
1 merge request!4develop -> main
...@@ -671,6 +671,7 @@ void SingleShotAO::get_device_property() ...@@ -671,6 +671,7 @@ void SingleShotAO::get_device_property()
dev_prop.push_back(Tango::DbDatum("EnableRamps")); dev_prop.push_back(Tango::DbDatum("EnableRamps"));
dev_prop.push_back(Tango::DbDatum("OutputMemorizedChannelsAtInit")); dev_prop.push_back(Tango::DbDatum("OutputMemorizedChannelsAtInit"));
// Call database and extract values // Call database and extract values
//-------------------------------------------- //--------------------------------------------
if (Tango::Util::instance()->_UseDb==true) if (Tango::Util::instance()->_UseDb==true)
...@@ -689,7 +690,11 @@ void SingleShotAO::get_device_property() ...@@ -689,7 +690,11 @@ void SingleShotAO::get_device_property()
else { else {
// Try to initialize BoardNum from default device value // Try to initialize BoardNum from default device value
def_prop = ds_class->get_default_device_property(dev_prop[i].name); 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 // 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;
...@@ -702,7 +707,11 @@ void SingleShotAO::get_device_property() ...@@ -702,7 +707,11 @@ void SingleShotAO::get_device_property()
else { else {
// Try to initialize BoardType from default device value // Try to initialize BoardType from default device value
def_prop = ds_class->get_default_device_property(dev_prop[i].name); 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 // 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;
...@@ -715,7 +724,11 @@ void SingleShotAO::get_device_property() ...@@ -715,7 +724,11 @@ void SingleShotAO::get_device_property()
else { else {
// Try to initialize EnableRamps from default device value // Try to initialize EnableRamps from default device value
def_prop = ds_class->get_default_device_property(dev_prop[i].name); 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 // And try to extract EnableRamps value from database
if (dev_prop[i].is_empty() == false) dev_prop[i] >> enableRamps; if (dev_prop[i].is_empty() == false) dev_prop[i] >> enableRamps;
...@@ -728,40 +741,38 @@ void SingleShotAO::get_device_property() ...@@ -728,40 +741,38 @@ void SingleShotAO::get_device_property()
else { else {
// Try to initialize OutputMemorizedChannelsAtInit from default device value // Try to initialize OutputMemorizedChannelsAtInit from default device value
def_prop = ds_class->get_default_device_property(dev_prop[i].name); 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 // And try to extract OutputMemorizedChannelsAtInit value from database
if (dev_prop[i].is_empty() == false) dev_prop[i] >> outputMemorizedChannelsAtInit; if (dev_prop[i].is_empty() == false) dev_prop[i] >> outputMemorizedChannelsAtInit;
INFO_STREAM << "OutputMemorizedChannelsAtInit parsed: " << (outputMemorizedChannelsAtInit ? "true" : "false") << endl; INFO_STREAM << "OutputMemorizedChannelsAtInit parsed: " << (outputMemorizedChannelsAtInit ? "true" : "false") << endl;
// Create properties if empty and set default values // Create properties if empty and set default values
//-------------------------------------------- //--------------------------------------------
DEBUG_STREAM << "Creating properties if empty" << endl; DEBUG_STREAM << "Creating properties if empty" << endl;
// boardNum, boardType, enableRamps and outputMemorizedChannelsAtInit variables yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, boardNum_default, "BoardNum");
// 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, boardType_default, "BoardType");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, boardNum, "BoardNum"); yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, enableRamps_default, "EnableRamps");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, boardType, "BoardType"); yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, outputMemorizedChannelsAtInit_default, "OutputMemorizedChannelsAtInit");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, enableRamps, "EnableRamps");
yat4tango::PropertyHelper::create_property_if_empty(this, dev_prop, outputMemorizedChannelsAtInit, "OutputMemorizedChannelsAtInit");
// Check critical properties being valid // Check critical properties being valid
//-------------------------------------------- //--------------------------------------------
DEBUG_STREAM << "Checking if critical properties are valid:" << endl; DEBUG_STREAM << "Checking if critical properties are valid:" << endl;
critical_properties_missing = false; critical_properties_missing = false;
yat::OSStream errorMessages; yat::OSStream errorMessages;
errorMessages << "\nCritical properties are missing or invalid:\n" << endl; errorMessages << "Critical properties are missing or invalid:" << endl;
//- <BoardNum> ----------------------- //- <BoardNum> -----------------------
// Case 1 (error): boardNum is set to the default value in the database // Case 1 (error): boardNum is set to the default value in the database
// (compare the current value with the default value) if (boardNum == boardNum_default)
Tango::DbDatum &boardNumDatum = Tango::DbDatum("BoardNum"); {
std::string defaultBoardNum_str; errorMessages << "Device property <BoardNum> is not set (default value " << boardNum_default << " needs to be replaced)" << endl;
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;
critical_properties_missing = true; critical_properties_missing = true;
} }
// Case 2 (error): boardNum is set to a value outside the valid range // Case 2 (error): boardNum is set to a value outside the valid range
...@@ -779,14 +790,9 @@ void SingleShotAO::get_device_property() ...@@ -779,14 +790,9 @@ void SingleShotAO::get_device_property()
//- <BoardType> ----------------------- //- <BoardType> -----------------------
// Case 1 (error): boardType is set to the default value in the database // Case 1 (error): boardType is set to the default value in the database
// (compare the current value with the default value) if (boardType == boardType_default)
Tango::DbDatum &boardTypeDatum = Tango::DbDatum("BoardType"); {
std::string defaultBoardType; errorMessages << "Device property <BoardType> is not set (default value " << boardType_default << " needs to be replaced)" << endl;
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;
critical_properties_missing = true; critical_properties_missing = true;
} }
// Case 2 (ok): boardType is set to a valid // Case 2 (ok): boardType is set to a valid
...@@ -811,6 +817,7 @@ void SingleShotAO::get_device_property() ...@@ -811,6 +817,7 @@ void SingleShotAO::get_device_property()
critical_properties_missing = true; critical_properties_missing = true;
} }
// If any critical property is missing or invalid, throw an exception // If any critical property is missing or invalid, throw an exception
if (critical_properties_missing) if (critical_properties_missing)
{ {
......
...@@ -121,10 +121,26 @@ public : ...@@ -121,10 +121,26 @@ public :
//@} //@}
/** /**
* @name Device properties * @name Device properties default values
* Device property member data. * Device properties default values.
*/ */
//@{ //@{
/**
* Default value for boardNum property
*/
Tango::DevShort boardNum_default;
/**
* Default value for boardType property
*/
string boardType_default;
/**
* Default value for enableRamps property
*/
Tango::DevBoolean enableRamps_default;
/**
* Default value for outputMemorizedChannelsAtInit property
*/
Tango::DevBoolean outputMemorizedChannelsAtInit_default;
//@} //@}
/**@name Constructors /**@name Constructors
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment