cd0c2ef44e36e105e3e7b267828566066061f4d4
[speedfreak] / Client / accelerometer.h
1 /*
2  * Accelerometer class to access the device accelerometer
3  *
4  * @author      Rikhard Kuutti <rikhard.kuutti@fudeco.com>
5  * @author      Kai Rasilainen 
6  * @copyright   (c) 2010 Speed Freak team
7  * @license     http://opensource.org/licenses/gpl-license.php GNU Public License
8  */
9
10 #ifndef ACCELEROMETER_H
11 #define ACCELEROMETER_H
12
13 #include <QObject>
14 #include <QTime>
15 #include <QTimer>
16 #include <QFile>
17
18 #include "calculate.h"
19
20 class Accelerometer : public QObject
21 {
22     Q_OBJECT
23 public:
24     Accelerometer();
25     Accelerometer(int p_SampleRate);
26     ~Accelerometer();
27
28     void getAcceleration(qreal &x, qreal &y, qreal &z);
29     void smoothData(qreal &x, qreal &y, qreal &z);
30     void calibrate();
31
32     void start();
33     void stop();
34
35     void initValues();
36
37     void setSampleRate(int pSampleRate);
38     int getSampleRate();
39
40     qreal getTrueAccelerationX();
41     qreal getTrueAccelerationY();
42     qreal getTrueAccelerationZ();
43
44     qreal getPreviousSpeed();
45     qreal getCurrentSpeed();
46
47     qreal getDistanceTraveled();
48     qreal getLastDistanceTraveled();
49     qreal getAverageSpeed();
50
51     qreal getCurrentAcceleration();
52     qreal getTotalAcceleration();
53     qreal getPreviousTotalAcceleration();
54
55     qreal getCalibrationX();
56     qreal getCalibrationY();
57     qreal getCalibrationZ();
58
59     qreal getIntervalTime();
60     qreal getTotalTime();
61
62     Calculate *calculate;
63
64 private slots:
65     //void processData();
66
67
68 private:
69     qreal accelerationX, accelerationY, accelerationZ;
70     qreal trueAccelerationX,trueAccelerationY,trueAccelerationZ;
71     qreal previousAccelerationX,previousAccelerationY,previousAccelerationZ;
72     qreal previousSpeed, currentSpeed;
73     qreal currentAcceleration, previousAcceleration, totalAcceleration;
74     qreal calibrationX, calibrationY, calibrationZ;
75
76     QTime now;
77     QTimer *timer;
78
79     double intervalTime;
80     double totalTime;
81     double distanceTraveled;
82     double lastDistanceTraveled;
83     double averageSpeed;
84     double sampleRate;
85
86     bool firstRun;
87
88 };
89
90 #endif // ACCELEROMETER_H
91