很多初学者看过BLE相关资料后对BLE的工作过程仍然是一头雾水,本文从BLE工作过程中的实际数据出发,结合BLE协议,再到nordic代码架构,用一个具体实例帮大家进行全面的分析,从而达到通过窥其一斑而知全身的目的。
BLE架构图在文章标题中我们多次引用这份架构图,只因为这份图实在是太重要了,但是对于初学者来说可能理解不了,还是希望大家多看看这张图,尤其是学习协议理论上的知识的时候。话不多说,开始我们今天的分析。一,协议层面首先对协议做下回顾,广播就不讲了,讲的地方太多了,咱们直接从数据包开始。数据包的结构如下:
数据包的PDU的头部的LLID,这是区分包的用途的主要标识。LLID:(Logical Link Identifier),信道标识符00 表示为保留;
01表示为链路层数据PDU,传输到上层的数据且L2CAP消息是连续分段或空的PDU;
10 表示为链路层数据PDU,传输到上层的数据且L2CAP消息的起始或未分段的完整I2CAP消息
11表示为链路层控制包,链路层完成控制
LLID=0x11时的CtrlType
LLID=0x11时,表示链路控制包,在链路控制包中,CtrType域标识了控制包,14 个控制包是特定的。CtrData或将包含控制包特定的控制信息
LLID=0x11时CtrType的内容LLID=0x10时报文结构
信道ID:CID(Channel Identifier)
CID=0x04 属性协议的操作码,表示数据是传输的ATT层的
CID=0x04后面紧跟属性协议的操作码
下面我们重点要讲的就是一系列操作码。
二,逻辑层面(按包顺序)
|