|  首页  |  资讯  |  评测  |  活动  |  学院  |  访谈  |  专题  |  杂志  |  产服  |  
您现在的位置:硅谷网> 学院> 论文>

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

2012-07-12 14:28 作者:黄德颖 娄可卿 皇甫 来源:硅谷网 HV: 编辑: 【搜索试试
  硅谷网7月12日消息 (原文载于《硅谷》杂志6月刊)通过对蓝牙协议栈的研究和MAP剖面的支持协议OBEX的应用代码进行解读,掌握蓝牙剖面开发的机制,主要是task、message、handlerfunctions的使用。从而找到MAP剖面应用开发的方向。
  蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHzISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输。【1】
  蓝牙SIG联盟一直致力于蓝牙协议和规范的制定和发布。目前蓝牙协议一共有6个版本,市场分布率最高的是2.0和2.1+EDR,最具前景的当属4.0规范。4.0是三位一体的蓝牙技术,它将三种规格合而为一,分别是传统蓝牙、低功耗蓝牙和高速蓝牙技术,这三个规格可以组合或者单独使用,因此SIG发布的蓝牙产品商标规范分为了BluetoothSmart和BluetoothSmartReady。4.0的低功耗技术可以使使一粒纽扣电池连续工作数年之久。在能源紧缺的时代,低功耗的无线通信技术是必然的研究发展趋势。但是由于4.0规范在产品应用方面尚未成熟,绝大部分产品的支持的仍然是2.0和2.1+EDR,3.0规范的蓝牙正规产品也是屈指可数。
  在产业界,最热的无线通信技术有zigbee,wifi。与用于工控的Zigee的低功耗实时性特点相比,蓝牙具有传输数据快,数据量相对较大的优势。与无线局域网技术Wifi相比,具有辐射小,发射功率安全可靠的特点。这也是蓝牙免提耳机和蓝牙音乐耳机等娱乐设备市场欢迎度高的原因。
  本文先简单介绍蓝牙协议protocol和剖面Profile,概述当下蓝牙产品的发展情况,然后详细介绍基于蓝牙协议栈和OBEX(ObjectExchange)协议【2】的蓝牙MAP(Messageaccessprofile)短信访问剖面【3】实现的研究工作。
  SIG发布的蓝牙规范包括蓝牙协议规范和剖面规范,这些规范构成了整个蓝牙技术产品的完整协议栈。蓝牙协议栈分为三层:蓝牙底层协议(RF、BB、LMP协议)、中间层协议(HCI、L2CAP、RFCOMM、TCS、SDP)、高层协议(OBEX、WAP、Audio等),在协议栈之上的应用层由剖面来定义。当下蓝牙产品应用最多的剖面主要是免提、音频、电话本、FTP等。随着人们对蓝牙产品的需求渐增,产品的创新性在也面临着巨大的考验,对新功能的剖面的研究和实现工作也势在必行。
  顺应时代的潮流和市场的需求,具有MAP的蓝牙车载等设备具有巨大的市场竞争力。要对蓝牙剖面进行相应产品的开发,必须了解蓝牙协议栈的基本概念,协议栈各部分的作用,以及各部分之间的联系。然后通过已经实现了的剖面,学习如何按照MAP剖面的协议进行编程代码的实现。对于蓝牙协议栈的理解,本文不做探讨,可以参见钱志鸿老师的《蓝牙技术原理、开发与应用》【4】以及网络上众多达人发表的宝贵的经验。
  MAP剖面应用的实现是基于OBEX协议,因此可通过与OBEX相关代码进行解读,来学习如何编写MAP规范应用。本文所选的是CSRSDK提供的OBEXserver代码。其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应用中,往往代码只有一个taskhandler即任务处理函数,在复杂的应用中,可能有多个handler分别处理不同类的message。Messagehandler函数staticvoidconnect_handler(Tasktask,MessageIdid,Messagemessage)的参数分别是指向该任务的函数指针、message的ID号、message包含的信息。在该函数中,主要通过switch(id)来对该message做不同的处理。例如在“caseCL_INIT_CFM:”时,先对message包含的信息进行保存,即CL_INIT_CFM_T*msg=(CL_INIT_CFM_T*)message;再判断连接初始化是否成功,if(msg->status==success)则表明连接初始化成功;紧接着初始化Opp,OppsInit(&OPPState.OppTask,1)后(因为该代码使用的是实现了Opp和FTPProfile,这里仅对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协议和OppProfile的说明书。
  Main函数。包括初始化指向任务函数handler的指针:MainState.ConTask.handler=connect_handler,初始化OPPserver信息的指针:opp_initTask(&OPPState),初始化链接库:ConnectionInit(&MainState.ConTask),消息队列循环:MessageLoop(),消息队列循环函数主要是依据事件触发后产生的message调用相应的handler。例如在ConnectionInit(&MainState.ConTask),初始化完成后,会产生一个message,其id=CL_INIT_CFM,则由connect_handler来处理,具体情况上段文字已经说明。处理完该事件后,继续轮询,注意MessageLoop()函数是没有返回值的,因为程序一直执行该函数而不跳出。
  MAPProfile应用代码的编写。在OBEXserver代码中包含了opp和ftp应用的代码,通过Opp代码尝试写ftp的代码,然后和标准程序做对比,烧到蓝牙开发板模块中调试。成功后,再根据MAPProfile的说明文档进行代码编写。MAP中规定了4个功能分别是:短信通知功能、阅读功能、上载功能、处理功能。每个功能定义了发送和返回消息的信息格式以及发送事件的函数流程。开发者要依据自身产品的需求选择对应的功能来进行研发。
  本文通过对蓝牙协议和其剖面以及当下蓝牙产品的发展情况做了简单的概述,论证了蓝牙产品需要创新的必要性和可实现性。而基于时代的潮流,MAP短信访问Profile于车载的应用也是极具市场竞争力。在MAPProfile的开发中,可以参考CSRSDK提供的OBEXserve代码,重点掌握任务、事件、消息机制,消息的处理,OBEX库API的调用,以及蓝牙协议栈固件的使用。再结合MAPSpecification根据自身产品的需求进行功能选择来进行研发。随着人们日益增长的需求,蓝牙产品必然会包含更多的Profile应用,剖面Profile的研发在单芯片的开发模式中大同小异。随着效果优良功能齐全的蓝牙产品的面市,蓝牙技术必然会给人们的生活带来更多的精彩。
  
【对“基于蓝牙OBEX协议对MAP剖面开发的研究”发布评论】

版权及免责声明:
① 本网站部分投稿来源于“网友”,涉及投资、理财、消费等内容,请亲们反复甄别,切勿轻信。本网站部分由赞助商提供的内容属于【广告】性质,仅供阅读,不构成具体实施建议,请谨慎对待。据此操作,风险自担。
② 内容来源注明“硅谷网”及其相关称谓的文字、图片和音视频,版权均属本网站所有,任何媒体、网站或个人需经本网站许可方可复制或转载,并在使用时必须注明来源【硅谷网】或对应来源,违者本网站将依法追究责任。
③ 注明来源为各大报纸、杂志、网站及其他媒体的文章,文章原作者享有著作权,本网站转载其他媒体稿件是为传播更多的信息,并不代表赞同其观点和对其真实性负责,本网站不承担此类稿件侵权行为的连带责任。
④ 本网站不对非自身发布内容的真实性、合法性、准确性作担保。若硅谷网因为自身和转载内容,涉及到侵权、违法等问题,请有关单位或个人速与本网站取得联系(联系电话:01057255600),我们将第一时间核实处理。
广告
相关
·基于视频会议终端QoS(服务质量)技术方案探析
·基于学习兴趣培养的《C语言程序设计》教学研究
·基于“面向服务架构”SOA的PLM系统浅析
·基于LPC1114的加窗差值FFT算法的谐波检测设计
·基于SDM模型的250T转炉钢包底吹模型开发
·《硅谷》杂志:基于制品挤压方法的研究
·基于C/S模式的学生学籍信息管理系统的设计与实现
·基于机构运动精度的平稳性车辆轮轴探伤研究
头条
硅谷网解密:4G网络中的微波传输解决方案 硅谷网解密:4G网络中的微波传输解决方案
在2013年12月4日,工信部向中国移动、中国联通、中国电信颁发TD-LTE(4G)经营许可之后……
·硅谷网解密:4G网络中的微波传输解决方案
·创意产业的批量化规律 工业造型方法论之加减
·《硅谷》杂志:浅谈电信运营商开展IPTV业务
·《硅谷》杂志:新型桌面搜索关键技术的研究与
·硅谷杂志:基于时间技术的搜索引擎排名算法
图文
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
利用重力势能做功发电介绍和势能输出系统介绍
利用重力势能做功发电介绍和势能输出系统介
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
利用重力势能做功发电介绍和势能输出系统介绍
利用重力势能做功发电介绍和势能输出系统介
最新
·佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
·利用重力势能做功发电介绍和势能输出系统介绍
·李磊:新时代下电网调度自动化技术的发展分析
·提升企业竞争力以及企业人力资源管理优化思考
·《硅谷》杂志:采油分层测静压工艺技术浅究
热点
·判断连续时间系统的线性非时变性和因果性
·3DMAX+Vary室内漫游动画制作的技法浅析
·长期使人困惑的问题:TCP连接中断的实时检测
·佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
·关于汽轮机油系统失火原因分析及防范措施的一
旧闻
·硅谷杂志:化工生产过程中的DCS监控系统的应
·硅谷杂志:视频会议系统建设应用分析
·《科技与生活》杂志:钢铁厂厂址的选择
·硅谷杂志:无线通信技术在调度通信中的应用
·颜海宙:谈谈工业锅炉节能运行的优化措施
广告
硅谷影像
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
佳惠安抗菌喷剂敷料杀(抑)菌临床检验结论
利用重力势能做功发电介绍和势能输出系统介绍
利用重力势能做功发电介绍和势能输出系统介绍
公关负责人离职背后:危机公关案例分析
公关负责人离职背后:危机公关案例分析
硅谷网解密:4G网络中的微波传输解决方案
硅谷网解密:4G网络中的微波传输解决方案
使用Autoit脚本在虚拟内存盘设置考试模拟系统
使用Autoit脚本在虚拟内存盘设置考试模拟系统
探秘开滦集团设备租赁管理系统的设计和实现
探秘开滦集团设备租赁管理系统的设计和实现
关于我们·About | 联系我们·contact | 加入我们·Join | 关注我们·Invest | Site Map | Tags | RSS Map
电脑版·PC版 移动版·MD版 网站热线:(+86)010-57255600
Copyright © 2007-2020 硅谷网. 版权所有. All Rights Reserved. <京ICP备12003855号-2>