在这里讨论蓝牙的AVRCP协议,要理解AVRCP,需要先了解AVCTP;

我们分两个部分来进行;

1、AVCTP协议;

2、AVRCP协议;

下面先来看AVRCp协议:

一、概述

1、定义

AVCTP(Audio/Video Control Transport Protocol Specification)音频/视频控制传输协议是一个框架协议,描述蓝牙设备间Audio/Video的控制信号交换的传输机制,具体的控制信息(编码和格式)由其指定的协议(如AVRCP)实现,AVCTP本身只指定控制command和response的总体的格式,AVCTP是建立在L2CAP上的;

2、角色

AVCTP分为两个角色,CT(The Controller)是命令的发起方,命令接收方是TG(The target),如下图:

AVCTP通信要求已经建立了ACL链接,AVCTP交互是在面向连接的通道中的双向通信,

3、通信过程

首先会有CT发起通信,发送命令道TG端;

一个完整的AVCTP消息包含一个指定TG地址的命令,然后由TG端回复消息,AVCTP不会控制命令或响应的顺序或定义CT/TG的行为,大体流程可参照下图:

因为AVCTP是建立在不可靠的ACL上,所以存在命令收不到应答的情况,命令的重发不是必须的,这个由应用层开发者决定;

4、通信模式

在AVCTP中,bit和byte传输时采用大端模式,即高字节在左侧;

二、AVCTP消息包格式

1、概述

AVCTP命令或应答在传输时是包含在一个或多个AVCTP packets中,这些包中包含AVCTP header和多个消息体部分,但是在AVCTP中并未定义length域,它是依靠L2CAP层去限制发送的包数,所以AVCTP也需要遵循L2CAP协议长度的相关定义;

2、消息格式

大部分的AVCTP命令以负载的方式通过单一L2CAP包传输,但也有少数大信息AVCTP包需要被拆分,通过多个L2CAP包传递出去,下面我们分别来看这两种包格式

a、不拆分的包格式,见下图:

格式中bit含义spec中都有说明,我们再详细看下;

TL占用了4bit,它是通信中标识唯一的tag,由应用层给出其值;

PT是包类型,PT=0时表示开始包,PT=10表示中间包,PT=11表示结束包,在非拆分包中,PT=0;

IPID只有在响应为无效包时才会置位1,其他情况都为0;

上图显示了几个信息:

(1) AVCTP header为3字节;

(2)不拆分的AVCTP包不能大于L2CAP的MTU大小;

b、拆分包格式,如下图:

可以看到拆分包格式start packet多了一个字节,Number of AVCTP Packets,continue packet 和end packet去掉了IPID和PID字段,AVCTP通过L2CAP层保证包的每个包的完整性及传递顺序,但无法保证所有包的完整性;由于信道的不稳定性,可能会产生AVCTP丢包,我们看下拆包AVCTP在L2CAP的拆包方式,如下图:

3、AVCTP Message Information Part的说明

这部分可以包含不定长度的命令或应答帧;

其具体格式需要参照具体的profile,如AVRCP,AVDTP等;

三、总结

好了,分析到这里相信大家对AVCTP有了比较不错的认识,其实AVCTP就是定义了一个通信框架,它定义好了packet heaeder,定义好了与L2CAP层的传输机制,剩下的数据域(AVCTP Message Information Part)就需要参考其他profile来填充;

AVCTP提供了一组Upper Interface,作为一组测试接口,也可作为其他应用协议的接口,这里就不去看了,感兴趣的可以自己翻一下spec;

下一篇我们将一起来看下AVRCP协议,希望大家多多支持;

