2012-06-11 11 views
5

Bluetoothコア仕様V4.0 Vol。 3パートGセクション4.9.3は、特性値を応答付きで書き込むために、属性プロトコル書き込み要求プロシージャが使用されることを示しています。応答で複数のBluetooth低エネルギー特性値を書き込む

のBluetoothコア仕様V4.0巻3パートFセクション3.3.2は、クライアントがサーバーにリクエストを送信すると

すると、そのクライアントが同じサーバーに他のリクエストを送信してはならないことを、説明します応答PDUが受信されるまで繰り返される。

iOSアプリでCoreBluetoothを使用して複数の値を返信したいと考えています。私はこの仕様を自分で管理する必要がありますか?または、単にすべての値を一度に書き込むには、単に- writeValue:forCharacteristic:typeを使用することができます。また、iOSは、各リクエストは、前のリクエストが処理された後にのみ送信されることを管理しますか?

私は何とかブルートゥースコア仕様V4.0巻3パートFセクション3.4.5.2に応じ書き込み応答が書かれた特性へのリンクが含まれていないため、iOSのは、それを管理することを推測します。しかし、- peripheral:didWriteValueForCharacteristic:errorメソッドは、iOSが何らかの形で応答がリンクされている特性を把握していることを示唆しています。

これを確認または拒否できますか?

+0

あなたはこれを理解しましたか? – chwi

+0

未だに。 :-( – Etan

答えて

2

CBを扱う際にATT/GATTについて心配する必要はありません。その理由は、CBを使用している多くの人々がBluetooth Core 4.0仕様にアクセスできず、それらを読むことも期待されないからです。

CBが特性を関連付ける方法を知っている理由は、プロトコルが各コマンドと応答がペアになるように指示するためです。コマンドを送信すると、応答が返されます。

writeValueを複数回使用すると、CBは呼び出しを正しくキューに入れます。つまり、次の書き込み前にATTレイヤーで応答を待機します。デリゲートのコールバックは、書き込みが実行されるのと同じ順序であることが保証されています。

+3

あなたはあなたの声明にソースを追加してもらえますか?また、ブルートゥースコア仕様バージョン4.0はhttp://bluetooth.org/specの下の誰でも自由に利用できます – Etan

+0

スニファを使用して、 CBが他の要求を処理する必要がある前に、CBが代理人に依存することはできないため、デリゲートのコールバックを待たずにすべてのプロトコルトランザクションを処理する必要があります。 CBを使用するために1,000ページの仕様を読む必要があります。疑問がある場合は、https://devforums.apple.com/community/ios/core/cbtでこの同じ質問をすることができます – yuklai

1

Iはすなわち

[自己末梢] writeValue "応答で複数の要求を" 書くことができた:valueToWrite forCharacteristic:dataPointCharacteristicタイプ:CBCharacteristicWriteWithResponse]と、

- 実際に私はそれらのうちの14個を送った - すべて遅れて返ってきた。しかし、書き込み応答には特性に書き込まれたデータは含まれませんでした。つまり、特性内の値だけが応答で無効でした。

「Bluetoothコア仕様V4.0第3巻第3部第3.4.5.2項に従って書面特性へのリンクが書込応答に含まれていない」という注釈に近いと思われます。ただし、 characteristc value]は間違っていますが、内部的にはシーケンス処理が必要でした。したがって、書込み応答(すなわち、BLE確認応答)を使用して、次に実行する一連のステップを処理するシーケンシングロジックをフックアップすることは実現可能ではないように思われる。

このように、BLEに "Do Task#1"というメッセージをペリフェラルに "writeWithReponse"してもらうと、ペリフェラルからのBLE応答は "OK!"になります。応答は、周辺機器が「Do Task#1」というメッセージを受信したが、その代わりに-のようなものであることを通知していません。私はあなたが私に送られた正確なコマンドを繰り返すことを怠けている :)

関連する問題