SyncML在藍(lán)牙車載信息娛樂設(shè)備上的設(shè)計與實現(xiàn)
SyncML應(yīng)用獨立于具體的傳輸方式,換言之,針對具體的傳輸方式,SyncML定義了相應(yīng)的綁定適配協(xié)議。對于藍(lán)牙應(yīng)用,SyncML OBEX綁定協(xié)議定義了SyncML在藍(lán)牙上的實現(xiàn)方式。下面介紹OBEX協(xié)議,以及SyncML在OBEX上綁定時需要注意的地方。
OBEX(Object Exchange)對象交換協(xié)議是采用C/S(客戶/服務(wù)器)結(jié)構(gòu)的面向會話的協(xié)議,它建立了“對象模型”以抽象描述各種實體,并定義了Header的概念來描述對象,一個對象便是一系列Header的集合。
OBEX定義了OBEX客戶端和服務(wù)器端的應(yīng)用規(guī)范,客戶端是指發(fā)起OBEX連接、初始化OBEX會話的一端。根據(jù)車載設(shè)備要在免提連接建立后進(jìn)行電話薄同步的應(yīng)用,車載設(shè)備需要實現(xiàn)OBEX客戶端。OBEX客戶端在之前建立的Rfcomm連接的通道上發(fā)起連接請求,請求數(shù)據(jù)為80 00 15 11 00 04 00 46 00 0e 53 59 4e 43 4d 4c 2d 53 59 4e 43。其中0x80為連接操作符,連接請求包長度為0x0015,OBEX版本為version1.1,版本號表示為0x1100,最大OBEX包長度為0x0400,0x46表示Target,Target表明連接的目的或服務(wù),在這里Target為53 59 4e 43 4d 4c 2d 53 59 4e 43即SYNCML-SYNC,表明建立的OBEX連接用于SyncML。
SyncML Document需要封裝為SyncML MIME類型的對象在OBEX請求或響應(yīng)主體內(nèi)傳輸,該類型為"application/vnd.syncml+wbxml"。SyncML同步電話薄的速度是個很關(guān)鍵的用戶體驗,相關(guān)的關(guān)鍵屬性值為最大OBEX包長度,它決定了每次交互的OBEX包的大小,從而決定了交互次數(shù),該最大包長度越大,交互次數(shù)越少,從而同步速度越快,反之,同步速度越慢。該最大包長度在OBEX連接時協(xié)商決定,取雙方設(shè)備能夠支持的最大包長度的較小值。
SyncML的藍(lán)牙應(yīng)用不可避免地會遇到兼容性問題,在測試過程中發(fā)現(xiàn)車載設(shè)備和Nokia6288手機進(jìn)行同步時,車載設(shè)備通過PUT發(fā)給手機的SyncML Document的最后一包必須是空包82 00 03,否則無法繼續(xù)同步。
vCard解析
SyncML實現(xiàn)的藍(lán)牙手機和車載設(shè)備間電話薄同步應(yīng)用中,首先提取出采用vCard格式的個人信息數(shù)據(jù)和相關(guān)命令,將數(shù)據(jù)和命令映射在一起存儲為結(jié)構(gòu)體形式的列表,然后根據(jù)vCard規(guī)范解析出個人信息,根據(jù)命令完成添加、刪除和替代電話薄條目。解析出的個人信息包括人名、手機號碼、家庭電話、辦公電話和車載電話,命令為ADD、DELETE、REPLACE。下面簡要介紹vCard規(guī)范,以及vCard解析的實現(xiàn)。
vCard電子名片規(guī)范定義了個人公共信息交換(PDI)的描述標(biāo)準(zhǔn)和組織格式,該格式與信息傳送的方式無關(guān),方便了各種系統(tǒng)和應(yīng)用之間的信息交換。在vCard中,個人公共信息包括姓名、年齡、地址、電話等與個人緊密相關(guān)的基本信息。手機內(nèi)vCard樣例如下:
BEGIN:VCARD
VERSION:2.1
N:denglibao
TEL;WORK:045182605447
TEL;HOME:05307415684
TEL;CELL:13478951524
END:VCARD
現(xiàn)在使用的vCard規(guī)范版本為2.1和3.0,定義了數(shù)據(jù)的存儲格式及訪問接口的規(guī)范,vCard解析需要能夠解析這兩種版本。根據(jù)車載信息娛樂設(shè)備的應(yīng)用,vCard解析函數(shù)需要提取出姓名和電話號碼兩個屬性,其中電話號碼又包括手機、家庭電話、辦公電話、車載電話四類,其屬性值均為TEL,參數(shù)值分別為CELL、HOME、WORK、CAR,下面給出設(shè)計代碼的主要部分。
評論