主機控制器介面 (HCI) 用於與藍牙控制器互動。
本文件列出藍牙 (BT) 和藍牙低功耗 (BLE) HCI 需求。目的是讓主機 BT 堆疊供應商和 BT 控制器供應商遵守這些平台規定,以便使用下文所述的功能組合。
本文件將「Bluetooth Core 5.2 規格」稱為「規格」。您可以在 Bluetooth SIG 網站上找到 Bluetooth Core 5.2 規範,以及其他採用的文件。
一般設計總覽
晶片功能和設定
Android 是開放式平台,因此有軟體版本、原始設備製造商 (OEM)、供應商、平台和晶片功能的矩陣。
為了管理不同的環境和遷移作業,本文說明瞭設計理念,讓 BT 控制器可公開其功能 (超出標準藍牙核心 5.2 規格)。主機 BT 堆疊隨後可使用這些功能,判斷要啟用哪些功能。
支援開放標準
Android 的其中一個目標,就是在藍牙規格獲得核准後,支援開放標準。如果下列功能在未來的藍牙規格中以標準 HCI 方法提供,我們會傾向將該方法設為預設值。
廠商專屬功能
廠商專屬指令:LE_Get_Vendor_Capabilities_Command
OpCode 指令欄位 (OCF):0x153
指令參數 | 大小 | 目的 |
---|---|---|
NA | 空白指令參數清單 |
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
Status |
1 個八位元 | 指令完成狀態 |
max_advt_instances (已淘汰) |
1 個八位元 |
支援的廣告例項數量。 保留給 v0.98 之後的版本使用。 Google 功能規格 0.98 以上版本已淘汰此參數,改用 BT 規格 5.0 以上版本提供的 LE 擴充廣告。 |
offloaded_resolution_of_private-address (已淘汰) |
1 個八位元 |
RPA 的藍牙晶片功能。 如果晶片支援此功能,則需要由主機啟用。 0 = 不支援 1 = 支援 保留供 0.98 版以後使用。 這個參數已在 Google 功能規格 0.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 byte[0] = 0x01 byte[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 功能規格 0.98 以上版本淘汰,改用 BT 規格 4.2 以上版本提供的隱私權功能。 |
A2DP_source_offload_capability_mask |
4 個八位元組 |
支援的編解碼類型位元遮罩 Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 - LDAC Bit 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 = 支援 |
批次掃描結果
設計目標是改善藍牙 LE 掃描回應事件通知傳送至主機的方式,以節省主機的電力。
減少控制器通知主機應用程式處理器掃描結果的頻率,主機應用程式處理器就能維持較長的閒置/休眠狀態。這可降低主機的耗電量。LE_Get_Vendor_Capabilities_Command
的傳回參數 total_scan_results_storage
會指出用於儲存掃描結果的晶片功能。
這項功能著重於管理及設定 Bluetooth 控制器中的 LE 掃描結果儲存空間。儲存空間可用來暫時批次廣告資料,以及掃描資料和中繼資料,供控制器接收,以便日後傳送給主機。
韌體應支援兩種可同時啟用的批次處理作業:
- 截斷。包含下列資訊元素:{MAC、TX Power、RSSI、時間戳記}
- 完整。包含下列資訊元素:{MAC、TX Power、RSSI、Timestamp、Adv Data、Scan Response}
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 [Set Batch Scan parameters] |
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}。在 Full 樣式中,如果同一個廣告活動封包在不同掃描間隔中出現多次,系統只會記錄一次。不過,在截斷模式中,我們感興趣的是 BA_ADDR
在不同掃描間隔 (每個掃描間隔一次) 的顯示情形。RSSI 是掃描間隔內,不重複廣告的所有重複廣告平均值。
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
Status |
1 個八位元 | 指令完成狀態 |
Batch_scan_opcode |
1 個八位元 | 0x03 [Set Batch Scan Parameters] |
LE_Batch_Scan_Command:讀取批次掃描結果子命令
子 OCF:0x04
子指令參數 | 大小 | 目的 |
---|---|---|
Batch_Scan_Data_read |
1 個八位元 |
0x01 - 截斷模式資料 0x02 - 完整模式資料 |
系統會為這個指令產生「指令完成」事件。主機發出此指令時,控制器中的所有結果可能無法全部納入單一 Command Complete 事件。主機會重複執行這項指令,直到 Command Complete 事件中的對應結果在記錄數中顯示 0 為止,這表示控制器已沒有要傳送給主機的記錄。每個 Command Complete 事件可能包含多個只包含一種資料類型 (完整或截斷) 的記錄。
控制器和主機時間參照未同步。時間戳記的單位為 50 毫秒。時間戳記的值會根據主機提供的 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 [Set Batch Scan parameters] |
Batch_Scan_data_read |
1 個八位元 | 識別格式 (截斷或完整) |
num_of_records |
1 個八位元 | Batch_Scan_data_read 的記錄數 |
format_of_data |
變數 |
截斷模式: Address[0]: 6 個八位元組 Address_Type[0]: 1 個八位元組 Tx_Pwr[0]: 1 個八位元組 RSSI[0] : 1 個八位元組 Timestamp[0]: 2 個八位元組 [多個記錄 ( num_of_records ) 採用上述格式]完整模式: Address[0]: 6 個八位元組 Address_Type[0]: 1 個八位元組 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 個八位元組[多個記錄採用上述格式 ( num_of_records )]
|
Advertising Packet Content Filter
可用於在控制器中啟用/停用/設定廣告封包內容篩選器 (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 廣告類型篩選器 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 廣告類型篩選器 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 個八位元 |
所選功能的位元遮罩: Bit 0:設為啟用廣播位址篩選器 Bit 1:設為啟用服務資料變更篩選器 Bit 2:設為啟用服務 UUID 檢查 Bit 3:設為啟用服務招攬活動 UUID 檢查 Bit 4:設為啟用本機名稱檢查 Bit 5:設為啟用製造商資料檢查 Bit 6:設為啟用服務資料檢查 Bit 7:設為啟用運輸探索服務檢查 Bit 8:設為啟用廣告類型檢查 |
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 的前三個欄位為 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 時才有效。[count] 如果 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 時才有效。[count] 每個篩選條件要追蹤的廣告客戶總數。 |
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:broadcast_address_sub_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:無 (忽略地址類型) 篩選出含有身分地址類型 (0x02、0x03) 的廣告報表。 如要取得地址類型為 0x02 和 0x03 的廣告報表,請將這個欄位設為 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: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 相同。
|
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
Status |
1 個八位元 | 指令完成狀態 |
APCF_opcode |
1 個八位元 | 0x04 - APCF 徵求 UUID |
APCF_Action |
1 個八位元 | 回傳指令的 APCF_Action |
APCF_AvailableSpaces |
1 個八位元 | 在「Solicitation」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 個八位元 | 仍可在 Local name 資料表中使用的免費項目數 |
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 |
可變大小 |
製造商資料的字元字串。 附註:
|
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 |
可變大小 |
服務資料的字元字串。 附註:
|
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
這個子指令可用來新增或刪除廣告類型,或清除晶片上篩選器的廣告類型清單。使用 read_extended_features_sub_cmd
檢查系統是否支援此指令。
當 APCF_AD_DATA_Length
為 0 時,請篩選 APCF_AD_TYPE
,但不比較廣告資料和廣告資料遮罩。如果收到的 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 個八位元 | 要新增或刪除至清單的廣告類型。當 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 的長度相同。
|
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
Status |
1 個八位元 | 指令完成狀態 |
APCF_opcode |
1 個八位元 | 0x09 - APCF 廣告類型 |
APCF_Action |
1 個八位元 | 回傳指令的 APCF_Action |
APCF_AvailableSpaces |
1 個八位元 | 廣告類型表格中仍可用的免費項目數 |
LE_APCF_Command: read_extended_features_sub_cmd
這個子命令可用於讀取擴充 APCF 功能。
子 OCF:0xFF
子指令參數 | 大小 | 目的 |
---|---|---|
不適用 | 空白指令參數。 |
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
Status |
1 個八位元 | 指令完成狀態 |
APCF_opcode |
1 個八位元 | 0xFF - APCF_Read_Extended_Features |
APCF_extended_features |
2 個八位元 |
支援的進階功能位元遮罩:
位元值
|
控制器活動和能源資訊指令
這項資訊的目的,是讓較高層級的主機系統功能分析所有元件的總活動,包括 BT 控制器及其巨集狀態,並與應用程式和架構中發生的情況結合。為此,您必須從 BT 堆疊和控制器取得下列資訊:
- BT 堆疊:回報控制器目前的宏觀作業狀態
- 韌體:回報匯總活動和能源資訊
BT 主機堆疊巨集狀態,由使用者層級決定:
- 閒置:[頁面掃描、LE 廣告、查詢掃描、LE 掃描]
- 掃描:[分頁/查詢/嘗試連線]
- 已啟用:[ACL 連結已開啟、SCO 連結進行中、嗅探模式]
控制器在其生命週期內追蹤的活動包括傳送時間、接收時間、閒置時間和總耗電量。從主機讀取時會清除。
LE_Get_Controller_Activity_Energy_Info
這是供應商專用的指令。
OCF:0x159
子指令參數 | 大小 | 目的 |
---|---|---|
NA | 空白的指令參數 |
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
Status |
1 個八位元 | 指令完成狀態 |
total_tx_time_ms |
4 個八位元組 | 執行交易的總時間 |
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 個八位元 | 指令完成狀態 |
取得控制器偵錯資訊指令
這個資訊元素的目標,是讓主機以二進位格式取得控制器偵錯資訊,以利後續處理和分析。這有助於偵錯現場問題,並為工程師提供記錄資訊的工具包,以利分析。主機可透過事件 (Controller Debug Info 子事件) 要求控管器提供資訊,控管器也可以在主機要求時自動提供資訊。舉例來說,您可以用來回報韌體狀態資訊、當機傾印資訊、記錄資訊等。
OCF:0x15B
指令參數 | 大小 | 目的 |
---|---|---|
無 | 空白指令參數清單 |
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
Status |
1 個八位元 | 指令完成狀態 |
A2DP 硬體卸載支援
A2DP 卸載功能可將 A2DP 音訊編碼程序卸載至連接至 BT 控制器的音訊處理器。經過編碼的音訊資料串流會直接從音訊處理器傳送至 BT 控制器,不必經過 BT 主機。BT 主機仍負責設定及控制 A2DP 工作階段。指令有兩種版本,使用子 OCF 0x01-0x02 的舊版指令僅支援開放原始碼編解碼器。具有子 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 標頭的標記。
八位元組 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 1.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 通道 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 節),如同 Bluetooth 指派號碼的定義 (第 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 卸載串流。
指令參數 | 大小 | 目的 |
---|---|---|
無 | 空白指令參數清單。 |
這個指令沒有定義任何參數。
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
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 指令功能會啟動藍牙控制器中的機制,將藍牙品質事件回報給主機。您可以啟用四個選項:
- 品質監控模式:控制器會定期將與 Link Quality 相關的 BQR 子事件傳送至主機。
- 接近 LSTO:如果從已連線的 BT 裝置收到的封包超過 Link Supervision TimeOut (LSTO) 值的一半,控制器會向主機回報 Approaching LSTO 事件。
- A2DP Audio Choppy:當控制器偵測到造成音訊斷斷續續的因素時,控制器會向主機回報 A2DP Audio Choppy 事件。
- (e)SCO Voice Choppy:當控制器偵測到造成語音斷斷續續的因素時,控制器會向主機回報 (e)SCO Voice Choppy 事件。
- Root Inflammation:當 HAL 或控制器發生致命錯誤,且需要重新啟動藍牙時,控制器會將這個事件傳送至堆疊。
- LMP/LL 訊息追蹤:控制器會將 LMP/LL 訊息與遠端裝置握手,並傳送至主機。
- 藍牙多重設定檔/共存排程追蹤記錄:控制器會將處理多個藍牙設定檔和 2.4 Ghz 頻帶中的無線共存的排程資訊傳送至主機。
- 控制器偵錯資訊機制:啟用後,控制器可透過控制器偵錯資訊子事件,自動向主機回報偵錯記錄資訊。
- LE Audio Choppy:當控制器偵測到造成音訊斷斷續續的因素時,控制器會向主機回報 LE Audio Choppy 事件。
-
進階 RF 統計資料模式:控制器會將 RF 統計資料相關資訊回報給主機,支援兩種報表用途:
- 定期報告
- 事件觸發事件 (串流開始/停止和連結品質事件觸發事件)。
- Bluetooth 品質回報指令的 BQR_Report_Action:主機可以使用這個 HCI 指令,針對品質監控模式、能源監控模式或進階 RF 統計資料模式,取得一次性查詢。
OCF:0x15E
指令參數 | 大小 | 目的 |
---|---|---|
BQR_Report_Action |
1 個八位元 |
針對在 BQR_Quality_Event_Mask 參數中設定的品質事件,新增 / 刪除報表或清除所有報表的動作。
0x00 - 新增
刪除會清除特定品質事件回報。 |
BQR_Quality_Event_Mask |
4 個八位元組 |
所選品質事件回報的位元遮罩。
位元 0:設為啟用品質監控模式。 |
BQR_Minimum_Report_Interval |
2 個八位元 |
為所選品質事件定義品質事件回報的最短時間間隔。控制器韌體不應在指定的時間間隔內回報下一個事件。間隔設定應分別針對要新增的品質事件設定。
單位:毫秒 |
BQR_Vendor_Specific_Quality_Event_Mask |
4 個八位元組 |
所選供應商專屬品質事件回報的位元遮罩。 只有在 BQR_Quality_Event_Mask 的位元 15 設為 1 時,這個參數才有效。位元 0 到 31:保留。 |
BQR_Vendor_Specific_Trace_Mask |
4 個八位元組 |
所選供應商專屬追蹤記錄回報的位元遮罩。 只有在 BQR_Quality_Event_Mask 的位元 31 設為 1 時,這個參數才有效。位元 0 到 31:保留。 |
Report_interval_multiple |
4 個八位元組 |
BQR_Minimum_Report_Interval 的乘數。如果這個值大於或等於 1,BQR 報表間隔的格式為 BQR 報表間隔 = BQR_Minimum_Report_Interval x Report_interval_multiple。 控制器韌體不得在定義的時間間隔內回報下一個事件。間隔設定專門用於新增的品質事件。
單位:毫秒 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 音訊斷續事件回報功能。 位元 7:連線失敗事件。 位元 8:設定為啟用進階 RF 統計資料模式事件觸發事件。 位元 9:設為啟用定期回報的進階 RF 統計資料。 位元 10 至 14:保留。 位元 15:已啟用供應商專屬品質事件回報功能。 位元 16:已啟用 LMP/LL 訊息追蹤。 位元 17:已啟用藍牙多連結/Coex 排程追蹤記錄。 位元 18:已啟用控制器偵錯資訊機制。 位元 19 到 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
使用這個指令,即可從藍牙控制器取得音訊緩衝時間功能。
指令參數 | 大小 | 目的 |
---|---|---|
無 | 空白指令參數清單 |
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
Status |
1 個八位元 | 指令完成狀態 |
Dynamic_Audio_Buffer_opcode |
1 個八位元 | 0x01 - 取得音訊緩衝區時間 |
Audio_Codec_Type_Supported |
4 個八位元組 |
支援的編解碼類型位元遮罩 Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 - LDAC Bit 5-31 保留 |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 個八位元 |
Audio_Codec_Type_Supported 中指定的位元 0 轉碼器類型預設緩衝時間。 如果不支援位元 0 編解碼類型,則這個值應為 0。 單位:毫秒 |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
2 個八位元 |
Audio_Codec_Type_Supported 中指定的位元 0 轉碼器類型緩衝區時間上限。 如果不支援位元 0 編解碼類型,則這個值應為 0。 單位:毫秒 |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 個八位元 |
Audio_Codec_Type_Supported 中指定的位元 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 中指定的位元 1 編解碼器類型,其緩衝區時間上限。 如果不支援位元 1 編解碼類型,則這個值應為 0。 單位:毫秒 |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 個八位元 |
Audio_Codec_Type_Supported 中指定的位元 1 編解碼器類型,其最小緩衝時間。 如果不支援位元 1 編解碼類型,則這個值應為 0。 單位:毫秒 |
...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 個八位元 |
Audio_Codec_Type_Supported 中指定的位元 31 編解碼器類型預設緩衝時間。 如果不支援位元 31 編解碼類型,這個值應為 0。 單位:毫秒 |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
2 個八位元 |
Audio_Codec_Type_Supported 中指定的位元 31 轉碼器類型,其緩衝區時間上限。 如果不支援位元 31 編解碼類型,這個值應為 0。 單位:毫秒 |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 個八位元 |
Audio_Codec_Type_Supported 中指定的位元 31 編解碼類型,其緩衝區時間下限。 如果不支援位元 31 編解碼類型,這個值應為 0。 單位:毫秒 |
設定音訊緩衝區時間
子 OCF:0x02
使用這個指令,可將音訊緩衝時間設為藍牙控制器。
指令參數 | 大小 | 目的 |
---|---|---|
Audio_Codec_Buffer_Time |
2 個八位元 |
目前使用的編解碼要求的音訊緩衝時間。 單位:毫秒 |
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
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 多重廣告狀態變更子事件
此事件表示廣告活動已變更狀態。目前,這個事件只用於指出哪個廣告活動例項因連線而停止。
子事件代碼 = 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 排程追蹤記錄,或是控制器傾印了偵錯資訊資料。
子事件代碼 = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, Link Quality related event]
子事件參數 | 大小 | 目的 |
---|---|---|
Quality_Report_Id |
1 個八位元 |
0x01:監控模式的品質回報。 0x02:接近 LSTO。 0x03:A2DP 音訊斷斷續續。 0x04:(e)SCO 語音斷斷續續。 0x05 ~ 0x06:保留。 0x07: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 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 個八位元 |
指定 Connection_Handle 的目前傳輸功率。 這個值應與控制器對 HCI_Read_Transmit_Power_Level 命令的回應相同。 |
RSSI |
1 個八位元 |
[以 dBm 為單位]
指定 Connection_Handle 的接收訊號強度指標 (RSSI) 值。 |
SNR |
1 個八位元 |
[以分貝為單位]
指定 Connection_Handle 的信噪比 (SNR) 值。 |
Unused_AFH_Channel_Count |
1 個八位元 |
指出 AFH_channel_map 中未使用的頻道數量。 0x4F ~ 0xFF:保留。 |
AFH_Select_Unideal_Channel_Count |
1 個八位元 |
指出頻道受干擾且品質不佳,但仍選為 AFH 的頻道數量。 藍牙規格允許的最低頻道數為 20 個,因此即使所有 79 個頻道都受到干擾且品質不佳,控制器仍需選擇至少 20 個頻道進行 AFH。 |
LSTO |
2 個八位元 |
目前的連結監護逾時設定。 Time = N * 0.625 ms 時間範圍:0.625 毫秒至 40.9 秒 |
Connection_Piconet_Clock |
4 個八位元組 |
指定 Connection_Handle 的 Piconet 時鐘。 這個值應與控制器回應 HCI_Read_Clock 指令時的值相同,參數「Which_Clock」應為 0x01 (Piconet Clock)。 單位:N * 0.3125 ms (1 個藍牙時鐘) |
Retransmission_Count |
4 個八位元組 |
自上次事件以來的重傳次數。 在回報給主機後,這個計數值應會重設。 |
No_RX_Count |
4 個八位元組 |
自上次事件後,沒有任何 RX 計數。 如果在預定時間間隔內未收到封包,或收到的封包已損毀,則計數會增加。 在回報給主機後,這個計數值應會重設。 |
NAK_Count |
4 個八位元組 |
自上次事件以來的 NAK (Negative Acknowledge) 計數。 在回報給主機後,這個計數值應會重設。 |
Last_TX_ACK_Timestamp |
4 個八位元組 |
上次傳送確認的時間戳記。這項設定會根據 piconet central (CLK) 的藍牙時鐘。 單位:N * 0.3125 ms (1 個藍牙時鐘) |
Flow_Off_Count |
4 個八位元組 |
自上次事件以來,控制器收到「停止」(STOP) 次數。 在向主機回報後,這個計數值應會重設。 |
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 事件的最後一個子事件中,Link Layer 傳輸 CIS 資料 PDU 的封包數量。 在回報給主機後,這個計數值會重設。 如果連結沒有有效值,則值為零。 |
CRC_Error_Packets |
4 個八位元組 |
自上次事件以來,收到的 CRC 錯誤包裹數量。 向主機回報後,這個計數值會重設。 |
RX_Duplicate_Packets |
4 個八位元組 |
自上次事件以來,收到的重複 (重傳) 包裹數量。 在回報給主機後,這個計數值會重設。 |
RX_Unreceived_Packets |
4 個八位元組 |
未收到的封包數量與 LE READ ISO Link Quality 指令的參數相同 (請參閱藍牙核心規格第 5.4 版)。相關聯的串流為 CIS 和 BIS。 如果這個值增加,連結層就不會在其清除點 (在 CIS 上) 或與其相關聯的事件結束時 (在 BIS 上) 收到特定酬載 (請參閱 Bluetooth 核心規格第 5.4 版第 6 卷第 B 部分第 4.4.6.6 節)。 |
Coex_Info_Mask |
2 個八位元 |
位元 0 - CoexInvolvement:如果這份報表產生時,懷疑有 coex 活動參與其中,就會設為這個位元 (例如 A2DP Chops 和 Approaching LSTO)。 位元 1 - WL 2G Radio Active:設為此值表示 WLAN 2G Radio 處於作用中狀態。 位元 2 - WL 2G Connected:設定為此值表示 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/Controller 回報的錯誤代碼,如果是晶片組供應商特定錯誤,則為 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 = 0x11 ~ 0x13, Log Dump related event]
子事件參數 | 大小 | 目的 |
---|---|---|
Quality_Report_Id |
1 個八位元 |
0x00 ~ 0x10:保留。 0x11:LMP/LL 訊息追蹤。 0x12:藍牙多連結/Coex 排程追蹤記錄。 0x13:Controller Debug Information 資料轉儲。 0x14 ~ 0xFF:保留。 |
Connection_Handle |
2 個八位元 | 連線句柄。 |
廠商專屬參數 | (參數總長度 - 4) * 八位元 | 供應商專屬格式的 LMP 訊息追蹤記錄、藍牙多連結/Coex 排程追蹤記錄和控制器偵錯資訊資料轉儲。 |
支援多廣告主
多廣告客戶支援功能的目標如下:
-
支援多個廣告的功能 (
max_advt_instances
) - 不同的傳輸功率可提供不同的範圍
- 不同的廣告內容
- 針對每位廣告客戶提供個別回應
- 每位廣告客戶的隱私權 (不追蹤)
- 可連線
為使此規格與現有標準保持一致,我們提供下列供應商專屬指令。這些類別源自於 Bluetooth Core 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 規範,第 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 堆疊可發出指令,在連線後於執行個體上開始廣告。
根據上述指令,系統會根據藍牙核心 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
基本參考資料:Bluetooth Core 4.1 規範,第 969 頁 (LE Set Advertising Data Command)
子 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
基本參考資料:Bluetooth Core 4.1 規格,第 970 頁 (LE 設定掃描回應資料指令)
子 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 個八位元組 | 用於產生隨機可解析位址的本機裝置 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 清單項目 |
系統會為這個指令產生「指令完成」事件。
傳回參數 | 大小 | 目的 |
---|---|---|
Status |
1 個八位元 | 指令完成狀態 |
Event_RPA_offload_opcode |
1 個八位元 |
0x1 - 啟用客戶專屬功能 0x2 - 將 IRK 新增至清單 0x3 - 從清單中移除 IRK 0x4 - 清除 IRK 清單 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 (第 1 個位元組 LSB) |
Address_Type |
1 個八位元 |
0:公開地址 1:隨機地址 |
LE_Device_Address |
6 個八位元 | 與 IRK 相關聯的公開或隨機位址 (第 1 個位元組的 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 個八位元 | 與 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 目前已解析的私人位址 |