Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
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
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.
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 |
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 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.