ssize_t mcu_sleep_factorytest_show(struct device *dev, struct device_attribute *attr, char *buf) { int iDataIdx, iSensorData = 0; struct ssp_data *data = dev_get_drvdata(dev); struct sensor_value fsb[SENSOR_MAX]; if (!(data->uFactorydataReady & (1 << MCU_SLEEP_FACTORY))) { pr_err("[SSP]: %s - The Sensorhub is not ready\n", __func__); goto exit; } for (iDataIdx = 0; iDataIdx < FACTORY_DATA_MAX;) { iSensorData = (int)data->uFactorydata[iDataIdx++]; if ((iSensorData < 0) || (iSensorData >= (SENSOR_MAX - 1))) { pr_err("[SSP]: %s - Mcu data frame error %d\n", __func__, iSensorData); goto exit; } data->get_sensor_data[iSensorData]((char *)data->uFactorydata, &iDataIdx, &(fsb[iSensorData])); } convert_acc_data(&fsb[ACCELEROMETER_SENSOR].x); convert_acc_data(&fsb[ACCELEROMETER_SENSOR].y); convert_acc_data(&fsb[ACCELEROMETER_SENSOR].z); exit: ssp_dbg("[SSP]: %s Result - " "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%u,%u,%u,%u,%u\n", __func__, fsb[ACCELEROMETER_SENSOR].x, fsb[ACCELEROMETER_SENSOR].y, fsb[ACCELEROMETER_SENSOR].z, fsb[GYROSCOPE_SENSOR].x, fsb[GYROSCOPE_SENSOR].y, fsb[GYROSCOPE_SENSOR].z, fsb[GEOMAGNETIC_SENSOR].x, fsb[GEOMAGNETIC_SENSOR].y, fsb[GEOMAGNETIC_SENSOR].z, fsb[PRESSURE_SENSOR].pressure[0], fsb[PRESSURE_SENSOR].pressure[1], fsb[PROXIMITY_SENSOR].prox[1], fsb[LIGHT_SENSOR].r, fsb[LIGHT_SENSOR].g, fsb[LIGHT_SENSOR].b, fsb[LIGHT_SENSOR].w); return sprintf(buf, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%u,%u,%u,%u,%u\n", fsb[ACCELEROMETER_SENSOR].x, fsb[ACCELEROMETER_SENSOR].y, fsb[ACCELEROMETER_SENSOR].z, fsb[GYROSCOPE_SENSOR].x, fsb[GYROSCOPE_SENSOR].y, fsb[GYROSCOPE_SENSOR].z, fsb[GEOMAGNETIC_SENSOR].x, fsb[GEOMAGNETIC_SENSOR].y, fsb[GEOMAGNETIC_SENSOR].z, fsb[PRESSURE_SENSOR].pressure[0], fsb[PRESSURE_SENSOR].pressure[1], fsb[PROXIMITY_SENSOR].prox[1], fsb[LIGHT_SENSOR].r, fsb[LIGHT_SENSOR].g, fsb[LIGHT_SENSOR].b, fsb[LIGHT_SENSOR].w); }
void report_acc_data(struct ssp_data *data, struct sensor_value *accdata) { convert_acc_data(&accdata->x); convert_acc_data(&accdata->y); convert_acc_data(&accdata->z); data->buf[ACCELEROMETER_SENSOR].x = accdata->x - data->accelcal.x; data->buf[ACCELEROMETER_SENSOR].y = accdata->y - data->accelcal.y; data->buf[ACCELEROMETER_SENSOR].z = accdata->z - data->accelcal.z; input_report_rel(data->acc_input_dev, REL_X, data->buf[ACCELEROMETER_SENSOR].x); input_report_rel(data->acc_input_dev, REL_Y, data->buf[ACCELEROMETER_SENSOR].y); input_report_rel(data->acc_input_dev, REL_Z, data->buf[ACCELEROMETER_SENSOR].z); input_sync(data->acc_input_dev); }
ssize_t mcu_sleep_factorytest_show(struct device *dev, struct device_attribute *attr, char *buf) { int iDataIdx, iSensorData = 0; struct ssp_data *data = dev_get_drvdata(dev); struct sensor_value fsb[SENSOR_MAX]; if (!(data->uFactorydataReady & (1 << MCU_SLEEP_FACTORY))) { pr_err("[SSP]: %s - The Sensorhub is not ready\n", __func__); goto exit; } /* if using this log, have to declare int i; for (i = 0; i < FACTORY_DATA_MAX; i++) pr_info("[SSP] %s: data->uFactorydata[%d] = 0x%X\n", __func__, i, data->uFactorydata[i]); */ for (iDataIdx = 0; iDataIdx < FACTORY_DATA_MAX;) { iSensorData = (int)data->uFactorydata[iDataIdx++]; if ((iSensorData < 0) || (iSensorData >= (SENSOR_MAX - 1))) { pr_err("[SSP]: %s - Mcu data frame error %d\n", __func__, iSensorData); goto exit; } data->get_sensor_data[iSensorData]((char *)data->uFactorydata, &iDataIdx, &(fsb[iSensorData])); } convert_acc_data(&fsb[ACCELEROMETER_SENSOR].x); convert_acc_data(&fsb[ACCELEROMETER_SENSOR].y); convert_acc_data(&fsb[ACCELEROMETER_SENSOR].z); fsb[ACCELEROMETER_SENSOR].x -= data->accelcal.x; fsb[ACCELEROMETER_SENSOR].y -= data->accelcal.y; fsb[ACCELEROMETER_SENSOR].z -= data->accelcal.z; fsb[GYROSCOPE_SENSOR].x -= data->gyrocal.x; fsb[GYROSCOPE_SENSOR].y -= data->gyrocal.y; fsb[GYROSCOPE_SENSOR].z -= data->gyrocal.z; fsb[PRESSURE_SENSOR].pressure[0] -= data->iPressureCal; exit: ssp_dbg("[SSP]: %s Result\n" "accel %d,%d,%d\n" "gyro %d,%d,%d\n" "mag %d,%d,%d\n" "baro %d,%d\n" "prox %u,%u\n" "light %u,%u,%u,%u\n", __func__, fsb[ACCELEROMETER_SENSOR].x, fsb[ACCELEROMETER_SENSOR].y, fsb[ACCELEROMETER_SENSOR].z, fsb[GYROSCOPE_SENSOR].x, fsb[GYROSCOPE_SENSOR].y, fsb[GYROSCOPE_SENSOR].z, fsb[GEOMAGNETIC_SENSOR].x, fsb[GEOMAGNETIC_SENSOR].y, fsb[GEOMAGNETIC_SENSOR].z, fsb[PRESSURE_SENSOR].pressure[0], fsb[PRESSURE_SENSOR].pressure[1], fsb[PROXIMITY_SENSOR].prox[0], fsb[PROXIMITY_SENSOR].prox[1], #if defined(CONFIG_SENSORS_SSP_GP2AP030A00F) fsb[LIGHT_SENSOR].data_als0, fsb[LIGHT_SENSOR].data_als1, fsb[LIGHT_SENSOR].lux_mode,0); #else fsb[LIGHT_SENSOR].r, fsb[LIGHT_SENSOR].g, fsb[LIGHT_SENSOR].b, fsb[LIGHT_SENSOR].w); #endif return sprintf(buf, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%u," "%u,%u,%u,%u\n", fsb[ACCELEROMETER_SENSOR].x, fsb[ACCELEROMETER_SENSOR].y, fsb[ACCELEROMETER_SENSOR].z, fsb[GYROSCOPE_SENSOR].x, fsb[GYROSCOPE_SENSOR].y, fsb[GYROSCOPE_SENSOR].z, fsb[GEOMAGNETIC_SENSOR].x, fsb[GEOMAGNETIC_SENSOR].y, fsb[GEOMAGNETIC_SENSOR].z, fsb[PRESSURE_SENSOR].pressure[0], fsb[PRESSURE_SENSOR].pressure[1], fsb[PROXIMITY_SENSOR].prox[1], #if defined(CONFIG_SENSORS_SSP_GP2AP030A00F) fsb[LIGHT_SENSOR].data_als0, fsb[LIGHT_SENSOR].data_als1, fsb[LIGHT_SENSOR].lux_mode,0); #else fsb[LIGHT_SENSOR].r, fsb[LIGHT_SENSOR].g, fsb[LIGHT_SENSOR].b, fsb[LIGHT_SENSOR].w); #endif }
ssize_t mcu_sleep_factorytest_show(struct device *dev, struct device_attribute *attr, char *buf) { int iDataIdx, iSensorData = 0; struct ssp_data *data = dev_get_drvdata(dev); struct sensor_value fsb[SENSOR_MAX]; u16 chLength = 0; memcpy(&chLength, buffer, 2); memset(fsb, 0, sizeof(struct sensor_value) * SENSOR_MAX); for (iDataIdx = 2; iDataIdx < chLength + 2;) { iSensorData = (int)buffer[iDataIdx++]; if ((iSensorData < 0) || (iSensorData >= (SENSOR_MAX - 1))) { pr_err("[SSP]: %s - Mcu data frame error %d\n", __func__, iSensorData); goto exit; } data->get_sensor_data[iSensorData]((char *)buffer, &iDataIdx, &(fsb[iSensorData])); } convert_acc_data(&fsb[ACCELEROMETER_SENSOR].x); convert_acc_data(&fsb[ACCELEROMETER_SENSOR].y); convert_acc_data(&fsb[ACCELEROMETER_SENSOR].z); fsb[ACCELEROMETER_SENSOR].x -= data->accelcal.x; fsb[ACCELEROMETER_SENSOR].y -= data->accelcal.y; fsb[ACCELEROMETER_SENSOR].z -= data->accelcal.z; fsb[GYROSCOPE_SENSOR].x -= data->gyrocal.x; fsb[GYROSCOPE_SENSOR].y -= data->gyrocal.y; fsb[GYROSCOPE_SENSOR].z -= data->gyrocal.z; fsb[PRESSURE_SENSOR].pressure[0] -= data->iPressureCal; exit: ssp_dbg("[SSP]: %s Result\n" "accel %d,%d,%d\n" "gyro %d,%d,%d\n" "mag %d,%d,%d\n" "baro %d,%d\n" "ges %d,%d,%d,%d\n" "prox %u,%u\n" "temp %d,%d,%d\n" #if defined (CONFIG_SENSORS_SSP_MAX88921) "light %u,%u,%u,%u,%u,%u\n", __func__, #else "light %u,%u,%u,%u\n", __func__, #endif fsb[ACCELEROMETER_SENSOR].x, fsb[ACCELEROMETER_SENSOR].y, fsb[ACCELEROMETER_SENSOR].z, fsb[GYROSCOPE_SENSOR].x, fsb[GYROSCOPE_SENSOR].y, fsb[GYROSCOPE_SENSOR].z, fsb[GEOMAGNETIC_SENSOR].cal_x, fsb[GEOMAGNETIC_SENSOR].cal_y, fsb[GEOMAGNETIC_SENSOR].cal_z, fsb[PRESSURE_SENSOR].pressure[0], fsb[PRESSURE_SENSOR].pressure[1], fsb[GESTURE_SENSOR].data[0], fsb[GESTURE_SENSOR].data[1], fsb[GESTURE_SENSOR].data[2], fsb[GESTURE_SENSOR].data[3], fsb[PROXIMITY_SENSOR].prox[0], fsb[PROXIMITY_SENSOR].prox[1], fsb[TEMPERATURE_HUMIDITY_SENSOR].data[0], fsb[TEMPERATURE_HUMIDITY_SENSOR].data[1], fsb[TEMPERATURE_HUMIDITY_SENSOR].data[2], fsb[LIGHT_SENSOR].r, fsb[LIGHT_SENSOR].g, fsb[LIGHT_SENSOR].b, fsb[LIGHT_SENSOR].w #if defined (CONFIG_SENSORS_SSP_MAX88921) , fsb[LIGHT_SENSOR].ir_cmp, fsb[LIGHT_SENSOR].amb_pga #endif ); return sprintf(buf, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%u," #ifdef CONFIG_SENSORS_SSP_MAX88921 "%u,%u,%u,%u,%u,%u,%d,%d,%d,%d,%d,%d\n", #else "%u,%u,%u,%u,%d,%d,%d,%d,%d,%d\n", #endif fsb[ACCELEROMETER_SENSOR].x, fsb[ACCELEROMETER_SENSOR].y, fsb[ACCELEROMETER_SENSOR].z, fsb[GYROSCOPE_SENSOR].x, fsb[GYROSCOPE_SENSOR].y, fsb[GYROSCOPE_SENSOR].z, fsb[GEOMAGNETIC_SENSOR].cal_x, fsb[GEOMAGNETIC_SENSOR].cal_y, fsb[GEOMAGNETIC_SENSOR].cal_z, fsb[PRESSURE_SENSOR].pressure[0], fsb[PRESSURE_SENSOR].pressure[1], fsb[PROXIMITY_SENSOR].prox[1], fsb[LIGHT_SENSOR].r, fsb[LIGHT_SENSOR].g, fsb[LIGHT_SENSOR].b, fsb[LIGHT_SENSOR].w, #ifdef CONFIG_SENSORS_SSP_MAX88921 fsb[LIGHT_SENSOR].ir_cmp, fsb[LIGHT_SENSOR].amb_pga, #endif fsb[GESTURE_SENSOR].data[0], fsb[GESTURE_SENSOR].data[1], fsb[GESTURE_SENSOR].data[2], fsb[GESTURE_SENSOR].data[3], fsb[TEMPERATURE_HUMIDITY_SENSOR].data[0], fsb[TEMPERATURE_HUMIDITY_SENSOR].data[1]); }