一、说明
简单的来说,HFP协议一般用来方便用户通过蓝牙拨打或者接听电话使用 。
分为2个不同的角色。
Audio Gateway:作为音频的网管,既可以作为输入,也可以作为输出。一般常见的设备,比如智能手机。
Hands Free:作为音频网关的远程设备输入输出机制的设备,同时还可以对音频网关做一些控制。常见的 设备比如车载蓝牙,蓝牙耳机。
二、协议的架构
下图是整体的协议层次以来关系。
下图是具体的2个角色协议栈描述
The Baseband, LMP and L2CAP are the OSI layer 1 and 2 Bluetooth protocols. RFCOMM is the
Bluetooth serial port emulation entity. SDP is the Bluetooth Service Discovery Protocol.
三、连接过程
- 建立RFCOMM连接
- HF发送"AT+BRSF=“通知AG自己支持的Feature,然后AG发送”+BRSF: "回复HF自己支持的Feature,再回复一个"OK"指令
- 如果HF和AG都支持Codec协商,HF发送"AT+BAC="通知AG自己支持的Codec,AG回复一个"OK"指令
- 如果HF和AG都支持三方通话,HF发送" AT+CIND=?“请求获取AG支持的3GPP标准Indicator,然后AG进行发送”+CIND"回复HF自己支持的Indicator,再回复一个"OK"指令
- HF发送" AT+CIND? “请求获取AG当前的Indicator的值,然后AG发送”+CIND"回复对应的信息,再回复一个"OK"指令
- HF发送"AT+CMER=“请求打开AG的Indicator状态上报,AG回复"OK”。当AG对应的状态发生变化的时候,主动上报" +CIEV"指令给HF,通知当前状态发生了变化
- HF发送"AT+CHLD=?"请求获取AG的三方通话支持能力,然后AG进行回复
- 如果HF和AG都支持HF Indicator,那么HF发送"AT+BIND="通知AG自己支持的Indicator的编号,AG需要回复"OK"作为回应
- 当步骤8完成后,HF发送"AT+BIND=?“获取AG的Indicator信息,AG需要发送一或者多个”+BIND"作为回应,最后以"OK"指令作为结束。当HF对应的状态发生变化的时候,HF会发送"AT+BIEV"通知AG
- 整个连接完成。由于中间有些指令是可选的,如果可选支持双方都不支持的情况,可以忽略该步骤,认为连接完成。