蓝牙Host Controller Interface笔记

时间:2022-12-20 09:15:12

1.概述

    HCI提供了一个统一的使用蓝牙控制器(BR/EDR Controller,BR/EDR/LE Controller,LE Controller,AMP Controller等)的方法,它屏蔽了蓝牙的基带部分,提供了统一的数据进入基带的方法。
    首先,蓝牙的BaseBand部分有以下几种控制器:
• BR/EDR Controller
• BR/EDR/LE Controller
• LE Controller
• AMP Controller
前三种称为primary Controller,AMP是蓝牙3.0后加上的,支持High Speed传输。
 
下图为简单的架构:
蓝牙Host Controller Interface笔记

两个设备间数据的流向如下图:

蓝牙Host Controller Interface笔记
2.COMMANDS AND EVENTS
   通过HCI接口,Host与controller通过Command和Event的形式进行通信,其中command是Host传给controller的,Event是controller反馈给Host的,如下图所示:
蓝牙Host Controller Interface笔记
Command和Event根据不同的类型进行了以下分组,具有以下几种:
蓝牙Host Controller Interface笔记

每一组内有一个或者对个Command和Event,举例如下:

蓝牙Host Controller Interface笔记
蓝牙Host Controller Interface笔记

可以看出,Generic event组内有三种Event,Device SetUp组内只有一种reset Command。Command和Event的种类很多,这里不具体介绍,参考Spec704-1000的具体说明。

 
3.HCI Data Format
    由上可知,HCI有三种数据,Command、Event和Data,这三种类型的HCI Data分别有不同的格式。需要注意的是,HCI Data都是Little Endian formats的,负数的存储形式为2进制补码。
   在Host和Controller之间由HANDLES来识别不同的通道,一共有三种:
• Connection Handles
• Logical Link Handles
• Physical Link Handles
其中,Connection Handles用于primary controller(除AMP外),另外两用用于AMP Controller。一旦一条Logical Link建立,primary controller会给Host分配一个Connection Handle。
下面分别是Command packet、Event Packet和Data packet,其中Data Packet分为HCI ACL Data Packet和HCI Synchronous Data Packet,HCI ACL Data Packet有Automatically-Flushable和Non-Automatically-Flushable两种类型。具体说明如下:
 
(1) HCI Command packet
蓝牙Host Controller Interface笔记

OpCode Field分为两个Field:OCF和OGF:

OGF Range (6 bits): 0x00-0x3F (0x3F reserved for vendor-specific debug commands)
OCF Range (10 bits): 0x0000-0x03FF
 
(2) HCI ACL Data Packet
蓝牙Host Controller Interface笔记

参数HANDLE的定义如下:

蓝牙Host Controller Interface笔记

参数PB的定义如下:

蓝牙Host Controller Interface笔记
参数Broadcast_Flag的定义如下:
蓝牙Host Controller Interface笔记 
蓝牙Host Controller Interface笔记
(3)HCI Synchronous Data Packets
蓝牙Host Controller Interface笔记

Packet_Status_Flag参数定义如下:

蓝牙Host Controller Interface笔记
(4)HCI Event Packet
蓝牙Host Controller Interface笔记

注意,LE控制器使用的是sub-event Code。

4.HCI Configuration parameters
主要用来对HCI连接进行一些必要的配置,种类比较多,参考Spec681-703。
 
5.常见的Command和Event
(1) Link Control commands(OGF = 0x01),用来进行连接。
该组包含Inquiry Command等44个Command,具体参考Spec。
(2)LINK POLICY COMMANDS(OGF = 0x02),对连接进行配置,如park、sniff、Roll Switch等
该组包含14个command
(3)CONTROLLER & BASEBAND COMMANDS(OGF = 0x03),改变本地Controller的行为。
该组包含Set Event Mask Command等79个command
(4)INFORMATIONAL PARAMETERS(OGF = 0x04),用来读取本地的设备商的控制器、LM等的信息,这些信息无法改变。
该组包含Read Local Version Information Command等7个command。
(5)STATUS PARAMETERS(OGF = 0x05),状态参数是由controller来修改的,Host可以通过一些特定的参数来进行修改。
该组包含Read Failed Contact Counter Command等10个Command。
(6)TESTING COMMANDS(OGF = 0x06),对Host提供对蓝牙硬件的测试用的。
该组包括Read Loopback Mode Command等7个Command。
(7)LE CONTROLLER COMMANDS(OGF = 0x07),Host通过这些命令来影响LE的工作。
该组包括LE Set Event Mask Command等30个Command。
常见的Event:
包括Inquiry Complete Event等65种Event。

