蓝牙BLE4.0的LL层数据和L2CAP层数据的区分与理解
一直搞不太清楚蓝牙BLE协议,不知道LL层和L2CAP层是如何划分的,后来博士给我讲了讲就理解了,写下来,做个记录:
1. 我们知道,除了蓝牙5.1新出的CTE,所有的BLE都是如下类型的包:
对于连接后的通讯包,PDU的最前面两个字节为header,header的最前两个bit为LLID,蓝牙BLE就是通过LLID来区分LL层数据和L2CAP层数据的。
2. LL层的包如下:
其中LLID这两个bit就是用于区分LL层数据和L2CAP层数据的。
当LLID为3时,该数据包为LL控制层数据,如下所示:
3. L2CAP层的包如下:
当LLID为2时,该数据包为L2CAP层数据包的起始包,起始包后续会有L2CAP层的长度和L2CAP层的channel ID,
当LLID为1时,该数据包为L2CAP层数据包的延续包,延续包后续没有L2CAP层的长度和L2CAP层的channel ID,但这种情况只有当
MTU的值大于data length时才会出现这样的包,但一般我们不这样用。
如下图为L2CAP层数据包格式:
4. L2CAP层的数据,根据channel ID不同,又分为三种不同的L2CAP指令,如下图所示:
上图可看出L2CAP包括三种指令:ATT指令,信令指令,SMP指令。
其中,
ATT指令用于传输应用通讯数据;
信令指令用于更新连接间隔的指令,和拒绝错误操作码时使用此信令指令;如下图:
SMP指令用于配对过程;
蓝牙BLE4.0的LL层数据和L2CAP层数据的区分与理解的更多相关文章
- iOS蓝牙BLE4.0通信功能
概述 iOS蓝牙BLE4.0通信功能,最近刚学的苹果,为了实现蓝牙门锁的项目,找了一天学习了下蓝牙的原理,亲手测试了一次蓝牙的通信功能,结果成功了,那么就把我学习的东西分享一下. 详细 代码下载:ht ...
- 蓝牙4.0的LM层说明
1.概念 The Link Manager Protocol (LMP) is used to control and negotiate all aspects of the operation o ...
- delphiXE开发蓝牙BLE4.0程序时遇到的notification问题
IDE环境delphiXE8 蓝牙硬件ST17H26 service:0xfee7 chareter:0xfec9 const u16 my_OEMServiceUUID=0xfee7;const u ...
- 基于蓝牙4.0(Bluetooth Low Energy)胎压监测方案设计
基于一种新的蓝牙技术——蓝牙4.0(Bluetooth Low Energy)新型的胎压监测系统(TPMS)的设计方案.鉴于蓝牙4.0(Bluetooth Low Energy)的低成本.低功耗.高稳 ...
- Android项目实战(三十四):蓝牙4.0 BLE 多设备连接
最近项目有个需求,手机设备连接多个蓝牙4.0 设备 并获取这些设备的数据. 查询了很多资料终于实现,现进行总结. ------------------------------------------- ...
- IOS BLE4.0蓝牙和外设连接和收发数据的流程
前言: 苹果在IOS 6系统之后开始支持BLE 4.0,iPhone4s,iPod 5,iPad 3等之后的机型开始内嵌BLE4.0硬件,因此在开发前请先确认你的开发环境符合上述要求,并且苹果在BLE ...
- iOS开发- 蓝牙后台接收数据(BLE4.0)
最近在做一个蓝牙相关的项目, 需要在应用进入后台, 或者手机属于锁屏状态的情况下, 仍然保持蓝牙连接, 并且能正常接收数据. 本来以后会很麻烦, 但是学习了下..发现就2步而已.简单的不能再简单了. ...
- Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探
Android BLE与终端通信(五)--Google API BLE4.0低功耗蓝牙文档解读之案例初探 算下来很久没有写BLE的博文了,上家的技术都快忘记了,所以赶紧读了一遍Google的API顺便 ...
- E104-BT01超低功耗蓝牙模块BLE4.0协议的片载系统解决方案
1.E104-BT01简介 E104-BT01 是亿佰特设计生产的一款小体积的蓝牙模块,贴片型(引脚间距 1.27mm),自带高性能 PCB 板载天线.支持 BluetoothV4.0 标准,简单配置 ...
随机推荐
- 【AAA】AAA协议介绍
AAA AAA简介 AAA是认证(Authentication).授权(Authorization)和计费(Accounting)的简称,是网络安全中进行访问控制的一种安全管理机制,提供认证.授权和计 ...
- postgres entityframework foreignkey
public class Model { [Key, Column("id"), DatabaseGenerated(DatabaseGeneratedOption.Identit ...
- mysql的线程处于System lock状态下
The thread has called mysql_lock_tables() and the thread state has not been updated since. This is a ...
- C#实体对象序列化成Json,格式化,并让字段的首字母小写
解决办法有两种:第一种:使用对象的字段属性设置JsonProperty来实现(不推荐,因为需要手动的修改每个字段的属性) public class UserInfo { [JsonProperty(& ...
- 2017年11月30日 C#TreeNode递归&邮箱验证&新用户窗体
TreeNode递归 递归:自己调用自己一层一层的把数据找出来 TreeNode:可以创建多个节点 private void button1_Click(object sender, EventArg ...
- 2D平面中关于矩阵(Matrix)跟图形变换的讲解
在二维平面上,常用的有以下三种基本的图形变化: 1)Translation 2)Scale 3)Rotation 在canvas的开发中,我们也经常会用到这样的一些图形变换,尤其是我们在写自定义Vie ...
- Python基础-面向过程编程实现Linux下cat -rl ‘dir’ |grep ‘keywords’ 功能
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- 03_ActiveMQ安全机制
[ActiveMQ安全机制] [ ActiveMQ的web管理界面 ] 地址 http://127.0.0.1:8161/admin ActiveMQ管理控制台使用jetty部署,所以需要修改密码, ...
- Tesseract-OCR -01-Tesseract 介绍
Tesseract-OCR -01-Tesseract 介绍 OCR(Optical Character Recognition): 光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程 Te ...
- Python爬虫教程-30-Scrapy 爬虫框架介绍
从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...