From 30de89cab4420eff88b6be2ce686f8786f5f53f1 Mon Sep 17 00:00:00 2001
From: Sonia Minolli <sonia.minolli@synchrotron-soleil.fr>
Date: Tue, 26 May 2015 08:38:41 +0000
Subject: [PATCH] Created tag release_2_3_4.

---
 pom.xml            |  2 +-
 src/AIManager.cpp  | 32 ++++++++++++++++++++++++++++++--
 src/NexusManager.h |  1 +
 3 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/pom.xml b/pom.xml
index 0f5a887..49f5ee8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
 
    <groupId>fr.soleil.device</groupId>
    <artifactId>AIControllerV2-${aol}-${mode}</artifactId>
-   <version>2.3.4-SNAPSHOT</version>
+   <version>2.3.4</version>
 
    <packaging>nar</packaging>
    <name>AIControllerV2</name>
diff --git a/src/AIManager.cpp b/src/AIManager.cpp
index 8c314f8..3c185e0 100644
--- a/src/AIManager.cpp
+++ b/src/AIManager.cpp
@@ -891,7 +891,7 @@ void AIManager::setSamplingRate(double rate)
       this->m_currentAcquisition->stopAcquisition();
       restart_acquisition = true;
 
-      // sleep a while for history & nexus finalization
+      // sleep a while for history finalization
       yat::Thread::sleep(500);
     }
     catch (Tango::DevFailed & df)
@@ -965,6 +965,20 @@ void AIManager::setSamplingRate(double rate)
 
     try
     {
+      // wait for nexus finalization before restarting acquisition
+      if (this->m_currentAcqParam.nexusFileGeneration)
+      {
+        while(1)
+        {
+          Tango::DevState nx_state = this->m_currentAcquisition->getNexusState();
+          if (nx_state != Tango::RUNNING)
+          {
+            break;
+          }
+          yat::Thread::sleep(50);
+        }
+      }
+
       this->m_currentAcquisition->startAcquisition();
     }
     catch (Tango::DevFailed & df)
@@ -1006,7 +1020,7 @@ void AIManager::setIntegrationTime(double it)
       this->m_currentAcquisition->stopAcquisition();
       restart_acquisition = true;
 
-      // sleep a while for history & nexus finalization
+      // sleep a while for history finalization
       yat::Thread::sleep(500);
     }
     catch (Tango::DevFailed & df)
@@ -1089,6 +1103,20 @@ void AIManager::setIntegrationTime(double it)
 
     try
     {
+      // wait for nexus finalization before restarting acquisition
+      if (this->m_currentAcqParam.nexusFileGeneration)
+      {
+        while(1)
+        {
+          Tango::DevState nx_state = this->m_currentAcquisition->getNexusState();
+          if (nx_state != Tango::RUNNING)
+          {
+            break;
+          }
+          yat::Thread::sleep(50);
+        }
+      }
+
       this->m_currentAcquisition->startAcquisition();
     }
     catch (Tango::DevFailed & df)
diff --git a/src/NexusManager.h b/src/NexusManager.h
index 4fff7cd..760e39c 100644
--- a/src/NexusManager.h
+++ b/src/NexusManager.h
@@ -171,6 +171,7 @@ public:
   //- Gets Nexus storage state: if true, storage in progress
   bool getNexusStorageState()
   {
+    yat::AutoMutex<> guard(this->m_finalizeNxLock);
     return !(this->m_finalizeDone);
   }
 
-- 
GitLab