Merge branch 'changes/UI'
[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 calibrate();
29
30     void start();
31     void stop();
32
33     void initValues();
34
35     void setSampleRate(int pSampleRate);
36     int getSampleRate();
37     void getAcceleration(qreal &x, qreal &y, qreal &z);
38
39     qreal getTrueAccelerationX();
40     qreal getTrueAccelerationY();
41     qreal getTrueAccelerationZ();
42     qreal getPreviousSpeed();
43     qreal getCurrentSpeed();
44
45     qreal getDistanceTraveled();
46     qreal getLastDistanceTraveled();
47     qreal getAverageSpeed();
48
49     qreal getCurrentAcceleration();
50     qreal getTotalAcceleration();
51     qreal getPreviousTotalAcceleration();
52
53     qreal getCalibrationX();
54     qreal getCalibrationY();
55     qreal getCalibrationZ();
56
57     qreal getIntervalTime();
58     qreal getTotalTime();
59
60 private slots:
61     void processData();
62     void smoothData(qreal x, qreal y, qreal z);
63
64 private:
65     Calculate *calculate;
66
67     qreal accelerationX, accelerationY, accelerationZ;
68     qreal trueAccelerationX,trueAccelerationY,trueAccelerationZ;
69     qreal previousAccelerationX,previousAccelerationY,previousAccelerationZ;
70     qreal previousSpeed, currentSpeed;
71     qreal currentAcceleration, previousAcceleration, totalAcceleration;
72     qreal calibrationX, calibrationY, calibrationZ;
73
74     QTime now;
75     QTimer *timer;
76
77     double intervalTime;
78     double totalTime;
79     double distanceTraveled;
80     double lastDistanceTraveled;
81     double averageSpeed;
82     double sampleRate;
83
84     bool firstRun;
85 };
86
87 #endif // ACCELEROMETER_H
88