337行目: 337行目:
特定のBluetoothデバイスが提供するサービスを探索するプロセスである。<br>
特定のBluetoothデバイスが提供するサービスを探索するプロセスである。<br>
<br>
<br>
==== GATT階層構造 ====
BLEでは、GATT (Generic Attribute Profile) という階層構造を持つ。<br>
BLEでは、GATT (Generic Attribute Profile) という階層構造を持つ。<br>
Classic Bluetoothとは異なり、キャラクタリスティックとディスクリプタの概念が追加されている。<br>
<br>
* サービス
* サービス
*: デバイスの機能をグループ化 (例: 心拍計測、温度センサ等)
*: デバイスの機能をグループ化 (例: 心拍計測、温度センサ等)
367行目: 370行目:
UUIDは16-bit (標準) または 128-bit (カスタム) である。<br>
UUIDは16-bit (標準) または 128-bit (カスタム) である。<br>
<br>
<br>
# BLEサービスディスカバリの手順
==== BLEサービスディスカバリの手順 ====
# GAP (Generic Access Profile) によるデバイススキャン
1. GAP (Generic Access Profile) によるデバイススキャン
# デバイスへの接続
2. デバイスへの接続
# GATTサービスの列挙
3. GATTサービスの列挙
# 各サービス内のキャラクタリスティック探索
4. 各サービス内のキャラクタリスティック探索
# 必要に応じてディスクリプタ探索
5. 必要に応じてディスクリプタ探索
<br>
<br>
BLEでは、<code>QLowEnergyService</code>クラスでより複雑なサービス階層を管理する。<br>
Qtでは、<code>QLowEnergyService</code>クラスを使用して、BLEの複雑なサービス階層を管理する。<br>
キャラクタリスティックとディスクリプタの概念が追加されている。<br>
<br>
<br>
Classic Bluetoothとの違いを以下に示す。<br>
Classic Bluetoothとの違いを以下に示す。<br>
* QLowEnergyControllerクラスを使用
* <code>QLowEnergyController::connectToDevice</code>メソッドで接続する。
* connectToDeviceメソッドで接続する
* <code>QLowEnergyController::discoveryFinished</code>シグナルで探索完了を検知する。
* discoveryFinishedシグナルで探索完了を検知する
* <code>QLowEnergyController::createServiceObject</code>メソッドを使用して、サービスオブジェクトを生成する。
* createServiceObjectメソッドを使用して、サービスオブジェクトを生成する
<br>
<br>
==== 使用例 ====
==== 使用例 ====