Bluetooth HCI介绍
HCI, 主机控制接口(Host Controller Interface), 是蓝牙协议栈的重要部分, 相应的规范位于Core Version 4.1的vol 2:Part E和vol 4
HCI提供了对控制器的统一接口,用来沟通Host和Control,如下图所示
在规范中对HCI分为两个部分介绍
~1 沟通Host和Control的接口(vol 2:Part E)
~2 HCI传输层(vol 4)
1. HCI功能
HCI可分为三个部分,前两个即对应于上面的~1
~ 位于Control中的HCI Firmware
~ 位于Host的HCI Driver
~ 位于Host 和Control的HCI 传输层

HCI Firmware实现了访问蓝牙设备的HCI Commands(Baseband/Link Manager Command, status/control/event registers)
HCI Driver接收并处理HCI events(传递给High Lawyer)
HCI 传输层在HCI Firmware和HCI Driver之间进行HCI Packet的传输, Spec V4.1中定义了四种: UART/USB/Secure Digital/Three-wire UART
2. HCI Packet
HCI Packet在Host和Control之间进行传输,通常有三种类型Command,Event,Data(ACL和SCO/eSCO)
其中Data是双向的, Command只能从Host发往Control, Event始终是Control发向Host的
1. HCI Command
HCI Command包格式如下图所示

(OCF=OpCode Command Field, OGF=OpCode Group Field)
OpCode 用以区分不同的命令,OCF占用10bits(0x0000~0x03FF),OGF占用6个bits(0x00~0x3F)
Parameter_Total_length 参数的长度(以字节为单位)
Parameter 0~N 参数列表
Command分为六种类型(case OGF)
~0x01 链路控制命令(Link Control Commands)
~0x02 链路政策命令(Link Policy Commands)
~0x03 控制和基带命令(Control & Baseband Commands)
~0x04 信息命令(Informational Parameters)
~0x05 状态命令(Status Parameters)
~0x06 测试命令(Testing Commands)
~0x3F 厂商调试命令(Reserved)
tip: Host发出的大多数Command都会触发Control产生相应的Event作为响应
2. HCI Event
HCI Event包格式如下图所示
Event Code 用以区分不同的事件(0x00~0xFF)
Parameter_Total_length 参数的长度(以字节为单位)
Event Parameter 0~N 参数列表
3. HCI Data
ACL(Asynchronous Connection Less)
Handle 连接句柄(0x000~0xEFF)
Packet_Boundary_Flag 包分界标志(2bits)
Data_Total_length 数据的长度(以字节为单位)
Data 数据
SCO(Synchronous Connection Oriented)
Connection_Handle 连接句柄(0x0000~0x0EFF)
Data_Total_length 数据的长度(以字节为单位)
Data 数据
参考: <LIST of HCI cmd>
3. HCI传输层
Spec V4.1中定义了四种HCI 传输层:
UART/USB/Secure Digital/Three-wire UART
Bluetooth HCI介绍的更多相关文章
- Bluetooth GATT介绍
目录 1. 介绍 2 内容 2.1 Configured Broadcast 2.2 GATT Profile Hierarchy 3 Service Interoperability Require ...
- Android Bluetooth hci 命令分析
Android在连接BLE设备的时候,遇到连接没多久就自动断开的情况.通过HCI来分析一下. BLE设备发送连接参数更新请求 3909 15:53:01.224737 TexasIns_f0:d3:4 ...
- 蓝牙学习(3) Linux kernel部分Bluetooth HCI分析
在上文,https://blog.csdn.net/feiwatson/article/details/81712933中主要理解了在Kernel中USB adapter是如何实现USB设备驱动,以及 ...
- Bluetooth GAP介绍
目录 1 GAP协议栈 2 Profile Role 3 用户接口 4 模式 5 安全 5.1 认证(Authentication) 5.2 安全模式 6 Idle Mode Procedures 7 ...
- Bluetooth ATT介绍
目录 1 介绍 2 详细内容 2.1 Attribute Type 2.2 Attribute Handle 2.3 Attribute Handle Grouping 2.4 Attribute V ...
- Bluetooth LMP介绍
目录 1. 介绍 2. 数据包格式(Packet Format) 3. Procedure Rules 4. 通用回应消息(General Response Messages) 5. 设备特性(Dev ...
- Bluetooth Baseband介绍
目录 1. 概述 1.1 Clock(时钟) 1.2 寻址方式 2. 物理信道(Physical Channels) 3. 物理链路(Physical Links) 4. 逻辑传输层(Logical ...
- Bluetooth HFP介绍
目录 1. 介绍 1.1 目的 1.2 使用场景 1.3 依赖关系 1.4 协议栈 1.5 角色 2. 应用层 3. 空白章节 4. 互操作性要求 4.1 介绍 4.2 Service Level C ...
- Bluetooth RFCOMM介绍
目录 1. 介绍 2. 服务概述 2.1 RS-232控制信号 2.2 Null Modem Emulation 2.3 多串口仿真 3. 服务接口描述 4. RFCOMM帧类型 5. RFCOMM帧 ...
随机推荐
- 解决:jquery-1.11.1.min.js红叉问题
工程中导入jquery-1.11.1.min.js,工程正常运行.但是jquery-1.11.1.min.js一直显示红叉. 解决方法如下: 红叉的原因是:myeclipse没有去验证它! 选中js文 ...
- ZOJ 3157 Weapon
题目传送门 题意:就是CF round# 329 B 的升级版,要求出相交点的个数 分析:逆序数用树状数组维护,求出非逆序数,然后所有情况(n * (n - 1)) / 2减之就是逆序数个数. #in ...
- Gap
Gap Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- BZOJ3570 : DZY Loves Physics I
考虑两个质量均为m,速度分别v1.v2的小球发生完全弹性碰撞的影响: 由动能守恒得: $\frac{1}{2}mv_1^2+\frac{1}{2}mv_2^2=\frac{1}{2}mv_1'^2+\ ...
- TYVJ P1037 阶乘统计2 Label:坑
描述 n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少 输入格式 第一行包括两个数n,k 输 ...
- 【BZOJ】1027: [JSOI2007]合金(凸包+floyd)
http://www.lydsy.com/JudgeOnline/problem.php?id=1027 题意:$n$种材料,$m$种需求.每种材料有三个属性,给出三个属性的含量(和为1),问能否通过 ...
- 【COGS & USACO Training】710. 命名那个数字(hash+水题+dfs)
http://cojs.tk/cogs/problem/problem.php?pid=710 近日开始刷水... 此题我为了练一下hash...但是hash跑得比暴力还慢.. 不言而喻... #in ...
- 【BZOJ】1036: [ZJOI2008]树的统计Count(lct/树链剖分)
http://www.lydsy.com/JudgeOnline/problem.php?id=1036 lct: (ps:为嘛我的那么慢T_T,不知道排到哪了..难道别人都是树剖吗...看来有必要学 ...
- Quartz与Spring整合进行热部署的实现(一)
先来几张实现图 任务管理页 新建任务管理.目前实现叫简单的需求...若各位同学要实现复杂的设计...quartz都有提供强大的支持.小弟目前的需求做到这已经够用了. 接下来.我们如何实现quartz的 ...
- HTML5怎样在网页中使用摄像头功能
怎样在网页中使用摄像头,html5越来越多的使用到实际工作中,那么他怎样调用摄像头呢进行视频聊天,视频监控等活动呢,今天为大家抛砖引玉,教大家怎样实现怎样利用html5实现摄像头视频监控功能.废话不多 ...