msm8953+android8.1蓝牙名称修改、多产品采用不同名字的兼容

  1. 蓝牙名称定义的位置
    \device\qcom\common\bdroid_buildcfg.h中定义#define BTM_DEF_LOCAL_NAME “QCOM-BTD”
    BTM_DEF_LOCAL_NAME 被system\bt\btif\src\btif_dm.cc的btif_default_local_name()中调用
    在这里插入图片描述
    这里可以看出如果BTM_DEF_LOCAL_NAME的值不为空,那么蓝牙名称采用BTM_DEF_LOCAL_NAME来赋值;如果为空,则采用PROPERTY_PRODUCT_MODEL,
    #define PROPERTY_PRODUCT_MODEL “ro.product.model”
    ro.product.model在build/tools/buildinfo.sh中赋值
    echo “ro.product.model=$PRODUCT_MODEL”
    PRODUCT_MODEL在build目录下有定义,但一般是使用device/qcom/msm8953_64/msm8953_64.mk下的定义,比如 PRODUCT_MODEL :=msm8953 for arm64

bdroid_buildcfg.h文件在\device\qcom\common\base.mk中被引入:
在这里插入图片描述
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/qcom/common
2. 不同产品在编译阶段能够采用不同名字
因为我们是共用一套代码,比如A产品蓝牙名称为Bluetooth_A,B产品蓝牙名称为Bluetooth_B,怎么实现这个兼容呢,有几种方法总结下:
2.1 方法一,overlay思想,其实是引用产品对应的h头文件
从上面可知定义了蓝牙名称的bdroid_buildcfg.h位于\device\qcom\common目录下。我们可以通过不同产品来引入不同产品目录的这个h文件,比如device\qcom\msm8953_64\BoardConfig.mk增加
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/qcom/msm8953_64/product_$(DEVELOP_PRODUCT)/bluetooth_overlay
DEVELOP_PRODUCT对应编译时选择不同的产品,比如A,把bdroid_buildcfg.h放在product_A/bluetooth_overlay下即可。
但奇怪的是在msm8953_64.mk同样的操作没有生效

2.2 方法二,让BTM_DEF_LOCAL_NAME为空,通过PRODUCT_MODEL来兼容
根据btif_default_local_name()的流程,如果BTM_DEF_LOCAL_NAME为空,那么根据PRODUCT_MODEL来赋值,而PRODUCT_MODEL我们已经根据不同产品设置不同名称,所以用这种方法最佳。

©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值