首页 > 其他分享 >从HCI层浅析BLE Audio通话建立流程

从HCI层浅析BLE Audio通话建立流程

时间:2024-10-12 18:21:23浏览次数:10  
标签:AUDIO CIG 音乐 通话 ASE BLE Audio 浅析

背景

BLE AUDIO音乐播放已经调通了,接下来调试BLE AUDIO的通话,BLE AUDIO通话跟音乐协议类似,都是走CIS链路,也是用同样的codec,比经典蓝牙音乐和通话分别采用不同的A2DP和HFP显得协调多了,下面还是以手机和2个蓝牙耳机为例,结合HCI LOG来分析LE AUDIO通话协议的建立:

连接建立过程

  1. 当我们开始拨通电话号码,对方响铃的时候,手机会通过前面建立的CCP EATT链路通知耳机准备好进行通话:

在这里插入图片描述

  1. 紧接着手机会把音乐的ASE disable,然后断开前面建立的两个CIS,同时去除CIG:

在这里插入图片描述

  1. 接下来就开始建立通话的CIG:

在这里插入图片描述
注意上面红色框框,比较和音乐的CIG的区别发现,MAX SDU SIZE由155变成了80,RTN(重传次数)由13变成了2,说明通话更加注重时效性。

  1. 下来会设4条Setup ISO Data Path命令:

在这里插入图片描述
这里比前面音乐也多了两条,因为通话是双向的,音乐是单向,每个方向都要单独设置一条命令,所以2个耳机是4条命令。

  1. 接下来会通过ASE Control 命令去enable 2个相关ASE,尤其要注意右边红色框框的Audio data context
    type由音乐的Media变成了conversational,这个就代表这当前应用场景是通话,而不是音乐

在这里插入图片描述

  1. 接下来耳机会通知手机ASE端口已经准备好了,手机就可以建立CIS连接了:在这里插入图片描述
  2. 接下来就可以进行愉快的通话啦:
    在这里插入图片描述

标签:AUDIO,CIG,音乐,通话,ASE,BLE,Audio,浅析
From: https://blog.csdn.net/Jzj1234555/article/details/142881330

相关文章

  • coca flex (variable length) queries
     LISTdisplay:flex(variablelength)queriesYoucannowdosearcheswherethereareavariablenumberof"slots".Forexample,thesearch:PUT (NOUN){3} away  (clicktorunthequery)wouldfindstringswith PUT atthebeginnin......
  • C# ListToDataTable
    publicstaticDataTableListToDataTable<T>(List<T>list){DataTabledt=newDataTable();//获取实体类型Typetype=typeof(T);//添加列PropertyInfo[]properties=type.G......
  • TypeError: add_triangle_mesh(): incompatible function arguments. The following a
    12024.10.1214:52Traceback(mostrecentcalllast):File"terrain_creation.py",line119,in<module>gym.add_triangle_mesh(sim,vertices.flatten(),triangles.flatten(),tm_params)TypeError:add_triangle_mesh():incompatiblefunct......
  • 泛微e-cology安装报错 MySQL初始化问题Table 'ecology.e9_para_xxx' doestn't exist
    在安装泛微e-cology9进行初始化数据库时出现如下报错Table 'ecology.e9_para_xxx'doestn'texist 明明是在初始化数据库  数据表不存在不是很正常==经过研究  发现泛微在初始化数据库时 会执行存储过程脚本  使用dbeaver可以看到 根据代码逻辑看  如......
  • Non-terminating decimal expansion; no exact representable decimal result.
    使用Bigdecimal做除法publicstaticvoidmain(String[]args){//1、不设置保留位数System.out.println(BigDecimal.valueOf(2).divide(BigDecimal.valueOf(3)));//2、divide以后再设置保留位数System.out.println(BigDecimal.valueOf(......
  • R语言使用randomForest包中的randomForest函数构建随机森林模型、使用importance函数
    R语言使用randomForest包中的randomForest函数构建随机森林模型、使用importance函数查看特征重要度、使用table函数计算混淆矩阵评估分类模型性能、包外错误估计OOB(out-of-bagerrorestimate)目录R语言使用randomForest包中的randomForest函数构建随机森林模型(Randomfores......
  • iptables配置网络防火墙
    文章目录基本链配置动作常用命令基本链链是数据包传播的途径,每条链对应多条规则。数据包进入服务器需要经过多道关卡,以下是三条应用在“主机防火墙”中的链。INPUT:入口流量OUTPUT:出口流量FORWARD:转发流量配置动作配置防火墙规则时,对于指定的数据包,我们通常可以......
  • datatables使用ajax获取数据
    前端://初始化datatablevartable3=$('.jiaoshi_lst').DataTable({"processing":true,"serverSide":true,"paging":true,"ordering":false,"searching":false......
  • 解决double类型计算时丢失精度问题
    问题:double类型在进行计算时可能会丢失精度doublev1=0.2; doublev2=0.3; doublev3=v2-v1;预期:v3=0.1实际:v3=0.09999999999999998解决:用BigDecimal类型包装一下数据然后计算(需要先把数据转为String类型!)不转为String类型:doublev1=0.2; doublev2=0.3; d......
  • Small Permutation Problem (Easy Version)
    算法考虑转化每个点\(p_i\)在一个平面直角坐标系中表示为点\((i,p_i)\)于是转化为一个棋盘问题,即每一个点不能在同一行/同一列\(a\)数组的限制相当于在左下角为\((0,0)\),右上角为\((i,i)\)中的正方形中,有\(a_i\)个棋子于是在每一次加入的时候,都只能在......