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协议如何定义,这些在蓝⽛核⼼规格中都有详细定义,因此我把它称为双芯⽚标准⽅案。
BlueTooth:蓝牙核心协议与蓝牙芯片结构

BlueTooth:蓝牙核心协议与蓝牙芯片结构1 Bluetooth Core System Protocol(蓝牙核心协议)蓝牙技术规范(specification)包括核心协议(protocol)和应用规范(profile)两个部分。
核心协议包含蓝牙协议栈中最低的4个Layer,和一个基本的服务协议SDP(Service Discover Protocol),以及所有应用profile的基础Profile GAP(General Acess Profile)。
核心协议是蓝牙协议栈中必不可少的。
除了核心协议外,蓝牙规范必须包含一些其他的应用层的服务和协议--应用层profile。
蓝牙协议栈通常有如下内容:蓝牙5而蓝牙的核心系统协议为最低的4个Layer,再加上应用层profile SDP,包括:RF,LC(link control),LM(Link Manager),L2CAP(Logical Link Control and Adaptation Protocol),SDP。
核心系统的架构图如下,为简明起见,没有画出SDP。
蓝牙6最低的3个Layer经常也看作一个子系统,叫Bluetooth Controler。
Bluetooth Controler和包括L2CAP在内上层Profile之间的通信,是通过HCI(Host to Controler Interface)进行。
HCI以下的内容Bluetooth Controler由蓝牙芯片实现,以上的内容由Bluetooth Host(比如手机Baseband)实现。
蓝牙核心系统通过一系列Service Access Point(如上图的椭圆部分所示)提供服务,这些服务包含了对蓝牙核心系统的最基本和原始的控制。
可以分为3种类型:Device Control Service,修改蓝牙Device的行为,状态和模式;Tansport Control Sevice,创建修改和释放trafficbearers(信道和链接);Data Service,在Traffic bearers上进行数据传输。
蓝牙协议的体系结构

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

