This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Extended Advertising

Hi, 

I'm trying to implement non-connectable, non-scannable, undirected extended advertising mode. I'm using nRF52832 board,  SDK 15.2.0 version and latest Softdevice 6.1. 0. version.

I'm getting ADV_EXT_IND on my sniffer but I'm not sure how to send data on secondnary channels. 

Could you help.

Barbara

Parents
  • I currently looking into your problem and will reply as soon as I figure it out

  • I set adv_data.adv_data.len to 238 (extended advertising ) but sd_ble_gap_adv_set_configure() turncate it to 65.

  • I was able to set 230 bytes of data in adv. This is how I was able to do with example "ble_app_rscs" in function "advertising_init"

    static void advertising_init(void)
    {
    ret_code_t err_code;
    ble_advertising_init_t init;
    ble_advdata_manuf_data_t adv_tmp_data;

    uint8_t temp_data[230];

    for(uint8_t i = 1 ; i <= 230; i++)
    temp_data[i] = i;

    adv_tmp_data.company_identifier = 0x1111;
    adv_tmp_data.data.size = sizeof(temp_data);
    adv_tmp_data.data.p_data = temp_data;

    memset(&init, 0, sizeof(init));

    //init.advdata.name_type = BLE_ADVDATA_FULL_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.advdata.p_manuf_specific_data = &adv_tmp_data;

    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;


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

Reply
  • I was able to set 230 bytes of data in adv. This is how I was able to do with example "ble_app_rscs" in function "advertising_init"

    static void advertising_init(void)
    {
    ret_code_t err_code;
    ble_advertising_init_t init;
    ble_advdata_manuf_data_t adv_tmp_data;

    uint8_t temp_data[230];

    for(uint8_t i = 1 ; i <= 230; i++)
    temp_data[i] = i;

    adv_tmp_data.company_identifier = 0x1111;
    adv_tmp_data.data.size = sizeof(temp_data);
    adv_tmp_data.data.p_data = temp_data;

    memset(&init, 0, sizeof(init));

    //init.advdata.name_type = BLE_ADVDATA_FULL_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.advdata.p_manuf_specific_data = &adv_tmp_data;

    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;


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

Children
Related