蓝牙(六)HFP协议

时间:2024-04-03 14:44:02

名词

AG(Audio Gate)音频网关—音频设备输入输出网关(一般手机、车载等)
HF(Hands Free)免提—该设备作为音频网关的远程音频输入/输出机制,并可提供若干遥控功能(耳机等c)。

蓝牙(六)HFP协议

协议栈

蓝牙(六)HFP协议

AG和HF需要支持的功能

蓝牙(六)HFP协议

蓝牙(六)HFP协议

1.HF control通信流程


1.1 Service Level Connection

AG和HF均可以通过内部或者用户事件发起Service Level连接建立。Service Level Connection建立的前提是RFCOMM已经建立。同样RFCOMM的建立发起者可以是AG或者HF。

  •     支持能力交换

    首先HF发送AT+BRSF=< HF supported features >给AG,目的是首先通知AG其具有的功能,其次接收AG返回的其自身的BRSF功能。

  •     Codec协商

    如果HF支持Codec Negotiation特征,其会查看AG返回的BRSF中是否也支持该特性,如果都支持该特性,则HF将发送AT+BAC=< HF available codecs >命令给AG以告知其可用的codec。

  •     AG Indicator

    HF从AG接收到的BRSF,可以知道AG支持的Indicator,并按顺序排好,这是因为根据3GPP 27.007规范,AG可以支持Hands-Free不支持的profile。HF使用AT+CIND=?测试命令接收AG支持的indicator以及它们的次序。
    当HF获得必须的Indicator和它们的次序,它将通过AT+CIND?命令取得AG端正在使用indicator的状态。
    当HF取得AG的indicator后,HF会使用AT+CMER使能AG的indicator状态跟新功能,AG会返回OK作为应答。当service,call或者call建立状态发生时,AG将发送和indicator相关的+CIEV结果码给HF。HF根据收到的+CIEV码来跟新其自身内部的indicator。
    AG侧会一直保持indicator状态跟新功能使能直到收到AT+CMER指示其关闭或者HF和AG端的Service Level Connection连接断开。
    当HF使能AG的indicator状态跟新,如果AG和HF都支持呼叫等待(Call waiting)和3方通信(3-way calling)。HF将发送AT+CHLD=?测试命令取得AG是如何支持这种功能的。如果HF或者AG其中之一不支持三方通信,AT+CHLD=?命令不会被发送。

  •     HF Indicator

    如果HF支持HF indicator,其会查看AG是否支持HF indicator。
    如果HF和AG支持HF indicator特性,HF将发送AT+BIND=< HF supported HF indicators >通知HF侧支持的indicator,AG以OK应答。
    当AG接收到HF告知的HF indicator特性,HF将发送AT+BIND=?请求AG侧支持的HF indicator。AG将会以+BIND和以OK结尾的应答。
    当HF接收到AG支持的HF indicator,HF将会发送AT+BIND?命令确定HF目前使能的HF indicator。AG将会一次或多次以+BIND应答和以OK结尾的应答。
    至此HF可能发送AT+BIEV命令告知AG其使能的HF indicator发生变化。
    AG可以使用+BIND使能或者禁止任何HF indicator。

  •     End of Service Level Connection

    HF需要知道Service Level Connection被完全建立,这可以通过以下几个方式:
    当且仅当AG通过+BRSF命令告知HF其支持的HF indicator,在HF收到AG通过AT+BIND?命令发来的其支持的HF indicator可认为完全建立。
    当且仅当SDP服务发现AH和AG双方均支持“Call waiting and 3-way calling”,在HFAG通过AT+CHLD命令发来的其对呼叫等待和多方电话的支持,对这种情况,HF indicator不要设置该比特位,AG也不要在+BRSF命令中设置该比特位。
    在HF使用AT+CMER命令成功使能了“Indicator status update”功能,对这种情况SDP服务不应该设置“Call waiting and 3-way calling”比特位。
    如果HF收到AG通过indicator指示当前有电话时,HF查询AG的接听和保持状态来判断是否是未接听电话。
    同样AG侧Service Level Connection完全建立也有几种情况:
    当且仅当HF indicator在HF被设置且AG侧支持的indicator已经通过+BRSF命令应答,则AG以+BIND加OK结尾的命令应答其使能的HF indicator时可认为Service Level Connection完全建立。
    当且仅当“Call waiting and 3-way calling”比特在HF和AG的SDP服务中被置位,在AG通过+CHLD加OK结尾命令成功响应其对呼叫保持和多方电话支持时SLC会被完全建立。对这种情况,+BRSF不应该设置该HF indicator比特位。
    在AG成功响应AT+CMER命令。

蓝牙(六)HFP协议

1.2 Service Level Connection removal

本节描述释放服务级别连接的过程。

断开服务级连接后,应立即断开HF和AG之间相应的RFCOMM数据链路信道。

此外,作为移除服务级连接的结果,必须移除现有的音频连接。删除L2CAP和链路层是可选的。

应使用“服务水平连接拆除”程序解除已建立的服务水平连接。

HF或AG应启动“服务水平连接解除”程序由于明确的用户请求。

  • HF或AG应根据明确的用户请求启动“服务水平连接解除”程序。
  • 如果在HF或AG中禁用蓝牙功能,则应启动“服务级别连接解除”程序。
  • 如第4.11节所述,如果在AG的持续呼叫中执行“音频连接转移到AG”,则可以启动“服务级别连接释放”程序。如果删除了服务级别连接,

作为这个过程的前提条件,AG和HF之间存在一个正在进行的服务水平连接。

蓝牙(六)HFP协议

1.3 Transfer of Registration Status

蓝牙(六)HFP协议
蓝牙(六)HFP协议

1.3 Transfer of Signal Strength Indication

蓝牙(六)HFP协议
蓝牙(六)HFP协议

1.4 Transfer of Roaming Status Indication

蓝牙(六)HFP协议

蓝牙(六)HFP协议

1.5 Report Extended Audio Gateway Error Results Code
蓝牙(六)HFP协议

蓝牙(六)HFP协议

蓝牙(六)HFP协议

示例:

蓝牙(六)HFP协议

蓝牙(六)HFP协议