Yêu cầu HCI

Giao diện bộ điều khiển máy chủ (HCI) được sử dụng để tương tác với bộ điều khiển Bluetooth.

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

Tài liệu này gọi Thông số kỹ thuật Bluetooth Core 5.2 là "thông số kỹ thuật". Thông số kỹ thuật Bluetooth Core 5.2 có sẵn trên trang web Bluetooth SIG cùng với các tài liệu được thông qua khác.

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

Khả năng và cấu hình 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ư khả năng của nền tảng và chip.

Để quản lý bối cảnh khác nhau và quản lý việc di chuyển, triết lý thiết kế cho phép bộ điều khiển BT phát huy khả năng của chúng (ngoài Thông số kỹ thuật Bluetooth Core 5.2 tiêu chuẩn) được mô tả trong tài liệu này. Sau đó, ngăn xếp BT máy chủ có thể sử dụng các khả năng này để xác định nên bật tính năng nào.

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 đặc tả Bluetooth. Nếu một tính năng được mô tả bên dưới khả dụng trong các phương pháp HCI tiêu chuẩn trong thông số kỹ thuật Bluetooth trong tương lai, chúng tôi sẽ hướng tới việc đặt phương pháp đó thành mặc định.

Khả 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 cỡ Mục đích
NA Danh sách tham số lệnh trống

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
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ự trữ sau v0.98.
Thông số này không được dùng nữa trong thông số tính năng của Google v0.98 trở lên và thay vào đó là Quảng cáo mở rộng LE có sẵn trong thông số 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 chip BT của RPA.
Nếu được hỗ trợ bởi chip, nó cần được máy chủ hỗ trợ.
0 = Không có khả năng
1 = Có khả năng

Dự trữ sau v0.98.
Tham số này không được dùng nữa trong thông số kỹ thuật của Google v0.98 trở lên và thay vào đó là tính năng Bảo mật có sẵn trong thông số BT phiên bản 4.2 trở lên.
total_scan_results_storage 2 octet Lưu trữ kết quả quét theo byte
max_irk_list_sz 1 octet Số mục 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 hoạt động và thông tin 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 tả tính năng của Google được hỗ trợ
byte[0] = Số chính
byte[1] = Số phụ

v1.04
byte[0] = 0x01
byte[1] = 0x04
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ợ cửa sổ và khoảng thời gian quét mở rộng
debug_logging_supported 1 octet Hỗ trợ ghi 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ợ

Dự trữ sau v0.98.
Tham số này không được dùng nữa trong thông số kỹ thuật của Google v0.98 trở lên và thay vào đó là tính năng Bảo mật có sẵn trong thông số 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 codec được hỗ trợ
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 được bảo lưu
bluetooth_quality_report_support 1 octet Hỗ trợ báo cáo các sự kiện 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 codec được hỗ trợ
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 được bảo lưu
a2dp_offload_v2_support 1 octet Hỗ trợ các lệnh A2dp Offload v2 trong bộ điều khiển Bluetooth (xem Bắt đầu giảm tải A2DP , Dừng tải xuống A2DP )
0 = Không được hỗ trợ
1 = Được hỗ trợ

Nhóm kết quả quét

Mục tiêu thiết kế là nâng cao cách gửi thông báo sự kiện Phản hồi quét Bluetooth LE đến máy chủ để tiết kiệm năng lượng trong máy chủ.

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 máy chủ để quét kết quả, bộ xử lý ứng dụng máy chủ có thể ở trạng thái rảnh/ngủ lâu hơn. Điều này làm giảm mức tiêu thụ điện năng trong máy chủ. Tham số trả về total_scan_results_storage của LE_Get_Vendor_Capabilities_Command cho biết khả năng lưu trữ kết quả quét của chip.

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

Phần sụn sẽ hỗ trợ hai loại phân khối, có thể được thực hiện đồng thời:

  • Bị cắt ngắn. Chứa các thành phần thông tin sau: {MAC, TX Power, RSSI, Timestamp}
  • Đầy. Chứa các thành phần thông tin sau: {MAC, TX Power, RSSI, Dấu thời gian, Dữ liệu Adv, Phản hồi quét}

LE_Batch_Scan_Command

OCF: 0x156

Tham số lệnh Kích cỡ Mục đích
Batch_Scan_opcode 1 octet 0x1 - Kích hoạt tính năng dành riêng cho khách hàng
0x2 - Đặt tham số Lưu trữ quét hàng loạt
0x3 - Đặt thông số Quét hàng loạt
0x4 - Đọc thông số Kết quả quét hàng loạt

Một sự kiện Hoàn thành lệnh 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 cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
Batch_Scan_opcode 1 octet 0x1 - Kích hoạt tính năng dành riêng cho khách hàng
0x2 - Đặt tham số Lưu trữ quét hàng loạt
0x3 - Đặt thông số Quét hàng loạt
0x4 - Đọc thông số Kết quả quét hàng loạt

LE_Batch_Scan_Command: Kích hoạt tính năng dành riêng cho khách hàng

OCF phụ: 0x01

Tham số lệnh phụ Kích cỡ Mục đích
enable_customer_specific_feature_set 1 octet 0x01 - Kích hoạt tính năng Quét hàng loạt
0x00 - Tắt tính năng Quét hàng loạt

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

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

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

OCF phụ: 0x02

Tham số lệnh phụ Kích 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 cắt ngắn
[Phạm vi: 0-100]
Batch_Scan_Notify_Threshold 1 octet Thiết lập mức thông báo (tính bằng%) cho nhóm lưu trữ riêng lẻ
[Phạm vi: 0-100]
Đặt thành 0 sẽ tắt thông báo. 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ữ)

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
Batch_scan_opcode 1 octet 0x02 [Đặt tham số Quét hàng loạt]

LE_Batch_Scan_Command: Đặt lệnh phụ Thông số quét hàng loạt

OCF phụ: 0x03

Tham số lệnh phụ Kích cỡ Mục đích
Batch_Scan_Mode 1 octet 0x00 – Quét hàng loạt bị tắt
0x01 – Chế độ cắt ngắn được bật
0x02 - Chế độ đầy đủ được bật
0x03 - Chế độ cắt ngắn và đầy đủ được bật
Duty_cycle_scan_window 4 octet Thời gian quét quét hàng loạt (số khe)
Duty_cyle_scan_interval 4 octet Khoảng thời gian quét hàng loạt (số vị trí)
own_address_type 1 octet 0x00 - Địa chỉ thiết bị công cộng
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ét cắt ngắn, kết quả được lưu trữ ở dạng rút gọn trong đó khóa duy nhất cho kiểu Cắt ngắn = { BD_ADDR, scan_interval}. Điều này có nghĩa là chỉ một BD_ADDR will được ghi lại cho mỗi khoảng thời gian quét. Bản ghi cần lưu giữ cho chế độ Cắt ngắn như sau: { BD_ADDR , Tx Power, RSSI, Timestamp}

Khi chế độ Toàn bộ được bật, quá trình quét đang hoạt động sẽ được sử dụng và Phản hồi quét sẽ được ghi lại. Khóa duy nhất 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 , Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. Ở kiểu Đầy đủ, cùng một gói AD, khi được nhìn thấy 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ế độ Cắt ngắn, điều đáng quan tâm là khả năng hiển thị BA_ADDR qua các khoảng thời gian quét khác nhau (một lần cho mỗi khoảng thời gian quét). 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.

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
Batch_scan_opcode 1 octet 0x03 [Đặt tham số quét hàng loạt]

