前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全志R329在Tina如何在蓝牙已连接情况下拒绝其他耳机回连

全志R329在Tina如何在蓝牙已连接情况下拒绝其他耳机回连

作者头像
阿志小管家
发布2024-02-02 16:15:03
1020
发布2024-02-02 16:15:03
举报
文章被收录于专栏:全志嵌入式那些事

问题背景 系统:Tina 平台:R818、V833 扫描笔产品 蓝牙功能:a2dp source

问题概述 (1)客户有一个蓝牙音箱和一个蓝牙耳机,并且这两个设备之前都已经跟扫描笔连接配对过了。 (2)客户主动让扫描笔连接上蓝牙音箱。 (3)打开蓝牙耳机,此时蓝牙耳机回连上扫描笔。 但是客户不想要这个场景存在,希望只有一个连接存在。

问题分析 蓝牙耳机打开后回连这个动作,我们无法阻止它,只能想办法拒绝他。 如果在应用层处理,连上了再把它断开,这个会影响状态的管理,也不是最好的解决方法。 所以我们考虑再收到连接请求事件时,就拒绝了它。linux的蓝牙驱动层会处理HCI上报的 事件,因此我们可以在驱动完成这个逻辑。

解决方法 代码路径: lichee/linux-4.9/net/bluetooth/hci_event.c 连接请求处理函数:hci_conn_request_evt 中增加如下代码: 首先判断连接类型是否是ACL_LINK,然后获取当前连接数,如果当前已经有连接了,就拒绝本次的连接请求。

代码语言:javascript
复制
if (ev->link_type == ACL_LINK) {
        if ((hci_conn_num(hdev, ACL_LINK) != 0) && (hdev->dev_type == HCI_PRIMARY)) {
            BT_INFO("already exist acl link, reject new! %s, %d", __func__, __LINE__);
            hci_reject_conn(hdev, &ev->bdaddr);
            return;
        }
    }

修改过之后的代码如下:

代码语言:javascript
复制
static void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *skb)
{
    struct hci_ev_conn_request *ev = (void *) skb->data;
    int mask = hdev->link_mode;
    struct inquiry_entry *ie;
    struct hci_conn *conn;
    __u8 flags = 0;

    BT_DBG("%s bdaddr %pMR type 0x%x", hdev->name, &ev->bdaddr,
           ev->link_type);

    mask |= hci_proto_connect_ind(hdev, &ev->bdaddr, ev->link_type,
                      &flags);

    if (!(mask & HCI_LM_ACCEPT)) {
        hci_reject_conn(hdev, &ev->bdaddr);
        return;
    }

    if (ev->link_type == ACL_LINK) {
        if ((hci_conn_num(hdev, ACL_LINK) != 0) && (hdev->dev_type == HCI_PRIMARY)) {
            BT_INFO("already exist acl link, reject new! %s, %d", __func__, __LINE__);
            hci_reject_conn(hdev, &ev->bdaddr);
            return;
        }
    }

    if (hci_bdaddr_list_lookup(&hdev->blacklist, &ev->bdaddr,
                   BDADDR_BREDR)) {
        hci_reject_conn(hdev, &ev->bdaddr);
        return;
    }

原贴链接:https://bbs.aw-ol.com/topic/1076/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档