Bagikan melalui


Ekstensi HCI Bluetooth yang ditentukan Microsoft

Bluetooth Host-Controller Interface (HCI) menentukan semua interaksi antara host dan pengontrol radio Bluetooth. Spesifikasi Bluetooth memungkinkan perintah dan peristiwa HCI yang ditentukan vendor untuk memungkinkan interaksi yang tidak distandarisasi antara host dan pengontrol. Microsoft mendefinisikan perintah dan peristiwa HCI khusus vendor yang dikonsumsi oleh Windows. Implementer pengontrol Bluetooth dapat menggunakan ekstensi ini untuk mengimplementasikan fitur khusus.

Persyaratan

Perintah HCI Bluetooth diidentifikasi oleh kode perintah 16-bit. Organisasi Bluetooth mendefinisikan nilai dalam rentang 0x0000 melalui 0xFBFF. Vendor menentukan nilai dalam rentang 0xFC00 hingga 0xFFFF, memungkinkan adanya 1024 kode perintah berbeda yang ditetapkan vendor.

Vendor harus memilih nilai kode perintah yang ditentukan Microsoft. Microsoft tidak dapat memilih kode perintah dan mengasumsikan bahwa tidak ada vendor lain yang menggunakan kode untuk tujuan yang bertentangan. Tidak aman untuk mengeluarkan perintah khusus vendor dan bergantung pada pengontrol untuk menolak perintah jika tidak memahaminya. Pengontrol dapat menginterpretasikan perintah sebagai operasi destruktif seperti memperbarui firmware pengontrol.

Vendor harus mengkomunikasikan nilai yang dipilih melalui metode selain pengontrol. Microsoft tidak menentukan cara mendapatkan kode yang dipilih.

Memberitahukan lapisan Bluetooth Windows tentang kode perintah yang spesifik untuk vendor

Tumpukan Windows Bluetooth membaca kode perintah khusus vendor dari kunci registri, VsMsftOpCode.

Kunci registri VsMsftOpCode memiliki jenis REG_DWORD dan data kuncinya adalah opcode khusus vendor.

Untuk menentukan opcode yang spesifik untuk vendor, gunakan arahan AddReg di bawah bagian DDInstall.HW di INF driver. Bagian tambahkan registri harus berisi:

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

Contoh:

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

Perintah HCI yang ditentukan Microsoft

Perintah HCI Deskripsi
Baca_Fitur_Didukung_HCI_VS_MSFT Menyediakan bitmap yang menjelaskan fitur yang ditetapkan oleh Microsoft yang didukung oleh pengontrol, dan menentukan awalan untuk peristiwa yang ditetapkan oleh Microsoft yang dikembalikan oleh pengontrol.
HCI_VS_MSFT_Monitor_Rssi Meminta agar pengontrol mulai memantau RSSI tautan yang terukur untuk koneksi tertentu, dan memicu peristiwa ketika RSSI tautan terukur koneksi tersebut berada di luar batas yang ditentukan.
HCI_VS_MSFT_Cancel_Monitor_Rssi Membatalkan perintah HCI_VS_MSFT_Monitor_Rssi yang dikeluarkan sebelumnya.
HCI_VS_MSFT_LE_Monitor_Advertisement Meminta agar pengontrol mulai memantau iklan yang termasuk dalam rentang RSSI yang ditentukan dan juga memenuhi persyaratan lainnya.
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement Membatalkan perintah HCI_VS_MSFT_LE_Monitor_Advertisement yang dikeluarkan sebelumnya.
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable Mengatur status filter iklan.
HCI_VS_MSFT_Read_Absolute_RSSI Membaca nilai Indikasi Kekuatan Sinyal Diterima (RSSI) absolut untuk koneksi BR/EDR dari pengontrol.

Perintah dan sub-perintah HCI yang ditentukan Microsoft

Pengontrol memahami hanya ada satu perintah HCI khusus Microsoft. Set perintah khusus Microsoft diperluas dengan menggunakan opcode. Parameter perintah pertama untuk perintah HCI yang ditentukan Microsoft adalah opcode yang menentukan sub-perintah.

Pengontrol harus mendukung HCI_VS_MSFT_Read_Supported_Features untuk mendukung subkomando Microsoft HCI lainnya. Dukungan untuk perintah lain bersifat opsional dan bergantung pada nilai yang dikembalikan oleh HCI_VS_MSFT_Read_Supported_Features. Windows tidak mengirim sub-komando yang ditentukan oleh Microsoft kecuali pengontrol menunjukkan dukungan untuk sub-komando melalui respons terhadap HCI_VS_MSFT_Read_Supported_Features.

Fitur_Terbaca_HCI_VS_MSFT

HCI_VS_MSFT_Read_Supported_Features menyediakan bitmap yang menjelaskan fitur yang ditentukan Microsoft yang didukung pengontrol, dan menentukan awalan untuk peristiwa yang ditentukan Microsoft yang dikembalikan oleh pengontrol.

Pengontrol akan selalu menyelesaikan perintah ini segera dengan peristiwa Perintah Selesai.

Perintah Kode Parameter perintah Parameter pengembalian
HCI_VS_MSFT_Read_Supported_Features Kode dasar yang dipilih Subcommand_opcode Keadaan
Subcommand_opcode,
Fitur_yang_Didukung
Microsoft_event_prefix_length,
Microsoft_event_prefix

Command_parameters

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x00 Opcode sub-perintah untuk HCI_VS_MSFT_Read_Supported_Features.

Return_parameters

Status (1 oktet):

Nilai Deskripsi parameter
0x00 Perintah berhasil.
0x01 ke 0xFF Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 byte):

Nilai Deskripsi parameter
0x00 Opcode sub-perintah untuk HCI_VS_MSFT_Read_Supported_Features.

Fitur_yang_didukung (8 oktet):

Nilai Deskripsi parameter
0x00000000 00000001 Pengontrol mendukung fitur Pemantauan RSSI untuk koneksi BR/EDR. Selain itu, pengontrol mendukung HCI_VS_MSFT_Read_Absolute_RSSI untuk membaca metrik RSSI absolut dari koneksi BR/EDR.
0x00000000 00000002 Pengontrol mendukung fitur Pemantauan RSSI untuk koneksi LE.
0x00000000 00000004 Pengontrol mendukung pemantauan RSSI untuk iklan LE legacy.
0x00000000 00000008 Pengendali mendukung Pemantauan Periklanan iklan legacy LE.
0x00000000 00000010 Pengontrol mendukung verifikasi validitas koordinat X dan Y publik pada kurva selama proses pemasangan Secure Simple untuk P-192 dan P-256.
Untuk informasi selengkapnya, lihat Spesifikasi Inti Bluetooth Erratum 10734.
0x00000000 00000020 Controller mendukung Pemantauan Iklan Berkelanjutan untuk iklan LE yang dilakukan bersamaan dengan aktivitas radio lainnya, menggunakan HCI_VS_MSFT_LE_Monitor_Advertisement [v1].
0x00000000 00000040 Direservasi.
0x00000000 00000080 Pengontrol mendukung pengalihan AVDTP dan perintah HCI_VS_MSFT_Avdtp_* yang dijelaskan dalam dokumen ini.
0x00000000 00000100 Direservasi.
0x00000000 00000200 Direservasi.
0x00000000 00000400 Pengendali mendukung HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. Selain itu, Pengontrol mendukung Pemantauan Iklan Berkelanjutan LE yang dilakukan bersamaan dengan aktivitas radio lainnya, menggunakan HCI_VS_MSFT_LE_Monitor_Advertisement [v2].
0xFFFFFFFF FFFFFF00 Bit dicadangkan untuk definisi di masa mendatang. Harus nol.

Microsoft_event_prefix_length (1 byte):

Nilai Deskripsi parameter
0x00 ke 0x20 Jumlah byte dalam bidang awalan peristiwa Microsoft sebagaimana ditentukan dalam Microsoft_event_prefixyang dikembalikan. Ini adalah jumlah byte informasi konstan di awal setiap peristiwa HCI yang ditentukan Microsoft.

Microsoft_event_prefix (panjang variabel):

Nilai Deskripsi parameter
Nilai awalan peristiwa Informasi konstanta yang diharapkan di awal setiap peristiwa yang ditentukan Microsoft. Informasi ini digunakan untuk membedakan peristiwa yang ditentukan Microsoft dari peristiwa kustom lainnya.

HCI_VS_MSFT_Monitor_Rssi

HCI_VS_MSFT_Monitor_Rssi meminta agar pengontrol mulai memantau RSSI tautan terukur untuk koneksi tertentu, dan menghasilkan peristiwa ketika RSSI tautan terukur koneksi berada di luar batas yang ditentukan.

Perintah Kode Parameter perintah Mengembalikan parameter
HCI_VS_MSFT_Monitor_Rssi Kode dasar yang dipilih Subcommand_opcode,
Connection_Handle,
Ambang_Batas_RSSI_Tinggi
Ambang_Batas_RSSI_Rendah
Interval_waktu_batas_ambang_RSSI_rendah
RSSI_periode_pengambilan_sampel
Keadaan
Subcommand_opcode

Pengontrol harus memberi tahu host nilai RSSI dengan peristiwa yang dihasilkan secara berkala (berdasarkan RSSI_sampling_period). Nilai RSSI tautan terukur harus merupakan kekuatan sinyal penerima absolut dalam dBm untuk koneksi BR/EDR.

Sebagai respons terhadap perintah HCI_VS_MSFT_Monitor_Rssi, pengontrol akan menghasilkan peristiwa Command Complete dengan status yang sama dengan nol jika pengontrol dapat mulai memantau, atau status bukan nol sebaliknya. Jika nilai status bukan nol, pengontrol tidak akan menghasilkan HCI_VS_MSFT_Rssi_Event sebagai respons terhadap perintah ini.

