设为首页收藏本站

技术子

 找回密码
 速度加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 3243|回复: 5

BLE4.0协议讲解 6 之 广播包分析

[复制链接]

61

主题

106

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13794
发表于 2016-7-4 23:48:25 | 显示全部楼层 |阅读模式
本节内容   :=======
QQ截图20160704232629.png

欢迎加入 蓝牙BLE4.0协议研究 【177341833】 一起学习和讨论


[url=]2.9、空中接口包
2.3节中已经讲了报文的格式,这一节讲解广播信道和数据信道下的具体的包内容,以及链路层的相关控制包。
2.9.1、广播通道PDU
报文结构如表2-2,广播包的类型共有7种,如图2-43
image048.png
2-43广播信道PDU的包头类型区域代编码
2.9.1.1Advertising PDUs2.9.1.1.1ADV_INDADV_NONCONN_INDADV_SCAN_IND
   上面的3种广播的Payload是一样的,如图2-44
image049.png
2-44 ADV PDU Payload

    前文中有提到,广播信道的Payload的首6个字节为,广播地址。它有报头中的TxAdd决定是公共地址还是随机地址。而其余的为AdvData广播数据,最多31个字节。广播数据是由广播者的HOST发送下来,其实这些数据是由Generic Access Profile (GAP)也就是通用访问规范来设置的。说到这,我贴出下面的图2-45
image050.png
2-45 HOST层数据到CONTROLL层的路径
    在图2-45中,左边的为带有HCI的隔离式协议栈,右边是完整嵌入式协议栈。这里我主要想说明一个问题是,协议的每一层并不是像楼梯一样只能一步步的将数据向上或者向下传输,例如,GAP其实差不多到了最高层了,但是他的数据有两种路径给底层,一种是经过L2CAP层,一种就是直接给到链路层,如果有HCI就直接给到了HCI接口。总之,不要局限于固定思维的以为,协议的每一层都是一层一层的将数据传输,有的层可能是平行的,有的层可以越过其他层到另外一层。
    接着讲广播数据的结构吧!在规范中的第3卷PART C的第11节就有“Advertising and Scan Response data format”这么一节。先来张图2-46吧。
image051.png
2-46 Advertising and Scan Response data format
图2-46 中可以看到,对于GAP来说,广播和扫描应答数据的31个字节都用到了,包括有意义的部分和没有意义用0填充的部分,当然发送到空中只有有意义的部分,也就是所GAP发送到底层时是31字节,但是底层只需要有意义的部分。而有意义的部分是由许多相同的AD Structure组成,这个结构也有一定的格式:每个结构的第一个字节是长度,长度后面就是数据了,这个数据的长度就是前面的长度表示的多少个字节。而数据部分包括AD Type和AD Data。这里不讲HOST层的东西了,在4.0规范手册的1736页有AD Type的定义,同时在1761页中”APPENDIX C (NORMATIVE): EIR AND AD FORMATS”中详细介绍每个AD Type的意义。例如,有关FLAGS类型的解释如图2-47
image052.png
2-47广播数据域中的FLAGS类型

    标志位是每个广播都必须发送的一个类型,这主要是告诉对方自己设备硬件能支持什么:是有限制发现模式还是通用发现模式、是否支持常规蓝牙、作为从机同时支持常规蓝牙和BLE还是作为主机同时支持常规蓝牙和BLE。如图2-48为采集到空中的广播报文,这个报文共包含了4个AD结构体。
image053.png
2-48 Sniffer采集空中广播报文
2.9.1.1.2ADV_DIRECT_IND
    这个报文只有两个地址,一个是广播者自己的设备地址还有一个就是希望连接的对方的设备地址,如图2-49
image054.png
2.9.1.2Scanning PDUs2.9.1.2.1SCAN_REQ
    这里不再累赘,和ADV_DIRECT_IND的包一样,如图2-50图2-51为采集空中的扫描请求包。
image055.png
2-50 SCAN_REQ PDU Payload
image056.png
2-51Sniffer采集空中扫描请求报文
2.9.1.2.2SCAN_RSP
这个包和ADV_IND包一样,如图2-52图2-53为空中采集的扫描应答包。
image057.png
2-52 SCAN_RSP PDU payload

     在图2-46图中已经讲了ScanRspData的数据。
image058.png
2-53Sniffer采集空中扫描应答报文
2.9.1.3Initialing PDUS2.9.1.3.1CONNECT_REQ
连接请求包在2.8.3节中已经详细讲解,图2-35为连接请求包的包格式。
image040.png
2-35CONNECT_REQPDU payload

