HCI 需求條件

主機控制器介面 (HCI) 用於與藍牙控制器互動。

這份文件列出藍牙 (BT) 和藍牙低功耗 (BLE) HCI 的需求。目標是讓主機 BT 堆疊供應商和 BT 控制器供應商遵守這些平台規定,以便使用下述功能集。

本文將藍牙核心規格 5.2 稱為「規格」。如要查看 Bluetooth Core 5.2 規格,請前往 Bluetooth SIG 網站,並參閱其他採用文件。

一般設計總覽

晶片功能和設定

Android 是開放式平台,因此軟體版本、原始設備製造商、供應商,以及平台和晶片功能都相當多元。

為管理各種情況和遷移作業,本文說明的設計理念是允許 BT 控制器公開其功能 (超出標準藍牙核心 5.2 規格)。主機 BT 堆疊隨後可使用這些功能,判斷要啟用哪些功能。

支援開放標準

Android 的目標之一,是在藍牙規格通過認證後,支援開放標準。如果下列功能在日後的藍牙規格中,可透過標準 HCI 方法使用,我們就會傾向將該方法設為預設方法。

廠商專屬功能

廠商專屬指令:LE_Get_Vendor_Capabilities_Command

OpCode Command Field (OCF):0x153

指令參數 大小 目的
NA 空白的 Command 參數清單

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
max_advt_instances
(已淘汰)
1 個八位元 支援的廣告例項數量。

v0.98 以上版本保留。
Google 功能規格 v0.98 以上版本已淘汰這個參數,建議改用 BT 規格 5.0 以上版本提供的 LE 擴展廣告
offloaded_resolution_of_private-address
(已淘汰)
1 個八位元 RPA 的 BT 晶片功能。
如果晶片支援這項功能,主機必須啟用。
0 = 不支援
1 = 支援

0.98 版之後保留。
Google 功能規格 v0.98 以上版本已淘汰這個參數,建議改用 BT 規格 4.2 以上版本提供的隱私權功能
total_scan_results_storage 2 個八位元 掃描結果的儲存空間 (以位元組為單位)
max_irk_list_sz 1 個八位元 韌體支援的 IRK 項目數量
filtering_support 1 個八位元 控制器是否支援篩選
0 = 不支援
1 = 支援
max_filter 1 個八位元 支援的篩選器數量
activity_energy_info_support 1 個八位元 支援活動和能源資訊的報表
0 = 無此功能
1 = 有此功能
version_supported 2 個八位元 指定支援的 Google 功能規格版本
byte[0] = 主要號碼
byte[1] = 次要號碼

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

下列版本新增的功能:
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
V1.04:
  • BQRv6
total_num_of_advt_tracked 2 個八位元 OnLost/OnFound 目的追蹤的廣告主總數
extended_scan_support 1 個八位元 支援延長掃描視窗和間隔
debug_logging_supported 1 個八位元 支援記錄來自控制器的二進位偵錯資訊
LE_address_generation_offloading_support
(已淘汰)
1 個八位元 0 = 不支援
1 = 支援

v0.98 後保留。
Google 功能規格 v0.98 以上版本已淘汰這個參數,建議改用 BT 規格 4.2 以上版本提供的隱私權功能
A2DP_source_offload_capability_mask 4 個八位元 支援的轉碼器類型位元遮罩
位元 0 - SBC
位元 1 - AAC
位元 2 - APTX
位元 3 - APTX HD
位元 4 - LDAC
位元 5 到 31 為保留位元
bluetooth_quality_report_support 1 個八位元 支援回報藍牙品質事件
0 = 無法回報
1 = 可以回報
dynamic_audio_buffer_support 4 個八位元 支援藍牙控制器中的動態音訊緩衝區
支援的轉碼器類型位元遮罩
位元 0 - SBC
位元 1 - AAC
位元 2 - APTX
位元 3 - APTX HD
位元 4 - LDAC
位元 5 到 31 為保留位元
a2dp_offload_v2_support 1 個八位元 支援藍牙控制器中的 A2DP 卸載 v2 指令 (請參閱「啟動 A2DP 卸載」、「停止 A2DP 卸載」)
0 = 不支援
1 = 支援
iso_link_feedback_support 1 個八位元 支援 ISO 連結意見回饋事件
0 = 不支援
1 = 支援
sniff_offload_support 1 個八位元 支援藍牙控制器中的 Sniff Offload 指令
0 = 不支援
1 = 支援

批次掃描結果

設計目標是提升藍牙低功耗掃描回應事件通知傳送至主機的方式,以節省主機電力。

減少控制器通知主機應用程式處理器掃描結果的頻率,主機應用程式處理器就能維持閒置/休眠狀態更久。這可降低主機的耗電量。LE_Get_Vendor_Capabilities_Command 的回傳參數 total_scan_results_storage 會指出晶片儲存掃描結果的能力。

這項功能著重於管理及設定藍牙控制器中的 LE 掃描結果儲存空間。儲存空間用於暫時批次處理廣告資料,以及掃描控制器收到的資料和中繼資料,以便稍後傳送給主機。

韌體應支援兩種批次處理類型,可同時啟用:

  • 已截斷。包含下列資訊元素:{MAC、TX Power、 RSSI、Timestamp}
  • 完整。包含下列資訊元素:{MAC、TX Power、RSSI、 時間戳記、Adv Data、Scan Response}

LE_Batch_Scan_Command

OCF:0x156

指令參數 大小 目的
Batch_Scan_opcode 1 個八位元 0x1 - 啟用客戶專屬功能
0x2 - 設定批次掃描儲存參數
0x3 - 設定批次掃描參數
0x4 - 讀取批次掃描結果參數

系統會為這個指令產生「Command Complete」事件。啟用客戶專屬功能不會開始掃描。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Batch_Scan_opcode 1 個八位元 0x1 - 啟用客戶專屬功能
0x2 - 設定批次掃描儲存參數
0x3 - 設定批次掃描參數
0x4 - 讀取批次掃描結果參數

LE_Batch_Scan_Command:啟用客戶專屬功能

子 OCF:0x01

子指令參數 大小 目的
enable_customer_specific_feature_set 1 個八位元 0x01 - 啟用批次掃描功能
0x00 - 停用批次掃描功能

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Batch_Scan_opcode 1 個八位元 0x1 - 啟用客戶專屬功能
0x2 - 設定批次掃描儲存參數
0x3 - 設定批次掃描參數
0x4 - 讀取批次掃描結果參數

LE_Batch_Scan_Command:設定批次掃描儲存空間參數子指令

子 OCF:0x02

子指令參數 大小 目的
Batch_Scan_Full_Max 1 個八位元 分配給完整樣式的最大儲存空間 (以百分比表示)
[範圍:0 到 100]
Batch_Scan_Truncated_Max 1 個八位元 分配給截斷樣式的儲存空間上限 (以百分比表示)
[範圍:0 到 100]
Batch_Scan_Notify_Threshold 1 個八位元 為個別儲存集區設定通知層級 (以百分比表示)
[範圍:0 到 100]
設為 0 會停用通知。產生供應商專屬 HCI 事件 (儲存空間門檻違規子事件)

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Batch_scan_opcode 1 個八位元 0x02 [設定批次掃描參數]

LE_Batch_Scan_Command:設定批次掃描參數子指令

子 OCF:0x03

子指令參數 大小 目的
Batch_Scan_Mode 1 個八位元 0x00 - 停用批次掃描
0x01 - 啟用截斷模式
0x02 - 啟用完整模式
0x03 - 啟用截斷和完整模式
Duty_cycle_scan_window 4 個八位元 批次掃描掃描時間 (插槽數)
Duty_cyle_scan_interval 4 個八位元 批次掃描間隔週期 (時段數)
own_address_type 1 個八位元 0x00 - 公開裝置地址
0x01 - 隨機裝置地址
Batch_scan_Discard_Rule 1 個八位元 0 - Discard oldest advertisement
1 - Discard advertisement with weakest RSSI

如果已啟用,這個子指令會啟動批次掃描。在截斷式掃描中,結果會以截斷形式儲存,其中截斷式樣式的專屬鍵 = {BD_ADDR, scan_interval}。也就是說,每個掃描間隔只會記錄一個 BD_ADDR will。在截斷模式下保留的記錄如下:{BD_ADDR、發射功率、RSSI、時間戳記}

啟用「完整」模式後,系統會使用主動掃描功能,並記錄掃描回應。完整樣式的專屬金鑰 = {MAC、廣告封包}, 與掃描間隔無關。完整模式的記錄為 {BD_ADDR、Tx Power、RSSI、Timestamp、Ad packet、Scan Response}。在「完整」樣式中,如果同一個 AD 封包在不同掃描間隔中多次出現,系統只會記錄一次。不過,在「截斷」模式中,我們感興趣的是 BA_ADDR 在不同掃描間隔中的可見度 (每個掃描間隔一次)。RSSI 是掃描間隔內所有不重複廣告的平均值。

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Batch_scan_opcode 1 個八位元 0x03 [設定批次掃描參數]

LE_Batch_Scan_Command:讀取批次掃描結果子指令

子 OCF:0x04

子指令參數 大小 目的
Batch_Scan_Data_read 1 個八位元 0x01 - 截斷模式資料
0x02 - 完整模式資料

系統會為這個指令產生「Command Complete」事件。主機發出這項指令時,控制器中的所有結果可能無法納入一個「Command Complete」事件。主機會重複發出這項指令,直到「Command Complete」事件中的相應結果顯示記錄數為 0,表示控制器沒有更多記錄要傳達給主機為止。每個「命令完成」事件可能包含多筆記錄,但只能有一種資料類型 (完整或截斷)。

控制器和主機時間參照未同步。時間戳記的單位為 50 毫秒。時間戳記的值取決於主機提供 Read_Batch_Scan_Results_Sub_cmd 的時間。如果韌體中的指令抵達時間為 T_c,則韌體中實際擷取時間戳記的時間為 T_fw。回報時間為:(T_c - T_fw)。T_cT_fw 位於韌體時域。主機可以藉此計算活動發生時間。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Batch_scan_opcode 1 個八位元 0x03 [設定批次掃描參數]
Batch_Scan_data_read 1 個八位元 識別格式 (截斷或完整)
num_of_records 1 個八位元 Batch_Scan_data_read」的記錄數
format_of_data 變數 截斷模式:
位址 [0]:6 個八位元
位址類型 [0]:1 個八位元
Tx_Pwr[0]:1 個八位元
RSSI[0]:1 個八位元
時間戳記 [0]:2 個八位元
[多筆記錄 (num_of_records),格式如上]
完整模式:
位址 [0]:6 個八位元
位址類型 [0]:1 個八位元
Tx_Pwr[0]:1 個八位元
RSSI[0]:1 個八位元
時間戳記 [0]:2 個八位元
Adv packet_len[0]:1 個八位元
Adv_packet[0]:Adv_packet_len 個八位元
Scan_data_resp_len[0]:1 個八位元
Scan_data_resp[0]:Scan_data_resp 個八位元
[多筆記錄,格式如上 (num_of_records)]

廣告封包內容篩選器

您可以使用這個屬性,在控制器中啟用/停用/設定廣告封包內容篩選器 (APCF)。APCF 會篩選控制器中的廣告報表,但不會篩選週期性廣告。

LE_APCF_Command

OCF:0x157

