bluetooth协议架构详解与android 蓝牙架构分析
bluetooth协议架构详解与android 蓝牙架构分析
现有的掌上电脑、移动电话等各种数字设备上的有线电缆连
接。
(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命令,从而实现对蓝牙硬件的控制。
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与厂商蓝牙芯片交互以实现了蓝牙协议栈的通用功能和相关协议。
传统蓝牙协议及体系结构
蓝牙技术体系协议
连接时的节能状态:
节点被赋予Park地址,按一定的时间间隔监听主节点的声音
节点保持停止传送数据,只有激活后才重新开始传送数据。
从节点时睡时醒,速率明显下降。
蓝牙技术体系协议
三种纠错方式: 1)1/3向前纠错:SCO链路 2)2/3向前纠错:ACL链路 3)自动重发:无编号发送
蓝牙技术体系协议
蓝牙技术体系协议
3.应用层 Sig定义了一些基本应用模型,每一种应用模 型都对应一个剖面,规范了相应模型的功能 和使用协议。
不同厂家在生产时只要遵照相同的剖面,彼 此产品之间就能互通。
蓝牙技术体系协议
应用层常见应用模型:
1)文件传输:蓝牙设备之间传 送各种数据信息文件,用户可以 浏览其他设备上的文件夹,也可 以新建或删除文件夹。 采用的是客户/服务器模式。
蓝牙技术体系协议
二、蓝牙核心协议 蓝牙协议按实施的功能可分为4类: 1.蓝牙核心协议 2.蓝牙电缆替代协议:串口仿真 3.蓝牙电话控制协议:电话通信TCS协议和AT 命令集 4.蓝牙选用协议:PPP、TCP/IP等
蓝牙技术体系协议
蓝牙核心协议: 1)基带BB 2)连接管理LMP 3)链接控制和适配L2CAP 4)服务发现SDP协议
传统蓝牙协议及体系结构
蓝牙技术体系协议
一、蓝牙协议体系由3层组成:
应用层 中间层 底层
蓝牙技术体系协议
链路管理 基带层 射频 底层 RF BB 层LM
完成数据流位流的过滤和传输
负责调频,实现蓝牙数据传输和信息帧 的传输。分为电路交换和分组交换。
规定如何建立和拆除连接,以及链路的 控制和安全。
蓝牙技术体系协议
蓝牙技术体系协议
2)数据同步: 保证收发数据同步,使 得接收设备能够获得准 确信息。
三种蓝牙架构实现方案(蓝牙协议栈方案)
三种蓝⽛架构实现⽅案(蓝⽛协议栈⽅案)蓝⽛架构实现⽅案有哪⼏种?我们⼀般把整个蓝⽛实现⽅案叫做蓝⽛协议栈,因此这个问题也可以这么阐述:蓝⽛协议栈有哪些具体的架构⽅案?在蓝⽛协议栈中,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协议如何定义,这些在蓝⽛核⼼规格中都有详细定义,因此我把它称为双芯⽚标准⽅案。
android蓝牙介绍二蓝牙代码架构及其uart到rfcomm流程
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.rc[html]view plaincopy1.service hciattach /system/bin/hciattach -n /dev/sttybt0 sprd_shark2.socket bluetooth stream 660 bluetooth bluetooth/doc/0536cc7bbb4cf7ec4afed0c0.html er 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.{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.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结构体中的对⽐,找到对应的数组。
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上进行数据传输。
bluetooth的协议层
bluetooth的协议层蓝牙技术,作为一种无线通讯标准,已广泛应用于各种电子设备之间,实现了数据的短距离传输。
它的成功得益于其独特的协议层设计,这些协议层确保了蓝牙设备之间的有效、安全和可靠的通信。
本文将深入探讨蓝牙的协议层,包括其核心协议、传输协议、中间件和应用层,并分析它们是如何协同工作以实现蓝牙通信的。
一、蓝牙技术概述蓝牙技术是一种无线通讯技术,它允许电子设备之间在短距离内进行数据传输。
蓝牙技术广泛应用于手机、耳机、笔记本电脑、智能手表等设备中,为用户提供了便捷的连接方式。
蓝牙技术的特点包括低功耗、低成本和广泛的兼容性,使其成为物联网(IoT)领域的重要组成部分。
二、蓝牙的协议层结构蓝牙的协议层结构可以分为核心协议、传输协议、中间件和应用层四个部分。
这些层次结构为蓝牙通信提供了从物理层到应用层的完整解决方案。
1. 核心协议:核心协议包括基带、链路管理、逻辑链路控制和适应协议以及服务发现协议。
基带负责跳频和蓝牙数据及信息帧的传输,是蓝牙技术中最重要的部分。
链路管理协议负责连接的设置、建立和释放,以及安全和控制。
逻辑链路控制和适应协议具有完成数据拆装、连接管理、分组的功能和复用协议的功能。
此外,服务发现协议层上的User Discovery Protocol(UDP)使用设备的服务发现信息(SDP)使设备可以以用户理解的方式和更高级别的设备应用接口(API)来相互发现对方。
2. 传输协议:传输协议层主要包括RFCOMM协议和TCP/UDP。
RFCOMM基于ETSI标准TS07.10,传输机制本身基于L2CAP。
它为上层应用程序提供了一种串行数据传输方式。
TCP/UDP 是两种已广泛使用的传输层协议,它们被包含在蓝牙的传输协议中,可以利用IP网络协议栈来进行通信。
实际应用中,蓝牙设备以TCP或UDP方式完成数据的传输。
3. 中间件协议:中间件协议层包括串口仿真协议(RFCOMM)、服务发现协议(SDP)、电话控制协议(TCS)和音频传输协议(ATP)等。
蓝牙协议栈详解
蓝牙协议栈详解蓝牙协议栈是指蓝牙通信中的软件协议,它定义了蓝牙设备之间的通信规则和数据传输方式。
蓝牙协议栈由多个层次组成,每个层次负责不同的功能和任务。
本文将对蓝牙协议栈的各个层次进行详细解析,以便读者更好地理解蓝牙通信原理。
1. 物理层(Physical Layer)物理层是蓝牙协议栈中最底层的层次,它定义了蓝牙设备的无线通信方式和频率。
蓝牙使用2.4GHz的ISM频段进行通信,采用频率跳变技术来避免干扰。
物理层还定义了蓝牙设备的功率等级和传输速率,以及通信距离的限制。
2. 链路层(Link Layer)链路层是蓝牙协议栈中的第二层,它负责建立和管理蓝牙设备之间的连接。
链路层主要包括两个子层:广告子层和连接子层。
广告子层负责设备的广告和发现,用于建立连接;连接子层负责连接的建立、维护和关闭。
链路层还定义了蓝牙设备之间的数据传输方式,如数据包的格式、错误检测和纠错等。
3. 主机控制器接口(Host Controller Interface,HCI)主机控制器接口是蓝牙协议栈中的第三层,它定义了主机和主机控制器之间的通信方式。
主机控制器接口可以通过串口、USB等方式与主机连接,主要负责传输命令和数据,以及处理主机和主机控制器之间的事件和状态。
4. L2CAP层(Logical Link Control and Adaptation Protocol)L2CAP层是蓝牙协议栈中的第四层,它提供了面向连接和面向无连接的数据传输服务。
L2CAP层可以将较大的数据包分割成多个小的数据包进行传输,并提供可靠的数据传输机制。
L2CAP层还支持多个逻辑信道的复用和分离,以满足不同应用的需求。
5. RFCOMM层(Radio Frequency Communication)RFCOMM层是蓝牙协议栈中的第五层,它通过虚拟串口的方式提供串行数据传输服务。
RFCOMM层允许应用程序通过串口接口与蓝牙设备进行通信,实现数据的传输和控制。
[蓝牙]1蓝牙核心技术了解(蓝牙协议架构硬件和软件笔记)
[蓝牙]1蓝牙核心技术了解(蓝牙协议架构硬件和软件笔记)第一篇:[蓝牙] 1蓝牙核心技术了解(蓝牙协议架构硬件和软件笔记) [蓝牙]1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)声明:这篇文章是楼主beautifulzzzz学习网上关于蓝牙的相关知识的笔记,其中比较多的受益于xubin341719的蓝牙系列文章,同时还有其他网上作者的资料。
由于有些文章只做参考或统计不足,如涉及版权请在下面留言~。
同时我也在博客分类中新建一个蓝牙通信分类,用来研究分享蓝牙相关技术。
下载连接:Bluetooth PROFILE SPECIFICATIONS(基本涵盖所有蓝牙协议)、buletooth core 2.1-4.0 SPECIFICATION(三蓝牙版本的核心协议v2.1v3.0v4.0)、蓝牙核心技术与应用马建仓版(蓝牙协议相关初学者必读,开发者参考)蓝牙核心技术概述(一):蓝牙概述蓝牙核心技术概述(二):蓝牙使用场景蓝牙核心技术概述(三):蓝牙协议规范(射频、基带链路控制、链路管理)蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)下面是摘抄笔记内容:蓝牙核心技术概述(一):蓝牙概述蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。
能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。
利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。
蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。
其数据速率为1Mbps。
采用时分双工传输方案实现全双工传输。
android课程之Bluetooth
Android Bluetooth一、Android Bluetooth现状(1)Android2.2版 支持的蓝牙核心版本是Bluetooth 2.0 + EDR。
(2)Android 的蓝牙 使用了BlueZ协议栈,但只实现了Handset/Handfree和A2DP/AVRCP等Profile。
(一些常用的Profile(如HID/DUN/SPP/OPP/FTP/PAN等)在现在的Android2.2版中并没有实现。
需要自己在Android中实现Profile)。
(3)目前版本(Android2.2) 只支持 绑定设备(bonded devices)之间通信,而不支持ad-hoc网络通信。
(4)目前版本(Android2.2) emulator(仿真器、模拟器)不支持蓝牙的调试,只能通过LOG和BlueZ带的工具来调试。
(5)Android2.0 API level5 之后的版本才支持Bluetooth。
(6)Android 的Bluetooth通信API是BlueZ 的RFCOMM的封装。
RfcommSocket 在 API level7 之后的版本才提供Bluetooth 的通信RfcommSocket 使用Java 的IputStream 和OutputStream对象二、Android Bluetooth 架构1、面向库的架构视图2、面向进程的架构视图LinuxKernel层:bluez协议栈、uart驱动, h4协议, hci,l2cap, sco, rfcomm Library层:libbluedroid.so 等Framework层:实现了Headset /Handsfree 和 A2DP/AVRCP profile,但其实现方式不同Handset/Handfree是直接 在bluez的RFCOMM Socket 上开发的,没有利用bluez的audio Plugin,而A2DP/AVRCP是在bluez的audio plugin基础上开发的,大大降低了实现的难度。
Bluetooth在android中的实现和开发
Bluetooth socket app User space Kernel space
TCP/IP
PPP
rfcomm.ko krfcommd bnep.ko kbnepd
Hidp.ko Transport layer Network layer
Bluetooth.ko (core socket sysfs)
Bluetooth 其余知识
两种链路类型: 面向连接的同步链路(SCO) 面向无连接的异步链路(ACL)。 三种节能状态, 停等(Park)状态 保持(Hold)状态 呼吸(Sniff)状态 三种纠错方案 1/3前向纠错(FEC) 2/3前向纠错 自动重发(ARQ) 在链路层中,蓝牙系统提供了认证、加密和密钥管理等功能。 每个用户都有一个个人标识码(PIN),它会被译成128bit的链路密钥 (Link Key)来进行单双向认证。一 旦认证完毕,链路就会以不同长度的密码(Encryphon Key)来加密(此密码以shit为单位增减,最大 的长度为128bit)链路层安全机制提供了大量的认证方案和一个灵活的加密方案(即允许协商密码的 长度)
Bluetooth Core System Architecture
Bluetooth Core System Architecture
蓝牙技术的系统结构分为三大部分:底层硬件模块、中间协议层和高层应用。 底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理(LM)。 RF层 通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤和传输,本层协议主要定 义了蓝牙收发器在此频带正常工作所需要满足的条件。 基带 负责跳频以及蓝牙数据和信息帧的传输。 链路管理 负责连接、建立和拆除链路并进行安全控制。 LM (Link Manager) 层是蓝牙协议栈的链路管理层协议, 他负责将上层HCI 命令翻译成基 带能接受的操作, 建立ACL (数据) 和SCO (语音) 链接, 以及使蓝牙设备进入节能状态的工 作模式等。 LC (Link Control) 层负责在一批数据包传送期间, 响应上层LM 命令(如执行建立数据包的 传输链路, 维持链路等功能的LM 命令)。 HCI 位于蓝牙系统的L2CAP(逻辑链路控制与适配协议)层和LMP(链路管理协议)层之间 的一层协议。HCI为上层协议提供了进入LM的统一接口和进入基带的统一方式。 蓝牙的SIG规定了四种与硬件连接的物理总线方式:USB、RS232、UART和PC卡
Android之蓝牙驱动开发总结
Android之蓝牙驱动开发总结二Android Bluetooth架构 (1)2.1 Bluetooth架构图 (1)2.2 Bluetooth代码层次结构 (3)三Bluetooth协议栈分析 (4)3.1 蓝牙协议栈 (4)3.2 Android与蓝牙协议栈的关系 (5)四Bluetooth之HCI层分析 (5)4.1 HCI层与基带的通信方式 (6)4.2 包的分析及研究 (7)4.3 通信过程的研究与分析 (8)五Bluetooth之编程实现 (8)5.1 HCI层编程 (8)5.2 L2CAP层编程 (10)5.3 SDP层编程 (12)六Bluetooth之启动过程实现 (13)6.1 Bluetooth启动步骤 (14)6.2 Bluetooth启动流程 (14)6.3 Bluetooth数据流向 (14)6.4 Bluez控制流程 (14)6.5 Bluetooth启动过程分析 (15)七Bluetooth之驱动移植 (15)7.1 android系统配置 (15)7.2 启动项修改 (16)7.3 电源管理rfkill驱动 (16)7.4 Rebuild Android image and reboot (16)7.5 实现BT睡眠唤醒机制 (16)7.6 系统集成 (17)八Bluetooth之调试与编译 (17)8.1 Bluetooth驱动调试 (17)九Bluetooth之应用程序开发 (18)9.1 Bluetooth的API开发 (18)9.2 The Basics开发 (18)9.3 Bluetooth Permissions开发 (19)9.4 Setting Up Bluetooth服务 (19)9.5 Finding Devices服务 (20)9.6 Connecting Devices服务 (22)9.7 Managing a Connection服务 (26)9.8 Working with Profiles服务 (28)十总结与疑问 (29)一Bluetooth基本概念蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备、计算机及其终端设备、各种数字数据系统、甚至家用电器采用无线方式联接起来。
bluetooth协议架构详解与android 蓝牙架构分析
蓝牙移动终端
• 移动电话( Mobile Phone ), 无绳电话 ( Cordless Phone ), 笔记本电脑 ( Notebook), 个人数字助理 ( PDA ), 数字相机 ( Digital cameras), 打印机 ( Printer), 局域网络 ( Network)等
蓝牙体系结构
爱立信将这项新的无线通信技术命名为蓝牙(Bluetooth)。 Bluetooth取自10世纪丹麦国王 Harald Bluetooth 的名字。 1998年5月,爱立信联合诺基亚(Nokia)、英特尔 (Intel)、IBM 、东芝(Toshiba)这4家公司一起成立了 蓝牙特别兴趣小组(Special Interest Group,SIG),负 责蓝牙技术标准的制定、产品测试,并协调各国蓝牙的具体 使用。目前SIG已经采纳蓝牙4.0核心规范技术拥有极低的运 行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。 同时还拥有低成本,跨厂商互操作性,3毫秒低延迟、100米 以上超长距离、AES-128加密等诸多特色,可以用于计步器、 心律监视器、智能仪表、传感器物联网等众多领域,大大扩 展蓝牙技术的应用范围。
蓝牙模块相关知识交流
• • • •
概述 蓝牙技术的特点 蓝牙协议体系结构 Android Bluetooth 架构
概述
“蓝牙”是一种开放的技术规范,它可在世界上的任何地方 实现短距离的无线语音和数据通信。 蓝牙技术的发展: 1994年,爱立信移动通信公司开始研究在移动电话及其附件 之间实现低功耗、低成本无线接口的可行性。随着项目的进 展,爱立信公司意识到短距无线通信的应用前景无限广阔。 (Short Distance Wireless Communication)
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与厂商蓝牙芯片交互以实现了蓝牙协议栈的通用功能和相关协议。
蓝牙协议栈的原理和结构
蓝牙协议栈的原理和结构蓝牙技术是一种无线通信技术,用于在短距离内传输数据。
它由各种硬件和软件组成,其中蓝牙协议栈是实现蓝牙功能的关键部分。
本文将介绍蓝牙协议栈的原理和结构。
一、蓝牙协议栈的原理蓝牙协议栈是一种软件架构,用于管理蓝牙设备之间的通信。
它由多层协议组成,每一层都负责处理特定的功能。
蓝牙协议栈的原理可以总结为以下几个方面:1. 传输层:蓝牙协议栈通过蓝牙射频进行无线传输,因此传输层是蓝牙协议栈的基础。
它负责将数据从一个设备传输到另一个设备,并处理数据的错误检测和纠正。
2. 链路层:链路层负责管理蓝牙设备之间的连接。
它定义了蓝牙设备之间的数据传输规则,以及连接的建立和断开过程。
3. 主机控制器接口(HCI)层:HCI层是蓝牙协议栈的接口层,它用于连接上层的应用程序和下层的硬件。
它负责管理与硬件的通信,并将来自上层应用程序的指令转化为硬件能够理解的信号。
4. 逻辑链路控制与适配协议(L2CAP)层:L2CAP层负责处理上层应用程序与底层链路层之间的数据传输。
它提供了一种可靠的数据传输机制,并支持不同类型的数据传输,例如音频、视频和文件传输。
5. 带宽管理协议(BB)层:BB层负责管理传输带宽的分配和控制。
它确定每个连接的数据传输速率,以确保高效的数据传输。
二、蓝牙协议栈的结构蓝牙协议栈通常分为两个部分:控制器和主机。
它们之间通过HCI层进行通信,各自承担不同的功能。
1. 控制器:控制器是蓝牙协议栈的底层部分,通常由硬件实现。
它包括射频(RF)模块和基带处理器(BB)。
射频模块负责无线信号的发送和接收,而基带处理器负责处理信号的解码和编码,以及错误检测和纠正。
2. 主机:主机是蓝牙协议栈的上层部分,通常由软件实现。
它包括L2CAP层、HCI层等。
主机负责管理蓝牙设备之间的连接和数据传输,并提供一种接口供应用程序使用。
控制器和主机之间通过HCI层进行通信。
主机可以发送指令给控制器,控制器执行指令并返回结果给主机。
bluetooth协议体系结构
Bluetooth协议体系结构蓝芽(Bluetooth)技术规范由蓝芽特别兴趣小组(SIG)制订,在使用通用无线传输模块和数据通信协议的基础上,开发交互式服务和应用,多用于便携式通信设备。
蓝芽技术规范的目的是使符合该规范的各种应用之间能够互通,本地设备与远端设备需要使用相同的协议,不同的应用需要不同的协议,但是,所有的应用都要使用蓝芽技术规范中的数据链路层和物理层。
完整的蓝芽协议层如图1所示,不是任何应用都必须使用全部协议。
图1显示了数据经过无线传输时,所有协议之间的相互关系,但在某些应用中这种关系是有变化的,如需控制连接管理器时,可使用逻辑链路控制应用协议(L2CAP)、二元电话控制规范(TCS Binary)或连接管理协议(LMP)。
完整的协议包括蓝芽专利协议(LMP和L2CAP)和非专利协议(如对象交换协议OBEX和用户数据报协议UDP)。
设计协议和协议栈的主要原则是尽可能利用现有的各种高层协议,保证现有协议与蓝芽技术的融合以及各种应用之间的互通性,充分利用兼容蓝芽技术规范的软硬件系统。
蓝芽技术规范的的开放性保证了设备制造商可自由地选用其专利协议或常用的公共协议,在蓝芽技术规范基础上开发新的应用。
1.蓝芽协议体系中的协议蓝芽协议体系中的协议按SIG的需要分为四层:核心协议,BaseBand、LMP、L2CAP、SDP;电缆替代协议,RFCOMM;电话传送控制协议,TCS Binary、AT命令集;可选协议,PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、WAE。
除上述协议层外,规范还定义了主机控制器接口(HCI),它为基带控制器、连接管理器、硬件状态和控制寄存器提供命令接口。
在图1中,HCI位于L2CAP的下层,但HCI也可位于L2CAP上层。
蓝芽核心协议由SIG制定的蓝芽专利协议组成,绝大部分蓝芽设备都需要核心协议(加上无线部分),而其它协议根据应用的需要而定。
无线蓝牙通信协议架构体系的分析
无线蓝牙通信协议架构体系的分析蓝牙通信技术,现在已经是非常成熟的短距离数据传输技术。
在蓝牙系统中,为了支持不同应用,需要使用多个协议,这些协议按层次组合在一起,构成了蓝牙协议栈.蓝牙协议栈是蓝牙技术的核心组成部分,它能使设备之间互相定位并建立连接,通过这个连接,设备间能通过各种各样的应用程序进行交互和数据交换。
标签:协议栈硬件层中间层顶层协议栈是整个蓝牙通信协议的核心组成部分。
它的功能就是让多个设备之间建立连接,然后设备之间根据此链路运用程序模块的功能进行数据交换和交互通信。
通常该体系由硬件层、中间层及顶端应用层组成。
一、硬件层模块无线收发器、基带控制器和链路管理层组成该模块系统。
蓝牙基带控制器是蓝牙硬件模块的关键模块。
无线收发器是蓝牙设备的核心,任何蓝牙设备都要有无线收发器,由它来完成数据间的发射及接收功能。
基带控制器主要用于数据帧的编码及跳频技术的实现和数据传输功能的保障。
链路管理层负责为通信提供建立及断开,并保障通信的安全。
硬件模块为以下几个部分组成:RF射频信号功能是将信号通过过滤器使得信号能够按位数进行相应的操作,并且在此之间的频段采用的是工业级别的频段,是不需要经过授权认证的。
在此频段的信号都可以利用其特性得到更广泛的应用。
链路管理协议顾名思义是指用于在信号建立和连接方面的通信协议,通过该协议能够保证信号链路的安全及畅通。
根据链路类型的划分可以分为有面向连接的和无面向连接的链路。
其中有分组16个,4组用于控制。
异步链路的带宽由蓝牙网的主节点控制,蓝牙网是一个微微网。
它的组成最大不能超过256个连接设备,并且工作状态是由一個主节点和七个从节点构成。
连接时的节能状态有3种状态。
分别是等待、保持、呼吸状态。
目的是为了保证较低功率场合中蓝牙设备也能实现连接。
等待是指节点被按一定的时间间隔监听主节点的声音,主节点能够发出的声音信号有3种:一是询问该节点是否愿意成为活动节点;二是询问其他正在等的节点是否愿意成活的节点。
蓝牙的协议体系结构
蓝牙的协议体系结构Bluetooth 1.1技术规范要求会话中的每一台设备都需要确认其在主设备/辐设备关系中所扮演的角色。
此外,Bluetooth 技术本将2.4GHz 的频带划分为79 个子频段,而为了适应一些国家的军用需要Bluetooth 1.0重新定义了另一套子频段划分标准,将整个频带划分为23 个子频段,以避免使用2.4GHz 频段中指定的区域。
这造成了使用79 个子频段的设备与那些设计为使用23 个子频段的设备之间互不兼容。
Bluetooth 1.1标准取消了23子频段的副标准,所有的Bluetooth 1.1设备都使用79 个子频段在2.4GHz的频谱范围之内进行相互的通信。
具体蓝牙技术指标和系统参数见表2-1:表2-1 蓝牙技术指标和系统参数蓝牙支持点到点和点到多点的连接,可采用无线方式将若干蓝牙设备连成一个微微网(Piconet),多个微微网又可互连成特殊分散网,形成灵活的多重微微网的拓扑结构,从而实现各类设备之间的快速通信。
它能在一个微微网内寻址8个设备(实际上互联的设备数量是没有限制的,只不过在同一时刻只能激活8个,其中1个为主,7个为从)。
蓝牙协议体系结构采用分层方式,包括蓝牙专用协议和一些通用协议。
专用协议位于协议栈的底部,从底到上依次是蓝牙无线层(BluetoothRadio)、基带层(Base band)、LMP层(Link Manager Protocol)、L2CAP层(Logical link Control and Adaptation Protocol)、SDP层(Service Discovery Protocol)。
另外RFCOMM 层以ETSITS07.10为基础,目的是取代电缆连接;TCS(Telephony Control protocol Specification)以ITU-T的Q.931为基础,目的是进行呼叫控制。
在蓝牙专用协议之上可以承载PPP、TCP/IP、UDP/IP、WAP等通用高层协议。
蓝牙协议栈的原理和结构
蓝牙协议栈的原理和结构蓝牙,这个已经不是什么新鲜的技术了,相信大多数人都是了解的。
那么对于这方面,我们可以在嵌入式操作中进行一下实现。
在蓝牙系统中,为了支持不同应用,需要使用多个协议,这些协议按层次组合在一起,构成了蓝牙协议栈。
蓝牙协议栈是蓝牙技术的核心组成部分,它能使设备之间互相定位并建立连接,通过这个连接,设备间能通过各种各样的应用程序进行交互和数据交换。
1、蓝牙协议栈体系结构蓝牙协议栈体系结构为分层结构,具体如图所示蓝牙技术规范的目的是使符合该规范的各种应用之间能够实现互操作。
互操作的远端设备需要使用相同的协议栈,不同的应用需要不同的协议栈。
并不是任何应用都必须使用全部协议,而是可以只使用其中的一层或多层。
但是,所有的应用都要使用蓝牙技术规范中的数据链路层和物理层。
设计蓝牙协议栈的主要原则是尽可能地利用现有的各种高层协议,保证现有协议与蓝牙技术的融合以及各种应用之间的互通性以及充分利用兼容蓝牙技术规范的软硬件系统。
蓝牙技术规范的的开放性保证了设备制造商可自由地选用其专利协议或常用的公共协议,在蓝牙技术规范基础上开发新的应用。
蓝牙技术规范包括Core和Profiles两大部分。
Core是蓝牙的核心,主要定义蓝牙的技术细节;Profiles部分定义了在蓝牙的各种应用中的协议栈组成,并定义了相应的实现协议栈。
按照各层协议在整个蓝牙协议体系中所处的位置,蓝牙协议可分为底层协议、中间层协议和高层协议三大类。
2、蓝牙底层协议蓝牙底层协议实现蓝牙信息数据流的传输链路,是蓝牙协议体系的基础,它包括射频协议、基带协议和链路管理协议。
(1)射频协议(Radio Frequency Protoc01)蓝牙射频协议处于蓝牙协议栈的最底层,主要包括频段与信道安排、发射机特性和接收机特性等,用于规范物理层无线传输技术,实现空中数据的收发。
蓝牙工作在2.4GHz ISM 频段,此频段在大多数国家无须申须运营许可,使得蓝牙设备可工作于任何不同的地区。
Android蓝牙协议
Android蓝牙协议栈Android蓝牙协议栈使用的是BlueZ,支持GAP, SDP, and RFCOMM规范,是一个SIG认证的蓝牙协议栈。
Bluez 是GPL许可的,因此Android的框架内与用户空间的bluez代码通过D-BUS进程通讯进行交互,以避免专有代码。
Headset和Handsfree(v1.5)规范就在Android框架中实现的,它是跟Phone App紧密耦合的。
这些规范也是SIG认证的。
下面的图表提供了一个以库为导向的蓝牙栈视图。
实线框的是Android模块,红色虚线部分为合作伙伴指定模块(译者注:芯片商提供)。
下面的图表是以进程为导向视图:移植BlueZ是兼容蓝牙2.1的,可以工作在任何2.1芯片以及向后兼容的旧的蓝牙版本。
有要有两个方面:∙串口驱动 UART driver∙蓝牙电源开/关 Bluetooth Power On/Off串口驱动BlueZ核心子系统使用hciattach守护进程添加你的指定硬件串口驱动。
例如,MSM7201A,这个文件是在drivers/serial/msm_serial.c。
你还需要通过修改init.rc为hciattach来编辑命令行选项。
蓝牙电源开/关蓝牙芯片的电源开关方法1.0和Post 1.0是不同的,具体如下:∙ 1.0:Android框架写0或1到/sys/modules/board_[PLATFORM]/parameters/bluetooth_power_on∙Post 1.0:Android框架使用linux rfkill API,参考 arch/arm/mach-msm/board-trout-rfkill.c例子。
编译编译Android打开蓝牙支持,添加下面这行内容到BoardConfig.mk。
BOARD_HAVE_BLUETOOTH :=true解决问题调试调试你的蓝牙实现,可以通过读跟蓝牙相关的logs(adb logcat)和查找ERROR和警告消息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
、中间协议层
中间协议层的一系列协议构成了蓝牙协议体系: • 蓝牙协议体系中的协议按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(链路管理协议)层之间的一层协议。
3、电话控制协议
该协议又分为: • 1.二元电话控制协议(TCS-Binary 或TCS BIN) 该协议是面向比特的协议,它定义了蓝牙设备间建立语音 和数据呼叫的控制信令,定义了处理蓝牙TCS设备群的移 动管理进程。基于ITUTQ.931建议的TCS Binary被指定为 蓝牙的二元电话控制协议规范。 • 2.AT命令集电话控制协议 SIG定义了控制多用户模式下移动电话和调制解调器的AT 命令集,该AT命令集基于ITU TV.250建议和GSM07.07,它 还可以用于传真业务。
• 连接管理协议(LMP) 该协议负责各蓝牙设备间连接的建立。它通过连接的发 起、交换、核实,进行身份认证和加密,通过协商确定基 带数据分组大小。它还控制无线设备的电源模式和工作周 期,以及微微网内设备单元的连接状态。 • 逻辑链路控制和适配协议(L2CAP) L2CAP协议是一个为高层协议屏蔽基带协议的适配协议, 位于基带协议之上,属于数据链路层,为高层提供面向连 接和面向无连接的数据服务,完成协议复用、分段和重组、 服务质量QoS(Quality Of Service)传输以及组抽象等功能。 虽然基带协议提供了SCO和ACL两种连接类型,但L2CAP只 支持ACL。
4、选用协议
• 1.点对点协议(PPP) 在蓝牙技术中,PPP位于RFCOMM上层,完成点对点的连接。 • 2. TCP/UDP/IP 该协议是由互联网工程任务组制定,广泛应用于互联网通信的 协议。在蓝牙设备中,使用这些协议是为了与互联网相连接的 设备进行通信。 • 3.对象交换协议(OBEX) IrOBEX(简写为OBEX)是由红外数据协会(IrDA)制定的会话层 协议,采用简单的和自发的方式交换目标。OBEX是一种类似于 HTTP的协议,它假设传输层是可靠的,采用客户机/服务器模式, 独立于传输机制和传输应用程序接口(API)。 • 4.无线应用协议(WAP) 该协议是由无线应用协议论坛制定的,它融合了各种广域无线 网络技术,其目的是将互联网内容和电话传送的业务传送到数 字蜂窝电话和其他无线终端上。
常用应用模式
1.文件传输模式 文件传输模式提供两终端间的数据通信功能,可传输后 缀为.xls、.ppt、.wav、.jpg 和.doc的文件(但并不限 于这几种),以及完整的文件夹、目录或多媒体数据流 等,提供远端文件夹浏览功能。文件传输协议栈如图2所 示。
• • • • 蓝牙技术的系统结构分为三大部分: 1.底层硬件模块 2.中间协议层 3.高层应用
蓝牙协议栈体系结构示意图
一、底层硬件模块
底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理 (LM)。 • RF层 通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤 和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所 需要满足的条件。 • 基带 负责跳频以及蓝牙数据和信息帧的传输。 • 链路管理(LM) 负责连接、建立和拆除链路并进行安全控制。 链路为SCO同步话音链路与ACL 异步数据链路。 • 蓝牙的SIG规定了四种与硬件连接的物理总线方式:USB、RS232、 UART和PC卡
主机 其他高层协议 HCI驱动 物理总线(串口,USB等)驱动
物理总线
物理总线固件
HCI Firmware LM
RF
蓝牙控制器
模块及应用程序接口
1、核心协议
• 基 带 协 议 (BaseBand) <1> 基带和链路控制层确保各蓝牙设备之间的物理连接。 基带协议使用查询和分页进程同步不同设备间的发送频率 和时钟,为基带数据分组提供面向连接(SCO)和无连接 (ACL)两种物理连接方式,而且,同一射频上可实现多 路数据传送。ACL适用于数据分组,SCO适用于话音以及话 音与数据的组合,所有的话音和数据分组都进行前向纠错 (FEC)或循环冗余校验(CRC),且可加密。此外,对于 不同数据类型(包括连接管理信息和控制信息)都分配一 个特殊通道。 <2> 可使用各种用户模式在蓝牙设备间传送话音,面向连 接的话音分组只需经过基带传输,而不到达L2CAP。话音 模式在蓝牙系统内相对简单,只需开通话音连接就可传送 话音。
(5)蓝牙模块体积很小、便于集成。 (6)低功耗: 蓝牙设备在通信连接(Connection)状态下, 有四种工作模式:激活(Active)模式、呼吸(Sniff)模 式、保持(Hold)模式、休眠(Park)模式。Active 模式 是正常的工作状态,另外三种模式是为了节能所规定的低 功耗模式。 (7)开放的接口标准:SIG为了推广蓝牙技术的使用,将蓝 牙的技术标准全部公开,全世界范围内的任何单位和个人 都可以进行蓝牙产品的开发,只要最终通过SIG的蓝牙产品 兼容性测试,就可以推向市场。 (8)成本低:随着市场需求的扩大,各个供应商纷纷推出自 己的蓝牙芯片和模块,蓝牙产品价格飞速下降。
(1)协议复用:由于基带协议不能识别任何高层协议,所以L2CAP必须支 持上层协议复用,它能区分诸如服务发现协议、RFCOMM协议、电话控 制协议等高层协议。 (2)分段与重组:蓝牙基带协议数据包的大小是有限的。发送方需将较大 的L2CAP包必须分解成小的基带包来发送。在接收方,必须将多个基 带包重组为一个完整的L2CAP数据包。 (3)服务质量:在L2CAP建立连接的过程中允许改变两台蓝牙设备间的服 务质量,每个L2CAP实体必须监视协议使用的资源并保证服务质量的 实现。 (4)组管理:蓝牙的基带协议支持微微网, High Layer 即一组设备使用同一时钟同步跳频, request confirm response L2CAP协议的组提取功能可以有效地将 协议的组映射为基带的微微网,以避免 L2CAP 高层协议为了有效的管理组而必须与 response request confirm 基带协议以及链路管理器直接联系。
2、电缆替代协议(RFCOMM)
• RFCOMM是基于ETSI-07.10规范的串行线仿真协议。它在 蓝牙基带协议上仿真RS-232控制和数据信号,为使用串行 线传送机制的上层协议(如OBEX)提供服务。
• RFCOMM提供对RS-232串口的仿真,包括对数据信号线和非 数据信号线的仿真。它既可以仿真两个设备之间的多个串 口,也可以支持多个设备之问的多串口仿真,同时RFCOMM 中还提供了对空调制解调器的仿真。 1.RFCOMM对九针RS-232串口的仿真包括数据信号线和非 数据信号线。 2.多串口仿真 两个数据终端设备之间通过RFCOMM通信,可以打开多达60 个仿真串口,但是实际打开串口数还要视设备生产商的具 体实现以及实际需要而定。
Low Layer(BB or HCI)
• 服务发现协议(SDP) 服务发现在蓝牙技术框架中起着至关紧要的作用,它是所 有用户模式的基础。使用SDP可以查询到设备信息和服务 类型,从而在蓝牙设备间建立相应的连接。服务发现协议 由服务发现代理(SDA)、服务发现服务器(SDS)、服务 数据库管理器(SDM)三个模块组成。
HCI协议的作用
HCI协议提供了统一访问蓝牙控制器的能 力。主机控制器以HCI命令的形式提供了 访问蓝牙硬件的基带控制器、链路管理器、 硬件状态寄存器、控制寄存器以及事件寄 存器的能力,所有这些功能都要通过内置 于蓝牙硬件内部的HCI Firmware来实现。 主机通过HCI接口向主机控制器内的HCI Firmware发送HCI命令,HCI Firmware再 通过基带命令、链路管理器命令、硬件状 寄存器、控制寄存器以及事件寄存器完成 该HCI命令,从而实现对蓝牙硬件的控制。
蓝牙协议结构体系
三、高层应用
• 高层应用层具有一套框架,它在蓝牙协议栈的最上 部,其中较典型的有拨号网络、耳机、局域网访问、 文件传输等,它们分别对应一种应用模式。各种应 用程序可以通过各自对应的应用模式实现无线通信。 • 拨号网络应用可通过仿真串口访问微微网 (Piconet),数据设备也可由此接入传统的局域网; • 用户可以通过协议栈中的Audio(音频)层在手机和 耳塞中实现音频流的无线传输; • 多台PC或笔记本电脑之间不需要任何连线,就能快 速、灵活地进行文件传输和共享信息,多台设备也 可由此实现同步操作。
蓝牙技术的特点
蓝牙是一种短距无线通信的技术规范,它最初的目标是取代 现有的掌上电脑、移动电话等各种数字设备上的有线电缆连 接。 (1)全球范围适用:蓝牙工作在2.4GHz的 ISM频段,全球 大多数国家ISM频段的范围是2.4-2.4835GHz,使用该频段 无需向各国的无线电资源管理部门申请许可证。 (2)同时可传输语音和数据:蓝牙采用电路交换和分组交 换技术,支持异步数据信道、三路语音信道以及异步数据 与同步语音同时传输的信道。每个语音信道数据速率为 64kbit/s,语音信号编码采用脉冲编码调制(PCM)或连 续可变斜率增量调制(CVSD)方法。蓝牙有两种链路类型: 异步无连接(ACL)链路和同步面向连接(SCO)链路。
(3)可以建立临时性的对等连接: 根据蓝牙设备在网络中的角色,可分为主设备(Master) 与从设备(Slave)。主设备是组网连接主动发起连接请求 的蓝牙设备,几个蓝牙设备连接成一个皮网(Piconet)时, 其中只有一个主设备,其余的均为从设备。皮网是蓝牙最 基本的一种网络形式,最简单的皮网是一个主设备和一个 从设备组成的点对点的通信连接。 (4)具有很好的抗干扰能力:工作在ISM频段的无线电设 备有很多种,如家用微波炉、无线局域网(WLAN)Home RF 等产品,蓝牙采用跳频(Frequency Hopping)方式来扩展 频谱,将2.402~2.48GHz频段分成79个频点,相邻频点间 隔1MHz。抵抗来自这些设备的干扰。