蓝牙:使用Bluez检测事件

7
我们正在尝试在C/C++中检测事件。我们正在Linux上使用Bluez作为蓝牙库。我们的目标是在触发该事件时运行外部脚本。具体来说,我们有一个Motorola H730耳机,上面有一个按钮,我们想要检测那个按钮的按下。我们已经配对了蓝牙设备(hcitool),并可以连接到它(bluez-test-audio),但有兴趣将该方法迁移到C/C++。当设备连接并按下按钮时,hcidump的输出为: HCI sniffer - Bluetooth packet analyzer ver 2.2设备:hci0 snap_len:1028 filter:0xffffffff。我们已经寻找过蓝牙文档,但没有取得太大的成功。如何在C/C++中使用Bluez检测蓝牙事件呢?

你有成功吗? - schrieveslaach
2个回答

1

去年我做过类似的事情。我采用的方法是使用libdbus-c++生成c++代理对象/类,通过dbus与蓝牙进行通信。

  • 确定您的耳机实现的蓝牙接口。我使用d-feet并在连接时探索设备。您可以在此手动控制和读取耳机的状态,这对调试非常有用。
  • 生成、查找或创建所需接口的dbus xml描述。我通过将bluez api documentation的api规范手动翻译为xml来完成这项工作,但我相信您也可以通过dbus introspection来创建它们。
  • 使用dbusxx-xml2cpp生成代理对象
  • 确定按下按钮时调用的回调函数
  • 根据需要将代理对象集成到您的代码中
你需要将代码链接到libdbus-c++,并在目标设备上安装它。
你可以使用生成的代理对象来访问头戴式设备的全部功能,这可能比仅捕获按钮按下事件更有用!

0
所收集到的日志是设备主机和控制器之间的通信记录。事件是控制器发送给设备主机的信息,命令则是设备主机发送的请求/响应。

Bluez编程指南: http://people.csail.mit.edu/albert/bluez-intro/


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