hfp怎么连接(车载蓝牙hfp连接的方法)
什么是HFP协议?
HFP协议说,蓝牙电话顾名思义就是利用蓝牙技术实现电话拨号的相关功能,具体应用于车载蓝牙、蓝牙音箱、蓝牙手环、蓝牙耳机等设备上我做过蓝牙音箱,所以这个主蓝牙音箱从第一视角解释蓝牙通话的相关内容。
免提模式缩写为HFP,蓝牙免提协议确保免提设备控制电话相关操作。这里的人脸设备是指相关的蓝牙设备(如蓝牙音箱、车载蓝牙)。详细说明请参考协议文件。
配置和角色
在HFP有两种角色:
为此配置文件定义了以下角色:
音频网关(AG)–这是作为音频网关的设备,用于输入和输出。充当音频网关的典型设备是蜂窝电话。
免提单元(HF)–这是充当音频网关的远程音频输入和输出机制的设备。它还提供了一些远程控制手段
上述角色定义来自《HFP议定书》文件。如果不明白那没关系,举个例子就好。以蓝牙音箱(耳机)为例。蓝牙音箱连接手机,所以手机的作用是AG,音箱(耳机)的作用是HF。
HFP协议连接
然后通过下图分析HF侧和AG侧如何连接和通信。
具体连接过程如下:
手机的音频连接在AG端和HF端都可以发起,连接过程中的消息交互和进程应答都是一样的。本文没有特别声明。第一个视角是分析蓝牙音箱高频侧的起点。上图中SLC(服务级连接)的建立代表了HFP连接的成功。
接下来,如果我接到HFP的电话,我会带你去上述过程中所涉及的消息。
ACL链路建立
这个包意味着控制器向协议栈发送蓝牙ACL连接请求。
这个包的意思是协议栈回复控制器收到连接请求。
这个包的意思是控制器回复协议栈的ACL连接成功。
L2CAP的链路连接
SDP服务发现HFP
这个包的意思是HF本地接收AG手机发送的SDP消息,发现免提HFP协议。
这个包的意思是HF发送AG手机端在本地接收服务的响应。
RFCOMM协议连接
下图框中的消息表示HFP连接将建立RFCOMM协议连接。
AT命令交互
下面图片框中的信息说明了涉及AT命令的交互。
如果你抓取的消息也有上图的说明,说明SLC连接已经建立成功,也就意味着HFP协议已经建立成功。
这样,如果《HFP议定书》运作失败,我们可以从以下五个方面分析原因:
1.蓝牙的ACL链接是否建立成功?
2.L2CAP链路建立成功了吗?
3.SDP服务搜索HFP协议是否正常完成。
4.RFCOMMM成功了吗?
5.AT命令是依次交互完成的吗?
AT命令按照以下顺序交互:brsf->BAC(AG和HF都支持编解码协商)->CIND=?->CIND?->CMER->CHLD=?(AG和HF都支持三方通话)
以上是HFP连接的流程。
HFP配置文件组成相关性
我在我的官方HFP协议手册里找到了这个。相信在了解了上面HFP的具体连接过程后,阅读下面的示意图会很容易。
HFP的电话音频
蓝牙通话过程中的语音数据,时效性要求较高,一般通过专用的SCO或ESCO链路传输,编码方式有:CVSD、MSBC。最基本的窄带8k编码方式是CVSD,免提蓝牙设备应该支持,支持宽带16k语音的设备可以选择mSBC编码数据。
在上图中(m表示强制支持,C1表示可选支持):
CVSD:这种编码方式的数据传输使用SCO或eSCO链路。根据本地控制器是否支持增强建立同步连接命令来确定链路的选择。如果支持此命令,创建语音和音频链接时将使用eSCO,否则将创建SCO链接。MSBC:这种编码模式下的数据传输只能使用eSCO链路。
上海合作组织和ESCO的区别在于:
1.SCO逻辑传输是对称的,而ESCO逻辑传输是非对称的。
2.SCO不支持重传,而ESCO支持重传。
那你怎么知道AG方是否支持ESCO呢?请参考我的下一篇关于HFP指令的文章。
蓝牙电话语音的传输方式
上图是官方协议给的,我简单总结一下:PhoneAudio->脉码调制->AG基带->HF基带->PCM解码->电话音频。
发表评论