低功耗蓝牙的通信方法以及装置与流程

文档序号:11157927阅读:632来源:国知局
低功耗蓝牙的通信方法以及装置与制造工艺

本发明涉及通信技术领域,特别是涉及一种低功耗蓝牙的通信方法以及一种低功耗蓝牙的通信装置。



背景技术:

BLE(Bluetooth Low Energy,低功耗蓝牙)由于其待机功耗低等优点,最近几年已经呈现出爆发式增长,不仅成为智能手机、平板电脑等移动设备的标配,也成为了智能手表、防丢器、医疗监护仪等电子设备通讯方式的最佳选择。

传统技术中基于BLE的电子设备,通常作为从设备(Slave)仅能够进行单点连接,不能够同时被多个手机或者其它主机连接,因此同一时刻只能由一个主机设备(Master)进行控制。以BLE儿童防丢器为例,同一时刻只能连接到一部手机,这意味着只能由一个家长看护,难免会出现看护人因为急事或者突发情况离开有效监视范围导致防丢器误报警的尴尬情况。为此针对传统技术中BLE工作在从机角色时仅能够被一个主机连接的缺陷,需要提供一种更有效的BLE多主机通讯方式。



技术实现要素:

基于此,有必要针对上述问题,提供一种低功耗蓝牙的通信方法以及装置,能够实现多个BLE主机与BLE从机的连接。

一种低功耗蓝牙的通信方法,包括步骤:

启动BLE从机的广播,以使各个BLE主机根据所述广播发起与所述BLE从机连接的连接请求;

若接收到各个BLE主机中的第一BLE主机发起的第一连接请求,通过BLE协议栈与所述第一BLE主机建立连接,并停止所述BLE从机的广播;

检测所述BLE从机当前连接的BLE主机的数目是否达到所述BLE从机最大支持的连接数目,若否,返回启动BLE从机的广播的步骤,其中所述BLE从机最大支持的连接数目大于1。

一种低功耗蓝牙的通信装置,包括:

广播启动模块,用于启动BLE从机的广播,以使各个BLE主机根据所述广播发起与所述BLE从机连接的连接请求;

连接建立模块,用于在接收到各个BLE主机中的第一BLE主机发起的第一连接请求时,通过BLE协议栈与所述第一BLE主机建立连接,并停止所述BLE从机的广播;

数目检测模块,用于检测所述BLE从机当前连接的BLE主机的数目是否达到所述BLE从机最大支持的连接数目;其中所述BLE从机最大支持的连接数目大于1;

所述广播启动模块还用于在所述数目未达到所述BLE从机最大支持的连接数目时,重新启动BLE从机的广播。

上述低功耗蓝牙的通信方法以及装置,启动BLE从机的广播,各个BLE主机向BLE从机发起连接,如果BLE从机接收到一个BLE连接事件,则与对应的BLE主机建立连接,此时广播停止,实现BLE从机与一个BLE主机的连接,检测BLE从机当前连接的BLE主机的数目是否达到所述BLE从机最大支持的连接数目,若未达到,还需要再重新启动BLE从机的广播,重复上述过程,从而实现BLE从机与最大支持的连接数目的BLE主机建立连接。因此,本发明实现了BLE工作在从机角色时能够被多个主机连接并通信,即实现了多主机通讯方式,有效克服了传统技术中BLE工作在从机角色时仅能够被一个主机连接的不足,并且本发明还减少了设备互联过程的复杂性,使设计产品更加人性化。

附图说明

图1为一实施例的低功耗蓝牙的通信方法的流程示意图;

图2为一具体实施例的一个BLE从机与多个BLE主机的连接示意图;

图3为一具体实施例的多主机与BLE从机通讯的流程示意图;

图4为一具体实施例的多主机与BLE从机通讯的软件架构示意图;

图5为一实施例的低功耗蓝牙的通信装置的结构示意图。

具体实施方式

为更进一步阐述本发明所采取的技术手段及取得的效果,下面结合附图及较佳实施例,对本发明的技术方案,进行清楚和完整的描述。

如图1所示,一种低功耗蓝牙的通信方法,包括步骤:

S110、启动BLE从机的广播,以使各个BLE主机根据所述广播发起与所述BLE从机连接的连接请求;

S120、若接收到各个BLE主机中的第一BLE主机发起的第一连接请求,通过BLE协议栈与所述第一BLE主机建立连接,并停止所述BLE从机的广播;

S130、检测所述BLE从机当前连接的BLE主机的数目是否达到所述BLE从机最大支持的连接数目,若否,返回步骤S110,其中所述BLE从机最大支持的连接数目大于1。

