指示未从iOS应用程序注册

3个职位/0个新职位
最后一篇文章
伊瑟尔
离线
最后一次见到:5年8个月前
已加入:2014-04-13 07:54
指示未从iOS应用程序注册

我们使用的是sdk3.0.6,带有128位uuid,充当外设。我们的配置文件在初始化方面几乎与示例\u128配置文件相同。

有写特征和指示特征。出于测试目的,写入WRITE特性的所有内容都通过INDICATE特性来指示。

当连接一个iOS中央应用程序,该应用程序通过INDICATE特征发送数据并期望收到回音时,它无法订阅INDICATE特征。当使用与MAC OSX外设模拟器相同的iOS中央应用程序时,连接、订阅和指示echo都能正常工作。

使用BLE嗅探器比较BLE消息,有两个主要区别:
1当中央对“ATT Characteristic Declaration 0x2803”执行“Read by type request”时,工作的OSX模拟器返回020800052A“作为“按类型读取响应”中的值,而非工作DA14580返回”220800052A”。
2有一个消息块,中央发现外围设备的特征(使用“按类型读取请求”),还有一个消息块与“查找信息请求”中的相同句柄上的“查找信息请求/响应”(返回“客户端特征配置0x2902”)和“写请求/响应”,值为0200。在正在工作的OSX模拟器中,characteric discovery messages块是之前“查找信息”块,而在不工作的DA14580中是之后,即首先是“find information”块,然后是特征发现(导致用户认为iOS应用程序试图注册到它甚至还没有发现的特征上)。

这两个差异使我们相信,由于0x2803上“readbytype”的响应发生了变化,订阅发生了错误。假设响应的前3个字节与常规特性相同(1字节访问标志,2字节句柄),工作标志仅为“read”,而非工作标志为“read”和“indicate”。如何从0x2803(ATT\u DECL\u CHARACTERISTIC)UUID的代码控制这一点?

我们用一个运行sdk2.2.5的旧的评估工具包启动了这个项目。在那里一切似乎都正常。然而,我们不再有旧的硬件和新的硬件失败时,试图运行旧的SDK。在SDK 2.2.5和3.0.6之间是否有一些变化?我们需要对新SDK的代码做一些小的修改,但是没有围绕特性定义做任何修改。

我们还尝试使用16位UUID作为指示特征,但在iOS-cbatterPrattributeNotFound中发现了不同的错误。

维生素A
离线
最后一次见到:1周2天前
工作人员
已加入:2014-02-07 14:10
嗨,伊莱,

嗨,伊莱,

通常,readby type请求和find information请求由我们的BLE核心堆栈在内部处理,因此通过正确的数据库初始化,这两个命令应该能够向主机返回正确的信息。

你能提供配置文件数据库初始化的代码吗?然后我们可以分析并尝试重现您遇到的问题。

我会直接和你联系。

顺致敬意,

维生素A

维生素A
离线
最后一次见到:1周2天前
工作人员
已加入:2014-02-07 14:10
问题已经解决了。

问题已经解决了。