Pengendali akan menolak perintah jika ada perintah HCI_VS_MSFT_Monitor_Rssi lain dengan Connection_Handle yang sama masih dalam proses, atau jika handle koneksi yang ditentukan tidak valid. Pengontrol juga dapat menolak perintah karena alasan lain, seperti kelelahan sumber daya.

Diagram status ini menunjukkan status transisi pada pengontrol saat memantau RSSI untuk koneksi.

diagram Status memperlihatkan status transisi pada pengontrol saat memantau RSSI untuk koneksi.

Pengontrol akan menghasilkan HCI_VS_MSFT_Rssi_Event ketika RSSI yang diterima lebih besar dari atau sama dengan RSSI_threshold_highyang ditentukan. Setelah peristiwa ini dibuat, pengontrol tidak akan menghasilkan HCI_VS_MSFT_Rssi_Event baru untuk menentukan bahwa RSSI_threshold_high telah terlampaui sampai menghasilkan HCI_VS_MSFT_Rssi_Event yang menentukan RSSI telah berada di bawah RSSI_threshold_low.

Pengontrol akan menghasilkan HCI_VS_MSFT_Rssi_Event ketika RSSI yang diterima sama atau berada di bawah RSSI_threshold_low selama RSSI_threshold_low_time_intervalyang ditentukan. Setelah peristiwa ini dibuat, pengontrol tidak akan menghasilkan HCI_VS_MSFT_Rssi_Event baru untuk menentukan bahwa RSSI telah berada di bawah RSSI_threshold_low sampai peristiwa HCI_VS_MSFT_Rssi_Event dihasilkan untuk menentukan bahwa RSSI_threshold_high telah tercapai atau terlampaui.

Jika RSSI_sampling_period berada di antara 0x01 dan 0xFE, pengontrol akan menghasilkan HCI_VS_MSFT_Rssi_Event secara berkala setiap RSSI_sampling_period. Peristiwa ini akan memuat rata-rata RSSI yang dihitung selama periode pengambilan sampel RSSI . Jika RSSI_sampling_period 0x00 atau 0xFF, pengontrol akan tidak memberi tahu host secara berkala dengan HCI_VS_MSFT_Rssi_Event.

Command_parameters

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x01 Opcode subperintah untuk HCI_VS_MSFT_Monitor_Rssi.

Connection_Handle (2 oktet):

Nilai Deskripsi parameter
0xXXXX Pegangan untuk koneksi yang RSSI-nya harus dipantau.

RSSI_threshold_high (1 oktet):

Nilai Deskripsi parameter
0xXX Nilai RSSI maksimum yang diharapkan. Pengontrol menghasilkan peristiwa jika RSSI yang diamati menjadi lebih besar dari atau sama dengan nilai ini.
Satuan: dBm
Rentang BR/EDR: -128 hingga 127 (bilangan bulat bertanda)
LE Range: -127 hingga 20 (bilangan bulat bertanda)

RSSI_threshold_low (1 oktet):

Nilai Deskripsi parameter
0xXX Nilai RSSI minimum yang diharapkan. Pengontrol menghasilkan peristiwa jika RSSI yang diamati menjadi kurang dari atau sama dengan nilai ini.
Satuan: dBm
Rentang Wajib BR/EDR: -128 sampai 127 (bilangan bulat bertanda)
Rentang Wajib LE: -127 hingga 20 (bilangan bulat bertanda)

RSSI_threshold_low_time_interval (1 oktet):

Nilai Deskripsi parameter
0x00 Nilai yang dicadangkan.
N = 0xXX Waktu dalam detik di mana nilai RSSI harus di bawah RSSI_threshold_low sebelum HCI_VS_MSFT_Rssi_Event dihasilkan.
Periode waktu = N * 1 detik
Rentang Wajib: 0x01 ke 0x3C

RSSI_sampling_period (1 oktet):

Nilai Deskripsi parameter
0x00 Nilai cadangan.
N = 0xXX Interval pengambilan sampel dalam kelipatan 100 milidetik.
Periode waktu = N * 100 milidetik
Rentang Wajib: 0x01 ke 0xFE
0xFF Nilai yang dicadangkan.

Return_parameters

Status (1 oktet):

Nilai Deskripsi parameter
0x00 Perintah berhasil.
0x01 ke 0xFF Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.
0x07 Pengontrol akan mengembalikan Kapasitas Memori Melebihi jika tidak memiliki cukup memori untuk memproses perintah.
kode kesalahan Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x01 Opcode sub-perintah untuk HCI_VS_MSFT_Monitor_Rssi.

Peristiwa yang Dihasilkan Kecuali Ditutupi

Pengontrol akan segera menghasilkan peristiwa Command Complete ketika perintah HCI_VS_MSFT_Monitor_Rssi diterima. Jika peristiwa Selesai Perintah mengembalikan status 0, pengontrol akan menghasilkan HCI_VS_MSFT_Rssi_Event ketika salah satu kondisi berikut terjadi.

  • RSSI yang diamati untuk perangkat melalui RSSI_threshold_low_time_interval menjadi sama dengan atau kurang dari nilai RSSI_threshold_low yang ditentukan.
  • RSSI yang diamati untuk perangkat menjadi lebih besar dari atau sama dengan nilai RSSI_threshold_high yang ditentukan.
  • RSSI_sampling_period adalah valid dan periode pengambilan sampel berakhir.

Pengontrol harus melakukan semua pembersihan yang diperlukan jika konektivitas dengan perangkat yang ditentukan hilang. Dalam hal ini, perintah HCI_VS_MSFT_Cancel_Monitor_Rssi tidak dikirim ke pengontrol.

HCI_VS_MSFT_Cancel_Monitor_Rssi

HCI_VS_MSFT_Cancel_Monitor_Rssi membatalkan perintah HCI_VS_MSFT_Monitor_Rssi yang dikeluarkan sebelumnya. Pengontrol akan segera menghasilkan peristiwa Perintah Selesai sebagai respons terhadap perintah ini.

Perintah Kode Parameter perintah Parameter keluaran
HCI_VS_MSFT_Cancel_Monitor_Rssi Kode dasar yang dipilih Subcommand_opcode,
Pegangan_Koneksi
Keadaan
Subcommand_opcode

Command_parameters

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x02 Opcode subperintah untuk HCI_VS_MSFT_Cancel_Monitor_Rssi.

Connection_Handle (2 oktet):

Nilai Deskripsi parameter
0xXXXX Handle untuk koneksi yang memiliki RSSI yang harus dibatalkan.

Parameter_pengembalian

Status (1 oktet):

Nilai Deskripsi parameter
0x00 Perintah berhasil.
0x01 ke 0xFF Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x02 Opcode sub-perintah untuk HCI_VS_MSFT_Cancel_Monitor_Rssi.

Peristiwa Dihasilkan Kecuali Dimasker

Pengontrol akan menghasilkan peristiwa Command Complete ketika perintah HCI_VS_MSFT_Cancel_Monitor_RSSI diterima.

HCI_VS_MSFT_LE_Monitor_Advertisement

HCI_VS_MSFT_LE_Monitor_Advertisement meminta agar pengontrol mulai memantau iklan yang termasuk dalam rentang RSSI yang ditentukan dan juga memenuhi salah satu kondisi berikut:

  • Pola tertentu dapat dicocokkan dengan paket iklan yang diterima.
  • UUID tertentu dapat dicocokkan dengan paket iklan yang diterima.
  • Kunci Resolusi Identitas (IRK) tertentu dapat digunakan untuk menyelesaikan alamat privat perangkat tempat paket iklan berasal.
  • Alamat Bluetooth tertentu dapat dicocokkan dengan paket iklan yang diterima.

Perintah v2 mengizinkan Host untuk menggabungkan beberapa kondisi di atas dengan opsi yang mengatur sumber iklan dan target iklan yang diarahkan, untuk lebih menyempurnakan iklan mana yang dipantau. Perintah v2 juga mengizinkan Host untuk memfilter iklan yang dipantau yang menyebabkan Pengontrol menghasilkan laporan iklan.

Perintah Kode Parameter perintah Parameter pengembalian
HCI_VS_MSFT_LE_Monitor_Advertisement [v2] Kode dasar yang dipilih Subcommand_opcode_v2,
Ambang_Batas_RSSI_Tinggi
Ambang_Batas_RSSI_Rendah
interval_waktu_batas_bawah_RSSI
RSSI_sampling_period,
Monitor_options,
Opsi_penyaringan_laporan_iklan
Peer_device_address,
Peer_device_address_type,
Peer_device_IRK,
Tipe_kondisi
<Parameter Kondisi>
Keadaan
Subcommand_opcode,
Pegangan Monitor
HCI_VS_MSFT_LE_Monitor_Advertisement [v1] Kode dasar yang dipilih Subcommand_opcode_v1,
Ambang_RSSI_tinggi
Ambang_Batas_RSSI_Rendah
Ambang_Batas_Sinyal_Rendah_Interval_Waktu
Periode_Pengambilan_Sampel_RSSI
Tipe_Kondisi
<Parameter Kondisi>
Keadaan
Subcommand_opcode,
Monitor_Handle

Pengontrol akan menghasilkan peristiwa Command Complete sebagai respons terhadap perintah ini. Nilai status harus diatur ke nol jika pengontrol dapat mulai memantau, atau status bukan nol sebaliknya. Jika pengontrol tidak mendukung pemantauan RSSI untuk Iklan LE, pengontrol akan mengabaikan nilai parameter RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_interval, dan RSSI_sampling_period.

Diagram status ini menunjukkan status transisi pada pengontrol saat memantau RSSI untuk iklan.

Diagram status menunjukkan diagram transisi status untuk HCI_VS_MSFT_LE_Monitor_Advertisement.

