次の方法で共有


Microsoftが定義したBluetooth HCI拡張機能

Bluetooth ホスト コントローラー インターフェイス (HCI) は、ホストと Bluetooth 無線コントローラー間のすべてのやり取りを指定します。 Bluetooth 仕様では、ベンダー定義の HCI コマンドおよびイベントを使用して、ホストとコントローラーの間の非標準の対話を可能にします。 Microsoft は、Windows で使用されるベンダー固有の HCI コマンドとイベントを定義しています。 Bluetooth コントローラーの実装者は、これらの拡張機能を使用して特殊機能を実装できます。

要件

Bluetooth HCI コマンドは 16 ビットのコマンド コードで識別されます。 Bluetooth 団体は、0x0000 から 0xFBFF の範囲の値を定義しています。 ベンダーは 0xFC00 から 0xFFFF の範囲の値を定義し、1024 個の異なるベンダー割り当てコマンド コードを許可します。

ベンダーは Microsoft 定義のコマンド コードの値を選択する必要があります。 Microsoft はコマンド コードを選択することはできず、競合する目的でそのコードを使用する他のベンダーが存在しないと想定することはできません。 ベンダー固有のコマンドを発行し、コントローラーがコマンドを理解できない場合にそのコマンドを拒否することに依存するのは危険です。 コントローラーは、コマンドをコントローラーのファームウェアのアップデートなどの破壊的な操作として解釈する可能性があります。

ベンダーは、コントローラー以外の方法で選択された値を通信する必要があります。 Microsoft は、選択されたコードを取得する方法を指定していません。

ベンダー固有のコマンド コードの Windows Bluetooth スタックへの通知

Windows Bluetooth スタックは、ベンダー固有のコマンド コードをレジストリ キーから読み取ります VsMsftOpCode.

その VsMsftOpCode レジストリ キーの種類は REG_DWORD であり、キー データはベンダー固有のオペコードです。

ベンダー固有のオペコードを指定するには、 AddReg ディレクティブ DDInstall.HW ドライバーの INF のセクション。 レジストリの追加セクションには次の内容を含める必要があります。

HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>

例:

[radio.NTamd64.HW]
AddReg=radio.NTamd64.HW.AddReg
[radio.NTamd64.HW.AddReg]
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>

Microsoftが定義したHCIコマンド

HCI コマンド 説明
HCI_VS_MSFT_Read_Supported_Features コントローラーがサポートする Microsoft 定義の機能を説明するビットマップを提供し、コントローラーから返される Microsoft 定義イベントのプレフィックスを指定します。
HCI_VS_MSFT_Monitor_Rssi コントローラが指定されたコネクションのリンクRSSI測定値の監視を開始し、コネクションのリンクRSSI測定値が指定された範囲外になったときにイベントを生成するように要求します。
HCI_VS_MSFT_Cancel_Monitor_Rssi 以前発行したものをキャンセルします HCI_VS_MSFT_Monitor_Rssi コマンド。
HCI_VS_MSFT_LE_Monitor_Advertisement 指定された RSSI 範囲内にあり、他の要件も満たすアドバタイズメントの監視をコントローラが開始するように要求します。
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement 以前発行したものをキャンセルします HCI_VS_MSFT_LE_Monitor_Advertisement コマンド。
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 広告フィルターの状態を設定します。
HCI_VS_MSFT_Read_Absolute_RSSI BR/EDR 接続の受信信号強度表示 (RSSI) の絶対値をコントローラから読み取ります。

Microsoft が定義した HCI コマンドとサブコマンド

コントローラーは、Microsoft 固有の HCI コマンドが 1 つしかないことを認識します。 Microsoft 固有のコマンド セットは、オペコードを使用して拡張されています。 Microsoft が定義した HCI コマンドの最初のコマンド パラメータは、サブコマンドを指定するオペコードです。

コントローラがサポートする必要がある HCI_VS_MSFT_Read_Supported_Features 他の Microsoft HCI サブコマンドをサポートするためです。 他のコマンドのサポートはオプションであり、HCI_VS_MSFT_Read_Supported_Feature によって返される値に依存します。 Windows は、コントローラーが HCI_VS_MSFT_Read_Supported_Feature への応答を通じてサブコマンドのサポートを示さない限り、Microsoft 定義のサブコマンドを送信しません。

HCI_VS_MSFT_Read_Supported_Functions

HCI_VS_MSFT_Read_Supported_Feature は、コントローラーがサポートする Microsoft 定義の機能を説明するビットマップを提供し、コントローラーから返される Microsoft 定義イベントのプレフィックスを指定します。

コントローラは常に、Command Completed イベントを使用してこのコマンドを直ちに完了する必要があります。

command コード コマンド パラメーター 戻りパラメータ
HCI_VS_MSFT_Read_Supported_Functions 選択された基本コード Subcommand_opcode Status、
Subcommand_opcode、
Supported_features、
Microsoft_event_prefix_length、
Microsoft_event_prefix

Command_parameters

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x00 HCI_VS_MSFT_Read_Supported_Features のサブコマンド オペコード。

Return_parameters

ステータス (1 オクテット):

パラメーターの説明
0x00 コマンドが成功しました。
0x01~0xFF コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x00 HCI_VS_MSFT_Read_Supported_Features のサブコマンド オペコード。

Supported_features (8 オクテット):

パラメーターの説明
0x00000000 00000001 コントローラは、BR/EDR 接続の RSSI 監視機能をサポートしています。 さらに、コントローラーは、BR/EDR 接続の絶対 RSSI メトリックを読み取るために HCI_VS_MSFT_Read_Absolute_RSSI をサポートします。
0x00000000 00000002 コントローラーは、LE 接続の RSSI 監視機能をサポートしています。
0x00000000 00000004 コントローラは、LE レガシー アドバタイズの RSSI 監視をサポートします。
0x00000000 00000008 コントローラは、LE レガシー アドバタイズメントのアドバタイズメント 監視をサポートします。
0x00000000 00000010 コントローラーは、P-192 および P-256 のセキュア シンプル ペアリング プロセス中に、曲線上の公開 X および Y 座標の有効性の検証をサポートします。
詳細については、 Bluetooth コア仕様エラッタ 10734を参照してください。
0x00000000 00000020 コントローラーは、 HCI_VS_MSFT_LE_Monitor_Advertisement [v1]を使用して、他の無線活動と同時に実行される LE アドバタイズメントの継続的なアドバタイジング 監視をサポートします。
0x00000000 00000040 予約済み。
0x00000000 00000080 コントローラは、このドキュメントで説明されている AVDTP オフロードと HCI_VS_MSFT_Avdtp_* コマンドをサポートします。
0x00000000 00000100 予約済み。
0x00000000 00000200 予約済み。
0x00000000 00000400 コントローラーは、 HCI_VS_MSFT_LE_Monitor_Advertisement [v2]をサポートします。 さらに、コントローラーは、 HCI_VS_MSFT_LE_Monitor_Advertisement [v2]を使用して、他の無線活動と同時に実行される LE アドバタイズメントの継続的なアドバタイジング 監視をサポートします。
0xFFFFFFFF FFFFFF00 ビットは将来の定義のために予約されています。 ゼロを指定してください。

Microsoft_event_prefix_length (1 オクテット):

パラメーターの説明
0x00 to 0x20 返された Microsoft_event_prefix で指定された Microsoft イベント プレフィックス フィールドのバイト数。 これは、Microsoft が指定したすべての HCI イベントの開始時に定数情報のバイト数です。

Microsoft_event_prefix (可変長):

パラメーターの説明
イベント接頭辞値 Microsoft 定義の各イベントの開始時に予期される定数の情報。 この情報は、Microsoft が定義したイベントを他のカスタム イベントと区別するために使用されます。

HCI_VS_MSFT_Monitor_Rssi

HCI_VS_MSFT_Monitor_Rssi は、コントローラーが指定された接続の測定されたリンク RSSI の監視を開始することを要求し、接続の測定されたリンク RSSI が指定された範囲外になったときにイベントを生成します。

command コード コマンド パラメーター 戻りパラメータ
HCI_VS_MSFT_Monitor_Rssi 選択された基本コード Subcommand_opcode、
Connection_Handle、
RSSI_threshold_high、
RSSI_threshold_low、
RSSI_threshold_low_time_interval、
RSSI_sampling_period
Status、
Subcommand_opcode

コントローラーは、定期的に生成されるイベントで RSSI 値をホストに通知します (RSSI_sampling_periodに基づきます)。 測定されたリンク RSSI は次のようになります 絶対の BR/EDR 接続の受信機信号強度の値 (dBm 単位)。

HCI_VS_MSFT_Monitor_Rssi コマンドに応答して、コントローラーは、コントローラーが監視を開始できる場合はステータスが 0 であるコマンド完了イベントを生成し、それ以外の場合はゼロ以外のステータスを生成します。 ステータス値がゼロ以外の場合、コントローラーは、このコマンドへの応答で HCI_VS_MSFT_Rssi_Event を生成しません。

同じ Connection_Handle を含む別の HCI_VS_MSFT_Monitor_Rssi コマンドが未処理であるか、または指定された接続ハンドルが無効である場合、コントローラーはコマンドを拒否します。 コントローラは、リソースの枯渇などの他の理由でコマンドを拒否する場合もあります。

