人機互動要求

主機控制器介面 (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_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_指令

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_modeon_found時有效。
[以毫秒為單位]
韌體在報告之前停留並收集額外廣告的時間。
onfound_timeout_cnt 1 個八位元組僅當delivery_modeon_found時有效。
[數數]
如果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時有效。
[數數]
每個過濾器要追蹤的廣告商總數。

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

主機應能夠配置多個過濾器,並將APCF_Application_Address_type設定為 0x02(對於所有廣播位址)以管理各種過濾器組合。

過濾、批次和報告是相互關聯的概念。每個廣告和相關的掃描回應都必須一個接一個地通過所有過濾器。因此,結果操作( delivery_mode )與過濾密切相關。交付模式有以下幾種: report_immediatelybatchonFoundOnLost值與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尺寸可變本地名稱的字串。

筆記:
  • 目前本地名稱字串中的最大字元數為 29
  • 操作為「清除」(0x2) 時不適用

將為此命令產生命令完成事件。

傳回參數尺寸目的
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尺寸可變製造商資料的字串。

筆記:
  • 目前本地名稱字串中的最大字元數為 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 個八位元組製造商資料表中仍可用的免費條目數量

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檢查是否支援該指令。

子 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 個八位元組

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

  • 位元 0:支援傳輸發現服務過濾器
  • Bit 1:支援AD類型過濾器
  • 位 2 ~15:保留供將來使用

位元值

  • 0 = 不支持
  • 1 = 支持

控制器活動和能量資訊命令

此資訊的目的是讓更高的主機系統功能結合應用程式和框架中發生的情況來分析所有元件的整體活動,包括 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 標頭的標誌。
  • 0x00 - 不包含 SCMS-T 標頭。
  • 0x01 - 包含 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 編解碼器特定資訊元素。
八位元組 0:塊長度 |子帶|分配方式
八位元組 1:最小位元池值
八位元組 2:最大位元池值
八位元組 3:取樣頻率 |頻道模式
八位元組 4-31:保留

AAC 編解碼器:

請參閱 A2DP v1.3 中的 AAC 編解碼器特定資訊元素
八位元組 0:物件類型
八位元組 1; b7:可變位元率
八位元組 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:保留

將為此命令產生命令完成事件。

傳回參數尺寸目的
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-添加
0x01-刪除
0x02-清除

刪除將清除特定品質事件的報告。
清除將清除所有品質事件報告(bqr_quality_event_mask參數可以忽略)。

BQR_Quality_Event_Mask 4個八位元字選定品質事件報告的位元遮罩。

位元0:設定為啟用品質監控模式。
位1:設定為啟用LSTO事件(對於ACL/(E)SCO/ISO)。
位元2:設定啟用A2DP音訊波動事件。
位3:設定為啟用(E)SCO語音波動事件。
位4:設定為啟用根部發炎事件。
位元5:設定為啟用能量監控模式。
位元6:設定啟用Le Audio Phoppy事件。
位元7:設定啟用連線失敗事件。
位8〜14:保留。
位15:設定啟用特定於供應商的品質活動。
位元16:設定以啟用LMP/LL訊息追蹤。
位元17:設定以啟用藍牙多連結/COEX調度追蹤。
位元18:設定以啟用控制器調試資訊機制。
位19〜30:保留。
位31:設定以啟用特定於供應商的追蹤。

BQR_Minimum_Report_Interval 2個八位元字定義選定品質事件的品質事件報告的最小時間間隔。控制器韌體不應在定義的時間間隔內報告下一個事件。間隔設定應針對正在新增的品質事件各自和專用。

單位:MS
預設值: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:保留。

該命令將產生一個命令完成事件。

傳回參數尺寸目的
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 Octets
Scan_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調度追蹤,或控制器轉儲的偵錯資訊資料。

子事件參數尺寸目的
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)值。
該值應為絕對接收器訊號強度值。
範圍:-127至+20

SNR 1個八位元字[在DB中]

指定連線_handle的訊號雜訊比(SNR)值(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) *八位元字為了使控制器供應商獲得更多供應商特定參數。
子事件參數尺寸目的
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個八位元字目前解決此不可思議的可解決的可解決的私人地址