[Android][sensor][accel]SEE架构下加速度量程修改

以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 。

你可能感兴趣的:(android_sensor,android)