LE AUDIO快速了解

news/2024/5/15 6:11:55/文章来源:https://blog.csdn.net/abc503980297/article/details/130017460

有BIS和CIS两种

BIS是广播的,不需要连接,只需要监听

CIS要建立连接的,除了ACL链路,还需要建立CIS链路

BIS部分

也没啥要看的,只需要记住3个指令就可以了

主要是HCI的3个指令 2068  206b  206e 这3个指令即可

2068是创建的BIS的,206B就是去监听的,想听那个BIS可以选择,206e是datapath的

TX

//第一部分初始化
MbtHost.PrvMakeCmd: 0x0c03 0B
MbtHost.EvtCommandComplete: 0x0c03
MbtHost.PrvMakeCmd: 0x1001 0B
MbtHost.EvtCommandComplete: 0x1001
MbtHost.PrvMakeCmd: 0x1009 0B
MbtHost.EvtCommandComplete: 0x1009
MbtHost.PrvMakeCmd: 0x0c01 8B
MbtHost.EvtCommandComplete: 0x0c01 //HCI_Set_Event_Mask = 0x0C01,
MbtHost.PrvMakeCmd: 0x0c63 8B
MbtHost.EvtCommandComplete: 0x0c63 //HCI_Set_Event_Mask_Page_2 = 0x0C63,
MbtHost.PrvMakeCmd: 0x2001 8B
MbtHost.EvtCommandComplete: 0x2001 //HCI_LE_Set_Event_Mask = 0x2001,
MbtHost.PrvMakeCmd: 0x2074 2B
MbtHost.EvtCommandComplete: 0x2074 //HCI_LE_Set_Host_Feature = 0x2074,
MbtHost.PrvMakeCmd: 0x2074 2B
MbtHost.EvtCommandComplete: 0x2074
MbtHost.PrvMakeCmd: 0x2060 0B
MbtHost.EvtCommandComplete: 0x2060 //HCI_LE_Read_Buffer_Size_v2 = 0x2060,
TC step done//第二部分开启BIS的传输
MbtHost.PrvMakeCmd: 0x2036 25B  //HCI_LE_Set_Extended_Advertising_Parameters = 0x2036,
MbtHost.EvtCommandComplete: 0x2036
MbtHost.PrvMakeCmd: 0x2037 18B   //HCI_LE_Set_Extended_Advertising_Data = 0x2037,
MbtHost.EvtCommandComplete: 0x2037
MbtHost.PrvMakeCmd: 0x2039 6B    //HCI_LE_Set_Extended_Advertising_Enable = 0x2039,
MbtHost.EvtCommandComplete: 0x2039
MbtHost.PrvMakeCmd: 0x203e 7B    //HCI_LE_Set_Periodic_Advertising_Parameters = 0x203E,
MbtHost.EvtCommandComplete: 0x203e
MbtHost.PrvMakeCmd: 0x2040 2B    //HCI_LE_Set_Periodic_Advertising_Enable = 0x2040,
MbtHost.EvtCommandComplete: 0x2040
MbtHost.PrvMakeCmd: 0x2068 31B    //HCI_LE_Create_BIG = 0x2068,  创建一下BIG的连接 *
MbtHost.PrvEvtCommandStatus: 0x2068
MbtHost.OnLeMetaEvent: 0x1b       //HCI_LE_Create_BIG_Complete = 0x1B,
MbtHost.PrvMakeCmd: 0x206e 13B    //HCI_LE_Setup_ISO_Data_Path = 0x206E,  设置一下iso数据的源路径 *
MbtLink[0006].OnConnected: nResult00000000
MbtHost.EvtCommandComplete: 0x206e
TC step done
MbaIso[0006].OnTimer: rx0 tx174pkts
MbaIso[0006].OnTimer: rx0 tx358pkts
MbaIso[0006].OnTimer: rx0 tx542pkts
MbaIso[0006].OnTimer: rx0 tx726pkts
MbaIso[0006].OnTimer: rx0 tx910pkts
MbaIso[0006].OnTimer: rx0 tx1094pkts
MbaIso[0006].OnTimer: rx0 tx1278pkts
MbaIso[0006].OnTimer: rx0 tx1462pkts

RX

