2013-08-29 11 views
5

私はiPhoneでBLEセントラルデバイスを実装しています。カスタムBLEデバイスを開発しました(そのファームウェアは同僚によって書かれています)。CoreBluetoothで記録されたエラーコードにプログラムでアクセスできますか?

一部の操作の周辺機器は、BLE仕様で定義されている標準Bluetooth ATTエラーコードに準拠したBLEエラーコードを返します。私は中央装置を開発するCoreBluetoothスタックを使用しています、私は次のようにXcodeのデバッガの出力ウィンドウにこのようなエラーの通知を受けていますiPhone側、オン

CoreBluetooth [WARNING]不明なエラー:XX

そして、私はコールバックでCBError *オブジェクトを受け取ります。私の問題は、コールバック(CBPeripheralDelegateのdidWriteValueForCharacteristicコールバックなど)で取得するCBError *オブジェクトにcode = 0とlocalizedDescription = "Unknown error"が含まれていることです。

CoreBluetoothスタックによってデバッガの出力ウィンドウに記録されているエラーコードを何とか取得できますか?

私の研究から、CoreBluetoothはほとんどすべてのBLE標準エラーコードを「不明なエラー」(内部コード0、CBError reference参照)にマップしているようです。 CBAttErrorでコードされているような、より詳細なエラーコードを取得したいと考えています。

+0

さらにこの問題をお持ちですか? – allprog

答えて

4

アプリケーションでは、CoreBluetooth APIのみを使用できます。それらはCBErrorだけを公開しています。あなたが実際に見ているように、多くの場合、実際のエラーを隠すことができます。ソースエラーに正式にアクセスするための答えは、あなたがそれを行うことができないということです。

しかし、必要に応じて、プログラムでAppleシステムログにアクセスできます。 (投稿:Using Objective C to read log messages posted to the device consoleを参照してください)興味のある項目を返すようにクエリを定義し、エラーの本当の理由を差し引いてみることができます。これは経験則的な方法ですが、現時点では残念ながら他の方法はありません。