diff --git a/pom.xml b/pom.xml index 0f5a8875426ebb311af56b699990616e49dbc0d8..49f5ee8afdb8853cfbacd444d1b82fb5ec9ee9e6 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 8c314f82bcfdfdefe05e410cac323c5ef8fa1378..3c185e0384660766afcd0b7d49ebb064074eb2d1 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 4fff7cdf8146af35b5f569350ab0b0c346b81c65..760e39c1cff436f8f6d3a72b07450a13b91d3048 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); }