13.BLE---HCI
Posted yuqilihualuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13.BLE---HCI相关的知识,希望对你有一定的参考价值。
dsads
1.概述
HCI支持四种类型的分组:
- 命令分组Command Packet
- 异步数据分组Asynchronous Data Packet
- 同步数据分组Synchronous Data Packet
- 事件分组Event Packe
分组类型是在HCI分组之前的一个字节值。 数据包类型具有以下值:
Packet | Packet Type |
Command | 1 |
Asynchronous Data | 2 |
Synchronous Data | 3 |
Event | 4 |
HCI Packet Types
2.Command Packet
HCI命令包格式由三部分组成:用来确认发送命令的操作码(2字节)、参数长度(1字节)以及命令参数。每个命令都有自己一套独特的参数。
BLE中有三种基本命令类型,分别实现如下功能:
- 配置控制器状态
- 请求执行特定的操作
- 管理连接
3. Asynchronous Data Packet
- 数据包是指主机和控制器之间传输的应用数据。
- 控制器接收来自主机的数据包,将其传给对端设备。
- 对端设备收到数据之后,将其从控制器发往主机。
HCI数据包格式包含句柄/标记(2字节)、数据长度(1字节)以及数据。HCI数据包有两种标记:数据包边界标记和广播标记。数据包边界标记用来确认上层协议L2CAP的信息是一个开始数据包还是一个延续包。类似于链路层数据信道PDU中的LLID。
从主机发送到控制器的数据包,标记00标识开始包,01标识延续包;
从控制器发送到主机的数据包,标记10标识开始包,01标记延续包。
4. Synchronous Data Packet
This synchronous data packet is not used in BLE.
5. Event Packe
HCI事件数据包由事件类型编码(1字节)、参数长度(1字节)以及命令参数。每个时间都有自己一套独特的参数。
BLE有三种基本事件类型:
- 通用命令完成事件:和无线传输无关的任务
- 通用命令状态事件
- 特定命令完成事件
6.命令流控
- HCI接口有两种流控形式:命令流控和数据流控。
- 控制器使用命令流控同时处理多个HCI命令。因为控制器内部拥有足够的缓存,能够存储一定数量的命令;
- 主机可以通过控制器来获知缓冲区的长度,从而得知可以同时发送的命令的最大数量。
- HCI接口不支持事件流控,因为事件的数量受限于可处理命令的数量,另外主机比控制器拥有更多的资源,能够顺序地缓冲和处理这些事件。
7. 数据流控
- 一共有两种数据流:主机到控制器以及控制器到主机。
- 主机到控制器的数据流控是必须的,而控制器到主机的数据流控可以忽略。
- 对于主机到控制器的数据流控,控制器拥有一定数量的缓冲区,每个缓冲区存放一个数据包。
- 每次控制器都从一个缓冲区提取数据包来发送给对端设备,一旦数据包发送成功,控制器释放该缓冲区,一边装填主机发送给控制器的新数据包。
8. 控制器配置
8.1 重置控制器为已知状态
- 由于控制器可能正在执行其他操作,或者主机传输才刚刚建立。在这种情况下,可以把控制器重置为就绪态,这样会把所有可配置参数恢复为默认值。
- 主机通过重置Reset命令来重置控制器。控制器一旦重置,将向主机返回命令完成Command Complete事件。
- 重置命令不会重置物理链路,如果要重置物理链路,需要执行另外的链路重置操作。
- 虽然主机可以发送多条命令给控制器,如果控制器正在执行重置,也不能接受其他命令。
- 重置命令可以抢占其他命令的执行。
8.2 读取设备地址
- 主机通过向控制器发送Read BD_ADDR命令来读取设备地址。
- 后者返回一个含有固定设备地址的Command Complete事件。
- 如果控制器没有固定地址,则返回全零地址00:00:00:00:00:00。此时,主机需要为控制器生成一个随机地址,否则无法进行数据传输。
8.3 设置事件掩码
- 通过设置事件掩码,主机告诉控制器哪些事件能被接收,哪些不能接收。这样控制器只会发那些能被接收的事件。
- Set Event Mask命令曾用于经典蓝牙设置各类事件,由于其中的"meta-event"事件仍然适用于低功耗蓝牙,主机可以使用该命令来启动或屏蔽meta-event。
- 另外LE Set Event Mask命令用来启动或屏蔽相关的低功耗蓝牙事件。
8.4 读取缓冲区大小
LE Read Buffer Size
Read Buffer Size
8.5 读取控制器支持的功能
以上是关于13.BLE---HCI的主要内容,如果未能解决你的问题,请参考以下文章