OBEX在蓝牙开发中的应用

2011-02-11 22:03:01来源: EEWORLD

  OBEX协议简述

  OBEX(Object Exchange)协议将点对点设备间的信息交互应用以面向对象的方式分解为数据+操作,把数据柔性抽象为对象来描述,同时定义一种信息交互方式规范操作。OBEX协议的两个关键部分便是定义了对象模型和会话方式,对象模型依据应用而定,定义了Header描述对象的一个方面,Header的集合便是一个完整的对象。会话采用请求-响应方式,客户端发起请求,服务器端给与响应。下面从对象模型和会话协议上详细解析下OBEX协议。

  对象模型

  对象模型是对对象本身的抽象描述,它定义了Header的概念,一个Header描述对象的一个方面。对象模型是一系列Header的集合体,依据应用而定,因为OBEX是很多应用的基础协议,所以这里的应用包括底层信息交互操作及其之上的应用。对象模型可以认为是对象和应用之间的载体,因为它一方面描述了对象信息,另一方面又满足具体应用的可操作性。

  下面对Header举个例子。比如文件传输应用,将文件抽象为对象模型时,需要的Header有文件名称Name、文件数据长度DataLength、文件类型Type,可能还会有ApplicatiON specific Header即具体应用相关的Header,比如定义MASK选定文件数据只包含某些属性。

  Header的形式为ID+Value,ID为单字节,它定义了Value类及其表示格式,Bit7和Bit6指定了Value值的格式,如ID==0x01则表示NAME,格式为两字节长度+以0x00结尾的字符串数据的方式,当文件名为teST.txt时,Header即为01 00 0b 't' 'e' 's' 't' '.' 't' 'x' 't' 00。ID作为Value的一种描述,就
像Header只是对象的一种描述一样,这种定义方式大大扩展了OBEX的Header空间。

  会话协议

  OBEX会话协议定义了请求-响应形式的会话式操作,定义发起请求的一端为客户端,给与响应的为服务器端,OBEX应用便是在客户端和服务器端的一系列请求-响应会话中完成的。OBEX以“操作符”的方式来定义请求,以“回应符”的方式定义响应。操作符包括:连接CONNECT(0x80)、断开连接DISCONNECT(0x81)、发送PUT(0x02,0x82)、索取GET(0x03,0x83)、设置路径SETPATH(0x85)、中止当前会话ABORT(0xff);回应符有0x90-继续、0xA0-成功和其他表示错误原因的回应符。

  OBEX是个严谨的协议,其会话协议的设计实现首先遵从一问一答的会话方式,如果在没有应答之前发送下一个请求会造成服务器端拒绝该请求;其次客户端和服务器端都定义了一系列状态表示会话进程及进行状态的跳转,比如当前进行的PUT操作,当操作符为0x02,服务器端给与回应符0x90之后,客户端这时不能进行GET操作,必须等到发完了最后一包即操作符为0x82,服务器端给与回应符0xA0之后才能发起GET请求,否则GET请求会被服务器端视为错误的请求而给与错误回应。

  OBEX在PBAP中的应用

  PBAP(PhoneBook Access Profile)是专门为蓝牙车载设备自动下载手机内的电话本和呼叫日志而定义的一套协议,它将电话本和呼叫日志定义成特定的对象模型,定义了五种文件-Local Phone电话本、SIM卡电话本、Dialed Call、Missed Call、Received Call,文件类型Type和文件名Name均固定,如SIM卡的电话本文件类型为"x-^/phonebook",文件名为"SIM1/telecom/pb.vcf"。

  PBAP在OBEX上的适配非常简单,客户端(车载设备)向服务器端(手机)发起连接请求时指定Target为796135f0-f0c5-11d8-0966-0800200c9a66(十六进制),表示OBEX连接的目的是PBAP应用,建立连接后,客户端发起GET命令,请求类型为"x-^/phonebook",名称为"SIM1/telecom/pb.vcf"的文件,便能下载SIM卡中的电话本。PABP可以通过一个Application Specific Header设置电话本数据即VCARD中含有的属性,一般设置为含有VERSION-版本、N名字、TEL电话号码,PHOTO之类的数据量很大但无用的属性便可以过滤掉,从而减少了传输数据量,加快了下载速度。

  相比较于没有得到普及的IrMC电话本同步,PBAP只提供下载功能,而没有动态更新的功能,从而不用定义特别的命令,在OBEX之上采用GET命令便能实现,正因其简单,所以被大多数手机厂商所接受得到了大量的应用。

  OBEX在OPP中的应用

  OPP(Object Push Profile)对象推送协议,是蓝牙在OBEX协议的基础上定义实现的一个专属协议,它做为一个手动传输协议,用于资源在设备间的共享传输。OPP的应用加入了人为的选择操作,大大扩展了共享对象的选择空间,可以选择音乐、电影、文档、图片或者一条电话号码手动PUSH到目标机。

  OPP中的对象采用File的形式封装,FileName Header后缀有.mp3、.mov、.doc、.jpg、.vcf等,对应在Type Header上都有相应的MIME类型,数据在PUT请求中分段传输,目标机根据Type判断对象属性从而进行相应的操作,比如当类型为"text/x-vcard"时,便能判断出PUSH的对象为vCard形式的电话本条目,从而可以根据vCard规范提取出人名,电话号码等属性。

  结语

  OBEX定义了对象模型以描述各种数据,同时定义请求响应的会话方式,将点对点设备的信息交互应用统一起来,本文阐述了OBEX的思想,并针对OBEX在蓝牙中的应用,以PBAP、OPP为例讲述了以OBEX为基础的蓝牙协议的绑定实现,对采用OBEX做蓝牙开发的工程师具有很好的指导意义。


关键字:OBEX  协议  蓝牙

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/wltx/2011/0211/article_3749.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
OBEX
协议
蓝牙

小广播

独家专题更多

TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved