2017.07.21
・Attribute ProtocolはBluetoothR 4.0から追加された、Client-Serverアーキテクチャを実現するための
プロトコル。
・接続処理が完了すると、マスタとスレーブは一方がサーバになり、もう一方がクライアントになる。
・ATTプロトコルは属性確認のプロトコルなので、例えば温度データそのものを読み込むなどの動作は含まない。
・Attributeは、Handle、Type、Value、Permissionの4つの値で構成されている。
・ATTでは、Attributeのアクセスに関する6種の方法が提供されている。
今回も上位プロトコルの話が続きます。もし、どのあたりの話なのかをあらためて確かめたい場合は、こちらを参照ください。さて、今回は前項のL2CAPに関する説明で後ほど説明するとしたAttribute Protocolについてです。
Attribute Protocol(アトリビュートプロトコル/ATT)
Attribute ProtocolはBluetoothR 4.0から追加されたプロトコルで、Client-Serverアーキテクチャを実現するためのプロトコルです。Attribute Protocolは「ATT」や「ATTプロトコル(Protocol)」と表記されます。Attributeはこの場合「属性」という意味です。
多くのアプリケーションでは接続処理が完了すると、マスタ(セントラル)とスレーブ(ペリフェラル)は、一方がサーバになり、もう一方がクライアントになります。通常はスレーブ側がサーバになり、マスタ側がクライアントになりますが、用途によって逆でも構いません。例えば、温度測定デバイスがスマートフォンにデータ送信するアプリケーションでは、温度データを持つスレーブデバイスがサーバとなり、そのデータを入手するスマートフォンがクライアントになり、サーバにアクセスします。
サーバとクライアントはそれぞれAttribute(属性)データを持っており、双方の確認のためにその属性のやり取りをするプロトコルがATTプロトコルです。Attributeは、それがどの様な機能やデータを持つものであるかを示しています。これはClient-Serverアーキテクチャのための、クライアントとサーバ間の一対一の通信プロトコルです。また、ATTプロトコルは双方の属性を確認するためのプロトコルなので、例えば温度測定デバイスのデータそのものを読み込むなどの動作は含んでいません。センサのデータを読み込むなどするには、一段上のレイヤのGATTが必要になります(GATTについては別項で説明します)。
Attribute(属性)
サーバとクライアントがそれぞれ持っているAttributeは、Handle、Type、Value、Permissionの4つの値で構成されてます。
サービス名 | UUID |
---|---|
GAP | 0x1800 |
GATT | 0x1801 |
DEVICE INFORMATION | 0x180A |
HEALTH THERMOMETER | 0x1809 |
BATTERY SERVICE | 0x180F |
属性のアクセス方式
ATTでは、Attributeのアクセスに関する6種の方法が提供されています。
RequestとResponse、IndicationとConfirmationはそれぞれ対になっています。クライアントとサーバが同時に行えるやり取りは1つのみです。従って、Request(Indication)はResponse(Confirmation)を受け取るまで、次のRequest(Indication)を送ることはできません。これによって、フロー制御などを必要とせずにやり取りが可能になっています。
これに対してCommandとNotificationは命令や通知を送るだけで応答を必要とせず、送信は任意のタイミングで行えます。しかしながら、フロー制御がないため、大量の送受信があった場合処理が追い付かなくなる可能性があるため、上位層においてその対処が必要になります。
次回は、ATTの続きを予定しています。
ローム主催セミナーの講義資料やDCDCコンバータのセレクションガイドなど、ダウンロード資料をご用意いたしました。
ローム主催セミナーの講義資料やDCDCコンバータのセレクションガイドなど、ダウンロード資料をご用意いたしました。