From 887b082e086775bf8d4150478b8cdaa78cd76c15 Mon Sep 17 00:00:00 2001
From: System User <boissy@flyscan-el6-1.ica.synchrotron-soleil.fr>
Date: Mon, 1 Aug 2022 10:51:18 +0200
Subject: [PATCH] [ICATHALES-6] Renommage du error_message et modification des
 throw

---
 src/ContinuousAO.cpp | 67 +++++++++++++++++++-------------------------
 src/ContinuousAO.h   |  7 ++---
 2 files changed, 31 insertions(+), 43 deletions(-)

diff --git a/src/ContinuousAO.cpp b/src/ContinuousAO.cpp
index 4148d05..2bda9f1 100755
--- a/src/ContinuousAO.cpp
+++ b/src/ContinuousAO.cpp
@@ -167,7 +167,7 @@ void ContinuousAO::init_device()
   ch5 = 0;
   ch6 = 0;
   ch7 = 0;
-  error_message = "";
+  m_error_message = "An error has occured";
   
   // Initialise variables to default values
   //--------------------------------------------
@@ -179,12 +179,8 @@ void ContinuousAO::init_device()
   //- 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*)("ContinuousAO::init_device")
-      );
+	raise_error("ContinuousAO::init_device\nout of memory error while initializing ADLinkContinuousAO");
+	return;
   }
   
   asl::ContinuousAOConfig config;
@@ -198,13 +194,8 @@ void ContinuousAO::init_device()
   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*)("ContinuousAO::init_device")
-      );
+	raise_error("ContinuousAO::init_device\nout of memory error while initializing channel's datas");
+	return;
   }
   
   
@@ -540,33 +531,30 @@ void ContinuousAO::init_device()
   
   DEBUG_STREAM<<"ContinuousAO::init_device : init acq"<<std::endl;
   try{
-	  _ASL_TRY //_ACTION
-		(
+	_ASL_TRY(
 		ao->init(adl::DAQ2502, boardNum),
 		"init", 
-		"ContinuousAO::init_device",
-		set_internal_state()
-		);
+		"ContinuousAO::init_device"
+	);
 	
-  
-	  DEBUG_STREAM<<"ContinuousAO::init_device : config acq"<<std::endl;
-	  try{
-	  _ASL_TRY //_ACTION
-		(
-		ao->configure(config),
-		"configure", 
-		"ContinuousAO::init_device",
-		set_internal_state()
+	DEBUG_STREAM<<"ContinuousAO::init_device : config acq"<<std::endl;
+	try{
+		_ASL_TRY(
+			ao->configure(config),
+			"configure", 
+			"ContinuousAO::init_device"
 		);	 
-	  }
-	  catch (...)
-	  {
-		error_message = "Error while configuring driver";
-	  }
+	}
+	catch (...)
+	{
+	  raise_error("ContinuousAO::init_device\nError while configuring driver");
+	  return;
+	}
   }
   catch (...)
   {
-	error_message = "Error while init driver";
+	raise_error("ContinuousAO::init_device\nError while initializing the driver");
+	return;
   }
 
   //ao->configure(config);	
@@ -1428,10 +1416,7 @@ void  ContinuousAO::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:
@@ -1472,4 +1457,10 @@ void ContinuousAO::save_waveform(double* waveform, string wfm_channel)
     "ContinuousAO::save_waveform",
     );
 }
+
+void ContinuousAO::raise_error(std::string p_error_message)
+{
+   m_error_message = p_error_message;
+   set_state(Tango::FAULT);
+}
 }	//	namespace
diff --git a/src/ContinuousAO.h b/src/ContinuousAO.h
index 71fd195..5829b23 100755
--- a/src/ContinuousAO.h
+++ b/src/ContinuousAO.h
@@ -326,6 +326,7 @@ public :
    ADLinkContinuousAO* ao;
   // asl::ContinuousAOConfig* config;
    void set_internal_state(void);
+   void raise_error(std::string p_error_message);
    // save a channel waveform in the database 
    void ContinuousAO::save_waveform(double* waveform, string wfm_channel);
    double* ch0;
@@ -338,11 +339,7 @@ public :
    double* ch7;
    double err_ctr;
    short use_fifo;
-   std::string error_message;
-
-
-
-
+   std::string m_error_message;
 
 protected :	
 	//	Add your own data members here
-- 
GitLab