Hi
I would like to change my coded PHY layer 1MBps to 2Mbps.
For that, i just change the params BLE_GAP_PHY_1MBPS to BLE_GAP_PHY_2MBPS in my code.
But now the function sd_ble_gap_adv_set_configure return error 0x07.
Are they others changes needed ?
The SDK used is 15.3 and SD is 132.
see my init code
/**@brief Init advertising */ void advertising_init(void) { ble_advertising_init_t init; memset(&init,0,sizeof(ble_advertising_init_t)); init.advdata.name_type = BLE_ADVDATA_FULL_NAME; init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE; init.advdata.le_role = BLE_ADVDATA_ROLE_ONLY_PERIPH; // generate data packet uint8_t data[22]={0}; // store advertising manufacturer data ble_advdata_manuf_data_t adv_manuf_data = {0}; convert_adv_params_to_buffer(data,&adv_manuf_data.data.size); adv_manuf_data.data.p_data = data; adv_manuf_data.company_identifier = NORDIC_COMPANY_ID; init.advdata.p_manuf_specific_data = &adv_manuf_data; // store advdata to static global variable for an easier update advdata = init.advdata; // return to advertising after disconnected event from central init.config.ble_adv_on_disconnect_disabled = false; init.config.ble_adv_extended_enabled = false; // configure fast advertising init.config.ble_adv_fast_enabled = true; init.config.ble_adv_fast_interval = MSEC_TO_UNITS(ADV_INTERVAL_MS,UNIT_0_625_MS); init.config.ble_adv_fast_timeout = 0; // 10 min converted in units of 10 ms // configure slow advertising init.config.ble_adv_slow_enabled = true; init.config.ble_adv_slow_interval = MSEC_TO_UNITS(ADV_LONG_INTERVAL_MS,UNIT_0_625_MS); init.config.ble_adv_slow_timeout = 0; // Unlimited ? init.evt_handler = on_adv_evt; APP_ERROR_CHECK(ble_advertising_init(&m_advertising, &init)); ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG); APP_ERROR_CHECK(ble_advertising_start(&m_advertising, BLE_ADV_MODE_FAST)); }
uint32_t ble_advertising_init(ble_advertising_t * const p_advertising, ble_advertising_init_t const * const p_init) { uint32_t ret; if ((p_init == NULL) || (p_advertising == NULL)) { return NRF_ERROR_NULL; } if (!config_is_valid(&p_init->config)) { return NRF_ERROR_INVALID_PARAM; } p_advertising->adv_mode_current = BLE_ADV_MODE_IDLE; p_advertising->adv_modes_config = p_init->config; p_advertising->conn_cfg_tag = BLE_CONN_CFG_TAG_DEFAULT; p_advertising->evt_handler = p_init->evt_handler; p_advertising->error_handler = p_init->error_handler; p_advertising->current_slave_link_conn_handle = BLE_CONN_HANDLE_INVALID; p_advertising->p_adv_data = &p_advertising->adv_data; memset(&p_advertising->peer_address, 0, sizeof(p_advertising->peer_address)); // Copy advertising data. if (!p_advertising->initialized) { p_advertising->adv_handle = BLE_GAP_ADV_SET_HANDLE_NOT_SET; } p_advertising->adv_data.adv_data.p_data = p_advertising->enc_advdata; if (p_advertising->adv_modes_config.ble_adv_extended_enabled == true) { #ifdef BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED p_advertising->adv_data.adv_data.len = BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED; #else p_advertising->adv_data.adv_data.len = BLE_GAP_ADV_SET_DATA_SIZE_MAX; #endif // BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED } else { p_advertising->adv_data.adv_data.len = BLE_GAP_ADV_SET_DATA_SIZE_MAX; } ret = ble_advdata_encode(&p_init->advdata, p_advertising->enc_advdata, &p_advertising->adv_data.adv_data.len); VERIFY_SUCCESS(ret); if (&p_init->srdata != NULL) { p_advertising->adv_data.scan_rsp_data.p_data = p_advertising->enc_scan_rsp_data; if (p_advertising->adv_modes_config.ble_adv_extended_enabled == true) { #ifdef BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED p_advertising->adv_data.scan_rsp_data.len = BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED; #else p_advertising->adv_data.scan_rsp_data.len = BLE_GAP_ADV_SET_DATA_SIZE_MAX; #endif // BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED } else { p_advertising->adv_data.scan_rsp_data.len = BLE_GAP_ADV_SET_DATA_SIZE_MAX; } ret = ble_advdata_encode(&p_init->srdata, p_advertising->adv_data.scan_rsp_data.p_data, &p_advertising->adv_data.scan_rsp_data.len); VERIFY_SUCCESS(ret); } else { p_advertising->adv_data.scan_rsp_data.p_data = NULL; p_advertising->adv_data.scan_rsp_data.len = 0; } // Configure a initial advertising configuration. The advertising data and and advertising // parameters will be changed later when we call @ref ble_advertising_start, but must be set // to legal values here to define an advertising handle. p_advertising->adv_params.primary_phy = BLE_GAP_PHY_2MBPS;//BLE_GAP_PHY_1MBPS; p_advertising->adv_params.duration = p_advertising->adv_modes_config.ble_adv_fast_timeout; p_advertising->adv_params.properties.type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED; p_advertising->adv_params.p_peer_addr = NULL; p_advertising->adv_params.filter_policy = BLE_GAP_ADV_FP_ANY; p_advertising->adv_params.interval = p_advertising->adv_modes_config.ble_adv_fast_interval; ret = sd_ble_gap_adv_set_configure(&p_advertising->adv_handle, NULL, &p_advertising->adv_params); VERIFY_SUCCESS(ret); p_advertising->initialized = true; return ret; }
Thanks in advance