一个概念
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上。 需要的朋友可以直接去下载。 完全免费。 我记得下载的时候给我赞就好了。