Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

HCI の要件

ホスト コントローラ インターフェース(HCI)は、Bluetooth コントローラとの通信に使用されます。

このドキュメントでは、Bluetooth(BT)および Bluetooth Low Energy(BLE)の HCI の要件を示します。その目的は、ホスト BT スタックのベンダーおよび BT コントローラのベンダーが、ここに示すプラットフォーム要件を遵守することにより、以下で説明する機能セットを使用できるようにすることです。

このドキュメントにおける「仕様」とは、Bluetooth コア仕様 5.2 を指します。Bluetooth コア仕様 5.2 は、Bluetooth SIG のウェブサイトで他の採択済みドキュメントとともに入手できます。

設計全般の概要

チップ機能と構成

オープン プラットフォームである Android では、ソフトウェア リリース、OEM、ベンダー、プラットフォームといった構成とチップ機能との間にさまざまな組み合わせが存在します。

多様な環境と移行を管理することを目的として、このドキュメントでは、BT コントローラの機能(標準的な Bluetooth コア仕様 5.2 の範囲を超える機能を含む)を公開するという設計思想について説明しています。ホスト BT スタックは、これらの機能を使用して有効にする機能を決定できます。

オープン標準のサポート

Android では、Bluetooth 仕様に採択されたオープン標準をサポートすることを目標の一つにしています。以下に説明する機能が将来の Bluetooth 仕様で標準 HCI 方式として利用可能になった場合は、Google ではその方式をデフォルトにする予定です。

ベンダー固有の機能

ベンダー固有のコマンド: LE_Get_Vendor_Capabilities_Command

オペコード コマンド フィールド(OCF): 0x153

コマンド パラメータ サイズ 目的
なし コマンド パラメータ リストは空

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
max_advt_instances
(サポート終了)
1 オクテット サポートされているアドバタイズメント インスタンスの数。

v0.98 より後で予約済み。
このパラメータは、BT 仕様バージョン 5.0 以降で利用可能な LE 拡張アドバタイジングを優先するため、Google 機能仕様 v0.98 以降ではサポートされなくなりました。
offloaded_resolution_of_private-address
(サポート終了)
1 オクテット BT チップの RPA 機能。
チップでサポートされている場合は、ホストによる有効化が必要です。
0 = 機能なし
1 = 機能あり

v0.98 より後で予約済み。
このパラメータは、BT 仕様バージョン 4.2 以降で利用可能なプライバシー機能を優先するため、Google 機能仕様 v0.98 以降ではサポートされなくなりました。
total_scan_results_storage 2 オクテット スキャン結果用ストレージ容量(バイト単位)
max_irk_list_sz 1 オクテット ファームウェアでサポートされている IRK エントリの数
filtering_support 1 オクテット コントローラによるフィルタリングのサポート
0=サポートなし
1=サポートあり
max_filter 1 オクテット サポートされているフィルタの数
activity_energy_info_support 1 オクテット 動作と電力に関する報告のサポート
0=サポートなし
1=サポートあり
version_supported 2 オクテット サポートされている Google 機能仕様のバージョンを指定
バイト [0] = メジャー バージョン
バイト [1] = マイナー バージョン

v1.00
バイト [0] = 0x01
バイト [1] = 0x00
total_num_of_advt_tracked 2 オクテット OnLostOnFound のためにトラッキングされるアドバタイザーの総数
extended_scan_support 1 オクテット 拡張スキャン ウィンドウと拡張スキャン間隔のサポート
debug_logging_supported 1 オクテット コントローラのバイナリ デバッグ情報をロギングする機能のサポート
LE_address_generation_offloading_support
(サポート終了)
1 オクテット 0 = サポート対象外
1 = サポート対象

v0.98 より後で予約済み。
このパラメータは、BT 仕様バージョン 4.2 以降で利用可能なプライバシー機能を優先するため、Google 機能仕様 v0.98 以降ではサポートされなくなりました。
A2DP_source_offload_capability_mask 4 オクテット サポートされているコーデック タイプのビットマスク
ビット 0 - SBC
ビット 1 - AAC
ビット 2 - APTX
ビット 3 - APTX HD
ビット 4 - LDAC
ビット 5~31 は予約済み
bluetooth_quality_report_support 1 オクテット Bluetooth 品質イベントの報告のサポート
0 = サポートなし
1 = サポートあり
dynamic_audio_buffer_support 4 オクテット Bluetooth コントローラでのダイナミック オーディオ バッファのサポート
サポートされているコーデック タイプのビットマスク
ビット 0 - SBC
ビット 1 - AAC
ビット 2 - APTX
ビット 3 - APTX HD
ビット 4 - LDAC
ビット 5~31 は予約済み

スキャン結果の一括処理

設計目標の一つに、ホストに対する Bluetooth LE スキャン応答イベント通知の配信方法を改善して、ホストの電力を節約することがあります。

コントローラからホスト アプリケーション プロセッサへの結果スキャン依頼の頻度を減らすことで、ホスト アプリケーション プロセッサではアイドル状態またはスリープ状態を長く保つことができます。その結果、ホストの消費電力を節約できます。LE_Get_Vendor_Capabilities_Command のリターン パラメータ total_scan_results_storage から、チップのスキャン結果用ストレージ容量がわかります。

この機能は、主に Bluetooth コントローラの LE スキャン結果ストレージ ファシリティを管理、設定するためのものです。このストレージは、後でホストに配信するために、中間的にアドバタイズメント データを一括処理し、コントローラで受信したデータとメタデータをスキャンする目的で使用されます。

ファームウェアでは、同時に使用可能な次の 2 種類の一括処理をサポートするものとします。

  • 短縮型。情報要素 {MAC、TX Power、RSSI、Timestamp} を含みます。
  • 完全型。情報要素 {MAC、TX Power、RSSI、Timestamp、Adv Data、Scan Response} を含みます。

LE_Batch_Scan_Command

OCF: 0x156

コマンド パラメータ サイズ 目的
Batch_Scan_opcode 1 オクテット 0x1 - 顧客固有の機能の有効化
0x2 - 一括スキャン ストレージ パラメータの設定
0x3 - 一括スキャン パラメータの設定
0x4 - 一括スキャン結果パラメータの読み取り

このコマンドに対してコマンド完了イベントが生成されます。 顧客固有の機能を有効にしてもスキャンは開始されません。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Batch_Scan_opcode 1 オクテット 0x1 - 顧客固有の機能の有効化
0x2 - 一括スキャン ストレージ パラメータの設定
0x3 - 一括スキャン パラメータの設定
0x4 - 一括スキャン結果パラメータの読み取り

LE_Batch_Scan_Command: 顧客固有の機能の有効化

サブ OCF: 0x01

サブコマンド パラメータ サイズ 目的
enable_customer_specific_feature_set 1 オクテット 0x01 - 一括スキャン機能の有効化
0x00 - 一括スキャン機能の無効化

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Batch_Scan_opcode 1 オクテット 0x1 - 顧客固有の機能の有効化
0x2 - 一括スキャン ストレージ パラメータの設定
0x3 - 一括スキャン パラメータの設定
0x4 - 一括スキャン結果パラメータの読み取り

LE_Batch_Scan_Command: 一括スキャン ストレージ パラメータ設定サブコマンド

サブ OCF: 0x02

サブコマンド パラメータ サイズ 目的
Batch_Scan_Full_Max 1 オクテット 完全型に割り当てられた最大ストレージ容量(%)
[範囲: 0~100]
Batch_Scan_Truncated_Max 1 オクテット 短縮型に割り当てられた最大ストレージ容量(%)
[範囲: 0~100]
Batch_Scan_Notify_Threshold 1 オクテット 個々のストレージ プールに設定する通知レベル(%)
[範囲: 0~100]
0 に設定すると、通知が無効になります。 ベンダー固有の HCI イベントが生成されます(ストレージしきい値違反サブイベント)

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Batch_scan_opcode 1 オクテット 0x02 [一括スキャン パラメータの設定]

LE_Batch_Scan_Command: 一括スキャン パラメータ設定サブコマンド

