六包的格式解析

在分析其它问题之前,我们需要了解在空气中传播的数据包的格式,这样才能深刻理解我们能通过格式中的各个部分做些什么。

Q1:PACKET的基本格式是什么样子的

之前我们提到蓝牙传输有两种rate,不同的rate其格式是不同的,我们分别来看一下。

Basic Rate:

Basic Rate的包格式如下图6-1所示:

图6-1 Basic Rate的packet通用格式

从图中可以看到基本可以分为三个部分:

ACCESS CODE:长度是68或者72bit,当HEADER域没有的话就是68,否则就是正常的72bit。他是用来同步和DC偏移补偿的。更通俗地来讲他是同一个piconet上的标志,也就是一个piconet上(即同一个物理通道上)传输的packet的ACCESS CODE是相同的。

HEADER:包含用于链路控制的信息。

PAYLOAD:就是信息内容,他的大小最大是2745bit。

总得来说,一个Basic Rate的packet可以由上面三者的以下组合组成:

1)ACCESS CODE;2)ACCESS COED + HEADER; 3)ACCESS CODE + HEADER + PAYLOAD;

Enhanced Data Rate

Enhanced Data Rate的包格式如下图6-2所示:

图6-2 EnhancedData Rate的包格式

这里的ACCESS CODE和HEADER是和Basic Rate一样的。事实上,我们可以理解为后面的都是payload的部分,只不过在payload部分,我们强制使用了一些头和尾的内容。

Guard:保护间隔,它要来表示HEADER的结尾到SYNC开始之间的时间。范围是4.75μs到5.25μs。

Sync:同步序列,DPSK使用的同步序列。

Enhanced data rate payload:对应的负载。

Trailer:payload的尾,其实他们都是0,对π/4 DQPSK调制而言是0000,对8DPSK的调制而言是000,000.

其实对于同步的数据而言,在payload的最后还有一个16bit的CRC校验,大家知道就可以了。

Q2:Header域都有哪些link控制的信息啊

Header域是很重要的,它包含了很多链路控制的信息,不过总得来说,可以总结为6个部分,如下图6-3:

图6-3 Header域的结构示意图

各个部分的含义如下:

LT_ADDR:3bit的逻辑传输地址,他是用来表示master是把这个包发给哪一个slave的。或者这个包是从哪个slave发送过来的。

TYPE:表示packet的类型。。

FLOW:是流控位,只有在ACL逻辑传输的时候才会使用,当RX buffer满的时候,就会把这个位置0,表示stop。当buffer又空了之后,就会把这个位置为1告诉TX可以继续发送了。需要注意的是ACL-C以及SCO,ESCO是不能使用这个位的。

ARQN:是用来告知tx放,payload是成功传输的,就是通过了CRC校验。

SEQN:就是数据流的sequence number。

HEC:就是前向纠错。

Q3:上文提到的packet类型能否简单介绍一下

我们会把这些packet分为几个部分来简单介绍,首先是5个common packet type:

ID Packet:这个packet就是上文提到的只有ACCESSCODE那一种packet。我们之后提到的inquiry msg就是一个ID Packet。

NULL Packet:这个packet只有ACCESS CODE和HEADER。一般来说他是用来返回链路信息的,比如什么rx buffer状态,或者ARQN之类的。他不需要对端的确认。

POLL Packet:和NULL Packet是类似的,比较大的差别就在于它需要对端回确认信息。需要注意的是不能会POLL Packet,否则就没玩没了。

FHS Packet:这个包的特别之处在于他包含了发送的clk信息和address信息,在page等开始的同步过程中起到了很大的作用。

DM1 Packet:这个packet的特别之处在于所有逻辑链路的控制信息都需要允许这种包,不过他也能传输data,不过仅限于ACL链路中,从一定程度上来说,可以认为他是一种ACL的packet。

接着我们来看4种类型的SCOPacket。这四种类型总得来说分为两大类,分别是DV和HV的packet。他们的差别在于:HV是没有CRC并且不重传,DV在data域有CRC,但是在同步数据域没有,data域的数据应当重传

HV Packet有可以分为HV1,HV2,HV3三种类型,HV1,HV2,HV3就是1/3,2/3/,以及没有FEC纠错,他们均没有crc,长度是固定的30byte,所以HV1就是10byte的有效数据,HV2就是20byte的有效数据,HV3就全部都是有效数据

DV packet是由10byte的data和150bit的voice域组成,voice域没有FEC纠错,data域是1~10byte长度加上16bit的crc,他们都是2/3的FEC。所以就是96/3*2,就是144bit,Voice域不能重传,data域是有校验的,所以可以重传。所示没有ack,也是需要重传的

下面我们来看一下7种eSCO的packet类型。这七种根据BasicRate和Enhanced Data Rate有可以分为两个部分,对Basic Rate而言,有以下三种packet的类型:EV3,EV4,EV5。

EV3:1~30byte,加上16bit的crc,无FEC

EV4:是1~120byte,加上16bit crc,然后是2/3FEC。

EV5:是1~180byte加上16bit的crc,无FEC

对Enhanced Data Rate而言就是还有四种packet会被使用:

2-EV3,2-EV5:和上面EV3,EV5的差别在于,使用π/4DQPSK进行调制。

3-EV3,3-EV5:和上面EV3,EV5的差别在于,使用8DPSK进行调制。

最后我们看一下ACL上传输的packet类型,同样可以分为BasicRate和Enhanced Data Rate两个部分。

Basic Rate有以下几种类型的packet:

DM1:就是1~18byte,加16bit的crc,然后又2/3的FEC