指令參數 大小 目的
APCF_opcode 1 個八位元 0x00 - 啟用 APCF
0x01 - 設定 APCF 篩選參數
0x02 - APCF 廣播器地址
0x03 - APCF 服務 UUID
0x04 - APCF 服務請求 UUID
0x05 - APCF 本機名稱
0x06 - APCF 製造商資料
0x07 - APCF 服務資料
0x08 - APCF 傳輸探索服務
0x09 - APCF AD 類型篩選器
0x10 ~ 0xAF - 保留供日後使用
0xB0 ~ 0xDF - 保留供廠商使用
0xE0 ~ 0xFE - 保留供日後使用
0xFF - APCF 讀取擴充功能

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 退貨狀態
APCF_opcode 1 個八位元 0x00 - 啟用 APCF
0x01 - 設定 APCF 篩選參數
0x02 - APCF 廣播器地址
0x03 - APCF 服務 UUID
0x04 - APCF 服務請求 UUID
0x05 - APCF 本機名稱
0x06 - APCF 製造商資料
0x07 - APCF 服務資料
0x08 - APCF 傳輸探索服務
0x09 - APCF AD 類型篩選器
0x10 ~ 0xAF - 保留供日後使用
0xB0 ~ 0xDF - 保留供廠商使用
0xE0 ~ 0xFE - 保留供日後使用
0xFF - APCF 讀取擴充功能

LE_APCF_Command: Enable_sub_cmd

子 OCF:0x00

子指令參數 大小 目的
APCF_enable 1 個八位元 0x01 - 啟用 APCF 功能
0x00 - 停用 APCF 功能

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0x0 - APCF 啟用
APCF_Enable 1 個八位元 啟用/停用是透過 APCF_enable 設定

LE_APCF_Command:set_filtering_parameters_sub_cmd

這個子指令用於新增或刪除篩選器規格,或清除晶片上篩選器的篩選器清單。

子 OCF:0x01

子指令參數 大小 目的
APCF_Action 1 個八位元 0x00 - 新增
0x01 - 刪除
0x02 - 清除
刪除會清除特定篩選器,以及其他表格中相關聯的特徵項目。
清除會清除其他表格中的所有篩選條件和相關項目。
APCF_Filter_Index 1 個八位元 篩選索引 (0, max_filter-1)
APCF_Feature_Selection 2 個八位元 所選功能的位元遮罩:
位元 0:設為啟用廣播位址篩選器
位元 1:設為啟用服務資料變更篩選器
位元 2:設為啟用服務 UUID 檢查
位元 3:設為啟用服務徵求 UUID 檢查
位元 4:設為啟用本機名稱檢查
位元 5:設為啟用製造商資料檢查
位元 6:設為啟用服務資料檢查
位元 7:設為啟用傳輸探索服務檢查
位元 8:設為啟用 AD 類型檢查
APCF_List_Logic_Type 2 個八位元 每個特徵選取項 (每位元位置) 的邏輯運算,如 APCF_Feature_Selection 中所指定。
只有在啟用功能時才有效。
位元位置值:
0:OR
1:AND
如果選取「AND」邏輯,只有當 ADV 封包包含清單中的「所有」項目時,才會通過篩選器。
如果選取「OR」邏輯,只要 ADV 封包包含清單中的任何項目,就會通過篩選器。
APCF_Filter_Logic_Type 1 個八位元 0x00:OR
0x01:AND
注意:APCF_Feature_Selection 的前三個欄位一律為「AND」邏輯,因此邏輯類型為不適用。這些值僅適用於 APCF_Feature_Selection 的四個欄位 (位元 3 至位元 6)。
rssi_high_thresh 1 個八位元 [以 dBm 為單位]
只有在訊號高於 RSSI 高門檻時,系統才會將廣告主視為已曝光。否則,韌體必須視為從未看到該值。
delivery_mode 1 個八位元 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 個八位元 只有在 delivery_modeon_found 時才有效。
[以毫秒為單位]
韌體停留並收集額外廣告的時間,然後回報。
onfound_timeout_cnt 1 個八位元 只有在 delivery_modeon_found 時才有效。
[count]
如果 onFound 中的廣告在韌體中停留 onfound_timeout 時間長度,系統會收集幾個廣告並檢查計數。如果計數超過 onfound_timeout_cnt,系統會立即回報 OnFound
rssi_low_thresh 1 個八位元 只有在 delivery_modeon_found 時才有效。
[以 dBm 為單位]
如果接收到的封包 RSSI 未高於 RSSI 低門檻,系統會視為未看到廣告主封包。
onlost_timeout 2 個八位元 只有在 delivery_modeon_found 時才有效。
[以毫秒為單位]
如果系統找到廣告後,廣告未連續顯示 lost_timeout 時間,系統會立即回報廣告遺失。
num_of_tracking_entries 2 個八位元 只有在 delivery_modeon_found 時才有效。
[count]
每個篩選器要追蹤的廣告主總數。

RSSI 值必須使用 2 的補數來表示負值。

主機應能設定多個篩選器,並將 APCF_Application_Address_type 設為 0x02 (適用於所有廣播者地址),以管理各種篩選器組合。

篩選、批次處理和報表是相互關聯的概念。每個廣告和相關掃描回應都必須逐一通過所有篩選器。因此,產生的動作 (delivery_mode) 與篩選功能密切相關。放送模式如下:report_immediatelybatchonFound。「OnLost」值與「OnFound」相關,因為遺失時會顯示在「OnFound」之後。

這個處理流程描繪的是概念模型:

收到廣告 (或掃描回應) 框架時,系統會依序套用所有篩選器。廣告可能會根據一個篩選器立即產生報表,並因不同的篩選器動作而批次處理相同的廣告。

RSSI 級別門檻 (高和低) 可控制訊框何時顯示以進行篩選器處理,即使控制器收到有效封包也一樣。如果傳輸模式設為立即或批次,系統會考量訊框的 RSSI,以便進一步處理控制器。不同應用程式需要不同的回報和批次處理行為。這可讓多個應用程式同時在韌體中直接回報和/或批次處理結果。舉例來說,假設某個應用程式啟用了批次掃描,稍後另一個應用程式發出一般 LE 掃描。發出批次掃描前,架構/應用程式會設定適當的篩選器。之後,當第二個應用程式發出一般掃描要求時,系統會繼續執行先前的批次處理作業。不過,由於系統會定期掃描,因此從概念上來說,這等同於在 LE 掃描指令中加入空值篩選器 (以及所有現有篩選器)。啟用時,LE 掃描指令參數會優先使用。停用一般 LE 掃描後,控制器會還原為先前的批次掃描 (如有)。

OnFound 傳送模式會根據設定的篩選條件而定。如果組合觸發篩選器的動作成功,則視為要追蹤 onLost 的實體。對應的事件是 LE Advt 追蹤子事件。

如果已啟用篩選器,OnFound/OnLost 轉場效果會如下所示:

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0x01 - APCF 設定篩選參數
APCF_Action 1 個八位元 回音指令的 APCF_Action
APCF_AvailableSpaces 1 個八位元 篩選器表格中的可用項目數

LE_APCF_Command: broadcast_address_sub_cmd

這個子指令用於新增或刪除廣告主地址,或清除晶片上篩選的廣告主地址清單。

子 OCF:0x02

子指令參數 大小 目的
APCF_Action 1 個八位元 0x00 - 新增
0x01 - 刪除
0x02 - 清除
刪除會刪除指定篩選器中的指定廣播者位址。
「清除」會清除指定篩選器中的所有廣播者地址。
APCF_Filter_Index 1 個八位元 篩選索引 (0, max_filter-1)
APCF_Broadcaster_Address 6 octet 要新增至或刪除廣播者地址清單的 6 位元組裝置地址
APCF_Application_Address_type 1 個八位元 0x00:公開
0x01:隨機
0x02:不適用 (忽略位址類型)
如要使用身分位址類型 (0x02、0x03) 篩選廣告報表。 如要取得地址類型為 0x02 和 0x03 的廣告報告,請將這個 欄位設為 0x02:NA (忽略地址類型)。

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0x02 - APCF 廣播器位址
APCF_Action 1 個八位元 回音指令的 APCF_Action
APCF_AvailableSpaces 1 個八位元 廣播位址表格中仍可使用的免費項目數

LE_APCF_Command: service_uuid_sub_cmd

這個子指令用於新增或刪除服務 UUID,或清除晶片上篩選的服務 UUID 清單。

子 OCF:0x03

子指令參數 大小 目的
APCF_Action 1 個八位元 0x00 - 新增
0x01 - 刪除
0x02 - 清除
刪除會刪除指定篩選器中的指定服務 UUID 位址。
「清除」會清除指定篩選器中的所有服務 UUID。
APCF_Filter_Index 1 個八位元 篩選器索引 (0, max_filter-1)
APCF_UUID 2、4、16 個八位元 要新增至清單或從清單中刪除的服務 UUID (16 位元、32 位元或 128 位元)。
APCF_UUID_MASK 2、4、16 個八位元 要新增至清單的服務 UUID 遮罩 (16 位元、32 位元或 128 位元)。 長度應與 APCF_UUID. 相同

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0x03 - APCF 服務 UUID
APCF_Action 1 個八位元 回音指令的 APCF_Action
APCF_AvailableSpaces 1 個八位元 服務 UUID 表格中仍可使用的免費項目數

LE_APCF_Command: solicitation_uuid_sub_cmd

這個子指令用於新增或刪除徵求 UUID,或是清除晶片上篩選的徵求 UUID 清單。

子 OCF:0x04

子指令參數 大小 目的
APCF_Action 1 個八位元 0x00 - 新增
0x01 - 刪除
0x02 - 清除
刪除會刪除指定篩選器中的徵求 UUID 位址。
「清除」會清除指定篩選條件中的所有徵求 UUID。
APCF_Filter_Index 1 個八位元 篩選器索引 (0, max_filter-1)
APCF_UUID 2、4、16 個八位元 要新增至清單或從清單中刪除的徵求 UUID (16 位元、32 位元或 128 位元)。
APCF_UUID_MASK 2、4、16 個八位元 要新增至清單的徵求 UUID 遮罩 (16 位元、32 位元或 128 位元)。長度應與 APCF_UUID 相同。

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0x04 - APCF 徵求 UUID
APCF_Action 1 個八位元 回音指令的 APCF_Action
APCF_AvailableSpaces 1 個八位元 徵求 UUID 表格中仍可使用的免費項目數

LE_APCF_Command: local_name_sub_cmd

這個子指令用於新增或刪除本機名稱字串,或是清除晶片上篩選的本機名稱字串清單。

子 OCF:0x05

子指令參數 大小 目的
APCF_Action 1 個八位元 0x00 - 新增
0x01 - 刪除
0x02 - 清除
刪除會刪除指定篩選器中的指定本機名稱字串。
「清除」會清除指定篩選器中的所有本機名稱字串。
APCF_Filter_Index 1 個八位元 篩選器索引 (0, max_filter-1)
APCF_LocName_Mandata_or_SerData 變數大小 本地名稱的字元字串。

注意:
  • 目前,本機名稱字串的字元數上限為 29 個。
  • 如果動作是「清除」(0x2),則不適用

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0x05 - APCF Local Name
APCF_Action 1 個八位元 回音指令的 APCF_Action
APCF_AvailableSpaces 1 個八位元 區域名稱表格中仍可使用的免費項目數

LE_APCF_Command: manf_data_sub_cmd

這個子指令用於新增或刪除製造商資料字串,或清除晶片上篩選的製造商資料字串清單。

子 OCF:0x06

子指令參數 大小 目的
APCF_Action 1 個八位元 0x00 - 新增
0x01 - 刪除
0x02 - 清除
刪除會刪除指定篩選器中的指定製造商資料字串。
「清除」會清除指定篩選器中的所有製造商資料字串。
APCF_Filter_Index 1 個八位元 篩選索引 (0, max_filter-1)
APCF_LocName_Mandata_or_SerData 變數大小 製造商資料的字元字串。

注意:
  • 目前,本機名稱字串的字元數上限為 29 個。
  • 如果動作是「清除」(0x2),則不適用
APCF_ManData_Mask 變數大小 要新增至清單的製造資料遮罩。長度應與 APCF_LocName_or_ManData_or_SerData 相同。

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0x06 - APCF 製造商資料
APCF_Action 1 個八位元 回音指令的 APCF_Action
APCF_AvailableSpaces 1 個八位元 Manufacturer Data 表格中仍可使用的免費項目數