Pengontrol akan mulai memantau iklan hanya ketika RSSI yang diterima lebih besar dari atau sama dengan RSSI_threshold_high untuk perangkat tertentu dan kecocokan Monitor_options (lihat di bawah). Pengontrol akan menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state diatur ke 1 dan Monitor_handle diatur ke pegangan untuk Kondisi ini, untuk memberi tahu host bahwa pengontrol memantau perangkat khusus ini untuk Kondisi . Selain itu, Pengendali akan mengirimkan laporan iklan pertama dari iklan yang dimonitor ke Host hanya jika Advertisement_report_filter_options cocok (lihat di bawah ini).

Monitor_options untuk sebuah filter dianggap cocok berdasarkan logika berikut (dalam pseudocode):

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)

Dan untuk iklan yang dipantau, Advertisement_report_filter_options dianggap cocok berdasarkan logika berikut (dalam pseudocode):

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)

Pengontrol akan berhenti memantau Kondisi jika RSSI dari iklan yang diterima sama dengan atau berada di bawah RSSI_threshold_low selama RSSI_threshold_low_interval untuk perangkat tertentu. Pengontrol akan menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state diatur ke 0 untuk memberi tahu host bahwa pengontrol telah berhenti memantau perangkat tertentu untuk kondisi . Setelah pengontrol menentukan HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state diatur ke 0, pengontrol tidak akan mengizinkan aliran paket iklan lebih lanjut ke host untuk perangkat sampai pengontrol memberitahukan host bahwa RSSI perangkat tertentu telah naik hingga atau di atas RSSI_threshold_high untuk perangkat tertentu terkait kondisi .

Selain itu, pengendali akan menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state disetel ke 0 untuk memberi tahu host bahwa pengendali telah berhenti memantau perangkat untuk Kondisi jika RSSI_threshold_low_time_interval yang ditentukan kedaluwarsa tanpa menerima paket iklan apa pun dari perangkat. Jika pengontrol memantau perangkat untuk kondisi tertentu, pernyataan berikut benar.

Jika pengontrol mendukung pemantauan RSSI iklan LE yang diperluas tanpa pengambilan sampel, pengontrol harus menyebarkan paket iklan anonim ke host jika nilai RSSI untuk paket tersebut lebih besar dari atau sama dengan RSSI_threshold_high. Iklan anonim tidak boleh dilacak dan peristiwa HCI_VS_MSFT_LE_Monitor_Device_Event tidak akan dihasilkan.

Jika pengontrol mendukung pemantauan RSSI iklan LE tanpa pengambilan sampel, pengontrol akan menghasilkan laporan iklan terpotong dalam kasus di mana fragmen iklan yang diterima cocok, tetapi di mana seluruh iklan tidak berhasil diterima.

Pengontrol harus mendukung setidaknya 30 pegangan monitor bersamaan, setidaknya 30 perangkat yang dilacak sekaligus, dan setidaknya 20 iklan duplikat yang dilacak secara bersamaan. Pengontrol juga dapat melakukan pemindaian LE berkelanjutan pada siklus tugas 10%.

Jika Resolusi Alamat diaktifkan di Pengontrol dan Host berniat untuk memantau perangkat jarak jauh dengan IRK-nya yang berhasil disimpan dalam daftar penyelesaian alamat Pengontrol, maka Host harus menyediakan parameter Peer_Identity_Address dan Peer_Identity_Address_Type dari entri daftar penyelesaian perangkat jarak jauh tersebut sebagai parameter Peer_device_address dan Peer_device_address_type, masing-masing.

RSSI_sampling_period Iklan Klasik Iklan yang Diperluas (Bukan Anonim) Iklan yang Diperluas (Anonim)
0x00 Pengontrol akan menyebarluaskan semua paket iklan yang diterima ke host perangkat untuk kondisi ini kecuali pengontrol sebelumnya menerima perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Aktif diatur ke 0x00. Pengontrol harus menyebarluaskan paket iklan ke host meskipun RSSI yang diterima kurang dari atau sama dengan RSSI_threshold_low selama RSSI_threshold_low_time_interval belum kedaluwarsa untuk perangkat tertentu untuk Kondisi ini. Nilai RSSI dari paket iklan ini adalah nilai RSSI dari iklan yang diterima. Jika pengendali mendukung pemantauan RSSI untuk iklan LE yang diperluas tanpa pengambilan sampel, perilakunya akan sama dengan Iklan Warisan pada kolom, kecuali bahwa paket pengiklanan didefinisikan sebagai semua PDU dalam rantai iklan. Jika pengontrol mendukung pemantauan RSSI iklan LE yang diperluas tanpa pengambilan sampel, pengontrol harus meneruskan semua paket iklan yang diterima ke host untuk perangkat pada Kondisi ini, kecuali pengontrol sebelumnya menerima perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Aktif diatur ke 0x00.
0x01 ke 0xFE Pengontrol akan menyebarluaskan paket iklan lama ke host setiap RSSI_sampling_period yang ditentukan kecuali pengontrol sebelumnya menerima perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Mengaktifkan diatur ke 0x00. Nilai RSSI yang ditentukan untuk iklan adalah rata-rata nilai RSSI yang diterima selama interval pengambilan sampel ini. Jika pengontrol tidak menerima paket iklan selama periode pengambilan sampel, pengontrol tidak akan menyebarluaskan iklan ke host. Ada kemungkinan bahwa RSSI_sampling_period kurang dari RSSI_threshold_low_time_interval dan semua iklan yang diterima selama RSSI_sampling_period memiliki RSSI di bawah RSSI_threshold_low. Pengontrol masih akan menyebarluaskan iklan dengan rata-rata nilai RSSI yang diterima selama interval pengambilan sampel ini. Jika pengontrol mendukung pemantauan RSSI pada iklan LE yang diperluas tanpa pengambilan sampel, pengontrol akan berfungsi seolah-olah RSSI_sampling_period adalah 0x00. Jika pengontrol mendukung pemantauan RSSI iklan LE yang diperpanjang tanpa pengambilan sampel, pengontrol akan berperilaku seolah-olah RSSI_sampling_period 0x00.
0xFF Pengontrol tidak akan mengizinkan paket iklan lebih lanjut mengalir ke host untuk perangkat untuk Kondisi sampai pengontrol telah memberi tahu host bahwa RSSI perangkat tertentu telah berada di bawah RSSI_threshold_low untuk RSSI_threshold_low_time_interval untuk perangkat tertentu untuk Kondisi ini. Pemberitahuan ini dilakukan dengan menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state dikonfigurasi menjadi 0. Jika pengontrol mendukung pemantauan RSSI pada iklan LE yang diperluas tanpa sampling, perilakunya sama seperti kolom Iklan Legacy. Jika pengontrol mendukung memantau RSSI iklan LE yang diperluas tanpa pengambilan sampel, pengontrol akan beroperasi seolah-olah RSSI_sampling_period adalah 0x00.

Jika pengontrol sebelumnya menerima perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Enable diatur ke 0x00, timer periode pengambilan sampel tidak akan dihentikan. Lihat contoh berikut: HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable pada filter yang memiliki periode pengambilan sampel untuk informasi selengkapnya. Jika pengontrol menerima paket iklan nonduplikasi dari perangkat yang sama, pengontrol harus mencocokkan setiap paket iklan dengan kondisi yang disimpan di pengontrol.

Jika pengontrol menerima paket iklan dari perangkat yang memenuhi beberapa Kondisi, maka pengontrol akan menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event untuk setiap Kondisi yang sesuai, dengan Monitor_handle diatur ke Kondisi yang memenuhi.

Jika controller tidak dapat memantau nilai RSSI untuk semua perangkat dalam jangkauan yang memenuhi Kondisi , controller akan terus memantau sebanyak mungkin perangkat. Keputusan tentang perangkat apa yang harus dipantau akan bergantung pada nilai RSSI dari iklan yang diterima. Pengontrol akan memantau perangkat dengan kekuatan sinyal yang diterima lebih besar.

Jika pengontrol telah memberi tahu host tentang perangkat tertentu (A) dan memantau perangkat pada kapasitas perangkat keras maksimum, dan jika perangkat lain (B) berkisar dengan nilai RSSI yang lebih tinggi, maka pengontrol akan memberi tahu host bahwa perangkat telah berhenti memantau perangkat (A) dengan membuat HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state diatur ke 0. Pengontrol juga akan menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state diatur ke 1 untuk memberi tahu host bahwa perangkat (B) sekarang sedang dipantau.

Jenis Kondisi dan Parameter Kondisi

Parameter Condition_type menentukan apakah parameter Kondisi menentukan pola, UUID, IRK, atau BD_ADDR.

Jika parameter Condition_type menentukan pola, Kondisi berisi dua bagian yang berisi jumlah pola yang ada dalam Kondisi, dan data pola.

Diagram yang menggambarkan tata letak data kondisi pola untuk HCI_VS_MSFT_LE_Monitor_Advertisement.

Jumlah Pola menentukan jumlah pola yang perlu dicocokkan.

Data Pola memiliki format berikut

  • Panjang menyatakan panjang pola ini, termasuk jenis data dan byte awal dari pola tersebut.
  • Jenis AD menentukan bidang Jenis AD.
  • Awal Pola menentukan posisi byte awal pola segera setelah tipe AD.
  • Pola memiliki ukuran (Panjang - 0x2) dan merupakan pola yang akan dicocokkan untuk Jenis AD yang ditentukan dalam paket iklan dari byte awal yang ditentukan.

Jika ada beberapa pola yang ditentukan, pengontrol akan memastikan bahwa setidaknya satu pola cocok dengan iklan yang diterima.