DH1:DH1相比DM1而言,没有FEC,所以长度也可以长一点

DM3:2byte到123byte的长度,加16bit的crc,然后有2/3的FEC

DH3:和DM3类似,就是没有FEC纠错

DM5:2~226byte,16bit的crc校验,信息价crc校验有一个2/3的FEC纠错

DH5:和DM5类似,但是没有FEC的纠错

AUX1:就是没有CRC校验的DH1

对Enhanced Data Rate而言,又增加了几个类型,分别是2-DH1,2-DH3,2-DH5以及3-DH1,3-DH3和3-DH5,这个也是调制的差别,能理解吧,哈哈~~

Q4:这么多的packet类型,4bit的TYPE位是如何来全部表示的啊

其实很简单啦,就是和逻辑传输的类型一起就可以判断了,具体的值见下图6-4,大家一看就了解了哦。

图6-4 packet的类型和type域值的对应关系表

蓝牙基础知识---包解析相关推荐

  1. 蓝牙基础知识进阶——Physical channel

    蓝牙基础知识进阶--Physical channel 二.物理通道 物理通道是piconet区分的标准,它是蓝牙系统结构层次中的最底层了. Q1:物理通道有哪些类型 物理通道通常可以分为四种类型: 1 ...

  2. c语言红酒编程题,葡萄酒基础知识试题解析一

    原标题:葡萄酒基础知识试题解析一 单项选择题: 1.下列哪一组完全属于酿造红葡萄酒的品种?(B) A.霞多丽.赤霞珠.梅洛.品丽珠 B.赤霞珠.品丽珠.梅洛.黑比诺 C.雷司令.龙眼.天帕尼洛.桑娇维 ...

  3. 安卓蓝牙开发(1)BLE蓝牙基础知识和一般开发流程

    一.BLE(Bluetooth Low Energy)低功耗蓝牙基本知识 Android 4.3(API级别18)引入了以低功耗蓝牙(BLE)为中心角色的内置平台支持,并提供应用程序可用于发现设备,查 ...

  4. java爬虫面试题_Java 网络爬虫基础知识入门解析

    前言 说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做 ...

  5. Python编程从入门到放弃 - Part 1基础知识习题解析

    目录 第1章 起步 第2章 变量和简单数据类型 第3章 列表简介 第4章 操作列表 第5章 if语句 第6章 字典 第7章 用户输入和while循环 第8章 函数 第9章 类 第10章 文件和异常 第 ...

  6. [系统安全] 十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  7. BlueTooth: 蓝牙基础知识进阶——Packet解析

     六  包的格式解析 在分析其它问题之前,我们需要了解在空气中传播的数据包的格式,这样才能深刻理解我们能通过格式中的各个部分做些什么. Q1:PACKET的基本格式是什么样子的 之前我们提到蓝牙传 ...

  8. 蓝牙基础知识进阶——Packet解析

     六包的格式解析 在分析其它问题之前,我们需要了解在空气中传播的数据包的格式,这样才能深刻理解我们能通过格式中的各个部分做些什么. Q1:PACKET的基本格式是什么样子的 之前我们提到蓝牙传输有 ...

  9. 【Java】基础知识-JAXP解析XML(一)

    1 XML概述 1.1 XML简介 [ 定义 ] XML 指可扩展标记语言(eXtensibleMarkupLanguage).可扩展标记语言(英语:Extensible Markup Languag ...

最新文章

  1. WMI技术介绍和应用——WMI概述
  2. SDNU 1462.时间转换
  3. c语言移数有n个整数使其,有N个整数,使其前面各数顺序向后移动M个位置,最后M个数变成前面的...
  4. Android10.0 Binder通信原理(七)-Framework binder示例
  5. wpf将文字转化为图形_工程师们开发出将天然气转化为固体的方法
  6. Upgrade Hole puncher Mathematical Modeling
  7. FileZilla Server 搭建FTP服务器
  8. 怎么导出oracle库,【DG】怎么从Oracle备库导出数据
  9. 行为型模式之 状态模式
  10. IDEA中如何配置Tomcat和项目?
  11. filter动态参数 maven_多环境下Maven项目的管理
  12. 思科服务器如何修改启动项,思科配置tftp服务器
  13. Windows下载安装cuda10.1详细步骤
  14. 计算机科学与技术用惠普星15,暑期最有颜值的学习装备,惠普星14高性能轻薄本必选...
  15. 个性签名html,简单个性签名大全2021最新版-简简单单的个性签名--个性简单签名设计-腾牛个性网...
  16. SpringBoot启动失败:出现错误——HikariPool-1 - Shutdown initiated...后立即出现 HikariPool-1 - Shutdown completed.
  17. Jetson 系列——Jetson Nano使用sudo命令免输入密码方法
  18. 微信公众号配置token
  19. Python_楼梯数计算
  20. 小豆苗服务器维护,小豆苗问题排查方法新版ppt课件

热门文章

  1. 餐饮类小程序开发有哪些优势和功能
  2. python爬虫豆瓣电影我不是药神的评价_Python | 爬取《我不是药神》电影热门短评...
  3. 自考工业微型计算机历年试卷,[工学]自考工业用微型计算机试卷历年真题.doc
  4. 用python实现困在栅栏中的凯撒解密
  5. 掌握谷歌搜索技巧,成为更优秀的程…
  6. 拜腾与博世将在动力系统、驾驶员辅助等方面展开重点合作
  7. 短线介入强势股的技巧
  8. CG动画制作项目第十五篇:部分效果的处理(二)
  9. Python 简单实现贪吃蛇小游戏
  10. C++:构造函数,析构函数及友元函数