蓝牙搜索-广告包内容过滤器(0CF:0x157)

LE_APCF_Command

OCF:0x157

命令参数大小用途
APCF_opcode1 个八位字节0x00 - APCF 启用
0x01 - APCF 设置过滤参数
0x02 - APCF 广播地址
0x03 - APCF 服务 UUID
0x04 - APCF 服务请求 UUID
0x05 - APCF 本地名称
0x06 - APCF 制造商数据
0x07 - APCF 服务数据

系统将针对此命令生成一个命令完成事件。

返回参数大小用途
Status1 个八位字节返回状态
APCF_opcode1 个八位字节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_enable1 个八位字节0x01 - 启用 APCF 功能
0x00 - 停用 APCF 功能

系统将针对此命令生成一个命令完成事件。

返回参数大小用途
Status1 个八位字节命令完成状态
APCF_opcode1 个八位字节0x0 - APCF 启用
APCF_Enable1 个八位字节通过 APCF_enable 设置启用/停用

LE_APCF_Command:set_filtering_parameters_sub_cmd

该子命令用于添加或删除芯片过滤的某个过滤器规范或清除过滤器列表。

子 OCF:0x01

子命令参数大小用途
APCF_Action1 个八位字节0x00 - 添加
0x01 - 删除
0x02 - 清除
执行删除操作会清除特定过滤器以及其他表中的相关功能条目。
执行清除操作会清除所有过滤器以及其他表中的相关条目。
APCF_Filter_Index1 个八位字节过滤器索引 (0, max_filter-1)
APCF_Feature_Selection2 个八位字节所选功能的位掩码:
位 0:设为启用广播地址过滤器
位 1:设为启用服务数据更改过滤器
位 2:设为启用服务 UUID 检查
位 3:设为启用服务请求 UUID 检查
位 4:设为启用本地名称检查
位 5:设为启用制造商数据检查
位 6:设为启用服务数据检查
APCF_List_Logic_Type2 个八位字节针对 APCF_Feature_Selection 中指定的每个功能选项(按位位置)的逻辑操作。 
仅在启用功能时有效。
位位置值:
0:OR
1:AND
如果选择“AND”逻辑,则广告包仅在其包含列表中的所有条目时传递过滤器。
如果选择“OR”逻辑,则广告包只要包含列表中的任何条目,就会传递过滤器。
APCF_Filter_Logic_Type1 个八位字节0x00:OR
0x01:AND
注意:APCF_Feature_Selection 的前三个字段的类型为“不适用”,这始终是“AND”逻辑。它们仅适用于 APCF_Feature_Selection 的四个字段(位 3 - 位 6)
rssi_high_thresh1 个八位字节[以 dBm 为单位]
只有该信号高于 RSSI 高阈值时,广告主才会被视为可见。否则,固件必须表现得就像从未见过一样。
delivery_mode1 个八位字节0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout2 个八位字节仅当 delivery_mode 为 on_found 时有效
[以毫秒为单位]
固件在报告之前停留和收集其他广告所用的时间。
onfound_timeout_cnt1 个八位字节仅当 delivery_mode 为 on_found 时有效
[计数]
如果 onFound 中的广告在 onfound_timeout 期间停留在固件中,则会收集一些广告并检查计数。 如果计数超过 onfound_timeout_cnt,之后会立即报告为 OnFound
rssi_low_thresh1 个八位字节仅当 delivery_mode 为 on_found 时有效
[以 dBm 为单位]
如果已接收包的 RSSI 低于 RSSI 低阈值,则视为未看到该广告主包。
onlost_timeout2 个八位字节仅当 delivery_mode 为 on_found 时有效
[以毫秒为单位]
如果系统在发现某个广告后,在 lost_timeout 期间未连续看到该广告,则会立即将其报告为已丢失。
num_of_tracking_entries2 个八位字节仅当 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 转换(如果启用)将如下所示:

系统将针对此命令生成一个命令完成事件。

返回参数大小用途
Status1 个八位字节命令完成状态
APCF_opcode1 个八位字节0x02 - APCF 设置过滤参数
APCF_Action1 个八位字节回声返回命令的 APCF_Action
APCF_AvailableSpaces1 个八位字节过滤器表中的可用条目数

LE_APCF_Command:broadcast_address_sub_cmd

该子命令用于添加或删除芯片过滤的某个广告主地址或清除广告主地址列表。

子 OCF:0x02

子命令参数大小用途
APCF_Action1 个八位字节0x00 - 添加
0x01 - 删除
0x02 - 清除
执行删除操作会删除指定过滤器中的指定广播地址。
执行清除操作会清除指定过滤器中的所有广播地址。
APCF_Filter_Index1 个八位字节过滤器索引 (0, max_filter-1)
APCF_Broadcaster_Address6 个八位字节要添加到广播地址列表或从中删除的 6 字节设备地址
APCF_Application_Address_type1 个八位字节0x00:公开
0x01:随机
0x02:不适用(地址类型不适用)

系统将针对此命令生成一个命令完成事件。

返回参数大小用途
Status1 个八位字节命令完成状态
APCF_opcode1 个八位字节0x02 - APCF 广播地址
APCF_Action1 个八位字节回声返回命令的 APCF_Action
APCF_AvailableSpaces1 个八位字节广播地址表中仍可用的空闲条目数

LE_APCF_Command:service_uuid_sub_cmd

该子命令用于添加或删除芯片过滤的某个服务 UUID 或清除服务 UUID 列表。

子 OCF:0x03

