主機控制器介面 (HCI) 用於與藍牙控制器互動。
本文檔提供了藍牙 (BT) 和藍牙低功耗 (BLE) HCI 要求清單。目的是讓主機 BT 堆疊供應商和 BT 控制器供應商符合這些平台要求,以便使用下述功能集。
本文檔將藍牙核心 5.2 規格稱為「規格」。藍牙核心 5.2 規格以及其他採用的文件可在藍牙 SIG 網站上取得。
整體設計概述
晶片能力及配置
作為一個開放平台,Android 擁有軟體版本、OEM、供應商以及平台和晶片功能的矩陣。
為了管理不斷變化的環境並管理遷移,本文檔描述了允許 BT 控制器公開其功能(超出標準藍牙核心 5.2 規範)的設計理念。然後,主機 BT 堆疊可以使用這些功能來確定要啟用哪些功能。
支援開放標準
Android 的目標之一是在藍牙規範獲得批准後支援開放標準。如果下面描述的功能在未來藍牙規範的標準 HCI 方法中可用,我們將傾向於將該方法設為預設方法。
供應商特定的功能
供應商特定命令: LE_Get_Vendor_Capabilities_Command
操作碼命令欄位 (OCF):0x153
命令參數 | 尺寸 | 目的 |
---|---|---|
不適用 | 清空命令參數列表 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
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 = 有能力 v0.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.04 位元組[0] = 0x01 位元組[1] = 0x04 |
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 高清 位元 4 - LDAC 位 5-31 保留 |
bluetooth_quality_report_support | 1 個八位元組 | 支援藍牙品質事件報告 0 = 沒有能力 1 = 有能力 |
dynamic_audio_buffer_support | 4 個八位元組 | 支援藍牙控制器中的動態音訊緩衝區 支援的編解碼器類型的位元掩碼 位元 0 - SBC 位 1 - AAC 位元 2 - APTX 位元 3 - APTX 高清 位元 4 - LDAC 位 5-31 保留 |
a2dp_offload_v2_support | 1 個八位元組 | 支援藍牙控制器中的 A2dp Offload v2 指令(請參閱啟動 A2DP 卸載、停止 A2DP 卸載) 0 = 不支持 1 = 支持 |
掃描結果批量處理
設計目標是增強藍牙 LE 掃描回應事件通知傳送到主機的方式,以節省主機的電量。
透過減少控制器通知主機應用處理器掃描結果的頻率,主機應用處理器可以更長時間地保持空閒/睡眠狀態。這減少了主機的功耗。 LE_Get_Vendor_Capabilities_Command
的回傳參數total_scan_results_storage
表示晶片儲存掃描結果的能力。
此功能重點在於藍牙控制器中 LE 掃描結果儲存設施的管理和配置。記憶體用於臨時批次廣告資料以及掃描控制器接收的資料和元數據,以便稍後傳送到主機。
韌體應支援兩種類型的批次處理,可以同時進行:
- 被截斷。包含以下資訊元素:{MAC、TX Power、RSSI、Timestamp}
- 滿的。包含以下資訊元素:{MAC、TX Power、RSSI、時間戳記、進階資料、掃描回應}
LE_Batch_Scan_Command
OCF:0x156
命令參數 | 尺寸 | 目的 |
---|---|---|
Batch_Scan_opcode | 1 個八位元組 | 0x1 - 啟用客戶特定功能 0x2 - 設定批次掃描儲存參數 0x3 - 設定批量掃描參數 0x4 - 讀取批次掃描結果參數 |
將為此命令產生命令完成事件。啟用客戶特定功能不會啟動掃描。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
Batch_Scan_opcode | 1 個八位元組 | 0x1 - 啟用客戶特定功能 0x2 - 設定批次掃描儲存參數 0x3 - 設定批量掃描參數 0x4 - 讀取批次掃描結果參數 |
LE_Batch_Scan_Command:啟用客戶特定功能
子 OCF:0x01
子命令參數 | 尺寸 | 目的 |
---|---|---|
enable_customer_specific_feature_set | 1 個八位元組 | 0x01 - 啟用批次掃描功能 0x00 - 停用批次掃描功能 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
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 - 丟棄最舊的廣告 1 - 丟棄 RSSI 最弱的廣告 |
如果啟用,此子命令將開始批次掃描。在截斷掃描中,結果以截斷形式存儲,其中截斷樣式的唯一鍵 = { BD_ADDR,
scan_interval}。這意味著每個掃描間隔僅記錄一個BD_ADDR will
。截斷模式要保留的記錄如下:{ BD_ADDR
, Tx Power, RSSI, Timestamp}
啟用完整模式時,將使用主動掃描並記錄掃描回應。完整樣式唯一金鑰 = {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 – 完整模式數據 |
將為此命令產生命令完成事件。當主機發出此命令時,控制器中的所有結果可能無法容納在一個命令完成事件中。主機將迭代發出此命令,直到命令完成事件中的對應結果指示記錄數為0,這表示控制器沒有更多記錄可以與主機通訊。每個命令完成事件只能包含一種資料類型(完整或截斷)的多個記錄。
控制器和主機時間參考不同步。時間戳的單位是50ms。時間戳記的值是基於主機給定Read_Batch_Scan_Results_Sub_cmd
時的值。如果韌體中的指令到達時間為T_c
,則韌體中取得時間戳記的實際時間為T_fw
。報告時間將為:( T_c
- T_fw
)。 T_c
和T_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_指令
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:或 1:與 如果選擇「AND」邏輯,則僅當 ADV 封包包含清單中的所有項目時,該封包才會通過篩選器。 如果選擇「OR」邏輯,則如果 ADV 封包包含清單中的任何項目,則 ADV 封包將通過過濾器。 |
APCF_Filter_Logic_Type | 1 個八位元組 | 0x00:或 0x01:與 注意: APCF_Feature_Selection 的前三個欄位的邏輯類型為 N/A,始終為「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_mode 為on_found 時有效。[以毫秒為單位] 韌體在報告之前停留並收集額外廣告的時間。 |
onfound_timeout_cnt | 1 個八位元組 | 僅當delivery_mode 為on_found 時有效。[數數] 如果 onFound 中的廣告在韌體中停留了onfound_timeout 持續時間,它將收集一些廣告並檢查計數。如果計數超過onfound_timeout_cnt ,則此後立即報告OnFound 。 |
rssi_low_thresh | 1 個八位元組 | 僅當delivery_mode 為on_found 時有效。[單位:dBm] 如果接收到的資料包的 RSSI 不高於 RSSI 低閾值,則認為廣告資料包未被看到。 |
onlost_timeout | 2 個八位元組 | 僅當delivery_mode 為on_found 時有效。[以毫秒為單位] 如果廣告被發現後,在 lost_timeout 時間內沒有連續看到,則立即報告遺失。 |
num_of_tracking_entries | 2 個八位元組 | 僅當delivery_mode 為on_found 時有效。[數數] 每個過濾器要追蹤的廣告商總數。 |
RSSI 值必須使用 2 的補碼來表示負值。
主機應能夠配置多個過濾器,並將APCF_Application_Address_type
設定為 0x02(對於所有廣播位址)以管理各種過濾器組合。
過濾、批次和報告是相互關聯的概念。每個廣告和相關的掃描回應都必須一個接一個地通過所有過濾器。因此,結果操作( delivery_mode
)與過濾密切相關。交付模式有以下幾種: report_immediately
、 batch
和onFound
。 OnLost
值與OnFound
相關,因為當遺失時它將出現在OnFound
之後。
此處理流程描述了概念模型:
當接收到廣告(或掃描回應)幀時,它將按串行順序應用於所有過濾器。廣告可能會導致基於一個過濾器的立即報告以及由於不同的過濾器操作而導致的相同過濾器的大量報告。
RSSI 等級閾值(高和低)能夠控制訊框何時對過濾器處理可見,即使控制器接收到有效資料包也是如此。如果交付模式設定為立即或批次,則將考慮訊框的 RSSI 以進行進一步的控制器處理。不同的應用程式需要不同的報告和批次行為。這允許多個應用程式同時在韌體中直接報告和/或批次結果。例如,當一個應用程式啟用批量掃描,隨後另一個應用程式發出常規 LE 掃描時,就會出現這樣的情況。在發出大量掃描之前,框架/應用程式會設定適當的過濾器。稍後,當第二個應用程式發出定期掃描時,先前的批次將繼續。然而,由於定期掃描,它類似於在概念上添加空過濾器(以及所有現有過濾器)以及 LE 掃描命令。啟動時,LE 掃描指令參數優先。當常規 LE 掃描被停用時,控制器將恢復到先前的批次掃描(如果有)。
OnFound
交付模式基於配置的篩選器。觸發過濾器操作成功的組合被視為要追蹤onLost
實體。對應的事件是 LE Advt 追蹤子事件。
過濾器的OnFound/OnLost
轉換(如果啟用)將如下所示:
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
APCF_opcode | 1 個八位元組 | 0x01 - APCF 設定過濾參數 |
APCF_Action | 1 個八位元組 | 回顯指令的APCF_Action |
APCF_AvailableSpaces | 1 個八位元組 | 過濾器表中可用條目的數量 |
LE_APCF_Command:廣播_位址_子_cmd
此子指令用於新增或刪除廣告主地址或清除片上過濾的廣告商地址清單。
子 OCF:0x02
子命令參數 | 尺寸 | 目的 |
---|---|---|
APCF_Action | 1 個八位元組 | 0x00 - 添加 0x01 - 刪除 0x02 - 清除 刪除將刪除指定過濾器中的指定廣播公司位址。 清除將清除指定過濾器中的所有廣播公司位址。 |
APCF_Filter_Index | 1 個八位元組 | 過濾器索引 (0, max_filter-1 ) |
APCF_Broadcaster_Address | 6 個八位元組 | 用於新增至廣播位址清單或從廣播位址清單中刪除的 6 位元組裝置位址 |
APCF_Application_Address_type | 1 個八位元組 | 0x00:公共 0x01:隨機 0x02:NA(位址類型不適用) |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
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:solicititation_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 相同。 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
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 | 尺寸可變 | 本地名稱的字串。 筆記:
|
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
APCF_opcode | 1 個八位元組 | 0x05 - APCF 本地名稱 |
APCF_Action | 1 個八位元組 | 回顯指令的APCF_Action |
APCF_AvailableSpaces | 1 個八位元組 | 在本地名稱表中仍然可用的免費條目數量 |
LE_APCF_指令: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 | 尺寸可變 | 製造商資料的字串。 筆記:
|
APCF_ManData_Mask | 尺寸可變 | 要新增到清單中的製造商資料遮罩。它的長度要與APCF_LocName_or_ManData_or_SerData 相同。 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
APCF_opcode | 1 個八位元組 | 0x06 - APCF 製造商數據 |
APCF_Action | 1 個八位元組 | 回顯指令的APCF_Action |
APCF_AvailableSpaces | 1 個八位元組 | 製造商資料表中仍可用的免費條目數量 |
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 | 尺寸可變 | 服務資料的字串。 筆記:
|
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
檢查是否支援該指令。
子 OCF:0x09
子命令參數 | 尺寸 | 目的 |
---|---|---|
APCF_Action | 1 個八位元組 | 0x00 - 添加 0x01 - 刪除 0x02 - 清除 刪除將刪除指定過濾器中指定的AD類型。 清除將清除指定過濾器中的所有 AD 類型。 |
APCF_Filter_Index | 1 個八位元組 | 過濾器索引(0, max_filter -1) |
APCF_AD_TYPE | 1 個八位元組 | 用於新增至清單或從清單中刪除的 AD 類型。 APCF_Action 為 0x02 時忽略(清除) |
APCF_AD_DATA_Length | 尺寸可變 | 0x00 - 表示不過濾資料內容APCF_Action 為 0x02 時忽略(清除) |
APCF_AD_DATA | 尺寸可變 | APCF_Action 為 0x02 時忽略(清除) |
APCF_AD_DATA_MASK | 尺寸可變 | APCF_Action 為 0x02 時忽略(清除) 它的長度應與 APCF_AD_DATA 相同。 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
APCF_opcode | 1 個八位元組 | 0x09 - APCF AD 類型 |
APCF_Action | 1 個八位元組 | 回顯指令的APCF_Action |
APCF_AvailableSpaces | 1 個八位元組 | AD 類型表中仍可用的免費條目數 |
LE_APCF_Command:讀取擴充功能_子_cmd
此子命令用於讀取擴充 APCF 功能。
子 OCF:0xFF
子命令參數 | 尺寸 | 目的 |
---|---|---|
不適用 | 命令參數為空。 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
APCF_opcode | 1 個八位元組 | 0xFF - APCF_讀取_擴充_功能 |
APCF_extended_features | 2 個八位元組 | 支援的擴充功能的位元遮罩:
位元值
|
控制器活動和能量資訊命令
此資訊的目的是讓更高的主機系統功能結合應用程式和框架中發生的情況來分析所有元件的整體活動,包括 BT 控制器及其宏觀狀態。為此,BT 堆疊和控制器需要以下資訊:
- BT堆疊:報告控制器目前的巨集操作狀態
- 韌體:報告匯總活動和能源訊息
BT 主機堆疊巨集狀態,在使用者層級決定:
- 空閒:[頁面掃描、LE advt、查詢掃描]
- 掃描:[尋呼/查詢/嘗試連線]
- 活動:[ACL 連結打開,SCO 連結正在進行,嗅探模式]
控制器在其生命週期內追蹤的活動包括發送時間、接收時間、空閒時間和總能耗。從主機讀取時它們被清除。
LE_Get_Controller_Activity_Energy_Info
這是供應商特定的命令。
OCF:0x159
子命令參數 | 尺寸 | 目的 |
---|---|---|
不適用 | 空命令參數 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
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擴充設定掃描參數指令
此命令可用於在控制器中啟用更大的掃描視窗和間隔。根據 BT Core 5.2 規範,掃描視窗和間隔的上限為 10.24 秒,這阻礙了應用程式的掃描間隔超過 10.24 秒。
基礎參考:BT Core 5.2 規範,第 2493 頁(LE 設定掃描參數指令)
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 掃描的持續時間。 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 - 忽略來自不在僅白名單清單中的裝置的廣告資料包。未針對該裝置尋址的定向廣告資料包將被忽略。 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
取得控制器偵錯資訊命令
此資訊元素的目的是由主機以二進位形式取得控制器偵錯訊息,以進行後處理和分析。這有助於調試現場問題,並為工程師提供了記錄資訊以進行分析的工具包。當主機透過事件(控制器偵錯資訊子事件)請求時,控制器可以提供訊息,或在控制器需要時自主提供資訊。範例用途可以是報告韌體狀態資訊、故障轉儲資訊、日誌記錄資訊等。
OCF:0x15B
命令參數 | 尺寸 | 目的 |
---|---|---|
不適用 | 清空命令參數列表 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
A2DP 硬體卸載支援
A2DP 卸載功能支援將 A2DP 音訊編碼過程卸載到連接到 BT 控制器的音訊處理器。編碼的音訊資料流直接從音訊處理器傳遞到 BT 控制器,無需 BT 主機的參與。 BT主機仍然負責A2DP會話的配置和控制。有兩個版本的命令可用。 Sub OCF 0x01-0x02 的舊指令僅支援開源編解碼器。具有 Sub-OCF 0x02-0x03 的版本與配置的編解碼器無關。
OCF:0x15D
啟動 A2DP 卸載(舊版)
子 OCF:0x01
使用此命令可設定 A2DP 卸載進程並啟動 A2DP 流。
命令參數 | 尺寸 | 目的 |
---|---|---|
Codec | 4 個八位元組 | 指定編解碼器類型 0x01-SBC 0x02-AAC 0x04-APTX 0x08 - APTX 高清 0x10-LDAC |
Max_Latency | 2 個八位元組 | 允許的最大延遲(以毫秒為單位)。值為零會停用刷新。 |
SCMS-T_Enable | 2 個八位元組 | 八位元組 0:啟用新增 SCMS-T 標頭的標誌。
八位元組 1:SCMS-T 標頭啟用時的值。 |
Sampling_Frequency | 4 個八位元組 | 0x01 - 44100 赫茲 0x02 - 48000 赫茲 0x04 - 88200 赫茲 0x08 - 96000 赫茲 |
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 編解碼器特定資訊元素。 AAC 編解碼器: 請參閱 A2DP v1.3 中的 AAC 編解碼器特定資訊元素 LDAC編解碼器: 八位元組 0-3:供應商 ID 八位元位元組 4-5:編解碼器 ID 八位元組 6:位元率索引: 八位元位元組 7:LDAC 通道模式 八位元組 8-31:保留 所有其他編解碼器: 八位元組 0-31:保留 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
Sub_Opcode | 1 個八位元組 | 0x01 - 啟動 A2DP 卸載 |
啟動 A2DP 卸載
子 OCF:0x03
使用此命令可設定 A2DP 卸載進程並啟動 A2DP 流。
命令參數 | 尺寸 | 目的 |
---|---|---|
Connection Handle | 2 個八位元組 | 活動 HCI 連線的句柄 |
L2CAP_Channel_ID | 2 個八位元組 | 為 A2DP 流開啟的 L2CAP 通道的標識符 |
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[] 。 |
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
Sub_Opcode | 1 個八位元組 | 0x03 - 啟動 A2DP 卸載 |
停止 A2DP 卸載(舊版)
子 OCF:0x02
此指令用於停止 A2DP Offload 串流。
命令參數 | 尺寸 | 目的 |
---|---|---|
不適用 | 命令參數列表為空。 |
沒有為此命令定義參數。
將為此命令產生命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1 個八位元組 | 命令完成狀態 |
Sub_Opcode | 1 個八位元組 | 0x02 - 停止 A2DP 卸載 |
停止 A2DP 卸載
子 OCF:0x04
此指令用於停止 A2DP Offload 串流。
命令參數 | 尺寸 | 目的 |
---|---|---|
Connection Handle | 2 個八位元組 | 活動 HCI 連線的句柄 |
L2CAP_Channel_ID | 2 個八位元組 | 為 A2DP 流開啟的 L2CAP 通道的標識符 |
Data_Path_Direction | 1 個八位元組 | 0x00 - 輸出(AVDTP 來源/合併) 0x01-輸入(AVDTP接收器/分割) |
該命令將產生一個命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1個八位元字 | 命令完成狀態 |
Sub_Opcode | 1個八位元字 | 0x04-停止A2DP卸載 |
藍牙品質報告命令
BT品質報告指令功能啟動了藍牙控制器中的機制,向主機報告藍牙品質事件。您可以啟用四個選項:
- 品質監視模式:控制器會定期向主機發送連結品質相關的BQR子事件。
- 接近LSTO:如果未從連接的BT設備收到資料包的時間超過連結監督逾時(LSTO)值,則控制器向主機報告了接近的LSTO事件。
- A2DP音訊斷斷續續:當控制器偵測到引起斷斷續續音訊的因素時,控制器向主機報告了A2DP音訊波動事件。
- (e)SCO語音斷斷續續:當控制器偵測到引起波動聲音的因素時,控制器向主機報告了(e)SCO語音斷斷續續事件。
- 根部發炎:當HAL或控制器遇到致命錯誤並且需要重新啟動藍牙時,控制器將其發送到堆疊。
- LMP/LL訊息追蹤:控制器將使用遠端設備的LMP/LL訊息握手傳送到主機。
- 藍牙多人/COEX調度追蹤:控制器將其調度資訊發送有關處理多個藍牙設定檔和2.4 GHz頻段中的無線共存的資訊。
- 控制器偵錯資訊機制:啟用時,控制器可以自主透過控制器偵錯資訊的偵錯記錄資訊向主機報告。
OCF:0x15E
命令參數 | 尺寸 | 目的 |
---|---|---|
BQR_Report_Action | 1個八位元字 | 新增 /刪除品質事件的新增 /刪除報告中設定的品質事件,或清除全部。 0x00-添加 刪除將清除特定品質事件的報告。 |
BQR_Quality_Event_Mask | 4個八位元字 | 選定品質事件報告的位元遮罩。 位元0:設定為啟用品質監控模式。 |
BQR_Minimum_Report_Interval | 2個八位元字 | 定義選定品質事件的品質事件報告的最小時間間隔。控制器韌體不應在定義的時間間隔內報告下一個事件。間隔設定應針對正在新增的品質事件各自和專用。 單位:MS |
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:保留。 |
該命令將產生一個命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1個八位元字 | 命令完成狀態 |
Current_Quality_Event_Mask | 4個八位元字 | 指示目前的位元遮罩設定。 位元0:啟用品質監視模式。 位元1:接近LSTO事件報告已啟用。 位元2:啟用了A2DP音訊斷斷續續事件報告。 位元3:(e)啟用了SCO語音斷斷續續事件報告。 位4:啟用根部發炎事件報告。 位元5:啟用了能量監控模式。 位元6:啟用了LE音訊斷斷續續的事件報告。 位元7:連線失敗事件。 位8〜14:保留。 位元15:啟用了特定於供應商的品質事件報告。 位元16:啟用LMP/LL訊息追蹤。 位元17:啟用了藍牙多連結/COEX調度追蹤。 位元18:啟用控制器調試資訊機制。 位19〜30:保留。 位元31:啟用了特定於供應商的追蹤。 |
Current_Vendor_Specific_Quality_Event_Mask | 4個八位元字 | 指示目前的位元遮罩設定。 |
Current_Vendor_Specific_Trace_Mask | 4個八位元字 | 指示目前的位元遮罩設定。 |
動態音訊緩衝區命令
動態音訊緩衝區透過基於各種情況更改藍牙控制器中的音訊緩衝區大小來減少音訊故障。
OCF:0x15F
取得音訊緩衝時間功能
子OCF:0x01
使用此命令從藍牙控制器中取得音訊緩衝時間功能。
命令參數 | 尺寸 | 目的 |
---|---|---|
不適用 | 空命令參數列表 |
該命令將產生一個命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
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個八位元字 | 位元0編解碼器類型的預設緩衝區時間在audio_codec_type_supported中指定。 如果不支援BIT 0編解碼器類型,則該值應為0。 單位:MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 | 2個八位元字 | 位元0編解碼器類型的最大緩衝區類型中指定了AUDIO_CODEC_TYPE_SUPPORTED中的最大緩衝時間。 如果不支援BIT 0編解碼器類型,則該值應為0。 單位:MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 | 2個八位元字 | 位元0編解碼器類型的最小緩衝時間在AUDIO_CODEC_TYPE_SUPPORT中指定。 如果不支援BIT 0編解碼器類型,則該值應為0。 單位:MS |
Audio_Codec_Buffer_Default_Time_For_Bit_1 | 2個八位元字 | 位元1編解碼器類型的預設緩衝區時間audio_codec_type_supported中指定的預設緩衝區。 如果不支援BIT 1編解碼器類型,則該值應為0。 單位:MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 | 2個八位元字 | 位元1編解碼器類型的最大緩衝區類型中指定了AUDIO_CODEC_TYPE_SUPPORTED中的最大緩衝時間。 如果不支援BIT 1編解碼器類型,則該值應為0。 單位:MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 | 2個八位元字 | 位元1編解碼器類型的最小緩衝時間在AUDIO_CODEC_TYPE_SUPPORT中指定的。 如果不支援BIT 1編解碼器類型,則該值應為0。 單位:MS |
..... | ..... | ..... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 | 2個八位元字 | 預設的Buffer時間31編解碼器類型在AUDIO_CODEC_TYPE_SUPPORTED中指定。 如果不支援BIT 31編解碼器類型,則該值應為0。 單位:MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 | 2個八位元字 | 位於AUDIO_CODEC_TYPE_SUPPORTED中指定的位元31編解碼器類型的最大緩衝時間。 如果不支援BIT 31編解碼器類型,則該值應為0。 單位:MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 | 2個八位元字 | 位置31編解碼器類型的最小緩衝時間,在AUDIO_CODEC_TYPE_SUPPORT中指定。 如果不支援BIT 31編解碼器類型,則該值應為0。 單位:MS |
設定音訊緩衝區時間
子OCF:0x02
使用此命令將音訊緩衝時間設定為藍牙控制器。
命令參數 | 尺寸 | 目的 |
---|---|---|
Audio_Codec_Buffer_Time | 2個八位元字 | 目前使用的編解碼器請求音訊緩衝時間。 單位:MS |
該命令將產生一個命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1個八位元字 | 命令完成狀態 |
Dynamic_Audio_Buffer_opcode | 1個八位元字 | 0x02-設定音訊緩衝區時間 |
Audio_Codec_Buffer_Time | 2個八位元字 | 藍牙控制器中的目前音訊緩衝時間。 單位:MS |
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多自動國家變化子事件
此事件表示廣告實例已改變了狀態。目前,此事件僅用於指示由於連線而停止了哪些廣告實例。
子事件代碼= 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 OctetsScan_data_resp_len[0] :1八位Scan_data_resp[0] : Scan_data_resp Octets |
控制器偵錯資訊子事件
控制器使用此事件將二進位偵錯資訊提供給主機。
子事件代碼= 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調度追蹤,或控制器轉儲的偵錯資訊資料。
子事件代碼= 0x58 [Quality_report_id = 0x01〜0x04,連結品質相關事件]
子事件參數 | 尺寸 | 目的 |
---|---|---|
Quality_Report_Id | 1個八位元字 | 0x01:監視模式上的品質報告。 0x02:接近LSTO。 0x03:A2DP音訊斷斷續續。 0x04:(e)SCO語音斷斷續續。 0x05〜0x06:保留。 0x07:Le Audio Phoppy。 0x08:連線失敗。 0x09〜0xff:保留。 |
Packet_Types | 1個八位元字 | 0x01:id 0x02:空 0x03:民意調查 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:保留 0x51:ISO數據包 0x52〜0xff:保留 |
Connection_Handle | 2個八位元字 | ACL/(E)SCO/ISO連接手柄。 |
Connection_Role | 1個八位元字 | 為連線執行角色。 0x00:中央 0x01:外圍 0x02〜0xff:保留。 |
TX_Power_Level | 1個八位元字 | 指定連接_handle的目前發射功率等級。 該值應與控制器對HCI_READ_READ_TRANSMIT_POWER_LEVEL HCI指令的回應相同。 |
RSSI | 1個八位元字 | [在DBM中] 指定連線_handle的接收訊號強度指示(RSSI)值。 |
SNR | 1個八位元字 | [在DB中] 指定連線_handle的訊號雜訊比(SNR)值(SNR)值。 |
Unused_AFH_Channel_Count | 1個八位元字 | 指示AFH_CHANNEL_MAP中未使用的通道的數量。 0x4f〜0xff:保留。 |
AFH_Select_Unideal_Channel_Count | 1個八位元字 | 指示幹擾和品質不佳的管道數量,但仍被選為AFH。 藍牙規範允許的最小通道數為20,因此,即使所有79個頻道都乾擾且品質不佳,控制器仍需至少選擇20個AFH頻道。 |
LSTO | 2個八位元字 | 當前連結監督超時設定。 時間= n * 0.625 ms 時間範圍:0.625 ms至40.9 s |
Connection_Piconet_Clock | 4個八位元字 | 指定連接的piconet時脈。 此值應與控制器對HCI_READ_CLOCK HCI指令的回應相同,該指令使用parameter“ who_clock” 0x01(piconet clock)。 單位:n * 0.3125 ms(1個藍牙時鐘) |
Retransmission_Count | 4個八位元字 | 自上次事件以來的重傳次數。 向主機報告後,該計數應重設。 |
No_RX_Count | 4個八位元字 | 自上次事件以來沒有RX數。 當計劃的時間插槽未收到資料包或收到的資料包被損壞時,計數會增加。 向主機報告後,該計數應重設。 |
NAK_Count | 4個八位元字 | 自上次事件以來,NAK(負面的)計數。 向主機報告後,該計數應重設。 |
Last_TX_ACK_Timestamp | 4個八位元字 | 最後TX ACK的時間戳。它基於Piconet Central(CLK)的藍牙時鐘。 單位:n * 0.3125 ms(1個藍牙時鐘) |
Flow_Off_Count | 4個八位元字 | 自上次事件以來,控制器接收流量(停止)的次數。 向主機報告後,該計數應重設。 |
Last_Flow_On_Timestamp | 4個八位元字 | 最後一個流程的時間戳記(GO)。它基於Piconet Central(CLK)的藍牙時鐘。 單位:n * 0.3125 ms(1個藍牙時鐘) |
Buffer_Overflow_Bytes | 4個八位元字 | [位元組] 自上次事件以來,緩衝區溢位計數。 |
Buffer_Underflow_Bytes | 4個八位元字 | [位元組] 自上次事件以來,緩衝底流量計數。 |
bdaddr | 6個八位元字 | 遠端設備位址 |
cal_failed_item_count | 1個八位元字 | 校準計數失敗項目 |
TX_Total_Packets | 4個八位元字 | 發送的資料包數。 |
TX_UnAcked_Packets | 4個八位元字 | 未收到確認的資料包數量。 向主機報告後,該計數是重置的。 |
TX_Flushed_Packets | 4個八位元字 | 不會透過其齊平點發送的資料包數量。 向主機報告後,該計數是重置的。 |
TX_Last_Subevent_Packets | 4個八位元字 | 在CIS事件的最後一個子事件中,連結層連結的資料包數量傳輸了CIS資料PDU。 向主機報告後,該計數是重置的。 如果該連結沒有有效值,則該值為零。 |
CRC_Error_Packets | 4個八位元字 | 自上次事件以來,接收到的帶有CRC錯誤的軟體包的數量。 向主機報告後,該計數是重置的。 |
RX_Duplicate_Packets | 4個八位元字 | 自上次事件以來收到的重複(重傳)軟體包的數量。 向主機報告後,該計數是重置的。 |
供應商特定參數 | (參數總長度-TBD) *八位元字 | 為了使控制器供應商獲得更多供應商特定參數。 |
子事件代碼= 0x58 [Quality_report_id = 0x05,根發炎事件]
此事件顯示藍牙HAL或控制器遇到了致命的錯誤,需要藍牙堆疊來記錄這種情況並重新啟動。控制器必須在發送偵錯訊息事件的第一個片段之前,必須將root_inflammation_event傳送到藍牙堆疊。
error_code參數包含從HAL/控制器報告的錯誤代碼,如果是晶片組供應商特定的錯誤,則包含0。 vendor_specific_error_code包含來自HAL/控制器的晶片組供應商特定的錯誤代碼。如果參數error_code不是0,則應設定為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 = 0x11〜0x13,日誌轉儲相關事件]
子事件參數 | 尺寸 | 目的 |
---|---|---|
Quality_Report_Id | 1個八位元字 | 0x00〜0x10:保留。 0x11:LMP/LL訊息追蹤。 0x12:藍牙多連結/COEX調度追蹤。 0x13:控制器調試資訊資料轉儲。 0x14〜0xff:保留。 |
Connection_Handle | 2個八位元字 | 連接手柄。 |
供應商特定參數 | (參數總長度-4) *八位元字 | LMP訊息追蹤的供應商特定格式,藍牙多連結/COEX調度追蹤和控制器偵錯資訊資料轉儲。 |
多縱向器支援
多主縱向支持的目標如下:
- 能夠支援多個廣告(
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
基本參考:藍牙核心4.1規格,第964頁(LE SET廣告參數指令)
子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個八位元字 | 發射功率 單位 - 在DBM中(簽名整數) 範圍(-70至+20) |
在設定此多主題實例時, Own_Address
參數可以是主機配置的位址。這提供了在第一個信標傳輸時擁有可分解的私人地址的能力。實例的廣告將繼續,無論連線連線為何。主機BT堆疊可以發出命令,以在實例,貼文連線上啟動廣告。
依照上述命令,將為藍牙核心4.1規範中指定的該命令產生一個命令完成事件。如果廣告實例或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
基本參考:藍牙核心4.1規格,第969頁(le設定廣告資料指令)
子OCF:0x02
子命令參數 | 尺寸 | 目的 |
---|---|---|
Advertising_Data_Length | 根據規格 | 根據規格 |
Advertising_Data | 根據規格 | 根據規格 |
Advertising_Instance | 1個八位元字 | 指定上述參數對實例的適用性 |
依照上述命令,將為藍牙核心4.1規範中指定的該命令產生一個命令完成事件。如果廣告實例或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
基本參考:藍牙核心4.1規格,第970頁(LE SET掃描回應資料指令)
子OCF:0x03
子命令參數 | 尺寸 | 目的 |
---|---|---|
Scan_Response_Data_Length | 根據規格 | 根據規格 |
Scan_Response_Data | 根據規格 | 根據規格 |
Advertising_Instance | 1個八位元字 | 指定上述參數對實例的適用性 |
依照上述命令,將為藍牙核心4.1規範中指定的該命令產生一個命令完成事件。如果廣告實例或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
基本參考:藍牙核心4.1規格,第963頁(LE設定隨機位址指令)
子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
基本參考:藍牙核心4.1規範,第971頁(LE設定廣告啟用指令中的指令)
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八位 | 本機用於產生隨機分解位址。 |
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-清晰的生氣列表 0x5-讀取IRK列表條目 |
該命令將產生一個命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1個八位元字 | 命令完成狀態 |
Event_RPA_offload_opcode | 1個八位元字 | 0x1-啟用客戶特定功能 0x2-將IRK加入到清單中 0x3-從清單中刪除IRK 0x4-清晰的生氣列表 0x5-讀取IRK列表條目 |
le_rpa_offload:enable_cust_specific_sub_command
子OCF:0x01
子命令參數 | 尺寸 | 目的 |
---|---|---|
enable_customer_specific_feature_set | 1個八位元字 | 0x01-啟用卸載RPA功能 0x00-停用卸載RPA功能 |
基於晶片功能,主機必須啟用RPA卸載。請參閱LE_Get_Vendor_Capabilities_Command
。每個晶片在韌體中可以有不同的max_irk_list_sz
。
該命令將產生一個命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1個八位元字 | 命令完成狀態 |
Event_cust_specific_feature_opcode | 1個八位元字 | 0x01 [啟用特定客戶功能] |
le_rpa_offload:add_irk_to_list_sub_command
子OCF:0x02
子命令參數 | 尺寸 | 目的 |
---|---|---|
LE_IRK | 16個八位元字 | Le Irk(第一個位元組LSB) |
Address_Type | 1個八位元字 | 0:公共地址 1:隨機地址 |
LE_Device_Address | 6個八位元字 | 與IRK相關的公共或隨機位址(第一個位元組LSB) |
該命令將產生一個命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
Status | 1個八位元字 | 命令完成狀態 |
Event_cust_specific_feature_opcode | 1個八位元字 | 0x02 [將IRK加入列表] |
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個八位元字 | 與生氣有關的公共或隨機地址 |
該命令將產生一個命令完成事件。
傳回參數 | 尺寸 | 目的 |
---|---|---|
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 [清除IRK列表] |
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 [讀取IRK清單條目] |
LE_Read_IRK_List_entry | 1個八位元字 | 主機想要回覆的IRK索引(最大IRK清單大小為32) |
LE_IRK | 16個八位元字 | 憤怒的價值 |
Address_Type | 1個八位元字 | 0:公共地址 1:隨機地址 |
LE_Device_Address | 6個八位元字 | 與IRK相關的公共或隨機位址 |
LE_Resolved_Private_Address | 6個八位元字 | 目前解決此不可思議的可解決的可解決的私人地址 |