手表发射问题
📎 原始文档:https://www.kdocs.cn/l/ck1n2ynezngj 手表发射问题
该文档主要收录手表做发射,连接耳机遇到的各类问题。客户遇到耳机连不上的问题,先在该文档寻求帮助,如果找不到相应处理,反馈问题先做以下验证:1.是否是所有耳机都连不上 2.如果是部分耳机连不上,用开发板和公版软件是否能连上。
发射器接口文档
- 荣耀耳机连不上,log中显示0x0e的错误 现象:手表做发射连接不上荣耀耳机,log中显示下图1.1,0x0e错误。出现该问题一般是有一方的蓝牙参数设置达不到另一方的要求。常见于蓝牙版本和双方的蓝牙类型。可能市面上的品牌耳机做了对连接设备的蓝牙类型做了处理。处理方法是:蓝牙发射连接前设置为手表类型。
图1.1
处理方法如下:




lmp_hci_write_class_of_device(BD_CLASS_WEARABLE_HEADSET);
- 经典蓝牙主从一体如何判断连接的是手机还是耳机
1.连接完成等事件中获取方式如下
蓝牙事件的回调中参数是带有mac地址的,可以通过该mac地址在回调事件中来判断是耳机还是手机,获取方法如下:
case BT_STATUS_FIRST_CONNECTED:
static u8 mac_addr[6];
memcpy(mac_addr, bt->args, 6);
get_role_type_by_addr(mac_addr);

但用mac地址判断的方法只适用于开始链接,连接成功,加密完成等回调,因为他的判断依据是通过建立连接中的一个参数来判断,所以断开连接,这个接口就没有作用了,因为此时,连接的参数已经被释放。
2.断开连接事件中的获取方式如下:
断开事件中,只能通过存在vm中的记录来判断。
case HCI_EVENT_DISCONNECTION_COMPLETE:
static u8 mac_addr[6];
memcpy(mac_addr, bt->args, 6);
get_role_type_by_addr(mac_addr);
u8 profile = get_support_profile((bd_addr_t *)mac_addr, get_remote_dev_info_index());
#define REMOTE_SUP_HFP_HF BIT(4)
#define REMOTE_SUP_HFP_AG BIT(0)
#define REMOTE_SUP_AUDIO_SINK BIT(5)
#define REMOTE_SUP_AUDIO_SOURCE BIT(1)
if(profile & (REMOTE_SUP_HFP_AG | REMOTE_SUP_AUDIO_SOURCE))//手机
{
printf("手机\n");
}
else if(profile & (REMOTE_SUP_HFP_HF | REMOTE_SUP_AUDIO_SINK) )//耳机
{
printf("耳机\n");
}
3.调用发起连接的接口后,没看到任何反应
现象:调用emitter_bt_connect(),发起耳机连接,没有任何反应。打印中看不到相关蓝牙事件回调。
处理方法:发起连接时,必须保持经典蓝牙模块是打开的,可以检查log中是否有IPIP的打印,这是经典蓝牙处于可发现可连接的打印。如果没有,说明经典蓝牙关闭了。调用bt_init_bredr()打开即可。
4.手表取消配对,耳机还能回连
