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

本文解析了在Android系统中如何定义和定制蓝牙设备名称,特别是在不同产品间实现蓝牙名称的兼容性。介绍了通过修改bdroid_buildcfg.h文件或利用PRODUCT_MODEL属性来达到目的的方法。

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我们已经根据不同产品设置不同名称,所以用这种方法最佳。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loongembedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值