Skip to content
Snippets Groups Projects

[ICATHALES-219] - Device initialization should not crash if trouble with driver

2 files
+ 42
44
Compare changes
  • Side-by-side
  • Inline

Files

+ 40
43
@@ -200,7 +200,7 @@ void RetrigAO::init_device()
ch5 = 0;
ch6 = 0;
ch7 = 0;
_error_message = "";
m_error_message = "An error has occured";
// Initialise variables to default values
//--------------------------------------------
@@ -1563,6 +1563,12 @@ void RetrigAO::stop_with_zero_forcing()
init_board();
}
void RetrigAO::raise_error(std::string p_error_message)
{
m_error_message = p_error_message;
set_state(Tango::FAULT);
}
//+------------------------------------------------------------------
/**
* method: RetrigAI::init_board
@@ -1578,12 +1584,8 @@ void RetrigAO::init_board(void)
//- check memory allocation
if (ao == 0)
{
set_internal_state();
Tango::Except::throw_exception(
(const char*)("OUT_OF_MEMORY"),
(const char*)("out of memory error"),
(const char*)("RetrigAO::init_device")
);
raise_error("RetrigAO::init_board\nout of memory error while initializing ADLinkContinuousAO");
return;
}
asl::ContinuousAOConfig _config;
@@ -1597,13 +1599,8 @@ void RetrigAO::init_board(void)
ch7 = new double[bufferDepth];
if(ch0 == 0 || ch1 == 0 || ch2 == 0 || ch3 == 0 || ch4 == 0 || ch5 == 0 ||ch6 == 0 || ch7 == 0)
{
set_internal_state();
delete_device();
Tango::Except::throw_exception(
(const char*)("OUT_OF_MEMORY"),
(const char*)("out of memory error"),
(const char*)("RetrigAO::init_device")
);
raise_error("RetrigAO::init_device\nout of memory error while initializing channel's datas");
return;
}
@@ -2021,35 +2018,38 @@ void RetrigAO::init_board(void)
DEBUG_STREAM<<"RetrigAO::init_device : init acq"<<std::endl;
try{
_ASL_TRY_ACTION
(
ao->init(adl::DAQ2502, boardNum),
"init",
"RetrigAO::init_device",
set_internal_state()
);
config = _config;
/*DEBUG_STREAM<<"RetrigAO::init_device : config acq"<<std::endl;
try
{
_ASL_TRY_ACTION
(
ao->configure(_config),
"configure",
"RetrigAO::init_device",
set_internal_state()
);
}
catch (...)
{
_error_message = "Error while configurating drivers";
}
*/
(
ao->init(adl::DAQ2502, boardNum),
"init",
"RetrigAO::init_device",
set_internal_state()
);
config = _config;
/*DEBUG_STREAM<<"RetrigAO::init_device : config acq"<<std::endl;
try
{
_ASL_TRY_ACTION
(
ao->configure(_config),
"configure",
"RetrigAO::init_device",
set_internal_state()
);
}
catch (...)
{
raise_error("RetrigAO::init_device\nError while configurating drivers");
return;
}
*/
}
catch (...)
{
_error_message = "Error while initializing drivers";
raise_error("RetrigAO::init_device\nError while initializing drivers");
return;
}
}
//+------------------------------------------------------------------
@@ -2245,10 +2245,7 @@ void RetrigAO::set_internal_state(void)
break;
case asl::ContinuousAO::FAULT:
set_state(Tango::FAULT);
if (_error_message == "")
set_status("An error has occured");
else
set_status(_error_message);
set_status(m_error_message);
break;
case asl::ContinuousAO::UNKNOWN:
default:
Loading