hfp怎么连接 汽车蓝牙怎么连接hfp什么意思


hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
什么是HFP协议HFP协议说的是蓝牙电话顾名思义就是使用蓝牙技术实现电话拨打相关功能,具体应用在车载蓝牙,蓝牙音箱,蓝牙手环,蓝牙耳机等设备上,本人做过蓝牙音箱,所以这篇主要蓝牙音箱为第一视角讲解蓝牙通话相关内容 。
Hands-Free Profile简称HFP,蓝牙免提协议故一定了免提设备控制电话相关操作,这里的面体设备指得就是相关的蓝牙设备(如蓝牙音箱,车载蓝牙) 。详细描述请参考协议文档
Configuration and Roles
HFP中有两个角色:
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
The following roles are defined for this profile:
Audio Gateway (AG) – This is the device that is the gateway of the audio, both for input and output. Typical devices acting as Audio Gateways are cellular phones.
Hands-Free unit (HF) – This is the device acting as the Audio Gateway’s remote audio input and output mechanism. It also provides some remote control means
上述的角色定义是从HFP协议文档给出来的,不明白没有关系举个例子就知道了,那蓝牙音箱(耳机)为例,蓝牙音箱和手机相连,那么手机的角色是AG,音箱(耳机)的角色就是HF
HFP协议的连接那么HF侧和AG侧如何进行连接通信,由下面的图解带大家分析下
连接具体流程如下图:
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
手机的音频的连接AG和HF侧都可以发起,连接过程中的消息交互及流程答题相同 。本篇文章没有特殊声明,第一视角都是蓝牙音箱HF侧分析起点,上图的SLC(Service Level Connection)建立代表HFP连接成功 。
下面我抓了HFP通话的话带大家走上述提到的流程所涉及的报文
ACL链路建立
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
【hfp怎么连接 汽车蓝牙怎么连接hfp什么意思】这个包的含义是控制器给协议栈发送蓝牙ACL连接请求
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
这个包的含义是协议栈回复控制器接收连接请求
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
这个包的含义是控制器回复协议栈ACL连接成功
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图

hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
L2CAP的链路连接
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
SDP服务发现HFP
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
这个包的含义是HF本地接收AG手机侧发出的SDP报文发现Handsfree HFP协议
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
这个包的含义是HF本地发送AG手机侧接收该服务的响应
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
RFCOMM协议连接下面的画框中的报文代表HFP连接要建立RFCOMM协议连接之上
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图

hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
AT命令交互下图画框中的报文说明涉及AT命令的交互
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
如果你抓取的报文也有上述图中的指令,那么代表着SLC连接建立成功,意味着HFP协议建立成功
这样如果操作HFP协议失败时,我们就可以从以下五个方面分析原因:
1、当前蓝牙的ACL链路是否建立成功
2、L2CAP的链路是否建立成功
3、SDP服务搜索HFP协议是否正常完成
4、RFCOMMM是否成功
5、AT命令是否依次交互完成
AT命令依次交互的顺序为:BRSF->BAC(AG+HF都支持codec协商)->CIND=?->CIND?->CMER->CHLD=?(AG、HF都支持三方通话)
上述内容就是HFP连接的流程
HFP Profile组成依赖关系这是我HFP官方协议手册找到的,相信理解看完上面HFP的连接具体流程之后,再看下面这张图层次感就容易了
hfp怎么连接 汽车蓝牙怎么连接hfp什么意思

文章插图
HFP中的电话音频蓝牙通话过程的语音数据,这种音频对时效性有高要求,一般通过特殊的SCO或者ESCO链路传输数据,编码方式有:CVSD,MSBC 。最基础的窄带8k编码方式为CVSD,免提蓝牙设备都需支持该编码方式,支持宽带16k语音的设备可选mSBC编码数据