James Blogs
来源:《[艾克姆科技教程]nRF52832开发指南》
一、基本概念和流程
1、概念
广播就是设备将自身愿意展示的信息按照一定的间隔以“扫描者”可理解的方式向周边发射。
广播有如下四种类型,广播报文的报头中有 4 个位专门用于指示广播报文的类型。
- 通用广播:最常用的广播方式,可以被扫描,接收到连接请求时可以作为从设备进入一个连接。
- 定向广播:针对于快速建立连接的需求,定向广播会占满整个广播信道,定向广播的数据净荷只包含广播者和发起者地址,发起者收到发给自己的定向广播后,会立即发送连接请求。定向广播最长时间不能超过 1.28 秒,并且不能被主动扫描。
- 不可连接广播:广播数据,而不进入连接态,也不响应扫描,这是唯一一个允许硬件设备只有发射机的广播类型,因为它不需要接收任何数据。
- 可发现广播:不可连接,但可以响应扫描。
2、流程
Nordic 的 SDK 里面实现的广播流程如下图所示,包含广播的配置、启动和停止。
- 广播的配置:应用程序首先要根据自己的需求配置广播的间隔、广播的模式以及广播中 包含哪些数据,这称为广播初始化,广播初始化在配置好各项参数之后,最终调用 API 函数sd_ble_gap_adv_set_configure()将配置传递给 SoftDevice 完成配置。配置成功后, SoftDevice 会返回“NRF_SUCCESS”。
- 广播的启动:应用程序初始化广播成功后,广播并没有启动,应用程序需要根据初始化 中设置的模式启动广播,应用程序启动广播最终是调用 API 函数 sd_ble_gap_adv_start() 通知 SoftDevice 启动广播,SoftDevice 启动广播成功后会返回“NRF_SUCCESS”。
- 广播的停止:广播的停止有 2 种方式
- 应用程序主动停止广播,即应用程序通过调 用 API 函数 sd_ble_gap_adv_stop()通知 SoftDevice 停止广播,SoftDevice 成功停止广播 后会返回“NRF_SUCCESS”。
- 超时停止广播,即广播设置了超时时间,在设定的超时时间内没有和中心设备建立连接,广播即会超时停止,这时 SoftDevice 会向应用程序提交“BLE_GAP_EVT_ADV_SET_TERMINATED”事件。
