SWCU192 November 2021 CC1312R7 , CC1352P7 , CC2652P7 , CC2652R7
After receiving or attempting to receive a SCAN_RSP, AUX_SCAN_RSP or AUX_CONNECT_RSP packet, the backoff parameters shall be updated by the radio CPU. The update depends on the Response Packet Result and the old values of the backoff parameters. The backoff parameters given in pParams->backoffPar shall be updated as shown in Table 26-167. After this update, the radio CPU shall set pParams->backoffCount to a pseudo-random number between 1 and 2pParams->backoffPar.logUpperLimit.
Response Packet Result | Old pParams->backoffPar | New pParams->backoffPar | |||
---|---|---|---|---|---|
bLastSucceeded | bLastFailed | bLastSucceeded | bLastFailed | logUpperLimit | |
Failure | X | 0 | 0 | 1 | logUpperLimit |
Failure | 0 | 1 | 0 | 0 | min(logUpperLimit+1, 8) |
Success | 0 | X | 1 | 0 | logUpperLimit |
Success | 1 | 0 | 0 | 0 | max(logUpperLimit-1, 0) |
The pseudo-random algorithm shall be based on a maximum-length 16-bit linear feedback shift register (LFSR). The seed shall be as provided in pParams->randomState. When the operation ends, the radio CPU shall write the current state back to this field. If pParams->randomState is 0, the radio CPU shall self-seed by initializing the LFSR to the 16 least significant bits of the radio timer. This shall only be done when the LFSR is first needed (that is, after receiving an ADV*_IND), so there will be some randomness to this value. If the 16 least significant bits of the radio timer are all 0, another fixed value shall be substituted.
When the device enters the scanning or initiating (Bluetooth 5 only) state, the system CPU should initialize pParams->backoffCount to 1, pParams->backoffPar.logUpperLimit to 0, pParams->backoffPar.bLastSucceeded and pParams->backoffPar.bLastFailed to 0, and pParams->randomState to a true-random value (or a pseudo-random number based on a true-random seed). When starting new scanner operations while remaining in the scanning state, the system CPU should keep pParams->randomState, pParams->backoffCount, and pParams->backoffPar at the values they had at the end of the last scanner operation.