以A+G 器件T1000为例:
在Ap侧,修改json文件,参考路径如下
vendor/qcom/proprietary/sensors-see/registry/config/xxx/sdm429w_t1000_0.json
"t1000_0":{
"owner": "sns_t1000",
".accel":{
"owner": "sns_t1000",
".config":{
"owner": "sns_t1000",
"is_dri":{ "type": "int", "ver": "0",
"data": "1"
},
"hw_id":{ "type": "int", "ver": "0",
"data": "0"
},
"res_idx":{ "type": "int", "ver": "0",
"data": "3" //由4改为3,量程从16g改为8g
},
"sync_stream":{ "type": "int", "ver": "0",
"data": "0"
}
}
},
T1000的量程设置在bp侧的adsp_proc/ssc/sensors/t1000/src/sns_t1000_sensor.c 中
rangeMinMax[1].flt =
ACC_RANGE_UNIT_G(ACC_RANGE_MAX - state->resolution_idx, hi_range) * ACC_CONVERSION;
其中,resolution_idx即为json文件中的res_idx,ACC_RANGE_MAX在以下结构体中:adsp_proc/ssc/sensors/t1000/src/sns_t1000_sensor_instance.h
typedef enum t1000_accel_fsr
{
ACC_RANGE_16G = 0,
ACC_RANGE_8G = 1,
ACC_RANGE_4G = 2,
ACC_RANGE_2G = 3,
ACC_RANGE_1G = 4,
ACC_RANGE_MAX = ACC_RANGE_1G
} t1000_accel_fsr;
ACC_RANGE_MAX = ACC_RANGE_1G = 4
量程 = ACC_RANGE_MAX - state->resolution_idx
= 4 - res_idx
将res_idx 值由 4 改为 3 ,量程 = 4 – 3 = 1 ,即ACC_RANGE_8G 。