新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > SyncML在藍牙車載免提裝置中的應用

        SyncML在藍牙車載免提裝置中的應用

        作者: 時間:2009-03-11 來源:網絡 收藏

        引言

        本文引用地址:http://www.104case.com/article/173877.htm

        隨著手機的普及,越來越多的車主安裝了,跟手機建立連接后便可以通過汽車內部的麥克風和音響進行通話。為了方便用戶撥打電話,本文研制了一款可以從手機上下載電話簿的,通過液晶屏和按鍵,用戶可以對電話簿條目進行導航,選擇電話號碼進行撥打。該的藍牙部分采用Bluecore5-MM芯片,液晶屏和按鍵接口在8位18F2480上實現,同時借助18F2480內部的CAN控制器,該免提裝置可以輕松集成到CAN網絡中。其結構框圖見圖1。

        為了保證電話簿數據的一致性,當用戶在手機上更新了電話簿時,免提裝置上的電話簿數據庫也應該同步更新,藍牙SIG組織沒有單獨定義同步,本文在分析通用的數據同步的基礎上,將與藍牙OBEX綁定,實現了免提裝置和手機間電話簿的同步。
        簡介
        SyncML是同步標記語言(Synchronous Markup Language)的縮寫,旨在提供一種終端用戶、設備開發商、數據提供商、基礎構件開發商、開發商及服務提供商協同工作的機制,使得任何終端設備均可隨時隨地進行數據同步。它包括同步、表示協議和傳輸綁定協議三個部分。
        同步協議
        同步協議指定了如何使用表示協議以滿足客戶端和SyncML的互操作性,以消息序列表(message sequence chart)的形式定義了七種同步類型的會話流程,以請求/響應的形式定義了會話中的數據交互過程等。同步協議采用客戶端/模式定義了同步框架,劃分了客戶端和的任務模塊。
        其中,服務器的同步引擎負責整個數據同步操作,同步服務器代理和同步客戶端代理實現同步協議,SyncML接口實現表示協議,SyncML適配器實現傳輸協議的綁定,用于收發XMI語言格式的object。下面通過同步協議定義的幾個重要概念來描述一下同步機制。
        客戶端和服務器端都要建立自己的數據庫,每個數據條目都由一個UID(唯一標識符)進行標識,客戶端UID稱為LUID,服務器UID稱為GUID。服務器建立一個ID映射表,使得LUID可以和GUID一一映射,當數據條目發生更改時,建立記錄更改信息的變更日志。當同步開始后,通過UID映射和變更日志指定是哪個數據條目發生了怎樣的改變。
        為了檢查同步效果,服務器端和客戶端各有兩個同步錨last和next,一般情況是用ISO8601格式的日歷時間,也可以用一個序列號,在初始化同步時客戶端和服務器端互換同步錨,它的用法如下:
        設本次同步客戶端同步錨為last_c、next_c,服務器端同步錨為last_s、next_s,同步成功,則更新next_c=next_s,同步不成功則不更新next_c。
        下次同步時,客戶端同步錨為last_c'=next_c、next_c',服務器端同步錨為last_s'=next_s、next_s',客戶端發送last_c'和next_c'到服務器端,服務器端比較last_c'與last_s',相等則說明上次同步是成功的,不相等則說明上次同步失敗。檢查出上次同步失敗后就要初始化慢同步(雙向同步所有數據)下載所有的電話簿數據。
        表示協議
        表示協議定義了SyncML同步中XML(Extensible MarkupLanguage)的語法和語義,是一種與平臺無關并被廣泛采用的標準。SyncML以XML文檔的形式定義了SyncML消息的格式,每條消息就是一個單獨的XML文檔。該文檔包括一個Header和Body,Header以SyncHdr類型定義,指定了該SyncML消息的路由和版本信息;Body以SyncBody類型定義,包含了一條或多條SyncML操作,一個操作的語義由命令和被操作數據的類型共同確定。SyncMLDTD定義了SyncML消息中通用元素的類型,根據這些通用元素類型可以指定特定的元素類型,從而滿足各種數據同步的擴展需要。
        SyncML在藍牙免提裝置中的實現
        SyncML OBEX綁定協議
        OBEX(Object Exchange)是紅外數據標準協會(IrDA)定義的用于對象交換的一種協議,后被藍牙SIG組織采納,定義了GOEP(General Object ExchangeProfile)與其適配。在GOEP的基礎上,藍牙SIG定義了FTP、OPP、PBAP剖面,其中PBAP是專為電話簿數據的自動下載定義的剖面,可以下載手機和SIM卡上存儲的電話簿,還可以下載呼叫日志、呼入、呼出和未接來電。OPP可以用于電話簿的手動下載。SyncML針對OBEX定義的綁定協議分別定義了SyncML在紅外OBEX和藍牙OBEX上的實現方式,跟藍牙OBEX的綁定如圖2所示。

        圖2中的SyncML Client層實現客戶端代理的功能,SYncMLServer層實現同步引擎和服務器端代理的功能。OBEX定義了對象模型來描述對象,使用PUT 和GET命令在不同設備、不同平臺之間方便高效地交換信息。為了統一地描述各種對象,OBEX定義了Header的概念,每個Header描述對象的一個方面。OBEX定義了一系列常用的Header,其中SyncML應用到的header為Connection ID、Type、length、Body/EndofBody、Target。
        SyncML應用所綁定的OBEX操作符包括Connect、Disconnect、Put、Get和Abort。綁定協議規定每條SyncML消息必須以MIME類型在OBEX請求或響應主體內傳輸,定義了OBEX連接、對象交換、斷開連接過程中的請求/響應必須包括哪些Filed和Header,比如在一次OBEX Connect操作中,必須包括的Field為連接操作符0x80+包長度+OBEX版本號+標志位+最大OBEX包長度,包含的Header為Target。
        SyncML的實現
        SyncML的實現包括應用程序、SyncML協議的實現和通信程序三個部分,軟件結構如圖3所示。應用程序包括同步管理器、變更日志管理和數據庫管理三個部分。同步管理器按照SyncML同步協議為每個同步類型定義的消息序列表管理同步流程,通過調用SyncML協議實現的API,實現錯誤處理、命令處理等操作;變更日志管理程序記錄數據更改情況,同時維護多個變更日志,數據庫管理程序實現對電話簿數據庫的增刪和修改。SyncML協議的實現主要完成創建、發送、接收和解析SyncML消息,該部分在SyncML協會提供的開放性實現樣本--SyncML C Toolkit的基礎上實現。通信程序即SyncML與OBEX的綁定,將SyncML消息封裝為OBEX的object,通過藍牙鏈路進行傳輸。
        電話簿數據的處理
        電話簿數據對象符合vCard2.1和vCard3.0規范,該規范被SyncML使用,用于電話簿數據類型的定義。vCard定義了一種個人信息的組織方法,主要用于個人信息的傳輸和交換。符合vCard規范的電話簿數據如下所示:
        vCard采用Property(字段)來描述個人的一條信息,比如TEL字段表示電話號碼,參數WORK表示該電話號碼為單位電話。vCard采用面向行的組織形式,除了在字段值中的多行,每一行都表示一條完整的信息。本文編寫的vCard解析函數便是根據這樣的組織形式,將vCard數據包姓名、工作單位電話、家庭電話、手機和車載電話分別提取出來,放在如下定義的電話簿數據結構體中:
        結語
        本文針對藍牙車載免提裝置開發中的電話簿同步應用,在分析SyncML協議的基礎上,將SyncML與藍牙OBEX綁定,并按照vCard規范解析電話簿數據,在pic18F2480和Bluecore5-MM上開發實現了藍牙車載免提裝置和手機電話簿保持同步。


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 永康市| 紫云| 巴马| 高台县| 陇川县| 桂阳县| 读书| 石门县| 积石山| 民县| 张家口市| 淳安县| 古丈县| 孝昌县| 灵山县| 武宣县| 会东县| 屯昌县| 凤山县| 永新县| 杭州市| 徐州市| 长白| 兴义市| 浏阳市| 新昌县| 隆尧县| 桐梓县| 汕头市| 玉门市| 广昌县| 阜新| 砚山县| 江西省| 开鲁县| 苏州市| 岑巩县| 旬邑县| 龙井市| 莱州市| 资兴市|