Bluetooth Low Energyを経由したガジェットの再接続フロー



Bluetooth Low Energyを経由したAlexa Gadgetの再接続フロー

ガジェットとEchoデバイスがBluetooth Low Energy(BLE)経由でペアリング後に切断された場合、Echoデバイスとガジェットはこのトピックに記載した手順で再接続できます。

Bluetoothに関連するAlexa Gadgets Toolkitの問題については、既知の問題ページを参照してください。

概要

次の図は、ペアリング後に切断されたEchoデバイスをガジェットに再接続する方法を示しています。図に続いて、各ステップについて説明します。

Bluetooth Low Energyを経由したAlexa Gadgetとの再接続フロー

フェーズ1:デバイスの検出

ガジェットとEchoデバイスが切断されると、Echoデバイスは絶えずスキャンしてガジェットへの再接続を試みます。このため、ペアリングされたガジェットがEchoデバイスから切断された場合は必ず、ガジェットは初回の接続時と同様にアドバタイズする必要があります。ただし、アドバタイズパケットは再接続用のアドバタイズパケットを使用してください。すると、Echoデバイスがガジェットのアドバタイズパケットを検出して受け取ります。

フェーズ2:接続

ガジェットとEchoデバイスがリンクレイヤー接続を再確立します。

フェーズ3:GATTの検出

このステップは、初回接続フローのGATT接続フェーズとまったく同じです。Echoデバイスとガジェットが、ガジェットとEchoデバイスが今後BLE経由で交換するデータパケットの最大長である、最大転送単位(MTU)をネゴシエートします。Echoデバイスとガジェットは、それぞれが対応可能な最大MTUを交換し、小さいほうの値を選ぶことにより、この値をネゴシエートします。ネゴシエーションの際、対応可能な最大パケット長をガジェットのMTUに指定することをお勧めします。MTUサイズが大きいほどワイヤレスパケットが不必要に分断されるのを防げるため、遅延やデフラグのオーバーヘッドを削減できます。

次に、EchoデバイスはガジェットにGATT(汎用アトリビュートプロファイル)サーバーと接続するリクエストを送信します。接続確立のためには、ガジェットのローカルデータベースにGATTの設定に記載されている設定が含まれている必要があります。GATTの設定では、Echoデバイスとガジェットのロールと、BLE接続を経由してどのようにデータを交換するかを定義します。また、EchoデバイスはRx特性(アトリビュート)に関する通知も有効にします。これにより、ガジェットはEchoデバイスにデータを転送できるようになります。

フェーズ4:ハンドシェイク

初回接続フローと同様、ガジェットとEchoデバイスの接続が確立されたら、ガジェットはEchoデバイスにプロトコルバージョン(PV)パケット を送信する必要があります。PVパケットを受信したら、Echoデバイスはガジェットがサポートしているプロトコルバージョンに基づいて、ガジェットと通信できるかどうかを判断します。この判断に応じて、Echoデバイスがデータ交換を続けるか、ガジェットとの通信ができないために接続を切断するかのどちらかを行います。

Echoデバイスがガジェットとの通信を継続できると判断した場合、Echoデバイスは制御ストリームを使ってガジェットから追加の情報を取得します。このフェーズの間、EchoデバイスはI/O機能、サポート対象のハードウェア機能、ガジェットがサポートするその他の機能などのデバイスアトリビュートを取得します。そのために、Echoデバイスはガジェットにデバイス情報を照会し、ガジェットはデバイス情報パケットで応答します。次に、Echoデバイスはガジェットにサポート対象の機能を照会し、ガジェットはデバイス機能パケットで応答します。

フェーズ5:Alexa Gadgets Toolkitディレクティブおよびイベント

初回接続フローと同様に、Echoデバイスとガジェットが接続され、Alexaがガジェットの情報とサポート対象機能の情報を取得したら、EchoデバイスとガジェットはAlexaストリーム(プロトコルバッファー形式)を使って次の情報を交換します。

  1. EchoデバイスがガジェットにDiscoverディレクティブを送信します。
  2. ガジェットがDiscover.Responseイベントで応答します。このイベントには、DSNのハッシュと、開発者ポータルにガジェットを登録した際にガジェットに割り当てられたデバイスタイプシークレットが、その他の情報とともに含まれています。
  3. Echoデバイスとガジェットは、Alexa Gadgets Toolkitインターフェースによって定義されたディレクティブやイベントを交換します。