0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于藍(lán)牙技術(shù)實(shí)現(xiàn)嵌入式SyncML服務(wù)器的應(yīng)用方案

電子設(shè)計(jì) ? 來(lái)源:電子產(chǎn)品世界 ? 作者:馬建輝;呂夢(mèng)興 ? 2021-03-31 09:38 ? 次閱讀

作者:馬建輝;呂夢(mèng)興;王知學(xué);于良杰;成巍

SyncML與藍(lán)牙協(xié)議

圖1為SyncML的藍(lán)牙應(yīng)用協(xié)議結(jié)構(gòu)圖。依據(jù)SyncML協(xié)會(huì)定義的藍(lán)牙綁定協(xié)議,SyncML服務(wù)器的藍(lán)牙實(shí)現(xiàn)需要用到SDP和OBEX協(xié)議,電話簿同步應(yīng)用需要用到vCard規(guī)范。SDP協(xié)議用于SyncML服務(wù)器藍(lán)牙服務(wù)的注冊(cè),查詢藍(lán)牙手機(jī)的SyncML客戶端服務(wù)以在RFCOMM層上建立藍(lán)牙連接,該RFCOMM連接是SyncML連接的基礎(chǔ);OBEX(Object Exchange)是對(duì)象交換協(xié)議,它管理SyncML服務(wù)的連接,將SyncML文檔封裝為Object進(jìn)行傳輸并控制傳輸過(guò)程;vCard規(guī)范是電子名片規(guī)范,定義了個(gè)人名片信息的標(biāo)準(zhǔn)格式,方便傳播和交換。下面從這三個(gè)方面介紹SyncML的電話薄同步應(yīng)用的關(guān)鍵點(diǎn)。

基于藍(lán)牙技術(shù)實(shí)現(xiàn)嵌入式SyncML服務(wù)器的應(yīng)用方案

SDP在SyncML中的應(yīng)用

SyncML綁定協(xié)議中定義了SyncML客戶端和服務(wù)器的SDP紀(jì)錄。

SDP是藍(lán)牙服務(wù)發(fā)現(xiàn)協(xié)議,它提供了注冊(cè)藍(lán)牙服務(wù)和搜索及瀏覽藍(lán)牙服務(wù)的方法。注冊(cè)藍(lán)牙服務(wù)是本地行為,以Service Discovery DataBase即服務(wù)發(fā)現(xiàn)數(shù)據(jù)庫(kù)的形式紀(jì)錄,每條Record即服務(wù)發(fā)現(xiàn)數(shù)據(jù)庫(kù)中的一個(gè)條目。搜索及瀏覽則基于C/S結(jié)構(gòu)(客戶端/服務(wù)器)的請(qǐng)求-響應(yīng)形式,使得客戶端可以訪問(wèn)服務(wù)器端的服務(wù)數(shù)據(jù)庫(kù)。

作為SyncML的服務(wù)器端,首先需要注冊(cè)該藍(lán)牙服務(wù)并處于pageable(可被尋呼)狀態(tài),這樣才能被藍(lán)牙手機(jī)發(fā)現(xiàn)本地設(shè)備的SyncML服務(wù)。SDP Record以結(jié)構(gòu)體形式定義,定義了若干屬性和數(shù)據(jù)類型,包括ServiceClassIDList、protocolDescriptorList、 Service Name、ServiceDescription等,其中ServiceClassIDList屬性是最為重要的,以全局唯一標(biāo)識(shí)符UUID表示,客戶端搜索服務(wù)器端服務(wù)的時(shí)候便是根據(jù)該屬性進(jìn)行定位。

Syncml服務(wù)器端的ServiceClassID為00000001-0000-1000-8000-0002EE000002,藍(lán)牙協(xié)議為OBEX,數(shù)據(jù)類型均為DataElSeq。注冊(cè)該服務(wù)時(shí)首先給server channel賦值為默認(rèn)值0,然后為該服務(wù)分配Rfcomm 通道,將分配的通道號(hào)給server channel重新賦值。

車載藍(lán)牙設(shè)備與手機(jī)建立免提連接后主動(dòng)發(fā)起跟手機(jī)的SyncML服務(wù)的連接,首先設(shè)備通過(guò)SyncML客戶端ServiceClassID定位手機(jī)端的SyncML服務(wù)記錄,然后在該服務(wù)記錄中查詢手機(jī)為SyncML服務(wù)分配的Rfcomm通道號(hào),然后建立Rfcomm層的連接。

