sensorfw
|
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