蓝牙AVRCP协议解析相关推荐

  1. 【经典蓝牙】蓝牙AVRCP协议分析

    协议简介 蓝牙AVRCP协议是蓝牙设备之间音视频的控制协议.定义了音频/视频的控制.浏览.查询.通知等一系列的命令集.常用来蓝牙耳机对手机的音乐进行控制,以及获取手机的音乐信息等场景.AVRCP协议有 ...

  2. 蓝牙avrcp协议源码分析

    原址:http://blog.csdn.net/u012439416/article/details/54348147 1,概述 1.1 avrcp协议 全称: Audio / Video Remot ...

  3. Android 蓝牙开发——Avrcp协议获取歌曲信息(十八)

    通过前面的 Avrcp 协协议的学习,我们知道蓝牙音乐的控制是通过媒体播放器进行的.而媒体播放器的数据发生变化时会通过 MediaSeesion 通知客户端,本篇文章主要分析一下歌曲信息是如何传递的. ...

  4. Android 蓝牙开发——Avrcp协议(十二)

    SDK路径:frameworks/base/core/java/android/bluetooth/ 服务路径:packages/apps/Bluetooth/src/com/android/blue ...

  5. 蓝牙IBEACON协议详细解析

    蓝牙IBEACON协议详细解析 先看一个不太清楚的图片,这个是nordic官方提供的解析的文档. 先看顶上的三个字节,flags length type,这三个是固定的,因为ibeacon长度是固定, ...

  6. 蓝牙协议栈开发板 STM32F1 跑蓝牙协议栈 --传统蓝牙串口协议SPP演示以及实现原理

    零. 概述 主要介绍下蓝牙协议栈开发板跑传统蓝牙串口协议SPP AT指令以及上位机操作步骤,以及原理 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ...

  7. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

  8. 蓝牙a2dp协议源码分析

    1,a2dp协议 1.1 a2dp协议 全称:Advanced Audio Distribution Profile 蓝牙音频传输协议 使用场景:主要是通过蓝牙将声音从一个设备传输到另一个设备. 市场 ...

  9. 蓝牙 BLE 协议学习: 有关概念介绍

    背景 在学校内就用过蓝牙技术参加过比赛(并拿了奖):而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习.此后的文章会以 ble(v4.0) 进行学习. 介绍 蓝牙技术最初由电信巨头爱立信公司于 1 ...

  10. 蓝牙音频协议双剑客(一)--音视频频分布传输协议(AVDTP)概念

    零. 概述 主要介绍下蓝牙协议栈(bluetooth stack)传统蓝牙音频协议之 音视频分布传输协议的概念,包含AVDTP概念,AVDTP组件,AVDTP传输服务,AVDTP的属于介绍. 一. 声 ...

最新文章

  1. Scrum指南新版发布,再添新概念—Product Goal
  2. 前序遍历与中序遍历确定后序遍历
  3. OWASP 2017 Top10 漏洞体系
  4. hbuilder egit插件的安装使用--项目文件丢失的教训
  5. how to find the original page containing a given image
  6. homebrew 常用命令
  7. Secure CRT 自动记录日志
  8. 中小企业上ERP项目不可回避的9个基本问题
  9. selenium使用webdriver新开标签页
  10. 解决vs2005中文乱码问题
  11. 爬取自己的csdn访问排名信息
  12. 全国草地资源类型分布数据/植被类型分布数据/土地利用类型分布数据
  13. call stack是什么错误_17.2 错误处理
  14. jsp实现简单购物车过程
  15. 如何查看自己win10的产品密钥
  16. 死亡、疾病、意外,如何面对?
  17. windows 用choco 安装nvm
  18. 基于JAVA点餐系统的开题报告_开题报告-餐厅点餐系统的设计与实现.doc
  19. 红外图像盲元检测matlab,红外焦平面阵列盲元类型与判别.pdf
  20. 美团即时零售的优势不止“快”

热门文章

  1. 查看计算机本机IP地址,本机ip地址查询
  2. mac 查看本机ip地址命令
  3. 联想电脑Windows7系统重装方法,简单易上手
  4. MiPony– 杀手级免费网盘下载工具 可挂机下载支持YunFile
  5. PHPExcel 插件使用详解
  6. 大数据爬虫前奏之Html和Css学习
  7. python文本模糊匹配
  8. 基于 HTML5 Canvas 的 3D 热力云图效果
  9. Google Chrome谷歌旧版本下载
  10. 在线浏览 Stata 15 PDF 全套电子手册