Bluetooth: Controller: Fix BIS access address generation
Fix BIS access address generation to follow the requirements in Bluetooth Core Specification v5.3, Vol 6, PartB, Section 2.1.2 Access Address. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
1b023e5419
commit
990d9a3abe
3 changed files with 14 additions and 5 deletions
|
@ -105,6 +105,7 @@ uint8_t ll_big_create(uint8_t big_handle, uint8_t adv_handle, uint8_t num_bis,
|
|||
uint32_t ret;
|
||||
uint8_t err;
|
||||
uint8_t bn;
|
||||
int res;
|
||||
|
||||
adv_iso = adv_iso_get(big_handle);
|
||||
|
||||
|
@ -296,7 +297,8 @@ uint8_t ll_big_create(uint8_t big_handle, uint8_t adv_handle, uint8_t num_bis,
|
|||
lll_adv_iso->sdu_interval = sdu_interval;
|
||||
lll_adv_iso->max_sdu = max_sdu;
|
||||
|
||||
util_saa_le32(lll_adv_iso->seed_access_addr, big_handle);
|
||||
res = util_saa_le32(lll_adv_iso->seed_access_addr, big_handle);
|
||||
LL_ASSERT(!res);
|
||||
|
||||
lll_csrand_get(lll_adv_iso->base_crc_init,
|
||||
sizeof(lll_adv_iso->base_crc_init));
|
||||
|
|
|
@ -219,16 +219,21 @@ again:
|
|||
}
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_ADV_ISO)
|
||||
void util_saa_le32(uint8_t *dst, uint8_t handle)
|
||||
int util_saa_le32(uint8_t *dst, uint8_t handle)
|
||||
{
|
||||
/* Refer to Bluetooth Core Specification Version 5.2 Vol 6, Part B,
|
||||
* section 2.1.2 Access Address
|
||||
*/
|
||||
uint32_t saa, saa_15, saa_16;
|
||||
uint8_t bits;
|
||||
int err;
|
||||
|
||||
/* Get access address */
|
||||
err = util_aa_le32(dst);
|
||||
if (err) {
|
||||
return err;
|
||||
}
|
||||
|
||||
/* Get random number */
|
||||
lll_csrand_get(dst, sizeof(uint32_t));
|
||||
saa = sys_get_le32(dst);
|
||||
|
||||
/* SAA_19 = SAA_15 */
|
||||
|
@ -264,6 +269,8 @@ void util_saa_le32(uint8_t *dst, uint8_t handle)
|
|||
saa |= (handle * 0x03);
|
||||
|
||||
sys_put_le32(saa, dst);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_BT_CTLR_ADV_ISO */
|
||||
|
||||
|
|
|
@ -15,5 +15,5 @@
|
|||
|
||||
uint8_t util_ones_count_get(const uint8_t *octets, uint8_t octets_len);
|
||||
int util_aa_le32(uint8_t *dst);
|
||||
void util_saa_le32(uint8_t *dst, uint8_t handle);
|
||||
int util_saa_le32(uint8_t *dst, uint8_t handle);
|
||||
void util_bis_aa_le32(uint8_t bis, uint8_t *saa, uint8_t *dst);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue