Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Persyaratan HCI

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

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

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

Gambaran umum desain

Kemampuan dan konfigurasi chip

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

Untuk mengelola lanskap yang bervariasi dan untuk mengelola migrasi, filosofi desain yang memungkinkan pengontrol BT mengekspos kemampuannya (di luar Spesifikasi standar Bluetooth Core 5.2) dijelaskan dalam dokumen ini. Tumpukan 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 diratifikasi dalam spesifikasi Bluetooth. Jika fitur yang dijelaskan di bawah tersedia dalam metode HCI standar dalam spesifikasi Bluetooth di masa mendatang, kami akan membuat pendekatan itu sebagai default.

Kemampuan khusus vendor

Perintah khusus vendor: LE_Get_Vendor_Capabilities_Command

Bidang Perintah OpCode (OCF): 0x153

Parameter perintah Ukuran Tujuan
NA Daftar parameter Command kosong

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
max_advt_instances
(Tidak digunakan lagi)
1 oktet Jumlah contoh iklan yang didukung.

Dicadangkan setelah v0.98.
Parameter ini tidak berlaku lagi di spesifikasi fitur Google v0.98 dan yang lebih tinggi yang 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 sebuah chip, maka perlu diberdayakan oleh tuan rumah.
0 = Tidak mampu
1 = Mampu

Dicadangkan setelah v0.98.
Parameter ini tidak berlaku lagi di spesifikasi fitur Google v0.98 dan yang lebih tinggi yang 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] = Bilangan mayor
byte [1] = Angka kecil

v1.00
byte [0] = 0x01
byte [1] = 0x00
total_num_of_advt_tracked 2 oktet Total jumlah pengiklan dilacak untuk OnLost / OnFound tujuan
extended_scan_support 1 oktet Mendukung jendela dan interval pemindaian yang diperpanjang
debug_logging_supported 1 oktet Mendukung pencatatan 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 berlaku lagi di spesifikasi fitur Google v0.98 dan yang lebih tinggi yang 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 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 didukung
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 dicadangkan

Pengelompokan hasil pemindaian

Sasaran desain adalah untuk menyempurnakan cara pemberitahuan peristiwa Respons Pemindaian LE Bluetooth dikirim ke host, untuk menghemat daya di host.

Dengan mengurangi seberapa sering pengontrol memberi tahu prosesor aplikasi host untuk memindai hasil, prosesor aplikasi host dapat tetap dalam mode diam / tidur lebih lama. Ini mengurangi konsumsi daya di host. Parameter kembali total_scan_results_storage dari LE_Get_Vendor_Capabilities_Command menunjukkan kemampuan chip untuk penyimpanan hasil pemindaian.

Fitur ini berfokus pada manajemen dan konfigurasi fasilitas penyimpanan LE Scan Results di pengontrol Bluetooth. Penyimpanan digunakan untuk sementara mengumpulkan data iklan dan memindai data dan metadata yang diterima oleh pengontrol untuk dikirim nanti ke host.

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

  • Terpotong. Berisi elemen informasi berikut: {MAC, TX Power, RSSI, Timestamp}
  • Penuh. Berisi elemen informasi berikut: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

Parameter perintah Ukuran Tujuan
Batch_Scan_opcode 1 oktet 0x1 - Aktifkan fitur khusus pelanggan
0x2 - Mengatur parameter Penyimpanan Pindaian Batch
0x3 - Mengatur parameter Pindai Batch
0x4 - Membaca parameter Hasil Pindai Batch

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

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
Batch_Scan_opcode 1 oktet 0x1 - Aktifkan fitur khusus pelanggan
0x2 - Mengatur parameter Penyimpanan Pindaian Batch
0x3 - Mengatur parameter Pindai Batch
0x4 - Membaca parameter Hasil Pindai Batch

LE_Batch_Scan_Command: Mengaktifkan fitur Khusus Pelanggan

Sub OCF: 0x01

Parameter sub-perintah Ukuran Tujuan
enable_customer_specific_feature_set 1 oktet 0x01 - Aktifkan fitur Batch Scan
0x00 - Nonaktifkan fitur Batch Scan

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
Batch_Scan_opcode 1 oktet 0x1 - Aktifkan fitur khusus pelanggan
0x2 - Mengatur parameter Penyimpanan Pindaian Batch
0x3 - Mengatur parameter Pindai Batch
0x4 - Membaca parameter Hasil Pindai Batch

LE_Batch_Scan_Command: Setel subperintah Parameter Penyimpanan Pemindaian Batch

Sub OCF: 0x02

Parameter sub-perintah Ukuran Tujuan
Batch_Scan_Full_Max 1 oktet Ruang penyimpanan maksimal (dalam%) dialokasikan untuk gaya penuh
[Rentang: 0-100]
Batch_Scan_Truncated_Max 1 oktet Ruang penyimpanan maksimal (dalam%) dialokasikan ke gaya terpotong
[Rentang: 0-100]
Batch_Scan_Notify_Threshold 1 oktet Tingkat pemberitahuan pengaturan (dalam%) untuk kolam penyimpanan individu
[Rentang: 0-100]
Pengaturan ke 0 akan menonaktifkan notifikasi. Peristiwa HCI khusus vendor dibuat (Subperistiwa pelanggaran ambang batas penyimpanan)

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
Batch_scan_opcode 1 oktet 0x02 [Atur parameter Pindai Batch]

LE_Batch_Scan_Command: Setel subperintah Param Pindai Batch

Sub OCF: 0x03

