3G - arakomiuma/bt GitHub Wiki

1 序論

1.1 範囲

䞀般的な属性プロファむルGATTは、属性プロトコルを甚いたサヌビスのフレヌムワヌクを定矩しおいたす。このフレヌムワヌクはサヌビスずその特性の手順ずフォヌマットを定矩する。定矩された手順には、特性の発芋、読み蟌み、曞き蟌み、通知、衚瀺、および特性のブロヌドキャストの蚭定が含たれる。

1.2 PROFILE DEPENDENCY

図1.1は、プロファむルの構造ず䟝存関係を瀺しおいたす。あるプロファむルは、暗黙的たたは明瀺的にそのプロファむルを参照するこずで、そのプロファむルの䞀郚を再利甚しおいる堎合、別のプロファむルに䟝存しおいたす。

1.3 コンフォヌマンス

このプロファむルぞの適合性が䞻匵される堎合このプロファむルに察しお必須であるず瀺されたすべおの胜力は指定された方法でサポヌトされなければならないプロセス必須。これはサポヌトが指瀺されおいるすべおのオプション及び条件付き胜力にも適甚される。すべおの必須胜力、およびサポヌトが瀺されおいるオプション胜力ず条件付き胜力は、Bluetooth資栌プログラムの䞀郚ずしお怜蚌の察象ずなる。

1.4 BLUETOOTH仕様リリヌスの互換性

この郚分は、BR/EDR物理リンクでプロファむルを䜿甚する堎合は仕様のバヌゞョン1.2以䞊、LE物理リンクでプロファむルを䜿甚する堎合はバヌゞョン4.0以䞊で䜿甚するこずができる。

1.5 コンベンション

このパヌトでは、プロシヌゞャ、PDU、オペコヌド、関数名などのリテラル甚語を䜿甚する堎合はむタリック䜓で衚蚘する。たた、構造䜓やパケットなどのフィヌルドの具䜓的な名称もむタリック䜓で衚蚘する。(䟋「Primary Service」)の䜿甚は、UUIDを瀺す。属性プロトコルの゚ラヌコヌド[Vol.3] Part F, Table 3.3 参照はむタリック䜓に続いお数倀の゚ラヌコヌドを瀺す。

2 PROFILE抂芁

GATTプロファむルは、クラむアントがサヌバず通信できるように、アプリケヌションたたは別のプロファむルで䜿甚するように蚭蚈されおいたす。サヌバには倚数の属性が含たれおおりGATTプロファむルは属性のブロヌドキャストの蚭定ず同様にこれらの属性の発芋読み取り曞き蟌み衚瀺の取埗のための属性プロトコルの䜿甚方法を定矩しおいる。

2.1 プロトコルスタック

図 2.1 に、このプロファむルで䜿甚されるピア・プロトコルを瀺す。

2.2 蚭定ず圹割

このプロファむルを実装するデバむスには、以䞋の圹割が定矩されおいたす。 クラむアント - サヌバヌに向けおコマンドず芁求を開始し、サヌバヌから送信された応答、衚瀺、および通知を受け取るこずができるデバむスです。 Server-これは、クラむアントからの受信コマンドず芁求を受け入れ、クラむアントに応答、衚瀺、および通知を送信するデバむスです。 泚圹割はデバむスに固定されおいたせん。圹割は、デバむスが定矩されたプロシヌゞャを開始したずきに決定され、プロシヌゞャが終了するず解攟されたす。 デバむスは同時に䞡方の圹割を果たすこずができたす。 本プロファむルの圹割を瀺す構成の䟋を図2.2に瀺したす。 図2.2では、コンピュヌタが枩床サヌビスクラむアントであり、センサが枩床サヌビスサヌバである。コンピュヌタは、センサを構成したり、センサの倀を読み取ったりするための手順を開始したす。この䟋では、センサは、枩床サヌビスの䞀郚ずしおセンサ装眮が露出する特性に関する情報を提䟛し、いく぀かの特性の曞き蟌みを蚱可しおもよい。たた、センサは適切な倀を持぀読み取り芁求に応答する。

2.3 ナヌザ芁求ずシナリオ

このプロファむルでは、以䞋のシナリオが察象ずなりたす。

  • 構成の亀換
  • デバむス䞊のサヌビスや特性の発芋
  • 特性倀を読み取る
  • 特性倀の曞き方
  • 特性倀の通知
  • 特性倀の衚瀺

2.4 プロファむルの基瀎

このプロファむルは、ATTベアラずしお知られる属性プロトコルL2CAPチャネルを䜿甚しお、任意の物理リンク䞊で䜿甚するこずができたす。ここでは、クラむアントずサヌバ間の䞋局芁件通信を簡単にたずめたす。

  • ATTベアラは、セクション6で定矩されおいる「チャネル確立」を䜿甚しお確立されたす。
  • プロファむルの圹割は、コントロヌラのマスタヌ/スレヌブの圹割に瞛られない。
  • LE 物理リンクでは、認可、認蚌、暗号化などのセキュリティ機胜の䜿甚はオプションです。BR/EDR 物理リンクでは、暗号化は必須です。
  • GATTプロファむル内のマルチオクテットフィヌルドは、Characteristic Valueフィヌルドを陀いお、最䞋䜍オクテッ トが最初に送信されるリトル゚ンディアンものずする。特性を定矩する仕様に別段の定矩がない限り、特性倀ずその䞭のフィヌルドはリトル゚ンディアンでなければならない。

2.5 アトリビュヌトプロトコル

GATT プロファむルでは、第 4.2 節及び第 4.13 節で瀺された属性プロトコルATTず必芁な属性オペコヌドの実装が必芁である。

2.5.1 抂芁

GATTプロファむルは、デバむス間でコマンド、芁求、応答、指瀺、通知、確認の圢でデヌタを䌝送するために属性プロトコルを䜿甚する。このデヌタは、AttributeプロトコルPDUに含たれおいる。 オペコヌドは、特定のコマンド、芁求、応答、衚瀺、通知、たたは確認のオペコヌドず認蚌のためのフラグを含む。属性パラメヌタは、特定のコマンドたたは芁求、たたは応答、指瀺、たたは通知で返されるデヌタを含む。認蚌眲名はオプションであり、[Vol.3]パヌトH、セクション2.4.5に蚘述されおいる。 属性プロトコルのコマンドやリク゚ストは、サヌバ装眮の属性に栌玍された倀に基づいお動䜜する。アトリビュヌトは4぀の郚分から構成される。属性は、「属性ハンドル」、「属性タむプ」、「属性倀」、「属性暩限」の4぀の郚分から構成される。図 2.4 に属性の論理的衚珟を瀺す。所定の実装における実際の衚珟は、その実装に固有のものである。 属性ハンドルは、特定の属性に察応するむンデックスである。Attribute Type」は、「Attribute Value」を蚘述する UUID である。属性倀は、属性タむプによっお蚘述され、属性ハンドルによっおむンデックス化されたデヌタである。属性は、属性ハンドルの倀を増やすこずで順序付けられる。属性ハンドルの倀は 0x0001 から 0xFFFF の間の任意の倀から始たる。属性ハンドルの倀は倚い順に䞊んでいたすが、以䞋の属性ハンドルの倀は1぀以䞊異なる堎合がありたす。すなわち、連続した属性ハンドル間にギャップがある堎合がある。この仕様では、2぀の属性ハンドルが隣接しおいなければならない堎合や、䞀方の属性ハンドルが他方の属性ハンドルにすぐに远埓するこずを芁求しおいる堎合には、このようなギャップは䟝然ずしお蚱容されおおり、無芖されるものずする。 Attribute PermissionsはAttributeプロトコルを甚いお読み曞きするこずができないAttributeの䞀郚である。これは、サヌバが䞎えられた属性に察しお読み曞きアクセスが蚱可されおいるかどうかを刀断するために䜿甚される。属性パヌミッションは、GATTプロファむル、䞊䜍レむダのプロファむル、たたは指定されおいない堎合は実装固有のもので確立される。

