void report_meta_data(struct ssp_data *data, struct sensor_value *s)
{
	pr_info("[SSP]: %s - what: %d, sensor: %d\n", __func__,
		s->meta_data.what, s->meta_data.sensor);

	if (s->meta_data.sensor == ACCELEROMETER_SENSOR) {
		s16 accel_buf[3];
		memset(accel_buf, 0xff, sizeof(s16) * 3);
		ssp_push_6bytes_buffer(data->accel_indio_dev, 0, accel_buf);
	} else if (s->meta_data.sensor == GYROSCOPE_SENSOR) {
		int gyro_buf[3];
		memset(gyro_buf, 0xff, sizeof(int) * 3);
		ssp_push_12bytes_buffer(data->gyro_indio_dev, 0, gyro_buf);
	} else if (s->meta_data.sensor == GAME_ROTATION_VECTOR) {
		int grot_buf[5];
		memset(grot_buf, 0xff, sizeof(int) * 4);
		ssp_push_17bytes_buffer(data->game_rot_indio_dev, 0, grot_buf);
	} else if (s->meta_data.sensor == STEP_DETECTOR) {
		u8 step_buf[1] = {0xff};
		ssp_push_1bytes_buffer(data->step_det_indio_dev, 0, step_buf);
	} else {
		input_report_rel(data->meta_input_dev, REL_DIAL,
			s->meta_data.what);
		input_report_rel(data->meta_input_dev, REL_HWHEEL,
			s->meta_data.sensor + 1);
		input_sync(data->meta_input_dev);
	}
}
void report_acc_data(struct ssp_data *data, struct sensor_value *accdata)
{
	s16 accel_buf[3];
	data->buf[ACCELEROMETER_SENSOR].x = accdata->x;
	data->buf[ACCELEROMETER_SENSOR].y = accdata->y;
	data->buf[ACCELEROMETER_SENSOR].z = accdata->z;

	accel_buf[0] = data->buf[ACCELEROMETER_SENSOR].x;
	accel_buf[1] = data->buf[ACCELEROMETER_SENSOR].y;
	accel_buf[2] = data->buf[ACCELEROMETER_SENSOR].z;
	ssp_push_6bytes_buffer(data->accel_indio_dev, accdata->timestamp,
		accel_buf);
}
示例#3
0
void report_meta_data(struct ssp_data *data, struct sensor_value *s)
{
	pr_info("[SSP]: %s - what: %d, sensor: %d\n", __func__,
		s->meta_data.what, s->meta_data.sensor);

	if (s->meta_data.sensor == ACCELEROMETER_SENSOR) {
		s16 accel_buf[3];
		memset(accel_buf, 0, sizeof(s16) * 3);
		ssp_push_6bytes_buffer(data->accel_indio_dev, 0, accel_buf);
	} else if (s->meta_data.sensor == GYROSCOPE_SENSOR) {
		int gyro_buf[3];
		memset(gyro_buf, 0, sizeof(int) * 3);
		ssp_push_12bytes_buffer(data->gyro_indio_dev, 0, gyro_buf);
	} else if (s->meta_data.sensor == GYRO_UNCALIB_SENSOR) {
		s16 uncal_gyro_buf[6];
		memset(uncal_gyro_buf, 0, sizeof(s16) * 6);
		ssp_push_24bytes_buffer(data->uncal_gyro_indio_dev,
			0, uncal_gyro_buf);
	} else if (s->meta_data.sensor == GEOMAGNETIC_SENSOR) {
		s16 mag_buf[3];
		memset(mag_buf, 0, sizeof(s16) * 3);
		ssp_push_7bytes_buffer(data->mag_indio_dev, 0, mag_buf, 0);
	} else if (s->meta_data.sensor == GEOMAGNETIC_UNCALIB_SENSOR) {
		s16 uncal_mag_buf[6];
		memset(uncal_mag_buf, 0, sizeof(s16) * 6);
		ssp_push_24bytes_buffer(data->uncal_mag_indio_dev,
			0, uncal_mag_buf);
	} else if (s->meta_data.sensor == PRESSURE_SENSOR) {
		int pressure_buf[3];
		memset(pressure_buf, 0, sizeof(int) * 3);
		ssp_push_12bytes_buffer(data->pressure_indio_dev, 0,
			pressure_buf);
	} else if (s->meta_data.sensor == ROTATION_VECTOR) {
		int rot_buf[5];
		memset(rot_buf, 0, sizeof(int) * 5);
		ssp_push_17bytes_buffer(data->rot_indio_dev, 0, rot_buf);
	} else if (s->meta_data.sensor == GAME_ROTATION_VECTOR) {
		int grot_buf[5];
		memset(grot_buf, 0, sizeof(int) * 5);
		ssp_push_17bytes_buffer(data->game_rot_indio_dev, 0, grot_buf);
	} else if (s->meta_data.sensor == STEP_DETECTOR) {
		u8 step_buf[1] = {0};
		ssp_push_1bytes_buffer(data->step_det_indio_dev, 0, step_buf);
	} else {
		input_report_rel(data->meta_input_dev, REL_DIAL,
			s->meta_data.what);
		input_report_rel(data->meta_input_dev, REL_HWHEEL,
			s->meta_data.sensor + 1);
		input_sync(data->meta_input_dev);
	}
}
void report_acc_data(struct ssp_data *data, struct sensor_value *accdata)
{
	s16 accel_buf[3];

	data->buf[ACCELEROMETER_SENSOR].x = accdata->x;
	data->buf[ACCELEROMETER_SENSOR].y = accdata->y;
	data->buf[ACCELEROMETER_SENSOR].z = accdata->z;

	accel_buf[0] = data->buf[ACCELEROMETER_SENSOR].x;
	accel_buf[1] = data->buf[ACCELEROMETER_SENSOR].y;
	accel_buf[2] = data->buf[ACCELEROMETER_SENSOR].z;
#if defined(CONFIG_SEC_LENTIS_PROJECT)
	if (data->ap_rev < MPU6500_REV) {
		accel_buf[0] <<= 2;
		accel_buf[1] <<= 2;
		accel_buf[2] <<= 2;
	}
#endif

	ssp_push_6bytes_buffer(data->accel_indio_dev, accdata->timestamp,
		accel_buf);
}