蓝牙低功耗连接Linux

3
我对Linux和蓝牙开发都很陌生,不确定 sudo hcitool lecc <bdaddr>sudo gatttool -b <dbaddr> -I 之间的区别。我不需要任何GATT服务,只想在两个设备之间建立连接。我正在查看这篇广泛引用的教程,并试图调整Bluez /tools/hcitool.c中的cmd_lecc方法,但我无法使用hcitool lecc连接到我的BLE设备。
当我使用gatttool连接时,连接成功了,但是使用hcitool lecc返回错误“无法创建连接:连接超时”,并且没有与BLE设备建立连接。然而,运行sudo hcitool con以显示活动连接会话,结果显示有一个连接:“Unknown handle 0 state 2 lm SLAVE”。如果连接失败,为什么hcitool仍在注册该连接为活动连接?
因此,我的问题有三个:
1. 这两个命令之间有什么区别? 2. gatttool是否适合我的目的,还是应该找出hcitool的问题所在(如此处所述)? 3. 为什么sudo hcitool lecc <bdaddr>只有部分连接成功,即使超时了?
非常感谢。
1个回答

1

hcitool lecc <bdaddr> 建立连接并返回句柄,而 gatttool -b <bdaddr> -I 仅打开一个交互终端,并将接口绑定到地址,但尚未连接。要使用 gatttool 命令进行连接,您必须输入connect,但很可能也会失败。

建议查看 hcitool 如何连接以编写自己的代码,因为所有的 gatttool 都是对 hcitool 使用相同过程的包装器,但其包装器不可用,除非复制其代码。

最后,hcitool 报告的句柄0是一个无效句柄,留下了尝试连接的痕迹,因为据我所见,所有有效句柄都大于0。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接