bluetooth协议架构详解与android 蓝牙架构分析
Bluedroid:蓝牙协议栈源码剖析

Bluedroid:蓝⽛协议栈源码剖析⼀、基础知识介绍1.缩略语BTIF: Bluetooth InterfaceBTU : Bluetooth Upper LayerBTM: Bluetooth ManagerBTE: Bluetooth embedded systemBTA :Blueetooth application layerCO: call out\CI: call inHF : Handsfree ProfileHH: HID Host ProfileHL: Health Device ProfileV:audio\vidioag: audio gatewayr: audio/video registrationgattc: GATT clientBLE: Bluetooth Low Energy2.蓝⽛协议栈框架图:1.基带层(BB)提供了两种不同的物理链路(同步⾯向连接链路SCO Synchronous Connection Oriented和异步⽆连接链路ACL Asynchronous Connection Less),负责跳频和蓝⽛数据及信息帧的传输,且对所有类型的数据包提供了不同层次的前向纠错码(FEC Frequency Error Correction)或循环沉余度差错校验(CTC Cyclic Redundancy Check);2.LMP层负责两个或多个设备链路的建⽴和拆除及链路的安全和控制,如鉴权和加密、控制和协商基带包的⼤⼩等,它为上层软件模块提供了不同的访问⼊⼝;3.蓝⽛主机控制器接⼝HCI (Host Controller Interface)由基带控制器、连接管理器、控制和事件寄存器等组成。
它是蓝⽛协议中软硬件之间的接⼝,它提供了⼀个调⽤下层BB、LM、状态和控制寄存器等硬件的统⼀命令,上、下两个模块接⼝之间的消息和数据的传递必须通过HCI的解释才能进⾏。
Android BlueDroid详细分析

Android BlueDroid(一):BlueDroid概述一、名词解释:(有用信息增加中……)BTI F: Bluetooth InterfaceBTU : Bluetooth Upper LayerBTM: Bluetooth ManagerBTE :Bluetooth embedded systemBTA :Blueetooth application layerCO: call out\CI: call inHF : Handsfree ProfileHH: HID Host ProfileHL: Health Device ProfileAV:audio\vidioag: audio gatewayar: audio/video registrationgattc: GATT clientBLE:二、 BlueDroid && BlueZ1、Android 4.2中BlueDroid的框架结构图:(Google官方提供)。
(1)、应用程序通过android.bluetooth package下的API来调用系统的Bluetooth功能。
(2)、应用层空间增加了一个名为Bluetooth的App。
它做为系统的bluetooth核心进程而存在。
其内部将通过JNI来调用Bluetooth HAL层以完成各种蓝牙请求。
(3)、Bluetooth HAL也属于Android 4.2新增模块,它由蓝牙核心规范硬件抽象层和蓝牙应用规范硬件抽象层组成。
由于HAL层的隔离作用,上层代码可轻松移植到不同芯片平台。
(4)、作为整个蓝牙服务的核心,Bluetooth Stack模块则由Bluetooth Application Layer (缩写为BTA)和Bluetooth Embedded System(缩写为BTE)两大部分组成。
BTA实现了蓝牙设备管理、状态管理及一些应用规范。
而BTE则通过HCI与厂商蓝牙芯片交互以实现了蓝牙协议栈的通用功能和相关协议。
android蓝牙介绍二蓝牙代码架构及其uart 到rfcomm流程

