GATTの概念
BLE 関連の開発を実行するには、ある程度の基礎知識が必要ですが、もちろんそれは非常に簡単でなければなりません。
ガット デバイスの役割:
最初に理解する必要があるのは、これら XNUMX つの役割の区別はハードウェア レベルであり、これらはペアで現れる相対的な概念であるということです。
「中央デバイス」: 比較的強力で、携帯電話、タブレットなどの周辺デバイスをスキャンして接続するために使用されます。
「周辺デバイス」: 機能が比較的シンプルで、消費電力が小さく、データを提供するために接続される中心デバイス (リストバンド、スマート体温計など)。
実際、最も基本的なレベルでは、接続を確立するプロセスにおけるさまざまな役割を区別する必要があります。 Bluetooth デバイスが自分の存在を他の人に知らせたい場合、接続を確立するには、相手がブロードキャスト パケットをスキャンして応答する必要がある間、継続的に外部にブロードキャストする必要があることがわかっています。 このプロセスでは、ブロードキャストを担当するのは Peripheral で、スキャンを担当するのは Central です。
XNUMX つの間の接続プロセスに関する注意事項:
中央デバイスは複数の周辺デバイスに同時に接続できます。周辺デバイスが接続されると、すぐにブロードキャストを停止し、切断後もブロードキャストを継続します。いつでも XNUMX つのデバイスのみが接続を試行でき、接続をキューに入れます。
ガット
BLE テクノロジーは GATT に基づいて通信します。 GATT は属性送信プロトコルです。 これは、属性を送信するためのアプリケーション層プロトコルとみなすことができます。
その構造は非常に単純です。
XML として理解できます。
各 GATT は、異なる機能を実行するサービスで構成されます。
各サービスは異なる特性で構成されています。
各特性は、値と XNUMX つ以上の記述子で構成されます。
Service と Characteristic はタグに相当します (Service はそのカテゴリに相当し、Characteristic はその名前に相当します)。一方、value には実際にデータが含まれており、Descriptor はこの値の説明と説明です。 もちろん、さまざまな角度から説明したり説明したりすることはできます。 説明。複数の記述子が存在する可能性があります。
例: 一般的な Xiaomi Mi Band は BLE デバイスであり、(想定されている) デバイス情報を提供するサービス、歩数を提供するサービス、心拍数を検出するサービスの XNUMX つのサービスが含まれています。
デバイス情報のサービスに含まれる特性には、メーカー情報、ハードウェア情報、バージョン情報などが含まれます。 心拍数サービスには心拍数特性などが含まれており、心拍数特性内の値には実際に心拍数データが含まれており、記述子はその値です。 値の単位、説明、権限などの説明。
ガットC/S
GATT について予備的に理解すると、GATT が典型的な C/S モードであることがわかります。 C/Sなのでサーバーとクライアントを区別する必要があります。
「GATT サーバー」対「GATT クライアント」。 この XNUMX つの役割が存在する段階は接続が確立された後であり、対話の状況に応じて区別されます。 データを保持する側を GATT サーバー、データにアクセスする側を GATT クライアントと呼ぶとわかりやすいでしょう。
これは先ほどのデバイスの役割とは別のレベルの概念であり、区別する必要があります。 簡単な例を使って説明しましょう。
携帯電話と時計を例に挙げて説明します。 携帯電話との接続が確立される前に、携帯電話のBluetooth検索機能を使用して、時計のBluetoothデバイスを検索します。 このプロセス中、時計が BLE をブロードキャストしているため、他のデバイスがその存在を認識していることは明らかです。 、このプロセスでは周辺機器の役割があり、携帯電話はスキャンタスクを担当し、当然センターの役割を果たします。 両者が GATT 接続を確立した後、携帯電話が時計から歩数などのセンサー データを読み取る必要がある場合、両者の対話データは時計に保存されるため、この時点では時計が GATT の役割を果たします。サーバーであり、携帯電話は当然 GATT クライアントです。 時計が携帯電話から SMS 通話やその他の情報を読み取りたい場合、データの保護者は携帯電話となるため、この時点では携帯電話がサーバーとなり、時計がクライアントになります。
サービス・特徴
上記でそれらについてすでに知覚的に理解しましたが、その後、いくつかの実用的な情報が得られます。
- 特性はデータの最小論理単位です。
- value と descriptor に格納されたデータの分析はサーバー エンジニアによって決定され、仕様はありません。
- サービス/キャラクタリスティックには一意の UUID 識別があり、UUID には 16 ビットと 128 ビットの両方があります。理解する必要があるのは、16 ビット UUID は Bluetooth 組織によって認定されており、購入する必要があるということです。もちろん、共通の UUID がいくつかあります。たとえば、心拍数サービスの UUID は 16X0D で、コード内では 180X0-00001800-0000-1000-8000f00805b9fb と表現され、他のビットは固定です。 34 ビット UUID はカスタマイズできます。
- GATT 接続は排他的です。