项目场景:
GMS 认证中VTS测试 关于 Gsensor 单项测试fail
[vts]fix SensorsHidlTest.AccelerometerStreamingOperationSlow(default)_32bit
问题描述:
测试log如下:
hardware/interfaces/sensors/common/vts/utils/SensorsHidlTestBase.cpp:416
Value of: checker.check(sensorEvents, &s)
Actual: false
Expected: true
Event @ 4200687778031 (0.306, 0.076, 0) has norm 0.315297, which is beyond range [8.80665, 10.8067]
原因分析:
根据log分析是因为相关gsensor 的精度太低了,获取到的数据 (0.306, 0.076, 0) ,跟要求的[8.80665, 10.8067]差别太大
解决方案:
gsensor改为高精度后,可以pass,该项需要驱动工程师和相关FAE协助一起把gsensor 相关模块配置成高精度即可
修改高精度举例:
--- a/kernel-4.14/drivers/misc/mediatek/sensors-1.0/accelerometer/mxc400x/mxc400x.c
+++ b/kernel-4.14/drivers/misc/mediatek/sensors-1.0/accelerometer/mxc400x/mxc400x.c
@@ -1543,7 +1543,7 @@ static int mxc400x_get_data (int* x, int* y, int* z, int* status)
*x = buff[0];
*y = buff[1];
*z = cali_sensor_data;
- *status = SENSOR_STATUS_ACCURACY_MEDIUM;
+ *status = SENSOR_STATUS_ACCURACY_HIGH;
return 0;
}