この状態図は、接続の RSSI を監視するときのコントローラの遷移状態を示しています。

接続の RSSI を監視するときのコントローラ上の遷移状態を示す状態図。

受信した RSSI が、指定された RSSI_threshold_high以上である場合、コントローラーは HCI_VS_MSFT_Rssi_Event を生成します。 このイベントが生成された後、コントローラーは新しいイベントを生成しないものとします HCI_VS_MSFT_Rssi_Event を指定するために、 RSSI_threshold_high を生成するまで超過している HCI_VS_MSFT_Rssi_Event RSSI が下回ったことを示します RSSI_threshold_low.

を生成することになりますコントローラー HCI_VS_MSFT_Rssi_Event 受信した RSSI が指定された RSSI と等しいか、それを下回った場合 RSSI_threshold_low 指定された以上の RSSI_threshold_low_time_interval. このイベントが生成された後、コントローラーは新しいイベントを生成しないものとします HCI_VS_MSFT_Rssi_Event RSSI が以下になったことを指定するには、 RSSI_threshold_low ~まで HCI_VS_MSFT_Rssi_Event それを指定するためにイベントが生成されます RSSI_threshold_high に達しているか超えています。

もし RSSI_sampling_period が 0x01 と 0xFE の間の場合、コントローラは HCI_VS_MSFT_Rssi_Event 定期的に毎回 RSSI_sampling_period. このイベントには、期間にわたって計算された RSSI の平均が含まれます RSSI_sampling_period. もし RSSI_sampling_period 0x00 または 0xFF の場合、コントローラーは not 定期的にホストに通知します HCI_VS_MSFT_Rssi_Event.

Command_parameters

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x01 HCI_VS_MSFT_Monitor_Rssi のサブコマンド オペコード。

Connection_Handle (2 オクテット):

パラメーターの説明
0xXXXX RSSI を監視する必要がある接続のハンドル。

RSSI_threshold_high (1 オクテット):

パラメーターの説明
0xXX 予想される RSSI の最大値。 観測された RSSI がこの値以上になると、コントローラーはイベントを生成します。
単位: dBm
BR/EDR 範囲:-128 ~ 127(符号付き整数)
LE 範囲: -127 から 20 (符号付き整数)

RSSI_threshold_low (1 オクテット):

パラメーターの説明
0xXX 予想される RSSI の最小値。 観測された RSSI がこの値以下になると、コントローラーはイベントを生成します。
単位: dBm
BR/EDR 必須範囲: -128 から 127 (符号付き整数)
LE 必須範囲: -127 から 20 (符号付き整数)

RSSI_threshold_low_time_interval (1 オクテット):

パラメーターの説明
0x00 予約済みの値。
N = 0xXX RSSI値が以下になるまでの時間 秒 RSSI_threshold_low を下回ってから HCI_VS_MSFT_Rssi_Event が生成される.
期間 = N * ミリ秒
必須範囲:0x01 ~ 0x3C

RSSI_sampling_period (1 オクテット):

パラメーターの説明
0x00 予約済みの値。
N = 0xXX サンプリング間隔 (ミリ秒単位)。
期間 = N * 100ミリ秒
必須範囲:0x01 ~ 0xFE
0xFF 予約済みの値。

Return_parameters

Status (1 オクテット):

パラメーターの説明
0x00 コマンドが成功しました。
0x01~0xFF コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。
0x07 コントローラーは戻ってくるはずです メモリ容量を超えました コマンドを処理するのに十分なメモリがない場合。
エラー コード コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x01 HCI_VS_MSFT_Monitor_Rssi のサブコマンド オペコード。

マスクされない限り生成されるイベント

コントローラは、次の場合に直ちにコマンド完了イベントを生成する必要があります HCI_VS_MSFT_Monitor_Rssi コマンドが受信されます。 コマンド完了イベントがステータス 0 を返した場合、コントローラは HCI_VS_MSFT_Rssi_Event 以下のいずれかの状態が発生したとき。

  • デバイスに対して観測された RSSI RSSI_threshold_low_time_interval 指定された値以下になる RSSI_threshold_low 価値。
  • デバイスの観測 RSSI が指定された値以上になる RSSI_しきい値_高 値。
  • RSSI サンプリング期間 有効であり、サンプリング期間が期限切れになります。

指定されたデバイスとの接続が失われた場合、コントローラーは必要なすべてのクリーンアップを行う必要があります。 このケースでは、 HCI_VS_MSFT_Cancel_Monitor_Rssi コマンドはコントローラに送信されません。

HCI_VS_MSFT_Cancel_Monitor_Rssi

HCI_VS_MSFT_Cancel_Monitor_Rssi は、以前に発行されたメッセージをキャンセルします HCI_VS_MSFT_Monitor_Rssi コマンド。 コントローラは、このコマンドに応答してコマンド完了イベントを即座に生成する必要があります。

command コード コマンド パラメーター 戻りパラメータ
HCI_VS_MSFT_Cancel_Monitor_Rssi 選択された基本コード Subcommand_opcode、
Connection_Handle
Status、
Subcommand_opcode

Command_parameters

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x02 HCI_VS_MSFT_Cancel_Monitor_Rssi のサブコマンド オペコード。

Connection_Handle (2 オクテット):

パラメーターの説明
0xXXXX RSSI をキャンセルする必要がある接続のハンドルです。

Return_parameters

Status (1 オクテット):

パラメーターの説明
0x00 コマンドが成功しました。
0x01~0xFF コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x02 HCI_VS_MSFT_Cancel_Monitor_Rssi のサブコマンド オペコード。

マスクされない限り生成されるイベント

コントローラは、次のときにコマンド完了イベントを生成します HCI_VS_MSFT_Cancel_Monitor_RSSI コマンドを受け取ります。

HCI_VS_MSFT_LE_Monitor_Advertisement

HCI_VS_MSFT_LE_Monitor_Advertising は、指定された RSSI 範囲内に収まり、次の条件のいずれかを満たしているアドバタイズメントの監視をコントローラーが開始するように要求します。

  • 指定されたパターンを受信したアドバタイズメント パケットと照合できます。
  • 指定された UUID は、受信した広告パケットと照合できます。
  • 指定された Identity Resolution Key (IRK) を使用して、アドバタイズメント パケットの発信元デバイスのプライベート アドレスを解決できます。
  • 指定した Bluetooth アドレスを、受信したアドバタイズメント パケットと照合できます。

v2 コマンドを使用すると、ホストは上記の条件の一部と、アドバタイズメントのソースおよびダイレクトされたアドバタイズメントのターゲットを制御するオプションを組み合わせて、どのアドバタイズメントを監視するかをさらに絞り込むことができます。 また、v2 コマンドを使用すると、ホストは、どの監視対象アドバタイズメントによってコントローラがアドバタイズメント レポートを生成するかをフィルタリングできます。

command コード コマンド パラメーター 戻りパラメータ
HCI_VS_MSFT_LE_Monitor_Advertisement [v2] 選択された基本コード Subcommand_opcode_v2、
RSSI_threshold_high、
RSSI_threshold_low、
RSSI_threshold_low_time_interval、
RSSI_sampling_period、
Monitor_options、
Advertisement_report_filtering_options、
Peer_device_address、
Peer_device_address_type、
Peer_device_IRK、
Condition_type、
<条件パラメータ>
Status、
Subcommand_opcode、
Monitor_Handle
HCI_VS_MSFT_LE_Monitor_Advertisement [v1] 選択された基本コード Subcommand_opcode_v1、
RSSI_threshold_high、
RSSI_threshold_low、
RSSI_threshold_low_time_interval、
RSSI_sampling_period、
Condition_type、
<条件パラメータ>
Status、
Subcommand_opcode、
Monitor_Handle

コントローラは、このコマンドに応答してコマンド完了イベントを生成する必要があります。 コントローラーが監視を開始できる場合はステータス値を 0 に設定し、そうでない場合は 0 以外のステータスを設定する必要があります。 コントローラーが LE アドバタイズメントの RSSI 監視をサポートしていない場合、コントローラーは RSSI_threshold_highRSSI_threshold_lowRSSI_threshold_low_time_interval、および RSSI_sampling_period パラメーター値を無視します。

この状態図は、アドバタイズメントの RSSI を監視するときのコントローラの遷移状態を示しています。

HCI_VS_MSFT_LE_Monitor_Advertisement の遷移状態を示す状態図。

受信した RSSI が特定のデバイスの RSSI_threshold_high 以上であり、 Monitor_options が一致する場合にのみ、コントローラーはアドバタイズメントの監視を開始します (以下を参照)。 コントローラーは HCI_VS_MSFT_LE_Monitor_Device_Event と一緒に 監視状態 1に設定すると、 監視ハンドル このハンドルに設定 調子、 コントローラーがこの特定のデバイスを監視していることをホストに通知するには 調子. さらに、コントローラは、監視対象のアドバタイズメントの最初のアドバタイズメント レポートをホストに伝播する必要があります アドバタイズメントレポートフィルターオプション 一致します(以下を参照)。