上述低功耗蓝牙的通信方法运行在BLE工作在从机角色的设备中,实现了多主机通讯方式,有效克服了传统技术中BLE工作在从机角色时仅能够被一个主机连接的不足,并且减少了设备互联过程的复杂性,使设计产品更加人性化。为了更好地理解本发明,下面对各个步骤的具体实施方式做详细描述。

在步骤S110中,尽管蓝牙技术联盟早已公布蓝牙4.1标准和蓝牙4.2标准,但目前市场占有率比较高的仍是蓝牙4.0标准,而能够应用蓝牙4.1或蓝牙4.2新标准的设备少之又少。相对蓝牙4.0标准的点对点通讯,本发明将使用蓝牙4.1新标准,建立多点连接,实现多主机通讯方式。因此本发明选择支持蓝牙4.1标准的BLE模块。需要说明的是,如果其他蓝牙新标准支持多点连接,也可选择支持其他蓝牙标准的BLE模块。

BLE从机为BLE工作在从机(Slave)角色,BLE主机为BLE工作在主机(Master)角色,BLE工作在从机角色还是主机角色可以根据具体配置实现。如图2所示,如果要实现BLE从机与多个BLE主机的多点连接,在启动BLE从机的广播之前,还需要先配置BLE作为从机(Slave)角色,初始化必要的运行环境。运行环境初始化成功后,启动BLE从机开始广播。此时可使用工作在主机(Master)角色下的BLE模块或者其他主机,如手机等,发起连接。BLE事件处理程序将进行事件分发。

在步骤S120和步骤S130中,配置BLE从机最大支持的连接数目,例如BLE从机最大支持的连接数目为3等。配置BLE从机最大支持的连接数目可以根据现有技术中已有的方式实现。

如果BLE从机接收到BLE连接事件,即BLE从机接收到某一个BLE主机发起的请求,则通过BLE协议栈内部建立连接,同时停止BLE从机的广播,此时建立的是BLE从机与该BLE主机之间的连接。如果BLE从机当前连接的数目还未达到最大支持的连接数目,则重新启动BLE从机的广播,各个BLE主机重新发起连接请求,BLE从机根据接收到的连接请求建立与对应BLE主机的连接,依次重复,直至BLE从机与每一个BLE主机均建立连接,如此建立BLE最大支持的连接数目。另外,为了避免BLE从机重复接收到某一个已连接的BLE主机发起的连接请求,在该BLE主机与BLE从机建立连接之后,该BLE主机停止接收BLE从机的广播,或者该BLE主机可以接收BLE从机的广播,但是并不发起连接请求。

例如,如图2所示,配置的BLE从机最大支持的连接数目为3,BLE从机开启广播后,先接收到BLE主机1发起的连接请求,则BLE从机与BLE主机1建立连接,同时停止BLE从机的广播,设置BLE主机1不再接收BLE从机的广播。BLE从机检测到当前连接数目为1,未达到3,则重新启动广播,BLE主机2和BLE主机3发起连接请求,BLE从机先接收到BLE主机2的连接请求,则与BLE主机2建立连接,同时停止BLE从机的广播,设置BLE主机2不再接收BLE从机的广播。BLE从机检测到当前连接数目为2,未达到3,则重新启动广播,BLE主机3发起连接请求,BLE从机接收到BLE主机3的连接请求,则与BLE主机3建立连接,同时停止BLE从机的广播。BLE从机检测到当前连接数目为3,至此,BLE从机与3个BLE主机建立连接,实现了多点连接。

在一个实施例中,通过BLE协议栈与所述第一BLE主机建立连接之后,还包括步骤:为所述BLE从机与所述第一BLE主机的连接建立第一连接句柄,并根据所述第一连接请求获取属性信息;将所述第一连接句柄和所述属性信息保存到BLE连接信息列表。建立每一个连接时为连接分配连接句柄,以便标识连接。连接请求包含属性信息,根据BLE主机发送的连接请求可以直接获取到属性信息。然后将连接句柄和属性信息保存到BLE连接信息列表中。

另外,可以在将连接句柄和属性信息保存到BLE连接信息列表之后,重启BLE从机的广播;也可以在将连接句柄和属性信息保存到BLE连接信息列表时,重启BLE从机的广播;也可以在重启BLE从机的广播后,将上一次连接的连接句柄和属性信息保存到BLE连接信息列表。本发明并不对此做出限定。

假设BLE主机发送数据到BLE从机为收数据过程,则本发明还可以实现BLE多主机通信接收数据过程,即BLE从机可以同时接收多个BLE主机发送的数据。所以,在一个实施例中,低功耗蓝牙的通信方法还包括步骤:

