大部分的实体sensor(也称为物理sensor)并不直接被上层apk进行调用,而是经由其他虚拟sensor进行数据的处理、封装之后再发给上层。
常见的虚拟sensor有:计步器、心率检测、翻转手势、抬腕亮屏、落腕灭屏、状态识别、通话灭屏、防误触等。
有时候也会应上层算法进行适配,来添加一些虚拟sensor,比如运动状态的识别、跌倒检测、车祸检测等。
虚拟sensor bring up流程
1 bp侧添加虚拟sensor驱动
在adsp_proc/ssc/sensors/中添加虚拟sensor驱动。
2 bp侧添加.proto协议文件
在adsp_proc/ssc_api/pb/里添加.proto协议文件
3 bp侧修改编译文件
在adsp_proc/ssc/chipset /xxx/por.py 文件里添加虚拟sensor名称(.scons文件名即为bp侧虚拟sensor名称)
4 ap侧添加.proto协议文件
在vendor/qcom/proprietary/commonsys-intf/sensors-see/ssc/proto/添加.proto协议文件
5 ap侧添加.cpp文件
在vendor/qcom/proprietary/sensors-see/sensors-hal/sensors/添加.cpp文件。(.cpp文件名即为ap侧虚拟sensor名)
6.在ap侧添加配置
在vendor/qcom/proprietary/sensors-see/sensors-hal/framework/sensors_qti.h 添加sensor type
在vendor/qcom/proprietary/commonsys-intf/sensors-see/ssc/proto/ Makefile.am 添加.proto协议文件的编译
算法适配时需要额外添加的部分
1 添加算法的初始化
在 adsp_proc/ssc/framework/src/sns_fw_init.c添加算法的初始化。
2 添加算法所需头文件
adsp_proc/ssc/inc/添加所需的算法.h文件。
3 添加lib库
adsp_proc/ssc/framework/src/下添加lib库
4 添加lib库编译
adsp_proc/ssc/framework/build/framework.scons 添加编译