【系列博客2】炬芯(Actions)BLE ATB110X—BLE Central 设计说明

接上篇:【系列博客1】炬芯(Actions)BLE ATB110X 开发入门教程_wpgddt的博客-CSDN博客 

1 概述

1.1 文档目的
通过一个简单的示例介绍BLE Central 的编写方法,供用户学习参考。
1.2 术语说明

1.3 参考文档

https://www.bluetooth.com/specifications/gatt

https://www.bluetooth.com/specifications/bluetooth-core-specification

2 BLE Central 概述

2.1 BLE Central 简介
根据GAP (通用访问配置文件) 中的定义,主动发起连接的设备称为Central,作为链路层的主设备, 接受连接的设备称为Peripheral,作为链路层的从设备。
在GATT 中定义了两种角色:Server 和Client。
GATT Server 是向GATT Client 提供数据服务的设备,GATT Client 是从GATT Server 读写应用数据的设备。
GATT 角色不与特定的GAP 角色相关联。但在多数应用中,Central 会实现GATT Client 角色,Peripheral 会实现GATT Server角色,
下面以该应用场景描述Central-Peripheral 之间通信模型,如图所示:

更多信息请登录Bluetooth 官网:
• 核心规格:  Specifications | Bluetooth® Technology Website
• GATT 规格:  https://www.bluetooth.com/specifications/gatt
对于所有的BLE Central,它们几乎都遵循同一流程:

下面以sample\bluetooth\central_rmc 示例为例,说明BLE Central 的程序流程。

3 BLE Central 编写

3.1 central_rmc 示例简介
central_rmc 是BLE Central 的一个示例, 用于连接遥控器(工程路径:samples\voice_rcu\keil5\peripheral_rmc)。
它通过匹配广播数据包和扫描回应数据包中的设备名,对远端设备发起连接。连接成功后,发现服务,使能notify, 最后接收并打印notification 的内容。

3.2 central_rmc 程序流程
central_rmc 几乎和一般BLE Central 的流程一致,如图所示:

在central_rmc 中,首先调用bt_enable 完成蓝牙协议栈的初始化,随后调用start_scan启动扫描。
当空中接口扫描到广播包时,扫描回调函数device_found 会被调用,用来解析扫描到的广播数据和扫描回应数据,
当设备名和RMC_NAME 相同时,它会先停止扫描,随后发起连接。
连接成功后connected 函数会被调用,它会发送一个类型为MSG_CONNECTED 的异步消息,主函数接收到该消息后会调用start_discover启动发现。
当发现到服务时discover_func 会被调用,发现完成后discover_func 会发送类型为MSG_DISCOVER_COMPLETE 异步消息,

主函数接收到该消息后会调用nofity_enable 开启所有通知,并将所有开启的通知注册进协议栈,至此所有的命令和动作都执行完毕。
当远端设备有通知上报时,通知回调函数notify_func 会被调用,打印上报的数据。

注意: 为保证所有请求/命令的同步,务必不要在回调函数中执行BLE 命令或请求,须采用异步消息的方式在主函数中进行操作。

3.3 central_rmc 配置

1. 目标设备名称配置
central_rmc 根据广播中的设备名对远端设备发起连接,修改方法:

2. 扫描参数配置
默认采用主动扫描方式,type 等于BT_HCI_LE_SCAN_ACTIVE,该扫描方式可接收扫描回应, 但不可接收定向广播包,
相反的有被动扫描,type 等于BT_HCI_LE_SCAN_PASSIVE, 被动扫描无扫描回应, 可以收到定向广播包。
filter_dup 用于过滤重复广播包, 当值为BT_HCI_LE_SCAN_FILTER_DUP_DISABLE 时不进行过滤,
当值为BT_HCI_LE_SCAN_FILTER_DUP_ENABLE 时使能过滤,应用将收不到相同广播包。

3. 安全等级配置

4. 发现参数配置
发现过程分为两种: 根据UUID 发现服务/特性和发现所有服务/特性。发现的类型有5 种: 主服务、次要服务、包含服务、特性和描述符。
当uuid为NULL 时发现所有服务/特性,为具体UUID 时则发现特定服务/特性。
start_handle 和end_handle 用于限定发现服务/特性的handle 的范围。

5. 可发现的服务最大个数配置

6. 服务的最大特性个数

7. 通知配置
当远端设备是遥控器时,配置下面宏为1,当远端设备不是遥控器时,需要将该宏配置为0。

4 BLE Central 常用API 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值