Monitor_options フィルターの場合は、次のロジック (擬似コード) に基づいて一致すると見なされます。

MatchesCondition = (PDU Matches Condition Parameters)

IsAdvAMatch = ((Monitor_options bit 0 is set) && ((AdvA == Peer_device_address) && (TxAdd == Peer_device_address_type))) ||
    ((Monitor_options bit 1 is set) && (AdvA resolvable with Peer_device_IRK))

IsDirectedAdvAMatch = (TargetA is permitted based on the Scanning Filter Policy) &&
    (((Monitor_options bit 2 is set) && ((AdvA == Peer_device_address) && (TxAdd == Peer_device_address_type))) ||
        ((Monitor_options bit 3 is set) && (AdvA resolvable with Peer_device_IRK)))

IsDirectedTargetAMatch = (Monitor_options bit 4 is set) &&
    (TargetA is permitted based on the Scanning Filter Policy)

MonitorOptionsMatch = (MatchesCondition && IsAdvAMatch) ||
    IsDirectedAdvAMatch ||
    IsDirectedTargetAMatch ||
    ((Monitor_options bit 5 is set) && MatchesCondition)

そして、監視された広告の場合、 広告レポートフィルターオプションs 次のロジック (疑似コード内) に基づいて一致すると見なされます。

IsDuplicateFilterSatisfied = (Advertisement_report_filter_options bit 0 is NOT set || PDU is not a duplicate)

ShouldGenerateLegacyReport = (Advertisement_report_filter_options bit 1 is set) &&
    (PDU is Legacy) &&
    MonitorOptionsMatch

ShouldGenerateExtendedReport = (Advertisement_report_filter_options bit 2 is set) &&
    (PDU is Extended) &&
    MonitorOptionsMatch

ShouldGenerateDirectedReport = (Advertisement_report_filter_options bit 3 is set) &&
    (PDU is Directed) &&
    MonitorOptionsMatch

AdvertisementReportFilterOptionsMatch = IsDuplicateFilterSatisfied &&
    (ShouldGenerateLegacyReport || ShouldGenerateExtendedReport || ShouldGenerateDirectedReport)

受信したアドバタイズメントの RSSI が、特定のデバイスの RSSI_threshold_low_interval に対して RSSI_threshold_low 以下になった場合、コントローラーは、 Condition の監視を停止します。 コントローラーは HCI_VS_MSFT_LE_Monitor_Device_Event とともに 監視状態 0 に設定すると、コントローラーが特定のデバイスの監視を停止したことがホストに通知されます 調子. コントローラーが次のコマンドで HCI_VS_MSFT_LE_Monitor_Device_Event を指定した後、 Monitor_state 0 に設定すると、コントローラは、特定のデバイスの RSSI が 0 以上に上昇したことをホストに通知するまで、そのデバイスのホストにそれ以上のアドバタイズメント パケットが流れることを許可しません。 RSSI_しきい値_高 特定のデバイスに対して 調子.

さらに、デバイスからアドバタイジング パケットを受信せずに、指定された RSSI_threshold_low_time_interval が期限切れになった場合、 Condition に対するデバイスの監視を停止したことをホストに通知するために、コントローラーは、 Monitor_state が 0 に設定された HCI_VS_MSFT_LE_Monitor_Device_Event を生成します。 コントローラーが特定の状態についてデバイスを監視している場合、次のステートメントが当てはまります。

コントローラがサンプリングなしの LE 拡張アドバタイズメントの RSSI 監視をサポートしている場合、コントローラは、パケットの RSSI 値が以下の場合に匿名アドバタイズメント パケットをホストに伝播します。 RSSI_しきい値_高. 匿名のアドバタイズメントは追跡されず、 HCI_VS_MSFT_LE_Monitor_Device_Event イベントは生成されません。

コントローラがサンプリングなしの LE アドバタイズメントの RSSI 監視をサポートしている場合、コントローラは、受信したアドバタイズメントのフラグメントが一致するが、アドバタイズメント全体が正常に受信されなかった場合に、切り捨てられたアドバタイズメント レポートを生成する必要があります。

コントローラは、少なくとも 30 個の同時 Monitor_handles、少なくとも 30 個の同時追跡デバイス、および最小 20 個の同時追跡重複アドバタイズメントをサポートする必要があります。 コントローラーは、10% のデューティ サイクルで連続 LE スキャンを実行できることも必要です。

コントローラでアドレス解決が有効になっており、ホストがコントローラの解決リストに IRK が正常に保存されているリモート デバイスを監視する場合、ホストは、リモート デバイスの解決リスト エントリから Peer_Identity_Address パラメータと Peer_Identity_Address_Type パラメータを Peer_device_address および Peer_device_address_type として提供します。 パラメータをそれぞれ指定します。

RSSI_sampling_period 従来の広告 拡張広告(非匿名) 拡張広告(匿名)
0x00 コントローラは、受信したすべてのアドバタイズメント パケットを、このデバイスのホストに伝播する必要があります Condition コントローラーが以前に受信した場合を除き HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable でコマンドを実行します Enable 0x00 に設定されます。 この Condition の特定のデバイスに対して RSSI_threshold_low_time_interval が期限切れにならない限り、受信した RSSI が RSSI_threshold_low 以下になっても、コントローラーはホストにアドバタイズメント パケットを伝達します。 この広告パケットの RSSI 値が、受信した広告の RSSI 値になります。 コントローラがサンプリングなしの LE 拡張アドバタイズメントの RSSI 監視をサポートしている場合、次の動作と同じです 従来の広告 ただし、アドバタイズ パケットがアドバタイズ チェーン内のすべての PDU として定義される点が異なります。 コントローラがサンプリングなしの LE 拡張アドバタイズメントの RSSI 監視をサポートしている場合、コントローラは、受信したすべてのアドバタイズメント パケットをデバイスのホストに伝播する必要があります。 調子 コントローラーが以前に受信した場合を除き HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable でコマンドを実行します 許可 0x00 に設定されます。
0x01 to 0xFE コントローラは、次の間隔でレガシー アドバタイズメント パケットをホストに伝播します。 RSSI サンプリング期間 コントローラが以前に受信した場合を除き HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable でコマンドを実行します 許可 0x00 に設定されます。 アドバタイズメントに指定された RSSI 値は、このサンプリング間隔中に受信した RSSI 値の平均となります。 コントローラがサンプリング期間中にアドバタイズメント パケットを受信しなかった場合、コントローラはホストにアドバタイズメントを伝播しません。 RSSI_sampling_periodRSSI_threshold_low_time_interval を下回り、 RSSI_sampling_period 中に受信したすべてのアドバタイズメントで RSSI が RSSI_threshold_lowを下回っている可能性があります。 コントローラは、このサンプリング間隔中に受信した RSSI 値の平均を使用してアドバタイズメントを伝播する必要があります。 コントローラがサンプリングなしの LE 拡張アドバタイズメントの RSSI 監視をサポートしている場合、コントローラは RSSI サンプリング期間 0x00だった。 コントローラがサンプリングなしの LE 拡張アドバタイズメントの RSSI 監視をサポートしている場合、コントローラは RSSI サンプリング期間 0x00だった。
0xFF コントローラは、デバイスのホストにそれ以上のアドバタイズメント パケットが流れることを許可しません 調子 コントローラが特定のデバイスの RSSI が下回ったことをホストに通知するまで RSSI_しきい値_低 ために RSSI しきい値の低時間間隔 この特定のデバイスについては 調子. を生成することによって、この通知は完了です HCI_VS_MSFT_LE_Monitor_Device_Event とともに Monitor_state 0に設定します。 コントローラがサンプリングなしの LE 拡張アドバタイズメントの RSSI 監視をサポートしている場合、次の動作と同じです レガシー広告 列。 コントローラがサンプリングなしの LE 拡張アドバタイズメントの RSSI 監視をサポートしている場合、コントローラは RSSI サンプリング期間 0x00だった。

コントローラが以前に受信した場合 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable とのコマンド 有効にする 0x00 に設定すると、サンプリング期間タイマーは停止されません。 詳細については、「例: サンプリング期間を含むフィルターの HCI_VS_MSFT_LE_Set_Advertising_Filter_Enable」を参照してください。 コントローラが同じデバイスから重複しないアドバタイズメント パケットを受信した場合、各アドバタイズメント パケットをコントローラに保存されている条件と照合します。

コントローラが複数の条件に一致するデバイスからアドバタイズメント パケットを受信した場合、コントローラは HCI_VS_MSFT_LE_Monitor_Device_Event のために各 調子 それは一致しました、付き Monitor_handle に設定 調子 それが一致した。

コントローラーが、 Conditionに一致する範囲内にあるすべてのデバイスの RSSI 値を監視できない場合は、可能な限り多くのデバイスを監視し続けます。 どのデバイスを監視するかは、受信したアドバタイズメントの RSSI 値によって決まります。 コントローラは、より大きな受信信号強度を持つデバイスを監視する必要があります。

