Bluetooth HCI介绍

2014年06月23日 22:22:11 hzl6255 阅读数:3219

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介绍相关推荐

  1. Android Bluetooth hci 命令分析

    Android在连接BLE设备的时候,遇到连接没多久就自动断开的情况.通过HCI来分析一下. BLE设备发送连接参数更新请求 3909 15:53:01.224737 TexasIns_f0:d3:4 ...

  2. Bluetooth Baseband介绍

    Bluetooth Baseband介绍 阅读目录 1. 介绍 2. 概述 3. 物理信道 4. 物理链路 5. 逻辑传输层 6. 逻辑链路 7. 数据包 8. 链路控制 回到顶部 1. 介绍 蓝牙的 ...

  3. Bluetooth SDP介绍

    Bluetooth SDP介绍 阅读目录 1. 概念 2. 服务记录 3. 服务属性 4. 服务类 5. 服务查找 6. 服务浏览 7. 数据表示 8. 协议说明 回到顶部 1. 概念 SDP, Se ...

  4. 蓝牙Bluetooth模块介绍

    1,蓝牙模块--基础知识介绍 https://blog.csdn.net/wwt18811707971/article/details/77833602 2,常见蓝牙模块介绍和AT指令 https:/ ...

  5. Android4.3 Bluetooth基本介绍

    蓝牙定义 蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术.能在包括移动电话.PDA.无线耳机.笔记本电脑.相关外设等众多设备之间进行无线信息交换.利用"蓝牙"技术,能够 ...

  6. Bluetooth 蓝牙介绍(一) :基础知识

    蓝牙背景 从1994年由电信商爱立信提出"希望创建一个RS-232数据线的无线通信替代版本,它能够链接多个设备,克服同步的问题"以来,蓝牙经过了20余个岁月的发展,蓝牙技术也经历了 ...

  7. Bluetooth 蓝牙介绍(二):低功耗蓝牙BLE协议栈

    文章目录 Physical LAYER Link LAYER 角色 地址 物理信道 Air Interface Packet PDU Advertising physical channel PDU ...

  8. Bluetooth 蓝牙介绍(六):低功耗蓝牙信息交互

    文章目录 前言 THREE-WIRE UART TRANSPORT LAYER LINK ESTABLISHMENT UnInitialized STATE Initialized STATE Act ...

  9. Bluetooth GAP介绍

    阅读目录 1. 介绍 2. 角色 3. 配置 4. 模式 5. 安全 6. 空闲模式 7. 建立连接 8. 操作模式和过程 回到顶部 1. 介绍 GAP,Generic Access Profile, ...

  10. Bluetooth 蓝牙介绍(四):低功耗蓝牙BLE Mesh网络 Ⅰ—— 基础概念

    文章目录 背景 术语 Managed Flooding Models Scenes 架构 Node Features 中继节点 代理节点 友元节点和低功耗节点 示例 BLE Mesh Networki ...

最新文章

  1. 链表问题15——将搜索二叉树转换成双向链表(方法二)
  2. solr6 mysql_solr6 从mysql上导入数据
  3. mysqlsql varchar类型只取前四个_Apache Doris0.12.0 发布,进入 Apache 孵化器后第四个正式版本...
  4. ci框架去除index.php,ci框架如何隐藏index.php
  5. 北京内推 | 美团用户平台NLP中心招聘图学习(GNN)方向实习生
  6. Java培训教程之使用Jsoup实现简单的爬虫技术
  7. 你不知道的 字符集和编码(编码字符集与字符集编码)
  8. 在windows 2008 R2上安装sharepoint 2013时遇到提示必须安装 .netframeword4.5的处理办法...
  9. java identifier expected,java – hibernate h2 embeddable list expected“identifier”
  10. The constructor someMethod() is not accessible due to restriction on required library
  11. 移动开发出路在哪里?是时候用物联网了!| 技术头条
  12. php微信接口调用,PHP调用微信接口报错
  13. 安卓一键清理内存_教大家安卓怎么清理内存-装修攻略
  14. 【禁忌搜索算法】基于禁忌搜索算法求解函数极值问题含Matlab源码
  15. 服务器上找不到iis,Web服务器打开IIS7管理器看不到站点解决方法
  16. VR球类游戏填坑总结
  17. MMQ broker(MQTT 分布式服务器)
  18. H无穷控制学习笔记——H无穷/H2控制
  19. java毕业设计共享充电宝系统mybatis+源码+调试部署+系统+数据库+lw
  20. [译] 为什么你要学习 Go?

热门文章

  1. html将数据永久保存起来,数据保存(永久保存)方式(示例代码)
  2. 企业私有云搭建与作用
  3. 怎样恢复计算机程序打开文件名,Word提示如何解决使用文本恢复转换器打开文件的问题...
  4. Affinity Designer笔记:常用快捷键
  5. Cesium orientation 和 设置初始角度
  6. linux内核 quota,Linux系统磁盘配额(quota)
  7. sql server 字符串转成日期格式
  8. 十、Linux开发板控制LED灯设备
  9. java dateformat 格式_使用Java SimpleDateFormat类格式化月份。月份可以采用M、MM、MMM和MMMM格式。...
  10. 清理掉大流氓:2345