藍牙搜索-廣告包內容過濾器(0CF:0x157)

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 服務數據

系統將針對此命令生成一個命令完成事件。

返回參數 大小 用途
Status 1 個八位字節 返回狀態
APCF_opcode 1 個八位字節 0x00 - APCF 啓用
0x01 - APCF 設置過濾參數
0x02 - APCF 廣播地址
0x03 - APCF 服務 UUID
0x04 - APCF 服務請求 UUID
0x05 - APCF 本地名稱
0x06 - APCF 製造商數據
0x07 - 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:設爲啓用服務數據檢查
APCF_List_Logic_Type 2 個八位字節 針對 APCF_Feature_Selection 中指定的每個功能選項(按位位置)的邏輯操作。 
僅在啓用功能時有效。
位位置值:
0:OR
1:AND
如果選擇“AND”邏輯,則廣告包僅在其包含列表中的所有條目時傳遞過濾器。
如果選擇“OR”邏輯,則廣告包只要包含列表中的任何條目,就會傳遞過濾器。
APCF_Filter_Logic_Type 1 個八位字節 0x00:OR
0x01:AND
注意:APCF_Feature_Selection 的前三個字段的類型爲“不適用”,這始終是“AND”邏輯。它們僅適用於 APCF_Feature_Selection 的四個字段(位 3 - 位 6)
rssi_high_thresh 1 個八位字節 [以 dBm 爲單位]
只有該信號高於 RSSI 高閾值時,廣告主纔會被視爲可見。否則,固件必須表現得就像從未見過一樣。
delivery_mode 1 個八位字節 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 個八位字節 僅當 delivery_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 值必須使用二進制補碼來表示負值。

主機應該能夠配置多個 APCF_Application_Address_type 設置爲 0x02 的過濾器(適用於所有廣播地址),以管理各種過濾器組合。

過濾、批處理和報告是相互關聯的概念。 每個廣告及相關掃描響應都必須逐個通過所有過濾器。因此,生成的操作 (delivery_mode) 與過濾緊密關聯。 傳送模式如下所示:report_immediatelybatch 和 onFoundOnLost 值與 OnFound 相關,具體體現在,該值丟失後,會緊跟 OnFound

以下處理流程介紹了概念模式:

收到廣告(或掃描響應)幀時,該幀會按序列順序應用到所有過濾器。廣告可能導致系統根據一個過濾器立即進行報告並因其他過濾器操作立即進行批處理。

RSSI 級別閾值(高和低)能夠控制幀何時可見以進行過濾器處理,即使控制器收到有效的包也是如此。在傳送模式設置爲“立即”或“批處理”時,系統會考慮某個幀的 RSSI,以進一步進行控制器處理。不同的應用需要不同的報告和批處理行爲。這樣一來,多個應用能夠同時直接報告和/或批處理固件中的結果。例如,一個應用已啓用批量掃描,之後另一個應用發起常規 LE 掃描。在發起批量掃描之前,框架/應用會設置相應的過濾器。之後,當第二個應用發起常規掃描時,之前的批處理操作將繼續。不過,由於常規掃描,因此這類似於從概念上添加空過濾器(以及所有現有過濾器)和 LE 掃描命令。處於活動狀態時,LE 掃描命令參數的優先級更高。停用常規 LE 掃描後,控制器將還原到之前的批量掃描(如果存在)。

OnFound 傳送模式取決於配置的過濾器。觸發過濾器操作成功的組合被認爲是跟蹤 onLost 的實體。相應的事件是 LE 廣告跟蹤子事件。

過濾器的 OnFound/OnLost 轉換(如果啓用)將如下所示:

系統將針對此命令生成一個命令完成事件。

返回參數 大小 用途
Status 1 個八位字節 命令完成狀態
APCF_opcode 1 個八位字節 0x02 - 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:不適用(地址類型不適用)

系統將針對此命令生成一個命令完成事件。

返回參數 大小 用途
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 個八位字節 請求 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_Command:manf_data_sub_cmd

該子命令用於添加或刪除芯片過濾的某個製造商數據字符串或清除製造商數據字符串列表。

子 OCF:0x06

子命令參數 大小 用途
APCF_Action 1 個八位字節 0x00 - 添加
0x01 - 刪除
0x02 - 清除
執行刪除操作會刪除指定過濾器中的指定製造商數據字符串。
執行清除操作會清除指定過濾器中的所有制造商數據字符串。
APCF_Filter_Index 1 個八位字節 過濾器索引 (0, max_filter-1)
APCF_LocName_Mandata_or_SerData 大小可變 製造商數據字符串。

注意:
  • 目前本地名稱字符串中的字符數上限爲 29
  • 執行“清除”操作 (0x2) 時不適用
APCF_ManData_Mask 大小可變 要添加到列表中的製造商數據掩碼。其長度應與 APCF_LocName_or_ManData_or_SerData 相同。

系統將針對此命令生成一個命令完成事件。

返回參數 大小 用途
Status 1 個八位字節 命令完成狀態
APCF_opcode 1 個八位字節 0x06 - APCF 製造商數據
APCF_Action 1 個八位字節 回聲返回命令的 APCF_Action
APCF_AvailableSpaces 1 個八位字節 製造商數據表中仍可用的空閒條目數。

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 個八位字節 服務數據表中仍可用的空閒條目數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章