使用 D-Bus 读取 Bluez 超时 API

Bluez Timeout on read with D-Bus API

我正在从 Bluez 扩展 tools/gatt_service.c 来为我的设备创建一些自定义读取特性。

但其中一些可能需要一段时间才能处理,例如扫描 wifi SSID。 当我的服务器收到来自客户端的读取请求时,我开始 wifi 扫描(最多需要 15sc)并且我想 return 相同请求的响应中的 SSID 列表。但是对于 D-Bus API,我的请求总是在 5sc 之后结束,而不是等到 wifi 扫描结束,就像超时一样。有什么方法可以管理此超时?

我也尝试过使用低级别的 Bluez API 并成功了,但我真的很想使用 D-BUS API。

谢谢!

我终于通过直接修补 Bluez 代码来解决了这个问题。

我更改了 src/shared/gatt-db.c

中的 ATTRIBUTE_TIMEOUT
#define ATTRIBUTE_TIMEOUT 28000

到目前为止没有副作用。我只是不知道为什么这个值是硬编码的,不能从 bluethodctl 或其他地方更改。