Jika pengontrol mendukung pemantauan RSSI dari iklan LE yang diperpanjang tanpa pengambilan sampel:

  • Pengontrol harus mencari pola dalam 251 oktet pertama dari Data Iklan Host dan dapat melihat oktet yang tersisa dari Data Iklan Host. Jika bagian AD melebihi 251 oktet pertama dari Data Iklan Host, pengontrol akan mencari pola dalam bagian AD yang berada di dalam 251 oktet pertama dari Data Iklan Host dan dapat mencari di oktet yang tersisa dari Data Iklan Host. Catatan: berdasarkan fragmentasi oleh pengiklan, 251 oktet pertama dari Data Iklan Host dapat meluas di seluruh data Adv dari beberapa PDU iklan. Pemindai harus berhati-hati untuk membatasi jumlah AuxPtrs yang mereka ikuti, untuk menghindari mengikuti rantai PDUs yang terlalu panjang.

  • Pengontrol harus melacak berdasarkan alamat per perangkat per setiap set iklan. Pengendali akan menyebarluaskan HCI_VS_MSFT_LE_Monitor_Device_Event untuk setiap set periklanan yang sesuai dengan pola, bahkan jika iklan tersebut berasal dari alamat perangkat yang sama.

Jika parameter Condition_type menentukan sebuah UUID, maka parameter Kondisi berisi Tipe UUID dan sebuah UUID. Jenis UUID menentukan apakah UUID adalah 16-bit, 32-bit, atau 128-bit. Kontroler akan menguraikan UUID Layanan dari paket iklan tersebut untuk memeriksa UUID yang ditentukan. Jika Jenis UUID didefinisikan sebagai 0x01, pengontrol akan mengurai Daftar UUID layanan 16-bit yang tidak lengkap dan daftar lengkap UUID layanan 16-bit yang ditentukan dalam Jenis AD UUID Layanan. Jika Jenis UUID didefinisikan sebagai 0x02, pengontrol akan mengurai Daftar UUID layanan 32-bit yang tidak lengkap dan daftar lengkap UUID 32-bit yang ditentukan dalam Jenis AD UUID Layanan. Jika Jenis UUID yang ditentukan adalah 0x03, pengontrol akan memproses Daftar Tidak Lengkap UUID Layanan 128-bit dan daftar lengkap UUID Layanan 128-bit yang ditentukan dalam Jenis AD UUID Layanan.

Jika Pengontrol mendukung pemantauan RSSI dari iklan LE yang diperluas tanpa harus mengambil sampel:

  • Pengontrol harus mencari UUID Layanan di 251 oktet pertama dari Data Iklan Host dan dapat memeriksa oktet yang tersisa dari Data Iklan Host. Jika bagian AD melampaui 251 oktet pertama dari Data Iklan Host, pengontrol harus mencari UUID Layanan dalam bagian AD yang berada di 251 oktet pertama dari Data Iklan Host dan dapat juga mencari di oktet Data Iklan Host yang tersisa. Catatan: berdasarkan fragmentasi oleh pengiklan, 251 oktet pertama dari Data Iklan Host dapat menjangkau data iklan dari beberapa PDU iklan. Pemindai harus berhati-hati untuk membatasi jumlah AuxPtrs yang mereka ikuti, untuk menghindari mengikuti rantai PDUs yang terlalu panjang.

  • Pengontrol harus melacak berdasarkan alamat per perangkat untuk setiap set iklan. Pengontrol akan menyebarluaskan HCI_VS_MSFT_LE_Monitor_Device_Event untuk setiap set iklan yang cocok dengan UUID Layanan meskipun iklan berasal dari perangkat yang sama.

Jika parameter Condition_type menentukan IRK, parameter Kondisi berisi IRK.

Jika parameter Condition_type menentukan Alamat Bluetooth, parameter Kondisi berisi jenis alamat dan BD_ADDR.

Pengontrol harus terus memantau berdasarkan kondisi, bahkan ketika pemindaian (Aktif atau Pasif) diaktifkan. Ketika pemindaian aktif diaktifkan, respons pemindaian untuk iklan yang cocok dengan filter harus disebarluaskan ke host.

Jika pengontrol menerima perintah HCI_VS_MSFT_LE_Monitor_Advertisement saat filter dinonaktifkan (karena perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable yang diterima sebelumnya dengan Aktifkan diatur ke 0x00), pengontrol akan menerima perintah jika bisa, tetapi mengaturnya ke status dinonaktifkan. Pengontrol juga dapat menolak perintah karena alasan lain seperti kelelahan sumber daya.

Jika semua bit Monitor_options jelas, Pengontrol harus mengembalikan kode kesalahan Parameter Perintah HCI tidak valid (0x12).

Jika bit 1 atau bit 3 pada Monitor_options diatur dan Peer_device_IRK diatur ke IRK yang tidak valid, atau tidak ada bit pada Monitor_options yang diatur, maka Pengontrol harus mengembalikan kode kesalahan Parameter Perintah HCI tidak valid (0x12).

Jika bit 0 atau bit 1 atau bit 2 atau bit 3 dari Monitor_options diatur dan Condition_type diatur ke 0x03 atau 0x04, maka Pengontrol harus mengembalikan kode kesalahan Parameter Perintah HCI tidak valid (0x12).

Jika bit 0 dari Advertisement_report_filter_options diatur dan RSSI_sampling_period memiliki nilai apa pun selain 0x00, Pengontrol harus mengembalikan kode kesalahan Parameter Perintah HCI Tidak Sah (0x12).

Parameter yang hilang

Ketika versi perintah ini dikeluarkan yang tidak menyertakan semua parameter, berikut ini akan digunakan:

Pengaturan Nilai
Opsi Monitor Bit 5 diatur; semua bit lainnya dikosongkan
Opsi_filter_laporan_iklan Bit 1 dan 2 diatur; semua bit lainnya dibersihkan
Perangkat_rekan_IRK 0x0000000000000000 0000000000000000
Alamat_perangkat_sejawat 0x000000000000
Peer_device_address_type 0x00

Command_parameters

Subcommand_opcode_v1 (1 oktet):

Nilai Deskripsi parameter
0x03 Opcode subperintah untuk HCI_VS_MSFT_LE_Monitor_Advertisement [v1].

Subcommand_opcode_v2 (1 oktet):

Nilai Deskripsi parameter
0x0F Opcode subperintah untuk HCI_VS_MSFT_LE_Monitor_Advertisement [v2].

RSSI_threshold_high (1 oktet):

Nilai Deskripsi parameter
0xXX Nilai RSSI maksimum yang diharapkan. Pengontrol menghasilkan peristiwa jika RSSI yang diamati menjadi lebih besar dari atau sama dengan nilai ini.
Satuan: dBm
Rentang Wajib: -127 hingga 20 (bilangan bulat bertanda tangan)

RSSI_threshold_low (1 oktet):

Nilai Deskripsi parameter
0xXX Nilai RSSI minimum yang diharapkan. Pengontrol menghasilkan peristiwa jika RSSI yang diamati menjadi kurang dari atau sama dengan nilai ini.
Satuan: dBm
Rentang Wajib: -127 hingga 20 (bilangan bulat bertanda tangan)

RSSI_threshold_low_time_interval (1 oktet):

Nilai Deskripsi parameter
0x00 Nilai yang dicadangkan.
N = 0xXX Waktu dalam detik di mana nilai RSSI harus di bawah RSSI_threshold_low sebelum HCI_VS_MSFT_Rssi_Event dihasilkan
Periode waktu = N * 1 detik
Rentang Wajib: 0x01 ke 0x3C.

RSSI_sampling_period (satu oktet):

Nilai Deskripsi parameter
0x00 Pengontrol akan menyebarluaskan semua iklan yang diterima kepada host.
N = 0xXX Interval pengambilan sampel dalam kelipatan 100 milidetik.
Periode waktu = N * 100 milidetik.
Rentang Wajib: 0x01 ke 0xFE
0xFF Pengontrol tidak boleh menyebarluaskan iklan yang diterima kepada host.

Opsi_monitor (1 oktet)

Nomor bit Deskripsi parameter
0 Pengendali akan memantau PDUs iklan di mana AdvA atau Alamat Identitas yang telah selaras cocok dengan Peer_device_address dan Peer_device_address_type, dan di mana TargetA tidak ada atau, jika ada, TargetA diizinkan berdasarkan Kebijakan Filter Pemindaian, jika PDUs tersebut sesuai dengan kondisi yang ditentukan dalam Condition_Type.
1 Pengendali akan memantau PDU iklan di mana AdvA dapat diidentifikasi dengan Peer_device_IRK dan di mana TargetA tidak ada atau, apabila ada, TargetA diizinkan berdasarkan "Kebijakan Filter Pemindaian", jika PDU tersebut cocok dengan kondisi yang ditentukan dalam Condition_Type. Bit ini tidak akan diatur jika Privasi Lapisan Tautan sedang digunakan dalam Pengontrol.
2 Pengontrol harus memantau PDUs iklan terarah di mana TargetA diizinkan berdasarkan Kebijakan Filter Pemindaian dan di mana AdvA atau Alamat Identitas yang telah diresolusikan cocok dengan Peer_device_address dan Peer_device_address_type. Ini terlepas dari apakah PDU cocok dengan kondisi yang ditentukan dalam Condition_Type.
3 Pengontrol harus memantau PDUs iklan yang diarahkan di mana TargetA diizinkan berdasarkan Kebijakan Filter Pemindaian dan di mana AdvA dapat diselesaikan dengan Peer_device_IRK. Ini terlepas dari apakah PDU cocok dengan kondisi yang ditentukan dalam Condition_Type. Bit ini tidak akan diatur jika Privasi Lapisan Tautan sedang digunakan dalam Pengontrol.
4 Pengontrol harus memantau PDUs iklan terarah di mana TargetA diizinkan menurut Kebijakan Filter Pemindaian, tanpa memperhatikan nilai dari Peer_device_address dan Peer_device_address_type atau Peer_device_IRK dan juga tanpa memperhatikan apakah PDU memenuhi kondisi yang ditetapkan dalam Condition_Type.
5 Pengontrol harus memantau PDUs iklan dari AdvA mana pun di mana TargetA tidak ada atau, jika ada, TargetA diizinkan berdasarkan Kebijakan Filter Pemindaian, jika PDUs tersebut cocok dengan kondisi yang ditentukan dalam Condition_Type.
Semua bit lainnya Dipesan untuk digunakan di masa mendatang