InitA和AdvA分别是发起者的设备地址和广播者的设备地址。图2-36为LLData的组成结构。
image041.png
2-36LLDatafield structure in CONNECT_REQ PDU’s payload
LLData包含有10个区域:
l  AA区域共有4个字节。”AA”是Access Address接入地址的两个头字母,前面有提到连接状态下的接入地址是有主机在连接请求包中提供。
l  CRCInit区域共有3个字节。是连接状态下的CRC校验的移位寄存器的初始值。
l  WinSize区域共有1个字节。它为传输窗口的时间,而且这个值乘以1.25ms才是真正的传输窗口时间。即:
Ø  transmitWindowSize = WinSize * 1.25 ms
它是1.25ms的倍数,范围:
[1.25ms,MIN(10ms, connInterval - 1.25 ms)]
l  WinOffset区域共有2个字节。它是传输窗口偏移的时间,同样这个值需要乘以1.25ms才是真正的传输窗口偏移时间。这个参数其实只在第一连接事件发生前或者连接参数更新时用一次,之后的时间主要就是连接间隔和扫描窗口控制。范围:
Ø  transmitWindowOffset = WinOffset * 1.25 ms
它是1.25ms的倍数,范围:
[0, connInterval]
l  Interval区域共有2个字节。这个就是传说中的连接间隔时间了。时间为:
Ø  connInterval = Interval * 1.25 ms
它是1.25ms的倍数,范围:
[7.5ms,4.0S]
l  Latency区域共有2个字节。这个就是从机潜伏次数,这个是次数不是时间啊!什么作用呢?就是从机没有必要对于每一个主机的连接事件都进行应答,例如假设connSlaveLatency=5那么连续5个连接事件,如果从机本身没有数据需要发送,那么这个5个事件从机可以不用搭理,主机也不会认为连接出了问题。
Ø  connSlaveLatency = Latency
范围:
[0, MIN(((connSupervisionTimeout /connInterval) - 1),500)]
l  Timeout区域共有2个字节。这个时间前面有提到它是10ms的倍数。所以真正的时间为:
Ø  connSupervisionTimeout = Timeout * 10 ms
范围:
[MAX(100 ms, (1 + connSlaveLatency) * connInterval),32.0s]
l  ChM区域共有5个字节。它就是信道地图了,具体看信道章节。
l  Hop区域共有5bits。这是5bits,这是5bits,重要的事情说3遍。这个在自适应调频中使用的调频增量。
SCA区域共有3bits。这个东东就是主机的时钟精度,这个是最难用的一个参数了,在传输窗口扩展中会用到这个参数。这3个bit表达能力是有限的,所以在协议中有一张表,如图2-37
image042.png

欢迎加入 蓝牙BLE4.0协议研究 【177341833】 一起学习和讨论
133328x5azda7ocyyaxjfj.jpg










回复

使用道具 举报

61

主题

106

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13794
 楼主| 发表于 2016-7-6 11:52:50 | 显示全部楼层
PDF  会 最后才共享 出来 ,不好意思啊
回复 支持 反对

使用道具 举报

0

主题

13

帖子

74

积分

注册会员

Rank: 2

积分
74
发表于 2016-7-7 08:39:12 | 显示全部楼层
学习学习   支持楼主   辛苦了
回复 支持 反对

使用道具 举报

0

主题

2

帖子

210

积分

中级会员

Rank: 3Rank: 3

积分
210
发表于 2017-12-30 15:54:02 | 显示全部楼层
本帖最后由 xiachime 于 2017-12-30 15:56 编辑

还是没明白这张图楼主表达的意思。楼主想教我们的是什么? image053.png
回复 支持 反对

使用道具 举报

0

主题

2

帖子

210

积分

中级会员

Rank: 3Rank: 3

积分
210
发表于 2017-12-30 17:32:35 | 显示全部楼层
明白了!原来每个数据结构都包含长度、类型、数据。谢谢!
回复 支持 反对

使用道具 举报

0

主题

12

帖子

42

积分

新手上路

Rank: 1

积分
42
发表于 2019-12-21 17:47:06 | 显示全部楼层
记不得是哪一年,开奖网“阊门北漂”去苏州参加作协的一个文学活动,会议闲暇,一个人抽空偷偷去阊门一看,看就看了,也仅仅是一看,没有必要寻祖觅宗的深而探之。回到宾馆房间才发现我要带的那本书没带来,不知从何时起,出门习惯包里总要带上一两本书,等车等人空闲时翻上几页,如此打发时光心中宁静。带来的包被翻了个底朝天,找来找去找不到那本书。找不到书,我就真没了主心骨,喝酒打牌太无聊了,一下子不知干什么好。在房间里困兽一样转了几圈后,北京pk10立马决定出门找书店买书,刻不容缓!一小时后我带着陶老师的《苏州记》回到宾馆,回到安静时光之中。
       这几年,我又添了个不太好的新毛病,读到一作家的书,如果甚是喜欢,爱不释手了,我立刻就百度一下,看看这个作家出了哪些书,然后在网上一一搜寻,一网打尽,不管是一套还是一箱,尽数买来,挑灯夜读慢慢细品,一而再,再而三,反复细嚼,连呼过瘾,如有一本不买来,害了相思病一样寝食难安,夜不成眠,用尽心思,重庆欢乐生肖哪怕在旧书网上高价买来,才罢了心愿

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 速度加入

本版积分规则

Archiver|手机版|小黑屋|技术子 ( 粤ICP备14028582号  

GMT+8, 2020-10-23 05:02 , Processed in 0.130617 second(s), 40 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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