2. HFP协议概述与角色模型

HFP(Hands-Free Profile)是蓝牙免提规范,定义了车载IVI系统与手机之间进行语音通话的核心协议栈。本章聚焦HFP 1.7/1.8版本的关键演进、AG与HF的角色定义,以及车载IVI系统作为HF的典型应用场景。

2.1 HFP协议版本演进(1.7 → 1.8)

HFP自1.5版本后,在1.7和1.8中引入了多项与车载体验强相关的增强特性。下表对比了两个版本的核心差异:

特性领域 HFP 1.7 HFP 1.8
宽带语音 强制支持mSBC编解码(16 kHz采样) 新增LC3+编解码支持(32 kHz超宽带)
电话簿同步 PBAP 1.1.1基础同步 PBAP 1.2 + vCard 4.0增强字段
多设备管理 单点连接,无冲突处理 多HF设备共存与优先级仲裁
AT命令集 基础AT+BLDN、AT+CHUP等 扩展AT+BINP、AT+BTRH等车载专用命令
安全增强 SSP(安全简单配对) 强制MITM保护 + 密钥更新
关键提示: 车载IVI系统集成HFP 1.8时,需特别注意LC3+编解码的DSP资源占用(约增加15% MIPS),以及PBAP 1.2同步时对电话簿字段的兼容性处理。

2.2 AG与HF角色定义

HFP协议定义了两种明确角色:

  • AG(Audio Gateway,音频网关) — 通常为手机,负责音频输入/输出、网络接入、电话簿存储。AG是音频数据的源端与汇端。
  • HF(Hands-Free,免提设备) — 通常为车载IVI系统、蓝牙耳机等,提供远程音频输入/输出、呼叫控制、电话簿访问。HF通过AT命令操控AG。

角色间的控制流与音频流关系如下图所示:

HFP 角色模型:AG ↔ HF 控制与音频流 AG(音频网关) 手机 / 车载通信模块 • 音频输入/输出 • 网络接入与呼叫路由 • 电话簿存储与查询 • AT命令响应 HF(免提设备) 车载IVI系统 / 蓝牙耳机 • 远程音频输入/输出 • 呼叫控制(接听/挂断/拨号) • 电话簿同步请求 • AT命令发起 AT命令(HF→AG) 响应/通知(AG→HF) SCO/eSCO 上行音频(HF→AG) SCO/eSCO 下行音频(AG→HF) 角色关系说明 HF通过AT命令控制AG建立/释放呼叫,AG通过SCO/eSCO通道传输双向音频。
实践要点: 车载IVI作为HF时,必须同时维护两条逻辑通道:控制通道(RFCOMM承载AT命令)和音频通道(SCO/eSCO承载PCM音频)。两条通道的生命周期管理是HFP集成中最容易出错的环节。

2.3 车载IVI系统作为HF的典型场景

在车载环境中,IVI系统扮演HF角色,与手机(AG)建立HFP连接。典型场景包含以下步骤:

  1. 蓝牙配对与连接建立 — IVI发起配对,完成SSP认证后建立RFCOMM连接。
  2. 服务级连接(SLC) — 交换HF与AG支持的特性(如宽带语音、编解码能力)。
  3. 电话簿同步触发 — HF通过PBAP拉取联系人列表(详见后续章节)。
  4. 呼叫控制 — 用户通过IVI界面发起/接听/挂断电话,HF发送AT命令至AG。
  5. 音频路由 — 建立SCO/eSCO连接,将手机音频路由至车载麦克风与扬声器。
  6. 通话状态同步 — AG主动推送呼叫状态(振铃、通话中、呼叫等待)至HF。

下图展示了车载IVI作为HF的完整交互流程:

车载IVI(HF)与手机(AG)典型交互流程 ① 蓝牙配对与连接建立(SSP + RFCOMM) 1 ② 服务级连接(SLC):交换特性与编解码能力 2 ③ 电话簿同步(PBAP拉取联系人) 3 ④ 呼叫控制:AT+BLDN(拨号)/ AT+CHUP(挂断) 4 ⑤ 音频路由:建立SCO/eSCO连接,传输PCM音频 5 ⑥ 通话状态同步:AG推送振铃/通话中/呼叫等待 6
常见集成陷阱: 步骤③电话簿同步与步骤④呼叫控制存在时序依赖。部分手机AG在SLC未完全建立时拒绝PBAP请求,导致联系人列表为空。建议在SLC完成事件回调后再触发PBAP同步,并设置超时重试机制(通常3秒超时,重试2次)。

2.4 角色模型在车载系统中的映射

将HFP角色模型映射到实际车载IVI系统,各模块职责如下:

车载模块 HFP角色 主要职责
IVI主控SoC HF控制器 AT命令解析、呼叫状态机管理、用户界面交互
蓝牙芯片(BR/EDR) HF传输层 RFCOMM通道维护、SCO/eSCO链路建立、HCI命令处理
音频DSP HF音频处理 mSBC/LC3+编解码、回声消除(AEC)、噪声抑制(NS)
电话簿管理服务 HF数据客户端 PBAP客户端实现、vCard解析、本地联系人缓存
架构建议: 推荐将HFP协议栈与电话簿同步服务分离为独立进程/线程。HFP栈运行于实时优先级线程(确保AT命令响应延迟 < 50 ms),电话簿同步运行于后台低优先级线程(避免阻塞呼叫控制)。两者通过共享内存或消息队列交换联系人索引。