蓝牙协议是蓝牙设备间交换信息所应该遵守的规则。与开放系统互联(OSI)模型一样,蓝牙技术的协议体系也采用了分层结构,从底层到高层形成了蓝牙协议栈,各层协议定义了所完成的功能和使用数据分组格式,以保证蓝牙产品间的互操作性。
一、首先来看一下蓝牙的架构:
1、无线射频单元(Radio):负责数据和语音的发送和接收,特点是短距离、低功耗。蓝牙天线一般体积小、重量轻,属于微带天线。
2、基带或链路控制单元(LinkController):进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程。
3、链路管理单元(LinkManager):负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作。
4、蓝牙软件协议实现:如上图紫色部分,这个后面我们做详细说明。
蓝牙协议规范
传输协议、中介协议、应用协议;
1、传输协议
负责蓝牙设备间,互相确认对方的位置,以及建立和管理蓝牙设备间的物理链路;
底层传输协议:
蓝牙射频(Radio)部分、基带链路管理控制器(Baseband&Link Controller)、链路管理协议(Link ManagerProtocol LMP)。负责语言、数据无线传输的物理实现以及蓝牙设备间的联网组网。
高层传输协议:
逻辑链路控制与适配器(LogicalLink Control and Adaptation Protocol)L2CAP 、主机控制接口(HostControl Interface,HCI)。为高层应用屏蔽了跳频序列选择等底层传输操作,为高层程序提供有效、有利于实现数据分组格式。
2、中介协议
为高层应用协议或者程序,在蓝牙逻辑链路上工作提供必要的支持,为应用提供不同标准接口。
串口仿真协议:RFCOMM、服务发现协议:SDP、互操作协议IrDA、网络访问协议:PPP、IP、TCP、UDP、电话控制协议:TCS、AT指令集。
3、应用协议
蓝牙协议栈之上的应用软件和所涉及到的协议,如:拨号上网、语言功能的应用程序。
蓝牙的应用框架如下:
(1)、通用应用类框架:查询、建立连接服务等;
(2)、蓝牙电话应用类框架:电话控制、语言;
(3)、蓝牙连网应用类框架:网络应用相关;
(4)、对象交互服务类框架:IrDA、OBEX;
(5)、蓝牙音视频控制类框架
二、基本概念:
1、蓝牙地址
BD_ADDR:BluetoothDevice Address;
LAP:LowerAddress Part 低地址部分;
UAP: UpperAddress Part 高地址部分;
NAP: Non-significantAddress Part 无效地址部分。
3、蓝牙的收发规则
上图为RX缓存
上图为TX缓存。
新分组到达时,ACL链路的RX缓存器要流量控制,SCO数据不需要流量控制。
4、蓝牙基带信道和网络控制
1)、链路控制器状态:
待机、连接
寻呼page、寻呼扫描pagescan、查询inquiry、查询扫描inquiry scan、主设备相应Master Response、从设备相应Slave Response、查询相应inquiry response
2) 、连接状态
激活模式active、呼吸模式sniff、保持模式hold、休眠模式park。
3)、待机状态
待机状态是蓝牙设备缺省低功耗状态,此状态下本地时钟以低精度运行。蓝牙从待机转入寻呼扫描状态,对其他寻呼进行响应成为从设备;也可以从待机状态进入查询扫描状态,完成一个完整的寻呼,成为主设备。
9、接入过程
注释:
IAC Inquiry AccessCode 查询接入码;
GIAC:通用查询接入码 DIAC:专用查询接入码;
DAC:DeviceAccess Code 设备接入码;
LAP:
建立连接,必须使用查询、寻呼;查询过程使用IAC,发现覆盖区域内的设备、设备的地址及其时钟;连接过程使用DAC,建立连接的设备处理寻呼过程,成为主设备。、
(1)、查询过程
蓝牙设备通过查询来发现通信范围内的其他蓝牙设备。查询信息分为GIAC、DIAC两种。查询发起设备收集所有相应设备的地址、时钟信息。
一设备进入查询状态去发现其他设备,查询状态下连续不断的在不同频点发送查询消息。查询的跳频序列有GIAC的LAP导出。
一设备想被其他设备发现,就要周期性进入 查询扫描状态,以便相应查询消息。如:我们选择设备多长时间可见,其实就是 进入查询扫描状态。
A、查询扫描
查询扫描状态下,接收设备扫描接入码的时间长度,足以完成对16个频率的扫描。扫描区间长度Twindow inquiry scan。扫描在同一个频率上进行,查询过程用32跳专用查询跳频序列,此序列有通用查询的地址决定,相位有本地时钟决定,每隔1.28S变化一次。
B、查询
与寻呼类似,TX用查询跳频序列、RX用查询相应跳频序列。
C、查询相应
从设备响应查询操作。每个设备都有自己的时钟,使用查询序列相位相同的几率比较小。为了避免多个设备在同一查询跳频信道同时激活,从设备查询响应规定:从设备收到查询消息,产生0-1023只觉得额一个随机数,锁定当时相位输入值进行跳频选择,从设备此后的RAND时隙中返回到连接或者待机状态。
(2)、寻呼扫描
DAC:DeviceAccess Code 设备接入码
寻呼扫描状态下的设备扫描窗口Twindowpage scan内监听自己的DAC。监听只在一个跳频点进行。Twindow page scan足够覆盖16个寻呼扫描频点。
寻呼扫描状态,扫描在同一个频率上进行,持续1.28S,在选择另一个不同频率。
SR模式 |
Tpage scan |
寻呼次数Npage |
R0 |
连续 |
>=1 |
R1 |
<=1.28S |
>=128 |
R2 |
<=2.56S |
>=256 |
预留 |
-- |
-- |
(3)、寻呼
主设备使用寻呼发起一个主—从设备连接,通过在不同的跳频点上重复发送从设备DAC来扑捉从设备,从设备在寻呼扫描状态被唤醒,接收寻呼。
(4)、寻呼相应过程
三、传统蓝牙的音视频协议及应用场景
有关A/V的协议包括: AVDTP音视频分发传输协议、AVCTP音视频控制传输协议、GAVDP通用音视频分发框架、A2DP高级音频分发框架、AVCRP音视频遥控框架
1. 基本概念术语
1) 流stream:流是音视频传输的数据形式,单向传输,在AVDTP中被分为媒介分组。流有句柄HS统一标识。
2) 信令
AVDTP信令列表, 这部分信令,实现了蓝牙的A2DP 数据流的控制。
命令 |
信令标识符 |
描述 |
AVDTP_DISCOVER |
0x01 |
发现设备中的流端点 |
AVDTP_GET_CAPABILITIES |
0x02 |
获得流端点的信息能力 |
AVDTP_SET_CONFIGURATION |
0x03 |
对SEP进行配置 |
AVDTP_GET_CONFIGURATION |
0x04 |
获取SEP当前配置 |
AVDTP_RECONFIGURE |
0x05 |
对SEP重新配置 |
AVDTP_OPEN |
0x06 |
成功的配置SEP后,打开流 |
AVDTP_START |
0x07 |
流被打开:用于开始形成流;流暂停时:用于重新形成流。 |
AVDTP_CLOSE |
0x08 |
对SEP关闭 |
AVDTP_SUSPEND |
0x09 |
请求SEP暂停 |
AVDTP_SECURITY_CONTROL |
0x0A |
设置设备内容保护、或者请求设备状况信息 |
AVDTP_ABORT |
0x0B |
中断正在建立或者传输的过程 |
AVDTP_GET_ALL_CAPABILITIES |
|
|
AVDTP_DELAYREPORT |
|
|
(2) get capabilities 获取支持特性
(3) set configuration 配置音频参数
其他指令类似去上面两个的操作。
2. 具体协议
1)ADVANCED AUDIO DISTRIBUTION PROFILE高级音频分发配置文件
A2DP描述了立体声音频如何从媒体输出(source)传输至输入(sink)。
使用情景:
简单说来,这是一个蓝牙音乐播放器(如MP3播放器、随身听、立体声等)音频输出是音乐播放器,而音频输入是无线耳机或无线立体声音响。
产品范例:
以下是使用A2DP配置文件的部分设备类型:
立体声耳机、立体声音、MP3播放器、音乐手机、立体声音频适配器
技术知识:
此配置文件定义了音频设备的两个角色:输出和输入。
• 输出(SRC)-设备在将数字化音频流传输至微微网的输出时则作为输出设备。
• 输入(SNK)-设备在输入来自同一微微网中SRC的数字化音频流时则作为输入设备。
A2DP定义了在ACL信道实现高品质音频内容的单声道或立体声分发协议和程序。因此,“高级音频”与“蓝牙音频”应该区别开来,后者是指根据基带规格定义的SCO信道中分发窄幅波段的语音。
此配置文件建立在GAVDP基础上。它包括对复杂程度低的次频宽编解码技术(SBC)的必备支持和对MPEG-1,2音频、 MPEG-2,4 AAC和自适应声学转换编码技术(ATRAC)的可选支持。音频数据按适当的格式进行压缩后能在有限频宽中正常使用。环绕声的分发不在此配置文件的范围。
基带、LMP、L2CAP和SDP是蓝牙核心规格中定义的蓝牙协议。AVDTP包括一个用于沟通串流参数的信令实体以及一个处理串流的传输实体(请参阅“配置文件协议栈:配置文件模式”)。应用层是设备定义应用服务和传输服务参数的实体。它可以将音频流数据改编成指定的数据包格式,反之亦可。
A2DP侧重于:Streaming parameters and encode/decode features
2) GENERIC AUDIO/VIDEO DISTRIBUTION PROFILE通用A/V分发配置文件 (GAVDP)
GAVDP提供了A2DP和VDP的基础,该系统基础旨在在ACL信道上使用蓝牙技术分发视频和音频流。
GAVDP侧重于:signaling transaction procedures between two devices to set up, terminate, and reconfigure streaming channels
使用情景:
典型的使用情景是一副无线立体声耳机和一个音乐播放器,例如MP3播放器或者随身听。音乐播放器向耳机传送信息建立连接或调整音频流,反之亦然。
产品范例:
以下例子说明了可能会使用GAVDP的若干设备类型:音乐播放器、立体声耳机、立体声音响、手提电脑、个人电脑、手机、PDA
技术知识:
GAVDP定义了启动设备和接收设备两个角色:
• 启动设备(INT) – 这是启动信号发送过程的设备。
• 接收设备(ACP) – 这是回应INT输入请求的设备。
o 注:设备的角色并不固定。角色会于信号传输过程启动时确定,当过程结束时设备角色也将解除。当启动新一轮过程时,设备的角色可以互换。
基带、LMP、L2CAP和SDP是蓝牙核心规格中定义的蓝牙协议。AVDTP包括一个用于沟通串流参数的信令实体以及一个处理串流的传输实体。
注:INT/ACP和SRC/SNK角色是独立的。即SNK和SRC可以是ACP或INT。
3)AVDTP Audio/Video Distribution Transport Protocol音视频分发传输协议(待续)
4)AVRCP(待续)