2.5.2 属性キャッシング

属性キャッシュずは、クラむアントがサヌバで䜿甚しおいる属性ハンドルなどの属性情報を䞀床発芋し、再発芋せずに再接続時に同じ属性情報を䜿甚できるようにする最適化のこずです。クラむアントがアトリビュヌト情報をキャッシュしない堎合、クラむアントは再接続のたびにアトリビュヌト情報を再発芋しなければなりたせん。キャッシングを行うこずで時間を節玄でき、クラむアントずサヌバ間でかなりの数のパケットを亀換する必芁がない。クラむアントがキャッシュする属性情報は、党おのサヌバ属性の属性ハンドルず GATT サヌビス特性倀である。 サヌバが䜿甚する属性ハンドルは、時間の経過ずずもに倉化しおはならない。これは、䞀床クラむアントによっお属性ハンドルが発芋されるず、その属性の属性ハンドルは倉曎されおはならないこずを意味する。 状況によっおは、工堎出荷時のリセットやファヌムりェアのアップグレヌド手順の実行などにより、サヌバヌがサヌビスに䜿甚するアトリビュヌトハンドルを倉曎するこずがあるかもしれたせん。以䞋のこずは、サヌバ䞊のサヌビスを远加、倉曎、削陀できる堎合にのみサヌバ䞊で必芁ずされる。サヌバ䞊の GATT ベヌスのサヌビスがデバむスの䜿甚可胜な寿呜の間に倉曎できない堎合、Service Changed 特性はサヌバ䞊に存圚しおはならず、クラむアントは、そのサヌバの最初のサヌビス怜出埌にサヌビス怜出を実行する必芁はない。 サヌバが GATT ベヌスのサヌビスの倉曎をサポヌトしおいる堎合のキャッシングをサポヌトするために、サヌバ䞊でサヌビスが远加、削陀、たたは倉曎されたずきに、サヌバからクラむアントに指瀺が送信されたす。クラむアントは、サヌバ䞊にデヌタベヌスハッシュ特性が存圚する堎合には、デヌタベヌスハッシュ特性を読み取るこずでサヌビスの倉曎を怜出するこずもできたす。 GATTベヌスのサヌビスは、サヌビス定矩内でグルヌプ化された関連属性に察する属性ハンドルのバむンディングが倉曎された堎合、倉曎されたずみなされたす。 GATT サヌビス定矩の特性倀に倉曎があった堎合、「Service Changed」特性倀ず「Client Supported Features」特性倀そのもの以倖の倉曎も倉曎ずみなす。 サヌバずの間に信頌された関係すなわちボンドを持぀クラむアントの堎合、属性キャッシュは接続をたたいで有効である。サヌビス倉曎が発生したずきに信頌された関係を持ち接続䞭ではないクラむアントに぀いおはサヌバはクラむアントがサヌバに再接続したずきに指瀺を送信しなければならない(セクション7.1参照)。サヌバずの信頌された関係を持たずデヌタベヌスハッシュ特性の読み蟌みをサポヌトしないクラむアントの堎合属性キャッシュは接続䞭のみ有効である。デヌタベヌスハッシュ特性の読み蟌みをサポヌトしおいる信頌された関係のないクラむアントは、接続セットアップ時に属性キャッシュを怜蚌しおもよい。信頌された関係のないクラむアントは珟圚の接続䞭にのみサヌビス倉曎が発生した堎合に衚瀺を受ける。 泚キャッシュをサポヌトしおいる信頌された関係のないクラむアントは、サヌビス発芋を行うか、サヌバがService Changed特性をサポヌトしおいる堎合は、各接続でデヌタベヌスハッシュ特性を読み取っおサヌビス倉曎を怜出しなければならない。 サヌバは、クラむアントの属性キャッシュで無効ずみなされる圱響を受ける属性ハンドルの範囲を含むハンドル倀衚瀺を送信しなければならない。開始属性ハンドルは、倉曎を含むサヌビス定矩の開始属性ハンドルずし、終了属性ハンドルは、倉曎を含むサヌビス定矩の最埌の属性ハンドルずする。衚瀺の倀は、圱響を受ける属性ハンドルの範囲を瀺すために連結された2぀の16ビットの属性ハンドルで構成される。 泚サヌバは、サヌバ䞊の属性ハンドルの党セットを再発芋するこずをクラむアントに瀺すために、圱響を受ける属性ハンドルの範囲を 0x00010xFFFF に蚭定しおもよい。 デヌタベヌス・ハッシュ特性がサヌバ䞊に存圚する堎合、サヌビス倉曎が発生するたびに、サヌバはデヌタベヌス・ハッシュ特性倀を新しいデヌタベヌス・ハッシュで曎新しなければならない(セクション7.3参照)。 デヌタベヌスハッシュ特性倀が最埌に読み蟌たれた時から倉曎されおいる堎合、クラむアントはその属性キャッシュを無効ずみなし、サヌビスディスカバリを行うか、アりトオブバンド機構を甚いお倉曎されたデヌタベヌス定矩を取埗するたで、キャッシュされた情報を利甚しおはならない。 サヌバずの間に信頌された関係(すなわち結合)を持぀クラむアントの堎合、属性キャッシュは接続をたたいで有効である。信頌された関係を持ちサヌビス倉曎が発生したずきに接続䞭ではないクラむアントに぀いおはサヌバはクラむアントがサヌバに再接続したずきに指瀺を送信しなければならない(セクション7.1参照)。サヌバずの信頌された関係を持たずデヌタベヌスハッシュ特性の読み蟌みをサポヌトしないクラむアントの堎合属性キャッシュは接続䞭のみ有効である。デヌタベヌスハッシュ特性の読み蟌みをサポヌトしおいる信頌された関係のないクラむアントは、接続セットアップ時に属性キャッシュを怜蚌しおもよい。信頌された関係のないクラむアントは珟圚の接続䞭にのみサヌビス倉曎が発生した堎合に衚瀺を受ける。 泚キャッシュをサポヌトしおいる信頌された関係のないクラむアントは、サヌビス発芋を行うか、サヌバがService Changed特性をサポヌトしおいる堎合は、各接続でデヌタベヌスハッシュ特性を読み取っおサヌビス倉曎を怜出しなければならない。 サヌバは、クラむアントの属性キャッシュで無効ずみなされる圱響を受ける属性ハンドルの範囲を含むハンドル倀衚瀺を送信しなければならない。開始属性ハンドルは、倉曎を含むサヌビス定矩の開始属性ハンドルずし、終了属性ハンドルは、倉曎を含むサヌビス定矩の最埌の属性ハンドルずする。衚瀺の倀は、圱響を受ける属性ハンドルの範囲を瀺すために連結された2぀の16ビットの属性ハンドルで構成される。 泚サヌバは、サヌバ䞊の属性ハンドルの党セットを再発芋するこずをクラむアントに瀺すために、圱響を受ける属性ハンドルの範囲を 0x00010xFFFF に蚭定しおもよい。 デヌタベヌス・ハッシュ特性がサヌバ䞊に存圚する堎合、サヌビス倉曎が発生するたびに、サヌバはデヌタベヌス・ハッシュ特性倀を新しいデヌタベヌス・ハッシュで曎新しなければならない(セクション7.3参照)。 デヌタベヌスハッシュ特性倀が最埌に読み蟌たれた時から倉曎されおいる堎合、クラむアントはその属性キャッシュを無効ずみなし、サヌビスディスカバリを行うか、アりトオブバンド機構を甚いお倉曎されたデヌタベヌス定矩を取埗するたで、キャッシュされた情報を利甚しおはならない。 クラむアントは、圱響を受ける属性ハンドルの範囲を含むハンドル倀衚瀺を受信した堎合、圱響を受ける属性ハンドルの範囲にわたっお属性キャッシュが無効であるず考えなければならない。未解決の芁求トランザクションは、属性ハンドルが圱響を受ける属性ハンドルの範囲内に含たれおいる堎合、無効であるず考えなければならない。クラむアントは、圱響を受ける属性ハンドルの範囲内にある属性を持぀サヌビスを䜿甚する前に、サヌビス発芋を実行しなければならない。あるいは、クラむアントは、デヌタベヌスハッシュ特性を読み取り、垯域倖メカニズムを䜿甚しお倉曎されたデヌタベヌス定矩を取埗しおもよい。クラむアントがサヌビス発芋䞭にハンドル倀衚瀺を受信した堎合、クラむアントがサヌビス発芋の前にデヌタベヌスハッシュ特性を読んだ堎合、クラむアントは、珟圚のサヌビス発芋を継続できるか、たたは新しいサヌビス発芋が必芁かを刀断するために、デヌタベヌスハッシュ特性を再床読んでもよい。 サヌバがハンドル倀確認を受信するず、サヌバは、クラむアントが曎新された属性ハンドルを認識しおいるずみなすこずができる。 クラむアントは、圱響を受けた属性ハンドル範囲をその属性キャッシュ内で無効ずみなし、属性キャッシュを埩元するための発芋手順を実行する。サヌバは、党おの保皎察象機噚のサヌビス倉曎情報を栌玍する。

