(通信与信息系统专业论文)蓝牙协议栈的设计与实现.pdf_第1页
(通信与信息系统专业论文)蓝牙协议栈的设计与实现.pdf_第2页
(通信与信息系统专业论文)蓝牙协议栈的设计与实现.pdf_第3页
(通信与信息系统专业论文)蓝牙协议栈的设计与实现.pdf_第4页
(通信与信息系统专业论文)蓝牙协议栈的设计与实现.pdf_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 蓝牙技术是一种短距离、低功耗无线传输技术,主要用于解决便携式设备的 近距离无线互联,具有功耗小、成本低等优点,因此在日常生产和生活中得到了 广泛的应用。蓝牙协议栈是由蓝牙s i g 发布的全球统一的蓝牙应用协议规范,是 蓝牙应用的基础,主要包括设计准则和互操作准则两部分。 本文所要完成的工作是采用面向对象的方法设计和实现蓝牙协议栈。本文对 蓝牙协议栈中的h c i 协议、l 2 c a p 协议及r f c o m m 进行了分析,并讨论了这些 协议的面向对象设计和实现方法。h c i 协议是主机和主机控制器之问的通信协议, 提供了统一访问蓝牙主机控制器的能力。l 2 c a p 协议位于基带协议之上,为高层 提供面向连接和面向无连接的数掘服务,完成协议复用、分组分段和重装、服务 质量管理等功能。r f ( 的m m 协议提供了对r s 2 3 2 串口的仿真,使得传统的基于 串口的应用无需改变或只需要做出很小的改变即可使用蓝牙技术。在软件设计中 使用了若干g o f 设计模式,使得开发出的协议更易于使用和整合,同时针对这三 个协议开发出了协议的分析软件,用户使用该软件可以方便地向本地或远端蓝牙 设备发送数据和命令,且可以把本地或远端蓝牙设备返回事件的有关信息打印出 来,从而进一步缩短了蓝牙应用软件的开发周期。 关键词:蓝牙协议栈主机控制器接口串口仿真链路控制与适配 a b s t r a c t b l u e t o o t hi su s e di nw i r e l e s sc o n n e c t i o nf o rs h o r t 。d i s t a n c ew i t ht h ea d v a n t a g eo f l o wp o w e rc o n s u m p t i o na n dl o wc o s ta m o n gp o r t a b l ed e v i c e s b l u e t o o t hp r o t o c o l s p e c i f i c a t i o nr e l e a s e db yt h eb l u e t o o t hs i gi st h eb a s i sf o ri t sa p p l i c a t i o n sw h i c h i n c l u d e sg u i d e l i n e sa n di n t e r o p e r a b i l i t yc r i t e r i a t h em a i nw o r kf o rt h i sp a p e ri st od e v e l o pb l u e t o o t hp r o t o c o ls t a c kb y o b j e c t - o r i e n t e dm e t h o d s f i r s t , t h ep r o t o c o l so fh c ll 2 c a pa n dr f c o m ma r e a n a l y z e d t h e nt h ed e s i g na n di m p l e m e n t a t i o no ft h e s ep r o t o c o l sa r ed i s c u s s e d n e h c ip r o t o c o li st h ec o m m u n i c a t i o np r o t o c o lb e t w e e nt h eh o s ta n dh o s tc o n t r o l l e rt o p r o v i d eau n i f o r mm e t h o da c c e s s i n gb l u e t o o t hh o s tc o n t r o l l e rc a p a b i l i t i e s 1 1 1 el 2 c a p p r o t o c o li so nt h eu p p e rl a y e ro ft h eb a s e b a n dp r o t o c 0 1 i tp r o v i d e sd a t at r a n s m i s s i o n s e r v i c ef o rb o t hc o n n e c t i o n - o r i e n t e da n dc o n n e e t i o n l e s s - o r i e n t e d n el 2 c a pp r o t o c o l s u p p o r t sh i g h e rl e v e lp r o t o c o lm u l t i p l e x i n g , p a c k e ts e g m e n t a t i o na n dr e a s s e m b l ya n d t h ec o n v e y i n go fq u a l i t yo fs e r v i c ei n f o r m a t i o n n er f c o m m p r o t o c o lp r o v i d e s e m u l a t i o no fr s 一2 3 2s e r i a lp o r tf o rt r a d i t i o n a la p p l i c a t i o n sw i t h o u tc h a n g e so ro n l ya l i t t l e s e v e r a lg o fp a t t e r n sa r ea p p l i e dt om a k et h es o f t w a r ee a s yt ou s ea n di n t e g r a t e a n a l y s i ss o f t w a r eb a s e do nt h ea b o v et h r e ep r o t o c o l si sd e v e l o p e da sw e l l d a t aa n d c o m m a n d sc a nb es e n tt ol o c a lo rr e m o t eb l u e t o o t hd e v i c ee a s i l y n ei n f o r m a t i o n r e t u r n e df r o ml o c a lo rr e m o t eb l u e t o o t hd e v i c ec a na l s ob ep r i n t e do u tb yt h i s s o f t w a r e n ec y c l ef o rt h e d e v e l o p m e n to fb l u e t o o t ha p p l i c a t i o n 啪b er e d u c e d r e m a r k a b l yb ya p p l y i n gt h es o f t w a r ed e v e l o p e d i nt h i sp a p e r k e y w o r d s :b l u e t o o t hp r o t o c o ls t a c k h ar f c o m ml 2 c a p 独创性( 或创叛性) 声明 本人声明所呈交的论文是我个人在导师指导下进行的研究l :作及取得的研究 成果。尽我所知,除了文中特男t l d n 以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我同工作的同志对本研究所做 的任伺贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担切相关责任。 本人虢瘗磐 嗍迦u ! ! 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文 在解密后遵守此规定) 本学位论文属于保密,在一年解密后适用本授权书。 本人签名: 导师签名 痊熟 豳垒 日期:坦z :! :如 r 期:洳7 ;,哆 第一章绪论 第一章绪论 1 1 蓝牙技术的产生和发展 蓝牙是一种低功率、短距离无线连接技术标准的代称。蓝牙技术的最初倡导 者是五家世界著名的计箅机和通信公司:爱立信( e r i c s s o n ) 、国际商用机器( i b m ) 、 英特尔( i n t e l ) 、诺基亚( n o k i a ) 和东芝( t o s h i b a ) 。他们于1 9 9 8 年5 月成立 了蓝牙s i g ( b l u e t o o t hs p e c i a li n t e r e s tg r o u p ) t “,s i g 以蓝牙协议规范的形式向产 业界无偿转让该项专利技术,以实现其全球统一标准的目标。蓝牙协议规范包括 核心规范和应用框架两个文件口j 。核心规范提供设计标准,主要描述了射频、基带、 链路管理器、业务发现协议、传输层以及其他协议的互操作性等内容;应用框架 提供互操作性准则,主要描述了各种不同类型的蓝牙应用所要求的协议和过程。 从蓝牙技术提出到现在,蓝牙协议规范已经历了若干个版本。1 9 9 9 年7 月s i g 正式推出了蓝牙标准v 1 0 。2 0 0 1 年2 月,s i g 发布了蓝牙技术标准v 1 1 ,该版本 更新了旧版中存在的一些问题,同时对兼容性做了更高的要求。2 0 0 3 年1 1 月s i g 推出了蓝牙标准v 1 2 版。在v 1 2 版中采用了e s c o ( e x t e n d e ds y n c h r o n o u s c o n n e c t i o n o r i e n t e d l i n k s ) 技术以提高话音信号的传输质量。同时还采用 a f h ( a d a p t i v ef r e q u e n c yh o p p i n g ) 技术进一步减少蓝牙设备间以及蓝牙和其它无 线传输技术之间的干扰。2 0 0 4 年1 1 月,s i g 批准了蓝牙技术标准v 2 0 v 2 0 + e d r ( e n h a n c e dd a t ar a t e ) ,将蓝牙传输速率从1 m b p s 提高到3 m b p s 。新版标准进一步 地降低了功耗,同时完整地考虑了规范的后向兼容性。蓝牙传输速率的提高使得 个域网成为可能。目前单点的蓝牙应用所需的数据传输速率有限,如使用子带编 码s b c ( s u b b a n dc o d i n g ) 技术的蓝牙高品质音频传输所需的传输速率只有3 4 5 k b p s , 因此e d r 提高的额外传输能力使得同一时间一对多的通信成为可能。每一种新版 本的蓝牙协议都会带来蓝牙产品性能的提升,同时它们都具有良好的后向兼容特 性。 1 2 蓝牙技术的特点 蓝牙是一种开放的技术规范,它可在世界上任何地方实现短距离无线通信, 蓝牙的技术特点可归结为以下几点p j : ( 1 ) 全球范围适用。蓝牙工作在免费的2 4 g h z 的l s m ( i n d u s t r i a l ,s c i e n t i f i c a n dm e d i c a l ) 频段,使用该频段无需向各国的无线电资源管理部门申请许可证。 ( 2 ) 开放性。出s i g 制定的蓝牙通信规范完全是公开的。 ( 3 ) 蓝牙模块体积小、功耗低。蓝牙模块体积很小,可以方便地嵌入到各种 2 蓝牙协议栈的设计与实现 设备中。同时由于蓝牙通信距离较短( 一般为1 0 m ) ,因此功率消耗极低。 ( 4 ) 抗干扰能力强。由于蓝牙系统采用g f s k 调制,同时应用快跳频和短包 技术,因此抗信号衰落性能较好,还可以减少同频干扰,保证传输的可靠性。 ( 5 ) 可以同时传输语音和数据。蓝牙采用分组交换和电路交换相结合技术, 可以支持异步数据信道、三路语音信道以及异步数据与同步语音数据同时传输的 信道。 ( 6 ) 可以建立临时性的埘等连接。根掘蓝牙设备在网络中所处的角色可以分 为主设备和从设备,几个蓝牙设备可连接成为一个微微网( p i c o n e t ) 。 1 3 课题背景及相关工作 蓝牙协议规范是蓝牙技术研究的核心内容,是蓝牙产品开发的基础。自从蓝 牙协议规范发布以柬,市面上出现了许多免费或收费的协议栈产品,如东芝协议 栈、b l u e s t a c k 协议栈、b t s w s 协议栈等。为了保证协议栈的可移植性,它们大都 聚用c 语言实现,接口相对较复杂。用户使用这些协议栈产品开发蓝牙产品时不 仅要研究蓝牙协议的相关知识,而且还要花时间去熟悉这些协议栈产品的使用方 法,因此增加了蓝牙应用产品的开发周期。 现代软件工程的发展为我们提供了面向对象( o b j c c to r i e n t e d ) 的软件开发方 法,它是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重 构软件的方法。使用面向对象方法设计的软件易于阅读和使用,同时还降低了各 组件之间的耦合度,提高了软件的可复用性1 4 j 。另外,o o f ( g a n go ff o u r ) 设计 模式的出现更增强了软件的可复用性。设计模式是一套被反复使用、经过分类编 目的代码设计经验的总结例。使用设计模式是为了提高代码可重用性和可靠性,让 代码更容易被他人阅读和理解。由于面向对象的软件开发方法可以提供如此多的 益处,因此采用面向对象的软件开发方法开发出一套易于使用的蓝牙协议栈产品, 可以有效的缩短二次开发的周期。 本课题在深入理解蓝牙核心协议规范的基础之上,基于英国c s r 公司 b l u e c o r e 4 开发板开发了蓝牙h c i ( h o s tc o n t r o l l e ri n t e r f a c e ) 协议、l 2 c a p ( 1 0 9 i c a l l i n kc o n t r o la n da d a p t a t i o n ) 协议以及r f c o m m ( r a d i of r e q u e n c yc o m m u n i c a t i o n ) 协议的软件实体。在开发的过程之中采用面向对象的软件开发方法并使用c + + 语言 来实现,同时使用若干g o f 设计模式以减少各协议组件之间的耦合性,并提升软件 实体对于协议栈版本变更的适应能力。在此基础之上,使用上面开发的协议实体 构建了一个学习和测试蓝牙协议的软件平台蓝牙测试软件。用户使用该软件 可以方便地向本地或远端蓝牙设备发送命令,且可以把本地或远端蓝牙设备返回 事件的有关信息打印出来,从而既可以有效地加快蓝牙协议的学习速度,又可以 第一章绪论 3 发现开发中的一些错误。根据蓝牙技术的应用特点,在开发协议栈的过程中充分 考虑了协议栈软件实体在不同平台间移植的可能性。 本论文共包括五个部分。第一部分主要是从整体上介绍蓝牙技术的发展状况、 蓝牙技术的特点以及本课题提出的原因和相关背景。第二部分主要介绍蓝牙协议 栈的相关知识。首先从整体上介绍蓝牙协议栈体系结构,然后对本论文工作要完 成的三个协议h c i 协议、l 2 c a p 协议和r f c o m m 协议进行详细地分析。第 三部分主要分析h c i 、l 2 c a p 、r f c o m m 协议软件实体面向对象的设计和实现。 对于每一层协议都给出设计的类图及各类在系统中所起的作用,同时讨论了协议 中各类的实体之间交互的时序图。第四部分介绍蓝牙测试软件的设计和实现,给 出了本论文工作的成果,同时对工作成果进行了测试并给出了相关的测试结果。 第五部分总结论文工作成果并指明存在的不足及下一步发展的方向。 4 蓝牙协议栈的设计与实现 第二章蓝牙协议栈 2 1 蓝牙核心协议体系结构 蓝牙是无线通信协议的标准,它规定了蓝牙应用产品的软硬件资源应遵循的标 准和需要达到的要求。到目前为止,s i g 已经颁白了1 0 、i i 、1 2 及2 0 四个版本, 本文的工作是根掘目自仃最新版本的v 2 0 协议进行的。蓝牙协议规范遵循丌放系统 互连参考模型,从低到高定义了蓝牙协议栈的各个层次。蓝牙协议栈的体系结构 如图2 1 【6 】所示: w a e w a p 。u d pt c p1斫一 。o b e xl i p 一一jl q 啦哟鲥l t c s b i n 一。s d p j i 阡p 一- j 一, j 一r f c o m m 一l a u d i o j f 一一一1 泵撕 二二:二二二一苴匿二二二一二二二一:一一 至吧: r 一一一一b a s e b a s e & l i n l c o n t r o l l e r 一一1 。一一一b l u e t :0 0 t hr a d i o 1 图2 1 蓝牙协议体系结构 蓝牙s i g 给出的蓝牙协议栈体系结构中包含协议数量较多,本文主要选取了 三个应用比较广泛的协议h c i 、l 2 0 心及r f c o m m 协议。通过对这些协议进 行分析,给出一种采用愿向对象技术实现蓝牙协议的方法,并在此基础之上建立 一个蓝牙协议测试和学习的平台。本章主要介绍h c i 协议、l 2 c a p 协议和 r f c o m m 协议的相关知识,蓝牙测试软件将在第四章进行详细地讨论。其它协议 的相关知识可以参考文献【6 】。 2 2h c i 协议 蓝牙作为一种短距离的无线传输技术,为设备之间的互联提供了方便。使用 蓝牙设备的大都是“智能主机”,他们都具有处理器、总线和操作系统,蓝牙必须与 它们有机地融合在一起才能发挥作用。因此,蓝牙设备和“智能主机”之间必须要有 一个接口规范才能使它们可以相互通信,这个接口规范就是h c i 协议。本节主要 讨论h c i 协议的作用、h c i 命令和事件以及h c i 协议层分组格式等内容。 第二章蓝牙协议栈 5 2 2 1h c i 协议作用 h c i 协议提供了统一访问蓝牙控制器的能力。主机控制器以h c i 命令的形式 提供了访问蓝牙硬件的基带控制器、链路管理器、硬件状态寄存器、控制寄存器 以及事件寄存器的能力,所有这些功能都要通过内置于蓝牙硬件内部的h c i 固件 柬实现。由图2 2 1 6 1 k j 见,主机通过h c i 接口向主机控制器内的h c i 固件发送h c i 命令,h c i 固件再通过基带命令、链路管理器命令、硬件状寄存器、控制寄存器 以及事件寄存器完成该h c i 命令,从而实现对蓝牙硬件的控制。 主机 具他高层协议 ? h c i 驱动 ? 物理总线( 串l l 、u s b 等) 驱动l j i 物理总绻 物趔掣同件 h c l 固件 il 链路管垂器固件 基带控制器 蓝牙控制器 图2 2 主机和主机控制器之间的通信 在主机的h c i 驱动器和蓝牙硬件设备之间还可能存在若干中间层,这些中间 层称为控制器传输层,提供了主机和控制器之间传输数据的通路。图2 3 是两个蓝 牙主机之间实现端到端通信的示意 g l l 6 1 。 i 一l 其他高层 l 基带拧制器ll 基带控制器l 其他高层 协议1 丰一1 广1 广协议 l _ l l 一j l l h c i 驱动 尊斟掣l 粤掣 h a 驱动 物理层驱 篷叮丽闻高赢碍 物理层驱 动,il p j l n j ,i 动 圈圈回 图2 3 两个蓝牙主机间端到端通信 6 蓝牙协议栈的设计与实现 图2 3 显示了数据从一台主机到另一台主机的传输路径。主机通过h c i 驱动 器向蓝牙硬件设备的h c i 固件发送数据和命令,主机控制器则通过同步的h c i 事 件把设备上发生的事件通知主机,这个过程对于主机控制器传输层来说是独立的, 即不管采用的是何种类型的主机控制器传输层,主机接收事件的类型和内容都是 一样的。 2 2 2h c l 命令和事件 主机控制器和主机之i b j 的通信是通过h c i 命令和h c i 事件来完成的。由于主 机控制器完成不同的h c i 命令花费的时日j 是不同的,因此控制器把命令执行的结 果通过h c i 事件的形式通知主机。例如对于大部分的h c i 命令,当命令完成时控 制器都会生成一个命令完成事件,这个事件中包含该命令返回的参数。本节主要 讨论h c i 命令和事件。 1 h c i 命令 在主机和控制器之间传输的命令按照逻辑功能可以分为6 个组,并用命令分组 中的o g f ( o p c o d eg r o u pf i e l d ) 字段来标示命令所属的组。h c i 命令的分组情况 以及各组命令的逻辑功能如表2 1 【6 l 所示: 表2 1h c i 命令分组情况 命令分组0 ( 3 f 值作用 链路控制命令o x 0 1控制主机控制器同其它设备的连接。 链路策略命令0 x 0 2主机可以通过这些命令改变控制器的链路 管理器管理微微网的方式。 控制器和基带命令 o x 0 3 用于访问和控制蓝牙硬件设备。 信息参数命令 0 x 0 4 用于发现本地设备的相关信息参数。 状态参数命令 0 x 0 5 用于主机读取主机控制器的状态参数。 测试命令0 x 0 6用于蓝牙设备的功能测试。 2 h c i 事件 主机控制器到主机方向信息的传递主要是通过h c i 事件来完成的。当主机控 制器中有事件发生时,主机控制器通过相应的h c i 事件通知主机,主机必须具有 接受2 5 5 字节的h c i 事件分组的能力( 其中包括h c i 事件头) 。h c i 事件可以分为 两种类型: ( 1 ) h c i 通用事件:包括命令完成事件、命令状态事件和硬件错误事件。许 多h c i 命令都会引发h c i 通用事件。 ( 2 ) h c i 专用事件:有些h c i 命令执行时会产生一些特殊事件,如查询命 令执行过程中会产生查询结果事件等。 第二章蓝牙协议栈 3 对事件和命令分组格式的相关规定 对于h c i 命令和事件分组格式,在蓝牙协议栈中还有一些特殊的规定,总结 起来有以下几个方面: ( 1 ) 所有值都用二进制小端格式表示,除非特别声明: ( 2 ) 所有参数都可以有负值,但必须用二进制补码表示; ( 3 ) 对于数组参数,数组中各元素并列放置; ( 4 ) 所有参数的发送和接收顺序都是小端顺序,除非特别声明。 2 2 3h c i 协议层分组格式 1 h c i 命令分组的格式 h c i 命令分组的格式如图2 4 1 6 i 所示: o81 62 43 1 o p c o d e p a r a m e t e r p a r a m e t e r0 o c fo g f t o t a li _ g t h p a r a m e t e r1p a r a m e t e r p a r a m e t e rn 1p a r a m e t e rn 图2 4h c i 命令分组的格式 分组中各区域的作用如表2 2 1 6 所示: 表2 2h c l 命令分组参数说明 参数说明 o p c o d e 标识一个h a 命令,其中低9 位为o c f 用于标示一个h c i 命令, 高6 位为o g f 用于标示该命令所属的命令组。 p a r a m e t e r t o t a lk g t h表示分组携带参数按照字节计算的长度,不包括命令分组头。 p a r a m e t e r0 - n h c i 协议中指定了每一个命令所带的参数以及每个参数的大小。 2 h c i 事件分组的格式 h c i 事件分组的格式如图2 5 1 6 1 所示: 图2 5h c i 事件分组的格式 分组中各区域的作用如表2 3 所示: 8 蓝牙协议栈的设计与实现 表2 3h c i 命令分组参数说明 参数说明 e v e n t c o d e 每一个h c i 事件都被分配一个1 字节的事件码用丁标识该事 f , ,主机使川事什码区分不同事件。 p a r a m e t e rt o t a ll e n g t h表示分组携带参数按照字竹计算的k 度,不包括事f j | 分组头。 p a r a m e t e r0 n 每一个h c i 事件都有指定数茸的参数,h c i 协议中指定r 每 一个事干1 所带的参数以及每个参数的人小。 3 数据分组格式 在主机和控制器之日j 数据的交换是通过数据分组进行的,数据分组可以分为 异步的面向无连接的数据分组a c l ( a s y n c h r o n o u sc o n n e c t i o n l e s s o r i e n t e d ) 分组和同步的面向连接的数据分组s c 0 ( s y n c h r o n o u s c o n n e c t i o n o r i e n t e d ) 分 组,两种分组的格式如下所述。 ( 1 ) a c l 数据分组格式 a c l 数据分组用于主机和控制器之间交换异步无连接的数据,a c l 数据分组 格式如图2 6 1 6 1 所示: 图2 6a c l 数据分组格式 a c l 数据分组中各参数说明如表2 4 所示: 表2 4a c l 数据分组各参数说明 参数说明 c o n n e c t i o nh a n d l e 长度为1 2 b i t ,用于标示分组所属的a c l j 至接。 p b用于表明该分组是高层消息的第一个分组或接续分段。 b c 用于标示分组传播方式是点到点、活动节点广播或微微网广播。 d a t at o t a ll e n g t h 数据分组携带数据总长度,不包括分组头。 ( 2 ) s c o 数据分组格式 图2 7s c o 数据分组格式 s c o 数据分组用于主机和主机控制器之间交换面向连接的同步数据,s c o 数据 第二章蓝牙协议栈 9 分组格式如图2 7 【6 j 所示,分组中各参数说明如表2 5 所示; 表2 5s c o 数据分组各参数说明 参数说明 c o n n e c t i o nh a n d l ek 度为1 2 b i t ,刚于标示分组所属的s c o 连接。 d a t at o t a ll e n g t h 数据分组携带数据总妖度,不包括分组头。 2 2 4 h c i 流控 h c i 流控主要用于避免主机或主机控制器的缓冲区发生溢出,它包括主机到 主机控制器方向的流控和主机控制器到主机方向的流控。 1 主机到主机控制器方向的流控 在发送时,主机会先把数据发送到数据缓冲区,主机到控制器方向的流控是 为了避免主机发送数掘较快而导致控制器数掘缓冲区溢出,也就是说主机要对控 制器的数据缓冲区进行管理,防止缓冲区溢出。 2 主机控制器到主机方向的流控 在特殊情况下,控制器到主机方向的流控也是必须的,使用“设置控制器到主 机方向的流控”命令可以打开或关闭该方向的流控。如果流控处于打开状念,初始 化时主机使用“主机缓冲区大小”命令通知控制器主机可以处理的a c l 和s c o 数据 分组的大小以及可以等待处理的a c l 和s c o 分组数目。 2 3l 2 c a p 协议 l 2 c a p 协议是一个为高层协议屏蔽基带协议的适配协议,位于基带协议之上, 属于数据链路层,为高层提供面向连接和面向无连接的数据服务,完成协议复用、 分段和重组、服务质i q o s ( q u a l i t yo f s e r v i c e ) 传输以及组抽象等功能。本节主要 分析1 2 c a p 协议的功能及分组格式等内容。 2 3 1l 2 c a p 协议功能 l 2 c a p 协议即逻辑链路控制和适配协议,可以向上层提供面向连接和面向无 连接的数据服务,它的功能有以下几点1 1 】: ( 1 ) 协议复用:多个高层协议共享一个公共的物理连接,从逻辑上看每个协 议都有自己独立的数据通道,但由于基带协议不能识别任何高层协议,所以1 2 c a p 必须支持上层协议复用,它能区分诸如服务发现协议、r f ( 1 0 m m 协议、电话控制 协议等高层协议。 ( 2 ) 分段与重组:与有线的物理媒质相比,蓝牙基带协议数据包的大小是有 限的。最大的基带包只能传输3 4 1 字节的信息,这就限制了高层协议带宽的有效 1 0 蓝牙协议栈的设计与实现 使用,因此较大的【2 c a p 包必须分解成小的基带包来发送。同样,在接收方,必 须将多个基带包重组为一个完整的l 2 c a _ p 数据包。 ( 3 ) 服务质量:在l 2 c a p 建立连接的过程中允许改变两台蓝牙设备间的服 务质量,每个l 2 c a p 实体必须监视协议使用的资源并保证服务质量的实现。 ( 4 ) 组管理:蓝牙的基带协议支持微微网,即一组设备使用同一时钟同步跳 频,l 2 c a p 协议的组提取功能可以有效地将协议的组映射为基带的微微网,以避 免高层协议为了有效的管理组而必须与基带协议以及链路管理器直接联系。 2 3 2l 2 c a p 层层问操作 层问操作是指l 2 c a p 协议与上、下层之b j 的通信操作,l 2 c a p 是通过请求 ( r e q u e s t ) 、指示( i n d i c a t i o n ) 、响应( r e s p o n s e ) 和确认( c o n f i r m ) 来完成对一 条请求的处理,层问操作如图2 8 1 6 1 所示: h j g l il a y e r f r u e s t | ll l c o n f i r m r e s p o n s e 川i n d i “7l j l 2 c a p 业琏竺一一r o - - j l l l “ low l a y e r ( b bo rn c l ) 图2 8l 2 c a p 的层阃操作 两台蓝牙设备通过l 2 c a p 协议通信时,对等层之间信息的交换是通过l 2 c a p 信令来进行的,所有信令都是通过l 2 c a p 信令信道( c i d 为o x 0 1 ) 传输的,只要 a c l 链路存在,信令信道就是可用的。l 2 c a p 信令的格式如图2 9 f l l 所示: l s b 图2 9l 2 c a p 信令的格式 信令分组中各参数的作用如表2 6 所示: 第二章蓝牙协议栈 表2 6l 2 c a p 信令分组中各参数说明 参数说明 c o d e 长度为1 字节,用丁标示一个信令。 i d e n t i f i e r 长度为1 字节,响应端使朋该字段匹配请求端的请求。 l e n g t h k 度为2 字节,表明其后携带参数的总k 度( 单位为字符) 。 d 蚪j 二4 信令中携带的参数。 另外多个信令也可以在一个帧中发送,任何l 2 a ”层的实现必须能够处理一 帧中有多个信令的情况。在l 2 c a p 协议中共有1 2 个信令,各信令的作用如表2 7 所示: 表2 7l 2 c a p 信令 信令信令码作用 命令拒绝信令o x 0 1当节点收到朱知信令码或不适合发送响应的信令时,必 须发送一个命令拒绝分组。 连接请求信令 0 x 0 2 在两个设备之间建立一条l 2 c a p 信道。 连接响应信令 0 x 0 3 对连接请求分组进行响应。 配置请求信令0 x 0 4对逻辑信道参数进行协商。 配置响应信令 0 x 0 5 对配置请求分组进行响应。 断开连接请求信令 0 x 0 6 终止一条l 2 c a p 连接。 断开连接响应信令 0 x 0 7 对断开连接请求分组进行响应。 掌 回送请求信令 0 x 0 8 请求远端的l 2 c a p 实体向本地回送一个响应。 回送响应信令 0 x 0 9 对回送请求信令进行响应。 信息请求信令 0 x o a 从远端l 2 c a p 实体中获得具体的实现方面的信息。 信息响应信令 0 x o b 对信息请求分组进行响应。 2 3 4l 2 c a p 数据包格式 l 2 c a p 是基于分组传输的,但是它遵循信道传输的通信模型。一条信道代表 一对本地和远程设备l 2 c a p 实体间的数据流。l 2 c a p 支持的信道有两种:面向连 接的信道和面向无连接的信道。 1 面向连接的信道 面向连接的l 2 c a p 分组的格式如图2 1 0 1 1 1 所示: l 2 c a p 包头 l s b 嚅 l e n 竽t h 票c i d i d a t a s b 图2 1 0l 2 c a p 面向连接的信道数据包格式 蓝牙协议栈的设计与实现 分组中各参数说明如表2 8 所示: 表2 8 面向连接的l 2 c a p 分组参数说明 参数说明 l e n g t h 2 个字饥用丁表明除了l 2 c a p 包头以外的有效载荷的人小。 c m2 个字饥i 】丁标示目的信道的终端。 d 钮a 在面向连接的信道中,信遵支持的最小m t u ( m a x i m u m t r a n s m i s s i o nu n i t ) 是在信道配置的时候协商得剑的。l 2 c a p 信令 也采取这种格式,在传输信令时,支持的m t u 最小为4 8 字节。 2 面向无连接的信道 l 2 c a p 支持组传播的概念,这是通过无连接的数据信道实现的,无连接分组 的格式如图2 1 1 川所示: l s b 1 61 6 m s b 图2 1 1l 2 c a p 面向无连接分组的格式 各参数说明如表2 9 所示( 其中p s m 为p r o t o c o l s e r v i c em u l t i p l e x o r 缩写) : 表2 9 面向无连接的l 2 c a p 分组参数说明 参数说明 l e n g t h 2 个字节,用于表明有效载荷与p s m 字段的长度和( 不包括l 2 c a p 数据包头) ,单位是字节。 2 个字节,用于标示一条逻辑信道。 p s m 2 个字节,p s m 段以地址段i s o3 3 0 9 扩展机制为基础。p s m 值的 最低字节的最低位必须为1 ,而且所有p s m 值的最高字节的最高位 应等于一0 。这样,p s m 段就可以扩充到1 6 位以上。 d t a在无连接的道中,信道必须支持的最小无连接m t u 为6 7 0 字节。 2 3 5l 2 c a p 层信道的配置 l 2 c a p 层的信道在使用之前必须先要进行配置。总体上来说,信道配置请求 只是请求方发送给接收方的一个指示,用来告诉接收方本地可以从接收方接收的 数据流的配置信息。如果接收方不满意这些信息,它可以使用配置响应把所希望 的配置信息告诉请求方。 1 配置参数 发送方发送配置请求时,请求命令中包含了配置选项参数。可包含的配置选 第二章蓝牙协议栈 项参数及各参数的意义如下: ( 1 ) 最大传输单元( m t u ) :请求方所能接受的l 2 c a p 分组的最大尺寸。 ( 2 ) 刷新超时( f l u s h t o ) :请求方输出流的刷新超时时间,由底层实现。 ( 3 ) 服务质量( q o s ) :表明请求方对数据可靠性的要求也由底层实现。 2 配置过程 信道参数的协商过程包括以下3 个步骤: ( 1 ) 本地节点通知远端节点本地认可的非缺省的参数; ( 2 ) 远端节点使用配置响应进行回应,表示接受或不接受这些参数,还包括 缺省的参数。如果需要,双方可以重复第一步和第二步; ( 3 ) 在相反的方向上重复第一步和第二步。 2 3 6l 2 c a p 协议状念机 网络协议的实现离不开状态机,因此分析l 2 c a p 协议状态机具有重要意义。 l 2 c a p 在运行过程中可以处于六个不同的状态:c l o s e d 状态、w a i tc o n n e c t 状态、w a i t _ c o n n e c t _ r s p 状态、c o n h g 状态、o p e n 状态和 w a i td i s c o n n e c t 状态,分别说明如下: ( 1 ) c l o s e d 状态:信道未连接时的状态。在该状态下i - 2 c a p 实体能够处 理的事件有来自下层的连接指示、配置指示和断开连接指示以及来自上层的连接 请求。状态转移表参见参考文献【6 】。 ( 2 ) w a i t _ c o n n e c t _ r s p 状态:l 2 c a p 实体己发送了连接请求,正在等 待连接响应时的状态。在该状态下l 2 c a p 实体能够处理的事件有来自下层的连接 确认和配置指示。状态转移表参见参考文献【6 】。 ( 3 ) w a r tc o n n e c t 状态:l 2 c a p 实体已接收到了连接指示,并已发送了 指示连接挂起的连接响应,正在等待上层进行连接响应时的状态。在该状态下 l 2 c a p 实体只能够处理连接响应事件,其他事件可以忽略掉。状态转移表见参考 文献【6 】。 ( 4 ) c o n f i g 状态:配置信道时的状态。由于通信的两终端均要配置信道, 因此该状态相对于其他状态来说稍显复杂。该状态可以划分为5 4 子状态: w a i t _ c o n f i g 子状态、w a i t _ s e n d _ c o n f i g 子状态、w a i t _ c o n f i g _ r e q _ r s p 子状态、w a i t _ c o n f i g _ r s p 子状态和w a i t _ c o n h g _ r e q 子状态。各子状态的 定义及状态转移表参见参考文献【6 】。 ( 5 ) o p e n 状态:用户数据正常传输时的状态。此状态下两通信终端进行正 常的数据通信,可以处理的事件有来自上层的发送数据请求、重新配置信道请求 和断开连接请求,以及来自于下层的重新配置信道指示、断开连接指示和数据接 1 4 蓝牙协议栈的设计与实现 收指示。状态转移表参见参考文献【6 】。 ( 6 ) w a l t _ d i s c o n n e c r 状态:已经发送了断开连接请求,等待接收断开连 接确认时的状态。此状态下只能处理来自于下层的断开连接指示、断歼连接响应 以及断开连接确认。状态转移表参见参考文献【6 】。 蓝牙的底层提供了无线的连接方式,但是在此之前已经存在许多传统的基于 有线电缆的应用,因此蓝牙要被广泛的应用必须要解决对传统协议的适配问题。 替代电缆是蓝牙技术的一种重要应用,针对此类应用s i g 发布了一种专门用于串 口仿真的协议即r f c o m m 协议。它提供了建立在l 2 c a p 协议之上的虚拟r s 一2 3 2 串口,为高层应用提供了接口,使得一些现存的基于串口的应用不需修改或只需 稍微做出修改就可以使用蓝牙提供的无线链路来传输数据。r f c o m m 协议采用了 t s 0 7 1 0 标准【7 l 的一个子集,并针对蓝牙的实际应用作了部分修改。 2 4 1r f c o m m 参考模型和设备类型 图2 1 2 8 】给出了实际设备中的一个r f c o m m 参考模型: 图2 1 2r f c z ) m m 参考模型 实际应用中,r f c o m m 支持两种类型的设备,分别对应串行通信中的数据终 端设备d t e ( d a t at e r m i n a le q u i p m e n t ) 和数据通信设备d c e ( d a t a c o m m u n i c a t i o ne q u i p m e n t ) 【御。d t e 本身具有完整的蓝牙软硬件资源,包括计算 机和打印机等外围设备,是数据通信的发起端和响应端;d c e 为调制解调器之类 的设备,起到连接不同通信媒质的作用,负责普通数据和r f c o m m 数据格式之间 的相互转换。r f c o m m 在实际中并不区分这两种设备。在实际应用的大多数系统 中,r f c o m m 作为端口驱动程序的一部分出现,该端口驱动程序包含一个端口仿 真实体。 第二章蓝牙协议栈 在此模型中端口仿真实体指的是一个特定的系统对应的r f c o m m 服务通信 接口,端口仿真实体和r f c o m m 共同构成了一个端口驱动器。对于d c e 设备来 说,端口仿真实体也被称为端口代理实体。端口代理实体将r f c o m m 的数据转发 给连接到d c e 设备的一个外部的r s 2 3 2 接口,该r s 2 3 2 接口的通信参数设置要 按照收到的r p n ( r e m o t ep o r tn e g o t i a t i o n ) 命令来设置。 2 4 2r f c o m m 协议功能 r f c o m m 提供对r s 一2 3 2 串口的仿真,包括对数据信号线和非数据信号线的 仿真。它既可以仿真两个设备之闽的多个串口,也可以支持多个设备之问的多串 口仿真,同时r f c o m m 中还提供了对空调制解调器的仿真。 1 r f c o m m 对九针r s 2 3 2 串口的仿真 r f c o m m 提供了对九针r s 2 3 2 串口的仿真,包括数据信号线和非数据信号 线,仿真电路参见参考文献【8 】。 2 r f c o m m 对空调制解调器的仿真 空调制解调器是计算机通信网络中的一种模拟的调制解调器,本地计算机可 以使用它和周围需要调制解调器的外设相连。在传输控制信号时,这些控制信号j 包含在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论