基于 BLE 5.1 协议 Core Spec。

目录

1、CONNECT_IND

1.1、LLData

2、AUX_CONNECT_REQ

3、AUX_CONNECT_RSP

4、总结


发起态,是针对连接的。也就是这样一个应用流程:首先呢,你开启一个 Scan,让设备处于扫描状态,这个时候,扫描到一个你想要的 Advertising,然后关闭 Scan(当然,也可以不关),这个时候,你知道了这个 Advertising 的地址了,如果你想和这个设备进行连接,则需要让设备进入发起态,与这个 Advertising 进行一组交互,一旦交互成功,则双方进入连接态。

与 Scan 类似,Init 状态也分为了针对 Legacy 的和 Extended 的,一共有 3 中包:

• CONNECT_IND
• AUX_CONNECT_REQ
• AUX_CONNECT_RSP

注:这里我们只讨论 Payload 域,发起态的总体数据包组成也是和广播态一致,也是分为 Preamble + AA + PDU + CRC 的组成,而 PDU 的 Header 域的含义与 Advertising 含义一致,参考 《广播态数据包组成》

1、CONNECT_IND

这个是针对 Legacy 的链接建立交互。交互过程是,本机进入发起态(Initiating state),一旦在 Primary Advertising Physical Channel 上再次接收到期望连接的设备发来的可连接 Advertising,则立马回复 CONNECT_IND,本机立即进入连接态,成为 Master。

InitA:指的是本机发起态的地址,也就是本机地址

AdvA:指的是对端 Advertising 的地址

LLData :详见下面分析

1.1、LLData

连接建立,是一件大事,需要交互的信息非常之多,基本上全部包含在 CONNECT_IND 的 LLData 中:

LLData 包含信息非常丰富,我们逐个分析:

AA:这个指的是 Access Address,连接建立的接入地址,由 Master 生成,是一个随机数

CRCInit: CRC 计算的初始值

WinSize:这个应用于计算  transmitWindowSize ,这个  transmitWindowSize = WinSize * 1.25 ms.。在建立连接初期,需要计算第一个包交互的锚点,在时序分析的时候,会通过图解的方式来展示这个玩意的应用

WinOffset:这个应用于计算   transmitWindowOffset , transmitWindowOffset = WinOffset * 1.25 ms。和上面一个一样,计算第一个包的锚点。

Interval:连接间隔,每隔这个时间,来一次 Connection Event 交互。connInterval = Interval * 1.25 ms.

Latency:连接的 Latency,代表 Slave 并不是每个 connInterval 都需要回复包,而是可以间隔 Latency 个回复也可以。

Timeout: 也称 TO,用于表示超过这么长时间没有交互,就认为连接断开,connSupervisionTimeout = Timeout * 10 ms.

ChM:全称是 Channel Map,5 个字节,表示了 40 个 bits 的 Bitmap(其实只有37个有用,因为 37、38、39只用于 Advertising 相关交互,不用于 Connection),告诉对方,我们在哪些频道上进行数据发送。对应频道为 1 代表有效,反之无效,不用。

Hop:跳频参数,代表了  hopIncrement ,因为连接的稳定性,需要不断的跳频后进行数据交互,那么下一次跳频的地点在哪个频道呢,事实上,并不是顺序的使用频率(1、2、3、4....),之所以叫跳频,其实是按照固定的一套跳频算法(后面章节会详细讲)双方同时跳跃,这个  hopIncrement  就是跳频计算算法的一个输入参数。

SCA:代表了 Master 的时钟精度,单位是 ppm,即百万分之一。

2、AUX_CONNECT_REQ

AUX_CONNECT_REQ 和 CONNECT_IND 的包组成完全一致,区别是,AUX_CONNECT_REQ 针对于 Extended 的,其实就是 Secondary Advertising Physical Channel 上的交互,不在多说。

3、AUX_CONNECT_RSP

与 Legacy 不一样的是,Extended 上建立连接上,还多了一个步骤。

Legacy 的是 Initiating 端直接发送 CONNECT_IND ,然后其进入 Connection 状态,其并不知道对端是否收到了这个 CONNECT_IND 。

Extended 在发送 AUX_CONNECT_REQ 后,还等待 Advertising 端回复一个 AUX_CONNECT_RSP 包,双方握手完成,正式进入 Connection 状态:

阅读了几个 Common Extended Advertising Payload Format ,这个肯定不在话下,只携带了 AdvA 和 TargetA,进行了一个简单的握手。

4、总结

看得出来,与针对 Scanning 类似,Initiating 的几个包,分为了针对 Legacy 和 Extended 的,REQ 的含义和包体都几乎一致。连接稍微复杂些,因为有很多参数需要确定,以保证连接的可靠性。

