Persyaratan HCI

Host Controller Interface (HCI) digunakan untuk berinteraksi dengan pengontrol Bluetooth.

Dokumen ini memberikan daftar persyaratan HCI Bluetooth (BT) dan Bluetooth Hemat Energi (BLE). Tujuannya adalah agar vendor stack BT Host dan vendor pengontrol BT mematuhi persyaratan platform ini untuk menggunakan set fitur yang dijelaskan di bawah.

Dokumen ini merujuk pada Spesifikasi Bluetooth Core 5.2 sebagai "spec". Spesifikasi Bluetooth Core 5.2 tersedia di situs Bluetooth SIG bersama dengan dokumen lain yang diadopsi.

Ringkasan desain umum

Kemampuan dan konfigurasi chip

Sebagai platform terbuka, Android memiliki matriks rilis software, OEM, vendor, serta kemampuan platform dan chip.

Untuk mengelola berbagai lanskap dan mengelola migrasi, filosofi desain yang memungkinkan pengontrol BT mengekspos kemampuannya (di luar Spesifikasi Inti Bluetooth 5.2 standar) dijelaskan dalam dokumen ini. Stack BT host kemudian dapat menggunakan kemampuan ini untuk menentukan fitur mana yang akan diaktifkan.

Mendukung standar terbuka

Salah satu tujuan Android adalah mendukung standar terbuka setelah ratifikasi dalam spesifikasi Bluetooth. Jika fitur yang dijelaskan di bawah tersedia dalam metode HCI standar dalam spesifikasi Bluetooth mendatang, kami akan cenderung menjadikan pendekatan tersebut sebagai default.

Kemampuan khusus vendor

Perintah khusus vendor: LE_Get_Vendor_Capabilities_Command

OpCode Command Field (OCF): 0x153

Parameter perintah Ukuran Tujuan
NA Daftar parameter perintah kosong

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
max_advt_instances
(Tidak digunakan lagi)
1 oktet Jumlah instance iklan yang didukung.

Dicadangkan setelah v0.98.
Parameter ini tidak digunakan lagi di spesifikasi fitur Google v0.98 dan yang lebih tinggi untuk mendukung LE Extended Advertising yang tersedia di spesifikasi BT versi 5.0 dan yang lebih tinggi.
offloaded_resolution_of_private-address
(Tidak digunakan lagi)
1 oktet Kemampuan chip BT RPA.
Jika didukung oleh chip, fitur ini perlu diaktifkan oleh host.
0 = Tidak mampu
1 = Mampu

Dicadangkan setelah v0.98.
Parameter ini tidak digunakan lagi di spesifikasi fitur Google v0.98 dan yang lebih tinggi untuk mendukung Fitur privasi yang tersedia di spesifikasi BT versi 4.2 dan yang lebih tinggi.
total_scan_results_storage 2 oktet Penyimpanan untuk hasil pemindaian dalam byte
max_irk_list_sz 1 oktet Jumlah entri IRK yang didukung di firmware
filtering_support 1 oktet Dukungan untuk pemfilteran di pengontrol
0 = Tidak didukung
1 = Didukung
max_filter 1 oktet Jumlah filter yang didukung
activity_energy_info_support 1 oktet Mendukung pelaporan informasi aktivitas dan energi
0 = Tidak mampu
1 = Mampu
version_supported 2 oktet Menentukan versi spesifikasi fitur Google yang didukung
byte[0] = Nomor utama
byte[1] = Nomor kecil

v1.05
byte[0] = 0x01
byte[1] = 0x05

Penambahan fitur dalam versi berikut:
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
V1.04:
  • BQRv6
total_num_of_advt_tracked 2 oktet Jumlah total pengiklan yang dilacak untuk tujuan OnLost/OnFound
extended_scan_support 1 oktet Mendukung interval dan jendela pemindaian yang diperluas
debug_logging_supported 1 oktet Mendukung logging informasi debug biner dari pengontrol
LE_address_generation_offloading_support
(Tidak digunakan lagi)
1 oktet 0 = Tidak didukung
1 = Didukung

Dicadangkan setelah v0.98.
Parameter ini tidak digunakan lagi di spesifikasi fitur Google v0.98 dan yang lebih tinggi untuk mendukung Fitur privasi yang tersedia di spesifikasi BT versi 4.2 dan yang lebih tinggi.
A2DP_source_offload_capability_mask 4 Oktet Masker bit untuk jenis codec yang didukung
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 dicadangkan
bluetooth_quality_report_support 1 oktet Mendukung pelaporan peristiwa Kualitas Bluetooth
0 = Tidak mampu
1 = Mampu
dynamic_audio_buffer_support 4 oktet Mendukung buffer audio dinamis di pengontrol Bluetooth
Masker bit untuk jenis codec yang didukung
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 dicadangkan
a2dp_offload_v2_support 1 oktet Mendukung perintah offload A2DP v2 di pengontrol Bluetooth (lihat Mulai offload A2DP, Hentikan offload A2DP)
0 = Tidak didukung
1 = Didukung
iso_link_feedback_support 1 oktet Mendukung peristiwa Masukan Link ISO
0 = Tidak didukung
1 = Didukung
sniff_offload_support 1 oktet Mendukung perintah Sniff Offload di pengontrol Bluetooth
0 = Tidak didukung
1 = Didukung

Hasil pemindaian batch

Tujuan desainnya adalah untuk meningkatkan cara notifikasi peristiwa Bluetooth LE Scan Response dikirimkan ke host, guna menghemat daya di host.

Dengan mengurangi seberapa sering pengontrol memberi tahu prosesor aplikasi host untuk memindai hasil, prosesor aplikasi host dapat tetap dalam mode tidak ada aktivitas/tidur lebih lama. Hal ini mengurangi konsumsi daya di host. Parameter yang ditampilkan total_scan_results_storage dari LE_Get_Vendor_Capabilities_Command menunjukkan kemampuan chip untuk penyimpanan hasil pemindaian.

Fitur ini berfokus pada pengelolaan dan konfigurasi fasilitas penyimpanan Hasil Pemindaian LE di pengontrol Bluetooth. Penyimpanan digunakan untuk mengelompokkan data iklan dan data serta metadata pemindaian yang diterima oleh pengontrol untuk dikirimkan ke host nanti.

Firmware harus mendukung dua jenis batching, yang dapat diaktifkan secara bersamaan:

  • Terpotong. Berisi elemen informasi berikut: {MAC, TX Power, RSSI, Timestamp}
  • Penuh. Berisi elemen informasi berikut: {MAC, Daya TX, RSSI, Stempel Waktu, Data Iklan, Respons Pemindaian}

LE_Batch_Scan_Command

OCF: 0x156

Parameter perintah Ukuran Tujuan
Batch_Scan_opcode 1 oktet 0x1 - Mengaktifkan fitur khusus pelanggan
0x2 - Menetapkan parameter Batch Scan Storage
0x3 - Menetapkan parameter Batch Scan
0x4 - Membaca parameter Hasil Batch Scan

Peristiwa Command Complete akan dibuat untuk perintah ini. Mengaktifkan fitur khusus pelanggan tidak memulai pemindaian.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Batch_Scan_opcode 1 oktet 0x1 - Mengaktifkan fitur khusus pelanggan
0x2 - Menetapkan parameter Batch Scan Storage
0x3 - Menetapkan parameter Batch Scan
0x4 - Membaca parameter Hasil Batch Scan

LE_Batch_Scan_Command: Mengaktifkan fitur khusus pelanggan

Sub OCF: 0x01

Parameter subperintah Ukuran Tujuan
enable_customer_specific_feature_set 1 oktet 0x01 - Mengaktifkan fitur Pemindaian Batch
0x00 - Menonaktifkan fitur Pemindaian Batch

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Batch_Scan_opcode 1 oktet 0x1 - Mengaktifkan fitur khusus pelanggan
0x2 - Menetapkan parameter Batch Scan Storage
0x3 - Menetapkan parameter Batch Scan
0x4 - Membaca parameter Hasil Batch Scan

LE_Batch_Scan_Command: Subperintah setel parameter penyimpanan pemindaian batch

Sub OCF: 0x02

Parameter subperintah Ukuran Tujuan
Batch_Scan_Full_Max 1 oktet Ruang penyimpanan maksimum (dalam %) yang dialokasikan untuk gaya penuh
[Rentang: 0-100]
Batch_Scan_Truncated_Max 1 oktet Ruang penyimpanan maksimum (dalam %) yang dialokasikan untuk gaya yang dipangkas
[Rentang: 0-100]
Batch_Scan_Notify_Threshold 1 oktet Menyiapkan tingkat notifikasi (dalam %) untuk setiap pool penyimpanan
[Rentang: 0-100]
Menyetel ke 0 akan menonaktifkan notifikasi. Peristiwa HCI khusus vendor dibuat (Subperistiwa pelanggaran nilai minimum penyimpanan)

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Batch_scan_opcode 1 oktet 0x02 [Setel parameter Pemindaian Batch]

LE_Batch_Scan_Command: Menetapkan subperintah parameter pemindaian batch

Sub OCF: 0x03

Parameter subperintah Ukuran Tujuan
Batch_Scan_Mode 1 oktet 0x00 – Pemindaian batch dinonaktifkan
0x01 – Mode yang dipangkas diaktifkan
0x02 – Mode penuh diaktifkan
0x03 – Mode yang dipangkas dan Mode penuh diaktifkan
Duty_cycle_scan_window 4 oktet Waktu pemindaian Pemindaian Batch (jumlah slot)
Duty_cyle_scan_interval 4 oktet Periode interval Pemindaian Batch (jumlah slot)
own_address_type 1 oktet 0x00 - Alamat perangkat publik
0x01 - Alamat perangkat acak
Batch_scan_Discard_Rule 1 oktet 0 - Hapus iklan terlama
1 - Hapus iklan dengan RSSI terlemah

Subperintah ini akan memulai pemindaian batch, jika diaktifkan. Dalam pemindaian yang Disingkat, hasil disimpan dalam bentuk yang disingkat dengan kunci unik untuk gaya yang Disingkat = {BD_ADDR, scan_interval}. Artinya, hanya satu BD_ADDR will yang dicatat untuk setiap interval pemindaian. Data yang disimpan untuk mode Terpotong adalah sebagai berikut: {BD_ADDR, Tx Power, RSSI, Stempel Waktu}

Jika mode Penuh diaktifkan, pemindaian aktif akan digunakan dan Respons Pemindaian akan direkam. Kunci unik gaya Penuh = {MAC, Paket iklan}, terlepas dari interval pemindaian. Data yang disimpan untuk mode Penuh adalah {BD_ADDR, Tx Power, RSSI, Stempel Waktu, Paket iklan, Respons Pemindaian}. Dalam gaya Penuh, paket AD yang sama, jika dilihat beberapa kali di berbagai interval pemindaian, hanya dicatat satu kali. Namun, dalam mode Terpotong, yang menarik adalah visibilitas BA_ADDR di berbagai interval pemindaian (sekali per interval pemindaian). RSSI adalah nilai rata-rata dari semua duplikat iklan unik dalam interval pemindaian.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Batch_scan_opcode 1 oktet 0x03 [Set Batch Scan Parameters]

LE_Batch_Scan_Command: Subperintah baca hasil pemindaian batch

Sub OCF: 0x04

Parameter subperintah Ukuran Tujuan
Batch_Scan_Data_read 1 oktet 0x01 - Data mode terpotong
0x02 - Data mode penuh

Peristiwa Command Complete akan dibuat untuk perintah ini. Saat host mengeluarkan perintah ini, semua hasil di pengontrol mungkin tidak muat dalam satu peristiwa Penyelesaian Perintah. Host akan melakukan iterasi perintah ini hingga hasil yang sesuai dalam peristiwa Command Complete menunjukkan 0 dalam jumlah data, yang menunjukkan bahwa pengontrol tidak memiliki data lagi untuk dikirimkan ke host. Setiap peristiwa Command Complete dapat berisi beberapa catatan hanya dari satu jenis data (Penuh atau Terpotong).

Referensi waktu pengontrol dan host tidak disinkronkan. Satuan stempel waktu adalah 50 md. Nilai stempel waktu didasarkan pada saat Read_Batch_Scan_Results_Sub_cmd diberikan oleh host. Jika waktu kedatangan perintah adalah T_c di firmware, maka waktu sebenarnya saat stempel waktu diambil di firmware adalah T_fw. Waktu pelaporan adalah: (T_c - T_fw). T_c dan T_fw berada dalam domain waktu firmware. Hal ini memungkinkan host menghitung berapa lama peristiwa terjadi.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Batch_scan_opcode 1 oktet 0x03 [Setel parameter Pemindaian Batch]
Batch_Scan_data_read 1 oktet Mengidentifikasi format (Dipotong atau Lengkap)
num_of_records 1 oktet Jumlah catatan Batch_Scan_data_read
format_of_data Variabel Mode yang Dipangkas:
Address[0]: 6 oktet
Address_Type[0]: 1 oktet
Tx_Pwr[0]: 1 oktet
RSSI[0] : 1 oktet
Timestamp[0]: 2 oktet
[beberapa data (num_of_records) dengan format di atas]

Mode Lengkap:
Address[0]: 6 oktet
Address_Type[0]: 1 oktet
Tx_Pwr[0]: 1 oktet
RSSI[0]: 1 oktet
Timestamp[0]: 2 oktet
Adv packet_len[0]: 1 oktet
Adv_packet[0]: Adv_packet_len oktet
Scan_data_resp_len[0]: 1 oktet
Scan_data_resp[0]: Scan_data_resp oktet
[beberapa data dengan format di atas (num_of_records)]

Filter Konten Paket Iklan

Gunakan ini untuk mengaktifkan/menonaktifkan/menyiapkan Filter Konten Paket Iklan (APCF) di pengontrol. APCF memfilter laporan iklan di pengontrol, tetapi tidak memfilter iklan berkala.

LE_APCF_Command

OCF: 0x157

