SyncML在藍牙車載信息娛樂設(shè)備上的設(shè)計與實現(xiàn)
圖1為SyncML的藍牙應用協(xié)議結(jié)構(gòu)圖。依據(jù)SyncML協(xié)會定義的藍牙綁定協(xié)議,SyncML服務器的藍牙實現(xiàn)需要用到SDP和OBEX協(xié)議,電話簿同步應用需要用到vCard規(guī)范。SDP協(xié)議用于SyncML服務器藍牙服務的注冊,查詢藍牙手機的SyncML客戶端服務以在RFCOMM層上建立藍牙連接,該RFCOMM連接是SyncML連接的基礎(chǔ);OBEX(Object Exchange)是對象交換協(xié)議,它管理SyncML服務的連接,將SyncML文檔封裝為Object進行傳輸并控制傳輸過程;vCard規(guī)范是電子名片規(guī)范,定義了個人名片信息的標準格式,方便傳播和交換。下面從這三個方面介紹SyncML的電話薄同步應用的關(guān)鍵點。
SDP在SyncML中的應用
SyncML綁定協(xié)議中定義了SyncML客戶端和服務器的SDP紀錄。
SDP是藍牙服務發(fā)現(xiàn)協(xié)議,它提供了注冊藍牙服務和搜索及瀏覽藍牙服務的方法。注冊藍牙服務是本地行為,以Service Discovery DataBase即服務發(fā)現(xiàn)數(shù)據(jù)庫的形式紀錄,每條Record即服務發(fā)現(xiàn)數(shù)據(jù)庫中的一個條目。搜索及瀏覽則基于C/S結(jié)構(gòu)(客戶端/服務器)的請求-響應形式,使得客戶端可以訪問服務器端的服務數(shù)據(jù)庫。
作為SyncML的服務器端,首先需要注冊該藍牙服務并處于pageable(可被尋呼)狀態(tài),這樣才能被藍牙手機發(fā)現(xiàn)本地設(shè)備的SyncML服務。SDP Record以結(jié)構(gòu)體形式定義,定義了若干屬性和數(shù)據(jù)類型,包括ServiceClassIDList、protocolDescriptorList、Service Name、ServiceDescription等,其中ServiceClassIDList屬性是最為重要的,以全局唯一標識符UUID表示,客戶端搜索服務器端服務的時候便是根據(jù)該屬性進行定位。
Syncml服務器端的ServiceClassID為00000001-0000-1000-8000-0002EE000002,藍牙協(xié)議為OBEX,數(shù)據(jù)類型均為DataElSeq。注冊該服務時首先給server channel賦值為默認值0,然后為該服務分配Rfcomm 通道,將分配的通道號給server channel重新賦值。
車載藍牙設(shè)備與手機建立免提連接后主動發(fā)起跟手機的SyncML服務的連接,首先設(shè)備通過SyncML客戶端ServiceClassID定位手機端的SyncML服務記錄,然后在該服務記錄中查詢手機為SyncML服務分配的Rfcomm通道號,然后建立Rfcomm層的連接。
評論