BLE基本状态与事件

news/2024/7/7 10:26:33 标签: BLE, 广播, 连接, 基本状态

1、 BLE广播事件:

在一个广播事件中,广播包会分别在三个广播通道中被发送一次(37,38,39);

2、BLE广播间隔:

是指两次广播事件之间的最小时间间隔,一般取值范围在20ms-10.24S之间,链路层会在每次广播时间期间产生一个随机广播延时时间(0ms-10ms)

3、BLE扫描事件:

每次扫描设备打开Radio接收器去监听广播设备,这样称为一个扫描事件,扫描频宽比,Duty-Cycle,参数:
    (1)扫描时间:扫描设备的扫描频度;
    (2)扫描窗口:每次扫描事件持续的时间;

4、BLE发起连接
发送一个连接请求,连接请求包括一套为从设备准备的连接参数,安排连接期间发生的通道和时间。如果广播设备接受了连接,两个设备会进入连接状态,发起方会称为Master(主机),而广播方会称为Slave(从机)。

BLE连接参数:
    通道映射,指示连接使用的频道。
    调频增量,一个5~16之间的随机,参与通道选择的算法。
    连接间隔,1.25ms的倍数,在7.5ms~4s之间。
    监督超时,10ms的倍数,100ms~32s之间,必须大于(1+slaveLatency)*ConnInterval
    从机潜伏,允许设备跳过的最大连接次数,0~499之间,有效的连接间隔必须小于32s,不能超过(SupervisionTimeout/connInterval)-1

5、BLE连接事件:

所有的通信都发生在两个设备的连接事件期间;
连接事件周期的发生,按照连接参数指定的间隔联系 (连接间隔)
每个事件发生在某个数据通道(0~36) (通道映射)
调频增量参数决定了下次连接时间发生的通道 (调频增量)
在每个连接时间期间,Master先发送,Slave会在150us之后做出回应,即使一个连接事件发生(或两者),双方都没有数据发送(例外情况是从设备潜伏使能),这允许两个设备都承认对方仍然存在并保持活跃的连接

从机的潜伏:
潜伏,Slave如果没有数据发送,允许跳过连接事件。

终止连接
监视超时参数都指定了两个数据包之间的最大时间跨度。监视超时时间必须大于有效连接间隔而小于32s。Slave和master双方都维持着自己的监视超时计时器,在每次收到数据包时清零。如果连接超时,设备会认为连接丢失,并且退出连接状态,返回广播、扫描或者待机模式。

6、配对认证:主从机一方提供密码,一方输入密码,如果双方密码一致,那么此密码将作为TK(临时密码);

7、加密链路:利用得到的TK(临时密码)等信息计算出STK(短期密码)用来做加密认证;

8、绑定:加密认证通过后,利用STK等信息生成LTK(长期密码),把LTK保存下来,用于下次连接时做加密认证,不需要再次配对就可以加密链路,这就是绑定了。


http://www.niftyadmin.cn/n/683153.html

相关文章

HAproxy centos7安装配置

1. haproxy 官网 http://www.haproxy.org/#doc1.8 2. 最新稳定版下载: http://www.haproxy.org/download/1.8/src/haproxy-1.8.14.tar.gz 3. 安装 tar -zxvf haproxy-1.8.14.tar.gz cd haproxy-1.8.14 uname -r 查看内核版本 cat README 可以查看安装说明&#xf…

ubuntu 16.04安装windows 7虚拟机

安装virtualbox sudo apt-get install virtualbox使用IOS文件安装Windows。 (1)在高级选项下可以自定义分配的硬盘大小。 (2)建立好运行环境之后,把IOS文件放入模拟的驱动盘,点击启动,即可自…

block 内部结构分解

Oracle block 的详细物理结构图: 本文主要说明oracle block 的物理结构,它是oracle 的最小存储单元,由多个os 数据块组成。主要由三个逻辑层组成(通过c 语言描绘的结构,如下图一所示):the ca…

深入分析Spring 与 Spring MVC容器

Spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext,使得拥有web功能。那么,Spring MVC是如何在web环境中创建IoC容器呢?web环境中的IoC容器的结构又是什么结构呢?web环境…

内存管理--你的数据放在哪里

未初始化的全局变量(.bss) Bss段用来存放那些没有初始化和初始化为0的全局变量。此种类型只占运行时的内存空间,而不占用code代码的文件空间。作为全局变量,在整个程序的运行周期内,bss数据是一直存在的。初始化过的全…

oracle一个事务的完整流程

服务进程如何处理用户进程的请求服务器进程在完成用户进程的请求过程中,主要完成如下7个任务:0.sql语句的解析1.数据块的读入db buffer2.记日志3.为事务建立回滚段4.本事务修改数据块5.放入dirty list6.用户commit或rollback 0.sql语句的解析下面要讲or…

【python3的进阶之路二】因特网客户端编程 实战

一、生成电子邮件 电子邮件消息不仅包含纯文本,还有附件、文本中的格式等,这种较长的消息由多个部分组成。比如消息中由纯文本的部分,可能还有对应的HTML部分,这部分针对使用web浏览器作为邮件客户端的情形,除此之外还…

ubuntu 16.04安装go语言并配置VSCode使用环境

一、go语言安装 1、下载安装文件 由于go语言为goole开发,官方网站被墙,我们可以到国内镜像网站进行下载。 https://www.golangtc.com/download 本次安装使用源码为:go1.9.2.linux-amd64.tar.gz 2、将安装文件解压到指定目录 $sudo tar …