Bluetooth®|基礎編
通信開始と再送の手順
2016.12.20
この記事のポイント
・アドバタイザのアドバタイジングをスキャナが受信し、コネクトリクエストが送られることで通信が開始する。
・通信開始後に通信NGが発生すると、AFHを使い何度でも通信可能なチャネルを探して通信を完了させる。
今回は、BluetoothR v4の無線方式として、通信開始と、接続後のデータ再送の手順を説明します。
通信開始手順
先に簡単に説明しましたが、Bluetoothでは、アドバタイザ(Advertiser)がアドバタイジング(Advertising)を行い、スキャナ(Scanner)がそのアドバタイザを見つけ次第、コネクトリクエストを送り接続に至ります。
Bluetooth low energy-Bluetooth v4以降のアドバタイジングでは、以下の内容のデータが送られています。
Local Name=デバイスの名称
Manufacturer Specific Data=LSIベンダが任意に使用
Tx Power Level=送信デバイスの設定送信電力
Service UUID=デバイスの機能
この中で、Service UUIDには、デバイスの機能、例えばアドバタイザが「温度計」であることを記述します。プロファイルでは、Service UUIDを記述することを指定しているものが多くあります。
実際にどのようなやり取りをして接続に至るか、図を使って説明します。
最初に、チャネル37、38、39についての確認です。これらのチャネルは通常のデータ通信に使用しないことは以前説明した通りで、アドバタイジング用のみの用途に割り当てられたチャネルとなります。アドバタイジングはこの3個のチャネルを使って行われ、スキャナからのコネクトリクエストを受信するまで、アドバタイジングを継続します。
例えば、最初にチャネル37を使ってアドバタイジングを行ったとします(Advertising ①)。ところが、無線LANなどの干渉によってなかなか接続ができない場合は、チャネル38を使って試みを継続し(②)、ダメならチャネル39(③)というようにチャネルを順に使ってアドバタイジングを行います。スキャナも同様に、チャネルごとにアドバタイジングを待って、受信できなければ次のチャネルでまた待つといった動作をします。③でスキャナがアドバタイジングを受信できたとすれば、チャネル39を使ってコネクトリクエストを送信し、接続成立となります。ただし、実際には割り当てチャネルは3しかないので、端末が何百もあるとなかなか接続ができないという技術的な限界があることを覚えておいてください。
スキャナが送るコネクトリクエスト(Conn. Req)は以下の内容で、ユーザーデータを送受信するフェーズのパラメータを含んでいます。
Transmit Window Offset=次の送信までの時間
Transmit Window Size=パケット送信サイズ
Connection Interval=通信間隔
Connection Slave Latency=※別途説明予定
Connection Supervision Timeout=ネットワーク切断までの受信エラー回数
3番目からの3つのデータは、Bluetooth v4のスループットを決めるパラメータで、アプリケーションのスピードに応じて設定するパラメータになります。
再送手順
接続が確立すれば、アドバタイザはスレーブに、スキャナはマスタになり、データ通信が開始されます。こちらも図を使って説明します。ただし、この図はアドバタイジングチャネル37、38、39を抜いてあります(前出の図を参照)。
マスタは、Data Channel PDUとして以下を送信し、スレーブも対応するデータを返します。
Sequence Number(SN)=送信するパケットの番号
Next Expected SN(NESN)=送信を期待するパケットの番号
ところが、干渉や妨害によって受信NGになる場合があります。ただし、NGになっても、通信が完了するまで何度でも通信を試みます。以前に説明したように、AFHにより、選択したチャネルがNGであればホッピングし、別のチャネルで通信を試み接続を確保します。この動作により、実質的にエラーフリーの通信を実現します。