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传输。
 
下图为简单的架构:

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

2.COMMANDS AND EVENTS
   通过HCI接口,Host与controller通过Command和Event的形式进行通信,其中command是Host传给controller的,Event是controller反馈给Host的,如下图所示:

Command和Event根据不同的类型进行了以下分组,具有以下几种:

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


可以看出,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

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

参数HANDLE的定义如下:

参数PB的定义如下:


参数Broadcast_Flag的定义如下:
 

(3)HCI Synchronous Data Packets

Packet_Status_Flag参数定义如下:

(4)HCI Event Packet

注意,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. LoadRunner之自定义HTTP请求

    LoadRunner之自定义HTTP请求 性能测试开发脚本时使用的都是同样的模式.对在性能测试规划时指定的典型业务逻辑场景进行录制,形成基本的脚本骨架. 录制脚本后需要对脚本进行编辑,以满足性能测试需 ...

  2. Objective-C专题,是学习iOS开发的前奏(转)

    第一个OC的类 来源:http://www.cnblogs.com/mjios/archive/2013/04/06/3002814.html 本文目录 一.语法简介 二.用Xcode创建第一个OC的 ...

  3. MVC WEB安全——XSS攻击防御

    XSS(跨站脚本攻击) 描述: 原理:攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入其中Web里面的代码会被执行,从而达到攻击用户的特殊目的. 类别: 1)被动注入(Passive Inj ...

  4. 阿牛的EOF牛肉串[HDU2047]

    阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  5. BZOJ3742 : Painting

    设f[i][j]表示以i为根的子树,i与父亲之间的边染成j的最小代价 DP的过程中转移时相当于求一个最小权匹配,用费用流即可 感觉复杂度飞起来了… #include<cstdio> con ...

  6. MONO 使用重要提示

    重要提示:如果要使用mvc这样的框架(网址没有扩展名或扩展名没有正常规律),请一定用Jexus,而不要用apache/nginx等. ASP.NET跨平台初学者要注意: 1.不要开始就用freeBSD ...

  7. OI分类

    黑字:认识 红字:要学 未添加:要学 ├─模拟├─字符串│    ├─字符串基础│    ├─manacher│    ├─kmp│    ├─trie│    ├─ac自动机│    ├─后缀数组( ...

  8. const 与指针

    深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p ...

  9. 参考XML操作类

    转载参考地址: http://blog.csdn.net/happy09li/article/details/7460521

  10. Cinder相关命令收集

    1. 重置状态 source admin-openrc.sh cinder reset-state 51108241-7ffe-44a8-acfa-4cddac8d4793