Index: trunk/lib/FlairCore/src/Buffer.cpp
===================================================================
--- trunk/lib/FlairCore/src/Buffer.cpp	(revision 121)
+++ 	(revision )
@@ -1,36 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-//  created:    2016/12/22
-//  filename:   Buffer.cpp
-//
-//  author:     Guillaume Sanahuja
-//              Copyright Heudiasyc UMR UTC/CNRS 7253
-//
-//  version:    $Id: $
-//
-//  purpose:    Class defining a buffer, not for real time use
-//
-/*********************************************************************/
-
-#include "Buffer.h"
-
-using std::string;
-
-namespace flair {
-namespace core {
-
-Buffer::Buffer(const Object *parent, string name)
-    : io_data(parent, name, 1), dataType() {
- 
-}
-
-Buffer::~Buffer() {
- 
-}
-
-void Buffer::CopyDatas(char *dst) const { Warn("non implementé\n"); }
-
-} // end namespace core
-} // end namespace flair
Index: trunk/lib/FlairCore/src/Buffer.h
===================================================================
--- trunk/lib/FlairCore/src/Buffer.h	(revision 121)
+++ 	(revision )
@@ -1,79 +1,0 @@
-// %flair:license{
-// This file is part of the Flair framework distributed under the
-// CECILL-C License, Version 1.0.
-// %flair:license}
-/*!
- * \file Buffer.h
- * \brief Class defining a buffer, not for real time use
- * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
- * \date 2016/12/22
- * \version 4.0
- */
-
-#ifndef BUFFER_H
-#define BUFFER_H
-
-#include <io_data.h>
-#include <stdint.h>
-
-namespace flair {
-namespace core {
-/*! \class Buffer
-*
-* \brief Class defining a buffer, not for real time use
-*
-*
-*/
-class Buffer : public io_data {
-public:
-  class Type : public DataType {
-  public:
-    Type() {}
-
-    size_t GetSize() const {
-    }
-		
-    std::string GetDescription() const { return "buffer"; };
-
-  private:
-  };
-
-  /*!
-  * \brief Constructor
-  *
-  * Construct a buffer.
-  *
-  * \param parent parent
-  * \param name name
-	* 
-  */
-  Buffer(const Object *parent, std::string name = "");
-
-  /*!
-  * \brief Destructor
-  *
-  */
-  ~Buffer();
-
- 
-
-  Type const &GetDataType() const { return dataType; };
-
-private:
-  /*!
-  * \brief Copy datas
-  *
-  * Reimplemented from io_data. \n
-  * See io_data::CopyDatas.
-  *
-  * \param dst destination buffer
-  */
-  void CopyDatas(char *dst) const;
-
-  Type dataType;
-};
-
-} // end namespace core
-} // end namespace flair
-
-#endif // BUFFER_H
Index: trunk/lib/FlairCore/src/FrameworkManager.cpp
===================================================================
--- trunk/lib/FlairCore/src/FrameworkManager.cpp	(revision 121)
+++ trunk/lib/FlairCore/src/FrameworkManager.cpp	(revision 122)
@@ -178,4 +178,8 @@
 }
 
+bool FrameworkManager::IsDeviceLogged(const IODevice *device) const {
+	return pimpl_->IsDeviceLogged(device);
+}
+
 void FrameworkManager::StartLog(void) { pimpl_->StartLog(); }
 
Index: trunk/lib/FlairCore/src/FrameworkManager.h
===================================================================
--- trunk/lib/FlairCore/src/FrameworkManager.h	(revision 121)
+++ trunk/lib/FlairCore/src/FrameworkManager.h	(revision 122)
@@ -121,4 +121,14 @@
   */
   void AddDeviceToLog(IODevice *device);