S140、若所述数目已达到所述BLE从机最大支持的连接数目,通过协议栈接收各个BLE主机发送的数据,将协议栈接收到的数据发送到连接数据缓存区;

每一个与BLE从机连接的BLE主机均可以向BLE从机发送数据。BLE从机如果收到服务属性写事件,即接收到多个BLE主机发送的数据,则调用服务属性写事件处理函数。服务属性写事件处理函数为现有技术中已有的函数。连接数据缓存区即用于存放连接数据的缓存区。将协议栈接收到的数据发送到连接数据缓存区可以通过拷贝的方式实现,也可以通过剪切的方式实现,本发明并不对此做出限定。

为了保证数据的合法性,还需要对发送数据的主机进行验证,所以,在一个实施例中,通过协议栈接收各个BLE主机发送的数据之后,将协议栈接收到的数据发送到连接数据缓存区之前,还包括步骤:根据所述BLE连接信息列表检测各个BLE主机与所述BLE从机之间的连接是否合法;若合法,进入将协议栈接收到的数据发送到连接数据缓存区的步骤。验证BLE主机与BLE从机的连接信息,通过查找BLE连接信息列表验证BLE主机与BLE从机连接的合法性,如果合法,则将协议栈中该主机发送的数据写入到连接数据缓存区,如果不合法,则协议栈中该主机发送的数据不能写入连接数据缓存区。

为了及时对写入连接数据缓存区的数据进行显示,将协议栈接收到的数据发送到连接数据缓存区后,还包括步骤:发送所述连接数据缓存区中数据有更新的通知信息。即将协议栈接收到的数据拷贝到对应的连接数据缓存区,同时发送BLE连接数据更新事件,提醒UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)服务函数及时显示连接数据缓存中的数据。

S150、检测当前占用UART的第二连接句柄,若所述连接数据缓存区存储有所述第二连接句柄对应主机发送的数据,将所述连接数据缓存区中所述第二连接句柄对应主机发送的数据通过UART进行显示;

UART服务函数接收到BLE连接数据更新事件后检测当前占用UART的连接句柄,或者自行检测当前占用UART的连接句柄。如果连接数据缓存区存储有当前占用的连接句柄对应主机发送的数据,则优先显示该主机的数据。

S160、若所述第二连接句柄对应主机发送的数据显示完成,按照预设的连接句柄的优先级顺序将其它主机发送的数据通过UART进行显示;

为了防止数据显示冲突,设置有各个连接句柄的优先级顺序,例如,如图2所示,连接句柄优先级从高到低依次为:BLE主机1、BLE主机2和BLE主机3。如果当前占用的连接句柄对应主机发送的数据显示完成,UART服务函数会根据连接句柄优先级顺序轮询将数据通过UART打印,这样每个BLE主机的数据都可以通过UART进行显示。

在一个实施例中,检测当前占用UART的第二连接句柄之后,还包括步骤:若所述数据缓存区未存储所述第二连接句柄对应主机发送的数据,按照预设的连接句柄的优先级顺序将各个主机发送的数据通过UART进行显示。如果连接数据缓存区未存储有当前占用的连接句柄对应主机发送的数据,UART服务函数会根据连接句柄优先级顺序轮询将数据通过UART打印,这样每个BLE主机的数据都可以通过UART进行显示。

例如,如图2所示,连接句柄优先级从高到低依次为:BLE主机1、BLE主机2和BLE主机3,连接数据缓存区存储有BLE主机1、BLE主机2和BLE主机3发送的数据。UART服务函数监测到当前占用UART的连接句柄对应的主机为BLE主机1,则优先显示BLE主机1发送的数据,当BLE主机1发送的数据显示完成后,再依次显示BLE主机2和BLE主机3发送的数据。

假设BLE从机发送数据到BLE主机过程为发送数据过程,则本发明还可以实现BLE多主机通信发送数据过程,即BLE从机可以向多个BLE主机发送数据。所以,在一个实施例中,低功耗蓝牙的通信方法还包括步骤:若所述数目已达到所述BLE从机最大支持的连接数目,通过UART接收用户数据,将所述用户数据发送到连接数据缓存区;将所述连接数据缓存区中的所述用户数据发送到各个BLE主机。BLE从机采用UART串口中断接收用户数据,接收的用户数据拷贝到连接数据缓冲区,之后可以调用BLE发送函数将用户数据以Notifications异步方式发送到各个BLE主机,实现了BLE从机向多个BLE主机发送数据的过程。

为了更好的理解本发明,下面结合一个具体实施例进行详细介绍。