コントローラーがホストに特定のデバイスについて通知しました (A)最大のハードウェア容量でデバイスを監視しており、別のデバイスが存在する場合(B) より高い RSSI 値の範囲内に入ると、コントローラはデバイスの監視を停止したことをホストに通知します。(A) を生成することによって、 HCI_VS_MSFT_LE_Monitor_Device_Event with 監視状態 0に設定してください。 コントローラーはまた、次のような HCI_VS_MSFT_LE_Monitor_Device_Event を生成する必要があります Monitor_state デバイスがホストに通知する場合は 1 に設定します (B) 現在監視中です。

条件タイプおよび条件パラメータ

その Condition_type パラメータで指定するのは コンディション パラメータは、パターン、UUID、IRK、または BD_ADDR を指定します。

Condition_type パラメーターがパターンを指定する場合、 Condition には、 Condition内に存在するパターンの数と、パターン データを含む、2 つのセクションが含まれます。

HCI_VS_MSFT_LE_Monitor_Advertisement のパターン条件データ レイアウトを示す図。

模様数 照合する必要があるパターンの数を指定します。

模様データ は以下のような形式になっています。

  • 全長 パターンのデータ型と開始バイトを含む、このパターンの長さを指定します。
  • AD型 [AD タイプ] フィールドを指定します。
  • パターンの始まり AD Type の直後に続くパターンの開始バイト位置を指定します。
  • 模様 サイズは次のとおりです (全長 - 0x2)指定された開始バイトからのアドバタイズメント パケット内の指定された AD タイプに一致するパターンです

複数のパターンが指定されている場合、コントローラは少なくとも 1 つのパターンが受信したアドバタイズメントと一致することを保証します。

コントローラがサンプリングなしの LE 拡張アドバタイズメントの RSSI 監視をサポートしている場合:

  • コントローラは、ホスト アドバタイズ データの最初の 251 オクテットでパターンを探す必要があり、ホスト アドバタイズ データの残りのオクテットを探す場合もあります。 AD セクションがホスト アドバタイジング データの最初の 251 オクテットを超えて拡張されている場合、コントローラは、ホスト アドバタイズ データの最初の 251 オクテットにある AD セクションの部分内のパターンを検索し、残りのオクテットを検索する場合があります。 ホストのアドバタイジング データ。 注: 広告主によるフラグメンテーションに基づいて、ホスト広告データの最初の 251 オクテットは、複数の広告 PDU の AdvData にまたがる場合があります。 スキャナーは、過度に長い PDU チェーンを追跡することを避けるために、追跡する AuxPtrs の数を制限するように注意する必要があります。

  • コントローラは、アドバタイズメント セットごとのデバイス アドレスごとに基づいて追跡する必要があります。 を伝播するだろうコントローラー HCI_VS_MSFT_LE_Monitor_Device_Event たとえ広告が同じデバイス アドレスからのものであっても、パターンに一致する広告セットごとに。

もしも、 条件タイプ パラメーターは UUID を指定します 調子 パラメータには、UUID Type と UUID が含まれます。 UUID タイプは、UUID が 16 ビット、32 ビット、または 128 ビットであるかどうかを指定します。 コントローラは、アドバタイズメント パケットのサービス UUID を解析して、指定された UUID を確認する必要があります。 UUID タイプが 0x01 として定義されている場合、コントローラは、16 ビット サービス UUID の不完全なリストと、サービス UUID AD タイプで指定された 16 ビット サービス UUID の完全なリストを解析します。 UUID タイプが 0x02 として定義されている場合、コントローラは、32 ビット サービス UUID の不完全なリストと、サービス UUID AD タイプで指定された 32 ビット UUID の完全なリストを解析します。 指定された UUID タイプが 0x03 の場合、コントローラーは、128 ビット サービス UUID の不完全なリストと、サービス UUID AD タイプで指定された 128 ビット サービス UUID の完全なリストを解析します。

コントローラがサンプリングなしの LE 拡張アドバタイズメントの RSSI 監視をサポートしている場合:

  • コントローラは、ホスト アドバタイジング データの最初の 251 オクテットでサービス UUID を探す必要があり、ホスト アドバタイズ データの残りのオクテットを探す場合もあります。 AD セクションがホスト アドバタイジング データの最初の 251 オクテットを超えて拡張されている場合、コントローラはホスト アドバタイジング データの最初の 251 オクテットにある AD セクションの部分内でサービス UUID を検索し、残りのオクテットを検索することもあります ホスト広告データの。 注: 広告主によるフラグメンテーションに基づいて、ホスト広告データの最初の 251 オクテットは、複数の広告 PDU の AdvData にまたがる場合があります。 スキャナーは、過度に長い PDU チェーンを追跡することを避けるために、追跡する AuxPtrs の数を制限するように注意する必要があります。

  • コントローラは、アドバタイズメント セットごとのデバイス アドレスごとに基づいて追跡する必要があります。 アドバタイズメントが同じデバイスのものであっても、コントローラーは、サービス UUID に一致するアドバタイズメント セットごとに HCI_VS_MSFT_LE_Monitor_Device_Event を伝達します。

もしも、 条件タイプ パラメーターで IRK を指定します 調子 パラメータには IRK が含まれています。

もし 条件タイプ パラメータはBluetoothアドレスを指定します コンディション パラメータにはアドレスタイプとBD_ADDRが含まれます

コントローラは、スキャン (アクティブまたはパッシブ) が有効な場合でも、条件に基づいて監視を継続します。 アクティブ スキャンが有効になっている場合、フィルタに一致するアドバタイズメントに対するスキャン応答がホストに伝播されます。

フィルターが無効になっているときに (以前に受信したコマンドが原因で) コントローラーが HCI_VS_MSFT_LE_Monitor_Advertising コマンドを受信した場合 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable とのコマンド Enable 0x00 に設定)、コントローラは可能であればコマンドを受け入れますが、無効な状態に設定します。 コントローラは、リソースの枯渇などの他の理由でコマンドを拒否する場合もあります。

Monitor_options のすべてのビットがクリアされている場合、コントローラーはエラー コードを返すはずです 無効なHCIコマンドパラメータ (0x12).

Monitor_options のビット 1 またはビット 3 が設定されており、Peer_device_IRK が無効な IRK に設定されている場合、または Monitor_options のどのビットも設定されていない場合、コントローラはエラー コードを返す必要があります 無効なHCIコマンドパラメータ (0x12).

Monitor_options のビット 0 またはビット 1 またはビット 2 またはビット 3 が設定され、Condition_type が 0x03 または 0x04 に設定されている場合、コントローラーはエラー コードを返す必要があります。 無効なHCIコマンドパラメータ (0x12).

Advertising_report_filter_options のビット 0 が設定され、RSSI_sampling_period が 0x00 以外の値である場合、コントローラーはエラー コードを返す必要があります 無効なHCIコマンドパラメータ (0x12).

パラメーターがありません

すべてのパラメータが含まれていないバージョンのこのコマンドが発行される場合は、次のものが使用されます。

パラメーター
Monitor_options ビット 5 が設定されています。 他のビットはすべてクリアされます
Advertisement_report_filter_options ビット 1 と 2 がセットされます。 他のビットはすべてクリアされます
Peer_device_IRK 0x0000000000000000 0000000000000000
Peer_device_address 0x000000000000
Peer_device_address_type 0x00

Command_parameters

Subcommand_opcode_v1 (1 オクテット):

パラメーターの説明
0x03 HCI_VS_MSFT_LE_Monitor_Advertisement [v1] のサブコマンド オペコード。

Subcommand_opcode_v2 (1 オクテット):

パラメーターの説明
0x0F HCI_VS_MSFT_LE_Monitor_Advertisement [v2] のサブコマンド オペコード。

RSSI_threshold_high (1 オクテット):

パラメーターの説明
0xXX 予想される RSSI の最大値。 観測された RSSI がこの値以上になると、コントローラーはイベントを生成します。
単位: dBm
必須範囲: -127 ~ 20 (符号付き整数)

RSSI_threshold_low (1 オクテット):

パラメーターの説明
0xXX 予想される RSSI の最小値。 観測された RSSI がこの値以下になると、コントローラーはイベントを生成します。
単位: dBm
必須範囲: -127 ~ 20 (符号付き整数)

RSSI_threshold_low_time_interval (1 オクテット):

パラメーターの説明
0x00 予約済みの値。
N = 0xXX RSSI値が以下になるまでの時間 秒 RSSI_threshold_low を下回ってから HCI_VS_MSFT_Rssi_Event が生成される
期間 = N * ミリ秒
必須範囲:0x01 ~ 0x3C。

RSSI_sampling_period (1 オクテット):

パラメーターの説明
0x00 コントローラは、受信したすべての通知をホストに伝播します。
N = 0xXX サンプリング間隔 (ミリ秒単位)。
期間= N * 100ミリ秒。
必須範囲:0x01 ~ 0xFE
0xFF コントローラは、受信した通知をホストに伝播しません。

Monitor_options(1オクテット):

