a
[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
38     qreal getTrueAccelerationX();
39     qreal getTrueAccelerationY();
40     qreal getTrueAccelerationZ();
41     qreal getPreviousSpeed();
42     qreal getCurrentSpeed();
43
44     qreal getDistanceTraveled();
45     qreal getLastDistanceTraveled();
46     qreal getAverageSpeed();
47
48     qreal getCurrentAcceleration();
49     qreal getTotalAcceleration();
50     qreal getPreviousTotalAcceleration();
51
52     int getCalibrationX();
53     int getCalibrationY();
54     int getCalibrationZ();
55
56     qreal getIntervalTime();
57     qreal getTotalTime();
58
59 private slots:
60     void processData();
61     void smoothData(qreal x, qreal y, qreal z);
62
63 private:
64     Calculate *calculate;
65
66     qreal accelerationX, accelerationY, accelerationZ;
67     qreal trueAccelerationX,trueAccelerationY,trueAccelerationZ;
68     qreal previousAccelerationX,previousAccelerationY,previousAccelerationZ;
69     qreal previousSpeed, currentSpeed;
70     qreal currentAcceleration, previousAcceleration, totalAcceleration;
71
72     int 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