一、蓝牙免提协议 HFP
HFP(Hands-Free Profile),通俗点翻译就是免提协议,说白了就是蓝牙电话协议,可以让蓝牙设备通过协议定义好的 AT command 控制电话,如接听、挂断、拒接、语音拨号等。每个功能都有特定的 AT command 和 response.。
1、HFP 协议在整个蓝牙中的架构图如下:
我们通常叫做 AG,HF,举一个最简单的例子,我们平时用的手机中的 HFP 的角色就是 AG,我们平时用的蓝牙耳机中的 HFP 角色就是 HF。
二、蓝牙音乐控制协议(AVRCP)
AVRCP(Audio/Video Remote Control Profile)定义了蓝牙设备和 audio/video 控制功能通信的特点和过程,另用于远程控制音视频设备,底层传输基于 AVCTP 传输协议。该 Profile 定义了AV/C 数字命令控制集。命令和信息通过 AVCTP(Audio/Video Control Transport Protocol)协议进行传输。浏览功能通过 AVCTP 的第二个 channel 而不是 AV/C。传输媒体信息通过基于 OBEX协议的 BIP(Bluetooth Basic Imaging Profile)协议。架构如下:
协议栈的位置是:
应用场景:
1、车载娱乐系统
从图中可以看出,手机端把音频数据传递给汽车这边,并且在车载这边也可以通过AVRCP命令来控制手机端这边的音乐,其中包含上一首、下一首、暂停播放等操作
2、单独充当 AVRCP controller 的设备
其中遥控器只是发送 Category 1 的 command 的指令来控制播放器,然后播放器把音乐发送
给耳机
3、两个设备之间的远程控制以及 Audio 流
也就是把控制跟接受音频放在了同一个设备上,其中 Headphone 只发送 Category 1 的指令来控制
4、每个设备都充当 AVRCP 双角色的设备
以上两个设备都是 AVRCP 双角色(controller,target)耳机通过 Category 1 的指令充当控制播
放暂停等(此时 Headphone 就是 AVRCP controller,Disc Player 是 AVRCP target),Disc Player 通
过 Category 2 来控制音量(此时 Disc Player 是 AVRCP controller,此时 Headphone 就是 AVRCP
target)
5、全功能显示的车载系统
车机通过 Category 1 来进行常规的 play/pause/browing 功能,还可以通过 Cover Art 来下载专
辑图片等功能。
三、蓝牙电话本协议(PBAP)
电话本访问协议 Phone Book Access Profile (PBAP)用于访问电话本对象(Vcard),是基于客户端/服务器的模型,一般用于 client 从 server 下载电话本。这个协议为为 HFP/SIM 协议设计。下面我们来介绍下 PBAP 的协议栈架构
四、蓝牙音乐协议(A2DP)
A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议,用于传输单声道,双声道音乐(一般在 A2DP 中用于 stereo 双声道),典型应用为蓝牙耳机。。A2DP 不包括远程控制的功能,远程控制的功能参考协议 AVRCP。整个架构如下:
协议栈的位置见红框:
A2DP 是基于 AVDTP 协议。
A2DP应用场景
A2DP 的角色分为 Source(SRC)跟 SINK(SNK)
Source (SRC) – A device is the SRC whenit acts as a source of a digital audio stream that isdelivered to the SNK of the piconet.
Sink (SNK) – A device is the SNK when it acts as a sink of a digital audio stream delivered fromthe SRC on the same piconet.
上面解释的也很清楚,说点白话点,就是谁发送音频数据谁就是 Source,谁接收音频数据谁就是 Sink,举一个例子:假设手机连接蓝牙耳机播放音乐,那么手机就是做 A2DP source 角色,蓝牙耳机就是做 A2DP sink 角色。
音频数据传递流程
总结下 Audio 从 source 发送到 sink的流程
我们来大体总结下整个流程:
1)A2DP source 的发送流程
UL 收集到 PCM 数据,然后发送到 A2DP,A2DP 经过 codec PCM lib(SBC,MPEG-1,2 AudioMPEG-2,4 AACATRAC family 或者自定义 encoder pcm lib)压缩成特定的音频格式,然后交给 AVDTP,AVDTP 转交给 L2CAP,L2CAP 通过 ACL 格式转交给 HCI,然后到达 BT chip,通过 RF 射频出去。
2)A2DP sink 的接收流程
BT chip 通过 RF 接收进来数据,然后通过 ACL 交给 HCI,然后交给 L2CAP,L2CAP 交给 AVDTP,
AVDTP 交 给 A2DP , A2DP 收 到 的 是 remote 经 过 压 缩 的 数 据 , 此 时 通 过 codec pcm
lib(SBC,MPEG-1,2 AudioMPEG-2, 4 AACATRAC family或者自定义encoder pcm lib)解压成PCM 数
据,然后交于声卡播放