我正试图为一个OSX上的蓝牙LE bug找到任何解决办法。特别是,我想知道OSX在读取蓝牙电子关贸总协定表时出了什么问题。因此,我在PacketLogger来自XCode的硬件IO工具中查看PacketLogger来自XCode的硬件IO工具数据包。
当我使用蓝牙资源管理器连接到蓝牙LE设备时,我希望看到组类型请求(uuid=0x2800 primary,startingHandle=0x0001,endingHandle=0xffff)读取3.4.4.9个uuid=0x2800来发现主要服务(或Find Request(uuid=0x2800,Value :uuid=0x2803)),然后再看到3.4.4.1 由Type (uuid=0x2803特性)读取以发现特征。这就是我从iPhone (使用CC2540)嗅探数据包时所看到的。
但是在OSX上,我在PacketLogger (以及连接后的CC2540)中看到的唯一的CC2540请求是:
这些请求不足以发现服务,但是蓝牙资源管理器列出了此时的所有服务UUID。这表明OSX已经知道该蓝牙设备上的服务位于何处。蓝色缓存设备服务并在启动时读取吗?如果是这样,我如何清除缓存?
我试过关闭蓝牙,杀死蓝色,重新启动OSX,但每次OSX从未重新发现服务。
发布于 2014-03-03 21:41:15
是的,blued确实缓存了蓝牙LE GATT表。如果缓存不好,请执行以下操作以删除它,这要感谢“蓝色进程正在扼杀我的CPU”
根据蓝牙4.0第3卷G部分2.5.2属性缓存,当中央与外围设备建立了“纽带”(而不仅仅是配对)时,就允许缓存。我不知道如何证实中央确实与外围国家联系在一起,但我认为是这样的。
https://stackoverflow.com/questions/22028998
复制相似问题