提到协议栈,都会想到与开放式系统互联(OSI)协议栈的 ,OSI协议栈定义了厂商们如何才能生产可以与其它厂商的产品一起工作的产品。协议栈是指一组协议的集合,举个例子,把大象装到冰箱里,总共要3步。每步就是一个协议,3步组成一个协议栈。把应用层数据包发出去,也要好几步,TCP/UDP头,IP头,ether头,每步也是一个协议。另外每层都有一些特殊的协议。所有这些统称协议栈。
蓝牙,这个已经不是什么新鲜的技术了,相信大多数人都是了解的。那么对于这方面,我们可以在嵌入式操作中进行一下实现。在蓝牙系统中,为了支持不同应用,需要使用多个协议,这些协议按层次组合在一起,构成了蓝牙协议栈.蓝牙协议栈是蓝牙技术的核心组成部分,它能使设备之间互相定位并建立连接,通过这个连接,设备间能通过各种各样的应用程序进行交互和数据交换.
1、蓝牙协议栈体系结构
蓝牙协议栈体系结构为分层结构,具体如图所示
蓝牙技术规范的目的是使符合该规范的各种应用之间能够实现互操作.互操作的远端设备需要使用相同的协议栈,不同的应用需要不同的协议栈.并不是任何应用都必须使用全部协议,而是可以只使用其中的一层或多层.但是,所有的应用都要使用蓝牙技术规范中的数据链路层和物理层.
设计蓝牙协议栈的主要原则是尽可能地利用现有的各种高层协议,保证现有协议与蓝牙技术的融合以及各种应用之间的互通性以及充分利用兼容蓝牙技术规范的软硬件系统.蓝牙技术规范的的开放性保证了设备制造商可自由地选用其专利协议或常用的公共协议,在蓝牙技术规范基础上开发新的应用.蓝牙技术规范包括Core和Profiles两大部分.Core是蓝牙的核心,主要定义蓝牙的技术细节;Profiles部分定义了在蓝牙的各种应用中的协议栈组成,并定义了相应的实现协议栈.
按照各层协议在整个蓝牙协议体系中所处的位置,蓝牙协议可分为底层协议、中间层协议和高层协议三大类.
2、蓝牙底层协议
蓝牙底层协议实现蓝牙信息数据流的传输链路,是蓝牙协议体系的基础,它包括射频协议、基带协议和链路管理协议.
(1)射频协议(Radio Frequency Protoc01)
蓝牙射频协议处于蓝牙协议栈的最底层,主要包括频段与信道安排、发射机特性和接收机特性等,用于规范物理层无线传输技术,实现空中数据的收发.蓝牙工作在2.4GHz ISM频段,此频段在大多数国家无须申须运营许可,使得蓝牙设备可工作于任何不同的地区.
信道安排上,系统采用跳频扩频技术,抗干扰能力强、保密性好.蓝牙SIG制定了两套跳频方案,其一是分配79个跳频信道,每个频道的带宽为1MHz,其二是23信道的分配方案,1.2版本以后的蓝牙规范目前已经不再推荐使用第二套方案.
(2)基带协{,S((Base Band Protoc01)
基带层在蓝牙协议栈中位于蓝牙射频层之上,同射频层一起构成了蓝牙的物理层.
基带层的主要功能包括:链路控制,比如承载链路连接和功率控制这类链路级路由;管理物理链路,SCO链路和ACL链路;定义基带分组格式和分组类型,其中SCO分组有HVl、HV2、HV3和DV等类型,而ACL分组有DMl、DHl、DM3、DH3、DM5、DH5、AUXl等类型;流量控制,通过STOP和GO指令来实现;采用13比例前向纠错码、23比例前向纠错码以及数据的自动重复请求ARQ(Automatic Repeat Request)方案实现纠错功能;另外还有处理数据包、寻呼、查询接入和查询蓝牙设备等功能.
(3)链路管理协议(Link Manager Protocol,LMP)
链路管理协议(LMP)是在蓝牙协议栈中的一个数据链路层协议.LMP执行链路设置、认证、链路配置和其它协议:链路管理器发现其它远程链路管理器(LM)并与它们通过链路管理协议(LMP)进行通信.
3、蓝牙中间层协议
蓝牙中间层协议完成数据帧的分解与重组、服务质量控制、组提取等功能,为上层应用提供服务,并提供与底层协议的接口,此部分包括主机控制器接口协议、逻辑链路控制与适配协议、串口仿真协议、电话控制协议和服务发现协议.
(1)主机控制器接口协议(Host Controller Interface Protocol,HCI)
蓝牙HCI是位于蓝牙系统的逻辑链路控制与适配协议层和链路管理协议层之间的一层协议.HCI为上层协议提供了进入链路管理器的统一接口和进入基带的统一方式.在HCI的主机和HCI主机控制器之间会存在若干传输层,这些传输层是透明的,只需完成传输数据的任务,不必清楚数据的具体格式.蓝牙的SIG规定了四种与硬件连接的物理总线方式,即四种HCI传输层:USB、RS232、UART和PC卡
(2)逻辑链路控制与适配协议(Logical Link Control and AdaptationProtocol,L2CAP)
逻辑链路控制与适配层协议(L2CAP)是蓝牙系统中的核心协议,它是基带的高层协议,可以认为它与链路管理协议(LMP)并行工作.L2CAP为高层提供数据服务,允许高层和应用层协议收发大小为64 KB的L2CAP数据包.L2CAP只支持基带面向无连接的异步传输(ACE),不支持面向连接的同步传输(sco).L2CAP采用了多路技术、分割和重组技术、组提取技术,主要提供协议复用、分段和重组、认证服务质量、组管理等功能.
(3)串口仿真协议(RFCOMM)
串口仿真协议在蓝牙协议栈中位于L2CAP协议层和应用层协议层之间,基于ETSI标准TS 07.10,在L2CAP协议层之上实现了仿真9针RS232串口的功能,可实现设备间的串行通信,从而对现有使用串行线接口的应用提供了支持.
(4)电话控制协议(Telephony Control Protocol Spectocol,TCS)
电话控制协议位于蓝牙协议栈的L2CAP层之上,包括电话控制规范二进制(TCS BIN)协议和一套电话控制命令(AT Commands).其中,TCS BIN定义了在蓝牙设备间建立话音和数据呼叫所需的呼叫控制信令;AT Commands则是一套可在多使用模式下用于控制移动电话和调制解调器的命令,它SIG在ITU.TQ.931的基础上开发而成.TCS层不仅支持电话功能(包括呼叫控制和分组管理),同样可以用来建立数据
呼叫,呼叫的内容在L2CAP上以标准数据包形式运载.
(5)服务发现协议(Service Discovery Protocol,SDP)
服务发现协议(SDP)是蓝牙技术框架中至关重要的一层,它是所有应用模型的基础.任何一个蓝牙应用模型的实现都是利用某些服务的结果.在蓝牙无线通信系统中,建立在蓝牙链路上的任何两个或多个设备随时都有可能开始通信,仅仅是静态设置是不够的.蓝牙服务发现协议就确定了这些业务位置的动态方式,可
以动态地查询到设备信息和服务类型,从而建立起一条对应所需要服务的通信信道.
4 、蓝牙高层协议
蓝牙高层协议包括对象交换协议、无线应用协议和音频协议.
(1)对象交换协议(Object Exchange Protocol,OBEX)
OBEX是由红外数据协会(IrDA)制定用于红外数据链路上数据对象交换的会话层协议.蓝牙SIG采纳了该协议,使得原来基于红外链路的OBEX应用有可能方便地移植到蓝牙上或在两者之间进行切换.OBEX是一种高效的二进制协议,采用简单和自发的方式来交换对象.它提供的功能类似于帅协议,在假定传输层可靠的基础上,采用客户机.服务器模 式.它只定义传输对象,而不指定特定的传输数据类型,可以是从文件到商业电子贺卡、从命令到数据库等任何类型,从而具有很好的平台独立性.
(2)无线应用协议(Wireless Application Protocol,WAP)
无线应用协议(WAP)由无线应用协议论坛制定,是由移动电话类的设备使用的无线网络定义的协议.WAP融合了各种广域无线网络技术,其目的是将互联网内容和电话债券的业务传送到数字蜂窝电话和其他无线终端上.选用WAP可以充分利用为无线应用环境开发的高层应用软件.
(3)音频协议(Audio)
蓝牙音频(Audio)是通过在基带上直接传输SCO分组实现的,目前蓝牙SIG并没有以规范的形式给出此部分.虽然严格意义上来讲它并不是蓝牙协议规范的一部分,但也可以视为蓝牙协议体系中的一个直接面向应用的层次.
简单的来说,蓝牙协议栈就是SIG(Special Intersted Group)定义的一组协议的规范,目标是允许遵循规范的蓝牙应用应用能够进行相互间操作,图1-1就是完整的蓝牙协议栈和部分profile:
图1-1
接着介绍下蓝牙里面profile的定义,profile既是配置文件,配置文件定义了可能的应用,蓝牙配置文件表达了一般行为,蓝牙设备可以通过这些行为与其它设备进行通信。蓝牙技术定义了广泛的配置文件,描述了许多不同类型的使用案例。按照蓝牙规格中提供的指导,开发商可以创建应用程序以与其它符合蓝牙规格的设备协同工作。 到目前为止,蓝牙一共有22个profile,在这里我就不详细介绍图1-1的协议和每个Profile了,在www.bluetooth.com上有详细的文档说明。
在这里我想详细介绍下已经实现了r的协议栈。