Opsi_pemfilteran_laporan_iklan (1 oktet):

Nomor bit Deskripsi parameter
0 Menyaring PDUs iklan yang duplikat. Bit ini hanya akan ditetapkan jika RSSI_sampling_period adalah 0x00.
1 Pengontrol akan menghasilkan peristiwa HCI_LE_Advertising_Report atau peristiwa HCI_LE_Directed_Advertising_Report atau peristiwa HCI_LE_Extended_Advertising_Report untuk PDUs iklan Warisan, jika PDUs tersebut cocok dengan Monitor_options yang ditentukan.
2 Pengontrol akan menghasilkan event HCI_LE_Extended_Advertising_Report untuk PDU periklanan yang diperpanjang, jika PDU tersebut sesuai dengan Monitor_options yang sudah ditentukan.
3 Pengontrol akan menghasilkan event HCI_LE_Advertising_Report atau event HCI_LE_Directed_Advertising_Report atau event HCI_LE_Extended_Advertising_Report untuk PDU iklan terarah, jika PDU tersebut cocok dengan Monitor_options yang ditentukan.
Semua bit lainnya Dicadangkan untuk digunakan di masa mendatang

Peer_device_address (6 oktet):

Nilai Deskripsi parameter
0xXXXXXXXXXXXX Alamat Perangkat Publik atau Alamat Perangkat Acak untuk dicocokkan.

Peer_device_address_type (1 oktet):

Nilai Deskripsi parameter
0x00 Alamat Perangkat Publik
0x01 Alamat Perangkat Acak
Semua nilai lainnya Dicadangkan untuk digunakan di masa mendatang

Peer_device_IRK (16 oktet):

Nilai Deskripsi parameter
0x0000000000000000 0000000000000000 IRK tidak valid. Tidak boleh menjadi nilai ketika Monitor_options bit 1 diatur atau ketika Monitor_options bit 3 diatur.
0xXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX IRK perangkat untuk dicocokkan. Peer_device_address dan Peer_device_address_type harus diisi.

Condition_type (1 oktet):

Nilai Deskripsi parameter
0x01 Kondisinya adalah pola yang harus dicocokkan pada iklan.
0x02 Kondisi ini adalah Tipe UUID dan UUID.
0x03 Kondisi tersebut adalah resolusi IRK. Dikecualikan jika salah satu dari bagian Monitor_options bit 0, 1, 2, atau 3 disetel.
0x04 Kondisi adalah tipe alamat Bluetooth dan alamat Bluetooth. Dikecualikan jika salah satu dari bit 0, 1, 2, atau 3 pada Monitor_options diaktifkan.

Kondisi: Bidang yang berlaku untuk Kondisi bergantung pada nilai Condition_type. Lihat bagian parameter Tipe_kondisi dan Kondisi untuk informasi selengkapnya.

Jumlah_pola (1 oktet):

Nilai Deskripsi parameter
0xXX Jumlah pola yang ditentukan dalam parameter Pattern_data.

Pattern_data (>3 oktet):

Nilai Deskripsi parameter
Panjang Panjang pola ini.
Jenis data Jenis Data bagian iklan. Nilai tercantum dalam dokumen Bluetooth Assigned Numbers.
Mulai byte Posisi awal pola yang akan dicocokkan untuk Jenis Data yang ditentukan.
Pola Pola yang akan dicocokkan (ukuran Panjang – byte 0x2).

UUID_type (1 oktet):

Nilai Deskripsi parameter
0x01 UUID adalah layanan 16-bit.
0x02 UUID adalah layanan 32-bit.
0x03 UUID adalah layanan 128-bit.

UUID (2, 4, atau 16 oktet):

Nilai Deskripsi parameter
0xXXXX 2 byte apabila UUID_type adalah 0x01.
4 byte jika UUID_type 0x02.
16 byte jika UUID_type 0x03.

IRK (16 oktet):

Nilai Deskripsi parameter
0xXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX IRK yang akan digunakan untuk memecahkan alamat pribadi.

Address_type (1 oktet):

Nilai Deskripsi parameter
0x00 Alamat Perangkat Publik.
0x01 Alamat Perangkat Acak.
0x02 ke 0xFF Nilai yang dicadangkan untuk penggunaan di masa mendatang.

BD_ADDR (6 oktet):

Nilai Deskripsi parameter
0xXXXXXXXXXXXX Alamat Bluetooth perangkat yang akan dipantau.

Parameter_pengembalian

Status (1 oktet):

Nilai Deskripsi parameter
0x00 Perintah berhasil.
0x07 Pengontrol akan mengembalikan Kapasitas Memori Terlampaui jika tidak memiliki cukup memori untuk memproses perintah.
Kode kesalahan Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x03 atau 0x0F Opcode subkomando untuk HCI_VS_MSFT_LE_Monitor_Advertisement [v1] atau HCI_VS_MSFT_LE_Monitor_Advertisement [v2], tergantung pada perintah mana yang diajukan.

Monitor_handle (1 oktet):

Nilai Deskripsi parameter
0x00 ke 0xFF Pegangan untuk aturan ini. Handle ini digunakan sebagai parameter untuk HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement untuk membatalkan pemantauan iklan.
Parameter ini hanya valid jika Status 0x00.

Peristiwa yang Dihasilkan Kecuali Ditutupi

Ketika perintah HCI_VS_MSFT_LE_Monitor_Advertisement diterima, pengontrol akan menghasilkan peristiwa Command Complete.

HCI_VS_MSFT_LE_Batalkan_Monitor_Iklan

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement membatalkan perintah HCI_VS_MSFT_LE_Monitor_Advertisement yang telah diterbitkan sebelumnya.

Perintah Kode Parameter perintah Mengembalikan parameter
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement Kode dasar yang dipilih Subcommand_opcode,
Pegangan_monitor
Keadaan
Subcommand_opcode

Pengontrol akan segera menghasilkan peristiwa Perintah Selesai sebagai respons terhadap perintah ini.

Command_parameters

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x04 Opcode subperintah untuk HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

Connection_Handle (1 oktet):

Nilai Deskripsi parameter
0xXX Pegangan untuk filter yang sedang dibatalkan.

Parameter_pengembalian

Status (1 oktet):

Nilai Deskripsi parameter
0x00 Perintah berhasil.
0x07 Pengontrol akan mengembalikan Kapasitas Memori Terlampaui jika tidak memiliki cukup memori untuk memproses perintah.
Kode kesalahan Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x04 Opcode untuk sub-perintah HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

Peristiwa dihasilkan jika tidak disembunyikan.

Pengontrol akan menghasilkan peristiwa Command Complete ketika perintah HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement diterima.

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable menetapkan status filter iklan.

Perintah Kode Parameter perintah Parameter pengembalian
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable Kode dasar yang dipilih Subcommand_opcode,
Aktifkan
Keadaan
Subcommand_opcode

Jika Aktifkan diatur ke 0x00, pengontrol akan menyebarluaskan iklan yang diterima ke host berdasarkan pengaturan daftar terima filter yang ada. Pengontrol akan terus memantau perangkat yang saat ini sedang dipantau dan menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state diatur ke 0 jika perangkat tidak lagi dipantau. Pengontrol akan menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state diatur ke 1 jika perangkat baru sedang dipantau. Host mungkin mengirimkan HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Aktifkan diatur ke 0x01 untuk mengaktifkan kembali semua kondisi filter.

Jika Aktifkan diatur ke 0x01, perintah ini mengaktifkan semua filter yang telah diatur dengan perintah HCI_VS_MSFT_LE_Monitor_Advertisement yang dikeluarkan sebelumnya. Pengontrol akan menolak perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable jika tidak mengubah status filter:

  • Pengontrol akan menolak perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Aktifkan diatur ke 0x01 jika sebelumnya menerima perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Aktifkan diatur ke 0x01.
  • Pengontrol akan menolak perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Aktifkan diatur ke 0x00 jika sebelumnya menerima perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Aktifkan diatur ke 0x00.

Status default filter iklan akan nonaktif. Status ini setara dengan pengontrol yang sebelumnya menerima perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Aktifkan diatur ke 0x00. Pengontrol akan segera menghasilkan peristiwa Perintah Selesai sebagai respons terhadap perintah ini.

Command_parameters

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x05 Opcode sub-perintah untuk HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable.

Aktifkan (1 oktet):

Nilai Deskripsi parameter
0x00 Kembalikan perilaku daftar terima filter saat ini, tetapi lanjutkan memantau perangkat berdasarkan Kondisi dari perintah HCI_VS_MSFT_LE_Monitor_Advertisement.
0x01 Aktifkan semua perintah HCI_VS_MSFT_LE_Monitor_Advertisement yang dikeluarkan pada pengontrol.

Return_parameter

Status (1 oktet):

Nilai Deskripsi parameter
0x00 Perintah berhasil.
0x0C Pengendali akan mengembalikan perintah Command Disallowed jika pengendali menolak perintah karena sebelumnya menerima perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable dengan Aktifkan yang diatur ke nilai yang sama dengan perintah ini.
Kode kesalahan Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x05 Opcode sub-perintah untuk HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable.

