在尝试为CSR1010开发套件编写一些固件之前,我正在和ANCS一起尝试了解它的工作原理。
我一直在目标C中编写一个cmd行应用程序,作为中心,然后询问ANCS服务。我可以收到通知源没问题,并使用正确的详细信息写回控制点以撤回我想要的属性。
我现在遇到的问题是我不确定数据源特性何时完成了它的传输。我拥有的MTU大小为20字节,因此我的数据将被拼接到必要的数据包并发送到罚款。我只是可以;当传输结束时,我可以看到我的头,从我可以看到没有消息标记的结尾或任何谎言,或任何方式来验证所有数据已到达,以便我可以将它们全部重新拼接在一起
苹果here关于ANCS的文件说:
如果对Get App Attributes命令的响应大于协商的GATT最大传输单元(MTU),则NP将其拆分为多个片段。 NC必须通过拼接每个片段来重新组合响应。当收到每个请求属性的完整元组时,响应完成。
当收到每个请求属性的完整元组时,您如何知道。“
THX // 56K
答案 0 :(得分:0)
如果响应大于协商的GATT最大传输单元(MTU),则NP将其分成多个片段。 NC必须通过拼接每个片段来重新组合响应。当收到每个请求属性的完整元组时,响应完成。
发送GetNotificationAttributes请求时,您需要存储要请求的属性列表(或至少存储您请求的属性列表)。然后,在解析响应时,您需要等待更多拆分数据包,直到您收到所请求的所有属性。 这基本上意味着信任ANCS总是完全回答,情况应该如此;但是,为了安全起见,我会在代码中添加超时。这样,如果ANCS以某种方式卡住,你就不会在它的混乱中跟随它=)
利玛