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

sensors/magnetometersensor/magnetometersensor.h

Go to the documentation of this file.
00001 
00028 #ifndef MAGNETOMETER_SENSOR_CHANNEL_H
00029 #define MAGNETOMETER_SENSOR_CHANNEL_H
00030 
00031 #include "abstractsensor.h"
00032 #include "abstractchain.h"
00033 #include "magnetometersensor_a.h"
00034 #include "dataemitter.h"
00035 #include "deviceadaptor.h"
00036 #include "datatypes/orientationdata.h"
00037 
00038 class Bin;
00039 template <class TYPE> class BufferReader;
00040 class FilterBase;
00041 
00045 class MagnetometerSensorChannel :
00046         public AbstractSensorChannel,
00047         public DataEmitter<CalibratedMagneticFieldData>
00048 {
00049     Q_OBJECT;
00050     Q_PROPERTY(MagneticField magneticField READ magneticField);
00051 
00052 public:
00057     static AbstractSensorChannel* factoryMethod(const QString& id)
00058     {
00059         MagnetometerSensorChannel* sc = new MagnetometerSensorChannel(id);
00060         new MagnetometerSensorChannelAdaptor(sc);
00061 
00062         return sc;
00063     }
00064 
00065     Q_INVOKABLE void resetCalibration();
00066 
00067     MagneticField magneticField() const
00068     {
00069         return MagneticField(prevMeasurement_);
00070     }
00071 
00072     virtual void removeSession(int sessionId);
00073 
00074     virtual bool downsamplingSupported() const;
00075 
00076 public Q_SLOTS:
00077     bool start();
00078     bool stop();
00079 
00080 signals:
00085     void dataAvailable(const MagneticField& data);
00086     void internalData(const MagneticField& data);
00087 
00088 protected:
00089     MagnetometerSensorChannel(const QString& id);
00090     virtual ~MagnetometerSensorChannel();
00091 
00092     virtual bool setDataRange(const DataRange& range, int sessionId);
00093 
00094 private:
00095     Bin*                                       filterBin_;
00096     Bin*                                       marshallingBin_;
00097     AbstractChain*                             compassChain_;
00098     FilterBase*                                scaleFilter_;
00099     BufferReader<CalibratedMagneticFieldData>* magnetometerReader_;
00100     RingBuffer<CalibratedMagneticFieldData>*   outputBuffer_;
00101     CalibratedMagneticFieldData                prevMeasurement_;
00102     int                                        scaleCoefficient_;
00103     MagneticFieldDownsampleBuffer              downsampleBuffer_;
00104 
00105     void emitData(const CalibratedMagneticFieldData& value);
00106 };
00107 
00108 #endif // MAGNETOMETER_SENSOR_CHANNEL_H

Generated on Mon Jun 27 2011 14:38:47 for sensorfw by  doxygen 1.7.1