ビットナンバー パラメーターの説明
0 コントローラは、AdvA またはその解決された ID アドレスが Peer_device_address および Peer_device_address_type と一致し、TargetA が存在しない場合、または存在する場合は、Scanning Filter Policy に基づいて TargetA が許可される場合に、それらの PDU が Condition_Type で指定された条件と一致する場合、アドバタイジング PDU を監視します。 。
1 コントローラは、AdvA が Peer_device_IRK で解決可能であり、TargetA が存在しない場合、または TargetA が存在する場合、それらの PDU が Condition_Type で指定された条件に一致する場合、スキャン フィルタ ポリシーに基づいて TargetA が許可される場合に、アドバタイジング PDU を監視する必要があります。 リンク層プライバシーがコントローラで使用されている場合、このビットは設定されません。
2 コントローラは、スキャン フィルタ ポリシーに基づいて TargetA が許可され、AdvA またはその解決された ID アドレスが Peer_device_address および Peer_device_address_type と一致する場合、ダイレクト アドバタイジング PDU を監視します。 これは、PDU が Condition_Type で指定された条件と一致するかどうかには関係ありません。
3 コントローラは、TargetA がスキャン フィルタ ポリシーに基づいて許可されており、AdvA が Peer_device_IRK で解決できる場合、ダイレクト アドバタイジング PDU を監視します。 これは、PDU が Condition_Type で指定された条件と一致するかどうかには関係ありません。 リンク層プライバシーがコントローラで使用されている場合、このビットは設定されません。
4 コントローラは、Peer_device_address および Peer_device_address_type または Peer_device_IRK の値に関係なく、また PDU が Condition_Type で指定された条件に一致するかどうかに関係なく、スキャン フィルタ ポリシーに基づいて TargetA が許可されているダイレクト アドバタイズメント PDU を監視します。
5 コントローラは、TargetA が存在しないすべての AdvA からのアドバタイジング PDU を監視するものとします。TargetA が存在する場合、それらの PDU が Condition_Type で指定された条件に一致する場合、TargetA はスキャン フィルタ ポリシーに基づいて許可されます。
他のすべてのビット 将来の使用のために予約済み

Advertisement_report_filtering_options (1 オクテット):

ビットナンバー パラメーターの説明
0 重複するアドバタイジング PDU をフィルターします。 このビットは、RSSI_sampling_period が 0x00 の場合にのみセットされます。
1 コントローラは、レガシー広告 PDU が指定された Monitor_options と一致する場合、それらの PDU に対して HCI_LE_Advertising_Report イベント、HCI_LE_Directed_Advertising_Report イベント、または HCI_LE_Extended_Advertising_Report イベントを生成します。
2 コントローラは、拡張アドバタイジング PDU が指定された Monitor_options に一致する場合、それらの PDU に対して HCI_LE_Extended_Advertising_Report イベントを生成します。
3 コントローラーは、ダイレクト広告 PDU が指定された Monitor_options に一致する場合、その PDU に対して HCI_LE_Advertising_Report イベント、HCI_LE_Directed_Advertising_Report イベント、または HCI_LE_Extended_Advertising_Report イベントを生成します。
他のすべてのビット 将来の使用のために予約済み

Peer_device_address (6 オクテット):

パラメーターの説明
0xXXXXXXXXXXXX 照合するパブリックデバイスアドレスまたはランダムデバイスアドレス。

Peer_device_address_type (1 オクテット):

パラメーターの説明
0x00 公開デバイスアドレス
0x01 ランダムなデバイス アドレス
その他すべての値 将来の使用のために予約済み

Peer_device_IRK (16 オクテット):

パラメーターの説明
0x0000000000000000 0000000000000000 IRKが無効です。 Monitor_options ビット 1 が設定されている場合や、Monitor_options ビット 3 が設定されている場合の値であってはなりません。
0xXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX マッチするデバイスの IRK。 Peer_device_address と Peer_device_address_type が入力されます。

Condition_type (1 オクテット):

パラメーターの説明
0x01 条件は広告上で一致する必要のあるパターンです。
0x02 条件は UUID Type と UUID です。
0x03 条件はIRKの解決です。 Monitor_options ビット 0、1、2、3 のいずれかが設定されている場合は除外されます。
0x04 条件は Bluetooth アドレス Type と Bluetooth アドレスです。 Monitor_options ビット 0、1、2、3 のいずれかが設定されている場合は除外されます。

Condition: Condition に適用できるフィールドは、Condition_type の値によって異なります。 詳細については、「Condition_type」および「Condition パラメーター」セクションを参照してください。

Number_of_patterns (1 オクテット):

パラメーターの説明
0xXX Pattern_data パラメータ内で指定されるパターンの数。

Pattern_data (>3 オクテット):

パラメーターの説明
長さ この模様の長さ。
データの種類 アドバタイズメントセクションのデータタイプ。 値は、Bluetooth 割り当て番号のドキュメントにリストされています。
開始バイト 指定されたデータ型に一致するパターンの開始位置。
パターン 一致するパターン (長さのサイズ - 0x2 バイト)。

UUID_type (1 オクテット):

パラメーターの説明
0x01 UUIDは16ビットサービスです。
0x02 UUIDは32ビットサービスです。
0x03 UUIDは128ビットサービスです。

UUID(2、4、または 16 オクテット):

パラメーターの説明
0xXXXX UUID_typeが0x01の場合は2バイト。
UUID_typeが0x02の場合は4バイト。
UUID_typeが0x03の場合は16バイト。

IRK(16オクテット):

パラメーターの説明
0xXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX プライベート アドレスの解決に使用される IRK。

Address_type (1 オクテット):

パラメーターの説明
0x00 公開デバイスアドレス。
0x01 ランダムなデバイス アドレス.
0x02 ~ 0xFF 将来の使用のために予約されている値。

BD_ADDR(6オクテット):

パラメーターの説明
0xXXXXXXXXXXXX 監視するデバイスの Bluetooth アドレス。

Return_parameters

Status (1 オクテット):

パラメーターの説明
0x00 コマンドが成功しました。
0x07 コマンドを処理するのに十分なメモリがない場合、コントローラはメモリ容量を超えましたを返します。
エラー コード コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x03 or 0x0F 送信されたコマンドに応じて、 HCI_VS_MSFT_LE_Monitor_Advertisement [v1] または HCI_VS_MSFT_LE_Monitor_Advertisement [v2]のサブコマンド オペコード。

Monitor_handle (1 オクテット):

パラメーターの説明
0x00~0xFF この規則のハンドル。 このハンドルは、アドバタイズメントの監視をキャンセルするための HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement のパラメーターとして使用されます。
このパラメータは、Status が 0x00 の場合にのみ有効です。

マスクされない限り生成されるイベント

HCI_VS_MSFT_LE_Monitor_Advertisement コマンドを受信すると、コントローラーはコマンド完了イベントを生成します。

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement は、以前に発行された HCI_VS_MSFT_LE_Monitor_Advertisement コマンドをキャンセルします。

command コード コマンド パラメーター 戻りパラメータ
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement 選択された基本コード Subcommand_opcode、
Monitor_handle
Status、
Subcommand_opcode

コントローラは、このコマンドに応答してコマンド完了イベントを即座に生成する必要があります。

Command_parameters

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x04 HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement のサブコマンド オペコード。

Connection_Handle (1 オクテット):

パラメーターの説明
0xXX キャンセルされるフィルタのハンドル。

Return_parameters

Status (1 オクテット):

パラメーターの説明
0x00 コマンドが成功しました。
0x07 コマンドを処理するのに十分なメモリがない場合、コントローラはメモリ容量を超えましたを返します。
エラー コード コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x04 HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement のサブコマンド オペコード。

マスクされない限り生成されるイベント

コントローラーは、 HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement コマンドを受信すると、コマンド完了イベントを生成します。

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable

HCI_VS_MSFT_LE_Set_Commercial_Filter_Enable は、アドバタイズメント フィルターの状態を設定します。

command コード コマンド パラメーター 戻りパラメータ
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable 選択された基本コード Subcommand_opcode、
有効にする
Status、
Subcommand_opcode

もしも 有効 が 0x00 に設定されている場合、コントローラは、既存のフィルタ受け入れリストの設定に基づいて、受信したアドバタイズメントをホストに伝播します。 コントローラーは現在監視されているデバイスの監視を継続し、 HCI_VS_MSFT_LE_Monitor_Device_Event と一緒に 監視状態 デバイスが監視されていない場合は、0 に設定されます。 コントローラーは HCI_VS_MSFT_LE_Monitor_Device_Event と一緒に 監視状態 新しいデバイスを監視している場合は 1 に設定されます。 ホストは HCI_VS_MSFT_LE_Set_Advertising_Filter_Enable を次のコマンドで発行する場合があります 許可 すべてのフィルター条件を再び有効にするには、0x01 に設定します。

Enable が 0x01 に設定されている場合、このコマンドは、以前に発行された HCI_VS_MSFT_LE_Monitor_Advertisement コマンドを使用して設定されたすべてのフィルターを有効にします。 フィルターの状態を切り替えない場合、コントローラーは HCI_VS_MSFT_LE_Set_Advertising_Filter_Enable コマンドを拒否します。

  • コントローラーは、HCI_VS_MSFT_LE_Set_Advertising_Filter_Enable コマンドを次のように拒否する必要があります 有効 以前に HCI_VS_MSFT_LE_Set_Advertising_Filter_Enable コマンドを受信した場合は 0x01 に設定されます 有効 0x01 に設定されます。
  • コントローラーは、HCI_VS_MSFT_LE_Set_Advertising_Filter_Enable コマンドを拒否する必要があります 有効にする 以前に HCI_VS_MSFT_LE_Set_Advertising_Filter_Enable コマンドを受け取った場合は 0x00 に設定されます 有効にする 0x00 に設定されます。

