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

filters/orientationinterpreter/orientationinterpreter.h

Go to the documentation of this file.
00001 
00029 #ifndef ORIENTATIONINTERPRETER_H
00030 #define ORIENTATIONINTERPRETER_H
00031 
00032 #include <QObject>
00033 #include <QFile>
00034 #include "filter.h"
00035 #include <datatypes/orientationdata.h>
00036 #include <datatypes/posedata.h>
00037 
00045 class OrientationInterpreter : public QObject, public FilterBase
00046 {
00047     Q_OBJECT;
00048 
00049     Q_PROPERTY(PoseData orientation READ orientation);
00050 
00051 private:
00052     Sink<OrientationInterpreter, AccelerationData> accDataSink;
00053     Source<PoseData> topEdgeSource;
00054     Source<PoseData> faceSource;
00055     Source<PoseData> orientationSource;
00056 
00057     void accDataAvailable(unsigned, const AccelerationData*);
00058 
00059     bool overFlowCheck();
00060     void processTopEdge();
00061     void processFace();
00062     void processOrientation();
00063 
00064     OrientationInterpreter();
00065 
00066     PoseData topEdge;
00067     PoseData face;
00068     PoseData previousFace;
00069     bool updatePreviousFace;
00070 
00071     AccelerationData data;
00072     QList<AccelerationData> dataBuffer;
00073 
00074     int minLimit;
00075     int maxLimit;
00076     int angleThresholdPortrait;
00077     int angleThresholdLandscape;
00078     unsigned long discardTime;
00079     int maxBufferSize;
00080 
00081     PoseData orientationData;
00082 
00083     QFile cpuBoostFile;
00084 
00085     enum OrientationMode
00086     {
00087         Portrait = 0, 
00088         Landscape     
00089     };
00090 
00091     PoseData rotateToLandscape(int);
00092     PoseData rotateToPortrait(int);
00093     int orientationCheck(const AccelerationData&, OrientationMode) const;
00094     PoseData orientationRotation(const AccelerationData&, OrientationMode, PoseData (OrientationInterpreter::*)(int));
00095 
00096     static const float RADIANS_TO_DEGREES;
00097     static const int SAME_AXIS_LIMIT;
00098 
00099     static const int OVERFLOW_MIN;
00100     static const int OVERFLOW_MAX;
00101 
00102     static const int THRESHOLD_LANDSCAPE;
00103     static const int THRESHOLD_PORTRAIT;
00104 
00105     static const int DISCARD_TIME;
00106     static const int AVG_BUFFER_MAX_SIZE;
00107 
00108     static const char* CPU_BOOST_PATH;
00109 
00110 public:
00115     static FilterBase* factoryMethod()
00116     {
00117         return new OrientationInterpreter();
00118     }
00119 
00120     PoseData orientation() const { return orientationData; }
00121 };
00122 
00123 #endif

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