一、前言
本篇将结合代码讲解如何打印配对过程中的LOG信息。
二、阅读说明
1、泰凌微芯片学习者,前期使用过该芯片。
2、能够知道怎么进行创建工程,下载代码。
3、有一块开发板,板上的芯片可以是8251,8253或者8258。
三、正文
1、使用的SDK使用的sdk和demo为该篇文章描述的“手把手教你:BLE设备如何和手机进行加密配对绑定”;
2、app_config.h文件更改
如上图所示将配对的LOG进行使能,如果不对此进行使能的话是打印不出来相关的log信息的
3、配对相关相关事件标志的解释
如上图所示,在app.c文件user_init_normal中,注册了三个有关配对的事件标志,如下解释:
GAP_EVT_MASK_SMP_PAIRING_BEGIN
配对开始标志,也就是在从机发出配对加密请求(SM_Security_Req)的时候会触发此事件回调函数。
GAP_EVT_MASK_SMP_PAIRING_SUCCESS
配对成功标志,在配对第三阶段密钥分发结束之后,相关的回调函数进行触发。
GAP_EVT_MASK_SMP_PAIRING_FAIL
在从机与主机进行配对的过程当中失败或者终止时,相关的回调函数进行触发
4、配对回调函数介绍
4.1、app_host_event_callback函数介绍
如上图所示,关于配对回调函数的处理过程全部在app_host_event_callback函数中。
4.2、配对开始回调
如上图所示,在配对开始的时候会进入到里面,然后打印出如下三个参数,三个参数的相关解释如下图片所示:
4.3、配对成功回调
如上图所示,在配对成功的时候会进入到里面,然后打印出如下三个参数,三个参数的相关解释如下图片所示:
4.4、配对失败回调
如下图所示,在配对失败的时候会打印如下两个参数,相关解释如下
5、程序下载进入之后打印的log信息
[FLASH][INI] 512K Flash, MAC on 0x76000[APP][INI]Public Address: 31 b8 14 38 c1 a4[APP][INI] BLE sample init[APP][EVT] connect, intA & advA:: b6 22 a3 2f f8 50 31 b8 14 38 c1 a4[APP][EVT] DLE exchange: 1b 00 1b 00[APP][SMP] paring begin:: 40 00 00 00[APP][SMP] paring success:: 40 00 01 01[APP][EVT] disconnect, reason 0x8
如上图所示,
paring begin:: 40 00 00 00,解释如下:
40 00:表示connHandle,代表连接句柄
00:表示secure_conne,代表安全连接,这里说明不采用安全连接的方式来进行配对,采用的是传统配对也就是LE legacy paring方式
00:最后一个tk_method,表示使用just work方式产生TK值,这里说明一下tk_method的产生方式是根据双方协商来定的,也就是在配对第一阶段相互之间交换了彼此的特性之后才决定的。
paring success:: 40 00 01 01,解释如下:
40 00:表示connHandle,代表连接句柄
01:表示bonding,是否启用绑定功能,该值为1表示启用绑定功能
01:表示bonding_result,表示绑定结果,这里为1表示绑定成功。
四、结尾
本篇结合代码讲解了如何开启配对打印宏,以及对打印出来的内容进行了比较详细的解释,该回调函数是在配对第一阶段和第三阶段发生的,下一篇将解释在配对的阶段解密完成之后的回调函数,也就是在配对第二阶段可以触发的回调函数。
我写了一个合集,不依赖 Nordic、泰凌、瑞萨等厂商商用 BLE 协议栈,从无线底层链路层入手,从零手写 BLE 广播扫描逻辑,拆解蓝牙广播包、信道切换、射频调度、广播数据解析完整流程,适合想吃透 BLE 底层、自主开发蓝牙工具、规避商用协议栈授权限制的嵌入式开发者。
256