Peristiwa yang Dihasilkan Kecuali Ditutupi

Pengontrol akan menghasilkan peristiwa Command Complete ketika perintah HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable diterima.

HCI_VS_MSFT_Read_Absolute_RSSI

HCI_VS_MSFT_Read_Absolute_RSSI membaca nilai RSSI (Received Signal Strength Indication) absolut untuk koneksi BR/EDR dari sisi pengontrol.

Perintah Kode Parameter perintah Mengembalikan parameter
HCI_VS_MSFT_Read_Absolute_RSSI Kode dasar yang dipilih Subcommand_opcode,
Pengendali_Koneksi
Keadaan
Subcommand_opcode,
Connection_Handle,
RSSI

Pegangan koneksi disediakan sebagai perintah dan parameter pengembalian untuk mengidentifikasi koneksi ACL yang RSSI-nya sedang dibaca. Metrik RSSI adalah kekuatan sinyal penerima absolut dalam dBm dengan akurasi ± 6 dB. Jika RSSI tidak dapat dibaca, metrik RSSI akan diatur ke 127. Pengontrol akan selalu menyelesaikan perintah ini segera dengan peristiwa Perintah Selesai.

Command_parameters

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x06 Opcode subkomando untuk HCI_VS_MSFT_Read_Absolute_RSSI.

Connection_Handle (2 oktet):

Nilai Deskripsi parameter
0xXXXX Pegangan untuk koneksi BR/EDR yang RSSI-nya harus dibaca.

Parameter_pengembalian

Status (1 oktet):

Nilai Deskripsi parameter
0x00 Perintah berhasil.
0x01 ke 0xFF Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai Deskripsi parameter
0x06 Opcode subperintah untuk HCI_VS_MSFT_Read_Absolute_RSSI.

Connection_Handle (2 oktet):

Nilai Deskripsi parameter tersebut
0xXXXX Pegangan untuk koneksi BR/EDR yang RSSI-nya telah dibaca.

RSSI (1 oktet):

Nilai Deskripsi parameter
N = 0xXX Nilai RSSI untuk koneksi BR/EDR.
Satuan: dBm
Rentang Wajib: -128 hingga 127 (bilangan bulat bertanda tangan)

Peristiwa yang Dihasilkan Kecuali Ditutupi

Pengontrol akan menghasilkan peristiwa Command Complete ketika perintah HCI_VS_MSFT_Read_Absolute_RSSI telah selesai.

Peristiwa HCI Bluetooth yang ditentukan Microsoft

Semua peristiwa HCI Bluetooth yang ditentukan Microsoft adalah peristiwa yang ditentukan vendor dan menggunakan kode peristiwa 0xFF. Data peristiwa untuk peristiwa Microsoft selalu dimulai dengan string byte konstan untuk membedakan peristiwa yang ditentukan Microsoft dari peristiwa lain yang ditentukan vendor. Panjang dan nilai string konstanta ditentukan oleh implementer pengontrol dan dikembalikan sebagai respons terhadap HCI_VS_MSFT_Read_Supported_Features.

Peristiwa Interaksi Manusia-Komputer Deskripsi
HCI_VS_MSFT_Rssi_Event HCI_VS_MSFT_RSSI_Event menunjukkan bahwa perintah HCI_VS_MSFT_Monitor_Rssi telah selesai.
HCI_VS_MSFT_LE_Monitor_Device_Event HCI_VS_MSFT_LE_Monitor_Device_Event menunjukkan bahwa pengontrol telah memulai atau berhenti memantau perangkat BLUETOOTH LE.

HCI_VS_MSFT_RSSI_Event

HCI_VS_MSFT_RSSI_Event menunjukkan bahwa perintah HCI_VS_MSFT_Monitor_Rssi telah selesai. Jika parameter Status adalah nol, perintah selesai karena nilai RSSI untuk perangkat jarak jauh berubah menjadi nilai di luar rentang yang ditentukan. Jika parameter Status bukan nol, perintah selesai karena nilai RSSI koneksi tidak dapat lagi dipantau.

Peristiwa Kode Peristiwa Kode peristiwa Microsoft Parameter peristiwa
HCI_VS_MSFT_RSSI_Event 0xFF 0x01 Event_prefix,
Microsoft_event_code,
Keadaan
Connection_Handle,
RSSI

Event_parameters

Event_prefix (ukuran variabel):

Nilai Parameter deskripsi
Awalan peristiwa Awalan peristiwa yang menandai peristiwa ini sebagai yang ditentukan Microsoft. Ukuran dan nilainya seperti yang dikembalikan oleh perintah HCI_VS_MSFT_Read_Supported_Features.

Microsoft_event_code (1 oktet):

Nilai Deskripsi parameter
0x01 Kode peristiwa untuk HCI_VS_MSFT_RSSI_Event.

Status (1 oktet):

Nilai Deskripsi parameter
0x00 Sukses. Nilai RSSI koneksi telah memenuhi salah satu kondisi berikut. RSSI mencapai atau melebihi ambang_batas_RSSI_tinggi.
RSSI mencapai atau turun di bawah angka RSSI_threshold_low selama angka RSSI_threshold_low_time_interval detik.
RSSI_sampling_period telah kedaluwarsa dan peristiwa ini dibuat untuk memberitahukan nilai RSSI kepada host.
0x01 ke 0xFF Kegagalan. Nilai RSSI koneksi tidak dapat lagi dipantau. Kode kesalahan biasanya merupakan salah satu kode yang menjelaskan mengapa koneksi ACL yang mendasar hilang.

Connection_Handle (2 byte)

Nilai Deskripsi parameter
0xXXXX Penunjuk untuk koneksi yang pengukuran RSSI-nya akan dipantau.

RSSI (1 oktet):

Nilai Deskripsi parameter
0xXX Nilai RSSI yang diukur untuk koneksi.
Satuan: dBm
Rentang BR/EDR: -128 hingga 127 (bilangan bulat bertanda)
Rentang LE: -127 hingga 20 (bilangan bulat bertanda)

HCI_VS_MSFT_LE_Monitor_Device_Event

HCI_VS_MSFT_LE_Monitor_Device_Event menunjukkan bahwa pengontrol telah memulai atau berhenti memantau perangkat BLUETOOTH LE.

Jika nilai parameter Monitor_state adalah 1, pengontrol mulai memantau perangkat Bluetooth dengan BD_ADDR yang ditentukan. Jika nilai parameter Monitor_state adalah 0, pengontrol berhenti memantau perangkat Bluetooth dengan BD_ADDR yang ditentukan.

Peristiwa Kode Peristiwa Kode peristiwa Microsoft Parameter peristiwa
HCI_VS_MSFT_LE_Monitor_Device_Event 0xFF 0x02 Awalan_acara
Microsoft_event_code,
Tipe_Alamat
Alamat Perangkat Bluetooth (BD_ADDR)
Monitor_handle,
Monitor_state

Pengontrol tidak akan menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event dengan parameter Monitor_state diatur ke 0 jika belum menghasilkan HCI_VS_MSFT_LE_Monitor_Device_Event dengan Monitor_state diatur ke 1.

Event_parameters

Event_prefix (ukuran variabel):

Nilai Deskripsi parameter
Awalan peristiwa Awalan peristiwa yang menandai peristiwa ini sebagai yang didefinisikan oleh Microsoft. Ukuran dan nilainya seperti yang dikembalikan oleh perintah HCI_VS_MSFT_Read_Supported_Features.

Microsoft_event_code (1 oktet):

Nilai Deskripsi parameter
0x02 Kode peristiwa untuk HCI_VS_MSFT_LE_Monitor_Device_Event.

Tipe_alamat (1 oktet):

Nilai Deskripsi parameter
0x00 Alamat Perangkat Publik.
0x01 Alamat Perangkat Acak.
0x02 ke 0xFF Nilai cadangan untuk digunakan di masa mendatang.

BD_ADDR (6 oktet):

Nilai Deskripsi parameter
0xXXXXXXXXXXXX Alamat Bluetooth perangkat.

Monitor_handle (1 oktet):

Nilai Deskripsi parameter
0xXX Handel ke filter yang ditentukan untuk perintah HCI_VS_MSFT_LE_Monitor_Advertisement.

Status_monitor (1 oktet)

Nilai Deskripsi parameter
0x00 Pengontrol berhenti memantau perangkat yang ditentukan oleh BD_ADDR dan Monitor_handle.
0x01 Pengontrol mulai memantau perangkat yang ditentukan oleh BD_ADDR dan Monitor_handle.

Perintah HCI AVDTP yang didefinisikan oleh Microsoft

Perintah AVDTP HCI berikut memberikan dukungan untuk offload A2DP sideband audio. Untuk informasi selengkapnya, lihat Audio Sideband A2DP Offload.

Perintah HCI AVDTP Deskripsi
HCI_VS_MSFT_Avdtp_Capabilities_Configuration Mengonfigurasi antarmuka transport audio dan mengembalikan kemampuan codec dari pengontrol Bluetooth, yang merupakan daftar blok informasi codec.
HCI_VS_MSFT_Avdtp_Open Mengalokasikan dan mengonfigurasi sumber daya offload AVDTP dalam pengontrol.
HCI_VS_MSFT_Avdtp_Start Memulai pemutaran audio dari pengangkutan audio ke paket media AVDTP yang ditransmisikan.
HCI_VS_MSFT_Avdtp_Suspend Menghentikan aktivitas streaming yang dimulai oleh HCI_VS_MSFT_Avdtp_Start.
HCI_VS_MSFT_Avdtp_Close Merilis sumber daya offload AVDTP yang dialokasikan oleh HCI_VS_MSFT_Avdtp_Open.

Konfigurasi Kapabilitas HCI_VS_MSFT_Avdtp

