主机控制器接口(HCI)提供了一种访问蓝牙硬件能力的通用接口。

HCI固件通过访问基带命令、链路管理器命令、硬件状态寄存器、控制寄存器以及事件寄存器实现对蓝牙硬件的HCI命令。

HCI是通过包的方式来传送数据、命令和事件的,所有在主机和主机控制器之间的通信都以包的形式进行。包括每个命令的返回参数都通过特定的事件包来传输。HCI有数据、命令和事件三种包,其中数据包是双向的,命令包只能从主机发往主机控制器,而事件包始终是主机控制器发向主机的。主机发出的大多数命令包都会触发主机控制器产生相应的事件包作为响应。
命令包分为六种类型

  • 链路控制命令:链路控制命令允许主机控制器控制与其他设备的连接。当使用链路控制命令时,链路管理器控制如何形成和维持蓝牙微微网和散射网(Scatternet)。这些命令指示链路管理器生成和更改与远端节点的链路层的连接和查询覆盖范围内的其他蓝牙设备,以及执行其他的LMP命令。
  • 链路策略命令:链路策略命令为主机提供影响链路管理器管理微微网的方式的途径。当使用链路策略命令时,LM将继续控制微微网和散射网的建立和维护,但要依赖可调节的策略参数。这些策略命令可以改变链路管理的行为,因而也将导致链路层连接的改变。
  • 主机控制器和基带命令:主机控制器和基带命令提供对蓝牙硬件的各种能力的访问和控制,这些参数提供对蓝牙设备控制和对主机控制器、链路管理器和基带的能力的控制。主机设备可以使用这些命令改变本地设备的运行状态。
  • 信息参数命令:信息参数由蓝牙硬件制造商给定,这些参数提供有关蓝牙设备以及主机控制器、蓝牙管理器和基带能力的信息。主机设备不能对这些参数进行任何改动。
  • 状态参数命令:主机控制器改变全部的状态参数。这些状态参数提供有关主机控制器、链路管理器和基带的当前状态信息。主机不能改变任何参数,但是可以对特定指定的参数复位。
  • 测试命令:测试命令用于提供测试蓝牙硬件各种功能的能力。这些命令提供准备各种测试条件的能力。

事件包分为三种类型

  • 通用事件,包括命令完成包(Command Complete)和命令状态包(Command Status);
  • 测试事件;
  • 出错时发生的事件,如产生丢失(Flush Occured)和数据缓冲区溢出(Data Buffer Overflow)。

摘自《蓝牙协议及其实现》

参考链接:http://blog.csdn.net/android_huber/article/details/7727512

主机控制器接口(HCI)的更多相关文章

  1. 蓝牙(Bluetooth) IEEE 802.15.1 协议学习

    catalogue . 蓝牙概念 . 配对和连接 . 机密安全性 . 蓝牙协议分类 . 蓝牙协议栈 1. 蓝牙概念 蓝牙(Bluetooth)是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网 ...

  2. 【转】TI蓝牙BLE 协议栈代码学习

    BLE就是低功率蓝牙.要着重了解两种设备: dual-mode双模设备:简单说就是向下兼容. single-mode单模设备:仅仅支持BLE.   关于开发主要讲的是单模设备,它可以只靠纽扣电池即可持 ...

  3. Bluedroid: 蓝牙协议栈源码剖析

    一. 基础知识介绍 1.缩略语 BTIF: Bluetooth Interface BTU : Bluetooth Upper Layer BTM: Bluetooth Manager BTE: Bl ...

  4. BLE——协议层次结构

    未完待续…… BLE协议 Bluetooth Application Applications GATT-Based Profiles/Services Bluetooth Core (Stack) ...

  5. BLE 5协议栈-主机控制接口(HCI)

    文章参考自:http://www.sunyouqun.com/2017/04/page/3/ .https://www.cnblogs.com/yuqilihualuo/p/9790164.html ...

  6. 蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)(转载)

    一.主机控制接口协议  HCI 蓝牙主机-主机控模型 蓝牙软件协议栈堆的数据传输过程: 1.蓝牙控制器接口数据分组:指令分组.事件分组.数据分组(1).指令分组 如:Accpet Connection ...

  7. TI CC254x BLE教程 2

    连接更新请求(connection update request) 如果slave不满意现有的连接参数, 比如间隔, 延迟等等, 可以向master提出自己希望的参数范围 连接终止(connectio ...

  8. Android蓝牙学习笔记

    一 Bluetooth基本概念 蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备.计算机及其终端设备.各种数字数据系统.甚至家用电器采用无线方式联接起来.它的传输距离为10cm-10m,如果增加 ...

  9. 蓝牙BlueTooth技术学习理解

    1.BLUETOOTH基本了解 BLUETOOTH出自丹麦 Bluetooth SIG 蓝牙技术联盟,非盈利组织.主要任务是发布蓝牙规格.管理资格认证程序.保护蓝牙商标及宣传蓝牙无线技术. 重要网站 ...

随机推荐

  1. Hadoop集群中添加硬盘

    Hadoop工作节点扩展硬盘空间 接到老板任务,Hadoop集群中硬盘空间不够用,要求加一台机器到Hadoop集群,并且每台机器在原有基础上加一块2T硬盘,老板给力啊,哈哈. 这些我把完成这项任务的步 ...

  2. qml ios长按晃动

    WidgetModel.qml import QtQuick 1.0 ListModel { ListElement { icon: "Images/widget1.png"; g ...

  3. OkHttp使用全解析(转)。

    Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient.关于HttpURLConnection和HttpClient的选择>>官方博客尽管Go ...

  4. pthread_create如何传递两个参数以上的参数

    涉及多参数传递给线程的,都需要使用结构体将参数封装后,将结构体指针传给线程 定义一个结构体 struct mypara { var para1;//参数1 var para2;//参数2 } 将这个结 ...

  5. centos=>gsutil,iptables

    sudo apt-get remove --purge gsutil sudo easy_install -U pip  sudo pip2 install gsutil gsutil ls gs:/ ...

  6. 编写一个小Servlet程序

    1.编写一个java类,此类继承HttpServlet 创建完工程(见上一篇随笔:使用eclipse创建在myeclipse中运行的web工程),在src中新建一个包,包名字叫servlet:再新建一 ...

  7. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  8. WordPress 4.0 “Benny” 正式发布

    http://wordpress.org/news/2014/09/benny/Highlights and What’s New:http://codex.wordpress.org/Version ...

  9. iOS中类方法的作用

    类方法,这意味着你将它发送给类,而不是对象实例. 因为不是发送给一个实例,所以你不能使用任何实例变量,你只能做一些通用性的事情. 实际上类方法只用于两种情况: 1.创建事物,比如创建一个特殊格式的字符 ...

  10. C#代码 利用MongoDB中Group聚合函数查询

    例子: public static void getUserRFM(DateTime beginTime, DateTime endTime)        {            MongoDat ...