蓝牙bt AVRCP精讲之AVRCP 连接及交互通讯

一.连接

        AVRCP的连接由底层AVCTP管理。如果需要了解AVRCP的底层实际连接流程,可以查阅AVCTP即可。这里只讲解AVRCP 连接,释放,发送command等调用逻辑,不讲具体的底层连接流程。

        

        可以看到CT与TG之间可以建立两条channel。一个用于控制,一个用于browsing。用于control 的channel是必选项,且必须第一时间建立,用于browsing的channel是可选项。不过profile中建议如果有使用到browsing channel,则最好也同时建立。CT/TG双方都可以主动建立连接。

        

二.释放

        

        释放流程需要注意的就是如果有browsing channel则先释放browsing channel再释放control channel。

三.发送命令

        

        

        CT先发command给TG之后,TG会回发interim response。当有事件发生时,TG会主动通知CT对应的事件变化值

四.命令类型

        一共就三种command类型。AV/C commands/Browsing commands/Cover Art commands。

        AV/C commands在TWS和手机连接场景使用得最多。这里要注意的是AVRCP specific AV/C commands,其使用AV/C Vendor Dependent Opcode以及Vendor Unique PASSTHROUGH operation id。需要注意与PASSTHROUGH commands, UNIT and SUBUNIT INFO commands区分开。

        Browsing commands使用AVCTP browsing channel,其独立于AV/C层。

        Cover Art commands较多定义于BIP profile中。

五.AV/C command

                如下为一些AV/C command 类型,这几个一般在AVRCP中使用。

     

                UNIT INFO/SUBUNIT INFO command主要是用于获取TG中的一些参数信息,比如vendor ID等。

                VENDOR DEPENDENT command主要是为了扩展使用,一些供应商可以定义自己的command以及responses.

                PASS THROUGH command是必选项,在CT以及TG中都需要配置该command。且AVRCP中最常用的就是PASS THROUGH command。

六.TG提供的通知(notify)能力

        ①一般的也就是音乐播放的一些功能,类如播放/暂停/停止,上一曲/下一曲,播放进度条变化,音量变化。比较特殊的有,TG外设的拔插事件,UDIs变化,播放目录变化等。

        ②每次事件变化,TG上报给CT之后,CT需要重新注册通知。也就是一次注册通知只对应一次上报。

        

        ③通知的交互流程如第三节图书所示,notify->interim->change

        

       

七.连接空包分析

                       

        ①建立AVCTP control channel

        

        

        

        ②获取TG端上报event能力集,可以看到TG支持列表

        

        ③注册PlayBack事件,注册音量变化事件

八.事件通知流程

        一.播放暂停举例

        

                红色框为CT向TG注册PlayBack事件通知,TG收到之后都回复了interim命令

                绿色框为CT向TG发送播放/暂停对应的passthrough command事件

                蓝色框为TG端向CT上报PlayBack事件改变通知

                可以看到,每次事件变化后CT都会重新注册需要通知的事件。且此空包是从CT端发送passthrough command事件控制TG端,TG端后才上报PlayBack事件通知。可以看到灰色框中时间戳,AV/C change事件都是滞后于Notify/Interim事件才发送的。

        

                如果是有手机端(TG)控制发送播放/暂停,则就是少了CT端发送passthrough command。

        二.音量变化举例

        

                红色框为手机端(CT)向TG注册音量变化事件

                蓝色框为TG端,音量变化时,主动向手机端(CT)发送音量变化值

                这是从TG端看音量变化时,事件的发送流程

        

        

                从CT端则比较简单粗暴,直接发送control command即可

                

               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值