蓝牙 WBS 宽带通话 (wide band speech) 剖析(二) -- BCCMD control chip

一.概述

此文章接上篇文章:http://blog.csdn.net/xiaoxiaopengbo/article/details/51565016

此文介绍蓝牙通话WBS功能,通过BCCMD command方式来告知芯片DSP对通话data进行msbc编解码

如有不懂BCCMD看此文档:http://blog.csdn.net/xiaoxiaopengbo/article/details/51557771

二.flow图

三.步骤:

1.----------------------------------------------------------

获取I2S的sink ID为0xBA5F

获取I2S的sink ID为0xBA57

2.----------------------------------------------------------

3.----------------------------------------------------------

4.----------------------------------------------------------

获取SCO的source ID为0x2EA9

5.----------------------------------------------------------

获取SCO的sink ID为0xBA56

6.----------------------------------------------------------

7.----------------------------------------------------------

挂断电话

时间: 2024-08-17 06:22:02

蓝牙 WBS 宽带通话 (wide band speech) 剖析(二) -- BCCMD control chip的相关文章

蓝牙 宽带通话 (wide band speech)WBS 剖析(一) -- profile层

一.概述 WBS(wide band speech)通俗来讲就是蓝牙宽带通话,通话数据frequency 16K,采用msbc编解码(chip中实现) 和NBS(narrow band speech)相对,NBS通俗来讲是窄带通话,通话数据frequency 8K,采用CSVD编解码(chip中实现) NBS是默认 二.实现 要实现WBS,总体来说比较复杂 要分两个阶段进行: 1.profile层(HFP AT COMMAND) 2.control bluetooth chip(如 CSR 通过

libevent源码深度剖析二

libevent源码深度剖析二 --Reactor模式 张亮 前面讲到,整个libevent本身就是一个Reactor,因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念. 1 Reactor的事件处理机制 首先来回想一下普通函数调用的机制:程序调用某函数?函数执行,程序等待?函数将结果和控制权返回给程序?程序继续处理. Reactor释义"反应堆",是一种事件驱动机制.和普通

boost.asio源码剖析(二) ---- 架构浅析

* 架构浅析 先来看一下asio的0层的组件图.                     (图1.0) io_object是I/O对象的集合,其中包含大家所熟悉的socket.deadline_timer等对象,主要功能是提供接口给用户使用. services服务是逻辑功能的实现者,其中包含提供定时功能的deadline_timer_service.提供socket相关功能的win_iocp_socket_service(windows平台)/reactive_socket_service(其他

Apache Flink fault tolerance源码剖析(二)

继续Flink Fault Tolerance机制剖析.上一篇文章我们结合代码讲解了Flink中检查点是如何应用的(如何根据快照做失败恢复,以及检查点被应用的场景),这篇我们来谈谈检查点的触发机制以及基于Actor的消息驱动的协同机制.这篇涉及到一个非常关键的类--CheckpointCoordinator. org.apache.flink.runtime.checkpoint.CheckpointCoordinator 该类可以理解为检查点的协调器,用来协调operator和state的分布

[Android] Toast问题深度剖析(二)

欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者: QQ音乐技术团队 题记 Toast 作为 Android 系统中最常用的类之一,由于其方便的api设计和简洁的交互体验,被我们所广泛采用.但是,伴随着我们开发的深入,Toast 的问题也逐渐暴露出来. 本系列文章将分成两篇: 第一篇,我们将分析 Toast 所带来的问题 第二篇,将提供解决 Toast 问题的解决方案 (注:本文源码基于Android 7.0) 1.回顾 上一篇 [[Android] Toast问题深度剖析(一)]

Django Rest Framework源码剖析(二)-----权限

一.简介 在上一篇博客中已经介绍了django rest framework 对于认证的源码流程,以及实现过程,当用户经过认证之后下一步就是涉及到权限的问题.比如订单的业务只能VIP才能查看,所以这时候需要对权限进行控制.下面将介绍DRF的权限控制源码剖析. 二.基本使用 这里继续使用之前的示例,加入相应的权限,这里先介绍使用示例,然后在分析权限源码 1.在django 项目下新建立目录utils,并建立permissions.py,添加权限控制: class MyPremission(obje

sk_buff 剖析 (二)

5 sk_buff管理和操作函数 5.1缓冲区操作函数 有很多函数,通常都比较短小而且简单,内核用这些函数操作sk_buff的成员变量或者sk_buff链表.首先来看分配和释放缓冲区的函数,然后是一些通过移动指针在缓冲区的头部或尾部预留空间的函数.如果你看过include/linux/skbuff.h和net/core/skbuff.c中的函数,你会发现,基本上每个函数都有两个版本,名字分别是do_something和__do_something.通常第一种函数是一个包装函数,它会在第二种函数的

Android硬件抽象层(HAL)深入剖析(二)

上一篇我们分析了android HAL层的主要的两个结构体hw_module_t(硬件模块)和hw_device_t(硬件设备)的成员,下面我们来具体看看上层app到底是怎么实现操作硬件的? 我们知道,一些硬件厂商不愿意将自己的一些核心代码开放出去,所以将这些代码放到HAL层,但是怎么保证它不开放呢?HAL层代码不是也让大家知道下载吗?其实硬件厂商的HAL核心代码是以共享库的形式出现的,每次在需要的时候,hal会自动加载调用相关共享库.那么是怎么加载找到某一硬件设备对应的共享库的呢?这也是我们这

移动开发框架剖析(二) Hammer专业的手势控制

浏览器底层并没有给元素提供类似,单击,双击,滑动,拖动这些直接可以用的控制接口,一切的手势动作都只能通过模拟出来.移动端浏览器唯一给我们提供的就只是mousedown -> mousemove -> mouseup三种最基本的事件接口.那么我们只能通过这些简单的接口模拟出复杂的手势出来. 常规的做法流程: 1.给元素上绑定三个事件,mousedown ,mousemove,mouseup 2.在交互的时候,用户只触发mousedown,mouseup没有触发mousemove,就可以单算是一次