2017-06-22 11 views
0

私は、別のコマンドを実行する前にコマンドが実行されたという応答をサーバから待つ必要があるかどうか、またはBLEスタックがこれを処理して話すことができるかどうかを知る必要があるかどうか疑問に思っていました。応答が受信されない場合、BLEスタックはパケットを再送信しますか?

たとえば、特性に書き込んでから読み込みたいとします。これらのコマンドを一度に実行するか、読み込み要求を送信する前にonWriteRequestコールバックメソッドが起動するのを待つ必要がありますか?

以前の質問に答えた場合、BLEスタックが何回再送を試み、パケットを再送信するまでに応答を待つ時間はありますか?

+0

あなたの場合、どのような種類のデバイスがリクエストを送信するデバイスとして機能しますか?それはAndroidの携帯電話かnrf51ですか? – Emil

+0

電話は送信デバイスです –

+0

あなたは 'with response'または' without response'と書いていますか? – KRUKUSA

答えて

0

GATTプロトコルでは、一度に1つの未処理の操作しか実行できません。あなたは、次の要求を送ることができるまで応答を待つ必要があります。したがって、Androidの場合は、たとえば読み込みリクエストを送信できるまで、onCharacteristicWriteを待つ必要があります。私はそれがiOSでも同じだと思う。

Bluetoothスタックは、要求パケットを電話機のBluetoothコントローラに送信します。リンク層を実装しているBluetoothコントローラは、次の機会にパケットを送信します(接続イベント)。パケットが肯定応答されない場合、肯定応答またはリンクタイムアウト(監視タイムアウト)まで同じパケットを再送する。デフォルトのタイムアウトは5秒です(以前のAndroidバージョンでは20秒でした)。しかし、周辺機器は、接続パラメータ更新要求を発行することによってタイムアウト値を変更することができる。

関連する問題