OBEX綁定

SyncML應(yīng)用獨(dú)立于具體的傳輸方式,換言之,針對(duì)具體的傳輸方式,SyncML定義了相應(yīng)的綁定適配協(xié)議。對(duì)于藍(lán)牙應(yīng)用,SyncML OBEX綁定協(xié)議定義了SyncML在藍(lán)牙上的實(shí)現(xiàn)方式。下面介紹OBEX協(xié)議,以及SyncML在OBEX上綁定時(shí)需要注意的地方。

OBEX(Object Exchange)對(duì)象交換協(xié)議是采用C/S(客戶/服務(wù)器)結(jié)構(gòu)的面向會(huì)話的協(xié)議,它建立了“對(duì)象模型”以抽象描述各種實(shí)體,并定義了Header的概念來(lái)描述對(duì)象,一個(gè)對(duì)象便是一系列Header的集合。

OBEX定義了OBEX客戶端和服務(wù)器端的應(yīng)用規(guī)范,客戶端是指發(fā)起OBEX連接、初始化OBEX會(huì)話的一端。根據(jù)車載設(shè)備要在免提連接建立后進(jìn)行電話薄同步的應(yīng)用,車載設(shè)備需要實(shí)現(xiàn)OBEX客戶端。OBEX客戶端在之前建立的Rfcomm連接的通道上發(fā)起連接請(qǐng)求,請(qǐng)求數(shù)據(jù)為80 00 15 11 00 04 00 46 00 0e 53 59 4e 43 4d 4c 2d 53 59 4e 43。其中0x80為連接操作符,連接請(qǐng)求包長(zhǎng)度為0x0015,OBEX版本為version1.1,版本號(hào)表示為0x1100,最大OBEX包長(zhǎng)度為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類型的對(duì)象在OBEX請(qǐng)求或響應(yīng)主體內(nèi)傳輸,該類型為“application/vnd.syncml+wbxml”。SyncML同步電話薄的速度是個(gè)很關(guān)鍵的用戶體驗(yàn),相關(guān)的關(guān)鍵屬性值為最大OBEX包長(zhǎng)度,它決定了每次交互的OBEX包的大小,從而決定了交互次數(shù),該最大包長(zhǎng)度越大,交互次數(shù)越少,從而同步速度越快,反之,同步速度越慢。該最大包長(zhǎng)度在OBEX連接時(shí)協(xié)商決定,取雙方設(shè)備能夠支持的最大包長(zhǎng)度的較小值。

SyncML的藍(lán)牙應(yīng)用不可避免地會(huì)遇到兼容性問(wèn)題,在測(cè)試過(guò)程中發(fā)現(xiàn)車載設(shè)備和Nokia6288手機(jī)進(jìn)行同步時(shí),車載設(shè)備通過(guò)PUT發(fā)給手機(jī)的SyncML Document的最后一包必須是空包82 00 03,否則無(wú)法繼續(xù)同步。

vCard解析

SyncML實(shí)現(xiàn)的藍(lán)牙手機(jī)和車載設(shè)備間電話薄同步應(yīng)用中,首先提取出采用vCard格式的個(gè)人信息數(shù)據(jù)和相關(guān)命令,將數(shù)據(jù)和命令映射在一起存儲(chǔ)為結(jié)構(gòu)體形式的列表,然后根據(jù) vCard規(guī)范解析出個(gè)人信息,根據(jù)命令完成添加、刪除和替代電話薄條目。解析出的個(gè)人信息包括人名、手機(jī)號(hào)碼、家庭電話、辦公電話和車載電話,命令為 ADD、DELETE、REPLACE。下面簡(jiǎn)要介紹vCard規(guī)范,以及vCard解析的實(shí)現(xiàn)。

vCard電子名片規(guī)范定義了個(gè)人公共信息交換(PDI)的描述標(biāo)準(zhǔn)和組織格式,該格式與信息傳送的方式無(wú)關(guān),方便了各種系統(tǒng)和應(yīng)用之間的信息交換。在vCard中,個(gè)人公共信息包括姓名、年齡、地址、電話等與個(gè)人緊密相關(guān)的基本信息。手機(jī)內(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ù)的存儲(chǔ)格式及訪問(wèn)接口的規(guī)范,vCard解析需要能夠解析這兩種版本。根據(jù)車載信息娛樂(lè)設(shè)備的應(yīng)用,vCard解析函數(shù)需要提取出姓名和電話號(hào)碼兩個(gè)屬性,其中電話號(hào)碼又包括手機(jī)、家庭電話、辦公電話、車載電話四類,其屬性值均為TEL,參數(shù)值分別為CELL、HOME、WORK、CAR,下面給出設(shè)計(jì)代碼的主要部分。

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是比較字符串函數(shù),對(duì)輸入的兩個(gè)字符串不分大小寫按字節(jié)進(jìn)行比較,具體代碼略。

