蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)
关键词:蓝牙核心技术协议 irDA BNEP AVDTP AVCTP
作者:xubin341719(欢迎转载,请注明作者,请尊重版权,谢谢!
)
欢迎指正错误,共同学习、共同进步!!
下载链接:Bluetooth PROFILE SPECIFICATIONS (基本涵盖全部蓝牙协议)、buletooth core 2.1-4.0 SPECIFICATION(三蓝牙版本号的核心协议v2.1\v3.0\v4.0)、蓝牙核心技术与应用 马建仓 版(蓝牙协议相关刚開始学习的人必读,开发人员參考)
蓝牙核心技术概述(一):蓝牙概述
蓝牙核心技术概述(二):蓝牙使用场景
蓝牙核心技术概述(三): 蓝牙协议规范(射频、基带链路控制、链路管理)
蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)
蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)
一、IrDA互操作协议
IrOBEX 红外对象交互协议,简称OBEX,使高层协议同一时候运作在蓝牙和红外的无线链路之上。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHViaW4zNDE3MTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
主要操作指令有:连接操作、断开操作、Put操作、Get操作。
1、连接操作 ,操作码0x80
|
字节0 |
字节1、2 |
字节3 |
字节4 |
字节5、6 |
字节7~n |
|
0x80 |
连接请求分组长度 |
OBEX版本号号 |
标志 |
client可接收最大的OBEX分组长度 |
可选头 |
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHViaW4zNDE3MTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
|
字节0 |
字节1、2 |
字节3 |
字节4 |
字节5、6 |
字节7~n |
|
0x80 Connect命令 |
7 |
0x10 |
标志 |
65534 |
可选头 |
连接响应
2、断开操作 操作码为0x81
3、Put操作 操作码为0x02
连接成功后。client通过Put请求向server“推送”对象,假设对象较大,Put请求能够用多个Put请求分组。
4、Get操作操作码为0x03
二、音频与电话控制协议
1、框架部分
蓝牙音频如上图协议栈所看到的:音频通过基带传输同步面向连接分组实现。没有以规范的形式给出,不是协议栈的一部分。
TCS_Binary是一种基于分组电话控制二进制编码指令集,位于L2CAP之上。实现蓝牙无绳电话、对讲机功能。
RFCOMM用于AT指令。拨号上网、蓝牙耳机、耳麦、传真通过AT发送指令控制。
2、音频部分
64kbps电信级语言质量音频流
CVSD continuous variable slope delta 连续可变斜率增量。
PCM pulse code modulation 。
PCM存在斜率效应。CVSD使用音节压缩算法。编码步长依据信号斜率变化自己主动调整,是如今比較好的编码方案。提高语言的抗干扰能力。
3、电话控制部分
TCS-Binary电话控制部分。
(1)、电话呼叫
呼叫控制、呼叫建立、呼叫拆除。
(2)、组管理
訪问权限请求、分布式配置、高速内部成员訪问。
三、网络封装协议 BNEP
BNEP BluetoothNetworkEncapsulation Protocol 网络封装协议。
为了使集成蓝牙技术的电脑、电话、PDA、家用电器等网络设备交换信息,须要在网络层统一数据分组。
网络封装协议将来自不同网络的数据分组又一次封装。通过L2CAP进行传输。这部分协议感觉在现实中用处不大,有很多其它简单便捷的方法去实现网络功能。
BNEP支持Ipv4、Ipv6、IPX
四、音视频分发协议AVDTP
AVDTPAudio/Video Distribution Transport Protocol音视频分发传输协议
有关A/V的协议 AVDTP音视频分发传输协议、AVCTP音视频控制传输协议、GAVDP通用音视频分发框架、A2DP高级音频分发框架、AVCRP音视频遥控框架
1、基本概念术语
流stream:流是音视频传输的数据形式,单向传输。在AVDTP中被分为媒介分组。流有句柄HS统一标识。
2、信令
AVDTP信令列表
|
命令 |
信令标识符 |
描写叙述 |
|
AVDTP_DISCOVER |
0x01 |
发现设备中的流端点 |
|
AVDTP_GET_CAPABILITIES |
0x02 |
获得流端点的信息能力 |
|
AVDTP_SET_CONFIGURATION |
0x03 |
对SEP进行配置 |
|
AVDTP_GET_CONFIGURATION |
0x04 |
获取SEP当前配置 |
|
AVDTP_RECONFIGURE |
0x05 |
对SEP又一次配置 |
|
AVDTP_OPEN |
0x06 |
成功的配置SEP后,打开流 |
|
AVDTP_START |
0x07 |
流被打开:用于開始形成流;流暂停时:用于又一次形成流。 |
|
AVDTP_CLOSE |
0x08 |
对SEP关闭 |
|
AVDTP_SUSPEND |
0x09 |
请求SEP暂停 |
|
AVDTP_SECURITY_CONTROL |
0x0A |
设置设备内容保护、或者请求设备状况信息 |
|
AVDTP_ABORT |
0x0B |
中断正在建立或者传输的过程 |
|
AVDTP_GET_ALL_CAPABILITIES |
||
|
AVDTP_DELAYREPORT |
这部分信令。实现了蓝牙的A2DP 数据流的控制。
(1)、流的信令管理流程
(2)、get capabilities 获取支持特性
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHViaW4zNDE3MTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
(3)、set configuration 配置音频參数
其它指令相似去上面两个的操作。
五、音视频控制传输协议AVCTP
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHViaW4zNDE3MTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
这部分操作,在现实的应用中也有不足的地方。蓝牙传输的数据量有限,实现这些功能有一定的不足。随着科学技术的发展,蓝牙在无线通信方面的长处、缺点都凸显出来,找的合适的方向。合理的发展方向是硬道理。
蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)的更多相关文章
- 蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)(转载)
一.主机控制接口协议 HCI 蓝牙主机-主机控模型 蓝牙软件协议栈堆的数据传输过程: 1.蓝牙控制器接口数据分组:指令分组.事件分组.数据分组(1).指令分组 如:Accpet Connection ...
- 蓝牙LMP概述
LMP 全称是Link Manager Protocol,我们还是要一张图,说明LMP 在哪里? 他是在HCI 以下,baseband 以上,实现在蓝牙控制器中. 按照协议规范,我们分几个部分来分别介 ...
- ZT android -- 蓝牙 bluetooth (五)接电话与听音乐
android -- 蓝牙 bluetooth (五)接电话与听音乐 分类: Android的原生应用分析 2013-07-13 20:53 2165人阅读 评论(9) 收藏 举报 蓝牙android ...
- 蓝牙(CoreBluetooth)-概述
蓝牙(CoreBluetooth)-概述 通过此框架可以让你的Mac和iOS应用程序与外部蓝牙设备通信 外部设备: 就是需要通过iOS App控制器的其他设备: 例如:心率检测仪.数字温控器 蓝牙通讯 ...
- ios蓝牙开发(五)BabyBluetooth蓝牙库介绍
BabyBluetooth 是一个最简单易用的蓝牙库,基于CoreBluetooth的封装,并兼容ios和mac osx. 特色: 基于原生CoreBluetooth框架封装的轻量级的开源库,可以帮你 ...
- Java核心技术第五章——1.类、超类、子类(2)
继上一篇Java核心技术第五章——1.类.超类.子类(1) 6.重载解析 假如调用ClassName.Method(args) 1.编译器列出类ClassName所有名为Method的方法. 2.编译 ...
- 蓝牙baseband概述
从蓝牙specispecification中看,基带协议主要分为8个部分来介绍的,分别是概述.物理信道.物理连接.逻辑传输.逻辑连接.封包.比特流的处理.组网行为.这里面会涉及到很多的概念,主要是在概 ...
- android -- 蓝牙 bluetooth (五)接电话与听音乐
1.蓝牙耳机接听电话 这个就对应HFP(Hands-freeProfile),Free your Hand,蓝牙的初衷之一.先来看这个功能的场景,手机来电,手机与蓝牙耳机已连接,这时会 ...
- 蓝牙(3)如何通过蓝牙传输数据及UUID详介
如何通过蓝牙传输数据 通过蓝牙传输数据与Socket类似.在网络中使用Socket和ServerSocket控制客户端和服务端的数据读写.而蓝牙通讯也由客户端和服务端Socket来完成.蓝牙客户端So ...
随机推荐
- MD5加密(前端JS)
var password = $('#password').val();//获取密码框的值 var passwordMD5 = md5(password);//调用MD5,传入密码,返回MD5加密后的 ...
- Remove Untagged Images From Docker
I've been playing around a lot with docker. It's awesome, and it creates a whole new world of possib ...
- [转载] Cassandra入门 框架模型 总结
转载自http://asyty.iteye.com/blog/1202072 一.Cassandra框架二.Cassandra数据模型 Colum / Colum Family, SuperColum ...
- 基于树莓派的智能家居项目的设想与实现 Hestia
注:本人内容的准确性仅限于笔者写该篇文章时的情况,不保证后续与实际项目代码一致.实时内容还请关注Github项目托管页面:https://github.com/GenialX/hestia-serve ...
- 模仿J2EE的session机制的App后端会话信息管理
此文章只将思想,不提供具体完整实现(博主太懒,懒得整理),有疑问或想了解的可以私信或评论 背景 在传统的java web 中小型项目中,一般使用session暂存会话信息,比如登录者的身份信息等.此机 ...
- windows下忘记mysql的root密码解决方法(图文)
在windows下忘记mysql的root密码对于很对新手来说,也是会经常遇到的,我也刚好遇到啦,参考网上的解决办法,自己又整理啦一下. 1.首先需要查看mysql的服务是否启动. 打开cmd窗口,输 ...
- 手写particles
var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); var Grewer = { in ...
- 关于node的前端项目编译时内存溢出问题
最近在做一个基于vue 的多页面项目 , 页面n++多,编译时发生node内存溢出问题,继而百度之,得到解答,故记录之. '如图' 只需在 package.json 里面 加上 --max ...
- Linq学习系列-----1.2 一个简单方法的改进思考及不同的执行形式
一.普通模式: #region 模式1 public Form1() { InitializeComponent(); GetProcessByJudge(); } public bool Memor ...
- struts2 action接收请求参数和类型转换
1,action接收请求参数 在struts2中action是什么?(struts2是一个mvc框架) V:jsp M:action C:action ...