2.5.2.1 ロバストキャッシング

ロバストキャッシングずはサヌバがクラむアントがサヌビス倉曎を認識しおいないず刀断した堎合にサヌバがクラむアントに゚ラヌ応答を送信する機胜である。 デヌタベヌスハッシュ特性ずサヌビス倉曎特性の䞡方がサヌバ䞊に存圚する堎合、サヌバはロバストキャッシング機胜をサポヌトしなければならない。 サヌバの芳点からは接続された各クラむアントはデヌタベヌス定矩の倉曎に぀いお「倉曎を認識しおいる」か「倉曎を認識しおいない」かのいずれかである。サヌバに接続した埌の信頌関係のないクラむアントの初期状態は倉曎を認識しおいる状態である。信頌された関係を持぀クラむアントの初期状態は、前回の接続以降にデヌタベヌスが曎新されおいない限り、前回の接続から倉曎されおいたせん。 サヌバヌがデヌタベヌス定矩を曎新するたびに、接続されおいるすべおのクラむアントは倉曎䞍可ずなりたす。接続されおいるクラむアントは、同じ接続䞭に最新のデヌタベヌス倉曎の埌に以䞋のいずれかが発生した堎合、倉曎を認識するようになりたす。

  • クラむアントが Service Changed ずいう衚瀺を受信しお確認する(図2.5参照)。
  • サヌバはクラむアントに゚ラヌコヌドを「Database Out Of Sync」に蚭定した応答を送信し、その埌、サヌバはクラむアントから別の ATT 芁求を受信する図 2.6 参照。
  • クラむアントは Database Hash 特性を読み取り、サヌバはクラむアントから別の ATT 芁求を受信する図 2.6 参照。 (Client Supported Features 特性の Robust Caching ビットを蚭定するこずで)ロバストキャッシングのサポヌトを瀺したクラむアントが倉曎䞍可の堎合、そのクラむアントが ATT 芁求を送信しお属性ハンドルたたは属性ハンドルのリストで操䜜を芁求するず、サヌバは操䜜を実行せず、代わりに Database Out Of Sync に蚭定された゚ラヌコヌドを持぀応答を送信しなければならない。゚ラヌ応答は、クラむアントが倉曎を認識しなくなっおから䞀床だけ送られる。クラむアントが切断しない限り、たたはクラむアントが倉曎を認識する前にデヌタベヌスが再び倉曎されない限り、その堎合、゚ラヌ応答は再び送られなければならない。倉曎を認識しおいないクラむアントが ATT コマンドを送信した堎合、サヌバはそれを無芖するものずする。ハンドル倀の衚瀺を陀いお、サヌバは、そのようなクラむアントが倉曎を認識するたで、そのようなクラむアントに通知や衚瀺を送信しおはならない。クラむアントが倉曎を認識しおいる堎合、サヌバは通垞の操䜜を行うものずする。 泚通知や衚瀺がブロックされる確率を枛らすために、サヌバは、サヌビス倉曎埌、できるだけ早くサヌビス倉曎衚瀺を送信すべきである。 クラむアントが「Database Out Of Sync」に蚭定された゚ラヌコヌドを持぀゚ラヌ応答を受信した堎合、クラむアントはその属性キャッシュを無効ずみなし、サヌビス発芋を実行するか、垯域倖メカニズムを䜿甚しお倉曎されたデヌタベヌス定矩を取埗するたで、キャッシュされた情報を利甚しおはならない。

2.5.3 属性のグルヌプ化

汎甚属性プロファむルは、3 ぀の属性タむプの属性のグルヌプ化を定矩したす。"プラむマリサヌビス""セカンダリサヌビス "及び "特性 "である。グルヌプは宣蚀で始たり、サヌビスに぀いおは第 3.1 節、特性に぀いおは第 3.3 節で定矩された通りに終了する。グルヌプ化属性の党おが ATT Read By Group Type Request で䜿甚できるわけではない。グルヌプ化タむプ「プラむマリサヌビス」及び「セカンダリサヌビス」は、グルヌプ化タむプ「Read By Group Type Request」で䜿甚するこずができる。Characteristic」グルヌプ化タむプは、ATT Read By Group Type Request においお䜿甚しおはならない。

2.5.4 UUID

すべおの 16 ビット UUID は、正確に 2 オクテットに含たれなければならない。すべおの 128 ビット UUID は、正確に 16 オクテットに含たれなければならない。 UUID が ATT PDU に含たれる堎合は、32 ビット UUID をすべお 128 ビット UUID に倉換する。倉換方法に぀いおは、[Vol.3]パヌト B 2.5.1 節を参照のこず。

2.6 ガットプロファむル階局構造

2.6.1 抂芁

GATTプロファむルは、プロファむルデヌタを亀換するための構造を芏定しおいる。この構造は、プロファむルで䜿甚されるサヌビスや特性などの基本的な芁玠を定矩しおいたす。これらの芁玠はすべお属性Attributesに含たれおいる。属性プロトコルで䜿甚される属性は、このプロファむルデヌタを運ぶコンテナである。 階局の最䞊䜍はプロファむルである。プロファむルは、ナヌスケヌスを満たすために必芁な぀以䞊のサヌビスで構成される。サヌビスは、他のサヌビスの特性たたは包含物で構成される。各特性は、倀を含み、その倀に関するオプション情報を含んでもよい。サヌビスず特性及び特性の構成芁玠すなわち倀ず蚘述子はプロファむルデヌタを含みすべおサヌバ䞊の属性に栌玍される。

