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:
|
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_c – T_fw). T_c và T_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 – immediate0x01 – on_found0x02 – batched
|
onfound_timeout |
2 octet |
Chỉ hợp lệ nếu delivery_mode là on_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_mode là on_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_mode là on_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_mode là on_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_mode là on_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, batch và onFound. 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 ý:
|
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 ý:
|
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 ý:
|
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_LengthBỏ 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_LengthBỏ 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ợ:
Giá trị của bit
|
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.
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. 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 Bộ mã hoá và giải mã LDAC:
Octet 0-3: Mã nhà cung cấp
Octet 4-5: Mã nhận dạng codec
Octet 6: Bitrate Index (Chỉ số tốc độ bit):
Octet 7: Chế độ kênh LDAC 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
Thao tác xoá sẽ xoá báo cáo(các) sự kiện cụ thể về chất lượng. |
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. |
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 |
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 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 octetRSSI[0]: 1 octetTimestamp[0]: 2 octetAdv packet_len[0]: 1 octetAdv_packet[0]: Adv_packet_len octetScan_data_resp_len[0]: 1 octetScan_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.
Mã sự kiện phụ = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, Link Quality related event]
| 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. |
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. |
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. |
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. |
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_Wake và HOST_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, LE và CIS (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. |
Mã sự kiện phụ = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, Log Dump related event]
| 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. |
Sự kiện phụ ISO Link Feedback
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_Path có Data_Path_ID được đặt thành 0x19 và Vendor_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ụngAnchor_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 theoISO_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ụngIn_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_IntervalvàSNdiff <= 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_Cmd0x02 – Set_Advt_Data_Multi_Sub_Cmd0x03 – Set_Scan_Resp_Data_Multi_Sub_Cmd0x04 – Set_Random_Addr_Multi_Sub_Cmd0x05 – 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_Command0x02 – Set_Advt_Data_Multi_Command0x03 – Set_Scan_Resp_Data_Multi_Command0x04 – Set_Random_Addr_Multi_Command0x05 – 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. |