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 kumpulan fitur yang dijelaskan di bawah.

Dokumen ini merujuk pada Spesifikasi Bluetooth Core 5.2 sebagai "spesifikasi". 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 lanskap yang bervariasi dan mengelola migrasi, filosofi desain yang memungkinkan pengontrol BT mengekspos kemampuannya (di luar Spesifikasi Bluetooth Core 5.2 standar) dijelaskan dalam dokumen ini. Stack BT host kemudian dapat menggunakan kemampuan ini untuk menentukan fitur yang akan diaktifkan.

Mendukung standar terbuka

Salah satu sasaran Android adalah mendukung standar terbuka setelah diratifikasi 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 Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
max_advt_instances
(Tidak digunakan lagi)
1 octet Jumlah instance iklan yang didukung.

Disediakan setelah v0.98.
Parameter ini tidak digunakan lagi dalam spesifikasi fitur Google v0.98 dan yang lebih tinggi, dan diganti dengan Iklan yang Diperluas LE yang tersedia di spesifikasi BT versi 5.0 dan yang lebih tinggi.
offloaded_resolution_of_private-address
(Tidak digunakan lagi)
1 octet Kemampuan chip BT RPA.
Jika didukung oleh chip, chip tersebut perlu diaktifkan oleh host.
0 = Tidak mampu
1 = Mampu

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

v1.04
byte[0] = 0x01
byte[1] = 0x04
total_num_of_advt_tracked 2 octet Total jumlah pengiklan yang dilacak untuk tujuan OnLost/OnFound
extended_scan_support 1 octet Mendukung interval dan periode pemindaian yang diperpanjang
debug_logging_supported 1 octet Mendukung logging informasi debug biner dari pengontrol
LE_address_generation_offloading_support
(Tidak digunakan lagi)
1 octet 0 = Tidak didukung
1 = Didukung

Dicadangkan setelah v0.98.
Parameter ini tidak digunakan lagi dalam spesifikasi fitur Google v0.98 dan yang lebih tinggi untuk mendukung fitur Privasi yang tersedia dalam spesifikasi BT versi 4.2 dan yang lebih tinggi.
A2DP_source_offload_capability_mask 4 Oktet Mask 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 octet Mendukung pelaporan peristiwa Kualitas Bluetooth
0 = Tidak mampu
1 = Mampu
dynamic_audio_buffer_support 4 octet Mendukung buffering audio dinamis di pengontrol Bluetooth
Mask 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 octet Mendukung perintah offload A2DP v2 di pengontrol Bluetooth (lihat Memulai offload A2DP, Menghentikan offload A2DP)
0 = Tidak didukung
1 = Didukung

Hasil pemindaian batch

Sasaran desainnya adalah meningkatkan cara notifikasi peristiwa Respon Pemindaian LE Bluetooth dikirim ke host, untuk menghemat daya di host.

Dengan mengurangi frekuensi pengontrol memberi tahu prosesor aplikasi host untuk memindai hasil, prosesor aplikasi host dapat tetap dalam mode tidak ada aktivitas/tidur lebih lama. Hal ini akan 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 memindai data serta metadata yang diterima oleh pengontrol untuk dikirimkan nanti ke host.

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

  • Terpotong. Berisi elemen informasi berikut: {MAC, TX Power, RSSI, Stempel Waktu}
  • 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 octet 0x1 - Mengaktifkan fitur khusus pelanggan
0x2 - Menetapkan parameter Penyimpanan Pemindaian Batch
0x3 - Menetapkan parameter Pemindaian Batch
0x4 - Membaca parameter Hasil Pemindaian Batch

Peristiwa Perintah Selesai akan dibuat untuk perintah ini. Mengaktifkan fitur khusus pelanggan tidak akan memulai pemindaian.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Batch_Scan_opcode 1 octet 0x1 - Mengaktifkan fitur khusus pelanggan
0x2 - Menetapkan parameter Penyimpanan Pemindaian Batch
0x3 - Menetapkan parameter Pemindaian Batch
0x4 - Membaca parameter Hasil Pemindaian Batch

LE_Batch_Scan_Command: Mengaktifkan fitur khusus pelanggan

Sub OCF: 0x01

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Batch_Scan_opcode 1 octet 0x1 - Mengaktifkan fitur khusus pelanggan
0x2 - Menetapkan parameter Penyimpanan Pemindaian Batch
0x3 - Menetapkan parameter Pemindaian Batch
0x4 - Membaca parameter Hasil Pemindaian Batch

LE_Batch_Scan_Command: Menetapkan subperintah parameter penyimpanan pemindaian batch

Sub OCF: 0x02

Parameter subperintah Ukuran Tujuan
Batch_Scan_Full_Max 1 octet Ruang penyimpanan maksimum (dalam %) yang dialokasikan untuk gaya penuh
[Rentang: 0-100]
Batch_Scan_Truncated_Max 1 octet Ruang penyimpanan maksimum (dalam %) yang dialokasikan untuk gaya terpotong
[Rentang: 0-100]
Batch_Scan_Notify_Threshold 1 octet Tingkat notifikasi penyiapan (dalam %) untuk setiap kumpulan penyimpanan
[Rentang: 0-100]
Menetapkan ke 0 akan menonaktifkan notifikasi. Peristiwa HCI khusus vendor dibuat (Subperistiwa pelanggaran nilai minimum penyimpanan)

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Batch_scan_opcode 1 octet 0x02 [Menetapkan parameter Pemindaian Batch]