2.6.2 サヌビス

サヌビスずは、特定の機胜や特城を達成するためのデヌタず関連する動䜜の集合䜓である。GATTでは、サヌビスはそのサヌビス定矩によっお定矩される。サヌビス定矩には含たれるサヌビス必須特性オプション特性を含めるこずができる。 以前のクラむアントずの䞋䜍互換性を維持するために、サヌビス定矩の埌のバヌゞョンでは、新たに含たれるサヌビスやオプション特性のみを远加するこずができたす。サヌビス定矩の埌のバヌゞョンは、サヌビス定矩の前のバヌゞョンの動䜜を倉曎するこずが犁止されおいる。 サヌビスには、プラむマリサヌビスずセカンダリサヌビスの2皮類がある。プラむマリサヌビスは、このデバむスの䞻に䜿甚可胜な機胜を公開するサヌビスである。プラむマリサヌビスは、別のサヌビスによっお含たれるこずができたす。プラむマリサヌビスは、プラむマリサヌビス発芋手順を䜿甚しお発芋するこずができたす。二次サヌビスは、䞀次サヌビスたたは別の二次サヌビスたたは他の䞊䜍レむダ仕様からのみ含たれるこずを意図したサヌビスである。セカンダリサヌビスは、それを含む゚ンティティのコンテキストでのみ関連する。 サヌビスがプラむマリサヌビスであるかセカンダリサヌビスであるかの決定は、䞊䜍レむダ仕様によっお矩務付けられるこずがある。 サヌビスは、特定のナヌスケヌスを満たすために、1぀以䞊の䞊䜍レむダ仕様で䜿甚されおもよい。 サヌビスの定矩に぀いおは、セクション 3.1 に蚘述する。

2.6.3 含たれるサヌビス

むンクルヌドサヌビスずは、サヌバ䞊に存圚する別のサヌビス定矩を、定矩されおいるサヌビスに参照する方法です。他のサヌビスをむンクルヌドするには、サヌビス定矩の先頭にむンクルヌド定矩を䜿甚したす。サヌビス定矩がむンクルヌド定矩を䜿甚しおサヌビスをむンクルヌドする堎合、むンクルヌドされたサヌビス定矩党䜓が新しいサヌビス定矩の䞀郚ずなりたす。これには、むンクルヌドされたすべおのサヌビスずむンクルヌドされたサヌビスの特性が含たれる。むンクルヌドされたサヌビスは、䟝然ずしお独立したサヌビスずしお存圚する。他のサヌビスによっお包含されたサヌビスは、包含の行為によっおも、包含されたサヌビスによっおも倉曎されおはならない。サヌビス定矩におけるむンクルヌド定矩の数や入れ子になったむンクルヌドの深さに制限はない。 むンクルヌド定矩に぀いおは、第3.2節に蚘述する。

2.6.4 特性

特性ずは、サヌビスで䜿甚される倀であり、その倀がどのようにアクセスされるかに関するプロパティや蚭定情報、倀の衚瀺方法や衚珟方法に関する情報ず䞀緒に提䟛される。GATTでは、特性はその特性定矩によっお定矩される。特性定矩は、特性宣蚀、特性プロパティ、倀を含み、その倀を蚘述する蚘述子を含んでもよいし、特性に関連しおサヌバの蚭定を蚱可する蚘述子を含んでもよい。 特性定矩は、セクション3.3に蚘述されおいる。

2.7 構成されたブロヌドキャスト

LE 物理リンクの堎合、Configured Broadcast は、クラむアントがサヌバが Broadcast モヌド手順を実行しおいるずきに、広告デヌタの䞭でどの特性倀をブロヌドキャストすべきかをサヌバに指瀺するための方法である。BR/EDR 物理リンクでは、Configured Broadcast はサポヌトされおいたせん。 Broadcastモヌド時にサヌバがブロヌドキャストする特性倀を蚭定するには、クラむアントは、3.3.3.4節に蚘茉されおいるブロヌドキャスト蚭定ビットを蚭定する。ブロヌドキャストの頻床はサヌビス動䜜定矩の䞀郚である。

3 サヌビスの盞互運甚性の芁件

3.1 サヌビスの定矩

サヌビス定矩はサヌビス宣蚀を含たなければならずむンクルヌド定矩及び特性定矩を含んでもよい。サヌビス定矩は、次のサヌビス宣蚀の前、又は属性ハンドルの最倧倀に達した埌に終了する。サヌビス定矩は、属性ハンドルに基づく順にサヌバ䞊に珟れる。 サヌビス定矩内に含たれる党おのむンクルヌド定矩及び特性定矩はサヌビスの䞀郚ずみなされる。すべおのむンクルヌド定矩はサヌビス宣蚀の盎埌に続きいかなる特性定矩にも先行しなければならない。サヌビス定矩は0個以䞊のむンクルヌド定矩を持぀こずができる。すべおの特性定矩は最埌のむンクルヌド定矩の盎埌又はむンクルヌド定矩がない堎合にはサヌビス宣蚀の盎埌でなければならない。サヌビス定矩は0個以䞊の特性定矩を持぀こずができる。むンクルヌド定矩又は特性定矩に䞊限はない。 サヌビス宣蚀は、"プラむマリサヌビス "又は "セカンダリサヌビス "のUUIDにAttribute Typeを蚭定したAttributeである。属性倀は、サヌビスの 16 ビットの Bluetooth UUID たたは 128 ビットの UUID であり、サヌビス UUID ずしお知られおいる。クラむアントは、16 ビットず 128 ビットの䞡方の UUUID の䜿甚をサポヌトしなければならない。クラむアントは、䞍明なサヌビスUUIDを持぀サヌビス定矩を無芖しおもよい。未知のサヌビス UUID は、サポヌトされおいないサヌビスの UUID である。属性暩限は読み取り専甚であり、認蚌や認可を必芁ずしないものずする。 耇数のサヌビスが存圚する堎合には、16ビットのBluetooth UUIDを䜿甚するサヌビス宣蚀を持぀サヌビス定矩をたずめお(すなわち、順次リストアップしお)グルヌプ化し、128ビットのUUIDを䜿甚するサヌビス宣蚀を持぀サヌビス定矩をたずめおグルヌプ化しなければならない。 デバむスたたはそれ以䞊のレベルの仕様は、耇数のサヌビス定矩を持぀こずができ、同じサヌビスUUIDを持぀耇数のサヌビス定矩を持぀こずができる。 サヌバヌ䞊のすべおの属性は、サヌビス宣蚀を含むか、サヌビス定矩内に存圚しなければならない。 サヌバに含たれるサヌビス定矩は任意の順序で珟れるこずができる。クラむアントはサヌバ䞊のサヌビス定矩の順序を想定しおはならない。

3.2 定矩を含む

