Target: nrf52 dev kit
Soft device: s132_nrf52_7.2.0_softdevice.hex
SDK: nrf5 sdk 17.1.0
Environment: IAR
Example modified: ble_app_rscs
I am trying to modify the example to support extended advertisement with scan response. In the following example init function if I set ble_adv_extended_enabled to false it will allow the advertising and scan response data sets. If I set ble_adv_extended_enabled to true and remove the initialization of the scan response encoding, that will also run.
Please advise on the configuration to allow extended advertisement with scan response.
Thanks
/**@brief Function for initializing the Advertising functionality.
*/
static void advertising_init(void)
{
ret_code_t err_code;
ble_advertising_init_t init;
#define ADV_SIZE 60
//#define SR_SIZE 20
ble_advdata_manuf_data_t adv_manuf_data_config;
uint8_t adv_manuf_data_data[ADV_SIZE] = {0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,
0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,
0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF};
adv_manuf_data_config.data.size = ADV_SIZE;
//
// ble_advdata_manuf_data_t adv_manuf_data_sr_config;
// uint8_t adv_manuf_data_sr_data[SR_SIZE] = {0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF,0xDE,0xAD,0xBE,0xEF};
// adv_manuf_data_config.data.size = SR_SIZE;
memset(&init, 0, sizeof(init));
//---
init.advdata.name_type = BLE_ADVDATA_FULL_NAME;
// init.srdata.name_type = BLE_ADVDATA_NO_NAME;
init.advdata.include_appearance = true;
init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
init.advdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
init.advdata.uuids_complete.p_uuids = m_adv_uuids;
init.config.ble_adv_fast_enabled = true;
init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
init.config.ble_adv_fast_timeout = APP_ADV_DURATION;
init.config.ble_adv_primary_phy = BLE_GAP_PHY_1MBPS;
init.config.ble_adv_secondary_phy = BLE_GAP_PHY_2MBPS;
init.config.ble_adv_extended_enabled = true;
//-----
// adv_manuf_data_sr_config.data.p_data = adv_manuf_data_sr_data;
// adv_manuf_data_sr_config.data.size = sizeof(adv_manuf_data_sr_data);
//
adv_manuf_data_config.data.p_data = adv_manuf_data_data;
adv_manuf_data_config.data.size = sizeof(adv_manuf_data_data);
//
init.advdata.p_manuf_specific_data = &adv_manuf_data_config;
// init.srdata.p_manuf_specific_data = &adv_manuf_data_sr_config;
m_advertising.adv_params.properties.type = BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_SCANNABLE_UNDIRECTED;//BLE_GAP_ADV_TYPE_NONCONNECTABLE_SCANNABLE_UNDIRECTED
m_advertising.adv_params.interval = APP_ADV_INTERVAL;
m_advertising.adv_params.duration = APP_ADV_DURATION;
//
// m_advertising.adv_params.p_peer_addr = NULL;
// m_advertising.adv_params.duration = BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED;
// m_advertising.adv_params.interval = 0x40;
// m_advertising.adv_params.primary_phy = BLE_GAP_PHY_AUTO;
// m_advertising.adv_params.secondary_phy = BLE_GAP_PHY_AUTO;
// m_advertising.adv_params.set_id = 4;
// m_advertising.adv_params.filter_policy = BLE_GAP_ADV_FP_ANY;
// Prepare the scan response manufacturer specific data packet
ble_advdata_manuf_data_t manuf_data_response;
uint8_t data_response[4] = {0xDE,0xAD};
manuf_data_response.data.p_data = data_response;
manuf_data_response.data.size = sizeof(data_response);
init.srdata.name_type = BLE_ADVDATA_NO_NAME;
init.srdata.p_manuf_specific_data = &manuf_data_response;
//----
init.evt_handler = on_adv_evt;
err_code = ble_advertising_init(&m_advertising, &init);
APP_ERROR_CHECK(err_code);
ble_advertising_conn_cfg_tag_set(&m_advertising, APP_BLE_CONN_CFG_TAG);
}