• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

sensors/rotationsensor/rotationsensor.h

Go to the documentation of this file.
00001 
00027 #ifndef ROTATION_SENSOR_CHANNEL_H
00028 #define ROTATION_SENSOR_CHANNEL_H
00029 
00030 #include <QMutex>
00031 #include "abstractsensor.h"
00032 #include "abstractchain.h"
00033 #include "rotationsensor_a.h"
00034 #include "dataemitter.h"
00035 #include "datatypes/orientationdata.h"
00036 
00037 class Bin;
00038 template <class TYPE> class BufferReader;
00039 class FilterBase;
00040 
00044 class RotationSensorChannel :
00045         public AbstractSensorChannel,
00046         public DataEmitter<TimedXyzData>
00047 {
00048     Q_OBJECT;
00049     Q_PROPERTY(XYZ rotation READ rotation);
00050     Q_PROPERTY(bool hasZ READ hasZ);
00051 
00052 public:
00057     static AbstractSensorChannel* factoryMethod(const QString& id)
00058     {
00059         RotationSensorChannel* sc = new RotationSensorChannel(id);
00060         new RotationSensorChannelAdaptor(sc);
00061 
00062         return sc;
00063     }
00064 
00065     XYZ rotation() const
00066     {
00067         return XYZ(prevRotation_);
00068     }
00069 
00070     bool hasZ() const
00071     {
00072         return compassReader_;
00073     }
00074 
00075     virtual unsigned int interval() const;
00076     virtual bool setInterval(unsigned int value, int sessionId);
00077 
00078     virtual void removeSession(int sessionId);
00079 
00080     virtual bool downsamplingSupported() const;
00081 
00082 public Q_SLOTS:
00083     bool start();
00084     bool stop();
00085 
00086 signals:
00091     void dataAvailable(const XYZ& data);
00092 
00093 protected:
00094     RotationSensorChannel(const QString& id);
00095     virtual ~RotationSensorChannel();
00096 
00097 private:
00098     Bin*                         filterBin_;
00099     Bin*                         marshallingBin_;
00100     AbstractChain*               accelerometerChain_;
00101     AbstractChain*               compassChain_;
00102     BufferReader<TimedXyzData>*  accelerometerReader_;
00103     BufferReader<CompassData>*   compassReader_;
00104     FilterBase*                  rotationFilter_;
00105     RingBuffer<TimedXyzData>*    outputBuffer_;
00106     TimedXyzData                 prevRotation_;
00107     TimedXyzDownsampleBuffer     downsampleBuffer_;
00108     QMutex                       mutex_;
00109 
00110     void emitData(const TimedXyzData& value);
00111 };
00112 
00113 #endif // ROTATION_SENSOR_CHANNEL_H

Generated on Tue Jun 10 2014 06:25:09 for sensorfw by  doxygen 1.7.1