从HCI和空口分析HFP通话和eSCO建立

server/2024/10/18 2:37:40/

背景

HFP作为经典蓝牙通话建立和断开的协商服务,通话数据则是通过eSCO链路进行传输,下面以手机和蓝牙耳机为例,结合HCI和空口分析从HFP连接建立,到AT命令协商会话,再到eSCO通话数据链路的建立 。

HFP_3">1:HFP连接建立

HFP_5">1:SDP发现HFP服务

在这里插入图片描述
从上面看到手机发起了HFP SDP查询,耳机支持HFP 1.8版本,server channel为1。

2:RFCOMM通道建立

在这里插入图片描述
从上图看到手机会去连接耳机的channel 1,然后建立起RFCOMM,HFP也是基于RFCOMM的连接,至此HFP连接建立成功。

HFP_AT_15">2:HFP AT命令协商

首先要明确耳机作为HFP Client,手机则作为HFP AG(server),下面看一下手机和耳机通过AT命令都做了哪些协商
在这里插入图片描述
可以看到上图手机和耳机交换了很多AT命令,下面拿主要的AT命令解释一下:

AT命令解释
AT+BRSFEC and/or NR function: Supported 、Call waiting or 3-way calling: Supported,CLI presentation capability: Supported,Voice recognition activation: Supported,Remote volume control: Supported,Enhanced call status: Supported,Enhanced call control: Supported,Codec negotiation: Supported ,HF Indicators: Supported,eSCO S4: Supported就是协商HFP Client和HFP AG支持通话哪些feature,比如是否支持噪音和回显,是否支持三方通话,codec协商,音量控制等等
AT+BACSupported Codec: CVSD mSBC耳机告知手机目前支持的codec,1为cvsd,2为mSBC,也就是所谓的窄带和宽带两种codec,分别对应8khz和16khz采样率,hfp1.9支持了超宽带codec LC3,支持32khz采样率
+CINDMobile Termination Indicators (“call”,(0,1)),(“callsetup”,(0-3)),(“service”,(0-1)),(“signal”,(0-5)),(“roam”,(0,1)),(“battchg”,(0-5)),(“callheld”,(0-2))HFP AG告知HFP Client支持的指示器和范围,以及当前的状态,比如后面看到的+CIEV:1,1就是表示(“call”,1)
AT+CMER3,0,0,1简单的说就是使能和去能AG的indicator通知HF的能力,3,0,0,1是activates“indicator events reporting”,激活HFP AG主动通知HFP Client电话状态变化信息,表示手机可以通过+CIEV:xx:xx告知耳机,通话接通或断开等。如果是3,0,0,0则表示关闭AG通过indicator 通知HF的能力
AT+CHLD在这里插入图片描述这个有两种形式的命令: 1:AT+CHLD=? 表示HFP Client主动向HFP AG查询三方通话的一些特性;2:+CHLD 表示HFP AG上报HFP Client,当前三方通话的特性和状态。
AT+BIND在这里插入图片描述BIND是Bluetooth HF Indicators Feature的缩写,该命令用于HFP Client 向HFP AG告知自己支持哪些HF Indicators Feature,以及哪些被使能了。该指令只有在HFP Client和HFP AG在AT+BRSF时HF Indicators:supported才可以使用。
+BIND+BIND:1,1 +BIND:2,1Bluetooth HF Indicators Feature -->Indicator: enhanced Safety State: Enhanced Safety is Enabled; Indicator: Battery Level State: Remaining level of Battery 1
AT+NREC在这里插入图片描述关闭回音消除和噪音减少功能 Disable “Echo Canceling\Noise Reduction function”
AT+VGS15设置耳机speaker音量
AT+CCWA1Enable call waiting notification,打开通话等待通知功能
AT+BIA在这里插入图片描述indicator激活

经过上面的耳机和手机通过AT命令进行了基本情况协商之后,当手机开始拨号后,我们会看到如下AT命令:
在这里插入图片描述

  1. +BCS:2 表示手机选择mSBC codec作为数据的编码方式
  2. +CIEV 2,2 表示手机开始拨对方的号码
  3. +CIEV 2,3 表示对方已经响铃
  4. +CIEV 1,1 表示电话已经接通
  5. +CIEV 2,0 表示电话接通后,没有电话再拨进来

