<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    SyncML在藍牙車載信息娛樂設備上的設計與實現

    發布時間:2009-12-21 15:27    發布者:賈延安
    關鍵詞: SyncML , 車載 , 藍牙 , 設計 , 娛樂設備
      SyncML與藍牙協議

      圖1為SyncML的藍牙應用協議結構圖。依據SyncML協會定義的藍牙綁定協議,SyncML服務器的藍牙實現需要用到SDP和OBEX協議,電話簿同步應用需要用到vCard規范。SDP協議用于SyncML服務器藍牙服務的注冊,查詢藍牙手機的SyncML客戶端服務以在RFCOMM層上建立藍牙連接,該RFCOMM連接是SyncML連接的基礎;OBEX(Object Exchange)是對象交換協議,它管理SyncML服務的連接,將SyncML文檔封裝為Object進行傳輸并控制傳輸過程;vCard規范是電子名片規范,定義了個人名片信息的標準格式,方便傳播和交換。下面從這三個方面介紹SyncML的電話薄同步應用的關鍵點。



      SDP在SyncML中的應用

      SyncML綁定協議中定義了SyncML客戶端和服務器的SDP紀錄。

      SDP是藍牙服務發現協議,它提供了注冊藍牙服務和搜索及瀏覽藍牙服務的方法。注冊藍牙服務是本地行為,以Service Discovery DataBase即服務發現數據庫的形式紀錄,每條Record即服務發現數據庫中的一個條目。搜索及瀏覽則基于C/S結構(客戶端/服務器)的請求-響應形式,使得客戶端可以訪問服務器端的服務數據庫。

      作為SyncML的服務器端,首先需要注冊該藍牙服務并處于pageable(可被尋呼)狀態,這樣才能被藍牙手機發現本地設備的SyncML服務。SDP Record以結構體形式定義,定義了若干屬性和數據類型,包括ServiceClassIDList、protocolDescriptorList、 Service Name、ServiceDescription等,其中ServiceClassIDList屬性是最為重要的,以全局唯一標識符UUID表示,客戶端搜索服務器端服務的時候便是根據該屬性進行定位。

      Syncml服務器端的ServiceClassID為00000001-0000-1000-8000-0002EE000002,藍牙協議為OBEX,數據類型均為DataElSeq。注冊該服務時首先給server channel賦值為默認值0,然后為該服務分配Rfcomm 通道,將分配的通道號給server channel重新賦值。

      車載藍牙設備與手機建立免提連接后主動發起跟手機的SyncML服務的連接,首先設備通過SyncML客戶端ServiceClassID定位手機端的SyncML服務記錄,然后在該服務記錄中查詢手機為SyncML服務分配的Rfcomm通道號,然后建立Rfcomm層的連接。

      OBEX綁定

      SyncML應用獨立于具體的傳輸方式,換言之,針對具體的傳輸方式,SyncML定義了相應的綁定適配協議。對于藍牙應用,SyncML OBEX綁定協議定義了SyncML在藍牙上的實現方式。下面介紹OBEX協議,以及SyncML在OBEX上綁定時需要注意的地方。

      OBEX(Object Exchange)對象交換協議是采用C/S(客戶/服務器)結構的面向會話的協議,它建立了“對象模型”以抽象描述各種實體,并定義了Header的概念來描述對象,一個對象便是一系列Header的集合。

      OBEX定義了OBEX客戶端和服務器端的應用規范,客戶端是指發起OBEX連接、初始化OBEX會話的一端。根據車載設備要在免提連接建立后進行電話薄同步的應用,車載設備需要實現OBEX客戶端。OBEX客戶端在之前建立的Rfcomm連接的通道上發起連接請求,請求數據為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表明連接的目的或服務,在這里Target為53 59 4e 43 4d 4c 2d 53 59 4e 43即SYNCML-SYNC,表明建立的OBEX連接用于SyncML。

      SyncML Document需要封裝為SyncML MIME類型的對象在OBEX請求或響應主體內傳輸,該類型為"application/vnd.syncml+wbxml"。SyncML同步電話薄的速度是個很關鍵的用戶體驗,相關的關鍵屬性值為最大OBEX包長度,它決定了每次交互的OBEX包的大小,從而決定了交互次數,該最大包長度越大,交互次數越少,從而同步速度越快,反之,同步速度越慢。該最大包長度在OBEX連接時協商決定,取雙方設備能夠支持的最大包長度的較小值。

      SyncML的藍牙應用不可避免地會遇到兼容性問題,在測試過程中發現車載設備和Nokia6288手機進行同步時,車載設備通過PUT發給手機的SyncML Document的最后一包必須是空包82 00 03,否則無法繼續同步。

      vCard解析

      SyncML實現的藍牙手機和車載設備間電話薄同步應用中,首先提取出采用vCard格式的個人信息數據和相關命令,將數據和命令映射在一起存儲為結構體形式的列表,然后根據 vCard規范解析出個人信息,根據命令完成添加、刪除和替代電話薄條目。解析出的個人信息包括人名、手機號碼、家庭電話、辦公電話和車載電話,命令為 ADD、DELETE、REPLACE。下面簡要介紹vCard規范,以及vCard解析的實現。

      vCard電子名片規范定義了個人公共信息交換(PDI)的描述標準和組織格式,該格式與信息傳送的方式無關,方便了各種系統和應用之間的信息交換。在vCard中,個人公共信息包括姓名、年齡、地址、電話等與個人緊密相關的基本信息。手機內vCard樣例如下:

    BEGIN:VCARD
    VERSION:2.1
    N:denglibao
    TEL;WORK:045182605447
    TEL;HOME:05307415684
    TEL;CELL:13478951524
    END:VCARD



      現在使用的vCard規范版本為2.1和3.0,定義了數據的存儲格式及訪問接口的規范,vCard解析需要能夠解析這兩種版本。根據車載信息娛樂設備的應用,vCard解析函數需要提取出姓名和電話號碼兩個屬性,其中電話號碼又包括手機、家庭電話、辦公電話、車載電話四類,其屬性值均為TEL,參數值分別為CELL、HOME、WORK、CAR,下面給出設計代碼的主要部分。

    unsigned int vcard_parse(void)
    {   
      unsigned int cnt,end,i,phone_index;
      char* p;
      end=vcard_length;
      value_initia();
      /*begin to parse vcard*/
      for (cnt=13; cnt      after"BEGIN:VCARD"*/
      {
               if((0xd==an_complete_vcard[cnt])&&(0xa==an_
                                         complete_vcard[cnt+1]))
              {  
            /*extract a property,another property parameter or vcard end*/
                        cnt=cnt+2;/*skip \r\n*/
           /*if vcard end*/
            p=&an_complete_vcard[cnt];
                         if(0==uCompareASCIIName(p,"END:VCARD",9))
                            {
                    if(vcard_cmd==ADD)
                      {
                                                     phonebook_insert();
                            }//the vcard cmd ADD
        else if(vcard_cmd==REPLACE)
        {   
        }// the vcard cmd REPLACE
         return 0;
      }else if(0==uCompareASCIIName(p,"TEL;",4))
      {   
             cnt=cnt+4;/* TEL property ,first skip "TEL;"*/           …
               p=&an_complete_vcard[cnt];
               if(0==uCompareASCIIName(p,"PREF",4))/*mobile
                phonenumber*/
           {     
        cnt=cnt+4;/*skip the "PREF"*/
          ...
                                     cnt=cnt-2;/*check next \r\n,in the "for",cnt++,so -2,not -1*/
      }else if(0==uCompareASCIIName(p,"VOICE",5))
      {
      }else if(0==uCompareASCIIName(p,"CELL",4))
      {
      }else if(0==uCompareASCIIName(p,"HOME",4))
      {
      }else if(0==uCompareASCIIName(p,"WORK",4))
      {
      } else if(0==uCompareASCIIName(p,"CAR",3))
      {  
      }
      } else if(0==uCompareASCIIName(p,"TEL:",4))
      { //some phone’s telephone have no parameter,
               for example TEL:10086  
      }else if(0==uCompareASCIIName(p,"N",1))
      { //name property
      }
           }
    }
    return 0;
    }
      其中,uCompareASCIIName是比較字符串函數,對輸入的兩個字符串不分大小寫按字節進行比較,具體代碼略。

      結語

      現在的一些文章中,對SyncML的藍牙實現只是泛泛而論,并沒有對具體的實現做深入的研究和分析,筆者在一款車載信息娛樂設備上設計實現了基于藍牙技術的嵌入式SyncML服務器,從SDP和OBEX綁定上具體指出了SyncML藍牙應用的設計要點,并結合vCard規范給出了電話薄數據解析的具體實現代碼。實踐證明,車載藍牙設備的嵌入式SyncML服務器運行穩定,有很好的應用價值。

      參考文獻:

      [1]袁仁順.OBEX通信協議淺析[J].軟件導刊,2008(10)

      [2]熊江,顧君忠,薛梅.藍牙SDP的分析和實現及其改進思路[J],華東師范大學學報(自然科學版),2004(4)

      [3]任李剛.淺析數據同步協議—SyncML[J].中國數據通信,2002(10)

      [4]SyncML OBEX Binding[R/OL].(2002).http://www.syncml.org/docs/syncml_obex_v11-20020215.pdf

      [5]顧友俊,羅蕾.Sync ML Client實現研究[J].單片機與嵌入式系統應用,2004(01)

    作者:馬建輝 山東省科學院自動化研究所 汽車電子重點實驗室 呂夢興 南京工業大學土木工程學院交通工程系
    本文地址:http://www.portaltwn.com/thread-6742-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關在線工具

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