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_CONTEXT = 0x7000,
143 SENSOR_DEVICE_MOTION,
145 SENSOR_DEVICE_PIR_LONG,
147 SENSOR_DEVICE_THERMOMETER,
148 SENSOR_DEVICE_PEDOMETER,
150 SENSOR_DEVICE_HRM_RAW,
152 SENSOR_DEVICE_ROTATION_VECTOR_RAW,
154 SENSOR_DEVICE_SIMSENSE,
156 } sensor_device_type;
159 * A platform sensor handler is generated based on this handle
160 * This id can be assigned from HAL developer. so it has to be unique in 1
163 typedef struct sensor_info_t {
166 int type; // sensor_device_type
167 unsigned int event_type; // for Internal API
168 const char *model_name;
175 bool wakeup_supported;
178 enum sensor_accuracy_t {
179 SENSOR_ACCURACY_UNDEFINED = -1,
180 SENSOR_ACCURACY_BAD = 0,
181 SENSOR_ACCURACY_NORMAL = 1,
182 SENSOR_ACCURACY_GOOD = 2,
183 SENSOR_ACCURACY_VERYGOOD = 3
186 #define SENSOR_DATA_VALUE_SIZE 16
189 typedef struct sensor_data_t {
191 unsigned long long timestamp;
193 float values[SENSOR_DATA_VALUE_SIZE];
196 #define SENSORHUB_DATA_VALUE_SIZE 4096
198 /* sensorhub_data_t */
199 typedef struct sensorhub_data_t {
201 unsigned long long timestamp;
204 * Use "value_count" instead of "hub_data_size"
205 * which is going to be removed soon
209 int hub_data_size; /* deprecated */
213 * Use "values" instead of "hub_data"
214 * which is going to be removed soon
217 char values[SENSORHUB_DATA_VALUE_SIZE];
218 char hub_data[SENSORHUB_DATA_VALUE_SIZE]; /* deprecated */
222 #define SENSOR_PEDOMETER_DATA_DIFFS_SIZE 20
226 unsigned long long timestamp;
227 int value_count; /* value_count == 8 */
228 float values[SENSOR_DATA_VALUE_SIZE];
229 /* values = {step count, walk step count, run step count,
230 moving distance, calorie burned, last speed,
231 last stepping frequency (steps per sec),
232 last step status (walking, running, ...)} */
233 /* Additional data attributes (not in sensor_data_t)*/
247 } diffs[SENSOR_PEDOMETER_DATA_DIFFS_SIZE];
248 } sensor_pedometer_data_t;
250 #define CONVERT_TYPE_ATTR(type, index) ((type) << 8 | 0x80 | (index))
252 enum sensor_attribute {
253 SENSOR_ATTR_ACCELEROMETER_INJECTION =
254 CONVERT_TYPE_ATTR(SENSOR_DEVICE_ACCELEROMETER, 0xFF),
255 SENSOR_ATTR_ACTIVITY = CONVERT_TYPE_ATTR(SENSOR_DEVICE_ACTIVITY_TRACKER, 0x1),
257 SENSOR_ATTR_HRM_BATCH_OPR_MODE =
258 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x1),
259 SENSOR_ATTR_HRM_BATCH_ACTIVITY_TYPE =
260 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x2),
261 SENSOR_ATTR_HRM_BATCH_BATCH_DUR =
262 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x3),
263 SENSOR_ATTR_HRM_BATCH_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x4),
264 SENSOR_ATTR_HRM_BATCH_ELEVATED_DUR =
265 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x5),
266 SENSOR_ATTR_HRM_BATCH_ELEVATED_THR =
267 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x6),
268 SENSOR_ATTR_HRM_BATCH_BPM_RAW =
269 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x7),
270 SENSOR_ATTR_HRM_BATCH_LOW_ALERT_DUR =
271 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x8),
272 SENSOR_ATTR_HRM_BATCH_LOW_ALERT_THR =
273 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x9),
275 SENSOR_ATTR_HRM_LED_GREEN_BATCH_POLLING_INTERVAL =
276 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x1),
277 SENSOR_ATTR_HRM_LED_GREEN_BATCH_FLUSH =
278 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x2),
279 SENSOR_ATTR_HRM_LED_GREEN_BATCH_BATCH_PERIOD =
280 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x3),
282 SENSOR_ATTR_PEDOMETER_HEIGHT =
283 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x1),
284 SENSOR_ATTR_PEDOMETER_WEIGHT =
285 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x2),
286 SENSOR_ATTR_PEDOMETER_GENDER =
287 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x3),
288 SENSOR_ATTR_PEDOMETER_AGE =
289 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x4),
290 SENSOR_ATTR_PEDOMETER_FLUSH =
291 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x2F),
293 SENSOR_ATTR_STRESS_MONITOR_AGE =
294 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x1),
296 SENSOR_ATTR_EXERCISE_TYPE =
297 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x1),
298 SENSOR_ATTR_EXERCISE_GPS =
299 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x2),
300 SENSOR_ATTR_EXERCISE_BATCH_INTERVAL =
301 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x3),
302 SENSOR_ATTR_EXERCISE_PSERVICE =
303 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x4),
305 SENSOR_ATTR_CYCLE_DURATION =
306 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x1),
307 SENSOR_ATTR_CYCLE_HOLDING_POSITION =
308 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x2),
309 SENSOR_ATTR_CYCLE_VELOCITY =
310 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x3),
311 SENSOR_ATTR_CYCLE_GET_DATA_TYPE =
312 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x4),
313 SENSOR_ATTR_CYCLE_DATA_FLUSH =
314 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x5),
315 SENSOR_ATTR_CYCLE_GPS_AGREEMENT =
316 CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x6),
318 SENSOR_ATTR_WORKOUT_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_WORKOUT, 0x1),
319 SENSOR_ATTR_WORKOUT_DURATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_WORKOUT, 0x2),
321 SENSOR_ATTR_RESTING_HR_OPR_MODE =
322 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x1),
323 SENSOR_ATTR_RESTING_HR_MAX_RHR =
324 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x2),
325 SENSOR_ATTR_RESTING_HR_MIN_RHR =
326 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x3),
327 SENSOR_ATTR_RESTING_HR_AVG_RHR =
328 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x4),
329 SENSOR_ATTR_RESTING_HR_HOUR =
330 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x5),
331 SENSOR_ATTR_RESTING_HR_MIN = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x6),
332 SENSOR_ATTR_RESTING_HR_SEC = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x7),
333 SENSOR_ATTR_RESTING_HR_PROPERTY_TYPE =
334 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x10),
335 SENSOR_ATTR_RESTING_HR_PROPERTY_HR_TYPE =
336 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x11),
337 SENSOR_ATTR_RESTING_HR_PROPERTY_HR_VALUE =
338 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x12),
339 SENSOR_ATTR_RESTING_HR_PROPERTY_DURATION =
340 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x13),
341 SENSOR_ATTR_RESTING_HR_PROPERTY_ACT_TYPE =
342 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x14),
343 SENSOR_ATTR_RESTING_HR_PROPERTY_ACT_DUR =
344 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x15),
345 SENSOR_ATTR_RESTING_HR_PROPERTY_CONT_DUR =
346 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x16),
347 SENSOR_ATTR_RESTING_HR_DATA_TYPE =
348 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x20),
349 SENSOR_ATTR_RESTING_HR_DATA_FLUSH =
350 CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x21),
352 SENSOR_ATTR_STEP_LEVEL_MONITOR_DW_DURATION =
353 CONVERT_TYPE_ATTR(SENSOR_DEVICE_STEP_LEVEL_MONITOR, 0x1),
355 SENSOR_ATTR_EXERCISE_HR_OPR_MODE =
356 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x1),
357 SENSOR_ATTR_EXERCISE_HR_ACTIVITY_TYPE =
358 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x2),
359 SENSOR_ATTR_EXERCISE_HR_BATCH_DUR =
360 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x3),
361 SENSOR_ATTR_EXERCISE_HR_FLUSH =
362 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x4),
363 SENSOR_ATTR_EXERCISE_HR_ELEVATED_DUR =
364 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x5),
365 SENSOR_ATTR_EXERCISE_HR_ELEVATED_THR =
366 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x6),
367 SENSOR_ATTR_EXERCISE_HR_BPM_RAW =
368 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x7),
369 SENSOR_ATTR_EXERCISE_HR_LOW_ALERT_DUR =
370 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x8),
371 SENSOR_ATTR_EXERCISE_HR_LOW_ALERT_THR =
372 CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x9),
374 SENSOR_ATTR_PRESSURE_INDICATOR_START =
375 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x1),
376 SENSOR_ATTR_PRESSURE_INDICATOR_STOP =
377 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x2),
378 SENSOR_ATTR_PRESSURE_INDICATOR_FLUSH =
379 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x3),
380 SENSOR_ATTR_PRESSURE_INDICATOR_RESTORE_TIME =
381 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x4),
382 SENSOR_ATTR_PRESSURE_INDICATOR_RESTORE_VALUE =
383 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x5),
384 SENSOR_ATTR_PRESSURE_INDICATOR_CURRENT_TIME =
385 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x6),
387 SENSOR_ATTR_PRESSURE_ALERT_START =
388 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_ALERT, 0x1),
389 SENSOR_ATTR_PRESSURE_ALERT_STOP =
390 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_ALERT, 0x2),
392 SENSOR_ATTR_HR_CALORIE_AGE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x1),
393 SENSOR_ATTR_HR_CALORIE_HEIGHT =
394 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x2),
395 SENSOR_ATTR_HR_CALORIE_WEIGHT =
396 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x3),
397 SENSOR_ATTR_HR_CALORIE_GENDER =
398 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x4),
399 SENSOR_ATTR_HR_CALORIE_INST =
400 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x10),
401 SENSOR_ATTR_HR_CALORIE_EXERCISE_TYPE =
402 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x11),
403 SENSOR_ATTR_HR_CALORIE_TARGET_CAL =
404 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x12),
405 SENSOR_ATTR_HR_CALORIE_MAX_HEARTRATE =
406 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x13),
407 SENSOR_ATTR_HR_CALORIE_FLUSH =
408 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x20),
410 SENSOR_ATTR_SWIMMING_TRACKER_PLACE =
411 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x1),
412 SENSOR_ATTR_SWIMMING_TRACKER_DISTANCE =
413 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x2),
414 SENSOR_ATTR_SWIMMING_TRACKER_FLUSH =
415 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x3),
416 SENSOR_ATTR_SWIMMING_TRACKER_BATCH =
417 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x4),
418 SENSOR_ATTR_SWIMMING_TRACKER_GOAL_CALORIES =
419 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x5),
420 SENSOR_ATTR_SWIMMING_TRACKER_GOAL_LAPS =
421 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x6),
422 SENSOR_ATTR_SWIMMING_TRACKER_TIME_REST =
423 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x7),
424 SENSOR_ATTR_SWIMMING_TRACKER_TIME_TURN =
425 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x8),
427 SENSOR_ATTR_SWIMMING_OUTDOOR_SET_BATCH_LAP_COUNT =
428 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x1),
429 SENSOR_ATTR_SWIMMING_OUTDOOR_SETGOAL_LENGTH =
430 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x2),
431 SENSOR_ATTR_SWIMMING_OUTDOOR_SETGOAL_TIME =
432 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x3),
433 SENSOR_ATTR_SWIMMING_OUTDOOR_SET_GPS_PERMISSION =
434 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x4),
435 SENSOR_ATTR_SWIMMING_OUTDOOR_FLUSH =
436 CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x6),
438 SENSOR_ATTR_AUTO_SWIMMING_DURATION =
439 CONVERT_TYPE_ATTR(SENSOR_DEVICE_AUTO_SWIMMING, 0x1),
441 SENSOR_ATTR_INACTIVITY_DETECTOR_LEVEL =
442 CONVERT_TYPE_ATTR(SENSOR_DEVICE_INACTIVITY_DETECTOR, 0x1),
443 SENSOR_ATTR_INACTIVITY_DETECTOR_DURATION =
444 CONVERT_TYPE_ATTR(SENSOR_DEVICE_INACTIVITY_DETECTOR, 0x2),
446 SENSOR_ATTR_STRESS_TRACKER_DUR =
447 CONVERT_TYPE_ATTR(SENSOR_DEVICE_STRESS_TRACKER, 0x1),
448 SENSOR_ATTR_STRESS_TRACKER_FLUSH =
449 CONVERT_TYPE_ATTR(SENSOR_DEVICE_STRESS_TRACKER, 0x2),
451 SENSOR_ATTR_STRESS_MONITOR_BASE_HR =
452 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x1),
453 SENSOR_ATTR_STRESS_MONITOR_HISTO_INDEX =
454 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x2),
455 SENSOR_ATTR_STRESS_MONITOR_HISTO_VALUE =
456 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x3),
457 SENSOR_ATTR_STRESS_MONITOR_TUNE_INDEX =
458 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x4),
459 SENSOR_ATTR_STRESS_MONITOR_TUNE_VALUE =
460 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x5),
461 SENSOR_ATTR_STRESS_MONITOR_FLUSH =
462 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x6),
463 SENSOR_ATTR_STRESS_MONITOR_OPERATION =
464 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x7),
466 SENSOR_ATTR_SLEEP_MONITOR_STOP =
467 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_MONITOR, 0x1),
468 SENSOR_ATTR_SLEEP_MONITOR_FLUSH =
469 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_MONITOR, 0x2),
471 SENSOR_ATTR_SLEEP_DETECTOR_STOP =
472 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR, 0x1),
473 SENSOR_ATTR_SLEEP_DETECTOR_SETTING =
474 CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR, 0x2),
476 SENSOR_ATTR_DATA_JOURNAL_START =
477 CONVERT_TYPE_ATTR(SENSOR_DEVICE_DATA_JOURNAL, 0x1),
478 SENSOR_ATTR_DATA_JOURNAL_STOP =
479 CONVERT_TYPE_ATTR(SENSOR_DEVICE_DATA_JOURNAL, 0x2),
481 SENSOR_ATTR_GPS_BATCH_OPR_MODE =
482 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GPS_BATCH, 0x1),
484 SENSOR_ATTR_PPG_BATCH_POLLING_INTERVAL =
485 CONVERT_TYPE_ATTR(SENSOR_DEVICE_PPG_BATCH, 0x1),
486 SENSOR_ATTR_PPG_BATCH_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PPG_BATCH, 0x2),
488 SENSOR_ATTR_REG_CTRL_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x1),
489 SENSOR_ATTR_REG_CTRL_ADDRESS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x2),
490 SENSOR_ATTR_REG_CTRL_VALUE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x3),
491 SENSOR_ATTR_REG_CTRL_MODE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x4),
493 SENSOR_ATTR_GPS_CTRL_SETTING = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GPS_CTRL, 0x1),
495 SENSOR_ATTR_FAKE_MOTION_EVENT_INTERVAL =
496 CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x1),
497 SENSOR_ATTR_FAKE_MOTION_EVENT_COUNT =
498 CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x2),
499 SENSOR_ATTR_FAKE_MOTION_PAUSE_INTERVAL =
500 CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x3),
502 SENSOR_ATTR_GEOFENCE_ID = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x1),
503 SENSOR_ATTR_GEOFENCE_LAT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x2),
504 SENSOR_ATTR_GEOFENCE_LON = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x3),
505 SENSOR_ATTR_GEOFENCE_RADIUS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x4),
506 SENSOR_ATTR_GEOFENCE_PROVIDER =
507 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x5),
508 SENSOR_ATTR_GEOFENCE_ACCURACY =
509 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x6),
510 SENSOR_ATTR_GEOFENCE_TIMESTAMP =
511 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x7),
512 SENSOR_ATTR_GEOFENCE_CONNECT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x8),
513 SENSOR_ATTR_GEOFENCE_START = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x10),
514 SENSOR_ATTR_GEOFENCE_STOP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x11),
515 SENSOR_ATTR_GEOFENCE_SET_LOCATION =
516 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x12),
517 SENSOR_ATTR_GEOFENCE_BT_CONNECT =
518 CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x13),
520 SENSOR_ATTR_FALL_DETECTION_OPR_MODE =
521 CONVERT_TYPE_ATTR(SENSOR_DEVICE_FALL_DETECTION, 0x1),
524 enum sensor_activity {
525 SENSOR_ACTIVITY_UNKNOWN = 1,
526 SENSOR_ACTIVITY_STILL = 2,
527 SENSOR_ACTIVITY_WALKING = 4,
528 SENSOR_ACTIVITY_RUNNING = 8,
529 SENSOR_ACTIVITY_IN_VEHICLE = 16,
530 SENSOR_ACTIVITY_ON_BICYCLE = 32,
539 typedef void *sensor_device_t;
540 typedef int (*create_t)(sensor_device_t **devices);
543 * Sensor device interface
544 * 1 device must be abstracted from 1 device event node
546 class sensor_device {
548 virtual ~sensor_device() {}
550 uint32_t get_hal_version(void) { return SENSOR_HAL_VERSION(1, 0); }
552 virtual int get_poll_fd(void) = 0;
553 virtual int get_sensors(const sensor_info_t **sensors) = 0;
555 virtual bool enable(uint32_t id) = 0;
556 virtual bool disable(uint32_t id) = 0;
558 virtual int read_fd(uint32_t **ids) = 0;
559 virtual int get_data(uint32_t id, sensor_data_t **data, int *length) = 0;
561 virtual bool set_interval(uint32_t id, unsigned long val) { return true; }
562 virtual bool set_batch_latency(uint32_t id, unsigned long val) {
565 virtual bool set_attribute_int(uint32_t id, int32_t attribute,
569 virtual bool set_attribute_str(uint32_t id, int32_t attribute, char *value,
573 virtual bool get_attribute_int(uint32_t id, int32_t attribute,
577 virtual bool set_attribute_str(uint32_t id, int32_t attribute, char **value,
582 virtual bool flush(uint32_t id) { return true; }
585 #endif /* __cplusplus */
586 #endif /* __HAL_SENSOR_TYPES__ */