gpt4 book ai didi

linux - BlueZ:移除与 BLE 设备的绑定(bind)不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:21 26 4
gpt4 key购买 nike

我们有一个用例,其中使用 BLE 连接通过 Android 应用程序(稍后也通过 iPhone 应用程序)对嵌入式设备进行基本配置。嵌入式设备运行 Linux,因此使用 BlueZ 作为蓝牙堆栈。

使用 BlueZ 的 DBus-API,可以通过使设备可配对、可发现和激活广告来实现绑定(bind)。绑定(bind)后应用程序可以访问 GATT 服务和特性(需要绑定(bind)才能读/写)在嵌入式设备上。

设置完成后,管理设置过程的设备(运行应用程序)的绑定(bind)应该被删除。为此,我们调用 org.bluez.Adapter1RemoveDevice()

BlueZ 文档说明如下

void RemoveDevice(object device)

This removes the remote device object at the given path. It will remove also the pairing information.

之后应用程序仍然能够访问 GATT 特性。如果 bluetoothctl 用于检查配对设备列表,则该列表不再包含该设备。在调用 RemoveDevice() 之前绑定(bind)的设备在那里是可见的。如果 bluetootd 被停止并重新启动,应用程序将不再能够读取/写入 GATT 特性,但需要在这样做之前重新绑定(bind)。

我既无法在 BlueZ 文档中找到任何进一步的信息,也无法在其他任何地方搜索到有关该主题的任何信息。

这是预期行为还是错误? “删除配对信息”是否也意味着“删除绑定(bind)信息”?如果这是预期的行为,我们如何正确终止与设备的绑定(bind)?我应该使用 BlueZ Management API 而不是 BlueZ API 吗?我不确定这一点,因为多个来源表明 DBus-API 是可行的方法。

最佳答案

RemoveDevice() 确实也删除了绑定(bind)信息。所以你必须先断开连接,然后再调用 RemoveDevice()。下次连接时,绑定(bind)信息将消失。

但是请注意,如果您只使用加密特性,您仍然可以连接和发现服务。只有当您开始读取/写入加密特征后,Bluez 才会检查您是否绑定(bind)。

关于linux - BlueZ:移除与 BLE 设备的绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57986883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com