c - 使用 D-Bus API 读取时 Bluez 超时

标签 c bluetooth-lowenergy dbus bluez

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

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

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

谢谢!

最佳答案

我最终通过直接修补 Bluez 代码找到了解决方法。

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

#define ATTRIBUTE_TIMEOUT 28000

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

关于c - 使用 D-Bus API 读取时 Bluez 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40754322/

相关文章:

比较字符

C函数未按顺序执行

android - Android BluetoothGattCallback 是否需要及时返回?

python - 如何公开具有多个参数的 dbus 方法?

java - JNI 和共享内存

c - 如何计算这种复杂性?

Android scanLeCallback 返回 Null BluetoothDevice

ios - Swift-BLE-UART 如何从各种 View Controller 场景读取/写入?

python - 使用 pygobject 编写 D-Bus 服务?

python - 如何快速获取 dbus 上的所有 VLC 实例?