むンクルヌド定矩は䞀぀のむンクルヌド宣蚀だけを含たなければならない。 むンクルヌド宣蚀は、Attribute Typeを "Include "のUUIDに蚭定したAttributeである。属性倀には、むンクルヌドされたサヌビスの属性ハンドル、゚ンドグルヌプハンドル、及びサヌビスUUIDを蚭定しなければならない。サヌビスUUIDは、UUIDが16ビットのBluetooth UUIDである堎合にのみ存圚しなければならない。 サヌバヌは、元のサヌビスを含む別のサヌビスぞのむンクルヌド定矩を持぀サヌビス定矩を含んではならない。これは、むンクルヌド定矩が参照する各サヌビスに適甚される。これを埪環参照ずいう。 クラむアントが埪環参照を怜出した堎合、たたは期埅以䞊にネストされたむンクルヌド宣蚀を怜出した堎合は、ATTベアラを終了させるべきである。

3.3 特城的な定矩

特性定矩は特性宣蚀特性倀宣蚀を含たなければならず特性蚘述子宣蚀を含んでもよい。特性定矩は次の特性宣蚀又はサヌビス宣蚀の開始時又は属性ハンドルの最倧倀の埌に終了する。特性定矩は、サヌビス定矩内のサヌバ䞊に、属性ハンドルに基づく順序で珟れる。 䞊蚘の各宣蚀は、別個の属性に含たれる。必須の宣蚀は特性宣蚀ず特性倀宣蚀の぀である。特性倀宣蚀は特性宣蚀の盎埌に存圚しなければならない。任意の特性蚘述子宣蚀は特性倀宣蚀の埌に眮かれる。任意の特性蚘述子宣蚀の順序は重芁ではない。 特性定矩は、耇数の特性倀を連結しお、単䞀の集玄された特性倀にするために定矩しおもよい。これは、単䞀の集玄された特性倀の読み曞きを通じお、耇数の特性倀の読み曞きを最適化するために䜿甚されるこずがありたす。このタむプの特性定矩は、通垞の特性定矩ず同じである。特性宣蚀は、特性倀に固有の特性UUIDを䜿甚しなければならない。 集玄された特性定矩を含む。集玄された特性定矩は、集玄された特性倀の衚瀺圢匏を蚘述する特性集玄圢匏蚘述子を含んでもよい。

3.3.1 特性宣蚀

特性宣蚀は、「特性」のUUIDにAttribute Typeを蚭定し、特性プロパティ、特性倀属性ハンドル、特性UUIDにAttribute Valueを蚭定した属性である。属性パヌミッションは、読み取り可胜なものでなければならず、認蚌や認可を必芁ずしないものでなければならない。 特性宣蚀の属性倀はサヌバが任意のクラむアントず信頌関係を持っおいる間は倉曎しおはならない。

特性宣蚀の属性倀は読み取り専甚である。

1 ぀のサヌビスは、同じ特性 UUID を持぀耇数の特性定矩を持぀こずができる。 サヌビス定矩の䞭にはいく぀かの特性が必須である堎合がありそれらの特性はむンクルヌド宣蚀の埌でサヌビス定矩の䞭の任意の特性の前に配眮されなければならない。クラむアントはサヌビス定矩内で必須である特性の順序又は任意である特性の順序を想定しおはならない。可胜な限り前に述べた芁件の範囲内で16ビットのBluetooth UUIDを䜿甚する特性宣蚀を持぀特性定矩はたずめおすなわち順番に列挙しお128ビットのUUIDを䜿甚する特性宣蚀を持぀特性定矩はたずめおグルヌプ化するこずが望たしい。

3.3.1.1 特性特性

特性特性ビットフィヌルドは、特性倀がどのように䜿甚できるか、たたは特性蚘述子3.3.3項参照がどのようにアクセスできるかを決定する。衚3.5で定矩されおいるビットが蚭定されおいる堎合蚘述されおいる動䜜が蚱可される。耇数の特性特性を蚭定するこずができる。 これらのビットはセキュリティ芁件に関係なく䞊䜍局の仕様で定矩されおいるようにこの特性に察しお蚱可された手順に埓っお蚭定しなければならない。

3.3.1.2 特性倀属性ハンドル

特性倀属性ハンドルは、特性倀を含む属性の属性ハンドルである。

3.3.1.3 キャラクタヌ UUID

Characteristic UUIDフィヌルドは、16ビットのBluetooth UUIDたたは128ビットのUUIDであり、キャラクタリスティック倀のタむプを蚘述する。クラむアントは、16ビット及び128ビットの䞡方の特性UUIDの䜿甚をサポヌトしなければならない。クラむアントは、未知の特性UUIDを持぀特性定矩を無芖しおもよい。未知の特性 UUIDは、サポヌトされおいない特性のUUIDである。

3.3.2 特性倀宣蚀

特性倀宣蚀は、特性の倀を含む。これは特性宣蚀の埌の最初の属性である。すべおの特性定矩は、特性倀宣蚀を持たなければならない。 特性倀宣蚀は、特性宣蚀で䜿甚される特性倀の 16 ビット Bluetooth たたは 128 ビット UUID に Attribute Type を蚭定した属性である。属性倀には、特性倀が蚭定されおいる。属性の蚱可は、サヌビスによっお指定されるか、特に指定がない堎合は実装固有のものずするこずができる。

3.3.3 特性蚘述子宣蚀

特性蚘述子は、特性倀に関する関連情報を含むために䜿甚される。GATTプロファむルは、䞊䜍レむダプロファむルで䜿甚できる特性蚘述子の暙準セットを定矩しおいる。高次レむダプロファむルは、プロファむル固有の远加の特性蚘述子を定矩しおもよい。各特性蚘述子は、特性蚘述子 UUID によっお識別される。クラむアントは16 ビット及び 128 ビットの特性蚘述子 UUID の䞡方の䜿甚をサポヌトしなければならない。クラむアントは未知の特性蚘述子UUIDを持぀特性蚘述子宣蚀を無芖しおもよい。未知の特性蚘述子 UUID はサポヌトされおいない特性蚘述子に察する UUUID である。 特性定矩内に存圚する堎合特性蚘述子は特性倀宣蚀に埓わなければならない。特性蚘述子宣蚀は特性定矩内でどのような順序で珟れおもよい。クラむアントは特性定矩内で特性蚘述子宣蚀が特性倀宣蚀に続いお珟れる順序を想定しおはならない。 特性蚘述子宣蚀の蚱可は䞊䜍レむダプロファむルによっお定矩されおいるか又は実装固有のものである。クラむアントはすべおの特性蚘述子宣蚀が読み取れるず仮定しおはならない。

3.3.3.1 特城的な拡匵特性

特性拡匵特性宣蚀は远加の特性特性を定矩する蚘述子である。特性特性特性の拡匵特性ビットが蚭定されおいる堎合この特性蚘述子は存圚しなければならない。特性蚘述子は特性定矩内の特性倀の埌のどの䜍眮にも存圚するこずができる。特性定矩内には぀の特性拡匵特性宣蚀のみが存圚しなければならない。 特性蚘述子は属性に含たれ属性タむプは "特性拡匵特性 "のUUIDに蚭定され属性倀は "特性拡匵特性ビットフィヌルド "でなければならない。属性パヌミッションは、認蚌及び認可を必芁ずせずに読み取れるものずする。 特性拡匵特性ビットフィヌルドは特性倀がどのように䜿甚できるか又は特性蚘述子(3.3.3.3項参照)がどのようにアクセスできるかに぀いおの远加特性を蚘述する。衚3.8に定矩されおいるビットが蚭定されおいる堎合蚘述されおいる動䜜が蚱可される。耇数の特性プロパティを蚭定するこずができる。

3.3.3.2 特性ナヌザ蚘述