//第一部同上
MbtHost.PrvMakeCmd: 0x0c03 0B
MbtHost.EvtCommandComplete: 0x0c03
MbtHost.PrvMakeCmd: 0x1001 0B
MbtHost.EvtCommandComplete: 0x1001
MbtHost.PrvMakeCmd: 0x1009 0B
MbtHost.EvtCommandComplete: 0x1009
MbtHost.PrvMakeCmd: 0x0c01 8B
MbtHost.EvtCommandComplete: 0x0c01
MbtHost.PrvMakeCmd: 0x0c63 8B
MbtHost.EvtCommandComplete: 0x0c63
MbtHost.PrvMakeCmd: 0x2001 8B
MbtHost.EvtCommandComplete: 0x2001
MbtHost.PrvMakeCmd: 0x2074 2B
MbtHost.EvtCommandComplete: 0x2074
MbtHost.PrvMakeCmd: 0x2074 2B
MbtHost.EvtCommandComplete: 0x2074
MbtHost.PrvMakeCmd: 0x2060 0B
MbtHost.EvtCommandComplete: 0x2060
TC step done//第二部分是监听的部分
MbtHost.PrvMakeCmd: 0x2041 8B    //HCI_LE_Set_Extended_Scan_Parameters = 0x2041,
MbtHost.EvtCommandComplete: 0x2041
MbtHost.PrvMakeCmd: 0x2042 6B    //HCI_LE_Set_Extended_Scan_Enable = 0x2042,
MbtHost.EvtCommandComplete: 0x2042
MbtHost.PrvMakeCmd: 0x2044 14B
MbtHost.PrvEvtCommandStatus: 0x2044 //HCI_LE_Periodic_Advertising_Create_Sync =0x2044, 这个地方传入监听的BIS的地址
MbtHost.OnLeMetaEvent: 0x0e
MbtHost.PrvMakeCmd: 0x206b 25B //HCI_LE_BIG_Create_Sync = 0x206B, //启动监听 监听的BIS 第几个等等
MbtHost.PrvEvtCommandStatus: 0x206b
MbtHost.OnLeMetaEvent: 0x1d
MbtHost.PrvMakeCmd: 0x206e 13B //HCI_LE_Setup_ISO_Data_Path = 0x206E, //HCI传输
MbtLink[0203].OnConnected: nResult00040000
MbtHost.EvtCommandComplete: 0x206e
TC step done
MbaIso[0203].OnTimer: rx200 tx0pkts
MbaIso[0203].OnTimer: rx401 tx0pkts
MbaIso[0203].OnTimer: rx602 tx0pkts
MbaIso[0203].OnTimer: rx803 tx0pkts
MbaIso[0203].OnTimer: rx1005 tx0pkts
MbaIso[0203].OnTimer: rx1206 tx0pkts
MbaIso[0203].OnTimer: rx1407 tx0pkts
MbaIso[0203].OnTimer: rx1608 tx0pkts

 创建的时候,主要关心几个参数

比如小红创建了BIS广播,小明和小强来听,创建的时候就要创建两条BIS

这几个参数主要是说,小明和小强获取数据的同步问题

BN IRC PTO NSE 这些,这个可以看最新的5.3的协议,有传输艺术的

锚点,同一个evt count,小红就喊了一个”啊“,小明和小强分别听了两次“啊啊”两次,所以小红同一个Interval“啊啊啊啊”了四声,小红担心,第一是怕他们听不到,第二是怕他们听的不同步,不能一起听见,差不多这个意思,开了车

CIS和BIS差不多,就是要和之前一样先连上ACL,然后发LL指令再建立ISO

CIS部分

TX

