Las*_*yer 3 bluetooth ios bluez gatt ancs
我正在尝试使用 BlueZ 堆栈(最新版本,5.39)在 Linux 上用 C 语言实现 ANCS 客户端。到目前为止,我可以使用Apple提供的服务请求UUID设置BLE广告数据。
我的设备确实出现在 iPhone (iOS 9) 设置中。我也可以连接到设备,但连接非常不稳定,这意味着有时会在一段时间后,并且总是当我关闭 iPhone 上的蓝牙设置子菜单时,连接会终止。它也没有绑定,断开连接后,设备没有显示在 iPhone 上的“我的设备”下。
我查看了hcidump,显然只是读取了一堆ATT数据,然后停了下来:
连接终止后是输出 pastebin 的下部。
现在,我的问题是,创建一个接收来自 iOS 设备通知的 ANCS 客户端的下一步是什么?我已经阅读了无数关于 BLE 和 ANCS 的文章和示例代码,但我仍然一无所知。
我是否必须在我的 C 代码中打开一个 L2CAP 套接字才能接受来自 iPhone 的连接?我已经试过了,没有用。我还尝试使用 gatttool 连接到 iPhone,而它已连接,但它显示“资源或设备繁忙”。
我会非常感谢在正确方向上的一些指示,下一步该怎么做。
好的,经过大量研究,我终于可以通过自己的问题来回答:
在我问这个问题之前我已经完成了:
之后需要什么:
绝对应该查看 BlueZ 源代码中的 tools/btgatt-client.c 和 tools/bt-gatt-server.c。它准确地显示了如何打开套接字(使用 sockopt 等)
希望这可以帮助任何像我一样努力解决这个问题的人。