Index: trunk/lib/FlairCore/src/Euler.cpp
===================================================================
--- trunk/lib/FlairCore/src/Euler.cpp	(revision 152)
+++ trunk/lib/FlairCore/src/Euler.cpp	(revision 157)
@@ -113,6 +113,7 @@
     rot2 = yaw - angle;
   }
-  if (rot2 < rot1)
-    rot1 = -rot2;
+  
+  if (rot2 < rot1) rot1 = -rot2;
+  
   rot1 = -rot1; // pour avoir rot1=yaw-angle
 
Index: trunk/lib/FlairCore/src/FindArgument.cpp
===================================================================
--- trunk/lib/FlairCore/src/FindArgument.cpp	(revision 157)
+++ trunk/lib/FlairCore/src/FindArgument.cpp	(revision 157)
@@ -0,0 +1,19 @@
+#include "FindArgument.h"
+
+std::string FindArgument(std::string args,std::string arg,bool recquired) {
+	size_t position=args.find (arg);
+	
+	if(position!=std::string::npos) {
+		size_t endPosition=args.find(" ",position);
+		size_t len;
+		if(endPosition!=std::string::npos) {
+			len=endPosition-position-arg.size();
+		} else {
+			len=std::string::npos;
+		}
+		return args.substr(position+arg.size(),len);
+	} else {
+		if(recquired) printf("no %s statement in arguments (%s)\n",arg.c_str(),args.c_str());
+		return "";
+	}
+}
Index: trunk/lib/FlairCore/src/FindArgument.h
===================================================================
--- trunk/lib/FlairCore/src/FindArgument.h	(revision 157)
+++ trunk/lib/FlairCore/src/FindArgument.h	(revision 157)
@@ -0,0 +1,8 @@
+#ifndef FINDARGUMENT
+#define FINDARGUMENT
+
+#include <string>
+
+std::string FindArgument(std::string args,std::string arg,bool recquired);
+
+#endif // FINDARGUMENT
Index: trunk/lib/FlairCore/src/IODevice.cpp
===================================================================
--- trunk/lib/FlairCore/src/IODevice.cpp	(revision 152)
+++ trunk/lib/FlairCore/src/IODevice.cpp	(revision 157)
@@ -64,4 +64,12 @@
 DataType const &IODevice::GetOutputDataType() const { return dummyType; }
 
+void IODevice::SetIsReady(bool status) {
+  pimpl_->SetIsReady(status);
+}
+
+bool IODevice::IsReady(void) const {
+  return pimpl_->IsReady();
+}
+
 } // end namespace core
 } // end namespace flair
Index: trunk/lib/FlairCore/src/IODevice.h
===================================================================
--- trunk/lib/FlairCore/src/IODevice.h	(revision 152)
+++ trunk/lib/FlairCore/src/IODevice.h	(revision 157)
@@ -110,4 +110,14 @@
   */
   void OutputToShMem(bool enabled);
+  
+  /*!
+  * \brief is device ready
+  *
+  * Use it check if a device is ready or not.
+  * See also setIsReady.
+  *
+  * \return true if device is ready
+  */
+  bool IsReady(void) const;
 
   // TODO: these 2 method should be pure virtual
@@ -115,19 +125,29 @@
   virtual DataType const &GetOutputDataType() const;
 
-        protected:
-            /*!
-            * \brief Process the childs of type IODevice, and log if needed
-            *
-            * This method must be called after computing datas;
-            * generally at the end of the reimplemented UpdateFrom or after acquiring datas in case of a sensor. \n
-            * It will call UpdateFrom methods of each child of type IODevice,
-            * and log all datas (this IODevice and its childs)
-            * if logging is enabled (see SetDataToLog(), AddDeviceToLog(),
-            * FrameworkManager::StartLog and FrameworkManager::AddDeviceToLog). \n
-            * If a thread is waiting on this IODevice (see Thread::WaitUpdate), it will be resumed.
-            *
-            * \param data data to process
-            */
-            void ProcessUpdate(io_data* data);
+  protected:
+    /*!
+    * \brief Process the childs of type IODevice, and log if needed
+    *
+    * This method must be called after computing datas;
+    * generally at the end of the reimplemented UpdateFrom or after acquiring datas in case of a sensor. \n
+    * It will call UpdateFrom methods of each child of type IODevice,
+    * and log all datas (this IODevice and its childs)
+    * if logging is enabled (see SetDataToLog(), AddDeviceToLog(),
+    * FrameworkManager::StartLog and FrameworkManager::AddDeviceToLog). \n
+    * If a thread is waiting on this IODevice (see Thread::WaitUpdate), it will be resumed.
+    *
+    * \param data data to process
+    */
+    void ProcessUpdate(io_data* data);
+    
+    /*!
+    * \brief set is ready
+    *
+    * Sets if the device is ready or not. By default the IODevice is not ready.\n
+    * See also isReady.
+    *
+    * \param status status
+    */
+    void SetIsReady(bool status);
 
 private:
Index: trunk/lib/FlairCore/src/IODevice_impl.cpp
===================================================================
--- trunk/lib/FlairCore/src/IODevice_impl.cpp	(revision 152)
+++ trunk/lib/FlairCore/src/IODevice_impl.cpp	(revision 157)
@@ -39,4 +39,5 @@
   tobelogged = false;
   outputtoshm = false;
+  isReady=false;
 }
 
@@ -233,2 +234,10 @@
   return status;
 }
+
+void IODevice_impl::SetIsReady(bool status) {
+  isReady=status;
+}
+
+bool IODevice_impl::IsReady(void) const {
+  return isReady;
+}
Index: trunk/lib/FlairCore/src/ui_com.cpp
===================================================================
--- trunk/lib/FlairCore/src/ui_com.cpp	(revision 152)
+++ trunk/lib/FlairCore/src/ui_com.cpp	(revision 157)
@@ -278,6 +278,5 @@
       if (offset != 3) {
         memcpy(&send_buffer[1], &resume_period, sizeof(uint16_t));
-        // printf("send %i %i %i %x
-        // %x\n",resume_period,offset,sizeof(uint16_t),send_buffer,&send_buffer[1]);
+        // printf("send %i %i %i %x %x\n",resume_period,offset,sizeof(uint16_t),send_buffer,&send_buffer[1]);
         // for(int i=0;i<offset;i++) printf("%x ",send_buffer[i]);
         // printf("\n");
@@ -292,11 +291,11 @@
       }
       send_mutex->ReleaseMutex();
-      // Printf("%i %lld\n",resume_period,GetTime()/1000000);
+      //Printf("%i %lld\n",resume_period,GetTime()/1000000);
     } else {
       send_mutex->ReleaseMutex();
       // rien a faire, suspend
-      // Printf("rien a faire suspend\n");
+      //Printf("rien a faire suspend\n");
       Suspend();
-      // Printf("wake\n");
+      //Printf("wake\n");
       // on planifie la prochaine execution
       Time time = GetTime();
Index: trunk/lib/FlairCore/src/unexported/IODevice_impl.h
===================================================================
--- trunk/lib/FlairCore/src/unexported/IODevice_impl.h	(revision 152)
+++ trunk/lib/FlairCore/src/unexported/IODevice_impl.h	(revision 157)
@@ -47,4 +47,6 @@
   void WriteToShMem(void);
   void PrintLogsDescriptors(void);
+  void SetIsReady(bool status);
+  bool IsReady(void) const;
 
 private:
@@ -59,4 +61,5 @@
   bool outputtoshm;
   flair::core::SharedMem *shmem;
+  bool isReady;
 };
 
