0001
0002
0003
0004
0005 #ifndef _SSP_SENSORS_H_
0006 #define _SSP_SENSORS_H_
0007
0008 #include <linux/iio/iio.h>
0009
0010 #define SSP_TIME_SIZE 4
0011 #define SSP_ACCELEROMETER_SIZE 6
0012 #define SSP_GYROSCOPE_SIZE 6
0013 #define SSP_BIO_HRM_RAW_SIZE 8
0014 #define SSP_BIO_HRM_RAW_FAC_SIZE 36
0015 #define SSP_BIO_HRM_LIB_SIZE 8
0016
0017
0018
0019
0020 enum ssp_sensor_type {
0021 SSP_ACCELEROMETER_SENSOR = 0,
0022 SSP_GYROSCOPE_SENSOR,
0023 SSP_GEOMAGNETIC_UNCALIB_SENSOR,
0024 SSP_GEOMAGNETIC_RAW,
0025 SSP_GEOMAGNETIC_SENSOR,
0026 SSP_PRESSURE_SENSOR,
0027 SSP_GESTURE_SENSOR,
0028 SSP_PROXIMITY_SENSOR,
0029 SSP_TEMPERATURE_HUMIDITY_SENSOR,
0030 SSP_LIGHT_SENSOR,
0031 SSP_PROXIMITY_RAW,
0032 SSP_ORIENTATION_SENSOR,
0033 SSP_STEP_DETECTOR,
0034 SSP_SIG_MOTION_SENSOR,
0035 SSP_GYRO_UNCALIB_SENSOR,
0036 SSP_GAME_ROTATION_VECTOR,
0037 SSP_ROTATION_VECTOR,
0038 SSP_STEP_COUNTER,
0039 SSP_BIO_HRM_RAW,
0040 SSP_BIO_HRM_RAW_FAC,
0041 SSP_BIO_HRM_LIB,
0042 SSP_SENSOR_MAX,
0043 };
0044
0045 struct ssp_data;
0046
0047
0048
0049
0050
0051
0052
0053 struct ssp_sensor_data {
0054 int (*process_data)(struct iio_dev *indio_dev, void *buf,
0055 int64_t timestamp);
0056 enum ssp_sensor_type type;
0057 u8 *buffer;
0058 };
0059
0060 void ssp_register_consumer(struct iio_dev *indio_dev,
0061 enum ssp_sensor_type type);
0062
0063 int ssp_enable_sensor(struct ssp_data *data, enum ssp_sensor_type type,
0064 u32 delay);
0065
0066 int ssp_disable_sensor(struct ssp_data *data, enum ssp_sensor_type type);
0067
0068 u32 ssp_get_sensor_delay(struct ssp_data *data, enum ssp_sensor_type);
0069
0070 int ssp_change_delay(struct ssp_data *data, enum ssp_sensor_type type,
0071 u32 delay);
0072 #endif