1.概述

    OBEX为Object Exchange,用于在蓝牙设备间传数据对象,来源于红外定义的协议,后被蓝牙采用。OBEX在蓝牙协议层中的位置如下图(在之前的OBEX版本中,OBEX是通过RFCOMM挂在L2CAP上的):

2.Object Model

OBEX定义了Object model来进行数据的交换,形式为Request-Response。OBEX定义了Headers来描述数据,结构如下:

<HI, the header ID> 1byte

<HV, the header value>  n byte

由HI和HV两部分组成。HI的最高两位表示这个Header的编码形式,低6位表示header的类型,HV表示数据实体。

高两位的编码如下:

0x00和0x40两种后面会跟上2字节的length(length prefixed),表示的是整个Header的长度,包括HI和HV。

低6位的定义类型如下:

提一下End-Of-Body,用来表示数据传输的最后一个data chunk。

3.Request和Response

在OBEX的规定中,Client和Server通过request-response的形式来进行对话,交换的数据包含在这两种包中,分别定义如下:

(1)Request format

参数opcode表示该request的类型,length表示整个request的字节数,最后跟着的是第2节中定义的各种Headers。

Opcode有如下几种形式:

opcode的最高位称为Final bit,用来表示某一个request的最后一个packrt,这个在下面的例子中说明。

(2)Response format

参数response code表示该response的类型,length表示整个request的字节数,最后跟着的是第2节中定义的各种Headers。

response code的最高位称为Final bit,用来表示可以继续传输数据,这个在下面的例子中说明,其有如下几种:

4.几种常见的操作及其实例

(1)Connect

一个Connect的实例:

可以看出,rquest中带了两个Header,分别是Count和Length。

(2)Disconnect

(3)Put

一个Put的实例:

在这个例子中,可以看出OpCode和Response code的final bit的作用。在client端,用Put命令发送数据时,如果不是最后一个packet,Final bit都是为0,最后一个packet时时置为1;在server端, 当接受到Final bit为0的client端的request时,response的final bit总是置为1,表示可以继续传输,当收到最后一个request时,发现client发过来的request置为1了,这时候response的final bit变为0。

5,总结

OBEX协议在蓝牙中用于对象交换,来源于红外的OBEX协议。OBEX协议规定Client与Server之间以Request-Response的形式进行对话,有Request和response两种数据形式。常用的OBEX的操作位Connect,disconnect,Put,

Get等,操作十分简单。

蓝牙的OBEX协议的更多相关文章

  1. 蓝牙--对象交换协议(OBEX)

    1.OBEX协议概述 OBEX是IrOBEX的简称,IrOBEX协议是红外数据协会IrDA开发的用于红外数据链路上数据对象交换的会话层协议.OBEX是一种紧凑高效的二进制协议,功能类似于HTTP协议. ...

  2. ZT 蓝牙的AVCTP协议笔记

    蓝牙的AVCTP协议笔记 (2013-07-31 08:52:41) 转载▼ 标签: bluetooth avctp command response 分类: Bluetooth 1.概述     A ...

  3. ZT 蓝牙的AVDTP协议笔记

    我的电子杂烩饭 http://blog.sina.com.cn/wuchuchu2012 [订阅][手机订阅] 首页 博文目录 图片 关于我 个人资料 Tifnan Qing 微博 加好友 发纸条 写 ...

  4. 蓝牙的AVCTP协议笔记

    1.概述     AVCTP协议描述了蓝牙设备间Audio/Video的控制信号交换的格式和机制,它是一个总体的协议,具体的控制信息由其指定的协议(如AVRCP)实现,AVCTP本身只指定控制comm ...

  5. 蓝牙的AVDTP协议笔记

    1.概述    AVDTP(AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL)是用来描述音频/视频在蓝牙设备间的传输的协议,是A2DP协议的基础协议,其在协议栈中 ...

  6. 蓝牙—服务发现协议(SDP)

    服务搜索协议(SDP)提供了应用发现可用服务以及确定可用服务特点的方法.SDP发现协议提供下面的能力 <1>为客户提供搜索所需要服务的能力. <2>允许基于服务类型搜索服务 & ...

  7. 蓝牙的L2CAP协议

    1.概述     L2CAP能向上层提供面向连接的或者无连接的数据服务,拥有multiplexing capability and segmentation and reassembly operat ...

  8. 蓝牙的SDP协议总结

    1.概念     SDP协议让客户机的应用程序发现存在的服务器应用程序提供的服务以及这些服务的属性.SDP只提供发现服务的机制,不提供使用这些服务的方法.每个蓝牙设备都需要一个SDP Service, ...

  9. iOS蓝牙4.0协议简单介绍

    iOS开发蓝牙4.0的框架是CoreBluetooth,本文主要介绍CoreBluetooth的使用,关于本文中的代码片段大多来自github上的一个demo,地址是myz1104/Bluetooth ...

随机推荐

  1. 微信公众平台开发3:订阅事件subscribe处理

    新用户关注微信公众平台,将产生一个订阅事件,即subscribe事件,默认代码中没有对这一事件进行相应处理. 在新用户关注公众平台后,可能想知道该平台提供了哪些功能,以及怎样使用该平台,通俗一点讲就是 ...

  2. 掌上PDA无线下单 移动开单设备 手持POS终端打印扫描开单进销软件

    您公司是否存在以下问题吗? ◆ 接单员对价钱是否能记住?接单员是否知道库存? ◆ 接单员是否向客户推介优势产品或新产品? ◆ 接单员是否知道客户为什么有的产品再也没有给我们拿货? ◆ 退货时为什么会退 ...

  3. 简单几何(凸包+多边形面积) POJ 3348 Cows

    题目传送门 题意:求凸包 + (int)求面积 / 50 /************************************************ * Author :Running_Tim ...

  4. C# 中的可变参数方法(VarArgs)

    首先需要明确一点:这里提到的可变参数方法,指的是具有 CallingConventions.VarArgs 调用约定的方法,而不是包含 params 参数的方法.可以通过MethodBase.Call ...

  5. 拼图游戏 v1.1

    我一直对拼图游戏比较有兴趣,市面上卖的所谓“1000块拼图”也玩过不少,不过玩那个太占地方,后来也不再买了,同时也就萌生了在电脑上玩拼图的想法. 现在虽然有很多拼图游戏,但能大多数只能支持几十或几百块 ...

  6. 【BZOJ】1146: [CTSC2008]网络管理Network(树链剖分+线段树套平衡树+二分 / dfs序+树状数组+主席树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1146 第一种做法(时间太感人): 第二种做法(rank5,好开心) ================ ...

  7. CentOS 安装Gitolite 服务器

    [jackluo@localhost .ssh]$ sudo groupadd git #创建 用户组 [jackluo@localhost .ssh]$ sudo adduser --system ...

  8. Xshell选中的同时把内容复制到剪贴板(还可以设置设置文本分隔符)

    1.设置对话框 工具 -> 选项 -> 键盘和鼠标 -> 将选定的文本自动复制到剪贴板 2.贴图如下 2.1.打开设置对话框 2.2.设置键盘鼠标,左键复制 2.3.右键粘贴 作者: ...

  9. RN组件之ListView

    /** * Created by DaGuo on 2016/4/7. */ 'use strict' import React,{ Component, View, Text, ListView, ...

  10. 【C语言】09-字符串

    一.字符串简介 * 在Java中,一个字符串可以用String类型来存储 String s = "MJ"; C语言中没有String这种类型.其实字符串就是字符序列,由多个字符组成 ...