新聞中心

EEPW首頁 > 手機與無線通信 > 設(shè)計應用 > OBEX在藍牙開發(fā)中的應用

OBEX在藍牙開發(fā)中的應用

作者: 時間:2011-02-11 來源:網(wǎng)絡(luò) 收藏

  簡述

  (Object Exchange)將點對點設(shè)備間的信息交互應用以面向?qū)ο蟮姆绞椒纸鉃閿?shù)據(jù)+操作,把數(shù)據(jù)柔性抽象為對象來描述,同時定義一種信息交互方式規(guī)范操作。的兩個關(guān)鍵部分便是定義了對象模型和會話方式,對象模型依據(jù)應用而定,定義了Header描述對象的一個方面,Header的集合便是一個完整的對象。會話采用請求-響應方式,客戶端發(fā)起請求,服務器端給與響應。下面從對象模型和會話協(xié)議上詳細解析下OBEX協(xié)議。

  對象模型

  對象模型是對對象本身的抽象描述,它定義了Header的概念,一個Header描述對象的一個方面。對象模型是一系列Header的集合體,依據(jù)應用而定,因為OBEX是很多應用的基礎(chǔ)協(xié)議,所以這里的應用包括底層信息交互操作及其之上的應用。對象模型可以認為是對象和應用之間的載體,因為它一方面描述了對象信息,另一方面又滿足具體應用的可操作性。

  下面對Header舉個例子。比如文件傳輸應用,將文件抽象為對象模型時,需要的Header有文件名稱Name、文件數(shù)據(jù)長度DataLength、文件類型Type,可能還會有ApplicatiON specific Header即具體應用相關(guān)的Header,比如定義MASK選定文件數(shù)據(jù)只包含某些屬性。

  Header的形式為ID+Value,ID為單字節(jié),它定義了Value類及其表示格式,Bit7和Bit6指定了Value值的格式,如ID==0x01則表示NAME,格式為兩字節(jié)長度+以0x00結(jié)尾的字符串數(shù)據(jù)的方式,當文件名為teST.txt時,Header即為01 00 0b 't' 'e' 's' 't' '.' 't' 'x' 't' 00。ID作為Value的一種描述,就
像Header只是對象的一種描述一樣,這種定義方式大大擴展了OBEX的Header空間。

  會話協(xié)議

  OBEX會話協(xié)議定義了請求-響應形式的會話式操作,定義發(fā)起請求的一端為客戶端,給與響應的為服務器端,OBEX應用便是在客戶端和服務器端的一系列請求-響應會話中完成的。OBEX以“操作符”的方式來定義請求,以“回應符”的方式定義響應。操作符包括:連接CONNECT(0x80)、斷開連接DISCONNECT(0x81)、發(fā)送PUT(0x02,0x82)、索取GET(0x03,0x83)、設(shè)置路徑SETPATH(0x85)、中止當前會話ABORT(0xff);回應符有0x90-繼續(xù)、0xA0-成功和其他表示錯誤原因的回應符。

  OBEX是個嚴謹?shù)膮f(xié)議,其會話協(xié)議的設(shè)計實現(xiàn)首先遵從一問一答的會話方式,如果在沒有應答之前發(fā)送下一個請求會造成服務器端拒絕該請求;其次客戶端和服務器端都定義了一系列狀態(tài)表示會話進程及進行狀態(tài)的跳轉(zhuǎn),比如當前進行的PUT操作,當操作符為0x02,服務器端給與回應符0x90之后,客戶端這時不能進行GET操作,必須等到發(fā)完了最后一包即操作符為0x82,服務器端給與回應符0xA0之后才能發(fā)起GET請求,否則GET請求會被服務器端視為錯誤的請求而給與錯誤回應。

  OBEX在PBAP中的應用

  PBAP(PhoneBook Access Profile)是專門為車載設(shè)備自動下載手機內(nèi)的電話本和呼叫日志而定義的一套協(xié)議,它將電話本和呼叫日志定義成特定的對象模型,定義了五種文件-Local Phone電話本、SIM卡電話本、Dialed Call、Missed Call、Received Call,文件類型Type和文件名Name均固定,如SIM卡的電話本文件類型為"x-^/phonebook",文件名為"SIM1/telecom/pb.vcf"。

  PBAP在OBEX上的適配非常簡單,客戶端(車載設(shè)備)向服務器端(手機)發(fā)起連接請求時指定Target為796135f0-f0c5-11d8-0966-0800200c9a66(十六進制),表示OBEX連接的目的是PBAP應用,建立連接后,客戶端發(fā)起GET命令,請求類型為"x-^/phonebook",名稱為"SIM1/telecom/pb.vcf"的文件,便能下載SIM卡中的電話本。PABP可以通過一個Application Specific Header設(shè)置電話本數(shù)據(jù)即VCARD中含有的屬性,一般設(shè)置為含有VERSION-版本、N名字、TEL電話號碼,PHOTO之類的數(shù)據(jù)量很大但無用的屬性便可以過濾掉,從而減少了傳輸數(shù)據(jù)量,加快了下載速度。

  相比較于沒有得到普及的IrMC電話本同步,PBAP只提供下載功能,而沒有動態(tài)更新的功能,從而不用定義特別的命令,在OBEX之上采用GET命令便能實現(xiàn),正因其簡單,所以被大多數(shù)手機廠商所接受得到了大量的應用。

  OBEX在OPP中的應用

  OPP(Object Push Profile)對象推送協(xié)議,是在OBEX協(xié)議的基礎(chǔ)上定義實現(xiàn)的一個專屬協(xié)議,它做為一個手動傳輸協(xié)議,用于資源在設(shè)備間的共享傳輸。OPP的應用加入了人為的選擇操作,大大擴展了共享對象的選擇空間,可以選擇音樂、電影、文檔、圖片或者一條電話號碼手動PUSH到目標機。

  OPP中的對象采用File的形式封裝,F(xiàn)ileName Header后綴有.mp3、.mov、.doc、.jpg、.vcf等,對應在Type Header上都有相應的MIME類型,數(shù)據(jù)在PUT請求中分段傳輸,目標機根據(jù)Type判斷對象屬性從而進行相應的操作,比如當類型為"text/x-vcard"時,便能判斷出PUSH的對象為vCard形式的電話本條目,從而可以根據(jù)vCard規(guī)范提取出人名,電話號碼等屬性。

  結(jié)語

  OBEX定義了對象模型以描述各種數(shù)據(jù),同時定義請求響應的會話方式,將點對點設(shè)備的信息交互應用統(tǒng)一起來,本文闡述了OBEX的思想,并針對OBEX在中的應用,以PBAP、OPP為例講述了以O(shè)BEX為基礎(chǔ)的藍牙協(xié)議的綁定實現(xiàn),對采用OBEX做藍牙開發(fā)的工程師具有很好的指導意義。




關(guān)鍵詞: OBEX 協(xié)議 藍牙

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