Skip to content
Snippets Groups Projects

[ICATHALES-6] - Device do not start when driver not availible

2 files
+ 31
43
Compare changes
  • Side-by-side
  • Inline

Files

+ 29
38
@@ -167,7 +167,7 @@ void ContinuousAO::init_device()
@@ -167,7 +167,7 @@ void ContinuousAO::init_device()
ch5 = 0;
ch5 = 0;
ch6 = 0;
ch6 = 0;
ch7 = 0;
ch7 = 0;
error_message = "";
m_error_message = "An error has occured";
// Initialise variables to default values
// Initialise variables to default values
//--------------------------------------------
//--------------------------------------------
@@ -179,12 +179,8 @@ void ContinuousAO::init_device()
@@ -179,12 +179,8 @@ void ContinuousAO::init_device()
//- check memory allocation
//- check memory allocation
if (ao == 0)
if (ao == 0)
{
{
set_internal_state();
raise_error("ContinuousAO::init_device\nout of memory error while initializing ADLinkContinuousAO");
Tango::Except::throw_exception(
return;
(const char*)("OUT_OF_MEMORY"),
(const char*)("out of memory error"),
(const char*)("ContinuousAO::init_device")
);
}
}
asl::ContinuousAOConfig config;
asl::ContinuousAOConfig config;
@@ -198,13 +194,8 @@ void ContinuousAO::init_device()
@@ -198,13 +194,8 @@ void ContinuousAO::init_device()
ch7 = new double[bufferDepth];
ch7 = new double[bufferDepth];
if(ch0 == 0 || ch1 == 0 || ch2 == 0 || ch3 == 0 || ch4 == 0 || ch5 == 0 ||ch6 == 0 || ch7 == 0)
if(ch0 == 0 || ch1 == 0 || ch2 == 0 || ch3 == 0 || ch4 == 0 || ch5 == 0 ||ch6 == 0 || ch7 == 0)
{
{
set_internal_state();
raise_error("ContinuousAO::init_device\nout of memory error while initializing channel's datas");
delete_device();
return;
Tango::Except::throw_exception(
(const char*)("OUT_OF_MEMORY"),
(const char*)("out of memory error"),
(const char*)("ContinuousAO::init_device")
);
}
}
@@ -540,33 +531,30 @@ void ContinuousAO::init_device()
@@ -540,33 +531,30 @@ void ContinuousAO::init_device()
DEBUG_STREAM<<"ContinuousAO::init_device : init acq"<<std::endl;
DEBUG_STREAM<<"ContinuousAO::init_device : init acq"<<std::endl;
try{
try{
_ASL_TRY //_ACTION
_ASL_TRY(
(
ao->init(adl::DAQ2502, boardNum),
ao->init(adl::DAQ2502, boardNum),
"init",
"init",
"ContinuousAO::init_device",
"ContinuousAO::init_device"
set_internal_state()
);
);
DEBUG_STREAM<<"ContinuousAO::init_device : config acq"<<std::endl;
DEBUG_STREAM<<"ContinuousAO::init_device : config acq"<<std::endl;
try{
try{
_ASL_TRY(
_ASL_TRY //_ACTION
ao->configure(config),
(
"configure",
ao->configure(config),
"ContinuousAO::init_device"
"configure",
"ContinuousAO::init_device",
set_internal_state()
);
);
}
}
catch (...)
catch (...)
{
{
error_message = "Error while configuring driver";
raise_error("ContinuousAO::init_device\nError while configuring driver");
}
return;
 
}
}
}
catch (...)
catch (...)
{
{
error_message = "Error while init driver";
raise_error("ContinuousAO::init_device\nError while initializing the driver");
 
return;
}
}
//ao->configure(config);
//ao->configure(config);
@@ -1428,10 +1416,7 @@ void ContinuousAO::set_internal_state(void)
@@ -1428,10 +1416,7 @@ void ContinuousAO::set_internal_state(void)
break;
break;
case asl::ContinuousAO::FAULT:
case asl::ContinuousAO::FAULT:
set_state(Tango::FAULT);
set_state(Tango::FAULT);
if (error_message == "")
set_status(m_error_message);
set_status("An error has occured");
else
set_status(error_message);
break;
break;
case asl::ContinuousAO::UNKNOWN:
case asl::ContinuousAO::UNKNOWN:
default:
default:
@@ -1472,4 +1457,10 @@ void ContinuousAO::save_waveform(double* waveform, string wfm_channel)
@@ -1472,4 +1457,10 @@ void ContinuousAO::save_waveform(double* waveform, string wfm_channel)
"ContinuousAO::save_waveform",
"ContinuousAO::save_waveform",
);
);
}
}
 
 
void ContinuousAO::raise_error(std::string p_error_message)
 
{
 
m_error_message = p_error_message;
 
set_state(Tango::FAULT);
 
}
} // namespace
} // namespace
Loading