GATTとはATTを用いて記述されたデータ構造体系です。BLEのアプリケーションはすべてGATTを使用して構築されており、GATTはBLEのデータ転送の主軸となります。
本記事ではGATTの概要や仕組み、BLEとの関係性について解説します。
GATTとは
GATTはGeneric attribute profileの略称であり、Bluetooth SIGという標準化団体が提供しているプロファイルとメーカーが独自に提供しているものがあります。
GATT(Generic attribute profile)-汎用アトリビュートプロファイルは、ATT(アトリビュートプロトコル)を用いてデータを構造化する方法と、アプリケーション間でのやり取りの方法を定義します。Bluetooth low energyのアプリケーションは、すべてこのGATTを使用して構築されることから、GATTはBluetooth low energyのデータ転送の主軸となるものです。
ATTとはBluetooth®4.0から追加されたプロトコルであり、「属性」を意味します。サーバとクライアントは、それぞれ属性データを持っており、双方の確認のために属性のやり取りが行われています。
Bluetooth SIGが定義しているプロファイルには、
・血圧計
・体温計
・心拍数
・アラート通知
などがあります。
GATTの仕組みと構造
プロファイルとは特定のアプリケーションによって端末がどのように作動するかを定める仕様のことです。
GATTのプロファイルは
・サービス(Service)
・キャラクタリスティック(Characteristic)
・ディスクリプタ(Descriptor)
という3つの属性から成り立っています。
GATTは複数のサービスから成り、サービスは1個以上のキャラクタリスティックを持ちます。
サービス
サービスとはサーバの機能を表すものです。サービスには固有のUUIDが付けられており、Bluetooth SIGによって規格化されているものは16bitとなり、メーカーの独自の場合は128bitとなります。
キャラクタリスティック
キャラクタリスティックとはサーバの内部状態や外部センサ値などを読み書きする属性。プロパティとディスクリプタで成り立っています。
ディスクリプタ
ディスクリプタとはキャラクタリスティックのバリューの変数の型や単位などの情報を追加したり、バリューが変更された際にクライアントへ通知したりするものです。ディスクリプタを含まないキャラクタリスティックも存在します。
ATTは以下の4つの値で構成されています。
①ハンドル(Handle)
→それぞれの属性が持つ連番のインデックス。値の範囲は0x0001から0xffff(2octets)まで。
②型(Type)
→値に何が入っているのかを示すUUID。
③値(Value)
→属性の値。上位レイヤが利用するデータが入り、サイズは512バイトまで。
④権限(Permission)
→読み書きの権限。値の意味はATTではなくGATTで決められる。サーバ側が所持しているものであり、長さなどは実装で自由に設定可能。
出典:Tech Web「Attribute Protocol(ATTプロトコル)」
BLEとは
BLEとはBluetooth®の拡張仕様の一つであり、Bluetooth Low Energyの略称です。
・省電力に特化している
・スマートデバイスとの親和性が高い
・安価に利用できる
などの特長を持っています。
BLEはBluetoothがバージョン4.0の時に追加されました。BLEは、エネルギーの消費量が少ないBluetoothを作るために開発され、バッテリーの寿命が長く、ペアリングやデバイスの切り替えが簡単に行えます。
GATTとBLEの関係
GATTはBLEのデータ転送の主軸です。BLEのアプリケーションはGATTを使って構築されています。
BLEにおいて、親機を「セントラル」、子機を「ペリフェラル」と区別します。主にスマートフォンやパソコンなどの高機能デバイスは「セントラル」、BLE機能がついたスマートウォッチやビーコン機器などは「ペリフェラル」になります。
セントラル機器はスキャンをして周りのアドバタイズを受信することによりペリフェラル機器を認知します。
ペリフェラレル機器は複数のサービス、キャラクタリスティックを持つことが可能。サービスやキャラクタリスティックにはUUIDがついており、セントラル機器はUUIDを指定し、キャラクタリスティックのデータ内容にアクセスします。
まとめ
今回はGATTの概要や仕組み、BLEとの関係性について解説しました。
GATTはGeneric attribute profileの略称であり、ATTを用いてデータを構造化する方法及びアプリケーション間での情報交換の方法を定義します。
GATTのプロファイルは
・サービス(Service)
・キャラクタリスティック(Characteristic)
・ディスクリプタ(Descriptor)
という3つの属性で構成されています。
イー・フォースでは、マイコン内蔵の小さなメモリだけで動作するように最適化された、コンパクトなμITRON仕様のRTOS「μC3(マイクロ・シー・キューブ)/Compact」を提供しています。
以下の記事ではμC3/CompactとBLEを使用して、I2Cセンサのデータをモバイルアプリに転送する方法についてご紹介していますので、ぜひご覧ください。