Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs
This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

sd_ble_cfg_set() for BLE_GAP_CFG_DEVICE_NAME returns NRF_ERROR_INVALID_ADDR

Hello,

I am currently migrating from SDK12.2 with softdevice S132 V3 to SDK14 with softdevice S132 V5 and have a problem configuring device names larger than BLE_GAP_DEVNAME_DEFAULT_LEN.

The following code shows, how i tried to configur the device name. This, however, returns NRF_ERROR_INVALID_ADDR.

    ble_cfg_t* p_ble_cfg;
    ble_gap_cfg_device_name_t device_name = {0};

    uint8_t device_name_buff[226] = GAP_DEFAULT_DEVICE_NAME;
    device_name.vloc = BLE_GATTS_VLOC_STACK;
    ble_gap_conn_sec_mode_t secmode = {.sm = 1, .lv = 3};//IIS_e_comPermitEncryptedMitmProtectedWrite
    device_name.write_perm = secmode;
    device_name.p_value = device_name_buff;
    device_name.max_len = sizeof(device_name_buff);
    device_name.current_len = strlen((char *) device_name_buff);

    p_ble_cfg = (ble_cfg_t*) &device_name;
    err_code = sd_ble_cfg_set(BLE_GAP_CFG_DEVICE_NAME, p_ble_cfg, ram_start);
    APP_ERROR_CHECK(err_code);

   

To get the ram_start i tried two different ways. First by using

    err_code = nrf_sdh_ble_default_cfg_set(BLE_DEFAULT_SD_CONFIG, &ram_start);
    APP_ERROR_CHECK(err_code);

then by using

    err_code = nrf_sdh_ble_app_ram_start_get(&ram_start);
    APP_ERROR_CHECK(err_code);

but it results in the same error.

Any help would be much appreciated.

Thanks in advance,

Niclas

Related