【发布时间】:2016-02-02 17:57:48
【问题描述】:
我有一个需要与 BLE 设备建立多个连接的 Linux C 应用程序。该应用程序使用从 gatttool 剥离的库。 BLE 设备的广播速率非常慢,因此建立连接需要很长时间。因此,我需要能够同时发出多个 gatt_connect 请求。
gatt_connect 使用标准套接字/连接来建立到设备的 L2CAP 连接。尽管此方法允许您拥有多个活动连接,但它只允许您一次建立一个连接。使用 HCI 接口,您可以同时建立多个接口(即 hcitool lecc --whitelist),但是我想不出办法让它与 gatttool 库 L2CAP 套接字/连接一起工作。
谁能建议一种将 gatttool L2CAP 套接字/连接与“hcitool lecc --whitelist”使用的 hci 接口 (hci_open_dev/hci_le_create_conn) 句柄集成的方法,或者同时建立多个连接的替代方法?
【问题讨论】:
-
有什么理由不用DBUS接口?这是官方支持的接口,很容易同时建立多个连接(一旦你通过了 DBUS 学习曲线)。
-
不幸的是,我必须在标准 ubuntu 14.04.03 LTS (bluez 4.101) 和 Intel Edison (bluez 5.x) 上运行代码。 ubuntu bluez 版本是 4.101,据我了解,它不能正确支持 bluez 的 dbus(或者至少不像 5.x 那样支持它)。我也了解 bluez dbus GATT 仍处于试验阶段且经常更改。
-
@mw。 : 我也在尝试类似的东西。我想知道您的项目的状态。
-
我使用下面评论中描述的方法为 bluez 4.101 和一些早期的 5.x 工作。不幸的是,较新的版本将一堆蓝牙功能向下移动到内核中。这破坏了我的代码。解决这个问题会变得非常难看,因为内核会干扰我的代码或重写东西以禁用 bluez/kernel 访问并编写我自己的 ATT/L2CAP 例程。
标签: bluetooth-lowenergy bluez gatt