IoT技術情報サイト

Bluetooth®

Bluetooth® v4の上位プロトコルとプロファイル

Attribute Protocol(ATTプロトコル)

今回も上位プロトコルの話が続きます。もし、どのあたりの話なのかをあらためて確かめたい場合は、こちらを参照ください。さて、今回は前項のL2CAPに関する説明で後ほど説明するとしたAttribute Protocolについてです。

Attribute Protocol(アトリビュートプロトコル/ATT)

Attribute ProtocolはBluetooth® 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つの値で構成されてます。

graf_170711_03

  •  ・Attribute Handle(アトリビュートハンドル):各属性が持つ連番のインデックス。値の範囲は0x0001から0xffff(2octets)まで。
  •  ・Attribute Type(アトリビュートタイプ): 128ビットのUUID(Universally Unique IDentifier:汎用一意識別子)。その値によってサービス名(Service)や、キャラクタリスティック(Characteristic)と言われるものを示したりする。サービス名の例を以下に示す。
サービス名 UUID
GAP 0x1800
GATT 0x1801
DEVICE INFORMATION 0x180A
HEALTH THERMOMETER 0x1809
BATTERY SERVICE 0x180F
  •  ・Attribute Value(アトリビュート値):属性値で、上位レイヤが利用するデータが入る。サイズは512バイトまで。
  •  ・Attribute Permission(アトリビュートパーミッション):読み書きの権限。値の意味はATTではなく上位層(GATT)で決められる。サーバ側が保持しているもので、長さなどは実装で自由に設定可能。

属性のアクセス方式

ATTでは、Attributeのアクセスに関する6種の方法が提供されています。

graf_170711_04

RequestとResponse、IndicationとConfirmationはそれぞれ対になっています。クライアントとサーバが同時に行えるやり取りは1つのみです。従って、Request(Indication)はResponse(Confirmation)を受け取るまで、次のRequest(Indication)を送ることはできません。これによって、フロー制御などを必要とせずにやり取りが可能になっています。

これに対してCommandとNotificationは命令や通知を送るだけで応答を必要とせず、送信は任意のタイミングで行えます。しかしながら、フロー制御がないため、大量の送受信があった場合処理が追い付かなくなる可能性があるため、上位層においてその対処が必要になります。

次回は、ATTの続きを予定しています。

キーポイント:

・Attribute ProtocolはBluetooth® 4.0から追加された、Client-Serverアーキテクチャを実現するための
プロトコル。

・接続処理が完了すると、マスタとスレーブは一方がサーバになり、もう一方がクライアントになる。

・ATTプロトコルは属性確認のプロトコルなので、例えば温度データそのものを読み込むなどの動作は含まない。

・Attributeは、Handle、Type、Value、Permissionの4つの値で構成されている。

・ATTでは、Attributeのアクセスに関する6種の方法が提供されている。


Bluetooth low energyの基礎