大家好:
一、概念
关于蓝牙的扫描请求和扫描响应功能,相信网上有很多介绍,在 此不作赘述,动动小手百度下即可,最主要的要理解:
扫描请求:由链路层处于扫描态的设备发送,链路层处于广播态的 设备接收。
扫描响应:由链路层处于广播态的设备发送,链路层处于扫描态的设备接收。
额外需了解,扫描分为主动扫描和被动扫描。主动扫描发送扫描请求给处于广播态的设备,并通过处于广播态的设备返回的扫描响应获取额外的数据。而被动扫描仅仅接收广播报文,不会发送扫描请求。
二、关键API 说明
详细的API函数或数据结构体可以参考官方文档.
1.扫描请求
/Reports any scan request received in advertising mode if the scan request notification is enabled/
//首先使能 request notification
sl_bt_advertiser_set_report_scan_request(advertising_set_handle,1);
广播端使能request notification后,只要扫描端扫描到此广播就会产生如下事件id: sl_bt_evt_advertiser_scan_request_id, 在此事件id下可以处理数据了.数据结构体
struct sl_bt_evt_advertiser_scan_request_s,具体查看官方文档.
2.扫描响应
/Reports an advertising or scan response packet that is received by the device’s radio while in scanning mode./
//使能active mode
sl_bt_scanner_set_mode(gap_1m_phy,1);//active mode is enabled
/产生事件id
sl_bt_evt_scanner_scan_report_id
可以处理的数结构体
struct sl_bt_evt_scanner_scan_report_s 具体查看官方文档.
三、代码实现
基于Simplicity Studio V5 创建一个bluetooth empty 工程,使用如下代码替代app.c
***************************************************************************//**
* @file
* @brief Core application logic.
*******************************************************************************
* # License