子命令参数大小用途
APCF_Action1 个八位字节0x00 - 添加
0x01 - 删除
0x02 - 清除
执行删除操作会删除指定过滤器中的指定服务 UUID。
执行清除操作会清除指定过滤器中的所有服务 UUID。
APCF_Filter_Index1 个八位字节过滤器索引 (0, max_filter-1)
APCF_UUID2 个、4 个、16 个八位字节要添加到列表或从中删除的服务 UUID(16 位、32 位或 128 位)。
APCF_UUID_MASK2 个、4 个、16 个八位字节要添加到列表中的服务 UUID 掩码(16 位、32 位或 128 位)。其长度应与 APCF_UUID. 相同。

系统将针对此命令生成一个命令完成事件。

返回参数大小用途
Status1 个八位字节命令完成状态
APCF_opcode1 个八位字节0x03 - APCF 服务 UUID
APCF_Action1 个八位字节回声返回命令的 APCF_Action
APCF_AvailableSpaces1 个八位字节服务 UUID 表中仍可用的空闲条目数

LE_APCF_Command:solicitation_uuid_sub_cmd

该子命令用于添加或删除芯片过滤的某个请求 UUID 或清除请求 UUID 列表。

子 OCF:0x04

子命令参数大小用途
APCF_Action1 个八位字节0x00 - 添加
0x01 - 删除
0x02 - 清除
执行删除操作会删除指定过滤器中的请求 UUID 地址。
执行清除操作会清除指定过滤器中的所有请求 UUID。
APCF_Filter_Index1 个八位字节过滤器索引 (0, max_filter-1)
APCF_UUID2 个、4 个、16 个八位字节要添加到列表或从中删除的请求 UUID(16 位、32 位或 128 位)。
APCF_UUID_MASK2 个、4 个、16 个八位字节要添加到列表中的请求 UUID 掩码(16 位、32 位或 128 位)。其长度应与 APCF_UUID 相同。

系统将针对此命令生成一个命令完成事件。

返回参数大小用途
Status1 个八位字节命令完成状态
APCF_opcode1 个八位字节0x04 - APCF 请求 UUID
APCF_Action1 个八位字节回声返回命令的 APCF_Action
APCF_AvailableSpaces1 个八位字节请求 UUID 表中仍可用的空闲条目数

LE_APCF_Command:local_name_sub_cmd

该子命令用于添加或删除芯片过滤的某个本地名称字符串或清除本地名称字符串列表。

子 OCF:0x05

子命令参数大小用途
APCF_Action1 个八位字节0x00 - 添加
0x01 - 删除
0x02 - 清除
执行删除操作会删除指定过滤器中的指定本地名称字符串。
执行清除操作会清除指定过滤器中的所有本地名称字符串。
APCF_Filter_Index1 个八位字节过滤器索引 (0, max_filter-1)
APCF_LocName_Mandata_or_SerData大小可变本地名称字符串。

注意:
  • 目前本地名称字符串中的字符数上限为 29
  • 执行“清除”操作 (0x2) 时不适用

系统将针对此命令生成一个命令完成事件。

返回参数大小用途
Status1 个八位字节命令完成状态
APCF_opcode1 个八位字节0x05 - APCF 本地名称
APCF_Action1 个八位字节回声返回命令的 APCF_Action
APCF_AvailableSpaces1 个八位字节本地名称表中仍可用的空闲条目数

LE_APCF_Command:manf_data_sub_cmd

该子命令用于添加或删除芯片过滤的某个制造商数据字符串或清除制造商数据字符串列表。

子 OCF:0x06

子命令参数大小用途
APCF_Action1 个八位字节0x00 - 添加
0x01 - 删除
0x02 - 清除
执行删除操作会删除指定过滤器中的指定制造商数据字符串。
执行清除操作会清除指定过滤器中的所有制造商数据字符串。
APCF_Filter_Index1 个八位字节过滤器索引 (0, max_filter-1)
APCF_LocName_Mandata_or_SerData大小可变制造商数据字符串。

注意:
  • 目前本地名称字符串中的字符数上限为 29
  • 执行“清除”操作 (0x2) 时不适用
APCF_ManData_Mask大小可变要添加到列表中的制造商数据掩码。其长度应与 APCF_LocName_or_ManData_or_SerData 相同。

系统将针对此命令生成一个命令完成事件。

返回参数大小用途
Status1 个八位字节命令完成状态
APCF_opcode1 个八位字节0x06 - APCF 制造商数据
APCF_Action1 个八位字节回声返回命令的 APCF_Action
APCF_AvailableSpaces1 个八位字节制造商数据表中仍可用的空闲条目数。

LE_APCF_Command:service_data_sub_cmd

该子命令用于添加或删除芯片过滤的某个服务数据字符串或清除服务数据字符串列表。

子 OCF:0x07

子命令参数大小用途
APCF_Action1 个八位字节0x00 - 添加
0x01 - 删除
0x02 - 清除
执行删除操作会删除指定过滤器中的指定服务数据字符串。
执行清除操作会清除指定过滤器中的所有服务数据字符串。
APCF_Filter_Index1 个八位字节过滤器索引 (0, max_filter-1)
APCF_LocName_Mandata_or_SerData大小可变服务数据字符串。

注意:
  • 目前本地名称字符串中的字符数上限为 29
  • 执行“清除”操作 (0x2) 时不适用
APCF_LocName_Mandata_or_SerData_Mask大小可变要添加到列表中的服务数据掩码。其长度应与 APCF_LocName_or_ManData_or_SerData. 相同。

系统将针对此命令生成一个命令完成事件。

返回参数大小用途
Status1 个八位字节命令完成状态
APCF_opcode1 个八位字节0x07 - APCF 服务数据
APCF_Action1 个八位字节回声返回命令的 APCF_Action
APCF_AvailableSpaces1 个八位字节服务数据表中仍可用的空闲条目数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值