【蓝牙】HCI协议解析

1、HCI介绍
        接触蓝牙,从HCI开始,因为HCI是主机控制接口协议(Host Controller Interface),蓝牙命令通过HCI来发送到Controller;

如下图,HCI通过物理接口(USB、UART等)或虚拟接口,传递数据到Controller,Controller也通过同样的接口发送接收数据,这里注意到HCI层是在L2CAP层之下,LMP层之上;

HCI的主要作用就是透传,它不依赖于传输技术;

二、HCI协议格式
1、概述
HCI包含非常多的命令,它们完成时间是不确定的;所以大部分的HCI命令在命令完成后都会生成一个命令完成事件,命令发送端会开启一个定时器,若超时会上报错误;

所有HCI数据包均采用小端模式;

The Host Controller Transport Layer为HCI提供传输机制,使HCi可以传输HCI command,ACL data和同步数据,也可以接收事件,ACL data和同步数据;

2、句柄
HCI分为三种句柄,分别为Connection Handles, Logical Link Handles,and Physical Link Handles;

3、HCI数据包格式

这里只是以UART为例说明,其他类似

4、HCI Command Packet
  如下图所示

a、HCI command packet用于从host发送命令道contrlloer;

b、去掉包头可以包含255字节数据;

c、OpCode用来区别不同命令,它由两部分组成,OCF(10bits)和OGF(6bits),OpCode可以和下面的命令介绍联系起来;

5、HCI ACL Data Packets
如下图所示:

a、HCI ACL Data Packets用于host与contrller交换信息;

b、分为两种数据包,自动刷新包和非自动刷新包;

c、不同的数据包需要不同的handle类型,具体见下图说明;

d、关于PB Flag(the Packet_Boundary_Flag,bit4&bit5)和BC Flag(Broadcast_Flag,bit6&bit7),详细说明见下图;

6、HCI Synchronous Data Packets

数据格式如下图所示:

a、HCI同步数据包用来在host和contrller之间交换同步数据(SCO & eSCO);

7、HCI Event Packet

数据包格式如下图所示:

a、HCI事件包是Controller用来通知Host事件,出去包头最大可以为255字节;

下面是命令列表:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值