LE_APCF_Command:service_data_sub_cmd

這個子指令可用於新增或刪除服務資料字串,或清除晶片上篩選的服務資料字串清單。

子 OCF:0x07

子指令參數 大小 目的
APCF_Action 1 個八位元 0x00 - 新增
0x01 - 刪除
0x02 - 清除
「刪除」會刪除指定篩選器中的指定服務資料字串。
清除:清除指定篩選條件中的所有服務資料字串。
APCF_Filter_Index 1 個八位元 篩選索引 (0, max_filter-1)
APCF_LocName_Mandata_or_SerData 變數大小 服務資料的字元字串。

注意:
  • 目前,本機名稱字串的字元數上限為 29 個。
  • 如果動作是「清除」(0x2),則不適用
APCF_LocName_Mandata_or_SerData_Mask 變數大小 要新增至清單的服務資料遮罩。長度應與 APCF_LocName_or_ManData_or_SerData. 相同

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0x07 - APCF 服務資料
APCF_Action 1 個八位元 回音指令的 APCF_Action
APCF_AvailableSpaces 1 個八位元 服務資料表還可使用的免費項目數

LE_APCF_Command:ad_type_sub_cmd

這個子指令可用於新增或刪除 AD 類型,或清除晶片上篩選的 AD 類型清單。使用 read_extended_features_sub_cmd 檢查是否支援這項指令。
APCF_AD_DATA_Length 為 0 時,篩選 APCF_AD_TYPE,但不比較 AD 資料和 AD 資料遮罩。 如果收到的 ADV 封包資料長度超過 AD_DATA_LENGTH,請只比較 AD 資料的前 AD_DATA_LENGTH 個位元組,並忽略其餘資料。

子 OCF:0x09

子指令參數 大小 目的
APCF_Action 1 個八位元 0x00 - 新增
0x01 - 刪除
0x02 - 清除
刪除會刪除指定篩選器中的指定廣告類型。
「清除」會清除指定篩選條件中的所有廣告類型。
APCF_Filter_Index 1 個八位元 篩選索引 (0, max_filter-1)
APCF_AD_TYPE 1 個八位元 要新增至清單或從清單中刪除的 AD 類型。當 APCF_Action 為 0x02 (清除) 時,請忽略此要求
APCF_AD_DATA_Length 1 個八位元 0x00 - 表示不篩選資料內容
APCF_Action 為 0x02 (清除) 時,請忽略此值
APCF_AD_DATA 變數大小 大小可變,取決於 APCF_AD_DATA_Length
APCF_Action 為 0x02 (清除) 時,請忽略此值
APCF_AD_DATA_MASK 變數大小 大小可變,取決於 APCF_AD_DATA_Length
APCF_Action 為 0x02 (清除) 時,請忽略此項
長度應與 APCF_AD_DATA 相同。

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0x09 - APCF AD 類型
APCF_Action 1 個八位元 回音指令的 APCF_Action
APCF_AvailableSpaces 1 個八位元 廣告類型表格中仍可使用的免費項目數

LE_APCF_Command: read_extended_features_sub_cmd

這個子指令用於讀取擴充 APCF 功能。

子 OCF:0xFF

子指令參數 大小 目的
不適用 指令參數為空白。

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
APCF_opcode 1 個八位元 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 個八位元

支援的擴充功能位元遮罩:

  • 位元 0:支援傳輸探索服務篩選器
  • 第 1 位元:支援廣告類型篩選器
  • 位元 2 至 15:保留供日後使用

位元值

  • 0 = 不支援
  • 1 = 支援

控制器活動和能源資訊指令

這項資訊的目的是讓上層主機系統功能分析所有元件的活動總數,包括藍牙控制器及其巨集狀態,以及應用程式和架構中發生的情況。如要執行這項操作,必須從 BT 堆疊和控制器取得下列資訊:

  • BT 堆疊:回報控制器的目前巨集作業狀態
  • 韌體:回報匯總活動和能源資訊

BT 主機堆疊巨集狀態 (由使用者層級決定):

  • 閒置:[頁面掃描、LE 廣告、查詢掃描、LE 掃描]
  • 掃描:[paging/inquiry/trying to connect]
  • 有效:[ACL 連結開啟、SCO 連結進行中、嗅探模式]

控制器在生命週期內追蹤的活動包括 Tx 時間、Rx 時間、閒置時間和總耗電量。從主機讀取時會清除。

LE_Get_Controller_Activity_Energy_Info

這是供應商專用指令。

OCF:0x159

子指令參數 大小 目的
NA 空白指令參數

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
total_tx_time_ms 4 個八位元 執行 Tx 的總時間
total_rx_time_ms 4 個八位元 執行 Rx 的總時間
total_idle_time_ms 4 個八位元 總閒置時間 (非睡眠低耗電狀態)
total_energy_used 4 個八位元 能源消耗總量 [電流 (mA)、電壓 (V) 和時間 (ms) 的乘積]

LE extended set scan parameters command

這個指令可用於在控制器中啟用較大的掃描視窗和間隔。根據 BT Core 5.2 規格,掃描視窗和間隔的上限為 10.24 秒,這會阻礙應用程式掃描間隔超過 10.24 秒。

基本參考資料:BT Core 5.2 規格,第 2493 頁 (LE Set Scan Parameters Command)

OCF:0x15A

指令參數 大小 目的
LE_Ex_Scan_Type 1 個八位元 0x00 - 被動掃描。不得傳送 SCAN_REQ 封包 (預設)。
0x01 - 主動掃描。 可能會傳送 SCAN_REQ 封包。
LE_Ex_Scan_Interval 4 個八位元 定義為控制器從上次開始 LE 掃描到開始後續 LE 掃描之間的時間間隔。
範圍:0x0004 至 0x00FFFFFF
預設值:0x0010 (10 毫秒)
時間 = N * 0.625 毫秒
時間範圍:2.5 毫秒至 10442.25 秒
LE_Ex_Scan_Window 4 個八位元 低功耗掃描的持續時間。LE_Scan_Window 應小於或等於 LE_Scan_Interval
範圍:0x0004 至 0xFFFF
預設值:0x0010 (10 毫秒)
時間 = N * 0.625 毫秒
時間範圍:2.5 毫秒至 40.95 秒
Own_Address_Type 1 個八位元 0x00 - 公開裝置地址 (預設)
0x01 - 隨機裝置地址
LE_Ex_Scan_Filter_Policy 0x00 - 接受所有廣告封包 (預設值)。系統應忽略未指定給這部裝置的導向廣告封包。
0x01 - Ignore advertisement packets from devices not in the White List Only list. 系統應忽略未傳送至這部裝置的定向廣告封包。

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態

取得控制器偵錯資訊指令

這項資訊元素的目的是讓主機以二進位形式取得控制器偵錯資訊,以供後續處理和分析。這有助於偵錯現場問題,並為工程師提供工具包,以便記錄資訊以供分析。如果主機透過事件 (控制項偵錯資訊子事件) 要求,控制項可以提供資訊,也可以在控制項需要時自主提供資訊。舉例來說,這項功能可用於回報韌體狀態資訊、當機傾印資訊、記錄資訊等。

OCF:0x15B

指令參數 大小 目的
指令參數清單空白

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態

支援 A2DP 硬體卸載

A2DP 卸載功能支援將 A2DP 音訊編碼程序卸載至連結至 BT 控制器的音訊處理器。編碼音訊資料串流會直接從音訊處理器傳遞至 BT 控制器,不需要 BT 主機參與。BT 主機仍負責設定及控制 A2DP 工作階段。指令有兩個版本,舊版指令搭配子 OCF 0x01-0x02 時,僅支援開放原始碼轉碼器。Sub-OCF 0x03-0x04 版本與設定的轉碼器無關。

OCF:0x15D

啟動 A2DP 卸載 (舊版)

子 OCF:0x01

這個指令可用於設定 A2DP 卸載程序,以及啟動 A2DP 串流。

指令參數 大小 目的
Codec 4 個八位元 指定轉碼器類型
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
Max_Latency 2 個八位元 允許的最大延遲時間 (以毫秒為單位)。如果值為零,系統會停用排清作業。
SCMS-T_Enable 2 個八位元 八位元 0:可啟用 SCMS-T 標頭新增功能的旗標。
  • 0x00 - 不含 SCMS-T 標頭。
  • 0x01 - 包含 SCMS-T 標頭。

八位元 1:啟用 SCMS-T 標頭時的值。

Sampling_Frequency 4 個八位元 0x01 - 44100 Hz
0x02 - 48000 Hz
0x04 - 88200 Hz
0x08 - 96000 Hz
Bits_Per_Sample 1 個八位元 0x01 - 每單位樣本 16 位元
0x02 - 每單位樣本 24 位元
0x04 - 每單位樣本 32 位元
Channel_Mode 1 個八位元 0x01 - 單聲道
0x02 - 立體聲
Encoded_Audio_Bitrate 4 個八位元 編碼音訊位元率 (以每秒位元數為單位)。
0x00000000 - 音訊位元率未指定/未使用。
0x00000001 - 0x00FFFFFF - 編碼音訊位元率,以每秒位元數為單位。
0x01000000 - 0xFFFFFFFF - 保留。
Connection_Handle 2 個八位元 正在設定的 A2DP 連線的連線控制代碼
L2CAP_Channel_ID 2 個八位元 用於此 A2DP 連線的 L2CAP 頻道 ID
L2CAP_MTU_Size 2 個八位元 包含編碼音訊封包的 L2CAP MTU 大小上限
Codec_Information 32 個八位元 編解碼器專屬資訊。

SBC 轉碼器:

請參閱 A2DP v1.3 中的 SBC 轉碼器專屬資訊元素。
八位元 0:區塊長度 | 子頻帶 | 配置方法
八位元 1:最小位元集區值
八位元 2:最大位元集區值
八位元 3:取樣頻率 | 聲道模式
八位元 4-31:保留

AAC 轉碼器:

請參閱 A2DP v1.3 中的 AAC 編碼器專屬資訊元素
八位元 0:物件類型
八位元 1;b7:VBR
八位元 2-31:保留

LDAC 轉碼器:

八位元組 0-3:供應商 ID
0x0000012D

八位元 4-5:轉碼器 ID
0x00AA - LDAC
所有其他值皆為保留值

第 6 個八位元:位元率索引:
0x00 - 高
0x01 - 中
0x02 - 低
0x03 - 0x7E - 保留
0x7F - ABR (自適應位元率)
0x80 - 0xFF - 保留

八位元組 7:LDAC 聲道模式
0x01 - 立體聲
0x02 - 雙聲道
0x04 - 單聲道
其他保留

八位元組 8-31:保留

其他所有轉碼器:

八位元 0-31:保留

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Sub_Opcode 1 個八位元 0x01 - Start A2DP offload

啟動 A2DP 卸載

子 OCF:0x03

這個指令可用於設定 A2DP 卸載程序,以及啟動 A2DP 串流。

指令參數 大小 目的
Connection Handle 2 個八位元 有效 HCI 連線的控制代碼
L2CAP_Channel_ID 2 個八位元 為 A2DP 串流開啟的 L2CAP 頻道 ID
Data_Path_Direction 1 個八位元 0x00 - 輸出 (AVDTP 來源/合併)
0x01 - 輸入 (AVDTP 接收器/分割)
Peer_MTU 2 個八位元 與對等互連裝置協商的 L2CAP 封包大小上限。
CP_Enable_SCMS_T 1 個八位元 0x00 - 停用 SCMS-T 內容保護標頭
0x01 - 啟用 SCMS-T 內容保護標頭
CP_Header_SCMS_T 1 個八位元 啟用 SCMS-T 內容保護標頭 (CP_SCMS_T_Enable設為 0x01) 時,定義音訊內容前方的標頭值 (請參閱 A2DP 第 3.2.1-2 節),如藍牙指派號碼第 6.3.2 節所定義。
如果未啟用 SCMS-T 內容保護功能,系統會忽略這項設定。
Vendor_Specific_Parameters_Length 1 個八位元 廠商專屬參數的長度,範圍為 0 到 128。
如果未提供其他參數,則會使用值 0。
Vendor_Specific_Parameters 0 到 128 個八位元 藍牙音訊 HAL 提供的供應商專屬參數。 CodecParameters.vendorSpecificParameters[]

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Sub_Opcode 1 個八位元 0x03 - 開始 A2DP 卸載

