sensorfw
|
00001 00028 #ifndef ACCELEROMETER_SENSOR_CHANNEL_H 00029 #define ACCELEROMETER_SENSOR_CHANNEL_H 00030 00031 #include "abstractsensor.h" 00032 #include "abstractchain.h" 00033 #include "accelerometersensor_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 00041 00048 class AccelerometerSensorChannel : 00049 public AbstractSensorChannel, 00050 public DataEmitter<AccelerationData> 00051 { 00052 Q_OBJECT; 00053 Q_PROPERTY(XYZ value READ get); 00054 00055 public: 00060 static AbstractSensorChannel* factoryMethod(const QString& id) 00061 { 00062 AccelerometerSensorChannel* sc = new AccelerometerSensorChannel(id); 00063 new AccelerometerSensorChannelAdaptor(sc); 00064 00065 return sc; 00066 } 00067 00068 XYZ get() const { return previousSample_; } 00069 00070 virtual void removeSession(int sessionId); 00071 00072 virtual bool downsamplingSupported() const; 00073 00074 public Q_SLOTS: 00075 bool start(); 00076 bool stop(); 00077 00078 signals: 00083 void dataAvailable(const XYZ& data); 00084 00085 protected: 00086 AccelerometerSensorChannel(const QString& id); 00087 virtual ~AccelerometerSensorChannel(); 00088 00089 private: 00090 static double aconv_[3][3]; 00091 Bin* filterBin_; 00092 Bin* marshallingBin_; 00093 AbstractChain* accelerometerChain_; 00094 BufferReader<AccelerationData>* accelerometerReader_; 00095 RingBuffer<AccelerationData>* outputBuffer_; 00096 AccelerationData previousSample_; 00097 TimedXyzDownsampleBuffer downsampleBuffer_; 00098 00099 void emitData(const AccelerationData& value); 00100 }; 00101 00102 #endif