アドバタイズメントフィルタのデフォルト状態はオフです。 この状態は、コントローラーが以前に HCI_VS_MSFT_LE_Set_Advertising_Filter_Enable コマンドを受信したのと同じです。 許可 0x00 に設定されます。 コントローラは、このコマンドに応答してコマンド完了イベントを即座に生成する必要があります。

Command_parameters

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x05 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable のサブコマンド オペコード。

有効にする(1オクテット):

パラメーターの説明
0x00 現在のフィルター受け入れリストの動作に戻りますが、 HCI_VS_MSFT_LE_Monitor_Advertisement コマンドからの Condition に基づいて、デバイスの監視を続行します。
0x01 コントローラーで、発行されたすべての HCI_VS_MSFT_LE_Monitor_Advertisement コマンドを有効にします。

Return_parameter

Status (1 オクテット):

パラメーターの説明
0x00 コマンドが成功しました。
0x0C コントローラーは戻ってくるはずです コマンドは禁止されています 以前にコントローラが HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable でコマンドを実行します 許可 このコマンドと同じ値に設定してください。
エラー コード コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x05 HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable のサブコマンド オペコード。

マスクされない限り生成されるイベント

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable コマンドを受信すると、コントローラーはコマンド完了イベントを生成します。

HCI_VS_MSFT_Read_Absolute_RSSI

HCI_VS_MSFT_Read_Absolute_RSSI が 絶対の コントローラからの BR/EDR 接続の信号強度表示 (RSSI) 値を受信しました。

command コード コマンド パラメーター 戻りパラメータ
HCI_VS_MSFT_Read_Absolute_RSSI 選択された基本コード Subcommand_opcode、
Connection_Handle
Status、
Subcommand_opcode、
Connection_Handle、
RSSI

接続ハンドルは、RSSI が読み取られる ACL 接続を識別するために、コマンドと戻りパラメーターの両方として提供されます。 RSSI メトリクスは 絶対の 受信機の信号強度(dBm)を±6 dBの精度で測定します。 RSSI を読み取ることができない場合、RSSI メトリックは 127 に設定されます。 コントローラは常に、Command Completed イベントを使用してこのコマンドを直ちに完了する必要があります。

Command_parameters

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x06 HCI_VS_MSFT_Read_Absolute_RSSI のサブコマンド オペコード。

Connection_Handle (2 オクテット):

パラメーターの説明
0xXXXX RSSIを読み取る必要があるBR/EDR接続のハンドル。

Return_parameters

Status (1 オクテット):

パラメーターの説明
0x00 コマンドが成功しました。
0x01~0xFF コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

パラメーターの説明
0x06 HCI_VS_MSFT_Read_Absolute_RSSI のサブコマンド オペコード。

Connection_Handle (2 オクテット):

パラメーターの説明
0xXXXX RSSIが読み取られたBR/EDR接続のハンドル。

RSSI(1オクテット):

パラメーターの説明
N = 0xXX BR/EDR接続のRSSI値です。
単位: dBm
必須 範囲:-128~127(符号付き整数)

マスクされない限り生成されるイベント

HCI_VS_MSFT_Read_Absolute_RSSI コマンドが完了すると、コントローラーはコマンド完了イベントを生成します。

Microsoftが定義したBluetooth HCIイベント

すべての Microsoft 定義の Bluetooth HCI イベントはベンダー定義のイベントであり、イベント コード 0xFF を使用します。 Microsoft イベントのイベント データは、Microsoft 定義のイベントを他のベンダー定義のイベントと区別するために、常に一定のバイト文字列で始まります。 定数文字列の長さと値はコントローラーの実装者によって定義され、次の応答として返されます。 HCI_VS_MSFT_Read_Supported_Features

HCI イベント 説明
HCI_VS_MSFT_Rssi_Event HCI_VS_MSFT_RSSI_Event は HCI_VS_MSFT_モニター_Rssi コマンドが完了した。
HCI_VS_MSFT_LE_Monitor_Device_Event HCI_VS_MSFT_LE_Monitor_Device_Event は、コントローラーが Bluetooth LE デバイスの監視を開始したか、または停止したかを示します。

HCI_VS_MSFT_RSSI_Event

HCI_VS_MSFT_RSSI_Event は HCI_VS_MSFT_モニター_Rssi コマンドが完了した。 もしも ステータス パラメータがゼロの場合、リモート デバイスの RSSI 値が指定範囲外の値に変更されたため、コマンドは完了しました。 もしも ステータス パラメータがゼロ以外の場合、接続の RSSI 値を監視できなくなったため、コマンドが完了しました。

イベント イベント コード Microsoft イベントコード イベント パラメーター
HCI_VS_MSFT_RSSI_Event 0xFF 0x01 Event_prefix、
Microsoft_event_code、
Status、
Connection_Handle、
RSSI

Event_parameters

Event_prefix(可変サイズ):

パラメーターの説明
イベント接頭辞 このイベントを Microsoft 定義としてフラグを立てるイベント プレフィックス。 サイズおよび値は HCI_VS_MSFT_Read_Supported_Features 指図。

Microsoft_event_code(1オクテット):

パラメーターの説明
0x01 The event code for HCI_VS_MSFT_RSSI_Event のイベントコード。

Status (1 オクテット):

パラメーターの説明
0x00 成功しました。 接続の RSSI 値が次の条件のいずれかを満たしています。 RSSI に達したか、それを超えました RSSI_しきい値_高.
RSSI_threshold_low_time_interval 秒に対して RSSI が RSSI_threshold_low 以下になりました。
RSSI サンプリング期間 有効期限が切れたため、このイベントはホストに RSSI 値を通知するために生成されました。
0x01~0xFF 失敗しました。 接続の RSSI 値を監視できなくなります。 通常、エラー コードは、基になる ACL 接続が失われた理由を説明するコードの 1 つです。

Connection_Handle (2 オクテット):

パラメーターの説明
0xXXXX RSSI を監視する接続のハンドル。

RSSI(1オクテット):

パラメーターの説明
0xXX 接続の測定されたリンク RSSI 値。
単位: dBm
BR/EDR 範囲:-128 ~ 127(符号付き整数)
LE 範囲: -127 から 20 (符号付き整数)

HCI_VS_MSFT_LE_Monitor_Device_Event

HCI_VS_MSFT_LE_Monitor_Device_Event は、コントローラーが Bluetooth LE デバイスの監視を開始したか、または停止したかを示します。

もしも、 監視状態 パラメーター値が 1 の場合、コントローラーは指定された BD_ADDR で Bluetooth デバイスの監視を開始しました。 もしも 監視状態 パラメーターの値が 0 の場合、コントローラーは指定された BD_ADDR を持つ Bluetooth デバイスの監視を停止しました。

イベント イベント コード Microsoft イベントコード イベント パラメーター
HCI_VS_MSFT_LE_Monitor_Device_Event 0xFF 0x02 Event_prefix、
Microsoft_event_code、
Address_type、
BD_ADDR、
Monitor_handle、
Monitor_state

Monitor_state が 1 に設定された HCI_VS_MSFT_LE_Monitor_Device_Event をまだ生成していない場合、コントローラーは、 Monitor_state パラメーターが 0 に設定された HCI_VS_MSFT_LE_Monitor_Device_Event を生成しません。

Event_parameters

Event_prefix(可変サイズ):

パラメーターの説明
イベント接頭辞 このイベントを Microsoft 定義としてフラグを立てるイベント プレフィックス。 サイズおよび値は HCI_VS_MSFT_Read_Supported_Features 指図。

Microsoft_event_code(1オクテット):

パラメーターの説明
0x02 のイベントコード HCI_VS_MSFT_LE_Monitor_Device_Event.

Address_type(1オクテット):

パラメーターの説明
0x00 公開デバイスアドレス。
0x01 ランダムなデバイス アドレス.
0x02 ~ 0xFF 将来の使用のために予約されている値。

BD_ADDR(6オクテット):

パラメーターの説明
0xXXXXXXXXXXXX デバイスのBluetoothアドレスです。

Monitor_handle (1 オクテット):

パラメーターの説明
0xXX HCI_VS_MSFT_LE_Monitor_Advertisement コマンドに指定されたフィルターのハンドル。

モニター状態 (1 オクテット):

パラメーターの説明
0x00 コントローラーは、 BD_ADDRMonitor_handleで指定されたデバイスの監視を停止しました。
0x01 コントローラーは、 BD_ADDR および Monitor_handleで指定されたデバイスの監視を開始しました。

Microsoft 定義の AVDTP HCI コマンド

次の AVDTP HCI コマンドは、オーディオ サイドバンド A2DP オフロードのサポートを提供します。 詳細については、 オーディオ サイドバンド A2DP オフロードを参照してください。