サブ OCF: 0x03

サブコマンド パラメータ サイズ 目的
Batch_Scan_Mode 1 オクテット 0x00 - 一括スキャンを無効化
0x01 - 短縮モードを有効化
0x02 - 完全モードを有効化
0x03 - 短縮モードと完全モードを有効化
Duty_cycle_scan_window 4 オクテット 一括スキャンのスキャン時間(スロット数)
Duty_cyle_scan_interval 4 オクテット 一括スキャンの間隔時間(スロット数)
own_address_type 1 オクテット 0x00 - デバイスのパブリック アドレス
0x01 - デバイスのランダム アドレス
Batch_scan_Discard_Rule 1 オクテット 0 - 最も古いアドバタイズメントを破棄
1 - 最も弱い RSSI のアドバタイズメントを破棄

このサブコマンドで有効化することにより一括スキャンが開始されます。短縮型スキャンでは、結果は短縮形式で保存されます。短縮型の一意のキー={BD_ADDR, scan_interval} です。つまり、スキャン間隔ごとに 1 つの BD_ADDR will しか記録されません。短縮モードで保持されるレコードは、{BD_ADDR, Tx Power, RSSI, Timestamp} です。

完全モードを有効にすると、アクティブ スキャンが使用され、スキャン応答が記録されます。完全型の一意のキー={MAC, Ad packet} で、スキャン間隔は関係ありません。完全モードで保持されるレコードは、{BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response} です。完全型で同じ AD パケットが複数のスキャン間隔にわたって認識された場合、記録されるのは 1 度のみです。一方、短縮モードでは、複数のスキャン間隔にわたって BA_ADDR を認識できる(スキャン間隔ごとに 1 回)ことが重要です。RSSI は、1 回のスキャン間隔内で重複する一意のアドバタイズメントの平均値です。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Batch_scan_opcode 1 オクテット 0x03 [一括スキャン パラメータの設定]

LE_Batch_Scan_Command: 一括スキャン結果読み取りサブコマンド

サブ OCF: 0x04

サブコマンド パラメータ サイズ 目的
Batch_Scan_Data_read 1 オクテット 0x01 - 短縮モードデータ
0x02 - 完全モードデータ

このコマンドに対してコマンド完了イベントが生成されます。 ホストからこのコマンドを発行した際、コントローラの結果全体が 1 つのコマンド完了イベントに収まらない場合があります。その場合は、コマンド完了イベントの結果でレコード数を示す値が 0(コントローラからホストに渡すレコードがこれ以上ない状態)になるまで、ホストからこのコマンドを繰り返し発行します。各コマンド完了イベントには、1 種類(完全型または短縮型)のデータのみについて、複数のレコードを含めることができます。

コントローラとホストの時刻基準は同期されていません。タイムスタンプの単位は 50 ミリ秒で、その値はホストから Read_Batch_Scan_Results_Sub_cmd が発行されたタイミングが基準となります。ファームウェアにおけるコマンド到着時刻を T_c、ファームウェアでタイムスタンプが取得された時刻を T_fw とすると、報告される時間は(T_cT_fw)になります。T_cT_fw はファームウェアの時間領域です。これにより、ホスト側でイベント発生時刻を計算できます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Batch_scan_opcode 1 オクテット 0x03 [一括スキャン パラメータの設定]
Batch_Scan_data_read 1 オクテット 形式(短縮型または完全型)
num_of_records 1 オクテット Batch_Scan_data_read のレコード数
format_of_data 変数 短縮モード:
Address[0]: 6 オクテット
Address_Type[0]: 1 オクテット
Tx_Pwr[0]: 1 オクテット
RSSI[0]: 1 オクテット
Timestamp[0]: 2 オクテット
[上記形式の複数レコード(num_of_records)]

完全モード:
Address[0]: 6 オクテット
Address_Type[0]: 1 オクテット
Tx_Pwr[0]: 1 オクテット
RSSI [0]: 1 オクテット
Timestamp[0]: 2 オクテット
Adv packet_len[0]: 1 オクテット
Adv_packet[0]: Adv_packet_len オクテット
Scan_data_resp_len[0]: 1 オクテット
Scan_data_resp[0]: Scan_data_resp オクテット
[上記形式の複数レコード(num_of_records)]

アドバタイジング パケット コンテンツ フィルタ

コントローラのアドバタイジング パケット コンテンツ フィルタ(APCF)の有効化、無効化、セットアップに使用されます。

LE_APCF_Command

OCF: 0x157

コマンド パラメータ サイズ 目的
APCF_opcode 1 オクテット 0x00 - APCF 有効
0x01 - APCF フィルタリング パラメータ設定
0x02 - APCF ブロードキャスターのアドレス
0x03 - APCF サービス UUID
0x04 - APCF サービス ソリシテーション UUID
0x05 - APCF ローカル名
0x06 - APCF メーカーデータ
0x07 - APCF サービスデータ

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット リターン ステータス
APCF_opcode 1 オクテット 0x00 - APCF 有効
0x01 - APCF フィルタリング パラメータ設定
0x02 - APCF ブロードキャスターのアドレス
0x03 - APCF サービス UUID
0x04 - APCF サービス ソリシテーション UUID
0x05 - APCF ローカル名
0x06 - APCF メーカーデータ
0x07 - APCF サービスデータ

LE_APCF_Command: Enable_sub_cmd

サブ OCF: 0x00

サブコマンド パラメータ サイズ 目的
APCF_enable 1 オクテット 0x01 - APCF 機能の有効化
0x00 - APCF 機能の無効化

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
APCF_opcode 1 オクテット 0x0 - APCF 有効
APCF_Enable 1 オクテット APCF_enable により有効または無効が設定される

LE_APCF_Command: set_filtering_parameters_sub_cmd

このサブコマンドは、フィルタ仕様の追加や削除、オンチップ フィルタリング用フィルタリストの消去に使用されます。

サブ OCF: 0x01

