基于蓝牙OBEX协议对MAP剖面开发的研究

来源 :硅谷 | 被引量 : 0次 | 上传用户:orc2008
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 通过对蓝牙协议栈的研究和MAP剖面的支持协议OBEX的应用代码进行解读,掌握蓝牙剖面开发的机制,主要是task、message、handler functions的使用。从而找到MAP剖面应用开发的方向。
  关键词: 蓝牙;协议栈;剖面;OBEX;MAP;CSR;SDK
  中图分类号:TP391 文献标识码:A 文章编号:1671-7597(2012)0610074-01
  
  蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输。[1]
  蓝牙SIG联盟一直致力于蓝牙协议和规范的制定和发布。目前蓝牙协议一共有6个版本,市场分布率最高的是2.0和2.1+EDR,最具前景的当属4.0规范。4.0是三位一体的蓝牙技术,它将三种规格合而为一,分别是传统蓝牙、低功耗蓝牙和高速蓝牙技术,这三个规格可以组合或者单独使用,因此SIG发布的蓝牙产品商标规范分为了Bluetooth Smart和Bluetooth Smart Ready。4.0的低功耗技术可以使使一粒纽扣电池连续工作数年之久。在能源紧缺的时代,低功耗的无线通信技术是必然的研究发展趋势。但是由于4.0规范在产品应用方面尚未成熟,绝大部分产品的支持的仍然是2.0和2.1+EDR,3.0规范的蓝牙正规产品也是屈指可数。
  在产业界,最热的无线通信技术有zigbee,wifi。与用于工控的Zigee的低功耗实时性特点相比,蓝牙具有传输数据快,数据量相对较大的优势。与无线局域网技术Wifi相比,具有辐射小,发射功率安全可靠的特点。这也是蓝牙免提耳机和蓝牙音乐耳机等娱乐设备市场欢迎度高的原因。
  本文先简单介绍蓝牙协议protocol和剖面Profile,概述当下蓝牙产品的发展情况,然后详细介绍基于蓝牙协议栈和OBEX(Object Exchange)协议[2]的蓝牙MAP(Message access profile)短信访问剖面[3]实现的研究工作。
  SIG发布的蓝牙规范包括蓝牙协议规范和剖面规范,这些规范构成了整个蓝牙技术产品的完整协议栈。蓝牙协议栈分为三层:蓝牙底层协议(RF、BB、LMP协议)、中间层协议(HCI、L2CAP、RFCOMM、TCS、SDP)、高层协议(OBEX、WAP、Audio等),在协议栈之上的应用层由剖面来定义。当下蓝牙产品应用最多的剖面主要是免提、音频、电话本、FTP等。随着人们对蓝牙产品的需求渐增,产品的创新性在也面临着巨大的考验,对新功能的剖面的研究和实现工作也势在必行。
  顺应时代的潮流和市场的需求,具有MAP的蓝牙车载等设备具有巨大的市场竞争力。要对蓝牙剖面进行相应产品的开发,必须了解蓝牙协议栈的基本概念,协议栈各部分的作用,以及各部分之间的联系。然后通过已经实现了的剖面,学习如何按照MAP剖面的协议进行编程代码的实现。对于蓝牙协议栈的理解,本文不做探讨,可以参见钱志鸿老师的《蓝牙技术原理、开发与应用》[4]以及网络上众多达人发表的宝贵的经验。
  MAP剖面应用的实现是基于OBEX协议,因此可通过与OBEX相关代码进行解读,来学习如何编写MAP规范应用。本文所选的是CSR SDK提供的OBEX server代码。其main文件中,代码分为4个部分,分别是包含头文件、数据结构的定义、任务处理函数的定义、mian函数。
  包含头文件。主要是将要是用的库包含进去。在蓝牙Profile的开发中,开发者不需要顾虑蓝牙底层协议栈的开发(单芯片的开发方式[5]),因为在CSR提供的SDK中已经将协议栈做成了固件,在xIDE中编程时,只需要将需要的库包含进去,即可调用相应API,这样开发者可以专注于上层应用Profile的开发。CSR提供的库[6]包括基础库、支持库、剖面库。基础库主要是标准C基础库和CSR基础库;支持库主要是支持RFCOMM、L2CAP和SC0连接的实现;剖面库提供了剖面和其他库的接口。
  数据结构的定义。在定义了指向任务处理函数指针,在messageloop()函数中,被用来指向处理被触发事件产生的message的函数。在越复杂的Profile中,数据结构的定义越复杂。
  任务处理函数的定义。蓝牙剖面的编程开发使用了面向对象编程技术,采用事件触发,任务队列,信息队列的机制[7]。该函数是在事件被触发后,相应的消息Message(事件消息,与MAP中的message有质的区别)传入,通过判断message
  的属性后,调用不同的任务处理函数来对进行处理。在简单的Profile应用中,往往代码只有一个task handler即任务处理函数,在复杂的应用中,可能有多个handler分别处理不同类的message。Message handler函数static void connect_han
  dler(Task task,MessageId id,Message message)的参数分别是指向该任务的函数指针、message的ID号、message包含的信息。在该函数中,主要通过switch(id)来对该message做不同的处理。例如在“case CL_INIT_CFM:”时,先对message包含的信息进行保存,即CL_INIT_CFM_T *msg = (CL_INIT_CFM_
  T*)message;再判断连接初始化是否成功,if(msg->status ==success)则表明连接初始化成功;紧接着初始化Opp,OppsInit(&OPPState.OppTask,1)后(因为该代码使用的是实现了Opp和FTP Profile,这里仅对Opp的代码进行说明,ftp大同小异)再使设备可见ConnectionWriteScanEnable(hci_scan   _Enable_inq_and_page)这样使远程设备可以发现和寻呼本地设备。其他的id如CL_DM_LINK_SUPERVISION_TIMEOUT_IND,CL_DM_SNIFF_SUB_RATING_IND等的处理内容就不一一说明了,其实现两个设备配对和数据传输是由OBEX协议以及Opp所规定的,在对此进行实现的过程中要详细阅读OBEX协议和Opp Profile的说明书。
  Main函数。包括初始化指向任务函数handler的指针:MainState.ConTask.handler = connect_handler,初始化OPP server 信息的指针:opp_initTask(&OPPState),初始化链接库:ConnectionInit(&MainState.ConTask),消息队列循环:MessageLoop(),消息队列循环函数主要是依据事件触发后产生的message调用相应的handler。例如在Connection
  Init(&MainState.ConTask),初始化完成后,会产生一个message,其id=CL_INIT_CFM,则由connect_handler来处理,具体情况上段文字已经说明。处理完该事件后,继续轮询,注意MessageLoop()函数是没有返回值的,因为程序一直执行该函数而不跳出。
  MAP Profile应用代码的编写。在OBEX server代码中包含了opp和ftp应用的代码,通过Opp代码尝试写ftp的代码,然后和标准程序做对比,烧到蓝牙开发板模块中调试。成功后,再根据MAP Profile的说明文档进行代码编写。MAP中规定了4个功能分别是:短信通知功能、阅读功能、上载功能、处理功能。每个功能定义了发送和返回消息的信息格式以及发送事件的函数流程。开发者要依据自身产品的需求选择对应的功能来进行研发。
  本文通过对蓝牙协议和其剖面以及当下蓝牙产品的发展情况做了简单的概述,论证了蓝牙产品需要创新的必要性和可实现性。而基于时代的潮流,MAP短信访问Profile于车载的应用也是极具市场竞争力。在MAP Profile的开发中,可以参考CSR SDK提供的OBEX serve代码,重点掌握任务、事件、消息机制,消息的处理,OBEX库API的调用,以及蓝牙协议栈固件的使用。再结合MAP Specification根据自身产品的需求进行功能选择来进行研发。随着人们日益增长的需求,蓝牙产品必然会包含更多的Profile应用,剖面Profile的研发在单芯片的开发模式中大同小异。随着效果优良功能齐全的蓝牙产品的面市,蓝牙技术必然会给人们的生活带来更多的精彩。
  参考文献:
  [1]http://baike.baidu.com/view/1028.htm.
  [2]Bluetooth Special Interest Group, IrDA Interoperability.
  [3]Specification of the Bluetooth System, Core, version 1.2 or Later, MAP.
  [4]钱志鸿、杨帆、周求湛,蓝牙技术原理、开发与应用[M].北京:北京航空航天大学出版社,2006.
  [5]马建辉、吕梦兴、马共立,Bluecore5-MM在车载蓝牙设备中的应用[J].电子设计工程,2009(17).
  [6]BlueLab Support Documentation: CS-101501-UGP3_BlueLab_Lib
  raries.
  [7]BlueLab Support Documentation: CS-110344-UGP2_WritingBlue
  COreApplication.