LE_Batch_Scan_Command: Lệnh phụ Đọc kết quả quét hàng loạt

OCF phụ: 0x04

Tham số lệnh phụ Kích cỡ Mục đích
Batch_Scan_Data_read 1 octet 0x01 - Dữ liệu chế độ cắt ngắn
0x02 – Dữ liệu chế độ đầy đủ

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

Tham chiếu thời gian của bộ điều khiển và máy chủ không được đồng bộ hóa. Đơn vị của dấu thời gian là 50ms. Giá trị của dấu thời gian được dựa trên khi máy chủ cung cấp Read_Batch_Scan_Results_Sub_cmd . Nếu thời gian đến lệnh là T_c trong phần sụn thì thời gian thực tế mà dấu thời gian được lấy trong phần sụn là T_fw . Thời gian báo cáo sẽ là: ( T_c - T_fw ). T_cT_fw nằm trong miền thời gian của phần sụn. Điều này cho phép máy chủ tính toán sự kiện đã xảy ra cách đây bao lâu.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
Batch_scan_opcode 1 octet 0x03 [Đặt tham số Quét hàng loạt]
Batch_Scan_data_read 1 octet Xác định định dạng (Cắt ngắn hoặc Đầy đủ)
num_of_records 1 octet Số lượng bản ghi Batch_Scan_data_read
format_of_data Biến đổi Chế độ cắt ngắn:
Địa chỉ[0]: 6 octet
Địa chỉ_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0] : 1 octet
Dấu thời gian[0]: 2 octet
[nhiều bản ghi ( num_of_records ) với định dạng trên]

Chế độ đầy đủ:
Địa chỉ[0]: 6 octet
Địa chỉ_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0]: 1 octet
Dấu thời gian[0]: 2 octet
Gói Adv_len[0]: 1 octet
Adv_packet[0]: Adv_packet_len octet
Scan_data_resp_len[0]: 1 octet
Scan_data_resp[0]: Các octet Scan_data_resp
[nhiều bản ghi có định dạng trên ( num_of_records )]

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

Sử dụng tính năng 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. 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_Lệnh

OCF: 0x157

Tham số lệnh Kích cỡ Mục đích
APCF_opcode 1 octet 0x00 - Kích hoạt APCF
0x01 - APCF Đặt tham số lọc
0x02 - Địa chỉ đài truyền hình APCF
0x03 - UUID dịch vụ APCF
0x04 - UUID chào mời dịch vụ APCF
0x05 - Tên địa phương APCF
0x06 - Dữ liệu nhà sản xuất APCF
0x07 - Dữ liệu dịch vụ APCF
0x08 - Dịch vụ khám phá vận tải APCF
0x09 - Bộ lọc loại quảng cáo APCF
0x10 ~ 0xAF - Dự trữ để sử dụng trong tương lai
0xB0 ~ 0xDF - Dành riêng cho nhà cung cấp
0xE0 ~ 0xFE - Dự trữ để sử dụng trong tương lai
0xFF - APCF Đọc các tính năng mở rộng

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái trả lại
APCF_opcode 1 octet 0x00 - Kích hoạt APCF
0x01 - APCF Đặt tham số lọc
0x02 - Địa chỉ đài truyền hình APCF
0x03 - UUID dịch vụ APCF
0x04 - UUID chào mời dịch vụ APCF
0x05 - Tên địa phương APCF
0x06 - Dữ liệu nhà sản xuất APCF
0x07 - Dữ liệu dịch vụ APCF
0x08 - Dịch vụ khám phá vận tải APCF
0x09 - Bộ lọc loại quảng cáo APCF
0x10 ~ 0xAF - Dự trữ để sử dụng trong tương lai
0xB0 ~ 0xDF - Dành riêng cho nhà cung cấp
0xE0 ~ 0xFE - Dự trữ để sử dụng trong tương lai
0xFF - APCF Đọc các tính năng mở rộng

LE_APCF_Lệnh: Enable_sub_cmd

OCF phụ: 0x00

Tham số lệnh phụ Kích cỡ Mục đích
APCF_enable 1 octet 0x01 - Kích hoạt tính năng APCF
0x00 - Tắt tính năng APCF

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
APCF_opcode 1 octet 0x0 - Kích hoạt APCF
APCF_Enable 1 octet Bật/tắt được đặt qua APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

Lệnh phụ này được sử dụng để thêm hoặc xóa thông số bộ lọc hoặc xóa danh sách bộ lọc để lọc trên chip.

OCF phụ: 0x01

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

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

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

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

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

Khi nhận được khung quảng cáo (hoặc phản hồi quét), nó 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 ngay lập tức dựa trên một bộ lọc và phân nhóm các bộ lọc đó do một hành động lọc khác.

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

Chế độ phân phối OnFound dựa trên các bộ lọc đã định cấu hình. Sự kế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 onLost . Sự kiện tương ứng là sự kiện phụ theo dõi LE Advt.

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

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
APCF_opcode 1 octet 0x01 - APCF Đặt tham số lọc
APCF_Action 1 octet Phản hồi lại APCF_Action của lệnh
APCF_AvailableSpaces 1 octet Số mục có sẵn trong bảng bộ lọc

LE_APCF_Lệnh: Broadcast_address_sub_cmd

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

OCF phụ: 0x02

Tham số lệnh phụ Kích cỡ Mục đích
APCF_Action 1 octet 0x00 - Thêm
0x01 - Xóa
0x02 - Xóa
Xóa sẽ xóa địa chỉ đài phát đã chỉ định trong bộ lọc đã chỉ định.
Xóa sẽ xóa tất cả các địa chỉ đài truyền hình trong bộ lọc được chỉ định.
APCF_Filter_Index 1 octet Chỉ số bộ lọc (0, max_filter-1 )
APCF_Broadcaster_Address 6 octet Địa chỉ thiết bị 6 byte để thêm vào hoặc xóa khỏi danh sách địa chỉ đài phát
APCF_Application_Address_type 1 octet 0x00: Công khai
0x01: Ngẫu nhiên
0x02: NA (loại địa chỉ không áp dụng)

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
APCF_opcode 1 octet 0x02 - Địa chỉ đài truyền hình APCF
APCF_Action 1 octet Phản hồi lại APCF_Action của lệnh
APCF_AvailableSpaces 1 octet Số mục miễn phí vẫn có sẵn trong bảng Địa chỉ quảng bá

LE_APCF_Lệnh: dịch vụ_uuid_sub_cmd

Lệnh con này được sử dụng để thêm hoặc xóa UUID dịch vụ hoặc xóa danh sách UUID dịch vụ để lọc trên chip.

OCF phụ: 0x03

Tham số lệnh phụ Kích cỡ Mục đích
APCF_Action 1 octet 0x00 - Thêm
0x01 - Xóa
0x02 - Xóa
Xóa sẽ xóa địa chỉ UUID dịch vụ được chỉ định trong bộ lọc được chỉ định.
Xóa sẽ xóa tất cả các UUID dịch vụ trong bộ lọc được chỉ định.
APCF_Filter_Index 1 octet Chỉ số 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 hoặc xóa 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) để thêm vào danh sách. Nó phải có cùng độ dài với APCF_UUID.

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
APCF_opcode 1 octet 0x03 - UUID dịch vụ APCF
APCF_Action 1 octet Phản hồi lại APCF_Action của lệnh
APCF_AvailableSpaces 1 octet Số mục miễn phí vẫn có trong bảng UUID dịch vụ

