nRF52笔记(19)sd_ble_gap_scan_start主机扫描的使用

1平台条件

《1》软件平台:nRF5_SDK_17.0.0_9d13099
《2》硬件平台: nRF52833/nRF52840

2 扫描代码函数

// 扫描参数 初始化
uint8_t m_scan_data[255];
ble_data_t const m_scan_buf =
{
    .p_data =m_scan_data,
	.len =BLE_GAP_SCAN_BUFFER_MIN //31 Byte
};
const ble_gap_scan_params_t  m_scan_params =
{
	.extended = 0,//ɨÃè´ó¹ã²¥°ü
	.report_incomplete_evts =0,
    .active   = 1,//1=主动扫描;0=被动扫描
	.filter_policy=BLE_GAP_SCAN_FP_ACCEPT_ALL,
	.scan_phys =BLE_GAP_PHY_1MBPS,	
	
    .interval = MSEC_TO_UNITS(2500,UNIT_0_625_MS)  ,
    .window   = MSEC_TO_UNITS(2000,UNIT_0_625_MS)  ,
    .timeout  = 0,
	.channel_mask =0, // ÐŵÀ£¬´ó¹ã²¥ÔÚ0-37

};

/****************************************
*扫描函数开始
*mode =1;时,第一次开始扫描
*mode =2: 第一次开始扫描后,需要再次恢复扫描(不带扫描参数)
*****************************************/
void ble_start_scan(uint8_t mode)
{		
	ret_code_t err_code;
	
	if(mode==1)
	{
		err_code = sd_ble_gap_scan_start(&m_scan_params, &m_scan_buf);
	}
	else//=2
	{
		 // Resume the scanning.
		err_code = sd_ble_gap_scan_start(NULL, &m_scan_buf);
	}
    BLE_RTT("scan result:%x\r\n",err_code);

    if (err_code != NRF_ERROR_INVALID_STATE)
    {
        APP_ERROR_CHECK(err_code);
    }
}

注意点:需要在这个事件里面继续恢复扫描,否则会停止扫描,不会继续扫描
第一次使用
在这里插入图片描述

在这里插入图片描述

3:扫描long range广播包

设置扫描参数如下:

// scan para init=======================
ble_gap_scan_params_t  m_scan_params =
{
	.extended = 1,//
	.report_incomplete_evts =0,
    .active   = 1, // 配置为1则是主动扫描,0则是被动扫描
	.filter_policy=BLE_GAP_SCAN_FP_ACCEPT_ALL,
	
	.scan_phys =BLE_GAP_PHY_CODED,	
    .interval = MSEC_TO_UNITS(2500,UNIT_0_625_MS)  ,
    .window   = MSEC_TO_UNITS(2000,UNIT_0_625_MS)  ,
    .timeout  = 0,
//	.channel_mask =0, // 信道
};

可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值