深⼊浅出低功耗蓝⽛(BLE)协议栈BLE协议栈为什么要分层?怎么理解BLE“连接”?如果BLE协议只有ATT层没有GATT层会发⽣什么?协议栈框架⼀般⽽⾔,我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈就是实现低功耗蓝⽛协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提。
在深⼊BLE协议栈各个组成部分之前,我们先看⼀下BLE协议栈整体架构。
如上图所述,要实现⼀个BLE应⽤,⾸先需要⼀个⽀持BLE射频的芯⽚,然后还需要提供⼀个与此芯⽚配套的BLE协议栈,最后在协议栈上开发⾃⼰的应⽤。
可以看出BLE协议栈是连接芯⽚和应⽤的桥梁,是实现整个BLE应⽤的关键。
那BLE协议栈具体包含哪些功能呢?简单来说,BLE协议栈主要⽤来对你的应⽤数据进⾏层层封包,以⽣成⼀个满⾜BLE协议的空中数据包,也就是说,把应⽤数据包裹在⼀系列的帧头(header)和帧尾(tail)中。
具体来说,BLE协议栈主要由如下⼏部分组成:PHY层(Physical layer物理层)。
PHY层⽤来指定BLE所⽤的⽆线频段,调制解调⽅式和⽅法等。
PHY层做得好不好,直接决定整个BLE芯⽚的功耗,灵敏度以及selectivity等射频指标。
LL层(Link Layer链路层)。
LL层是整个BLE协议栈的核⼼,也是BLE协议栈的难点和重点。
像Nordic的BLE协议栈能同时⽀持20个link(连接),就是LL层的功劳。
LL层要做的事情⾮常多,⽐如具体选择哪个射频通道进⾏通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进⾏重传,以及如何对链路进⾏管理和控制等等。
LL层只负责把数据发出去或者收回来,对数据进⾏怎样的解析则交给上⾯的GAP或者GATT。
HCI(Host controller interface)。
HCI是可选的(),HCI主要⽤于2颗芯⽚实现BLE协议栈的场合,⽤来规范两者之间的通信协议和通信命令等。
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)等
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、选用协议
• 1.点对点协议(PPP) 在蓝牙技术中,PPP位于RFCOMM上层,完成点对点的 连接。
• 2. TCP/UDP/IP 该协议是由互联网工程任务组制定,广泛应用于互联网通 信的协议。在蓝牙设备中,使用这些协议是为了与互联网 相连接的设备进行通信。
• 3.对象交换协议(OBEX) IrOBEX(简写为OBEX)是由红外数据协会(IrDA)制定的 会话层协议,采用简单的和自发的方式交换目标。OBEX 是一种类似于HTTP的协议,它假设传输层是可靠的,采 用客户机/服务器模式,独立于传输机制和传输应用程序 接口(API)。
3、电话控制协议
该协议又分为: • 1.二元电话控制协议(TCS-Binary 或TCS BIN)
该协议是面向比特的协议,它定义了蓝牙设备间建立语音 和数据呼叫的控制信令,定义了处理蓝牙TCS设备群的移 动管理进程。基于ITUTQ.931建议的TCS Binary被指定为 蓝牙的二元电话控制协议规范。 • 2.AT命令集电话控制协议 SIG定义了控制多用户模式下移动电话和调制解调器的AT 命令集,该AT命令集基于ITU TV.250建议和GSM07.07, 它还可以用于传真业务。
3.局域网访问模式
该用户模式下,多功能数据终端(DTs)经局域网访问点 (LAP)无线接入局域网,然后,DTs的操作与通过拨号方 式接入局域网的设备的操作一样,其协议栈如图4所示。人资料管理(PIM)的同 步更新功能,其典型应用如电话簿、日历、通知和记录等。 它 要求PC、蜂窝电话和个人数字助理(PDA)在传输和处 理名片、日历及任务通知时,使用通用的协议和格式。其 协议栈如图5所示,其中同步应用模块代表红外移动通信 (IrMC)客户机或服务器。
蓝牙协议结构体系
三、高层应用
• 高层应用层具有一套框架,它在蓝牙协议 栈的最上部,其中较典型的有拨号网络、 耳机、局域网访问、文件传输等,它们分 别对应一种应用模式。各种应用程序可以 通过各自对应的应用模式实现无线通信。
• 拨号网络应用可通过仿真串口访问微微网 (Piconet),数据设备也可由此接入传统 的局域网;
(1)协议复用:由于基带协议不能识别任何高层协议,所以L2CAP必须支 持上层协议复用,它能区分诸如服务发现协议、RFCOMM协议、电 话控制协议等高层协议。
(2)分段与重组:蓝牙基带协议数据包的大小是有限的。发送方需将较大 的L2CAP包必须分解成小的基带包来发送。在接收方,必须将多个基 带包重组为一个完整的L2CAP数据包。
(8)成本低:随着市场需求的扩大,各个供应商纷纷推出自 己的蓝牙芯片和模块,蓝牙产品价格飞速下降。
蓝牙移动终端
• 移动电话( Mobile Phone ), 无绳电话 ( Cordless Phone ), 笔记本电脑 ( Notebook), 个人数字助理 ( PDA ), 数字相机 ( Digital cameras), 打印机 ( Printer), 局域网络 ( Network)等
• 基带 负责跳频以及蓝牙数据和信息帧的传输。
• 链路管理(LM)
二、中间协议层
中间协议层的一系列协议构成了蓝牙协议体系: • 蓝牙协议体系中的协议按SIG的关注程度分为四层:
1.核心协议:BaseBand、LMP、L2CAP、SDP; 2.电缆替代协议:RFCOMM; 3.电话传送控制协议:TCS-Binary、AT 命 令 集; 4.选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、 vCal、IrMC、 WAE。
爱立信将这项新的无线通信技术命名为蓝牙(Bluetooth)。 Bluetooth取自10世纪丹麦国王 Harald Bluetooth 的名字。
1998年5月,爱立信联合诺基亚(Nokia)、英特尔 (Intel)、IBM 、东芝(Toshiba)这4家公司一起成立了 蓝牙特别兴趣小组(Special Interest Group,SIG),负 责蓝牙技术标准的制定、产品测试,并协调各国蓝牙的具体 使用。目前SIG已经采纳蓝牙4.0核心规范技术拥有极低的运 行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。 同时还拥有低成本,跨厂商互操作性,3毫秒低延迟、100米 以上超长距离、AES-128加密等诸多特色,可以用于计步器、 心律监视器、智能仪表、传感器物联网等众多领域,大大扩 展蓝牙技术的应用范围。
主机 其他高层协议
HCI驱动
物理总线(串口,USB等)驱动
物理总线 物理总线固件
HCI Firmware LM
RF
蓝牙控制器
模块及应用程序接口
1、核心协议
• 基 带 协 议 (BaseBand) <1> 基带和链路控制层确保各蓝牙设备之 间的物理连接。基带协议使用查询和分 页进程同步不同设备间的发送频率和时 钟,为基带数据分组提供面向连接(SCO) 和无连接(ACL)两种物理连接方式,而 且,同一射频上可实现多路数据传送。 ACL适用于数据分组,SCO适用于话音以 及话音与数据的组合,所有的话音和数
蓝牙体系结构
• 蓝牙技术的系统结构分为三大部分: • 1.底层硬件模块 • 2.中间协议层 • 3.高层应用
蓝牙协议栈体系结构示意图
一、底层硬件模块
底层硬件部分包括无线跳频(RF)、基带 (BB)和链路管理(LM)。
• RF层 通过2.4GHz无需授权的ISM频段的微波,实 现数据位流的过滤和传输,本层协议主要 定义了蓝牙收发器在此频带正常工作所需 要满足的条件。
(2)同时可传输语音和数据:蓝牙采用电路交换 和分组交换技术,支持异步数据信道、三路语音
(3)可以建立临时性的对等连接: 根据蓝牙设备在网络中的角色,可分为主设备(Master) 与从设备(Slave)。主设备是组网连接主动发起连接请求 的蓝牙设备,几个蓝牙设备连接成一个皮网(Piconet)时, 其中只有一个主设备,其余的均为从设备。皮网是蓝牙最 基本的一种网络形式,最简单的皮网是一个主设备和一个 从设备组成的点对点的通信连接。
response
协议的组映射为基带的微微网,以避免 高层协议为了有效的管理组而必须与 基带协议以及链路管理器直接联系。
request
L2CAP
confirm
response
Low Layer(BB or HCI)
• 服务发现协议(SDP) 服务发现在蓝牙技术框架中起着至关紧要的作用,它是所 有用户模式的基础。使用SDP可以查询到设备信息和服务 类型,从而在蓝牙设备间建立相应的连接。服务发现协议 由服务发现代理(SDA)、服务发现服务器(SDS)、服 务数据库管理器(SDM)三个模块组成。
• 连接管理协议(LMP)
该协议负责各蓝牙设备间连接的建立。它通过连接的发
起、交换、核实,进行身份认证和加密,通过协商确定基 带数据分组大小。它还控制无线设备的电源模式和工作周 期,以及微微网内设备单元的连接状态。
• 逻辑链路控制和适配协议(L2CAP)
L2CAP协议是一个为高层协议屏蔽基带协议的适配协议, 位于基带协议之上,属于数据链路层,为高层提供面向连 接和面向无连接的数据服务,完成协议复用、分段和重组、 服务质量QoS(Quality Of Service)传输以及组抽象等功能。 虽然基带协议提供了SCO和ACL两种连接类型,但L2CAP只 支持ACL。
蓝牙模块相关知识交流
• 概述 • 蓝牙技术的特点 • 蓝牙协议体系结构 • Android Bluetooth 架构
概述
“蓝牙”是一种开放的技术规范,它可在世界上的任何地方 实现短距离的无线语音和数据通信。
蓝牙技术的发展: 1994年,爱立信移动通信公司开始研究在移动电话及其附件 之间实现低功耗、低成本无线接口的可行性。随着项目的进 展,爱立信公司意识到短距无线通信的应用前景无限广阔。 (Short Distance Wireless Communication)
2.因特网网桥模式
这种用户模式可通过手机或无线调制解调器向PC提供拨 号入网和收发传真的功能,而不必与PC有物理上的连接。 拨号上网需要两列协议栈(不包括SDP),如 图3所示。 AT命令集用来控制移动电话或调制解调器以及传送其他业 务数据的协议栈。传真采用类似协议栈,但不使用PPP及 基于PPP的其他网络协议,而由应用软件利用RFCOMM 直接发送。
• 用户可以通过协议栈中的Audio(音频)层 在手机和耳塞中实现音频流的无线传输;
常用应用模式
1.文件传输模式 文件传输模式提供两终端间的数据通信功能,可传输后 缀为.xls、.ppt、.wav、.jpg 和.doc的文件(但并不限于这 几种),以及完整的文件夹、目录或多媒体数据流 等, 提供远端文件夹浏览功能。文件传输协议栈如图2所示。
(4)具有很好的抗干扰能力:工作在ISM频段的无线电设 备有很多种,如家用微波炉、无线局域网(WLAN) Home RF 等产品,蓝牙采用跳频(Frequency Hopping)方式来扩展 频谱,将2.402~2.48GHz频段分成79个频点,相邻频点 间 隔1MHz。抵抗来自这些设备的干扰。
(5)蓝牙模块体积很小、便于集成。
• 除上述协议层外,规范还定义了主机控制器接口(HCI), 位于蓝牙系统的L2CAP(逻辑链路控制与适配协议)层和 LMP(链路管理协议)层之间的一层协议。
HCI协议的作用
HCI协议提供了统一访问蓝牙控制器的能 力。主机控制器以HCI命令的形式提供了 访问蓝牙硬件的基带控制器、链路管理器、 硬件状态寄存器、控制寄存器以及事件寄 存器的能力,所有这些功能都要通过内置 于蓝牙硬件内部的HCI Firmware来实现。 主机通过HCI接口向主机控制器内的HCI Firmware发送HCI命令,HCI Firmware再 通过基带命令、链路管理器命令、硬件状 寄存器、控制寄存器以及事件寄存器完成 该HCI命令,从而实现对蓝牙硬件的控制。