RK3568修改蓝牙显示的名字

12 篇文章 5 订阅
9 篇文章 0 订阅

一、概述

         有时候需要修改RK3568设备这一端蓝牙在其他设备上显示的名字,例如有时要改成客户品牌的名字或者改成方案的名字,这个就需要修改默认的设备名称。

二、问题分析

系统设置中显示的蓝牙设备名字,是在使能蓝牙功能的时候,在bt中介层里进行设置的默认名字,后面用户可以手动在系统设置进行修改。

1.设备使能的时候调用BTIF_dm_enable()

//Android/system/bt/btif/src/btif_dm.cc
void BTIF_dm_enable() {
  BD_NAME bdname;
  bt_status_t status;
  bt_property_t prop;
  prop.type = BT_PROPERTY_BDNAME;
  prop.len = BD_NAME_LEN;
  prop.val = (void*)bdname;

  status = btif_storage_get_adapter_property(&prop);
  if (status == BT_STATUS_SUCCESS) {
    /* A name exists in the storage. Make this the device name */
    BTA_DmSetDeviceName((char*)prop.val);
  } else {
    /* Storage does not have a name yet.
     * Use the default name and write it to the chip
     */
    BTA_DmSetDeviceName(btif_get_default_local_name());
  }

2.调用btif_get_default_local_name()获取设备的默认名字,从代码中可以看出,设备名字为空时,会首先读取BTM_DEF_LOCAL_NAME这个宏是否为空,如果不为空则将其值作为设备的默认名字返回给上一级

//Android/system/bt/btif/src/btif_dm.cc
static char* btif_get_default_local_name() {
  if (btif_default_local_name[0] == '\0') {
    int max_len = sizeof(btif_default_local_name) - 1;
    if (BTM_DEF_LOCAL_NAME[0] != '\0') {
      strncpy(btif_default_local_name, BTM_DEF_LOCAL_NAME, max_len);
    } else {
      char prop_model[PROPERTY_VALUE_MAX];
      osi_property_get(PROPERTY_PRODUCT_MODEL, prop_model, "");
      strncpy(btif_default_local_name, prop_model, max_len);
    }
    btif_default_local_name[max_len] = '\0';
  }
  return btif_default_local_name;
}

3.调用BTA_DmSetDeviceName()将btif_get_default_local_name返回的名字设置到系统中

//Android/system/bt/bta/dm/bta_dm_api.cc
/** This function sets the Bluetooth name of local device */
void BTA_DmSetDeviceName(char* p_name) {
  std::vector<uint8_t> name(BD_NAME_LEN + 1);
  strlcpy((char*)name.data(), p_name, BD_NAME_LEN + 1);

  do_in_main_thread(FROM_HERE, base::Bind(bta_dm_set_dev_name, name));
}

三、解决方案

从上面的分析可以知道,设备的默认名字会首先从BTM_DEF_LOCAL_NAME这个宏获取,所以只要修改这个宏的值即可修改默认蓝牙设备名字。

搜索代码发现这个宏是在Android/device/rockchip/rk356x/bluetooth/bdroid_buildcfg.h中定义,所以修改它的值即可

--- a/Android/device/rockchip/rk356x/bluetooth/bdroid_buildcfg.h
+++ b/Android/device/rockchip/rk356x/bluetooth/bdroid_buildcfg.h
@@ -17,8 +17,10 @@
 #ifndef _BDROID_BUILDCFG_H
 #define _BDROID_BUILDCFG_H
 
-#define BTM_DEF_LOCAL_NAME     "rk3566"
+#define BTM_DEF_LOCAL_NAME     "rk3568"
 #define BTA_DM_COD {0x1A, 0x01, 0x10}
 #define BLE_PRIVACY_SPT FALSE

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值