4 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
20 #ifndef __SENSOR_COMMON_H__
21 #define __SENSOR_COMMON_H__
24 #include <sensor_logs.h>
28 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
31 #define DEPRECATED __attribute__((deprecated))
40 * @defgroup SENSOR_FRAMEWORK SensorFW
41 * To support the unified API for the various sensors
45 * @defgroup SENSOR_FRAMEWORK_COMMON Sensor Framework Common API
46 * @ingroup SENSOR_FRAMEWORK
48 * These APIs are used to control the sensors.
72 ROTATION_VECTOR_SENSOR,
73 GEOMAGNETIC_RV_SENSOR,
87 UNCAL_GYROSCOPE_SENSOR,
88 UNCAL_GEOMAGNETIC_SENSOR
91 typedef unsigned int sensor_id_t;
93 typedef void *sensor_t;
96 SENSOR_PRIVILEGE_PUBLIC,
97 SENSOR_PRIVILEGE_INTERNAL,
100 #define SENSOR_DATA_VALUE_SIZE 16
103 * When modifying it, check copy_sensor_data()
105 typedef struct sensor_data_t {
107 * Use "accuracy" instead of "data_accuracy"
108 * which is going to be removed soon
112 int data_accuracy; //deprecated
116 unsigned long long timestamp;
117 unsigned long long time_stamp; //deprecated
121 * Use "value_count" instead of "values_num"
122 * which is going to be removed soon
126 int values_num; //deprecated
129 float values[SENSOR_DATA_VALUE_SIZE];
132 * If extra_data_size > 0,
133 * then use extra_data.
139 #define SENSOR_HUB_DATA_SIZE 4096
141 typedef struct sensorhub_data_t {
146 unsigned long long timestamp;
147 char hub_data[SENSOR_HUB_DATA_SIZE];
151 enum sensor_accuracy_t {
152 SENSOR_ACCURACY_UNDEFINED = -1,
153 SENSOR_ACCURACY_BAD = 0,
154 SENSOR_ACCURACY_NORMAL =1,
155 SENSOR_ACCURACY_GOOD = 2,
156 SENSOR_ACCURACY_VERYGOOD = 3
160 * To prevent naming confliction as using same enums as sensor CAPI use
163 enum sensor_option_t {
164 SENSOR_OPTION_DEFAULT = 0,
165 SENSOR_OPTION_ON_IN_SCREEN_OFF = 1,
166 SENSOR_OPTION_ON_IN_POWERSAVE_MODE = 2,
167 SENSOR_OPTION_ALWAYS_ON = SENSOR_OPTION_ON_IN_SCREEN_OFF | SENSOR_OPTION_ON_IN_POWERSAVE_MODE,
171 typedef enum sensor_option_t sensor_option_e;
175 * To prevent naming confliction as using same enums as sensor CAPI use
178 enum sensor_wakeup_t {
179 SENSOR_WAKEUP_UNKNOWN = -1,
180 SENSOR_WAKEUP_OFF = 0,
181 SENSOR_WAKEUP_ON = 1,
184 typedef enum sensor_wakeup_t sensor_wakeup_e;
187 enum sensor_interval_t {
188 SENSOR_INTERVAL_FASTEST = 0,
189 SENSOR_INTERVAL_NORMAL = 200,
195 CONDITION_GREAT_THAN,
199 #define COMMAND_CHANNEL_PATH "/tmp/sensord_command_socket"
200 #define EVENT_CHANNEL_PATH "/tmp/sensord_event_socket"
202 #define MAX_HANDLE 256
203 #define MAX_HANDLE_REACHED -2
205 #define CLIENT_ID_INVALID -1
207 #define SENSOR_TYPE_MASK 0xFFFF
226 CMD_SEND_SENSORHUB_DATA,
230 enum sensor_state_t {
231 SENSOR_STATE_UNKNOWN = -1,
232 SENSOR_STATE_STOPPED = 0,
233 SENSOR_STATE_STARTED = 1,
234 SENSOR_STATE_PAUSED = 2
237 enum poll_interval_t {
245 POLL_MAX_HZ_MS = POLL_1HZ_MS,
253 } cmd_get_sensor_list_t;
280 } cmd_get_sensor_list_done_t;
284 sensor_data_t base_data;
285 } cmd_get_data_done_t;
294 unsigned int event_type;
298 unsigned int event_type;
302 unsigned int interval;
303 unsigned int latency;
325 } cmd_send_sensorhub_data_t;
327 #define EVENT_CHANNEL_MAGIC 0xCAFECAFE
332 } event_channel_ready_t;
343 bool wakeup_supported;
344 } sensor_properties_s;
347 * When modifying it, check copy_sensor*_data()
349 typedef struct sensor_event_t {
350 unsigned int event_type;
351 sensor_id_t sensor_id;
355 typedef struct sensorhub_event_t {
356 unsigned int event_type;
357 sensor_id_t sensor_id;
358 sensorhub_data_t data;
362 std::vector<void*> devices;
365 typedef sensor_devices* (*create_t)(void);
367 typedef void *(*cmd_func_t)(void *data, void *cb_data);
369 typedef std::vector<unsigned int> event_type_vector;
371 enum sensorhub_enable_bit {
372 SENSORHUB_ACCELEROMETER_ENABLE_BIT = 0,
373 SENSORHUB_GYROSCOPE_ENABLE_BIT,
374 SENSORHUB_GEOMAGNETIC_UNCALIB_ENABLE_BIT,
375 SENSORHUB_GEOMAGNETIC_RAW_ENABLE_BIT,
376 SENSORHUB_GEOMAGNETIC_ENABLE_BIT,
377 SENSORHUB_PRESSURE_ENABLE_BIT,
378 SENSORHUB_GESTURE_ENABLE_BIT,
379 SENSORHUB_PROXIMITY_ENABLE_BIT,
380 SENSORHUB_TEMPERATURE_HUMIDITY_ENABLE_BIT,
381 SENSORHUB_LIGHT_ENABLE_BIT,
382 SENSORHUB_PROXIMITY_RAW_ENABLE_BIT,
383 SENSORHUB_ORIENTATION_ENABLE_BIT,
384 SENSORHUB_STEP_DETECTOR_ENABLE_BIT = 12,
385 SENSORHUB_SIG_MOTION_ENABLE_BIT,
386 SENSORHUB_GYRO_UNCALIB_ENABLE_BIT,
387 SENSORHUB_GAME_ROTATION_VECTOR_ENABLE_BIT = 15,
388 SENSORHUB_ROTATION_VECTOR_ENABLE_BIT,
389 SENSORHUB_STEP_COUNTER_ENABLE_BIT,
390 SENSORHUB_BIO_HRM_RAW_ENABLE_BIT,
391 SENSORHUB_BIO_HRM_RAW_FAC_ENABLE_BIT,
392 SENSORHUB_BIO_HRM_LIB_ENABLE_BIT,
393 SENSORHUB_TILT_MOTION,
395 SENSORHUB_PIR_ENABLE_BIT,
396 SENSORHUB_ENABLE_BIT_MAX,
399 enum sensor_permission_t {
400 SENSOR_PERMISSION_NONE = 0,
401 SENSOR_PERMISSION_STANDARD = (1 << 0),
402 SENSOR_PERMISSION_BIO = (1 << 1),
405 #define BIO_SENSOR_PRIVELEGE_NAME "sensord::bio"
406 #define BIO_SENSOR_ACCESS_RIGHT "rw"