sensorfw
adaptors/magnetometeradaptor-ncdk/magnetometeradaptor-ncdk.h
Go to the documentation of this file.
00001 
00025 #ifndef MAGNETOMETERADAPTOR_NCDK_H
00026 #define MAGNETOMETERADAPTOR_NCDK_H
00027 
00028 #include "sysfsadaptor.h"
00029 #include "deviceadaptorringbuffer.h"
00030 #include "datatypes/genericdata.h"
00031 #include <QString>
00032 
00033 
00034 class MagnetometerAdaptorNCDK : public SysfsAdaptor
00035 {
00036     Q_OBJECT;
00037 public:
00038 
00039     Q_PROPERTY(int overflowLimit READ overflowLimit WRITE setOverflowLimit);
00040 
00045     static DeviceAdaptor* factoryMethod(const QString& id)
00046     {
00047         return new MagnetometerAdaptorNCDK(id);
00048     }
00049 
00050     bool startSensor();
00051     void stopSensor();
00052 
00053 protected:
00058     MagnetometerAdaptorNCDK(const QString& id);
00059     ~MagnetometerAdaptorNCDK();
00060 
00061     bool setInterval(const unsigned int value, const int sessionId);
00062 
00063 private:
00064 
00072     void processSample(int pathId, int fd);
00073 
00074     QByteArray powerStateFilePath_;
00075     QByteArray sensAdjFilePath_;
00076 
00077     int x_adj, y_adj, z_adj;
00078     bool powerState_;
00079     DeviceAdaptorRingBuffer<TimedXyzData>* magnetometerBuffer_;
00080 
00081     bool setPowerState(bool value) const;
00082     void getSensitivityAdjustment(int &x, int &y, int &z) const;
00083     int adjustPos(const int value, const int adj) const;
00084     int intervalCompensation_;
00085     int overflowLimit_;
00086 
00092     void setOverflowLimit(int limit);
00093 
00099     int overflowLimit() const;
00100 };
00101 
00102 #endif // MAGNETOMETERADAPTOR_NCDK_H