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我們已經根據不同產品設置不同名稱,所以用這種方法最佳。
總結
以上是生活随笔為你收集整理的msm8953+android8.1蓝牙名称修改、多产品采用不同名字的兼容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git apply、git am打补丁.
- 下一篇: msm8953+android8.1接听