I use sd_ble_gap_device_name_set to set 10 chars device name
then getting NRF_ERROR_INVALID_LENGTH in sd_ble_gap_adv_set_configure.
all OK when tested 3 chars device name .
ret_code_t ret;
ble_gap_adv_params_t adv_params = get_adv_params();
adv_params.duration = flash_adv_params.adv_duration_sec*1000/10;
ble_gap_conn_sec_mode_t sec_mode;
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode);
char unitName[DEVICE_NAME_MAX_LEN];
device_info_get_unit_name(&unitName);
ret = sd_ble_gap_device_name_set(&sec_mode, (const uint8_t *)unitName, (uint16_t)strlen(unitName));
APP_ERROR_CHECK(ret);
advertise_whitelist_clear();
NRF_LOG_DEBUG("Setting adv params PHY to 1M. ");
adv_params.primary_phy = BLE_GAP_PHY_1MBPS;
adv_params.secondary_phy = BLE_GAP_PHY_1MBPS;
adv_params.properties.type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED;
ret = ble_advdata_encode(&adv_data, m_adv_data.adv_data.p_data, &m_adv_data.adv_data.len);
APP_ERROR_CHECK(ret);
ret = sd_ble_gap_adv_set_configure(&m_adv_handle, &m_adv_data, &adv_params);
APP_ERROR_CHECK(ret);