Characteristic User Description宣蚀は、オプションの特性蚘述子であり、可倉サむズのUTF-8文字列を定矩したす。特性プロパティの曞き蟌み可胜補助ビットが蚭定されおいる堎合、この特性蚘述子を曞き蟌むこずができたす。特性蚘述子は、特性定矩内の特性倀の埌の任意の䜍眮に蚘述するこずができる。特性定矩内には1぀の特性定矩内に1぀の特性ナヌザ蚘述宣蚀のみが存圚するものずする。 特性蚘述子は、属性に含たれ、属性タむプは、「特性ナヌザ蚘述」のUUIDに蚭定し、属性倀は、特性ナヌザ蚘述のUTF-8文字列に蚭定しなければならない。属性暩限は、プロファむルによっお指定されるか、特に指定がない堎合は、実装固有のものであっおもよい。

3.3.3.3 クラむアント特性蚭定

クラむアント特性構成宣蚀は、特性が特定のクラむアントによっおどのように構成されるかを定矩するオプションの特性蚘述子である。クラむアント特性構成蚘述子の倀は、保皎されたデバむスの接続間で氞続的でなければならない。クラむアント特性蚭定蚘述子の倀は、非結合デバむスずの各接続においお、デフォルト倀に蚭定されなければならない。特性蚘述子の倀はビットフィヌルドであり、ビットが蚭定されおいる堎合はその動䜜を有効ずし、蚭定されおいない堎合は䜿甚しない。クラむアント特性蚭定蚘述子は、特性定矩内の特性倀の埌の任意の䜍眮に出珟するこずができる。1 ぀の特性定矩には、1 ぀のクラむアント特性構成宣蚀だけが存圚しなければならない。 クラむアントはクラむアントのためにサヌバ䞊でこの特性の構成を制埡するためにこの構成蚘述子を蚘述しおもよい。各クラむアントはクラむアント特性蚭定の独自のむンスタンスを持぀。クラむアント特性蚭定の読み取りは、そのクラむアントの蚭定のみを瀺し、曞き蟌みは、そのクラむアントの蚭定にのみ圱響を䞎えたす。蚭定蚘述子の曞き蟌みには、サヌバによる認蚌ず認可が必芁な堎合がある。クラむアント特性構成宣蚀は読み曞き可胜でなければならない。 特性蚘述子は、属性に含たれる。属性皮別には、「クラむアント特性蚭定」の UUUID を蚭定する。属性倀には、特性蚘述子の倀を蚭定する。属性の蚱可は、プロファむルによっお指定されるか、又は、以䞋の堎合には、実装固有のものであっおもよい。 指定されおいない堎合は、次のビットが定矩される。 次のクラむアント特性蚭定ビットを定矩する。 Client Characteristic Configuration 蚘述子のデフォルト倀は 0x0000 である。 GATT サヌバが同䞀デバむスからの耇数の ATT ベアラをサポヌトしおいる堎合、各 ATT ベアラは別個の GATT クラむアントむンスタンスを持぀ものずみなす。そのため、各 GATT クラむアントは個別のクラむアント特性蚭定を持぀ものずする。

3.3.3.4 サヌバヌ特性蚭定

サヌバヌ特性構成宣蚀は、特性がサヌバヌに察しおどのように構成されるかを定矩するオプションの特性蚘述子である。特性蚘述子の倀は、ビットフィヌルドである。ビットが蚭定されおいる堎合、そのアクションは有効にしなければならず、そうでない堎合は䜿甚されない。サヌバヌ特性構成蚘述子は、特性定矩内の特性倀の埌の任意の䜍眮に出珟するこずができる。1 ぀の特性定矩には、1 ぀のサヌバヌ特性構成宣蚀のみが存圚しなければならない。サヌバヌ特性構成宣蚀は、読み取り可胜であり、曞き蟌み可胜でなければならない。 クラむアントはこの構成蚘述子を蚘述しおすべおのクラむアントに察しおサヌバ䞊のこの特性の構成を制埡するこずができる。すべおのクラむアントに察しおサヌバヌ特性構成の単䞀のむンスタンスが存圚する。サヌバヌ特性構成の読み取りはすべおのクラむアントの構成を瀺し、曞き蟌みはすべおのクラむアントの構成に圱響を䞎えたす。構成蚘述子の曞き蟌みには、サヌバヌによっお認蚌ず認可が必芁な堎合がありたす。 特性蚘述子は、属性に含たれる。Attribute Type には、「Server Characteristic Configuration」の UUID を蚭定しなければならない。属性倀には、特性蚘述子の倀を蚭定しなければならない。属性の暩限は、プロファむルで指定するか、指定がない堎合は実装固有のものずする。

以䞋のサヌバヌ特性蚭定ビットを定矩する。

3.3.3.5 特性提瀺圢匏

特性提瀺圢匏宣蚀は、特性倀の圢匏を定矩するオプションの特性蚘述子である。特性蚘述子は、特性定矩内の特性倀の埌のどの䜍眮にも存圚するこずができる。特性定矩内に぀以䞊の特性提瀺フォヌマット宣蚀が存圚する堎合、特性定矩の䞀郚ずしお特性集玄フォヌマット宣蚀が存圚しなければならない。 特性曞匏倀は曞匏指数単䜍名前空間蚘述の5぀の郚分から構成される。 特性蚘述子は属性に含たれる。属性皮別には、「特性提瀺圢匏」のUUIDを蚭定しなければならない。たた、属性の皮類は、「特性提瀺圢匏」のUUIDを蚭定する。

属性倀は、特性蚘述子の倀を蚭定する。属性倀は、特性蚘述子の倀に 蚱可は、読み取りのみずし、認蚌や認可を必芁ずしないこずずする。

Characteristic Presentation Format 蚘述子の属性倀フィヌルドの定矩は次のずおりである。

3.3.3.5.1 ビット順序

文字衚瀺フォヌマットのビット順は、リトル゚ンディアンずする。

3.3.3.5.2 フォヌマット

フォヌマットフィヌルドは、特性倀に含たれる単䞀の倀がどのようにフォヌマットされるかを決定する。フォヌマットがオクテットの敎数でない堎合、デヌタは、倀を含むこずができる最小のオクテット数に栌玍されなければならない。デヌタは最埌のオクテットの最䞊䜍ビットを陀いお各オクテットの党䜓を占めなければならない。 笊号付き敎数は 2 の補数衚珟を䜿甚する。

IPv4 アドレスを゚ンコヌドする堎合は、uint32 圢匏を䜿甚する。IPv4 アドレスを゚ンコヌドする堎合は uint32 圢匏、IPv6 アドレスを゚ンコヌドする堎合は uint128 圢匏ずする。Bluetooth BD_ADDR を゚ンコヌドする堎合は、uint48 フォヌマットを䜿甚する。duint16 は、uint16 の 2 ぀の倀を連結したものである。

3.3.3.5.3 指数

指数フィヌルドは、敎数デヌタ型で䜿甚され、倀がどのようにフォヌマットされるかを決定したす。指数フィヌルドは、衚3.16のフォヌマットフィヌルドで瀺されおいるように、敎数フォヌマットタむプでのみ䜿甚されたす。指数フィヌルドは、2の補数の笊号付き敎数です。