HCI_VS_MSFT_Avdtp_Capabilities_Configuration mengonfigurasi antarmuka pengangkutan audio dan mengembalikan kemampuan codec pengontrol Bluetooth, yang berupa daftar blok informasi codec. Setiap blok informasi codec menjelaskan satu codec yang didukung.

Beberapa parameter di bawah ini adalah kumpulan struktur dengan panjang variabel, sehingga diasumsikan bahwa semua parameter ini akan tetap sesuai dalam satu Perintah HCI dan satu Event HCI yang bersesuaian.

Command_parameters

External_codec_count (1 oktet):

Nilai Deskripsi Parameter
0x00-0xFF Jumlah blok Codec_capability yang mengikutinya.

External_codec_capability (panjang variabel):

Nilai Deskripsi Parameter
Blok kemampuan codec Blok informasi kemampuan codec seperti yang dijelaskan dalam informasi kemampuan Codec. Ini menjelaskan satu codec yang didukung oleh perangkat yang terhubung ke antarmuka audio.

Struktur data ini berulang External_codec_count kali.

Jumlah_parameter_antarmuka_audio (1 oktet):

Nilai Deskripsi Parameter
0x00-0xFF Jumlah dari Audio_interface_parameters yang mengikuti.

Audio_interface_parameter (panjang variabel)

Nilai Deskripsi Parameter
Parameter antarmuka audio Parameter antarmuka audio seperti yang dijelaskan di atas, diatur oleh perangkat yang terhubung ke antarmuka audio.

Struktur data ini berulang Audio_interface_parameter_count kali.

Parameter_pengembalian

Status (1 oktet):

Nilai Deskripsi Parameter
0x00 Perintah berhasil.
0x01-0xFF Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode _ (1 oktet):

Nilai Deskripsi Parameter
0x07 Opcode subkomando untuk HCI_VS_MSFT_Avdtp_Capabilities_Configuration.

Internal_codec_count (1 oktet):

Nilai Deskripsi Parameter
0x00-0xFF Jumlah blok Internal_codec_capability yang mengikutinya.

Internal_codec_capability (panjang variabel):

Nilai deskripsi Parameter
Blok kemampuan codec Blok informasi kemampuan codec seperti yang dijelaskan dalam Audio Sideband A2DP Offload. Ini menjelaskan satu jenis codec yang didukung oleh kontroler Bluetooth.

Struktur data ini berulang Internal_codec_count kali.

Jumlah_parameter_antarmuka_audio (1 oktet):

Nilai deskripsi Parameter
0x00-0xFF Jumlah Audio_interface_parameters yang mengikuti.

Audio_interface_parameter (panjang variabel)

Nilai Deskripsi Parameter
Parameter antarmuka audio Parameter antarmuka audio seperti yang dijelaskan di atas. Perangkat lunak host meneruskan parameter ini ke perangkat yang terhubung ke antarmuka audio.

Struktur data ini, berulang sebanyak Audio_interface_parameter_count kali.

HCI_VS_MSFT_Avdtp_Open

Mengalokasikan dan mengonfigurasi sumber daya offload AVDTP dalam pengontrol.

Beberapa parameter di bawah ini adalah array struktur dengan panjang variabel, sehingga diasumsikan bahwa semua parameter ini masih akan sesuai dengan satu Perintah HCI dan ke dalam satu Peristiwa HCI yang sesuai.

Command_parameters

Connection_handle (2 oktet)

Nilai deskripsi Parameter
0xXXXX Mengidentifikasi saluran L2CAP media AVDTP yang terhubung ke perangkat jarak jauh.

L2cap_destination_cid (2 oktet)

Nilai deskripsi Parameter
0xXXXX CID tujuan L2CAP dari saluran media AVDTP

L2cap_mtu (2 oktet)

Nilai deskripsi Parameter
0xXXXX MTU saluran media L2CAP AVDTP

Configured_codec_capability (panjang variabel)

Nilai Deskripsi Parameter
Blok kemampuan codec Blok informasi kemampuan codec sebagaimana dijelaskan dalam Audio Sideband A2DP Offload. Ini menjelaskan codec yang dikonfigurasi untuk media AVDTP.

Jumlah_parameter_antarmuka_audio (1 oktet):

Nilai deskripsi Parameter
0x00-0xFF Jumlah Audio_interface_parameters yang mengikuti.

Audio_interface_parameter (panjang variabel)

Nilai Deskripsi Parameter
Parameter antarmuka audio Parameter antarmuka audio seperti yang dijelaskan di atas. Perangkat yang terhubung ke antarmuka audio menentukan parameter ini untuk instans aliran tertentu.

Struktur data ini berulang sebanyak Audio_interface_parameter_count kali.

Parameter_pengembalian

Status (1 oktet):

Nilai Deskripsi Parameter
0x00 Perintah berhasil.
0x01-0xFF Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai Parameter deskripsi
0x08 Opcode subperintah untuk HCI_VS_MSFT_Avdtp_Open.

Avdtp_offload_handle (2 oktet):

Nilai deskripsi Parameter
0xXXXX Mengidentifikasi sumber daya yang dialokasikan untuk aliran yang dibebaskan.

Jumlah_parameter_interface_audio (1 oktet):

Nilai Deskripsi Parameter
0x00-0xFF Jumlah parameter_antar_muka_audio (Audio_interface_parameters) yang mengikuti.

Audio_interface_parameter (panjang variabel)

Nilai Parameter deskripsi
Parameter antarmuka audio Parameter antarmuka audio seperti yang dijelaskan di atas. Perangkat lunak host meneruskan parameter ini ke perangkat yang terhubung ke antarmuka audio untuk instans aliran.

Struktur data ini berulang sebanyak "Audio_interface_parameter_count" kali.

HCI_VS_MSFT_Avdtp_Start

Perintah ini memulai streaming audio dari saluran audio ke paket media AVDTP yang sedang ditransmisikan. Setelah menjalankan perintah ini, pengontrol Bluetooth memulai aktivitas berikut.

  • Menerima data audio dari transportasi audio
  • Jika encoder berada di pengontrol Bluetooth, mengenkode data yang diterima dari transportasi audio untuk menghasilkan frame yang dikodekan.
  • Jika encoder berada di DSP audio, ekstrak bingkai yang dikodekan dari transportasi audio
  • Merakitan bingkai yang dikodekan ke dalam payload media AVDTP
  • Membangun dan mengirimkan paket media AVDTP yang berisi muatan media

Command_parameters

Avdtp_offload_handle (2 oktet):

Nilai Deskripsi parameter
0xXXXX Mengidentifikasi sumber daya yang dialokasikan untuk aliran yang dilepas.

Parameter_pengembalian

Status (1 oktet):

Nilai deskripsi Parameter
0x00 Perintah berhasil.
0x01-0xFF Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai deskripsi Parameter
0x09 Opcode sub-perintah untuk HCI_VS_MSFT_Avdtp_Start.

HCI_VS_MSFT_Avdtp_Suspend

Menghentikan aktivitas streaming yang dimulai oleh HCI_VS_MSFT_Avdtp_Start.

Command_parameters

Avdtp_offload_handle (2 byte):

Nilai Deskripsi Parameter
0xXXXX Mengidentifikasi sumber daya yang dialokasikan untuk aliran yang dilepas

Parameter_pengembalian

Status (1 oktet):

Nilai Deskripsi Parameter
0x00 Perintah berhasil.
0x01-0xFF Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai Deskripsi Parameter
0x0A Opcode subperintah untuk HCI_VS_MSFT_Avdtp_Suspend.

HCI_VS_MSFT_Avdtp_Close

Merilis sumber daya offload AVDTP yang dialokasikan oleh HCI_VS_MSFT_Avdtp_Open.

Command_parameters

Avdtp_offload_handle (2 oktet):

Nilai Deskripsi Parameter
0xXXXX Catatan: Nilai ini tidak lagi valid setelah perintah ini selesai.

Parameter_pengembalian

Status (1 oktet):

Nilai Deskripsi Parameter
0x00 Perintah berhasil.
0x01-0xFF Perintah gagal. Lihat Kode Kesalahan dalam spesifikasi Bluetooth Core untuk detailnya.

Subcommand_opcode (1 oktet):

Nilai deskripsi Parameter
0x0B Opcode perintah tambahan untuk HCI_VS_MSFT_Avdtp_Close.
Nilai Deskripsi parameter
0x00
0x01 Pengontrol mulai memantau perangkat yang ditentukan oleh BD_ADDR dan Monitor_handle.

Lampiran

Bagian ini berisi contoh dan diagram ekstensi HCI Bluetooth yang ditentukan Microsoft.

Contoh: Pola pencocokan untuk HCI_VS_MSFT_LE_Monitor_Advertisement

Contoh ini menunjukkan perintah HCI_VS_MSFT_LE_Monitor_Advertisement yang diterima dan evaluasi tiga paket iklan yang berbeda terhadap parameter perintah.

Perintah HCI_VS_MSFT_LE_Monitor_Advertisement diterima. Perintah HCI_VS_MSFT_LE_Monitor_Advertisement diterima oleh pengontrol dan berisi parameter berikut.

Pengaturan Nilai Catatan
Subcommand_opcode 0x03 Opcode sub-perintah untuk HCI_VS_MSFT_LE_Monitor_Advertisement
Ambang_Batas_RSSI_Tinggi 0x01 1dB
RSSI_threshold_low 0xCE -50dB
Ambang_Batas_Waktu_RSSI_Rendah 0x05 5 detik
RSSI_sampling_period 0xFF Tidak ada pengambilan sampel
Condition_type 0x01 Keadaan
Kondisi 0x02 Dua pola harus dicocokkan
0x03 Panjang pola pertama, termasuk Jenis AD dan posisi awal
0x01 Jenis Iklan
0x00 Posisi awal sesuai dengan Jenis AD
0x01 Pola pertama yang akan dicocokkan
0x06 Panjang pola kedua, termasuk tipe AD dan posisi awal
0xFF Jenis AD (Data khusus produsen)
0x00 Posisi awal mengikuti Jenis AD
0x00 Pola kedua yang akan dicocokkan
0x06
0xFF
0xFF

