高通 P-sensor 阈值调整

阈值效果debug

        距离传感器调试基本没有太多工作量,主要根据整机来调整阈值,选择最合适的 P-Sensor 感应效果。高通平台sensor代码主要在modem侧,阈值设置是在AP侧,对应配置文件一般是:

vendor/qcom/proprietary/sensors-see/registry/config/device/bengal_epl_0.json

    ".ps":{
      "owner": "sns_epl",
      ".fac_cal":{
        "owner": "sns_epl",
        "near_threshold":{ "type": "flt", "ver": "2",
          "data": "1600.0"
        },
        "far_threshold":{ "type": "flt", "ver": "2",
          "data": "1300.0"
        },
        "ctir_config":{ "type": "flt", "ver": "0",
          "data": "0.0"
        }
      },

        near_threshold 值表示靠近阈值,far_threshold 表示远离阈值。遮挡物距离 P-sensor 越近,则数值越大。一般 far_threshold 和 near_threshold 需要预留一定间隔,避免遮挡物处于临界距离时,P-sensor 频繁的在遮挡(0)和无遮挡(5)两种状态切换。

         Debug时候需要注意:修改后可以手动push到设备,但需要手动清空旧文件,然后进行同步,步骤如下。

adb wait-for-device root
adb wait-for-device remount
adb shell rm /vendor/etc/sensors/config/bengal_epl*
adb push bengal_epl_0.json /vendor/etc/sensors/config/
adb shell chmod 644 /vendor/etc/sensors/config/bengal_epl_0.json
adb shell rm  /mnt/vendor/persist/sensors/registry/registry/*
adb shell sync
adb reboot

        注:Debug 完成后,正式提交时,需要更新下 near_threshold/far_threshold 中ver值,进行 +1,否则由于这个配置值是被初始化保存在 persist 分区,而 persist 分区组装时是不更新的,不会重新初始化。如果文件版本号也不修改的情形下,系统不会重新加载配置,无法生效。

异常时抓取 Sensor log

        由于sensor主要代码都在BP侧,抓取kernel log意义不大,需要抓取QXDM log进行分析。QXDM 状态栏中选择 Tools - CFG File Generator 。只选择 SNS 过滤其他log。

 在过滤后的log中,搜索 epl_sensor 字段,找与PS相关日志进行分析。

SENSOR EXT/Error [sns_epl_sensor_instance_island.c     77] Received invalid event id=1025  
SENSOR EXT/Low [sns_epl_sensor_instance_island.c     69] IRQ event!  
SENSOR EXT/High [sns_epl_hal_island.c   2070] [epl_get_data_dri]: xxxxxxxxxxxxxxxxx  
SENSOR EXT/High [sns_epl_hal_island.c   2071] [epl_get_data_dri]: enable_pflag=1, enable_lflag=0  
SENSOR EXT/High [sns_epl_hal_island.c   1466] ps: ~~~~ PS ~~~~~ 
SENSOR EXT/High [sns_epl_hal_island.c   1467] ps: i2c_read_data = 0xf
SENSOR EXT/High [sns_epl_hal_island.c   1470] ps: sat = 0x0
SENSOR EXT/High [sns_epl_hal_island.c   1471] ps: cmp h = 0x0, l = 0x8
SENSOR EXT/High [sns_epl_hal_island.c   1472] ps: int_flag = 0x4
SENSOR EXT/High [sns_epl_hal_island.c   1473] ps: cmp_rstn = 0x2, lock = 1
SENSOR EXT/High [sns_epl_hal_island.c   1474] [epl_sensor_read_ps]: data = 0
SENSOR EXT/High [sns_epl_hal_island.c   1475] [epl_sensor_read_ps]: ir data = 3351
SENSOR EXT/High [sns_epl_hal_island.c   1139] [set_psensor_intr_threshold] - rc=0, low_thd = 1200, high_thd = 1500 
SENSOR EXT/High [sns_epl_hal_island.c   1704] [epl_sensor_ps_report]: -------------------  ps_status=1  

         上面的log中。set_psensor_intr_threshold 表示bengal_epl_0中设置的阈值。epl_sensor_read_ps 中data值是当前实际传感器感应值,为0表示无遮挡物;ir data是红外灯的值,一般是一个固定范围值,如果偏差大,那可能是ir灯有问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值