蓝牙Host Controller Interface笔记的更多相关文章

  1. 转:USB主机控制器(Host Controller)--深入理解

    1. 主机控制器(Host Controller) • UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1)      • ...

  2. Host Controller transport layer and AMPs

    The logical Host Controller Interface does not consider multiplexing/routing over the Host Controlle ...

  3. ZT 蓝牙的AVCTP协议笔记

    蓝牙的AVCTP协议笔记 (2013-07-31 08:52:41) 转载▼ 标签: bluetooth avctp command response 分类: Bluetooth 1.概述     A ...

  4. Using a USB host controller security extension for controlling changes in and auditing USB topology

    Protecting computer systems from attacks that attempt to change USB topology and for ensuring that t ...

  5. VMWARE里启动kylin16.0时出现'SMBus Host Controller not enabled'(还未进入系统)

    在Vmware里安装完Ubuntu16.10,启动时出现'SMBus Host Controller not enabled'错误提示,进不到图形界面.网上搜了一下,解决办法是在图形界面里进终端窗口, ...

  6. OpenHCI - Open Host Controller Operational Registers

    The Host Controller (HC) contains a set of on-chip operational registers which are mapped into a non ...

  7. Ubuntu开机时提示“piix4_smbus 0000:00:07.3: SMBus Host controller not enabled”

    问题描述:Ubuntu开机时提示“piix4_smbus 0000:00:07.3: SMBus Host controller not enabled” 版本:Ubuntu 18.04    VMw ...

  8. ZT 蓝牙的AVDTP协议笔记

    我的电子杂烩饭 http://blog.sina.com.cn/wuchuchu2012 [订阅][手机订阅] 首页 博文目录 图片 关于我 个人资料 Tifnan Qing 微博 加好友 发纸条 写 ...

  9. 加载ubuntu的时候卡在‘SMBus Host Controller not enabled'错误

    实验系统:ubuntu-16.04.6-server-amd64 我在VMware安装完这个系统后进入发现卡在了’SMBus Host Controller not enabled‘里,后来查过网络发 ...

随机推荐

  1. mac操作快捷键

  2. 如何安装ESXi的补丁

    1.进入维护模式 2.通过vSphere Client上传补丁 3.开SSH后使用Putty连接 4.esxcli software vib install -d="/vmfs/volume ...

  3. HDU-4632 http://acm.hdu.edu.cn/showproblem.php?pid=4632

    http://acm.hdu.edu.cn/showproblem.php?pid=4632 题意: 一个字符串,有多少个subsequence是回文串. 别人的题解: 用dp[i][j]表示这一段里 ...

  4. Codeforces Round #306 (Div. 2)

    A. Two Substrings You are given string s. Your task is to determine if the given string s contains t ...

  5. javascript实现silverlight pivotViewer控件

    一时无事,就用js实现了一个silverlight pivotViewer控件来练手. 实现效果: silverlight PivotViewer说明地址:https://msdn.microsoft ...

  6. Python基础-类

    Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区 ...

  7. 51nod 1126 求递推序列的第N项 思路:递推模拟,求循环节。详细注释

    题目: 看起来比较难,范围10^9 O(n)都过不了,但是仅仅是看起来.(虽然我WA了7次 TLE了3次,被自己蠢哭) 我们观察到 0 <= f[i] <= 6 就简单了,就像小学初中学的 ...

  8. windows下tensorflow的安装

    一.直接python安装 1.CPU版本: pip3 install --upgrade tensorflow 2.GPU版本:pip3 install --upgrade tensorflow-gp ...

  9. RDO Stack&colon; Failed connect to server

    Issue: When you create an instance, but cannot connect to the VNC Server because of the error messag ...

  10. Android为TV端助力 转载:Java 泛型

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(Stri ...