【问题标题】:L2CAP connection over an HCI socket?通过 HCI 套接字的 L2CAP 连接?
【发布时间】:2013-11-07 12:23:10
【问题描述】:

访问 L2CAP 的常用方法是创建一个 L2CAP 套接字并在其上调用connect() 以连接到您要访问的蓝牙设备。这通常工作得很好。但是,我正在尝试在具有 Linux 内核 3.0 的 ARM 设备上执行此操作,并且似乎存在一个令人讨厌的错误,即如果没有最后创建的通道的所有数据都下降,您将无法拥有多个 L2CAP 连接。 (即,如果我用 2 个 l2cap 插座连接到 2 个蓝牙传感器,则两个设备的所有通知都通过最后打开的插座发出,而没有任何东西先打开的插座。)但是,如果我在 HCI 插座上设置过滤器,我可以看到 ACL 数据是通过正确的连接句柄传递的,所以我可以在那里正确地获取数据。

所以...我想更改我的代码以仅使用 HCI 套接字。

我的问题是,我不确定如何(或者即使可能)。 HCI 中有一个“创建逻辑链接命令”,它似乎会创建一个 L2CAP 连接,但这些参数对我来说毫无意义。在通过 LE 建立 HCI 连接后,我得到一个“连接完成事件”,它给了我一个 2 个八位字节的“Connection_Handle”。 “创建逻辑链接命令”需要 1 个八位字节的“Physical_Link_Handle”。

【问题讨论】:

    标签: bluetooth bluetooth-lowenergy bluez hci l2cap


    【解决方案1】:

    在 BLE 中,无论何时建立连接,L2CAP 都可以使用。

    您不需要connect 或其他任何东西。一旦您收到 LE 连接完成事件,您就可以开始了,您可以开始通过 L2CAP 进行通信。

    您提到的其他命令和数据不是 LE,它们仅适用于 BR/EDR。

    【讨论】:

      【解决方案2】:

      “创建逻辑链路命令”用于 AMP 控制器,与 L2CAP 无关。使用 LE,您会自动通过固定通道建立“连接”,并且可以简单地将 ATT 命令作为 CID 4 上的 ACL 数据包发送。ACL 数据包使用从 HCI LE 连接事件返回的连接句柄。

      (由#bluez IRC 频道上的某个人回答;我不记得是谁)

      【讨论】:

        猜你喜欢
        • 2011-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-23
        • 2012-08-25
        • 1970-01-01
        • 2019-06-12
        • 1970-01-01
        相关资源
        最近更新 更多