【发布时间】: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