停止 A2DP 卸載 (舊版)

子 OCF:0x02

這個指令用於停止 A2DP 卸載串流。

指令參數 大小 目的
指令參數清單為空白。

這個指令未定義任何參數。

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Sub_Opcode 1 個八位元 0x02 - 停止 A2DP 卸載

停止 A2DP 卸載

子 OCF:0x04

這個指令用於停止 A2DP 卸載串流。

指令參數 大小 目的
Connection Handle 2 個八位元 有效 HCI 連線的控制代碼
L2CAP_Channel_ID 2 個八位元 為 A2DP 串流開啟的 L2CAP 頻道 ID
Data_Path_Direction 1 個八位元 0x00 - 輸出 (AVDTP 來源/合併)
0x01 - 輸入 (AVDTP 接收器/分割)

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Sub_Opcode 1 個八位元 0x04 - 停止 A2DP 卸載

藍牙品質報告指令

BT Quality Report 指令功能會在藍牙控制器中啟動機制,向主機回報藍牙品質事件。你可以啟用四個選項:

  • 品質監控模式:控制器會定期將與連結品質相關的 BQR 子事件傳送至主機。
  • 即將達到 LSTO:如果連線的 BT 裝置在超過一半的連結監控逾時 (LSTO) 值時間內未收到任何封包,控制器會向主機回報「即將達到 LSTO」事件。
  • A2DP 音訊斷斷續續:控制器偵測到音訊斷斷續續的因素時,會向主機回報 A2DP 音訊斷斷續續事件。
  • (e)SCO 語音斷斷續續:控制器偵測到導致語音斷斷續續的因素時,會向主機回報 (e)SCO 語音斷斷續續事件。
  • 根層級炎症:當 HAL 或控制器發生嚴重錯誤,需要重新啟動藍牙時,控制器會將這個事件傳送至堆疊。
  • LMP/LL 訊息追蹤:控制器會將與遠端裝置握手的 LMP/LL 訊息傳送至主機。
  • 藍牙多重設定檔/共存排程追蹤記錄:控制器會將處理多個藍牙設定檔和 2.4 GHz 頻段無線共存的排程資訊傳送至主機。
  • 控制器偵錯資訊機制:啟用後,控制器可透過控制器偵錯資訊子事件,自主向主機回報偵錯記錄資訊。
  • LE Audio 斷斷續續:控制器偵測到導致音訊斷斷續續的因素時,會向主機回報 LE Audio 斷斷續續事件。
  • 進階 RF 統計資料模式:控制器會向主機回報相關的 RF 統計資料資訊,支援兩種報表用途:
    • 定期報表
    • 事件觸發條件 (串流開始/停止和連結品質事件觸發條件)。
  • 控制器健康狀態監控機制會透過兩種事件,向主機提供健康狀態相關資訊:定期報告和事件觸發報告。
  • 藍牙品質報告指令的 BQR_Report_Action:主機可以使用這項 HCI 指令,取得品質監控模式、能源監控模式或進階 RF 統計資料模式的一次性查詢。

OCF:0x15E

指令參數 大小 目的
BQR_Report_Action 1 個八位元 動作:新增 / 刪除 BQR_Quality_Event_Mask 參數中設定的品質事件報表,或清除所有事件。

0x00 - 新增
0x01 - 刪除
0x02 - 清除
0x03 - 單次查詢

刪除會清除特定品質事件的報表。
清除會清除所有品質事件報告 (可忽略 BQR_Quality_Event_Mask 參數)。

BQR_Quality_Event_Mask 4 個八位元 所選品質事件回報的位元遮罩。

位元 0:設為啟用品質監控模式。
位元 1:設為啟用接近 LSTO 事件 (適用於 ACL/(e)SCO/ISO)。
位元 2:設為啟用 A2DP 音訊斷斷續續事件。
位元 3:設為啟用 (e)SCO Voice Choppy 事件。
位元 4:設為啟用根發炎事件。
位元 5:設為啟用能源監控模式。
位元 6:設為啟用 LE Audio 斷斷續續事件。
位元 7:設為啟用連線失敗事件。
位元 8:設為啟用進階 RF 統計資料模式事件觸發程序。
位元 9:設為啟用進階 RF 統計資料定期報表。
位元 10:設為啟用控制器健康狀態監控機制事件觸發。(BQRv7 新增)
位元 11:設為啟用控制器健康狀態監控機制,定期回報。(BQRv7 新增)
位元 12 至 14:保留。
位元 15:設為啟用供應商專屬的品質事件。
位元 16:設為啟用 LMP/LL 訊息追蹤。
位元 17:設為啟用藍牙多重連結/共存排程追蹤。
位元 18:設為啟用控制器偵錯資訊機制。
位元 19:保留給卸載偵錯資訊。
位元 20:觸發 UART 記錄傾印事件。(BQRv7 中新增)
位元 21 至 30:保留。
位元 31:設為啟用供應商專屬追蹤。

BQR_Minimum_Report_Interval 2 個八位元 為所選品質事件定義品質事件回報的最小時間間隔。控制器韌體不應在定義的時間間隔內回報下一個事件。間隔設定應分別專用於要新增的品質事件。

單位:毫秒
預設值:0 (間隔不受限制)。
範圍:0 至 65535 毫秒

BQR_Vendor_Specific_Quality_Event_Mask 4 個八位元 所選供應商專屬品質事件回報的位元遮罩。
只有在設定 BQR_Quality_Event_Mask 的位元 15 時,這項參數才有效。

位元 0 至 31:保留。

BQR_Vendor_Specific_Trace_Mask 4 個八位元 所選廠商專屬追蹤記錄回報的位元遮罩。
只有在設定 BQR_Quality_Event_Mask 的位元 31 時,這項參數才會生效。

位元 0 至 31:保留。

Report_interval_multiple 4 個八位元 BQR_Minimum_Report_Interval 的乘數。如果這個值 >= 1,BQR 報表間隔會採用
格式,且 BQR 報表間隔 = BQR_Minimum_Report_Interval x Report_interval_multiple。
控制器韌體不得在定義的時間間隔內回報下一個事件。間隔設定專用於新增的品質事件。

單位:毫秒
預設值:1
範圍:0 到 4294967295 (0 等於設為 1)

注意:如果 BQR_Report_Interval 的設定大於控制器的能力,控制器必須在指令完成時傳回最大 BQR_Report_Interval 時間。

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Current_Quality_Event_Mask 4 個八位元 指出目前的位元遮罩設定。
位元 0:已啟用品質監控模式。
位元 1:已啟用即將達到 LSTO 事件回報功能。
位元 2:已啟用 A2DP 音訊斷斷續續事件報告。
位元 3:已啟用 (e)SCO 語音斷斷續續事件回報功能。
位元 4:已啟用根部發炎事件回報功能。
位元 5:已啟用能源監控模式。
位元 6:已啟用 LE Audio 斷斷續續事件回報功能。
位元 7:連線失敗事件。
位元 8:設為啟用「進階 RF 統計資料」模式事件觸發程序。
位元 9:設為啟用定期回報進階 RF 統計資料。
位元 10:設為啟用控制器健康狀態監控機制事件觸發條件。
位元 11:設為啟用,定期回報控制器健康狀態監控機制。
位元 12 至 14:保留。
位元 15:啟用廠商專屬品質事件回報功能。
第 16 位元:已啟用 LMP/LL 訊息追蹤。
位元 17:已啟用藍牙多重連結/共存排程追蹤。
位元 18:已啟用控制器偵錯資訊機制。
位元 19:保留給卸載偵錯資訊
位元 20:UART 記錄傾印事件觸發條件
位元 21 至 30:保留。
位元 31:已啟用供應商專屬追蹤。
Current_Vendor_Specific_Quality_Event_Mask 4 個八位元 指出目前的位元遮罩設定。
Current_Vendor_Specific_Trace_Mask 4 個八位元 指出目前的位元遮罩設定。
BQR_Report_interval 4 個八位元 指出目前的位元遮罩設定。
Current_Vendor_Specific_Trace_Mask 4 個八位元 BQR_Report_interval 的設定。這個值必須是 BQR_Minimum_Report_Interval * Report_interval_multiple 之間的最小值,或是控制器的最大支援間隔。

動態音訊緩衝區指令

動態音訊緩衝區會根據各種情境,變更藍牙控制器的音訊緩衝區大小,減少音訊不流暢的情況。

OCF:0x15F

取得音訊緩衝區時間功能

子 OCF:0x01

使用這項指令可從藍牙控制器取得音訊緩衝時間功能。

指令參數 大小 目的
空白的指令參數清單

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Dynamic_Audio_Buffer_opcode 1 個八位元 0x01 - 取得音訊緩衝區時間
Audio_Codec_Type_Supported 4 個八位元 支援的轉碼器類型位元遮罩
位元 0 - SBC
位元 1 - AAC
位元 2 - APTX
位元 3 - APTX HD
位元 4 - LDAC
位元 5 至 31 為保留位元
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 個八位元 Audio_Codec_Type_Supported 中指定的 Bit 0 轉碼器類型預設緩衝時間。
如果系統不支援 Bit 0 編碼器類型,這個值應為 0。
單位:毫秒
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 個八位元 Audio_Codec_Type_Supported 中指定的 Bit 0 轉碼器類型緩衝時間上限。
如果系統不支援位元 0 編碼器類型,這個值應為 0。
單位:毫秒
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 個八位元 Audio_Codec_Type_Supported 中指定的 Bit 0 轉碼器類型緩衝時間下限。
如果系統不支援位元 0 編碼器類型,這個值應為 0。
單位:毫秒
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 個八位元 Audio_Codec_Type_Supported 中指定的 Bit 1 轉碼器類型預設緩衝時間。
如果系統不支援位元 1 編碼解碼器類型,這個值應為 0。
單位:毫秒
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 個八位元 在 Audio_Codec_Type_Supported 中指定的 Bit 1 轉碼器類型緩衝時間上限。
如果系統不支援位元 1 編碼解碼器類型,這個值應為 0。
單位:毫秒
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 個八位元 Audio_Codec_Type_Supported 中指定的 Bit 1 編碼器類型緩衝時間下限。
如果系統不支援位元 1 編碼解碼器類型,這個值應為 0。
單位:毫秒
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 個八位元 Audio_Codec_Type_Supported 中指定的 Bit 31 轉碼器類型預設緩衝時間。
如果系統不支援位元 31 編解碼器類型,這個值應為 0。
單位:毫秒
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 個八位元 Audio_Codec_Type_Supported 中指定的 Bit 31 轉碼器類型緩衝時間上限。
如果系統不支援位元 31 編解碼器類型,這個值應為 0。
單位:毫秒
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 個八位元 Audio_Codec_Type_Supported 中指定的 Bit 31 編碼器類型緩衝時間下限。
如果系統不支援位元 31 編解碼器類型,這個值應為 0。
單位:毫秒

設定音訊緩衝時間

子 OCF:0x02

使用這項指令將音訊緩衝時間設為藍牙控制器。

指令參數 大小 目的
Audio_Codec_Buffer_Time 2 個八位元 目前所用轉碼器要求的音訊緩衝區時間。
單位:毫秒

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Dynamic_Audio_Buffer_opcode 1 個八位元 0x02 - 設定音訊緩衝時間
Audio_Codec_Buffer_Time 2 個八位元 藍牙控制器目前的音訊緩衝時間。
單位:毫秒