如图3所示,BLE多主机通信建立连接过程为:初始化BLE从机的配置,启动BLE从机的广播,等待BLE事件,如果接收到BLE连接事件,则通过BLE协议栈建立连接,同时停止BLE从机广播;建立连接句柄并获取属性信息,保存到BLE连接信息列表,之后重新启动BLE广播,直至BLE从机与BLE从机最大支持的连接数目的BLE主机建立连接。

如图3所示,BLE多主机通信接收数据过程为:BLE从机如果收到服务属性写事件,则调用服务属性写事件处理函数;验证连接信息,查找BLE连接信息列表验证连接合法性,如果合法,则将协议栈接收到的数据拷贝到对应的连接数据缓存区,同时发送BLE连接数据更新事件;UART服务函数会根据连接句柄优先级轮询将数据通过UART打印,这样每个主机的数据都可以通过UART进行显示。需要说明的是,图3中发送BLE连接数据更新事件后,先提取数据缓存到本地,然后再发送本地缓存到URAT,本发明并不限制于此,可以直接将连接数据缓存区中的数据发送到URAT。

为了更有效管理多主机通讯过程,本发明软件架构上可以采用RTOS(实时操作系统),任务划分和任务功能描述如图4所示。主要分为一个主函数和三个任务函数。

主函数main负责初始化创建GAP角色任务、UART通讯任务、事件分发处理任务。之后启动RTOS,进行任务调度。

GAP角色任务需要处理来自BLE协议栈的事件,因此它在三个用户任务中拥有最高的优先级,用来保证与BLE主机的正常连接和通讯。GAP角色任务主要控制广播、处理BLE内部事件、保存每个连接信息到连接信息列表、通知事件分发处理任务进行应用层事件处理等。

事件分发处理任务作为事件转发处理中心,一方面接收GAP角色任务发出的BLE事件进行应用层处理或接收BLE服务属性值改变事件转发到UART任务,另一方面处理接收来自UART的数据或者错误状态转发到GAP角色任务,从而通知BLE主机。

UART通讯任务主要负责接收发送底层UART的数据和错误状态,向事件分发处理任务发送消息事件进行处理。

基于同一发明构思,本发明还提供一种低功耗蓝牙的通信装置,下面结合附图对本发明装置的具体实施方式做详细描述。

如图5所示,一种低功耗蓝牙的通信装置,包括:

广播启动模块110,用于启动BLE从机的广播,以使各个BLE主机根据所述广播发起与所述BLE从机连接的连接请求;

连接建立模块120,用于在接收到各个BLE主机中的第一BLE主机发起的第一连接请求时,通过BLE协议栈与所述第一BLE主机建立连接,并停止所述BLE从机的广播;

数目检测模块130,用于检测所述BLE从机当前连接的BLE主机的数目是否达到所述BLE从机最大支持的连接数目;其中所述BLE从机最大支持的连接数目大于1;

所述广播启动模块110还用于在所述数目未达到所述BLE从机最大支持的连接数目时,重新启动BLE从机的广播。

上述低功耗蓝牙的通信装置运行在BLE工作在从机角色的设备中,实现了多主机通讯方式,有效克服了传统技术中BLE工作在从机角色时仅能够被一个主机连接的不足,并且减少了设备互联过程的复杂性,使设计产品更加人性化。为了更好地理解本发明,下面对各个模块的功能进行详细描述。

如果要实现BLE从机与多个BLE主机的多点连接,在启动BLE从机的广播之前,还需要先配置BLE作为从机(Slave)角色,初始化必要的运行环境。运行环境初始化成功后,广播启动模块110启动BLE从机开始广播。此时可使用工作在主机(Master)角色下的BLE模块或者其他主机,如手机等,发起连接。BLE事件处理程序将进行事件分发。

如果连接建立模块120接收到BLE连接事件,即BLE从机接收到某一个BLE主机发起的请求,则通过BLE协议栈内部建立连接,同时停止BLE从机的广播,此时建立的是BLE从机与该BLE主机之间的连接。数目检测模块130检测BLE从机当前连接的数目是否达到最大支持的连接数目,如果BLE从机当前连接的数目还未达到最大支持的连接数目,则广播启动模块110重新启动BLE从机的广播,各个BLE主机重新发起连接请求,连接建立模块120根据接收到的连接请求建立与对应BLE主机的连接,依次重复,直至BLE从机与最大支持的连接数目的BLE主机均建立连接。另外,为了避免连接建立模块120重复接收到某一个已连接的BLE主机发起的连接请求,在该BLE主机与BLE从机建立连接之后,该BLE主机停止接收BLE从机的广播,或者该BLE主机可以接收BLE从机的广播,但是并不发起连接请求。

