Add more sensor_attribute values
[platform/core/system/sensord.git] / include / sensor_hal_types.h
1 /*
2  * Copyright (c) 2016 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
18 #ifndef _SENSOR_HAL_TYPES_H_
19 #define _SENSOR_HAL_TYPES_H_
20
21 #include <stdint.h>
22 #include <stdbool.h>
23 #include <time.h>
24
25 #define SENSOR_HAL_VERSION(maj, min) \
26                 ((((maj) & 0xFFFF) << 24) | ((min) & 0xFFFF))
27
28 #ifdef __cplusplus
29 extern "C"
30 {
31 #endif /* __cplusplus */
32
33 /*
34  * Sensor Types
35  * These types are used to controll the sensors
36  *
37  * - base unit
38  *   acceleration values : meter per second^2 (m/s^2)
39  *   magnetic values     : micro-Tesla (uT)
40  *   orientation values  : degrees
41  *   gyroscope values    : degree/s
42  *   temperature values  : degrees centigrade
43  *   proximity valeus    : distance
44  *   light values        : lux
45  *   pressure values     : hectopascal (hPa)
46  *   humidity            : relative humidity (%)
47  */
48 typedef enum {
49         SENSOR_DEVICE_UNKNOWN = -2,
50         SENSOR_DEVICE_ALL = -1,
51         SENSOR_DEVICE_ACCELEROMETER,
52         SENSOR_DEVICE_GRAVITY,
53         SENSOR_DEVICE_LINEAR_ACCELERATION,
54         SENSOR_DEVICE_GEOMAGNETIC,
55         SENSOR_DEVICE_ROTATION_VECTOR,
56         SENSOR_DEVICE_ORIENTATION,
57         SENSOR_DEVICE_GYROSCOPE,
58         SENSOR_DEVICE_LIGHT,
59         SENSOR_DEVICE_PROXIMITY,
60         SENSOR_DEVICE_PRESSURE,
61         SENSOR_DEVICE_ULTRAVIOLET,
62         SENSOR_DEVICE_TEMPERATURE,
63         SENSOR_DEVICE_HUMIDITY,
64         SENSOR_DEVICE_HRM,
65         SENSOR_DEVICE_HRM_LED_GREEN,
66         SENSOR_DEVICE_HRM_LED_IR,
67         SENSOR_DEVICE_HRM_LED_RED,
68         SENSOR_DEVICE_GYROSCOPE_UNCAL,
69         SENSOR_DEVICE_GEOMAGNETIC_UNCAL,
70         SENSOR_DEVICE_GYROSCOPE_RV,
71         SENSOR_DEVICE_GEOMAGNETIC_RV,
72
73         SENSOR_DEVICE_SIGNIFICANT_MOTION = 0x100,
74
75         SENSOR_DEVICE_HRM_BATCH = 0x200,
76         SENSOR_DEVICE_HRM_LED_GREEN_BATCH,
77
78         SENSOR_DEVICE_HUMAN_PEDOMETER = 0x300,
79         SENSOR_DEVICE_HUMAN_SLEEP_MONITOR,
80         SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR,
81         SENSOR_DEVICE_HUMAN_STRESS_MONITOR,
82
83         SENSOR_DEVICE_EXERCISE_WALKING = 0x400,
84         SENSOR_DEVICE_EXERCISE_RUNNING,
85         SENSOR_DEVICE_EXERCISE_HIKING,
86         SENSOR_DEVICE_EXERCISE_CYCLING,
87         SENSOR_DEVICE_EXERCISE_ELLIPTICAL,
88         SENSOR_DEVICE_EXERCISE_INDOOR_CYCLING,
89         SENSOR_DEVICE_EXERCISE_ROWING,
90         SENSOR_DEVICE_EXERCISE_STEPPER,
91
92         SENSOR_DEVICE_DATA_JOURNAL = 0x500,
93
94         SENSOR_DEVICE_FUSION = 0x900,
95         SENSOR_DEVICE_AUTO_ROTATION,
96         SENSOR_DEVICE_AUTO_BRIGHTNESS,
97         SENSOR_DEVICE_MYOTEST,
98
99         SENSOR_DEVICE_GESTURE_MOVEMENT = 0x1200,
100         SENSOR_DEVICE_GESTURE_WRIST_UP,
101         SENSOR_DEVICE_GESTURE_WRIST_DOWN,
102         SENSOR_DEVICE_GESTURE_MOVEMENT_STATE,
103         SENSOR_DEVICE_GESTURE_PICK_UP,
104         SENSOR_DEVICE_GESTURE_FACE_DOWN,
105
106         SENSOR_DEVICE_ACTIVITY_TRACKER = 0x1A00,
107         SENSOR_DEVICE_ACTIVITY_LEVEL_MONITOR,
108         SENSOR_DEVICE_GPS_BATCH,
109         SENSOR_DEVICE_PPG_BATCH,
110         SENSOR_DEVICE_GPS_TIMESYNC,
111
112         SENSOR_DEVICE_HRM_CTRL = 0x1A80,
113         SENSOR_DEVICE_REG_CTRL,
114         SENSOR_DEVICE_GPS_CTRL,
115
116         SENSOR_DEVICE_WEAR_STATUS = 0x2000,
117         SENSOR_DEVICE_WEAR_ON_MONITOR,
118         SENSOR_DEVICE_NO_MOVE_DETECTOR,
119         SENSOR_DEVICE_RESTING_HR,
120         SENSOR_DEVICE_STEP_LEVEL_MONITOR,
121         SENSOR_DEVICE_EXERCISE_STANDALONE,
122         SENSOR_DEVICE_EXERCISE_HR,
123         SENSOR_DEVICE_WORKOUT,
124         SENSOR_DEVICE_CYCLE_MONITOR,
125         SENSOR_DEVICE_STAIR_TRACKER,
126         SENSOR_DEVICE_PRESSURE_INDICATOR,
127         SENSOR_DEVICE_PRESSURE_ALERT,
128         SENSOR_DEVICE_HR_CALORIE,
129         SENSOR_DEVICE_SWIMMING_TRACKER,
130         SENSOR_DEVICE_STRESS_TRACKER,
131         SENSOR_DEVICE_FAKE_MOTION,
132         SENSOR_DEVICE_GEOFENCE,
133         SENSOR_DEVICE_SWIMMING_OUTDOOR,
134         SENSOR_DEVICE_AUTO_SWIMMING,
135         SENSOR_DEVICE_INACTIVITY_DETECTOR,
136         SENSOR_DEVICE_HRM_BP,
137         SENSOR_DEVICE_ECG,
138         SENSOR_DEVICE_FALL_DETECTION,
139
140         SENSOR_DEVICE_CONTEXT = 0x7000,
141         SENSOR_DEVICE_MOTION,
142         SENSOR_DEVICE_PIR,
143         SENSOR_DEVICE_PIR_LONG,
144         SENSOR_DEVICE_DUST,
145         SENSOR_DEVICE_THERMOMETER,
146         SENSOR_DEVICE_PEDOMETER,
147         SENSOR_DEVICE_FLAT,
148         SENSOR_DEVICE_HRM_RAW,
149         SENSOR_DEVICE_TILT,
150         SENSOR_DEVICE_ROTATION_VECTOR_RAW,
151         SENSOR_DEVICE_GSR,
152         SENSOR_DEVICE_SIMSENSE,
153         SENSOR_DEVICE_PPG,
154 } sensor_device_type;
155
156 /*
157  * A platform sensor handler is generated based on this handle
158  * This id can be assigned from HAL developer. so it has to be unique in 1 sensor_device.
159  */
160 typedef struct sensor_info_t {
161         uint32_t id;
162         const char *name;
163         sensor_device_type type;
164         unsigned int event_type; // for Internal API
165         const char *model_name;
166         const char *vendor;
167         float min_range;
168         float max_range;
169         float resolution;
170         int min_interval;
171         int max_batch_count;
172         bool wakeup_supported;
173 } sensor_info_t;
174
175 enum sensor_accuracy_t {
176         SENSOR_ACCURACY_UNDEFINED = -1,
177         SENSOR_ACCURACY_BAD = 0,
178         SENSOR_ACCURACY_NORMAL = 1,
179         SENSOR_ACCURACY_GOOD = 2,
180         SENSOR_ACCURACY_VERYGOOD = 3
181 };
182
183 #define SENSOR_DATA_VALUE_SIZE 16
184
185 /* sensor_data_t */
186 typedef struct sensor_data_t {
187         int accuracy;
188         unsigned long long timestamp;
189         int value_count;
190         float values[SENSOR_DATA_VALUE_SIZE];
191 } sensor_data_t;
192
193 #define SENSORHUB_DATA_VALUE_SIZE 4096
194
195 /* sensorhub_data_t */
196 typedef struct sensorhub_data_t {
197         int accuracy;
198         unsigned long long timestamp;
199
200         /*
201          *  Use "value_count" instead of "hub_data_size"
202          *  which is going to be removed soon
203          */
204         union {
205                 int value_count;
206                 int hub_data_size; /* deprecated */
207         };
208
209         /*
210          *  Use "values" instead of "hub_data"
211          *  which is going to be removed soon
212          */
213         union {
214                 char values[SENSORHUB_DATA_VALUE_SIZE];
215                 char hub_data[SENSORHUB_DATA_VALUE_SIZE]; /* deprecated */
216         };
217 } sensorhub_data_t;
218
219 #define SENSOR_PEDOMETER_DATA_DIFFS_SIZE        20
220
221 typedef struct {
222         int accuracy;
223         unsigned long long timestamp;
224         int value_count;        /* value_count == 8 */
225         float values[SENSOR_DATA_VALUE_SIZE];
226         /* values = {step count, walk step count, run step count,
227                      moving distance, calorie burned, last speed,
228                      last stepping frequency (steps per sec),
229                      last step status (walking, running, ...)} */
230         /* Additional data attributes (not in sensor_data_t)*/
231         int diffs_count;
232         struct differences {
233                 int timestamp;
234                 int steps;
235                 int walk_steps;
236                 int run_steps;
237                 int walk_up_steps;
238                 int walk_down_steps;
239                 int run_up_steps;
240                 int run_down_steps;
241                 float distance;
242                 float calories;
243                 float speed;
244         } diffs[SENSOR_PEDOMETER_DATA_DIFFS_SIZE];
245 } sensor_pedometer_data_t;
246
247 #define CONVERT_TYPE_ATTR(type, index) ((type) << 8 | 0x80 | (index))
248
249 enum sensor_attribute {
250         SENSOR_ATTR_ACCELEROMETER_INJECTION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_ACCELEROMETER, 0xFF),
251         SENSOR_ATTR_ACTIVITY = CONVERT_TYPE_ATTR(SENSOR_DEVICE_ACTIVITY_TRACKER, 0x1),
252
253         SENSOR_ATTR_HRM_BATCH_OPR_MODE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x1),
254         SENSOR_ATTR_HRM_BATCH_ACTIVITY_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x2),
255         SENSOR_ATTR_HRM_BATCH_BATCH_DUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x3),
256         SENSOR_ATTR_HRM_BATCH_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x4),
257         SENSOR_ATTR_HRM_BATCH_ELEVATED_DUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x5),
258         SENSOR_ATTR_HRM_BATCH_ELEVATED_THR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x6),
259         SENSOR_ATTR_HRM_BATCH_BPM_RAW = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x7),
260         SENSOR_ATTR_HRM_BATCH_LOW_ALERT_DUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x8),
261         SENSOR_ATTR_HRM_BATCH_LOW_ALERT_THR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x9),
262
263         SENSOR_ATTR_HRM_LED_GREEN_BATCH_POLLING_INTERVAL = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x1),
264         SENSOR_ATTR_HRM_LED_GREEN_BATCH_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x2),
265         SENSOR_ATTR_HRM_LED_GREEN_BATCH_BATCH_PERIOD = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x3),
266
267         SENSOR_ATTR_PEDOMETER_HEIGHT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x1),
268         SENSOR_ATTR_PEDOMETER_WEIGHT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x2),
269         SENSOR_ATTR_PEDOMETER_GENDER = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x3),
270         SENSOR_ATTR_PEDOMETER_AGE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x4),
271         SENSOR_ATTR_PEDOMETER_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x2F),
272
273         SENSOR_ATTR_STRESS_MONITOR_AGE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x1),
274
275         SENSOR_ATTR_EXERCISE_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x1),
276         SENSOR_ATTR_EXERCISE_GPS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x2),
277         SENSOR_ATTR_EXERCISE_BATCH_INTERVAL = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x3),
278         SENSOR_ATTR_EXERCISE_PSERVICE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x4),
279
280         SENSOR_ATTR_CYCLE_DURATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x1),
281         SENSOR_ATTR_CYCLE_HOLDING_POSITION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x2),
282         SENSOR_ATTR_CYCLE_VELOCITY = CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x3),
283         SENSOR_ATTR_CYCLE_GET_DATA_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x4),
284         SENSOR_ATTR_CYCLE_DATA_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x5),
285         SENSOR_ATTR_CYCLE_GPS_AGREEMENT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x6),
286
287         SENSOR_ATTR_WORKOUT_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_WORKOUT, 0x1),
288         SENSOR_ATTR_WORKOUT_DURATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_WORKOUT, 0x2),
289
290         SENSOR_ATTR_RESTING_HR_OPR_MODE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x1),
291         SENSOR_ATTR_RESTING_HR_MAX_RHR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x2),
292         SENSOR_ATTR_RESTING_HR_MIN_RHR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x3),
293         SENSOR_ATTR_RESTING_HR_AVG_RHR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x4),
294         SENSOR_ATTR_RESTING_HR_HOUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x5),
295         SENSOR_ATTR_RESTING_HR_MIN = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x6),
296         SENSOR_ATTR_RESTING_HR_SEC = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x7),
297         SENSOR_ATTR_RESTING_HR_PROPERTY_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x10),
298         SENSOR_ATTR_RESTING_HR_PROPERTY_HR_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x11),
299         SENSOR_ATTR_RESTING_HR_PROPERTY_HR_VALUE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x12),
300         SENSOR_ATTR_RESTING_HR_PROPERTY_DURATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x13),
301         SENSOR_ATTR_RESTING_HR_PROPERTY_ACT_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x14),
302         SENSOR_ATTR_RESTING_HR_PROPERTY_ACT_DUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x15),
303         SENSOR_ATTR_RESTING_HR_PROPERTY_CONT_DUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x16),
304         SENSOR_ATTR_RESTING_HR_DATA_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x20),
305         SENSOR_ATTR_RESTING_HR_DATA_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x21),
306
307         SENSOR_ATTR_STEP_LEVEL_MONITOR_DW_DURATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_STEP_LEVEL_MONITOR, 0x1),
308
309         SENSOR_ATTR_EXERCISE_HR_OPR_MODE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x1),
310         SENSOR_ATTR_EXERCISE_HR_ACTIVITY_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x2),
311         SENSOR_ATTR_EXERCISE_HR_BATCH_DUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x3),
312         SENSOR_ATTR_EXERCISE_HR_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x4),
313         SENSOR_ATTR_EXERCISE_HR_ELEVATED_DUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x5),
314         SENSOR_ATTR_EXERCISE_HR_ELEVATED_THR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x6),
315         SENSOR_ATTR_EXERCISE_HR_BPM_RAW = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x7),
316         SENSOR_ATTR_EXERCISE_HR_LOW_ALERT_DUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x8),
317         SENSOR_ATTR_EXERCISE_HR_LOW_ALERT_THR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x9),
318
319         SENSOR_ATTR_PRESSURE_INDICATOR_START = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x1),
320         SENSOR_ATTR_PRESSURE_INDICATOR_STOP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x2),
321         SENSOR_ATTR_PRESSURE_INDICATOR_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x3),
322         SENSOR_ATTR_PRESSURE_INDICATOR_RESTORE_TIME = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x4),
323         SENSOR_ATTR_PRESSURE_INDICATOR_RESTORE_VALUE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x5),
324         SENSOR_ATTR_PRESSURE_INDICATOR_CURRENT_TIME = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x6),
325
326         SENSOR_ATTR_PRESSURE_ALERT_START = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_ALERT, 0x1),
327         SENSOR_ATTR_PRESSURE_ALERT_STOP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_ALERT, 0x2),
328
329         SENSOR_ATTR_HR_CALORIE_AGE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x1),
330         SENSOR_ATTR_HR_CALORIE_HEIGHT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x2),
331         SENSOR_ATTR_HR_CALORIE_WEIGHT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x3),
332         SENSOR_ATTR_HR_CALORIE_GENDER = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x4),
333         SENSOR_ATTR_HR_CALORIE_INST = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x10),
334         SENSOR_ATTR_HR_CALORIE_EXERCISE_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x11),
335         SENSOR_ATTR_HR_CALORIE_TARGET_CAL = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x12),
336         SENSOR_ATTR_HR_CALORIE_MAX_HEARTRATE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x13),
337         SENSOR_ATTR_HR_CALORIE_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x20),
338
339         SENSOR_ATTR_SWIMMING_TRACKER_PLACE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x1),
340         SENSOR_ATTR_SWIMMING_TRACKER_DISTANCE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x2),
341         SENSOR_ATTR_SWIMMING_TRACKER_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x3),
342         SENSOR_ATTR_SWIMMING_TRACKER_BATCH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x4),
343         SENSOR_ATTR_SWIMMING_TRACKER_GOAL_CALORIES = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x5),
344         SENSOR_ATTR_SWIMMING_TRACKER_GOAL_LAPS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x6),
345         SENSOR_ATTR_SWIMMING_TRACKER_TIME_REST = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x7),
346         SENSOR_ATTR_SWIMMING_TRACKER_TIME_TURN = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x8),
347
348         SENSOR_ATTR_SWIMMING_OUTDOOR_SET_BATCH_LAP_COUNT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x1),
349         SENSOR_ATTR_SWIMMING_OUTDOOR_SETGOAL_LENGTH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x2),
350         SENSOR_ATTR_SWIMMING_OUTDOOR_SETGOAL_TIME = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x3),
351         SENSOR_ATTR_SWIMMING_OUTDOOR_SET_GPS_PERMISSION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x4),
352         SENSOR_ATTR_SWIMMING_OUTDOOR_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x6),
353
354         SENSOR_ATTR_AUTO_SWIMMING_DURATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_AUTO_SWIMMING, 0x1),
355
356         SENSOR_ATTR_INACTIVITY_DETECTOR_LEVEL = CONVERT_TYPE_ATTR(SENSOR_DEVICE_INACTIVITY_DETECTOR, 0x1),
357         SENSOR_ATTR_INACTIVITY_DETECTOR_DURATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_INACTIVITY_DETECTOR, 0x2),
358
359         SENSOR_ATTR_STRESS_TRACKER_DUR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_STRESS_TRACKER, 0x1),
360         SENSOR_ATTR_STRESS_TRACKER_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_STRESS_TRACKER, 0x2),
361
362         SENSOR_ATTR_STRESS_MONITOR_BASE_HR = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x1),
363         SENSOR_ATTR_STRESS_MONITOR_HISTO_INDEX = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x2),
364         SENSOR_ATTR_STRESS_MONITOR_HISTO_VALUE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x3),
365         SENSOR_ATTR_STRESS_MONITOR_TUNE_INDEX = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x4),
366         SENSOR_ATTR_STRESS_MONITOR_TUNE_VALUE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x5),
367         SENSOR_ATTR_STRESS_MONITOR_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x6),
368         SENSOR_ATTR_STRESS_MONITOR_OPERATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x7),
369
370         SENSOR_ATTR_SLEEP_MONITOR_STOP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_MONITOR, 0x1),
371         SENSOR_ATTR_SLEEP_MONITOR_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_MONITOR, 0x2),
372
373         SENSOR_ATTR_SLEEP_DETECTOR_STOP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR, 0x1),
374         SENSOR_ATTR_SLEEP_DETECTOR_SETTING = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR, 0x2),
375
376         SENSOR_ATTR_DATA_JOURNAL_START = CONVERT_TYPE_ATTR(SENSOR_DEVICE_DATA_JOURNAL, 0x1),
377         SENSOR_ATTR_DATA_JOURNAL_STOP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_DATA_JOURNAL, 0x2),
378
379         SENSOR_ATTR_GPS_BATCH_OPR_MODE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GPS_BATCH, 0x1),
380
381         SENSOR_ATTR_PPG_BATCH_POLLING_INTERVAL = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PPG_BATCH, 0x1),
382         SENSOR_ATTR_PPG_BATCH_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PPG_BATCH, 0x2),
383
384         SENSOR_ATTR_REG_CTRL_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x1),
385         SENSOR_ATTR_REG_CTRL_ADDRESS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x2),
386         SENSOR_ATTR_REG_CTRL_VALUE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x3),
387         SENSOR_ATTR_REG_CTRL_MODE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x4),
388
389         SENSOR_ATTR_GPS_CTRL_SETTING = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GPS_CTRL, 0x1),
390
391         SENSOR_ATTR_FAKE_MOTION_EVENT_INTERVAL = CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x1),
392         SENSOR_ATTR_FAKE_MOTION_EVENT_COUNT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x2),
393         SENSOR_ATTR_FAKE_MOTION_PAUSE_INTERVAL = CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x3),
394
395         SENSOR_ATTR_GEOFENCE_ID = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x1),
396         SENSOR_ATTR_GEOFENCE_LAT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x2),
397         SENSOR_ATTR_GEOFENCE_LON = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x3),
398         SENSOR_ATTR_GEOFENCE_RADIUS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x4),
399         SENSOR_ATTR_GEOFENCE_PROVIDER = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x5),
400         SENSOR_ATTR_GEOFENCE_ACCURACY = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x6),
401         SENSOR_ATTR_GEOFENCE_TIMESTAMP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x7),
402         SENSOR_ATTR_GEOFENCE_CONNECT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x8),
403         SENSOR_ATTR_GEOFENCE_START = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x10),
404         SENSOR_ATTR_GEOFENCE_STOP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x11),
405         SENSOR_ATTR_GEOFENCE_SET_LOCATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x12),
406         SENSOR_ATTR_GEOFENCE_BT_CONNECT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x13),
407
408         SENSOR_ATTR_FALL_DETECTION_OPR_MODE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_FALL_DETECTION, 0x1),
409 };
410
411 enum sensor_activity {
412         SENSOR_ACTIVITY_UNKNOWN = 1,
413         SENSOR_ACTIVITY_STILL = 2,
414         SENSOR_ACTIVITY_WALKING = 4,
415         SENSOR_ACTIVITY_RUNNING = 8,
416         SENSOR_ACTIVITY_IN_VEHICLE = 16,
417         SENSOR_ACTIVITY_ON_BICYCLE = 32,
418 };
419
420 #ifdef __cplusplus
421 }
422 #endif /* __cplusplus */
423
424 #endif /* _SENSOR_HAL_TYPES_H_ */