結(jié)語(yǔ)

現(xiàn)在的一些文章中,對(duì)SyncML的藍(lán)牙實(shí)現(xiàn)只是泛泛而論,并沒(méi)有對(duì)具體的實(shí)現(xiàn)做深入的研究和分析,在一款車載信息娛樂(lè)設(shè)備上設(shè)計(jì)實(shí)現(xiàn)了基于藍(lán)牙技術(shù)嵌入式SyncML服務(wù)器,從SDP和OBEX綁定上具體指出了SyncML藍(lán)牙應(yīng)用的設(shè)計(jì)要點(diǎn),并結(jié)合vCard規(guī)范給出了電話薄數(shù)據(jù)解析的具體實(shí)現(xiàn)代碼。實(shí)踐證明,車載藍(lán)牙設(shè)備的嵌入式SyncML服務(wù)器運(yùn)行穩(wěn)定,有很好的應(yīng)用價(jià)值。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    114

    文章

    5683

    瀏覽量

    168069
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8700

    瀏覽量

    84532
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3711

    瀏覽量

    64023
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一種嵌入式Web服務(wù)器的設(shè)計(jì)方案

    隨著計(jì)算機(jī)技術(shù)和通訊技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)和嵌入式智能儀器得到越來(lái)越廣泛的應(yīng)用,人類社會(huì)進(jìn)入后PC時(shí)代。本文主要介紹了嵌入式Web服務(wù)器設(shè)計(jì)
    發(fā)表于 01-23 09:50 ?4163次閱讀

    基于H264的嵌入式視頻服務(wù)器的設(shè)計(jì)

    基于H264的嵌入式視頻服務(wù)器的設(shè)計(jì)摘要! 本文介紹了基于的嵌入式視頻服務(wù)器的設(shè)計(jì)重點(diǎn)闡述了嵌入式操作系統(tǒng)" 視頻
    發(fā)表于 06-25 10:50

    于藍(lán)牙嵌入式通信模塊的實(shí)現(xiàn)

    于藍(lán)牙嵌入式通信模塊的實(shí)現(xiàn)
    發(fā)表于 08-20 09:32

    嵌入式FTP服務(wù)器實(shí)現(xiàn)什么功能?

    FTP服務(wù)是目前廣泛應(yīng)用的因特網(wǎng)應(yīng)用服務(wù)之一,為了在國(guó)產(chǎn)嵌入式實(shí)時(shí)操作系統(tǒng)平臺(tái)上開(kāi)發(fā)FTP服務(wù),采用多線程并發(fā)服務(wù)器的體系結(jié)構(gòu)設(shè)計(jì)了一種
    發(fā)表于 03-11 08:27

    如何用嵌入式處理MCF5272來(lái)實(shí)現(xiàn)家庭藍(lán)牙網(wǎng)關(guān)?

    本文基于藍(lán)牙技術(shù),介紹了用Motorola公司的嵌入式處理MCF5272來(lái)實(shí)現(xiàn)家庭藍(lán)牙網(wǎng)關(guān)的具
    發(fā)表于 06-04 06:36

    于藍(lán)牙應(yīng)用的嵌入式設(shè)備

    的發(fā)展.其中藍(lán)牙技術(shù)就是一個(gè)典型的例子.它的無(wú)線通訊方式使得各類數(shù)據(jù)的傳輸和交換變得越來(lái)越便捷.以此同時(shí),各類基于藍(lán)牙應(yīng)用的嵌入式設(shè)備迅速成為炙手可熱的消費(fèi)類電子產(chǎn)品.特別是
    發(fā)表于 11-05 06:06

    如何實(shí)現(xiàn)對(duì)嵌入式WEB服務(wù)器系統(tǒng)的控制設(shè)計(jì)

    簡(jiǎn)單設(shè)計(jì)。本設(shè)計(jì)利用ARM 自帶的WEB服務(wù)器技術(shù),來(lái)實(shí)現(xiàn)對(duì)嵌入式WEB服務(wù)器系統(tǒng)的控制設(shè)計(jì)。該技術(shù)
    發(fā)表于 11-09 08:47

    嵌入式Web 服務(wù)器的分析與研究

    首先介紹嵌入式Web 服務(wù)器的發(fā)展背景。然后,詳細(xì)討論嵌入式Web 服務(wù)器的支撐技術(shù),并提出瘦Web服務(wù)
    發(fā)表于 05-14 14:35 ?20次下載

    基于SOPC的嵌入式Web服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)

    設(shè)計(jì)并實(shí)現(xiàn)了基于SOPC技術(shù)嵌入式Web服務(wù)器,簡(jiǎn)單介紹了SOPC技術(shù)的特點(diǎn)及構(gòu)建方法,隨后對(duì)該嵌入式
    發(fā)表于 09-21 10:21 ?33次下載

    嵌入式SyncML服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

    該文應(yīng)用SyncML協(xié)議實(shí)現(xiàn)藍(lán)牙手機(jī)與車載免提系統(tǒng)之間的電話本同步,其中車載系統(tǒng)為SyncML服務(wù)器端。系統(tǒng)采用雙處理
    發(fā)表于 02-23 15:10 ?22次下載

    嵌入式Web服務(wù)器實(shí)現(xiàn)及其CGI應(yīng)用

    嵌入式設(shè)備資源有限,在這種情況下實(shí)現(xiàn)Web服務(wù)功能比較困難。針對(duì)嵌入式設(shè)備這種特點(diǎn),本文通過(guò)比較幾種Web服務(wù)器的優(yōu)缺點(diǎn),選定了Shttpd
    發(fā)表于 11-15 10:15 ?79次下載
    <b class='flag-5'>嵌入式</b>Web<b class='flag-5'>服務(wù)器</b>的<b class='flag-5'>實(shí)現(xiàn)</b>及其CGI應(yīng)用

    基于ARM的嵌入式Web服務(wù)器的設(shè)計(jì)方案

    嵌入式系統(tǒng)實(shí)現(xiàn)服務(wù)器的軟件和硬件功能,是嵌入式技術(shù)和網(wǎng)絡(luò)技術(shù)相結(jié)合的產(chǎn)物。與傳統(tǒng)
    發(fā)表于 07-08 18:12 ?27次下載
    基于ARM的<b class='flag-5'>嵌入式</b>Web<b class='flag-5'>服務(wù)器</b>的設(shè)計(jì)<b class='flag-5'>方案</b>

    基于ARM的嵌入式Web服務(wù)器設(shè)計(jì)方案

    基于ARM的嵌入式Web服務(wù)器設(shè)計(jì)方案
    發(fā)表于 06-15 11:13 ?20次下載

    嵌入式web服務(wù)器系統(tǒng)設(shè)計(jì),基于-ARM簡(jiǎn)單嵌入式WEB服務(wù)器系統(tǒng)設(shè)計(jì).doc

    進(jìn)行了簡(jiǎn)單設(shè)計(jì)。本設(shè)計(jì)利用ARM 自帶的WEB服務(wù)器技術(shù),來(lái)實(shí)現(xiàn)對(duì)嵌入式WEB服務(wù)器系統(tǒng)的控制設(shè)計(jì)。該
    發(fā)表于 11-03 20:06 ?21次下載
    <b class='flag-5'>嵌入式</b>web<b class='flag-5'>服務(wù)器</b>系統(tǒng)設(shè)計(jì),基于-ARM簡(jiǎn)單<b class='flag-5'>嵌入式</b>WEB<b class='flag-5'>服務(wù)器</b>系統(tǒng)設(shè)計(jì).doc

    嵌入式web服務(wù)器系統(tǒng),嵌入式Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

    摘要:嵌入式Web服務(wù)器嵌入式系統(tǒng)應(yīng)用的一個(gè)重要組成部分.以其簡(jiǎn)單,廉價(jià),功能完善和通用性強(qiáng)等特點(diǎn),在遠(yuǎn)程監(jiān)控,智能家電和資源共享等多種場(chǎng)合得到廣泛應(yīng)用.本文以嵌入式Web
    發(fā)表于 11-04 11:06 ?27次下載
    <b class='flag-5'>嵌入式</b>web<b class='flag-5'>服務(wù)器</b>系統(tǒng),<b class='flag-5'>嵌入式</b>Web<b class='flag-5'>服務(wù)器</b>的設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>