/
calibrationhandler.h
99 lines (80 loc) · 2.55 KB
/
calibrationhandler.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/**
@file calibrationhandler.h
@brief Helper class for maintaining magnetometer calibration
<p>
Copyright (C) 2009-2010 Nokia Corporation
@author Timo Rongas <ext-timo.2.rongas@nokia.com>
@author Antti Virtanen <antti.i.virtanen@nokia.com>
This file is part of Sensord.
Sensord is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License
version 2.1 as published by the Free Software Foundation.
Sensord is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with Sensord. If not, see <http://www.gnu.org/licenses/>.
</p>
*/
#ifndef CALIBRATION_HANDLER
#define CALIBRATION_HANDLER
#include <QObject>
#include <QString>
#include <QTimer>
#include "datatypes/magneticfield.h"
#include "magnetometersensor.h"
/**
* @brief Helper class for maintaining magnetometer calibration.
*
* Keeps a session open to magnetometer with low frequency to maintain
* calibration.
*/
class CalibrationHandler : public QObject
{
Q_OBJECT
Q_DISABLE_COPY(CalibrationHandler)
public:
/**
* Constructor.
* @param parent Parent QObject.
*/
CalibrationHandler(QObject* parent = 0);
/**
* Destructor.
*/
~CalibrationHandler();
/**
* Initialize object and start background calibration.
*
* @return true on success.
*/
bool initiateSession();
public slots:
/**
* Callback when new sample is received from magnetometer.
*/
void sampleReceived(const MagneticField&);
/**
* Stop calibration.
*/
void stopCalibration();
/**
* Resume calibration.
*/
void resumeCalibration();
private slots:
/**
* Callback for calibration.
*/
void calibrationTimeout();
private:
static const QString SENSOR_NAME; /**< magnetometer sensor name */
MagnetometerSensorChannel* m_sensor; /**< magnetometer sensor channel */
int m_sessionId; /**< session ID */
int m_level; /**< calibration level */
QTimer m_timer; /**< calibration timer */
int m_calibRate; /**< calibration rate */
int m_calibTimeout; /**< calibration timeout */
};
#endif // CALIBRATION_HANDLER