码迷,mamicode.com
首页 > 其他好文 > 详细

13.BLE---HCI

时间:2018-10-15 14:47:36      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:时间   size   事件流   9.png   组类型   inf   width   重置   comm   

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

标签:时间   size   事件流   9.png   组类型   inf   width   重置   comm   

原文地址:https://www.cnblogs.com/yuqilihualuo/p/9790164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!