【蜗牛哥带你玩转FireBLE】--第010讲 QN9021 BLE协议栈分析 为了减轻后续BLE学习压力,这里还是得深入了解下QN9021 BLE协议栈,上讲中提到QN9021 BLE协议栈分为LL、L2CAP、SMP、ATT、GATT、GAP、profile、APP八层,下面是层梯图:
LL层: 链路层 基本特性 1.无线数据包分组调度 2.链接确立和维护 3.频率自适应调节 4.数据包建立与恢复 5.加密与解密 6.链路过程控制 7.链接更新 8.信道映射更新 9.特征交换 10.版本交换 LL层存在于物理层和宿主层接口之上,有五个可能状态,这五个状态由一个描述链路层状态的状态机控制,链路层状态机在同一时间只允许一个状态是活动的。 1.standby:不活动,不收发和解析数据。 2.advertising:发送广播数据包、接收扫描请求,返回扫描请求、接收连接请求。 3.scanning:等待接收广播包,接手扫描请求,等待扫描响应。 4.initiating:等待接收特定设备的数据包,响应连接请求。 5.connection:交换数据、定义角色(主从),如果从initiating状态过来,则为主,从advertising状态过来则为从。
注意:在SOC模式和NP模式中,应用程序不得直接与链路层交换消息。在控制器模式中,主机应用程序可以使用标准的HCI接口和链路层通信。
L2CAP层: 逻辑链路控制协议匹配 L2CAP层存在于物理层和宿主层接口之上,L2CAP在BLE操作时,只能存在于基本模式,并且只能使用固定的通道。L2CAP基本特性: 1.基本模式配置和信道修复 2.为上层提供定向连接数据 3.只与BLE信号协议、安全管理协议、属性协议交换信息 4.不与应用层直接交换信息
SMP层:安全管理协议层 安全管理协议负责BLE安全通信问题,包括加密链接、身份或私人地址解析和签署的未加密的消息,SMP的功能被能够保障正确实现的执行配对、密钥分发方法和公认的协议明确指定。 基本特性: 1.配对算法支持 2.密钥产生与算法支持 3.签名操作 4.产生和解算随机地址 5.应用层需保存一下密钥 6.LTK7IRK8CSRK
ATT层: 属性协议层 属性协议存在于L2CAP层和GATT层接口之上,用于从一个对等设备的属性数据库(也就是服务器属性)读取和写入属性值, 要做到这一点,应该首先发现属性服务器数据库里的属性列表,属性一旦被发现,他们可以读取和写入客户机所需属性,但是应用程序不得直接与属性协议交换消息。 基本特性: 1.设备间交换属性信息 2.客户端-服务器模型属性操作 3.发现属性 4.可读属性 5.可写属性 6.指示属性 7.通告属性
GATT层: 通用属性规范层
GATT规范设计用于应用程序或者LE规范,以便客户端与服务器通信。服务器包含很多属性,而GATT规范定义了如何使用属性协议去发现、读取、和写入属性,以及配置广播属性。 基本特性: 1.在ATT层基础上建立服务框架,实现Client/server 2.整合数据构建一个特定的功能或者特征 3.特征定义 4.服务配置 5.服务发现 6.特征描述 7.读特征值 8.写特征值 9.指示或者通告特征
GAP层: 通用访问配置层 通用访问配置规范定义了与蓝牙设备连接的蓝牙设备和连接管理方面的基本程序。此外,它定义了使用不同的安全级别的程序,此配置文件描述了用户界面级别上的参数访问通用格式要求。 基本特性: 1.对所有GAP角色支持 2.主机 3.外设 4.观察者 5.广播者 6.设备发现 7.链接建立和维护 8.配置安全模式和等级 9.加密 所需头文件:
|