HCI AVDTP コマンド 説明
HCI_VS_MSFT_Avdtp_Capabilities_Configuration オーディオ トランスポート インターフェイスを構成し、コーデック情報ブロックのリストである Bluetooth コントローラーのコーデック機能を返します。
HCI_VS_MSFT_Avdtp_Open コントローラ内で AVDTP オフロード リソースを割り当て、構成します。
HCI_VS_MSFT_Avdtp_Start オーディオ トランスポートから送信された AVDTP メディア パケットへのオーディオ ストリーミングを開始します。
HCI_VS_MSFT_Avdtp_Suspend HCI_VS_MSFT_Avdtp_Start によって開始されたストリーミング アクティビティを停止します。
HCI_VS_MSFT_Avdtp_Close HCI_VS_MSFT_Avdtp_Open によって割り当てられた AVDTP オフロード リソースを解放します。

HCI_VS_MSFT_Avdtp_Capabilities_Configuration

HCI_VS_MSFT_Avdtp_Capabilities_Configuration は、オーディオ トランスポート インターフェイスを構成し、コーデック情報ブロックのリストである Bluetooth コントローラーのコーデック機能を返します。 各コーデック情報ブロックは、サポートされている 1 つのコーデックを記述します。

以下の一部のパラメータは可変長の構造体の配列であるため、これらすべてのパラメータが 1 つの HCI コマンドと 1 つの対応する HCI イベントに適合すると想定されます。

Command_parameters

External_codec_count (1 オクテット):

Value パラメーターの説明
0x00-0xFF 後続の Codec_capability ブロックの数。

External_codec_capability(可変長):

Value パラメーターの説明
コーデック機能ブロック コーデック機能情報で説明されているコーデック機能情報ブロック。 これは、オーディオ インターフェイスに接続されたデバイスでサポートされている単一のコーデックについて説明します。

このデータ構造は External_codec_count 回繰り返されます。

Audio_interface_parameter_count (1 オクテット):

Value パラメーターの説明
0x00-0xFF 後続の Audio_interface_parameters の数。

Audio_interface_parameter (可変長)

Value パラメーターの説明
オーディオインターフェースパラメータ 前述のオーディオ インターフェイス パラメータは、オーディオ インターフェイスに接続されたデバイスによって設定されます。

このデータ構造は Audio_interface_parameter_count 回繰り返されます。

Return_parameters

Status (1 オクテット):

Value パラメーターの説明
0x00 コマンドが成功しました。
0x01-0xFF コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode _ (1 オクテット):

Value パラメーターの説明
0x07 HCI_VS_MSFT_Avdtp_Capabilities_Configuration のサブコマンド オペコード。

Internal_codec_count (1 オクテット):

Value パラメーターの説明
0x00-0xFF 後続の Internal_codec_capability ブロックの数。

Internal_codec_capability (可変長):

Value パラメーターの説明
コーデック機能ブロック オーディオ サイドバンド A2DP オフロードで説明されているコーデック機能情報ブロック。 これは、Bluetooth コントローラでサポートされる単一のコーデックについて説明します。

このデータ構造は Internal_codec_count 回繰り返されます。

Audio_interface_parameter_count (1 オクテット):

Value パラメーターの説明
0x00-0xFF 後続の Audio_interface_parameters の数。

Audio_interface_parameter (可変長)

Value パラメーターの説明
オーディオインターフェースパラメータ 上記で説明したオーディオ インターフェイス パラメータ。 ホスト ソフトウェアは、このパラメーターをオーディオ インターフェイスに接続されたデバイスに渡します。

このデータ構造は Audio_interface_parameter_count 回繰り返されます。

HCI_VS_MSFT_Avdtp_Open

コントローラ内で AVDTP オフロード リソースを割り当て、構成します。

以下の一部のパラメータは可変長の構造体の配列であるため、これらすべてのパラメータが 1 つの HCI コマンドと 1 つの対応する HCI イベントに適合すると想定されます。

Command_parameters

Connection_handle (2 オクテット)

Value パラメーターの説明
0xXXXX リモート デバイスに接続されている AVDTP メディア L2CAP チャネルを識別します。

L2cap_destination_cid (2 オクテット)

Value パラメーターの説明
0xXXXX AVDTP メディア チャネルの L2CAP 宛先 CID

L2cap_mtu (2 オクテット)

Value パラメーターの説明
0xXXXX L2CAP AVDTP メディアチャンネル MTU

Configured_codec_capability (可変長):

Value パラメーターの説明
コーデック機能ブロック オーディオ サイドバンド A2DP オフロードで説明されているコーデック機能情報ブロック。 これは、AVDTP メディア用に構成されたコーデックについて説明します。

Audio_interface_parameter_count (1 オクテット):

Value パラメーターの説明
0x00-0xFF 後続の Audio_interface_parameters の数。

Audio_interface_parameter (可変長)

Value パラメーターの説明
オーディオインターフェースパラメータ 上記で説明したオーディオ インターフェイス パラメータ。 オーディオ インターフェイスに接続されたデバイスは、特定のストリーム インスタンスに対してこれらのパラメータを指定します。

このデータ構造は Audio_interface_parameter_count 回繰り返されます。

Return_parameters

Status (1 オクテット):

Value パラメーターの説明
0x00 コマンドが成功しました。
0x01-0xFF コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

Value パラメーターの説明
0x08 HCI_VS_MSFT_Avdtp_Open のサブコマンド オペコード。

Avdtp_offload_handle (2 オクテット):

Value パラメーターの説明
0xXXXX オフロードされたストリームに割り当てられたリソースを識別します。

Audio_interface_parameter_count (1 オクテット):

Value パラメーターの説明
0x00-0xFF 後続の Audio_interface_parameters の数。

Audio_interface_parameter (可変長)

Value パラメーターの説明
オーディオインターフェースパラメータ 上記で説明したオーディオ インターフェイス パラメータ。 ホスト ソフトウェアは、このパラメーターをストリーム インスタンスのオーディオ インターフェイスに接続されたデバイスに渡します。

このデータ構造は Audio_interface_parameter_count 回繰り返されます。

HCI_VS_MSFT_Avdtp_Start

このコマンドは、オーディオ トランスポートから送信された AVDTP メディア パケットへのオーディオ ストリーミングを開始します。 このコマンドを実行すると、Bluetooth コントローラは次のアクティビティを開始します。

  • オーディオトランスポートからオーディオデータを受信します
  • エンコーダがBluetoothコントローラ内にある場合、オーディオトランスポートから受信したデータをエンコードしてエンコードされたフレームを生成します。
  • エンコーダがオーディオDSP内にある場合、オーディオトランスポートからエンコードされたフレームを抽出します。
  • エンコードされたフレームをAVDTPメディアペイロードに組み立てる
  • メディアペイロードを含むAVDTPメディアパケットを構築して送信する

Command_parameters

Avdtp_offload_handle (2 オクテット):

Value パラメーターの説明
0xXXXX オフロードされたストリームに割り当てられたリソースを識別します。

Return_parameters

Status (1 オクテット):

Value パラメーターの説明
0x00 コマンドが成功しました。
0x01-0xFF コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

Value パラメーターの説明
0x09 HCI_VS_MSFT_Avdtp_Start のサブコマンド オペコード。

HCI_VS_MSFT_Avdtp_Suspend

HCI_VS_MSFT_Avdtp_Start によって開始されたストリーミング アクティビティを停止します。

Command_parameters

Avdtp_offload_handle (2 オクテット):

Value パラメーターの説明
0xXXXX オフロードされたストリームに割り当てられたリソースを識別します

Return_parameters

Status (1 オクテット):

Value パラメーターの説明
0x00 コマンドが成功しました。
0x01-0xFF コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

Value パラメーターの説明
0x0A HCI_VS_MSFT_Avdtp_Suspend のサブコマンド オペコード。

HCI_VS_MSFT_Avdtp_Close

HCI_VS_MSFT_Avdtp_Open によって割り当てられた AVDTP オフロード リソースを解放します。

Command_parameters

Avdtp_offload_handle (2 オクテット):

Value パラメーターの説明
0xXXXX 注意: このコマンドが完了すると、この値は無効になります。

Return_parameters

Status (1 オクテット):

Value パラメーターの説明
0x00 コマンドが成功しました。
0x01-0xFF コマンドが失敗しました。 見る エラーコード 詳細については Bluetooth コアの仕様を参照してください。

Subcommand_opcode (1 オクテット):

Value パラメーターの説明
0x0B HCI_VS_MSFT_Avdtp_Close のサブコマンド オペコード。
Value パラメーターの説明
0x00
0x01 コントローラーは、 BD_ADDR および Monitor_handleで指定されたデバイスの監視を開始しました。

付録

このセクションでは、Microsoft が定義した Bluetooth HCI 拡張の例と図を示します。

例 HCI_VS_MSFT_LE_Monitor_Advertisementのマッチングパターン

この例では、受信した HCI_VS_MSFT_LE_Monitor_Advertisement コマンド、およびコマンド パラメーターに対する 3 つの異なるアドバタイズメント パケットの評価を表示します。

受け取りました HCI_VS_MSFT_LE_Monitor_Advertisement コマンドアン HCI_VS_MSFT_LE_Monitor_Advertisement コマンドはコントローラによって受信され、次のパラメータが含まれます。