LE_APCF_Command: chào mời_uuid_sub_cmd

Lệnh con này được sử dụng để thêm hoặc xóa UUID chào mời hoặc xóa danh sách UUID chào mời để lọc trên chip.

OCF phụ: 0x04

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

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
APCF_opcode 1 octet 0x04 - UUID chào mời APCF
APCF_Action 1 octet Phản hồi lại APCF_Action của lệnh
APCF_AvailableSpaces 1 octet Số lượng mục miễn phí vẫn có sẵn trong bảng UUID chào mời

LE_APCF_Lệnh: local_name_sub_cmd

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

OCF phụ: 0x05

Tham số lệnh phụ Kích cỡ Mục đích
APCF_Action 1 octet 0x00 - Thêm
0x01 - Xóa
0x02 - Xóa
Xóa sẽ xóa chuỗi tên địa phương được chỉ định trong bộ lọc đã chỉ định.
Xóa sẽ xóa tất cả các chuỗi tên cục bộ trong bộ lọc đã chỉ định.
APCF_Filter_Index 1 octet Chỉ số 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.

Ghi chú:
  • Hiện tại số ký tự tối đa trong chuỗi tên địa phương là 29
  • Không áp dụng khi hành động là "Xóa" (0x2)

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

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

LE_APCF_Lệnh: manf_data_sub_cmd

Lệnh con này được sử dụng để thêm hoặc xóa chuỗi dữ liệu của nhà sản xuất hoặc xóa danh sách chuỗi dữ liệu của nhà sản xuất để lọc trên chip.

OCF phụ: 0x06

Tham số lệnh phụ Kích cỡ Mục đích
APCF_Action 1 octet 0x00 - Thêm
0x01 - Xóa
0x02 - Xóa
Xóa sẽ xóa chuỗi dữ liệu nhà sản xuất đã chỉ định trong bộ lọc đã chỉ định.
Xóa sẽ xóa tất cả các chuỗi dữ liệu của nhà sản xuất trong bộ lọc được chỉ định.
APCF_Filter_Index 1 octet Chỉ số 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 nhà sản xuất.

Ghi chú:
  • Hiện tại số ký tự tối đa trong chuỗi tên địa phương là 29
  • Không áp dụng khi hành động là "Xóa" (0x2)
APCF_ManData_Mask Kích thước thay đổi Mặt nạ dữ liệu sản xuất để thêm vào danh sách. Nó phải có cùng độ dài với APCF_LocName_or_ManData_or_SerData .

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

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

LE_APCF_Command: dịch vụ_data_sub_cmd

Lệnh con này được sử dụng để thêm hoặc xóa chuỗi dữ liệu dịch vụ hoặc xóa danh sách chuỗi dữ liệu dịch vụ để lọc trên chip.

OCF phụ: 0x07

Tham số lệnh phụ Kích cỡ Mục đích
APCF_Action 1 octet 0x00 - Thêm
0x01 - Xóa
0x02 - Xóa
Xóa sẽ xóa chuỗi dữ liệu dịch vụ đã chỉ định trong bộ lọc đã chỉ định.
Xóa sẽ xóa tất cả các chuỗi dữ liệu dịch vụ trong bộ lọc được chỉ định.
APCF_Filter_Index 1 octet Chỉ số 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ụ.

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

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
APCF_opcode 1 octet 0x07 - Dữ liệu dịch vụ APCF
APCF_Action 1 octet Phản hồi lại APCF_Action của lệnh
APCF_AvailableSpaces 1 octet Số mục miễn phí vẫn có sẵn cho bảng Dữ liệu Dịch vụ

LE_APCF_Lệnh: ad_type_sub_cmd

Lệnh phụ này được sử dụng để thêm hoặc xóa loại AD hoặc xóa danh sách loại AD để lọc trên chip. Sử dụng read_extended_features_sub_cmd để kiểm tra xem lệnh này có được hỗ trợ hay không.

OCF phụ: 0x09

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

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
APCF_opcode 1 octet 0x09 - Loại quảng cáo APCF
APCF_Action 1 octet Phản hồi lại APCF_Action của lệnh
APCF_AvailableSpaces 1 octet Số mục miễn phí vẫn có trong bảng Loại AD

LE_APCF_Command: read_extends_features_sub_cmd

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

OCF phụ: 0xFF

Tham số lệnh phụ Kích cỡ Mục đích
Không áp dụng Tham số lệnh trống.

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
APCF_opcode 1 octet 0xFF - APCF_Read_Extends_Features
APCF_extended_features 2 octet

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

  • Bit 0: Hỗ trợ bộ lọc Dịch vụ khám phá vận chuyển
  • Bit 1: Hỗ trợ bộ lọc Loại AD
  • Bit 2 ~15: Dự trữ để sử dụng trong tương lai

Giá trị của bit

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

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

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 hoạt động tổng thể của tất cả các thành phần, bao gồm bộ điều khiển BT và trạng thái vĩ mô của nó, cùng với những gì đang xảy ra trong ứng dụng và khung. Để thực hiện việc này, thông tin sau được yêu cầu 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
  • Firmware: Báo cáo tổng hợp hoạt động và thông tin năng lượng

Trạng thái macro ngăn xếp máy chủ BT, như được xác định ở cấp độ người dùng:

  • Nhàn rỗi: [quét trang, LE advt, quét yêu cầu]
  • Quét: [phân trang/truy vấn/cố gắng kết nối]
  • Đang hoạt động: [Bật liên kết ACL, liên kết SCO đang diễn ra, chế độ đánh hơi]

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

LE_Get_Controller_Activity_Energy_Info

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

OCF: 0x159

Tham số lệnh phụ Kích cỡ Mục đích
NA Thông số lệnh trống

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
total_tx_time_ms 4 octet Tổng thời gian biểu diễ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 năng lượng thấp không 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 mở rộng cài đặt tham số quét LE

Lệnh này có thể được sử dụng để kích hoạt cửa sổ và khoảng thời gian quét lớn hơn trong bộ điều khiển. Theo Thông số kỹ thuật BT Core 5.2, cửa sổ 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 dài hơn của ứng dụng vượt quá 10,24 giây.

Tham chiếu cơ sở: Thông số kỹ thuật BT Core 5.2, trang 2493 (Lệnh LE Set Scan Parameters)

OCF: 0x15A

