我正在iPhone上实现一个BLE中央设备,使用开发的定制BLE设备作为外围设备(其固件由同事编写)。
某些操作的外设将返回BLE错误代码,符合BLE规范中定义的标准蓝牙ATT错误代码。
在iPhone方面,我正在使用CoreBluetooth堆栈来开发中央设备,我在xCode的调试器输出窗口上收到此类错误的通知:
CoreBluetooth [警告]未知错误:XX
然后我在回调中收到一个CBError *对象。我的问题是我在回调中得到的CBError *对象(例如,在CBPeripheralDelegate的didWriteValueForCharacteristic回调中)只包含code = 0和localizedDescription =“Unknown error”。
是否有可能以某种方式检索CoreBluetooth堆栈在调试器输出窗口上记录的错误代码?
根据我的研究,似乎CoreBluetooth几乎将所有BLE标准错误代码映射到“未知错误”(内部代码为0,请参阅CBError reference);我想获得更详细的错误代码,例如CBAttError编码的错误代码。
答案 0 :(得分:4)
在应用程序中,您只能使用CoreBluetooth API。那些只暴露CBError,正如你在许多情况下看到的那样可以掩盖真正的错误。因此,正式访问源错误的答案是你不能这样做。
但是,如果需要,可以通过编程方式访问Apple系统日志。 (请参阅帖子:Using Objective C to read log messages posted to the device console)您可以定义查询以返回您感兴趣的项目,并尝试扣除错误的真正原因。这是一种启发式方法,但不幸的是,目前我们没有其他方法可以做到这一点。