Pengontrol kemudian menerima paket iklan berikut.

  • Paket iklan [A]

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

  • Paket iklan [B]

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

  • Paket iklan [C]

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

  • Paket iklan [D]

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

Mengevaluasi kecocokan untuk paket Iklan [A]

Deskripsi Nilai
Jenis pola AD pertama yang dicocokkan 0x01
Panjang pola pertama yang akan dicocokkan 0x03 - 0x02 = 0x01 byte
Pola yang akan dicocokkan pada posisi 0x00 untuk Tipe AD 0x01 0x01
Byte di posisi 0x00 untuk jenis AD 0x01 0x01 (MATCH!)
Jenis AD pola kedua yang akan dicocokkan 0xFF (Data spesifik produsen)
Panjang pola kedua yang akan dicocokkan 0x06 - 0x02 = 0x04 byte
Pola yang akan dicocokkan pada posisi 0x00 untuk jenis AD 0xFF 0x00 0x06 0xFF 0xFF
Bytes pada posisi 0x00 untuk Tipe AD 0xFF 0x00 0x06 0xFF 0xFF (MATCH!)

Putusan: PASS (kedua pola cocok)

Mengevaluasi kecocokan untuk paket Iklan [B]

Deskripsi Nilai
Jenis pola AD pertama yang akan dicocokkan 0x01
Panjang pola pertama yang akan dicocokkan 0x03 - 0x02 = 0x01 byte
Pola yang akan dicocokkan pada posisi 0x00 untuk jenis AD 0x01 0x01
Byte pada posisi 0x00 untuk Tipe AD 0x01 0x01 (MATCH!)
Tipe AD dari pola kedua yang akan dicocokkan 0xFF (Data spesifik dari produsen)
Panjang pola kedua yang akan dicocokkan 0x06 - 0x02 = 0x04 byte
Pola yang akan dicocokkan pada posisi 0x00 untuk Tipe AD 0xFF 0x00 0x06 0xFF 0xFF
Byte pada posisi 0x00 untuk Tipe AD 0xFF 0x00 0x06 0xFF (tidak ada kecocokan)

Putusan: PASS (hanya pola pertama yang cocok)

Mengevaluasi kecocokan untuk paket Iklan [C]

Deskripsi Nilai
Jenis AD dari pola pertama yang akan dicocokkan 0x01
Panjang pola pertama yang akan dicocokkan 0x03 - 0x02 = 0x01 byte
Pola yang akan dicocokkan pada posisi 0x00 untuk Tipe AD 0x01 0x01
Byte-byte pada posisi 0x00 untuk jenis AD 0x01 Tidak Terdefinisi Iklan tidak memiliki data dengan tipe AD 0x01.
Jenis pola kedua AD yang akan dicocokkan Data Khusus Produsen
Panjang pola kedua yang akan dicocokkan 0x06 - 0x02 = 0x04 byte
Pola yang harus dicocokkan pada posisi 0x00 untuk Tipe AD 0xFF 0x00 0x06 0xFF 0xFF
Byte di posisi 0x00 untuk Tipe AD 0xFF 0x00 0x06 0xFF 0xFF (MATCH!)

Putusan: LULUS (hanya kecocokan pola kedua)

Mengevaluasi kecocokan untuk paket Iklan [D]

Deskripsi Nilai
Jenis pola AD pertama yang akan dicocokkan 0x01
Panjang pola pertama yang akan dicocokkan 0x03 - 0x02 = 0x01 byte
Pola yang akan dicocokkan pada posisi 0x00 untuk jenis AD 0x01 0x01
Byte-byte pada posisi 0x00 untuk Tipe AD 0x01 0x02 (tidak ada kecocokan)
Jenis AD pola kedua yang akan dicocokkan 0xFF (Data spesifik produsen)
Panjang pola kedua yang akan dicocokkan 0x06 - 0x02 = 0x04 byte
Pola yang akan dicocokkan pada posisi 0x00 untuk tipe AD 0xFF 0x00 0x06 0xFF 0xFF
Byte berada pada posisi 0x00 untuk jenis AD 0xFF 0x00 0x06 0xFF 0x01 (tidak ada kecocokan)

Putusan: gagal (tidak ada pola yang cocok)

Contoh: Pemantauan iklan

Contoh ini menggambarkan pemantauan iklan RSSI. Nilai RSSI untuk iklan yang diterima yang cocok dengan kondisi tertentu ditunjukkan di bawah ini.

Waktu (s) RSSI (dB)
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
Pengaturan Nilai
RSSI_threshold_high -10dB
Ambang_Bawah_RSSI -80dB
Ambang_RSSI_interval_waktu_rendah 3 detik
RSSI_sampling_period 2 detik

Graph memperlihatkan pemantauan iklan dengan nilai RSSI dari waktu ke waktu.

RSSI iklan lebih besar dari RSSI_threshold_high pada saat 3. Timer berkala untuk pengambilan sampel dimulai pada waktu 3. Setiap 2 detik, timer berkala kedaluwarsa dan nilai RSSI rata-rata dari iklan yang diterima disebarkan ke tumpukan.

Ketika pengatur waktu berkala kedaluwarsa pada waktu 5, rata-rata RSSI iklan yang diterima selama waktu ini (-23dB) diteruskan ke stack.

Ketika timer berkala kedaluwarsa pada waktu 13, rata-rata RSSI dari iklan yang diterima selama jangka waktu ini di bawah RSSI_threshold_low (-80dB). Rata-rata RSSI iklan (-85 dB) harus disebarluaskan ke host.

Ketika RSSI_threshold_low_time_interval berakhir pada waktu 15, pengumuman disebarkan ke host dengan RSSI -85dB. Tidak ada iklan lebih lanjut yang dikirim ke host dalam contoh ini.

Contoh: Memantau Pengumuman BAP melalui perangkat

Saat terikat dengan Penerima CAP, tetapi tidak terhubung, Host dapat memantau Pengumuman BAP dari perangkat tersebut.

Pengaturan Nilai
Subcommand_opcode_v2 0x0F
AmbangBatasTinggi_RSSI -127
Ambang_Batas_RSSI_Rendah -127
RSSI_ambang_rendah_interval_waktu 0x05
Periode Pengambilan Sampel RSSI 0x00
Opsi Monitor Bit 0 diatur; Bit 1 diatur jika perangkat mendistribusikan IRK
Opsi_penyaringan_laporan_iklan Bit 0, 1, dan 2 telah diatur
Alamat_perangkat_peer <alamat>
Tipe_alamat_perangkat_peer <jenis alamat>
Sebaya_perangkat_IRK <IRK, jika bit 1 diatur>
Jenis_kondisi 0x01
Jumlah_pola 0x01
Pattern_data 0x04 (panjang)
0x16 (Data Layanan – UUID 16 bit)
0x00 (Byte awal)
0x4E (byte rendah dari UUID ASCS)
0x18 (byte tinggi UUID ASCS)

Contoh: Memantau Pengumuman CAP dari perangkat

Saat terikat dengan Komandan CAP, tetapi tidak terhubung, Host dapat memantau Pengumuman CAP dari perangkat tersebut.

Pengaturan Nilai
Subcommand_opcode_v2 0x0F
Ambang_Batas_RSSI_Tinggi -127
Ambang_Batas_RSSI_Rendah -127
interval waktu batas rendah RSSI 0x05
Periode_sampling_RSSI 0x00
Opsi Monitor Bit 0 disetel; Bit 1 disetel jika perangkat mendistribusikan IRK
Opsi_penyaringan_laporan_iklan Bit 0, 1, dan 2 diatur
Alamat_perangkat_peer <alamat>
Jenis_alamat_perangkat_sebaya <jenis alamat>
Peer_perangkat_IRK <IRK, jika bit 1 diaktifkan>
Tipe_Kondisi 0x01
Jumlah_pola 0x01
Pattern_data 0x04 (panjang)
0x16 (Data Layanan – UUID 16 bit)
0x00 (Byte awal)
0x53 (byte rendah UUID CAS)
0x18 (byte tinggi UUID CAS)

Bagan Alur: Iklan dan filter menerima pemfilteran daftar

Diagram alir ini menyediakan contoh implementasi pengontrol untuk pemfilteran iklan dan pemfilteran daftar penerimaan ketika sebuah iklan diterima.

Pengontrol dapat menerapkan logika ini secara berbeda, selama host diberi tahu tentang iklan atau HCI_VS_MSFT_LE_Monitor_Device_Event seperti yang ditentukan oleh diagram alur.

Diagram Alur yang memperlihatkan proses pemfilteran ekstensi Microsoft HCI.

Diagram urutan: Menyebarkan respons pemindaian yang terkait dengan iklan

Diagram urutan: Menyebarkan respons pemindaian yang terkait dengan iklan

Diagram urutan ini menunjukkan respons pemindaian propagasi yang terkait dengan iklan yang memenuhi filter iklan saat pemindaian aktif dihidupkan. Diagram ini hanya menunjukkan urutan peristiwa yang diharapkan antara pengontrol dan host, dan tidak menampilkan peristiwa antara pengontrol dan perangkat tertentu. Misalnya ada iklan A yang memenuhi filter iklan, dan iklan B yang tidak memenuhi filter iklan.

Diagram Urutan yang menunjukkan HCI menyebarluaskan respons pemindaian yang terkait dengan iklan.