HFP(hands free profle)
HFP蓝牙免提协议:
1. 角色:
AG(audio gateway):音频网关,相当于手机
HF(hand free): 免提端,相当于耳机

2. 支持的feature:


支持的codec:

3. 连接管理(Connection management)
3.1 SLC(service level connect establishment)服务级连接的建立
SLC就是一些AT指令的交互,交互完后,SLC就建立成功了。
前提:SLC建立前必须存在HFP基于RFCOMM的server channel的连接,有了这个连接才能在HF和AG间交互AT command。
SLC连接过程:
3.1.1 支持的feature交换(Supported features exchange):
a. HF发送AT+BRSF=<HF supported features>告诉AG它支持的feature
b. AG会发送+BRSF告诉HF它支持的feature
这样HF和AG都知道了对方都支持的feature。
3.1.2 codec协商(Codec Negotiation):
a. 如果HF支持Codec Negotiation feature,并且通过+BRSF知道了AG也支持Codec Negotiation feature
a. 如果HF和AG都支持HF Indicator feature,HF将发送AT+BIND=<HFsupported HF indicators>指令通知AG它支持的Indicators,AG会回应OK
b. HF发送AT+BIND=?来获取AG支持的HF indicators,AG会发送+BIND告诉HF它支持的HF indicators,并跟着OK
c. 在HF接收到AG支持的HF indicators后,HF将发送AT+BIND?命令来确定开启哪些HF indicators。AG将用+BIND来响应,并跟着OK
d. 之后,只要HF的indicators改变,他都将发送AT+BIEV指令到AG
3.1.5 结束SLC(End of Service Level Connection):

3.2 SLC释放(Service Level Connection Release)
释放了SLC会导致RFCOMM和audio connect连接被移除。
a. HF或AG的用户请求将发起SLC释放
b. 禁用HF或AG的蓝牙功能将发起SLC释放
c. 如果在AG呼出电话期间执行了“Audio Connection transfer towards the AG”,AG将发起SLC释放,当通话通断后,AG将尝试重新建立SLC
4.手机状态信息(Phone status information)
4.1 注册状态的传递(Transfer of Registration Status)
a. HF发送AT+CMER命令来开启AG的“Registration status update”功能,相当于打开总开关。
b. HF发送AT+BIA命令来使能/失能单个的indicator,相当于小开关
c. 如果总开关打开了,并且对应的indicator的小开关打开了。当AG中对应的registration status发生了变化,AG将发送+CIEV: …告诉HF其变化的值
4.2 信号强度指示的传递(Transfer of Signal Strength Indication)
a. HF发送AT+CMER命令来开启AG的“Registration status update”功能,相当于打开总开关。
b. HF发送AT+BIA命令来使能/失能单个的indicator,相当于小开关
c. 如果总开关打开了,并且对应的indicator的小开关打开了。当AG中对应的signal strength发生了变化,AG将发送+CIEV: <Signal strength Ind>,<Value>告诉HF其变化的值
4.3 漫游指示的传递(Transfer of Roaming Status Indication)
a. HF发送AT+CMER命令来开启AG的“Registration status update”功能,相当于打开总开关。
b. HF发送AT+BIA命令来使能/失能单个的indicator,相当于小开关
c. 如果总开关打开了,并且对应的indicator的小开关打开了。当AG中对应的roaming status发生了变化,AG将发送+CIEV: <RoamingInd>,<Value>告诉HF其变化的值
4.4 电量指示的传递(Transfer of Battery Level Indication)
a. HF发送AT+CMER命令来开启AG的“Registration status update”功能,相当于打开总开关。
b. HF发送AT+BIA命令来使能/失能单个的indicator,相当于小开关
c. 如果总开关打开了,并且对应的indicator的小开关打开了。当AG中对应的battery level发生了变化,AG将发送+CIEV: <Battery level Ind>,<Value>告诉HF其变化的值
4.5 查询运营商(Query of Operator Selection)
a. HF发送AT+COPS=3,0命令来设置名称格式为长字母、数字(为了用户能看懂)
b. 在内部事件或用户发起的操作,HF发送AT+COPS?命令AG当前的运营商
c. AG将发送+COPS: <mode>, 0, <operator>来告诉HF当前的运营商
4.6 扩展音频网关错误码(Extended Audio Gateway Error Codes)
执行这个过程来使能/失能AG的错误码。
a. HF发送AT+CMEE=<n>命令来使能/失能AG的错误码
b. 每当由于AT命令而导致与AG功能有关的错误时,AG应向HF发送+CME error: <err>响应
4.7 呼叫转移,呼叫建立和呼叫保持状态(Transfer of Call, Call Setup and Call Held Status)
a. HF发送AT+CMER命令来开启AG的“Registration status update”功能,相当于打开总开关。
b. AT+BIA命令对Call, Call Setup, or Held Call indicators没有效果
c. 当AG中对应的Call、Call Setup、 Held Call发生了变化,AG将发送+CIEV告诉HF其变化的值
5. 音频连接处理(Audio Connection handling)
5.1 Audio Connection set up
5.2 Audio Connection release