首页 > 编程知识 正文

蓝牙音响,linux获取蓝牙数据

时间:2023-05-06 09:29:35 阅读:162887 作者:3524

一个概念

AVRCP全名:将theaudio/videoremotecontrolprofile (avrcp )翻译成中文就是音视频远程控制协议。

概念: AVRCP定义了蓝牙设备之间的音视频传输的特征和流程,确保了不同蓝牙设备之间的音视频传输控制的兼容性。 包括暂停、停止、播放、音量控制等远程操作。 例如,通过蓝牙耳机,您可以通过暂停、切换下一首歌曲等操作控制音乐播放器。

基本作用: avrcp是两个设备之间的音视频控制协议。 这需要定义角色。 一般主动开始的是控制端,简称(CT ),通过发射若干AT命令帧初始化基本过程。 通常,CT常常是个人计算机、移动电话或手持设备。 目标设备(TG )通常从CT接收帧并返回答复帧。 TG一般是音视频再现装置,例如耳机、音频等。 一般过程如下图所示。

二过程分析

avrcp是蓝牙APP应用层协议,下图很好地说明了它在整个蓝牙协议栈中的位置。 由此可见,ARVCP下还有一种称为AVRTP的协议,其实它是avrcp的基本传输协议,可以理解为avrcp和a2dp之间的适配层。

接下来,我们来看看发送和接收过程是什么样的。 下图很好地解释了它的创建和发送接收过程。 如果未创建连接,CT应该会主动开始建立连接的操作。 连接建立后,可以发送AV/C命令。

注:只有在接收到厂商从属命令时,AV/C interim response才会发送到TG。

在存在一些异常的情况下,TG可能不会回复CT的响应帧。

三码分析

实际上,代码流以协议栈流为中心。 如果知道了协议栈的基本流程,就容易理解了。 协议栈的流程如下。

注册并创建连接:

注册状态: BtStatus AVRCP_Register

CTcreateconnect:avrcp_connect

TG连接成功: AVRCP_ConnectRsp

发送命令:

发送的命令函数: btstatusavrcp _ send command (avrcp channel * chnl,AvrcpCmdFrame *cmdFrame );

选项卡页面上创建或编辑条目。 btstatusavrcp _ send response (avrcp channel * chnl,AvrcpRspFrame *rspFrame );

断开连接:

btstatusavrcp _ disconnect (avrcp channel * chnl ); 好的

四扪心自问

1 AvrcpTxTimeout的作用是什么?

发送命令的超时函数在超时的情况下,报告发送失败的命令。

2 Avrcp Browse的作用是什么?

用于引用TG上的播放文件。

五参考资料

有关蓝牙的资料都放在github上。 需要的朋友可以直接去下载。 完全免费。 我记得下载的时候给我赞就好了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。