Parameter sub-perintah Ukuran Tujuan
Batch_Scan_Mode 1 oktet 0x00 - Pemindaian batch dinonaktifkan
0x01 - Mode terpotong diaktifkan
0x02 - Mode penuh diaktifkan
0x03 - Mode Terpotong dan Penuh diaktifkan
Duty_cycle_scan_window 4 oktet Waktu pemindaian Pindai Batch (# slot)
Duty_cyle_scan_interval 4 oktet Periode interval Pindai Batch (# slot)
own_address_type 1 oktet 0x00 - Alamat perangkat publik
0x01 - Alamat perangkat acak
Batch_scan_Discard_Rule 1 oktet 0 - Buang iklan terlama
1 - Buang iklan dengan RSSI terlemah

Sub-perintah ini akan memulai pemindaian batch, jika diaktifkan. Dalam pemindaian terpotong, hasil disimpan dalam bentuk terpotong dengan kunci unik untuk gaya terpotong = { BD_ADDR, scan_interval}. Ini berarti hanya satu BD_ADDR will direkam untuk setiap interval pemindaian. Catatan yang harus disimpan untuk mode Terpotong adalah sebagai berikut: { BD_ADDR , Tx Power, RSSI, Timestamp}

Saat mode Penuh diaktifkan, pemindaian aktif akan digunakan dan Respons Pindai akan direkam. Kunci unik gaya lengkap = {MAC, Paket iklan}, terlepas dari interval pemindaian. Catatan yang harus disimpan untuk mode Penuh adalah { BD_ADDR , Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. Dalam gaya Penuh, paket AD yang sama, jika dilihat beberapa kali pada interval pemindaian yang berbeda, hanya direkam sekali. Namun, dalam mode Terpotong, yang menarik adalah visibilitas BA_ADDR di seluruh interval pemindaian yang berbeda (sekali per interval pemindaian). RSSI adalah nilai rata-rata dari semua duplikat iklan unik dalam interval pemindaian.

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
Batch_scan_opcode 1 oktet 0x03 [Atur Parameter Pindai Batch]

LE_Batch_Scan_Command: Membaca sub-perintah Hasil Pindai Batch

Sub OCF: 0x04

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

Acara Command Complete akan dibuat untuk perintah ini. Ketika tuan rumah mengeluarkan perintah ini, semua hasil di pengontrol mungkin tidak cocok dalam satu acara Command Complete. Host akan mengulangi perintah ini hingga hasil yang sesuai dalam acara Command Complete menunjukkan 0 dalam jumlah record, yang menunjukkan controller tidak memiliki record lagi untuk dikomunikasikan ke host. Setiap acara Command Complete dapat berisi beberapa record hanya dari satu jenis data (Penuh atau Terpotong).

Pengontrol dan referensi waktu host tidak disinkronkan. Satuan cap 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 aktual 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. Ini memungkinkan tuan rumah menghitung sudah berapa lama peristiwa itu terjadi.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
Batch_scan_opcode 1 oktet 0x03 [Atur parameter Pindai Batch]
Batch_Scan_data_read 1 oktet Mengidentifikasi format (Terpotong atau Penuh)
num_of_records 1 oktet Jumlah record Batch_Scan_data_read
format_of_data Variabel Mode Terpotong:
Alamat [0]: 6 oktet
Address_Type [0]: 1 oktet
Tx_Pwr [0]: 1 oktet
RSSI [0]: 1 oktet
Stempel waktu [0]: 2 oktet
[beberapa catatan ( num_of_records ) dengan format di atas]

Mode Penuh:
Alamat [0]: 6 oktet
Address_Type [0]: 1 oktet
Tx_Pwr [0]: 1 oktet
RSSI [0]: 1 oktet
Stempel waktu [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 catatan dengan format di atas ( num_of_records )]

Filter Isi Paket Iklan

Gunakan ini untuk mengaktifkan / menonaktifkan / menyiapkan Filter Konten Paket Iklan (APCF) di pengontrol.

LE_APCF_Command

OCF: 0x157

Parameter perintah Ukuran Tujuan
APCF_opcode 1 oktet 0x00 - APCF Aktifkan
0x01 - APCF Mengatur parameter Penyaringan
0x02 - Alamat Penyiar APCF
0x03 - UUID Layanan APCF
0x04 - UUID Permintaan Layanan APCF
0x05 - Nama Lokal APCF
0x06 - Data Produsen APCF
0x07 - Data Layanan APCF

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status pengembalian
APCF_opcode 1 oktet 0x00 - APCF Aktifkan
0x01 - APCF Mengatur parameter Penyaringan
0x02 - Alamat Penyiar APCF
0x03 - UUID Layanan APCF
0x04 - UUID Permintaan Layanan APCF
0x05 - Nama Lokal APCF
0x06 - Data Produsen APCF
0x07 - Data Layanan APCF

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

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

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
APCF_opcode 1 oktet 0x0 - APCF Aktifkan
APCF_Enable 1 oktet Aktifkan / nonaktifkan diatur melalui APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

Subperintah ini digunakan untuk menambah atau menghapus spesifikasi filter atau menghapus daftar filter untuk penyaringan on-chip.

Sub OCF: 0x01

Parameter sub-perintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus filter tertentu bersama dengan entri fitur terkait di tabel lain.
Hapus akan menghapus semua filter dan entri terkait di tabel lain.
APCF_Filter_Index 1 oktet Indeks filter (0, max_filter-1 )
APCF_Feature_Selection 2 oktet Masker bit untuk fitur yang dipilih:
Bit 0: Setel untuk mengaktifkan filter Alamat Siaran
Bit 1: Setel untuk mengaktifkan filter Perubahan Data Layanan
Bit 2: Setel untuk mengaktifkan pemeriksaan UUID Layanan
Bit 3: Setel untuk mengaktifkan pemeriksaan UUID Permintaan Layanan
Bit 4: Setel untuk mengaktifkan pemeriksaan Nama Lokal
Bit 5: Setel untuk mengaktifkan Pemeriksaan Data Produsen
Bit 6: Atur untuk mengaktifkan Pemeriksaan Data Layanan
APCF_List_Logic_Type 2 oktet Operasi logika untuk setiap pemilihan fitur (posisi per-bit) yang ditentukan dalam APCF_Feature_Selection .
Hanya valid jika fitur diaktifkan.
Nilai posisi bit:
0: ATAU
1: DAN
Jika logika "AND" dipilih, paket ADV akan melewati filter hanya jika berisi SEMUA entri dalam daftar.
Jika logika "OR" dipilih, paket ADV akan melewati filter jika berisi salah satu entri dalam daftar.
APCF_Filter_Logic_Type 1 oktet 0x00: ATAU
0x01: DAN
Catatan: Jenis logika adalah T / A untuk tiga bidang pertama APCF_Feature_Selection , yang selalu merupakan logika "AND". Mereka hanya berlaku untuk (Bit 3 - Bit 6) empat bidang APCF_Feature_Selection .
rssi_high_thresh 1 oktet [dalam dBm]
Pengiklan dianggap terlihat hanya jika sinyal lebih tinggi dari ambang batas 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 Valid hanya jika delivery_mode on_found .
[dalam milidetik]
Saatnya firmware untuk berlama-lama dan mengumpulkan iklan tambahan sebelum melaporkan.
onfound_timeout_cnt 1 oktet Valid hanya jika delivery_mode on_found .
[menghitung]
Jika iklan di onFound tetap ada di firmware selama durasi onfound_timeout , itu akan mengumpulkan beberapa iklan dan hitungannya akan diperiksa. Jika hitungan melebihi onfound_timeout_cnt , akan segera dilaporkan OnFound setelahnya.
rssi_low_thresh 1 oktet Valid hanya jika delivery_mode on_found .
[dalam dBm]
Paket pengiklan dianggap tidak terlihat jika RSSI paket yang diterima tidak di atas ambang rendah RSSI.
onlost_timeout 2 oktet Valid hanya jika delivery_mode on_found .
[dalam milidetik]
Jika sebuah iklan, setelah ditemukan, tidak dilihat secara lost_timeout selama periode lost_timeout , itu akan segera dilaporkan hilang.
num_of_tracking_entries 2 oktet Valid hanya jika delivery_mode on_found .
[menghitung]
Jumlah total pengiklan untuk dilacak per filter.

Nilai RSSI harus menggunakan komplemen 2 untuk mewakili nilai negatif.

Host harus dapat mengkonfigurasi 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 demi satu. Jadi, tindakan yang dihasilkan ( delivery_mode ) sangat terkait dengan pemfilteran. Mode pengirimannya adalah sebagai berikut: report_immediately , batch , dan onFound . Nilai OnLost terkait dengan OnFound dalam arti akan muncul setelah OnFound saat hilang.

Alur pemrosesan ini menggambarkan model konseptual:

Ketika bingkai iklan (atau respons pemindaian) diterima, itu diterapkan ke semua filter dalam urutan serial. Ada kemungkinan bahwa iklan dapat menyebabkan pelaporan langsung berdasarkan satu filter dan pengelompokan yang sama karena tindakan filter yang berbeda.

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

OnFound pengiriman OnFound didasarkan pada filter yang dikonfigurasi. Kombinasi yang memicu tindakan filter agar berhasil dianggap entitas yang akan dilacak onLost . Peristiwa terkait adalah sub-peristiwa pelacakan LE Advt.

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

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
APCF_opcode 1 oktet 0x02 - APCF Atur Parameter Penyaringan
APCF_Action 1 oktet Gema kembali APCF_Action perintah
APCF_AvailableSpaces 1 oktet Jumlah entri yang tersedia di tabel filter

LE_APCF_Command: broadcast_address_sub_cmd

Subperintah ini digunakan untuk menambah atau menghapus alamat pengiklan atau untuk menghapus daftar alamat pengiklan untuk penyaringan on-chip.

Sub OCF: 0x02

Parameter sub-perintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus alamat penyiar yang ditentukan dalam filter yang ditentukan.
Hapus akan menghapus semua alamat penyiar di 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 atau dihapus dari daftar alamat penyiar
APCF_Application_Address_type 1 oktet 0x00: Publik
0x01: Acak
0x02: NA (jenis alamat tidak berlaku)

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
APCF_opcode 1 oktet 0x02 - Alamat Penyiar APCF
APCF_Action 1 oktet Gema kembali APCF_Action perintah
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 menambah atau menghapus UUID layanan atau untuk menghapus daftar UUID layanan untuk penyaringan on-chip.

Sub OCF: 0x03

Parameter sub-perintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus alamat UUID layanan yang ditentukan dalam filter yang ditentukan.
Hapus 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 menambah, atau menghapus dari, daftar.
APCF_UUID_MASK 2,4,16 oktet Service UUID Mask (16-bit, 32-bit, atau 128-bit) untuk ditambahkan ke daftar. Panjangnya harus sama dengan APCF_UUID.

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
APCF_opcode 1 oktet 0x03 - UUID Layanan APCF
APCF_Action 1 oktet Gema kembali APCF_Action perintah
APCF_AvailableSpaces 1 oktet Jumlah entri gratis masih tersedia di tabel UUID Layanan

LE_APCF_Command: solicitation_uuid_sub_cmd

Subperintah ini digunakan untuk menambah atau menghapus UUID ajakan atau untuk menghapus daftar UUID ajakan untuk pemfilteran on-chip.

Sub OCF: 0x04

Parameter sub-perintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus alamat UUID permintaan di filter yang ditentukan.
Hapus akan menghapus semua UUID permintaan dalam 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) untuk menambah atau menghapus dari daftar.
APCF_UUID_MASK 2,4,16 oktet The Solicitation UUID Mask (16-bit, 32-bit, atau 128-bit) untuk ditambahkan ke daftar. Panjangnya harus sama dengan APCF_UUID .

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
APCF_opcode 1 oktet 0x04 - UUID Permohonan APCF
APCF_Action 1 oktet Gema kembali APCF_Action perintah
APCF_AvailableSpaces 1 oktet Jumlah entri gratis masih tersedia di tabel UUID Permintaan

LE_APCF_Command: local_name_sub_cmd

Sub-perintah ini digunakan untuk menambah atau menghapus string nama lokal atau untuk menghapus daftar string nama lokal untuk penyaringan on-chip.

Sub OCF: 0x05

Parameter sub-perintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus string nama lokal yang ditentukan dalam filter yang ditentukan.
Hapus akan menghapus semua string nama lokal di 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 maksimal dalam string nama lokal adalah 29
  • Tidak berlaku jika tindakannya "Hapus" (0x2)

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
APCF_opcode 1 oktet 0x05 - Nama Lokal APCF
APCF_Action 1 oktet Gema kembali APCF_Action perintah
APCF_AvailableSpaces 1 oktet Jumlah entri gratis masih tersedia di tabel Nama lokal

LE_APCF_Command: manf_data_sub_cmd

Subperintah ini digunakan untuk menambah atau menghapus string data pabrikan atau untuk menghapus daftar string data pabrikan untuk pemfilteran on-chip.

Sub OCF: 0x06

Parameter sub-perintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus string data pabrikan yang ditentukan dalam filter yang ditentukan.
Hapus akan menghapus semua string data pabrikan di 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 pabrikan.

Catatan:
  • Saat ini jumlah karakter maksimal dalam string nama lokal adalah 29
  • Tidak berlaku jika tindakannya "Hapus" (0x2)
APCF_ManData_Mask Ukuran variabel Pembuatan masker data untuk ditambahkan ke daftar. Ini harus memiliki panjang yang sama dengan APCF_LocName_or_ManData_or_SerData .

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
APCF_opcode 1 oktet 0x06 - Data Produsen APCF
APCF_Action 1 oktet Gema kembali APCF_Action perintah
APCF_AvailableSpaces 1 oktet Jumlah entri gratis masih tersedia di tabel Data Produsen

LE_APCF_Command: service_data_sub_cmd

Subperintah ini digunakan untuk menambah atau menghapus string data layanan atau untuk menghapus daftar string data layanan untuk penyaringan on-chip.

Sub OCF: 0x07

Parameter sub-perintah Ukuran Tujuan
APCF_Action 1 oktet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus string data layanan yang ditentukan dalam filter yang ditentukan.
Hapus akan menghapus semua string data layanan di 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 maksimal dalam string nama lokal adalah 29
  • Tidak berlaku jika tindakannya "Hapus" (0x2)
APCF_LocName_Mandata_or_SerData_Mask Ukuran variabel Masker data layanan untuk ditambahkan ke daftar. Ini harus memiliki panjang yang sama dengan APCF_LocName_or_ManData_or_SerData.

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
APCF_opcode 1 oktet 0x07 - Data Layanan APCF
APCF_Action 1 oktet Gema kembali APCF_Action perintah
APCF_AvailableSpaces 1 oktet Jumlah entri gratis masih tersedia untuk tabel Data Layanan

Aktivitas pengontrol dan perintah informasi energi

Tujuan dari informasi ini adalah agar sistem host yang lebih tinggi berfungsi untuk menganalisis aktivitas total semua komponen, termasuk pengontrol BT dan status makronya, sehubungan dengan apa yang terjadi di aplikasi dan kerangka kerja. Untuk melakukan ini, informasi berikut diperlukan dari tumpukan BT dan pengontrol:

  • BT stack: Melaporkan status operasional makro saat ini dari pengontrol
  • Firmware: Melaporkan aktivitas agregat dan informasi energi

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

  • Idle: [pemindaian halaman, LE advt, pemindaian pertanyaan]
  • Pindai: [paging / inquiry / try to connect]
  • Aktif: [Tautan ACL aktif, tautan SCO sedang berlangsung, mode sniff]

Aktivitas yang dilacak oleh pengontrol selama masa pakainya adalah waktu Tx, waktu Rx, waktu idle, dan total energi yang dikonsumsi. Mereka dihapus saat dibaca dari tuan rumah.

LE_Get_Controller_Activity_Energy_Info

Ini adalah perintah khusus vendor.

OCF: 0x159

Parameter sub-perintah Ukuran Tujuan
NA Parameter perintah kosong

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
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 idle (non-sleep low power state)
total_energy_used 4 oktet Total energi yang digunakan [produk arus (mA), tegangan (V) dan waktu (ms)]

LE diperpanjang mengatur perintah parameter pemindaian

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

Referensi dasar: Spesifikasi BT Core 5.2, halaman 2493 (LE Atur Perintah Parameter Pindai)

OCF: 0x15A

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

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap

Dapatkan perintah info debug pengontrol

Tujuan elemen informasi ini adalah untuk memperoleh informasi debug pengontrol oleh host, dalam bentuk biner, untuk pasca-pemrosesan dan analisis. Ini membantu men-debug masalah di lapangan dan memberi teknisi dengan toolkit untuk mencatat informasi untuk analisis. Kontroler dapat memberikan informasi saat diminta oleh host melalui peristiwa (sub-peristiwa Info Debug Kontroler) atau secara otonom jika diinginkan oleh pengontrol. Contoh penggunaan bisa untuk melaporkan informasi status firmware, informasi crash dump, informasi logging, dll.

OCF: 0x15B

Parameter perintah Ukuran Tujuan
T / A Daftar parameter perintah kosong

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap

Dukungan Pembongkaran Perangkat Keras A2DP

Fitur A2DP Offload mendukung pembongkaran proses pengkodean audio A2DP ke prosesor audio yang dipasang ke Pengontrol BT. Aliran data audio yang disandikan melewati langsung dari prosesor Audio ke Pengontrol BT tanpa keterlibatan host BT. BT Host masih bertanggung jawab atas konfigurasi dan kontrol sesi A2DP.

OCF: 0x15D

Mulai A2DP Offload

Sub OCF: 0x01

Gunakan perintah ini untuk mengonfigurasi proses A2DP Offload dan untuk memulai aliran 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 Maks. Diizinkan (dalam md). Nilai nol menonaktifkan flush.
SCMS-T_Enable 2 oktet Oktet 0: Bendera yang memungkinkan penambahan header SCMS-T.
  • 0x00 - Header SCMS-T tidak termasuk.
  • 0x01 - Termasuk Header SCMS-T.

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 Bitrate audio yang dikodekan dalam bit per detik.
0x00000000 - Bitrate audio tidak ditentukan / tidak digunakan.
0x00000001 - 0x00FFFFFF - Bitrate audio yang dikodekan dalam bit per detik.
0x01000000 - 0xFFFFFFFF - Dicadangkan.
Connection_Handle 2 oktet Connection Handle dari koneksi A2DP sedang dikonfigurasi
L2CAP_Channel_ID 2 oktet ID Saluran L2CAP yang akan digunakan untuk koneksi A2DP ini
L2CAP_MTU_Size 2 oktet Ukuran maksimum L2CAP MTU yang berisi paket audio yang disandikan
Codec_Information 32 oktet Informasi khusus codec.

Kodek SBC:

Lihat elemen informasi khusus SBC Codec di A2DP v1.3.
Oktet 0: Panjang balok | Subband | Metode Alokasi
Oktet 1: Nilai Bitpool Minimum
Oktet 2: Nilai Bitpool maksimum
Oktet 3: Frekuensi Sampling | Mode Saluran
Oktet 4-31: dicadangkan

Codec AAC:

Lihat elemen informasi spesifik Codec AAC di A2DP v1.3
Oktet 0: Tipe Objek
Oktet 1; b7: VBR
Oktet 2-31: dicadangkan

Codec LDAC:

Oktet 0-3: ID Vendor
0x0000012D

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

Oktet 6: Indeks Kecepatan Bit:
0x00 - Tinggi
0x01 - Pertengahan
0x02 - Rendah
0x03 - 0x7E - Dicadangkan
0x7F - ABR (Adaptive Bit Rate)
0x80 - 0xFF - Dicadangkan

Oktet 7: Mode Saluran LDAC
0x01 - Stereo
0x02 - Ganda
0x04 - Mono
Lainnya sudah dipesan

Oktet 8-31: dicadangkan

Semua codec lainnya:

Oktet 0-31: dicadangkan

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
Sub_Opcode 1 oktet 0x0- Mulai A2DP Offload

Hentikan A2DP Offload

Sub OCF: 0x02

Perintah ini digunakan untuk menghentikan aliran A2DP Offload.

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

Tidak ada parameter yang ditentukan untuk perintah ini.

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
Sub_Opcode 1 oktet 0x02 - Hentikan Pembongkaran 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-peristiwa BQR terkait Kualitas Tautan 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 melaporkan kejadian Mendekati LSTO ke host.
  • A2DP Audio Choppy: Saat pengontrol mendeteksi faktor yang menyebabkan audio terputus-putus, pengontrol melaporkan peristiwa A2DP Audio Choppy ke host.
  • (e) SCO Voice Choppy: Saat pengontrol mendeteksi faktor yang menyebabkan suara terputus-putus, pengontrol melaporkan (e) peristiwa SCO Voice Choppy ke host.
  • Root Inflammation: Acara ini dikirim oleh pengontrol ke tumpukan saat HAL atau pengontrol mengalami kesalahan fatal dan perlu memulai ulang Bluetooth.
  • Jejak pesan LMP / LL: Pengontrol mengirim handshaking pesan LMP / LL dengan perangkat jarak jauh ke host.
  • Jejak penjadwalan Multi-profil / Coex Bluetooth: Pengontrol mengirimkan informasi penjadwalannya tentang penanganan beberapa profil Bluetooth dan koeksistensi nirkabel dalam pita 2,4 Ghz ke host.
  • Mekanisme Informasi Debug Pengontrol: Saat diaktifkan, pengontrol dapat secara mandiri melaporkan informasi pencatatan debug melalui sub-peristiwa info debug Pengontrol ke host.

OCF: 0x15E

Parameter perintah Ukuran Tujuan
BQR_Report_Action 1 oktet Tindakan untuk menambah / menghapus pelaporan peristiwa kualitas yang disetel dalam parameter BQR_Quality_Event_Mask, atau hapus semua.

0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus

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

BQR_Quality_Event_Mask 4 oktet Bit mask untuk pelaporan acara berkualitas yang dipilih.

Bit 0: Setel untuk mengaktifkan mode pemantauan kualitas.
Bit 1: Setel untuk mengaktifkan acara Approaching LSTO.
Bit 2: Setel untuk mengaktifkan acara A2DP Audio Choppy.
Bit 3: Setel untuk mengaktifkan (e) acara SCO Voice Choppy.
Bit 4: Setel untuk mengaktifkan acara peradangan Root.
Bit 5 ~ 15: Dicadangkan.
Bit 16: Setel untuk mengaktifkan jejak pesan LMP / LL.
Bit 17: Setel untuk mengaktifkan pelacakan penjadwalan Multi-link / Coex Bluetooth.
Bit 18: Setel untuk mengaktifkan mekanisme Informasi Debug Pengontrol.
Bit 19 ~ 31: Dicadangkan.

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

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

Acara Command Complete akan dibuat untuk perintah ini.

Parameter pengembalian Ukuran Tujuan
Status 1 oktet Status Perintah Lengkap
Current_Quality_Event_Mask 4 oktet Menunjukkan pengaturan bit mask saat ini.
Bit 0: Mode pemantauan kualitas diaktifkan.
Bit 1: Mendekati pelaporan peristiwa LSTO diaktifkan.
Bit 2: Pelaporan peristiwa A2DP Audio Choppy diaktifkan.
Bit 3: (e) Pelaporan peristiwa SCO Voice Choppy diaktifkan.
Bit 4: Pelaporan peristiwa peradangan root diaktifkan.
Bit 5 ~ 15: Dicadangkan.
Bit 16: Jejak pesan LMP / LL diaktifkan.
Bit 17: Pelacakan penjadwalan Multi-link / Coex Bluetooth diaktifkan.
Bit 18: Mekanisme Informasi Debug Pengontrol diaktifkan.
Bit 19 ~ 31: Dicadangkan.

Perintah Dynamic Audio Buffer

The Dynamic Audio Buffer reduces audio glitching by changing the audio buffer size in the Bluetooth controller based on various scenarios.

OCF: 0x15F

Get audio buffer time capability

Sub OCF: 0x01

Use this command to get the audio buffer time capability from the Bluetooth controller.

Command parameter Size Tujuan
N/A Empty Command parameter list

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Dynamic_Audio_Buffer_opcode 1 octet 0x01 - Get audio buffer time
Audio_Codec_Type_Supported 4 octets Bit masks for the supported codec types
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 are reserved
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 octets Default buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 0 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 octets Maximum buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 0 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 octets Minimum buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 0 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 octets Default buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 1 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 octets Maximum buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 1 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 octets Minimum buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 1 codec type is not supported.
Unit: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 octets Default buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 31 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octets Maximum buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 31 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 octets Minimum buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 31 codec type is not supported.
Unit: ms

Set audio buffer time

Sub OCF: 0x02

Use this command to set the audio buffer time to the Bluetooth controller.

Command parameter Size Tujuan
Audio_Codec_Buffer_Time 2 octets Requested audio buffer time for the current used codec.
Unit: ms

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Dynamic_Audio_Buffer_opcode 1 octet 0x02 - Set audio buffer time
Audio_Codec_Buffer_Time 2 octets Current audio buffer time in the Bluetooth controller.
Unit: ms

HCI event (vendor-specific)

Vendor-specific HCI events are required in some cases. Refer to Figure 5.4 on page 1897 of the BT Core 5.2 Specification. Event parameter 0 will always contain the first sub-event code, based on which the rest of the HCI event is decoded.

Event Parameter Size Tujuan
HCI_vendor_specific_event_code 1 octet 0xFF
sub_event_code 1 octet A sub-event code will be 1 octet in size, the byte immediately following Parameter Length in the HCI event packet.

Storage threshold breach sub-event

This event indicates that the storage threshold has been breached.

Sub-event code = 0x54

Sub-event Parameter Size Tujuan
Tidak ada

LE multi-advertising state change sub-event

This event indicates that an advertising instance has changed its state. At this time, this event is only used to indicate which advertising instance was stopped as a result of a connection.

Sub-event code = 0x55

Sub-event parameter Size Tujuan
Advertising_instance 1 octet Identifies the specific advertising instance
Valid values are 0 through max_advt_instances -1
State_Change_Reason 1 octet 0x00: Connection received
Connection_handle 2 octets Identifies the connection that caused the advt instance to be disabled (0xFFFF if invalid)

LE advertisement tracking sub-event

This event indicates when an advertiser is found or lost.

Sub event code = 0x56

Sub-event Parameter Size Tujuan
APCF_Filter_Index 1 octet Filter Index (0, max_filter -1)
Advertiser_State 1 octet 0x00: Advertiser found
0x01: Advertiser lost
Advt_Info_Present 1 octet 0x00: Advertiser information ( Advt_Info ) present
0x01: Advertiser information ( Advt_Info ) not present
Advertiser_Address 6 octets Public or random address
Advertiser_Address_Type 1 octet 0x00: Public address
0x01: Random address
Advt_Info Tx_Pwr[0] : 1 octet
RSSI[0] : 1 octet
Timestamp[0] : 2 octets
Adv packet_len[0] : 1 octet
Adv_packet[0] : Adv_packet_len octets
Scan_data_resp_len[0] : 1 octet
Scan_data_resp[0] : Scan_data_resp octets

Controller debug info sub-event

This event is used by a Controller to provide binary debug information to a host.

Sub-event code = 0x57

Sub-event Parameter Size Tujuan
debug_block_byte_offset_start 2 octets Debug block byte offset from the start
last_block 1 octet 0x00: More debug data present
0x01: Last binary block; no more debug data
cur_pay_load_sz 2 octets Binary block size in a current event
Debug_Data Variable Debug data of cur_payload_sz

Bluetooth Quality Report sub-event

This event indicates one of the following: a Bluetooth quality event occurred, the controller uploaded the LMP/LL message trace and Bluetooth Multi-link/Coex scheduling trace, or the controller dumped debug information data.

Sub-event Parameter Size Tujuan
Quality_Report_Id 1 octet 0x01: Quality reporting on the monitoring mode.
0x02: Approaching LSTO.
0x03: A2DP Audio Choppy.
0x04: (e)SCO Voice Choppy.
0x05 ~ 0xFF: Reserved.
Packet_Types 1 octet 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D ~ 0xFF: Reserved.
Connection_Handle 2 octets Connection Handle.
Connection_Role 1 octet Performing Role for the connection.
0x00: Central
0x01: Peripheral
0x02 ~ 0xFF: Reserved.
TX_Power_Level 1 octet Current transmit power level for the specified Connection_Handle.

This value shall be the same as the controller's responding to the HCI_Read_Transmit_Power_Level HCI command.

RSSI 1 octet [in dBm]

Received Signal Strength Indication (RSSI) value for the specified Connection_Handle.
This value shall be an absolute receiver signal strength value.
Range: -127 to +20

SNR 1 octet [in dB]

Signal-to-Noise Ratio (SNR) value for the specified Connection_Handle.
The controller shall provide the average SNR of all the channels used by the link.

Unused_AFH_Channel_Count 1 octet Indicates the number of unused channels in AFH_channel_map.
0x4F ~ 0xFF: Reserved.
AFH_Select_Unideal_Channel_Count 1 octet Indicates the number of the channels which are interfered and have bad quality, but they are still selected for AFH.
The minimum number of channels allowed by the Bluetooth specification is 20, so even if all 79 channels are interfered and have bad quality, the controller still needs to choose at least 20 channels for AFH.
LSTO 2 octets Current Link Supervision Timeout Setting.
Time = N * 0.625 ms
Time Range: 0.625 ms to 40.9 s
Connection_Piconet_Clock 4 octets Piconet Clock for the specified Connection_Handle.
This value shall be the same as the controller's responding to HCI_Read_Clock HCI command with parameter "Which_Clock" of 0x01 (Piconet Clock).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Retransmission_Count 4 octets The number of retransmissions since the last event.
This count shall be reset after reporting to the host.
No_RX_Count 4 octets No RX count since the last event.
The count increases when no packet is received at the scheduled time slot or the received packet is corrupted.
This count shall be reset after reporting to the host.
NAK_Count 4 octets NAK (Negative Acknowledge) count since the last event.
This count shall be reset after reporting to the host.
Last_TX_ACK_Timestamp 4 octets Timestamp of last TX ACK. It is based on the Bluetooth Clock of the piconet central (CLK).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Flow_Off_Count 4 octets The number of times the controller receives Flow-off (STOP) since the last event.
This count shall be reset after reporting to the host.
Last_Flow_On_Timestamp 4 octets Timestamp of last Flow-on (GO). It is based on the Bluetooth Clock of the piconet central (CLK).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Buffer_Overflow_Bytes 4 octets [in Byte]

Buffer overflow count since the last event.
The controller counts how many bytes of data are dropped.
This count shall be reset after reporting to host.

Buffer_Underflow_Bytes 4 octets [in Byte]

Buffer underflow count since the last event.
This count shall be reset after reporting to host.

Vendor Specific Parameter (Parameter Total Length - 49) * octets For the controller vendor to obtain more vendor specific parameters.

Sub-event code = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

This event indicates that Bluetooth HAL or the controller encountered a fatal error and needs Bluetooth stack to record this situation and restart. The controller must send a Root_Inflammation_Event to Bluetooth stack before sending the first fragment of the debug info events in any case.

The Error_Code parameter contains an error code reported from HAL/Controller, 0 if it is a chipset vendor specific error. The Vendor_Specific_Error_Code contains a chipset vendor specific error code from HAL/Controller. It should set as 0 if the parameter Error_Code is not 0. The parameters Error_Code and Vendor_Specific_Error_Code should not both be 0.

Sub-event Parameter Size Tujuan
Quality_Report_Id 1 octet 0x00 ~ 0x04: Reserved.
0x05: Root inflammation.
0x06 ~ 0xFF: Reserved.
Error_Code 1 octet 0x00: Chipset vendor specific error code is included.
0x01 ~ 0xFF: Controller failure occurred. See Bluetooth Spec [Vol 2] Part D, Error Codes for a list of error codes and descriptions.
Vendor_Specific_Error_Code 1 octet 0x00: No chipset vendor specific error code is included.
0x01 ~ 0xFF: Chipset vendor specific error code.
Vendor Specific Parameter (Parameter Total Length - 4) * octets For the controller vendor to obtain more vendor specific parameters.
Sub-event Parameter Size Tujuan
Quality_Report_Id 1 octet 0x00 ~ 0x10: Reserved.
0x11: LMP/LL message trace.
0x12: Bluetooth Multi-link/Coex scheduling trace.
0x13: Controller Debug Information data dump.
0x14 ~ 0xFF: Reserved.
Connection_Handle 2 octets Connection Handle.
Vendor Specific Parameter (Parameter Total Length - 4) * octets Vendor Specific format of LMP message trace, Bluetooth Multi-link/Coex scheduling trace and Controller Debug Information data dump.

Multi-advertiser support

The objectives of multi-advertiser support are the following:

  • Ability to support multiple advertisements ( max_advt_instances )
  • Different transmit powers to allow for a varying range
  • Different advertising content
  • An individualized response for each advertiser
  • Privacy (non-trackable) for each advertiser
  • Connectable

To keep this specification close to existing standards, the following vendor-specific commands are provided. They are derived from the Bluetooth Core 4.1 Specification.

LE_Multi_Advt_Command

OCF: 0x154

Command parameter Size Tujuan
Multi_advt_opcode 1 octet 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

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 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

Base reference: Bluetooth Core 4.1 Specification, page 964 (LE Set Advertising Parameter Command)

Sub OCF: 0x01

Sub-command parameter Size Tujuan
Advertising_Interval_Min Per spec Per spec
Advertising_Interval_Max Per spec Per spec
Advertising_Type Per spec Per spec
Own_Address_Type Per spec Per spec
Own_Address Per spec Per spec
Direct_Address_Type Per spec Per spec
Direct_Address Per spec Per spec
Advertising_Channel_Map Per spec Per spec
Adverstising_Filter_Policy Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance
Tx_power 1 octet Transmit_Power
Unit - in dBm (signed integer)
Range (-70 to +20)

The Own_Address parameter could be a host-configured address at the time of setting up this multi-advertisement instance. This provides the ability to have a resolvable private address at the time of the transmit of the first beacon. Advertisement on an instance will continue irrespective of the connection. The host BT stack could issue a command to start advertisement on an instance, post connection.

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success (invalid parameter) code if the advertising instance or Tx_Power parameters are invalid.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x01 [ Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 969 (LE Set Advertising Data Command)

Sub OCF: 0x02

Sub-command parameter Size Tujuan
Advertising_Data_Length Per spec Per spec
Advertising_Data Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code if the advertising instance or Tx_Power parameters are invalid.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x02 [ Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 970 (LE Set Scan Response Data Command)

Sub OCF: 0x03

Sub-command parameter Size Tujuan
Scan_Response_Data_Length Per spec Per spec
Scan_Response_Data Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code (invalid parameter) if the advertising instance or Tx_Power parameters are invalid.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x03 [ Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 963 (LE Set Random Address Command)

Sub OCF: 0x04

Sub-command parameter Size Tujuan
Random Address Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x04 [ Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 971 (LE Set Advertise Enable Command in that core specification)

OCF: 0x05

Sub-command parameter Size Tujuan
Advertising_Enable 1 octet A value of 1 means enable. Any other value means disable.
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance. Instance 0 means a standard HCI instance.

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd]

Offloaded resolution of private address

This feature resolves a private address in the controller firmware or hardware, which provides the following benefits:

  • Latency involved with the host in resolving a private address
  • Saving power by refraining from waking up the host

LE_Set_RPA_Timeout

OCF: 0x15C

Command parameter Size Tujuan
LE_local_IRK 16 octet The local device IRK used to generate the random resolvable address(es).
tRPA_min 2 octets The minimum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or after this timeout.
Valid range: 300-1800
tRPA_max 2 octets The maximum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or before this timeout.
Valid range: tRPA_min -1800
Return parameter Size Tujuan
Status 1 octet The status of the command.

Suggested HCI status values:
0x00 Success
0x01 Unknown command (if not supported)
0x12 Invalid command parameters (if any parameters are outside the given range)

LE_RPA_offload_Command

OCF: 0x155

Command parameter Size Tujuan
RPA_offload_opcode 1 octet 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Event_RPA_offload_opcode 1 octet 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Sub-command parameter Size Tujuan
enable_customer_specific_feature_set 1 octet 0x01 - Enable offloaded RPA feature
0x00 - Disable offloaded RPA feature

RPA offload is required to be enabled by the host, based on the chip capability. Refer to the LE_Get_Vendor_Capabilities_Command . Each chip can have a varying max_irk_list_sz in the firmware.

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x01 [Enable customer-specific feature]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Sub-command parameter Size Tujuan
LE_IRK 16 octets LE IRK (1st byte LSB)
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address associated to the IRK (1st byte LSB)

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Sub-command parameter Size Tujuan
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address that associates to the IRK

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x03 [Remove IRK from the list]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Sub-command parameter Size Tujuan
Tidak ada

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x04 [Clear IRK List]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation [ max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Sub-command parameter Size Tujuan
LE_read_IRK_list_entry-index 1 octet Index of the IRK list [0, max_irk_list_sz-1]

A Command Complete event will be generated for this command.

Return parameter Size Tujuan
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x05 [Read IRK List Entry]
LE_Read_IRK_List_entry 1 octet Index of the IRK that the host wants to read back (maximum IRK list size is 32)
LE_IRK 16 octets IRK value
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address associated to the IRK
LE_Resolved_Private_Address 6 octets Current resolved resolvable private address of this IRK