设为首页收藏本站

Discuz! Board

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2722|回复: 2
打印 上一主题 下一主题

有关从机静态连接的过程分析

[复制链接]

4

主题

10

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
LYFMCU 发表于 2019-10-23 17:18:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 LYFMCU 于 2019-10-23 17:45 编辑

先上图,在群友的提示下找到了这张图  我先说说个人的理解:1.在初始化的时候通过 sd_ble_opt_set()这个函数    设置BLE选项 形参1是BLE_GAP_OPT_PASSKEY,形参2.就是对应的密码了
2.在建立连接完成以后,等待BLE_GAP_EVT_SEC_PARAMS_REQUEST_这个事件 然后调用 void pairng_request(void)这个函数 这个函数中调用了sd_ble_gap_sec_params_reply函数来对执行 使用GAP安全参数回复。那么问题来了什么情况下才会触发 BLE_GAP_EVT_SEC_PARAMS_REQUEST事件。根据图中可以发现是 SMP_Pairing Request.(但是看例子代码是从机和主机建立以后 通过sd_ble_gap_authenticate这个函数才会触发 SMP_Pairing Request,对于这个和图中介绍的不一样啊
void pairng_request(void)
{
  ble_gap_sec_params_t sec_params;
        uint32_t err_code;
        memset(&sec_params,0,sizeof(ble_gap_sec_params_t));
        sec_params.bond = BOND;
        sec_params.io_caps = IO_CAPS;
        sec_params.mitm = MITM;
        sec_params.max_key_size = MAX_KEY_SIZE;
        sec_params.min_key_size = MIN_KEY_SIZE;
        err_code = sd_ble_gap_sec_params_reply(m_conn_handle,BLE_GAP_SEC_STATUS_SUCCESS,&sec_params,NULL);  //
      APP_ERROR_CHECK(err_code);
}
3.在调用了pairng_request这函数以后从机就会发响应给主机也就是图中SMP Pairing Response了。
4. 当主机收到这个响应以后会弹出输入密码的界面。我猜测应该是sd_ble_gap_sec_params_reply这个函数可以设置主机密码配对的时间等参数吧
5. 接下来就进入了蓝牙配对的第二阶段了    生成短期密钥(Short Term Key,简称STK)6.协议栈会生成一个事件 BLE_GAP_CONN_SEC_UPDATE,。
7.BLE_GAP_EVT_AUTH_STATUS,在这个事件中如果监测到配对失败了,就调用函数关闭连接

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

243

主题

1706

帖子

6151

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6151
沙发
admin 发表于 2019-10-24 15:56:14 | 只看该作者
1发生连接事件的时候,初始化GAP验证过程。这样就会在连接的时候进行配对认证。
    设置了安全参数的值并不能决定主机和从机需要进行配对认证。需要主机进行配对认证的时候要调用函数sd_ble_gap_authenticate(m_conn_handle,&params)发起GAP链路认证。这个调用位置决定什么时候发起认证,一般是在主机发起连接的时候进行认证申请,因此该函数应该在事件BLE_GAP_EVT_CONNECTED下调用。同时注意安全参数初始化的时候mitm要设置为1,发起的是需要密钥的认证申请。

2发生安全参数应答事件的时候,首先发起配对请求,交换配对信息,同时主机决定配对算法。这时候会调用第一步编写的配对请求pairng_request函数。
3 GAP链路认证状态,如果认证不成功,则断开链接。如果认证成功,这正常连接
回复 支持 反对

使用道具 举报

4

主题

10

帖子

53

积分

注册会员

Rank: 2

积分
53
板凳
 楼主| LYFMCU 发表于 2019-11-5 18:25:20 | 只看该作者
admin 发表于 2019-10-24 15:56
1发生连接事件的时候,初始化GAP验证过程。这样就会在连接的时候进行配对认证。
    设置了安全参数的值并 ...

明白了,感谢您!
回复 支持 反对

使用道具 举报

Archiver|手机版|小黑屋|Comsenz Inc.   

GMT+8, 2024-4-25 19:51 , Processed in 0.122748 second(s), 29 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表