//第一部分初始化同上
MbtHost.EvtCommandComplete: 0x0c03
MbtHost.PrvMakeCmd: 0x1001 0B
MbtHost.EvtCommandComplete: 0x1001
MbtHost.PrvMakeCmd: 0x1009 0B
MbtHost.EvtCommandComplete: 0x1009
MbtHost.PrvMakeCmd: 0x0c01 8B
MbtHost.EvtCommandComplete: 0x0c01
MbtHost.PrvMakeCmd: 0x0c63 8B
MbtHost.EvtCommandComplete: 0x0c63
MbtHost.PrvMakeCmd: 0x2001 8B
MbtHost.EvtCommandComplete: 0x2001
MbtHost.PrvMakeCmd: 0x2074 2B
MbtHost.EvtCommandComplete: 0x2074
MbtHost.PrvMakeCmd: 0x2074 2B
MbtHost.EvtCommandComplete: 0x2074
MbtHost.PrvMakeCmd: 0x2060 0B
MbtHost.EvtCommandComplete: 0x2060
TC step done//第二部分    
MbtHost.PrvMakeCmd: 0x2006 15B    //HCI_LE_Set_Advertising_Parameters = 0x2006,
MbtHost.EvtCommandComplete: 0x2006
MbtHost.PrvMakeCmd: 0x2008 32B
MbtHost.EvtCommandComplete: 0x2008 //HCI_LE_Set_Advertising_Data = 0x2008,
MbtHost.PrvMakeCmd: 0x2009 32B
MbtHost.EvtCommandComplete: 0x2009 //HCI_LE_Set_Scan_Response_Data = 0x2009,
MbtHost.PrvMakeCmd: 0x200a 1B
MbtHost.EvtCommandComplete: 0x200a //HCI_LE_Set_Advertise_Enable = 0x200A,
MbtHost.OnLeMetaEvent: 0x0a  //HCI_LE_Enhanced_Connection_Complete = 0x0A, 首先就是普通的广告 对端来接收成功
MbtHost.OnLeMetaEvent: 0x14 //CI_LE_Channel_Selection_Algorithm = 0x14,
MbtHost.OnLeMetaEvent: 0x1a  //HCI_LE_CIS_Request = 0x1A,   然后对端发起cis request llid 多了一个cis data
MbtHost.PrvMakeCmd: 0x2066 2B //HCI_LE_Accept_CIS_Request = 0x2066, 发起接受
MbtHost.PrvEvtCommandStatus: 0x2066
MbtHost.OnLeMetaEvent: 0x19   //HCI_LE_CIS_Established = 0x19, 建立CIS
MbtHost.PrvMakeCmd: 0x206e 13B
MbtHost.EvtCommandComplete: 0x206e    //HCI_LE_Setup_ISO_Data_Path = 0x206E, 设置hci
MbtHost.PrvMakeCmd: 0x206e 13B
MbtLink[0102].OnConnected: nResult00000000
MbtHost.EvtCommandComplete: 0x206e
TC step done
MbaIso[0102].OnTimer: rx0 tx174pkts
MbaIso[0102].OnTimer: rx0 tx358pkts
MbaIso[0102].OnTimer: rx0 tx542pkts
MbaIso[0102].OnTimer: rx0 tx726pkts

RX

//第一部同上
MbtHost.PrvMakeCmd: 0x0c03 0B
MbtHost.EvtCommandComplete: 0x0c03
MbtHost.PrvMakeCmd: 0x1001 0B
MbtHost.EvtCommandComplete: 0x1001
MbtHost.PrvMakeCmd: 0x1009 0B
MbtHost.EvtCommandComplete: 0x1009
MbtHost.PrvMakeCmd: 0x0c01 8B
MbtHost.EvtCommandComplete: 0x0c01
MbtHost.PrvMakeCmd: 0x0c63 8B
MbtHost.EvtCommandComplete: 0x0c63
MbtHost.PrvMakeCmd: 0x2001 8B
MbtHost.EvtCommandComplete: 0x2001
MbtHost.PrvMakeCmd: 0x2074 2B
MbtHost.EvtCommandComplete: 0x2074
MbtHost.PrvMakeCmd: 0x2074 2B
MbtHost.EvtCommandComplete: 0x2074
MbtHost.PrvMakeCmd: 0x2060 0B
MbtHost.EvtCommandComplete: 0x2060
TC step done//第二部分    
MbtHost.PrvMakeCmd: 0x200d 25B  //特别熟悉的200d 就是发起ble的连接
MbtHost.PrvEvtCommandStatus: 0x200d
MbtHost.OnLeMetaEvent: 0x0a //HCI_LE_Enhanced_Connection_Complete = 0x0A,
MbtHost.OnLeMetaEvent: 0x14   //HCI_LE_Channel_Selection_Algorithm = 0x14,
MbtHost.PrvMakeCmd: 0x2062 33B   //HCI_LE_Set_CIG_Parameters = 0x2062, 设置cig的参数
MbtHost.EvtCommandComplete: 0x2062 
MbtHost.PrvMakeCmd: 0x2064 5B  //HCI_LE_Create_CIS = 0x2064, 发起cis的连接
MbtHost.PrvEvtCommandStatus: 0x2064
MbtHost.OnLeMetaEvent: 0x19   //HCI_LE_CIS_Established = 0x19, 已经建立cis
MbtHost.PrvMakeCmd: 0x206e 13B
MbtHost.EvtCommandComplete: 0x206e //HCI_LE_Setup_ISO_Data_Path = 0x206E, 设置hci
MbtHost.PrvMakeCmd: 0x206e 13B
MbtLink[0002].OnConnected: nResult00000000
MbtHost.EvtCommandComplete: 0x206e
TC step done
MbaIso[0002].OnTimer: rx976 tx174pkts
MbaIso[0002].OnTimer: rx1949 tx358pkts
MbaIso[0002].OnTimer: rx2941 tx542pkts
MbaIso[0002].OnTimer: rx3925 tx726pkts
MbaIso[0002].OnTimer: rx4918 tx910pkts
MbaIso[0002].OnTimer: rx5906 tx1094pkts
MbaIso[0002].OnTimer: rx6895 tx1278pkts