Tham số lệnh Kích 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. Gói SCAN_REQ 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 cuối cùng 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 ms
Phạm vi thời gian: 2,5 ms đến 10442,25 giây
LE_Ex_Scan_Window 4 octet Thời gian quét LE. LE_Scan_Window sẽ 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 ms
Phạm vi thời gian: 2,5 ms đến 40,95 giây
Own_Address_Type 1 octet 0x00 - Địa chỉ thiết bị công cộng (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 định hướng không có địa chỉ cho thiết bị này sẽ bị bỏ qua.
0x01 - Bỏ qua các gói quảng cáo từ các thiết bị không có trong danh sách Chỉ danh sách trắng. Các gói quảng cáo được định hướng không có địa chỉ cho thiết bị này sẽ bị bỏ qua.

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

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

Nhận lệnh thông tin gỡ lỗi 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 bộ điều khiển từ máy chủ, ở dạng nhị phân, để xử lý và phân tích sau. Điều này giúp gỡ lỗi các sự cố tại hiện trường và cung cấp cho các kỹ sư bộ công cụ để ghi thông tin để phân tích. Bộ điều khiển có thể cung cấp thông tin khi được máy chủ yêu cầu thông qua sự kiện (sự kiện phụ Thông tin gỡ lỗi bộ điều khiển) hoặc tự động khi bộ điều khiển mong muốn. Ví dụ sử dụng có thể là để báo cáo thông tin trạng thái chương trình cơ sở, thông tin kết xuất sự cố, thông tin ghi nhật ký, v.v.

OCF: 0x15B

Tham số lệnh Kích cỡ Mục đích
không áp dụng Danh sách tham số lệnh trống

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

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

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

Tính năng Giảm tải A2DP hỗ trợ giảm tải quá trình mã hóa âm thanh A2DP sang 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ã hóa truyền trực tiếp từ Bộ xử lý âm thanh đến Bộ điều khiển BT mà không có sự tham gia của máy chủ BT. Máy chủ BT vẫn chịu trách nhiệm cấu hình và kiểm soát phiên A2DP. Hai phiên bản của lệnh có sẵn. Các lệnh kế thừa với Sub OCF 0x01-0x02 chỉ hỗ trợ codec nguồn mở. Các phiên bản có Sub-OCF 0x02-0x03 không phụ thuộc vào codec được đị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 Giảm tải A2DP và bắt đầu luồng A2DP.

Tham số lệnh Kích cỡ Mục đích
Codec 4 octet Chỉ định loại Codec
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
Max_Latency 2 octet Độ trễ tối đa được phép (tính bằng mili giây). Giá trị bằng 0 sẽ vô hiệu hóa chức năng xả.
SCMS-T_Enable 2 octet Octet 0: Cờ cho phép bổ sung tiêu đề SCMS-T.
  • 0x00 - Không bao gồm tiêu đề SCMS-T.
  • 0x01 - Bao gồm tiêu đề SCMS-T.

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

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

Bộ mã hóa SBC:

Tham khảo các thành phần thông tin cụ thể của SBC Codec trong A2DP v1.3.
Octet 0: Độ dài khối | Băng con | Phương pháp phân bổ
Octet 1: Giá trị Bitpool tối thiểu
Octet 2: Giá trị Bitpool tối đa
Octet 3: Tần suất lấy mẫu | Chế độ kênh
Ngày 4-31 tháng 10: đặt trước

Bộ mã hóa AAC:

Tham khảo các thành phần thông tin cụ thể của AAC Codec trong A2DP v1.3
Octet 0: Loại đối tượng
Tháng mười 1; b7: VBR
Ngày 2-31 tháng 10: đặt trước

Bộ giải mã LDAC:

Tháng 10 0-3: ID nhà cung cấp
0x0000012D

Ngày 4-5 tháng 10: ID Codec
0x00AA - LDAC
Tất cả các giá trị khác được bảo lưu

Tháng 10 6: Chỉ số bitrate:
0x00 - Cao
0x01 - Giữa
0x02 - Thấp
0x03 - 0x7E - Dành riêng
0x7F - ABR (Tốc độ bit thích ứng)
0x80 - 0xFF - Dành riêng

Tháng 10 7: Chế độ kênh LDAC
0x01 - Âm thanh nổi
0x02 - Kép
0x04 - Đơn âm
Những người khác được bảo lưu

8-31 tháng 10: đặt trước

Tất cả các codec khác:

Tháng 10 0-31: dành riêng

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

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

Bắt đầu tải xuống A2DP

OCF phụ: 0x03

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

Tham số lệnh Kích cỡ Mục đích
Connection Handle 2 octet Xử lý kết nối HCI đang hoạt động
L2CAP_Channel_ID 2 octet Mã định danh của Kênh L2CAP được mở để phát trực tuyến A2DP
Data_Path_Direction 1 octet 0x00 - Đầu ra (Nguồn AVDTP/Hợp nhất)
0x01 - Đầu vào (Tách/chìm AVDTP)
Peer_MTU 2 octet Kích thước tối đa của 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 - Kích hoạt tiêu đề bảo vệ nội dung SCMS-T
CP_Header_SCMS_T 1 octet Khi bật Tiêu đề bảo vệ nội dung SCMS-T ( CP_SCMS_T_Enable được đặt thành 0x01), hãy xác định giá trị tiêu đề đứng trước nội dung âm thanh (tham khảo A2DP, mục 3.2.1-2) như được xác định bởi Số được chỉ định Bluetooth, mục 6.3.2.
Bị bỏ qua khi tính năng bảo vệ nội dung SCMS-T không được bật.
Vendor_Specific_Parameters_Length 1 octet Độ dài của Thông số cụ thể của nhà cung cấp, trong phạm vi từ 0 đến 128.
Giá trị 0 được sử dụng khi không có tham số bổ sung nào được cung cấp.
Vendor_Specific_Parameters 0-128 octet Thông số cụ thể của nhà cung cấp được cung cấp bởi Bluetooth Audio HAL, CodecParameters.vendorSpecificParameters[] .

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
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 được sử dụng để dừng luồng Giảm tải A2DP.

Tham số lệnh Kích cỡ Mục đích
không áp dụng Danh sách tham số lệnh trống.

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

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
Sub_Opcode 1 octet 0x02 - Dừng tải A2DP

Dừng tải xuống A2DP

OCF phụ: 0x04

Lệnh này được sử dụng để dừng luồng Giảm tải A2DP.

Tham số lệnh Kích cỡ Mục đích
Connection Handle 2 octet Xử lý kết nối HCI đang hoạt động
L2CAP_Channel_ID 2 octet Mã định danh của Kênh L2CAP được mở để phát trực tuyến A2DP
Data_Path_Direction 1 octet 0x00 - Đầu ra (Nguồn AVDTP/Hợp nhất)
0x01 - Đầu vào (Tách/chìm AVDTP)

Một sự kiện Hoàn thành lệnh sẽ được tạo cho lệnh này.

Tham số trả về Kích cỡ Mục đích
Status 1 octet Trạng thái hoàn thành lệnh
Sub_Opcode 1 octet 0x04 - Dừng 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 khởi động cơ chế trong bộ điều khiển Bluetooth để báo cáo các sự kiện Chất lượng Bluetooth cho máy chủ. Bạn có thể kích hoạt bốn tùy chọn:

  • Chế độ giám sát chất lượng: Bộ điều khiển định kỳ gửi sự kiện phụ BQR liên quan đến Chất lượng liên kết đến máy chủ.
  • Đang tiếp cận LSTO: Nếu không nhận được gói nào từ thiết bị BT được kết nối trong hơn một nửa giá trị Thời gian chờ giám sát liên kết (LSTO), bộ điều khiển sẽ báo cáo sự kiện Đang tiếp cận LSTO cho máy chủ.
  • A2DP Audio Choppy: Khi bộ điều khiển phát hiện các yếu tố gây ra âm thanh bị giật, bộ điều khiển sẽ báo cáo sự kiện A2DP Audio Choppy cho máy chủ.
  • (e)SCO Voice Choppy: Khi bộ điều khiển phát hiện các yếu tố gây ra hiện tượng giật giọng nói, bộ điều khiển sẽ báo cáo sự kiện (e)SCO Voice Choppy cho máy chủ.
  • Viêm gốc: Sự kiện này được gửi bởi bộ điều khiển đến ngăn xếp khi HAL hoặc bộ điều khiển gặp lỗi nghiêm trọng và cần khởi động lại Bluetooth.
  • Dấu vết tin nhắn LMP/LL: Bộ điều khiển gửi bắt tay tin nhắn LMP/LL với thiết bị từ xa đến máy chủ.
  • Dấu vết lập lịch đa năng/hợp tác của Bluetooth: Bộ điều khiển gửi thông tin lập lịch của mình về việc xử lý nhiều cấu hình Bluetooth và cùng tồn tại không dây trong băng tần 2,4 GHz cho máy chủ.
  • Cơ chế gỡ lỗi bộ điều khiển: Khi được bật, bộ điều khiển có thể tự chủ báo cáo gỡ lỗi thông tin ghi nhật ký thông qua sự kiện con gỡ lỗi của bộ điều khiển cho máy chủ.

OCF: 0x15E

Tham số lệnh Kích cỡ Mục đích
BQR_Report_Action 1 octet Hành động để thêm / xóa 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 xóa tất cả.

0x00 - Thêm
0x01 - Xóa
0x02 - Xóa

Xóa sẽ xóa báo cáo sự kiện chất lượng cụ thể.
Xóa sẽ xóa tất cả các báo cáo sự kiện chất lượng (có thể bỏ qua tham số BQR_QUALE_EVENT_MASK).

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

Bit 0: Đặt thành Chế độ giám sát chất lượng.
Bit 1: Đặt để cho phép tiếp cận sự kiện LSTO (cho ACL/(E) SCO/ISO).
Bit 2: Đặt để bật sự kiện A2DP Audio Choppy.
Bit 3: Đặt thành ENABLE (E) SCO Voice Choppy sự kiện.
Bit 4: Đặt để cho phép sự kiện viêm gốc.
Bit 5: Đặt thành Chế độ giám sát năng lượng.
Bit 6: Đặt để bật sự kiện LE Audio Choppy.
Bit 7: Đặt để cho phép kết nối sự kiện Fail.
Bit 8 ~ 14: Dành riêng.
BIT 15: Đặt để cho phép các sự kiện chất lượng dành riêng cho nhà cung cấp.
Bit 16: Đặt để bật dấu vết tin nhắn LMP/LL.
BIT 17: Đặt để bật dấu vết lập kế hoạch đa liên kết/coex của Bluetooth.
Bit 18: Đặt để cho phép cơ chế thông tin gỡ lỗi bộ điều khiển.
Bit 19 ~ 30: Dành riêng.
Bit 31: Đặt để cho phép dấu vết cụ thể của nhà cung cấp.

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

Đơn vị: MS
Mặc định: 0 (không giới hạn cho khoảng.)
Phạm vi: 0 ~ 65535 ms

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

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

BQR_Vendor_Specific_Trace_Mask 4 octets Mặt nạ bit cho báo cáo dấu vết cụ thể của nhà cung cấp được chọn.
Tham số này chỉ có giá trị khi bit 31 của BQR_Quality_Event_Mask được đặt.

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

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
Current_Quality_Event_Mask 4 octets Cho biết cài đặt mặt nạ bit hiện tại.
Bit 0: Chế độ giám sát chất lượng được bật.
BIT 1: Tiếp cận báo cáo sự kiện LSTO được bật.
Bit 2: Báo cáo sự kiện A2DP Audio Audio được bật.
BIT 3: (e) Báo cáo sự kiện choppy SCO Voice được bật.
Bit 4: Báo cáo sự kiện viêm gốc được kích hoạt.
Bit 5: Chế độ giám sát năng lượng được bật.
BIT 6: Báo cáo sự kiện LE Audio Choppy được bật.
Bit 7: Kết nối sự kiện thất bại.
Bit 8 ~ 14: Dành riêng.
BIT 15: Báo cáo sự kiện chất lượng dành riêng cho nhà cung cấp được bật.
Bit 16: Dấu vết tin nhắn LMP/LL được bật.
BIT 17: Dấu vết lập kế hoạch đa liên kết/coex của Bluetooth được bật.
Bit 18: Cơ chế thông tin gỡ lỗi bộ điều khiển được bật.
Bit 19 ~ 30: Dành riêng.
Bit 31: Dấu vết cụ thể của nhà cung cấp được bật.
Current_Vendor_Specific_Quality_Event_Mask 4 octets Cho biết cài đặt mặt nạ bit hiện tại.
Current_Vendor_Specific_Trace_Mask 4 octets Cho biết cài đặt mặt nạ bit hiện tại.

Lệnh bộ đệm âm thanh động

Bộ đệm âm thanh động làm giảm trục trặc âm thanh 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 các kịch bản khác nhau.

OCF: 0x15F

Nhận khả năng thời gian bộ đệm âm thanh

Sub OCF: 0x01

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

Tham số lệnh Kích cỡ Mục đích
không áp dụng Danh sách tham số lệnh trống

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
Dynamic_Audio_Buffer_opcode 1 octet 0x01 - Nhận thời gian bộ đệm âm thanh
Audio_Codec_Type_Supported 4 octets Mặt nạ bit cho các loại codec được hỗ trợ
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - aptx
Bit 3 - aptx hd
Bit 4 - LDAC
Bit 5-31 được bảo lưu
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 octet Thời gian bộ đệm mặc định của loại Bit 0 Codec được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này sẽ là 0 nếu loại Codec bit 0 không được hỗ trợ.
Đơn vị: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 octet Thời gian bộ đệm tối đa của loại Bit 0 Codec được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này sẽ là 0 nếu loại Codec bit 0 không được hỗ trợ.
Đơn vị: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 octet Thời gian bộ đệm tối thiểu của loại Bit 0 Codec được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này sẽ là 0 nếu loại Codec bit 0 không được hỗ trợ.
Đơn vị: MS
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 octet Thời gian bộ đệm mặc định của loại Codec Bit 1 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này sẽ là 0 nếu loại codec bit 1 không được hỗ trợ.
Đơn vị: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 octet Thời gian bộ đệm tối đa của loại Codec bit 1 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này sẽ là 0 nếu loại codec bit 1 không được hỗ trợ.
Đơn vị: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 octet Thời gian bộ đệm tối thiểu của loại Codec Bit 1 được chỉ định trong Audio_Codec_Type_Supported.
Giá trị này sẽ là 0 nếu loại codec bit 1 không được hỗ trợ.
Đơn vị: MS
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 octet Thời gian bộ đệm mặc định của loại BIT 31 Codec đượ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ị: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octet Thời gian bộ đệm tối đa của loại BIT 31 Codec đượ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ị: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 octet Thời gian bộ đệm tối thiểu của loại BIT 31 Codec đượ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ị: MS

Đặt thời gian bộ đệm âm thanh

Sub OCF: 0x02

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

Tham số lệnh Kích cỡ Mục đích
Audio_Codec_Buffer_Time 2 octet Thời gian bộ đệm âm thanh được yêu cầu cho codec đã sử dụng hiện tại.
Đơn vị: MS

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
Dynamic_Audio_Buffer_opcode 1 octet 0x02 - Đặt thời gian bộ đệm âm thanh
Audio_Codec_Buffer_Time 2 octet Thời gian bộ đệm âm thanh hiện tại trong bộ điều khiển Bluetooth.
Đơn vị: MS

Sự kiện HCI (dành riêng cho nhà cung cấp)

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

Tham số sự kiện Kích cỡ Mục đích
HCI_vendor_specific_event_code 1 octet 0xff
sub_event_code 1 octet Một mã sự kiện phụ sẽ có kích thước 1 octet, byte ngay theo chiều dài tham số trong gói sự kiện HCI.

Sự kiện vi phạm ngưỡng lưu trữ

Sự kiện này chỉ ra rằng ngưỡng lưu trữ đã bị vi phạm.

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

Tham số phụ Kích cỡ Mục đích
Không có

LE đa kích hoạt thay đổi trạng thái phụ

Sự kiện này chỉ ra rằng một thể hiện quảng cáo đã thay đổi trạng thái của nó. Tại thời điểm này, sự kiện này chỉ được sử dụng để chỉ ra thể hiện quảng cáo nào đã bị dừng lại do kết nối.

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

Tham số phụ Kích cỡ Mục đích
Advertising_instance 1 octet Xác định trường hợp quảng cáo cụ thể
Các giá trị hợp lệ là 0 đến max_advt_instances -1
State_Change_Reason 1 octet 0x00: Kết nối nhận được
Connection_handle 2 octet Xác định kết nối gây ra phiên bản advt bị vô hiệu hóa (0xffff nếu không hợp lệ)

LE quảng cáo theo dõi phụ

Sự kiện này cho biết khi 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ố phụ Kích cỡ Mục đích
APCF_Filter_Index 1 octet Chỉ mục lọc (0, max_filter -1)
Advertiser_State 1 octet 0x00: Nhà quảng cáo được tìm thấy
0x01: Nhà quảng cáo bị mất
Advt_Info_Present 1 octet 0x00: Thông tin nhà quảng cáo ( Advt_Info ) hiện tại
0x01: Thông tin nhà quảng cáo ( Advt_Info ) Không có mặt
Advertiser_Address 6 octets Địa chỉ công khai hoặc ngẫu nhiên
Advertiser_Address_Type 1 octet 0x00: Địa chỉ công cộng
0x01: Địa chỉ ngẫu nhiên
Advt_Info Tx_Pwr[0] : 1 octet
RSSI[0] : 1 octet
Timestamp[0] : 2 octets
Adv packet_len[0] : 1 octet
Adv_packet[0] : Adv_packet_len octets
Scan_data_resp_len[0] : 1 octet
Scan_data_resp[0] : Scan_data_resp octets

Bộ điều khiển gỡ lỗi thông tin phụ

Sự kiện này được sử dụng bởi bộ điều khiển để cung cấp thông tin gỡ lỗi nhị phân cho máy chủ.

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

Tham số phụ Kích cỡ Mục đích
debug_block_byte_offset_start 2 octet Debug Block Byte Offset ngay 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òn 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 đổi Dữ liệu gỡ lỗi của cur_payload_sz

Báo cáo chất lượng Bluetooth phụ

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

Tham số phụ Kích cỡ Mục đích
Quality_Report_Id 1 octet 0x01: Báo cáo chất lượng trên chế độ giám sát.
0x02: Tiếp cận LSTO.
0x03: A2DP Audio Choppy.
0x04: (e) SCO Voice Choppy.
0x05 ~ 0x06: Bảo lưu.
0x07: Le Audio Choppy.
0x08: Kết nối thất bại.
0x09 ~ 0xff: Dành riêng.
Packet_Types 1 octet 0x01: ID
0x02: null
0x03: Thăm dò ý kiến
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0a: EV4
0x0b: EV5
0x0C: 2-EV3
0x0d: 2-EV5
0x0E: 3-EV3
0x0f: 3-EV5
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1a: 3-DH1
0x1b: 3-DH3
0x1c: 3-DH5
0x1d ~ 0x50: Dành riêng
0x51: Gói ISO
0x52 ~ 0xff: Dành riêng
Connection_Handle 2 octet ACL/(E) Xử lý kết nối SCO/ISO.
Connection_Role 1 octet Thực hiện vai trò cho kết nối.
0x00: Trung tâm
0x01: ngoại vi
0x02 ~ 0xff: Dành riêng.
TX_Power_Level 1 octet Mức năng lượng truyền hiện tại cho kết nối được chỉ định_handle.

Giá trị này sẽ giống như bộ điều khiển phản hồi của HCI_READ_TRANSMIT_POWER_LEVEL HCI.

RSSI 1 octet [trong DBM]

Giá trị chỉ báo cường độ tín hiệu (RSSI) cho kết nối được chỉ định_handle.
Giá trị này sẽ là một giá trị cường độ tín hiệu máy thu tuyệt đối.
Phạm vi: -127 đến +20

SNR 1 octet [trong db]

Giá trị tỷ lệ tín hiệu-nhiễu (SNR) cho kết nối được chỉ định_handle.
Bộ điều khiển sẽ cung cấp SNR trung bình của tất cả các kênh được sử dụng bởi liên kết.

Unused_AFH_Channel_Count 1 octet Cho biết số lượng các kênh chưa sử 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 các kênh bị can thiệp và có chất lượng xấu, nhưng chúng vẫn được chọn cho AFH.
Số lượng kênh tối thiểu cho phép bởi đặc tả Bluetooth là 20, vì vậy ngay cả khi tất cả 79 kênh bị can thiệp và có chất lượng xấu, bộ điều khiển vẫn cần chọn ít nhất 20 kênh cho AFH.
LSTO 2 octet Cài đặt thời gian chờ liên kết hiện tại.
Thời gian = n * 0,625 ms
Phạm vi thời gian: 0,625 ms đến 40,9 s
Connection_Piconet_Clock 4 octets Đồng hồ piconet cho kết nối được chỉ định_handle.
Giá trị này sẽ giống như bộ điều khiển phản hồi của HCI_READ_CLOCK HCI với tham số "what_clock" là 0x01 (đồng hồ piconet).
Đơn vị: N * 0.3125 ms (đồng hồ Bluetooth 1)
Retransmission_Count 4 octets Số lượng truyền lại kể từ sự kiện cuối cùng.
Số lượng này sẽ được đặt lại sau khi báo cáo cho máy chủ.
No_RX_Count 4 octets Không có số lượng RX kể từ sự kiện cuối cùng.
Số lượng tăng khi không nhận được gói nào tại khe thời gian theo lịch trình hoặc gói nhận được bị hỏng.
Số lượng này sẽ được đặt lại sau khi báo cáo cho máy chủ.
NAK_Count 4 octets NAK (số thừa nhận tiêu cực) kể từ sự kiện cuối cùng.
Số lượng này sẽ được đặt lại sau khi báo cáo cho máy chủ.
Last_TX_ACK_Timestamp 4 octets Dấu thời gian của TX ACK cuối cùng. Nó dựa trên đồng hồ Bluetooth của Piconet Central (CLK).
Đơn vị: N * 0.3125 ms (đồng hồ Bluetooth 1)
Flow_Off_Count 4 octets Số lần bộ điều khiển nhận được Flow-Off (Dừng) kể từ sự kiện cuối cùng.
Số lượng này sẽ được đặt lại sau khi báo cáo cho máy chủ.
Last_Flow_On_Timestamp 4 octets Dấu thời gian của dòng chảy cuối cùng (GO). Nó dựa trên đồng hồ Bluetooth của Piconet Central (CLK).
Đơn vị: N * 0.3125 ms (đồng hồ Bluetooth 1)
Buffer_Overflow_Bytes 4 octets [Trong byte]

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

Buffer_Underflow_Bytes 4 octets [Trong byte]

Buffer Underflow Count kể từ sự kiện cuối cùng.
Số lượng này sẽ được đặt lại sau khi báo cáo cho máy chủ.

bdaddr 6 octets Địa chỉ thiết bị từ xa
cal_failed_item_count 1 octet Số lượng các mặt hàng không thành tích
TX_Total_Packets 4 octets Số lượng gói được gửi đi.
TX_UnAcked_Packets 4 octets Số lượng gói không nhận được xác nhận.
Số lượng này được đặt lại sau khi báo cáo cho máy chủ.
TX_Flushed_Packets 4 octets Số lượng gói không được gửi bởi điểm xả của nó.
Số lượng này được đặt lại sau khi báo cáo cho máy chủ.
TX_Last_Subevent_Packets 4 octets Số lượng các gói liên kết lớp truyền PDU dữ liệu CIS trong phần cuối cùng của sự kiện CIS.
Số lượng này được đặt lại sau khi báo cáo cho máy chủ.
Giá trị bằng không nếu không có giá trị hợp lệ cho liên kết.
CRC_Error_Packets 4 octets Số lượng gói nhận được có lỗi CRC kể từ sự kiện cuối cùng.
Số lượng này được đặt lại sau khi báo cáo cho máy chủ.
RX_Duplicate_Packets 4 octets Số lượng gói trùng lặp (truyền lại) nhận được kể từ sự kiện cuối cùng.
Số lượng này được đặt lại sau khi báo cáo cho máy chủ.
Tham số cụ thể của nhà cung cấp (Tổng chiều dài tham số - TBD) * octets Cho nhà cung cấp bộ điều khiển để có thêm các tham số cụ thể của nhà cung cấp.

Mã sự kiện phụ = 0x58 [chất lượng_report_id = 0x05, sự kiện viêm gốc]

Sự kiện này chỉ ra rằng Bluetooth Hal hoặc bộ điều khiển gặp phải lỗi nghiêm trọng và cần ngăn xếp Bluetooth để ghi lại tình huống này và 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 đ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 cụ thể của nhà cung cấp chipset từ HAL/bộ điều khiển. Nó sẽ được đặt là 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 nên cả hai.

Tham số phụ Kích cỡ Mục đích
Quality_Report_Id 1 octet 0x00 ~ 0x04: Bảo lưu.
0x05: Viêm rễ.
0x06 ~ 0xff: Dành riêng.
Error_Code 1 octet 0x00: Bao gồm mã lỗi cụ thể của nhà cung cấp chipset.
0x01 ~ 0xff: xảy ra lỗi bộ điều khiển. Xem Bluetooth Spec [tập 2] Phần D, Mã lỗi cho danh sách các mã và mô tả lỗi.
Vendor_Specific_Error_Code 1 octet 0x00: Không bao gồm mã lỗi cụ thể của nhà cung cấp chipset.
0x01 ~ 0xff: Mã cụ thể của nhà cung cấp chipset.
Tham số cụ thể của nhà cung cấp (Tổng số chiều dài tham số - 4) * octets Cho nhà cung cấp bộ điều khiển để có thêm các tham số cụ thể của nhà cung cấp.
Tham số phụ Kích cỡ Mục đích
Quality_Report_Id 1 octet 0x00 ~ 0x10: Dành riêng.
0x11: Dấu vết tin nhắn LMP/LL.
0x12: Dấu vết lập kế hoạch đa liên kết/coex của Bluetooth.
0x13: Bộ điều khiển gỡ lỗi thông tin dữ liệu.
0x14 ~ 0xff: Dành riêng.
Connection_Handle 2 octet Xử lý kết nối.
Tham số cụ thể của nhà cung cấp (Tổng số chiều dài tham số - 4) * octets Định dạng cụ thể của nhà cung cấp của Dấu vết tin nhắn LMP, Dấu vết thông tin của Bluetooth Multi-Link/Coex Lập kế hoạch và bộ điều khiển.

Hỗ trợ nhiều người kích thích

Mục tiêu của hỗ trợ đa Advertiser là như sau:

  • Khả năng hỗ trợ nhiều quảng cáo ( max_advt_instances )
  • Các sức mạnh truyền khác nhau để cho phép một phạm vi khác nhau
  • Nội dung quảng cáo khác nhau
  • Một phản hồi cá nhân cho mỗi nhà quảng cáo
  • Quyền riêng tư (không thể truy cập) cho mỗi nhà quảng cáo
  • Có thể kết nối

Để giữ cho thông số kỹ thuật 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. Chúng có nguồn gốc từ đặc tả lõi Bluetooth 4.1.

Le_multi_advt_command

OCF: 0x154

Tham số lệnh Kích cỡ Mục đích
Multi_advt_opcode 1 octet 0x01 - Set_Advt_Param_Multi_Sub_Cmd
0x02 - Set_Advt_Data_Multi_Sub_Cmd
0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 - Set_Random_Addr_Multi_Sub_Cmd
0x05 - Set_Advt_Enable_Multi_Sub_Cmd

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
Multi_advt_opcode 1 octet 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

LE_MULTI_ADVT_COMMAND: SET_ADVT_PARAM_MULTI_SUB_CMD

Tài liệu tham khảo cơ sở: Đặc điểm kỹ thuật của Bluetooth Core 4.1, trang 964 (LED LED Lệnh tham số quảng cáo)

Sub OCF: 0x01

Tham số phụ Kích cỡ Mục đích
Advertising_Interval_Min Mỗi spec Mỗi spec
Advertising_Interval_Max Mỗi spec Mỗi spec
Advertising_Type Mỗi spec Mỗi spec
Own_Address_Type Mỗi spec Mỗi spec
Own_Address Mỗi spec Mỗi spec
Direct_Address_Type Mỗi spec Mỗi spec
Direct_Address Mỗi spec Mỗi spec
Advertising_Channel_Map Mỗi spec Mỗi spec
Adverstising_Filter_Policy Mỗi spec Mỗi spec
Advertising_Instance 1 octet Chỉ định khả năng ứng dụng của các tham số trên vào một thể hiện
Tx_power 1 octet Truyền điện
Đơn vị - tính bằng DBM (Số nguyên đã ký)
Phạm vi (-70 đến +20)

Tham số Own_Address có thể là một địa chỉ được cấu hình máy chủ tại thời điểm thiết lập thể hiện đa quảng cáo này. Điều này cung cấp khả năng có một địa chỉ riêng có thể giải quyết được tại thời điểm truyền đèn hiệu đầu tiên. Quảng cáo trên một ví dụ sẽ tiếp tục không phân biệt kết nối. Stack BT máy chủ có thể phát hành một lệnh để bắt đầu quảng cáo trên một thể hiện, kết nối đăng.

Một sự kiện hoàn chỉnh lệnh sẽ được tạo cho lệnh này như được chỉ định trong đặc tả Bluetooth Core 4.1, theo lệnh trên. Bộ điều khiển sẽ trả lờ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ệ.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
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ơ sở: Đặc điểm kỹ thuật của Bluetooth Core 4.1, trang 969 (Lệnh LE SET Dữ liệu quảng cáo)

Sub OCF: 0x02

Tham số phụ Kích cỡ Mục đích
Advertising_Data_Length Mỗi spec Mỗi spec
Advertising_Data Mỗi spec Mỗi spec
Advertising_Instance 1 octet Chỉ định khả năng ứng dụng của các tham số trên vào một thể hiện

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

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

LE_MULTI_ADVT_COMMAND: SET_SCAN_RESP_DATA_MULTI_SUB_CMD

Tham chiếu cơ sở: Thông số kỹ thuật của Bluetooth Core 4.1, trang 970 (Lệnh LE SET SCAN REPESECT DATA)

Sub OCF: 0x03

Tham số phụ Kích cỡ Mục đích
Scan_Response_Data_Length Mỗi spec Mỗi spec
Scan_Response_Data Mỗi spec Mỗi spec
Advertising_Instance 1 octet Chỉ định khả năng ứng dụng của các tham số trên vào một thể hiện

Một sự kiện hoàn chỉnh lệnh sẽ được tạo cho lệnh này như được chỉ định trong đặc tả Bluetooth Core 4.1, theo lệnh trên. Bộ điều khiển sẽ trả lờ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ệ.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
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ơ sở: Đặc tả lõi Bluetooth 4.1, trang 963 (Lệnh LE đặt địa chỉ ngẫu nhiên)

Sub OCF: 0x04

Tham số phụ Kích cỡ Mục đích
Địa chỉ ngẫu nhiên Mỗi spec Mỗi spec
Advertising_Instance 1 octet Chỉ định khả năng ứng dụng của các tham số trên vào một thể hiện

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
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ơ sở: Thông số kỹ thuật của Bluetooth Core 4.1, trang 971 (LE SET ADPATION ARPISE Lệnh kích hoạt trong đặc tả lõi đó)

OCF: 0x05

Tham số phụ Kích cỡ Mục đích
Advertising_Enable 1 octet Giá trị 1 có nghĩa là kích hoạt. Bất kỳ giá trị nào khác có nghĩa là vô hiệu hóa.
Advertising_Instance 1 octet Chỉ định khả năng ứng dụng của các tham số trên vào một thể hiện. Ví dụ 0 có nghĩa là một thể hiện HCI tiêu chuẩn.

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

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

Độ phân giải giảm tải của địa chỉ riêng

Tính năng này giải quyết một địa chỉ riêng trong phần sụn hoặc phần cứng của bộ điều khiển, cung cấp các lợi ích sau:

  • Độ trễ liên quan đến chủ nhà trong việc giải quyết một địa chỉ riêng
  • Tiết kiệm năng lượng bằng cách kiềm chế không đánh thức máy chủ

Le_set_rpa_timeout

OCF: 0x15C

Tham số lệnh Kích cỡ Mục đích
LE_local_IRK 16 octet Thiết bị cục bộ IRK được sử dụng để tạo địa chỉ giải quyết ngẫu nhiên (ES).
tRPA_min 2 octet Thời gian chờ thế hệ RPA tối thiểu tính bằng giây. Bộ điều khiển phải tạo các địa chỉ có thể giải quyết mới cho bất kỳ sự kiện quảng cáo/quét/kết nối nào trên 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ờ thế hệ RPA tối đa tính bằng giây. Bộ điều khiển phải tạo các địa chỉ có thể giải quyết mới cho bất kỳ sự kiện quảng cáo/quét/kết nối nào trên hoặc trước thời gian chờ này.
Phạm vi hợp lệ: tRPA_min -1800
Trả về tham số Kích cỡ Mục đích
Status 1 octet Trạng thái của lệnh.

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

LE_RPA_OFFLOAD_COMMAND

OCF: 0x155

Tham số lệnh Kích cỡ Mục đích
RPA_offload_opcode 1 octet 0x1 - Kích hoạt tính năng cụ thể của khách hàng
0x2 - Thêm Irk vào danh sách
0x3 - Xóa Irk khỏi danh sách
0x4 - Danh sách IRK rõ ràng
0x5 - Đọc mục nhập danh sách IRK

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
Event_RPA_offload_opcode 1 octet 0x1 - Kích hoạt tính năng cụ thể của khách hàng
0x2 - Thêm Irk vào danh sách
0x3 - Xóa Irk khỏi danh sách
0x4 - Danh sách IRK rõ ràng
0x5 - Đọc mục nhập danh sách IRK

LE_RPA_OFFLOAD: enable_cust_specific_sub_command

Sub OCF: 0x01

Tham số phụ Kích cỡ Mục đích
enable_customer_specific_feature_set 1 octet 0x01 - Bật tính năng RPA đã giảm tải
0x00 - Vô hiệu hóa tính năng RPA giảm tải

Giảm tải RPA được yêu cầu phải được bật bởi máy chủ, dựa trên khả năng 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 phần sụn.

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

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

Le_rpa_offload: add_irk_to_list_sub_command

Sub OCF: 0x02

Tham số phụ Kích cỡ Mục đích
LE_IRK 16 octets Le Irk (byte 1st LSB)
Address_Type 1 octet 0: Địa chỉ công cộng
1: Địa chỉ ngẫu nhiên
LE_Device_Address 6 octets Địa chỉ công khai hoặc ngẫu nhiên liên quan đến IRK (byte 1st LSB)

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
Event_cust_specific_feature_opcode 1 octet 0x02 [Thêm IRK vào danh sách]
LE_IrkList_AvailableSpaces 1 octet Các mục nhập danh sách IRL có sẵn sau khi hoạt động hiện tại

LE_RPA_OFFLOAD: remove_irk_to_list_sub_command

Sub OCF: 0x03

Tham số phụ Kích cỡ Mục đích
Address_Type 1 octet 0: Địa chỉ công cộng
1: Địa chỉ ngẫu nhiên
LE_Device_Address 6 octets Địa chỉ công khai hoặc ngẫu nhiên liên kết với Irk

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
Event_cust_specific_feature_opcode 1 octet 0x03 [Xóa IRK khỏi danh sách]
LE_IrkList_AvailableSpaces 1 octet Các mục nhập danh sách IRL có sẵn sau khi hoạt động hiện tại

LE_RPA_OFFLOAD: CLEAR_IRK_LIST_SUB_COMMAND

Sub OCF: 0x04

Tham số phụ Kích cỡ Mục đích
Không có

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

Trả về tham số Kích cỡ Mục đích
Status 1 octet Lệnh hoàn chỉnh trạng thái
Event_cust_specific_feature_opcode 1 octet 0x04 [Danh sách IRK rõ ràng]
LE_IrkList_AvailableSpaces 1 octet Các mục nhập danh sách IRL có sẵn sau khi hoạt động hiện tại [ max_irk_list_sz]

LE_RPA_OFFLOAD: read_irk_list_sub_command

Sub OCF: 0x05

Tham số phụ Kích cỡ Mục đích
LE_read_IRK_list_entry-index 1 octet Chỉ số danh sách IRK [0, max_irk_list_sz-1]

Một sự kiện hoàn thành lệnh sẽ được tạo cho lệnh này.

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