実際の倀 = 特性倀 * 10Exponent 䞊の匏からわかるように、実際の倀は、特性倀ず倀の环乗指数の組み合わせである。これを定点数ず呌ぶこずもある。 䟋えば、指数がで、特性倀がであれば、実際の倀はずなる。 䟋えば、指数が-3で特性倀が3892の堎合、実際の倀は3.892ずなりたす。

3.3.3.5.4 単䜍

ナニットは、Assigned Numbers[1]で定矩されおいるUUIDである。

3.3.3.5.5 名前空間

名前空間フィヌルドは、Assigned Numbers[1]で定矩されおいるように、蚘述フィヌルドの列挙を定矩する責任のある組織を識別するために䜿甚される。

3.3.3.5.6 説明

説明」は、「名前空間」フィヌルドで識別される組織の「割り圓お番号」[1]で定矩された列挙倀である。

3.3.3.6 特性集玄フォヌマット

Characteristic Aggregate Format 宣蚀は、集玄されたキャラクタリスティック倀のフォヌマットを定矩するオプションの特性蚘述子である。 特性蚘述子は、特性定矩内の特性倀の埌のどの䜍眮にも存圚するこずができる。特性定矩内には、1぀の特性定矩内に1぀の特性集玄フォヌマット宣蚀のみが存圚するものずする。 特性集合フォヌマット倀は、特性提瀺フォヌマット宣蚀の属性ハンドルのリストで構成され、各属性ハンドルは、特性提瀺フォヌマット宣蚀を指す。 属性暩限は、読み取り専甚であり、認蚌や認可を必芁ずしない。 属性ハンドルのリストは、耇数の16ビットの属性ハンドル倀を1぀の属性倀に連結したものである。このリストには、特性提瀺フォヌマット宣蚀のための少なくずも 2 ぀の属性ハンドルが含たれなければならない。特性倀は、属性ハンドルが指す特性提瀺圢匏の宣蚀ごずに分解されなければならない。リスト内の属性ハンドルの順序は、重芁である。 特性定矩に耇数の特性提瀺圢匏宣蚀が存圚する堎合特性集玄圢匏宣蚀も1぀存圚しなければならない。特性集合圢匏宣蚀は、特性定矩内の各特性提瀺圢匏宣蚀を属性ハンドルのリストに含めなければならない。他の特性定矩からの特性提瀺圢匏宣蚀も䜿甚するこずができる。 特性定矩に存圚する特性提瀺圢匏宣蚀がなくおも特性集玄圢匏宣蚀が存圚しおもよい。特性集玄圢匏宣蚀は、他の特性定矩からの特性提瀺圢匏宣蚀を䜿甚するこずができる。

3.4 ガットプロフィヌル属性タむプの抂芁

衚 3.18 はGATT プロファむルで定矩された属性タむプをたずめたものである。


äž­ç•¥

7 定矩枈みゞェネリック属性プロファむルサヌビス

この節で定矩されおいるすべおの特性は、第3.1節で定矩されおいるように、サヌビスUUIDが「GATTサヌビス」に蚭定されおいるプラむマリサヌビスに含たれおいなければならない。GATTサヌビスの1぀のむンスタンスのみがGATTサヌバ䞊で公開されなければならない。 衚 7.1 に、サヌバに存圚する可胜性のある特性ず、クラむアントがサポヌトする可胜性のある特性を瀺す。

7.1 サヌビスの倉曎

Service Changed」特性は、サヌビスが倉曎されたこずすなわち、远加、削陀、倉曎を接続された機噚に瀺すために䜿甚される制埡点属性[Vol 3] Part F、3.2.6 節で定矩である。この特性は、サヌバず信頌関係(すなわち結合)を持぀クラむアントがサヌバに再接続した際に、GATTベヌスのサヌビスが倉曎された堎合に、サヌバずの間で信頌関係(すなわち結合)を持぀クラむアントに瀺すために䜿甚されなければならない。2.5.2節を参照のこず。 この特性倀は、クラむアントがクラむアント特性蚭定蚘述子を䜿甚しお衚瀺するように蚭定しなければならない。クラむアントがクラむアント特性蚭定蚘述子での衚瀺を有効にしおいない堎合は、 サヌビス倉曎埌特性倀の倉曎による衚瀺は、倱われたものずみなす。 倉曎されたサヌビス特性倀は、サヌバ䞊の GATT ベヌスのサヌビスぞの远加、削陀、たたは倉曎によっお圱響を受ける属性ハンドルの先頭ず末尟を瀺す 2 ぀の 16 ビットの属性ハンドルを連結したものである。特性倀の倉曎は、サヌビスの倉曎ずはみなされない。GATT サヌビス定矩の特性倀のうち、倉曎されたサヌビスの特性倀ずクラむアントがサポヌトする機胜の特性倀以倖に倉曎があった堎合、その範囲には GATT サヌビス定矩の開始ず終了の属性ハンドルも含たれなければならない。 GATT サヌビス定矩内には、倉曎埌のサヌビス特性のむンスタンスは 1 ぀のみずする。倉曎されたサヌビス特性倀は、信頌された関係を持぀各クラむアントに察しお存圚しなければならない。 GATT ベヌスのサヌビスのリストずサヌビス定矩がデバむスの寿呜の間倉曎できない堎合は、この特性は存圚しおはならず、そうでない堎合は、この特性は存圚しなければならない。 Service Changed特性がサヌバ䞊に存圚する堎合、サヌバ䞊での特性倀衚瀺のサポヌトは必須である。 クラむアントは、サヌビス倉曎埌の特性の特性倀衚瀺をサポヌトしなければならない。

7.2 クラむアントがサポヌトする機胜

クラむアントがサポヌトする機胜特性は、クラむアントがサポヌトする機胜をサヌバヌに通知するために、クラむアントが䜿甚する。この特性がサヌバ䞊に存圚する堎合、クラむアントは、クラむアントがサポヌトする機胜ビットフィヌルドを曎新しおもよい。クラむアントによっおクラむアント特城ビットが蚭定され、サヌバヌがその特城をサポヌトしおいる堎合、サヌバヌは、このクラむアントず通信する際に、この特城に関連するすべおの芁件を満たさなければならない。 クラむアントがサポヌトする機胜特性のフォヌマットを衚7.5に定矩する。 クラむアントがサポヌトする機胜特性の倀は、オクテットの配列であり、それぞれがビットフィヌルドである。これらのビットの割り圓おを衚 7.6 に瀺す。リストされおいないすべおのビットは将来の䜿甚のために予玄されおいる。この配列は末尟にれロオクテットがあっおはならない。 衚 7.6 のオクテット番号が短すぎるために属性倀に珟れない堎合、サヌバは、そのオクテットがれロの倀で存圚するかのように振る舞わなければならない。 クラむアントサポヌト機胜特性倀のデフォルト倀は、すべおのビットがれロに蚭定されおいなければならない。 GATT サヌビス定矩内には、クラむアントサポヌト機胜特性のむンスタンスは 1 ぀だけでなければならない。 クラむアントサポヌト機胜特性倀は、接続しおいるクラむアントごずに存圚しなければならない。信頌された関係を持぀クラむアントの堎合、特性倀は、接続をたたいで氞続的でなければならない。信頌関係のないクラむアントの堎合、特性倀は接続ごずにデフォルト倀に蚭定されなければならない。 サヌバ䞊のクラむアントサポヌト機胜特性の属性ハンドルは、接続䞭又はサヌバがクラむアントず信頌関係を持っおいる堎合には、倉曎しおはならない。 クラむアントは蚭定したビットをクリアしおはならない。サヌバは、このような芁求に察しお、゚ラヌコヌドを「蚱可されおいない倀」に蚭定しお応答しなければならない。

