SyncML在蓝牙车载信息娱乐设备上的设计与实现

  作者:马建辉 山东省科学院自动化研究所 汽车电子重点实验室 吕梦兴 南京工业大学土木工程学院交通工程系 时间:2009-12-11来源:电子产品世界

  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,下面给出设计代码的主要部分。

1 2 3 4

关键词: SyncML 蓝牙 车载信息娱乐设备 绑定 OBEX 200912

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版