配对的触发有以下几种情况:

1:主机直接发起。

2:从机发起安全请求,如果之前绑定过,那么主机会直接用用保存的LTK加密链路,如果没有那么主机会发起配对请求。

3:BLE中的有一个安全模式的概念。当某个属性被设置为需要认证的加密链路访问时,那么当在主机访问从机的属性服务器时,如果链路是不安全的就会返回错误,然后主机会发起配对请求从而实现安全要求。

第三种方式:

被动等待主机触发的方式,首先要将从机属性设置需要安全的链路才能访问,那么手机在访问时就会触发安全参数请求,从机回复安全参数(以及静态密码)

1.加密主机访问链路:

BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM();

或者

BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM();

2.主机失败会触发安全参数请求:BLE_GAP_EVT_SEC_PARAMS_REQUEST

3.从机响应回复请求:   err_code = sd_ble_gap_sec_params_reply();

第二种方式:

1、手机连接上后立刻调用安全请求api:  sd_ble_gap_authenticate。

@details In the central role, this function will send an SMP Pairing Request (or an SMP Pairing Failed if rejected),otherwise in the peripheral role, an SMP Security Request will be sent.

err_code=sd_ble_gap_authenticate();

2、这样手机收到后就会发送配对请求    :BLE_GAP_EVT_SEC_PARAMS_REQUEST

3、回复手机的配对请求,设置不绑定。(这样手机每次收到设备的安全请求就会发配对请求过来从而启动配对)

err_code = sd_ble_gap_sec_params_reply();

4、之配对过程会自动进行。我们只需要根据收到的BLE_GAP_EVT_AUTH_STATUS事件,判断其状态是否是成功,来决定配对是不是成功了,从而决定断不断开链接。

caseBLE_GAP_EVT_AUTH_STATUS:

if(p_ble_evt->evt.gap_evt.params.auth_status.auth_status == BLE_GAP_SEC_STATUS_SUCCESS)

{

printf("pair success\r\n");

}

else

{

sd_ble_gap_disconnect(m_conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);

}

nrf51822笔记之密码配对过程梳理相关推荐

  1. ble连接过程建立_BLE配对绑定过程梳理

    (一)BLE SM为以下三种procedure提供支持: 1. Pairing; 2. Bondig; 3. Encryption Re-establishment; 区别于传统蓝牙的配对过程,BLE ...

  2. BLE配对绑定过程梳理

    (一)BLE SM为以下三种procedure提供支持: 1. Pairing; 2. Bondig; 3. Encryption Re-establishment; 区别于传统蓝牙的配对过程,BLE ...

  3. 蓝牙HC-05 配对过程以及注意事项

    蓝牙HC-05 配对过程以及注意事项 这种MCU用的蓝牙模块已经做了集成,一个模块做主机,一个做从机,配对之后直串口发送,另一端串口接收即可,相当于一个 无线的串口,就是人们经常说的透传了,可以说是相 ...

  4. BLE-NRF51822教程10—动态密码(配对码)

    本讲教程也是在 sdk中的的uart例子 的基础上修改实现动态密码(其实是配对码)的功能.Uart例子在以下目录中 XXX\Keil_v5\ARM\Pack\NordicSemiconductor\n ...

  5. CC2540 Central与CC2540 Peripheral 密码配对

    照例先扯点别的. 按常理这个其实应该并不难,毕竟BLE配对过程很好理解.但真正做起来的时候总会遇到一点问题. 我卡在拥有输入能力的主机向拥有显示能力而生成密码的从机发送密码回应这个地方上. 找遍文档也 ...

  6. HBase眼高手低从Shell到IDEA编程、心路笔记、踩坑过程

    HBase眼高手低从Shell到IDEA编程.心路笔记.踩坑过程 HBase眼高手低 通过shell操作Hbase Foundation 在terminal中输入hbase,就可以查看hbase命令的 ...

  7. 深入理解低功耗蓝牙的配对过程- Part 2 Key Generation Methods

    在第1部分我们讨论了低功耗蓝牙中的配对特征交换.配对特性交换用于使配对的发起者和响应者这两种设备能相互理解对方所支持的配对特性. 可以被使用的配对特性包含以下: OOB Data Flag bit M ...

  8. Linux工作笔记-重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (usi

    原博文地址: https://blog.csdn.net/mrs_haining/article/details/78953259 注意了:安装Linux后默认带的Mysql也会有这样的问题! 一般这 ...

  9. HALCON 21.11:深度学习笔记---网络和训练过程(4)

    HALCON 21.11:深度学习笔记---网络和训练过程(4) HALCON 21.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的.整 ...

最新文章

  1. 消息队列服务器安装失败,开发环境下的RocketMQ完整安装步骤、错误分析以及示例...
  2. wxWidgets:wxTrackable类用法
  3. 排序算法:冒泡排序算法优化实现及分析
  4. 手工杀毒之“三十六计”
  5. restfull服务器端获取文件,使用 FileREST API (获取文件服务) - Azure 文件存储 | Microsoft Docs...
  6. C Primer Plus 第9章 函数 9.7 指针简介
  7. DevOps使用教程 华为云(15)git如何将本地项目初始化为远程仓库
  8. GitHub命令使用步骤
  9. java字符数组比大小排序_Java字符串数组进行大小排序
  10. 如何从Altium Designer官方网站下载元件库
  11. Windows下搭建论坛服务器
  12. iOS 关于音乐锁屏控制音乐(锁屏信息设置)
  13. 如何用计算机打出下划线,电脑下划线怎么打?下划线怎么输入出来
  14. 引入mybatis-plus报 Invalid bound statement错误怎么办,动动手指改一个地方就行
  15. 如何判断线性方程组是一个解还是无穷个解
  16. 本地项目与Git项目关联
  17. 7 SY Vue 原理 副本 页面编辑错误
  18. 软件测试之SDK开发(ios)——signal捕获
  19. b s html模板,【B/S】HTML~CSS初识
  20. CentOS 6.3下Samba服务器的安装与配置

热门文章

  1. 3.程序的局部性原理
  2. python3.6字典有序_Python-字典是用Python3.6+订购的吗?
  3. 超大规模数据中心容量在四年内翻了一番,中国占比15%
  4. 您对光纤损耗了解多少?知道如何计算吗?
  5. 运维工程师 | 交换机堆叠
  6. 新基建将引发全国用电量暴涨近两成,如何应对
  7. 小米机器人虚拟墙设置_扫地机器人虚拟墙应该怎么放置使用
  8. 成功解决linear_model\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been ad
  9. ML之预测:玩转2018世界杯—采用机器学习预测小组赛、十六比赛、四决赛、半决赛、决赛以及世界杯总冠军的各个队伍
  10. CV之YOLOv3:深度学习之计算机视觉神经网络Yolov3-5clessses训练自己的数据集全程记录(第二次)