+	
+	/*!
+  * \brief Is device logged
+  *
+  * Check if AddDeviceToLog was called for an IODevice
+  *
+  * \param device IODevice to check
+  * \return true if AddDeviceToLog was called for this IODevice
+  */
+  bool IsDeviceLogged(const IODevice *device) const;
 
   /*!
Index: trunk/lib/FlairCore/src/FrameworkManager_impl.cpp
===================================================================
--- trunk/lib/FlairCore/src/FrameworkManager_impl.cpp	(revision 121)
+++ trunk/lib/FlairCore/src/FrameworkManager_impl.cpp	(revision 122)
@@ -630,5 +630,6 @@
 
   if (is_logging == false) {
-    if (device->pimpl_->SetToBeLogged()) {
+    if (!device->pimpl_->IsSetToBeLogged()) {
+			device->pimpl_->SetToBeLogged();
       log_desc_t tmp;
       tmp.device = device;
@@ -640,4 +641,8 @@
     Err("impossible while logging\n");
   }
+}
+
+bool FrameworkManager_impl::IsDeviceLogged(const IODevice *device) const {
+	return device->pimpl_->IsSetToBeLogged();
 }
 
Index: trunk/lib/FlairCore/src/IODevice_impl.cpp
===================================================================
--- trunk/lib/FlairCore/src/IODevice_impl.cpp	(revision 121)
+++ trunk/lib/FlairCore/src/IODevice_impl.cpp	(revision 122)
@@ -106,16 +106,19 @@
 }
 
-bool IODevice_impl::SetToBeLogged(void) {
+bool IODevice_impl::IsSetToBeLogged(void) const{
+	return tobelogged;
+}
+
+void IODevice_impl::SetToBeLogged(void) {
   if (!tobelogged) {
     tobelogged = true;
-    return true;
   } else {
     self->Warn("already added to log\n");
-    return false;
   }
 }
 
 void IODevice_impl::WriteLogsDescriptors(fstream &desc_file, int *index) {
-  // own descriptor
+  //Printf("WriteLogsDescriptors %s\n",self->ObjectName().c_str());
+	// own descriptor
   for (size_t i = 0; i < datasToLog.size(); i++)
     datasToLog.at(i)->pimpl_->WriteLogDescriptor(desc_file, index);
@@ -127,4 +130,5 @@
   for (size_t i = 0; i < devicesToLog.size(); i++)
     devicesToLog.at(i)->pimpl_->WriteLogsDescriptors(desc_file, index);
+	//Printf("WriteLogsDescriptors %s ok\n",self->ObjectName().c_str());
 }
 
@@ -194,9 +198,9 @@
 
 void IODevice_impl::AppendLog(char **ptr) {
-  // Printf("AppendLog %s %x\n",self->ObjectName().c_str(),*ptr);
+   //Printf("AppendLog %s %x\n",self->ObjectName().c_str(),*ptr);
 
   // copy state to buf
   for (size_t i = 0; i < datasToLog.size(); i++) {
-    // printf("copy\n");
+    // printf("copy %s\n",datasToLog.at(i)->ObjectName().c_str());
     datasToLog.at(i)->CopyDatas(*ptr);
     (*ptr) += datasToLog.at(i)->GetDataType().GetSize();
Index: trunk/lib/FlairCore/src/io_data_impl.cpp
===================================================================
--- trunk/lib/FlairCore/src/io_data_impl.cpp	(revision 121)
+++ trunk/lib/FlairCore/src/io_data_impl.cpp	(revision 122)
@@ -42,4 +42,5 @@
 
 void io_data_impl::WriteLogDescriptor(std::fstream &desc_file, int *index) {
+	if(descriptors.size()==0) self->Warn("AppendLogDescription was not called for this object.\n");
   for (size_t i = 0; i < descriptors.size(); i++) {
     desc_file << (*index)++ << ": " << self->ObjectName() << " - "
Index: trunk/lib/FlairCore/src/unexported/FrameworkManager_impl.h
===================================================================
--- trunk/lib/FlairCore/src/unexported/FrameworkManager_impl.h	(revision 121)
+++ trunk/lib/FlairCore/src/unexported/FrameworkManager_impl.h	(revision 122)
@@ -48,4 +48,5 @@
   void SetupLogger(std::string log_path);
   void AddDeviceToLog(flair::core::IODevice *device);
+	bool IsDeviceLogged(const flair::core::IODevice *device) const;
   void StartLog();
   void StopLog();
Index: trunk/lib/FlairCore/src/unexported/IODevice_impl.h
===================================================================
--- trunk/lib/FlairCore/src/unexported/IODevice_impl.h	(revision 121)
+++ trunk/lib/FlairCore/src/unexported/IODevice_impl.h	(revision 122)
@@ -42,5 +42,6 @@
   void WriteLog(flair::core::Time time);
   void AddDeviceToLog(const flair::core::IODevice *device);
-  bool SetToBeLogged(void); // return true if possible
+  void SetToBeLogged(void); 
+	bool IsSetToBeLogged(void) const;
   void OutputToShMem(bool enabled);
   void WriteToShMem(void);
