一种基于蓝牙4.0的设备间大数据通信方法_2

文档序号:9892175阅读:来源:国知局
层分片确认数据的结构图;
图5为本发明提供的可靠性传输的流程图;
图6为本发明提供的大数据通信方法的全局操作步骤流程图。
【具体实施方式】
[0014]下面通过附图对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
[0015]实施例1:本实施例提供一种基于蓝牙4.0的设备间大数据通信方法,在物理链路层采用蓝牙4.0协议建立蓝牙主机与蓝牙外设之间的连接,在传输层采用全双工通信方式,并对传输的数据进行分片重组。本发明提出的基于蓝牙4.0进行大数据传输方法分为以下几个组成部分:
1、连接管理:蓝牙4.0主机组成部分,响应外部请求并根据状态和目标发起连接。
[0016]2、分片和重组:由蓝牙主机和外设共有,协同配合,将一次逻辑层面数据传输进行分片,在分片首部填入重组信息,并利用BLE GATT Profile中规定的Notify和write在两个不同的characteristics上进行上、下行全双工通信。
[0017]3、断点续传:由蓝牙主机和外设共有,协同配合,将一次逻辑层面的数据传输看作一个事务(Transact1n),通过维护一个传输状态机进而维护传输事务的完整性。
[0018]4、可靠的传输:由蓝牙主机和外设共有,协同配合,一种确保分片及事务在被物理层传输过程中无逻辑丢失以及错误的机制。
[0019]上述组成部分需要协同工作,达到为具有蓝牙4.0物理传输能力设备提供在逻辑层面上传输大量数据能力的目的。
[0020]本实施例以数据由蓝牙主机向蓝牙外设进行单向传输为例,阐述从连接发起、数据传输直到结束传输并断开的全过程,因为蓝牙主机和蓝牙外设是对等体,因此,蓝牙外设向蓝牙主机传送数据的过程同理,后面不在赘述。
[0021]具体的流程为:
1、主机对外设发出的广告进行扫描,根据MAC地址或者名称判断是否为本次传输目标,如果是则发起蓝牙物理连接,并发现服务和寻找上行、下行GATT Characteristies,此过程结束之后,逻辑链接建立。
[0022]由于蓝牙的连接总是由主机(central)发起,实现在基于外设(peripheral)在物理信道上周期性的广告及广告侦测上,因此需要在广告内容中包括外设MAC地址、设备名称、Service及GATT Characteristics UUID信息。蓝牙主机在扫描过程中捕获这些信息,根据MAC地址或者名称或者UUID值确定唯一连接的目标。在本发明中,蓝牙连接是非持续的,即在应用层面,只有当每次有外部数据传输请求到来时,此传输系统的主机才会发起对特定从机的连接;而当传输结束之后,主机或者从机判定是否需要将连接切断。连接场景分为主机请求发送和主机请求接收两种类型,连接过程如图1所示:
主机请求发送:主机在扫描到外设MAC或者名称之后,如果判定为目标设备,则发起连接,连接过程中根据指定的Characteristic UUID,建立至少两条逻辑信道,并在此基础上使用GATT Characteristic fcite和notify方式进行全双工通信。外设根据主机主动传输的数据进行传输层帧ACK和应用层ACK,直到数据传输结束,主机断开连接。
[0023]主机请求接收:主机在扫描到外设MAC或者名称之后,如果判定为目标设备,则发起连接,连接过程中根据指定的Characteristic UUID,建立至少两条逻辑信道,并在此基础上进行全双工通信。外设不主动以notify方式向主机发送数据,主机采用GATTCharacteristic Read方式获取数据,直到数据传输结束,主机断开连接。
[0024]两种方式在连接过程层面并无差异,过程描述如图1所示。
[0025]连接过程中,主机和外设之间可能处于以下几种状态之一:物理未连接、扫描中、物理链路建立中、物理已连接、服务和Characteristic发现中、逻辑已连接、传输中、物理连接释放中。状态迀移由主机根据外部请求进行响应,过程描述如图2所示。
[0026]2、受到蓝牙4.0传输过程中GAP子层每帧不得超过20字节限制,使得它不能满足有大量数据需要传输的应用场景,本发明采用两层协议的方法解决此问题,即在应用层数据传输层面之下,实现一个具有分片和重传功能的传输层。传输层分片重组的数据结构如图3所示,具体为:分片数据为20字节的数据帧,其结构从前向后依次为:2字节代表有效载荷,I字节代表分片编号,16字节代表有效载荷数据,I字节代表校验值;分片确认数据为20字节的数据帧,其结构如图4所示,从前向后依次为:I字节代表数据类型,I字节代表响应类型,18字节代表响应数据。
[0027]由于是全双工通信方式,本发明提供的方法中采用2个GATTProfile中的Characteristics进行数据交换,假定为Characteristic A和Characteristic B。其中A作为主机到外设的数据下行通道,B作为从外设到主机的上行通道。在上述说明中的传输层头部中,包含2字节的有效载荷即应用层数据总长度,以及I字节的分片编号,当分片通过Characteristic A由主机传递给外设时,外设进行有效载荷总长度识别,当前分片序号确认,分片重组以及对16字节有效载荷进行有效校验,如果分片序号符合期望分片序号,且有效性校验通过,则保存数据,并通过Characteristic A由外设向主机提供一条确认信息ACK。确认信息数据格式总长度为20字节,包括I字节数据类型,I字节响应类型,18字节响应数据。其中数类型用于让蓝牙主机区分本条信息为ACK还是其它用户层数据。如果为ACK,通过响应类型表示上一个分片传输是否成功,如果成功,在响应数据中将包括外设期望的下一个分片序号。
[0028]因此,主机对将要发送的用户层数据进行长度计算,并提交给至传输层,传输层采用16字节分片原则对数据进行分片,并将分片的数据通过下行通道传输给等待接收的蓝牙外设。传输层对数据分片时的方法为:从O序号开始对用户层数据进行分片,在每个分片头部加入本次传输总体有效载荷长度、当前分片序号,并在分片尾部加入当前分片校验数据,通过下行Characteristic Write方式传输给等待接收的从机。
[0029]值得注意的是,为了实现全双工通信,如果是主机向外设发送的数据,无论是分片还是分片的响应,均通过Characteristic A进行交互。反之,如果外设向主机发送数据,采用同上面相同的方法进行分片、验证和响应,但是通过Characteristic B进行交互。这样在主机的GATT层面收到上行数据(notify或者read)时,能够通过Characteristic区分,这是一条来自外设的分片ACK还是一条来自外设的应用层传输请求;对于外设而言,也是同理。
[0030]数据的传输过程为:
S1、蓝牙主机将要发送的用户层数据进行长度计算,并提交至传输层;传输层采用16字节分片原则,并将分片的数据通过下行通道传输给等待接收的蓝牙外
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1