一、前言
上一篇文章中讲解了,如何打印配对第一阶段和第三阶段的log信息,本篇将结合代码讲解如何打印配对第二阶段过程中的LOG信息,已经讲解第一次配对和重连的区别,已经怎么去验证。
二、阅读说明
1、泰凌微芯片学习者,前期使用过该芯片。
2、能够知道怎么进行创建工程,下载代码。
3、有一块开发板,板上的芯片可以是8251,8253或者8258。
三、正文
1、使用的SDK使用的sdk和demo为该篇文章描述的“手把手教你:打印配对过程中的LOG信息”。
2、增加连接加密完成事件标志
如上图所示在app.c中的user_init_normal函数中增加GAP_EVT_MASK_SMP_CONN_ENCRYPTION_DONE标志。增加了该事件标志之后,当在第二阶段主机发送开始加密回复指令(
start encryption response)给到从机的时候,就会触发回调函数。
触发的时机,在计算完了STK,进入链接层加密阶段时,详见如下图片:
3、连接加密回调函数
如上图所示,连接加密回调函数在app.c中的app_host_event_callback函数中,我在里面增加一个打印的函数:
tlkapi_send_string_data(APP_SMP_LOG_EN, "[APP][SMP] conn encryption done:", pEvt, sizeof(gap_smp_connEncDoneEvt_t));
该打印的内容主要为连接句柄,和重连的标志。如果说当前是第一次配对,那么该值为0,如果为重连,则该值为1。详细解释如下:
4、第一次配对打印信息
如上图所示,与配对有关的打印信息如下:
[APP][SMP] paring begin:: 40 00 00 00[APP][SMP] conn encryption done:: 40 00 00[APP][SMP] paring success:: 40 00 01 01
图中的conn encryption done:: 40 00 00,参数解释如下:
- 40 00:connHandle,代表连接句柄。
- 00:re_connect,代表重连标志,为0表示是第一次配对连接。
5、重连打印信息
如上图所示,与配对有关的打印信息如下:
[APP][SMP] conn encryption done:: 40 00 01
图中的conn encryption done:: 40 00 01,参数解释如下:
- 40 00:connHandle,代表连接句柄。
- 01:re_connect,代表重连标志,为1代表当前是重连。
6、关于使用nRf Connect软件进行第一次配对和重连的说明
第一次配对,请参考这篇文章:《手把手教你:BLE设备如何和手机进行加密配对绑定》
重连操作步骤:步骤一:在连接上了之后点击DISCONNECT按键
步骤二:重新进行搜索“vSample”广播名,然后点击连接
删除绑定信息:步骤一:找到BONDED列表中的VHID广播名点击CONNECT右边的三个小点
为什么是VHID广播名呢,是因为我们的广播数据里面有两个广播名,一个是vSample,一个为VHID。
步骤二:点击Delete bond information既可以删除绑定信息
四、结尾
本篇结合代码讲解了配对第二过程中连接加密回调函数,从上面的打印数据可以看出pairing sucess在第二次重连的时候是不会出现的,也就是重连没有第三阶段秘钥分发,那么我们怎么判断当前的加密是否已经完全成功了呢,下一篇会讲解另外一个回调函数。
我写了一个合集,不依赖 Nordic、泰凌、瑞萨等厂商商用 BLE 协议栈,从无线底层链路层入手,从零手写 BLE 广播扫描逻辑,拆解蓝牙广播包、信道切换、射频调度、广播数据解析完整流程,适合想吃透 BLE 底层、自主开发蓝牙工具、规避商用协议栈授权限制的嵌入式开发者。
231