BLE開発: GATTとは何ですか、どのように機能しますか?
GATTの概念
BLE関連の開発を行うため, 私たちは一定の基礎知識を持っていなければなりません, もちろん, それはとても単純なはずです.
ガット デバイスの役割:
最初に理解すべきことは、これら 2 つの役割の違いはハードウェア レベルにあるということです。, そしてそれらはペアで現れる相対的な概念です:
“中央装置”: 比較的強力な, 周辺機器のスキャンと接続に使用されます, 携帯電話など, タブレット, 等.
“周辺機器”: 機能は比較的シンプルです, 消費電力が小さい, 中央デバイスはデータを提供するために接続されています, リストバンドなど, スマート温度計, 等.
実際には, 最も基本的なレベルで, 接続を確立するプロセスにおけるさまざまな役割を区別する必要があります。. Bluetooth デバイスがその存在を他の人に知らせたい場合は、, 外部の世界に継続的にブロードキャストする必要がある, 一方、相手はブロードキャスト パケットをスキャンして応答する必要があります。, 接続が確立できるように. この過程で, 放送の責任者はペリフェラルです , Central はスキャンを担当します.
両者の接続プロセスに関する注意事項:
中央デバイスは複数の周辺デバイスに同時に接続できます。周辺デバイスが接続されると、, すぐに放送中止になるよ, 切断後もブロードキャストを継続します。いつでも 1 台のデバイスのみが接続を試行できます。, 接続のキューイング.
ガット プロトコル
BLEテクノロジーはGATTに基づいて通信します. GATT は属性送信プロトコルです. 属性を送信するためのアプリケーション層プロトコルとみなすことができます。.
その構造は非常にシンプルです:

xmlとして理解できます:
各 GATT は、異なる機能を実行するサービスで構成されています;
各サービスは異なる特性で構成されています;
各特性は、値と 1 つ以上の記述子で構成されます。;
Service と Characteristic はタグに相当します (サービスはそのカテゴリに相当します, 特性はその名前と同等です), while 値には実際にデータが含まれています, Descriptor はこの値の説明と説明です. もちろん, さまざまな角度からそれを説明したり説明したりすることができます. 説明, したがって、複数の記述子が存在する可能性があります.
例えば:一般的な Xiaomi Mi Band は BLE デバイスです, (想定される) 3 つのサービスが含まれています, デバイス情報を提供するサービスとは, 手順を提供するサービス, 心拍数を検出するサービスと;
機器情報のサービスに含まれる特性にはメーカー情報が含まれます, ハードウェア情報, バージョン情報, 等; 心拍数 サービスには心拍数特性が含まれます, 等, 心拍数特性の値には実際に心拍数データが含まれています, 記述子は値です. 説明, 価値の単位など, 説明, 許可, 等.
ガットC/S
GATT についての予備的な理解がある場合, GATT が典型的な C/S モードであることはわかっています。. C/Sなので, サーバーとクライアントを区別する必要があります.
“GATTサーバー” vs. “GATTクライアント”. これら 2 つの役割が存在する段階は、接続が確立された後です。, そしてそれらは対話の状況に応じて区別されます. データを保持する側をGATTサーバーと呼ぶとわかりやすい, データにアクセスする側は GATT クライアントと呼ばれます.
これは、先ほど述べたデバイスの役割とは別のレベルの概念です。, そしてそれを区別する必要がある. 簡単な例を使って説明しましょう:
携帯電話と時計を例に挙げて説明します。. 携帯電話と携帯電話が接続する前, 携帯電話の Bluetooth 検索機能を使用して、時計の Bluetooth デバイスを検索します。. このプロセス中に, 時計が BLE をブロードキャストしていることは明らかなので、他のデバイスはその存在を認識できます。. , このプロセスにおけるペリフェラルの役割です, 携帯電話がスキャンタスクを担当します, 自然とセンターの役割を果たします; 両者が GATT 接続を確立した後, 携帯電話が時計から歩数などのセンサーデータを読み取る必要がある場合, 2つのインタラクティブなデータが時計に保存されます, したがって、現時点ではウォッチが GATT サーバーの役割を果たします。, 携帯電話は当然 GATT クライアントです; 時計が携帯電話からの SMS 通話やその他の情報を読み取りたいとき, データの保護者は携帯電話になります, したがって、現時点では携帯電話がサーバーです, そして時計はクライアントです.
サービス・特徴
私たちはすでに上でそれらについて知覚的に理解しています, そして実用的な情報が得られます:
- 特性はデータの最小論理単位です.
- 値と記述子に格納されたデータの分析はサーバー エンジニアによって決定されます。, 仕様はありません.
- サービス/キャラクタリスティックには一意の UUID 識別子があります, UUIDには16ビットと128ビットの両方があります, 理解する必要があるのは、16 ビット UUID は Bluetooth 組織によって認定されており、購入する必要があるということです。, もちろん、一般的な 16 ビット UUID もいくつかあります。たとえば、, 心拍数サービスの UUID は 0X180D です, コードでは 0X00001800-0000-1000-8000-00805f9b34fb として表現されます。, 他のビットは修正されています. 128 ビット UUID はカスタマイズ可能.
- GATT 接続は排他的です.