ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

HFP 建立流程

2026/8/11 22:04:42 拓冰建站 浏览量
HFP 建立流程 一、简介首先我们应该要知道 蓝牙HFP协议中根据功能分了两个角色 一个是AG、一个是HFAG(Audio Gateway side): 通话音频输入和输出的总管家。 简单理解就是能独立通话的设备例如手机、平板 备注这里说的是普遍设备哈 其实车机也可以作AG 但是需要更改蓝牙部分协议开关宏这种属于特殊修改了HFHand-Free AG通话音频的输出、输入接口也可以控制AG 简单理解就是不能独立进行通话的设备只能作为通话数据sco的输入源和输出口。例蓝牙耳机、蓝牙音响、车机等设备HFP Core Spec 原图HFP协议栈二、流程HFP建立流程HF端1、蓝牙连接ACL链路建立2、SDP 服务发现协议建立3、SDP服务发现协议发送 查询对端 HFP AG 协议 请求4、对端设备返回 HFP AG的版本号、 RFCOMM Channel Number 以及 对端hfp协议支持的特性5、RFCOMM链路建立 之后的所有AT指令都在这个RFCOMM链路上传输6、HFP特性交互ATBRSF7、通话编码确定ATBAC8、可查询的指标清单ATCIND?9、启动AG端异步状态变化上报功能ATCMER回了AG回了ok后 hfp链接建立完成后续就是HF获取AG端目前指标状态、是否有来电、去电、保持、活跃的状态这个在后面会跟大家一起看。hci log流程图三、详解ATCINDHF发送ATCIND? AG回的 (call,(0,1)),(callsetup,(0-3)),(service,(0-1)),(signal,(0-5)),(roam,(0,1)),(battchg,(0-5)),(callheld,(0-2)) 是什么意思call:是否有活跃中的通话0没有活跃的通话1有活跃的通话callsetup呼叫建立过程0没有呼叫建立1来电中2去电拨号中3远端响铃中sevice: 是否有蜂窝网络0没有蜂窝网络1有蜂窝网络signal蜂窝网络信号强度这个就是手机的蜂窝网络信号强度越大越好可以理解为我们平常说的 几格信号roam是否处于漫游状态0蜂窝网络是正常状态1蜂窝网络处于漫游状态battchg手机电量0~50~100%callheld: 是否有保持中hold的通话0: 没有保持中的通话1有保持状态的通话也有活跃中的通话2有保持状态的通话没有活跃的通话HF发送ATCIND? 就是获取指标值了 AG回的 CIND:0,0,1,5,0,5,0 意思就是call - 0 (没有活跃中的通话)callsetup- 0 没有呼叫在建立service- 1 AG手机有蜂窝网络signal- 5 蜂窝网络信号满格roam- 0 蜂窝网络不处于漫游状态battchg- 5 手机电量充足callheld- 0 没有正在保持的通话这种情况一般是我们刚建立连接的状态 接下来我给大家展示一下几种状态图在问题标图处 大家可以自己看看答案对不对答案放最后四、详解ATCIEV讲这个之前先得把ATCMER这个异步上报的开关简单讲讲其实我们只要看一点 ATCMER3,0,0,1 就是 HF 告诉 AG, 如果有指标状态的变化请及时上报给我 指标就是我们上面ATCIND?讲的6个指标 上报的话就是AG端发送CIEV: [index][value]举个例子ATD1008611 HF控制AG端拨打电话ATCLCC HF查询当前通话列表及状态CIEV:2,2 AG端主动上报状态 callsetup为2 去电拨号中 (注意这里是从1开始不是从0开始BCS:1 AG端告知 HF端 通话编码为1 即CVSDCLCC102001008611,129 AG端返回当前通话列表的第一条这里先不详细讲下篇文章单独讲esco同步连接建立CIEV:2,3 AG端主动上报 callsetup:3 即远端振铃中....CIEV:1,1 AG主动上报 call:1 即现在已有一个活跃的通话CIEV:2,0 AG主动上报 callsetup:0, 即当前没有通话建立因为其实通话已经建立完成了五、问题几个CIND的例子大家可以猜下当前AG端通话处于什么状态六、答案只公布第三个答案其他的小伙伴们可以在评论区讨论哈第三个的答案是一台没有插SIM卡、电量只剩下53%的手机