不能被连接,不能被扫描的,不带辅助广播包的ADV_EXT_IND的广播类型

在ble5.0中,加入了广播包扩展的功能,广播跟原来的广播有比较大的改变,后面慢慢丰富。本文章只是探讨,不能被连接的,不能被扫描的,不带辅助广播包的ADV_EXT_IND的广播类型。

ADV_EXT_IND

  这个广播包类型,类似于是一个桥梁的作用,可以一方面,在传统的37 38 39上进行广播,一个辅助,在AUX_EXT_IND的广播类型。在此,不探讨,AUX_EXT_IND,如有兴趣,可以加我QQ,1570698943.

ADV_EXT_IND,有多种Event Type,

 

在此,探讨,第一种,Non-Connectable and Non-Scannable Undirected without auxiliary packet 。这种情况下,广播可以在1Mphy上进行广播和CODED PHY上进行广播。下面分别,更改源码和用手机验证结果。芯片型号是nRF52840 ,手机是小米手机。在SDK16上,进行验证。

代码如下

CODED PHY 

static void advertising_init(void)
{
    
    ret_code_t    err_code;
    ble_advdata_t advdata;
    ble_advdata_t srdata;

    ble_uuid_t adv_uuids[] = {{LBS_UUID_SERVICE, m_lbs.uuid_type}};

    // Build and set advertising data.
    memset(&advdata, 0, sizeof(advdata));

    advdata.name_type          = BLE_ADVDATA_FULL_NAME;
    advdata.include_appearance = true;
    advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;


    memset(&srdata, 0, sizeof(srdata));
    srdata.uuids_complete.uuid_cnt = sizeof(adv_uuids) / sizeof(adv_uuids[0]);
    srdata.uuids_complete.p_uuids  = adv_uuids;

//    err_code = ble_advdata_encode(&advdata, m_adv_data.adv_data.p_data, &m_adv_data.adv_data.len);
//    APP_ERROR_CHECK(err_code);

//    err_code = ble_advdata_encode(&srdata, m_adv_data.scan_rsp_data.p_data, &m_adv_data.scan_rsp_data.len);
//    APP_ERROR_CHECK(err_code);

    ble_gap_adv_params_t adv_params;

    // Set advertising parameters.
    memset(&adv_params, 0, sizeof(adv_params));

    adv_params.primary_phy     = BLE_GAP_PHY_CODED;
    adv_params.duration        = 0;
    adv_params.properties.type = BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED;
    adv_params.p_peer_addr     = NULL;
    adv_params.filter_policy   = BLE_GAP_ADV_FP_ANY;
    adv_params.interval        = APP_ADV_INTERVAL;

    err_code = sd_ble_gap_adv_set_configure(&m_adv_handle, NULL, &adv_params);
    APP_ERROR_CHECK(err_code);
        
}

手机截图:

 

1M PHY

static void advertising_init(void)
{
    
    ret_code_t    err_code;
    ble_advdata_t advdata;
    ble_advdata_t srdata;

    ble_uuid_t adv_uuids[] = {{LBS_UUID_SERVICE, m_lbs.uuid_type}};

    // Build and set advertising data.
    memset(&advdata, 0, sizeof(advdata));

    advdata.name_type          = BLE_ADVDATA_FULL_NAME;
    advdata.include_appearance = true;
    advdata.flags              = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;


    memset(&srdata, 0, sizeof(srdata));
    srdata.uuids_complete.uuid_cnt = sizeof(adv_uuids) / sizeof(adv_uuids[0]);
    srdata.uuids_complete.p_uuids  = adv_uuids;

//    err_code = ble_advdata_encode(&advdata, m_adv_data.adv_data.p_data, &m_adv_data.adv_data.len);
//    APP_ERROR_CHECK(err_code);

//    err_code = ble_advdata_encode(&srdata, m_adv_data.scan_rsp_data.p_data, &m_adv_data.scan_rsp_data.len);
//    APP_ERROR_CHECK(err_code);

    ble_gap_adv_params_t adv_params;

    // Set advertising parameters.
    memset(&adv_params, 0, sizeof(adv_params));

    adv_params.primary_phy     = BLE_GAP_PHY_1MBPS;
    adv_params.duration        = 0;
    adv_params.properties.type = BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED;
    adv_params.p_peer_addr     = NULL;
    adv_params.filter_policy   = BLE_GAP_ADV_FP_ANY;
    adv_params.interval        = APP_ADV_INTERVAL;

    err_code = sd_ble_gap_adv_set_configure(&m_adv_handle, NULL, &adv_params);
    APP_ERROR_CHECK(err_code);
        
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Wireshark是一款开源的网络协议分析工具,可以对网络数据进行捕获和分析。而蓝牙(Bluetooth)是一种无线通信技术,适用于短距离数据传输。 在Wireshark中,我们可以使用蓝牙适配器来捕获蓝牙数据,并进行进一步的分析。而adv_ind则是一种蓝牙广播类型,用于广播蓝牙设备的存在和提供的服务。 如果我们想要分析adv_ind数据,首先需要在Wireshark中设置捕获过滤器来过滤仅adv_ind的数据。具体的过滤器语法可以是“btcommon.eir_packet_type == 0x00”或“bthci.command == 0x03”。 一旦我们成功捕获到adv_ind数据,我们就可以通过Wireshark的解析功能来查看它们的详细信息。Wireshark会将数据的各个字段以及它们的值显示出来,帮助我们理解和分析这些数据。 在分析adv_ind数据时,我们可以关注以下几个方面: 1. 广播设备地址:这个地址可以帮助我们识别蓝牙设备的唯一标识符。 2. 服务UUID:这个标识符可以告诉我们设备提供的服务类型。 3. RSSI值:这是接收信号强度指示器,可以帮助我们了解设备的信号强度。 4. 广播数据:广播中可能含其他自定义数据,可以根据需求来分析。 通过分析adv_ind数据,我们可以获取对蓝牙设备的一些信息,如设备类型、服务类型、信号强度等。这些信息可以帮助我们了解蓝牙设备的特征和功能,并进一步分析和识别设备的行为和用途。 总的来说,通过使用Wireshark工具来捕获和分析蓝牙adv_ind数据,我们可以获得对蓝牙设备的更深入的了解,从而更好地理解和掌握蓝牙技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值