HCI 事件 (供應商專用)

在某些情況下,您需要提供廠商專屬的 HCI 事件。請參閱 BT Core 5.2 規格第 1897 頁的圖 5.4。事件參數 0 一律會包含第一個子事件代碼,其餘 HCI 事件會根據這個代碼解碼。

事件參數 大小 目的
HCI_vendor_specific_event_code 1 個八位元 0xFF
sub_event_code 1 個八位元 子事件代碼的大小為 1 個八位元,即 HCI 事件封包中緊接在參數長度後方的位元組。

儲存空間門檻違規子事件

這項事件表示儲存空間已超出門檻。

子事件代碼 = 0x54

子事件參數 大小 目的

LE multi-advertising state change subevent

這個事件表示廣告執行個體的狀態已變更。 目前,這個事件只會指出因連線而停止的廣告執行個體。

子事件代碼 = 0x55

子事件參數 大小 目的
Advertising_instance 1 個八位元 識別特定廣告執行個體
有效值為 0 到 max_advt_instances-1
State_Change_Reason 1 個八位元 0x00:已接收連線
Connection_handle 2 個八位元 識別導致 advt 執行個體遭停用的連線 (無效時為 0xFFFF)

LE 廣告追蹤子事件

這項事件表示廣告主已找到或遺失。

子事件代碼 = 0x56

子事件參數 大小 目的
APCF_Filter_Index 1 個八位元 篩選索引 (0, max_filter-1)
Advertiser_State 1 個八位元 0x00:找到廣告主
0x01:廣告主遺失
Advt_Info_Present 1 個八位元 0x00:廣告主資訊 (Advt_Info) 存在
0x01:廣告主資訊 (Advt_Info) 不存在
Advertiser_Address 6 個八位元 公開或隨機地址
Advertiser_Address_Type 1 個八位元 0x00:公開地址
0x01:隨機地址
Advt_Info Tx_Pwr[0]:1 個八位元
RSSI[0]:1 個八位元
Timestamp[0]:2 個八位元
Adv packet_len[0]:1 個八位元
Adv_packet[0]Adv_packet_len 個八位元
Scan_data_resp_len[0]:1 個八位元
Scan_data_resp[0]Scan_data_resp 個八位元

控制器偵錯資訊子事件

這個事件由控制器使用,可向主機提供二進位偵錯資訊。

子事件代碼 = 0x57

子事件參數 大小 目的
debug_block_byte_offset_start 2 個八位元 從開頭開始偵錯區塊位元組偏移
last_block 1 個八位元 0x00:有更多偵錯資料
0x01:最後一個二進位區塊;沒有更多偵錯資料
cur_pay_load_sz 2 個八位元 目前事件中的二進位區塊大小
Debug_Data 變數 cur_payload_sz」的偵錯資料

藍牙品質報告子事件

這個事件表示發生下列其中一種情況:發生藍牙品質事件、控制器上傳 LMP/LL 訊息追蹤和藍牙多重連結/Coex 排程追蹤,或是控制器傾印偵錯資訊資料。

子事件參數 大小 目的
Quality_Report_Id 1 個八位元 0x01:監控模式的品質報告。
0x02:即將達到 LSTO。
0x03:A2DP 音訊斷斷續續。
0x04:(e)SCO 語音斷斷續續。
0x05 ~ 0x06:保留。
07: LE 音訊斷斷續續。
0x08:連線失敗。
0x09 ~ 0xFF:保留。
Packet_Types 1 個八位元 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:保留
0x51:ISO 封包
0x52:1M PHY
0x53:2M PHY
0x54:Codec PHY S=2
0x55:Codec PHY S=8
0x56 ~ 0xFF:保留
Connection_Handle 2 個八位元 ACL/(e)SCO/ISO 連線控制代碼。
Connection_Role 1 個八位元 連線的執行角色。
0x00:中央
0x01:周邊
0x02 ~ 0xFF:保留。
TX_Power_Level 1 個八位元 指定 Connection_Handle 的目前傳輸功率位準。

這個值應與控制器回應 HCI_Read_Transmit_Power_Level HCI 指令的值相同。

RSSI 1 個八位元 [以 dBm 為單位]

指定 Connection_Handle 的接收訊號強度指標 (RSSI) 值。
這個值應為絕對接收器訊號強度值。
範圍:-127 至 +20

SNR 1 個八位元 [以 dB 為單位]

指定 Connection_Handle 的訊噪比 (SNR) 值。
控制器應提供連結所用所有通道的平均 SNR。

Unused_AFH_Channel_Count 1 個八位元 指出 AFH_channel_map 中未使用的頻道數量。
0x4F ~ 0xFF:保留。
AFH_Select_Unideal_Channel_Count 1 個八位元 指出受到干擾且品質不佳的頻道數量,但這些頻道仍選取用於 AFH。
藍牙規格允許的最低頻道數為 20 個,因此即使所有 79 個頻道都受到干擾且品質不佳,控制器仍須為 AFH 選擇至少 20 個頻道。
LSTO 2 個八位元 目前的連結監控逾時設定。
時間 = N * 0.625 毫秒
時間範圍:0.625 毫秒至 40.9 秒
Connection_Piconet_Clock 4 個八位元 指定 Connection_Handle 的微網時鐘。
這個值應與控制器回應 HCI_Read_Clock HCI 指令時的值相同,且參數「Which_Clock」為 0x01 (微網時鐘)。
單位:N * 0.3125 毫秒 (1 個藍牙時鐘)
Retransmission_Count 4 個八位元 自上一個事件以來的重傳次數。
向主辦人回報後,系統會重設這個計數。
No_RX_Count 4 個八位元 自上次事件以來,沒有 RX 計數。
如果系統未在排定的時間間隔收到封包,或收到的封包已損毀,計數就會增加。
向主辦人回報後,系統會重設這個計數。
NAK_Count 4 個八位元 自上次事件以來,NAK (否定確認) 計數。
向主辦人回報後,系統會重設這個計數。
Last_TX_ACK_Timestamp 4 個八位元 上次 TX ACK 的時間戳記。這項設定會根據微網中心裝置的藍牙時鐘 (CLK) 執行。
單位:N * 0.3125 毫秒 (1 個藍牙時鐘)
Flow_Off_Count 4 個八位元 自上次事件以來,控制器收到 Flow-off (STOP) 的次數。
向主辦人回報後,系統會重設這個計數。
Last_Flow_On_Timestamp 4 個八位元 上次 Flow-on (GO) 的時間戳記。這項設定會根據微網中心裝置的藍牙時鐘 (CLK) 執行。
單位:N * 0.3125 毫秒 (1 個藍牙時鐘)
Buffer_Overflow_Bytes 4 個八位元 [in Byte]

自上次事件以來發生的緩衝區溢位次數。
控制器會計算捨棄的資料位元組數。
向主辦人回報後,這個計數就會重設。

Buffer_Underflow_Bytes 4 個八位元 [in Byte]

自上次事件以來,緩衝區下溢的次數。
向主辦人回報後,這個計數就會重設。

bdaddr 6 個八位元 遠端裝置位址
cal_failed_item_count 1 個八位元 校正失敗的項目數量
TX_Total_Packets 4 個八位元 傳出的封包數。
TX_UnAcked_Packets 4 個八位元 未收到確認訊息的封包數。
向主辦人回報後,系統會重設這個計數。
TX_Flushed_Packets 4 個八位元 未由其排清點傳送的封包數。
向主辦人回報後,系統會重設這個計數。
TX_Last_Subevent_Packets 4 個八位元 Link Layer 在 CIS 事件的最後一個子事件中傳輸 CIS 資料 PDU 的封包數。
向主機回報後,系統會重設這個計數。
如果連結沒有有效值,則值為零。
CRC_Error_Packets 4 個八位元 自上次事件以來,收到 CRC 錯誤封包的數量。
向主辦人回報後,系統會重設這個計數。
RX_Duplicate_Packets 4 個八位元 自上次事件以來收到的重複 (重新傳輸) 封包數。
向主辦人回報後,系統會重設這個計數。
RX_Unreceived_Packets 4 個八位元 未接收封包的數量與 LE READ ISO Link Quality 指令的參數相同 (請參閱 Bluetooth 核心規格 5.4 版)。相關聯的串流為 CIS 和 BIS。
這個值遞增時,連結層不會在 CIS 的清除點或與其相關聯的事件結束時 (在 BIS 上;請參閱 Bluetooth 核心規格 5.4 版第 6 卷第 B 部分第 4.4.6.6 節),收到特定酬載。
Coex_Info_Mask 2 個八位元 位元 0 - CoexInvolvement:設定為指出產生這份報告時,可能涉及共存活動 (例如 A2DP Chops 和 Approaching LSTO)。
位元 1 - WL 2G Radio Active:設為表示 WLAN 2G Radio 處於有效狀態。
位元 2 - WL 2G 已連線:設為表示 WLAN 2G 無線電已啟用並連線。
位元 3 - WL 5G/6G Radio Active:設為表示 WLAN 5G/6G Radio 處於啟用狀態。
位元 4-15 - 保留
廠商專屬參數 (參數總長度 - TBD) * 八位元 控制器供應商可取得更多供應商專屬參數。

子事件代碼 = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

這項事件表示藍牙 HAL 或控制器發生嚴重錯誤,需要藍牙堆疊記錄這項情況並重新啟動。在任何情況下,控制器都必須先將 Root_Inflammation_Event 傳送至 Bluetooth 堆疊,才能傳送偵錯資訊事件的第一個片段。

Error_Code 參數包含從 HAL/控制器回報的錯誤代碼,如果是晶片組供應商專屬錯誤,則為 0。Vendor_Specific_Error_Code 包含來自 HAL/Controller 的晶片組供應商專屬錯誤代碼。如果 Error_Code 參數不是 0,則應設為 0。Error_Code 和 Vendor_Specific_Error_Code 參數不得同時為 0。

子事件參數 大小 目的
Quality_Report_Id 1 個八位元 0x00 ~ 0x04:保留。
0x05:根部發炎。
0x06 ~ 0xFF:保留。
Error_Code 1 個八位元 0x00:包含晶片組供應商專屬的錯誤代碼。
0x01 ~ 0xFF:發生控制器故障。如需錯誤代碼和說明清單,請參閱藍牙規格 [第 2 卷] 第 D 部分的「錯誤代碼」。
Vendor_Specific_Error_Code 1 個八位元 0x00:未包含晶片組供應商專屬錯誤代碼。
0x01 ~ 0xFF:晶片組供應商專屬的錯誤代碼。
廠商專屬參數 (參數總長度 - 4) * 八位元 控制器供應商可取得更多供應商專屬參數。

子事件代碼 = 0x58 [Quality_Report_Id = 0x06,能源監控事件]

這項事件會提供藍牙控制器的耗電量和運作狀態在特定時間範圍內的快照。開發人員和工程師可透過這項事件,分析控制器如何管理電源、找出最耗電的活動,以及排解電源相關問題。

報表中的參數會追蹤重要指標,包括:

  • 平均目前耗電量:控制器使用的整體電流。
  • 不同狀態下的時間:控制器處於閒置 (睡眠/低功耗) 狀態與活動狀態 (連線、傳輸或接收資料) 的總時間 (以毫秒為單位)。
  • 狀態轉換次數:控制器在閒置和啟用狀態之間切換的次數。
  • 特定無線電狀態的耗時:針對 BR/EDR (藍牙傳統) 和 LE (藍牙低功耗) 連結,分別提供傳輸 (Tx) 和接收 (Rx) 的耗時指標。
  • 平均傳輸功率位準:用於 BR/EDR 和 LE 連結傳輸的平均功率 (以 dBm 為單位)。
  • 詳細鏈結活動:報告主動傳輸或接收鏈結所花費的時間,並區分單一鏈結和雙鏈結作業,以及內部 (iPA) 和外部 (ePA) 功率放大器。
  • 掃描活動時間:控制器主動掃描 BR/EDR 和 LE 裝置的時間。