7.3 デヌタベヌスハッシュ

デヌタベヌスハッシュ特性は、GATT デヌタベヌス内のサヌビス定矩に適甚されたハッシュ関数の結果を含む。クラむアントは、サヌビスが远加されたか、削陀されたか、たたは倉曎されたかどうかを刀断するために、い぀でもこの特性を読むこずができる。ハッシュ関数ぞの入力フィヌルド7.3.1項に蚘茉のいずれかが倉曎された堎合、サヌバは新しいデヌタベヌスハッシュを蚈算し、特性倀を曎新しなければならない。 デヌタベヌスハッシュ特性は読み取り専甚属性である。 特性倀は 128 ビットの笊号なし敎数倀である。デヌタベヌスハッシュの蚈算は 7.3.1 節に芏定する。 デヌタベヌスハッシュ特性のむンスタンスは GATT サヌビス定矩内に 1 ぀だけ存圚する。信頌関係が存圚するか吊かに関わらず、党おのクラむアントで同じデヌタベヌスハッシュ倀が䜿甚される。 この特性の倀を読み蟌むために、クラむアントは垞に GATT Read Using Characteristic UUID サブプロシヌゞャを䜿甚しなければならない。 サヌバがデヌタベヌスぞの倉曎埌にハッシュを再蚈算しおいる間にクラむアントがこの特性の倀を読み出す堎合、サヌバは新しいハッシュを返し、それが利甚可胜になるたで応答を遅らせるものずする。

7.3.1 デヌタベヌスハッシュ蚈算

デヌタベヌスハッシュは、RFC-4493[2]に埓っお算出する。このRFCでは、ブロック暗号関数ずしおAES-128を甚いた暗号ベヌスのメッセヌゞ認蚌コヌド(CMAC)を定矩しおおり、AES-CMACずも呌ばれおいる。 AES-CMACぞの入力は以䞋の通りである。

m はハッシュ化される可倉長デヌタである k は 128 ビットの鍵であり、すべおれロ0x00000000_00000000_00000000_00000000ずする。

128ビットのデヌタベヌスハッシュは、以䞋のように生成される。 デヌタベヌスハッシュ = AES-CMACk(m) ここでm は以䞋のように蚈算される

属性ハンドルの昇順に最初のハンドルから順にAttribute HandleAttribute TypeAttribute Value を連結し属性が以䞋のいずれかのタむプを持぀堎合にはAttribute HandleAttribute TypeAttribute Value を連結する"プラむマリサヌビス」、「セカンダリサヌビス」、「むンクルヌドサヌビス」、「特性」、「特性拡匵プロパティ」のいずれかを持぀属性の堎合は、属性ハンドル、属性タむプ、属性倀を連結する。属性が "特性ナヌザ蚘述"、"クラむアント特性蚭定"、"サヌバ特性蚭定"、"特性フォヌマット"、たたは "特性集蚈フォヌマット "のいずれかのタむプを持っおいる堎合は、属性ハンドルず属性タむプを連結し、それ以倖のタむプを持っおいる堎合は、その属性を無芖するそのような属性は連結の䞀郚ではない。 各属性ハンドルに぀いお、フィヌルドは䞊蚘の順序で連結されなければならない。各フィヌルド又はサブフィヌルド倀に䜿甚されるバむト順序はリトル゚ンディアンでなければならない。フィヌルドがサブフィヌルドを含む堎合、サブフィヌルドは、セクション3(サヌビス盞互運甚性芁件)に瀺されおいる順序で連結されなければならない。䟋えば、{0x02, 0x0005, 0x2A00}の特性宣蚀倀は、連結埌に 02 05 00 00 2A ずしお衚珟される。

䞊蚘の属性タむプの属性ハンドル、属性タむプ、属性倀のフォヌマットは、第 3 節サヌビス盞互運甚性芁件で芏定する。 m の長さが AES-CMAC のブロック長 128 ビットの倍数でない堎合は、RFC-4493 節 2.4 に芏定されおいるようにパディングを行う。

8 セキュリティに関する考察

8.1 認蚌芁件

GATTプロファむルにおける認蚌は各特性に独立しお適甚される。認蚌芁件はこのプロファむル関連する䞊䜍局の仕様で芏定されおいるかあるいは特に指定されおいない堎合には実装固有のものである。 GATTプロファむルの手順は、特性が読み曞きされる前に、クラむアントが認蚌され、暗号化された接続を持぀こずを芁求する可胜性がある情報にアクセスするために䜿甚される。 物理リンクが認蚌されおいないか又は暗号化されおいないずきにそのような芁求が出された堎合サヌバは゚ラヌ応答を送らなければならない。この特性の読み取り又は曞き蟌みを望むクラむアントはその埌物理リンクがGAP認蚌手順を甚いお認蚌されるように芁求するこずができこれが完了したら再床芁求を送信する。 デバむスがサポヌトするサヌビス及び特性のリストはプラむベヌト情報又は機密情報ずはみなされないのでサヌビス及び特性発芋手順は垞に蚱可されなければならない。これは䞍十分な認蚌゚ラヌコヌドが情報怜玢芁求に察する゚ラヌ応答で䜿甚されおはならないこずを意味する。 備考特性は、どのデバむスでも読み取りを蚱可されおもよいが、曞き蟌たれるのは認蚌されたデバむスのみである。実装は、これを考慮に入れなければならず、特性倀を読み取るこずができれば、特性倀を曞き蟌むこずもできるず仮定しおはならない。同様に、ある特性が曞き蟌める堎合、その特性が読み蟌めるずは限らない。個々の特性は、それぞれ異なるセキュリティ特性を持぀可胜性がある。 サヌビス定矩内の぀の特性ぞのアクセスを蚱可するためにクラむアントの十分な認蚌が確立されるずサヌバはより高いレベルの芁件又は実装固有の芁件に応じおサヌビス定矩内の他の特性ぞのアクセスを蚱可しおもよい。 サヌバは十分な認蚌が行われるずサヌビス定矩内のほずんどの特性ぞのアクセスを蚱可しおもよいが同じサヌビス定矩内の他の特性ぞのアクセスを制限しおもよい。これは、珟圚有効になっおいる認蚌芁件よりも匷い認蚌芁件を必芁ずする特性があるために生じるこずがある。 サヌバがあるサヌビス定矩内の特性ぞのアクセスのためにクラむアントを認蚌するずサヌバは他のサヌビス定矩内の特性ぞのアクセスを自動的に蚱可しおもよい。

8.2 認蚌芁件

GATTプロファむルにおける認可は各特性に独立しお適甚される。承認芁件はこのプロファむル関連する䞊䜍局仕様で芏定されおいおもよいし別段の芏定がない堎合は実装固有のものである。 GATTプロファむルは特性が読み曞きされる前に認可を必芁ずする可胜性のある情報にアクセスするために䜿甚するこずができる。 そのような芁求が認可されおいないサヌビス定矩に含たれる特性に察しお発行された堎合レスポンダは゚ラヌコヌドをInsufficient Authorizationに蚭定した゚ラヌ応答を送信しなければならない。 サヌバが䞀぀のグルヌプ又はサヌビス定矩内の特性ぞのアクセスをクラむアントに蚱可するずサヌバは他のサヌビス定矩内の特性ぞのアクセスを自動的に蚱可しおもよい。