《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > OBEX在藍(lán)牙開發(fā)中的應(yīng)用
OBEX在藍(lán)牙開發(fā)中的應(yīng)用
摘要: 介紹下OBEX協(xié)議的特點(diǎn)及應(yīng)用,,從對(duì)象模型和會(huì)話協(xié)議兩個(gè)方面詳細(xì)分析OBEX協(xié)議,,然后針對(duì)OBEX在藍(lán)牙開發(fā)中的典型應(yīng)用,介紹下其在OPP和PBAP上的適配和綁定,。
關(guān)鍵詞: 藍(lán)牙 OBEX PBAP OPP
Abstract:
Key words :

OBEX是信息交換應(yīng)用中用處甚廣的協(xié)議,,它起源于紅外,但又不局限于具體的傳輸方式,,可以在藍(lán)牙,、USB、UART等傳輸接口上應(yīng)用,。OBEX是藍(lán)牙應(yīng)用中的基礎(chǔ)協(xié)議,,很多剖面都是在OBEX的基礎(chǔ)上實(shí)現(xiàn)的,本文首先介紹下OBEX協(xié)議的特點(diǎn)及應(yīng)用,,從對(duì)象模型和會(huì)話協(xié)議兩個(gè)方面詳細(xì)分析OBEX協(xié)議,,然后針對(duì)OBEX在藍(lán)牙開發(fā)中的典型應(yīng)用,介紹下其在OPPPBAP上的適配和綁定,。


OBEX協(xié)議簡(jiǎn)述

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


對(duì)象模型

對(duì)象模型是對(duì)對(duì)象本身的抽象描述,,它定義了Header的概念,,一個(gè)Header描述對(duì)象的一個(gè)方面,。對(duì)象模型是一系列Header的集合體,依據(jù)應(yīng)用而定,,因?yàn)镺BEX是很多應(yīng)用的基礎(chǔ)協(xié)議,,所以這里的應(yīng)用包括底層信息交互操作及其之上的應(yīng)用。對(duì)象模型可以認(rèn)為是對(duì)象和應(yīng)用之間的載體,,因?yàn)樗环矫婷枋隽藢?duì)象信息,,另一方面又滿足具體應(yīng)用的可操作性。

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

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


會(huì)話協(xié)議

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

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


OBEX在PBAP中的應(yīng)用

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

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


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


OBEX在OPP中的應(yīng)用

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

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


結(jié)語(yǔ)

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。