LE_Batch_Scan_Command: Menetapkan subperintah parameter pemindaian batch

Sub OCF: 0x03

Parameter subperintah Ukuran Tujuan
Batch_Scan_Mode 1 octet 0x00 – Pemindaian batch dinonaktifkan
0x01 – Mode terpotong diaktifkan
0x02 – Mode lengkap diaktifkan
0x03 – Mode Terpotong dan Lengkap diaktifkan
Duty_cycle_scan_window 4 octet Waktu pemindaian Pemindaian Batch (# slot)
Duty_cyle_scan_interval 4 octet Periode interval Pemindaian Batch (# slot)
own_address_type 1 octet 0x00 - Alamat perangkat publik
0x01 - Alamat perangkat acak
Batch_scan_Discard_Rule 1 octet 0 - Hapus iklan terlama
1 - Hapus iklan dengan RSSI terlemah

Subperintah 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}. Artinya, hanya satu BD_ADDR will yang dicatat untuk setiap interval pemindaian. Data yang akan 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 Lengkap = {MAC, Paket iklan}, terlepas dari interval pemindaian. Data yang akan disimpan untuk mode Penuh adalah {BD_ADDR, Tx Power, RSSI, Stempel Waktu, Paket iklan, Respon Pemindaian}. Dalam gaya Lengkap, paket AD yang sama, jika terlihat beberapa kali di berbagai interval pemindaian, hanya dicatat satu kali. Namun, dalam mode Terpotong, visibilitas BA_ADDR di berbagai interval pemindaian yang menarik (sekali per interval pemindaian). RSSI adalah nilai rata-rata dari semua duplikat iklan unik dalam interval pemindaian.

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Batch_scan_opcode 1 octet 0x03 [Menetapkan Parameter Pemindaian Batch]

LE_Batch_Scan_Command: Subperintah baca hasil pemindaian batch

Sub OCF: 0x04

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini. Saat host mengeluarkan perintah ini, semua hasil di pengontrol mungkin tidak muat dalam satu peristiwa Command Complete. Host akan melakukan iterasi dengan mengeluarkan perintah ini hingga hasil yang sesuai dalam peristiwa Command Complete menunjukkan 0 dalam jumlah data, yang menunjukkan bahwa pengontrol tidak memiliki data lagi untuk berkomunikasi dengan host. Setiap peristiwa Command Complete dapat berisi beberapa kumpulan data dari satu jenis data saja (Lengkap 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 dalam firmware, waktu sebenarnya stempel waktu diambil dalam firmware adalah T_fw. Waktu pelaporan akan menjadi: (T_c - T_fw). T_c dan T_fw berada dalam domain waktu firmware. Hal ini memungkinkan host menghitung berapa lama peristiwa terjadi.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Batch_scan_opcode 1 octet 0x03 [Menetapkan parameter Pemindaian Batch]
Batch_Scan_data_read 1 octet Mengidentifikasi format (Terpotong atau Lengkap)
num_of_records 1 octet Jumlah data Batch_Scan_data_read
format_of_data Variabel Mode Terpotong:
Address[0]: 6 octet
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0] : 1 octet
Timestamp[0]: 2 octet
[beberapa data (num_of_records) dengan format di atas]

Mode Lengkap:
Address[0]: 6 octet
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0]: 1 octet
Timestamp[0]: 2 octet
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
[beberapa data dengan format di atas (num_of_records)]

Filter Konten Paket Iklan

