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
与大伙沟通交流,技术在于分享而进步