eSCO_42">eSCO的建立:

eSCO的建立时间是当手机开始拨对方电话的时候就开始了:
在这里插入图片描述
从上图空口可以看到在CIEV:2,2,也是就手机拨对方电话的时候就通过LMP eSCO Link Request去和手机建立eSCO连接,如绿色框框。下面再看看这个命令有啥参数:
在这里插入图片描述
如上图,这里面主要有四个参数:

参数解释
TeSCO12 slots = 7.500 ms就是双向传输一个包的时间周期
WeSCO4 slots = 2.500 ms重传的窗口时间
eSCO Packet Type C->P2-EV3采用2M Ehanced voice 3数据格式传输
Packet Length C->P60 bytes单个包的字节数

再看一下电话接通后(+CIEV 1,1),eSCO在空中传输的数据:
在这里插入图片描述
从上图可以看到单向的两个数据包之间的时间间隔都是7.5ms,而且发生了一次重传:

在这里插入图片描述

从上图可以看到手机发送给耳机的2-EV3数据包进行了重传,重传窗口是2.5ms。


http://www.ppmy.cn/server/132656.html

相关文章

this指针—静态成员—单例模式

01 this指针 C是在C语言的基础上发展而来的,第一个C的编译器实际上是将C程序翻译为C语言,然后再使用C语言编译器编译 C语言中没有类的概念,只有结构,函数都是全局函数,没有成员函数的概念 翻译的时候,将cla…

24/10/12 算法笔记 LeNet

LeNet-5的成功在于其能够自动从图像中学习特征,而不需要人工设计特征提取器。这种能力使得LeNet-5在图像识别和分类任务中表现出色,并且对后来的深度学习模型产生了深远的影响。尽管现在的深度学习模型在规模和复杂性上远超LeNet-5,但LeNet-5…

好用的python相关的AI工具Bito介绍

插件名称:Bito 好用的python相关的AI工具Bito介绍 step 1:点插件step 2:搜索bito并安装step3 :需要登录,要有真实邮箱,按步骤走就行,完后就可以使用 step 1:点插件 step 2:搜索bito并安装 step3…

鸿蒙fork()功能

fork功能 上层通过使用fork()函数创建新进程。 fork是什么&#xff1f; #include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h>int main(void) {pid_t pid;char *message;int n;pid fork();if (pid < 0) {perror…

CTFHUB技能树之SQL——字符型注入

开启靶场&#xff0c;打开链接&#xff1a; 直接指明是SQL字符型注入&#xff0c;但还是来判断一下 &#xff08;1&#xff09;检查是否存在注入点 1 and 11# 返回正确 1 and 12# 返回错误 说明存在SQL字符型注入 &#xff08;2&#xff09;猜字段数 1 order by 2# 1 order…

Java基础03-应用程序编程接口(API)

三、应用程序编程接口&#xff08;API&#xff09; 1、包 什么是包&#xff1a;包是用来分门别类的管理各种不同程序的&#xff0c;类似于文件夹&#xff0c;建包有利于程序的管理和维护。 注意事项&#xff1a; 同一个包下可以直接访问。不同包下要导包才可以使用自己程序下使…

动态规划-简单多状态dp问题——面试题17.16.按摩师

多状态问题的核心就是每个位置不止有一个状态&#xff0c;因此需要多个dp表表示不同状态对应位置的值&#xff0c;然后根据题目考虑特定情况写出状态转移方程即可 1.题目解析 题目来源&#xff1a;面试题17.16.按摩师——力扣 测试用例 2.算法原理 1.状态表示 这里与路径问…

Java 类和对象详解(上 )

个人主页&#xff1a; 鲤鱼王打挺-CSDN博客 Java专栏&#xff1a;https://blog.csdn.net/2401_83779763/category_12801101.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12801101&sharereferPC&sharesource2401_83779763&sharefromfrom_link &…