1.校准接口
工模调用 SensorUserCal.performUserCal 方法进行校准
(import com.qualcomm.qti.sensors.core.sensortest.SensorUserCal;
)
2.根据打印log解决问题
关键字 : “user_cal_algo|sensor_user_cal”
diff --git a/vendor/qcom/proprietary/sensors/dsps/sensortest/jni/src/sensor_user_cal_algo.c b/vendor/qcom/proprietary/sensors/dsps/sensortest/jni/src/sensor_user_cal_algo.c
index 844eb34..3173c8d 100755
--- a/vendor/qcom/proprietary/sensors/dsps/sensortest/jni/src/sensor_user_cal_algo.c
+++ b/vendor/qcom/proprietary/sensors/dsps/sensortest/jni/src/sensor_user_cal_algo.c
@@ -189,9 +189,11 @@ user_cal_scm_update( user_cal_state_s *state, user_cal_input_s *input,
state->variance[i] = ( state->sampleSqSum[i] -
( varT / config->numSamples ) ) / config->numSamples;
+ LOGE("zch----state->variance[%d] = %d, varianceThold = %d",i,state->variance[i],state->config.varianceThold);
+ //if(0)
if( state->variance[i] > state->config.varianceThold ) // 2.此条件不满足导致工模校准不过(因为单位时间内xyz轴数值变化的范围大于标准值)
{
- LOGW( "%s: Variance exceeded, restarting algorithm. index: %i; variance: %"PRIi64"; variance threshold: %"PRIi64,
+ LOGW( "zch----%s: Variance exceeded, restarting algorithm. index: %i; variance: %"PRIi64"; variance threshold: %"PRIi64,
__FUNCTION__, i, state->variance[i], state->config.varianceThold );
//indicate motion state detected, reset algorithm state
@@ -473,7 +478,7 @@ calc_sensor_bias( uint8_t sensor_type, uint8_t data_type, int32_t **bias_result
&g_user_cal_control->cb_mutex, &ts );
if( ETIMEDOUT == result_status )
{
- LOGE( "%s: Request timed-out", __FUNCTION__ );
+ LOGE( "zch-----%s: Request timed-out", __FUNCTION__ ); // 1.打印失败原因为超时
g_user_cal_control->error = ERROR_TIMEOUT;
break;
}
@@ -515,7 +521,9 @@ user_cal_init()
g_user_cal_control->state.config.numSamples = 64;
// Threshold values only correct for 6050 Accel
- g_user_cal_control->state.config.varianceThold = (int64_t)(FX_CONV(FX_FLTTOFIX_Q16(0.000944),16,32));
+ //g_user_cal_control->state.config.varianceThold = (int64_t)(FX_CONV(FX_FLTTOFIX_Q16(0.000944),16,32));
+ g_user_cal_control->state.config.varianceThold = (int64_t)(FX_CONV(FX_FLTTOFIX_Q16(0.002944),16,32)); // 3.修改:增大 varianceThold (因为单位时间内xyz轴数值变化的范围标准)
+
g_user_cal_control->state.config.bias_thresholds[0] = FX_FLTTOFIX_Q16(0.15*G); // x-axis bias
g_user_cal_control->state.config.bias_thresholds[1] = FX_FLTTOFIX_Q16(0.15*G); // y-axis bias
g_user_cal_control->state.config.bias_thresholds[2] = FX_FLTTOFIX_Q16(0.15*G); // z-axis bias
3.45度
x = 4.9
y = 4.9
z = 6.9