HCI指令2064 2066和 206e  发起cis的连接 ,直接看一个LL的指令即可

 原理差不多一样,两条链路,然后考虑重复传输和交叉传输,小红”啊啊啊啊“四声

怎么传由参数决定,LL REQ的时候就可以设置,这个图就是两条CIS链路,同一个interval分别”啊“一下,听到了要回ACK

 一样,小红就喊了”啊啊啊啊“,小明和小强分别听了两次“啊啊”两次,这个差不多就是le audio

本地然后再调一下datapatch,基本上可以用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_283204.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nacos安全性探究

Nacos怎么做安全校验的? 以下使用nacos2.x 如上图所示, 可以直接访问Nacos的接口来获取用户列表。这说明Nacos的接口被爆露,任何情况下都可以访问,因此安全性得不到保障。 Nacos 使用 spring security 作为安全框架。spring sec…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取每张图像的微秒时间和FrameID(C#)

BGAPI SDK获取图像微秒级时间和FrameID Baumer工业相机Baumer工业相机FrameID技术背景一、FrameID是什么?二、使用BGAPI SDK获取图像微秒时间和FrameID步骤 1.获取SDK图像微秒级时间2.获取SDK图像FrameIDBaumer工业相机使用微秒级时间和FrameID保存的用处Baumer工业…

混淆矩阵Confusion Matrix(resnet34 基于 CIFAR10)

目录 1. Confusion Matrix 2. 其他的性能指标 3. example 4. 代码实现混淆矩阵 5. 测试,计算混淆矩阵 6. show 7. 代码 1. Confusion Matrix 混淆矩阵可以将真实标签和预测标签的结果以矩阵的形式表示出来,相比于之前计算的正确率acc更加的直观…

jenkins打包发布前端项目

1.配置前端nodejs打包环境 1.1安装nodejs插件 1.2配置jenkins nodejs环境 2.下载git插件(使用此插件配置通过gitlab标签拉取项目) 3.创建一个自由风格的发布项目 4.配置项目构建流程 4.1添加钉钉告警 4.2配置参数化构建 4.3配置源码管理为git拉取项目 4.4配置构建环境 4.5配置…

transform属性

CSS transform属性允许对某一个元素进行某些形变, 包括旋转,缩放,倾斜或平移等。 注意事项,并非所有的盒子都可以进行transform的转换,transform对于行内级非替换元素是无效的,比如对span、a元素等 常见的函数transform function有&#xf…

算法笔记:匈牙利算法

1 二部图(二分图) 二分图(Bipartite graph)是一类特殊的图,它可以被划分为两个部分,每个部分内的点互不相连。 匈牙利算法主要用来解决两个问题:求二分图的最大匹配数和最小点覆盖数。 2 最大匹…

[C++笔记]初步了解STL,string,迭代器

STL简介 STL(standard template libaray-标准模板库): 是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包含数据结构与算法的软件框架。 是一套功能强大的 C 模板类,提供了通用的模板类和函数,这些模板…

STM32开发(十二)STM32F103 功能应用 —— NTC 温度采集

文章目录一、基础知识点二、开发环境三、STM32CubeMX相关配置四、Vscode代码讲解(过程中相关问题点在第五点中做解释说明)五、知识点补充六、结果演示一、基础知识点 了解STM32 片内资源ADC。本实验是基于STM32F103开发 实现 NTC温度采集。 NTC温度采集…

3年外包离奇被裁,痛定思痛24K上岸字节跳动....

三年前,我刚刚从大学毕业,来到了一家外包公司工作。这份工作对于我来说是个好的起点,因为它让我接触到了真正的企业项目和实际的开发流程。但是,随着时间的流逝,我发现这份工作并没有给我带来足够的成长和挑战。 三年…

文心一言平替版ChatGLM本地部署(无需账号)!

今天用了一个超级好用的Chatgpt模型——ChatGLM,可以很方便的本地部署,而且效果嘎嘎好,经测试,效果基本可以平替内测版的文心一言。 目录 一、什么是ChatGLM? 二、本地部署 2.1 模型下载 2.2 模型部署 2.3 模型运…

数据结构系列13——排序(归并排序)

目录 1. 递归实现归并排序 1.1 思路 1.2 代码实现 1.3 时间复杂度和空间复杂度 2. 非递归实现归并排序 2.1 思路 2.2 代码实现 2.3 时间复杂度和空间复杂度 1. 递归实现归并排序 1.1 思路 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列…

Excel 文件 - 比如 .csv文件编码问题 转为 UTF-8 编码 方法,解决中文乱码问题 - 解决科学计数显示问题

解决 excel 文件编码问题 1、方法一: 有点点击 excel 文件,然后选择打开方式,选择使用 Excel 2016 软件打开 选择 工具 ——> Web 选项 这里选择 UTF-8 编码 2、方法二 wps 导出为 .csv 文件,然后修改 csv 文件的后缀…

Linux修改密码报错Authentication token manipulation error的终极解决方法

文章目录报错说明解决思路流程排查特殊权限有没有上锁查看根目录和关闭selinux/etc/pam.d/passwd文件/etc/pam.d/system-auth文件终极办法,手动定义密码passwd: Have exhausted maximum number of retries for servic、ssh用普通用户登录输入密码正确但是登录时却提…

元宇宙是什么,元宇宙虚拟会议改变会议体验

随着人类社会的发展和科技的进步,传统的会议方式已经无法满足现代社会的需求。为了更好地满足社会的需求,VR全景元宇宙虚拟会议是近年来快速崛起的新兴领域,其融合了虚拟现实技术和通信技术,为人们提供了一种全新的交流、协作和学…

【探花交友】day02—完善个人信息

目录 1、完善用户信息 1.1、阿里云OSS 1.2、百度人脸识别 1.3、保存用户信息 1.4、上传用户头像 2、用户信息管理 2.1、查询用户资料 2.2、更新用户资料 3、统一token处理 3.1、代码存在的问题 3.2、解决方案 3.3、代码实现 4、统一异常处理 4.1、解决方案 4.2、…

本地部署Stable Diffusion教程,亲测可以安装成功

系列文章目录 之后补充 文章目录系列文章目录前言一、Stable Diffusion是什么?二、安装前的准备1.检查自己的电脑配置是否符合要求2.下载安装Git3.下载安装Python三、下载stable-diffusion-webui仓库四、运行webui-user.bat总结前言 近期,智能AI绘画以其…

AndroidStudio第一步安装和配置环境

AndroidStudio第一步安装和配置环境 文章目录AndroidStudio第一步安装和配置环境1.环境变量2.PATH编辑3.cmd测试版本4.android studio设置4.1 保留压缩包4.2解压缩包4.3 设置本地4.4 Dependencies5.生成apk5.15.2 需要添加才能被手机安装6.Android studio安装包和gradle下载地址…

数据仓库工具箱-第6章-订单管理

文章目录重要专业名词含义一、订单管理总线矩阵二、订单事务2.1 事实表规范化2.2 日期维度(维度角色扮演)2.2.1 角色扮演与总线矩阵2.3 产品维度2.3.1 产品维度共同特征2.3.2 维度的层次结构2.3.3 规范化与反规范化2.4 客户维度2.4.1 单一维度表与多维度…

Maven核心概念

一、Maven基础知识 Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。 1、Maven模型 2、仓库分类 本地仓库:自己计算机上的一个目录中央仓库&a…

AR”将会成为“更加日常化的移动设备应用的一部分”吗

目录 1:AR是什么 2:AR给人类带来的贡献 3:人们在生活中可以遇到许多 AR 技术应用 4:AR 技术的未来发展的趋势: 大学主攻VR,从大一就对VR的知识,设备,已经所涉及的知识伴随我的整…