我们正试图在C / C ++中检测事件。
我们在Linux上使用Bluez作为我们的蓝牙库。
我们的目标是在事件触发时运行外部脚本。
具体来说,我们有一个摩托罗拉H730耳机,上面有一个button,我们正在检测按下button。
我们已经配对蓝牙设备(hcitool),我们可以连接到它(bluez-test-audio),但有兴趣将该方法迁移到C / C ++。
设备连接并按下button时的输出为:
HCI嗅探器 – 蓝牙数据包分析器版本2.2
设备:hci0 snap_len:1028filter:0xffffffff
HCI事件:模式更改(0x14)plen 6
状态0x00句柄21模式0x00间隔0
模式:主动
ACL数据:处理21个标志0x02 dlen 17
L2CAP(d):cid 0x0041 len 13 [psm 0]
<ACL数据:handle 21标志0x00 dlen 14
L2CAP(d):cid 0x0047 len 10 [psm 0]
<ACL数据:handle 21标志0x00 dlen 22
L2CAP(d):cid 0x0047 len 18 [psm 0]
<ACL数据:handle 21标志0x00 dlen 22
L2CAP(d):cid 0x0047 len 18 [psm 0]
HCI事件:完成数据包数(0x13)plen 5
处理21个数据包1
ACL数据:处理21个标志0x02 dlen 18
L2CAP(d):cid 0x0041 len 14 [psm 0]
<ACL数据:handle 21标志0x00 dlen 14
L2CAP(d):cid 0x0047 len 10 [psm 0]
HCI事件:完成数据包数(0x13)plen 5
处理21个数据包1
HCI事件:完成数据包数(0x13)plen 5
处理21个数据包1
HCI事件:完成数据包数(0x13)plen 5
处理21个数据包1
HCI事件:模式更改(0x14)plen 6
状态0x00句柄21模式0x02间隔2048
模式:嗅
我们已经find了蓝牙文档,并没有太多的成功。
我们如何使用Bluez在C / C ++中检测蓝牙事件?
Windows蓝牙autopairing或禁用身份validation
为什么我的BLE通知callback从未在Windows 8上调用过
将一个蓝牙设备连接为多个设备
通过蓝牙与Python进行通信
Windows不回答BLE参数更新请求
我怎么去写一个蓝牙设备的Windows驱动程序?
是否有一个多操作系统蓝牙库?
用于蓝牙操作的Linux脚本
去年我做了类似的事情。 我决定的方法是使用libdbus-c ++来生成c ++代理对象/类来通过dbus与bluez进行通信。
确定您的耳机实现的蓝牙接口。 连接时,我使用d-feet并探测设备。 您可以在这里手动控制和读取耳机的状态,这对于调试来说非常方便。
生成,查找或创建所需接口的dbus xml描述。 我通过将api规范从bluez api文档转换为xml来手动完成,但是我相信你也可以通过dbus introspection来创建它们。
使用dbusxx-xml2cpp生成代理对象
确定按下按钮时调用的回调
根据需要将代理对象集成到您的代码中
您将需要将您的代码链接到libdbus-c ++,并将其安装到目标上。
你可以使用生成的代理对象来访问耳机的全部功能,它可能会派上用场,而不仅仅是按下按钮!
所收集的hcidump是设备主机和控制器之间的日志。 事件是控制器发送给设备主机的事件,命令是请求/响应发送到设备主机的事件。
Bluez编程指南: http : //people.csail.mit.edu/albert/bluez-intro/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。