I am trying to change the mac address of my device every time I advertise a packet. I have a callback on_ble_radio_active_evt where I update the address like this:
static void on_ble_radio_active_evt(bool radio_active)
{
if (radio_active) {
bd_addr.addr_type = BLE_GAP_ADDR_TYPE_RANDOM_STATIC;
bd_addr.addr[0] = (uint8_t)NRF_FICR->DEVICEADDR[0];
bd_addr.addr[1] = (uint8_t)(NRF_FICR->DEVICEADDR[0] >> 8);
bd_addr.addr[2] = (uint8_t)(NRF_FICR->DEVICEADDR[0] >> 16) + count;
bd_addr.addr[3] = (uint8_t)(NRF_FICR->DEVICEADDR[0] >> 24);
bd_addr.addr[4] = (uint8_t)(NRF_FICR->DEVICEADDR[1]);
bd_addr.addr[5] = (uint8_t)(NRF_FICR->DEVICEADDR[1] >> 8) | 0xc0;
err_code = sd_ble_gap_addr_set(&bd_addr);
// some custom data
append_advertisement_data(&advdata);
err_code = ble_advdata_set(&advdata, NULL);
}
}
but I get an error 8 ie NRF_ERROR_INVALID_STATE, which says Im not allowed to change the mac address in this state. How can I get around this error?