Parameter perintah Ukuran Tujuan
APCF_opcode 1 oktet 0x00 - APCF Enable
0x01 - APCF Set Filtering parameters
0x02 - APCF Broadcaster Address
0x03 - APCF Service UUID
0x04 - APCF Service Solicitation UUID
0x05 - APCF Local Name
0x06 - APCF Manufacturer Data
0x07 - APCF Service Data
0x08 - APCF Transport Discovery Service
0x09 - APCF AD Type Filter
0x10 ~ 0xAF - Dicadangkan untuk penggunaan di masa mendatang
0xB0 ~ 0xDF - Dicadangkan untuk vendor
0xE0 ~ 0xFE - Dicadangkan untuk penggunaan di masa mendatang
0xFF - APCF Read extended Features

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status pengembalian
APCF_opcode 1 oktet 0x00 - APCF Enable
0x01 - APCF Set Filtering parameters
0x02 - APCF Broadcaster Address
0x03 - APCF Service UUID
0x04 - APCF Service Solicitation UUID
0x05 - APCF Local Name
0x06 - APCF Manufacturer Data
0x07 - APCF Service Data
0x08 - APCF Transport Discovery Service
0x09 - APCF AD Type Filter
0x10 ~ 0xAF - Dicadangkan untuk penggunaan di masa mendatang
0xB0 ~ 0xDF - Dicadangkan untuk vendor
0xE0 ~ 0xFE - Dicadangkan untuk penggunaan di masa mendatang
0xFF - APCF Read extended Features

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

Parameter subperintah Ukuran Tujuan
APCF_enable 1 oktet 0x01 - Aktifkan fitur APCF
0x00 - Nonaktifkan fitur APCF

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0x0 - Aktifkan APCF
APCF_Enable 1 oktet Pengaktifan/penonaktifan ditetapkan melalui APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

Subperintah ini digunakan untuk menambahkan atau menghapus spesifikasi filter atau menghapus daftar filter untuk pemfilteran di chip.

Sub OCF: 0x01

Parameter subperintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus filter tertentu beserta entri fitur terkait di tabel lain.
Hapus akan menghapus semua filter dan entri terkait di tabel lainnya.
APCF_Filter_Index 1 oktet Indeks filter (0, max_filter-1)
APCF_Feature_Selection 2 oktet Masker bit untuk fitur yang dipilih:
Bit 0: Disetel untuk mengaktifkan filter Alamat Siaran
Bit 1: Disetel untuk mengaktifkan filter Perubahan Data Layanan
Bit 2: Disetel untuk mengaktifkan pemeriksaan UUID Layanan
Bit 3: Disetel untuk mengaktifkan pemeriksaan UUID Permintaan Layanan
Bit 4: Disetel untuk mengaktifkan pemeriksaan Nama Lokal
Bit 5: Disetel untuk mengaktifkan Pemeriksaan Data Produsen
Bit 6: Disetel untuk mengaktifkan Pemeriksaan Data Layanan
Bit 7: Disetel untuk mengaktifkan Pemeriksaan Layanan Penemuan Transportasi
Bit 8: Disetel untuk mengaktifkan Pemeriksaan Jenis AD
APCF_List_Logic_Type 2 oktet Operasi logika untuk setiap pemilihan fitur (per posisi bit) yang ditentukan dalam APCF_Feature_Selection.
Hanya valid jika fitur diaktifkan.
Nilai posisi bit:
0: OR
1: AND
Jika logika "AND" dipilih, paket ADV akan lulus filter hanya jika berisi SEMUA entri dalam daftar.
Jika logika "OR" dipilih, paket ADV akan lulus filter jika berisi salah satu entri dalam daftar.
APCF_Filter_Logic_Type 1 oktet 0x00: OR
0x01: AND
Catatan: Jenis logika tidak berlaku (N/A) untuk tiga kolom pertama APCF_Feature_Selection, yang selalu berupa logika "AND". Hanya berlaku untuk empat kolom (Bit 3 - Bit 6) dari APCF_Feature_Selection.
rssi_high_thresh 1 oktet [dalam dBm]
Pengiklan dianggap terlihat hanya jika sinyal lebih tinggi daripada nilai minimum tinggi RSSI. Jika tidak, firmware harus berperilaku seolah-olah tidak pernah melihatnya.
delivery_mode 1 oktet 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 oktet Hanya valid jika delivery_mode adalah on_found.
[dalam milidetik]
Waktu agar firmware tetap ada dan mengumpulkan iklan tambahan sebelum melaporkan.
onfound_timeout_cnt 1 oktet Hanya valid jika delivery_mode adalah on_found.
[count]
Jika iklan di onFound tetap ada di firmware selama durasi onfound_timeout, iklan tersebut akan mengumpulkan beberapa iklan dan jumlahnya diperiksa. Jika jumlah melebihi onfound_timeout_cnt, jumlah tersebut akan dilaporkan OnFound segera setelahnya.
rssi_low_thresh 1 oktet Hanya valid jika delivery_mode adalah on_found.
[dalam dBm]
Paket pengiklan dianggap tidak terlihat jika RSSI paket yang diterima tidak di atas nilai minimum RSSI.
onlost_timeout 2 oktet Hanya valid jika delivery_mode adalah on_found.
[dalam milidetik]
Jika iklan, setelah ditemukan, tidak terlihat secara berurutan selama periode lost_timeout, iklan tersebut akan langsung dilaporkan hilang.
num_of_tracking_entries 2 oktet Hanya valid jika delivery_mode adalah on_found.
[count]
Jumlah total pengiklan yang akan dilacak per filter.

Nilai RSSI harus menggunakan komplemen 2 untuk merepresentasikan nilai negatif.

Host harus dapat mengonfigurasi beberapa filter dengan APCF_Application_Address_type disetel ke 0x02 (untuk semua alamat penyiar) untuk mengelola berbagai kombinasi filter.

Pemfilteran, pengelompokan, dan pelaporan adalah konsep yang saling terkait. Setiap iklan dan respons pemindaian terkait harus melalui semua filter, satu per satu. Dengan demikian, tindakan yang dihasilkan (delivery_mode) terkait erat dengan pemfilteran. Mode pengiriman adalah sebagai berikut: report_immediately, batch, dan onFound. Nilai OnLost terkait dengan OnFound dalam arti bahwa nilai tersebut akan muncul setelah OnFound saat kalah.

Alur pemrosesan ini menggambarkan model konseptual:

Saat frame iklan (atau respons pemindaian) diterima, frame tersebut diterapkan ke semua filter dalam urutan serial. Iklan dapat menyebabkan pelaporan langsung berdasarkan satu filter dan pengelompokan yang sama karena tindakan filter yang berbeda.

Nilai minimum RSSI (tinggi dan rendah) memberikan kemampuan untuk mengontrol kapan frame terlihat untuk pemrosesan filter, bahkan saat paket yang valid diterima oleh pengontrol. Jika mode pengiriman disetel ke segera atau berkelompok, RSSI frame akan dipertimbangkan untuk pemrosesan pengontrol lebih lanjut. Aplikasi yang berbeda memerlukan pelaporan dan perilaku batching yang berbeda. Hal ini memungkinkan beberapa aplikasi memiliki pelaporan langsung dan/atau pengelompokan hasil dalam firmware secara bersamaan. Contohnya adalah kasus ketika pemindaian batch aktif dari satu aplikasi dan kemudian pemindaian LE reguler dikeluarkan oleh aplikasi lain. Sebelum pemindaian batch dikeluarkan, framework/aplikasi menetapkan filter yang sesuai. Kemudian, saat aplikasi kedua mengeluarkan pemindaian reguler, pengelompokan sebelumnya akan berlanjut. Namun, karena pemindaian reguler, hal ini mirip dengan menambahkan filter null secara konseptual (bersama dengan semua filter yang ada) bersama dengan perintah pemindaian LE. Parameter perintah pemindaian LE lebih diutamakan saat aktif. Jika pemindaian LE reguler dinonaktifkan, pengontrol akan kembali ke pemindaian batch sebelumnya, jika ada.

Mode pengiriman OnFound didasarkan pada filter yang dikonfigurasi. Kombinasi yang memicu keberhasilan tindakan filter dianggap sebagai entitas yang akan dilacak untuk onLost. Peristiwa yang sesuai adalah sub-peristiwa pelacakan Advt LE.

Transisi OnFound/OnLost untuk filter (jika diaktifkan) akan terlihat seperti berikut:

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0x01 - APCF Set Filtering Parameters
APCF_Action 1 oktet APCF_Action perintah echo balik
APCF_AvailableSpaces 1 oktet Jumlah entri yang tersedia dalam tabel filter

LE_APCF_Command: broadcast_address_sub_cmd

Subperintah ini digunakan untuk menambahkan atau menghapus alamat pengiklan atau untuk menghapus daftar alamat pengiklan untuk pemfilteran on-chip.

Sub OCF: 0x02

Parameter subperintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus alamat penyiar yang ditentukan dalam filter yang ditentukan.
Clear akan menghapus semua alamat penyiar dalam filter yang ditentukan.
APCF_Filter_Index 1 oktet Indeks filter (0, max_filter-1)
APCF_Broadcaster_Address 6 oktet Alamat perangkat 6 byte yang akan ditambahkan ke atau dihapus dari daftar alamat penyiar
APCF_Application_Address_type 1 oktet 0x00: Publik
0x01: Acak
0x02: T/A (abaikan jenis alamat)
Untuk memfilter laporan iklan dengan jenis alamat identitas (0x02, 0x03). Untuk mendapatkan laporan iklan dengan jenis alamat 0x02 dan 0x03, tetapkan kolom ini ke 0x02: NA (abaikan jenis alamat).

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0x02 - Alamat Penyiaran APCF
APCF_Action 1 oktet APCF_Action perintah echo balik
APCF_AvailableSpaces 1 oktet Jumlah entri gratis yang masih tersedia di tabel Alamat Siaran

LE_APCF_Command: service_uuid_sub_cmd

Subperintah ini digunakan untuk menambahkan atau menghapus UUID layanan atau menghapus daftar UUID layanan untuk pemfilteran di chip.

Sub OCF: 0x03

Parameter subperintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus alamat UUID layanan yang ditentukan dalam filter yang ditentukan.
Clear akan menghapus semua UUID layanan dalam filter yang ditentukan.
APCF_Filter_Index 1 oktet Indeks filter (0, max_filter-1)
APCF_UUID 2,4,16 oktet UUID Layanan (16-bit, 32-bit, atau 128-bit) untuk ditambahkan ke, atau dihapus dari, daftar.
APCF_UUID_MASK 2,4,16 oktet Masker UUID Layanan (16-bit, 32-bit, atau 128-bit) yang akan ditambahkan ke daftar. Panjangnya harus sama dengan APCF_UUID.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0x03 - UUID Layanan APCF
APCF_Action 1 oktet APCF_Action perintah echo balik
APCF_AvailableSpaces 1 oktet Jumlah entri gratis yang masih tersedia dalam tabel UUID Layanan

LE_APCF_Command: solicitation_uuid_sub_cmd

Subperintah ini digunakan untuk menambahkan atau menghapus UUID permintaan atau menghapus daftar UUID permintaan untuk pemfilteran on-chip.

Sub OCF: 0x04

Parameter subperintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus alamat UUID permintaan dalam filter yang ditentukan.
Clear akan menghapus semua UUID permintaan di filter yang ditentukan.
APCF_Filter_Index 1 oktet Indeks filter (0, max_filter-1)
APCF_UUID 2,4,16 oktet UUID Permintaan (16-bit, 32-bit, atau 128-bit) yang akan ditambahkan ke atau dihapus dari daftar.
APCF_UUID_MASK 2,4,16 oktet Masker UUID Permintaan (16-bit, 32-bit, atau 128-bit) yang akan ditambahkan ke daftar. Panjangnya harus sama dengan APCF_UUID.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0x04 - UUID Permintaan APCF
APCF_Action 1 oktet APCF_Action perintah echo balik
APCF_AvailableSpaces 1 oktet Jumlah entri gratis yang masih tersedia dalam tabel UUID Permintaan

LE_APCF_Command: local_name_sub_cmd

Subperintah ini digunakan untuk menambahkan atau menghapus string nama lokal atau untuk menghapus daftar string nama lokal untuk pemfilteran on-chip.

Sub OCF: 0x05

