c723fe63f89081b44d5e0df429acd1793ec661d1
[platform/core/system/sensord.git] / src / geo / geo_sensor_hal.h
1 /*
2  * sensord
3  *
4  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 #ifndef _GEO_SENSOR_HAL_H_
21 #define _GEO_SENSOR_HAL_H_
22
23 #include <sensor_hal.h>
24 #include <string>
25
26 #define IIO_DIR                 "/sys/bus/iio/devices/"
27 #define X_RAW_VAL_NODE  "/in_magn_x_raw"
28 #define Y_RAW_VAL_NODE  "/in_magn_y_raw"
29 #define Z_RAW_VAL_NODE  "/in_magn_z_raw"
30 #define X_SCALE_NODE    "/in_magn_x_scale"
31 #define Y_SCALE_NODE    "/in_magn_y_scale"
32 #define Z_SCALE_NODE    "/in_magn_z_scale"
33 #define NAME_NODE               "/name"
34
35 using std::string;
36
37 class geo_sensor_hal : public sensor_hal
38 {
39 public:
40         geo_sensor_hal();
41         virtual ~geo_sensor_hal();
42         string get_model_id(void);
43         sensor_type_t get_type(void);
44         bool enable(void);
45         bool disable(void);
46         bool set_interval(unsigned long val);
47         bool is_data_ready(bool wait);
48         virtual int get_sensor_data(sensor_data_t &data);
49         bool get_properties(sensor_properties_t &properties);
50         bool check_hw_node(void);
51
52 private:
53         double m_x;
54         double m_y;
55         double m_z;
56         double m_x_scale;
57         double m_y_scale;
58         double m_z_scale;
59
60         unsigned long m_polling_interval;
61         unsigned long long m_fired_time;
62         bool m_sensorhub_supported;
63
64         string m_model_id;
65         string m_name;
66         string m_vendor;
67         string m_chip_name;
68
69         string m_x_node;
70         string m_y_node;
71         string m_z_node;
72         string m_x_scale_node;
73         string m_y_scale_node;
74         string m_z_scale_node;
75
76         cmutex m_value_mutex;
77
78         bool enable_resource(string &resource_node, bool enable);
79         bool update_value(void);
80         bool is_sensorhub_supported(void);
81         bool init_resources(void);
82 };
83 #endif /*_GEO_SENSOR_HAL_H_*/