工程師可以檢查這些參數,深入瞭解控制器的電源效率,並提升效能。

子事件參數 大小 目的
Quality_Report_Id 1 個八位元 0x06:能源監控
Average_Current_Consumption 2 個八位元 [以毫安培為單位] 控制器所有活動的平均電流消耗量
Idle_Total_Time (睡眠) 4 個八位元 [以毫秒為單位] 處於閒置 (低耗電狀態、睡眠) 狀態的總時間。
Idle_Sate_Enter_Count 4 個八位元 指出控制器進入閒置狀態的次數。
Active_Total_Time 4 個八位元 [以毫秒為單位] 處於作用中狀態的總時間 (查詢、呼叫、ACL/SCO/eSCO/BIS/CIS 流量、處理任何工作)。
Active_State_Enter_Count 4 個八位元 指出控制器進入有效狀態的次數。
BR_RDR_Tx_Total_Time 4 個八位元 [以毫秒為單位] 處於 BR/EDR 特定 Tx(傳輸 ACL/SCO/eSCO 流量) 狀態的總時間。
BR_RDR_Tx_State_Enter_Count 4 個八位元 表示控制器進入 BR/EDR 特定 Tx 狀態的次數。
BR_RDR_Tx_Average_Power_Level 1 個八位元 [以 dBm 為單位] 所有 BR/EDR 連結的平均傳輸功率位準
BR_RDR_Rx_Total_Time 4 個八位元 [以毫秒為單位] 處於 BR/EDR 特定 Rx (從 ACL/SCO/eSCO 流量接收) 狀態的總時間。
BR_RDR_Rx_State_Enter_Count 4 個八位元 [以毫秒為單位] 控制器進入 BR/EDR 特定 Rx 狀態的次數。
LE_Tx_Total_Time 4 個八位元 [以毫秒為單位] 處於 LE 特定 Tx (傳輸 ACL/BIS/CIS 或 LE 廣告流量) 狀態的總時間。
LE_Tx_State_Enter_Count 4 個八位元 表示控制器進入 BR/EDR 特定 Rx 狀態的次數。
LE_Tx_Average_Power_Level 1 個八位元 [單位為 dBm] 所有 LE 連結的平均傳輸功率。
LE_Rx_Total_Time 4 個八位元 [以毫秒為單位] 處於 LE 特定 Rx (從 ACL/BIS/CIS 或 LE 掃描流量接收資料) 狀態的總時間。
LE_Rx_State_Enter_Count 4 個八位元 [以毫秒為單位] 指出控制器進入 LE 特定 Rx 狀態的次數
Report_Time_Duration (總時間) 4 個八位元 [以毫秒為單位] 收集電源相關資訊的總時間長度。
RX_Active_One_Chain_Time 4 個八位元 [以毫秒為單位] 一個鏈結中 RX 處於啟用狀態的時間長度
RX_Active_Two_Chain_Time 4 個八位元 [以毫秒為單位] 兩條鏈路中 RX 啟用的時間長度
TX_iPA_Active_One_Chain_Time 4 個八位元 [以毫秒為單位] 在單一鏈結中,內部 TX 處於有效狀態的時間長度
TX_iPA_Active_Two_Chain_Time 4 個八位元 [以毫秒為單位] 內部 TX 在兩個鏈結中處於活動狀態的時間長度
TX_ePA_Active_One_Chain_Time 4 個八位元 [以毫秒為單位] 一個鏈中外部 TX 處於活動狀態的時間長度
TX_ePA_Active_Two_Chain_Time 4 個八位元 [以毫秒為單位] 兩條鏈結中外部 TX 啟用的時間長度
BREDR_RX_Active_Scan_total_Time 4 個八位元 [以毫秒為單位] BR/EDR 掃描 RX 啟用時間的時間週期 (毫秒)
LE_RX_Active_Scan_total_Time 4 個八位元 [以毫秒為單位] LE 掃描 RX 啟用時間的時間週期 (毫秒)

子事件代碼 = 0x58 [Quality_Report_Id = 0x09~0x0A,進階 RF 統計資料事件]

藍牙進階 RF (射頻) 統計資料事件會提供藍牙控制器無線電行為的詳細成效指標。您可以透過下列兩種方式觸發事件:

  • 依觸發條件 (0x09):系統會回應特定指令,傳送一次性報表。
  • 依監控 (0x0A):控制器會定期傳送報表,間隔時間由您指定。

事件的參數基本上是封包計數器,可追蹤特定時間範圍內的各種無線電行為。

重要指標及其用途
  • 傳輸功率統計資料:這些計數器會追蹤使用不同功率設定傳送的封包,區分內部 (iPA) 和外部 (ePA) 功率放大器,以及各種天線分集 (Div) 或波束成形 (BF) 模式。這有助於判斷最常使用的電源和天線設定。
  • 接收訊號強度指標 (RSSI) 區間:這些參數會根據訊號強度,將接收到的封包分類。這份報告會提供特定 RSSI 範圍內的封包計數 (例如小於 -90 dBm、-70 至 -75 dBm),清楚呈現連結品質。如果「微弱」訊號區間 (例如 < -90 dBm) 的計數偏高,表示連線品質不佳。
  • RSSI 差異:這項指標會測量兩個接收天線之間的訊號強度差異 (如適用)。計數器會追蹤 RSSI 差異在不同範圍內的封包數量。大幅差異 (例如 >11 dBm) 可能表示有干擾或實體障礙物,因為其中一個天線接收到的訊號比另一個強得多。
  • 天線切換和重新傳輸:這份報表會計算控制器在天線之間切換的頻率,並追蹤重新傳輸 (ReTX) 的封包。如果重新傳輸次數過多,通常表示連線不穩定或不可靠,因此需要重新傳送封包。
  • 頻道品質:這些參數會根據 RSSI,提供不同通訊頻道健康狀態的高階摘要,並將頻道分類為「良好」、「尚可」、「不良」或「非常不良」。可立即掌握射頻環境概況。
  • TX 緩衝區佇列:這個部分會監控控制器傳輸緩衝區中等待的不同連結類型封包數量,例如 ACL (非同步連線導向邏輯連結)、LECONN (LE 連線) 和 LEISOC (LE 同步)。緩衝區計數偏高可能表示存在瓶頸,或是主機到控制器之間的資料流有問題。
