1 /* 2 * Copyright (C) 2014, Samsung Electronics Co. Ltd. All Rights Reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 */ 15 #ifndef _SSP_SENSORS_H_ 16 #define _SSP_SENSORS_H_ 17 18 #include <linux/iio/iio.h> 19 20 #define SSP_TIME_SIZE 4 21 #define SSP_ACCELEROMETER_SIZE 6 22 #define SSP_GYROSCOPE_SIZE 6 23 #define SSP_BIO_HRM_RAW_SIZE 8 24 #define SSP_BIO_HRM_RAW_FAC_SIZE 36 25 #define SSP_BIO_HRM_LIB_SIZE 8 26 27 /** 28 * enum ssp_sensor_type - SSP sensor type 29 */ 30 enum ssp_sensor_type { 31 SSP_ACCELEROMETER_SENSOR = 0, 32 SSP_GYROSCOPE_SENSOR, 33 SSP_GEOMAGNETIC_UNCALIB_SENSOR, 34 SSP_GEOMAGNETIC_RAW, 35 SSP_GEOMAGNETIC_SENSOR, 36 SSP_PRESSURE_SENSOR, 37 SSP_GESTURE_SENSOR, 38 SSP_PROXIMITY_SENSOR, 39 SSP_TEMPERATURE_HUMIDITY_SENSOR, 40 SSP_LIGHT_SENSOR, 41 SSP_PROXIMITY_RAW, 42 SSP_ORIENTATION_SENSOR, 43 SSP_STEP_DETECTOR, 44 SSP_SIG_MOTION_SENSOR, 45 SSP_GYRO_UNCALIB_SENSOR, 46 SSP_GAME_ROTATION_VECTOR, 47 SSP_ROTATION_VECTOR, 48 SSP_STEP_COUNTER, 49 SSP_BIO_HRM_RAW, 50 SSP_BIO_HRM_RAW_FAC, 51 SSP_BIO_HRM_LIB, 52 SSP_SENSOR_MAX, 53 }; 54 55 struct ssp_data; 56 57 /** 58 * struct ssp_sensor_data - Sensor object 59 * @process_data: Callback to feed sensor data. 60 * @type: Used sensor type. 61 * @buffer: Received data buffer. 62 */ 63 struct ssp_sensor_data { 64 int (*process_data)(struct iio_dev *indio_dev, void *buf, 65 int64_t timestamp); 66 enum ssp_sensor_type type; 67 u8 *buffer; 68 }; 69 70 void ssp_register_consumer(struct iio_dev *indio_dev, 71 enum ssp_sensor_type type); 72 73 int ssp_enable_sensor(struct ssp_data *data, enum ssp_sensor_type type, 74 u32 delay); 75 76 int ssp_disable_sensor(struct ssp_data *data, enum ssp_sensor_type type); 77 78 u32 ssp_get_sensor_delay(struct ssp_data *data, enum ssp_sensor_type); 79 80 int ssp_change_delay(struct ssp_data *data, enum ssp_sensor_type type, 81 u32 delay); 82 #endif /* _SSP_SENSORS_H_ */ 83