Yêu cầu về HCI

Giao diện trình kiểm soát máy chủ (HCI) được dùng để tương tác với một bộ điều khiển Bluetooth.

Tài liệu này cung cấp danh sách các yêu cầu về HCI Bluetooth (BT) và Bluetooth năng lượng thấp (BLE). Mục tiêu là để các nhà cung cấp ngăn xếp BT của Máy chủ lưu trữ và nhà cung cấp bộ điều khiển BT tuân thủ các yêu cầu này của nền tảng để sử dụng bộ tính năng được mô tả bên dưới.

Tài liệu này đề cập đến Quy cách Bluetooth Core 5.2 dưới dạng "quy cách". Bạn có thể xem Thông số kỹ thuật Bluetooth Core 5.2 trên trang web của Bluetooth SIG cùng với các tài liệu khác được áp dụng.

Tổng quan chung về thiết kế

Cấu hình và các chức năng của chip

Là một nền tảng mở, Android có một ma trận các bản phát hành phần mềm, OEM, nhà cung cấp, cũng như các chức năng của nền tảng và chip.

Để quản lý nhiều loại thiết bị và quản lý quá trình di chuyển, một triết lý thiết kế cho phép bộ điều khiển BT thể hiện các chức năng của mình (ngoài Quy cách Bluetooth Core 5.2 tiêu chuẩn) được mô tả trong tài liệu này. Sau đó, ngăn xếp BT của máy chủ lưu trữ có thể sử dụng các chức năng này để xác định những tính năng cần bật.

Hỗ trợ các tiêu chuẩn mở

Một mục tiêu của Android là hỗ trợ các tiêu chuẩn mở sau khi được phê chuẩn trong một quy cách Bluetooth. Nếu một tính năng được mô tả bên dưới có trong các phương thức HCI tiêu chuẩn trong một thông số kỹ thuật Bluetooth trong tương lai, thì chúng tôi sẽ hướng đến việc biến phương pháp đó thành phương pháp mặc định.

Các chức năng dành riêng cho nhà cung cấp

Lệnh dành riêng cho nhà cung cấp: LE_Get_Vendor_Capabilities_Command

Trường lệnh OpCode (OCF): 0x153

Tham số lệnh Kích thước Mục đích
NA Danh sách tham số Lệnh trống

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
max_advt_instances
(Không dùng nữa)
1 octet Số lượng phiên bản quảng cáo được hỗ trợ.

Dành riêng sau phiên bản 0.98.
Tham số này không còn được dùng trong thông số kỹ thuật về tính năng của Google phiên bản 0.98 trở lên để hỗ trợ Quảng cáo mở rộng LE có trong thông số kỹ thuật về BT phiên bản 5.0 trở lên.
offloaded_resolution_of_private-address
(Không dùng nữa)
1 octet Khả năng của chip BT trong RPA.
Nếu được một chip hỗ trợ, thì máy chủ lưu trữ cần bật tính năng này.
0 = Không có khả năng
1 = Có khả năng

Dành riêng sau phiên bản 0.98.
Tham số này không được dùng trong thông số kỹ thuật về tính năng của Google phiên bản 0.98 trở lên để hỗ trợ Tính năng về quyền riêng tư có trong thông số kỹ thuật về BT phiên bản 4.2 trở lên.
total_scan_results_storage 2 octet Bộ nhớ cho kết quả quét (tính bằng byte)
max_irk_list_sz 1 octet Số lượng mục nhập IRK được hỗ trợ trong chương trình cơ sở
filtering_support 1 octet Hỗ trợ lọc trong bộ điều khiển
0 = Không được hỗ trợ
1 = Được hỗ trợ
max_filter 1 octet Số lượng bộ lọc được hỗ trợ
activity_energy_info_support 1 octet Hỗ trợ báo cáo thông tin về hoạt động và năng lượng
0 = Không có khả năng
1 = Có khả năng
version_supported 2 octet Chỉ định phiên bản của thông số kỹ thuật về tính năng của Google được hỗ trợ
byte[0] = Số chính
byte[1] = Số phụ

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

Các tính năng được bổ sung trong các phiên bản sau:
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
Phiên bản 1.04:
  • BQRv6
total_num_of_advt_tracked 2 octet Tổng số nhà quảng cáo được theo dõi cho mục đích OnLost/OnFound
extended_scan_support 1 octet Hỗ trợ khoảng thời gian và cửa sổ quét mở rộng
debug_logging_supported 1 octet Hỗ trợ ghi nhật ký thông tin gỡ lỗi nhị phân từ bộ điều khiển
LE_address_generation_offloading_support
(Không dùng nữa)
1 octet 0 = Không được hỗ trợ
1 = Được hỗ trợ

Được đặt trước sau phiên bản 0.98.
Tham số này không được dùng trong thông số kỹ thuật về tính năng của Google phiên bản 0.98 trở lên để hỗ trợ Tính năng về quyền riêng tư có trong thông số kỹ thuật về BT phiên bản 4.2 trở lên.
A2DP_source_offload_capability_mask 4 Octet Mặt nạ bit cho các loại bộ mã hoá và giải mã được hỗ trợ
Bit 0 – SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bit 5-31 được dành riêng
bluetooth_quality_report_support 1 octet Hỗ trợ báo cáo các sự kiện về Chất lượng Bluetooth
0 = Không có khả năng
1 = Có khả năng
dynamic_audio_buffer_support 4 octet Hỗ trợ bộ đệm âm thanh động trong bộ điều khiển Bluetooth
Mặt nạ bit cho các loại bộ mã hoá và giải mã được hỗ trợ
Bit 0 – SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bit 5-31 được dành riêng
a2dp_offload_v2_support 1 octet Hỗ trợ các lệnh giảm tải A2DP phiên bản 2 trong bộ điều khiển Bluetooth (xem Bắt đầu giảm tải A2DP, Dừng giảm tải A2DP)
0 = Không được hỗ trợ
1 = Được hỗ trợ
iso_link_feedback_support 1 octet Hỗ trợ sự kiện Phản hồi về đường liên kết ISO
0 = Không được hỗ trợ
1 = Được hỗ trợ
sniff_offload_support 1 octet Hỗ trợ các lệnh Sniff Offload trong bộ điều khiển Bluetooth
0 = Không được hỗ trợ
1 = Được hỗ trợ

Kết quả quét theo lô

Mục tiêu thiết kế là tăng cường cách gửi thông báo sự kiện Phản hồi quét Bluetooth LE đến máy chủ lưu trữ, nhằm tiết kiệm năng lượng cho máy chủ lưu trữ.

Bằng cách giảm tần suất bộ điều khiển thông báo cho bộ xử lý ứng dụng lưu trữ để quét kết quả, bộ xử lý ứng dụng lưu trữ có thể ở trạng thái rảnh/ngủ lâu hơn. Việc này giúp giảm mức tiêu thụ điện năng trong máy chủ lưu trữ. Tham số trả về total_scan_results_storage của LE_Get_Vendor_Capabilities_Command cho biết khả năng của chip để lưu trữ kết quả quét.

Tính năng này tập trung vào việc quản lý và định cấu hình cơ sở lưu trữ Kết quả quét LE trong bộ điều khiển Bluetooth. Bộ nhớ này được dùng để tạm thời xử lý hàng loạt dữ liệu quảng cáo, dữ liệu quét và siêu dữ liệu mà bộ điều khiển nhận được để sau này gửi đến máy chủ.

Phần mềm sẽ hỗ trợ 2 loại xử lý hàng loạt và có thể được thực hiện đồng thời:

  • Đã cắt bớt. Chứa các phần tử thông tin sau: {MAC, TX Power, RSSI, Timestamp}
  • Đầy. Chứa các phần tử thông tin sau: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

Tham số lệnh Kích thước Mục đích
Batch_Scan_opcode 1 octet 0x1 – Bật tính năng dành riêng cho khách hàng
0x2 – Đặt các tham số Bộ nhớ quét hàng loạt
0x3 – Đặt các tham số Quét hàng loạt
0x4 – Đọc các tham số Kết quả quét hàng loạt

Sự kiện Command Complete sẽ được tạo cho lệnh này. Việc bật tính năng dành riêng cho khách hàng sẽ không bắt đầu quá trình quét.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Batch_Scan_opcode 1 octet 0x1 – Bật tính năng dành riêng cho khách hàng
0x2 – Đặt các tham số Bộ nhớ quét hàng loạt
0x3 – Đặt các tham số Quét hàng loạt
0x4 – Đọc các tham số Kết quả quét hàng loạt

LE_Batch_Scan_Command: Bật tính năng dành riêng cho khách hàng

OCF phụ: 0x01

Tham số lệnh con Kích thước Mục đích
enable_customer_specific_feature_set 1 octet 0x01 – Bật tính năng Quét theo lô
0x00 – Tắt tính năng Quét theo lô

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Batch_Scan_opcode 1 octet 0x1 – Bật tính năng dành riêng cho khách hàng
0x2 – Đặt các tham số Bộ nhớ quét hàng loạt
0x3 – Đặt các tham số Quét hàng loạt
0x4 – Đọc các tham số Kết quả quét hàng loạt

LE_Batch_Scan_Command: Đặt lệnh phụ tham số lưu trữ quét hàng loạt

OCF phụ: 0x02

Tham số lệnh con Kích thước Mục đích
Batch_Scan_Full_Max 1 octet Dung lượng lưu trữ tối đa (tính bằng %) được phân bổ cho kiểu đầy đủ
[Phạm vi: 0 – 100]
Batch_Scan_Truncated_Max 1 octet Dung lượng lưu trữ tối đa (tính bằng %) được phân bổ cho kiểu bị cắt
[Phạm vi: 0 – 100]
Batch_Scan_Notify_Threshold 1 octet Thiết lập cấp độ thông báo (tính bằng %) cho từng nhóm lưu trữ
[Phạm vi: 0 – 100]
Nếu bạn đặt thành 0, thông báo sẽ bị vô hiệu hoá. Sự kiện HCI dành riêng cho nhà cung cấp được tạo (Sự kiện phụ vi phạm ngưỡng lưu trữ)

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Batch_scan_opcode 1 octet 0x02 [Đặt thông số Quét theo lô]

LE_Batch_Scan_Command: Đặt lệnh phụ tham số quét theo lô

OCF phụ: 0x03

Tham số lệnh con Kích thước Mục đích
Batch_Scan_Mode 1 octet 0x00 – Đã tắt chế độ quét hàng loạt
0x01 – Đã bật chế độ rút gọn
0x02 – Đã bật chế độ đầy đủ
0x03 – Đã bật chế độ rút gọn và chế độ đầy đủ
Duty_cycle_scan_window 4 octet Thời gian quét của tính năng Quét theo lô (số lượng khe cắm)
Duty_cyle_scan_interval 4 octet Khoảng thời gian quét theo lô (số lượng khe cắm)
own_address_type 1 octet 0x00 – Địa chỉ thiết bị công khai
0x01 – Địa chỉ thiết bị ngẫu nhiên
Batch_scan_Discard_Rule 1 octet 0 – Loại bỏ quảng cáo cũ nhất
1 – Loại bỏ quảng cáo có RSSI yếu nhất

Lệnh phụ này sẽ bắt đầu quét hàng loạt, nếu được bật. Trong quá trình quét Bị cắt bớt, kết quả được lưu trữ ở dạng bị cắt bớt, trong đó khoá duy nhất cho kiểu Bị cắt bớt = {BD_ADDR, scan_interval}. Điều này có nghĩa là chỉ có một BD_ADDR will được ghi lại cho mỗi khoảng thời gian quét. Bản ghi cần giữ cho chế độ Bị cắt ngắn là: {BD_ADDR, Công suất truyền, RSSI, Dấu thời gian}

Khi bạn bật chế độ Đầy đủ, tính năng quét chủ động sẽ được dùng và Phản hồi quét sẽ được ghi lại. Khoá duy nhất của kiểu Đầy đủ = {MAC, Gói quảng cáo}, bất kể khoảng thời gian quét. Bản ghi cần lưu giữ cho chế độ Đầy đủ là {BD_ADDR, Công suất truyền, RSSI, Dấu thời gian, Gói quảng cáo, Phản hồi quét}. Ở kiểu Đầy đủ, cùng một gói AD, khi xuất hiện nhiều lần trong các khoảng thời gian quét khác nhau, chỉ được ghi lại một lần. Tuy nhiên, ở chế độ Bị cắt, điều đáng quan tâm là khả năng hiển thị của BA_ADDR trong các khoảng thời gian quét khác nhau (mỗi khoảng thời gian quét một lần). RSSI là giá trị trung bình của tất cả các bản sao của một quảng cáo duy nhất trong khoảng thời gian quét.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Batch_scan_opcode 1 octet 0x03 [Set Batch Scan Parameters] (Đặt thông số quét theo lô)

LE_Batch_Scan_Command: Lệnh phụ đọc kết quả quét theo lô

OCF phụ: 0x04

Tham số lệnh con Kích thước Mục đích
Batch_Scan_Data_read 1 octet 0x01 – Dữ liệu ở chế độ bị cắt bớt
0x02 – Dữ liệu ở chế độ đầy đủ

Sự kiện Command Complete sẽ được tạo cho lệnh này. Khi máy chủ lưu trữ đưa ra lệnh này, tất cả kết quả trong bộ điều khiển có thể không vừa với một sự kiện Lệnh hoàn tất. Máy chủ sẽ lặp lại việc phát lệnh này cho đến khi các kết quả tương ứng trong sự kiện Lệnh hoàn tất cho biết 0 trong số lượng bản ghi, cho biết bộ điều khiển không còn bản ghi nào để truyền đạt cho máy chủ. Mỗi sự kiện Command Complete có thể chứa nhiều bản ghi chỉ có một loại dữ liệu (Đầy đủ hoặc Bị cắt bớt).

Các thông tin tham chiếu về thời gian của bộ điều khiển và máy chủ lưu trữ không được đồng bộ hoá. Đơn vị của dấu thời gian là 50 mili giây. Giá trị của dấu thời gian dựa trên thời điểm Read_Batch_Scan_Results_Sub_cmd được máy chủ lưu trữ cung cấp. Nếu thời gian nhận được lệnh là T_c trong chương trình cơ sở, thì thời gian thực tế mà dấu thời gian được lấy trong chương trình cơ sở là T_fw. Thời gian báo cáo sẽ là: (T_cT_fw). T_cT_fw nằm trong miền thời gian của chương trình cơ sở. Điều này cho phép máy chủ tính toán thời gian đã trôi qua kể từ khi sự kiện xảy ra.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Batch_scan_opcode 1 octet 0x03 [Đặt thông số Quét theo lô]
Batch_Scan_data_read 1 octet Xác định định dạng (Bị cắt bớt hoặc Đầy đủ)
num_of_records 1 octet Số lượng bản ghi của Batch_Scan_data_read
format_of_data Biến Chế độ rút gọn:
Địa chỉ[0]: 6 octet
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0] : 1 octet
Timestamp[0]: 2 octet
[multiple records (num_of_records) with above format]

