2013-08-29 13 views
5

Ich implementiere ein BLE-Zentralgerät auf dem iPhone, indem ich als Peripheriegerät ein eigenes BLE-Gerät entwickle (dessen Firmware von einem Kollegen geschrieben wurde).Kann programmgesteuert auf die von CoreBluetooth protokollierten Fehlercodes zugegriffen werden?

Das Peripheriegerät für eine bestimmte Operation gibt einen BLE-Fehlercode zurück, der den Standard-Bluetooth-ATT-Fehlercodes gemäß den BLE-Spezifikationen entspricht.

CoreBluetooth [WARNUNG] Unbekannter Fehler: XX

Auf der iPhone Seite, wo ich die CoreBluetooth Stapel bin mit dem Zentralgerät zu entwickeln, bin ich von solchen Fehlern auf dem Debugger-Ausgabefenster von xCode als Benannte

und dann erhalte ich in den Callbacks ein CBError * -Objekt. Mein Problem ist, dass das CBError * -Objekt, das ich im Callback bekomme (z. B. CBPeripheralDelegate's didWriteValueForCharacteristic Callback) nur Code = 0 und localizedDescription = "Unknown error" enthält.

Ist es möglich, den Fehlercode, der im Debugger-Ausgabefenster vom CoreBluetooth-Stack protokolliert wird, irgendwie wiederherzustellen?

Aus meiner Forschung scheint es, dass CoreBluetooth fast alle BLE-Standardfehlercodes in "unbekannte Fehler" (mit internem Code 0, siehe CBError reference) abbildet; Ich möchte detailliertere Fehlercodes erhalten, wie sie von CBAttError codiert werden.

+0

Sind Sie mit diesem Problem weiter gekommen? – allprog

Antwort

4

In einer Anwendung können Sie nur die CoreBluetooth-APIs verwenden. Diese stellen nur CBError zur Verfügung, was, wie Sie sehen, in vielen Fällen den wirklichen Fehler maskieren kann. Die Antwort für den offiziellen Zugriff auf die Quellfehler ist also, dass Sie es nicht tun können.

Wenn Sie jedoch möchten, können Sie auf die Apple System Logs programmgesteuert zugreifen. (Siehe post: Using Objective C to read log messages posted to the device console) Sie können eine Abfrage definieren, um die Elemente zurückzugeben, die Sie interessieren, und versuchen, den wahren Grund des Fehlers abzuziehen. Dies ist eine heuristische Methode, aber im Moment haben wir leider keine andere Möglichkeit, dies zu tun.

Verwandte Themen