サブコマンド パラメータ サイズ 目的
APCF_Action 1 オクテット 0x00 - 追加
0x01 - 削除
0x02 - 消去
「削除」は、特定のフィルタを他のテーブルの関連する機能エントリとともに消去します。
「消去」は、すべてのフィルタと他のテーブルの関連エントリを消去します。
APCF_Filter_Index 1 オクテット フィルタ インデックス(0、max_filter-1
APCF_Feature_Selection 2 オクテット 選択する機能のビットマスク:
ビット 0: ブロードキャスト アドレス フィルタを有効に設定
ビット 1: サービスデータ チェンジ フィルタを有効に設定
ビット 2: サービス UUID チェックを有効に設定
ビット 3: サービス ソリシテーション UUID チェックを有効に設定
ビット 4: ローカル名チェックを有効に設定
ビット 5: メーカーデータ チェックを有効に設定
ビット 6: サービスデータ チェックを有効に設定
APCF_List_Logic_Type 2 オクテット APCF_Feature_Selection で指定した各選択機能(該当ビット位置)に対する論理演算。
いずれかの機能が有効な場合にのみ適用されます。
ビット位置の値:
0: OR
1: AND
「AND」ロジックを選択した場合、ADV パケットは、リスト内のエントリを「すべて」含む場合にのみフィルタを通過します。
「OR」ロジックを選択した場合、ADV パケットは、リスト内のエントリのいずれかを含んでいればフィルタを通過します。
APCF_Filter_Logic_Type 1 オクテット 0x00: OR
0x01: AND
注: APCF_Feature_Selection の最初の 3 つのフィールドに対するロジックタイプは N/A で、常に「AND」ロジックが適用されます。つまり、APCF_Feature_Selection の 4 つのフィールド(ビット 3~6)にのみ適用されます。
rssi_high_thresh 1 オクテット [dBm 単位]
アドバタイザーは、信号強度がこの RSSI 上限しきい値を上回る場合にのみ認識されたと見なされます。それ以外の場合のファームウェアの動作は、まったく認識していない場合と同じである必要があります。
delivery_mode 1 オクテット 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 オクテット delivery_modeon_found の場合にのみ適用されます。
[ミリ秒単位]
報告前に、ファームウェアで引き続き追加のアドバタイズメントを収集する時間。
onfound_timeout_cnt 1 オクテット delivery_modeon_found の場合にのみ適用されます。
[個単位]
onFound のアドバタイズメントがファームウェア内に残っている場合(onfound_timeout の時間内)、アドバタイズメントが収集され、その個数がチェックされます。 個数が onfound_timeout_cnt を超えると、すぐに OnFound として報告されます。
rssi_low_thresh 1 オクテット delivery_modeon_found の場合にのみ適用されます。
[dBm 単位]
アドバタイザー パケットは、受信パケットの RSSI がこの RSSI 下限しきい値以下の場合は、認識されていないと見なされます。
onlost_timeout 2 オクテット delivery_modeon_found の場合にのみ適用されます。
[ミリ秒単位]
見つかったアドバタイズメントが lost_timeout の時間継続して認識されない場合、アドバタイズメントは消失したとただちに報告されます。
num_of_tracking_entries 2 オクテット delivery_modeon_found の場合にのみ適用されます。
[個単位]
フィルタごとにトラッキングするアドバタイザーの合計数。

RSSI 値では、負の値を表すために 2 の補数を使用する必要があります。

ホストでは、さまざまなフィルタの組み合わせを管理するために、APCF_Application_Address_type を 0x02(すべてのブロードキャスター アドレスに対して)に設定して複数のフィルタを設定できるものとします。

フィルタリング、一括処理、報告は相互に関連する概念です。 すべてのアドバタイズメントおよび関連するスキャン応答は、すべてのフィルタを順番に通過する必要があります。したがって、結果としてのアクション(delivery_mode)はフィルタリングに密接に関係しています。 配信モードは、report_immediatelybatchonFound です。OnLost 値は、OnFound になってから消失した場合に生じるという意味で、OnFound に関連しています。

次の処理フロー図に、この概念モデルを示します。

アドバタイズメント(またはスキャン応答)フレームを受信すると、すべてのフィルタに順番に適用されます。1 つのアドバタイズメントが、あるフィルタによって即座に報告され、別のフィルタのアクションによって一括処理されるということもありえます。

コントローラで有効なパケットを受信した場合でも、RSSI レベルのしきい値(上限および下限)によって、フィルタ処理のためにフレームを可視化するタイミングを制御できます。配信モードが immediate または batched に設定される場合において、コントローラでさらに処理を行うかどうかを決めるためにフレームの RSSI が考慮されます。必要な報告や一括処理の動作はアプリによって異なります。これにより、同時に複数のアプリで、ファームウェアに結果をそのまま報告させたり、一括処理させたりできるようになります。たとえば、あるアプリから一括スキャンが実行され、その後別のアプリから通常の LE スキャンが実行された場合を考えます。フレームワークまたはアプリによって適切なフィルタが設定されてから、一括スキャンが実行されます。その後、2 つ目のアプリから通常のスキャンが実行された際に、前の一括処理は続行されます。ただし、通常のスキャンであるため、概念的には LE スキャン コマンドと同時に(既存のすべてのフィルタに加えて)null フィルタが追加されたのと同じことになります。LE スキャンがアクティブのときは、LE スキャン コマンドのパラメータが優先されます。通常の LE スキャンが無効化されたときに、前の一括スキャンが存在する場合、コントローラの処理は一括スキャンに戻ります。

OnFound 配信モードは、設定されたフィルタに基づきます。フィルタのアクションを成功させるトリガーの組み合わせは、onLost をトラッキングするエンティティと見なされます。対応するイベントは、LE Advt トラッキング サブイベントです。

フィルタの OnFound/OnLost への遷移(有効な場合)は次のようになります。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
APCF_opcode 1 オクテット 0x02 - APCF フィルタリング パラメータの設定
APCF_Action 1 オクテット エコーバック コマンドの APCF_Action
APCF_AvailableSpaces 1 オクテット フィルタ テーブル内の使用可能なエントリ数

LE_APCF_Command: broadcast_address_sub_cmd

このサブコマンドは、アドバタイザー アドレスの追加や削除、オンチップ フィルタリング用アドバタイザー アドレス リストの消去に使用されます。

サブ OCF: 0x02

サブコマンド パラメータ サイズ 目的
APCF_Action 1 オクテット 0x00 - 追加
0x01 - 削除
0x02 - 消去
「削除」は、指定したフィルタ内の指定したブロードキャスター アドレスを消去します。
「消去」は、指定したフィルタ内のすべてのブロードキャスター アドレスを消去します。
APCF_Filter_Index 1 オクテット フィルタ インデックス(0、max_filter-1
APCF_Broadcaster_Address 6 オクテット ブロードキャスター アドレスのリストに追加する、またはリストから削除する 6 バイトのデバイス アドレス
APCF_Application_Address_type 1 オクテット 0x00: パブリック
0x01: ランダム
0x02: N/A(アドレスタイプの適用なし)

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
APCF_opcode 1 オクテット 0x02 - APCF ブロードキャスター アドレス
APCF_Action 1 オクテット エコーバック コマンドの APCF_Action
APCF_AvailableSpaces 1 オクテット ブロードキャスト アドレス テーブルで使用できる空きエントリの残数

LE_APCF_Command: service_uuid_sub_cmd

このサブコマンドは、サービス UUID の追加や削除、オンチップ フィルタリング用サービス UUID リストの消去に使用されます。

サブ OCF: 0x03

サブコマンド パラメータ サイズ 目的
APCF_Action 1 オクテット 0x00 - 追加
0x01 - 削除
0x02 - 消去
「削除」は、指定したフィルタ内の指定したサービス UUID アドレスを消去します。
「消去」は、指定したフィルタ内のすべてのサービス UUID を消去します。
APCF_Filter_Index 1 オクテット フィルタ インデックス(0、max_filter-1)
APCF_UUID 2、4、16 オクテット リストに追加する、またはリストから削除するサービス UUID(16 ビット、32 ビット、128 ビット)。
APCF_UUID_MASK 2、4、16 オクテット リストに追加するサービス UUID マスク(16 ビット、32 ビット、128 ビット)。APCF_UUID. と同じ長さにする必要があります。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
APCF_opcode 1 オクテット 0x03 - APCF サービス UUID
APCF_Action 1 オクテット エコーバック コマンドの APCF_Action
APCF_AvailableSpaces 1 オクテット サービス UUID テーブルで使用できる空きエントリの残数

LE_APCF_Command: solicitation_uuid_sub_cmd

このサブコマンドは、ソリシテーション UUID の追加や削除、オンチップ フィルタリング用ソリシテーション UUID リストの消去に使用されます。

サブ OCF: 0x04

サブコマンド パラメータ サイズ 目的
APCF_Action 1 オクテット 0x00 - 追加
0x01 - 削除
0x02 - 消去
「削除」は、指定したフィルタ内の特定のソリシテーション UUID アドレスを消去します。
「消去」は、指定したフィルタ内のすべてのソリシテーション UUID を消去します。
APCF_Filter_Index 1 オクテット フィルタ インデックス(0、max_filter-1)
APCF_UUID 2、4、16 オクテット リストに追加する、またはリストから削除するソリシテーション UUID(16 ビット、32 ビット、128 ビット)。
APCF_UUID_MASK 2、4、16 オクテット リストに追加するソリシテーション UUID マスク(16 ビット、32 ビット、128 ビット)。APCF_UUID と同じ長さにする必要があります。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
APCF_opcode 1 オクテット 0x04 - APCF ソリシテーション UUID
APCF_Action 1 オクテット エコーバック コマンドの APCF_Action
APCF_AvailableSpaces 1 オクテット ソリシテーション UUID テーブルで使用できる空きエントリの残数

LE_APCF_Command: local_name_sub_cmd

このサブコマンドは、ローカル名文字列の追加や削除、オンチップ フィルタリング用ローカル名文字列リストの消去に使用されます。

サブ OCF: 0x05

サブコマンド パラメータ サイズ 目的
APCF_Action 1 オクテット 0x00 - 追加
0x01 - 削除
0x02 - 消去
「削除」は、指定したフィルタ内の指定したローカル名文字列を消去します。
「消去」は、指定したフィルタ内のすべてのローカル名文字列を消去します。
APCF_Filter_Index 1 オクテット フィルタ インデックス(0、max_filter-1)
APCF_LocName_Mandata_or_SerData 可変 ローカル名の文字列。

注:
  • 現在、ローカル名文字列の最大文字数は 29 文字です
  • アクションが「消去」(0x2)の場合は適用されません

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
APCF_opcode 1 オクテット 0x05 - APCF ローカル名
APCF_Action 1 オクテット エコーバック コマンドの APCF_Action
APCF_AvailableSpaces 1 オクテット ローカル名テーブルで使用できる空きエントリの残数

LE_APCF_Command: manf_data_sub_cmd

このサブコマンドは、メーカーデータ文字列の追加や削除、オンチップ フィルタリング用メーカーデータ文字列リストの消去に使用されます。

サブ OCF: 0x06

サブコマンド パラメータ サイズ 目的
APCF_Action 1 オクテット 0x00 - 追加
0x01 - 削除
0x02 - 消去
「削除」は、指定したフィルタ内の指定したメーカーデータ文字列を消去します。
「消去」は、指定したフィルタ内のすべてのメーカーデータ文字列を消去します。
APCF_Filter_Index 1 オクテット フィルタ インデックス(0、max_filter-1)
APCF_LocName_Mandata_or_SerData 可変 メーカーデータの文字列。

注:
  • 現在、ローカル名文字列の最大文字数は 29 文字です
  • アクションが「消去」(0x2)の場合は適用されません
APCF_ManData_Mask 可変 リストに追加するメーカーデータのマスク。APCF_LocName_or_ManData_or_SerData と同じ長さにする必要があります。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
APCF_opcode 1 オクテット 0x06 - APCF メーカーデータ
APCF_Action 1 オクテット エコーバック コマンドの APCF_Action
APCF_AvailableSpaces 1 オクテット メーカーデータ テーブルで使用できる空きエントリの残数

LE_APCF_Command: service_data_sub_cmd

このサブコマンドは、サービスデータ文字列の追加や削除、オンチップ フィルタリング用サービスデータ文字列リストの消去に使用されます。

サブ OCF: 0x07

サブコマンド パラメータ サイズ 目的
APCF_Action 1 オクテット 0x00 - 追加
0x01 - 削除
0x02 - 消去
「削除」は、指定したフィルタ内の指定したサービスデータ文字列を消去します。
「消去」は、指定したフィルタ内のすべてのサービスデータ文字列を消去します。
APCF_Filter_Index 1 オクテット フィルタ インデックス(0、max_filter-1)
APCF_LocName_Mandata_or_SerData 可変 サービスデータの文字列。

注:
  • 現在、ローカル名文字列の最大文字数は 29 文字です
  • アクションが「消去」(0x2)の場合は適用されません
APCF_LocName_Mandata_or_SerData_Mask 可変 リストに追加するサービスデータのマスク。APCF_LocName_or_ManData_or_SerData. と同じ長さにする必要があります。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
APCF_opcode 1 オクテット 0x07 - APCF サービスデータ
APCF_Action 1 オクテット エコーバック コマンドの APCF_Action
APCF_AvailableSpaces 1 オクテット サービスデータ テーブルで使用できる空きエントリの残数

コントローラの動作と電力に関する情報コマンド

この情報は、上位のホストシステムで、すべてのコンポーネントの動作全体(BT コントローラとそのマクロ状態も含む)を、アプリやフレームワークで発生している事象とともに分析するために使用されます。これを行うには、BT スタックとコントローラから次の情報が必要です。

  • BT スタック: 現時点におけるコントローラのマクロ動作状態の報告
  • ファームウェア: 動作と電力に関する集計情報の報告

ユーザーレベルで決定された BT ホストスタック マクロ状態:

  • アイドル: [ページスキャン、LE advt、照会スキャン]
  • スキャン: [ページング、照会、接続試行]
  • アクティブ: [ACL リンクオン、SCO リンク継続、スニフモード]

コントローラで全期間にわたり追跡される動作には、Tx 時間、Rx 時間、アイドル時間、総消費電力があります。これらは、ホストに読み取られると消去されます。

LE_Get_Controller_Activity_Energy_Info

ベンダー固有のコマンドです。

OCF: 0x159

サブコマンド パラメータ サイズ 目的
なし コマンド パラメータは空

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
total_tx_time_ms 4 オクテット Tx 動作の合計時間
total_rx_time_ms 4 オクテット Rx 動作の合計時間
total_idle_time_ms 4 オクテット アイドル状態の合計時間(非スリープ低電力状態)
total_energy_used 4 オクテット 総消費電力 [電流(mA)、電圧(V)、時間(ミリ秒)の積]

LE 拡張スキャン パラメータ設定コマンド

このコマンドを使用して、コントローラでより長いスキャンのウィンドウと間隔を設定できます。BT コア仕様 5.2 では、スキャンのウィンドウと間隔に 10.24 秒の上限を設けており、アプリケーションで 10.24 秒を超える長いスキャン間隔を設定できないようにしています。

基本情報参照先: BT コア仕様 5.2、2,493 ページ「LE Set Scan Parameters command」

OCF: 0x15A

コマンド パラメータ サイズ 目的
LE_Ex_Scan_Type 1 オクテット 0x00 - パッシブ スキャン。SCAN_REQ パケットの送信が禁止されます(デフォルト)。
0x01 - アクティブ スキャン。 SCAN_REQ パケットの送信が許可されます。
LE_Ex_Scan_Interval 4 オクテット コントローラが最後の LE スキャンを開始してから次の LE スキャンを開始するまでの時間間隔を設定します。
範囲: 0x0004〜0x00FFFFFF
デフォルト: 0x0010(10 ミリ秒)
時間=N×0.625 ミリ秒
時間範囲: 2.5 ミリ秒〜10,442.25 秒
LE_Ex_Scan_Window 4 オクテット LE スキャンの継続時間。LE_Scan_Window は、LE_Scan_Interval 以下とします。
範囲: 0x0004〜0xFFFF
デフォルト: 0x0010(10 ミリ秒)
時間=N×0.625 ミリ秒
時間範囲: 2.5 ミリ秒〜40.95 秒
Own_Address_Type 1 オクテット 0x00 - デバイスのパブリック アドレス(デフォルト)
0x01 - デバイスのランダム アドレス
LE_Ex_Scan_Filter_Policy 0x00 - すべてのアドバタイジング パケットを受け入れます(デフォルト)。 このデバイス宛てではない特定デバイス宛てアドバタイジング パケットは無視するものとします。
0x01 - White List Only リストにないデバイスからのアドバタイジング パケットを無視します。このデバイス宛てではない特定デバイス宛てアドバタイジング パケットは無視するものとします。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス

コントローラ デバッグ情報取得コマンド

この情報要素は、ホストがコントローラ デバッグ情報をバイナリ形式で取得し、後処理と分析を行うためのものです。これにより、実用場面での問題のデバッグが容易になり、エンジニアは分析用の情報を記録するためのツールキットを入手できます。この情報は、コントローラにより、ホストからイベント(コントローラ デバッグ情報サブイベント)で要求された場合や、コントローラ自らが必要とする場合に提供されます。 ファームウェアの状態情報、クラッシュ ダンプ情報、ロギング情報などの報告に使用されます。

OCF: 0x15B

コマンド パラメータ サイズ 目的
なし コマンド パラメータ リストは空

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
ステータス 1 オクテット コマンド完了ステータス

A2DP ハードウェア オフロードのサポート

A2DP オフロード機能は、BT コントローラに接続されたオーディオ プロセッサに対する A2DP オーディオ エンコーディング プロセスのオフロードをサポートします。 この機能を使用すると、エンコードされたオーディオ データ ストリームは、BT ホストの関与なしに、オーディオ プロセッサから BT コントローラに直接渡されます。A2DP セッションの設定と制御については、従来どおり BT ホストが担当します。

OCF: 0x15D

A2DP オフロードの開始

サブ OCF: 0x01

このコマンドは、A2DP オフロード プロセスの設定と、A2DP ストリームの開始の両方に使用されます。

コマンド パラメータ サイズ 目的
コーデック 4 オクテット コーデックの種類を指定:
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
Max_Latency 2 オクテット 許容最大レイテンシ(ミリ秒単位)。0 にした場合、フラッシュは無効になります。
SCMS-T_Enable 2 オクテット オクテット 0: SCMS-T ヘッダーの追加を有効にするフラグ。
  • 0x00 - SCMS-T ヘッダーを含みません。
  • 0x01 - SCMS-T ヘッダーを含みます。

オクテット 1: SCMS-T ヘッダーが有効な場合、その値。

Sampling_Frequency 4 オクテット 0x01 - 44100 Hz
0x02 - 48000 Hz
0x04 - 88200 Hz
0x08 - 96000 Hz
Bits_Per_Sample 1 オクテット 0x01 - 16 ビット/サンプル
0x02 - 24 ビット/サンプル
0x04 - 32 ビット/サンプル
Channel_Mode 1 オクテット 0x01 - モノラル
0x02 - ステレオ
Encoded_Audio_Bitrate 4 オクテット エンコードされたオーディオのビットレート(ビット/秒単位)。
0x00000000 - オーディオ ビットレートが指定されていないか、使用されていません。
0x00000001~0x00FFFFFF - エンコードされたオーディオのビットレート(ビット/秒単位)。
0x01000000~0xFFFFFFFF - 予約済み。
Connection_Handle 2 オクテット 設定する A2DP 接続の接続ハンドル
L2CAP_Channel_ID 2 オクテット この A2DP 接続に使用される L2CAP チャネル ID
L2CAP_MTU_Size 2 オクテット エンコードされたオーディオ パケットを含む L2CAP MTU の最大サイズ
Codec_Information 32 オクテット コーデック固有の情報。

SBC コーデック:

A2DP v1.3 の SBC コーデック固有の情報要素をご覧ください。
オクテット 0: ブロック長 | サブバンド | 割り当て方法
オクテット 1: Bitpool の最小値
オクテット 2: Bitpool の最大値
オクテット 3: サンプリング周波数 | チャネルモード
オクテット 4~31: 予約済み

AAC コーデック:

A2DP v1.3 の AAC コーデック固有の情報要素をご覧ください。
オクテット 0: オブジェクトのタイプ
オクテット 1: b7: VBR
オクテット 2〜31: 予約済み

LDAC コーデック:

オクテット 0〜3: ベンダー ID
0x0000012D

オクテット 4~5: コーデック ID
0x00AA - LDAC
他の値はすべて予約済み

オクテット 6: ビットレート インデックス:
0x00 - 高
0x01 - 中
0x02 - 低
0x03~0x7E - 予約済み
0x7F - ABR(アダプティブ ビットレート)
0x80~0xFF - 予約済み

オクテット 7: LDAC チャネルモード
0x01 - ステレオ
0x02 - デュアル
0x04 - モノラル
他は予約済み

オクテット 8~31: 予約済み

他のすべてのコーデック:

オクテット 0〜31: 予約済み

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
ステータス 1 オクテット コマンド完了ステータス
Sub_Opcode 1 オクテット 0x0 - A2DP オフロードの開始

A2DP オフロードの停止

サブ OCF: 0x02

このコマンドは、A2DP オフロード ストリームの停止に使用されます。

コマンド パラメータ サイズ 目的
なし コマンド パラメータ リストは空。

このコマンドにはパラメータが定義されていません。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
ステータス 1 オクテット コマンド完了ステータス
Sub_Opcode 1 オクテット 0x02 - A2DP オフロードの停止

Bluetooth 品質報告コマンド

BT 品質報告コマンド機能により、Bluetooth 品質イベントをホストに報告する Bluetooth コントローラのメカニズムが開始されます。次の 4 つのオプションを有効にできます。

  • 品質モニタリング モード: コントローラは、リンクの品質に関連する BQR サブイベントを定期的にホストに送信します。
  • LSTO に近接: 接続された BT デバイスからパケットを受信していない期間の長さがリンク監視タイムアウト(LSTO)値の半分を超えると、コントローラからホストに LSTO 近接イベントが報告されます。
  • A2DP オーディオ途切れ: オーディオの途切れを引き起こす要因がコントローラにより検出されると、コントローラからホストに A2DP オーディオ途切れイベントが報告されます。
  • (e)SCO 音声途切れ: 音声の途切れを引き起こす要因がコントローラにより検出されると、コントローラからホストに(e)SCO 音声途切れイベントが報告されます。
  • ルート インフラメーション: HAL またはコントローラに致命的なエラーが発生し、Bluetooth を再起動する必要がある場合に、コントローラによってこのイベントがスタックに送信されます。
  • LMP / LL メッセージ トレース: コントローラは、リモート デバイスの応答確認についての LMP / LL メッセージをホストに送信します。
  • Bluetooth マルチプロファイル / Coex スケジューリング トレース: コントローラは、2.4 Ghz 周波数帯で複数の Bluetooth プロファイルとワイヤレス共存を処理するために、スケジュール情報をホストに送信します。
  • コントローラ デバッグ情報メカニズム: 有効にすると、コントローラ デバッグ情報サブイベントを通じて、コントローラからデバッグ ロギングの情報を自律的にホストに報告できます。

OCF: 0x15E

コマンド パラメータ サイズ 目的
BQR_Report_Action 1 オクテット BQR_Quality_Event_Mask パラメータで指定した品質イベントの報告を追加または削除したり、すべての報告を消去したりするアクション。

0x00 - 追加
0x01 - 削除
0x02 - 消去

「削除」では、特定の品質イベントの報告が消去されます。
「消去」では、すべての品質イベントの報告が消去されます(BQR_Quality_Event_Mask パラメータは無視されます)。

BQR_Quality_Event_Mask 4 オクテット 選択対象の品質イベント報告のビットマスク。

ビット 0: 品質モニタリング モードを有効にする場合にセットします。
ビット 1: LSTO 接近イベントを有効にする場合にセットします。
ビット 2: A2DP オーディオ途切れイベントを有効にする場合にセットします。
ビット 3: (e)SCO 音声途切れイベントを有効にする場合にセットします。
ビット 4: ルート インフラメーション イベントを有効にする場合にセットします。
ビット 5~15: 予約済み。
ビット 16: LMP / LL メッセージ トレースを有効にする場合にセットします。
ビット 17: Bluetooth マルチリンク / Coex スケジューリング トレースを有効にする場合にセットします。
ビット 18: コントローラ デバッグ情報メカニズムを有効にする場合にセットします。
ビット 19~31: 予約済み。

BQR_Minimum_Report_Interval 2 オクテット 選択した品質イベントの報告の最小時間間隔を設定します。コントローラのファームウェアでは、設定された時間間隔内には次回のイベントを報告しません。間隔の設定は、追加する品質イベントそれぞれに対して個別に適用するものとします。

単位: ミリ秒
デフォルト: 0(間隔に制限なし)
範囲: 0〜65,535 ミリ秒

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
ステータス 1 オクテット コマンド完了ステータス
Current_Quality_Event_Mask 4 オクテット 現在のビットマスク設定を示します。
ビット 0: 品質モニタリング モードが有効。
ビット 1: LSTO 接近イベントの報告が有効。
ビット 2: A2DP オーディオ途切れイベントの報告が有効。
ビット 3: (e)SCO 音声途切れイベントの報告が有効。
ビット 4: ルート インフラメーション イベントの報告が有効。
ビット 5~15: 予約済み。
ビット 16: LMP / LL メッセージ トレースが有効。
ビット 17: Bluetooth マルチリンク / Coex スケジューリング トレースが有効。
ビット 18: コントローラ デバッグ情報メカニズムが有効。
ビット 19~31: 予約済み。

Dynamic Audio Buffer コマンド

Dynamic Audio Buffer は、さまざまなシナリオに基づいて Bluetooth コントローラのオーディオ バッファサイズを変更することで、オーディオの不具合を軽減します。

OCF: 0x15F

オーディオ バッファ時間機能を取得する

サブ OCF: 0x01

このコマンドを使用して、Bluetooth コントローラからオーディオ バッファ時間機能を取得します。

コマンド パラメータ サイズ 目的
なし コマンド パラメータ リストは空

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
ステータス 1 オクテット コマンド完了ステータス
Dynamic_Audio_Buffer_opcode 1 オクテット 0x01 - オーディオ バッファ時間を取得する
Audio_Codec_Type_Supported 4 オクテット サポートされているコーデック タイプのビットマスク
ビット 0 - SBC
ビット 1 - AAC
ビット 2 - APTX
ビット 3 - APTX HD
ビット 4 - LDAC
ビット 5~31 は予約済み
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 オクテット Audio_Codec_Type_Supported で指定されたビット 0 コーデック タイプのデフォルトのバッファ時間。
ビット 0 のコーデック タイプがサポートされていない場合、この値は 0 になります。
単位: ミリ秒
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 オクテット Audio_Codec_Type_Supported で指定されたビット 0 コーデック タイプの最大バッファ時間。
ビット 0 のコーデック タイプがサポートされていない場合、この値は 0 になります。
単位: ミリ秒
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 オクテット Audio_Codec_Type_Supported で指定されたビット 0 コーデック タイプの最小バッファ時間。
ビット 0 のコーデック タイプがサポートされていない場合、この値は 0 になります。
単位: ミリ秒
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 オクテット Audio_Codec_Type_Supported で指定されたビット 1 コーデック タイプのデフォルトのバッファ時間。
ビット 1 のコーデック タイプがサポートされていない場合、この値は 0 になります。
単位: ミリ秒
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 オクテット Audio_Codec_Type_Supported で指定されたビット 1 コーデック タイプの最大バッファ時間。
ビット 1 のコーデック タイプがサポートされていない場合、この値は 0 になります。
単位: ミリ秒
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 オクテット Audio_Codec_Type_Supported で指定されたビット 1 コーデック タイプの最小バッファ時間。
ビット 1 のコーデック タイプがサポートされていない場合、この値は 0 になります。
単位: ミリ秒
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 オクテット Audio_Codec_Type_Supported で指定されたビット 31 コーデック タイプのデフォルトのバッファ時間。
ビット 31 のコーデック タイプがサポートされていない場合、この値は 0 になります。
単位: ミリ秒
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 オクテット Audio_Codec_Type_Supported で指定されたビット 31 コーデック タイプの最大バッファ時間。
ビット 31 のコーデック タイプがサポートされていない場合、この値は 0 になります。
単位: ミリ秒
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 オクテット Audio_Codec_Type_Supported で指定されたビット 31 コーデック タイプの最小バッファ時間。
ビット 31 のコーデック タイプがサポートされていない場合、この値は 0 になります。
単位: ミリ秒

オーディオ バッファ時間を設定する

サブ OCF: 0x02

このコマンドを使用して、オーディオ バッファ時間を Bluetooth コントローラに設定します。

コマンド パラメータ サイズ 目的
Audio_Codec_Buffer_Time 2 オクテット 現在使用されているコーデックに対してリクエストされたオーディオ バッファ時間。
単位: ミリ秒

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
ステータス 1 オクテット コマンド完了ステータス
Dynamic_Audio_Buffer_opcode 1 オクテット 0x02 - オーディオ バッファ時間を設定する
Audio_Codec_Buffer_Time 2 オクテット Bluetooth コントローラの現在のオーディオ バッファ時間。
単位: ミリ秒

HCI イベント(ベンダー固有)

ベンダー固有の HCI イベントが必要になる場合があります。BT コア仕様 5.2 の 1,897 ページの図 5.4 をご覧ください。イベント パラメータ 0 には、最初のサブイベント コードが常に含まれており、このコードに基づいて残りの HCI イベントがデコードされます。

イベント パラメータ サイズ 目的
HCI_vendor_specific_event_code 1 オクテット 0xFF
sub_event_code 1 オクテット サブイベント コードのサイズは 1 オクテットで、HCI イベント パケット内ではパラメータ長の直後のバイトです。

ストレージしきい値違反サブイベント

このイベントは、ストレージしきい値違反が発生したことを示します。

サブイベント コード=0x54

サブイベント パラメータ サイズ 目的
なし

LE マルチアドバタイジング状態変化サブイベント

このイベントは、アドバタイジング インスタンスの状態が変化したことを示します。現時点では、このイベントは、接続の結果として停止したアドバタイジング インスタンスを示すためにのみ使用されます。

サブイベント コード=0x55

サブイベント パラメータ サイズ 目的
Advertising_instance 1 オクテット アドバタイジング インスタンスを特定します
有効な値は 0〜max_advt_instances-1 です
State_Change_Reason 1 オクテット 0x00: 接続を受信しました
Connection_handle 2 オクテット advt インスタンスが無効になる原因となった接続を特定します(適用外の場合は 0xFFFF)

LE アドバタイズメント トラッキング サブイベント

このイベントは、アドバタイザーが見つかった、または消失したことを示します。

サブイベント コード=0x56

サブイベント パラメータ サイズ 目的
APCF_Filter_Index 1 オクテット フィルタ インデックス(0、max_filter-1)
Advertiser_State 1 オクテット 0x00: アドバタイザー発見
0x01: アドバタイザー消失
Advt_Info_Present 1 オクテット 0x00: アドバタイザー情報(Advt_Info)あり
0x01: アドバタイザー情報(Advt_Info)なし
Advertiser_Address 6 オクテット パブリック アドレスまたはランダム アドレス
Advertiser_Address_Type 1 オクテット 0x00: パブリック アドレス
0x01: ランダム アドレス
Advt_Info Tx_Pwr[0]: 1 オクテット
RSSI[0]: 1 オクテット
Timestamp[0]: 2 オクテット
Adv packet_len[0]: 1 オクテット
Adv_packet[0]: Adv_packet_len オクテット
Scan_data_resp_len[0]: 1 オクテット
Scan_data_resp[0]: Scan_data_resp オクテット

コントローラ デバッグ情報サブイベント

このイベントは、バイナリ デバッグ情報をホストに提供するためにコントローラによって使用されます。

サブイベント コード=0x57

サブイベント パラメータ サイズ 目的
debug_block_byte_offset_start 2 オクテット 先頭からのデバッグ ブロックのバイト オフセット
last_block 1 オクテット 0x00: さらにデバッグデータあり
0x01: 最後のバイナリ ブロック(これ以上デバッグデータなし)
cur_pay_load_sz 2 オクテット 現在のイベントのバイナリ ブロック サイズ
Debug_Data 変数 cur_payload_sz のデバッグデータ

Bluetooth 品質報告サブイベント

このイベントは、Bluetooth の品質イベントが発生した、コントローラが LMP / LL メッセージ トレースと Bluetooth マルチリンク / Coex スケジューリング トレースをアップロードした、またはコントローラがデバッグ情報をダンプした、のいずれかであることを示します。

サブイベント パラメータ サイズ 目的
Quality_Report_Id 1 オクテット 0x01: モニタリング モードの品質報告。
0x02: LSTO 接近。
0x03: A2DP オーディオ途切れ。
0x04: (e)SCO 音声途切れ。
0x05〜0xFF: 予約済み。
Packet_Types 1 オクテット 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D〜0xFF: 予約済み。
Connection_Handle 2 オクテット 接続ハンドル。
Connection_Role 1 オクテット 接続における役割。
0x00: 中央
0x01: 周辺機器
0x02~0xFF: 予約済み。
TX_Power_Level 1 オクテット 指定された Connection_Handle の現在の送信電力レベル。

この値は、HCI_Read_Transmit_Power_Level HCI コマンドに対するコントローラの応答と同じになるものとします。

RSSI 1 オクテット [dBm 単位]

指定された Connection_Handle の受信電波強度表示(RSSI)値。
この値は、受信機の絶対電波強度値とします。
範囲: -127~+20

SNR 1 オクテット [dB 単位]

指定された Connection_Handle の信号対雑音比(SNR)値。
コントローラは、リンクで使用されているすべてのチャネルの平均 SNR を実現する必要があります。

Unused_AFH_Channel_Count 1 オクテット AFH_channel_map 内の未使用のチャネル数を示します。
0x4F〜0xFF: 予約済み。
AFH_Select_Unideal_Channel_Count 1 オクテット 干渉により品質が悪くても AFH 用に選択されているチャネルの数を示します。
Bluetooth 仕様で許される最小チャネル数は 20 のため、79 チャネルすべてが干渉を受けて品質が悪い場合でも、コントローラでは少なくとも 20 チャネルを AFH 用に選択する必要があります。
LSTO 2 オクテット 現在のリンク監視タイムアウト設定。
時間=N×0.625 ミリ秒
時間範囲: 0.625 ミリ秒〜40.9 秒
Connection_Piconet_Clock 4 オクテット 指定された Connection_Handle のピコネット クロック。
この値は、パラメータ「Which_Clock」を 0x01(ピコネット クロック)に設定した場合の HCI_Read_Clock HCI コマンドに対するコントローラの応答と同じになるものとします。
単位: N×0.3125 ミリ秒(1 Bluetooth クロック)
Retransmission_Count 4 オクテット 最後のイベント以降の再送回数。
ホストへの報告後にリセットするものとします。
No_RX_Count 4 オクテット 最後のイベント以降、受信がなかった回数。
この値は、スケジュールされたタイムスロットでパケットが受信されない、または受信しても破損していた場合に増加します。
ホストへの報告後にリセットするものとします。
NAK_Count 4 オクテット 最後のイベント以降の NAK(否定応答)の数。
ホストへの報告後にリセットするものとします。
Last_TX_ACK_Timestamp 4 オクテット 最後の送信 ACK のタイムスタンプ。ピコネット セントラルの Bluetooth クロック(CLK)に基づきます。
単位: N×0.3125 ミリ秒(1 Bluetooth クロック)
Flow_Off_Count 4 オクテット 最後のイベント以降、コントローラでフローオフ(STOP)を受信した回数。
ホストへの報告後にリセットするものとします。
Last_Flow_On_Timestamp 4 オクテット 最後のフローオン(GO)のタイムスタンプ。ピコネット セントラルの Bluetooth クロック(CLK)に基づきます。
単位: N×0.3125 ミリ秒(1 Bluetooth クロック)
Buffer_Overflow_Bytes 4 オクテット [バイト単位]

最後のイベント以降のバッファ オーバーフローのバイト数。
コントローラでは、ドロップしたデータのバイト数をカウントします。
ホストへの報告後にリセットするものとします。

Buffer_Underflow_Bytes 4 オクテット [バイト単位]

最後のイベント以降のバッファ アンダーフローのバイト数。
ホストへの報告後にリセットするものとします。

ベンダー固有のパラメータ (パラメータ合計長 - 49)× オクテット コントローラ ベンダーが、その他のベンダー固有のパラメータを取得することを目的とします。

サブイベント コード = 0x58 [Quality_Report_Id = 0x05、ルート インフラメーション イベント]

このイベントは、Bluetooth HAL またはコントローラに致命的なエラーが発生し、この状況を記録して再起動するために Bluetooth スタックが必要であることを示します。コントローラは、どのような場合でもデバッグ情報イベントの最初のフラグメントを送信する前に、Root_Inflammation_Event を Bluetooth スタックに送信する必要があります。

Error_Code パラメータには、HAL / コントローラから報告されたエラーコードが含まれます。チップセット ベンダー固有のエラーの場合、コードは 0 です。Vendor_Specific_Error_Code には、HAL / コントローラから送信されたチップセット ベンダー固有のエラーコードが含まれています。パラメータ Error_Code が 0 でない場合は 0 に設定する必要があります。パラメータ Error_Code と Vendor_Specific_Error_Code の両方を 0 にすることは回避してください。

サブイベント パラメータ サイズ 目的
Quality_Report_Id 1 オクテット 0x00~0x04: 予約済み。
0x05: ルート インフラメーション。
0x06~0xFF: 予約済み。
Error_Code 1 オクテット 0x00: チップセット ベンダー固有のエラーコードが含まれています。
0x01~0xFF: コントローラでエラーが発生しました。エラーコードと説明のリストについては、Bluetooth の仕様 [Vol 2] Part D、エラーコードをご覧ください。
Vendor_Specific_Error_Code 1 オクテット 0x00: チップセット ベンダー固有のエラーコードは含まれていません。
0x01~0xFF: チップセット ベンダー固有のエラーコード。
ベンダー固有のパラメータ (パラメータ合計長 - 4)× オクテット コントローラ ベンダーが、その他のベンダー固有のパラメータを取得することを目的とします。
サブイベント パラメータ サイズ 目的
Quality_Report_Id 1 オクテット 0x00~0x10: 予約済み。
0x11: LMP / LL メッセージ トレース。
0x12: Bluetooth マルチリンク / Coex スケジューリング トレース。
0x13: コントローラ デバッグ情報のデータダンプ。
0x14~0xFF: 予約済み。
Connection_Handle 2 オクテット 接続ハンドル。
ベンダー固有のパラメータ (パラメータ合計長 - 4)× オクテット ベンダー固有の形式の LMP メッセージ トレース、Bluetooth マルチリンク / Coex スケジューリング トレース、コントローラ デバッグ情報のデータダンプ。

マルチアドバタイザー サポート

マルチアドバタイザー サポートの目的は次のとおりです。

  • 複数のアドバタイズメントのサポート(max_advt_instances
  • 送信範囲に応じた多様な送信電力のサポート
  • 多様なアドバタイジング コンテンツへの対応
  • アドバタイザーごとの個別対応
  • アドバタイザーごとのプライバシー(トラッキング不可能)のサポート
  • 接続性の向上

この仕様を既存の標準に近づけるために、以下のベンダー固有のコマンドが用意されています。これらは、Bluetooth コア仕様 4.1 に基づいています。

LE_Multi_Advt_Command

OCF: 0x154

コマンド パラメータ サイズ 目的
Multi_advt_opcode 1 オクテット 0x01 - Set_Advt_Param_Multi_Sub_Cmd
0x02 - Set_Advt_Data_Multi_Sub_Cmd
0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 - Set_Random_Addr_Multi_Sub_Cmd
0x05 - Set_Advt_Enable_Multi_Sub_Cmd

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Multi_advt_opcode 1 オクテット 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

基本情報参照先: Bluetooth コア仕様 4.1、964 ページ「LE Set Advertising Parameters Command」

サブ OCF: 0x01

サブコマンド パラメータ サイズ 目的
Advertising_Interval_Min 仕様どおり 仕様どおり
Advertising_Interval_Max 仕様どおり 仕様どおり
Advertising_Type 仕様どおり 仕様どおり
Own_Address_Type 仕様どおり 仕様どおり
Own_Address 仕様どおり 仕様どおり
Direct_Address_Type 仕様どおり 仕様どおり
Direct_Address 仕様どおり 仕様どおり
Advertising_Channel_Map 仕様どおり 仕様どおり
Adverstising_Filter_Policy 仕様どおり 仕様どおり
Advertising_Instance 1 オクテット 上記のパラメータのインスタンスへの適用を指定します
Tx_power 1 オクテット Transmit_Power
単位: dBm(符号付き整数)
範囲: -70〜+20

Own_Address パラメータは、このマルチアドバタイズメント インスタンスのセットアップ時にホストで設定したアドレスにすることが可能です。これにより、最初のビーコンの送信時に解決可能なプライベート アドレスを持つことができます。インスタンスでのアドバタイズメントは、接続に関係なく続行されます。ホスト BT スタックは、接続後に、インスタンスでアドバタイズメントを開始するコマンドを発行できます。

Bluetooth コア仕様 4.1 で指定されているように、上記のコマンドに対してコマンド完了イベントが生成されます。アドバタイジング インスタンスまたは Tx_Power パラメータが無効な場合は、コントローラから不成功(無効なパラメータ)コードを返します。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Multi_advt_opcode 1 オクテット 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

基本情報参照先: Bluetooth コア仕様 4.1、969 ページ「LE Set Advertising Data Command」

サブ OCF: 0x02

サブコマンド パラメータ サイズ 目的
Advertising_Data_Length 仕様どおり 仕様どおり
Advertising_Data 仕様どおり 仕様どおり
Advertising_Instance 1 オクテット 上記のパラメータのインスタンスへの適用を指定します

Bluetooth コア仕様 4.1 で指定されているように、上記のコマンドに対してコマンド完了イベントが生成されます。アドバタイジング インスタンスまたは Tx_Power パラメータが無効な場合は、コントローラから不成功コードを返します。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Multi_advt_opcode 1 オクテット 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

基本情報参照先: Bluetooth コア仕様 4.1、970 ページ「LE Set Scan Response Data Command」

サブ OCF: 0x03

サブコマンド パラメータ サイズ 目的
Scan_Response_Data_Length 仕様どおり 仕様どおり
Scan_Response_Data 仕様どおり 仕様どおり
Advertising_Instance 1 オクテット 上記のパラメータのインスタンスへの適用を指定します

Bluetooth コア仕様 4.1 で指定されているように、上記のコマンドに対してコマンド完了イベントが生成されます。アドバタイジング インスタンスまたは Tx_Power パラメータが無効な場合は、コントローラから不成功コード(無効なパラメータ)を返します。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Multi_advt_opcode 1 オクテット 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

基本情報参照先: Bluetooth コア仕様 4.1、963 ページ「LE Set Random Address Command」

サブ OCF: 0x04

サブコマンド パラメータ サイズ 目的
Random Address 仕様どおり 仕様どおり
Advertising_Instance 1 オクテット 上記のパラメータのインスタンスへの適用を指定します

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Multi_advt_opcode 1 オクテット 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

基本情報参照先: Bluetooth コア仕様 4.1、971 ページ「LE Set Advertise Enable Command in that core specification」

OCF: 0x05

サブコマンド パラメータ サイズ 目的
Advertising_Enable 1 オクテット 値 1 は、有効を意味します。その他の値は、無効を意味します。
Advertising_Instance 1 オクテット 上記のパラメータのインスタンスへの適用を指定しますインスタンス 0 は、標準の HCI インスタンスを意味します。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Multi_advt_opcode 1 オクテット 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

プライベート アドレスのオフロード解決

この機能により、コントローラのファームウェアまたはハードウェアでプライベート アドレスが解決されるため、次のメリットがあります。

  • プライベート アドレスをホストで解決することによるレイテンシの回避
  • ホストのアイドル状態、スリープ状態からの復帰を避けることによる電力節約

LE_Set_RPA_Timeout

OCF: 0x15C

コマンド パラメータ サイズ 目的
LE_local_IRK 16 オクテット 解決可能なランダム アドレスの生成に使用したローカル デバイス IRK。
tRPA_min 2 オクテット 最小 RPA 生成タイムアウト(秒単位)。 コントローラでは、このタイムアウト以降に、アドバタイジング、スキャニング、接続のイベント用の新しい解決可能なアドレスを生成する必要があります。
有効範囲: 300~1,800
tRPA_max 2 オクテット 最大 RPA 生成タイムアウト(秒単位)。 コントローラでは、このタイムアウト以前に、アドバタイジング、スキャニング、接続のイベント用の新しい解決可能なアドレスを生成する必要があります。
有効範囲: tRPA_min~1,800
リターン パラメータ サイズ 目的
Status 1 オクテット コマンドのステータス。

推奨される HCI ステータス値:
0x00 成功
0x01 不明なコマンド(サポートされていない場合)
0x12 無効なコマンド パラメータ(パラメータが指定範囲外の場合)

LE_RPA_offload_Command

OCF: 0x155

コマンド パラメータ サイズ 目的
RPA_offload_opcode 1 オクテット 0x1 - 顧客固有の機能の有効化
0x2 - リストへの IRK の追加
0x3 - リストからの IRK の削除
0x4 - IRK リストの消去
0x5 - IRK リストエントリの読み取り

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Event_RPA_offload_opcode 1 オクテット 0x1 - 顧客固有の機能の有効化
0x2 - リストへの IRK の追加
0x3 - リストからの IRK の削除
0x4 - IRK リストの消去
0x5 - IRK リストエントリの読み取り

LE_RPA_offload: Enable_cust_specific_sub_Command

サブ OCF: 0x01

サブコマンド パラメータ サイズ 目的
enable_customer_specific_feature_set 1 オクテット 0x01 - オフロード RPA 機能の有効化
0x00 - オフロード RPA 機能の無効化

RPA オフロードは、チップの機能に応じてホストから有効化する必要があります。LE_Get_Vendor_Capabilities_Command をご覧ください。各チップのファームウェアの max_irk_list_sz はさまざまです。

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Event_cust_specific_feature_opcode 1 オクテット 0x01 [顧客固有の機能の有効化]

LE_RPA_offload: Add_IRK_to_list_sub_Command

サブ OCF: 0x02

サブコマンド パラメータ サイズ 目的
LE_IRK 16 オクテット LE IRK(1 バイト目の LSB)
Address_Type 1 オクテット 0: パブリック アドレス
1: ランダム アドレス
LE_Device_Address 6 オクテット IRK(1 バイト目の LSB)に関連付けられたパブリック アドレスまたはランダム アドレス

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Event_cust_specific_feature_opcode 1 オクテット 0x02 [リストへの IRK の追加]
LE_IrkList_AvailableSpaces 1 オクテット 現オペレーション後の使用可能な IRL リストエントリ

LE_RPA_offload: Remove_IRK_to_list_sub_Command

サブ OCF: 0x03

サブコマンド パラメータ サイズ 目的
Address_Type 1 オクテット 0: パブリック アドレス
1: ランダム アドレス
LE_Device_Address 6 オクテット IRK に関連付けられたパブリック アドレスまたはランダム アドレス

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Event_cust_specific_feature_opcode 1 オクテット 0x03 [リストからの IRK の削除]
LE_IrkList_AvailableSpaces 1 オクテット 現オペレーション後の使用可能な IRL リストエントリ

LE_RPA_offload: Clear_IRK_list_sub_Command

サブ OCF: 0x04

サブコマンド パラメータ サイズ 目的
なし

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Event_cust_specific_feature_opcode 1 オクテット 0x04 [IRK リストの消去]
LE_IrkList_AvailableSpaces 1 オクテット 現オペレーション後の使用可能な IRL リストエントリ [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

サブ OCF: 0x05

サブコマンド パラメータ サイズ 目的
LE_read_IRK_list_entry-index 1 オクテット IRK リストのインデックス [0, max_irk_list_sz-1]

このコマンドに対してコマンド完了イベントが生成されます。

リターン パラメータ サイズ 目的
Status 1 オクテット コマンド完了ステータス
Event_cust_specific_feature_opcode 1 オクテット 0x05 [IRK リストエントリの読み取り]
LE_Read_IRK_List_entry 1 オクテット ホストがリードバックする IRK のインデックス(最大 IRK リストサイズは 32)
LE_IRK 16 オクテット IRK 値
Address_Type 1 オクテット 0: パブリック アドレス
1: ランダム アドレス
LE_Device_Address 6 オクテット IRK に関連付けられたパブリック アドレスまたはランダム アドレス
LE_Resolved_Private_Address 6 オクテット この IRK の現在解決された解決可能プライベート アドレス