Parameter subperintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus string nama lokal yang ditentukan dalam filter yang ditentukan.
Clear akan menghapus semua string nama lokal dalam filter yang ditentukan.
APCF_Filter_Index 1 oktet Indeks filter (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Ukuran variabel String karakter untuk nama lokal.

Catatan:
  • Saat ini, jumlah karakter maksimum dalam string nama lokal adalah 29
  • Tidak berlaku jika tindakan adalah "Hapus" (0x2)

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0x05 - APCF Local Name
APCF_Action 1 oktet APCF_Action perintah echo balik
APCF_AvailableSpaces 1 oktet Jumlah entri gratis yang masih tersedia di tabel Nama lokal

LE_APCF_Command: manf_data_sub_cmd

Subperintah ini digunakan untuk menambahkan atau menghapus string data produsen atau untuk menghapus daftar string data produsen untuk pemfilteran on-chip.

Sub OCF: 0x06

Parameter subperintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus string data produsen yang ditentukan dalam filter yang ditentukan.
Clear akan menghapus semua string data produsen dalam filter yang ditentukan.
APCF_Filter_Index 1 oktet Indeks Filter (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Ukuran variabel String karakter untuk data produsen.

Catatan:
  • Saat ini, jumlah karakter maksimum dalam string nama lokal adalah 29
  • Tidak berlaku jika tindakan adalah "Hapus" (0x2)
APCF_ManData_Mask Ukuran variabel Masker data manufaktur yang akan ditambahkan ke daftar. Panjangnya harus sama dengan APCF_LocName_or_ManData_or_SerData.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0x06 - Data Produsen APCF
APCF_Action 1 oktet APCF_Action perintah echo balik
APCF_AvailableSpaces 1 oktet Jumlah entri gratis yang masih tersedia di tabel Data Produsen

LE_APCF_Command: service_data_sub_cmd

Subperintah ini digunakan untuk menambahkan atau menghapus string data layanan atau untuk menghapus daftar string data layanan untuk pemfilteran on-chip.

Sub OCF: 0x07

Parameter subperintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus string data layanan yang ditentukan dalam filter yang ditentukan.
Clear akan menghapus semua string data layanan dalam filter yang ditentukan.
APCF_Filter_Index 1 oktet Indeks Filter (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Ukuran variabel String karakter untuk data layanan.

Catatan:
  • Saat ini, jumlah karakter maksimum dalam string nama lokal adalah 29
  • Tidak berlaku jika tindakan adalah "Hapus" (0x2)
APCF_LocName_Mandata_or_SerData_Mask Ukuran variabel Masker data layanan yang akan ditambahkan ke daftar. Panjangnya harus sama dengan APCF_LocName_or_ManData_or_SerData.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0x07 - Data Layanan APCF
APCF_Action 1 oktet APCF_Action perintah echo balik
APCF_AvailableSpaces 1 oktet Jumlah entri gratis yang masih tersedia untuk tabel Data Layanan

LE_APCF_Command: ad_type_sub_cmd

Subperintah ini digunakan untuk menambahkan atau menghapus jenis AD atau menghapus daftar jenis AD untuk pemfilteran on-chip. Gunakan read_extended_features_sub_cmd untuk memeriksa apakah perintah ini didukung atau tidak.
Jika APCF_AD_DATA_Length adalah 0, filter APCF_AD_TYPE tanpa membandingkan Data AD dan Masker Data AD. Jika panjang data paket ADV yang diterima melebihi AD_DATA_LENGTH, bandingkan hanya AD_DATA_LENGTH byte pertama Data Iklan dan abaikan data yang tersisa.

Sub OCF: 0x09

Parameter subperintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus jenis AD yang ditentukan dalam filter yang ditentukan.
Hapus akan menghapus semua jenis AD dalam filter yang ditentukan.
APCF_Filter_Index 1 oktet Indeks Filter (0, max_filter-1)
APCF_AD_TYPE 1 oktet Jenis AD untuk ditambahkan ke, atau dihapus dari, daftar. Diabaikan jika APCF_Action adalah 0x02 (Hapus)
APCF_AD_DATA_Length 1 oktet 0x00 - berarti jangan memfilter konten data
Diabaikan jika APCF_Action adalah 0x02 (Hapus)
APCF_AD_DATA Ukuran variabel Ukuran variabel, berdasarkan APCF_AD_DATA_Length
Abaikan jika APCF_Action adalah 0x02 (Hapus)
APCF_AD_DATA_MASK Ukuran variabel Ukuran variabel, berdasarkan APCF_AD_DATA_Length
Diabaikan jika APCF_Action adalah 0x02 (Hapus)
Panjangnya harus sama dengan APCF_AD_DATA.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0x09 - Jenis Iklan APCF
APCF_Action 1 oktet APCF_Action perintah echo balik
APCF_AvailableSpaces 1 oktet Jumlah entri gratis yang masih tersedia di tabel Jenis Iklan

LE_APCF_Command: read_extended_features_sub_cmd

Subperintah ini digunakan untuk membaca fitur APCF yang diperluas.

Sub OCF: 0xFF

Parameter subperintah Ukuran Tujuan
Tidak berlaku Parameter perintah kosong.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
APCF_opcode 1 oktet 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 oktet

Masker bit untuk fitur tambahan yang didukung:

  • Bit 0: Mendukung filter Transport Discovery Service
  • Bit 1: Mendukung filter Jenis Iklan
  • Bit 2 ~15: Dicadangkan untuk penggunaan di masa mendatang

Nilai bit

  • 0 = Tidak didukung
  • 1 = Didukung

Perintah informasi energi dan aktivitas pengontrol

Tujuan informasi ini adalah agar fungsi sistem host yang lebih tinggi dapat menganalisis total aktivitas semua komponen, termasuk pengontrol BT dan status makronya, bersamaan dengan apa yang terjadi di aplikasi dan framework. Untuk melakukannya, informasi berikut diperlukan dari stack BT dan pengontrol:

  • Stack BT: Melaporkan status operasional makro pengontrol saat ini
  • Firmware: Melaporkan informasi aktivitas dan energi gabungan

Status makro stack host BT, sebagaimana ditentukan di tingkat pengguna:

  • Tidak ada aktivitas: [pemindaian halaman, iklan LE, pemindaian pertanyaan, pemindaian LE]
  • Pindai: [paging/inquiry/trying to connect]
  • Aktif: [Link ACL aktif, link SCO sedang berlangsung, mode sniffing]

Aktivitas yang dilacak pengontrol selama masa pakainya adalah waktu Tx, waktu Rx, waktu tidak ada aktivitas, dan total energi yang digunakan. Data tersebut dihapus saat dibaca dari host.

LE_Get_Controller_Activity_Energy_Info

Ini adalah perintah khusus vendor.

OCF: 0x159

Parameter subperintah Ukuran Tujuan
NA Parameter perintah kosong

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
total_tx_time_ms 4 oktet Total waktu melakukan Tx
total_rx_time_ms 4 oktet Total waktu melakukan Rx
total_idle_time_ms 4 oktet Total waktu dalam kondisi tidak aktif (status daya rendah non-tidur)
total_energy_used 4 oktet Total energi yang digunakan [hasil kali arus (mA), voltase (V), dan waktu (ms)]

Perintah parameter pemindaian set yang diperluas LE

Perintah ini dapat digunakan untuk mengaktifkan jendela dan interval pemindaian yang lebih besar di pengontrol. Sesuai dengan Spesifikasi BT Core 5.2, jendela dan interval pemindaian memiliki batas atas 10,24 detik, yang menghambat interval pemindaian di luar 10,24 detik untuk aplikasi.

Referensi dasar: Spesifikasi BT Core 5.2, halaman 2493 (Perintah Parameter Pemindaian Set LE)

OCF: 0x15A

Parameter Perintah Ukuran Tujuan
LE_Ex_Scan_Type 1 oktet 0x00 - Pemindaian pasif. Tidak ada paket SCAN_REQ yang akan dikirim (default).
0x01 - Pemindaian aktif. Paket SCAN_REQ dapat dikirim.
LE_Ex_Scan_Interval 4 oktet Ditentukan sebagai interval waktu dari saat Pengontrol memulai pemindaian LE terakhirnya hingga memulai pemindaian LE berikutnya.
Rentang: 0x0004 hingga 0x00FFFFFF
Default: 0x0010 (10 md)
Waktu = N * 0,625 md
Rentang waktu: 2,5 md hingga 10442,25 detik
LE_Ex_Scan_Window 4 oktet Durasi pemindaian LE. LE_Scan_Window harus lebih kecil daripada atau sama dengan LE_Scan_Interval.
Rentang: 0x0004 hingga 0xFFFF
Default: 0x0010 (10 md)
Waktu = N * 0,625 md
Rentang Waktu: 2,5 md hingga 40,95 detik
Own_Address_Type 1 oktet 0x00 - Alamat Perangkat Publik (default)
0x01 - Alamat Perangkat Acak
LE_Ex_Scan_Filter_Policy 0x00 - Menerima semua paket iklan (default). Paket iklan yang ditujukan untuk perangkat ini akan diabaikan.
0x01 - Mengabaikan paket iklan dari perangkat yang tidak ada dalam Daftar yang Diizinkan Hanya daftar. Paket iklan terarah yang tidak ditujukan untuk perangkat ini akan diabaikan.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete

Perintah Get controller debug info

Tujuan elemen informasi ini adalah untuk mendapatkan informasi debug pengontrol oleh host, dalam bentuk biner, untuk pasca-pemrosesan dan analisis. Hal ini membantu melakukan proses debug masalah di lapangan dan memberi engineer toolkit untuk mencatat informasi guna dianalisis. Pengontrol dapat memberikan informasi saat diminta oleh host melalui peristiwa (subperistiwa Info Debug Pengontrol) atau secara mandiri saat diinginkan oleh pengontrol. Contoh penggunaan dapat berupa melaporkan informasi status firmware, informasi dump error, informasi logging, dll.

OCF: 0x15B

Parameter perintah Ukuran Tujuan
T/A Daftar parameter perintah kosong

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete

Dukungan offload hardware A2DP

Fitur pelepasan A2DP mendukung pelepasan proses encoding audio A2DP ke prosesor audio yang terhubung ke Pengontrol BT. Aliran data audio yang dienkode diteruskan langsung dari Prosesor audio ke Pengontrol BT tanpa melibatkan host BT. Host BT masih bertanggung jawab atas konfigurasi dan kontrol sesi A2DP. Tersedia dua versi perintah. Perintah lama dengan Sub OCF 0x01-0x02 hanya mendukung codec open source. Versi dengan Sub-OCF 0x03-0x04 tidak bergantung pada codec yang dikonfigurasi.

OCF: 0x15D

Mulai offload A2DP (versi lama)

Sub OCF: 0x01

Gunakan perintah ini untuk mengonfigurasi proses offload A2DP dan memulai streaming A2DP.

Parameter perintah Ukuran Tujuan
Codec 4 oktet Menentukan jenis Codec
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
Max_Latency 2 oktet Latensi Maksimum yang Diizinkan (dalam md). Nilai nol akan menonaktifkan flush.
SCMS-T_Enable 2 oktet Oktet 0: Flag yang memungkinkan penambahan header SCMS-T.
  • 0x00 - Header SCMS-T tidak disertakan.
  • 0x01 - Header SCMS-T disertakan.

Oktet 1: Nilai untuk header SCMS-T, jika diaktifkan.

Sampling_Frequency 4 oktet 0x01 - 44100 Hz
0x02 - 48000 Hz
0x04 - 88200 Hz
0x08 - 96000 Hz
Bits_Per_Sample 1 oktet 0x01 - 16 bit per sampel
0x02 - 24 bit per sampel
0x04 - 32 bit per sampel
Channel_Mode 1 oktet 0x01 - Mono
0x02 - Stereo
Encoded_Audio_Bitrate 4 oktet Kecepatan bit audio yang dienkode dalam bit per detik.
0x00000000 - Kecepatan bit audio tidak ditentukan / tidak digunakan.
0x00000001 - 0x00FFFFFF - Kecepatan bit audio yang di-encode dalam bit per detik.
0x01000000 - 0xFFFFFFFF - Dicadangkan.
Connection_Handle 2 oktet Connection Handle koneksi A2DP yang sedang dikonfigurasi
L2CAP_Channel_ID 2 oktet ID Channel L2CAP yang akan digunakan untuk koneksi A2DP ini
L2CAP_MTU_Size 2 oktet Ukuran maksimum MTU L2CAP yang berisi paket audio yang dienkodekan
Codec_Information 32 oktet Informasi Khusus Codec.

Codec SBC:

Lihat elemen informasi khusus Codec SBC di A2DP v1.3.
Octet 0: Panjang Blok | Sub-band | Metode Alokasi
Octet 1: Nilai Bitpool minimum
Octet 2: Nilai Bitpool maksimum
Octet 3: Frekuensi Sampling | Mode Channel
Octet 4-31: dicadangkan

Codec AAC:

Lihat elemen informasi khusus Codec AAC di A2DP v1.3
Octet 0: Object Type
Octet 1; b7: VBR
Octet 2-31: reserved

Codec LDAC:

Oktet 0-3: ID Vendor
0x0000012D

Octet 4-5: ID Codec
0x00AA - LDAC
Semua nilai lainnya dicadangkan

Octet 6: Indeks Bitrate:
0x00 - Tinggi
0x01 - Sedang
0x02 - Rendah
0x03 - 0x7E - Dicadangkan
0x7F - ABR (Adaptive Bit Rate)
0x80 - 0xFF - Dicadangkan

Oktet 7: Mode Channel LDAC
0x01 - Stereo
0x02 - Ganda
0x04 - Mono
Lainnya dicadangkan

Oktet 8-31: dicadangkan

Semua codec lainnya:

Oktet 0-31: dicadangkan

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Sub_Opcode 1 oktet 0x01 - Mulai offload A2DP

Mulai offload A2DP

Sub OCF: 0x03

Gunakan perintah ini untuk mengonfigurasi proses offload A2DP dan memulai streaming A2DP.

Parameter perintah Ukuran Tujuan
Connection Handle 2 oktet Handle koneksi HCI aktif
L2CAP_Channel_ID 2 oktet ID Channel L2CAP yang dibuka untuk streaming A2DP
Data_Path_Direction 1 oktet 0x00 - Output (AVDTP Source/Merge)
0x01 - Input (AVDTP Sink/Split)
Peer_MTU 2 oktet Ukuran maksimum paket L2CAP, yang dinegosiasikan dengan peer.
CP_Enable_SCMS_T 1 oktet 0x00 - Menonaktifkan Header Perlindungan Konten SCMS-T
0x01 - Mengaktifkan Header Perlindungan Konten SCMS-T
CP_Header_SCMS_T 1 oktet Jika Header Perlindungan Konten SCMS-T diaktifkan (CP_SCMS_T_Enable disetel ke 0x01), akan menentukan nilai header yang mendahului konten audio (lihat A2DP, bagian 3.2.1-2) sebagaimana ditentukan oleh Nomor yang Ditetapkan Bluetooth, bagian 6.3.2.
Diabaikan jika Perlindungan konten SCMS-T tidak diaktifkan.
Vendor_Specific_Parameters_Length 1 oktet Panjang Parameter Khusus Vendor, dalam rentang 0 hingga 128.
Nilai 0 digunakan jika tidak ada parameter tambahan yang diberikan.
Vendor_Specific_Parameters 0-128 oktet Parameter Khusus Vendor yang disediakan oleh Bluetooth Audio HAL, CodecParameters.vendorSpecificParameters[].

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Sub_Opcode 1 oktet 0x03 - Mulai offload A2DP

Menghentikan offload A2DP (lama)

Sub OCF: 0x02

Perintah ini digunakan untuk menghentikan streaming offload A2DP.

Parameter perintah Ukuran Tujuan
T/A Daftar parameter perintah kosong.

Tidak ada parameter yang ditentukan untuk perintah ini.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Sub_Opcode 1 oktet 0x02 - Menghentikan offload A2DP

Menghentikan offload A2DP

Sub OCF: 0x04

Perintah ini digunakan untuk menghentikan streaming offload A2DP.

Parameter perintah Ukuran Tujuan
Connection Handle 2 oktet Handle koneksi HCI aktif
L2CAP_Channel_ID 2 oktet ID Channel L2CAP yang dibuka untuk streaming A2DP
Data_Path_Direction 1 oktet 0x00 - Output (AVDTP Source/Merge)
0x01 - Input (AVDTP Sink/Split)

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Sub_Opcode 1 oktet 0x04 - Menghentikan offload A2DP

Perintah Laporan Kualitas Bluetooth

Fitur perintah Laporan Kualitas BT memulai mekanisme di pengontrol Bluetooth untuk melaporkan peristiwa Kualitas Bluetooth ke host. Anda dapat mengaktifkan empat opsi:

  • Mode Pemantauan Kualitas: Pengontrol secara berkala mengirimkan sub-event BQR terkait Kualitas Link ke host.
  • Mendekati LSTO: Jika tidak ada paket yang diterima dari perangkat BT yang terhubung selama lebih dari setengah nilai Link Supervision TimeOut (LSTO), pengontrol akan melaporkan peristiwa Mendekati LSTO ke host.
  • Audio A2DP Terputus-Putus: Saat pengontrol mendeteksi faktor yang menyebabkan audio terputus-putus, pengontrol melaporkan peristiwa Audio A2DP Terputus-Putus ke host.
  • (e)SCO Voice Choppy: Saat pengontrol mendeteksi faktor yang menyebabkan suara terputus-putus, pengontrol akan melaporkan peristiwa (e)SCO Voice Choppy ke host.
  • Inflamasi Root: Peristiwa ini dikirim oleh pengontrol ke stack saat HAL atau pengontrol mengalami error fatal dan perlu memulai ulang Bluetooth.
  • Perekaman pesan LMP/LL: Pengontrol mengirimkan pesan LMP/LL handshake dengan perangkat jarak jauh ke host.
  • Rekaman aktivitas penjadwalan Multi-profil/Coex Bluetooth: Pengontrol mengirimkan informasi penjadwalannya tentang penanganan beberapa profil Bluetooth dan koeksistensi nirkabel dalam band 2,4 Ghz ke host.
  • Mekanisme Informasi Debug Pengontrol: Jika diaktifkan, pengontrol dapat melaporkan informasi logging debug secara mandiri melalui sub-peristiwa info debug Pengontrol ke host.
  • LE Audio Terputus-putus: Saat pengontrol mendeteksi faktor yang menyebabkan audio terputus-putus, pengontrol melaporkan peristiwa LE Audio Terputus-putus ke host.
  • Mode Statistik RF Lanjutan: Pengontrol melaporkan informasi terkait statistik RF-nya ke host, yang mendukung dua kasus penggunaan laporan:
    • Laporan berkala
    • Pemicu acara (pemicu acara mulai/berhenti streaming dan kualitas link).
  • Mekanisme pemantauan kondisi pengontrol memberikan informasi terkait kondisi kepada host melalui dua jenis peristiwa: laporan berkala dan laporan yang dipicu peristiwa.
  • BQR_Report_Action dari Perintah Laporan Kualitas Bluetooth: Host dapat menggunakan perintah HCI ini untuk mendapatkan kueri satu kali untuk mode pemantauan kualitas, mode monitor energi, atau mode statistik RF lanjutan.

OCF: 0x15E

Parameter perintah Ukuran Tujuan
BQR_Report_Action 1 oktet Tindakan untuk menambahkan / menghapus pelaporan peristiwa kualitas yang ditetapkan dalam parameter BQR_Quality_Event_Mask, atau menghapus semuanya.

0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
0x03 - Kueri satu kali

Menghapus akan menghapus pelaporan peristiwa kualitas tertentu.
Clear akan menghapus semua pelaporan peristiwa kualitas (parameter BQR_Quality_Event_Mask dapat diabaikan).

BQR_Quality_Event_Mask 4 oktet Masker bit untuk pelaporan peristiwa kualitas yang dipilih.

Bit 0: Setel untuk mengaktifkan mode pemantauan kualitas.
Bit 1: Setel untuk mengaktifkan peristiwa Mendekati LSTO (untuk ACL/(e)SCO/ISO).
Bit 2: Disetel untuk mengaktifkan peristiwa Audio A2DP Terputus-putus.
Bit 3: Setel untuk mengaktifkan peristiwa Suara Terputus-putus (e)SCO.
Bit 4: Setel untuk mengaktifkan peristiwa Peradangan root.
Bit 5: Ditetapkan untuk mengaktifkan mode pemantauan energi.
Bit 6: Disetel untuk mengaktifkan peristiwa audio LE tersendat.
Bit 7: Setel untuk mengaktifkan peristiwa kegagalan koneksi.
Bit 8: Disetel untuk mengaktifkan pemicu peristiwa mode Statistik RF Lanjutan.
Bit 9: Disetel untuk mengaktifkan laporan berkala Statistik RF Lanjutan.
Bit 10: Disetel untuk mengaktifkan pemicu peristiwa mekanisme pemantauan kondisi pengontrol. (ditambahkan di BQRv7)
Bit 11: Disetel untuk mengaktifkan mekanisme pemantauan kondisi pengontrol yang melaporkan secara berkala. (ditambahkan di BQRv7)
Bit 12 ~ 14: Dicadangkan.
Bit 15: Ditetapkan untuk mengaktifkan peristiwa kualitas khusus vendor.
Bit 16: Setel untuk mengaktifkan rekaman aktivitas pesan LMP/LL.
Bit 17: Disetel untuk mengaktifkan rekaman aktivitas penjadwalan Multi-link/Coex Bluetooth.
Bit 18: Disetel untuk mengaktifkan mekanisme Informasi Debug Pengontrol.
Bit 19: Dicadangkan untuk informasi debug offload.
Bit 20: Pemicu Peristiwa Dump Histori UART. (ditambahkan di BQRv7)
Bit 21 ~ 30: Dicadangkan.
Bit 31: Setel untuk mengaktifkan rekaman aktivitas khusus vendor.

BQR_Minimum_Report_Interval 2 oktet Tentukan interval waktu minimum pelaporan peristiwa kualitas untuk peristiwa kualitas yang dipilih. Firmware pengontrol tidak boleh melaporkan peristiwa berikutnya dalam interval waktu yang ditentukan. Setelan interval harus masing-masing dan khusus untuk peristiwa kualitas yang ditambahkan.

Satuan: ms
Default: 0 (Tidak ada batasan untuk interval.)
Rentang: 0 ~ 65535 md

BQR_Vendor_Specific_Quality_Event_Mask 4 oktet Bit mask untuk pelaporan peristiwa kualitas khusus vendor yang dipilih.
Parameter ini hanya valid jika bit 15 BQR_Quality_Event_Mask disetel.

Bit 0 ~ 31: Dicadangkan.

BQR_Vendor_Specific_Trace_Mask 4 oktet Masker bit untuk pelaporan rekaman aktivitas khusus vendor yang dipilih.
Parameter ini hanya valid jika bit 31 BQR_Quality_Event_Mask disetel.

Bit 0 ~ 31: Dicadangkan.

Report_interval_multiple 4 oktet Pengganda untuk BQR_Minimum_Report_Interval. Jika nilai ini >= 1, Interval Laporan BQR mengikuti format
Interval Laporan BQR = BQR_Minimum_Report_Interval x Report_interval_multiple.
Firmware pengontrol tidak boleh melaporkan peristiwa berikutnya dalam interval waktu yang ditentukan. Setelan interval secara khusus ditujukan untuk peristiwa kualitas yang ditambahkan.

Unit: ms
Default: 1
Rentang: 0 ~ 4294967295 (0: sama dengan 1)

Catatan: jika setelan BQR_Report_Interval lebih besar daripada kemampuan pengontrol, pengontrol harus menampilkan waktu BQR_Report_Interval maksimum setelah perintah selesai.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Current_Quality_Event_Mask 4 oktet Menunjukkan setelan mask bit saat ini.
Bit 0: Mode pemantauan kualitas diaktifkan.
Bit 1: Pelaporan peristiwa mendekati LSTO diaktifkan.
Bit 2: Pelaporan peristiwa Audio A2DP Terputus-putus diaktifkan.
Bit 3: (e)SCO Voice Choppy event reporting is enabled.
Bit 4: Pelaporan peristiwa peradangan akar diaktifkan.
Bit 5: Mode pemantauan energi diaktifkan.
Bit 6: Pelaporan peristiwa audio LE tersendat diaktifkan.
Bit 7: Peristiwa gagal menghubungkan.
Bit 8: Disetel untuk mengaktifkan pemicu peristiwa mode Statistik RF Lanjutan.
Bit 9: Disetel untuk mengaktifkan pelaporan berkala Statistik RF Lanjutan.
Bit 10: Disetel untuk mengaktifkan pemicu peristiwa mekanisme pemantauan kondisi pengontrol.
Bit 11: Disetel untuk mengaktifkan mekanisme pelaporan berkala pemantauan kondisi pengontrol.
Bit 12 ~ 14: Dicadangkan.
Bit 15: Pelaporan peristiwa kualitas khusus vendor diaktifkan.
Bit 16: LMP/LL message trace diaktifkan.
Bit 17: Pelacakan penjadwalan Multi-link/Coex Bluetooth diaktifkan.
Bit 18: Mekanisme Informasi Debug Pengontrol diaktifkan.
Bit 19: Dicadangkan untuk informasi debug pelepasan
Bit 20: Pemicu Peristiwa Dump Histori UART
Bit 21 ~ 30: Dicadangkan.
Bit 31: Pelacakan khusus vendor diaktifkan.
Current_Vendor_Specific_Quality_Event_Mask 4 oktet Menunjukkan setelan mask bit saat ini.
Current_Vendor_Specific_Trace_Mask 4 oktet Menunjukkan setelan mask bit saat ini.
BQR_Report_interval 4 oktet Menunjukkan setelan mask bit saat ini.
Current_Vendor_Specific_Trace_Mask 4 oktet Setelan BQR_Report_interval. Nilai ini harus berupa nilai minimum antara BQR_Minimum_Report_Interval * Report_interval_multiple atau interval dukungan maksimum pengontrol.

Perintah buffer audio dinamis

Buffer audio dinamis mengurangi gangguan audio dengan mengubah ukuran buffer audio di pengontrol Bluetooth berdasarkan berbagai skenario.

OCF: 0x15F

Mendapatkan kemampuan waktu buffering audio

Sub OCF: 0x01

Gunakan perintah ini untuk mendapatkan kemampuan waktu buffer audio dari pengontrol Bluetooth.

Parameter perintah Ukuran Tujuan
T/A Daftar parameter Perintah kosong

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Dynamic_Audio_Buffer_opcode 1 oktet 0x01 - Mendapatkan waktu jeda audio
Audio_Codec_Type_Supported 4 oktet Masker bit untuk jenis codec yang didukung
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 dicadangkan
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 oktet Waktu buffer default jenis codec Bit 0 yang ditentukan di Audio_Codec_Type_Supported.
Nilai ini harus 0 jika jenis codec Bit 0 tidak didukung.
Unit: md
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 oktet Waktu buffer maksimum jenis codec Bit 0 yang ditentukan dalam Audio_Codec_Type_Supported.
Nilai ini harus 0 jika jenis codec Bit 0 tidak didukung.
Unit: md
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 oktet Waktu buffer minimum jenis codec Bit 0 yang ditentukan dalam Audio_Codec_Type_Supported.
Nilai ini harus 0 jika jenis codec Bit 0 tidak didukung.
Unit: md
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 oktet Waktu buffer default jenis codec Bit 1 yang ditentukan dalam Audio_Codec_Type_Supported.
Nilai ini harus 0 jika jenis codec Bit 1 tidak didukung.
Unit: md
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 oktet Waktu buffer maksimum jenis codec Bit 1 yang ditentukan dalam Audio_Codec_Type_Supported.
Nilai ini harus 0 jika jenis codec Bit 1 tidak didukung.
Unit: md
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 oktet Waktu buffer minimum jenis codec Bit 1 yang ditentukan dalam Audio_Codec_Type_Supported.
Nilai ini harus 0 jika jenis codec Bit 1 tidak didukung.
Unit: md
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 oktet Waktu buffer default jenis codec Bit 31 yang ditentukan dalam Audio_Codec_Type_Supported.
Nilai ini harus 0 jika jenis codec Bit 31 tidak didukung.
Unit: md
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 oktet Waktu buffer maksimum jenis codec Bit 31 yang ditentukan dalam Audio_Codec_Type_Supported.
Nilai ini harus 0 jika jenis codec Bit 31 tidak didukung.
Unit: md
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 oktet Waktu buffer minimum jenis codec Bit 31 yang ditentukan dalam Audio_Codec_Type_Supported.
Nilai ini harus 0 jika jenis codec Bit 31 tidak didukung.
Unit: md

Menyetel waktu buffer audio

Sub OCF: 0x02

Gunakan perintah ini untuk menyetel waktu buffer audio ke pengontrol Bluetooth.

Parameter perintah Ukuran Tujuan
Audio_Codec_Buffer_Time 2 oktet Waktu buffer audio yang diminta untuk codec yang saat ini digunakan.
Satuan: md

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Dynamic_Audio_Buffer_opcode 1 oktet 0x02 - Menetapkan waktu jeda audio
Audio_Codec_Buffer_Time 2 oktet Waktu buffer audio saat ini di pengontrol Bluetooth.
Unit: md

Peristiwa HCI (khusus vendor)

Peristiwa HCI khusus vendor diperlukan dalam beberapa kasus. Lihat Gambar 5.4 di halaman 1897 dalam Spesifikasi BT Core 5.2. Parameter peristiwa 0 akan selalu berisi kode sub-peristiwa pertama, yang menjadi dasar untuk mendekode peristiwa HCI lainnya.

Parameter Peristiwa Ukuran Tujuan
HCI_vendor_specific_event_code 1 oktet 0xFF
sub_event_code 1 oktet Kode subperistiwa akan berukuran 1 oktet, byte segera setelah Panjang Parameter dalam paket peristiwa HCI.

Sub-peristiwa pelanggaran batas penyimpanan

Peristiwa ini menunjukkan bahwa nilai batas penyimpanan telah dilampaui.

Kode sub-peristiwa = 0x54

Parameter Subevent Ukuran Tujuan
Tidak ada

Sub-peristiwa perubahan status multi-iklan LE

Peristiwa ini menunjukkan bahwa instance iklan telah mengubah statusnya. Saat ini, peristiwa ini hanya digunakan untuk menunjukkan instance iklan mana yang dihentikan sebagai akibat dari koneksi.

Kode sub-peristiwa = 0x55

Parameter sub-peristiwa Ukuran Tujuan
Advertising_instance 1 oktet Mengidentifikasi instance iklan tertentu
Nilai yang valid adalah 0 hingga max_advt_instances-1
State_Change_Reason 1 oktet 0x00: Koneksi diterima
Connection_handle 2 oktet Mengidentifikasi koneksi yang menyebabkan instance advt dinonaktifkan (0xFFFF jika tidak valid)

Sub-peristiwa pelacakan iklan LE

Peristiwa ini menunjukkan kapan pengiklan ditemukan atau tidak ditemukan.

Kode sub-peristiwa = 0x56

Parameter Subevent Ukuran Tujuan
APCF_Filter_Index 1 oktet Indeks Filter (0, max_filter-1)
Advertiser_State 1 oktet 0x00: Pengiklan ditemukan
0x01: Pengiklan tidak ditemukan
Advt_Info_Present 1 oktet 0x00: Informasi pengiklan (Advt_Info) ada
0x01: Informasi pengiklan (Advt_Info) tidak ada
Advertiser_Address 6 oktet Alamat publik atau acak
Advertiser_Address_Type 1 oktet 0x00: Alamat publik
0x01: Alamat acak
Advt_Info Tx_Pwr[0]: 1 oktet
RSSI[0]: 1 oktet
Timestamp[0]: 2 oktet
Adv packet_len[0]: 1 oktet
Adv_packet[0]: Adv_packet_len oktet
Scan_data_resp_len[0]: 1 oktet
Scan_data_resp[0]: Scan_data_resp oktet

Sub-peristiwa info debug pengontrol

Peristiwa ini digunakan oleh Pengontrol untuk memberikan informasi debug biner ke host.

Kode sub-peristiwa = 0x57

Parameter Subevent Ukuran Tujuan
debug_block_byte_offset_start 2 oktet Men-debug offset byte blok dari awal
last_block 1 oktet 0x00: Ada lebih banyak data debug
0x01: Blok biner terakhir; tidak ada lagi data debug
cur_pay_load_sz 2 oktet Ukuran blok biner dalam peristiwa saat ini
Debug_Data Variabel Data debug cur_payload_sz

Sub-peristiwa Laporan Kualitas Bluetooth

Peristiwa ini menunjukkan salah satu hal berikut: peristiwa kualitas Bluetooth terjadi, pengontrol mengupload rekaman aktivitas pesan LMP/LL dan rekaman aktivitas penjadwalan Multi-link/Coex Bluetooth, atau pengontrol membuang data informasi debug.

Parameter Subevent Ukuran Tujuan
Quality_Report_Id 1 oktet 0x01: Pelaporan kualitas pada mode pemantauan.
0x02: Mendekati LSTO.
0x03: A2DP Audio Terputus-putus.
0x04: (e)SCO Voice Choppy.
0x05 ~ 0x06: Dicadangkan.
0x07: Audio LE terputus-putus.
0x08: Gagal terhubung.
0x09 ~ 0xFF: Dicadangkan.
Packet_Types 1 oktet 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
0x10: DM1
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D ~ 0x50: Reserved
0x51: ISO packet
0x52: 1M PHY
0x53: 2M PHY
0x54: Codec PHY S=2
0x55: Codec PHY S=8
0x56 ~ 0xFF: Reserved
Connection_Handle 2 oktet ACL/(e)SCO/ISO connection handle.
Connection_Role 1 oktet Peran yang Melakukan untuk koneksi.
0x00: Central
0x01: Peripheral
0x02 ~ 0xFF: Dicadangkan.
TX_Power_Level 1 oktet Tingkat daya transmisi saat ini untuk Connection_Handle yang ditentukan.

Nilai ini harus sama dengan pengontrol yang merespons perintah HCI_Read_Transmit_Power_Level HCI.

RSSI 1 oktet [dalam dBm]

Nilai Indikasi Kekuatan Sinyal yang Diterima (RSSI) untuk Connection_Handle yang ditentukan.
Nilai ini harus berupa nilai kekuatan sinyal penerima absolut.
Rentang: -127 hingga +20

SNR 1 oktet [dalam dB]

Nilai Rasio Sinyal terhadap Kebisingan (SNR) untuk Connection_Handle yang ditentukan.
Pengontrol harus memberikan SNR rata-rata dari semua saluran yang digunakan oleh link.

Unused_AFH_Channel_Count 1 oktet Menunjukkan jumlah saluran yang tidak digunakan di AFH_channel_map.
0x4F ~ 0xFF: Dicadangkan.
AFH_Select_Unideal_Channel_Count 1 oktet Menunjukkan jumlah saluran yang terganggu dan memiliki kualitas buruk, tetapi masih dipilih untuk AFH.
Jumlah minimum saluran yang diizinkan oleh spesifikasi Bluetooth adalah 20, jadi meskipun semua 79 saluran terganggu dan memiliki kualitas buruk, pengontrol tetap harus memilih setidaknya 20 saluran untuk AFH.
LSTO 2 oktet Setelan Waktu Tunggu Pengawasan Link Saat Ini.
Waktu = N * 0,625 md
Rentang Waktu: 0,625 md hingga 40,9 dtk
Connection_Piconet_Clock 4 oktet Piconet Clock untuk Connection_Handle yang ditentukan.
Nilai ini harus sama dengan respons pengontrol terhadap perintah HCI_Read_Clock HCI dengan parameter "Which_Clock" 0x01 (Piconet Clock).
Unit: N * 0,3125 md (1 Bluetooth Clock)
Retransmission_Count 4 oktet Jumlah transmisi ulang sejak peristiwa terakhir.
Jumlah ini akan direset setelah dilaporkan kepada penyelenggara.
No_RX_Count 4 oktet Tidak ada jumlah RX sejak peristiwa terakhir.
Jumlah akan bertambah jika tidak ada paket yang diterima pada slot waktu yang dijadwalkan atau paket yang diterima rusak.
Jumlah ini akan direset setelah dilaporkan kepada penyelenggara.
NAK_Count 4 oktet Jumlah NAK (Negative Acknowledge) sejak peristiwa terakhir.
Jumlah ini akan direset setelah dilaporkan kepada penyelenggara.
Last_TX_ACK_Timestamp 4 oktet Stempel waktu ACK TX terakhir. Ini didasarkan pada Bluetooth Clock dari piconet central (CLK).
Unit: N * 0,3125 md (1 Bluetooth Clock)
Flow_Off_Count 4 oktet Jumlah berapa kali pengontrol menerima Flow-off (STOP) sejak peristiwa terakhir.
Jumlah ini akan direset setelah dilaporkan kepada penyelenggara.
Last_Flow_On_Timestamp 4 oktet Stempel waktu Flow-on terakhir (GO). Ini didasarkan pada Bluetooth Clock dari piconet central (CLK).
Unit: N * 0,3125 md (1 Bluetooth Clock)
Buffer_Overflow_Bytes 4 oktet [dalam Byte]

Jumlah overflow buffer sejak peristiwa terakhir.
Pengontrol menghitung berapa banyak byte data yang dihapus.
Jumlah ini akan direset setelah dilaporkan ke host.

Buffer_Underflow_Bytes 4 oktet [dalam Byte]

Jumlah kekurangan buffer sejak peristiwa terakhir.
Jumlah ini akan direset setelah dilaporkan ke host.

bdaddr 6 oktet Alamat perangkat jarak jauh
cal_failed_item_count 1 oktet Jumlah item yang gagal dikalibrasi
TX_Total_Packets 4 oktet Jumlah paket yang dikirim.
TX_UnAcked_Packets 4 oktet Jumlah paket yang tidak menerima konfirmasi.
Jumlah ini direset setelah dilaporkan ke host.
TX_Flushed_Packets 4 oktet Jumlah paket yang tidak dikirim oleh titik flush-nya.
Jumlah ini direset setelah dilaporkan ke host.
TX_Last_Subevent_Packets 4 oktet Jumlah paket yang dikirimkan Link Layer PDU data CIS dalam sub-peristiwa terakhir dari peristiwa CIS.
Jumlah ini direset setelah dilaporkan ke host.
Nilainya adalah nol jika tidak ada nilai yang valid untuk link.
CRC_Error_Packets 4 oktet Jumlah paket yang diterima dengan error CRC sejak peristiwa terakhir.
Jumlah ini direset setelah dilaporkan ke host.
RX_Duplicate_Packets 4 oktet Jumlah paket duplikat (transmisi ulang) yang diterima sejak peristiwa terakhir.
Jumlah ini direset setelah dilaporkan ke host.
RX_Unreceived_Packets 4 oktet Jumlah paket yang tidak diterima sama dengan parameter perintah LE READ ISO Link Quality (lihat Spesifikasi inti Bluetooth Versi 5.4). Aliran terkait adalah CIS dan BIS.
Saat nilai ini bertambah, Link Layer tidak menerima payload tertentu berdasarkan titik flush-nya (di CIS) atau di akhir peristiwa yang terkait dengannya (di BIS; lihat Bluetooth Core Specification Version 5.4 Vol 6 Part B, Bagian 4.4.6.6).
Coex_Info_Mask 2 oktet Bit 0 - CoexInvolvement: Ditetapkan untuk menunjukkan bahwa aktivitas koeks diduga terlibat saat laporan ini dibuat (misalnya, A2DP Chops dan Approaching LSTO).
Bit 1 - WL 2G Radio Active: Disetel untuk menunjukkan bahwa Radio WLAN 2G aktif.
Bit 2 - WL 2G Connected: Disetel untuk menunjukkan bahwa Radio WLAN 2G aktif dan terhubung.
Bit 3 - WL 5G/6G Radio Active: Disetel untuk menunjukkan bahwa Radio WLAN 5G/6G aktif.
Bit 4-15 - Dicadangkan
Parameter Khusus Vendor (total panjang parameter - TBD) * oktet Agar vendor pengontrol mendapatkan lebih banyak parameter khusus vendor.

Kode sub-peristiwa = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

Peristiwa ini menunjukkan bahwa HAL Bluetooth atau pengontrol mengalami error fatal dan memerlukan stack Bluetooth untuk merekam situasi ini dan memulai ulang. Pengontrol harus mengirim Root_Inflammation_Event ke stack Bluetooth sebelum mengirim fragmen pertama peristiwa info debug dalam kasus apa pun.

Parameter Error_Code berisi kode error yang dilaporkan dari HAL/Controller, 0 jika merupakan error khusus vendor chipset. Vendor_Specific_Error_Code berisi kode error khusus vendor chipset dari HAL/Controller. Parameter ini harus ditetapkan sebagai 0 jika parameter Error_Code bukan 0. Parameter Error_Code dan Vendor_Specific_Error_Code tidak boleh bernilai 0.

Parameter Subevent Ukuran Tujuan
Quality_Report_Id 1 oktet 0x00 ~ 0x04: Dicadangkan.
0x05: Peradangan akar.
0x06 ~ 0xFF: Dicadangkan.
Error_Code 1 oktet 0x00: Kode error khusus vendor chipset disertakan.
0x01 ~ 0xFF: Terjadi kegagalan pengontrol. Lihat Spesifikasi Bluetooth [Vol 2] Part D, Error Codes untuk mengetahui daftar kode error dan deskripsi.
Vendor_Specific_Error_Code 1 oktet 0x00: Tidak ada kode error khusus vendor chipset.
0x01 ~ 0xFF: Kode error khusus vendor chipset.
Parameter Khusus Vendor (Panjang Total Parameter - 4) * oktet Agar vendor pengontrol mendapatkan lebih banyak parameter khusus vendor.

Kode sub-peristiwa = 0x58 [Quality_Report_Id = 0x06, Peristiwa monitor energi]

Peristiwa ini memberikan gambaran singkat tentang konsumsi daya dan status operasional pengontrol Bluetooth selama jangka waktu tertentu. Peristiwa ini membantu developer dan engineer menganalisis cara pengontrol mengelola daya, mengidentifikasi aktivitas mana yang paling banyak mengonsumsi energi, dan memecahkan masalah terkait daya.

Parameter dalam laporan melacak metrik utama, termasuk:

  • Konsumsi arus rata-rata: Arus keseluruhan yang digunakan oleh pengontrol.
  • Waktu yang dihabiskan dalam berbagai status: Total waktu (dalam milidetik) yang dihabiskan pengontrol dalam status idle (tidur/daya rendah) versus status aktif (menghubungkan, mengirimkan, atau menerima data).
  • Jumlah transisi status: Jumlah frekuensi pengontrol beralih antara status tidak ada aktivitas dan aktif.
  • Waktu yang dihabiskan dalam status radio tertentu: Metrik terpisah untuk waktu yang dihabiskan untuk mengirim (Tx) dan menerima (Rx) untuk link BR/EDR (Bluetooth Klasik) dan LE (Bluetooth Hemat Energi).
  • Tingkat daya transmisi rata-rata: Daya rata-rata (dalam dBm) yang digunakan untuk transmisi pada link BR/EDR dan LE.
  • Aktivitas rantai terperinci: Melaporkan waktu yang dihabiskan dengan rantai transmisi atau penerimaan aktif, membedakan antara operasi satu rantai dan dua rantai, serta antara amplifier daya internal (iPA) dan eksternal (ePA).
  • Waktu aktivitas pemindaian: Waktu yang digunakan pengontrol untuk memindai perangkat BR/EDR dan LE secara aktif.

Dengan memeriksa parameter ini, engineer dapat memperoleh insight tentang efisiensi daya pengontrol dan mengoptimalkan performanya.

Parameter Subevent Ukuran Tujuan
Quality_Report_Id 1 oktet 0x06: Pemantauan Energi
Average_Current_Consumption 2 oktet [dalam mA] Konsumsi arus rata-rata semua aktivitas yang digunakan oleh pengontrol
Idle_Total_Time (tidur) 4 oktet [dalam ms] Total waktu dalam status tidak ada aktivitas (status daya rendah, tidur).
Idle_Sate_Enter_Count 4 oktet Menunjukkan berapa kali pengontrol memasuki status tidak ada aktivitas.
Active_Total_Time 4 oktet [dalam ms] Total waktu dalam status aktif (meminta, membuat halaman, traffic ACL/SCO/eSCO/BIS/CIS, memproses tugas apa pun).
Active_State_Enter_Count 4 oktet Menunjukkan berapa kali pengontrol memasuki status aktif.
BR_RDR_Tx_Total_Time 4 oktet [dalam md] Total waktu dalam status Tx(Transmitting for ACL/SCO/eSCO traffic) khusus BR/EDR.
BR_RDR_Tx_State_Enter_Count 4 oktet Menunjukkan berapa kali pengontrol memasuki status Tx khusus BR/EDR.
BR_RDR_Tx_Average_Power_Level 1 oktet [dalam dBm] Tingkat daya Tx rata-rata dari semua link BR/EDR
BR_RDR_Rx_Total_Time 4 oktet [dalam ms] Total waktu dalam status Rx (Menerima traffic ACL/SCO/eSCO) khusus BR/EDR.
BR_RDR_Rx_State_Enter_Count 4 oktet [dalam ms] Menunjukkan berapa kali pengontrol memasuki status Rx khusus BR/EDR.
LE_Tx_Total_Time 4 oktet [dalam ms] Total waktu dalam status Tx (Mengirimkan untuk traffic iklan ACL/BIS/CIS atau LE tertentu) LE.
LE_Tx_State_Enter_Count 4 oktet Menunjukkan berapa kali pengontrol memasuki status Rx khusus BR/EDR.
LE_Tx_Average_Power_Level 1 oktet [dalam dBm] Tingkat daya Tx rata-rata dari semua link LE.
LE_Rx_Total_Time 4 oktet [dalam ms] Total waktu dalam status Rx (Menerima dari traffic pemindaian ACL/BIS/CIS atau LE) khusus LE.
LE_Rx_State_Enter_Count 4 oktet [dalam ms] Menunjukkan berapa kali pengontrol memasuki status Rx khusus LE
Report_Time_Duration (Total waktu) 4 oktet [dalam ms] Durasi waktu total untuk mengumpulkan informasi terkait daya.
RX_Active_One_Chain_Time 4 oktet [dalam ms] Durasi waktu RX aktif dalam satu rantai
RX_Active_Two_Chain_Time 4 oktet [dalam ms] Durasi waktu RX aktif dalam dua rantai
TX_iPA_Active_One_Chain_Time 4 oktet [dalam ms] Durasi waktu TX internal aktif dalam satu rantai
TX_iPA_Active_Two_Chain_Time 4 oktet [dalam ms] Durasi waktu TX internal aktif dalam dua rantai
TX_ePA_Active_One_Chain_Time 4 oktet [dalam md] Durasi waktu TX eksternal aktif dalam satu rantai
TX_ePA_Active_Two_Chain_Time 4 oktet [dalam ms] Durasi waktu TX eksternal aktif dalam dua rantai
BREDR_RX_Active_Scan_total_Time 4 oktet [dalam md] Periode waktu (md) pada waktu aktif RX pemindaian BR/EDR
LE_RX_Active_Scan_total_Time 4 oktet [dalam md] Periode waktu (md) pada waktu aktif RX pemindaian LE

Kode sub-peristiwa = 0x58 [Quality_Report_Id = 0x09~0x0A, Peristiwa statistik RF lanjutan]

Peristiwa Statistik RF (Radio Frequency) Lanjutan Bluetooth memberikan metrik performa mendetail tentang perilaku radio pengontrol Bluetooth. Acara dapat dipicu dengan dua cara:

  • Menurut Pemicu (0x09): Laporan satu kali dikirim sebagai respons terhadap perintah tertentu.
  • Menurut Monitor (0x0A): Pengontrol mengirimkan laporan secara berkala pada interval yang ditentukan.

Parameter peristiwa pada dasarnya adalah penghitung paket yang melacak berbagai perilaku radio selama jangka waktu tertentu.

Metrik utama dan tujuannya
  • Statistik daya transmisi: Penghitung ini melacak paket yang dikirim menggunakan konfigurasi daya yang berbeda, membedakan antara amplifier daya internal (iPA) dan eksternal (ePA) serta berbagai mode keragaman antena (Div) atau pembentukan berkas (BF). Hal ini membantu menentukan setelan daya dan antena mana yang paling sering digunakan.
  • Kelompok indikator kekuatan sinyal yang diterima (RSSI): Parameter ini mengategorikan paket yang diterima berdasarkan kekuatan sinyalnya. Dengan memberikan jumlah paket dalam rentang RSSI tertentu (misalnya, kurang dari -90 dBm, -70 hingga -75 dBm), laporan ini memberikan gambaran yang jelas tentang kualitas link. Jumlah yang tinggi di bin sinyal "lemah" (misalnya, < -90 dBm) menunjukkan koneksi yang buruk.
  • Delta RSSI: Metrik ini mengukur perbedaan kekuatan sinyal antara dua antena penerima (jika berlaku). Penghitung melacak jumlah paket yang memiliki delta RSSI dalam rentang yang berbeda. Delta besar (misalnya, >11 dBm) dapat menunjukkan adanya interferensi atau halangan fisik, karena satu antena menerima sinyal yang jauh lebih kuat daripada antena lainnya.
  • Pengalihan antena dan transmisi ulang: Laporan menghitung seberapa sering pengontrol beralih antar-antena dan melacak paket yang ditransmisikan ulang (ReTX). Jumlah transmisi ulang yang tinggi sering kali menunjukkan koneksi yang lemah atau tidak andal, sehingga paket harus dikirim ulang.
  • Kualitas saluran: Parameter ini memberikan ringkasan umum tentang kondisi berbagai saluran komunikasi, mengategorikannya sebagai "Baik", "Cukup", "Buruk", atau "Sangat Buruk" berdasarkan RSSI-nya. Hal ini memberikan ringkasan langsung tentang lingkungan RF.
  • Antrean buffer TX: Bagian ini memantau jumlah paket yang menunggu di buffer transmisi pengontrol untuk berbagai jenis link, seperti ACL (Asynchronous Connection-oriented Logical link), LECONN (LE Connection), dan LEISOC (LE Isochronous). Jumlah buffer yang tinggi dapat menunjukkan adanya hambatan atau masalah pada aliran data dari host ke pengontrol.
Parameter sub-peristiwa Ukuran Tujuan
Quality_Report_Id 1 oktet 0x09: Advance RF Stats By Trigger
0x0A: Advance RF Stats By Monitor
Extension_info 1 oktet Informasi versi BQR.
0x01 untuk BQRv6
0x02 untuk BQRv7
Report_Time_Period 4 oktet Periode waktu untuk mengumpulkan informasi performa. Unit: md
TX_Power_iPA_BF 4 oktet Penghitung paket iPA BF
TX_Power_ePA_BF 4 oktet Penghitung paket ePA BF
TX_Power_iPA_Div 4 oktet Penghitung paket Divisi ePA
TX_Power_ePA_Div 4 oktet Penghitung paket Divisi ePA
RSSI_chain_50 4 oktet Penghitung paket rantai RSSI > -50 dBm
RSSI_chain_50_55 4 oktet Penghitung paket rantai RSSI antara -50 dBm ~ >-55 dBm
RSSI_chain_55_60 4 oktet Penghitung paket rantai RSSI antara -55 dBm ~ >-60 dBm
RSSI_chain_60_65 4 oktet Penghitung paket rantai RSSI antara -60 dBm ~ >-65 dBm
RSSI_chain_65_70 4 oktet Penghitung paket rantai RSSI antara -65 dBm ~ >-70 dBm
RSSI_chain_70_75 4 oktet Penghitung paket rantai RSSI antara -70 dBm ~ >-75 dBm
RSSI_chain_75_80 4 oktet Penghitung paket rantai RSSI antara -75 dBm ~ >-80 dBm
RSSI_chain_80_85 4 oktet Penghitung paket rantai RSSI antara -80 dBm ~ >-85 dBm
RSSI_chain_85_90 4 oktet Penghitung paket rantai RSSI antara -85 dBm ~ >-90 dBm
RSSI_chain_90 4 oktet Penghitung paket rantai RSSI < -90 dBm
RSSI_delta_2 4 oktet Penghitung paket delta RSSI < 2 dBm
RSSI_delta_2_5 4 oktet Penghitung paket delta RSSI antara 2 dBm ~ 5 dBm
RSSI_delta_5_8 4 oktet Penghitung paket delta RSSI antara 5 dBm ~ 8 dBm
RSSI_delta_8_11 4 oktet Penghitung paket delta RSSI antara 8 dBm ~ 11 dBm
RSSI_delta_11 4 oktet Penghitung paket delta RSSI > 11 dBm
Antenna_Switch_Count 4 oktet Penghitung paket peristiwa pengalihan antena
ReTX_iPA_BF 4 oktet Penghitung paket ReTX_iPA_BF dalam jangka waktu terbaru
ReTX_ePA_BF 4 oktet Penghitung paket ReTX_ePA_BF dalam jangka waktu terbaru
ReTX_iPA_Div 4 oktet Penghitung paket ReTX_iPA_Div dalam jangka waktu terbaru
ReTX_ePA_Div 4 oktet Penghitung paket ReTX_ePA_Div dalam jangka waktu terbaru
Channel_count_Good 1 oktet Jumlah saluran yang RSSI-nya berada dalam Bin-1 (<-90)
Channel_count_OK 1 oktet Jumlah saluran yang RSSI-nya berada dalam Bin-2 (-90~-76)
Channel_count_Bad 1 oktet Jumlah saluran yang RSSI-nya berada dalam Bin-3 (-76~-50)
Channel_count_VeryBad 1 oktet Jumlah saluran yang RSSI-nya berada dalam Bin-4 (>-50)
TX_buffer_Queue_Count 4 oktet Counter buffer TX status pengontrol antrean dalam jangka waktu terbaru [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd

Kode sub-peristiwa = 0x58 [Quality_Report_Id = 0x0B~0x0C, peristiwa Pemantauan Kondisi Pengontrol]

Peristiwa Pemantauan Kondisi Pengontrol Bluetooth memberikan ringkasan status operasional pengontrol. Acara dapat dipicu dengan dua cara:

  • Menurut Pemicu (0x09): Laporan satu kali dikirim sebagai respons terhadap perintah tertentu.
  • Dengan Monitor (0x0A): Pengontrol mengirimkan laporan secara berkala pada interval yang ditentukan.

Peristiwa Pemantauan Kondisi Pengontrol Bluetooth adalah alat diagnostik yang memberikan ringkasan status operasional pengontrol. Peristiwa ini adalah bagian dari framework Bluetooth Quality Report (BQR) dan digunakan untuk men-debug masalah konektivitas, pengelolaan daya, dan pengaturan waktu. Laporan ini dapat dikirim sebagai laporan satu kali atau secara berkala untuk memberikan pemantauan berkelanjutan.

Metrik utama dan tujuannya
  • Penghitung Paket HCI: Peristiwa ini melacak jumlah total paket yang dikirim dari Host ke Pengontrol dan sebaliknya. Penghitung ini penting untuk men-debug masalah dengan transportasi Host Controller Interface (HCI), yang merupakan saluran komunikasi antara stack software dan chip pengontrol Bluetooth.
  • Panjang Paket: Peristiwa ini melaporkan panjang paket HCI terakhir yang dikirim dan diterima. Hal ini membantu memverifikasi bahwa data ditransmisikan dengan benar dan tidak ada masalah ukuran yang tidak terduga.
  • Jumlah Sinyal Aktif: Laporan ini mencakup jumlah total berapa kali pin BT_Wake dan HOST_Wake telah ditegaskan. Sinyal fisik ini sangat penting untuk pengelolaan daya, karena digunakan untuk mengaktifkan entitas yang bersangkutan dari status daya rendah. Memantau jumlah ini membantu men-debug masalah terkait daya, seperti perangkat yang tiba-tiba aktif atau gagal masuk ke mode tidur.
  • Stempel waktu: Peristiwa ini menyediakan beberapa stempel waktu, termasuk waktu sinyal aktif terakhir dan reset HCI terakhir. Stempel waktu ini membantu memecahkan masalah terkait waktu dan memberikan titik referensi untuk mengetahui kapan peristiwa tertentu terjadi.
  • Timer Watchdog: Flag tertentu menunjukkan apakah peristiwa dibuat sebagai peringatan dini bahwa timer watchdog pengontrol akan segera berakhir. Peringatan ini adalah peringatan penting untuk potensi pembekuan atau malfungsi pengontrol.
  • Status Penautan: Laporan ini merangkum status koneksi aktif saat ini, termasuk jumlah total link BR/EDR, LE, dan CIS (Connected Isochronous Stream). Bagian ini juga menunjukkan apakah ada link SCO (Synchronous Connection-Oriented) yang aktif. Informasi ini memberikan ringkasan beban koneksi pengontrol saat ini.
Parameter sub-peristiwa Ukuran Tujuan
Quality_Report_Id 1 Oktet 0xB~0xC
0x0B: laporan satu kali atau yang dipicu peristiwa
0x0C: laporan berkala.
Packet_Count_Host_to_Controller 4 Oktet Jumlah total paket yang dikirim dari Host ke Pengontrol melalui transportasi HCI. Kolom ini digunakan untuk tujuan proses debug masalah HCI (misalnya, UART). Perilaku: penghitung direset saat pengontrol menerima reset HCI.
Packet_Count_Controller_to_Host 4 Oktet Jumlah total paket Peristiwa HCI yang dikirim ke Host. Kolom ini digunakan untuk tujuan proses debug HCI (misalnya, UART). Perilaku: penghitung direset saat pengontrol menerima reset HCI.
Last_Packet_Length_Host_to_Controller 2 Oktet Panjang paket HCI terakhir yang dikirim ke Host UART. Catatan: Panjang Paket HCI maks. 2 oktet (Mencakup HCI, ACL, SCO, ISO)
Last_Packet_Length_Controller_To_host 2 Oktet Panjang paket HCI terakhir yang diterima dari Host UART. Catatan: Panjang Paket HCI maks. 2 oktet (Termasuk HCI, ACL, SCO, ISO)
Total_BT_Wake_Count 4 Oktet Jumlah gabungan pernyataan pin BT_Wake oleh entity Host. Kolom ini berfungsi sebagai alat diagnostik untuk proses debug masalah terkait daya. Perilaku: penghitung direset saat pengontrol menerima reset HCI.
Total_HOST_Wake_Count 4 Oktet Penghitungan gabungan pernyataan pin Host_Wake yang dimulai oleh Pengontrol. Kolom ini berfungsi sebagai alat diagnostik untuk proses debug masalah terkait daya. Perilaku: penghitung direset saat pengontrol menerima reset HCI.
Last_BT_Wake_TimeStamp 4 Oktet Stempel Waktu Terakhir saat Host Mengirimkan Sinyal Pin BT_Wake.Kolom ini diterapkan untuk tujuan men-debug masalah Daya.
Last_HOST_Wake_TimeStamp 4 Oktet Stempel waktu terbaru saat pengontrol menegaskan pin Host_Wake. Kolom ini digunakan untuk men-debug masalah daya.
Reset_Timestamp 4 Oktet Stempel waktu yang menunjukkan penyelesaian Reset HCI terbaru. Kolom ini digunakan untuk tujuan khusus memfasilitasi penyelesaian masalah terkait waktu. Item ini harus berfungsi sebagai titik perekaman awal yang menjadi acuan semua item lainnya.
Current_Timestamp 4 Oktet Waktu saat ini ketika peristiwa ini dihasilkan. Kolom ini digunakan untuk tujuan pemecahan masalah perbedaan waktu. Elemen ini harus berfungsi sebagai titik perekaman pemicu yang direferensikan oleh semua elemen lainnya.
Is_WatchDog_Timer_About_To_Expire 4 Oktet Flag untuk menunjukkan bahwa peristiwa status kesehatan ini dibuat oleh pengontrol sebagai peringatan dini tentang masa berlaku watchdog akan berakhir. Stempel waktu saat ini berfungsi untuk menunjukkan waktu terjadinya.
Coex_Status_Mask 2 Oktet Bit 0 - Dicadangkan
Total_Links_BR_EDR_LE_Active 1 Oktet Jumlah total link BR/EDR/LE dalam status Aktif.
Total_Links_BR_EDR_Sniff 1 Oktet Jumlah total link BR/EDR dalam status Sniff/Idle.
Total_Links_CIS 1 Oktet Jumlah total link ISO.
Is_SCO_Active 1 Oktet Indikator untuk memeriksa apakah link SCO saat ini diaktifkan.
Parameter Subevent Ukuran Tujuan
Quality_Report_Id 1 oktet 0x00 ~ 0x10: Dicadangkan.
0x11: LMP/LL message trace.
0x12: Pelacakan penjadwalan Multi-link/Coex Bluetooth.
0x13: Dump data Informasi Debug Pengontrol.
0x14 ~ 0xFF: Dicadangkan.
Connection_Handle 2 oktet Tuas Koneksi.
Parameter Khusus Vendor (Panjang Total Parameter - 4) * oktet Format khusus vendor dari rekaman aktivitas pesan LMP, rekaman aktivitas penjadwalan Multi-link/Coex Bluetooth, dan dump data Informasi Debug Pengontrol.

Subkode peristiwa = 0x5C

Jika diaktifkan, peristiwa ini harus dihasilkan selama setiap interval ISO.

Aktivasi
Aktivasi dilakukan dengan memilih kode Data_Path_ID vendor 0x19 dalam perintah standar HCI_LE_Setup_ISO_Data_Path. Perintah HCI_Configure_Data_Path dengan Data_Path_ID yang ditetapkan ke 0x19 dan Vendor_Specific_Config_Length yang ditetapkan ke 0, harus diterima, meskipun tidak ada tindakan yang diharapkan dari pengontrol setelah menerima perintah ini.
Titik waktu pengiriman
Peristiwa dipancarkan dari awal interval ISO (titik penanda CIG atau BIG), hingga interval ISO berikutnya. Pengontrol menunjukkan penundaan dengan awal efektif interval ISO menggunakan Anchor_Point_Delay.
Sinkronisasi pengontrol
Di awal interval ISO, pengontrol menghitung StreamSN dengan menambahkan nilai saat ini dengan ISO_Interval ÷ SDU_Interval yang dikonfigurasi; pada interval pertama, nilai ini diinisialisasi ke 0.
Kemudian, untuk setiap paket dalam FIFO ISO, hal berikut berlaku:
  • Pengontrol menghitung perbedaan pembungkusan SNdiff antara dua nomor urut:
    SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000
  • Jika (SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
    Paket berada di jendela transmisi ulang. Pesan seharusnya dijadwalkan untuk dikirimkan pada interval sebelumnya dan kini tersedia untuk dikirim ulang. Jika tidak demikian (belum dijadwalkan untuk dikirim), berarti pesan tersebut terlambat diterima. Hal ini harus disinyalkan ke host menggunakan In_Status. Paket tersebut dapat dibuang atau dijadwalkan untuk transmisi; pilihannya ditentukan oleh implementasi.
  • Atau saat SNdiff < ISO_Interval ÷ SDU_Interval:
    Paket dijadwalkan untuk transmisi dari peristiwa ini hingga waktu tunggu flush terjadi.
  • Atau saat SNdiff >= ISO_Interval ÷ SDU_Interval dan SNdiff <= Max_Forward_Buffers:
    Paket berada di masa mendatang; paket akan ditransmisikan dengan peristiwa berikutnya. Karena paket dikirim secara berurutan, kondisi ini mengakhiri penelusuran paket untuk interval ini.
    Buffer yang digunakan oleh host tidak dikomunikasikan ke pengontrol, tetapi terbatas pada Max_Forward_Buffers = 16.
  • Atau jika tidak ada kondisi di atas yang terpenuhi:
    Paket dibuang, batas waktu flush tercapai, atau paket yang salah bentuk telah diterima.

Parameter sub-peristiwa Ukuran Tujuan
Connection_Handle 2 oktet Handle koneksi CIS atau BIS
Rentang: 0x0000 hingga 0x0EFF
Sequence_Number 2 oktet Nomor urut aliran data, yang dikelola oleh pengontrol.

Diinisialisasi ke 0 saat CIS atau BIS dibuat, dan diinkrementalkan berdasarkan jumlah SDU menurut interval Isochronous ISO, yang ditentukan sebagai ISO_interval ÷ SDU_Interval, di setiap interval ISO.
Anchor_Point_Delay 2 oktet Penundaan dalam mikrodetik antara pembuatan peristiwa dan titik penambat BIG atau CIG yang efektif atau awal interval ISO. Stempel waktu titik penahan yang efektif ditentukan oleh:
Event generation time - Anchor_Point_Delay

Rentang: 0 hingga interval ISO dalam mikrodetik
In_Status 2 oktet Status buffer ISO pengontrol

Pada awal interval ISO, setiap bit bi disetel saat SDU (Sequence_Number + i) mod 0x10000 tersedia. Jika tidak tersedia, SDU diidentifikasi sebagai Not received from the host.

Nilai i berkisar dari 0 hingga ISO_Interval ÷ SDU_Interval - 1. Untuk nilai i lainnya, bit ditetapkan ke 0.
Tx_Status 2 oktet Status transmisi, relatif terhadap SDU dengan nomor urut:
(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000) mod 0x10000

Setiap bit bi disetel saat semua PDU SDU yang diidentifikasi, berdasarkan nomor urutnya, telah berhasil dikirim dan dikonfirmasi.

Nilai i berkisar dari 0 hingga ISO_Interval ÷ SDU_Interval - 1. Untuk nilai i lainnya, bit ditetapkan ke 0.
Di grup siaran, transmisi harus selalu dikonfirmasi.

Dukungan multipengiklan

Tujuan dukungan multi-pengiklan adalah sebagai berikut:

  • Kemampuan untuk mendukung beberapa iklan (max_advt_instances)
  • Daya transmisi yang berbeda untuk memungkinkan rentang yang bervariasi
  • Konten iklan yang berbeda
  • Respons individual untuk setiap pengiklan
  • Privasi (tidak dapat dilacak) untuk setiap pengiklan
  • Dapat terhubung

Agar spesifikasi ini tetap sesuai dengan standar yang ada, perintah khusus vendor berikut disediakan. Nilai ini berasal dari Spesifikasi Bluetooth Core 4.1.

LE_Multi_Advt_Command

OCF: 0x154

Parameter perintah Ukuran Tujuan
Multi_advt_opcode 1 oktet 0x01 - Set_Advt_Param_Multi_Sub_Cmd
0x02 - Set_Advt_Data_Multi_Sub_Cmd
0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 - Set_Random_Addr_Multi_Sub_Cmd
0x05 - Set_Advt_Enable_Multi_Sub_Cmd

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Multi_advt_opcode 1 oktet 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

Referensi dasar: Spesifikasi Bluetooth Core 4.1, halaman 964 (LE Set Advertising Parameter Command)

Sub OCF: 0x01

Parameter subperintah Ukuran Tujuan
Advertising_Interval_Min Per spesifikasi Per spesifikasi
Advertising_Interval_Max Per spesifikasi Per spesifikasi
Advertising_Type Per spesifikasi Per spesifikasi
Own_Address_Type Per spesifikasi Per spesifikasi
Own_Address Per spesifikasi Per spesifikasi
Direct_Address_Type Per spesifikasi Per spesifikasi
Direct_Address Per spesifikasi Per spesifikasi
Advertising_Channel_Map Per spesifikasi Per spesifikasi
Adverstising_Filter_Policy Per spesifikasi Per spesifikasi
Advertising_Instance 1 oktet Menentukan penerapan parameter di atas ke instance
Tx_power 1 oktet Transmit_Power
Unit - dalam dBm (bilangan bulat bertanda)
Rentang (-70 hingga +20)

Parameter Own_Address dapat berupa alamat yang dikonfigurasi host pada saat menyiapkan instance multi-iklan ini. Hal ini memberikan kemampuan untuk memiliki alamat pribadi yang dapat diselesaikan pada saat transmisi beacon pertama. Iklan di instance akan terus ditampilkan terlepas dari koneksinya. Stack BT host dapat mengeluarkan perintah untuk memulai iklan pada instance, setelah koneksi.

Peristiwa Command Complete akan dihasilkan untuk perintah ini seperti yang ditentukan dalam Spesifikasi Bluetooth Core 4.1, per perintah di atas. Pengontrol akan merespons dengan kode non-berhasil (parameter tidak valid) jika parameter instance iklan atau Tx_Power tidak valid.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Multi_advt_opcode 1 oktet 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Referensi dasar: Spesifikasi Bluetooth Core 4.1, halaman 969 (Perintah Data Iklan Set LE)

Sub OCF: 0x02

Parameter subperintah Ukuran Tujuan
Advertising_Data_Length Per spesifikasi Per spesifikasi
Advertising_Data Per spesifikasi Per spesifikasi
Advertising_Instance 1 oktet Menentukan penerapan parameter di atas ke instance

Peristiwa Command Complete akan dihasilkan untuk perintah ini seperti yang ditentukan dalam Spesifikasi Bluetooth Core 4.1, per perintah di atas. Pengontrol akan merespons dengan kode non-keberhasilan jika instance iklan atau parameter Tx_Power tidak valid.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Multi_advt_opcode 1 oktet 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Referensi dasar: Spesifikasi Bluetooth Core 4.1, halaman 970 (Perintah Data Respons Pemindaian Set LE)

Sub OCF: 0x03

Parameter subperintah Ukuran Tujuan
Scan_Response_Data_Length Per spesifikasi Per spesifikasi
Scan_Response_Data Per spesifikasi Per spesifikasi
Advertising_Instance 1 oktet Menentukan penerapan parameter di atas ke instance

Peristiwa Command Complete akan dihasilkan untuk perintah ini seperti yang ditentukan dalam Spesifikasi Bluetooth Core 4.1, per perintah di atas. Pengontrol akan merespons dengan kode non-keberhasilan (parameter tidak valid) jika parameter instance iklan atau Tx_Power tidak valid.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Multi_advt_opcode 1 oktet 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Referensi dasar: Spesifikasi Bluetooth Core 4.1, halaman 963 (LE Set Random Address Command)

Sub OCF: 0x04

Parameter subperintah Ukuran Tujuan
Alamat Acak Per spesifikasi Per spesifikasi
Advertising_Instance 1 oktet Menentukan penerapan parameter di atas ke instance

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Multi_advt_opcode 1 oktet 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Referensi dasar: Spesifikasi Bluetooth Core 4.1, halaman 971 (Perintah Aktifkan Iklan Set LE dalam spesifikasi inti tersebut)

OCF: 0x05

Parameter subperintah Ukuran Tujuan
Advertising_Enable 1 oktet Nilai 1 berarti aktifkan. Nilai lainnya berarti nonaktif.
Advertising_Instance 1 oktet Menentukan penerapan parameter di atas ke instance. Instance 0 berarti instance HCI standar.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Multi_advt_opcode 1 oktet 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Menurunkan resolusi alamat pribadi

Fitur ini menyelesaikan alamat pribadi di firmware atau hardware pengontrol, yang memberikan manfaat berikut:

  • Latensi yang terkait dengan host dalam menyelesaikan alamat pribadi
  • Menghemat daya dengan tidak mengaktifkan host

LE_Set_RPA_Timeout

OCF: 0x15C

Parameter perintah Ukuran Tujuan
LE_local_IRK 16 oktet IRK perangkat lokal yang digunakan untuk membuat alamat acak yang dapat diselesaikan.
tRPA_min 2 oktet Waktu tunggu pembuatan RPA minimum dalam detik. Pengontrol harus membuat alamat baru yang dapat diselesaikan untuk setiap peristiwa iklan/pemindaian/koneksi pada atau setelah waktu tunggu ini.
Rentang yang valid: 300-1800
tRPA_max 2 oktet Waktu tunggu pembuatan RPA maksimum dalam detik. Pengontrol harus membuat alamat baru yang dapat diselesaikan untuk peristiwa iklan/pemindaian/koneksi pada atau sebelum waktu tunggu ini.
Rentang yang valid: tRPA_min-1800
Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status perintah.

Nilai status HCI yang disarankan:
0x00 Berhasil
0x01 Perintah tidak diketahui (jika tidak didukung)
0x12 Parameter perintah tidak valid (jika ada parameter di luar rentang yang diberikan)

LE_RPA_offload_Command

OCF: 0x155

Parameter perintah Ukuran Tujuan
RPA_offload_opcode 1 oktet 0x1 - Aktifkan fitur khusus pelanggan
0x2 - Tambahkan IRK ke daftar
0x3 - Hapus IRK dari daftar
0x4 - Hapus daftar IRK
0x5 - Baca entri daftar IRK

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Event_RPA_offload_opcode 1 oktet 0x1 - Aktifkan fitur khusus pelanggan
0x2 - Tambahkan IRK ke daftar
0x3 - Hapus IRK dari daftar
0x4 - Hapus daftar IRK
0x5 - Baca entri daftar IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Parameter subperintah Ukuran Tujuan
enable_customer_specific_feature_set 1 oktet 0x01 - Aktifkan fitur RPA yang di-offload
0x00 - Nonaktifkan fitur RPA yang di-offload

Pelepasan RPA harus diaktifkan oleh host, berdasarkan kemampuan chip. Lihat LE_Get_Vendor_Capabilities_Command. Setiap chip dapat memiliki max_irk_list_sz yang berbeda-beda di firmware.

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Event_cust_specific_feature_opcode 1 oktet 0x01 [Aktifkan fitur khusus pelanggan]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Parameter subperintah Ukuran Tujuan
LE_IRK 16 oktet LE IRK (LSB byte ke-1)
Address_Type 1 oktet 0: Alamat publik
1: Alamat acak
LE_Device_Address 6 oktet Alamat publik atau acak yang terkait dengan IRK (LSB byte ke-1)

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Event_cust_specific_feature_opcode 1 oktet 0x02 [Tambahkan IRK ke daftar]
LE_IrkList_AvailableSpaces 1 oktet Entri daftar IRL yang tersedia setelah operasi saat ini

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Parameter subperintah Ukuran Tujuan
Address_Type 1 oktet 0: Alamat publik
1: Alamat acak
LE_Device_Address 6 oktet Alamat publik atau acak yang terkait dengan IRK

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Event_cust_specific_feature_opcode 1 oktet 0x03 [Menghapus IRK dari daftar]
LE_IrkList_AvailableSpaces 1 oktet Entri daftar IRL yang tersedia setelah operasi saat ini

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Parameter subperintah Ukuran Tujuan
Tidak ada

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Event_cust_specific_feature_opcode 1 oktet 0x04 [Hapus Daftar IRK]
LE_IrkList_AvailableSpaces 1 oktet Entri daftar IRL yang tersedia setelah operasi saat ini [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Parameter subperintah Ukuran Tujuan
LE_read_IRK_list_entry-index 1 oktet Indeks daftar IRK [0, max_irk_list_sz-1]

Peristiwa Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Command Complete
Event_cust_specific_feature_opcode 1 oktet 0x05 [Membaca Entri Daftar IRK]
LE_Read_IRK_List_entry 1 oktet Indeks IRK yang ingin dibaca kembali oleh host (ukuran daftar IRK maksimum adalah 32)
LE_IRK 16 oktet Nilai IRK
Address_Type 1 oktet 0: Alamat publik
1: Alamat acak
LE_Device_Address 6 oktet Alamat publik atau acak yang terkait dengan IRK
LE_Resolved_Private_Address 6 oktet Alamat pribadi yang dapat diselesaikan dan saat ini diselesaikan dari IRK ini

Pengurangan Beban Sniff

Fitur Sniff Offload memindahkan pengelolaan mode Sniff dari stack host Bluetooth ke pengontrol Bluetooth. Hal ini memungkinkan pengontrol mengelola waktu masuk/keluar dari mode Sniff dan menerapkan parameter sub-peringkat Sniff dan Sniff yang dapat dikonfigurasi, sementara host mempertahankan kontrol atas pemilihan parameter berdasarkan perubahan aktivitas profil Bluetooth.

Status Offload Sniff

Bagian ini menentukan status dalam pengontrol Bluetooth sehubungan dengan fungsi Sniff Offload. Dua status global telah ditentukan untuk mengidentifikasi status pengontrol Bluetooth sehubungan dengan pengaktifan Sniff Offload. Dua status khusus koneksi telah ditentukan untuk mengidentifikasi status koneksi BR/EDR saat pengontrol Bluetooth dalam status Sniff Offload Enabled.

Status Global

Dua status global telah ditentukan untuk mengidentifikasi status pengontrol Bluetooth sehubungan dengan pengaktifan Sniff Offload.

Status Nonaktif Offload Sniff

Pengontrol Bluetooth dianggap berada dalam status 'Sniff Offload Disabled' secara default. Pengontrol Bluetooth diharapkan menangani perintah HCI_Sniff_Mode, HCI_Exit_Sniff_Mode, dan HCI_Sniff_Subrating yang dikeluarkan dari host Bluetooth. Pengontrol Bluetooth juga harus meneruskan peristiwa HCI_Mode_Change dan HCI_Sniff_Subrating ke host Bluetooth sesuai dengan mask peristiwa yang ditetapkan oleh host Bluetooth.

Status Aktifkan Offload Sniff

Pengontrol Bluetooth dianggap berada dalam status 'Pengalihan Sniff Diaktifkan' setelah berhasil menangani 'WriteSniffOffloadEnable' untuk mengaktifkan Pengalihan Sniff. Dalam status ini, pengontrol Bluetooth diharapkan meneruskan peristiwa HCI_Mode_Change dan HCI_Sniff_Subrating ke host Bluetooth sebagaimana diputuskan oleh fungsi AND logis dari mask peristiwa yang ditetapkan oleh host Bluetooth dan Flag Penekanan Peristiwa.

Status Khusus Koneksi

Saat pengontrol Bluetooth dalam status ‘Offload Sniff Diaktifkan’, setiap ACL aktif dapat berada dalam salah satu dari dua status yang dijelaskan di bawah.

Status Parameter Tertunda

ACL dianggap dalam status 'Pending-Parameters' saat pengontrol Bluetooth dalam status 'Sniff Offload Enabled', tetapi perintah khusus vendor 'WriteSniffOffloadParameters' belum dikeluarkan setidaknya sekali oleh host Bluetooth untuk ACL saat ini.

Status Dimulai Kontrol

ACL dianggap dalam status 'Control-Started' saat pengontrol Bluetooth dalam status 'Sniff Offload Enabled', dan perintah khusus vendor 'WriteSniffOffloadParameters' telah dikeluarkan setidaknya sekali oleh host Bluetooth untuk ACL saat ini.

WriteSniffOffloadEnable

OCF: 0x310

Parameter perintah Ukuran Tujuan
Enable_Sniff_Offload 1 oktet 0x00 : Nonaktifkan
0x01 : Aktifkan
Subrating_Max_Latency 2 oktet Parameter Latensi Maksimum akan digunakan untuk menghitung sub-kecepatan mengintip maksimum yang dapat digunakan perangkat jarak jauh. Default: Latensi*sniff* T = N × 0,625 md (1 slot Baseband) Rentang: 0x0002 hingga 0xFFFE Rentang Waktu: 1,25 md hingga 40,9 dtk
Subrating_Min_Remote_Timeout 2 oktet Waktu tunggu mode deteksi minimum (T*sniff_mode_timeout*) yang dapat digunakan perangkat jarak jauh Default: 0x0000 Waktu tunggu = N × 0,625 md (1 slot Baseband) Rentang: 0x0000 hingga 0xFFFE Rentang Waktu: 0 dtk hingga 40,9 dtk
Subrating_Min_Local_Timeout 2 oktet Waktu tunggu mode deteksi minimum (T*sniff_mode_timeout*) yang dapat digunakan perangkat lokal. Default: 0x0000 Waktu Tunggu = N × 0,625 md (1 slot Baseband) Rentang: 0x0000 hingga 0xFFFE Rentang Waktu: 0 dtk hingga 40,9 dtk
Suppress_Mode_Change_Event 1 oktet 0x00 : Pengontrol Bluetooth akan melaporkan peristiwa HCI Mode_Change ke host sesuai dengan konfigurasi yang ditetapkan dalam perintah HCI_Set_Event_Mask.
0x01 : Pengontrol Bluetooth tidak akan melaporkan peristiwa HCI Mode_Change ke host.
Suppress_Sniff_Subrating_Event 1 oktet 0x00 : Pengontrol Bluetooth akan melaporkan peristiwa HCI Sniff_Subrating ke host sesuai dengan konfigurasi yang ditetapkan dalam perintah HCI_Set_Event_Mask.
0x01 : Pengontrol Bluetooth tidak akan melaporkan peristiwa HCI Sniff_Subrating ke host.

WriteSniffOffloadParameters

OCF: 0x311

Parameter perintah Ukuran Tujuan
Connection_Handle 2 oktet Handle koneksi ACL BR/EDR 16-bit. Rentang: 0x0000 hingga 0x0EFF
Sniff_Max_Interval 2 oktet –Rentang yang Ditentukan Bluetooth SIG, biasanya digunakan untuk masuk ke mode Sniff. Rentang: 0x0002 hingga 0xFFFE; hanya nilai genap yang valid Rentang Wajib: 0x0006 hingga 0x0540 Waktu = N × 0,625 md Rentang Waktu: 1,25 md hingga 40,9 dtk –Kasus Khusus 0x0000 : Digunakan untuk memilih “Push-Active” Mode Offload Sniff. 0x0001 : Digunakan untuk memilih Mode Offload Sniff “Prefer-Active”.
Sniff_Min_Interval 2 oktet Rentang: 0x0002 hingga 0xFFFE; hanya nilai genap yang valid Rentang Wajib: 0x0006 hingga 0x0540 Waktu = N × 0,625 md Rentang Waktu: 1,25 md hingga 40,9 dtk
Sniff_Attempts 2 oktet Jumlah slot penerimaan Baseband untuk upaya mengendus. Panjang = N × 1,25 md Rentang: 0x0001 hingga 0x7FFF Rentang Waktu: 1,25 md hingga 40,9 d Rentang Wajib untuk Pengontrol: 1 hingga T*sniff* ÷ 2
Sniff_Timeout 2 oktet Jumlah slot penerimaan Baseband untuk waktu tunggu habis sniffing. Panjang = N × 1,25 md Rentang: 0x0000 hingga 0x7FFF Rentang Waktu: 0 md hingga 40,9 d Rentang Wajib untuk Pengontrol: 0 hingga 0x0028
Link_Inactivity_Timeout 2 oktet Nilai waktu tunggu dalam milidetik. Timer Link_Inactivity dimulai/direset pada setiap transaksi HCI-ACL. Saat timer ini berakhir, pengontrol akan memulai masuk ke mode Sniff.
Subrating_Max_Latency 2 oktet Parameter Latensi Maksimum akan digunakan untuk menghitung sub-kecepatan mengintip maksimum yang dapat digunakan perangkat jarak jauh. Default: Latensi*sniff* T = N × 0,625 md (1 slot Baseband) Rentang: 0x0002 hingga 0xFFFE Rentang Waktu: 1,25 md hingga 40,9 dtk
Subrating_Min_Remote_Timeout 2 oktet Waktu tunggu mode deteksi minimum (T*sniff_mode_timeout*) yang dapat digunakan perangkat jarak jauh Default: 0x0000 Waktu tunggu = N × 0,625 md (1 slot Baseband) Rentang: 0x0000 hingga 0xFFFE Rentang Waktu: 0 dtk hingga 40,9 dtk
Subrating_Min_Local_Timeout 2 oktet Waktu tunggu mode deteksi minimum (T*sniff_mode_timeout*) yang dapat digunakan perangkat lokal. Default: 0x0000 Waktu Tunggu = N × 0,625 md (1 slot Baseband) Rentang: 0x0000 hingga 0xFFFE Rentang Waktu: 0 dtk hingga 40,9 dtk
Allow_Exit_Sniff_On_Rx 1 oktet Flag untuk mengontrol keluar dari mode Sniff pada transaksi HCI-ACL arah terima. 0x00 : Do not exit sniff on Rx. 0x01 : Keluar dari Sniff pada Rx Arah terima HCI-ACL ditentukan sebagai transmisi paket ACL dari pengontrol ke host melalui HCI.
Allow_Exit_Sniff_On_Tx 1 oktet Flag untuk mengontrol keluar dari mode Sniff pada transaksi HCI-ACL arah transmisi. 0x00 : Do not exit sniff on Tx. 0x01 : Exit Sniff on Tx Transmit-direction HCI-ACL ditentukan sebagai transmisi paket ACL dari host ke pengontrol melalui HCI.