Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

Extended Advertisement with Scan Response

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

Parents Reply Children
No Data
Related