子事件參數 大小 目的
Quality_Report_Id 1 個八位元 0x09:依觸發條件取得進階 RF 統計資料
0x0A:依監控器取得進階 RF 統計資料
Extension_info 1 個八位元 BQR 版本資訊。
BQRv6 為 0x01
BQRv7 為 0x02
Report_Time_Period 4 個八位元 收集成效資訊的時間範圍。單位:毫秒
TX_Power_iPA_BF 4 個八位元 iPA BF 的封包計數器
TX_Power_ePA_BF 4 個八位元 ePA BF 的封包計數器
TX_Power_iPA_Div 4 個八位元 ePA Div 的封包計數器
TX_Power_ePA_Div 4 個八位元 ePA Div 的封包計數器
RSSI_chain_50 4 個八位元 RSSI 鏈的封包計數器 > -50 dBm
RSSI_chain_50_55 4 個八位元 RSSI 鏈的封包計數器介於 -50 dBm ~ >-55 dBm 之間
RSSI_chain_55_60 4 個八位元 RSSI 鏈的封包計數器介於 -55 dBm ~ >-60 dBm 之間
RSSI_chain_60_65 4 個八位元 RSSI 鏈的封包計數器介於 -60 dBm ~ >-65 dBm
RSSI_chain_65_70 4 個八位元 RSSI 鏈的封包計數器介於 -65 dBm 和 >-70 dBm 之間
RSSI_chain_70_75 4 個八位元 RSSI 鏈的封包計數器介於 -70 dBm ~ >-75 dBm 之間
RSSI_chain_75_80 4 個八位元 RSSI 鏈的封包計數器介於 -75 dBm ~ >-80 dBm 之間
RSSI_chain_80_85 4 個八位元 RSSI 鏈的封包計數器介於 -80 dBm 和 >-85 dBm 之間
RSSI_chain_85_90 4 個八位元 RSSI 鏈的封包計數器介於 -85 dBm ~ >-90 dBm 之間
RSSI_chain_90 4 個八位元 RSSI 鏈的封包計數器 < -90 dBm
RSSI_delta_2 4 個八位元 RSSI 差異 < 2 dBm 的封包計數器
RSSI_delta_2_5 4 個八位元 RSSI 差異介於 2 dBm 至 5 dBm 之間的封包計數器
RSSI_delta_5_8 4 個八位元 RSSI 差異介於 5 dBm 至 8 dBm 之間的封包計數器
RSSI_delta_8_11 4 個八位元 RSSI 差異介於 8 dBm 至 11 dBm 之間的封包計數器
RSSI_delta_11 4 個八位元 RSSI 差異大於 11 dBm 的封包計數器
Antenna_Switch_Count 4 個八位元 天線切換事件的封包計數器
ReTX_iPA_BF 4 個八位元 最新時間範圍內 ReTX_iPA_BF 的封包計數器
ReTX_ePA_BF 4 個八位元 最新時間範圍內 ReTX_ePA_BF 的封包計數器
ReTX_iPA_Div 4 個八位元 最新時間範圍內 ReTX_iPA_Div 的封包計數器
ReTX_ePA_Div 4 個八位元 最新時間範圍內 ReTX_ePA_Div 的封包計數器
Channel_count_Good 1 個八位元 RSSI 落在 Bin-1 範圍內 (<-90) 的聲道數量
Channel_count_OK 1 個八位元 RSSI 落在 Bin-2 (-90~-76) 的通道數量
Channel_count_Bad 1 個八位元 RSSI 落在 Bin-3 (-76~-50) 範圍內的頻道數量
Channel_count_VeryBad 1 個八位元 RSSI 落在 Bin-4 範圍內 (>-50) 的頻道數量
TX_buffer_Queue_Count 4 個八位元 最新時間範圍內的緩衝區佇列狀態計數器 - 控制器 TX 緩衝區 [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

子事件代碼 = 0x58 [Quality_Report_Id = 0x0B~0x0C,控制器健康監控事件]

藍牙控制器健康狀態監控事件會提供控制器運作狀態的摘要。您可以透過下列兩種方式觸發事件:

  • 依觸發條件 (0x09):系統會回應特定指令,傳送一次性報表。
  • 依監控 (0x0A):控制器會定期傳送報表,間隔時間由您指定。

藍牙控制器健康狀態監控事件是診斷工具,可提供控制器運作狀態的摘要資訊。這項事件屬於藍牙品質報告 (BQR) 架構,可用於偵錯連線、電源管理和時間問題。您可以選擇傳送一次性報表或定期傳送,以持續監控。

重要指標及其用途
  • HCI 封包計數器:這項事件會追蹤從主機傳送到控制器的封包總數,反之亦然。這些計數器對於偵錯主機控制器介面 (HCI) 傳輸問題至關重要,因為這是軟體堆疊與藍牙控制器晶片之間的通訊管道。
  • 封包長度:事件會回報最後傳送和接收的 HCI 封包長度。這有助於確認資料傳輸是否正確,以及是否發生非預期的檔案大小問題。
  • 喚醒訊號計數:這份報表會列出 BT_WakeHOST_Wake 插針的總主張次數。這些實體信號對於電源管理至關重要,因為可用於從低功耗狀態喚醒相應實體。監控這些計數有助於偵錯電源相關問題,例如意外喚醒或無法進入睡眠模式。
  • 時間戳記:事件會提供多個時間戳記,包括上次喚醒訊號和上次 HCI 重設的時間。這些時間戳記有助於排解時間相關問題,並提供特定事件發生時間的參考點。
  • 看門狗計時器:特定旗標會指出事件是否是早期警告,表示控制器的看門狗計時器即將到期。這項警示非常重要,因為控制器可能凍結或故障。
  • 連結狀態:報表會匯總目前有效連線的狀態,包括 BR/EDRLECIS (連線等時串流) 連結的總數。此外,也會指出是否有任何SCO (同步連線導向) 連結處於啟用狀態。這項資訊會顯示控制器的目前連線負載快照。
子事件參數 大小 目的
Quality_Report_Id 1 Octet 0xB~0xC
0x0B:一次性或事件觸發的報表
0x0C:週期性報表。
Packet_Count_Host_to_Controller 4 個八位元 透過 HCI 傳輸從主機傳送至控制器的封包總數。這個欄位用於偵錯 HCI (例如 UART) 問題。行為:控制器收到 HCI 重設時,計數器會重設。
Packet_Count_Controller_to_Host 4 個八位元 傳送至主機的 HCI 事件封包總數。這個欄位用於偵錯 HCI (例如 UART) 問題。行為:控制器收到 HCI 重設時,計數器會重設。
Last_Packet_Length_Host_to_Controller 2 個八位元 傳送至主機 UART 的最後一個 HCI 封包長度。注意:HCI 封包長度最多 2 個八位元 (包括 HCI、ACL、SCO、ISO)
Last_Packet_Length_Controller_To_host 2 個八位元 從主機 UART 收到的最後一個 HCI 封包長度。注意:HCI 封包長度最多 2 個八位元 (包括 HCI、ACL、SCO、ISO)
Total_BT_Wake_Count 4 個八位元 主機實體對 BT_Wake 釘選判斷結果的匯總統計。這個欄位可做為診斷工具,用於偵錯電源相關問題。行為:控制器收到 HCI 重設時,計數器會重設。
Total_HOST_Wake_Count 4 個八位元 由控制器啟動的 Host_Wake 針腳斷言匯總計算。這個欄位可做為診斷工具,用於偵錯電源相關問題。行為:控制器收到 HCI 重設時,計數器會重設。
Last_BT_Wake_TimeStamp 4 個八位元 主機判斷 BT_Wake 插針的時間戳記。實作這個欄位是為了偵錯電源問題。
Last_HOST_Wake_TimeStamp 4 個八位元 控制器最近一次聲明 Host_Wake 針腳的時間戳記。這個欄位用於偵錯電源問題。
Reset_Timestamp 4 個八位元 指出最近一次 HCI 重設完成時間的時間戳記。這個欄位僅用於協助解決時間相關問題。應做為初始記錄點,所有其他項目都以這個點為參照。
Current_Timestamp 4 個八位元 產生這項事件的目前時間。此欄位用於排解時間差異問題。所有其他元素都會參照這個觸發錄音點。
Is_WatchDog_Timer_About_To_Expire 4 個八位元 這個旗標表示健康狀態事件是由控制器產生,目的是提前警告看門狗逾期。目前的時間戳記用於指出發生時間。
Coex_Status_Mask 2 個八位元 位元 0 - 保留
Total_Links_BR_EDR_LE_Active 1 Octet 處於「有效」狀態的 BR/EDR/LE 連結總數。
Total_Links_BR_EDR_Sniff 1 Octet 處於 Sniff/Idle 狀態的 BR/EDR 連結總數。
Total_Links_CIS 1 Octet ISO 的連結總數。
Is_SCO_Active 1 Octet 指標,用於檢查 SCO 連結目前是否已啟用。
子事件參數 大小 目的
Quality_Report_Id 1 個八位元 0x00 ~ 0x10:保留。
0x11:LMP/LL 訊息追蹤。
0x12:藍牙多重連結/共存排程追蹤。
0x13:控制器偵錯資訊資料傾印。
0x14 ~ 0xFF:保留。
Connection_Handle 2 個八位元 連線控點。
廠商專屬參數 (參數總長度 - 4) * 八位元 LMP 訊息追蹤的供應商專屬格式、藍牙多重連結/共存排程追蹤,以及控制器偵錯資訊資料傾印。

子事件代碼 = 0x5C

啟用後,系統必須在每個 ISO 間隔期間產生這項事件。

啟用
如要啟用,請在 HCI_LE_Setup_ISO_Data_Path 標準指令中選取供應商 Data_Path_ID 程式碼 0x19。 即使控制器收到這項指令後不會採取任何行動,仍須接受 HCI_Configure_Data_Path 指令,且 Data_Path_ID 必須設為 0x19Vendor_Specific_Config_Length 必須設為 0
分派時間點
事件會從 ISO 間隔的開頭 (CIG 或 BIG 錨點) 發出,直到下一個 ISO 間隔為止。控制器會使用 Anchor_Point_Delay 指出 ISO 間隔的有效開始時間延遲。
控制器同步
在 ISO 間隔開始時,控制器會將目前值遞增設定的 ISO_Interval ÷ SDU_Interval,藉此計算 StreamSN;在第一個間隔中,系統會將其初始化為 0。
接著,針對 ISO FIFO 中的每個封包,適用下列規定:
  • 控制器會計算兩個序號之間的包裝差異 SNdiff
    SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000
  • (SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
    封包位於重新傳輸視窗中。這項資料應已排定在先前的間隔時間傳輸,現在可重新傳輸。如果不是這種情況 (尚未排定傳輸時間),則表示該檔案延遲收到。必須使用 In_Status 向主機發出信號。這類封包可以捨棄或排定傳輸時間;選擇方式由實作定義。
  • 或在 SNdiff < ISO_Interval ÷ SDU_Interval 時:
    系統會排定從這個事件傳輸封包,直到發生清除逾時為止。
  • 或者,當 SNdiff >= ISO_Interval ÷ SDU_IntervalSNdiff <= Max_Forward_Buffers:
    封包會在未來傳輸,並透過後續事件傳輸。由於封包是依序傳送,因此這個條件會結束這個間隔的封包搜尋作業。
    主機使用的緩衝區不會傳達給控制器,但會限制為 Max_Forward_Buffers = 16
  • 或是不符合上述任一條件:
    封包遭到捨棄、達到清除逾時限制,或收到格式錯誤的封包。

子事件參數 大小 目的
Connection_Handle 2 個八位元 CIS 或 BIS 的連線控制代碼
範圍:0x0000 至 0x0EFF
Sequence_Number 2 個八位元 由控制器管理的串流序號。

建立 CIS 或 BIS 時會初始化為 0,並在每個 ISO 間隔中,以 ISO 同步間隔定義的 SDU 數量遞增,如 ISO_interval ÷ SDU_Interval 所示。
Anchor_Point_Delay 2 個八位元 事件生成與有效 BIG 或 CIG 錨點或 ISO 間隔開始之間的時間差 (以微秒為單位)。有效錨點時間戳記的定義如下:
Event generation time - Anchor_Point_Delay

範圍:0 到 ISO 間隔 (以微秒為單位)
In_Status 2 個八位元 控制器 ISO 緩衝區狀態

在 ISO 間隔開始時,每個位元 bi 都會在 SDU (Sequence_Number + i) mod 0x10000 可用時設定。如果沒有 SDU,系統會將其識別為 Not received from the host

i 的範圍為 0 到 ISO_Interval ÷ SDU_Interval - 1。 對於 i 的其他值,位元會設為 0。
Tx_Status 2 個八位元 傳輸狀態 (相對於序號 SDU):
(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000) mod 0x10000

當系統已成功傳輸並確認所有已識別 SDU 的 PDU (依序號),就會設定每個位元 bi

i 的範圍為 0 到 ISO_Interval ÷ SDU_Interval - 1。 對於 i 的其他值,位元會設為 0。
在廣播群組中,傳輸內容一律應會收到確認訊息。

支援多廣告主

支援多位廣告主有以下目標:

  • 支援多則廣告 (max_advt_instances)
  • 不同傳輸功率可提供不同範圍
  • 不同的廣告內容
  • 為每位廣告主提供個人化回覆
  • 每位廣告主適用的隱私權 (無法追蹤)
  • 可連線

為使這項規格與現有標準相近,我們提供下列廠商專屬指令。這些值衍生自藍牙核心 4.1 規格。

LE_Multi_Advt_Command

OCF:0x154

指令參數 大小 目的
Multi_advt_opcode 1 個八位元 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

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Multi_advt_opcode 1 個八位元 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

基本參考資料:Bluetooth Core 4.1 Specification,第 964 頁 (LE Set Advertising Parameter Command)

子 OCF:0x01

子指令參數 大小 目的
Advertising_Interval_Min 依規格 依規格
Advertising_Interval_Max 依規格 依規格
Advertising_Type 依規格 依規格
Own_Address_Type 依規格 依規格
Own_Address 依規格 依規格
Direct_Address_Type 依規格 依規格
Direct_Address 依規格 依規格
Advertising_Channel_Map 依規格 依規格
Adverstising_Filter_Policy 依規格 依規格
Advertising_Instance 1 個八位元 指定上述參數是否適用於執行個體
Tx_power 1 個八位元 Transmit_Power
單位 - dBm (帶正負號的整數)
範圍 (-70 至 +20)

設定這個多重廣告執行個體時,Own_Address 參數可能是主機設定的地址。這樣一來,在傳輸第一個信號時,就能擁有可解析的私人位址。無論連線狀態如何,執行個體都會繼續顯示廣告。主機 BT 堆疊可以在連線後,對執行個體發出啟動廣告的指令。

如上述指令所示,系統會為這項指令產生「Command Complete」事件,詳情請參閱《Bluetooth Core 4.1 Specification》。如果廣告執行個體或 Tx_Power 參數無效,控制器會傳回非成功 (無效參數) 程式碼。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Multi_advt_opcode 1 個八位元 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

基本參考資料:Bluetooth Core 4.1 規格,第 969 頁 (LE Set Advertising Data Command)

子 OCF:0x02

子指令參數 大小 目的
Advertising_Data_Length 依規格 依規格
Advertising_Data 依規格 依規格
Advertising_Instance 1 個八位元 指定上述參數是否適用於執行個體

如上述指令所示,系統會為這項指令產生「Command Complete」事件,詳情請參閱《Bluetooth Core 4.1 Specification》。如果廣告執行個體或 Tx_Power 參數無效,控制器會傳回非成功代碼。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Multi_advt_opcode 1 個八位元 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command:Set_Scan_Resp_Data_Multi_Sub_Cmd

基本參考資料:Bluetooth Core 4.1 Specification,第 970 頁 (LE Set Scan Response Data Command)

子 OCF:0x03

子指令參數 大小 目的
Scan_Response_Data_Length 依規格 依規格
Scan_Response_Data 依規格 依規格
Advertising_Instance 1 個八位元 指定上述參數是否適用於執行個體

如上述指令所示,系統會為這項指令產生「Command Complete」事件,詳情請參閱《Bluetooth Core 4.1 Specification》。如果廣告執行個體或 Tx_Power 參數無效,控制器會傳回非成功代碼 (無效參數)。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Multi_advt_opcode 1 個八位元 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

基本參考資料:Bluetooth Core 4.1 Specification,第 963 頁 (LE Set Random Address Command)

子 OCF:0x04

子指令參數 大小 目的
隨機地址 依規格 依規格
Advertising_Instance 1 個八位元 指定上述參數是否適用於執行個體

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Multi_advt_opcode 1 個八位元 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

基本參考資料:Bluetooth Core 4.1 Specification,第 971 頁 (該核心規格中的 LE Set Advertise Enable Command)

OCF:0x05

子指令參數 大小 目的
Advertising_Enable 1 個八位元 值為 1 代表啟用,如果設為其他值,則會停用。
Advertising_Instance 1 個八位元 指定上述參數是否適用於執行個體。 執行個體 0 代表標準 HCI 執行個體。

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Multi_advt_opcode 1 個八位元 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

卸載私人位址的解析作業

這項功能會解析控制器韌體或硬體中的私人位址,可帶來下列好處:

  • 主機在解析私人地址時的延遲時間
  • 避免喚醒主機,節省電力

LE_Set_RPA_Timeout

OCF:0x15C

指令參數 大小 目的
LE_local_IRK 16 octet 用於產生隨機可解析位址的本機裝置 IRK。
tRPA_min 2 個八位元 以秒為單位的 RPA 產生逾時時間下限。控制器必須為這個逾時時間之後的任何廣告/掃描/連線事件,產生新的可解析位址。
有效範圍:300 至 1800
tRPA_max 2 個八位元 以秒為單位的 RPA 生成逾時時間上限。控制器的逾時時間到期前,必須為任何廣告/掃描/連線事件產生新的可解析位址。
有效範圍:tRPA_min-1800
傳回參數 大小 目的
Status 1 個八位元 指令的狀態。

建議的 HCI 狀態值:
0x00 成功
0x01 未知指令 (如不支援)
0x12 無效的指令參數 (如有任何參數超出指定範圍)

LE_RPA_offload_Command

OCF:0x155

指令參數 大小 目的
RPA_offload_opcode 1 個八位元 0x1 - 啟用客戶專屬功能
0x2 - 將 IRK 新增至清單
0x3 - 從清單中移除 IRK
0x4 - 清除 IRK 清單
0x5 - 讀取 IRK 清單項目

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Event_RPA_offload_opcode 1 個八位元 0x1 - 啟用客戶專屬功能
0x2 - 將 IRK 新增至清單
0x3 - 從清單中移除 IRK
0x4 - 清除 IRK 清單
0x5 - 讀取 IRK 清單項目

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF:0x01

子指令參數 大小 目的
enable_customer_specific_feature_set 1 個八位元 0x01 - 啟用卸載 RPA 功能
0x00 - 停用卸載 RPA 功能

主機必須根據晶片功能啟用 RPA 卸載。請參閱LE_Get_Vendor_Capabilities_Command。 每個晶片在韌體中可能會有不同的 max_irk_list_sz

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Event_cust_specific_feature_opcode 1 個八位元 0x01 [Enable customer-specific feature]

LE_RPA_offload: Add_IRK_to_list_sub_Command

子 OCF:0x02

子指令參數 大小 目的
LE_IRK 16 個八位元 LE IRK (第 1 個位元組 LSB)
Address_Type 1 個八位元 0:公開地址
1:隨機地址
LE_Device_Address 6 個八位元 與 IRK 相關聯的公開或隨機地址 (第 1 個位元組 LSB)

系統會為這個指令產生「Command Complete」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Event_cust_specific_feature_opcode 1 個八位元 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 個八位元 目前作業完成後可用的 IRL 清單項目

LE_RPA_offload: Remove_IRK_to_list_sub_Command

子 OCF:0x03

子指令參數 大小 目的
Address_Type 1 個八位元 0:公開地址
1:隨機地址
LE_Device_Address 6 個八位元 與 IRK 相關聯的公開或隨機地址

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Event_cust_specific_feature_opcode 1 個八位元 0x03 [從清單中移除 IRK]
LE_IrkList_AvailableSpaces 1 個八位元 目前作業完成後可用的 IRL 清單項目

LE_RPA_offload: Clear_IRK_list_sub_Command

子 OCF:0x04

子指令參數 大小 目的

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Event_cust_specific_feature_opcode 1 個八位元 0x04 [Clear IRK List]
LE_IrkList_AvailableSpaces 1 個八位元 目前作業完成後可用的 IRL 清單項目 [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

子 OCF:0x05

子指令參數 大小 目的
LE_read_IRK_list_entry-index 1 個八位元 IRK 清單的索引 [0, max_irk_list_sz-1]

系統會為這個指令產生「指令完成」事件。

傳回參數 大小 目的
Status 1 個八位元 「指令完成」狀態
Event_cust_specific_feature_opcode 1 個八位元 0x05 [Read IRK List Entry]
LE_Read_IRK_List_entry 1 個八位元 主機要讀回的 IRK 索引 (IRK 清單大小上限為 32)
LE_IRK 16 個八位元 IRK 值
Address_Type 1 個八位元 0:公開地址
1:隨機地址
LE_Device_Address 6 個八位元 與 IRK 相關聯的公開或隨機地址
LE_Resolved_Private_Address 6 個八位元 這個 IRK 目前可解析的私人地址

Sniff Offload

「Sniff Offload」功能會將 Sniff 模式管理作業從藍牙主機堆疊卸載至藍牙控制器。控制器可藉此管理進入/退出 Sniff 模式的時間,並套用可設定的 Sniff 和 Sniff 子評分參數,而主機則可根據藍牙設定檔活動變化,保留參數選取控制權。

Sniff Offload States

本節定義藍牙控制器中與 Sniff Offload 函式相關的狀態。我們定義了兩種全域狀態,可識別藍牙控制器啟用 Sniff Offload 的狀態。系統定義了兩種連線專屬狀態,可在藍牙控制器處於「Sniff Offload Enabled」狀態時,識別 BR/EDR 連線的狀態。

全球狀態

系統定義了兩種全域狀態,可識別藍牙控制器相對於「關閉封包監聽卸載」啟用狀態的狀態。

Sniff Offload Disabled State

藍牙控制器預設處於「Sniff Offload Disabled」狀態。藍牙控制器應會處理藍牙主機發出的 HCI_Sniff_Mode、HCI_Exit_Sniff_Mode 和 HCI_Sniff_Subrating 指令。藍牙控制器也應根據藍牙主機設定的事件遮罩,將 HCI_Mode_Change 和 HCI_Sniff_Subrating 事件轉送至藍牙主機。

Sniff Offload Enabled State

藍牙控制器成功處理「WriteSniffOffloadEnable」以啟用 Sniff Offload 後,就會處於「Sniff Offload Enabled」狀態。在這個狀態下,藍牙控制器會根據藍牙主機設定的事件遮罩和事件抑制旗標的邏輯 AND 函式,將 HCI_Mode_Change 和 HCI_Sniff_Subrating 事件轉送至藍牙主機。

連線特定狀態

藍牙控制器處於「Sniff Offload Enabled」狀態時,每個有效 ACL 都會處於下列兩種狀態之一。

待處理參數狀態

當藍牙控制器處於「Sniff Offload Enabled」狀態,但藍牙主機尚未針對目前的 ACL 至少發出一次「WriteSniffOffloadParameters」供應商專屬指令時,ACL 會處於「Pending-Parameters」狀態。

控制開始狀態

當藍牙控制器處於「Sniff Offload Enabled」狀態,且藍牙主機已針對目前的 ACL 至少發出一次「WriteSniffOffloadParameters」供應商專屬指令時,ACL 會處於「Control-Started」狀態。

WriteSniffOffloadEnable

OCF:0x310

指令參數 大小 目的
Enable_Sniff_Offload 1 個八位元 0x00:停用
0x01:啟用
Subrating_Max_Latency 2 個八位元 「最大延遲」參數應可用於計算遠端裝置可使用的最大嗅探子速率。預設值:T*sniff* Latency = N × 0.625 毫秒 (1 個基頻時段) 範圍:0x0002 至 0xFFFE 時間範圍:1.25 毫秒至 40.9 秒
Subrating_Min_Remote_Timeout 2 個八位元 遠端裝置可使用的最低嗅探模式逾時 (T*sniff_mode_timeout*) 預設值:0x0000 逾時 = N × 0.625 毫秒 (1 個基頻時段) 範圍:0x0000 至 0xFFFE 時間 範圍:0 秒至 40.9 秒
Subrating_Min_Local_Timeout 2 個八位元 本機裝置可使用的最低封包監聽模式逾時時間 (T*sniff_mode_timeout*)。 預設值:0x0000 超時 = N × 0.625 毫秒 (1 個基頻時段) 範圍:0x0000 至 0xFFFE 時間範圍:0 秒至 40.9 秒
Suppress_Mode_Change_Event 1 個八位元 0x00:藍牙控制器應根據 HCI_Set_Event_Mask 指令中設定的配置,向主機回報 HCI Mode_Change 事件。
0x01:藍牙控制器不應向主機回報 HCI Mode_Change 事件。
Suppress_Sniff_Subrating_Event 1 個八位元 0x00:藍牙控制器應根據 HCI_Set_Event_Mask 指令中設定的設定,向主機回報 HCI Sniff_Subrating 事件。
0x01:藍牙控制器不應向主機回報 HCI Sniff_Subrating 事件。

WriteSniffOffloadParameters

OCF:0x311

指令參數 大小 目的
Connection_Handle 2 個八位元 16 位元 BR/EDR ACL 連線控制代碼。範圍:0x0000 至 0x0EFF
Sniff_Max_Interval 2 個八位元 – Bluetooth SIG 定義的範圍,通常用於進入 Sniff 模式。範圍:0x0002 至 0xFFFE;僅偶數值有效。必要範圍:0x0006 至 0x0540。時間 = N × 0.625 毫秒。時間範圍:1.25 毫秒至 40.9 秒。特殊情況:0x0000:用於選取「Push-Active」Sniff-Offload 模式。0x0001:用於選取「Prefer-Active」Sniff-Offload 模式。
Sniff_Min_Interval 2 個八位元 範圍:0x0002 至 0xFFFE;僅偶數值有效。必要範圍:0x0006 至 0x0540 時間 = N × 0.625 毫秒。時間範圍:1.25 毫秒至 40.9 秒
Sniff_Attempts 2 個八位元 嘗試嗅探時的基頻接收時段數量。長度 = N × 1.25 毫秒 範圍:0x0001 至 0x7FFF 時間範圍:1.25 毫秒至 40.9 秒 控制器強制範圍:1 至 T*sniff* ÷ 2
Sniff_Timeout 2 個八位元 用於偵測逾時的基頻接收時段數。長度 = N × 1.25 毫秒 範圍:0x0000 至 0x7FFF 時間範圍:0 毫秒至 40.9 秒 控制器強制範圍:0 至 0x0028
Link_Inactivity_Timeout 2 個八位元 逾時值 (以毫秒為單位)。每次 HCI-ACL 交易時,都會啟動/重設 Link_Inactivity Timer。計時器到期時,控制器應啟動進入 Sniff 模式。
Subrating_Max_Latency 2 個八位元 「最大延遲」參數應可用於計算遠端裝置可使用的最大嗅探子速率。預設值:T*sniff* Latency = N × 0.625 毫秒 (1 個基頻時段) 範圍:0x0002 至 0xFFFE 時間範圍:1.25 毫秒至 40.9 秒
Subrating_Min_Remote_Timeout 2 個八位元 遠端裝置可使用的最低嗅探模式逾時 (T*sniff_mode_timeout*) 預設值:0x0000 逾時 = N × 0.625 毫秒 (1 個基頻時段) 範圍:0x0000 至 0xFFFE 時間 範圍:0 秒至 40.9 秒
Subrating_Min_Local_Timeout 2 個八位元 本機裝置可使用的最低封包監聽模式逾時時間 (T*sniff_mode_timeout*)。 預設值:0x0000 超時 = N × 0.625 毫秒 (1 個基頻時段) 範圍:0x0000 至 0xFFFE 時間範圍:0 秒至 40.9 秒
Allow_Exit_Sniff_On_Rx 1 個八位元 這個旗標可控制接收方向 HCI-ACL 交易的 Sniff 模式結束。0x00:Do not exit sniff on Rx. 0x01:在 Rx 接收方向上結束 Sniff。HCI-ACL 定義為透過 HCI 從控制器傳輸至主機的 ACL 封包。
Allow_Exit_Sniff_On_Tx 1 個八位元 這個旗標可控制傳輸方向 HCI-ACL 交易的 Sniff 模式退出作業。0x00:請勿在 Tx 上結束嗅探。0x01:在 Tx 傳輸方向上結束 Sniff,HCI-ACL 定義為從主機到控制器的 ACL 封包傳輸 (透過 HCI)。