Add comments about some reserved area
[platform/core/system/sensord.git] / include / sensor_types.h
1 /*
2  * sensord
3  *
4  * Copyright (c) 2016 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 __SENSOR_TYPES_H__
21 #define __SENSOR_TYPES_H__
22
23 /* TODO: It is for compatibility with capi-system-sensor */
24 #define __SENSOR_COMMON_H__
25
26 #include <stddef.h>
27 #include <stdint.h>
28 #include <sensor_hal_types.h>
29
30 #ifdef __cplusplus
31 extern "C"
32 {
33 #endif
34
35 #ifndef OP_SUCCESS
36 #define OP_SUCCESS 0
37 #endif
38 #ifndef OP_ERROR
39 #define OP_ERROR   -1
40 #endif
41 #ifndef OP_DEFAULT
42 #define OP_DEFAULT 1
43 #endif
44 #ifndef OP_CONTINUE
45 #define OP_CONTINUE 2
46 #endif
47 #ifndef NAME_MAX
48 #define NAME_MAX 256
49 #endif
50
51 #define SENSOR_TYPE_SHIFT 32
52 #define SENSOR_EVENT_SHIFT 16
53 #define SENSOR_INDEX_MASK 0xFFFFFFFF
54
55 #define CONVERT_ID_TYPE(id) ((id) >> SENSOR_TYPE_SHIFT)
56 #define CONVERT_TYPE_EVENT(type) ((type) << SENSOR_EVENT_SHIFT | 0x1)
57
58 #define MICROSECONDS(tv)        ((tv.tv_sec * 1000000ll) + tv.tv_usec)
59
60 #define SENSOR_UNKNOWN_TYPE "http://tizen.org/sensor/unknown"
61 #define SENSOR_UNKNOWN_NAME "Unknown"
62
63 typedef int64_t sensor_id_t;
64 typedef void *sensor_t;
65
66 typedef enum sensor_type_t {
67         UNKNOWN_SENSOR = -2,
68         ALL_SENSOR = -1,
69         ACCELEROMETER_SENSOR = 0,
70         GRAVITY_SENSOR,
71         LINEAR_ACCEL_SENSOR,
72         GEOMAGNETIC_SENSOR,
73         ROTATION_VECTOR_SENSOR,
74         ORIENTATION_SENSOR,
75         GYROSCOPE_SENSOR,
76         LIGHT_SENSOR,
77         PROXIMITY_SENSOR,
78         PRESSURE_SENSOR,
79         ULTRAVIOLET_SENSOR,
80         TEMPERATURE_SENSOR,
81         HUMIDITY_SENSOR,
82         HRM_SENSOR,
83         BIO_HRM_SENSOR = HRM_SENSOR,
84         HRM_LED_GREEN_SENSOR,
85         BIO_LED_GREEN_SENSOR = HRM_LED_GREEN_SENSOR,
86         HRM_LED_IR_SENSOR,
87         BIO_LED_IR_SENSOR = HRM_LED_IR_SENSOR,
88         HRM_LED_RED_SENSOR,
89         BIO_LED_RED_SENSOR = HRM_LED_RED_SENSOR,
90         GYROSCOPE_UNCAL_SENSOR,
91         GEOMAGNETIC_UNCAL_SENSOR,
92         GYROSCOPE_RV_SENSOR,
93         GEOMAGNETIC_RV_SENSOR,
94
95         SIGNIFICANT_MOTION_SENSOR = 0x100,
96
97         HRM_BATCH_SENSOR = 0x200,
98         HRM_LED_GREEN_BATCH_SENSOR,
99
100         HUMAN_PEDOMETER_SENSOR = 0x300,
101         HUMAN_SLEEP_MONITOR_SENSOR,
102         HUMAN_SLEEP_DETECTOR_SENSOR,
103         SLEEP_DETECTOR_SENSOR = HUMAN_SLEEP_DETECTOR_SENSOR,
104         HUMAN_STRESS_MONITOR_SENSOR,
105         STRESS_MONITOR_SENSOR = HUMAN_STRESS_MONITOR_SENSOR,
106
107         EXERCISE_WALKING_SENSOR = 0x400,
108         EXERCISE_RUNNING_SENSOR,
109         EXERCISE_HIKING_SENSOR,
110         EXERCISE_CYCLING_SENSOR,
111         EXERCISE_ELLIPTICAL_SENSOR,
112         EXERCISE_INDOOR_CYCLING_SENSOR,
113         EXERCISE_ROWING_SENSOR,
114         EXERCISE_STEPPER_SENSOR,
115
116         DATA_JOURNAL_SENSOR = 0x500,
117         // 0x500~0x600 Reserved
118
119         EXTERNAL_EXERCISE_SENSOR = 0x800,
120         EXERCISE_SENSOR = EXTERNAL_EXERCISE_SENSOR,
121
122         FUSION_SENSOR = 0x900,
123         AUTO_ROTATION_SENSOR,
124         AUTO_BRIGHTNESS_SENSOR,
125         MYOTEST_SENSOR,
126
127         GESTURE_MOVEMENT_SENSOR = 0x1200,
128         GESTURE_WRIST_UP_SENSOR,
129         GESTURE_WRIST_DOWN_SENSOR,
130         GESTURE_MOVEMENT_STATE_SENSOR,
131         GESTURE_PICK_UP_SENSOR,
132         GESTURE_FACE_DOWN_SENSOR,
133
134         ACTIVITY_TRACKER_SENSOR = 0x1A00,
135         ACTIVITY_LEVEL_MONITOR_SENSOR,
136         GPS_BATCH_SENSOR,
137         PPG_BATCH_SENSOR,
138         GPS_TIMESYNC_SENSOR,
139
140         HRM_CTRL_SENSOR = 0x1A80,
141         REG_CTRL_SENSOR,
142         GPS_CTRL_SENSOR,
143
144         WEAR_STATUS_SENSOR = 0x2000,
145         WEAR_ON_MONITOR_SENSOR,
146         NO_MOVE_DETECTOR_SENSOR,
147         RESTING_HR_SENSOR,
148         STEP_LEVEL_MONITOR_SENSOR,
149         EXERCISE_STANDALONE_SENSOR,
150         EXERCISE_COACH_SENSOR = EXERCISE_STANDALONE_SENSOR,
151         EXERCISE_HR_SENSOR,
152         WORKOUT_SENSOR,
153         AUTOSESSION_EXERCISE_SENSOR = WORKOUT_SENSOR,
154         CYCLE_MONITOR_SENSOR,
155         STAIR_TRACKER_SENSOR,
156         PRESSURE_INDICATOR_SENSOR,
157         PRESSURE_ALERT_SENSOR,
158         HR_CALORIE_SENSOR,
159         SWIMMING_TRACKER_SENSOR,
160         STRESS_TRACKER_SENSOR,
161         FAKE_MOTION_SENSOR,
162         GEOFENCE_SENSOR,
163         SWIMMING_OUTDOOR_SENSOR,
164         AUTO_SWIMMING_SENSOR,
165         INACTIVITY_DETECTOR_SENSOR,
166         HRM_BP_SENSOR,
167         ECG_SENSOR,
168         FALL_DETECTION_SENSOR,
169
170         CONTEXT_SENSOR = 0x7000,
171         MOTION_SENSOR,
172         PIR_SENSOR,
173         PIR_LONG_SENSOR,
174         DUST_SENSOR,
175         THERMOMETER_SENSOR,
176         PEDOMETER_SENSOR,
177         FLAT_SENSOR,
178         HRM_RAW_SENSOR,
179         BIO_SENSOR = HRM_RAW_SENSOR,
180         TILT_SENSOR,
181         RV_RAW_SENSOR,
182         GSR_SENSOR,
183         SIMSENSE_SENSOR,
184         PPG_SENSOR,
185
186         CUSTOM_SENSOR = 0X9000,
187 } sensor_type_t;
188
189 typedef struct sensor_info2_t {
190         uint32_t id;
191         sensor_type_t type;
192         const char *uri;
193         const char *vendor;
194         float min_range;
195         float max_range;
196         float resolution;
197         int min_interval;
198         int max_batch_count;
199         bool wakeup_supported;
200         const char *privilege;
201         void *reserved[8];
202 } sensor_info2_t;
203
204 typedef enum sensor_privilege_t {
205         SENSOR_PRIVILEGE_PUBLIC = 0,
206 } sensor_privilege_t;
207
208 typedef struct sensor_event_t {
209         unsigned int event_type;
210         sensor_id_t sensor_id;
211         unsigned int data_length;
212         sensor_data_t *data;
213 } sensor_event_t;
214
215 /*
216  *      To prevent naming confliction as using same enums as sensor CAPI use
217  */
218 #ifndef __SENSOR_H__
219 enum sensor_option_t {
220         SENSOR_OPTION_DEFAULT = 0,
221         SENSOR_OPTION_ON_IN_SCREEN_OFF = 1,
222         SENSOR_OPTION_ON_IN_POWERSAVE_MODE = 2,
223         SENSOR_OPTION_ALWAYS_ON = SENSOR_OPTION_ON_IN_SCREEN_OFF | SENSOR_OPTION_ON_IN_POWERSAVE_MODE,
224         SENSOR_OPTION_END
225 };
226
227 typedef enum sensor_option_t sensor_option_e;
228 #endif
229
230 enum sensord_attribute_e {
231         SENSORD_ATTRIBUTE_AXIS_ORIENTATION = 1,
232         SENSORD_ATTRIBUTE_PAUSE_POLICY,
233         SENSORD_ATTRIBUTE_INTERVAL = 0x10,
234         SENSORD_ATTRIBUTE_MAX_BATCH_LATENCY,
235         SENSORD_ATTRIBUTE_PASSIVE_MODE,
236         SENSORD_ATTRIBUTE_FLUSH,
237         // 0x50~0x80 Reserved
238 };
239
240 enum sensord_axis_e {
241         SENSORD_AXIS_DEVICE_ORIENTED = 1,
242         SENSORD_AXIS_DISPLAY_ORIENTED,
243 };
244
245 enum sensord_pause_e {
246         SENSORD_PAUSE_NONE = 0,
247         SENSORD_PAUSE_ON_DISPLAY_OFF = 1,
248         SENSORD_PAUSE_ON_POWERSAVE_MODE = 2,
249         SENSORD_PAUSE_ALL = 3,
250         SENSORD_PAUSE_END,
251 };
252
253 enum poll_interval_t {
254         POLL_100HZ_MS   = 10,
255         POLL_50HZ_MS    = 20,
256         POLL_25HZ_MS    = 40,
257         POLL_20HZ_MS    = 50,
258         POLL_10HZ_MS    = 100,
259         POLL_5HZ_MS             = 200,
260         POLL_1HZ_MS             = 1000,
261         POLL_MAX_HZ_MS  = 255000,
262 };
263
264 #define DEFAULT_INTERVAL POLL_10HZ_MS
265
266 enum sensor_interval_t {
267         SENSOR_INTERVAL_FASTEST = POLL_100HZ_MS,
268         SENSOR_INTERVAL_NORMAL = POLL_5HZ_MS,
269 };
270
271 enum proxi_change_state {
272         PROXIMITY_STATE_NEAR = 0,
273         PROXIMITY_STATE_FAR = 1,
274 };
275
276 enum auto_rotation_state {
277         AUTO_ROTATION_DEGREE_UNKNOWN = 0,
278         AUTO_ROTATION_DEGREE_0,
279         AUTO_ROTATION_DEGREE_90,
280         AUTO_ROTATION_DEGREE_180,
281         AUTO_ROTATION_DEGREE_270,
282 };
283
284 #ifdef __cplusplus
285 }
286 #endif
287
288 #include <sensor_deprecated.h>
289
290 #endif /* __SENSOR_TYPES_H__ */