我正在尝试使用BlueZ堆栈在Linux上的C中实现ANCS客户端(最新版本,5.39)。到目前为止,我可以使用Apple提供的服务请求UUID设置BLE广告数据。
我的设备确实显示在iPhone(iOS 9)设置中。我也可以连接到设备,连接非常不稳定,这意味着,有时一段时间后,总是当我关闭iPhone上的蓝牙设置子菜单时,连接终止。它也没有粘合,断开后,设备没有出现在iPhone上的“我的设备”下。
我查看了hcidump,显然只是读取了一堆ATT数据,然后停止:
Pastebin link, because it didn't format it correctly on here
连接终止后输出pastebin的下半部分。
现在,我的问题是,创建一个接收iOS设备通知的ANCS客户端的下一步是什么?我已经阅读了无数关于BLE和ANCS的文章和示例代码,但我仍然无能为力。
我是否必须在C代码中打开L2CAP套接字才能接受来自iPhone的连接?我已经尝试过,没有用。我还尝试用gatttool连接到iPhone,虽然它已连接,但它说“资源或设备忙”。
我非常感谢正确方向的一些指示,关于下一步该做什么。
答案 0 :(得分:3)
好的,经过大量的研究,我终于可以回答自己的问题了:
在我提出这个问题之前我已经完成了什么:
之后有必要:
一定要看工具/ btgatt-client.c& BlueZ源代码中的tools / bt-gatt-server.c。它显示了如何打开套接字(使用sockopt等)
希望这有助于任何正在努力解决这个问题的人。