diff options
Diffstat (limited to 'libsensors_iio/src/SensorHAL.h')
-rw-r--r-- | libsensors_iio/src/SensorHAL.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/libsensors_iio/src/SensorHAL.h b/libsensors_iio/src/SensorHAL.h new file mode 100644 index 0000000..99d4646 --- /dev/null +++ b/libsensors_iio/src/SensorHAL.h @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2013-2015 STMicroelectronics + * Author: Denis Ciocca - <denis.ciocca@st.com> + * + * 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 ST_SENSOR_HAL_H +#define ST_SENSOR_HAL_H + +#include <hardware/hardware.h> +#include <hardware/sensors.h> +#include <poll.h> + +#include "SWSensorBase.h" +#include "common_data.h" + +#define ARRAY_SIZE(a) (int)((sizeof(a) / sizeof(*(a))) / \ + static_cast<size_t>(!(sizeof(a) % sizeof(*(a))))) + +/* + * Android string version + */ +#define ST_HAL_KITKAT_VERSION 0 +#define ST_HAL_LOLLIPOP_VERSION 1 + +/* + * IIO driver sensors names + */ +#define ST_SENSORS_LIST_1 "lsm6ds3" + +/* + * IIO driver sensors suffix for sensors + */ +#define ACCEL_NAME_SUFFIX_IIO "_accel" +#define MAGN_NAME_SUFFIX_IIO "_magn" +#define GYRO_NAME_SUFFIX_IIO "_gyro" +#define SIGN_MOTION_NAME_SUFFIX_IIO "_sign_motion" +#define STEP_DETECTOR_NAME_SUFFIX_IIO "_step_d" +#define STEP_COUNTER_NAME_SUFFIX_IIO "_step_c" +#define TILT_NAME_SUFFIX_IIO "_tilt" +#define PRESSURE_NAME_SUFFIX_IIO "_press" + +#define ST_HAL_WAKEUP_SUFFIX_IIO "_wk" + +#define CONCATENATE_STRING(x, y) (x y) + +#if (CONFIG_ST_HAL_ANDROID_VERSION == ST_HAL_LOLLIPOP_VERSION) +#define ST_HAL_IIO_DEVICE_API_VERSION SENSORS_DEVICE_API_VERSION_1_3 +#else /* CONFIG_ST_HAL_ANDROID_VERSION */ +#define ST_HAL_IIO_DEVICE_API_VERSION SENSORS_DEVICE_API_VERSION_1_1 +#endif /* CONFIG_ST_HAL_ANDROID_VERSION */ + +#if defined(CONFIG_ST_HAL_HAS_GEOMAG_FUSION) && \ + (defined(CONFIG_ST_HAL_GEOMAG_ROT_VECTOR_AP_ENABLED)) +#define ST_HAL_NEEDS_GEOMAG_FUSION 1 +#endif /* CONFIG_ST_HAL_GAME_ROT_VECTOR_AP_ENABLED */ + +#if defined(CONFIG_ST_HAL_HAS_6AX_FUSION) && \ + (defined(CONFIG_ST_HAL_GAME_ROT_VECTOR_AP_ENABLED)) +#define ST_HAL_NEEDS_6AX_FUSION 1 +#endif /* CONFIG_ST_HAL_GAME_ROT_VECTOR_AP_ENABLED */ + +#if defined(CONFIG_ST_HAL_HAS_9AX_FUSION) && \ + (defined(CONFIG_ST_HAL_ROT_VECTOR_AP_ENABLED) || \ + defined(CONFIG_ST_HAL_ORIENTATION_AP_ENABLED) || \ + defined(CONFIG_ST_HAL_GRAVITY_AP_ENABLED) || \ + defined(CONFIG_ST_HAL_LINEAR_AP_ENABLED)) +#define ST_HAL_NEEDS_9AX_FUSION 1 +#endif /* CONFIG_ST_HAL_GAME_ROT_VECTOR_AP_ENABLED */ + + +struct tmp_dicovery_data { + char *driver_name; + char *trigger_name; + char *dev_buffer_path; + + char *iio_sysfs_path; + char *iio_sysfs_custom_trigger_path; +}; + +struct STSensorHAL_data { + struct sensors_poll_device_1 poll_device; + + pthread_t *threads; + SensorBase *sensor_classes[ST_HAL_IIO_MAX_DEVICES]; + + unsigned int sensor_available; + struct sensor_t *sensor_t_list; + + struct pollfd android_pollfd; +} typedef STSensorHAL_data; + +#endif /* ST_SENSOR_HAL_H */ |