BLE(7)—— 发起态数据包组成( Initiating Packets PDUs)相关推荐

  1. 蓝牙学习笔记(九)——BLE超过20字节数据包传输(MTU)

    前言:在默认情况下,BLE 支持传输一次性最大不超过20字节的数据包,但是很多应用场景下,往往会需要传输更多数据.下面说下如何进行一些修改,使之能够传输更大数据. 实验环境: 客户端:nRF Conn ...

  2. 2.4 BLE Mesh各层帧包格式详解

    前言 继前面几个章节的铺垫,我想读者或多或少对BLE MESH整个入网过程的了解,应该十成中起码占了有八成吧,剩下的2成通过反复阅读应该不是什么大问题:讲完了BLE MESH入网过程,那么接下来就是进 ...

  3. libpcap/tcpdump—3—抓包结论(3 packets captured,3 packets received by filter,0 packets dropped by kernel)

    每次在退出tcpdump的时候,终端上都会显示上图这样的3行信息.本篇文章就是想讲解这3个数值的相关信息. 我会尽量写的详细,但能力有限,核心地方无法点到本质. 这条信息是tcpdump.c中info ...

  4. 蓝牙相关学习:4.2.BLE空口包结构 - PDU

    PDU PDU 基本数据结构 LL Header 广播包(广播报文) Advertising Header PDU Type Advertising PDU Scanning PDU Initiali ...

  5. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

  6. ble pairing空中包分析

    ble 抓取空中包的工具有两种,这里使用更加广泛的ellisys 工具(同时支持ble 和br/edr蓝牙分析)为例,说明ble 配对过程在空中包的体现流程. 平常工作中,对细致的知识点可能并没有做过 ...

  7. 蓝牙广播数据包_蓝牙BLE数据包格式汇总

    以蓝牙4.0为例说明: BLE包格式有:广播包.扫描包.初始化连接包.链路层控制包(LL层数据包).逻辑链路控制和自适应协议数据包(即L2CAP数据包)等: 其中广播包又分为:定向广播包和非定向广播包 ...

  8. BLE 技术(三)--- 链路层七种状态与空口报文设计(Core_v5.2)

    文章目录 一.LE Link Layer States 二.Link Layer Packet format 2.1 Advertising physical channel PDU 2.1.1 Pr ...

  9. 蓝牙BLE之系统学习

    文章目录 1 蓝牙BLE简介 2 蓝牙BLE概述 2.1 ISM Band 2.4GMHz 3 蓝牙BLE协议架构 3.1 Physical Layer 3.2 Link Layer 3.2.1 Ph ...

最新文章

  1. 打开数“智”化之门,一字之差带来的思考
  2. 二分查找(递归和非递归)
  3. Facebook 架构学习
  4. JS数组中 forEach() 和 map() 的区别
  5. 一个人,开始变得优秀,就会渐渐地从这些圈子消失了
  6. 静态路由与动态路由概念及实例
  7. 患者是否应该主动关注医疗知识
  8. Windows 10 中 VMware 要求禁用 Device Guard 问题
  9. arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)
  10. uboot支持S3C6410的SD启动
  11. o型圈沟槽设计软件_265 电机壳体上轴承室和轴承外圈增加的O型圈工艺对轴承外圈(防蠕动)作用有多大?...
  12. get_magic_quotes_gpc() 你到底是做什么的?
  13. 2021全国研究生数学建模竞赛C题思路
  14. 数学家刘徽李善兰陈景润华罗庚
  15. 通过CImageList加载图标 报错
  16. 【实战好项目】2021“觅影”医学人工智能算法大赛-5个赛道任你选
  17. 腾讯微博qq说说备份导出工具_软件推荐Day51 其他工具类 腾讯微博备份
  18. old-style parameter declarations in prototyped function definition
  19. Android adb命令开启飞行模式,开启wifi,开启移动数据等相关操作
  20. Java实现 LeetCode 321 拼接最大数

热门文章

  1. Apache web服务器目录结构、发布网站
  2. 公网域名如何解析到内网IP服务器——快解析域名映射外网访问
  3. Django 实现搜索结果分页(筛选结果分页),以及优雅添加多个筛选条件
  4. 汽车销量数据库(分车型、分品牌月度销量数据 2005-2021)
  5. 游戏编程学Python(8)— 扫雷(文字版)
  6. 【Python数据科学 | 11】应用实战:我的第一个开源项目-基金定投回测工具
  7. matlab BP神经网络 newff函数官方源码
  8. 深度学习可解释性研究(二): Understanding Black-box Predictions via Influence Functions(详细公式推导)
  9. 信贷反欺诈体系介绍及其策略规则应用
  10. npm-rebuild