2015-12-28 42 views
0

我有两个BLE电路板(由我公司定制)是广告。当我扫描时,尽管具有不同的名称和标识符,但它们被识别为相同的CBPeripheral。这里是我则委托调用的控制台读取:CoreBluetooth标识两个外设相同

centralManager didDiscoverPeripheral <CBPeripheral: 0x144d26c70, identifier = E0FE60A5-FC4A-A6C5-3868-7D0EEAA580CD, name = Board A3D43, state = disconnected> 
centralManager didDiscoverPeripheral <CBPeripheral: 0x144d26c70, identifier = 2209CC24-05E8-8455-3A40-3F27AE9078DB, name = Board 51EB5E, state = disconnected> 

我的问题是如何CBPeripherals分化,如果不通过名称或标识?我们的固件使用了Bluetopia,或许这里有一些不完整的序列化?

+1

这两个标识符和名称是完全不同的。变量的内存地址恰好相同,但无论如何这是毫无意义的。 – Paulw11

+0

你说得对。我正在获得关于解决方案的更多细节,但事实证明这与IRK有关。 iOS在Settings应用程序和连接过程中看到了外设的相同情况,这给我们带来了很多问题,我认为内存地址可能是一个线索。当我有更多的细节时会发布解决方案。 –

回答

1

正如Paul在他的评论中提到的那样,内存地址并没有最终与这个问题相关。核心问题是外设产生相同的IRK,导致iOS错误地认为它们都是相同的外设。这个错误源于一个错误的假设,即关键多样化函数(核心BT规范中的d1,第3卷H部分5.2.2.1)具有随机性组件,实际上它只是一个哈希函数。

我们通过查看设置应用程序 - 在更改之前,当我们连接新的外设时,它覆盖了蓝牙设置中的以前配对,验证了成功。一旦我们使IRK独一无二,我们就看到了设置应用中列出的多个设备。

相关问题