其他文献
0 引言  雷达对抗是指从敌方雷达及其武器系统获取信息(侦察),破坏和乱敌方雷达及其武器系统得正常工作的战术、技术措施的总称。应用于雷达对抗中的波形产生,须具备工作频率高,瞬时带宽宽,波形产生实时性要求高等特点。近年来,由于大规模集成电路(VLSI)的制造技术和数字信号处理技术的飞速发展,使得采用数字方法来合成一个真实的雷达图像和假目标,甚至于是产生一个和飞行器一样大的假目标成为了可能。本文介绍了
本文在分析国内外称重送料装置的历史和发展的基础上,对目前国内称重送料设备自动化程度低、精度不高等现状,设计完成了一种基于AT89S51单片机控制的实现三料速精确称重和小
摘 要: 模拟消费类电路品种杂、市场广、竞争激烈。剖析调查表明同一品种版本众多,风格各异,各有特点。生产商为破解市场竞争压力采用缩小版策略迎接挑战,争夺市场将成一种风向。试图通过对双极模拟电路所具有的特点和版图布局布线的特殊要求,讨论缩版策略,并结合实例加以说明。  关键词: 模拟集成电路;剖析调查;缩版设计  0 引言  电子产品的发展,得益于制造技术的进步——晶园厂旧线的提升、新线的不断涌现
本文首先针对网格化无线电监测试验网的建设目标进行了深入讨论,接着对试验网具体架构中的频谱感知、数据存储与挖掘等重要模块进行了针对性阐述。
摘 要: 主要是针对热卷箱在生产进行中设备频繁出现故障,针对热卷箱的传动系统,热卷箱的液压系统,以及辊道耐磨性及冷却系统,采取相应的技术性改造保证设备的正常运行  关键词: 热卷箱;十字轴;管路  中图分类号:TG333 文献标识码:A 文章编号:1671-7597(2012)0610057-01
分析目前变电站高频开关电源散热系统存在的不足之处,对高频开关电源散热系统改进方案进行选择、确定。阐述改进方案的内容、总体框架、实现方式、主要技术指标及功能。重点
起重机械是生产过程中必备的工具,对生产的效率和质量有着直接的影响,也简洁的影响企业的发展水平.所以说,起重机械检验工作是十分重要的.因为检验工作具有危险和复杂的特点,
摘 要: 主要介绍薄膜天线用TR组件的研制,TR组件的工作频率为P波段,6位移向和6位衰减控制,发射效率大于35%,发射功率大于3W,组件接收噪声系数小于2.5dB,重量20g,尺寸为10cm×5cm。8个TR组件经过测试合格后安装在有源薄膜天线阵面上,并通过天线分系统测试,测试结果符合设计要求。  关键词: 有源柔性天线;TR组件;效率;尺寸;重量
摘 要: 阐述delphi中的MIDAS技术,对利用MIDAS开发三层体系结构的数据库应用程序的过程进行介绍;采用三层设计思路,使用delphi中的MIDAS技术设计高校收费管理系统,详细论述基本的实现过程。  关键词: MIDAS;多层结构;收费管理系统
流年似水,逝者如斯.rn20世纪悄然远去,21世纪正健步走来.rn我们和全国水运职工一起,振臂欢呼新世纪的来临.