在一个实施例中,还包括与所述连接建立模块120相连的连接信息获取模块,所述连接信息获取模块为所述BLE从机与所述第一BLE主机的连接建立第一连接句柄,并根据所述第一连接请求获取属性信息,将所述第一连接句柄和所述属性信息保存到BLE连接信息列表。建立每一个连接时为连接分配连接句柄,以便标识连接。连接请求包含属性信息,根据BLE主机发送的连接请求可以直接获取到属性信息。然后将连接句柄和属性信息保存到BLE连接信息列表中。

假设BLE主机发送数据到BLE从机为收数据过程,则本发明还可以实现BLE多主机通信接收数据过程,即BLE从机可以同时接收多个BLE主机发送的数据。所以,在一个实施例中,低功耗蓝牙的通信装置还包括数据接收模块140,所述数据接收模块140包括:

数据写入单元1401,用于在所述数目已达到所述BLE从机最大支持的连接数目时,通过协议栈接收各个BLE主机发送的数据,将协议栈接收到的数据发送到连接数据缓存区;

为了保证数据的合法性,数据写入单元1401还需要对发送数据的主机进行验证,所以,在一个实施例中,数据写入单元1401通过协议栈接收各个BLE主机发送的数据之后,将协议栈接收到的数据发送到连接数据缓存区之前,还用于根据所述BLE连接信息列表检测各个BLE主机与所述BLE从机之间的连接是否合法;若合法,将协议栈接收到的数据发送到连接数据缓存区。

为了及时对写入连接数据缓存区的数据进行显示,数据写入单元1401将协议栈接收到的数据发送到连接数据缓存区后,还用于发送所述连接数据缓存区中数据有更新的通知信息。

连接句柄检测单元1402,用于检测当前占用UART的第二连接句柄;

UART服务函数接收到BLE连接数据更新事件后检测当前占用UART的连接句柄,或者自行检测当前占用UART的连接句柄。

显示单元1403,用于在所述连接数据缓存区存储有所述第二连接句柄对应主机发送的数据时,将所述连接数据缓存区中所述第二连接句柄对应主机发送的数据通过UART进行显示,在所述第二连接句柄对应主机发送的数据显示完成时,按照预设的连接句柄的优先级顺序将其它主机发送的数据通过UART进行显示;

为了防止数据显示冲突,设置有各个连接句柄的优先级顺序。如果连接数据缓存区存储有当前占用的连接句柄对应主机发送的数据,则优先显示该主机的数据。如果当前占用的连接句柄对应主机发送的数据显示完成,根据连接句柄优先级顺序轮询将数据通过UART打印,这样每个BLE主机的数据都可以通过UART进行显示。

在一个实施例中,显示单元1403还用于在所述数据缓存区未存储所述第二连接句柄对应主机发送的数据时,按照预设的连接句柄的优先级顺序将各个主机发送的数据通过UART进行显示。如果连接数据缓存区未存储有当前占用的连接句柄对应主机发送的数据,显示单元1403会根据连接句柄优先级顺序轮询将数据通过UART打印。

假设BLE从机发送数据到BLE主机过程为发送数据过程,则本发明还可以实现BLE多主机通信发送数据过程,即BLE从机可以向多个BLE主机发送数据。所以,在一个实施例中,低功耗蓝牙的通信装置还包括数据发送模块150,所述数据发送模块150包括:

数据写入单元1501,用于在所述数目已达到所述BLE从机最大支持的连接数目时,通过UART接收用户数据,将所述用户数据发送到连接数据缓存区;

数据发送单元1502,用于将所述连接数据缓存区中的所述用户数据发送到各个BLE主机。

数据写入单元1501采用UART串口中断接收用户数据,接收的用户数据拷贝到连接数据缓冲区,之后数据发送单元1502可以调用BLE发送函数将用户数据以Notifications异步方式发送到各个BLE主机,实现了BLE从机向多个BLE主机发送数据的过程。

上述低功耗蓝牙的通信方法以及装置,实现了一个BLE从设备可同时被多个BLE主设备连接,并能够与多个主机同时进行双向数据传输的方式,即多主机通讯方式。这一应用将打破现有的BLE设备同一时刻仅能被一个设备发现并连接的不足,以BLE儿童防丢器为例,通过本发明,一个BLE儿童防丢器能够实现被多个家人手机同时监控,只要有一个看护人在有效监控范围内就不会报警,将会很好的避免误报警情况。另外这一应用还简化了多机通讯的设计复杂度,这将大大降低多机通讯的成本,同时这将促使BLE在数据采集、设备互联等应用中快速发展。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1