In my all projects, I am using this code to obtain and set local device address:
uint64_t deviceId = ((uint64_t)NRF_FICR->DEVICEID[1] << 32) | ((uint64_t)NRF_FICR->DEVICEID[0]);
ble_gap_addr_t gap_addr;
gap_addr.addr_type = BLE_GAP_ADDR_TYPE_PUBLIC;
memcpy(gap_addr.addr, (uint8_t *)&deviceId, 6);
err_code = sd_ble_gap_address_set(BLE_GAP_ADDR_CYCLE_MODE_NONE ,&gap_addr);
In some newer examples, I've seen function sd_ble_gap_address_get() which also returns address, but different than this located in FICR
Which method should I use when setting my local device address?