HFP

我。。。。

HFP是啥东西,是啥东西。。我也不知道

 

咋不能只是说这个东西是啥,应该说一下应用场景

 

好比小明有一个手机(HFP上叫做AG)和一个手机蓝牙连上的耳机(HFP上叫做HF) 连上

 

然后十四哥用手机打小明手机。。。小明在蓝牙耳机上接听电话,就是HFP使用的场景

 

如果这个时候铁柱也用手机打小明手机,小明在蓝牙耳机上选择接铁柱电话挂掉十四哥电话,就是HFP上的三方呼叫了

 

注意:所以这里有两条链路 :一条是音频的SCO数据,另外一条是ACL链路,不要总认为HFP场景是一条链路,哪怕SCO走的是ACL,其实都要看两个部分,很多时候,经常出问题都是在SCO上面

 

断线一般是HFP的问题,

没有声音或者声音吱吱吱或者哔哔哔一般是SCO的问题(比如PCM的接口都没调通就去玩)

 

 

尼玛怎么用

 

其实概括起来是HF上发指令,AG上发状态

 

不罗比锁了,实例说。

 

1、第一步,建立ACL链接,HANDLE是3

 

HFP_第1张图片

 

 

2、第二步 ,在ACL上建立L2CAP链接,顺便建立了一个SDP

 

HFP_第2张图片

 

 

3、第三步 ,在L2CAP上建立RFCOMM,这个时候HFP就可以用了,因为本身就是RFCOMM

 

HFP_第3张图片

 

4、第四步,建立SCO链路HANDLE是4

 

HFP_第4张图片

 

 

建立起RFCOMM和SCO就可以用了

 

先做一些准备工作

 

 

 

HFP_第5张图片

 

 

为什么要准备,为什么要问?兄弟,为什么你们通信老是要先问问,不管是LMP 的各种信息或者MTU什么

 

原因是:手机的蓝牙芯片和蓝牙耳机芯片他妈肯定不一样,软件支持也不一样,那肯定问清楚版本支持协议各种,

不然他妈我问了你不知道。

 

1、 AT +BRSF  AT+BAC  就是去问一下支持功能版本这些,返回OK就可以了,不用管

 

2、AT + CIND = ? 这个就非常重要了,这一句可以说是HFP的重点,去问AG支持的状态指示(比如什么通信状态,电量状态,漫游状态什么的)

这个就是AG反馈回来的,支持的状态指示,而且有地址的喔

0  是 "call "  1是 "callsetup"  2是"service" .。。。这些就是AG支持的状态指示,AG会告诉你呼叫通话过程中这些东东发生的变化

 

3、AT+ CMER   这个东西就是用来更新状态参数(就是上述说的地址),如下图让AG  更新状态指示参数 

 

HFP_第6张图片

 

接下来就是实际遇到问题了

打电话没有声音,看到,是从AG上去接电话的,

 

 

HFP_第7张图片

 

 

 

 

呼叫之后,ACL链路进入SNIFF MODE,本来开始是放着音乐的,这个很正常

然后通电话时,SCO链路维持了8秒,AG主动断掉链路,所以链路都是正常的

 

首先可以确认是数据拿到了但是播不出来

后面发现SCO的PCM接口频率没有调好

 

 

 

 

 

 

 

 

你可能感兴趣的:(蓝牙)