Index: trunk/include/FlairSensorActuator/BlCtrlV2_x4_speed.h
===================================================================
--- trunk/include/FlairSensorActuator/BlCtrlV2_x4_speed.h	(revision 62)
+++ trunk/include/FlairSensorActuator/BlCtrlV2_x4_speed.h	(revision 68)
@@ -24,5 +24,5 @@
 namespace flair {
 namespace core {
-class cvmatrix;
+class Matrix;
 class I2cPort;
 }
@@ -97,6 +97,6 @@
 
   // matrix
-  core::cvmatrix *input;
-  core::cvmatrix *output;
+  core::Matrix *input;
+  core::Matrix *output;
 
   int tested_motor;
Index: trunk/include/FlairSensorActuator/Bldc.h
===================================================================
--- trunk/include/FlairSensorActuator/Bldc.h	(revision 62)
+++ trunk/include/FlairSensorActuator/Bldc.h	(revision 68)
@@ -19,5 +19,5 @@
 namespace flair {
 namespace core {
-class cvmatrix;
+class Matrix;
 }
 namespace gui {
@@ -96,5 +96,5 @@
   *
   */
-  core::cvmatrix *Output(void) const;
+  core::Matrix *Output(void) const;
 
   /*!
@@ -161,5 +161,5 @@
 
 protected:
-  core::cvmatrix *output;
+  core::Matrix *output;
 
 private:
Index: trunk/include/FlairSensorActuator/EmulatedController.h
===================================================================
--- trunk/include/FlairSensorActuator/EmulatedController.h	(revision 62)
+++ trunk/include/FlairSensorActuator/EmulatedController.h	(revision 68)
@@ -21,5 +21,5 @@
 namespace flair {
     namespace core {
-        class cvmatrix;
+        class Matrix;
     }
     namespace gui {
@@ -52,17 +52,17 @@
         bool ProcessMessage(core::Message *msg);
         bool IsDataFrameReady();
-        void AcquireAxisData(core::cvmatrix &axis); //responsible for getting the axis data from the hardware
-        void AcquireButtonData(core::cvmatrix &button); //responsible for getting the button data from the hardware
+        void AcquireAxisData(core::Matrix &axis); //responsible for getting the axis data from the hardware
+        void AcquireButtonData(core::Matrix &button); //responsible for getting the button data from the hardware
         bool ControllerInitialization();
 
     private:
         enum class DataType { axis,button };
-        void ComputeControllerData(DataType dataType, core::cvmatrix &data);
-        template<typename T> void fillVectorNoMutex(core::cvmatrix &vector,T data[],unsigned int size);
-        void fillVectorNoMutex(core::cvmatrix &destination,core::cvmatrix &source,unsigned int size);
+        void ComputeControllerData(DataType dataType, core::Matrix &data);
+        template<typename T> void fillVectorNoMutex(core::Matrix &vector,T data[],unsigned int size);
+        void fillVectorNoMutex(core::Matrix &destination,core::Matrix &source,unsigned int size);
         struct StepData {
             unsigned int durationMs; //milliseconds
-            core::cvmatrix *axisData;
-            core::cvmatrix *buttonData;
+            core::Matrix *axisData;
+            core::Matrix *buttonData;
             std::string description;
             void Print();
Index: trunk/include/FlairSensorActuator/HokuyoUTM30Lx.h
===================================================================
--- trunk/include/FlairSensorActuator/HokuyoUTM30Lx.h	(revision 62)
+++ trunk/include/FlairSensorActuator/HokuyoUTM30Lx.h	(revision 68)
@@ -23,5 +23,5 @@
 namespace flair {
 namespace core {
-class cvmatrix;
+class Matrix;
 class SerialPort;
 class Mutex;
@@ -56,5 +56,5 @@
   void getMesure(int startStep, int endStep, int clusterCount, int interval,
                  int scanNumber = 0);
-  core::cvmatrix *getDatas(void);
+  core::Matrix *getDatas(void);
 
   /*!
@@ -78,5 +78,5 @@
 
   // matrix
-  core::cvmatrix *output;
+  core::Matrix *output;
 
   std::queue<std::string> bufRet;
Index: trunk/include/FlairSensorActuator/HostEthController.h
===================================================================
--- trunk/include/FlairSensorActuator/HostEthController.h	(revision 62)
+++ trunk/include/FlairSensorActuator/HostEthController.h	(revision 68)
@@ -26,5 +26,5 @@
 namespace flair {
 namespace core {
-class cvmatrix;
+class Matrix;
 class TcpSocket;
 class UdpSocket;
@@ -81,5 +81,5 @@
   GetAxisData() = 0; // responsible for getting the axis data from the hardware
   unsigned int axisNumber;
-  core::cvmatrix *axis;
+  core::Matrix *axis;
   gui::DataPlot1D **axisPlot;
   uint32_t bitsPerAxis;
@@ -90,5 +90,5 @@
                                     // from the hardware
   unsigned int buttonNumber;
-  core::cvmatrix *button;
+  core::Matrix *button;
   uint8_t buttonOffset;
   bool meaningfulDataAvailable;
Index: trunk/include/FlairSensorActuator/LaserRangeFinder.h
===================================================================
--- trunk/include/FlairSensorActuator/LaserRangeFinder.h	(revision 62)
+++ trunk/include/FlairSensorActuator/LaserRangeFinder.h	(revision 68)
@@ -19,5 +19,5 @@
 namespace core {
 class FrameworkManager;
-class cvmatrix;
+class Matrix;
 }
 namespace gui {
@@ -102,5 +102,5 @@
       * \return output matrix
       */
-  core::cvmatrix *output;
+  core::Matrix *output;
 
   /*!
Index: trunk/include/FlairSensorActuator/PressureSensor.h
===================================================================
--- trunk/include/FlairSensorActuator/PressureSensor.h	(revision 68)
+++ trunk/include/FlairSensorActuator/PressureSensor.h	(revision 68)
@@ -0,0 +1,149 @@
+// %flair:license{
+// This file is part of the Flair framework distributed under the
+// CECILL-C License, Version 1.0.
+// %flair:license}
+/*!
+ * \file PressureSensor.h
+ * \brief Base class for PressureSensor
+ * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
+ * \date 2018/02/08
+ * \version 4.0
+ */
+
+#ifndef PRESSURESENSOR_H
+#define PRESSURESENSOR_H
+
+#include <IODevice.h>
+
+namespace flair {
+  namespace core {
+    class Matrix;
+  }
+  namespace gui {
+    class Tab;
+    class TabWidget;
+    class GroupBox;
+    class Layout;
+    class DataPlot1D;
+  }
+}
+
+namespace flair {
+namespace sensor {
+/*! \class PressureSensor
+*
+* \brief Base class for PressureSensor
+*
+* Use this class to define a custom PressureSensor.
+*
+*/
+class PressureSensor : public core::IODevice {
+public:
+  /*!
+  * \brief Constructor
+  *
+  * Construct a PressureSensor. Control part.
+	* It will be child of the FrameworkManager.
+	* 
+  * \param name name
+  */
+  PressureSensor(std::string name);
+
+  /*!
+  * \brief Constructor
+  *
+  * Construct a PressureSensor. Simulation part.
+  *
+  * \param parent parent
+  * \param name name
+  */
+  PressureSensor(const core::IODevice *parent, std::string name);
+
+  /*!
+  * \brief Destructor
+  *
+  */
+  ~PressureSensor();
+
+  /*!
+  * \brief Lock user interface
+  *
+  */
+  void LockUserInterface(void) const;
+
+  /*!
+  * \brief Unlock user interface
+  *
+  */
+  void UnlockUserInterface(void) const;
+
+  /*!
+  * \brief Use default plot
+  *
+  * Should no be used for the simulation part.
+  */
+  void UseDefaultPlot(void);
+
+  /*!
+  * \brief Plot
+  *
+  * \return DataPlot1D
+  */
+  gui::DataPlot1D *GetPlot(void) const;
+
+  /*!
+  * \brief Setup Layout
+  *
+  * \return a Layout available
+  */
+  gui::Layout *GetLayout(void) const;
+
+  /*!
+  * \brief Plot tab
+  *
+  * \return plot Tab
+  */
+  gui::Tab *GetPlotTab(void) const;
+
+  /*!
+  * \brief Value
+  *
+  * \return output value in pascal
+  */
+  float Value(void) const;
+
+protected:
+  /*!
+  * \brief Output matrix
+  *
+  * \return output matrix
+  */
+  core::Matrix *output;
+
+  /*!
+  * \brief Setup GroupBox
+  *
+  * \return a GroupBox available
+  */
+  gui::GroupBox *GetGroupBox(void) const;
+
+private:
+  /*!
+  * \brief Update using provided datas
+  *
+  * Reimplemented from IODevice.
+  *
+  * \param data data from the parent to process
+  */
+  void UpdateFrom(const core::io_data *data){};
+
+  gui::Tab *main_tab;
+  gui::TabWidget *tab;
+  gui::GroupBox *setup_groupbox;
+  gui::Tab *sensor_tab;
+  gui::DataPlot1D *plot;
+  gui::Tab *plot_tab;
+};
+} // end namespace sensor
+} // end namespace flair
+#endif // PRESSURESENSOR_H
Index: trunk/include/FlairSensorActuator/RadioReceiver.h
===================================================================
--- trunk/include/FlairSensorActuator/RadioReceiver.h	(revision 62)
+++ trunk/include/FlairSensorActuator/RadioReceiver.h	(revision 68)
@@ -19,5 +19,5 @@
 namespace flair {
 namespace core {
-class cvmatrix;
+class Matrix;
 }
 namespace gui {
@@ -87,5 +87,5 @@
   void UpdateFrom(const core::io_data *data){};
 
-  core::cvmatrix *output;
+  core::Matrix *output;
   bool is_connected;
   unsigned int nb_channels;
Index: trunk/include/FlairSensorActuator/SimuBldc.h
===================================================================
--- trunk/include/FlairSensorActuator/SimuBldc.h	(revision 62)
+++ trunk/include/FlairSensorActuator/SimuBldc.h	(revision 68)
@@ -20,5 +20,5 @@
 class SharedMem;
 class IODevice;
-class cvmatrix;
+class Matrix;
 }
 namespace gui {
@@ -40,5 +40,5 @@
   * \brief Constructor
   *
-  * Construct a SimuBldc. Control part.
+  * Construct a SimuBldc
   *
   * \param parent parent
@@ -53,31 +53,8 @@
 
   /*!
-  * \brief Constructor
-  *
-  * Construct a SimuBldc. Simulation part.
-  *
-  * \param parent parent
-  * \param name name
-  * \param motors_count number of motors
-  * \param modelId Model id
-  * \param deviceId Bldc id of the Model
-  */
-  SimuBldc(const core::Object *parent, std::string name, uint8_t motors_count,
-           uint32_t modelId,uint32_t deviceId);
-
-  /*!
   * \brief Destructor
   *
   */
   ~SimuBldc();
-
-  /*!
-  * \brief Get motors speeds.
-  *
-  * This function should only be used for the simulation part.
-  *
-  * \param value array to store motors speeds
-  */
-  void GetSpeeds(float *value) const;
 
   /*!
@@ -113,4 +90,6 @@
   core::SharedMem *shmem;
   gui::DoubleSpinBox *k;
+  char *buf;
+
 };
 } // end namespace actuator
Index: trunk/include/FlairSensorActuator/SimuCamera.h
===================================================================
--- trunk/include/FlairSensorActuator/SimuCamera.h	(revision 62)
+++ trunk/include/FlairSensorActuator/SimuCamera.h	(revision 68)
@@ -35,5 +35,5 @@
   * \brief Constructor
   *
-  * Construct a SimuCamera. Control part.
+  * Construct a SimuCamera.
 	* It will be child of the FrameworkManager.
   *
@@ -50,20 +50,4 @@
              uint8_t priority);
 
-  /*!
-  * \brief Constructor
-  *
-  * Construct a SimuCamera. Simulation part.\n
-  * The Thread of this class should not be run.
-  *
-  * \param parent parent
-  * \param name name
-  * \param width width
-  * \param height height
-  * \param channels number of channels
-  * \param modelId Model id
-  * \param deviceId Camera id of the Model
-  */
-  SimuCamera(const core::IODevice *parent, std::string name, uint16_t width,
-             uint16_t height, uint8_t channels, uint32_t modelId,uint32_t deviceId);
 
   /*!
Index: trunk/include/FlairSensorActuator/SimuGps.h
===================================================================
--- trunk/include/FlairSensorActuator/SimuGps.h	(revision 62)
+++ trunk/include/FlairSensorActuator/SimuGps.h	(revision 68)
@@ -38,5 +38,5 @@
   * \brief Constructor
   *
-  * Construct a simulation GPS. Control part.
+  * Construct a simulation GPS
   * It will be child of the FrameworkManager.
 	* 
@@ -49,17 +49,4 @@
   SimuGps(std::string name,
           NmeaGps::NMEAFlags_t NMEAFlags, uint32_t modelId,uint32_t deviceId,uint8_t priority);
-
-  /*!
-  * \brief Constructor
-  *
-  * Construct a simulation GPS. Simulation part.\n
-  * The Thread of this class should not be run.
-  *
-  * \param parent parent
-  * \param name name
-  * \param modelId Model id
-  * \param deviceId Gps id of the Model
-  */
-  SimuGps(const core::IODevice *parent, std::string name, uint32_t modelId,uint32_t deviceId);
 
   /*!
@@ -77,5 +64,5 @@
   * \param data data from the parent to process
   */
-  void UpdateFrom(const core::io_data *data);
+  void UpdateFrom(const core::io_data *data){};
 
   /*!
Index: trunk/include/FlairSensorActuator/SimuImu.h
===================================================================
--- trunk/include/FlairSensorActuator/SimuImu.h	(revision 62)
+++ trunk/include/FlairSensorActuator/SimuImu.h	(revision 68)
@@ -38,5 +38,5 @@
   * \brief Constructor
   *
-  * Construct a SimuImu. Control part.
+  * Construct a SimuImu.
 	* It will be child of the FrameworkManager.
   *
@@ -48,17 +48,4 @@
   SimuImu(std::string name,
           uint32_t modelId,uint32_t deviceId, uint8_t priority);
-
-  /*!
-  * \brief Constructor
-  *
-  * Construct a SimuImu. Simulation part.\n
-  * The Thread of this class should not be run.
-  *
-  * \param parent parent
-  * \param name name
-  * \param modelId Model id
-  * \param deviceId Imu id of the Model
-  */
-  SimuImu(const core::IODevice *parent, std::string name, uint32_t modelId,uint32_t deviceId);
 
   /*!
@@ -84,5 +71,5 @@
   * \param data data from the parent to process
   */
-  void UpdateFrom(const core::io_data *data);
+  void UpdateFrom(const core::io_data *data){};
 
   typedef struct {
Index: trunk/include/FlairSensorActuator/SimuLaser.h
===================================================================
--- trunk/include/FlairSensorActuator/SimuLaser.h	(revision 62)
+++ trunk/include/FlairSensorActuator/SimuLaser.h	(revision 68)
@@ -37,6 +37,5 @@
   * \brief Constructor
   *
-  * Construct a SimuUs. Control part.
-	* It will be child of the FrameworkManager.
+  * Construct a SimuUs.
   *
   * \param name name
@@ -47,17 +46,4 @@
   SimuLaser(std::string name,
             uint32_t modelId,uint32_t deviceId, uint8_t priority);
-
-  /*!
-  * \brief Constructor
-  *
-  * Construct a SimuUs. Simulation part.\n
-  * The Thread of this class should not be run.
-  *
-  * \param parent parent
-  * \param name name
-  * \param modelId Model id
-  * \param deviceId LaserRangeFinder id of the Model
-  */
-  SimuLaser(const core::IODevice *parent, std::string name, uint32_t modelId,uint32_t deviceId);
 
   /*!
Index: trunk/include/FlairSensorActuator/SimuUs.h
===================================================================
--- trunk/include/FlairSensorActuator/SimuUs.h	(revision 62)
+++ trunk/include/FlairSensorActuator/SimuUs.h	(revision 68)
@@ -37,5 +37,5 @@
   * \brief Constructor
   *
-  * Construct a SimuUs. Control part.
+  * Construct a SimuUs.
 	* It will be child of the FrameworkManager.
   *
@@ -47,17 +47,4 @@
   SimuUs(std::string name,
          uint32_t modelId,uint32_t deviceId, uint8_t priority);
-
-  /*!
-  * \brief Constructor
-  *
-  * Construct a SimuUs. Simulation part.\n
-  * The Thread of this class should not be run.
-  *
-  * \param parent parent
-  * \param name name
-  * \param modelId Model id
-  * \param deviceId UsRangeFinder id of the Model
-  */
-  SimuUs(const core::IODevice *parent, std::string name, uint32_t modelId,uint32_t deviceId);
 
   /*!
Index: trunk/include/FlairSensorActuator/TargetController.h
===================================================================
--- trunk/include/FlairSensorActuator/TargetController.h	(revision 62)
+++ trunk/include/FlairSensorActuator/TargetController.h	(revision 68)
@@ -27,5 +27,5 @@
 namespace core {
 class FrameworkManager;
-class cvmatrix;
+class Matrix;
 class Socket;
 class io_data;
@@ -82,6 +82,6 @@
   // axis stuff
   unsigned int axisNumber;
-  core::cvmatrix *axis = NULL;
-  virtual void AcquireAxisData(core::cvmatrix &axis) = 0; // responsible for
+  core::Matrix *axis = NULL;
+  virtual void AcquireAxisData(core::Matrix &axis) = 0; // responsible for
                                                           // getting the axis
                                                           // data from the
@@ -90,6 +90,6 @@
   // button stuff
   unsigned int buttonNumber;
-  core::cvmatrix *button = NULL;
-  virtual void AcquireButtonData(core::cvmatrix &button) = 0; // responsible for
+  core::Matrix *button = NULL;
+  virtual void AcquireButtonData(core::Matrix &button) = 0; // responsible for
                                                               // getting the
                                                               // button data
Index: trunk/include/FlairSensorActuator/TargetEthController.h
===================================================================
--- trunk/include/FlairSensorActuator/TargetEthController.h	(revision 62)
+++ trunk/include/FlairSensorActuator/TargetEthController.h	(revision 68)
@@ -27,5 +27,5 @@
 namespace core {
 class FrameworkManager;
-class cvmatrix;
+class Matrix;
 class TcpSocket;
 class UdpSocket;
@@ -62,7 +62,7 @@
 
   bool IsDataFrameReady();
-  void AcquireAxisData(core::cvmatrix &axis);     // responsible for getting the
+  void AcquireAxisData(core::Matrix &axis);     // responsible for getting the
                                                   // axis data from the hardware
-  void AcquireButtonData(core::cvmatrix &button); // responsible for getting the
+  void AcquireButtonData(core::Matrix &button); // responsible for getting the
                                                   // button data from the
                                                   // hardware
Index: trunk/include/FlairSensorActuator/UsRangeFinder.h
===================================================================
--- trunk/include/FlairSensorActuator/UsRangeFinder.h	(revision 62)
+++ trunk/include/FlairSensorActuator/UsRangeFinder.h	(revision 68)
@@ -17,14 +17,14 @@
 
 namespace flair {
-namespace core {
-class cvmatrix;
-}
-namespace gui {
-class Tab;
-class TabWidget;
-class GroupBox;
-class Layout;
-class DataPlot1D;
-}
+  namespace core {
+    class Matrix;
+  }
+  namespace gui {
+    class Tab;
+    class TabWidget;
+    class GroupBox;
+    class Layout;
+    class DataPlot1D;
+  }
 }
 
@@ -105,4 +105,11 @@
   */
   gui::Tab *GetPlotTab(void) const;
+  
+  /*!
+  * \brief Tab widget
+  *
+  * \return tab widget
+  */
+  gui::TabWidget *GetTabWidget(void) const;
 
   /*!
@@ -119,5 +126,5 @@
   * \return output matrix
   */
-  core::cvmatrix *output;
+  core::Matrix *output;
 
   /*!
Index: trunk/include/FlairSensorActuator/VrpnObject.h
===================================================================
--- trunk/include/FlairSensorActuator/VrpnObject.h	(revision 62)
+++ trunk/include/FlairSensorActuator/VrpnObject.h	(revision 68)
@@ -21,5 +21,5 @@
 namespace flair {
 	namespace core {
-		class cvmatrix;
+		class Matrix;
 		class Quaternion;
 	}
@@ -126,5 +126,5 @@
   * \return Output matrix
   */
-  core::cvmatrix *Output(void) const;
+  core::Matrix *Output(void) const;
 
   /*!
@@ -139,5 +139,5 @@
   * \return State matrix
   */
-  core::cvmatrix *State(void) const;
+  core::Matrix *State(void) const;
 
   /*!