Gunakan ini untuk mengaktifkan/menonaktifkan/menyiapkan Advertising Packet Content Filter (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 octet 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 - Reserved for future use
0xB0 ~ 0xDF - Reserved for vendor
0xE0 ~ 0xFE - Reserved for future use
0xFF - APCF Read extended Features

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status pengembalian
APCF_opcode 1 octet 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 - Reserved for future use
0xB0 ~ 0xDF - Reserved for vendor
0xE0 ~ 0xFE - Reserved for future use
0xFF - APCF Read extended Features

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0x0 - APCF Aktif
APCF_Enable 1 octet Aktifkan/nonaktifkan 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 octet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Menghapus akan menghapus filter tertentu beserta entri fitur terkait di tabel lain.
Hapus akan menghapus semua filter dan entri terkait di tabel lain.
APCF_Filter_Index 1 octet Indeks filter (0, max_filter-1)
APCF_Feature_Selection 2 octet Mask bit untuk fitur yang dipilih:
Bit 0: Tetapkan untuk mengaktifkan filter Alamat Siaran
Bit 1: Tetapkan untuk mengaktifkan filter Perubahan Data Layanan
Bit 2: Tetapkan untuk mengaktifkan pemeriksaan UUID Layanan
Bit 3: Tetapkan untuk mengaktifkan pemeriksaan UUID Permintaan Layanan
Bit 4: Tetapkan untuk mengaktifkan pemeriksaan Nama Lokal
Bit 5: Tetapkan untuk mengaktifkan Pemeriksaan Data Produsen
Bit 6: Tetapkan untuk mengaktifkan Pemeriksaan Data Layanan
Bit 7: Tetapkan untuk mengaktifkan Pemeriksaan Layanan Penemuan Transpor
Bit 8: Tetapkan untuk mengaktifkan Pemeriksaan Jenis AD
APCF_List_Logic_Type 2 octet Operasi logika untuk setiap pemilihan fitur (posisi per bit) yang ditentukan dalam APCF_Feature_Selection.
Hanya berlaku jika fitur diaktifkan.
Nilai posisi bit:
0: ATAU
1: DAN
Jika logika "DAN" dipilih, paket ADV hanya akan lulus filter 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 octet 0x00: ATAU
0x01: DAN
Catatan: Jenis logika adalah T/A untuk tiga kolom pertama APCF_Feature_Selection, yang selalu merupakan logika "DAN". Nilai ini hanya berlaku untuk empat kolom (Bit 3 - ­Bit 6) APCF_Feature_Selection.
rssi_high_thresh 1 octet [dalam dBm]
Pengiklan dianggap terlihat hanya jika sinyal lebih tinggi dari nilai minimum RSSI tinggi. Jika tidak, firmware harus berperilaku seolah-olah tidak pernah melihatnya.
delivery_mode 1 octet 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 octet Hanya valid jika delivery_mode adalah on_found.
[dalam milidetik]
Waktu yang diperlukan firmware untuk tetap aktif dan mengumpulkan iklan tambahan sebelum melaporkan.
onfound_timeout_cnt 1 octet 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 akan diperiksa. Jika jumlahnya melebihi onfound_timeout_cnt, jumlah tersebut akan segera dilaporkan OnFound setelahnya.
rssi_low_thresh 1 octet Hanya valid jika delivery_mode adalah on_found.
[dalam dBm]
Paket pengiklan dianggap tidak terlihat jika RSSI paket yang diterima tidak melebihi nilai minimum RSSI.
onlost_timeout 2 octet 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 segera dilaporkan hilang.
num_of_tracking_entries 2 octet Hanya valid jika delivery_mode adalah on_found.
[count]
Jumlah total pengiklan yang akan dilacak per filter.

Nilai RSSI harus menggunakan komplemen 2 untuk mewakili nilai negatif.

Host harus dapat mengonfigurasi beberapa filter dengan APCF_Application_Address_type ditetapkan 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 pengirimannya adalah sebagai berikut: report_immediately, batch, dan onFound. Nilai OnLost terkait dengan OnFound dalam arti bahwa nilai tersebut akan muncul setelah OnFound jika hilang.

Alur pemrosesan ini menggambarkan model konseptual:

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

Nilai minimum level RSSI (tinggi dan rendah) memberikan kemampuan untuk mengontrol kapan frame terlihat untuk pemrosesan filter, meskipun saat paket yang valid diterima oleh pengontrol. Jika mode pengiriman disetel ke langsung atau dalam batch, RSSI frame akan dipertimbangkan untuk pemrosesan pengontrol lebih lanjut. Aplikasi yang berbeda memerlukan perilaku pelaporan dan pengelompokan yang berbeda. Hal ini memungkinkan beberapa aplikasi memiliki pelaporan langsung dan/atau pengelompokan hasil dalam firmware secara serentak. Contohnya adalah kasus saat pemindaian batch aktif dari satu aplikasi, lalu pemindaian LE reguler dikeluarkan oleh aplikasi lain. Sebelum pemindaian batch dikeluarkan, framework/aplikasi akan 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 (beserta 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 tindakan filter agar berhasil dianggap sebagai entity yang akan dilacak untuk onLost. Peristiwa yang sesuai adalah subperistiwa pelacakan Advt LE.

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0x01 - APCF Menetapkan Parameter Pemfilteran
APCF_Action 1 octet APCF_Action perintah echo back
APCF_AvailableSpaces 1 octet Jumlah entri yang tersedia di tabel filter

LE_APCF_Command: broadcast_address_sub_cmd

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

Sub OCF: 0x02

Parameter subperintah Ukuran Tujuan
APCF_Action 1 octet 0x00 - Tambahkan
0x01 - Hapus
0x02 - Hapus
Hapus akan menghapus alamat penyiar yang ditentukan dalam filter yang ditentukan.
Hapus akan menghapus semua alamat penyiar dalam filter yang ditentukan.
APCF_Filter_Index 1 octet Indeks filter (0, max_filter-1)
APCF_Broadcaster_Address 6 octet Alamat perangkat 6 byte yang akan ditambahkan ke atau dihapus dari daftar alamat penyiar
APCF_Application_Address_type 1 octet 0x00: Publik
0x01: Acak
0x02: NA (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 Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0x02 - Alamat Penyiar APCF
APCF_Action 1 octet APCF_Action perintah echo back
APCF_AvailableSpaces 1 octet Jumlah entri kosong 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 octet 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 octet Indeks filter (0, max_filter-1)
APCF_UUID 2,4,16 octet UUID Layanan (16-bit, 32-bit, atau 128-bit) untuk menambahkan ke, atau menghapus dari, daftar.
APCF_UUID_MASK 2,4,16 octet Mask UUID Layanan (16-bit, 32-bit, atau 128-bit) yang akan ditambahkan ke daftar. Panjangnya harus sama dengan APCF_UUID.

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0x03 - UUID Layanan APCF
APCF_Action 1 octet APCF_Action perintah echo back
APCF_AvailableSpaces 1 octet Jumlah entri gratis yang masih tersedia di 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 di chip.

Sub OCF: 0x04

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0x04 - UUID Permintaan APCF
APCF_Action 1 octet APCF_Action perintah echo back
APCF_AvailableSpaces 1 octet Jumlah entri gratis yang masih tersedia di tabel UUID Permintaan

LE_APCF_Command: local_name_sub_cmd

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

Sub OCF: 0x05

Parameter subperintah Ukuran Tujuan
APCF_Action 1 octet 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 dalam filter yang ditentukan.
APCF_Filter_Index 1 octet Indeks filter (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Ukuran variabel String karakter untuk nama lokal.

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0x05 - Nama Lokal APCF
APCF_Action 1 octet APCF_Action perintah echo back
APCF_AvailableSpaces 1 octet 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 di chip.

Sub OCF: 0x06

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

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0x06 - Data Produsen APCF
APCF_Action 1 octet APCF_Action perintah echo back
APCF_AvailableSpaces 1 octet 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 menghapus daftar string data layanan untuk pemfilteran di chip.

Sub OCF: 0x07

Parameter subperintah Ukuran Tujuan
APCF_Action 1 octet 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 octet Indeks Filter (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Ukuran variabel String karakter untuk data layanan.

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0x07 - Data Layanan APCF
APCF_Action 1 octet APCF_Action perintah echo back
APCF_AvailableSpaces 1 octet 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 di 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 AD dan abaikan data yang tersisa.

Sub OCF: 0x09

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0x09 - Jenis Iklan APCF
APCF_Action 1 octet APCF_Action perintah echo back
APCF_AvailableSpaces 1 octet 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 Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
APCF_opcode 1 octet 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 octet

Mask bit untuk fitur yang diperluas yang didukung:

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

Nilai bit

  • 0 = Tidak didukung
  • 1 = Didukung

Perintah aktivitas pengontrol dan informasi energi

Tujuan informasi ini adalah untuk fungsi sistem host yang lebih tinggi untuk menganalisis total aktivitas semua komponen, termasuk pengontrol BT dan status makronya, sehubungan 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, seperti yang ditentukan di tingkat pengguna:

  • Tidak ada aktivitas: [pemindaian halaman, iklan LE, pemindaian permintaan, pemindaian LE]
  • Pindai: [paging/inquiry/trying to connect]
  • Aktif: [ACL link on, SCO link ongoing, sniff mode]

Aktivitas yang dilacak pengontrol selama masa pakainya adalah waktu Tx, waktu Rx, waktu tidak ada aktivitas, dan total energi yang dikonsumsi. Nilai ini akan 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 Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
total_tx_time_ms 4 octet Total waktu melakukan Tx
total_rx_time_ms 4 octet Total waktu melakukan Rx
total_idle_time_ms 4 octet Total waktu dalam mode tidak ada aktivitas (status daya rendah non-tidur)
total_energy_used 4 octet Total energi yang digunakan [produk arus (mA), voltase (V), dan waktu (ms)]

Perintah parameter pemindaian set yang diperluas LE

Perintah ini dapat digunakan untuk mengaktifkan interval dan periode pemindaian yang lebih besar di pengontrol. Sesuai dengan Spesifikasi BT Core 5.2, interval dan periode pemindaian memiliki batas 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 Memindai Set LE)

OCF: 0x15A

Parameter Perintah Ukuran Tujuan
LE_Ex_Scan_Type 1 octet 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 octet Didefinisikan sebagai interval waktu sejak Pengontrol memulai pemindaian LE terakhir 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 octet Durasi pemindaian LE. LE_Scan_Window harus kurang dari 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 octet 0x00 - Alamat Perangkat Publik (default)
0x01 - Alamat Perangkat Acak
LE_Ex_Scan_Filter_Policy 0x00 - Menerima semua paket iklan (default). Paket iklan terarah yang tidak ditujukan untuk perangkat ini akan diabaikan.
0x01 - Abaikan paket iklan dari perangkat yang tidak ada dalam daftar Khusus Daftar Putih. Paket iklan terarah yang tidak ditujukan untuk perangkat ini akan diabaikan.

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai

Mendapatkan perintah info debug pengontrol

Tujuan elemen informasi ini adalah untuk mendapatkan informasi debug pengontrol oleh host, dalam bentuk biner, untuk pasca-pemrosesan dan analisis. Hal ini membantu men-debug masalah di lapangan dan memberi engineer toolkit untuk mencatat informasi guna analisis. Pengontrol dapat memberikan informasi saat diminta oleh host melalui peristiwa (subperistiwa Info Debug Pengontrol) atau secara mandiri jika diinginkan oleh pengontrol. Contoh penggunaannya 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 Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai

Dukungan offload hardware A2DP

Fitur offload A2DP mendukung offload proses encoding audio A2DP ke prosesor audio yang terpasang ke Pengontrol BT. Aliran data audio yang dienkode diteruskan langsung dari Prosesor audio ke Pengontrol BT tanpa keterlibatan 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

Memulai offload A2DP (lama)

Sub OCF: 0x01

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

Parameter perintah Ukuran Tujuan
Codec 4 octet Menentukan jenis Codec
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
Max_Latency 2 octet Latensi Maksimal yang Diizinkan (dalam md). Nilai nol akan menonaktifkan flush.
SCMS-T_Enable 2 octet 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 octet 0x01 - 44.100 Hz
0x02 - 48.000 Hz
0x04 - 88.200 Hz
0x08 - 96.000 Hz
Bits_Per_Sample 1 octet 0x01 - 16 bit per sampel
0x02 - 24 bit per sampel
0x04 - 32 bit per sampel
Channel_Mode 1 octet 0x01 - Mono
0x02 - Stereo
Encoded_Audio_Bitrate 4 octet Kecepatan bit audio yang dienkode dalam bit per detik.
0x00000000 - Kecepatan bit audio tidak ditentukan / tidak digunakan.
0x00000001 - 0x00FFFFFF - Kecepatan bit audio yang dienkode dalam bit per detik.
0x01000000 - 0xFFFFFFFF - Direservasi.
Connection_Handle 2 octet ID Koneksi koneksi A2DP sedang dikonfigurasi
L2CAP_Channel_ID 2 octet ID Saluran L2CAP yang akan digunakan untuk koneksi A2DP ini
L2CAP_MTU_Size 2 octet Ukuran maksimum MTU L2CAP yang berisi paket audio yang dienkode
Codec_Information 32 octet Informasi khusus Codec.

Codec SBC:

Lihat elemen informasi khusus SBC Codec di A2DP v1.3.
Oktet 0: Panjang blok | 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 khusus Codec AAC di A2DP v1.3
Oktet 0: Jenis 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 - Sedang
0x02 - Rendah
0x03 - 0x7E - Direservasi
0x7F - ABR (Adaptive Bit Rate)
0x80 - 0xFF - Direservasi

Oktet 7: Mode Saluran LDAC
0x01 - Stereo
0x02 - Ganda
0x04 - Mono
Yang lain dicadangkan

Oktet 8-31: dicadangkan

Semua codec lainnya:

Oktet 0-31: dicadangkan

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Sub_Opcode 1 octet 0x01 - Memulai 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 octet Nama sebutan koneksi HCI yang aktif
L2CAP_Channel_ID 2 octet ID L2CAP Channel yang dibuka untuk streaming A2DP
Data_Path_Direction 1 octet 0x00 - Output (Sumber/Penggabungan AVDTP)
0x01 - Input (Sink/Pembagian AVDTP)
Peer_MTU 2 octet Ukuran maksimum paket L2CAP, yang dinegosiasikan dengan peer.
CP_Enable_SCMS_T 1 octet 0x00 - Menonaktifkan Header Perlindungan Konten SCMS-T
0x01 - Mengaktifkan Header Perlindungan Konten SCMS-T
CP_Header_SCMS_T 1 octet Jika Header Perlindungan Konten SCMS-T diaktifkan (CP_SCMS_T_Enable disetel ke 0x01), menentukan nilai header yang mendahului konten audio (lihat A2DP, bagian 3.2.1-2) seperti yang ditentukan oleh Bluetooth Assigned Numbers, bagian 6.3.2.
Diabaikan jika Perlindungan konten SCMS-T tidak diaktifkan.
Vendor_Specific_Parameters_Length 1 octet Panjang Parameter Khusus Vendor, dalam rentang 0 hingga 128.
Nilai 0 digunakan jika tidak ada parameter tambahan yang diberikan.
Vendor_Specific_Parameters 0-128 octet Parameter Khusus Vendor yang disediakan oleh HAL Audio Bluetooth, CodecParameters.vendorSpecificParameters[].

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Sub_Opcode 1 octet 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 Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Sub_Opcode 1 octet 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 octet Nama sebutan koneksi HCI yang aktif
L2CAP_Channel_ID 2 octet ID L2CAP Channel yang dibuka untuk streaming A2DP
Data_Path_Direction 1 octet 0x00 - Output (Sumber/Penggabungan AVDTP)
0x01 - Input (Sink/Pembagian AVDTP)

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Sub_Opcode 1 octet 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 subperistiwa 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.
  • A2DP Audio Choppy: Saat pengontrol mendeteksi faktor yang menyebabkan audio tidak stabil, pengontrol akan melaporkan peristiwa A2DP Audio Choppy 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.
  • Root Inflammation: Peristiwa ini dikirim oleh pengontrol ke stack saat HAL atau pengontrol mengalami error fatal dan perlu memulai ulang Bluetooth.
  • Pelacakan pesan LMP/LL: Pengontrol mengirim handshake pesan LMP/LL 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 di band 2,4 Ghz ke host.
  • Mekanisme Informasi Debug Pengontrol: Jika diaktifkan, pengontrol dapat melaporkan informasi logging debug secara mandiri melalui subperistiwa info debug Pengontrol ke host.
  • Audio LE Audio Tidak Lancar: Saat pengontrol mendeteksi faktor yang menyebabkan audio tidak lancar, pengontrol akan melaporkan peristiwa Audio LE Audio Tidak Lancar ke host.
  • Mode Statistik RF Lanjutan: Pengontrol melaporkan informasi terkait statistik RF-nya kepada host, yang mendukung dua kasus penggunaan laporan:
    • Laporan berkala
    • Pemicu peristiwa (pemicu peristiwa kualitas link dan mulai/berhenti streaming).
  • BQR_Report_Action dari Perintah Laporan Kualitas Bluetooth: Host dapat menggunakan perintah HCI ini untuk mendapatkan kueri satu kali untuk mode pemantauan kualitas, mode pemantauan energi, atau mode statistik RF lanjutan.

OCF: 0x15E

Parameter perintah Ukuran Tujuan
BQR_Report_Action 1 octet Tindakan untuk menambahkan / menghapus pelaporan peristiwa kualitas yang ditetapkan di parameter BQR_Quality_Event_Mask, atau menghapus semua.

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

Menghapus 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 octet Mask bit untuk pelaporan peristiwa kualitas yang dipilih.

Bit 0: Tetapkan untuk mengaktifkan mode pemantauan kualitas.
Bit 1: Tetapkan untuk mengaktifkan peristiwa Approaching LSTO (untuk ACL/(e)SCO/ISO).
Bit 2: Tetapkan untuk mengaktifkan peristiwa Audio A2DP yang Terputus-putus.
Bit 3: Tetapkan untuk mengaktifkan peristiwa (e)SCO Voice Choppy.
Bit 4: Tetapkan untuk mengaktifkan peristiwa Peradangan akar.
Bit 5: Tetapkan untuk mengaktifkan mode pemantauan energi.
Bit 6: Tetapkan untuk mengaktifkan peristiwa audio LE yang tidak stabil.
Bit 7: Tetapkan untuk mengaktifkan peristiwa kegagalan koneksi.
Bit 8: Tetapkan untuk mengaktifkan pemicu peristiwa mode Advance RF Stats.
Bit 9: Tetapkan untuk mengaktifkan laporan berkala Advance RF Stats.
Bit 10 ~ 14: Dicadangkan.
Bit 15: Tetapkan untuk mengaktifkan peristiwa kualitas khusus vendor.
Bit 16: Tetapkan untuk mengaktifkan pelacakan pesan LMP/LL.
Bit 17: Tetapkan untuk mengaktifkan pelacakan penjadwalan Multi-link/Coex Bluetooth.
Bit 18: Tetapkan untuk mengaktifkan mekanisme Informasi Debug Pengontrol.
Bit 19 ~ 30: Dicadangkan.
Bit 31: Tetapkan untuk mengaktifkan rekaman aktivitas khusus vendor.

BQR_Minimum_Report_Interval 2 octet 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 sesuai dan khusus untuk peristiwa kualitas yang ditambahkan.

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

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

Bit 0 ~ 31: Direservasi.

BQR_Vendor_Specific_Trace_Mask 4 octet Mask bit untuk pelaporan rekaman aktivitas khusus vendor yang dipilih.
Parameter ini hanya valid jika bit 31 dari BQR_Quality_Event_Mask ditetapkan.

Bit 0 ~ 31: Direservasi.

Report_interval_multiple 4 octet Pengganda untuk BQR_Minimum_Report_Interval. Jika nilai ini >= 1, Interval Laporan BQR akan 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: md
Default: 1
Rentang: 0 ~ 4294967295 (0: sama dengan ditetapkan ke 1)

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Current_Quality_Event_Mask 4 octet Menunjukkan setelan bit mask saat ini.
Bit 0: Mode pemantauan kualitas diaktifkan.
Bit 1: Pelaporan peristiwa LSTO yang mendekati diaktifkan.
Bit 2: Pelaporan peristiwa Audio A2DP yang Terputus-putus diaktifkan.
Bit 3: Pelaporan peristiwa Suara (e)SCO yang Terputus-putus diaktifkan.
Bit 4: Pelaporan peristiwa peradangan akar diaktifkan.
Bit 5: Mode pemantauan energi diaktifkan.
Bit 6: Pelaporan peristiwa audio LE yang tidak stabil diaktifkan.
Bit 7: Peristiwa kegagalan koneksi.
Bit 8: Tetapkan untuk mengaktifkan pemicu peristiwa mode Advance RF Stats.
Bit 9: Tetapkan untuk mengaktifkan laporan Statistik RF Lanjutan secara berkala.
Bit 10 ~ 14: Dicadangkan.
Bit 15: Pelaporan peristiwa kualitas khusus vendor diaktifkan.
Bit 16: Pelacakan pesan LMP/LL diaktifkan.
Bit 17: Pelacakan penjadwalan Multi-link/Coex Bluetooth diaktifkan.
Bit 18: Mekanisme Informasi Debug Pengontrol diaktifkan.
Bit 19 ~ 30: Dicadangkan.
Bit 31: Pelacakan khusus vendor diaktifkan.
Current_Vendor_Specific_Quality_Event_Mask 4 octet Menunjukkan setelan bit mask saat ini.
Current_Vendor_Specific_Trace_Mask 4 octet Menunjukkan setelan bit mask saat ini.
BQR_Report_interval 4 octet Menunjukkan setelan bit mask saat ini.
Current_Vendor_Specific_Trace_Mask 4 octet Setelan BQR_Report_interval. Nilai ini harus berupa nilai minimum antara BQR_Minimum_Report_Interval * Report_interval_multiple atau interval dukungan maksimum pengontrol.

Perintah buffering 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 buffering audio dari pengontrol Bluetooth.

Parameter perintah Ukuran Tujuan
T/A Daftar parameter Perintah kosong

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Dynamic_Audio_Buffer_opcode 1 octet 0x01 - Mendapatkan waktu buffering audio
Audio_Codec_Type_Supported 4 octet Mask 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 octet Waktu buffering default dari 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 octet Waktu buffering 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 octet Waktu buffering 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 octet Waktu buffering default dari jenis codec Bit 1 yang ditentukan di 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 octet Waktu buffering 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 octet Waktu buffering 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 octet Waktu buffering default dari jenis codec Bit 31 yang ditentukan di 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 octet Waktu buffering maksimum jenis codec Bit 31 yang ditentukan di 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 octet Waktu buffering 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

Menetapkan waktu buffering audio

Sub OCF: 0x02

Gunakan perintah ini untuk menetapkan waktu buffering audio ke pengontrol Bluetooth.

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Dynamic_Audio_Buffer_opcode 1 octet 0x02 - Menetapkan waktu buffering audio
Audio_Codec_Buffer_Time 2 octet Waktu buffering 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 Spesifikasi BT Core 5.2. Parameter peristiwa 0 akan selalu berisi kode subperistiwa pertama, yang menjadi dasar untuk mendekode peristiwa HCI lainnya.

Parameter Peristiwa Ukuran Tujuan
HCI_vendor_specific_event_code 1 octet 0xFF
sub_event_code 1 octet Kode subperistiwa akan berukuran 1 octet, byte yang langsung mengikuti Panjang Parameter dalam paket peristiwa HCI.

Subperistiwa pelanggaran nilai minimum penyimpanan

Peristiwa ini menunjukkan bahwa batas penyimpanan telah dilanggar.

Kode subperistiwa = 0x54

Parameter Subperistiwa Ukuran Tujuan
Tidak ada

Subperistiwa perubahan status multi-iklan LE

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

Kode subperistiwa = 0x55

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

Subperistiwa pelacakan iklan LE

Peristiwa ini menunjukkan kapan pengiklan ditemukan atau hilang.

Kode subperistiwa = 0x56

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

Subperistiwa info debug pengontrol

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

Kode subperistiwa = 0x57

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

Subperistiwa Laporan Kualitas Bluetooth

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

Parameter Subperistiwa Ukuran Tujuan
Quality_Report_Id 1 octet 0x01: Pelaporan kualitas pada mode pemantauan.
0x02: Mendekati LSTO.
0x03: Audio A2DP Putus-Putus.
0x04: (e)SCO Voice Choppy.
0x05 ~ 0x06: Dicadangkan.
0x07: Audio LE terputus-putus.
0x08: Koneksi gagal.
0x09 ~ 0xFF: Dicadangkan.
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 ~ 0x50: Reserved
0x51: ISO packet
0x52 ~ 0xFF: Reserved
Connection_Handle 2 octet Handle koneksi ACL/(e)SCO/ISO.
Connection_Role 1 octet Peran yang Dilakukan untuk koneksi.
0x00: Pusat
0x01: Periferal
0x02 ~ 0xFF: Direservasi.
TX_Power_Level 1 octet Tingkat daya transmisi saat ini untuk Connection_Handle yang ditentukan.

Nilai ini harus sama dengan respons pengontrol terhadap perintah HCI HCI_Read_Transmit_Power_Level.

RSSI 1 octet [dalam dBm]

Nilai Received Signal Strength Indication (RSSI) untuk Connection_Handle yang ditentukan.
Nilai ini harus berupa nilai kekuatan sinyal penerima absolut.
Rentang: -127 hingga +20

SNR 1 octet [dalam dB]

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

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

Jumlah overflow buffering sejak peristiwa terakhir.
Pengontrol menghitung jumlah byte data yang dihapus.
Jumlah ini akan direset setelah melaporkan ke host.

Buffer_Underflow_Bytes 4 octet [dalam Byte]

Jumlah underflow buffering sejak peristiwa terakhir.
Jumlah ini akan direset setelah melaporkan ke host.

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

Kode subperistiwa = 0x58 [Quality_Report_Id = 0x05, peristiwa Root Inflammation]

Peristiwa ini menunjukkan bahwa HAL Bluetooth atau pengontrol mengalami error fatal dan memerlukan stack Bluetooth untuk mencatat 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/Pengontrol, 0 jika merupakan error khusus vendor chipset. Vendor_Specific_Error_Code berisi kode error khusus vendor chipset dari HAL/Pengontrol. Nilai ini harus ditetapkan sebagai 0 jika parameter Error_Code bukan 0. Parameter Error_Code dan Vendor_Specific_Error_Code tidak boleh sama-sama 0.

Parameter Subperistiwa Ukuran Tujuan
Quality_Report_Id 1 octet 0x00 ~ 0x04: Direservasi.
0x05: Peradangan akar.
0x06 ~ 0xFF: Dicadangkan.
Error_Code 1 octet 0x00: Kode error khusus vendor chipset disertakan.
0x01 ~ 0xFF: Terjadi kegagalan pengontrol. Lihat Spesifikasi Bluetooth [Vol 2] Bagian D, Kode Error untuk mengetahui daftar kode error dan deskripsinya.
Vendor_Specific_Error_Code 1 octet 0x00: Tidak ada kode error khusus vendor chipset yang disertakan.
0x01 ~ 0xFF: Kode error khusus vendor chipset.
Parameter Khusus Vendor (Parameter Total Length - 4) * octet Agar vendor pengontrol mendapatkan lebih banyak parameter khusus vendor.
Parameter Subperistiwa Ukuran Tujuan
Quality_Report_Id 1 octet 0x00 ~ 0x10: Direservasi.
0x11: Pelacakan pesan LMP/LL.
0x12: Pelacakan penjadwalan Multi-link/Coex Bluetooth.
0x13: Dump data Informasi Debug Pengontrol.
0x14 ~ 0xFF: Dicadangkan.
Connection_Handle 2 octet Nama Sebutan Koneksi.
Parameter Khusus Vendor (Parameter Total Length - 4) * octet Format Khusus Vendor dari pelacakan pesan LMP, pelacakan penjadwalan Multi-link/Coex Bluetooth, dan dump data Informasi Debug Pengontrol.

Dukungan multi-pengiklan

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 dihubungkan

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

LE_Multi_Advt_Command

OCF: 0x154

Parameter perintah Ukuran 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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
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

Referensi dasar: Spesifikasi Bluetooth Core 4.1, halaman 964 (Perintah Parameter Iklan Set LE)

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 octet Menentukan penerapan parameter di atas ke instance
Tx_power 1 octet 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 di-resolve pada saat transmisi beacon pertama. Iklan di instance akan terus berjalan, terlepas dari koneksi. Stack BT host dapat mengeluarkan perintah untuk memulai iklan pada instance, setelah koneksi.

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

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Multi_advt_opcode 1 octet 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 octet Menentukan penerapan parameter di atas ke instance

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

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Multi_advt_opcode 1 octet 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 Respon 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 octet Menentukan penerapan parameter di atas ke instance

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

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Multi_advt_opcode 1 octet 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 (Perintah Alamat Acak Set LE)

Sub OCF: 0x04

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Multi_advt_opcode 1 octet 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 octet Nilai 1 berarti mengaktifkan. Nilai lainnya berarti nonaktifkan.
Advertising_Instance 1 octet Menentukan penerapan parameter di atas ke instance. Instance 0 berarti instance HCI standar.

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Multi_advt_opcode 1 octet 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Resolusi alamat pribadi yang di-offload

Fitur ini me-resolve alamat pribadi di firmware atau hardware pengontrol, yang memberikan manfaat berikut:

  • Latensi yang terkait dengan host dalam me-resolve alamat pribadi
  • Menghemat daya dengan tidak mengaktifkan host

LE_Set_RPA_Timeout

OCF: 0x15C

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

Nilai status HCI yang disarankan:
0x00 Berhasil
0x01 Perintah tidak dikenal (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 octet 0x1 - Mengaktifkan fitur khusus pelanggan
0x2 - Menambahkan IRK ke daftar
0x3 - Menghapus IRK dari daftar
0x4 - Menghapus daftar IRK
0x5 - Membaca entri daftar IRK

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Event_RPA_offload_opcode 1 octet 0x1 - Mengaktifkan fitur khusus pelanggan
0x2 - Menambahkan IRK ke daftar
0x3 - Menghapus IRK dari daftar
0x4 - Menghapus daftar IRK
0x5 - Membaca entri daftar IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Parameter subperintah Ukuran Tujuan
enable_customer_specific_feature_set 1 octet 0x01 - Mengaktifkan fitur RPA yang di-offload
0x00 - Menonaktifkan fitur RPA yang di-offload

Pengurangan beban RPA harus diaktifkan oleh host, berdasarkan kemampuan chip. Lihat LE_Get_Vendor_Capabilities_Command. Setiap chip dapat memiliki max_irk_list_sz yang bervariasi dalam firmware.

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Event_cust_specific_feature_opcode 1 octet 0x01 [Aktifkan fitur khusus pelanggan]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

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

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Event_cust_specific_feature_opcode 1 octet 0x02 [Menambahkan IRK ke daftar]
LE_IrkList_AvailableSpaces 1 octet 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 octet 0: Alamat publik
1: Alamat acak
LE_Device_Address 6 octet Alamat publik atau acak yang dikaitkan dengan IRK

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Event_cust_specific_feature_opcode 1 octet 0x03 [Menghapus IRK dari daftar]
LE_IrkList_AvailableSpaces 1 octet 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 Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Event_cust_specific_feature_opcode 1 octet 0x04 [Hapus Daftar IRK]
LE_IrkList_AvailableSpaces 1 octet 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 octet Indeks daftar IRK [0, max_irk_list_sz-1]

Peristiwa Perintah Selesai akan dibuat untuk perintah ini.

Parameter return Ukuran Tujuan
Status 1 octet Status Perintah Selesai
Event_cust_specific_feature_opcode 1 octet 0x05 [Baca Entri Daftar IRK]
LE_Read_IRK_List_entry 1 octet Indeks IRK yang ingin dibaca kembali oleh host (ukuran daftar IRK maksimum adalah 32)
LE_IRK 16 octet Nilai IRK
Address_Type 1 octet 0: Alamat publik
1: Alamat acak
LE_Device_Address 6 octet Alamat publik atau acak yang terkait dengan IRK
LE_Resolved_Private_Address 6 octet Alamat pribadi yang dapat di-resolve dan di-resolve saat ini dari IRK ini