Android bluetooth介绍(二)android 蓝牙代码架构及其uart 到rfcomm 流程一、Android Bluetooth Architecture蓝牙代码架构部分(google 官方蓝牙框架)Android的蓝牙系统,自下而上包括以下一些内容如上图所示:1、串口驱动Linux的内核的蓝牙驱动程、Linux的内核的蓝牙协议的层2、BlueZ的适配器BlueZ的(蓝牙在用户空间的函式库)bluez代码结构Bluetooth协议栈BlueZ分为两部分:内核代码和用户态程序及工具集。
(1)、内核代码:由BlueZ核心协议和驱动程序组成Bluetooth协议实现在内核源代码 kernel/net/bluetooth中。
包括hci,l2cap,hid,rfcomm,sco,SDP,BNEP等协议的实现。
(2)、驱动程序:kernel/driver/bluetooth中,包含Linuxkernel对各种接口的Bluetooth device的驱动,如:USB接口,串口等。
(3)、用户态程序及工具集:包括应用程序接口和BlueZ工具集。
BlueZ提供函数库以及应用程序接口,便于程序员开发bluetooth应用程序。
BlueZ utils是主要工具集,实现对bluetooth设备的初始化和控制。
3、蓝牙相关的应用程序接口Android.buletooth包中的各个Class(蓝牙在框架层的内容-----java)同样下图也是一张比较经典的蓝牙代码架构图(google官方提供)二、蓝牙通过Hciattach启动串口流程:1、hciattach总体流程2、展讯hciattach代码实现流程:三、具体代码分析1、initrc中定义idh.code\device\sprd\sp8830ec_nwcn\init.sc8830.rc1.service hciattach /system/bin/hciattach -n /dev/sttybt0 sprd_shark2.socket bluetooth stream 660 bluetooth bluetoother bluetooth4.group wifi bluetooth net_bt_admin net_bt inet net_raw net_admin system5.disabled6.oneshotadb 下/dev/ttybt0(不同平台有所不同)PS 进程中:hicattch2、/system/bin/hciattach 执行的Main函数idh.code\external\bluetooth\bluez\tools\hciattach.cservice hciattach /system/bin/hciattach -n /dev/sttybt0sprd_shark 传进两个参数,/dev/sttybt0 和 sprd_shark1.i nt main(int argc, char *argv[])2.{3.………………4.for (n = 0; optind < argc; n++, optind++) {5.char *opt;6.7.opt = argv[optind];8.9.switch(n) {10. case 0://(1)、解析驱动的位置;11. dev[0] = 0;12. if (!strchr(opt, '/'))13. strcpy(dev, "/dev/");14. strcat(dev, opt);15. break;16.17. case 1://(2)、解析串口的配置相关参数;18. if (strchr(argv[optind], ',')) {19. int m_id, p_id;20. sscanf(argv[optind], "%x,%x",&m_id, &p_id);21. u = get_by_id(m_id, p_id);22. } else {23. u = get_by_type(opt);24. }25.26. if (!u) {27. fprintf(stderr, "Unknown device type or id\n");28. exit(1);29. }30.31. break;32.33. case 2://(3)、通过对前面参数的解析,把uart[i]中的数值初始化;34. u->speed = atoi(argv[optind]);35. break;36.37. case 3:38. if (!strcmp("flow", argv[optind]))39. u->flags |= FLOW_CTL;40. else41. u->flags &= ~FLOW_CTL;42. break;43.44. case 4:45. if (!strcmp("sleep", argv[optind]))46. u->pm = ENABLE_PM;47. else48. u->pm = DISABLE_PM;49. break;50.51. case 5:52. u->bdaddr = argv[optind];53. break;54. }55. }56.57.………………58. if (init_speed)//初始化串口速率;59. u->init_speed = init_speed;60.………………61. n = init_uart(dev, u, send_break, raw);//(4)、初始化串口;62.………………63.64. return 0;65.}(1)、解析驱动的位置;1.if (!strchr(opt, '/'))2.strcpy(dev, "/dev/");3.service hciattach /system/bin/hciattach -n /dev/sttybt0 sprd_shark4.dev = /dev/ttyb0(2)、解析串口的配置相关参数;获取参数对应的结构体;1.u = get_by_id(m_id, p_id);2.static struct uart_t * get_by_id(int m_id, int p_id)3.{4.int i;5.for (i = 0; uart[i].type; i++) {6.if (uart[i].m_id == m_id && uart[i].p_id== p_id)7.return &uart[i];8.}9.return NULL;10.}这个函数比较简单,通过循环对比,如传进了的参数sprd_shark和uart结构体中的对比,找到对应的数组。
三种蓝牙架构实现方案(蓝牙协议栈方案)

三种蓝⽛架构实现⽅案(蓝⽛协议栈⽅案)蓝⽛架构实现⽅案有哪⼏种?我们⼀般把整个蓝⽛实现⽅案叫做蓝⽛协议栈,因此这个问题也可以这么阐述:蓝⽛协议栈有哪些具体的架构⽅案?在蓝⽛协议栈中,host是什么?controller是什么?HCI⼜是什么?⼤家都知道,不同的应⽤场景有不同的需求,因此不同的应⽤场景对蓝⽛实现⽅案的要求也不⼀样,从⽽催⽣不同的蓝⽛架构实现⽅案,或者说蓝⽛协议栈⽅案。
架构1:host+controller双芯⽚标准架构蓝⽛是跟随⼿机⽽诞⽣的,如何在⼿机中实现蓝⽛应⽤,是蓝⽛规格⾸先要考虑的问题。
如果你仔细阅读蓝⽛核⼼规格,你会发现规格书更多地是站在⼿机⾓度来阐述的,然后“顺带”描述⼀下⼿机周边蓝⽛设备的实现原理。
如⼤家所熟知,⼿机⾥⾯包含很多SoC或者模块,每颗SoC或者模块都有⾃⼰独有的功能,⽐如⼿机应⽤跑在AP芯⽚上(⼀般⽽⾔,Android或者iOS开发者只需跟AP芯⽚打交道),显⽰屏,3G/4G通信,WiFi/蓝⽛等都有⾃⼰专门的SoC或者模块,这些模块在物理上都会通过某种接⼝与AP相连。
如果应⽤需要⽤到某个模块的时候,⽐如蓝⽛通信,AP会⾃动跟蓝⽛模块交互,从⽽完成蓝⽛通信功能。
市场上有很多种AP芯⽚,同时也有很多种蓝⽛模块,如何保证两者的兼容性,以减轻⼿机的开发⼯作量,增加⼿机⼚商蓝⽛⽅案选型的灵活性,是蓝⽛规格要考虑的事情。
为此,蓝⽛规格定义了⼀套标准,使得⼿机⼚商,⽐如苹果,⽤⼀颗新AP替换⽼AP,蓝⽛模块不需要做任何更改;同样⽤⼀颗新蓝⽛模块换掉⽼蓝⽛模块,AP端也不需要做任何更改。
这个标准把蓝⽛协议栈分成host和controller两部分,其中host跑在AP上,controller跑在蓝⽛模块上,两者之间通过HCI协议进⾏通信,⽽且host具体包含协议栈那些部分,controller具体包含协议栈那些部分,两者之间通信的HCI协议如何定义,这些在蓝⽛核⼼规格中都有详细定义,因此我把它称为双芯⽚标准⽅案。
蓝牙协议的体系结构

蓝牙协议的体系结构随着无线通信技术的迅猛发展,蓝牙技术作为一种短距离无线通信技术逐渐得到广泛应用。
蓝牙协议是其通信的基础,了解蓝牙协议的体系结构对于理解和应用蓝牙技术是非常重要的。
本文将介绍蓝牙协议的体系结构,包括物理层、链路层、网络层、传输层以及应用层,以帮助读者深入了解蓝牙协议。
一、物理层蓝牙协议的物理层是负责定义蓝牙设备之间的无线通信接口和传输介质。
在物理层,蓝牙使用FHSS(频率跳频扩频)技术来减少干扰和提高通信质量。
蓝牙的物理层规定了蓝牙信道的使用和频率范围,以及信号的调制和解调方式。
二、链路层蓝牙协议的链路层负责建立连接、维护连接以及管理链路上的数据传输。
链路层的功能包括蓝牙设备的发现、认证和加密等。
蓝牙采用主从设备的模式,链路层规定了主设备和从设备之间的角色切换和数据传输方式。
链路层还包括L2CAP(逻辑链路控制和适配协议),它提供了对上层应用的数据传输服务。
三、网络层蓝牙协议的网络层负责数据包的路由和传输控制。
网络层使用的是RFCOMN(无连接封装模块)协议,它支持点对点和多点通信,并提供了对上层协议的透明传输服务。
网络层还包括SDP(服务发现协议),它可以让蓝牙设备自动发现和识别附近的蓝牙服务。
四、传输层蓝牙协议的传输层主要负责数据的传输和流控。
传输层使用的是RFCOMP(串行端口模块)协议,它支持同步和异步数据传输,并提供了可靠的数据传输服务。
传输层还包括TCS(电话控制协议)、RFCOTP(透明对象传输协议)等。
五、应用层蓝牙协议的应用层包括一系列的应用协议和配置协议,用于实现各种不同的应用场景。
常见的应用层协议包括OBEX(对象交换协议)、HID(人机接口设备协议)、A2DP(高质量音频传输协议)等。
应用层协议规定了各种不同应用之间的通信方式和数据格式。
总结:蓝牙协议的体系结构包括物理层、链路层、网络层、传输层和应用层。
物理层定义了蓝牙设备之间的无线通信接口和传输介质;链路层负责建立连接、维护连接和管理链路上的数据传输;网络层负责数据包的路由和传输控制;传输层负责数据的传输和流控;应用层包括一系列的应用协议和配置协议,用于实现各种不同的应用场景。
bluetooth协议架构详解与android 蓝牙架构分析

二、中间协议层
中间协议层的一系列协议构成了蓝牙协议体系: • 蓝牙协议体系中的协议按SIG的关注程度分为四层: 1.核心协议:BaseBand、LMP、L2CAP、SDP; 2.电缆替代协议:RFCOMM; 3.电话传送控制协议:TCS-Binary、AT 命 令 集; 4.选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、 vCal、IrMC、 WAE。 • 除上述协议层外,规范还定义了主机控制器接口(HCI), 位于蓝牙系统的L2CAP(逻辑链路控制与适配协议)层和 LMP(链路管理协议)层之间的一层协议。
爱立信将这项新的无线通信技术命名为蓝牙(Bluetooth)。 Bluetooth取自10世纪丹麦国王 Harald Bluetooth 的名字。 1998年5月,爱立信联合诺基亚(Nokia)、英特尔 (Intel)、IBM 、东芝(Toshiba)这4家公司一起成立了 蓝牙特别兴趣小组(Special Interest Group,SIG),负 责蓝牙技术标准的制定、产品测试,并协调各国蓝牙的具体 使用。目前SIG已经采纳蓝牙4.0核心规范技术拥有极低的运 行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。 同时还拥有低成本,跨厂商互操作性,3毫秒低延迟、100米 以上超长距离、AES-128加密等诸多特色,可以用于计步器、 心律监视器、智能仪表、传感器物联网等众多领域,大大扩 展蓝牙技术的应用范围。
蓝牙移动终端
• 移动电话( Mobile Phone ), 无绳电话 ( Cordless Phone ), 笔记本电脑 ( Notebook), 个人数字助理 ( PDA ), 数字相机 ( Digital cameras), 打印机 ( Printer), 局域网络 ( Network)等
android蓝牙ble连接原理

android蓝牙ble连接原理在Android开发中,蓝牙低功耗(BLE)连接是一种用于实现设备之间无线通信的技术。
它比传统蓝牙更省电,适用于物联网应用和其他需要长时间低功耗连接的场景。
下面将介绍Android蓝牙BLE连接的原理。
首先,需要了解BLE连接的两个主要角色:中央设备(Central)和外围设备(Peripheral)。
中央设备通常是Android手机或平板电脑,而外围设备可以是各种蓝牙BLE设备,如传感器、智能手表等。
BLE连接的过程是通过GATT(通用属性配置文件)来实现的。
GATT定义了中央设备和外围设备之间的数据通信协议。
在BLE连接中,GATT分为两个主要部分:服务器和客户端。
外围设备充当服务器的角色,它包含多个服务(Service),每个服务可以有多个特征(Characteristic)。
服务代表外围设备的功能,特征则包含了具体的数据。
每个服务和特征都有一个唯一的标识符,称为UUID,用于唯一标识它们。
中央设备作为客户端,负责与外围设备进行通信。
在建立BLE连接之前,中央设备需要扫描周围的外围设备。
通过扫描可以获取外围设备的UUID,以便中央设备连接到指定的外围设备。
BLE连接的建立是通过以下步骤完成的:1. 扫描外围设备:中央设备通过蓝牙适配器开始扫描周围的外围设备。
扫描时,可以设置过滤条件,以匹配特定的外围设备UUID。
2. 建立连接:当中央设备发现目标外围设备后,可以通过调用`BluetoothDevice.connectGatt()`方法来建立连接。
3. 发现服务:建立连接后,中央设备需要发现外围设备所支持的服务。
通过调用`BluetoothGatt.discoverServices()`方法可以发现外围设备的所有服务。
4. 获取特征:一旦服务发现完成,中央设备可以通过`BluetoothGatt.getService()`方法获取指定UUID的服务。
之后,通过调用`BluetoothGattCharacteristic.getCharacteristic()`方法获取特定UUID的特征。
蓝牙详解

Bluetooth协议一、射频及基带部分Bluetooth设备工作在2.4GHz的ISM(Industrial,Science and Medicine)频段,在北美和欧洲为2400~2483.5MHz,使用79个频道,载频为2402+kMHz(k=0,1…,22)。
无论是79个频道还是23个频道,频道间隔均为1MHz,采用时分双工(TDD,TimeDivision Duplex)方式。
调制方式为BT=0.5的GFSK,调制指数为0.28~0.35,最大发射功率分为三个等级,分别是:100mW(20dBm),2.5mW (4dBm)和1mW(0dBm),在4~20dBm范围内要求采用功率控制,因此,Bluetooth 设备间的有效通信距离大约为10~100米。
Bluetooth的基带符号速率为1Mb/s,采用数据包的形式按时隙传送,每时隙长0.625ūs,不排除将来采用更高的符号速率。
Bluetooth系统支持实时的同步面向连接传输和非实时的异步面向非连接传输,分别成为SCO链路(Synchronous Ccnnection-Oriented Link)和ACL链路(Asynchronous Connection-Less Link),前者只要传送语音等实时性强的信息,在规定的时隙传输,后者则以数据为主,可在任意时隙传输。
但当ACL传输占用SCO的预留时隙,一旦系统需要SCO传输,ACL则自动让出这些时隙以保证SCO的实时性。
数据包被分成3大类:链路控制包、SCO包和ACL包。
已定义了4钟链路控制数据包,后两者最多可分别定义12种,目前已定义了4种和7种,即共定义了15种。
大多数数据包只占用1个时隙,但有些包占用3个或5个时隙。
Bluetooth支持64kb/s的实时语音传输和各种速率的数据传输,语音编码采用对数PCM或连续可变斜率增量调制(CVSD,Continuous Variable Slope Delta Modulation)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现有的掌上电脑、移动电话等各种数字设备上的有线电缆连
接。
(1)全球范围适用:蓝牙工作在2.4GHz的 ISM频段,全球 大多数国家ISM频段的范围是2.4-2.4835GHz,使用该频段 无需向各国的无线电资源管理部门申请许可证。
(2)同时可传输语音和数据:蓝牙采用电路交换和分组交 换技术,支持异步数据信道、三路语音信道以及异步数据 与同步语音同时传输的信道。每个语音信道数据速率为 64kbit/s,语音信号编码采用脉冲编码调制(PCM)或连 续可变斜率增量调制(CVSD)方法。蓝牙有两种链路类型: 异步无连接(ACL)链路和同步面向连接(SCO)链路。
(8)成本低:随着市场需求的扩大,各个供应商纷纷推出自 己的蓝牙芯片和模块,蓝牙产品价格飞速下降。
蓝牙移动终端
• 移动电话( Mobile Phone ), 无绳电话 ( Cordless Phone ), 笔记本电脑 ( Notebook), 个人数字助理 ( PDA ), 数字相机 ( Digital cameras), 打印机 ( Printer), 局域网络 ( Network)等
(3)可以建立临时性的对等连接: 根据蓝牙设备在网络中的角色,可分为主设备(Master) 与从设备(Slave)。主设备是组网连接主动发起连接请求 的蓝牙设备,几个蓝牙设备连接成一个皮网(Piconet)时, 其中只有一个主设备,其余的均为从设备。皮网是蓝牙最 基本的一种网络形式,最简单的皮网是一个主设备和一个 从设备组成的点对点的通信连接。
主机 其他高层协议
HCI驱动
HCI协议的作用
HCI协议提供了统一访问蓝牙控制器的能 力。主机控制器以HCI命令的形式提供了 访问蓝牙硬件的基带控制器、链路管理器、 硬件状态寄存器、控制寄存器以及事件寄 存器的能力,所有这些功能都要通过内置 于蓝牙硬件内部的HCI Firmware来实现。 主机通过HCI接口向主机控制器内的HCI Firmware发送HCI命令,HCI Firmware再 通过基带命令、链路管理器命令、硬件状 寄存器、控制寄存器以及事件寄存器完成 该HCI命令,从而实现对蓝牙硬件的控制。
(4)具有很好的抗干扰能力:工作在ISM频段的无线电设 备有很多种,如家用微波炉、无线局域网(WLAN)Home RF 等产品,蓝牙采用跳频(Frequency Hopping)方式来扩展 频谱,将2.402~2.48GHz频段分成79个频点,相邻频点间 隔1MHz。抵抗来自这些设备的干扰。
(5)蓝牙模块体积很小、便于集成。
蓝牙模块相关知识交流
• 概述 • 蓝牙技术的特点 • 蓝牙协议体系结构 • Android Bluetooth 架构
概述
“蓝牙”是一种开放的技术规范,它可在世界上的任何地方 实现短距离的无线语音和数据通信。
蓝牙技术的发展: 1994年,爱立信移动通信公司开始研究在移动电话及其附件 之间实现低功耗、低成本无线接口的可行性。随着项目的进 展,爱立信公司意识到短距无线通信的应用前景无限广阔。 (Short Distance Wireless Communication)
• 基带 负责跳频以及蓝牙数据和信息帧的传输。
• 链路管理(LM) 负责连接、建立和拆除链路并进行安全控制。 链路为SCO同步话音链路与ACL 异步数据链路。
• 蓝牙的SIG规定了四种与硬件连接的物理总线方式:USB、RS232、 UART和PC卡
二、中间协议层
中间协议层的一系列协议构成了蓝牙协议体系: • 蓝牙协议体系中的协议按SIG的关注程度分为四层:
(6)低功耗:
蓝牙设备在通信连接(Connection)状态下,
有四种工作模式:激活(Active)模式、呼吸(Sniff)模 式、保持(Hold)模式、休眠(Park)模式。Active 模式 是正常的工作状态,另外三种模式是为了节能所规定的低 功耗模式。
(7)开放的接口标准:SIG为了推广蓝牙技术的使用,将蓝 牙的技术标准全部公开,全世界范围内的任何单位和个人 都可以进行蓝牙产品的开发,只要最终通过SIG的蓝牙产品 兼容性测试,就可以推向市场。
爱立信将这项新的无线通信技术命名为蓝牙(Bluetooth)。 Bluetooth取自10世纪丹麦国王 Harald Bluetooth 的名字。
1998年5月,爱立信联合诺基亚(Nokia)、英特尔 (Intel)、IBM 、东芝(Toshiba)这4家公司一起成立了 蓝牙特别兴趣小组(Special Interest Group,SIG),负 责蓝牙技术标准的制定、产品测试,并协调各国蓝牙的具体 使用。目前SIG已经采纳蓝牙4.0核心规范技术拥有极低的运 行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。 同时还拥有低成本,跨厂商互操作性,3毫秒低延迟、100米 以上超长距离、AES-128加密等诸多特色,可以用于计步器、 心律监视器、智能仪表、传感器物联网等众多领域,大大扩 展蓝牙技术的应用范围。
蓝牙体系结构
• 蓝牙技术的系统结构分为三大部分: • 1.底层硬件模块 • 2.中间协议层 • 3.高层应用
蓝牙协议栈体系结构示意图
一、底层硬件模块
底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理 (LM)。
• RF层 通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤 和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所 需要满足的条件。
1.核心协议:BaseBand、LMP、L2CAP、SDP; 2.电缆替代协议:RFCOMM; 3.电话传送控制协议:TCS-Binary、AT 命 令 集; 4.选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、 vCal、IrMC、 WAE。
• 除上述协议层外,规范还定义了主机控制器接口(HCI), 位于蓝牙系统的L2CAP(逻辑链路控制与适配协议)层和 LMP(链路管理协议)层之间的一层协议。