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); }