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 个八位字节 | 服务数据表中仍可用的空闲条目数。 |