2 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 #ifndef __HAL_SENSOR_TYPES__
18 #define __HAL_SENSOR_TYPES__
24 #define SENSOR_HAL_VERSION(maj, min) ((((maj)&0xFFFF) << 24) | ((min)&0xFFFF))
28 #endif /* __cplusplus */
32 * These types are used to controll the sensors
35 * acceleration values : meter per second^2 (m/s^2)
36 * magnetic values : micro-Tesla (uT)
37 * orientation values : degrees
38 * gyroscope values : degree/s
39 * temperature values : degrees centigrade
40 * proximity valeus : distance
42 * pressure values : hectopascal (hPa)
43 * humidity : relative humidity (%)
46 SENSOR_DEVICE_UNKNOWN = -2,
47 SENSOR_DEVICE_ALL = -1,
48 SENSOR_DEVICE_ACCELEROMETER,
49 SENSOR_DEVICE_GRAVITY,
50 SENSOR_DEVICE_LINEAR_ACCELERATION,
51 SENSOR_DEVICE_GEOMAGNETIC,
52 SENSOR_DEVICE_ROTATION_VECTOR,
53 SENSOR_DEVICE_ORIENTATION,
54 SENSOR_DEVICE_GYROSCOPE,
56 SENSOR_DEVICE_PROXIMITY,
57 SENSOR_DEVICE_PRESSURE,
58 SENSOR_DEVICE_ULTRAVIOLET,
59 SENSOR_DEVICE_TEMPERATURE,
60 SENSOR_DEVICE_HUMIDITY,
62 SENSOR_DEVICE_HRM_LED_GREEN,
63 SENSOR_DEVICE_HRM_LED_IR,
64 SENSOR_DEVICE_HRM_LED_RED,
65 SENSOR_DEVICE_GYROSCOPE_UNCAL,
66 SENSOR_DEVICE_GEOMAGNETIC_UNCAL,
67 SENSOR_DEVICE_GYROSCOPE_RV,
68 SENSOR_DEVICE_GEOMAGNETIC_RV,
70 SENSOR_DEVICE_SIGNIFICANT_MOTION = 0x100,
72 SENSOR_DEVICE_HRM_BATCH = 0x200,
73 SENSOR_DEVICE_HRM_LED_GREEN_BATCH,
75 SENSOR_DEVICE_HUMAN_PEDOMETER = 0x300,
76 SENSOR_DEVICE_HUMAN_SLEEP_MONITOR,
77 SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR,
78 SENSOR_DEVICE_HUMAN_STRESS_MONITOR,
80 SENSOR_DEVICE_EXERCISE_WALKING = 0x400,
81 SENSOR_DEVICE_EXERCISE_RUNNING,
82 SENSOR_DEVICE_EXERCISE_HIKING,
83 SENSOR_DEVICE_EXERCISE_CYCLING,
84 SENSOR_DEVICE_EXERCISE_ELLIPTICAL,
85 SENSOR_DEVICE_EXERCISE_INDOOR_CYCLING,
86 SENSOR_DEVICE_EXERCISE_ROWING,
87 SENSOR_DEVICE_EXERCISE_STEPPER,
89 SENSOR_DEVICE_DATA_JOURNAL = 0x500,
90 SENSOR_DEVICE_MOTION_SENSOR,
92 SENSOR_DEVICE_TAP_SENSOR,
93 SENSOR_DEVICE_COLOR_SENSOR,
94 SENSOR_DEVICE_WIFI_MOTION_DETECTOR,
96 SENSOR_DEVICE_FUSION = 0x900,
97 SENSOR_DEVICE_AUTO_ROTATION,
98 SENSOR_DEVICE_AUTO_BRIGHTNESS,
99 SENSOR_DEVICE_MYOTEST,
101 SENSOR_DEVICE_GESTURE_MOVEMENT = 0x1200,
102 SENSOR_DEVICE_GESTURE_WRIST_UP,
103 SENSOR_DEVICE_GESTURE_WRIST_DOWN,
104 SENSOR_DEVICE_GESTURE_MOVEMENT_STATE,
105 SENSOR_DEVICE_GESTURE_PICK_UP,
106 SENSOR_DEVICE_GESTURE_FACE_DOWN,
108 SENSOR_DEVICE_ACTIVITY_TRACKER = 0x1A00,
109 SENSOR_DEVICE_ACTIVITY_LEVEL_MONITOR,
110 SENSOR_DEVICE_GPS_BATCH,
111 SENSOR_DEVICE_PPG_BATCH,
112 SENSOR_DEVICE_GPS_TIMESYNC,
114 SENSOR_DEVICE_HRM_CTRL = 0x1A80,
115 SENSOR_DEVICE_REG_CTRL,
116 SENSOR_DEVICE_GPS_CTRL,
118 SENSOR_DEVICE_WEAR_STATUS = 0x2000,
119 SENSOR_DEVICE_WEAR_ON_MONITOR,
120 SENSOR_DEVICE_NO_MOVE_DETECTOR,
121 SENSOR_DEVICE_RESTING_HR,
122 SENSOR_DEVICE_STEP_LEVEL_MONITOR,
123 SENSOR_DEVICE_EXERCISE_STANDALONE,
124 SENSOR_DEVICE_EXERCISE_HR,
125 SENSOR_DEVICE_WORKOUT,
126 SENSOR_DEVICE_CYCLE_MONITOR,
127 SENSOR_DEVICE_STAIR_TRACKER,
128 SENSOR_DEVICE_PRESSURE_INDICATOR,
129 SENSOR_DEVICE_PRESSURE_ALERT,
130 SENSOR_DEVICE_HR_CALORIE,
131 SENSOR_DEVICE_SWIMMING_TRACKER,
132 SENSOR_DEVICE_STRESS_TRACKER,
133 SENSOR_DEVICE_FAKE_MOTION,
134 SENSOR_DEVICE_GEOFENCE,
135 SENSOR_DEVICE_SWIMMING_OUTDOOR,
136 SENSOR_DEVICE_AUTO_SWIMMING,
137 SENSOR_DEVICE_INACTIVITY_DETECTOR,
138 SENSOR_DEVICE_HRM_BP,
140 SENSOR_DEVICE_FALL_DETECTION,
142 SENSOR_DEVICE_LIDAR = 0x3000,
144 SENSOR_DEVICE_CONTEXT = 0x7000,
145 SENSOR_DEVICE_MOTION,
147 SENSOR_DEVICE_PIR_LONG,
149 SENSOR_DEVICE_THERMOMETER,
150 SENSOR_DEVICE_PEDOMETER,
152 SENSOR_DEVICE_HRM_RAW,
154 SENSOR_DEVICE_ROTATION_VECTOR_RAW,
156 SENSOR_DEVICE_SIMSENSE,
158 } sensor_device_type;
161 * A platform sensor handler is generated based on this handle
162 * This id can be assigned from HAL developer. so it has to be unique in 1
165 typedef struct sensor_info_t {
168 int type; // sensor_device_type
169 unsigned int event_type; // for Internal API
170 const char *model_name;
177 bool wakeup_supported;
180 enum sensor_accuracy_t {
181 SENSOR_ACCURACY_UNDEFINED = -1,
182 SENSOR_ACCURACY_BAD = 0,
183 SENSOR_ACCURACY_NORMAL = 1,
184 SENSOR_ACCURACY_GOOD = 2,
185 SENSOR_ACCURACY_VERYGOOD = 3
188 #define SENSOR_DATA_VALUE_SIZE 16
191 typedef struct sensor_data_t {
193 unsigned long long timestamp;
195 float values[SENSOR_DATA_VALUE_SIZE];
198 #define SENSORHUB_DATA_VALUE_SIZE 4096
200 /* sensorhub_data_t */
201 typedef struct sensorhub_data_t {
203 unsigned long long timestamp;
206 * Use "value_count" instead of "hub_data_size"
207 * which is going to be removed soon
211 int hub_data_size; /* deprecated */
215 * Use "values" instead of "hub_data"
216 * which is going to be removed soon
219 char values[SENSORHUB_DATA_VALUE_SIZE];
220 char hub_data[SENSORHUB_DATA_VALUE_SIZE]; /* deprecated */
224 #define SENSOR_PEDOMETER_DATA_DIFFS_SIZE 20
228 unsigned long long timestamp;
229 int value_count; /* value_count == 8 */
230 float values[SENSOR_DATA_VALUE_SIZE];
231 /* values = {step count, walk step count, run step count,
232 moving distance, calorie burned, last speed,
233 last stepping frequency (steps per sec),
234 last step status (walking, running, ...)} */
235 /* Additional data attributes (not in sensor_data_t)*/
249 } diffs[SENSOR_PEDOMETER_DATA_DIFFS_SIZE];
250 } sensor_pedometer_data_t;
252 #define CONVERT_TYPE_ATTR(type, index) ((type) << 8 | 0x80 | (index))
254 enum sensor_attribute {
255 SENSOR_ATTR_ACCELEROMETER_INJECTION =
256 CONVERT_TYPE_ATTR(SENSOR_DEVICE_ACCELEROMETER, 0xFF),
257 SENSOR_ATTR_ACTIVITY = CONVERT_TYPE_ATTR(SENSOR_DEVICE_ACTIVITY_TRACKER, 0x1),
259 SENSOR_ATTR_HRM_BATCH_OPR_MODE =
260 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x1),
261 SENSOR_ATTR_HRM_BATCH_ACTIVITY_TYPE =
262 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x2),
263 SENSOR_ATTR_HRM_BATCH_BATCH_DUR =
264 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x3),
265 SENSOR_ATTR_HRM_BATCH_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x4),
266 SENSOR_ATTR_HRM_BATCH_ELEVATED_DUR =
267 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x5),
268 SENSOR_ATTR_HRM_BATCH_ELEVATED_THR =
269 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x6),
270 SENSOR_ATTR_HRM_BATCH_BPM_RAW =
271 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x7),
272 SENSOR_ATTR_HRM_BATCH_LOW_ALERT_DUR =
273 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x8),
274 SENSOR_ATTR_HRM_BATCH_LOW_ALERT_THR =
275 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x9),
277 SENSOR_ATTR_HRM_LED_GREEN_BATCH_POLLING_INTERVAL =
278 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x1),
279 SENSOR_ATTR_HRM_LED_GREEN_BATCH_FLUSH =
280 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x2),
281 SENSOR_ATTR_HRM_LED_GREEN_BATCH_BATCH_PERIOD =
282 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x3),
284 SENSOR_ATTR_PEDOMETER_HEIGHT =
285 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x1),
286 SENSOR_ATTR_PEDOMETER_WEIGHT =
287 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x2),
288 SENSOR_ATTR_PEDOMETER_GENDER =
289 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x3),
290 SENSOR_ATTR_PEDOMETER_AGE =
291 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x4),
292 SENSOR_ATTR_PEDOMETER_FLUSH =
293 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x2F),
295 SENSOR_ATTR_STRESS_MONITOR_AGE =
296 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x1),
298 SENSOR_ATTR_EXERCISE_TYPE =
299 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x1),
300 SENSOR_ATTR_EXERCISE_GPS =
301 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x2),
302 SENSOR_ATTR_EXERCISE_BATCH_INTERVAL =
303 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x3),
304 SENSOR_ATTR_EXERCISE_PSERVICE =
305 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x4),
307 SENSOR_ATTR_CYCLE_DURATION =
308 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x1),
309 SENSOR_ATTR_CYCLE_HOLDING_POSITION =
310 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x2),
311 SENSOR_ATTR_CYCLE_VELOCITY =
312 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x3),
313 SENSOR_ATTR_CYCLE_GET_DATA_TYPE =
314 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x4),
315 SENSOR_ATTR_CYCLE_DATA_FLUSH =
316 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x5),
317 SENSOR_ATTR_CYCLE_GPS_AGREEMENT =
318 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x6),
320 SENSOR_ATTR_WORKOUT_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_WORKOUT, 0x1),
321 SENSOR_ATTR_WORKOUT_DURATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_WORKOUT, 0x2),
323 SENSOR_ATTR_RESTING_HR_OPR_MODE =
324 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x1),
325 SENSOR_ATTR_RESTING_HR_MAX_RHR =
326 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x2),
327 SENSOR_ATTR_RESTING_HR_MIN_RHR =
328 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x3),
329 SENSOR_ATTR_RESTING_HR_AVG_RHR =
330 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x4),
331 SENSOR_ATTR_RESTING_HR_HOUR =
332 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x5),
333 SENSOR_ATTR_RESTING_HR_MIN = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x6),
334 SENSOR_ATTR_RESTING_HR_SEC = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x7),
335 SENSOR_ATTR_RESTING_HR_PROPERTY_TYPE =
336 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x10),
337 SENSOR_ATTR_RESTING_HR_PROPERTY_HR_TYPE =
338 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x11),
339 SENSOR_ATTR_RESTING_HR_PROPERTY_HR_VALUE =
340 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x12),
341 SENSOR_ATTR_RESTING_HR_PROPERTY_DURATION =
342 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x13),
343 SENSOR_ATTR_RESTING_HR_PROPERTY_ACT_TYPE =
344 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x14),
345 SENSOR_ATTR_RESTING_HR_PROPERTY_ACT_DUR =
346 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x15),
347 SENSOR_ATTR_RESTING_HR_PROPERTY_CONT_DUR =
348 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x16),
349 SENSOR_ATTR_RESTING_HR_DATA_TYPE =
350 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x20),
351 SENSOR_ATTR_RESTING_HR_DATA_FLUSH =
352 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x21),
354 SENSOR_ATTR_STEP_LEVEL_MONITOR_DW_DURATION =
355 CONVERT_TYPE_ATTR(SENSOR_DEVICE_STEP_LEVEL_MONITOR, 0x1),
357 SENSOR_ATTR_EXERCISE_HR_OPR_MODE =
358 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x1),
359 SENSOR_ATTR_EXERCISE_HR_ACTIVITY_TYPE =
360 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x2),
361 SENSOR_ATTR_EXERCISE_HR_BATCH_DUR =
362 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x3),
363 SENSOR_ATTR_EXERCISE_HR_FLUSH =
364 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x4),
365 SENSOR_ATTR_EXERCISE_HR_ELEVATED_DUR =
366 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x5),
367 SENSOR_ATTR_EXERCISE_HR_ELEVATED_THR =
368 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x6),
369 SENSOR_ATTR_EXERCISE_HR_BPM_RAW =
370 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x7),
371 SENSOR_ATTR_EXERCISE_HR_LOW_ALERT_DUR =
372 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x8),
373 SENSOR_ATTR_EXERCISE_HR_LOW_ALERT_THR =
374 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x9),
376 SENSOR_ATTR_PRESSURE_INDICATOR_START =
377 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x1),
378 SENSOR_ATTR_PRESSURE_INDICATOR_STOP =
379 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x2),
380 SENSOR_ATTR_PRESSURE_INDICATOR_FLUSH =
381 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x3),
382 SENSOR_ATTR_PRESSURE_INDICATOR_RESTORE_TIME =
383 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x4),
384 SENSOR_ATTR_PRESSURE_INDICATOR_RESTORE_VALUE =
385 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x5),
386 SENSOR_ATTR_PRESSURE_INDICATOR_CURRENT_TIME =
387 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x6),
389 SENSOR_ATTR_PRESSURE_ALERT_START =
390 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_ALERT, 0x1),
391 SENSOR_ATTR_PRESSURE_ALERT_STOP =
392 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_ALERT, 0x2),
394 SENSOR_ATTR_HR_CALORIE_AGE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x1),
395 SENSOR_ATTR_HR_CALORIE_HEIGHT =
396 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x2),
397 SENSOR_ATTR_HR_CALORIE_WEIGHT =
398 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x3),
399 SENSOR_ATTR_HR_CALORIE_GENDER =
400 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x4),
401 SENSOR_ATTR_HR_CALORIE_INST =
402 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x10),
403 SENSOR_ATTR_HR_CALORIE_EXERCISE_TYPE =
404 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x11),
405 SENSOR_ATTR_HR_CALORIE_TARGET_CAL =
406 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x12),
407 SENSOR_ATTR_HR_CALORIE_MAX_HEARTRATE =
408 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x13),
409 SENSOR_ATTR_HR_CALORIE_FLUSH =
410 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x20),
412 SENSOR_ATTR_SWIMMING_TRACKER_PLACE =
413 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x1),
414 SENSOR_ATTR_SWIMMING_TRACKER_DISTANCE =
415 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x2),
416 SENSOR_ATTR_SWIMMING_TRACKER_FLUSH =
417 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x3),
418 SENSOR_ATTR_SWIMMING_TRACKER_BATCH =
419 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x4),
420 SENSOR_ATTR_SWIMMING_TRACKER_GOAL_CALORIES =
421 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x5),
422 SENSOR_ATTR_SWIMMING_TRACKER_GOAL_LAPS =
423 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x6),
424 SENSOR_ATTR_SWIMMING_TRACKER_TIME_REST =
425 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x7),
426 SENSOR_ATTR_SWIMMING_TRACKER_TIME_TURN =
427 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x8),
429 SENSOR_ATTR_SWIMMING_OUTDOOR_SET_BATCH_LAP_COUNT =
430 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x1),
431 SENSOR_ATTR_SWIMMING_OUTDOOR_SETGOAL_LENGTH =
432 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x2),
433 SENSOR_ATTR_SWIMMING_OUTDOOR_SETGOAL_TIME =
434 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x3),
435 SENSOR_ATTR_SWIMMING_OUTDOOR_SET_GPS_PERMISSION =
436 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x4),
437 SENSOR_ATTR_SWIMMING_OUTDOOR_FLUSH =
438 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x6),
440 SENSOR_ATTR_AUTO_SWIMMING_DURATION =
441 CONVERT_TYPE_ATTR(SENSOR_DEVICE_AUTO_SWIMMING, 0x1),
443 SENSOR_ATTR_INACTIVITY_DETECTOR_LEVEL =
444 CONVERT_TYPE_ATTR(SENSOR_DEVICE_INACTIVITY_DETECTOR, 0x1),
445 SENSOR_ATTR_INACTIVITY_DETECTOR_DURATION =
446 CONVERT_TYPE_ATTR(SENSOR_DEVICE_INACTIVITY_DETECTOR, 0x2),
448 SENSOR_ATTR_STRESS_TRACKER_DUR =
449 CONVERT_TYPE_ATTR(SENSOR_DEVICE_STRESS_TRACKER, 0x1),
450 SENSOR_ATTR_STRESS_TRACKER_FLUSH =
451 CONVERT_TYPE_ATTR(SENSOR_DEVICE_STRESS_TRACKER, 0x2),
453 SENSOR_ATTR_STRESS_MONITOR_BASE_HR =
454 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x1),
455 SENSOR_ATTR_STRESS_MONITOR_HISTO_INDEX =
456 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x2),
457 SENSOR_ATTR_STRESS_MONITOR_HISTO_VALUE =
458 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x3),
459 SENSOR_ATTR_STRESS_MONITOR_TUNE_INDEX =
460 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x4),
461 SENSOR_ATTR_STRESS_MONITOR_TUNE_VALUE =
462 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x5),
463 SENSOR_ATTR_STRESS_MONITOR_FLUSH =
464 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x6),
465 SENSOR_ATTR_STRESS_MONITOR_OPERATION =
466 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x7),
468 SENSOR_ATTR_SLEEP_MONITOR_STOP =
469 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_MONITOR, 0x1),
470 SENSOR_ATTR_SLEEP_MONITOR_FLUSH =
471 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_MONITOR, 0x2),
473 SENSOR_ATTR_SLEEP_DETECTOR_STOP =
474 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR, 0x1),
475 SENSOR_ATTR_SLEEP_DETECTOR_SETTING =
476 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR, 0x2),
478 SENSOR_ATTR_DATA_JOURNAL_START =
479 CONVERT_TYPE_ATTR(SENSOR_DEVICE_DATA_JOURNAL, 0x1),
480 SENSOR_ATTR_DATA_JOURNAL_STOP =
481 CONVERT_TYPE_ATTR(SENSOR_DEVICE_DATA_JOURNAL, 0x2),
483 SENSOR_ATTR_GPS_BATCH_OPR_MODE =
484 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GPS_BATCH, 0x1),
486 SENSOR_ATTR_PPG_BATCH_POLLING_INTERVAL =
487 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PPG_BATCH, 0x1),
488 SENSOR_ATTR_PPG_BATCH_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PPG_BATCH, 0x2),
490 SENSOR_ATTR_REG_CTRL_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x1),
491 SENSOR_ATTR_REG_CTRL_ADDRESS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x2),
492 SENSOR_ATTR_REG_CTRL_VALUE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x3),
493 SENSOR_ATTR_REG_CTRL_MODE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x4),
495 SENSOR_ATTR_GPS_CTRL_SETTING = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GPS_CTRL, 0x1),
497 SENSOR_ATTR_FAKE_MOTION_EVENT_INTERVAL =
498 CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x1),
499 SENSOR_ATTR_FAKE_MOTION_EVENT_COUNT =
500 CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x2),
501 SENSOR_ATTR_FAKE_MOTION_PAUSE_INTERVAL =
502 CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x3),
504 SENSOR_ATTR_GEOFENCE_ID = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x1),
505 SENSOR_ATTR_GEOFENCE_LAT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x2),
506 SENSOR_ATTR_GEOFENCE_LON = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x3),
507 SENSOR_ATTR_GEOFENCE_RADIUS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x4),
508 SENSOR_ATTR_GEOFENCE_PROVIDER =
509 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x5),
510 SENSOR_ATTR_GEOFENCE_ACCURACY =
511 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x6),
512 SENSOR_ATTR_GEOFENCE_TIMESTAMP =
513 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x7),
514 SENSOR_ATTR_GEOFENCE_CONNECT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x8),
515 SENSOR_ATTR_GEOFENCE_START = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x10),
516 SENSOR_ATTR_GEOFENCE_STOP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x11),
517 SENSOR_ATTR_GEOFENCE_SET_LOCATION =
518 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x12),
519 SENSOR_ATTR_GEOFENCE_BT_CONNECT =
520 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x13),
522 SENSOR_ATTR_FALL_DETECTION_OPR_MODE =
523 CONVERT_TYPE_ATTR(SENSOR_DEVICE_FALL_DETECTION, 0x1),
526 enum sensor_attribute_common {
527 SENSOR_ATTR_COMMON_START = 0x1000000,
528 SENSOR_ATTR_POWER_STATE = SENSOR_ATTR_COMMON_START + 10001,
531 enum sensor_activity {
532 SENSOR_ACTIVITY_UNKNOWN = 1,
533 SENSOR_ACTIVITY_STILL = 2,
534 SENSOR_ACTIVITY_WALKING = 4,
535 SENSOR_ACTIVITY_RUNNING = 8,
536 SENSOR_ACTIVITY_IN_VEHICLE = 16,
537 SENSOR_ACTIVITY_ON_BICYCLE = 32,
546 typedef void *sensor_device_t;
547 typedef int (*create_t)(sensor_device_t **devices);
550 * Sensor device interface
551 * 1 device must be abstracted from 1 device event node
553 class sensor_device {
555 virtual ~sensor_device() {}
557 uint32_t get_hal_version(void) { return SENSOR_HAL_VERSION(1, 0); }
559 virtual int get_poll_fd(void) = 0;
560 virtual int get_sensors(const sensor_info_t **sensors) = 0;
562 virtual bool enable(uint32_t id) = 0;
563 virtual bool disable(uint32_t id) = 0;
565 virtual int read_fd(uint32_t **ids) = 0;
566 virtual int get_data(uint32_t id, sensor_data_t **data, int *length) = 0;
568 virtual bool set_interval(uint32_t id, unsigned long val) { return true; }
569 virtual bool set_batch_latency(uint32_t id, unsigned long val) {
572 virtual bool set_attribute_int(uint32_t id, int32_t attribute,
576 virtual bool set_attribute_str(uint32_t id, int32_t attribute, const char *value,
580 virtual bool get_attribute_int(uint32_t id, int32_t attribute,
584 virtual bool get_attribute_str(uint32_t id, int32_t attribute, char **value,
589 virtual bool flush(uint32_t id) { return true; }
592 #endif /* __cplusplus */
593 #endif /* __HAL_SENSOR_TYPES__ */