--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __HAL_SENSOR_DEVICE_TYPES__
+#define __HAL_SENSOR_DEVICE_TYPES__
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <time.h>
+
+#define SENSOR_HAL_VERSION(maj, min) ((((maj)&0xFFFF) << 24) | ((min)&0xFFFF))
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/*
+ * Sensor Types
+ * These types are used to controll the sensors
+ *
+ * - base unit
+ * acceleration values : meter per second^2 (m/s^2)
+ * magnetic values : micro-Tesla (uT)
+ * orientation values : degrees
+ * gyroscope values : degree/s
+ * temperature values : degrees centigrade
+ * proximity valeus : distance
+ * light values : lux
+ * pressure values : hectopascal (hPa)
+ * humidity : relative humidity (%)
+ */
+typedef enum {
+ SENSOR_DEVICE_UNKNOWN = -2,
+ SENSOR_DEVICE_ALL = -1,
+ SENSOR_DEVICE_ACCELEROMETER,
+ SENSOR_DEVICE_GRAVITY,
+ SENSOR_DEVICE_LINEAR_ACCELERATION,
+ SENSOR_DEVICE_GEOMAGNETIC,
+ SENSOR_DEVICE_ROTATION_VECTOR,
+ SENSOR_DEVICE_ORIENTATION,
+ SENSOR_DEVICE_GYROSCOPE,
+ SENSOR_DEVICE_LIGHT,
+ SENSOR_DEVICE_PROXIMITY,
+ SENSOR_DEVICE_PRESSURE,
+ SENSOR_DEVICE_ULTRAVIOLET,
+ SENSOR_DEVICE_TEMPERATURE,
+ SENSOR_DEVICE_HUMIDITY,
+ SENSOR_DEVICE_HRM,
+ SENSOR_DEVICE_HRM_LED_GREEN,
+ SENSOR_DEVICE_HRM_LED_IR,
+ SENSOR_DEVICE_HRM_LED_RED,
+ SENSOR_DEVICE_GYROSCOPE_UNCAL,
+ SENSOR_DEVICE_GEOMAGNETIC_UNCAL,
+ SENSOR_DEVICE_GYROSCOPE_RV,
+ SENSOR_DEVICE_GEOMAGNETIC_RV,
+
+ SENSOR_DEVICE_SIGNIFICANT_MOTION = 0x100,
+
+ SENSOR_DEVICE_HRM_BATCH = 0x200,
+ SENSOR_DEVICE_HRM_LED_GREEN_BATCH,
+
+ SENSOR_DEVICE_HUMAN_PEDOMETER = 0x300,
+ SENSOR_DEVICE_HUMAN_SLEEP_MONITOR,
+ SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR,
+ SENSOR_DEVICE_HUMAN_STRESS_MONITOR,
+
+ SENSOR_DEVICE_EXERCISE_WALKING = 0x400,
+ SENSOR_DEVICE_EXERCISE_RUNNING,
+ SENSOR_DEVICE_EXERCISE_HIKING,
+ SENSOR_DEVICE_EXERCISE_CYCLING,
+ SENSOR_DEVICE_EXERCISE_ELLIPTICAL,
+ SENSOR_DEVICE_EXERCISE_INDOOR_CYCLING,
+ SENSOR_DEVICE_EXERCISE_ROWING,
+ SENSOR_DEVICE_EXERCISE_STEPPER,
+
+ SENSOR_DEVICE_DATA_JOURNAL = 0x500,
+
+ SENSOR_DEVICE_FUSION = 0x900,
+ SENSOR_DEVICE_AUTO_ROTATION,
+ SENSOR_DEVICE_AUTO_BRIGHTNESS,
+ SENSOR_DEVICE_MYOTEST,
+
+ SENSOR_DEVICE_GESTURE_MOVEMENT = 0x1200,
+ SENSOR_DEVICE_GESTURE_WRIST_UP,
+ SENSOR_DEVICE_GESTURE_WRIST_DOWN,
+ SENSOR_DEVICE_GESTURE_MOVEMENT_STATE,
+ SENSOR_DEVICE_GESTURE_PICK_UP,
+ SENSOR_DEVICE_GESTURE_FACE_DOWN,
+
+ SENSOR_DEVICE_ACTIVITY_TRACKER = 0x1A00,
+ SENSOR_DEVICE_ACTIVITY_LEVEL_MONITOR,
+ SENSOR_DEVICE_GPS_BATCH,
+ SENSOR_DEVICE_PPG_BATCH,
+ SENSOR_DEVICE_GPS_TIMESYNC,
+
+ SENSOR_DEVICE_HRM_CTRL = 0x1A80,
+ SENSOR_DEVICE_REG_CTRL,
+ SENSOR_DEVICE_GPS_CTRL,
+
+ SENSOR_DEVICE_WEAR_STATUS = 0x2000,
+ SENSOR_DEVICE_WEAR_ON_MONITOR,
+ SENSOR_DEVICE_NO_MOVE_DETECTOR,
+ SENSOR_DEVICE_RESTING_HR,
+ SENSOR_DEVICE_STEP_LEVEL_MONITOR,
+ SENSOR_DEVICE_EXERCISE_STANDALONE,
+ SENSOR_DEVICE_EXERCISE_HR,
+ SENSOR_DEVICE_WORKOUT,
+ SENSOR_DEVICE_CYCLE_MONITOR,
+ SENSOR_DEVICE_STAIR_TRACKER,
+ SENSOR_DEVICE_PRESSURE_INDICATOR,
+ SENSOR_DEVICE_PRESSURE_ALERT,
+ SENSOR_DEVICE_HR_CALORIE,
+ SENSOR_DEVICE_SWIMMING_TRACKER,
+ SENSOR_DEVICE_STRESS_TRACKER,
+ SENSOR_DEVICE_FAKE_MOTION,
+ SENSOR_DEVICE_GEOFENCE,
+ SENSOR_DEVICE_SWIMMING_OUTDOOR,
+ SENSOR_DEVICE_AUTO_SWIMMING,
+ SENSOR_DEVICE_INACTIVITY_DETECTOR,
+ SENSOR_DEVICE_HRM_BP,
+ SENSOR_DEVICE_ECG,
+ SENSOR_DEVICE_FALL_DETECTION,
+
+ SENSOR_DEVICE_CONTEXT = 0x7000,
+ SENSOR_DEVICE_MOTION,
+ SENSOR_DEVICE_PIR,
+ SENSOR_DEVICE_PIR_LONG,
+ SENSOR_DEVICE_DUST,
+ SENSOR_DEVICE_THERMOMETER,
+ SENSOR_DEVICE_PEDOMETER,
+ SENSOR_DEVICE_FLAT,
+ SENSOR_DEVICE_HRM_RAW,
+ SENSOR_DEVICE_TILT,
+ SENSOR_DEVICE_ROTATION_VECTOR_RAW,
+ SENSOR_DEVICE_GSR,
+ SENSOR_DEVICE_SIMSENSE,
+ SENSOR_DEVICE_PPG,
+} sensor_device_type;
+
+/*
+ * A platform sensor handler is generated based on this handle
+ * This id can be assigned from HAL developer. so it has to be unique in 1
+ * sensor_device.
+ */
+typedef struct sensor_info_t {
+ uint32_t id;
+ const char *name;
+ sensor_device_type type;
+ unsigned int event_type; // for Internal API
+ const char *model_name;
+ const char *vendor;
+ float min_range;
+ float max_range;
+ float resolution;
+ int min_interval;
+ int max_batch_count;
+ bool wakeup_supported;
+} sensor_info_t;
+
+enum sensor_accuracy_t {
+ SENSOR_ACCURACY_UNDEFINED = -1,
+ SENSOR_ACCURACY_BAD = 0,
+ SENSOR_ACCURACY_NORMAL = 1,
+ SENSOR_ACCURACY_GOOD = 2,
+ SENSOR_ACCURACY_VERYGOOD = 3
+};
+
+#define SENSOR_DATA_VALUE_SIZE 16
+
+/* sensor_data_t */
+typedef struct sensor_data_t {
+ int accuracy;
+ unsigned long long timestamp;
+ int value_count;
+ float values[SENSOR_DATA_VALUE_SIZE];
+} sensor_data_t;
+
+#define SENSORHUB_DATA_VALUE_SIZE 4096
+
+/* sensorhub_data_t */
+typedef struct sensorhub_data_t {
+ int accuracy;
+ unsigned long long timestamp;
+
+ /*
+ * Use "value_count" instead of "hub_data_size"
+ * which is going to be removed soon
+ */
+ union {
+ int value_count;
+ int hub_data_size; /* deprecated */
+ };
+
+ /*
+ * Use "values" instead of "hub_data"
+ * which is going to be removed soon
+ */
+ union {
+ char values[SENSORHUB_DATA_VALUE_SIZE];
+ char hub_data[SENSORHUB_DATA_VALUE_SIZE]; /* deprecated */
+ };
+} sensorhub_data_t;
+
+#define SENSOR_PEDOMETER_DATA_DIFFS_SIZE 20
+
+typedef struct {
+ int accuracy;
+ unsigned long long timestamp;
+ int value_count; /* value_count == 8 */
+ float values[SENSOR_DATA_VALUE_SIZE];
+ /* values = {step count, walk step count, run step count,
+ moving distance, calorie burned, last speed,
+ last stepping frequency (steps per sec),
+ last step status (walking, running, ...)} */
+ /* Additional data attributes (not in sensor_data_t)*/
+ int diffs_count;
+ struct differences {
+ int timestamp;
+ int steps;
+ int walk_steps;
+ int run_steps;
+ int walk_up_steps;
+ int walk_down_steps;
+ int run_up_steps;
+ int run_down_steps;
+ float distance;
+ float calories;
+ float speed;
+ } diffs[SENSOR_PEDOMETER_DATA_DIFFS_SIZE];
+} sensor_pedometer_data_t;
+
+#define CONVERT_TYPE_ATTR(type, index) ((type) << 8 | 0x80 | (index))
+
+enum sensor_attribute {
+ SENSOR_ATTR_ACCELEROMETER_INJECTION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_ACCELEROMETER, 0xFF),
+ SENSOR_ATTR_ACTIVITY = CONVERT_TYPE_ATTR(SENSOR_DEVICE_ACTIVITY_TRACKER, 0x1),
+
+ SENSOR_ATTR_HRM_BATCH_OPR_MODE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x1),
+ SENSOR_ATTR_HRM_BATCH_ACTIVITY_TYPE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x2),
+ SENSOR_ATTR_HRM_BATCH_BATCH_DUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x3),
+ SENSOR_ATTR_HRM_BATCH_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x4),
+ SENSOR_ATTR_HRM_BATCH_ELEVATED_DUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x5),
+ SENSOR_ATTR_HRM_BATCH_ELEVATED_THR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x6),
+ SENSOR_ATTR_HRM_BATCH_BPM_RAW =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x7),
+ SENSOR_ATTR_HRM_BATCH_LOW_ALERT_DUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x8),
+ SENSOR_ATTR_HRM_BATCH_LOW_ALERT_THR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_BATCH, 0x9),
+
+ SENSOR_ATTR_HRM_LED_GREEN_BATCH_POLLING_INTERVAL =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x1),
+ SENSOR_ATTR_HRM_LED_GREEN_BATCH_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x2),
+ SENSOR_ATTR_HRM_LED_GREEN_BATCH_BATCH_PERIOD =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HRM_LED_GREEN_BATCH, 0x3),
+
+ SENSOR_ATTR_PEDOMETER_HEIGHT =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x1),
+ SENSOR_ATTR_PEDOMETER_WEIGHT =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x2),
+ SENSOR_ATTR_PEDOMETER_GENDER =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x3),
+ SENSOR_ATTR_PEDOMETER_AGE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x4),
+ SENSOR_ATTR_PEDOMETER_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_PEDOMETER, 0x2F),
+
+ SENSOR_ATTR_STRESS_MONITOR_AGE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x1),
+
+ SENSOR_ATTR_EXERCISE_TYPE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x1),
+ SENSOR_ATTR_EXERCISE_GPS =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x2),
+ SENSOR_ATTR_EXERCISE_BATCH_INTERVAL =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x3),
+ SENSOR_ATTR_EXERCISE_PSERVICE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_STANDALONE, 0x4),
+
+ SENSOR_ATTR_CYCLE_DURATION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x1),
+ SENSOR_ATTR_CYCLE_HOLDING_POSITION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x2),
+ SENSOR_ATTR_CYCLE_VELOCITY =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x3),
+ SENSOR_ATTR_CYCLE_GET_DATA_TYPE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x4),
+ SENSOR_ATTR_CYCLE_DATA_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x5),
+ SENSOR_ATTR_CYCLE_GPS_AGREEMENT =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_CYCLE_MONITOR, 0x6),
+
+ SENSOR_ATTR_WORKOUT_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_WORKOUT, 0x1),
+ SENSOR_ATTR_WORKOUT_DURATION = CONVERT_TYPE_ATTR(SENSOR_DEVICE_WORKOUT, 0x2),
+
+ SENSOR_ATTR_RESTING_HR_OPR_MODE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x1),
+ SENSOR_ATTR_RESTING_HR_MAX_RHR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x2),
+ SENSOR_ATTR_RESTING_HR_MIN_RHR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x3),
+ SENSOR_ATTR_RESTING_HR_AVG_RHR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x4),
+ SENSOR_ATTR_RESTING_HR_HOUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x5),
+ SENSOR_ATTR_RESTING_HR_MIN = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x6),
+ SENSOR_ATTR_RESTING_HR_SEC = CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x7),
+ SENSOR_ATTR_RESTING_HR_PROPERTY_TYPE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x10),
+ SENSOR_ATTR_RESTING_HR_PROPERTY_HR_TYPE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x11),
+ SENSOR_ATTR_RESTING_HR_PROPERTY_HR_VALUE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x12),
+ SENSOR_ATTR_RESTING_HR_PROPERTY_DURATION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x13),
+ SENSOR_ATTR_RESTING_HR_PROPERTY_ACT_TYPE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x14),
+ SENSOR_ATTR_RESTING_HR_PROPERTY_ACT_DUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x15),
+ SENSOR_ATTR_RESTING_HR_PROPERTY_CONT_DUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x16),
+ SENSOR_ATTR_RESTING_HR_DATA_TYPE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x20),
+ SENSOR_ATTR_RESTING_HR_DATA_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_RESTING_HR, 0x21),
+
+ SENSOR_ATTR_STEP_LEVEL_MONITOR_DW_DURATION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_STEP_LEVEL_MONITOR, 0x1),
+
+ SENSOR_ATTR_EXERCISE_HR_OPR_MODE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x1),
+ SENSOR_ATTR_EXERCISE_HR_ACTIVITY_TYPE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x2),
+ SENSOR_ATTR_EXERCISE_HR_BATCH_DUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x3),
+ SENSOR_ATTR_EXERCISE_HR_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x4),
+ SENSOR_ATTR_EXERCISE_HR_ELEVATED_DUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x5),
+ SENSOR_ATTR_EXERCISE_HR_ELEVATED_THR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x6),
+ SENSOR_ATTR_EXERCISE_HR_BPM_RAW =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x7),
+ SENSOR_ATTR_EXERCISE_HR_LOW_ALERT_DUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x8),
+ SENSOR_ATTR_EXERCISE_HR_LOW_ALERT_THR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_EXERCISE_HR, 0x9),
+
+ SENSOR_ATTR_PRESSURE_INDICATOR_START =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x1),
+ SENSOR_ATTR_PRESSURE_INDICATOR_STOP =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x2),
+ SENSOR_ATTR_PRESSURE_INDICATOR_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x3),
+ SENSOR_ATTR_PRESSURE_INDICATOR_RESTORE_TIME =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x4),
+ SENSOR_ATTR_PRESSURE_INDICATOR_RESTORE_VALUE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x5),
+ SENSOR_ATTR_PRESSURE_INDICATOR_CURRENT_TIME =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_INDICATOR, 0x6),
+
+ SENSOR_ATTR_PRESSURE_ALERT_START =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_ALERT, 0x1),
+ SENSOR_ATTR_PRESSURE_ALERT_STOP =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_PRESSURE_ALERT, 0x2),
+
+ SENSOR_ATTR_HR_CALORIE_AGE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x1),
+ SENSOR_ATTR_HR_CALORIE_HEIGHT =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x2),
+ SENSOR_ATTR_HR_CALORIE_WEIGHT =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x3),
+ SENSOR_ATTR_HR_CALORIE_GENDER =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x4),
+ SENSOR_ATTR_HR_CALORIE_INST =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x10),
+ SENSOR_ATTR_HR_CALORIE_EXERCISE_TYPE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x11),
+ SENSOR_ATTR_HR_CALORIE_TARGET_CAL =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x12),
+ SENSOR_ATTR_HR_CALORIE_MAX_HEARTRATE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x13),
+ SENSOR_ATTR_HR_CALORIE_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HR_CALORIE, 0x20),
+
+ SENSOR_ATTR_SWIMMING_TRACKER_PLACE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x1),
+ SENSOR_ATTR_SWIMMING_TRACKER_DISTANCE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x2),
+ SENSOR_ATTR_SWIMMING_TRACKER_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x3),
+ SENSOR_ATTR_SWIMMING_TRACKER_BATCH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x4),
+ SENSOR_ATTR_SWIMMING_TRACKER_GOAL_CALORIES =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x5),
+ SENSOR_ATTR_SWIMMING_TRACKER_GOAL_LAPS =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x6),
+ SENSOR_ATTR_SWIMMING_TRACKER_TIME_REST =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x7),
+ SENSOR_ATTR_SWIMMING_TRACKER_TIME_TURN =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_TRACKER, 0x8),
+
+ SENSOR_ATTR_SWIMMING_OUTDOOR_SET_BATCH_LAP_COUNT =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x1),
+ SENSOR_ATTR_SWIMMING_OUTDOOR_SETGOAL_LENGTH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x2),
+ SENSOR_ATTR_SWIMMING_OUTDOOR_SETGOAL_TIME =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x3),
+ SENSOR_ATTR_SWIMMING_OUTDOOR_SET_GPS_PERMISSION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x4),
+ SENSOR_ATTR_SWIMMING_OUTDOOR_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_SWIMMING_OUTDOOR, 0x6),
+
+ SENSOR_ATTR_AUTO_SWIMMING_DURATION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_AUTO_SWIMMING, 0x1),
+
+ SENSOR_ATTR_INACTIVITY_DETECTOR_LEVEL =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_INACTIVITY_DETECTOR, 0x1),
+ SENSOR_ATTR_INACTIVITY_DETECTOR_DURATION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_INACTIVITY_DETECTOR, 0x2),
+
+ SENSOR_ATTR_STRESS_TRACKER_DUR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_STRESS_TRACKER, 0x1),
+ SENSOR_ATTR_STRESS_TRACKER_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_STRESS_TRACKER, 0x2),
+
+ SENSOR_ATTR_STRESS_MONITOR_BASE_HR =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x1),
+ SENSOR_ATTR_STRESS_MONITOR_HISTO_INDEX =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x2),
+ SENSOR_ATTR_STRESS_MONITOR_HISTO_VALUE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x3),
+ SENSOR_ATTR_STRESS_MONITOR_TUNE_INDEX =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x4),
+ SENSOR_ATTR_STRESS_MONITOR_TUNE_VALUE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x5),
+ SENSOR_ATTR_STRESS_MONITOR_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x6),
+ SENSOR_ATTR_STRESS_MONITOR_OPERATION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_STRESS_MONITOR, 0x7),
+
+ SENSOR_ATTR_SLEEP_MONITOR_STOP =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_MONITOR, 0x1),
+ SENSOR_ATTR_SLEEP_MONITOR_FLUSH =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_MONITOR, 0x2),
+
+ SENSOR_ATTR_SLEEP_DETECTOR_STOP =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR, 0x1),
+ SENSOR_ATTR_SLEEP_DETECTOR_SETTING =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_HUMAN_SLEEP_DETECTOR, 0x2),
+
+ SENSOR_ATTR_DATA_JOURNAL_START =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_DATA_JOURNAL, 0x1),
+ SENSOR_ATTR_DATA_JOURNAL_STOP =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_DATA_JOURNAL, 0x2),
+
+ SENSOR_ATTR_GPS_BATCH_OPR_MODE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_GPS_BATCH, 0x1),
+
+ SENSOR_ATTR_PPG_BATCH_POLLING_INTERVAL =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_PPG_BATCH, 0x1),
+ SENSOR_ATTR_PPG_BATCH_FLUSH = CONVERT_TYPE_ATTR(SENSOR_DEVICE_PPG_BATCH, 0x2),
+
+ SENSOR_ATTR_REG_CTRL_TYPE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x1),
+ SENSOR_ATTR_REG_CTRL_ADDRESS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x2),
+ SENSOR_ATTR_REG_CTRL_VALUE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x3),
+ SENSOR_ATTR_REG_CTRL_MODE = CONVERT_TYPE_ATTR(SENSOR_DEVICE_REG_CTRL, 0x4),
+
+ SENSOR_ATTR_GPS_CTRL_SETTING = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GPS_CTRL, 0x1),
+
+ SENSOR_ATTR_FAKE_MOTION_EVENT_INTERVAL =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x1),
+ SENSOR_ATTR_FAKE_MOTION_EVENT_COUNT =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x2),
+ SENSOR_ATTR_FAKE_MOTION_PAUSE_INTERVAL =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_FAKE_MOTION, 0x3),
+
+ SENSOR_ATTR_GEOFENCE_ID = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x1),
+ SENSOR_ATTR_GEOFENCE_LAT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x2),
+ SENSOR_ATTR_GEOFENCE_LON = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x3),
+ SENSOR_ATTR_GEOFENCE_RADIUS = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x4),
+ SENSOR_ATTR_GEOFENCE_PROVIDER =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x5),
+ SENSOR_ATTR_GEOFENCE_ACCURACY =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x6),
+ SENSOR_ATTR_GEOFENCE_TIMESTAMP =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x7),
+ SENSOR_ATTR_GEOFENCE_CONNECT = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x8),
+ SENSOR_ATTR_GEOFENCE_START = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x10),
+ SENSOR_ATTR_GEOFENCE_STOP = CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x11),
+ SENSOR_ATTR_GEOFENCE_SET_LOCATION =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x12),
+ SENSOR_ATTR_GEOFENCE_BT_CONNECT =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_GEOFENCE, 0x13),
+
+ SENSOR_ATTR_FALL_DETECTION_OPR_MODE =
+ CONVERT_TYPE_ATTR(SENSOR_DEVICE_FALL_DETECTION, 0x1),
+};
+
+enum sensor_activity {
+ SENSOR_ACTIVITY_UNKNOWN = 1,
+ SENSOR_ACTIVITY_STILL = 2,
+ SENSOR_ACTIVITY_WALKING = 4,
+ SENSOR_ACTIVITY_RUNNING = 8,
+ SENSOR_ACTIVITY_IN_VEHICLE = 16,
+ SENSOR_ACTIVITY_ON_BICYCLE = 32,
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* __HAL_SENSOR_DEVICE_TYPES__ */