经典蓝牙-HFP
本文最后更新于:5 天前
经典蓝牙-HFP
一、介绍
HFP(Hands-Free Profile)属于经典蓝牙的应用层协议,主要用于蓝牙设备与手机设备之间打电话场景下的指令传输和音频传输,HFP也可以用于听音乐等传输音频的场景。HFP的指令传输包含
- 拨打电话(主动呼叫)
- 接听电话(被呼叫)
- 挂断电话
- 拒接电话
- 电话信息传递
- 呼叫转移
- 语音信箱
- 音量控制
- 。。。
由于HFP所有的交互都是通过AT指令且支持用户自定义指令,所以基于AT指令可以实现打电话的所有远端控制和信息传递。
音频的HFP音频的传输依赖于SCO(Synchronous Connection Oriented)传输,但是经典蓝牙的指令传输都是基于ACL(AsynchronousConnectionless)传输,所以在拨打电话的时候需要控制SCO的连接和断开。
二、配置
2.1 角色
HFP根据打电话的角色特点分为两个角色‘AG网关’和‘HF免提’,手机连接蓝牙耳机接打电话时,手机属于AG角色,耳机属于HF角色;也有一部分厂商把AG叫做HFP的主机,HF叫做HFP的从机。
- AG(Audio Gateway)
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.
- HF(Hands-Free)
This is the device acting as the Audio Gateway’s remote audio input and output mechanism. It also provides some remote control means.
AG和HF的属性能力不同,AG的能力要比HF的能力多一点,比如建立SCO连接时,AG端可以直接建立SCO连接,但是HF端想要建立SCO连接就得先给AG端发起‘通知’再由AG端发起SCO连接。SCO的CODEC方式是HFP告诉AG端自己支持什么编解码算法,在由AG端指定一个编解码方式作为音频传输的编解码方法。
2.2 服务级别连接
HFP服务连接是基于RFCOMM连接后通过AT指令建立的连接,连接建立过程中需要双方交互自己支持的属性,以便于在后续的通信过程中高效通信
图中虚线箭头表示可选的通信,实线箭头表示必须的通信。
2.3 音频传输
- 音频连接
音频传输必须是建立在音频连接的基础上,音频的传输依赖于SCO(Synchronous Connection Oriented)传输,所以首先需要连接SCO的连接才可以传输音频。
SCO连接必须是在HFP服务连接和codec协商之后。
- 从AG端建立音频连接
- 从HF端建立音频连接
- codec连接建立
codec连接比较简单,就是AG将指定的codec ID发送给HF,HF确认后在建立连接。
- codec协商
codec协商是HFP两端的角色属性,如果HF支持协商属性,HF需要将自己支持的codec算法发送给AG,AG结合自己支持的codec算法,指定一种可用的算法作为音频传输的最终codec算法。