ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
如果在主广播通道 (ADV_EXT_IND) 上运行 CMD_BLE5_SCANNER,则在跟随 AuxPtr 之前,接受主通道上的扩展广播包。
根据 CRC 结果和接收到的消息来设置 bCrcErr 和 bIgnore 位。如果扩展标头标志指示 AdvA 存在,则将根据白名单检查消息中的已接收 AdvA 字段以及已接收标头的 TxAdd 位,如节 26.8.14 中所述。如果 pParams->scanConfig.rpaMode 给出的可解析私有地址 (RPA) 模式为非零,则会进行额外检查以查看对等地址是否为可解析私有地址。如果接收到的 TxAdd 为 1,并且接收到的 AdvA 字段的两个最高有效位为 01b,则地址是 RPA。如果是,则无论过滤器策略如何,都会执行白名单检查。对 AdvA 的完整检查如表 26-144 中所示执行;但是,只有在扩展标头中没有 ADI 字段并且 pParams->extFilterConfig.bApplyDuplicateFiltering 为 1 时,白名单中设置的 bWlIgn 位的规则才会应用。可以按照节 26.8.10.4 中的说明找到 ADI 结果。如果扩展标头标志指示 AdvA 不存在,则始终接受 AdvA 筛选器结果。如果扩展标头标志指示 TargetA 存在(即,发送数据包),则会分别根据 pParams->pDeviceAddress 和 pParams->scanConfig.deviceAddrType 检查接收到的 TargetA 字段和 RxAdd 位。如果 pParams->scanConfig.rpaFilterPolicy 给出的 RPA 滤波器策略为 1,则如果 TargetA 和 RxAdd 指示 RPA,则也接受数据包。表 26-145 中给出了定向消息的完整滤波。非定向消息始终具有 TargetA 匹配。根据接收到的数据包,所采取的操作应如表 26-149 中所示,其中每个操作的定义(包括将在 bCrcErr 和 bIgnore 上使用的值)在表 26-150 中给出。默认情况下,接收到的 ADV_EXT_IND 数据包的数据包长度始终有效,但可以通过覆盖固件定义的参数 maxAdvExtLen 来配置最大长度。此外,还会检查扩展标头长度和标志。如果扩展标头长度太大而无法容纳在数据包中,或者如果扩展标头长度太小而无法容纳所配置的数据包,则长度无效。如果 pParams->scanConfig.bStrictLenFilter 为 1,则考虑所有已定义的字段,而如果 pParams->scanConfig.bStrictLenFilter 为 0,则在查找允许的最小扩展标头长度时,CPE 未自动检查的字段 (SyncInfo 和 TxPower) 将被忽略。
| PDU 类型 | CRC 结果 | AdvA 滤波器结果 | TargetA 匹配 | ADI 结果 | 存在 AuxPtr | 操作编号 |
|---|---|---|---|---|---|---|
| ADV_EXT_IND | OK | 拒绝 | X | X | X | 1 |
| ADV_EXT_IND | OK | 接受 | 否 | X | X | 1 |
| ADV_EXT_IND | OK | 接受 | 是 | 拒绝 | X | 1 |
| ADV_EXT_IND | OK | 接受 | 是 | 接受 | 否 | 2 |
| ADV_EXT_IND | OK | 接受 | 是 | 接受 | 是 | 6 |
| ADV_EXT_IND | NOK | X | X | X | X | 4 |
| 长度无效的 ADV_EXT_IND | X | X | X | X | X | 5 |
| 其他(另请参阅节 26.8.10.1) | X | X | X | X | X | 5 |
| 操作编号 | bCrcErr | bIgnore | 说明 |
|---|---|---|---|
| 1 | 0 | 1 | 继续扫描 |
| 2 | 0 | 0 | 以 BLE_DONE_OK 状态继续扫描或结束操作 |
| 4 | 1 | 0 | 继续扫描 |
| 5 | — | — | 停止接收数据包,然后继续扫描 |
| 6 | 0 | 0 | 跟随 Aux 指针并在新通道上接收,或使用 BLE_DONE_AUX 结束操作 |
如果所接收的数据包不适合 RX 队列,则应在末尾接收数据包,但不存储接收到的字节。如果通常不会从 RX 缓冲器中丢弃数据包,则操作应结束
如果接收到的数据包中的操作为 2,则下一个操作可能是继续扫描或结束操作。这通过 pParams->scanConfig.bEndOnRpt 进行配置;如果为 1,则操作将结束,否则扫描将继续。
如果 pParams->extFilterConfig.bAutoWlIgnore 为 1,则会启用自动忽略功能。如果表 26-144 的最右列中有所规定,并且扩展标头中不存在 ADI 字段,则无线电 CPU 应自动设置白名单条目的 bWlIgn 位,该白名单条目与接收 ADV_EXT_IND 消息的地址相对应。应在执行操作 2 之后或即将执行操作 6 时执行此操作。这可用于避免报告来自同一器件的多条广播消息,并避免重复扫描同一器件。
如果接收到的数据包中的操作为 6,则无线电 CPU 应遵循节 26.8.16 中的过程。这将导致接收器查找节 26.8.10.3 中所述的次级广播包,或者以 BLE_DONE_AUX 状态结束操作。