2016-05-25 6 views
0

私たちは、BOS周辺機器と通信するiOSとAndroid Appを開発しています。場合によっては、この周辺機器がエラーを返し、カスタムステータスコードを使用してエラーを識別して区別したい場合があります。iOS CoreBluetooth:可能なエラーコード

たとえば、特性を書き込もうとするとエラーコード0x80が表示されます。このエラーが返されると、Androidアプリに状態128のエラーが正しく表示されます。残念ながら、私たちのiOSアプリには不明なエラーが表示されます。

Error Domain=CBErrorDomain Code=0 "Unknown error." UserInfo=0x15df3cd0 {NSLocalizedDescription=Unknown error.} 

私はBLE ATTトランザクション中に返される可能性のあるエラーについて読んだことがあるapple docsで特性

func peripheral(peripheral: CBPeripheral, 
    didWriteValueForCharacteristic characteristic: CBCharacteristic, 
    error: NSError?) 

を書くときに私たちは、通常のCoreBluetoothデリゲートメソッドからこのエラーを取得します。 CBATTError列挙は "0x00 CBATTErrorSuccess"で始まり、 "0x11 CBATTErrorInsufficientResources"で終わります。

私の質問は、ブルースピードのLE周辺機器を使用している場合、0x80はiOSの有効なエラーコードですか、それともCBOSTError列挙体の一部ではないため、エラーコード0x80は常にiOS側で不明なエラーになりますか?

ご協力いただきありがとうございます。

編集:このトピックに関するもう1つの質問が見つかりましたが、受け入れられた回答はもう可能ではありません。

Is it possible to programmatically access the error codes logged by CoreBluetooth?

答えて

0

我々は戻っBLE周辺から正しいCBAttErrorsを取得CBATTError enumで定義されたエラーコードを使用します。 Corebluetoothはこれらのエラーコードだけを処理できるようです。それ以外の場合は、エラーを未知のNSErrorにマップします。 Bluetooth v4.0の章3.4.1.1がエラーコード0x80〜0xFFを

として定義しているので、これは本当に奇妙です。

アプリケーションエラーコードは、上位層の仕様で定義されています。

正しいステータスコードがデバイスログに記録されることも奇妙です。 iOS 7より前は、hereのようにデバイスコンソールにアクセスする可能性がありましたが、残念ながらこれはもう解決策ではありません。

関連する問題