664fedb0a8b6c1f8cc90d2ee76e947c59c623c76
[platform/core/system/sensord.git] / src / sensor / pedometer / sensor_frequency_compensator.h
1 /*
2  *  Copyright (c) 2016-2017 Samsung Electronics Co., Ltd.
3  *
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  */
16
17 #ifndef __SENSOR_FREQUENCY_COMPENSATOR_H_
18 #define __SENSOR_FREQUENCY_COMPENSATOR_H_
19
20 #include "common.h"
21
22 #include <memory>
23
24 /************************************************************************
25  * Stores frequency compensator state.
26  */
27 class sensor_frequency_compensator {
28 public:
29         sensor_frequency_compensator(double desired_rate);
30         ~sensor_frequency_compensator();
31
32         /************************************************************************
33          * Resets frequency compensator to initial state.
34          */
35         void reset();
36
37         /************************************************************************
38          * Filters input data.
39          *
40          * @param value
41          *              Data to filter.
42          * @result Filtered data.
43          */
44         void add(timestamp_t t, double *value);
45
46         /************************************************************************
47          */
48         bool has_next();
49
50         /************************************************************************
51          */
52         void get_next(double *value);
53
54 private:
55         long long m_desired_frequency;
56
57         timestamp_t m_t1;
58
59         double m_v1[3];
60
61         timestamp_t m_t2;
62
63         double m_v2[3];
64
65         timestamp_t m_timestamp;
66 };
67
68 #endif /* __SENSOR_FREQUENCY_COMPENSATOR_H_ */