sensorfw
sensors/proximitysensor/proximitysensor.h
Go to the documentation of this file.
00001 
00028 #ifndef PROXIMITY_SENSOR_CHANNEL_H
00029 #define PROXIMITY_SENSOR_CHANNEL_H
00030 
00031 #include "abstractsensor.h"
00032 #include "proximitysensor_a.h"
00033 #include "dataemitter.h"
00034 #include "deviceadaptor.h"
00035 #include "datatypes/timedunsigned.h"
00036 #include "datatypes/unsigned.h"
00037 
00038 class Bin;
00039 template <class TYPE> class BufferReader;
00040 
00046 class ProximitySensorChannel :
00047     public AbstractSensorChannel,
00048     public DataEmitter<ProximityData>
00049 {
00050     Q_OBJECT;
00051     Q_PROPERTY(Unsigned proximity READ proximity);
00052     Q_PROPERTY(Proximity proximityReflectance READ proximityReflectance);
00053 
00054 public:
00059     static AbstractSensorChannel* factoryMethod(const QString& id)
00060     {
00061         ProximitySensorChannel* sc = new ProximitySensorChannel(id);
00062         new ProximitySensorChannelAdaptor(sc);
00063         return sc;
00064     }
00065 
00070     Unsigned proximity() const { return previousValue_; }
00071 
00072     Proximity proximityReflectance() const { return previousValue_; }
00073 
00074 public Q_SLOTS:
00075     bool start();
00076     bool stop();
00077 
00078 signals:
00083     void dataAvailable(const Unsigned& data);
00084 
00085 protected:
00086     ProximitySensorChannel(const QString& id);
00087     virtual ~ProximitySensorChannel();
00088 
00089 private:
00090     Bin*                         filterBin_;
00091     Bin*                         marshallingBin_;
00092     DeviceAdaptor*               proximityAdaptor_;
00093     BufferReader<ProximityData>* proximityReader_;
00094     RingBuffer<ProximityData>*   outputBuffer_;
00095     ProximityData                previousValue_;
00096 
00097     void emitData(const ProximityData& value);
00098 };
00099 
00100 #endif // PROXIMITY_SENSOR_CHANNEL_H