Chế độ đầy đủ:
Địa chỉ[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 octet
Scan_data_resp_len[0]: 1 octet
Scan_data_resp[0]: Scan_data_resp octet
[multiple records with above format (num_of_records)]

Bộ lọc nội dung gói quảng cáo

Sử dụng lệnh này để bật/tắt/thiết lập Bộ lọc nội dung gói quảng cáo (APCF) trong bộ điều khiển. Bộ lọc APCF lọc các báo cáo quảng cáo trong bộ điều khiển nhưng không lọc quảng cáo định kỳ.

LE_APCF_Command

OCF: 0x157

Tham số lệnh Kích thước Mục đích
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

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái của yêu cầu trả lại hàng
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

OCF phụ: 0x00

Tham số lệnh con Kích thước Mục đích
APCF_enable 1 octet 0x01 – Bật tính năng APCF
0x00 – Tắt tính năng APCF

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0x0 – Bật APCF
APCF_Enable 1 octet Bạn có thể bật/tắt thông qua APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

Lệnh phụ này được dùng để thêm hoặc xoá một quy cách bộ lọc hoặc xoá danh sách bộ lọc để lọc trên chip.

OCF phụ: 0x01

Tham số lệnh con Kích thước Mục đích
APCF_Action 1 octet 0x00 – Thêm
0x01 – Xoá
0x02 – Xoá
Xoá sẽ xoá bộ lọc cụ thể cùng với các mục nhập tính năng liên quan trong các bảng khác.
Xoá sẽ xoá tất cả bộ lọc và các mục liên kết trong các bảng khác.
APCF_Filter_Index 1 octet Chỉ mục bộ lọc (0, max_filter-1)
APCF_Feature_Selection 2 octet Mặt nạ bit cho các tính năng đã chọn:
Bit 0: Đặt để bật bộ lọc Địa chỉ truyền tin
Bit 1: Đặt để bật bộ lọc Thay đổi dữ liệu dịch vụ
Bit 2: Đặt để bật chế độ kiểm tra UUID dịch vụ
Bit 3: Đặt để bật chế độ kiểm tra UUID yêu cầu dịch vụ
Bit 4: Đặt để bật chế độ kiểm tra Tên cục bộ
Bit 5: Đặt để bật chế độ kiểm tra Dữ liệu của nhà sản xuất
Bit 6: Đặt để bật chế độ kiểm tra Dữ liệu dịch vụ
Bit 7: Đặt để bật chế độ kiểm tra Dịch vụ khám phá phương tiện truyền tải
Bit 8: Đặt để bật chế độ kiểm tra Loại quảng cáo
APCF_List_Logic_Type 2 octet Thao tác logic cho từng lựa chọn tính năng (mỗi vị trí bit) được chỉ định trong APCF_Feature_Selection.
Chỉ hợp lệ khi một tính năng được bật.
Giá trị vị trí bit:
0: OR
1: AND
Nếu bạn chọn logic "AND", thì gói ADV sẽ chỉ vượt qua bộ lọc nếu chứa TẤT CẢ các mục trong danh sách.
Nếu bạn chọn logic "OR", thì một gói ADV sẽ vượt qua bộ lọc nếu gói đó chứa bất kỳ mục nào trong danh sách.
APCF_Filter_Logic_Type 1 octet 0x00: OR
0x01: AND
Lưu ý: Loại logic là N/A cho 3 trường đầu tiên của APCF_Feature_Selection, luôn là logic "AND". Chúng chỉ áp dụng cho 4 trường (Bit 3 – Bit 6) của APCF_Feature_Selection.
rssi_high_thresh 1 octet [in dBm]
Nhà quảng cáo chỉ được coi là đã xuất hiện nếu tín hiệu cao hơn ngưỡng cao RSSI. Nếu không, chương trình cơ sở phải hoạt động như thể chưa từng thấy thông báo này.
delivery_mode 1 octet 0x00 – immediate
0x01 – on_found
0x02 – batched
onfound_timeout 2 octet Chỉ hợp lệ nếu delivery_modeon_found.
[theo mili giây]
Thời gian để chương trình cơ sở duy trì và thu thập thêm quảng cáo trước khi báo cáo.
onfound_timeout_cnt 1 octet Chỉ hợp lệ nếu delivery_modeon_found.
[count]
Nếu một quảng cáo trong onFound vẫn còn trong chương trình cơ sở trong khoảng thời gian onfound_timeout, thì quảng cáo đó sẽ thu thập một số quảng cáo và số lượng sẽ được kiểm tra. Nếu số lần vượt quá onfound_timeout_cnt, thì OnFound sẽ báo cáo ngay sau đó.
rssi_low_thresh 1 octet Chỉ hợp lệ nếu delivery_modeon_found.
[in dBm]
Gói của nhà quảng cáo được coi là không xuất hiện nếu RSSI của gói nhận được không cao hơn ngưỡng thấp RSSI.
onlost_timeout 2 octet Chỉ hợp lệ nếu delivery_modeon_found.
[in milliseconds]
Nếu một quảng cáo, sau khi được tìm thấy, không được xem liên tục trong khoảng thời gian lost_timeout, thì quảng cáo đó sẽ ngay lập tức được báo cáo là bị mất.
num_of_tracking_entries 2 octet Chỉ hợp lệ nếu delivery_modeon_found.
[count]
Tổng số nhà quảng cáo cần theo dõi trên mỗi bộ lọc.

Các giá trị RSSI phải sử dụng phần bù 2 để biểu thị các giá trị âm.

Máy chủ lưu trữ sẽ có thể định cấu hình nhiều bộ lọc với APCF_Application_Address_type được đặt thành 0x02 (đối với tất cả các địa chỉ của đài truyền hình) để quản lý nhiều tổ hợp bộ lọc.

Lọc, phân lô và báo cáo là những khái niệm có liên quan đến nhau. Mọi quảng cáo và phản hồi quét liên quan sẽ phải trải qua tất cả các bộ lọc, lần lượt từng bộ lọc. Do đó, các hành động dẫn đến (delivery_mode) có liên quan chặt chẽ đến việc lọc. Các chế độ phân phối là: report_immediately, batchonFound. Giá trị OnLost có liên quan đến OnFound theo nghĩa là giá trị này sẽ xuất hiện sau OnFound khi bị mất.

Quy trình xử lý này mô tả mô hình khái niệm:

Khi nhận được một khung quảng cáo (hoặc phản hồi quét), khung đó sẽ được áp dụng cho tất cả các bộ lọc theo thứ tự nối tiếp. Có thể một quảng cáo có thể gây ra báo cáo tức thì dựa trên một bộ lọc và việc xử lý hàng loạt quảng cáo đó do một thao tác lọc khác.

Ngưỡng mức RSSI (cao và thấp) cho phép kiểm soát thời điểm khung hiển thị để xử lý bộ lọc, ngay cả khi bộ điều khiển nhận được một gói hợp lệ. Trong trường hợp chế độ phân phối được đặt thành tức thì hoặc theo lô, RSSI của một khung sẽ được xem xét để xử lý bộ điều khiển tiếp theo. Các ứng dụng khác nhau cần có hành vi báo cáo và phân lô khác nhau. Điều này cho phép nhiều ứng dụng có tính năng báo cáo trực tiếp và/hoặc kết quả theo lô trong chương trình cơ sở, đồng thời. Ví dụ là trường hợp khi một lượt quét hàng loạt đang hoạt động từ một ứng dụng và sau đó một lượt quét LE thông thường được phát hành bởi một ứng dụng khác. Trước khi một lượt quét hàng loạt được phát hành, khung/ứng dụng sẽ đặt các bộ lọc thích hợp. Sau đó, khi ứng dụng thứ hai phát hành một lệnh quét thông thường, quá trình phân lô trước đó sẽ tiếp tục. Tuy nhiên, do quá trình quét thường xuyên, nên về mặt khái niệm, việc này tương tự như việc thêm một bộ lọc rỗng (cùng với tất cả các bộ lọc hiện có) cùng với lệnh quét LE. Các thông số lệnh quét LE sẽ được ưu tiên khi hoạt động. Khi chế độ quét LE thông thường bị tắt, bộ điều khiển sẽ quay lại chế độ quét theo lô trước đó (nếu có).

Chế độ phân phối OnFound dựa trên các bộ lọc đã định cấu hình. Một tổ hợp kích hoạt hành động của bộ lọc thành công được coi là thực thể cần theo dõi cho onLost. Sự kiện tương ứng là sự kiện phụ theo dõi Advt LE.

Quá trình chuyển đổi OnFound/OnLost cho một bộ lọc (nếu được bật) sẽ có dạng như sau:

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0x01 – APCF Set Filtering Parameters (APCF Đặt các tham số lọc)
APCF_Action 1 octet Lệnh APCF_Action phản hồi
APCF_AvailableSpaces 1 octet Số lượng mục có sẵn trong bảng bộ lọc

LE_APCF_Command: broadcast_address_sub_cmd

Lệnh phụ này được dùng để thêm hoặc xoá địa chỉ của nhà quảng cáo hoặc để xoá danh sách địa chỉ của nhà quảng cáo cho tính năng lọc trên chip.

OCF phụ: 0x02

Tham số lệnh con Kích thước Mục đích
APCF_Action 1 octet 0x00 – Add
0x01 – Delete
0x02 – Clear
Delete sẽ xoá địa chỉ của đài phát được chỉ định trong bộ lọc đã chỉ định.
Xoá sẽ xoá tất cả địa chỉ của đài truyền hình trong bộ lọc đã chỉ định.
APCF_Filter_Index 1 octet Chỉ mục bộ lọc (0, max_filter-1)
APCF_Broadcaster_Address 6 octet Địa chỉ thiết bị 6 byte cần thêm vào hoặc xoá khỏi danh sách địa chỉ của thiết bị truyền tin
APCF_Application_Address_type 1 octet 0x00: Công khai
0x01: Ngẫu nhiên
0x02: Không áp dụng (bỏ qua loại địa chỉ)
Để lọc các báo cáo quảng cáo theo loại địa chỉ nhận dạng (0x02, 0x03). Để nhận báo cáo quảng cáo có các loại địa chỉ 0x02 và 0x03, hãy đặt trường này thành 0x02: NA (bỏ qua loại địa chỉ).

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0x02 – Địa chỉ của đài phát APCF
APCF_Action 1 octet Lệnh APCF_Action phản hồi
APCF_AvailableSpaces 1 octet Số lượng mục nhập miễn phí vẫn còn trong bảng Địa chỉ phát sóng

LE_APCF_Command: service_uuid_sub_cmd

Lệnh phụ này được dùng để thêm hoặc xoá một UUID dịch vụ hoặc để xoá danh sách UUID dịch vụ cho tính năng lọc trên chip.

OCF phụ: 0x03

Tham số lệnh con Kích thước Mục đích
APCF_Action 1 octet 0x00 – Thêm
0x01 – Xoá
0x02 – Xoá
Xoá sẽ xoá địa chỉ UUID dịch vụ đã chỉ định trong bộ lọc đã chỉ định.
Xoá sẽ xoá tất cả UUID dịch vụ trong bộ lọc được chỉ định.
APCF_Filter_Index 1 octet Chỉ mục bộ lọc (0, max_filter-1)
APCF_UUID 2,4,16 octet UUID dịch vụ (16 bit, 32 bit hoặc 128 bit) để thêm vào hoặc xoá khỏi danh sách.
APCF_UUID_MASK 2,4,16 octet Mặt nạ UUID dịch vụ (16 bit, 32 bit hoặc 128 bit) cần thêm vào danh sách. Độ dài của thông tin này phải bằng với độ dài của APCF_UUID.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0x03 – UUID dịch vụ APCF
APCF_Action 1 octet Lệnh APCF_Action phản hồi
APCF_AvailableSpaces 1 octet Số mục nhập miễn phí vẫn còn trong bảng UUID dịch vụ

LE_APCF_Command: solicitation_uuid_sub_cmd

Lệnh con này được dùng để thêm hoặc xoá một UUID chào mời hoặc để xoá danh sách UUID chào mời cho tính năng lọc trên chip.

OCF phụ: 0x04

Tham số lệnh con Kích thước Mục đích
APCF_Action 1 octet 0x00 – Thêm
0x01 – Xoá
0x02 – Xoá
Xoá sẽ xoá địa chỉ UUID chào mời trong bộ lọc đã chỉ định.
Xoá sẽ xoá tất cả UUID yêu cầu trong bộ lọc được chỉ định.
APCF_Filter_Index 1 octet Chỉ mục bộ lọc (0, max_filter-1)
APCF_UUID 2,4,16 octet UUID yêu cầu (16 bit, 32 bit hoặc 128 bit) để thêm vào hoặc xoá khỏi danh sách.
APCF_UUID_MASK 2,4,16 octet Solicitation UUID Mask (16 bit, 32 bit hoặc 128 bit) để thêm vào danh sách. Tham số này phải có cùng độ dài với APCF_UUID.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0x04 – UUID yêu cầu APCF
APCF_Action 1 octet Lệnh APCF_Action phản hồi
APCF_AvailableSpaces 1 octet Số lượng mục nhập miễn phí vẫn còn trong bảng UUID của yêu cầu

LE_APCF_Command: local_name_sub_cmd

Lệnh phụ này được dùng để thêm hoặc xoá một chuỗi tên cục bộ hoặc để xoá danh sách chuỗi tên cục bộ cho hoạt động lọc trên chip.

OCF phụ: 0x05

Tham số lệnh con Kích thước Mục đích
APCF_Action 1 octet 0x00 – Add
0x01 – Delete
0x02 – Clear
Delete sẽ xoá chuỗi tên cục bộ được chỉ định trong bộ lọc được chỉ định.
Xoá sẽ xoá tất cả chuỗi tên cục bộ trong bộ lọc đã chỉ định.
APCF_Filter_Index 1 octet Chỉ mục bộ lọc (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Kích thước thay đổi Một chuỗi ký tự cho tên địa phương.

Lưu ý:
  • Hiện tại, số lượng ký tự tối đa trong một chuỗi tên địa phương là 29
  • Không áp dụng khi hành động là "Xoá" (0x2)

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0x05 – Tên cục bộ APCF
APCF_Action 1 octet Lệnh APCF_Action phản hồi
APCF_AvailableSpaces 1 octet Số lượng mục nhập miễn phí vẫn còn trong bảng Tên địa phương

LE_APCF_Command: manf_data_sub_cmd

Lệnh phụ này dùng để thêm hoặc xoá chuỗi dữ liệu của nhà sản xuất hoặc để xoá danh sách chuỗi dữ liệu của nhà sản xuất cho tính năng lọc trên chip.

OCF phụ: 0x06

Tham số lệnh con Kích thước Mục đích
APCF_Action 1 octet 0x00 – Thêm
0x01 – Xoá
0x02 – Xoá
Xoá sẽ xoá chuỗi dữ liệu của nhà sản xuất được chỉ định trong bộ lọc được chỉ định.
Xoá sẽ xoá tất cả chuỗi dữ liệu của nhà sản xuất trong bộ lọc đã chỉ định.
APCF_Filter_Index 1 octet Chỉ mục bộ lọc (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Kích thước thay đổi Một chuỗi ký tự cho dữ liệu của nhà sản xuất.

Lưu ý:
  • Hiện tại, số lượng ký tự tối đa trong một chuỗi tên địa phương là 29
  • Không áp dụng khi hành động là "Xoá" (0x2)
APCF_ManData_Mask Kích thước thay đổi Mặt nạ dữ liệu của nhà sản xuất cần thêm vào danh sách. Độ dài của mảng này phải bằng độ dài của APCF_LocName_or_ManData_or_SerData.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0x06 – Dữ liệu của nhà sản xuất APCF
APCF_Action 1 octet Lệnh APCF_Action phản hồi
APCF_AvailableSpaces 1 octet Số lượng mục nhập miễn phí vẫn còn trong bảng Dữ liệu của nhà sản xuất

LE_APCF_Command: service_data_sub_cmd

Lệnh phụ này được dùng để thêm hoặc xoá một chuỗi dữ liệu dịch vụ hoặc để xoá danh sách chuỗi dữ liệu dịch vụ cho tính năng lọc trên chip.

Sub OCF: 0x07

Tham số lệnh con Kích thước Mục đích
APCF_Action 1 octet 0x00 – Thêm
0x01 – Xoá
0x02 – Xoá
Xoá sẽ xoá chuỗi dữ liệu dịch vụ được chỉ định trong bộ lọc được chỉ định.
Lệnh Clear sẽ xoá tất cả chuỗi dữ liệu dịch vụ trong bộ lọc đã chỉ định.
APCF_Filter_Index 1 octet Chỉ mục bộ lọc (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Kích thước thay đổi Một chuỗi ký tự cho dữ liệu dịch vụ.

Lưu ý:
  • Hiện tại, số lượng ký tự tối đa trong một chuỗi tên địa phương là 29
  • Không áp dụng khi hành động là "Xoá" (0x2)
APCF_LocName_Mandata_or_SerData_Mask Kích thước thay đổi Mặt nạ dữ liệu dịch vụ cần thêm vào danh sách. Thông tin này phải có cùng độ dài với APCF_LocName_or_ManData_or_SerData.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0x07 – Dữ liệu dịch vụ APCF
APCF_Action 1 octet Lệnh APCF_Action phản hồi
APCF_AvailableSpaces 1 octet Số mục nhập miễn phí vẫn còn trong bảng Dữ liệu dịch vụ

LE_APCF_Command: ad_type_sub_cmd

Lệnh con này dùng để thêm hoặc xoá một loại AD hoặc xoá danh sách loại AD để lọc trên chip. Dùng read_extended_features_sub_cmd để kiểm tra xem lệnh này có được hỗ trợ hay không.
Khi APCF_AD_DATA_Length bằng 0, hãy lọc APCF_AD_TYPE mà không cần so sánh Dữ liệu AD và Mặt nạ dữ liệu AD. Nếu độ dài dữ liệu của gói ADV nhận được vượt quá AD_DATA_LENGTH, chỉ so sánh AD_DATA_LENGTH byte đầu tiên của Dữ liệu quảng cáo và bỏ qua dữ liệu còn lại.

OCF phụ: 0x09

Tham số lệnh con Kích thước Mục đích
APCF_Action 1 octet 0x00 – Thêm
0x01 – Xoá
0x02 – Xoá
Xoá sẽ xoá loại AD được chỉ định trong bộ lọc được chỉ định.
Xoá sẽ xoá tất cả các loại quảng cáo trong bộ lọc đã chỉ định.
APCF_Filter_Index 1 octet Chỉ mục bộ lọc (0, max_filter-1)
APCF_AD_TYPE 1 octet Loại quảng cáo để thêm vào hoặc xoá khỏi danh sách. Bỏ qua khi APCF_Action là 0x02 (Xoá)
APCF_AD_DATA_Length 1 octet 0x00 – nghĩa là không lọc nội dung dữ liệu
Bỏ qua khi APCF_Action là 0x02 (Xoá)
APCF_AD_DATA Kích thước thay đổi Kích thước thay đổi, dựa trên APCF_AD_DATA_Length
Bỏ qua khi APCF_Action là 0x02 (Xoá)
APCF_AD_DATA_MASK Kích thước thay đổi Kích thước thay đổi, dựa trên APCF_AD_DATA_Length
Bỏ qua khi APCF_Action là 0x02 (Xoá)
Phải có cùng độ dài với APCF_AD_DATA.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0x09 – Loại quảng cáo APCF
APCF_Action 1 octet Lệnh APCF_Action phản hồi
APCF_AvailableSpaces 1 octet Số lượng mục nhập miễn phí vẫn có trong bảng Loại quảng cáo

LE_APCF_Command: read_extended_features_sub_cmd

Lệnh phụ này được dùng để đọc các tính năng APCF mở rộng.

OCF phụ: 0xFF

Tham số lệnh con Kích thước Mục đích
Không áp dụng Tham số lệnh trống.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
APCF_opcode 1 octet 0xFF – APCF_Read_Extended_Features
APCF_extended_features 2 octet

Mặt nạ bit cho các tính năng mở rộng được hỗ trợ:

  • Bit 0: Hỗ trợ bộ lọc Dịch vụ phát hiện phương tiện truyền tải
  • Bit 1: Hỗ trợ bộ lọc Loại quảng cáo
  • Bit 2 ~ 15: Dành để sử dụng trong tương lai

Giá trị của bit

  • 0 = Không được hỗ trợ
  • 1 = Được hỗ trợ

Lệnh thông tin về hoạt động và năng lượng của bộ điều khiển

Mục tiêu của thông tin này là để các chức năng hệ thống máy chủ cao hơn phân tích tổng số hoạt động của tất cả các thành phần, bao gồm cả bộ điều khiển BT và trạng thái vĩ mô của bộ điều khiển này, cùng với những gì đang xảy ra trong các ứng dụng và khung. Để làm việc này, bạn cần có thông tin sau từ ngăn xếp BT và bộ điều khiển:

  • Ngăn xếp BT: Báo cáo trạng thái hoạt động vĩ mô hiện tại của bộ điều khiển
  • Phần mềm cố định: Báo cáo thông tin tổng hợp về hoạt động và năng lượng

Các trạng thái macro của ngăn xếp máy chủ lưu trữ BT, được xác định ở cấp người dùng:

  • Trạng thái rảnh: [page scan, LE advt, inquiry scan, LE scan]
  • Quét: [paging/inquiry/trying to connect]
  • Đang hoạt động: [ACL link on, SCO link ongoing, sniff mode]

Các hoạt động mà bộ điều khiển theo dõi trong suốt thời gian hoạt động là thời gian Tx, thời gian Rx, thời gian ở trạng thái rảnh và tổng năng lượng tiêu thụ. Chúng sẽ bị xoá khi được đọc từ máy chủ.

LE_Get_Controller_Activity_Energy_Info

Đây là một lệnh dành riêng cho nhà cung cấp.

OCF: 0x159

Tham số lệnh con Kích thước Mục đích
NA Tham số lệnh trống

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
total_tx_time_ms 4 octet Tổng thời gian thực hiện Tx
total_rx_time_ms 4 octet Tổng thời gian thực hiện Rx
total_idle_time_ms 4 octet Tổng thời gian ở trạng thái không hoạt động (trạng thái pin yếu không phải là trạng thái ngủ)
total_energy_used 4 octet Tổng năng lượng đã sử dụng [tích của dòng điện (mA), điện áp (V) và thời gian (ms)]

Lệnh tham số quét tập hợp mở rộng LE

Bạn có thể dùng lệnh này để bật cửa sổ và khoảng thời gian quét lớn hơn trong bộ điều khiển. Theo Quy cách BT Core 5.2, cửa sổ quét và khoảng thời gian quét có giới hạn trên là 10,24 giây, điều này cản trở khoảng thời gian quét vượt quá 10,24 giây đối với các ứng dụng.

Tài liệu tham khảo cơ bản: Quy cách BT Core 5.2, trang 2493 (Lệnh LE Set Scan Parameters)

OCF: 0x15A

Tham số lệnh Kích thước Mục đích
LE_Ex_Scan_Type 1 octet 0x00 – Quét thụ động. Không có gói SCAN_REQ nào được gửi (mặc định).
0x01 – Đang quét. SCAN_REQ gói có thể được gửi.
LE_Ex_Scan_Interval 4 octet Được xác định là khoảng thời gian từ khi Bộ điều khiển bắt đầu lần quét LE gần đây nhất cho đến khi bắt đầu lần quét LE tiếp theo.
Phạm vi: 0x0004 đến 0x00FFFFFF
Mặc định: 0x0010 (10 mili giây)
Thời gian = N * 0,625 mili giây
Phạm vi thời gian: 2,5 mili giây đến 10442,25 giây
LE_Ex_Scan_Window 4 octet Thời lượng quét LE. LE_Scan_Window phải nhỏ hơn hoặc bằng LE_Scan_Interval.
Phạm vi: 0x0004 đến 0xFFFF
Mặc định: 0x0010 (10 mili giây)
Thời gian = N * 0,625 mili giây
Phạm vi thời gian: 2,5 mili giây đến 40,95 giây
Own_Address_Type 1 octet 0x00 – Địa chỉ thiết bị công khai (mặc định)
0x01 – Địa chỉ thiết bị ngẫu nhiên
LE_Ex_Scan_Filter_Policy 0x00 – Chấp nhận tất cả các gói quảng cáo (mặc định). Các gói quảng cáo có hướng đích không được định địa chỉ cho thiết bị này sẽ bị bỏ qua.
0x01 – Bỏ qua các gói quảng cáo từ những thiết bị không có trong Danh sách cho phép. Chỉ liệt kê. Các gói quảng cáo có mục tiêu không dành cho thiết bị này sẽ bị bỏ qua.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất

Lệnh nhận thông tin gỡ lỗi của bộ điều khiển

Mục tiêu của phần tử thông tin này là thu thập thông tin gỡ lỗi của bộ điều khiển bằng máy chủ lưu trữ, ở dạng nhị phân, để xử lý và phân tích sau. Điều này giúp gỡ lỗi các vấn đề tại hiện trường và cung cấp cho kỹ sư một bộ công cụ để ghi thông tin nhằm phân tích. Đơn vị kiểm soát có thể cung cấp thông tin khi được một máy chủ yêu cầu thông qua sự kiện (sự kiện phụ Thông tin gỡ lỗi của đơn vị kiểm soát) hoặc một cách độc lập khi đơn vị kiểm soát muốn. Ví dụ: bạn có thể sử dụng để báo cáo thông tin về trạng thái chương trình cơ sở, thông tin về kết xuất sự cố, thông tin ghi nhật ký, v.v.

OCF: 0x15B

Tham số lệnh Kích thước Mục đích
Không áp dụng Danh sách tham số lệnh trống

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất

Hỗ trợ giảm tải cho phần cứng A2DP

Tính năng chuyển tải A2DP hỗ trợ việc chuyển tải quy trình mã hoá âm thanh A2DP sang một bộ xử lý âm thanh được gắn vào Bộ điều khiển BT. Luồng dữ liệu âm thanh được mã hoá sẽ truyền trực tiếp từ Bộ xử lý âm thanh đến Bộ điều khiển BT mà không cần sự tham gia của máy chủ BT. Máy chủ BT vẫn chịu trách nhiệm về việc định cấu hình và kiểm soát phiên A2DP. Có 2 phiên bản của các lệnh này. Các lệnh cũ có Sub OCF 0x01-0x02 chỉ hỗ trợ các bộ mã hoá và giải mã nguồn mở. Các phiên bản có Sub-OCF 0x03-0x04 không phụ thuộc vào bộ mã hoá và giải mã đã định cấu hình.

OCF: 0x15D

Bắt đầu giảm tải A2DP (cũ)

OCF phụ: 0x01

Sử dụng lệnh này để định cấu hình quy trình chuyển tải A2DP và bắt đầu luồng A2DP.

Tham số lệnh Kích thước Mục đích
Codec 4 octet Chỉ định loại Bộ mã hoá và giải mã
0x01 – SBC
0x02 – AAC
0x04 – APTX
0x08 – APTX HD
0x10 – LDAC
Max_Latency 2 octet Độ trễ tối đa cho phép (tính bằng mili giây). Giá trị bằng 0 sẽ tắt tính năng xoá.
SCMS-T_Enable 2 octet Octet 0: Cờ cho phép thêm tiêu đề SCMS-T.
  • 0x00 – Không có tiêu đề SCMS-T.
  • 0x01 – Đã thêm tiêu đề SCMS-T.

Octet 1: Giá trị cho tiêu đề SCMS-T, khi tiêu đề này được bật.

Sampling_Frequency 4 octet 0x01 – 44100 Hz
0x02 – 48000 Hz
0x04 – 88200 Hz
0x08 – 96000 Hz
Bits_Per_Sample 1 octet 0x01 – 16 bit trên mỗi mẫu
0x02 – 24 bit trên mỗi mẫu
0x04 – 32 bit trên mỗi mẫu
Channel_Mode 1 octet 0x01 – Đơn âm
0x02 – Âm thanh nổi
Encoded_Audio_Bitrate 4 octet Tốc độ bit của âm thanh được mã hoá, tính bằng bit trên giây.
0x00000000 – Tốc độ bit của âm thanh chưa được chỉ định / không dùng đến.
0x00000001 – 0x00FFFFFF – Tốc độ bit của âm thanh được mã hoá (tính bằng bit mỗi giây).
0x01000000 – 0xFFFFFFFF – Dành riêng.
Connection_Handle 2 octet Connection Handle của kết nối A2DP đang được định cấu hình
L2CAP_Channel_ID 2 octet Mã nhận dạng kênh L2CAP sẽ được dùng cho kết nối A2DP này
L2CAP_MTU_Size 2 octet Kích thước tối đa của MTU L2CAP chứa các gói âm thanh được mã hoá
Codec_Information 32 octet Thông tin cụ thể về bộ mã hoá và giải mã.

Bộ mã hoá và giải mã SBC:

Tham khảo các phần tử thông tin cụ thể về Bộ mã hoá và giải mã SBC trong A2DP phiên bản 1.3.
Octet 0: Block length | Subbands | Allocation Method
Octet 1: Minimum Bitpool value
Octet 2: Maximum Bitpool value
Octet 3: Sampling Frequency | Channel Mode
Octet 4-31: reserved

Bộ mã hoá và giải mã AAC:

Tham khảo các phần tử thông tin cụ thể về Bộ mã hoá và giải mã AAC trong A2DP phiên bản 1.3
Octet 0: Loại đối tượng
Octet 1; b7: VBR
Octet 2-31: dành riêng

Bộ mã hoá và giải mã LDAC:

Octet 0-3: Mã nhà cung cấp
0x0000012D

Octet 4-5: Mã nhận dạng codec
0x00AA – LDAC
Tất cả các giá trị khác đều được dành riêng

Octet 6: Bitrate Index (Chỉ số tốc độ bit):
0x00 – High (Cao)
0x01 – Mid (Trung bình)
0x02 – Low (Thấp)
0x03 – 0x7E – Reserved (Dành riêng)
0x7F – ABR (Adaptive Bit Rate – Tốc độ bit thích ứng)
0x80 – 0xFF – Reserved (Dành riêng)

Octet 7: Chế độ kênh LDAC
0x01 – Stereo
0x02 – Dual
0x04 – Mono
Các giá trị khác được dành riêng

Octet 8-31: dành riêng

Tất cả các bộ mã hoá và giải mã khác:

Octet 0-31: dành riêng

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Sub_Opcode 1 octet 0x01 – Bắt đầu giảm tải A2DP

Bắt đầu giảm tải A2DP

OCF phụ: 0x03

Sử dụng lệnh này để định cấu hình quy trình chuyển tải A2DP và bắt đầu luồng A2DP.

Tham số lệnh Kích thước Mục đích
Connection Handle 2 octet Xử lý kết nối HCI đang hoạt động
L2CAP_Channel_ID 2 octet Giá trị nhận dạng của Kênh L2CAP được mở để truyền phát A2DP
Data_Path_Direction 1 octet 0x00 – Đầu ra (Nguồn/Hợp nhất AVDTP)
0x01 – Đầu vào (Đầu thu/Phân tách AVDTP)
Peer_MTU 2 octet Kích thước tối đa của các gói L2CAP, được thương lượng với thiết bị ngang hàng.
CP_Enable_SCMS_T 1 octet 0x00 – Tắt tiêu đề bảo vệ nội dung SCMS-T
0x01 – Bật tiêu đề bảo vệ nội dung SCMS-T
CP_Header_SCMS_T 1 octet Khi Tiêu đề bảo vệ nội dung SCMS-T được bật (CP_SCMS_T_Enable được đặt thành 0x01), sẽ xác định giá trị tiêu đề đứng trước nội dung âm thanh (tham khảo A2DP, phần 3.2.1-2) theo định nghĩa của Số được chỉ định của Bluetooth, phần 6.3.2.
Bị bỏ qua khi bạn không bật tính năng Bảo vệ nội dung SCMS-T.
Vendor_Specific_Parameters_Length 1 octet Độ dài của Thông số dành riêng cho nhà cung cấp, trong phạm vi từ 0 đến 128.
Giá trị 0 được dùng khi không có thông số bổ sung nào được cung cấp.
Vendor_Specific_Parameters 0-128 octet Các tham số dành riêng cho nhà cung cấp do Bluetooth Audio HAL cung cấp, CodecParameters.vendorSpecificParameters[].

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Sub_Opcode 1 octet 0x03 – Bắt đầu giảm tải A2DP

Dừng giảm tải A2DP (cũ)

OCF phụ: 0x02

Lệnh này dùng để dừng luồng truyền tải A2DP.

Tham số lệnh Kích thước Mục đích
Không áp dụng Danh sách tham số lệnh trống.

Không có thông số nào được xác định cho lệnh này.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Sub_Opcode 1 octet 0x02 – Stop A2DP offload (Dừng giảm tải A2DP)

Dừng giảm tải A2DP

OCF phụ: 0x04

Lệnh này dùng để dừng luồng truyền tải A2DP.

Tham số lệnh Kích thước Mục đích
Connection Handle 2 octet Xử lý kết nối HCI đang hoạt động
L2CAP_Channel_ID 2 octet Giá trị nhận dạng của Kênh L2CAP được mở để truyền phát A2DP
Data_Path_Direction 1 octet 0x00 – Đầu ra (Nguồn/Hợp nhất AVDTP)
0x01 – Đầu vào (Đầu thu/Phân tách AVDTP)

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Sub_Opcode 1 octet 0x04 – Stop A2DP offload (Dừng giảm tải A2DP)

Lệnh Báo cáo chất lượng Bluetooth

Tính năng lệnh Báo cáo chất lượng BT sẽ khởi động cơ chế trong bộ điều khiển Bluetooth để báo cáo các sự kiện về Chất lượng Bluetooth cho máy chủ. Bạn có thể bật 4 lựa chọn:

  • Chế độ giám sát chất lượng: Bộ điều khiển định kỳ gửi một sự kiện phụ BQR liên quan đến Chất lượng đường liên kết đến máy chủ.
  • Sắp hết thời gian giám sát liên kết (LSTO): Nếu không nhận được gói nào từ thiết bị BT đã kết nối trong thời gian dài hơn một nửa giá trị LSTO, bộ điều khiển sẽ báo cáo sự kiện Sắp hết LSTO cho máy chủ.
  • Âm thanh A2DP bị giật: Khi phát hiện các yếu tố gây ra tình trạng âm thanh bị giật, bộ điều khiển sẽ báo cáo sự kiện Âm thanh A2DP bị giật cho máy chủ.
  • (e)SCO Voice Choppy (Giọng nói (e)SCO bị giật): Khi phát hiện các yếu tố khiến giọng nói bị giật, bộ điều khiển sẽ báo cáo sự kiện (e)SCO Voice Choppy cho máy chủ.
  • Root Inflammation (Tình trạng viêm nhiễm gốc): Sự kiện này được bộ điều khiển gửi đến ngăn xếp khi HAL hoặc bộ điều khiển gặp phải lỗi nghiêm trọng và cần khởi động lại Bluetooth.
  • LMP/LL message trace (Dấu vết thông báo LMP/LL): Bộ điều khiển gửi thông báo LMP/LL bắt tay với thiết bị từ xa đến máy chủ.
  • Dấu vết lập lịch Bluetooth Multi-profile/Coex: Bộ điều khiển gửi thông tin lập lịch về việc xử lý nhiều hồ sơ Bluetooth và khả năng cùng tồn tại không dây trong băng tần 2,4 Ghz cho máy chủ.
  • Cơ chế Thông tin gỡ lỗi của bộ điều khiển: Khi được bật, bộ điều khiển có thể tự động báo cáo thông tin ghi nhật ký gỡ lỗi thông qua sự kiện phụ thông tin gỡ lỗi của Bộ điều khiển cho máy chủ.
  • Âm thanh năng lượng thấp bị giật: Khi bộ điều khiển phát hiện các yếu tố gây ra hiện tượng âm thanh bị giật, bộ điều khiển sẽ báo cáo sự kiện Âm thanh năng lượng thấp bị giật cho máy chủ.
  • Chế độ Thống kê RF nâng cao: Bộ điều khiển báo cáo thông tin liên quan đến số liệu thống kê RF cho máy chủ lưu trữ, hỗ trợ 2 trường hợp sử dụng báo cáo:
    • Báo cáo định kỳ
    • Trình kích hoạt sự kiện (trình kích hoạt sự kiện chất lượng đường liên kết và bắt đầu/dừng truyền phát).
  • Cơ chế giám sát tình trạng của bộ điều khiển cung cấp cho máy chủ thông tin liên quan đến tình trạng thông qua 2 loại sự kiện: báo cáo định kỳ và báo cáo dựa trên sự kiện.
  • BQR_Report_Action của Lệnh Báo cáo chất lượng Bluetooth: Máy chủ có thể sử dụng lệnh HCI này để nhận một truy vấn một lần cho chế độ giám sát chất lượng, chế độ giám sát năng lượng hoặc chế độ số liệu thống kê RF nâng cao.

OCF: 0x15E

Tham số lệnh Kích thước Mục đích
BQR_Report_Action 1 octet Hành động thêm / xoá báo cáo về(các) sự kiện chất lượng được đặt trong tham số BQR_Quality_Event_Mask hoặc xoá tất cả.

0x00 – Add
0x01 – Delete
0x02 – Clear
0x03 – One time query

Thao tác xoá sẽ xoá báo cáo(các) sự kiện cụ thể về chất lượng.
Xoá sẽ xoá tất cả báo cáo sự kiện về chất lượng (bạn có thể bỏ qua thông số BQR_Quality_Event_Mask).

BQR_Quality_Event_Mask 4 octet Mặt nạ bit cho báo cáo sự kiện chất lượng đã chọn.

Bit 0: Đặt để bật chế độ giám sát chất lượng.
Bit 1: Đặt để bật sự kiện LSTO sắp xảy ra (đối với ACL/(e)SCO/ISO).
Bit 2: Đặt để bật sự kiện Âm thanh A2DP bị giật.
Bit 3: Đặt để bật sự kiện Giọng nói bị giật (e)SCO.
Bit 4: Đặt để bật sự kiện Root inflammation.
Bit 5: Đặt để bật chế độ giám sát năng lượng.
Bit 6: Đặt để bật sự kiện âm thanh LE bị giật.
Bit 7: Đặt để bật sự kiện kết nối không thành công.
Bit 8: Đặt để bật trình kích hoạt sự kiện chế độ Thống kê RF nâng cao.
Bit 9: Đặt để bật báo cáo định kỳ về Thống kê RF nâng cao.
Bit 10: Đặt để bật trình kích hoạt sự kiện cơ chế giám sát tình trạng của bộ điều khiển. (được thêm trong BQRv7)
Bit 11: Đặt để cho phép cơ chế giám sát tình trạng tay điều khiển báo cáo định kỳ. (được thêm vào trong BQRv7)
Bit 12 ~ 14: Dành riêng.
Bit 15: Đặt để bật các sự kiện chất lượng dành riêng cho nhà cung cấp.
Bit 16: Đặt để bật tính năng theo dõi thông báo LMP/LL.
Bit 17: Đặt để bật tính năng theo dõi lịch biểu Bluetooth Multi-link/Coex.
Bit 18: Đặt để bật cơ chế Thông tin gỡ lỗi của bộ điều khiển.
Bit 19: Dành riêng cho thông tin gỡ lỗi khi chuyển tải.
Bit 20: Trình kích hoạt Sự kiện kết xuất nhật ký UART. (được thêm vào BQRv7)
Bit 21 ~ 30: Dành riêng.
Bit 31: Đặt để bật dấu vết dành riêng cho nhà cung cấp.

BQR_Minimum_Report_Interval 2 octet Xác định khoảng thời gian tối thiểu để báo cáo sự kiện về chất lượng cho(các) sự kiện về chất lượng đã chọn. Firmware của bộ điều khiển không được báo cáo sự kiện tiếp theo trong khoảng thời gian đã xác định. Chế độ cài đặt khoảng thời gian sẽ tương ứng và dành riêng cho(các) sự kiện chất lượng đang được thêm.

Đơn vị: mili giây
Mặc định: 0 (Không giới hạn khoảng thời gian.)
Phạm vi: 0 ~ 65535 mili giây

BQR_Vendor_Specific_Quality_Event_Mask 4 octet Mặt nạ bit để báo cáo sự kiện chất lượng dành riêng cho nhà cung cấp đã chọn.
Tham số này chỉ hợp lệ khi bạn đặt bit 15 của BQR_Quality_Event_Mask.

Bit 0 ~ 31: Dành riêng.

BQR_Vendor_Specific_Trace_Mask 4 octet Mặt nạ bit cho báo cáo dấu vết dành riêng cho nhà cung cấp đã chọn.
Tham số này chỉ hợp lệ khi bạn đặt bit 31 của BQR_Quality_Event_Mask.

Bit 0 ~ 31: Dành riêng.

Report_interval_multiple 4 octet Hệ số cho BQR_Minimum_Report_Interval. Khi giá trị này >= 1, Khoảng thời gian báo cáo BQR sẽ có định dạng
Khoảng thời gian báo cáo BQR = BQR_Minimum_Report_Interval x Report_interval_multiple.
Firmware của bộ điều khiển không được báo cáo sự kiện tiếp theo trong khoảng thời gian đã xác định. Chế độ cài đặt khoảng thời gian được dành riêng cho(các) sự kiện chất lượng được thêm.

Đơn vị: mili giây
Mặc định: 1
Phạm vi: 0 ~ 4294967295 (0: bằng 1)

Lưu ý: nếu chế độ cài đặt của BQR_Report_Interval lớn hơn khả năng của bộ điều khiển, thì bộ điều khiển phải trả về thời gian BQR_Report_Interval tối đa khi hoàn tất lệnh.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Current_Quality_Event_Mask 4 octet Cho biết chế độ cài đặt mặt nạ bit hiện tại.
Bit 0: Đã bật chế độ giám sát chất lượng.
Bit 1: Đã bật tính năng báo cáo sự kiện LSTO sắp diễn ra.
Bit 2: Đã bật tính năng báo cáo sự kiện Âm thanh A2DP bị gián đoạn.
Bit 3: Đã bật tính năng báo cáo sự kiện Giọng nói bị giật (e)SCO.
Bit 4: Đã bật tính năng báo cáo sự kiện viêm nhiễm gốc.
Bit 5: Đã bật chế độ giám sát năng lượng.
Bit 6: Đã bật tính năng báo cáo sự kiện âm thanh LE bị giật.
Bit 7: Sự kiện kết nối không thành công.
Bit 8: Đặt để bật trình kích hoạt sự kiện chế độ Thống kê RF nâng cao.
Bit 9: Đặt để định kỳ báo cáo số liệu thống kê nâng cao về tần số vô tuyến.
Bit 10: Đặt thành sự kiện kích hoạt cơ chế theo dõi tình trạng tay điều khiển đã bật.
Bit 11: Đặt thành cơ chế giám sát tình trạng tay điều khiển đã bật sẽ báo cáo định kỳ.
Bit 12 ~ 14: Dành riêng.
Bit 15: Đã bật tính năng báo cáo sự kiện chất lượng dành riêng cho nhà cung cấp.
Bit 16: Đã bật tính năng theo dõi thông báo LMP/LL.
Bit 17: Đã bật tính năng theo dõi lịch biểu Coex/Multi-link của Bluetooth.
Bit 18: Cơ chế Thông tin gỡ lỗi của bộ điều khiển được bật.
Bit 19: Dành riêng cho thông tin gỡ lỗi khi chuyển tải
Bit 20: Trình kích hoạt Sự kiện kết xuất nhật ký UART
Bit 21 ~ 30: Dành riêng.
Bit 31: Đã bật dấu vết dành riêng cho nhà cung cấp.
Current_Vendor_Specific_Quality_Event_Mask 4 octet Cho biết chế độ cài đặt mặt nạ bit hiện tại.
Current_Vendor_Specific_Trace_Mask 4 octet Cho biết chế độ cài đặt mặt nạ bit hiện tại.
BQR_Report_interval 4 octet Cho biết chế độ cài đặt mặt nạ bit hiện tại.
Current_Vendor_Specific_Trace_Mask 4 octet Chế độ cài đặt BQR_Report_interval. Đây phải là giá trị tối thiểu giữa BQR_Minimum_Report_Interval * Report_interval_multiple hoặc khoảng thời gian hỗ trợ tối đa của bộ điều khiển.

Lệnh vùng đệm âm thanh động

Bộ đệm âm thanh động giúp giảm hiện tượng âm thanh bị giật bằng cách thay đổi kích thước bộ đệm âm thanh trong bộ điều khiển Bluetooth dựa trên nhiều trường hợp.

OCF: 0x15F

Có được khả năng về thời gian vùng đệm âm thanh

OCF phụ: 0x01

Sử dụng lệnh này để lấy khả năng thời gian đệm âm thanh từ bộ điều khiển Bluetooth.

Tham số lệnh Kích thước Mục đích
Không áp dụng Danh sách tham số Lệnh trống

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Dynamic_Audio_Buffer_opcode 1 octet 0x01 – Lấy thời gian đệm âm thanh
Audio_Codec_Type_Supported 4 octet Mặt nạ bit cho các loại bộ mã hoá và giải mã được hỗ trợ
Bit 0 – SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bit 5-31 được dành riêng
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 octet Thời gian đệm mặc định của loại bộ mã hoá và giải mã Bit 0 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này phải bằng 0 nếu loại codec Bit 0 không được hỗ trợ.
Đơn vị: mili giây
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 octet Thời gian đệm tối đa của loại bộ mã hoá và giải mã Bit 0 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này phải bằng 0 nếu loại codec Bit 0 không được hỗ trợ.
Đơn vị: mili giây
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 octet Thời gian đệm tối thiểu của loại bộ mã hoá và giải mã Bit 0 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này phải bằng 0 nếu loại codec Bit 0 không được hỗ trợ.
Đơn vị: mili giây
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 octet Thời gian đệm mặc định của loại bộ mã hoá và giải mã Bit 1 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này phải là 0 nếu loại codec Bit 1 không được hỗ trợ.
Đơn vị: mili giây
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 octet Thời gian đệm tối đa của loại bộ mã hoá và giải mã Bit 1 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này phải là 0 nếu loại codec Bit 1 không được hỗ trợ.
Đơn vị: mili giây
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 octet Thời gian đệm tối thiểu của loại bộ mã hoá và giải mã Bit 1 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này phải là 0 nếu loại codec Bit 1 không được hỗ trợ.
Đơn vị: mili giây
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 octet Thời gian đệm mặc định của loại bộ mã hoá và giải mã Bit 31 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này sẽ là 0 nếu loại codec Bit 31 không được hỗ trợ.
Đơn vị: mili giây
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octet Thời gian đệm tối đa của loại bộ mã hoá và giải mã Bit 31 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này sẽ là 0 nếu loại codec Bit 31 không được hỗ trợ.
Đơn vị: mili giây
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 octet Thời gian đệm tối thiểu của loại codec Bit 31 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này sẽ là 0 nếu loại codec Bit 31 không được hỗ trợ.
Đơn vị: mili giây

Đặt thời gian vùng đệm âm thanh

OCF phụ: 0x02

Sử dụng lệnh này để đặt thời gian đệm âm thanh cho bộ điều khiển Bluetooth.

Tham số lệnh Kích thước Mục đích
Audio_Codec_Buffer_Time 2 octet Thời gian bộ nhớ đệm âm thanh được yêu cầu cho bộ mã hoá và giải mã hiện đang dùng.
Đơn vị: mili giây

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Dynamic_Audio_Buffer_opcode 1 octet 0x02 – Đặt thời gian vùng đệm âm thanh
Audio_Codec_Buffer_Time 2 octet Thời gian đệm âm thanh hiện tại trong bộ điều khiển Bluetooth.
Đơn vị: mili giây

Sự kiện HCI (tuỳ theo nhà cung cấp)

Trong một số trường hợp, bạn phải có các sự kiện HCI dành riêng cho nhà cung cấp. Tham khảo Hình 5.4 trên trang 1897 của Quy cách BT Core 5.2. Thông số sự kiện 0 sẽ luôn chứa mã sự kiện phụ đầu tiên, dựa vào đó, phần còn lại của sự kiện HCI sẽ được giải mã.

Thông số sự kiện Kích thước Mục đích
HCI_vendor_specific_event_code 1 octet 0xFF
sub_event_code 1 octet Mã sự kiện phụ sẽ có kích thước 1 octet, byte ngay sau Độ dài tham số trong gói sự kiện HCI.

Sự kiện phụ về việc vượt ngưỡng lưu trữ

Sự kiện này cho biết ngưỡng lưu trữ đã bị vượt quá.

Mã sự kiện phụ = 0x54

Tham số sự kiện phụ Kích thước Mục đích
Không có

Sự kiện phụ thay đổi trạng thái quảng cáo nhiều lần LE

Sự kiện này cho biết một phiên bản quảng cáo đã thay đổi trạng thái. Hiện tại, sự kiện này chỉ được dùng để cho biết phiên bản quảng cáo nào đã bị dừng do kết nối.

Mã sự kiện phụ = 0x55

Tham số sự kiện phụ Kích thước Mục đích
Advertising_instance 1 octet Xác định phiên bản quảng cáo cụ thể
Giá trị hợp lệ là từ 0 đến max_advt_instances-1
State_Change_Reason 1 octet 0x00: Đã nhận được yêu cầu kết nối
Connection_handle 2 octet Xác định kết nối khiến phiên bản advt bị vô hiệu hoá (0xFFFF nếu không hợp lệ)

Sự kiện phụ theo dõi quảng cáo LE

Sự kiện này cho biết thời điểm một nhà quảng cáo được tìm thấy hoặc bị mất.

Mã sự kiện phụ = 0x56

Tham số sự kiện phụ Kích thước Mục đích
APCF_Filter_Index 1 octet Chỉ mục bộ lọc (0, max_filter-1)
Advertiser_State 1 octet 0x00: Tìm thấy nhà quảng cáo
0x01: Không tìm thấy nhà quảng cáo
Advt_Info_Present 1 octet 0x00: Có thông tin về nhà quảng cáo (Advt_Info)
0x01: Không có thông tin về nhà quảng cáo (Advt_Info)
Advertiser_Address 6 octet Địa chỉ công khai hoặc ngẫu nhiên
Advertiser_Address_Type 1 octet 0x00: Địa chỉ công khai
0x01: Địa chỉ ngẫu nhiên
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

Sự kiện phụ thông tin gỡ lỗi của bộ điều khiển

Sự kiện này được Bộ điều khiển dùng để cung cấp thông tin gỡ lỗi nhị phân cho một máy chủ lưu trữ.

Mã sự kiện phụ = 0x57

Tham số sự kiện phụ Kích thước Mục đích
debug_block_byte_offset_start 2 octet Gỡ lỗi độ lệch byte của khối từ đầu
last_block 1 octet 0x00: Có thêm dữ liệu gỡ lỗi
0x01: Khối nhị phân cuối cùng; không có thêm dữ liệu gỡ lỗi
cur_pay_load_sz 2 octet Kích thước khối nhị phân trong một sự kiện hiện tại
Debug_Data Biến Gỡ lỗi dữ liệu của cur_payload_sz

Sự kiện phụ Báo cáo chất lượng Bluetooth

Sự kiện này cho biết một trong những điều sau: đã xảy ra sự kiện chất lượng Bluetooth, bộ điều khiển đã tải dấu vết thông báo LMP/LL và dấu vết lập lịch Bluetooth Multi-link/Coex lên hoặc bộ điều khiển đã kết xuất dữ liệu thông tin gỡ lỗi.

Tham số sự kiện phụ Kích thước Mục đích
Quality_Report_Id 1 octet 0x01: Báo cáo chất lượng ở chế độ giám sát.
0x02: Sắp đến LSTO.
0x03: Âm thanh A2DP bị giật.
0x04: (e)SCO Voice Choppy.
0x05 ~ 0x06: Đã đặt trước.
0x07: Âm thanh LE bị giật.
0x08: Lỗi kết nối.
0x09 ~ 0xFF: Dành riêng.
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
0x10: DM1
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D ~ 0x50: Reserved
0x51: ISO packet
0x52: 1M PHY
0x53: 2M PHY
0x54: Codec PHY S=2
0x55: Codec PHY S=8
0x56 ~ 0xFF: Reserved
Connection_Handle 2 octet Xử lý kết nối ACL/(e)SCO/ISO.
Connection_Role 1 octet Vai trò thực hiện cho mối kết nối.
0x00: Trung tâm
0x01: Ngoại vi
0x02 ~ 0xFF: Dành riêng.
TX_Power_Level 1 octet Cấp nguồn truyền hiện tại cho Connection_Handle đã chỉ định.

Giá trị này phải giống với giá trị mà bộ điều khiển phản hồi lệnh HCI_Read_Transmit_Power_Level HCI.

RSSI 1 octet [tính bằng dBm]

Giá trị Chỉ báo cường độ tín hiệu đã nhận (RSSI) cho Connection_Handle được chỉ định.
Giá trị này phải là giá trị tuyệt đối về cường độ tín hiệu của receiver.
Phạm vi: -127 đến +20

SNR 1 octet [dB]

Giá trị Hệ số cường độ tín hiệu so với độ nhiễu (SNR) cho Connection_Handle được chỉ định.
Bộ điều khiển sẽ cung cấp SNR trung bình của tất cả các kênh mà đường liên kết sử dụng.

Unused_AFH_Channel_Count 1 octet Cho biết số lượng kênh không dùng trong AFH_channel_map.
0x4F ~ 0xFF: Dành riêng.
AFH_Select_Unideal_Channel_Count 1 octet Cho biết số lượng kênh bị nhiễu và có chất lượng kém, nhưng vẫn được chọn cho AFH.
Số lượng kênh tối thiểu mà quy cách Bluetooth cho phép là 20. Vì vậy, ngay cả khi tất cả 79 kênh đều bị nhiễu và có chất lượng kém, bộ điều khiển vẫn cần chọn ít nhất 20 kênh cho AFH.
LSTO 2 octet Chế độ cài đặt hiện tại về thời gian chờ giám sát liên kết.
Thời gian = N * 0,625 mili giây
Phạm vi thời gian: 0,625 mili giây đến 40,9 giây
Connection_Piconet_Clock 4 octet Đồng hồ Piconet cho Connection_Handle được chỉ định.
Giá trị này phải giống với giá trị mà bộ điều khiển phản hồi lệnh HCI HCI_Read_Clock có tham số "Which_Clock" là 0x01 (Đồng hồ Piconet).
Đơn vị: N * 0,3125 mili giây (1 đồng hồ Bluetooth)
Retransmission_Count 4 octet Số lần truyền lại kể từ sự kiện gần đây nhất.
Số lượt này sẽ được đặt lại sau khi báo cáo cho người tổ chức.
No_RX_Count 4 octet Không có số lượng RX kể từ sự kiện gần đây nhất.
Số lượng này sẽ tăng lên khi không có gói nào được nhận tại khung giờ đã lên lịch hoặc gói nhận được bị hỏng.
Số lượt này sẽ được đặt lại sau khi báo cáo cho người tổ chức.
NAK_Count 4 octet Số lượng NAK (Negative Acknowledge) kể từ sự kiện gần đây nhất.
Số lượt này sẽ được đặt lại sau khi báo cáo cho người tổ chức.
Last_TX_ACK_Timestamp 4 octet Dấu thời gian của TX ACK gần đây nhất. Giá trị này dựa trên Đồng hồ Bluetooth của trung tâm piconet (CLK).
Đơn vị: N * 0,3125 mili giây (1 đồng hồ Bluetooth)
Flow_Off_Count 4 octet Số lần bộ điều khiển nhận được lệnh Flow-off (DỪNG) kể từ sự kiện gần đây nhất.
Số lượt này sẽ được đặt lại sau khi báo cáo cho người tổ chức.
Last_Flow_On_Timestamp 4 octet Dấu thời gian của lần Flow-on (GO) gần đây nhất. Đồng hồ này dựa trên Đồng hồ Bluetooth của trung tâm piconet (CLK).
Đơn vị: N * 0,3125 mili giây (1 đồng hồ Bluetooth)
Buffer_Overflow_Bytes 4 octet [tính bằng byte]

Số lần tràn bộ đệm kể từ sự kiện gần đây nhất.
Bộ điều khiển đếm số byte dữ liệu bị loại bỏ.
Số lượng này sẽ được đặt lại sau khi báo cáo cho máy chủ.

Buffer_Underflow_Bytes 4 octet [tính bằng byte]

Số lần tràn bộ đệm kể từ sự kiện gần đây nhất.
Số lượng này sẽ được đặt lại sau khi báo cáo cho máy chủ.

bdaddr 6 octet Địa chỉ thiết bị từ xa
cal_failed_item_count 1 octet Số lượng mặt hàng không hiệu chuẩn được
TX_Total_Packets 4 octet Số lượng gói được gửi đi.
TX_UnAcked_Packets 4 octet Số lượng gói không nhận được tín hiệu xác nhận.
Số lượt này sẽ được đặt lại sau khi báo cáo cho máy chủ.
TX_Flushed_Packets 4 octet Số lượng gói không được gửi đi theo điểm xả.
Số lượt này sẽ được đặt lại sau khi báo cáo cho máy chủ.
TX_Last_Subevent_Packets 4 octet Số lượng gói mà Lớp liên kết truyền một PDU dữ liệu CIS trong sự kiện phụ cuối cùng của một sự kiện CIS.
Số lượt này sẽ được đặt lại sau khi báo cáo cho máy chủ.
Giá trị bằng 0 nếu không có giá trị hợp lệ cho đường liên kết.
CRC_Error_Packets 4 octet Số lượng gói đã nhận được có lỗi CRC kể từ sự kiện gần đây nhất.
Số lượt này sẽ được đặt lại sau khi báo cáo cho máy chủ.
RX_Duplicate_Packets 4 octet Số lượng gói trùng lặp (truyền lại) nhận được kể từ sự kiện gần đây nhất.
Số lượt này sẽ được đặt lại sau khi báo cáo cho máy chủ.
RX_Unreceived_Packets 4 octet Số lượng gói chưa nhận được bằng với thông số của lệnh LE READ ISO Link Quality (xem Bluetooth core Specification Version 5.4). Các luồng liên kết là CIS và BIS.
Khi giá trị này tăng lên, Lớp liên kết sẽ không nhận được tải trọng cụ thể theo điểm xả của nó (trên CIS) hoặc vào cuối sự kiện mà nó được liên kết (trên BIS; xem Thông số kỹ thuật cốt lõi của Bluetooth phiên bản 5.4 Tập 6 Phần B, Mục 4.4.6.6).
Coex_Info_Mask 2 octet Bit 0 – CoexInvolvement: Đặt để cho biết các hoạt động đồng tồn tại bị nghi ngờ có liên quan khi báo cáo này được tạo (ví dụ: A2DP Chops và Approaching LSTO).
Bit 1 – WL 2G Radio Active: Đặt để cho biết Radio WLAN 2G đang hoạt động.
Bit 2 – WL 2G Connected (Đã kết nối WL 2G): Được đặt để cho biết Radio WLAN 2G đang hoạt động và đã kết nối.
Bit 3 – WL 5G/6G Radio Active: Đặt để cho biết WLAN 5G/6G Radio đang hoạt động.
Bit 4-15 – Reserved
Thông số dành riêng cho nhà cung cấp (tổng độ dài tham số – TBD) * octet Để nhà cung cấp bộ điều khiển có được nhiều thông số cụ thể của nhà cung cấp.

Mã sự kiện phụ = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

Sự kiện này cho biết Bluetooth HAL hoặc bộ điều khiển gặp phải một lỗi nghiêm trọng và cần ngăn xếp Bluetooth ghi lại tình huống này rồi khởi động lại. Bộ điều khiển phải gửi Root_Inflammation_Event đến ngăn xếp Bluetooth trước khi gửi phân đoạn đầu tiên của các sự kiện thông tin gỡ lỗi trong mọi trường hợp.

Tham số Error_Code chứa mã lỗi được báo cáo từ HAL/Bộ điều khiển, 0 nếu đó là lỗi cụ thể của nhà cung cấp chipset. Vendor_Specific_Error_Code chứa mã lỗi dành riêng cho nhà cung cấp chipset từ HAL/Bộ điều khiển. Bạn nên đặt giá trị này thành 0 nếu tham số Error_Code không phải là 0. Các tham số Error_Code và Vendor_Specific_Error_Code không được có giá trị 0.

Tham số sự kiện phụ Kích thước Mục đích
Quality_Report_Id 1 octet 0x00 ~ 0x04: Dành riêng.
0x05: Viêm chân răng.
0x06 ~ 0xFF: Đã đặt trước.
Error_Code 1 octet 0x00: Mã lỗi dành riêng cho nhà cung cấp chipset được đưa vào.
0x01 ~ 0xFF: Đã xảy ra lỗi bộ điều khiển. Hãy xem Phần D, Mã lỗi trong Thông số kỹ thuật Bluetooth [Tập 2] để biết danh sách mã lỗi và nội dung mô tả.
Vendor_Specific_Error_Code 1 octet 0x00: Không có mã lỗi cụ thể của nhà cung cấp chipset.
0x01 ~ 0xFF: Mã lỗi dành riêng cho nhà cung cấp chipset.
Thông số dành riêng cho nhà cung cấp (Tổng độ dài tham số – 4) * octet Để nhà cung cấp bộ điều khiển có được nhiều thông số cụ thể của nhà cung cấp.

Mã sự kiện phụ = 0x58 [Quality_Report_Id = 0x06, Sự kiện giám sát năng lượng]

Sự kiện này cung cấp thông tin tổng quan về mức tiêu thụ điện năng và trạng thái hoạt động của bộ điều khiển Bluetooth trong một khoảng thời gian cụ thể. Sự kiện này giúp các nhà phát triển và kỹ sư phân tích cách bộ điều khiển quản lý nguồn điện, xác định những hoạt động tiêu thụ nhiều năng lượng nhất và khắc phục các vấn đề liên quan đến nguồn điện.

Các thông số trong báo cáo theo dõi các chỉ số chính, bao gồm:

  • Mức tiêu thụ dòng điện trung bình hiện tại: Tổng dòng điện mà bộ điều khiển sử dụng.
  • Thời gian ở các trạng thái khác nhau: Tổng thời gian (tính bằng mili giây) mà bộ điều khiển ở trạng thái không hoạt động (ngủ/tiêu thụ ít điện năng) so với trạng thái đang hoạt động (kết nối, truyền hoặc nhận dữ liệu).
  • Số lượt chuyển đổi trạng thái: Số lần bộ điều khiển chuyển đổi giữa trạng thái rảnh và trạng thái hoạt động.
  • Thời gian ở các trạng thái vô tuyến cụ thể: Các chỉ số riêng biệt cho thời gian truyền (Tx) và nhận (Rx) cho cả các đường liên kết BR/EDR (Bluetooth Classic) và LE (Bluetooth năng lượng thấp).
  • Mức công suất truyền trung bình: Công suất trung bình (tính bằng dBm) được dùng để truyền trên các đường liên kết BR/EDR và LE.
  • Hoạt động chi tiết của chuỗi: Báo cáo về thời gian dành cho các chuỗi truyền hoặc nhận đang hoạt động, phân biệt giữa các hoạt động một chuỗi và hai chuỗi, cũng như giữa bộ khuếch đại công suất bên trong (iPA) và bên ngoài (ePA).
  • Thời gian quét hoạt động: Thời gian mà bộ điều khiển dành cho việc chủ động quét các thiết bị BR/EDR và LE.

Bằng cách kiểm tra các tham số này, các kỹ sư có thể hiểu rõ về hiệu suất năng lượng của bộ điều khiển và tối ưu hoá hiệu suất của bộ điều khiển.

Tham số sự kiện phụ Kích thước Mục đích
Quality_Report_Id 1 octet 0x06: Giám sát năng lượng
Average_Current_Consumption 2 octet [tính bằng mA] Mức tiêu thụ dòng điện trung bình của tất cả các hoạt động mà bộ điều khiển tiêu thụ
Idle_Total_Time (ngủ) 4 octet [tính bằng mili giây] Tổng thời gian ở trạng thái rảnh (trạng thái pin yếu, ngủ).
Idle_Sate_Enter_Count 4 octet Cho biết số lần bộ điều khiển chuyển sang trạng thái rảnh.
Active_Total_Time 4 octet [tính bằng mili giây] Tổng thời gian ở trạng thái hoạt động (truy vấn, phân trang, lưu lượng truy cập ACL/SCO/eSCO/BIS/CIS, xử lý mọi tác vụ).
Active_State_Enter_Count 4 octet Cho biết số lần bộ điều khiển chuyển sang trạng thái hoạt động.
BR_RDR_Tx_Total_Time 4 octet [in ms] Total time in the BR/EDR specific Tx(Transmitting for ACL/SCO/eSCO traffic)state.
BR_RDR_Tx_State_Enter_Count 4 octet Cho biết số lần bộ điều khiển chuyển sang trạng thái Tx cụ thể của BR/EDR.
BR_RDR_Tx_Average_Power_Level 1 octet [tính bằng dBm] Mức công suất truyền trung bình của tất cả(các) đường liên kết BR/EDR
BR_RDR_Rx_Total_Time 4 octet [in ms] Tổng thời gian ở trạng thái Rx (Nhận lưu lượng truy cập từ ACL/SCO/eSCO) cụ thể của BR/EDR.
BR_RDR_Rx_State_Enter_Count 4 octet [in ms] Cho biết số lần bộ điều khiển chuyển sang trạng thái Rx cụ thể của BR/EDR.
LE_Tx_Total_Time 4 octet [in ms] Tổng thời gian ở trạng thái Tx (Truyền cho lưu lượng quảng cáo ACL/BIS/CIS hoặc LE) cụ thể của LE.
LE_Tx_State_Enter_Count 4 octet Cho biết số lần bộ điều khiển chuyển sang trạng thái Rx cụ thể của BR/EDR.
LE_Tx_Average_Power_Level 1 octet [dBm] Mức công suất truyền trung bình của tất cả(các) đường liên kết LE.
LE_Rx_Total_Time 4 octet [in ms] Tổng thời gian ở trạng thái Rx cụ thể của LE (Nhận từ lưu lượng truy cập quét ACL/BIS/CIS hoặc LE).
LE_Rx_State_Enter_Count 4 octet [in ms] Cho biết số lần bộ điều khiển chuyển sang trạng thái Rx cụ thể của LE
Report_Time_Duration (Tổng thời gian) 4 octet [theo mili giây] Tổng thời lượng để thu thập thông tin liên quan đến nguồn điện.
RX_Active_One_Chain_Time 4 octet [tính bằng mili giây] Khoảng thời gian RX hoạt động trong một chuỗi
RX_Active_Two_Chain_Time 4 octet [tính bằng mili giây] Khoảng thời gian RX hoạt động trong 2 chuỗi
TX_iPA_Active_One_Chain_Time 4 octet [tính bằng mili giây] Khoảng thời gian TX nội bộ hoạt động trong một chuỗi
TX_iPA_Active_Two_Chain_Time 4 octet [tính bằng mili giây] Khoảng thời gian TX nội bộ hoạt động trong hai chuỗi
TX_ePA_Active_One_Chain_Time 4 octet [tính bằng mili giây] Khoảng thời gian TX bên ngoài hoạt động trong một chuỗi
TX_ePA_Active_Two_Chain_Time 4 octet [tính bằng mili giây] Khoảng thời gian TX bên ngoài hoạt động trong hai chuỗi
BREDR_RX_Active_Scan_total_Time 4 octet [tính bằng mili giây] Khoảng thời gian (mili giây) cho thời gian hoạt động RX quét BR/EDR
LE_RX_Active_Scan_total_Time 4 octet [tính bằng mili giây] Khoảng thời gian (mili giây) cho thời gian hoạt động của quá trình quét LE RX

Mã sự kiện phụ = 0x58 [Quality_Report_Id = 0x09~0x0A, Advanced RF stats event]

Sự kiện Thống kê RF (Tần số vô tuyến) nâng cao của Bluetooth cung cấp các chỉ số hiệu suất chi tiết về hành vi vô tuyến của bộ điều khiển Bluetooth. Sự kiện này có thể được kích hoạt theo 2 cách:

  • Theo điều kiện kích hoạt (0x09): Báo cáo một lần được gửi để phản hồi một lệnh cụ thể.
  • Theo dõi (0x0A): Bộ điều khiển định kỳ gửi báo cáo theo một khoảng thời gian cụ thể.

Về cơ bản, các thông số của sự kiện là bộ đếm gói theo dõi nhiều hành vi vô tuyến trong một khoảng thời gian cụ thể.

Các chỉ số chính và mục đích của chúng
  • Truyền số liệu thống kê về nguồn điện: Các bộ đếm này theo dõi các gói được gửi bằng nhiều cấu hình nguồn điện, phân biệt giữa bộ khuếch đại nguồn điện bên trong (iPA) và bên ngoài (ePA) cũng như nhiều chế độ đa dạng ăng-ten (Div) hoặc tạo chùm tia (BF). Điều này giúp xác định chế độ cài đặt nguồn và ăng-ten nào đang được sử dụng thường xuyên nhất.
  • Các khoảng chỉ báo cường độ tín hiệu nhận được (RSSI): Các thông số này phân loại các gói nhận được dựa trên cường độ tín hiệu của chúng. Bằng cách cung cấp số lượng gói trong các dải RSSI cụ thể (ví dụ: dưới -90 dBm, -70 đến -75 dBm), báo cáo này cho thấy rõ chất lượng đường liên kết. Số lượng lớn trong các nhóm tín hiệu "yếu" (ví dụ: < -90 dBm) cho biết kết nối kém.
  • Độ lệch RSSI: Chỉ số này đo lường sự khác biệt về cường độ tín hiệu giữa hai ăng-ten thu (nếu có). Các bộ đếm theo dõi số lượng gói có độ lệch RSSI trong các phạm vi khác nhau. Một mức chênh lệch lớn (ví dụ: >11 dBm) có thể cho thấy tình trạng nhiễu hoặc vật cản vật lý, vì một ăng-ten đang nhận được tín hiệu mạnh hơn nhiều so với ăng-ten còn lại.
  • Chuyển đổi ăng-ten và truyền lại: Báo cáo này cho biết tần suất bộ điều khiển chuyển đổi giữa các ăng-ten và theo dõi các gói được truyền lại (ReTX). Số lượng lớn các lần truyền lại thường cho thấy kết nối yếu hoặc không đáng tin cậy, khiến các gói phải được gửi lại.
  • Chất lượng kênh: Các thông số này cung cấp thông tin tóm tắt cấp cao về tình trạng của các kênh liên lạc khác nhau, phân loại chúng là "Tốt", "Ổn", "Kém" hoặc "Rất kém" dựa trên RSSI của chúng. Điều này giúp bạn nắm được thông tin tổng quan ngay lập tức về môi trường RF.
  • Hàng đợi bộ nhớ đệm TX: Phần này theo dõi số lượng gói đang chờ trong bộ nhớ đệm truyền của bộ điều khiển cho các loại đường liên kết khác nhau, chẳng hạn như ACL (Đường liên kết logic hướng kết nối không đồng bộ), LECONN (Kết nối LE) và LEISOC (Đồng bộ LE). Số lượng bộ nhớ đệm cao có thể cho thấy một nút thắt hoặc vấn đề với dữ liệu truyền từ máy chủ đến bộ điều khiển.
Tham số sự kiện phụ Kích thước Mục đích
Quality_Report_Id 1 octet 0x09: Advance RF Stats By Trigger
0x0A: Advance RF Stats By Monitor
Extension_info 1 octet Thông tin về phiên bản BQR.
0x01 cho BQRv6
0x02 cho BQRv7
Report_Time_Period 4 octet Khoảng thời gian thu thập thông tin về hiệu suất. Đơn vị: mili giây
TX_Power_iPA_BF 4 octet Bộ đếm gói của iPA BF
TX_Power_ePA_BF 4 octet Bộ đếm gói của ePA BF
TX_Power_iPA_Div 4 octet Bộ đếm gói của ePA Div
TX_Power_ePA_Div 4 octet Bộ đếm gói của ePA Div
RSSI_chain_50 4 octet Bộ đếm gói của chuỗi RSSI > -50 dBm
RSSI_chain_50_55 4 octet Bộ đếm gói của chuỗi RSSI trong khoảng từ -50 dBm đến >-55 dBm
RSSI_chain_55_60 4 octet Bộ đếm gói của chuỗi RSSI trong khoảng -55 dBm ~ >-60 dBm
RSSI_chain_60_65 4 octet Bộ đếm gói của chuỗi RSSI trong khoảng từ -60 dBm đến >-65 dBm
RSSI_chain_65_70 4 octet Bộ đếm gói của chuỗi RSSI trong khoảng từ -65 dBm đến >-70 dBm
RSSI_chain_70_75 4 octet Bộ đếm gói của chuỗi RSSI trong khoảng từ -70 dBm đến >-75 dBm
RSSI_chain_75_80 4 octet Bộ đếm gói của chuỗi RSSI trong khoảng -75 dBm ~ >-80 dBm
RSSI_chain_80_85 4 octet Bộ đếm gói của chuỗi RSSI trong khoảng -80 dBm ~ >-85 dBm
RSSI_chain_85_90 4 octet Bộ đếm gói của chuỗi RSSI trong khoảng từ -85 dBm đến >-90 dBm
RSSI_chain_90 4 octet Bộ đếm gói của chuỗi RSSI < -90 dBm
RSSI_delta_2 4 octet Bộ đếm gói của RSSI delta < 2 dBm
RSSI_delta_2_5 4 octet Bộ đếm gói có độ chênh lệch RSSI từ 2 dBm đến 5 dBm
RSSI_delta_5_8 4 octet Bộ đếm gói có độ chênh lệch RSSI từ 5 dBm đến 8 dBm
RSSI_delta_8_11 4 octet Bộ đếm gói có độ chênh lệch RSSI từ 8 dBm đến 11 dBm
RSSI_delta_11 4 octet Bộ đếm gói của RSSI delta > 11 dBm
Antenna_Switch_Count 4 octet Bộ đếm gói của sự kiện chuyển đổi ăng-ten
ReTX_iPA_BF 4 octet Bộ đếm gói ReTX_iPA_BF trong khoảng thời gian gần đây nhất
ReTX_ePA_BF 4 octet Bộ đếm gói ReTX_ePA_BF trong khoảng thời gian gần đây nhất
ReTX_iPA_Div 4 octet Bộ đếm gói ReTX_iPA_Div trong khoảng thời gian gần đây nhất
ReTX_ePA_Div 4 octet Bộ đếm gói ReTX_ePA_Div trong khoảng thời gian gần đây nhất
Channel_count_Good 1 octet Số lượng kênh có RSSI nằm trong Bin-1 (<-90)
Channel_count_OK 1 octet Số lượng kênh có RSSI nằm trong Bin-2 (-90~-76)
Channel_count_Bad 1 octet Số lượng kênh có RSSI nằm trong Bin-3 (-76~-50)
Channel_count_VeryBad 1 octet Số lượng kênh có RSSI nằm trong Bin-4 (>-50)
TX_buffer_Queue_Count 4 octet Bộ đếm trạng thái hàng đợi đệm – bộ đệm TX của bộ điều khiển trong khoảng thời gian gần đây nhất [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd

Mã sự kiện phụ = 0x58 [Quality_Report_Id = 0x0B~0x0C, Sự kiện Giám sát trạng thái bộ điều khiển]

Sự kiện Giám sát trạng thái hoạt động của Bộ điều khiển Bluetooth cung cấp thông tin tóm tắt về trạng thái hoạt động của bộ điều khiển. Sự kiện này có thể được kích hoạt theo 2 cách:

  • Theo điều kiện kích hoạt (0x09): Báo cáo một lần được gửi để phản hồi một lệnh cụ thể.
  • Theo dõi (0x0A): Bộ điều khiển định kỳ gửi báo cáo theo một khoảng thời gian cụ thể.

Sự kiện Giám sát tình trạng tay điều khiển Bluetooth là một công cụ chẩn đoán cung cấp thông tin tóm tắt về trạng thái hoạt động của tay điều khiển. Sự kiện này thuộc khuôn khổ Báo cáo chất lượng Bluetooth (BQR) và được dùng để gỡ lỗi các vấn đề về khả năng kết nối, quản lý nguồn và thời gian. Bạn có thể gửi báo cáo một lần hoặc định kỳ để liên tục theo dõi.

Các chỉ số chính và mục đích của chúng
  • Bộ đếm gói HCI: Sự kiện này theo dõi tổng số gói được gửi từ Máy chủ đến Bộ điều khiển và ngược lại. Các bộ đếm này rất cần thiết để gỡ lỗi các vấn đề với hoạt động truyền tải Giao diện trình kiểm soát máy chủ (HCI), đây là kênh giao tiếp giữa ngăn xếp phần mềm và chip bộ điều khiển Bluetooth.
  • Độ dài gói: Sự kiện này báo cáo độ dài của gói HCI cuối cùng đã gửi và nhận. Điều này giúp xác minh rằng dữ liệu đang được truyền chính xác và không có vấn đề nào về kích thước ngoài dự kiến.
  • Số lượng tín hiệu đánh thức: Báo cáo này cho biết tổng số lần các chân BT_WakeHOST_Wake được xác nhận. Các tín hiệu vật lý này rất quan trọng đối với việc quản lý nguồn điện, vì chúng được dùng để đánh thức các thực thể tương ứng từ trạng thái công suất thấp. Việc theo dõi các số liệu này giúp gỡ lỗi các vấn đề liên quan đến nguồn điện, chẳng hạn như tình trạng thức dậy bất ngờ hoặc không chuyển sang chế độ ngủ được.
  • Dấu thời gian: Sự kiện này cung cấp một số dấu thời gian, bao gồm cả thời gian của tín hiệu đánh thức gần đây nhất và lần đặt lại HCI gần đây nhất. Các dấu thời gian này giúp khắc phục sự cố liên quan đến thời gian và cung cấp một điểm tham chiếu cho thời điểm xảy ra một số sự kiện.
  • Đồng hồ giám sát: Một cờ cụ thể cho biết liệu sự kiện có được tạo dưới dạng cảnh báo sớm rằng đồng hồ giám sát của bộ điều khiển sắp hết hạn hay không. Đây là một cảnh báo quan trọng về khả năng bộ điều khiển bị treo hoặc gặp trục trặc.
  • Trạng thái liên kết: Báo cáo này tóm tắt trạng thái hiện tại của các kết nối đang hoạt động, bao gồm tổng số liên kết BR/EDR, LECIS (Luồng đẳng thời được kết nối). Công cụ này cũng cho biết liệu có đường liên kết SCO (Định hướng kết nối đồng bộ) nào đang hoạt động hay không. Thông tin này cung cấp thông tin tổng quan về mức tải kết nối hiện tại của bộ điều khiển.
Tham số sự kiện phụ Kích thước Mục đích
Quality_Report_Id 1 Octet 0xB~0xC
0x0B: báo cáo một lần hoặc báo cáo dựa trên sự kiện
0x0C: báo cáo định kỳ.
Packet_Count_Host_to_Controller 4 Octet Tổng số gói được gửi từ Máy chủ đến Bộ điều khiển qua giao thức truyền dữ liệu HCI. Trường này được dùng cho mục đích gỡ lỗi các vấn đề về HCI (ví dụ: UART). Hành vi: các bộ đếm sẽ đặt lại khi bộ điều khiển nhận được lệnh đặt lại HCI.
Packet_Count_Controller_to_Host 4 Octet Tổng số gói Sự kiện HCI được gửi đến Máy chủ. Trường này được dùng cho mục đích gỡ lỗi HCI (ví dụ: UART). Hành vi: các bộ đếm sẽ đặt lại khi bộ điều khiển nhận được lệnh đặt lại HCI.
Last_Packet_Length_Host_to_Controller 2 octet Độ dài của gói HCI cuối cùng được gửi đến UART của máy chủ. Lưu ý: Độ dài gói HCI tối đa là 2 octet (Bao gồm HCI, ACL, SCO, ISO)
Last_Packet_Length_Controller_To_host 2 octet Độ dài của gói HCI gần đây nhất nhận được từ UART của Máy chủ. Lưu ý: Độ dài gói HCI tối đa là 2 octet (Bao gồm HCI, ACL, SCO, ISO)
Total_BT_Wake_Count 4 Octet Tổng số lượt xác nhận ghim BT_Wake của thực thể Máy chủ. Trường này đóng vai trò là một công cụ chẩn đoán để gỡ lỗi các vấn đề liên quan đến nguồn điện. Hành vi: các bộ đếm sẽ đặt lại khi bộ điều khiển nhận được lệnh đặt lại HCI.
Total_HOST_Wake_Count 4 Octet Tính toán tổng hợp các xác nhận ghim Host_Wake do Bộ điều khiển khởi tạo. Trường này đóng vai trò là một công cụ chẩn đoán để gỡ lỗi các vấn đề liên quan đến nguồn điện. Hành vi: các bộ đếm sẽ đặt lại khi bộ điều khiển nhận được lệnh đặt lại HCI.
Last_BT_Wake_TimeStamp 4 Octet Dấu thời gian gần đây nhất khi Máy chủ xác nhận BT_Wake Pin.Trường này được triển khai cho mục đích gỡ lỗi các vấn đề về Nguồn.
Last_HOST_Wake_TimeStamp 4 Octet Dấu thời gian gần đây nhất khi bộ điều khiển xác nhận chân Host_Wake. Trường này được dùng để gỡ lỗi các vấn đề về nguồn điện.
Reset_Timestamp 4 Octet Dấu thời gian cho biết thời điểm hoàn tất lệnh Đặt lại HCI gần đây nhất. Trường này được sử dụng cho mục đích rõ ràng là hỗ trợ giải quyết các vấn đề liên quan đến thời gian. Đây sẽ là điểm ghi nhận ban đầu để tham chiếu tất cả các mục khác.
Current_Timestamp 4 Octet Thời gian hiện tại khi sự kiện này được tạo. Trường này được dùng cho mục đích khắc phục sự cố về chênh lệch thời gian. Đây sẽ là điểm ghi nhận điều kiện kích hoạt mà tất cả các phần tử khác tham chiếu đến.
Is_WatchDog_Timer_About_To_Expire 4 Octet Cờ cho biết sự kiện trạng thái sức khoẻ này do bộ điều khiển tạo ra như một cảnh báo sớm về thời gian hết hạn của chương trình giám sát. Dấu thời gian hiện tại dùng để cho biết thời điểm xảy ra.
Coex_Status_Mask 2 octet Bit 0 – Dành riêng
Total_Links_BR_EDR_LE_Active 1 Octet Tổng số đường liên kết BR/EDR/LE ở trạng thái Đang hoạt động.
Total_Links_BR_EDR_Sniff 1 Octet Tổng số đường liên kết BR/EDR ở trạng thái Sniff/Idle.
Total_Links_CIS 1 Octet Tổng số đường liên kết của ISO.
Is_SCO_Active 1 Octet Chỉ báo để kiểm tra xem đường liên kết SCO hiện có được kích hoạt hay không.
Tham số sự kiện phụ Kích thước Mục đích
Quality_Report_Id 1 octet 0x00 ~ 0x10: Dành riêng.
0x11: LMP/LL message trace.
0x12: Dấu vết lập lịch Coex/Đa liên kết Bluetooth.
0x13: Tệp kết xuất dữ liệu Thông tin gỡ lỗi của bộ điều khiển.
0x14 ~ 0xFF: Dành riêng.
Connection_Handle 2 octet Xử lý kết nối.
Thông số dành riêng cho nhà cung cấp (Tổng độ dài tham số – 4) * octet Định dạng dành riêng cho nhà cung cấp của dấu vết thông báo LMP, dấu vết lập lịch Bluetooth Multi-link/Coex và kết xuất dữ liệu Thông tin gỡ lỗi của bộ điều khiển.

Mã sự kiện phụ = 0x5C

Khi được kích hoạt, sự kiện này phải được tạo trong mỗi khoảng thời gian ISO.

Cách triển khai
Quá trình kích hoạt được thực hiện bằng cách chọn mã Data_Path_ID của nhà cung cấp 0x19 trong lệnh tiêu chuẩn HCI_LE_Setup_ISO_Data_Path. Bạn phải chấp nhận lệnh HCI_Configure_Data_PathData_Path_ID được đặt thành 0x19Vendor_Specific_Config_Length được đặt thành 0, ngay cả khi bộ điều khiển không cần thực hiện hành động nào khi nhận được lệnh này.
Thời điểm gửi
Sự kiện này được phát ra từ đầu một khoảng thời gian ISO (điểm neo CIG hoặc BIG) cho đến khoảng thời gian ISO tiếp theo. Bộ điều khiển cho biết độ trễ với thời điểm bắt đầu hiệu quả của khoảng thời gian ISO bằng cách sử dụng Anchor_Point_Delay.
Đồng bộ hoá bộ điều khiển
Khi bắt đầu một khoảng thời gian ISO, bộ điều khiển sẽ tính toán StreamSN bằng cách tăng giá trị hiện tại theo ISO_Interval ÷ SDU_Interval đã định cấu hình; trong khoảng thời gian đầu tiên, giá trị này được khởi tạo thành 0.
Sau đó, đối với mỗi gói trong ISO FIFO, những điều sau đây sẽ áp dụng:
  • Bộ điều khiển tính toán SNdiff chênh lệch gói giữa hai số thứ tự:
    SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000
  • Khi (SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
    Gói nằm trong cửa sổ truyền lại. Đáng lẽ phải được lên lịch truyền ở các khoảng thời gian trước và hiện có thể truyền lại. Nếu không phải trường hợp này (chưa được lên lịch phát sóng), thì tức là yêu cầu đã được nhận muộn. Bạn phải báo hiệu điều này cho máy chủ lưu trữ bằng cách sử dụng In_Status. Các gói như vậy có thể bị loại bỏ hoặc lên lịch truyền; lựa chọn này do quá trình triển khai xác định.
  • Hoặc khi SNdiff < ISO_Interval ÷ SDU_Interval:
    Gói được lên lịch truyền từ sự kiện này cho đến khi hết thời gian chờ xả.
  • Hoặc khi SNdiff >= ISO_Interval ÷ SDU_IntervalSNdiff <= Max_Forward_Buffers:
    Gói nằm trong tương lai; gói sẽ được truyền cùng với một sự kiện tiếp theo. Vì các gói được gửi theo thứ tự, nên điều kiện này sẽ kết thúc việc tìm kiếm các gói cho khoảng thời gian này.
    Bộ đệm mà máy chủ sử dụng không được truyền đến bộ điều khiển, nhưng bị giới hạn ở Max_Forward_Buffers = 16.
  • Hoặc khi không đáp ứng điều kiện nào ở trên:
    Gói bị loại bỏ, đạt đến giới hạn thời gian chờ xả hoặc đã nhận được một gói bị lỗi.

Tham số sự kiện phụ Kích thước Mục đích
Connection_Handle 2 octet Xử lý kết nối của CIS hoặc BIS
Phạm vi: 0x0000 đến 0x0EFF
Sequence_Number 2 octet Số thứ tự của luồng, do bộ điều khiển quản lý.

Được khởi chạy thành 0 khi CIS hoặc BIS được tạo và tăng thêm số lượng SDU theo khoảng thời gian đẳng thời ISO, được xác định là ISO_interval ÷ SDU_Interval, ở mỗi khoảng thời gian ISO.
Anchor_Point_Delay 2 octet Độ trễ tính bằng micro giây giữa thời điểm tạo sự kiện và điểm neo BIG hoặc CIG có hiệu lực hoặc thời điểm bắt đầu khoảng thời gian ISO. Dấu thời gian của điểm neo hiệu quả được xác định bằng:
Event generation time - Anchor_Point_Delay

Phạm vi: 0 đến khoảng thời gian ISO tính bằng micro giây
In_Status 2 octet Trạng thái bộ nhớ đệm ISO của bộ điều khiển

Khi bắt đầu một khoảng ISO, mỗi bit bi sẽ được đặt khi SDU (Sequence_Number + i) mod 0x10000 có sẵn. Khi không có sẵn, SDU được xác định là Not received from the host.

Giá trị i nằm trong khoảng từ 0 đến ISO_Interval ÷ SDU_Interval - 1. Đối với các giá trị khác của i, các bit được đặt thành 0.
Tx_Status 2 octet Trạng thái truyền, so với các SDU có số thứ tự:
(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000) mod 0x10000

Mỗi bit bi được đặt khi tất cả các PDU của SDU được xác định, theo số thứ tự của nó, đã được truyền thành công và được xác nhận.

Giá trị i nằm trong khoảng từ 0 đến ISO_Interval ÷ SDU_Interval - 1. Đối với các giá trị khác của i, các bit được đặt thành 0.
Trong một nhóm phát sóng, quá trình truyền dữ liệu luôn phải được xác nhận.

Hỗ trợ nhiều nhà quảng cáo

Mục tiêu của tính năng hỗ trợ nhiều nhà quảng cáo là:

  • Có thể hỗ trợ nhiều quảng cáo (max_advt_instances)
  • Công suất truyền khác nhau để cho phép phạm vi thay đổi
  • Nội dung quảng cáo khác
  • Nội dung phản hồi riêng cho từng nhà quảng cáo
  • Quyền riêng tư (không thể theo dõi) cho mỗi nhà quảng cáo
  • Có thể kết nối

Để giữ quy cách này gần với các tiêu chuẩn hiện có, các lệnh dành riêng cho nhà cung cấp sau đây được cung cấp. Các thông số này được lấy từ Quy cách Bluetooth Core 4.1.

LE_Multi_Advt_Command

OCF: 0x154

Tham số lệnh Kích thước Mục đích
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

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
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

Tài liệu tham khảo cơ bản: Tiêu chuẩn kỹ thuật Bluetooth Core 4.1, trang 964 (Lệnh tham số quảng cáo LE Set )

OCF phụ: 0x01

Tham số lệnh con Kích thước Mục đích
Advertising_Interval_Min Theo quy cách Theo quy cách
Advertising_Interval_Max Theo quy cách Theo quy cách
Advertising_Type Theo quy cách Theo quy cách
Own_Address_Type Theo quy cách Theo quy cách
Own_Address Theo quy cách Theo quy cách
Direct_Address_Type Theo quy cách Theo quy cách
Direct_Address Theo quy cách Theo quy cách
Advertising_Channel_Map Theo quy cách Theo quy cách
Adverstising_Filter_Policy Theo quy cách Theo quy cách
Advertising_Instance 1 octet Chỉ định khả năng áp dụng của các tham số trên cho một phiên bản
Tx_power 1 octet Transmit_Power
Đơn vị – dBm (số nguyên có dấu)
Phạm vi (-70 đến +20)

Tham số Own_Address có thể là một địa chỉ do máy chủ lưu trữ định cấu hình tại thời điểm thiết lập phiên bản nhiều quảng cáo này. Điều này giúp bạn có thể có một địa chỉ riêng tư có thể phân giải tại thời điểm truyền tín hiệu đầu tiên. Quảng cáo trên một phiên bản sẽ tiếp tục bất kể kết nối. Ngăn xếp BT của máy chủ có thể đưa ra lệnh bắt đầu quảng cáo trên một phiên bản, sau khi kết nối.

Một sự kiện Lệnh hoàn tất sẽ được tạo cho lệnh này như được chỉ định trong Thông số kỹ thuật Bluetooth Core 4.1, theo lệnh ở trên. Bộ điều khiển sẽ phản hồi bằng mã không thành công (tham số không hợp lệ) nếu phiên bản quảng cáo hoặc tham số Tx_Power không hợp lệ.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Multi_advt_opcode 1 octet 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Tài liệu tham khảo cơ bản: Bluetooth Core 4.1 Specification, trang 969 (Lệnh Dữ liệu quảng cáo LE Set)

OCF phụ: 0x02

Tham số lệnh con Kích thước Mục đích
Advertising_Data_Length Theo quy cách Theo quy cách
Advertising_Data Theo quy cách Theo quy cách
Advertising_Instance 1 octet Chỉ định khả năng áp dụng của các tham số trên cho một phiên bản

Một sự kiện Lệnh hoàn tất sẽ được tạo cho lệnh này như được chỉ định trong Thông số kỹ thuật Bluetooth Core 4.1, theo lệnh ở trên. Bộ điều khiển sẽ phản hồi bằng mã không thành công nếu phiên bản quảng cáo hoặc các tham số Tx_Power không hợp lệ.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Multi_advt_opcode 1 octet 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Tài liệu tham khảo cơ bản: Tiêu chuẩn kỹ thuật Bluetooth Core 4.1, trang 970 (Lệnh Dữ liệu phản hồi Quét tập hợp LE)

OCF phụ: 0x03

Tham số lệnh con Kích thước Mục đích
Scan_Response_Data_Length Theo quy cách Theo quy cách
Scan_Response_Data Theo quy cách Theo quy cách
Advertising_Instance 1 octet Chỉ định khả năng áp dụng của các tham số trên cho một phiên bản

Một sự kiện Lệnh hoàn tất sẽ được tạo cho lệnh này như được chỉ định trong Thông số kỹ thuật Bluetooth Core 4.1, theo lệnh ở trên. Bộ điều khiển sẽ phản hồi bằng mã không thành công (tham số không hợp lệ) nếu phiên bản quảng cáo hoặc tham số Tx_Power không hợp lệ.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Multi_advt_opcode 1 octet 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Tài liệu tham khảo cơ bản: Bluetooth Core 4.1 Specification, trang 963 (Lệnh Địa chỉ ngẫu nhiên LE Set)

OCF phụ: 0x04

Tham số lệnh con Kích thước Mục đích
Địa chỉ ngẫu nhiên Theo quy cách Theo quy cách
Advertising_Instance 1 octet Chỉ định khả năng áp dụng của các tham số trên cho một phiên bản

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Multi_advt_opcode 1 octet 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Tài liệu tham khảo cơ bản: Tiêu chuẩn kỹ thuật Bluetooth Core 4.1, trang 971 (Lệnh Bật quảng cáo LE Set trong tiêu chuẩn kỹ thuật cốt lõi đó)

OCF: 0x05

Tham số lệnh con Kích thước Mục đích
Advertising_Enable 1 octet Giá trị 1 có nghĩa là bật. Nếu bạn đặt trường này thành bất kỳ giá trị nào khác thì Chrome sẽ tắt tính năng này.
Advertising_Instance 1 octet Chỉ định khả năng áp dụng của các tham số ở trên cho một phiên bản. Instance 0 có nghĩa là một thực thể HCI tiêu chuẩn.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Multi_advt_opcode 1 octet 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Đã chuyển giải pháp về địa chỉ riêng tư

Tính năng này phân giải một địa chỉ riêng tư trong phần sụn hoặc phần cứng của bộ điều khiển, mang lại những lợi ích sau:

  • Độ trễ liên quan đến máy chủ lưu trữ trong việc phân giải một địa chỉ riêng tư
  • Tiết kiệm pin bằng cách không đánh thức thiết bị chủ

LE_Set_RPA_Timeout

OCF: 0x15C

Tham số lệnh Kích thước Mục đích
LE_local_IRK 16 octet IRK của thiết bị cục bộ được dùng để tạo(các) địa chỉ có thể phân giải ngẫu nhiên.
tRPA_min 2 octet Thời gian chờ tối thiểu để tạo RPA (tính bằng giây). Bộ điều khiển phải tạo các địa chỉ mới có thể phân giải cho mọi sự kiện quảng cáo/quét/kết nối vào hoặc sau thời gian chờ này.
Phạm vi hợp lệ: 300 – 1800
tRPA_max 2 octet Thời gian chờ tối đa để tạo RPA (tính bằng giây). Bộ điều khiển phải tạo địa chỉ có thể phân giải mới cho mọi sự kiện quảng cáo/quét/kết nối vào hoặc trước thời gian chờ này.
Phạm vi hợp lệ: tRPA_min–1800
Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái của lệnh.

Giá trị trạng thái HCI được đề xuất:
0x00 Thành công
0x01 Lệnh không xác định (nếu không được hỗ trợ)
0x12 Tham số lệnh không hợp lệ (nếu có tham số nằm ngoài phạm vi đã cho)

LE_RPA_offload_Command

OCF: 0x155

Tham số lệnh Kích thước Mục đích
RPA_offload_opcode 1 octet 0x1 – Bật tính năng dành riêng cho khách hàng
0x2 – Thêm IRK vào danh sách
0x3 – Xoá IRK khỏi danh sách
0x4 – Xoá danh sách IRK
0x5 – Đọc mục trong danh sách IRK

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Event_RPA_offload_opcode 1 octet 0x1 – Bật tính năng dành riêng cho khách hàng
0x2 – Thêm IRK vào danh sách
0x3 – Xoá IRK khỏi danh sách
0x4 – Xoá danh sách IRK
0x5 – Đọc mục trong danh sách IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

OCF phụ: 0x01

Tham số lệnh con Kích thước Mục đích
enable_customer_specific_feature_set 1 octet 0x01 – Bật tính năng RPA được giảm tải
0x00 – Tắt tính năng RPA được giảm tải

Máy chủ phải bật tính năng chuyển tải RPA dựa trên khả năng của chip. Tham khảo LE_Get_Vendor_Capabilities_Command. Mỗi chip có thể có một max_irk_list_sz khác nhau trong chương trình cơ sở.

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Event_cust_specific_feature_opcode 1 octet 0x01 [Bật tính năng dành riêng cho khách hàng]

LE_RPA_offload: Add_IRK_to_list_sub_Command

OCF phụ: 0x02

Tham số lệnh con Kích thước Mục đích
LE_IRK 16 octet LE IRK (byte LSB đầu tiên)
Address_Type 1 octet 0: Địa chỉ công khai
1: Địa chỉ ngẫu nhiên
LE_Device_Address 6 octet Địa chỉ công khai hoặc ngẫu nhiên được liên kết với IRK (byte LSB thứ nhất)

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Event_cust_specific_feature_opcode 1 octet 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 octet Các mục trong danh sách IRL có sẵn sau thao tác hiện tại

LE_RPA_offload: Remove_IRK_to_list_sub_Command

OCF phụ: 0x03

Tham số lệnh con Kích thước Mục đích
Address_Type 1 octet 0: Địa chỉ công khai
1: Địa chỉ ngẫu nhiên
LE_Device_Address 6 octet Địa chỉ công khai hoặc ngẫu nhiên liên kết với IRK

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Event_cust_specific_feature_opcode 1 octet 0x03 [Xoá IRK khỏi danh sách]
LE_IrkList_AvailableSpaces 1 octet Các mục trong danh sách IRL có sẵn sau thao tác hiện tại

LE_RPA_offload: Clear_IRK_list_sub_Command

OCF phụ: 0x04

Tham số lệnh con Kích thước Mục đích
Không có

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Event_cust_specific_feature_opcode 1 octet 0x04 [Xoá danh sách IRK]
LE_IrkList_AvailableSpaces 1 octet Các mục trong danh sách IRL có sẵn sau thao tác hiện tại [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

OCF phụ: 0x05

Tham số lệnh con Kích thước Mục đích
LE_read_IRK_list_entry-index 1 octet Chỉ mục của danh sách IRK [0, max_irk_list_sz-1]

Sự kiện Command Complete sẽ được tạo cho lệnh này.

Tham số trả về Kích thước Mục đích
Status 1 octet Trạng thái Lệnh hoàn tất
Event_cust_specific_feature_opcode 1 octet 0x05 [Read IRK List Entry] (Đọc mục trong danh sách IRK)
LE_Read_IRK_List_entry 1 octet Chỉ mục của IRK mà máy chủ lưu trữ muốn đọc lại (kích thước tối đa của danh sách IRK là 32)
LE_IRK 16 octet Giá trị IRK
Address_Type 1 octet 0: Địa chỉ công khai
1: Địa chỉ ngẫu nhiên
LE_Device_Address 6 octet Địa chỉ công khai hoặc ngẫu nhiên được liên kết với IRK
LE_Resolved_Private_Address 6 octet Địa chỉ riêng tư hiện tại có thể phân giải của IRK này

Giảm tải tính năng phát hiện

Tính năng Sniff Offload (Giảm tải Sniff) giảm tải việc quản lý chế độ Sniff từ ngăn xếp máy chủ Bluetooth sang bộ điều khiển Bluetooth. Điều này cho phép bộ điều khiển quản lý thời gian vào/thoát chế độ Sniff và áp dụng các thông số Sniff và Sniff phụ có thể định cấu hình, trong khi máy chủ vẫn giữ quyền kiểm soát đối với việc chọn thông số dựa trên các thay đổi về hoạt động của hồ sơ Bluetooth.

Sniff Offload States

Phần này xác định các trạng thái trong bộ điều khiển Bluetooth liên quan đến chức năng Sniff Offload. Hai trạng thái chung đã được xác định để xác định trạng thái của bộ điều khiển Bluetooth liên quan đến việc bật tính năng Sniff Offload. Hai trạng thái cụ thể của kết nối đã được xác định để xác định trạng thái của kết nối BR/EDR khi bộ điều khiển Bluetooth ở trạng thái Sniff Offload Enabled.

Trạng thái toàn cầu

Hai trạng thái chung đã được xác định để xác định trạng thái của bộ điều khiển Bluetooth liên quan đến việc bật tính năng Sniff Offload.

Trạng thái tắt tính năng chuyển hướng ngửi

Theo mặc định, bộ điều khiển Bluetooth được coi là ở trạng thái "Đã tắt tính năng chuyển tải dữ liệu". Bộ điều khiển Bluetooth dự kiến sẽ xử lý các lệnh HCI_Sniff_Mode, HCI_Exit_Sniff_Mode và HCI_Sniff_Subrating do máy chủ Bluetooth phát hành. Bộ điều khiển Bluetooth cũng sẽ chuyển tiếp các sự kiện HCI_Mode_Change và HCI_Sniff_Subrating đến một máy chủ Bluetooth theo mặt nạ sự kiện do máy chủ Bluetooth đặt.

Trạng thái đã bật tính năng chuyển hướng ngửi

Bộ điều khiển Bluetooth được coi là ở trạng thái "Đã bật tính năng Sniff Offload" sau khi xử lý thành công "WriteSniffOffloadEnable" để bật tính năng Sniff Offload. Ở trạng thái này, bộ điều khiển Bluetooth dự kiến sẽ chuyển tiếp các sự kiện HCI_Mode_Change và HCI_Sniff_Subrating đến một máy chủ Bluetooth theo quyết định của hàm AND logic của mặt nạ sự kiện do máy chủ Bluetooth đặt và Cờ ngăn chặn sự kiện.

Trạng thái cụ thể của kết nối

Khi bộ điều khiển Bluetooth ở trạng thái "Đã bật tính năng chuyển tải dữ liệu", mỗi ACL đang hoạt động có thể ở một trong hai trạng thái được mô tả bên dưới.

Trạng thái tham số đang chờ xử lý

ACL được coi là ở trạng thái "Đang chờ tham số" khi bộ điều khiển Bluetooth ở trạng thái "Đã bật tính năng Sniff Offload", nhưng lệnh dành riêng cho nhà cung cấp "WriteSniffOffloadParameters" chưa được máy chủ Bluetooth phát hành ít nhất một lần cho ACL hiện tại.

Trạng thái Bắt đầu kiểm soát

ACL được coi là ở trạng thái "Đã bắt đầu kiểm soát" khi bộ điều khiển Bluetooth ở trạng thái "Đã bật tính năng Sniff Offload" và lệnh dành riêng cho nhà cung cấp "WriteSniffOffloadParameters" đã được máy chủ Bluetooth phát hành ít nhất một lần cho ACL hiện tại.

WriteSniffOffloadEnable

OCF: 0x310

Tham số lệnh Kích thước Mục đích
Enable_Sniff_Offload 1 octet 0x00 : Tắt
0x01 : Bật
Subrating_Max_Latency 2 octet Tham số Độ trễ tối đa sẽ được dùng để tính tốc độ ngửi tối đa mà thiết bị từ xa có thể sử dụng. Mặc định: Độ trễ T*sniff* = N × 0,625 mili giây (1 khe băng tần cơ sở) Phạm vi: 0x0002 đến 0xFFFE Phạm vi thời gian: 1,25 mili giây đến 40,9 giây
Subrating_Min_Remote_Timeout 2 octet Thời gian chờ tối thiểu của chế độ phát hiện (T*sniff_mode_timeout*) mà thiết bị từ xa có thể sử dụng Mặc định: 0x0000 Thời gian chờ = N × 0,625 mili giây (1 khe băng tần cơ sở) Phạm vi: 0x0000 đến 0xFFFE Phạm vi thời gian: 0 giây đến 40,9 giây
Subrating_Min_Local_Timeout 2 octet Thời gian chờ tối thiểu của chế độ phát hiện (T*sniff_mode_timeout*) mà thiết bị cục bộ có thể sử dụng. Mặc định: 0x0000 Thời gian chờ = N × 0,625 mili giây (1 khe băng tần cơ sở) Phạm vi: 0x0000 đến 0xFFFE Phạm vi thời gian: 0 giây đến 40,9 giây
Suppress_Mode_Change_Event 1 octet 0x00 : Bộ điều khiển Bluetooth sẽ báo cáo sự kiện HCI Mode_Change cho máy chủ tuỳ theo cấu hình được đặt trong lệnh HCI_Set_Event_Mask.
0x01 : Bộ điều khiển Bluetooth sẽ không báo cáo sự kiện HCI Mode_Change cho máy chủ.
Suppress_Sniff_Subrating_Event 1 octet 0x00 : Bộ điều khiển Bluetooth sẽ báo cáo sự kiện HCI Sniff_Subrating cho máy chủ tuỳ theo cấu hình được đặt trong lệnh HCI_Set_Event_Mask.
0x01 : Bộ điều khiển Bluetooth sẽ không báo cáo sự kiện HCI Sniff_Subrating cho máy chủ.

WriteSniffOffloadParameters

OCF: 0x311

Tham số lệnh Kích thước Mục đích
Connection_Handle 2 octet Xử lý kết nối ACL BR/EDR 16 bit. Phạm vi: 0x0000 đến 0x0EFF
Sniff_Max_Interval 2 octet –Phạm vi do Bluetooth SIG xác định, thường được dùng để truy cập vào chế độ Sniff. Phạm vi: 0x0002 đến 0xFFFE; chỉ các giá trị chẵn mới hợp lệ Phạm vi bắt buộc: 0x0006 đến 0x0540 Thời gian = N × 0,625 mili giây Phạm vi thời gian: 1,25 mili giây đến 40,9 giây –Trường hợp đặc biệt 0x0000 : Dùng để chọn chế độ "Đẩy-Đang hoạt động" Sniff-Offload. 0x0001 : Dùng để chọn Chế độ "Ưu tiên hoạt động" Sniff-Offload.
Sniff_Min_Interval 2 octet Phạm vi: 0x0002 đến 0xFFFE; chỉ các giá trị chẵn mới hợp lệ Phạm vi bắt buộc: 0x0006 đến 0x0540 Thời gian = N × 0,625 mili giây Khoảng thời gian: 1,25 mili giây đến 40,9 giây
Sniff_Attempts 2 octet Số lượng khe nhận băng tần cơ sở cho lần thử đánh hơi. Độ dài = N × 1,25 ms Phạm vi: 0x0001 đến 0x7FFF Phạm vi thời gian: 1,25 ms đến 40,9 giây Phạm vi bắt buộc cho bộ điều khiển: 1 đến T*sniff* ÷ 2
Sniff_Timeout 2 octet Số lượng khe nhận băng tần cơ sở cho thời gian chờ phát hiện. Độ dài = N × 1,25 mili giây Phạm vi: 0x0000 đến 0x7FFF Phạm vi thời gian: 0 mili giây đến 40,9 giây Phạm vi bắt buộc cho bộ điều khiển: 0 đến 0x0028
Link_Inactivity_Timeout 2 octet Giá trị thời gian chờ tính bằng mili giây. Bộ hẹn giờ Link_Inactivity được bắt đầu/đặt lại ở mọi giao dịch HCI-ACL. Khi hết thời gian này, bộ điều khiển sẽ bắt đầu chuyển sang chế độ Sniff.
Subrating_Max_Latency 2 octet Tham số Độ trễ tối đa sẽ được dùng để tính tốc độ ngửi tối đa mà thiết bị từ xa có thể sử dụng. Mặc định: Độ trễ T*sniff* = N × 0,625 mili giây (1 khe băng tần cơ sở) Phạm vi: 0x0002 đến 0xFFFE Phạm vi thời gian: 1,25 mili giây đến 40,9 giây
Subrating_Min_Remote_Timeout 2 octet Thời gian chờ tối thiểu của chế độ phát hiện (T*sniff_mode_timeout*) mà thiết bị từ xa có thể sử dụng Mặc định: 0x0000 Thời gian chờ = N × 0,625 mili giây (1 khe băng tần cơ sở) Phạm vi: 0x0000 đến 0xFFFE Phạm vi thời gian: 0 giây đến 40,9 giây
Subrating_Min_Local_Timeout 2 octet Thời gian chờ tối thiểu của chế độ phát hiện (T*sniff_mode_timeout*) mà thiết bị cục bộ có thể sử dụng. Mặc định: 0x0000 Thời gian chờ = N × 0,625 mili giây (1 khe băng tần cơ sở) Phạm vi: 0x0000 đến 0xFFFE Phạm vi thời gian: 0 giây đến 40,9 giây
Allow_Exit_Sniff_On_Rx 1 octet Cờ kiểm soát việc thoát khỏi chế độ Sniff trong giao dịch HCI-ACL theo hướng nhận. 0x00 : Không thoát khỏi tính năng phát hiện trên Rx. 0x01 : Exit Sniff on Rx Receive-direction HCI-ACL is defined as ACL packet transmission from controller to host over HCI.
Allow_Exit_Sniff_On_Tx 1 octet Cờ kiểm soát việc thoát khỏi chế độ Sniff trong giao dịch HCI-ACL theo hướng truyền. 0x00 : Không thoát khỏi tính năng phát hiện trên Tx. 0x01 : Exit Sniff on Tx Transmit-direction HCI-ACL is defined as ACL packet transmission from host to controller over HCI.