Silicon Labs UG118:Bluetooth® Profile Toolkit 開発者ガイド, UG118, UG118:Blue Gecko Bluetooth® Profile Toolkit 開発者ガイド ユーザーガイド

  • こんにちは!Silicon LabsのBlue Gecko Bluetooth Profile Toolkit開発者ガイドについてご質問にお答えします。このガイドでは、XML構文を用いたGATTデータベースの構築方法や、Bluetoothサービスと特性の定義、アクセスとセキュリティプロパティの設定方法などを解説しています。どのような点にご不明な点がありましたら、お気軽にご質問ください!
  • Profile Toolkitとは何ですか?
    このガイドで説明されている内容は?
    このガイドに含まれる例とは?
    GATTデータベースの制限事項は?
UG118Blue Gecko Bluetooth
®
Profile
Toolkit
開発者ガイド
Bluetooth GATT のサービスと特性は、Bluetooth データ交換の基盤です。これらを使用し
て、心拍数モニタなどのデバイスによって表示されるデータの構造、アクセス・タイプ、
およびセキュリティ・プロパティを記述します。Bluetooth のサービスと特性は、明確に
定義され構造化された形式を採用しており、XML マークアップ言語を使用して簡単に記
述できます。
Profile Toolkit は、Bluetooth サービスと特性を記述するための XML ベースのマークアッ
プ言語です。GATT データベースとも呼ばれ、人間とマシンが簡単に判読できる形式のマ
ークアップ言語です。このガイドでは、Profile Toolkit
で使用される XML 構文について順
を追って説明するとともに、独自の Bluetooth サービスと特性を簡単に記述する方法、
クセスおよびセキュリティのプロパティを構成する方法、およびファームウェアの一部と
して GATT データベースを含める方法について説明します。
このガイドには実用的な例も記載されており、標準化された Bluetooth およびベンダー固
有の独自サービスの使用を紹介しています。これらの例は、独自の開発を開始する際に活
用できます。
要点
Bluetooth GATT のプロファイル、サービ
ス、特性、
および属性プロトコルを理解す
Profile Toolkit を使用して GATT データベ
ースを構築する
silabs.com | Building a more connected world. Rev. 2.1
1 プロファイル、サービス、特性、および属性プロトコルを理解する
このセクションでは、Bluetooth のプロファイル、サービス、
および特性についての基本的な説明と、GATT サーバとクライアント間で
のデータ交換で属性プロトコルを使用する方法についても説明します。これらのテーマの詳細を参照できるリンクも記載されていま
す。
1.1 GATT ベースの Bluetooth プロファイルおよびサービス
Bluetooth プロファイルは、データを交換する構造を指定します。プロファイルは、プロファイルで使用されるサービスや特性などの
要素を定義しますが、セキュリティおよび接続確立パラメータの定義を含む場合もあります。一般的に、プロファイルは、心拍数や鳴
動のモニタリングなど、高水準の使用事例を実現するために必要な 1 つまたは複数のサービスで構成されます。標準化されたプロファ
イルにより、デバイスおよびソフトウェアのベンダーは相互運用可能なデバイスやアプリケーションを構築できます。
標準化された Bluetooth SIG プロファイルは以下のウェブサイトでご覧いただけます。
https://developer.bluetooth.org/gatt/profiles/Pages/ProfilesHome.aspx
1.2 サービス
サービスは、完全な使用事例ではなく、バッテリのモニタリングや温度データなど、デバイスの特定機能を実現するために使用される
1 つまたは複数の特性で構成されたデータの集合体です。
標準化された Bluetooth SIG サービスの仕様は以下のウェブサイトでご覧いただけます。
https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx
1.3 特性
特性は、データの公開/交換や情報の制御を行うためにサービスで使用される値です。特性には、明確に定義された規定の形式がありま
す。値へのアクセス手段、満たす必要があるセキュリティ要件、オプションで特性の値を表示または解釈する方法についての情報も含
まれます。特性には、値の記述、または特性データの表示/通知の許可の構成の記述を行う記述子が含まれている場合もあります。
標準化された Bluetooth SIG 特性は以下のウェブサイトでご覧いただけます。
https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicsHome.aspx
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
プロファイル、サービス、特性、および属性プロトコルを理解する
silabs.com | Building a more connected world. Rev. 2.1 | 2
1.4 属性プロトコル
属性プロトコルは、GATT サーバと GATT クライアント間のデータ交換を可能にします。このプロトコルは、2 つの GATT パーティ間
でデータのクエリ、書き込み、表示、通知を行う方法、および情報の制御方法といった一連の操作も提供します。
GATT server
(Heart Rate profile)
GAP service
UUID: 0x1800
Device Information
service
UUID: 0x180A
HR measurement
Characteristic
UUID: 0x2A37
Body Sensor
Location
Characteristic
UUID: 0x2A38
Declaration
(notify property, no
security
requirements)
Characteristic
(2-6B of data
exposing HR
reading)
Descriptors
(enable/disable
notifications)
GATT client
Attribute protocol
Operations:
Read
Write
Notify
Indicate
Heart Rate Service
UUID: 0x180D
1.1. プロファイル、サービス、および特性の関係
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
プロファイル、サービス、特性、および属性プロトコルを理解する
silabs.com | Building a more connected world. Rev. 2.1 | 3
1.2. 属性の読み取り操作
1.3. 属性の書き込み操作
1.4. 属性の書き込み操作(応答なし)
1.5. 属性の表示操作
1.6. 属性の通知操作
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
プロファイル、サービス、特性、および属性プロトコルを理解する
silabs.com | Building a more connected world. Rev. 2.1 | 4
2 Profile Toolkit を使用して GATT データベースを構築する
本書のこのセクションでは、Blue Gecko Bluetooth Profile Toolkit で使用される XML 構文を説明し、Bluetooth サービスと特性を構築す
る際に使用できるさまざまなオプションについて順を追って説明します。
いくつかの実用的な GATT データベースの例も示します。
2.1 一般的な制限
以下の表に、Blue Gecko デバイスでサポートされている GATT データベースの制限を示します。
項目 制限 注記
最大特性数 無制限ですが、実際にはデータ
ベース内の属性の総数により制
限されます。
const="true" プロパティを持たないすべての特
性がカウントされます。
type="user" 特性の最大文字数 512 バイト これらの特性はアプリケーションによって処理
されるため、アプリケーションで使用できる
RAM の容量によってこの値が制限されます。
type="user を使用しない場合、特性の最大文字
数は 255 バイトになります。
Note: Bluetooth 仕様により制限されます
const="true" 特性の最大文字数 255 バイト 使用されるデバイスで使用可能なフラッシュの
空き領域によって、この値が定義されます。
const="false" 特性の最大文字数 255 バイト const="false" プロパティを持つすべての特性
に、特性値を保存するため、Bluetooth デバイス
RAM が割り当てられます。
単一の GATT データベースの最大属性数 255 通常、1 つの特性で 3 5 の属性が使用されま
す。
通知可能な特性の最大数 64
機能の最大数 16 機能のロジック状態によって、各サービスと特性
の視認性が決定されます。
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 5
2.2 <gatt>
GATT データベースは、サービスおよび特性とともに XML 属性 <gatt> 内に記述する必要があります。
Parameter Description
out Filename for the GATT C source file
Value: Any UTF-8 string. Must be valid as a filename and end
with '.c'
Default: gatt_db.c
header Filename for the GATT C header file
Value: Any UTF-8 string. Must be valid as a filename and end
with '.h'
Default:
gatt_db.h
db_name GATT database structure name and the prefix for data structures
in the GATT C source file.
Value:
Any UTF-8 string; must be valid in C.
Default: bg_gattdb_data
name Free text, not used by the database compiler
Value:
Any UTF-8 string
Default:
Nothing
prefix Prefix to add to each 'id' name for defining the handle macro that
can be referenced from the C application.
Value: Any UTF-8 string. Must be valid in C.
Default: Nothing
E.g. If prefix="my_gatt_" and id="temp_measurement" for a
particular characteristic, then the following will be generated in the
GATT C header file:
#define my_gatt_temp_measurement X (where X is the handle
number for the temp_measurement characteristic)
generic_attribute_service If it is set to true, Generic Attribute service and its
service_changed characteristic will be added in the beginning of
the database. The Bluetooth stack takes care of database
structure change detection and will send service_changed
notifications to clients when a change is detected. In addition, this
will enable the GATT-caching feature introduced in Bluetooth 5.1.
Values:
true: Generic Attribute service is automatically added to the
GATT database and GATT caching is enabled.
false: Generic Attribute service is not automatically added to the
GATT database and GATT caching is disabled.
Default: false
gatt_caching The GATT caching feature is enabled by default if
generic_attribute_service is set to true. However, it can be
disabled by setting this attribute to false.
GATT データベースの定義。
<?xml version="1.0" encoding="UTF-8" ?> <gatt out="my_gatt_db.c" header="my_gatt_db.h" db_name="my_gatt_db_" prefix="my_gatt_"
generic_attribute_service="true" name="My GATT database"> … </gatt>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 6
2.3 <capabilities_declare>
GATT データベースのサービスと特性は、機能を使用して表示または非表示にできます。機能は
<capability> 要素で宣言する必要が
あり、GATT データベースのすべての機能は、<capability> 要素のシーケンスで構成される <capabilities_declare> 要素で最初に宣言さ
れる必要があります。データベース内の機能の最大数は 16 です。
この新しい機能は、レガシ GATT XML データベースSilicon Labs Bluetooth スタックバージョン 2.4.x 以前)には影響しません。こ
れらのデータベースでは機能が明示的に宣言されないため、すべてのサービスと特性がリモート GATT クライアントに表示されたまま
になります。
Parameter Description
- -
:機能の宣言
<capabilities_declare> … </capabilities_declare>
2.3.1 <capability>
各機能は、<capability> 要素を使用して <capabilities_declare> 要素内で個別に宣言される必要があります。
<capability> 要素には
"enable" という名前の 1 つの属性があり、データベースの初期化時に機能のデフォルトの状態を示します。
<capability> 要素のテキスト値は、生成されたデータベースの C ヘッダの対象機能に対する識別子名になりますしたがって、この値
C で有効である必要があります。
機能の継承
サービスと特性によって、使用する機能を宣言できます。機能が宣言されない場合は、次の継承規則が適用されます。
1. 機能を宣言しないサービスには、<capabilities_declare> 要素のすべての機能が付与される。
2. 機能を宣言しない特性には、その特性が属するサービスのすべての機能が付与される。サービスによって <capabilities_declare>
の機能のサブセットが宣言された場合は、そのサブセットのみが特性によって継承されます。
3. 特性のすべての属性が特性の機能を継承します。
可視性
機能を有効化または無効化して、次のロジックに従って GATT クライアントに対してサービスと特性を表示または非表示にできます。
1. 機能の少なくとも 1 有効になっている場合、サービスとそのすべての特性は表示に設定されます。
2. 機能のすべて無効になっている場合、サービスとそのすべての特性は非表示に設定されます。
3. 機能の少なくとも 1 有効になっている場合、特性とそのすべての属性は表示に設定されます。
4. 機能のすべて無効になっている場合、特性とそのすべての属性は非表示に設定されます。
Parameter Description
enable Sets the default state of a capability at database initialization.
Values:
true: Capability is enabled.
false: Capability is disabled.
Default: true
:機能の宣言
<capabilities_declare> <!-- This capability is enabled by default and the identifier is cap_light --> <capability
enable="true">cap_light</capability> <!--
This capability is disabled by default and the identifier is cap_color --> <capability
enable="false">cap_color</capability> </capabilities_declare>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 7
2.4 <service>
GATT サービスの定義は、XML 属性 <service> およびそのパラメータによって行われます。
以下の表に、関連する値を定義するために使用できるパラメータを示します。
Parameter Description
uuid Universally Unique Identifier. The UUID uniquely identifies a service. 16-bit values are used for the
services defined by the Bluetooth SIG and 128-bit UUIDs can be used for vendor specific
implementations.
Range:
0x0000 0xFFFF: Reserved for Bluetooth SIG standardized services
0x00000000-0000-0000-0000-000000000000 - 0xFFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF:
Reserved for vendor specific services.
id The ID is used to identify a service within the service database and can be used as a reference from
other services (include statement). Typically this does not need to be used.
Value:
Any UTF-8 string
type The type field defines whether the service is a primary or a secondary service. Typically this does not
need to be used.
Values:
primary: a primary service
secondary: a secondary service
Default: primary
advertise This field defines if the service UUID is included in the advertisement data.
The advertisement data can contain up to 13 16-bity UUIDs or one (1) 128-but UUID.
Values:
true: UUID included in advertisement data
false: UUID not included in advertisement data
Default: false
Note: You can override the advertisement data with the GAP API, in which case this is not valid.
:汎用アクセス・プロファイル (GAP) サービスの定義。
<!-- Generic Access Service -->
<service uuid="1800">
</service>
:ベンダー固有サービスの定義。
<!-- A vendor specific service -->
<service uuid="25be6a60-2040-11e5-bd86-0002a5d5c51b">
</service>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 8
UUID を持つ Heart Rate サービスはアドバタイズ・データおよび ID hrs に含まれます。
<!-- Heart Rate Service -->
<service uuid="180D" id="hrs" advertise=”true”>
</service>
Note: http://www.itu.int/en/ITU-T/asn1/Pages/UUID/uuids.aspx で独自の 128 ビット UUID を生成できます。
2.4.1 <capabilities>
サービスは、<capabilities> 要素を使用して機能を宣言できます。要素は、<capability> 要素のシーケンスで構成されます。この要素の
識別子は <capabilities_declare> 要素にも含める必要があります。属性 "enable" はこのコンテキストで宣言された機能に影響を与えな
いため、除外できます。
サービスが機能を宣言しない場合は、
継承規則に従って <capabilities_declare> すべての機能が付与されます。
サービスとそのすべての特性は、機能の少なくとも 1 有効になっている場合は表示に設定され、機能のすべて無効になっている
場合は非表示に設定されます。
Parameter Description
- -
:機能の宣言
<capabilities> <capability>cap_light</capability> <capability>cap_color</capability> </capabilities>
2.4.2 <description>
XML 要素 <description> は情報提供目的(コメント)で使用でき、実際の GATT データベースには使用できません。
2.4.3 <include>
サービスは、XML 属性 <include> を使用して、別のサービスに含めることができます。
Parameter Description
id ID of the included service
Value:
ID of another service
GAP サービス内に Heart Rate サービスを含める。
<!-- Generic Access Service -->
<service uuid="1800">
<!-- Include HR Service -->
<include id="hrs” />
</service>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 9
2.5 <characteristic>
サービスによって公開されるすべての特性は、XML 属性 <characteristic> およびそのパラメータで定義されます。これらは、
<service> XML 属性タグ内で使用する必要があります。
以下の表に、関連する値を定義するために使用できるパラメータを示します。
Parameter Description
uuid Universally Unique Identifier. The UUID uniquely identifies a characteristic.
16-bit values are used for the services defined by the Bluetooth SIG and 128-bit UUIDs can be used
for vendor specific implementations.
Range:
0x0000 0xFFFF: Reserved for Bluetooth SIG standardized characteristics.
0x00000000-0000-0000-0000-000000000000 to 0xFFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF :
Reserved for vendor specific characteristics.
id The ID is used to identify a characteristic. The ID is used within a C application to read and write
characteristic values or to detect if notifications or indications are enabled or disabled for a specific
characteristic.
When the project is built the generated GATT C header file contains a macro with the characteristic
'id' and corresponding handle value.
Value:
Any UTF-8 string
GAP サービスにデバイス名特性を追加する。
<!-- Generic Access Service -->
<service uuid="1800">
<!-- Device name -->
<characteristic uuid="2a00">
</characteristic>
</service>
ID を持つベンダー固有のサービスにベンダー固有の特性を追加する。
<!-- A vendor specific service -->
<service uuid="25be6a60-2040-11e5-bd86-0002a5d5c51b">
<!-- My proprietary data -->
<characteristic uuid="59cd69c0-2043-11e5-a717-0002a5d5c51b" id="mydata”>
</characteristic>
</service>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 10
2.5.1 <capabilities>
特性は、<capabilities> 要素を使用して機能を宣言できます。要素は、<capability> 要素のシーケンスで構成されます。この要素の識別
子は、親サービスでも
宣言される(または完全に継承される)必要があります。属性 "enable" はこのコンテキストで宣言された機能に
影響を与えないため、除外できます。
特性が機能を宣言しない場合は、継承規則に従って、その特性が属するサービスすべての機能が付与されます。特性のすべての属性
が特性の機能を継承します。
特性とそのすべての属性は、機能の少なくとも 1 有効になっている場合は表示に設定され、機能のすべて無効になっている場合
非表示に設定されます。
Parameter Description
- -
:機能の宣言
<capabilities> <capability>cap_light</capability> <capability>cap_color</capability> </capabilities>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して
GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 11
2.5.2 <properties>
特性のアクセスおよびセキュリティ・プロパティは、XML 属性 <properties> およびそのパラメータで定義されます。これらは、
<characteristic> XML
属性タグ内で使用する必要があります。特性は、同時に複数のプロパティを持つことができます。
以下の表に、関連する値を定義するために使用できるパラメータを示します。
Parameter Description
read Characteristic can be read by a remote device.
Values:
true: Characteristic can be read
false: Characteristic cannot be read
Default: false
const Characteristic has a constant value, which cannot be modified after programming.
The benefit of constant values is that no RAM is allocated for them leaving more RAM to the
application.
Value:
true: Characteristic value is constant
false: Characteristic value is not constant
Default: false
write Characteristic can be written by a remote device
Values:
true: Characteristic can be written
false: Characteristic cannot be written
Default: false
write_no_response Characteristic can be written by a remote device. Write without response is not acknowledged over
the Attribute Protocol.
Values:
true: Characteristic can be written
false: Characteristic cannot be written
Default: false
notify Characteristic has the notify property and characteristic value changes are notified over the Attribute
Protocol. Notifications are not acknowledged over the Attribute Protocol.
Values:
true: Characteristic has notify property.
false: Characteristic does not have notify property.
Default: false
indicate Characteristic has the indicate property and characteristic value changes are indicated over the
Attribute Protocol. Indications are acknowledged over the Attribute Protocol.
Values:
true: Characteristic has indicate property.
false: Characteristic does not have indicate property.
Default: false
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 12
Parameter Description
authenticated_read Reading the characteristic value requires an authentication. In order to read the characteristic with
this property the remote device has to be bonded using MITM protection and the connection must
be also encrypted.
Values:
true: Authentication is required
false: Authentication is not required
Default: false
encrypted_read Reading the characteristic value requires an encrypted link. With iOS 9.1 and newer devices must
also be bonded at least with Just Works pairing.
Values:
true: Encryption is required
false: Encryption is not required
Default: false
bonded_read Reading the characteristic value requires an encrypted link. Devices must also be bonded at least
with Just Works pairing.
Values:
true: Bonding and encryption are required
false: Bonding is not required
Default: false
authenticated_write Writing the characteristic value requires an authentication. In order to write the characteristic with
this property the remote device has to be bonded using MITM protection and the connection must
be also encrypted.
Values:
true: Authentication is required
false: Authentication is not required
Default: false
encrypted_write Writing the characteristic value requires an encrypted link. With iOS 9.1 and newer devices must
also be bonded at least with Just Works pairing.
Values:
true: Encryption is required
false: Encryption is not required
Default: false
bonded_write Writing the characteristic value requires an encrypted link. Devices must also be bonded at least
with Just Works pairing.
Values:
true: Bonding and encryption are required
false: Bonding is not required
Default: false
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 13
Parameter Description
reliable_write Allows using reliable write procedure to modify attribute, this is just a hint to GATT client. The
Bluetooth stack always allows using reliable writes to be used to modify attributes.
Values:
true: Reliable write enabled
false: Reliable write disabled
Default: false
authenticated_notify Both enabling notifications/indications on this characteristic and sending out notifications/indications
on this characteristic require authentication. In order to enable/disable notifications/indications and
to be able to receive notifications/indications the remote device has to be bonded using MITM
protection and the connection must be also encrypted. Use this property along with the notify or
indicate property.
Values:
true: Authentication is required
false: Authentication is not required
Default: false
encrypted_notify Both enabling notifications/indications on this characteristic and sending out notifications/indications
on this characteristic require an encrypted link. With iOS 9.1 and newer, devices must also be
bonded at least with Just Works pairing. Use this property along with the notify or indicate
property.
Values:
true: Encryption is required
false: Encryption is not required
Default: false
bonded_notify Both enabling notifications/indications on this characteristic and sending out notifications/indications
on this characteristic require an encrypted link. Devices must also be bonded at least with Just
Works pairing. Use this property along with the notify or indicate property.
Values:
true: Encryption is required
false: Encryption is not required
Default: false
const および read プロパティを持つデバイス名特性。
<!-- Device Name-->
<characteristic uuid="2a00">
<properties read="true" const="true" />
</characteristic>
:リモート・デバイスによって値の変更を可能にする read および write プロパティを持つデバイス名特性。
<!-- Device Name-->
<characteristic uuid="2a00">
<properties read="true" write="true" />
</characteristic>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 14
notify プロパティを持つ心拍数測定特性。
<!-- Heart Rate Measurement -->
<characteristic uuid="180D">
<properties notify="true" />
</characteristic>
encrypted read プロパティを持つ特性。
<!-- Device Name-->
<characteristic uuid="1234">
<properties read="true" encrypted_read="true" />
</characteristic>
authenticated write プロパティを持つ特性。
<!-- Device Name-->
<characteristic uuid="1234">
<properties write="true" authenticated_write="true" />
</characteristic>
authenticated indicate プロパティを持つ特性。
<!-- Descriptor value changed -->
<characteristic uuid="2A7D">
<properties indicate="true" authenticated_notify="true" />
</characteristic>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 15
2.5.3 <value>
特性のデータ・
タイプと長さは、XML 属性 <value> およびそのパラメータで定義されます。これらは、<characteristic> XML 属性タ
グ内で使用する必要があります。
以下の表に、関連する値を定義するために使用できるパラメータを示します。
Parameter Description
length Defines a fixed length for the characteristic or the maximum length if variable_length is true. If
length is not defined and there is a value (e.g. data exists inside <value></value>), then the value
length is used to define the length.
If both length and value are defined, then the following rules apply:
1. If variable_length
is false and length is bigger than the value's length, then the value will be
padded with 0's at the end to match the attribute's length.
2. If length is smaller than the value's length, then the value will be clipped to match length,
regardless of whether variable_length is true or false.
Range:
0 255: Length in bytes if type is 'hex' or 'utf-8'
0 512: Length in bytes if type is 'user'
Default: 0
variable_length Defines that the value is of variable length. The maximum length must also be defined with the
length
attribute or by defining a value. If both length
and value are defined, then the rules decribed
in length apply.
Values:
true: Value is of variable length
false: Value has a fixed length
Default: false
type Defines the data type.
Values:
hex: Value type is hex
utf-8: Value is a string
user: When the characteristic type is marked as type="user", the application is responsible for
initializing the characteristic value and also providing it, for example, when read operation occurs.
The Bluetooth stack does not initialize the value or automatically provide the value when it is being
read. When this is set, the Bluetooth stack generates gatt_server_user_read_request or
gatt_server_user_write_request, which must be handled by the application.
Default: utf-8
notify プロパティと 2 バイトの固定長を持つ心拍数測定特性。
<!-- Heart Rate Measurement -->
<characteristic uuid="180D">
<properties notify="true" />
<value length="2" type="hex" />
</characteristic>
:最大長が 20 バイトの可変長のベンダー固有特性。
<!-- My proprietary data -->
<characteristic uuid="59cd69c0-2043-11e5-a717-0002a5d5c51b" id="mydata”>
<properties notify="true" />
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 16
<value variable_length="true" length="20" type="hex" />
</characteristic>
:特性の値と長さは、<value> タグ内に実際の値を入力して定義することもできます。
<!-- Device name -->
<characteristic uuid="2a00">
<properties read="true" const="true" />
<value>Blue Gecko BGM111</value>
</characteristic>
上記の例の場合、値は Blue Gecko BGM111 で、長さは 17 バイトです。
:値の長さより大きい長さで length value の両方を定義する場合。
<!-- Device name -->
<characteristic uuid="2a00">
<properties read="true" />
<value type="hex" length="4">0102</value>
</characteristic>
上記の例では、length が値の長さより大きく、value 0 が埋め込まれた状態になるため、値は 01020000 になります。
:値の長さより小さい長さで length value の両方を定義する場合。
<!-- Device name -->
<characteristic uuid="2a00">
<properties read="true" />
<value type="hex" length="2">01020304</value>
</characteristic>
上記の例では、length
が値の長さより小さく、その結果、値が length と一致するようにクリップされるため、値は 0102 になり
ます。
2.5.4 <descriptor>
XML 要素 <descriptor> は、汎用特性記述子を定義するために使用できます。
記述子のプロパティは <properties> 要素によって定義され、読み取りアクセスおよび/または書き込みアクセスのみが許可されます。値
は特性値の場合と同じように、<value> 要素によって定義されます。
:タイプ UUID 2908 の特性記述子の追加。
<characteristic uuid="2a4d" id="hid_input">
<properties notify="true" read="true" />
<value length="3" />
<descriptor uuid="2908">
<properties read="true" const="true" />
<value type="hex">0001</value>
</descriptor>
</characteristic>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 17
2.5.5 <description>
特性ユーザ説明値は、XML 属性 <description> で定義されます
。これらは<characteristic> XML 属性タグ内で使用する必要がありま
す。
特性のユーザ説明はオプション値です。これはリモート・デバイスによって使用され、これを使用して、ユーザに分かりやすい特性の
説明をアプリケーションのユーザ・インターフェイスに表示したりすることができます。
:定数文字列「心拍数測定」
<characteristic uuid="2a37">
<properties notify="true" />
<value length="2" />
<description>Heart Rate Measurement</description>
</characteristic>
プロパティ要素を使用して、属性のリモート変更を許可できます。
例:リモート読み取りを許可するが、書き込みには結合が必要
<characteristic uuid="2a37"> <properties notify="true" /> <value length="2" /> <description> <properties read="true" write="true"
authenticated_write="true" /> <value variable_length="true" length="20" /> </description> </characteristic>
Note: 説明が書き込み可能な場合、GATT パーサは、Bluetooth 準拠に設定された writable_auxiliaries ビットを使用して拡張プロパティ
属性を自動的に追加します。
2.5.6 <agggregate>
XML 要素 <aggregate> を使用すると、ID を属性ハンドルに自動的に変換することにより、集計された特性形式記述子を作成できます。
属性 ID は、特性表示形式記述子を参照する必要があります。
例:特性集計を追加
<characteristic uuid="da8a80c0-829d-498f-b70b-e85c95e0f839"> <properties notify="true" read="true"/> <value length="10" />
<aggregate> <attribute id="format1" /> <attribute id="format2" /> </aggregate> </characteristic>
2.6 GATT の例
例:定数としてデバイス名特性および外観特性、read プロパティを持つ完全な GAP サービス。
<?xml version="1.0" encoding="UTF-8" ?>
<gatt>
<!-- Generic Access Service -->
<service uuid="1800">
<!-- Device name -->
<characteristic uuid="2a00">
<properties read="true" const="true" />
<value>Blue Gecko</value>
</characteristic>
<!-- Appearances -->
<characteristic uuid="2a01">
<properties read="true" const="true" />
<value type="hex">0768</value>
</characteristic>
</service>
</gatt>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して
GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 18
例:完全なデバイス情報、即時の通知、リンク・ロス・サービス
<?xml version="1.0" encoding="UTF-8" ?>
<gatt>
<!-- Device Information Service -->
<service uuid="180A">
<!-- Manufacturer name string -->
<characteristic uuid="2A29">
<properties read="true" const="true" />
<value>Silicon Labs</value>
</characteristic>
<!-- Model number string -->
<characteristic uuid="2A24">
<properties read="true" const="true" />
<value>BGM111</value>
</characteristic>
<!-- Serial number string -->
<characteristic uuid="2A23">
<properties read="true" const="true" />
<value type="hex">000780000047</value>
</characteristic>
</service>
<!-- Link Loss Service -->
<service uuid="1803" advertise="true" >
<!-- Alert Level -->
<characteristic uuid="2a06" id="xgatt_lloss">
<properties read="true" write="true" />
<value length="1" />
</characteristic>
</service>
<!-- Immediate Alert Service -->
<service uuid="1802" advertise="true" >
<!-- Alert Level -->
<characteristic uuid="2a06" id="xgatt_alert">
<properties write_no_response="true" />
<value length="1" />
</characteristic>
</service>
</gatt>
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 19
例:機能を持つ GATT データベース
<gatt db_name="light_gattdb" out="gatt_db.c" header="gatt_db.h" generic_attribute_service="true">
<capabilities_declare>
<capability enable="true">cap_light</capability> <!-- this capability is enabled by default -->
<capability enable="false">cap_color</capability> <!-- this capability is disabled by default -->
</capabilities_declare>
<service uuid="ed15dbd1-7ed7-43ce-8746-26d31c0412a2" id="light_service">
<capabilities>
<capability>cap_light</capability>
<capability>cap_color</capability>
</capabilities>
<characteristic uuid="1c8834b9-a69d-427b-b35f-308ba7b7a1d5" id="light_control">
<capabilities>
<capability>cap_light</capability>
</capabilities>
<properties read="true" write="true" />
<value type="user"></value>
</characteristic>
<characteristic uuid="6d2dede5-91f8-4dd3-8276-dbd967a5ac39" id="color_control"> <!-- this characteristic is invisible to
remotes by default -->
<capabilities>
<capability>cap_color</capability>
</capabilities>
<properties read="true" write="true" />
<value type="user"></value>
</characteristic>
</service>
</gatt>
機能 cap_light および cap_color が有効になっている場合は、light_service 全体が表示に設定されます
機能 cap_light が有効になっている場合は、特性 light_control が非表示に設定されます
機能 cap_color が有効になっている場合は、特性 color_control が非表示に設定されます
UG118Blue Gecko Bluetooth
®
Profile Toolkit 開発者ガイド
Profile Toolkit を使用して GATT データベースを構築する
silabs.com | Building a more connected world. Rev. 2.1 | 20
/