Bluez BLE连接Linux

时间:2015-01-10 12:30:01

标签: c linux bluetooth-lowenergy bluez hci

我是Linux和蓝牙开发的新手,我不确定sudo hcitool lecc <bdaddr>sudo gatttool -b <dbaddr> -I之间的区别?我不要求任何关贸总协定的服务;我只想在两台设备之间建立连接。

我正在模糊地关注this widely referred to tutorial,我正在考虑在Bluez /tools/hcitool.c中调整cmd_lecc方法,但我无法使用{{{}来连接我的BLE设备1}}。

当我使用hcitool lecc进行连接时,我能够成功连接,但是使用gatttool会返回错误“无法创建连接:连接超时”,并且未与BLE设备建立连接。但是,运行hcitool lecc以显示活动连接会显示有一个:'未知句柄0状态2 lm SLAVE'。如果它没有建立连接,为什么它会在sudo hcitool con中将连接注册为活动状态?

因此,我的问题有三个:

  1. 这两个命令有什么区别?
  2. hcitool是否适合我的目的,或者我应该找出与gatttool无关的内容(跟this之类的内容有关吗?
  3. 为什么hcitool部分连接,即使它超时?
  4. 非常感谢。

1 个答案:

答案 0 :(得分:1)

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

我建议查看hcitool如何连接编写自己的代码,因为gatttool只是围绕hcitool使用的同一进程的包装器,但其包装器不可用除非你复制它的代码。

最后,hcitool报告的句柄0是尝试连接时无效的句柄,因为据我所知,所有有效句柄都大于0。