Bluetooth HCI介绍
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介绍相关推荐
- Android Bluetooth hci 命令分析
Android在连接BLE设备的时候,遇到连接没多久就自动断开的情况.通过HCI来分析一下. BLE设备发送连接参数更新请求 3909 15:53:01.224737 TexasIns_f0:d3:4 ...
- Bluetooth Baseband介绍
Bluetooth Baseband介绍 阅读目录 1. 介绍 2. 概述 3. 物理信道 4. 物理链路 5. 逻辑传输层 6. 逻辑链路 7. 数据包 8. 链路控制 回到顶部 1. 介绍 蓝牙的 ...
- Bluetooth SDP介绍
Bluetooth SDP介绍 阅读目录 1. 概念 2. 服务记录 3. 服务属性 4. 服务类 5. 服务查找 6. 服务浏览 7. 数据表示 8. 协议说明 回到顶部 1. 概念 SDP, Se ...
- 蓝牙Bluetooth模块介绍
1,蓝牙模块--基础知识介绍 https://blog.csdn.net/wwt18811707971/article/details/77833602 2,常见蓝牙模块介绍和AT指令 https:/ ...
- Android4.3 Bluetooth基本介绍
蓝牙定义 蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术.能在包括移动电话.PDA.无线耳机.笔记本电脑.相关外设等众多设备之间进行无线信息交换.利用"蓝牙"技术,能够 ...
- Bluetooth 蓝牙介绍(一) :基础知识
蓝牙背景 从1994年由电信商爱立信提出"希望创建一个RS-232数据线的无线通信替代版本,它能够链接多个设备,克服同步的问题"以来,蓝牙经过了20余个岁月的发展,蓝牙技术也经历了 ...
- Bluetooth 蓝牙介绍(二):低功耗蓝牙BLE协议栈
文章目录 Physical LAYER Link LAYER 角色 地址 物理信道 Air Interface Packet PDU Advertising physical channel PDU ...
- Bluetooth 蓝牙介绍(六):低功耗蓝牙信息交互
文章目录 前言 THREE-WIRE UART TRANSPORT LAYER LINK ESTABLISHMENT UnInitialized STATE Initialized STATE Act ...
- Bluetooth GAP介绍
阅读目录 1. 介绍 2. 角色 3. 配置 4. 模式 5. 安全 6. 空闲模式 7. 建立连接 8. 操作模式和过程 回到顶部 1. 介绍 GAP,Generic Access Profile, ...
- Bluetooth 蓝牙介绍(四):低功耗蓝牙BLE Mesh网络 Ⅰ—— 基础概念
文章目录 背景 术语 Managed Flooding Models Scenes 架构 Node Features 中继节点 代理节点 友元节点和低功耗节点 示例 BLE Mesh Networki ...
最新文章
- 链表问题15——将搜索二叉树转换成双向链表(方法二)
- solr6 mysql_solr6 从mysql上导入数据
- mysqlsql varchar类型只取前四个_Apache Doris0.12.0 发布,进入 Apache 孵化器后第四个正式版本...
- ci框架去除index.php,ci框架如何隐藏index.php
- 北京内推 | 美团用户平台NLP中心招聘图学习(GNN)方向实习生
- Java培训教程之使用Jsoup实现简单的爬虫技术
- 你不知道的 字符集和编码(编码字符集与字符集编码)
- 在windows 2008 R2上安装sharepoint 2013时遇到提示必须安装 .netframeword4.5的处理办法...
- java identifier expected,java – hibernate h2 embeddable list expected“identifier”
- The constructor someMethod() is not accessible due to restriction on required library
- 移动开发出路在哪里?是时候用物联网了!| 技术头条
- php微信接口调用,PHP调用微信接口报错
- 安卓一键清理内存_教大家安卓怎么清理内存-装修攻略
- 【禁忌搜索算法】基于禁忌搜索算法求解函数极值问题含Matlab源码
- 服务器上找不到iis,Web服务器打开IIS7管理器看不到站点解决方法
- VR球类游戏填坑总结
- MMQ broker(MQTT 分布式服务器)
- H无穷控制学习笔记——H无穷/H2控制
- java毕业设计共享充电宝系统mybatis+源码+调试部署+系统+数据库+lw
- [译] 为什么你要学习 Go?
热门文章
- html将数据永久保存起来,数据保存(永久保存)方式(示例代码)
- 企业私有云搭建与作用
- 怎样恢复计算机程序打开文件名,Word提示如何解决使用文本恢复转换器打开文件的问题...
- Affinity Designer笔记:常用快捷键
- Cesium orientation 和 设置初始角度
- linux内核 quota,Linux系统磁盘配额(quota)
- sql server 字符串转成日期格式
- 十、Linux开发板控制LED灯设备
- java dateformat 格式_使用Java SimpleDateFormat类格式化月份。月份可以采用M、MM、MMM和MMMM格式。...
- 清理掉大流氓:2345