BES2600xx之BLE基础(一)

 1.如何打开BLE

target.mk文件中设置BLE ?= 1,如下图所示。如果协议栈用的是ble_stack_v2(..\Services路径下还有ble_stack_v2文件夹),则还需要打开BLE_V2 ?= 1

2.BLE相关文件

  • stack中相关接口文件在\services\ble_app\app_mian目录下app.capp_task.capp_ble_mode_switch.c

3.Adv和scan rsp数据格式

如BT SPEC Vol3 PartC 11中介绍,adv和scan rsp的格式如下所示,其中Length指ad type + ad data的长度。

  • ad type指该段广播数据类型,常见的有Flag(0x01)、Complete Local name(0x09)、Services data(0x16),具体参考Spec:Generic Access Profile
  • ad data指该段广播数据,所有发出的adv以及scan rsp数据都必须满足该格式要求,否则无法正常发送。

4.广播模式

广播模式主要分为legacy adv(传统广播)extended adv(可扩展广播),两者主要区别:

  • legacy adv模式下,adv和scan rsp最大长度为31Bytes
  • extended adv模式下,adv和scan rsp最大长度为255Bytes,但只能被支持spec5.0及以上的设备扫描到

5.如何添加新的广播

(1)创建USER_X

        在app_ble_mode_switch.h文件中的BLE_ADV_USER_E中的BLE_ADV_USER_NUM前面添加需要注册的USER_X

(2)定义数据填充函数

定义USER_X的广播数据填充接口,可参考app_ble_stub_user_data_fill_handler。

Notes:

  • adv data和scan data需要按照前面的步骤进行填充
  • 通过app_ble_data_fill_enable函数,来使能/禁用USER_X的adv和scan rsp

(3)初始化

在初始化阶段通过接口app_ble_register_data_fill_handle注册USER_X的数据填充函数,参考如下

(4)Log分析:

  • log中搜索app_ble_data_fill_enable,确认USER_x是否使能;

  • log中搜索HCI TX的数据:01 37 20,确认该数据包中是否包含USER_X的adv数据;或01 038 20,确认该数据中是否包含USER_x的scan rsp数据。如下示例:01 37 20中包含了3组广播数据。

6.如何开始广播

        调用接口app_ble_start_connectable_adv开始广播,或接口app_ble_refresh_adv_state刷新广播。

7.如何确认广播成功

(1)如第5点第(4)条log分析中所说,确认USER_X的数据已经成功添加;
(2)通过01 37 20 或者 01 38 20 确认改adv、scan rsp的handle(第5个byte),通过01 39 20确认该handle有使能,01 39 20 第 5 个 byte 代表是否使能,第 7 个 byte为 handle。也可通过 activity state 状态判断,当 actv state 从 4 变成 5 即该 adv 已经成功。如下:

以上就是BES平台BLE模块基础经验分享,多有不足,还望补充指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值