パラメーター メモ
Subcommand_opcode 0x03 HCI_VS_MSFT_LE_Monitor_Advertisement のサブコマンド オペコード
RSSI_threshold_high 0x01 1dB
RSSI_threshold_low 0xCE -50dB
RSSI_threshold_low_time_interval 0x05 5 秒
RSSI_sampling_period 0xFF サンプリングはありません
条件タイプ 0x01 条件
Condition 0x02 2 つのパターンが一致している必要があります
0x03 AD タイプと開始位置を含む最初のパターンの長さ
0x01 AD型
0x00 AD タイプに従った開始位置
0x01 最初に照合されるパターン
0x06 AD タイプと開始位置を含む 2 番目のパターンの長さ
0xFF AD タイプ (メーカー固有のデータ)
0x00 AD タイプに従った開始位置
0x00 2 番目に一致するパターン
0x06
0xFF
0xFF

その後、コントローラは次のアドバタイズメント パケットを受信します。

  • アドバタイズパケット [A]

    0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF

  • アドバタイズパケット [B]

    0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x04 0xFF 0x00 0x06 0xFF

  • アドバタイズパケット [C]

    0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF

  • アドバタイズパケット [D]

    0x02 0x01 0x02 0x05 0xFF 0x00 0x06 0xFF 0x01

広告パケット [A] の一致を評価しています

説明
AD マッチングする最初のパターンのタイプ 0x01
最初に一致するパターンの長さ 0x03 - 0x02 = 0x01バイト
ADタイプ0x01の位置0x00で一致するパターン 0x01
ADタイプ0x01の0x00の位置のバイト 0x01 (マッチ!)
AD 照合する 2 番目のパターンの種類 0xFF (製造元固有のデータ)
照合される 2 番目のパターンの長さ 0x06 - 0x02 = 0x04バイト
ADタイプ0xFFの位置0x00で一致するパターン 0×00 0×06 0×FF 0×FF
ADタイプ0xFFの0x00の位置のバイト 0x00 0x06 0xFF 0xFF (マッチ!)

評決; 過ぎる (両方のパターンが一致します)

アドバタイズメントパケット [B] の一致を評価しています

説明
AD マッチングする最初のパターンのタイプ 0x01
最初に一致するパターンの長さ 0x03 - 0x02 = 0x01バイト
ADタイプ0x01の位置0x00で一致するパターン 0x01
ADタイプ0x01の0x00の位置のバイト 0x01 (マッチ!)
AD 照合する 2 番目のパターンの種類 0xFF (製造元固有のデータ)
照合される 2 番目のパターンの長さ 0x06 - 0x02 = 0x04バイト
ADタイプ0xFFの位置0x00で一致するパターン 0×00 0×06 0×FF 0×FF
ADタイプ0xFFの0x00の位置のバイト 0x00 0x06 0xFF (一致しません)

判定: 合格 (最初のパターンのみ一致)

広告パケットの一致を評価中 [C]

説明
AD マッチングする最初のパターンのタイプ 0x01
最初に一致するパターンの長さ 0x03 - 0x02 = 0x01バイト
ADタイプ0x01の位置0x00で一致するパターン 0x01
ADタイプ0x01の0x00の位置のバイト 未定義です。 広告には AD タイプ 0x01 のデータがありません。
AD 照合する 2 番目のパターンの種類 0xFF (製造元固有のデータ)
照合される 2 番目のパターンの長さ 0x06 - 0x02 = 0x04バイト
ADタイプ0xFFの位置0x00で一致するパターン 0×00 0×06 0×FF 0×FF
ADタイプ0xFFの0x00の位置のバイト 0x00 0x06 0xFF 0xFF (マッチ!)

評決: 過ぎる (2番目のパターンのみが一致します)

アドバタイズメントパケットの一致を評価中[D]

説明
AD マッチングする最初のパターンのタイプ 0x01
最初に一致するパターンの長さ 0x03 - 0x02 = 0x01バイト
ADタイプ0x01の位置0x00で一致するパターン 0x01
ADタイプ0x01の0x00の位置のバイト 0x02 (一致しません)
AD 照合する 2 番目のパターンの種類 0xFF (製造元固有のデータ)
照合される 2 番目のパターンの長さ 0x06 - 0x02 = 0x04バイト
ADタイプ0xFFの位置0x00で一致するパターン 0×00 0×06 0×FF 0×FF
ADタイプ0xFFの0x00の位置のバイト 0x00 0x06 0xFF 0x01 (一致しません)

判定: 失敗する (どちらのパターンも一致しない)

例: 広告の監視

この例は、RSSI アドバタイズメントの監視を示しています。 指定された条件に一致する受信アドバタイズメントの RSSI 値は以下に示されています。

回数 RSSI (デシベル)
1 -100
2 -90
3 -5
4 15-
5 -30
6 15-
7 -45
8 -20
9 -35
10 -45
11 70-
12 -85
13 -85
14 -85
15 -90
16 -90
17 70-
パラメーター
RSSI_threshold_high -10dB
RSSI_threshold_low -80dB
RSSI_threshold_low_time_interval 3 秒
RSSI_sampling_period 2 秒

時間の経過に伴う RSSI 値による広告モニタリングを示すグラフ。

アドバタイズメント RSSI が以下より大きい RSSI_threshold_high 時間3で。 サンプリング用の定期タイマーは時刻 3 から開始されます。 2 秒ごとに定期タイマーが満了し、受信したアドバタイズメントの平均 RSSI 値がスタックに伝播されます。

時刻 5 で定期タイマーが期限切れになると、この期間中に受信されたアドバタイズメント RSSI の平均 (-23dB) がスタックに伝播されます。

定期タイマーが時刻 13 で期限切れになると、この時間枠内に受信されたアドバタイズメント RSSI の平均は以下になります RSSI_threshold_low (-80dB). アドバタイズメント RSSI の平均 (-85 dB) がホストに伝播されます。

インスタント 15 で RSSI_threshold_low_time_interval が期限切れになると、アドバタイズメントは -85dB の RSSI でホストに伝達されます。 この例では、それ以上の広告はホストに送信されません。

例: デバイスからの BAP アナウンスの監視

CAP アクセプタとボンディングされているが接続されていない間、ホストはそのデバイスからの BAP アナウンスメントを監視できます。

パラメーター
Subcommand_opcode_v2 0x0F
RSSI_threshold_high -127
RSSI_threshold_low -127
RSSI_threshold_low_time_interval 0x05
RSSI_sampling_period 0x00
Monitor_options ビット0が設定されています。 デバイスが IRK を配布した場合にビット 1 が設定される
Advertisement_report_filtering_options ビット0、1、2の設定
Peer_device_address <address>
Peer_device_address_type <アドレスの種類>
Peer_device_IRK <IRK、ビット 1 が設定されている場合>
Condition_type 0x01
Number_of_patterns 0x01
Pattern_data 0x04 (length)
0x16 (サービスデータ - 16 ビット UUID)
0x00 (開始バイト)
0x4E(ASCS UUIDの下位バイト)
0x18(ASCS UUIDの上位バイト)

例: デバイスからの CAP アナウンスの監視

CAP コマンダーと結合されているが接続されていない間、ホストはそのデバイスからの CAP アナウンスを監視できます。

パラメーター
Subcommand_opcode_v2 0x0F
RSSI_threshold_high -127
RSSI_threshold_low -127
RSSI_threshold_low_time_interval 0x05
RSSI_sampling_period 0x00
Monitor_options ビット0が設定されています。 デバイスが IRK を配布した場合にビット 1 が設定される
Advertisement_report_filtering_options ビット0、1、2の設定
Peer_device_address <address>
Peer_device_address_type <アドレスの種類>
Peer_device_IRK <IRK、ビット 1 が設定されている場合>
Condition_type 0x01
Number_of_patterns 0x01
Pattern_data 0x04 (length)
0x16 (サービスデータ - 16 ビット UUID)
0x00 (開始バイト)
0x53(CAS UUIDの下位バイト)
0x18(CAS UUIDの上位バイト)

フローチャート: アドバタイズメントとフィルター受け入れリストのフィルター処理

このフローチャートは、アドバタイズメントの受信時のアドバタイズメント フィルタリングおよびフィルタ受け入れリスト フィルタリングのコントローラ実装例を示します。

ホストにアドバタイズが通知されるか、または HCI_VS_MSFT_LE_Monitor_Device_Event フローチャートで指定されているように。

Microsoft HCI 拡張機能のフィルタリング プロセスを示すフローチャート。

シーケンス図: アドバタイズメントに関連付けられたスキャン応答の伝達

シーケンス図: アドバタイズメントに関連付けられたスキャン応答の伝達

このシーケンス図は、アクティブ スキャンが有効な場合にアドバタイズメント フィルターを満たすアドバタイズメントに関連付けられた伝播スキャン応答を示しています。 この図は、コントローラーとホスト間のイベントの予期されるシーケンスのみを示しており、コントローラーと特定のデバイス間のイベントは示していません。 アドバタイズメント フィルターを満たすアドバタイズメント A と、アドバタイズメント フィルターを満たさないアドバタイズメント B があるとします。

アドバタイズメントに関連付けられた HCI 伝播スキャン応答を示すシーケンス図。