mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
bluedroid: fix ble ext adv rand addr setting for NRPA
This commit is contained in:
parent
d7a927190b
commit
90f52cf0c7
@ -302,21 +302,19 @@ tBTM_STATUS BTM_BleSetExtendedAdvRandaddr(UINT8 instance, BD_ADDR rand_addr)
|
|||||||
BD_ADDR invalid_rand_addr_a, invalid_rand_addr_b;
|
BD_ADDR invalid_rand_addr_a, invalid_rand_addr_b;
|
||||||
memset(invalid_rand_addr_a, 0xff, sizeof(BD_ADDR));
|
memset(invalid_rand_addr_a, 0xff, sizeof(BD_ADDR));
|
||||||
memset(invalid_rand_addr_b, 0x00, sizeof(BD_ADDR));
|
memset(invalid_rand_addr_b, 0x00, sizeof(BD_ADDR));
|
||||||
invalid_rand_addr_b[0] = invalid_rand_addr_b[0] | BT_STATIC_RAND_ADDR_MASK;
|
if((rand_addr[0] & BT_STATIC_RAND_ADDR_MASK) == BT_STATIC_RAND_ADDR_MASK) {
|
||||||
if((rand_addr[0] & BT_STATIC_RAND_ADDR_MASK) == BT_STATIC_RAND_ADDR_MASK
|
invalid_rand_addr_b[0] = invalid_rand_addr_b[0] | BT_STATIC_RAND_ADDR_MASK;
|
||||||
&& memcmp(invalid_rand_addr_a, rand_addr, BD_ADDR_LEN) != 0
|
if (memcmp(invalid_rand_addr_a, rand_addr, BD_ADDR_LEN) == 0
|
||||||
&& memcmp(invalid_rand_addr_b, rand_addr, BD_ADDR_LEN) != 0){
|
|| memcmp(invalid_rand_addr_b, rand_addr, BD_ADDR_LEN) == 0) {
|
||||||
// set random address
|
|
||||||
if((err = btsnd_hcic_ble_set_extend_rand_address(instance, rand_addr)) != HCI_SUCCESS) {
|
|
||||||
BTM_TRACE_ERROR("%s, fail to send the hci command, the error code = %s(0x%x)",
|
|
||||||
__func__, btm_ble_hci_status_to_str(err), err);
|
|
||||||
status = BTM_ILLEGAL_VALUE;
|
status = BTM_ILLEGAL_VALUE;
|
||||||
} else {
|
goto end;
|
||||||
// set random address success, update address infor
|
}
|
||||||
if(extend_adv_cb.inst[instance].configured && extend_adv_cb.inst[instance].connetable) {
|
} else if ((rand_addr[0] | BT_NON_RPA_MASK) == BT_NON_RPA_MASK) {
|
||||||
BTM_BleSetStaticAddr(rand_addr);
|
invalid_rand_addr_a[0] = invalid_rand_addr_a[0] & BT_NON_RPA_MASK;
|
||||||
BTM_UpdateAddrInfor(BLE_ADDR_RANDOM, rand_addr);
|
if (memcmp(invalid_rand_addr_a, rand_addr, BD_ADDR_LEN) == 0
|
||||||
}
|
|| memcmp(invalid_rand_addr_b, rand_addr, BD_ADDR_LEN) == 0) {
|
||||||
|
status = BTM_ILLEGAL_VALUE;
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
BTM_TRACE_ERROR("%s invalid random address", __func__);
|
BTM_TRACE_ERROR("%s invalid random address", __func__);
|
||||||
@ -324,6 +322,19 @@ tBTM_STATUS BTM_BleSetExtendedAdvRandaddr(UINT8 instance, BD_ADDR rand_addr)
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set random address
|
||||||
|
if((err = btsnd_hcic_ble_set_extend_rand_address(instance, rand_addr)) != HCI_SUCCESS) {
|
||||||
|
BTM_TRACE_ERROR("%s, fail to send the hci command, the error code = %s(0x%x)",
|
||||||
|
__func__, btm_ble_hci_status_to_str(err), err);
|
||||||
|
status = BTM_ILLEGAL_VALUE;
|
||||||
|
} else {
|
||||||
|
// set random address success, update address infor
|
||||||
|
if(extend_adv_cb.inst[instance].configured && extend_adv_cb.inst[instance].connetable) {
|
||||||
|
BTM_BleSetStaticAddr(rand_addr);
|
||||||
|
BTM_UpdateAddrInfor(BLE_ADDR_RANDOM, rand_addr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
end:
|
end:
|
||||||
cb_params.status = status;
|
cb_params.status = status;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user