Bluetooth®|基礎編

GATTの構造

2017.12.12

この記事のポイント

・GATTプロファイルは、「サービス」、「キャラクタリスティック」、「ディスクリプタ」の3つのアトリビュートで構成されている。

・GATTプロファイルはサービスの集合体であり、サービスはキャラクタリスティックの集合体。

引き続き今回も、GATT(汎用アトリビュートプロファイル)に関する説明をします。

GATT(Generic attribute profile)-汎用アトリビュートプロファイルはATT(アトリビュートプロトコル)を用いて、データを構造化する方法とアプリケーション間でのやり取りの方法を定義しており、基本的にサービス(Service)とキャラクタリスティック(Characteristic)から構成されていることは先に説明しました。今回は、GATTの構成についてもう少し詳しく説明します。

GATTの構造

GATTプロファイルは、「サービス」、「キャラクタリスティック」、「ディスクリプタ」の3つのアトリビュートで構成されています。

「GATTプロファイル」は、1つ以上のサービスから構成されます。

「サービス」は、ゼロ個以上のキャラクタリスティックから構成されます。

「キャラクタリスティック」はプロパティ、バリュー、ゼロ個以上のディスクリプタで構成されます。

つまり、GATTのプロファイルはサービスの集合体であり、サービスは他のサービスへの参照とキャラクタリスティックの集合体です。(右図参照)。この構造は、Bluetooth LEにおいては厳密に適用され、GATTプロファイルのすべてのアトリビュートは、これら3つのいずれかに含まれます。

Bluetooth low energyのGATT構造

GATTのサービスとは

GATTのサービスとは、機器(サーバ)の機能をあらわすものです。例えば、体温計のハードウェアの機能が、体温の測定と測定完了の通知音を発することの2つだとすれば、温度測定をするサービスと通知音を発するサービスが、それぞれ1個ずつ計2個の独立したサービスが実装されていることになります。これらのサービスは、体温計という機器の個別機能ではなく、あくまでも温度測定と通知音を鳴らすとった独立した機能です。したがって、これらのサービスは他の機器でも使用することが可能です。

GATTのキャラクタリスティックとは

GATTのキャラクタリスティックとは、その機器(サーバ)の内部状態、動作指示、外部センサ値などを読み書きするアトリビュートで、アクセス方法を定義するプロパティとディスクリプタで構成されています。先程の体温計の例では、温度測定のサービスには温度を読み出すキャラクタリスティック、通知音のサービスには通知音のオンオフ指示を書き込むキャラクタリスティックが含まれていると考えることができます。

GATTのディスクリプタとは

ディスクリプタとは、キャラクタリスティクスのバリューの変数の型や単位などの情報の追加と、そのバリューが変更された時にクライアントへの通知の有無といった動作指示に使います。キャラクタリスティックによっては、ディスクリプタを含まないものもあります。

全体的な流れとしては、クライアントは遭遇した任意のサーバと接続した後、GATTプロファイルに基づくプロファイルで情報の取得や書き込みを行います。この情報のやり取りには、キャラクタリスティックまたはディスクリプタの値を使用します。