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_immediately
、batch
和 onFound
。OnLost
值與 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 |
大小可變 | 本地名稱字符串。 注意:
|
系統將針對此命令生成一個命令完成事件。
返回參數 | 大小 | 用途 |
---|---|---|
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 |
大小可變 | 製造商數據字符串。 注意:
|
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 個八位字節 | 服務數據表中仍可用的空閒條目數。 |