CN114554463A - 蓝牙通信方法、蓝牙广播方法、蓝牙设备以及存储介质 - Google Patents
蓝牙通信方法、蓝牙广播方法、蓝牙设备以及存储介质 Download PDFInfo
- Publication number
- CN114554463A CN114554463A CN202011327943.7A CN202011327943A CN114554463A CN 114554463 A CN114554463 A CN 114554463A CN 202011327943 A CN202011327943 A CN 202011327943A CN 114554463 A CN114554463 A CN 114554463A
- Authority
- CN
- China
- Prior art keywords
- bluetooth
- bluetooth module
- module
- data packet
- link
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/80—Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/06—Selective distribution of broadcast services, e.g. multimedia broadcast multicast service [MBMS]; Services to user groups; One-way selective calling services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
- H04W76/11—Allocation or use of connection identifiers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W76/00—Connection management
- H04W76/10—Connection setup
- H04W76/14—Direct-mode setup
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Abstract
本申请提供了一种蓝牙通信方法、蓝牙广播方法、蓝牙设备以及计算机可读存储介质。本申请提供的蓝牙通信方法应用于蓝牙设备,蓝牙设备包括分别运行于蓝牙设备的多个处理器上的第一蓝牙模块和第二蓝牙模块;方法包括:接收到来自对象蓝牙设备的蓝牙数据包;解析蓝牙数据包中携带的通信控制标识,通信控制标识用于确定蓝牙数据包所对应的通信链路;根据蓝牙数据包所对应的通信链路的链路标识,以及蓝牙设备中存储的链路标识与蓝牙模块的映射关系,将第一蓝牙模块和第二蓝牙模块的其中之一确定为蓝牙数据包所对应的蓝牙模块;将蓝牙数据包分发至其所对应的蓝牙模块。本申请可以降低蓝牙设备的功耗。
Description
技术领域
本申请涉及蓝牙通信技术,尤其涉及一种蓝牙通信方法、蓝牙广播方法、蓝牙设备以及计算机可读存储介质。
背景技术
随着分布式技术的发展,在家庭、办公、出行等多种使用场景中,不同终端设备之间需要实时通信,以进行协同工作。蓝牙作为主流低功耗的短距通信方案,成为终端设备间组网通信的重要方式。但是,当终端设备频繁接收到其他设备发送的蓝牙数据时,终端设备的CPU会被频繁唤醒,这将增加终端设备功耗。
发明内容
本申请的一些实施方式提供了一种蓝牙通信方法、蓝牙广播方法、蓝牙设备以及计算机可读存储介质,以下从多个方面介绍本申请,以下多个方面的实施方式和有益效果可互相参考。
第一方面,本申请实施方式提供了一种蓝牙通信方法,应用于蓝牙设备,其中,蓝牙设备与对象蓝牙设备进行蓝牙通信;蓝牙设备包括分别运行于蓝牙设备的多个处理器上的第一蓝牙模块和第二蓝牙模块;方法包括:接收到来自对象蓝牙设备的蓝牙数据包;解析蓝牙数据包中携带的通信控制标识,通信控制标识用于确定蓝牙数据包所对应的通信链路,通信链路为第一通信链路和第二通信链路的其中之一,其中,第一通信链路是第一蓝牙模块与对象蓝牙设备之间的蓝牙通信链路,第二通信链路为第二蓝牙模块与对象蓝牙设备之间的蓝牙通信链路;根据蓝牙数据包所对应的通信链路的链路标识,以及蓝牙设备中存储的链路标识与蓝牙模块的映射关系,将第一蓝牙模块和第二蓝牙模块的其中之一确定为蓝牙数据包所对应的蓝牙模块;将蓝牙数据包中的数据分发至蓝牙数据包所对应的蓝牙模块。这里,蓝牙数据包中的数据可以是蓝牙数据包中的全部数据,也可以是蓝牙数据包中的部分数据(例如,根由蓝牙协议栈从蓝牙数据包中解析出来的数据)。
根据本申请的实施方式,当蓝牙设备的某一处理器(例如,CPU)休眠时,蓝牙设备可以其他处理器(例如,sensorhub)来处理来自对象蓝牙设备的蓝牙数据,这样可以避免蓝牙设备的处理器被频繁唤醒,从而降低蓝牙设备的功耗。
另外,本申请实施方式利用蓝牙协议的现有逻辑,通过通信链路的链路标识,实现了蓝牙数据包的正确分发,有利于方法的实现和维护。
在一些实施方式中,第一蓝牙模块用于执行第一蓝牙应用程序和第一蓝牙主机程序,第二蓝牙模块用于执行第二蓝牙应用程序和第二蓝牙主机程序。
在一些实施方式中,通信控制标识为对象蓝牙设备的蓝牙模块的随机MAC地址;根据蓝牙数据包所对应的通信链路的链路标识,以及蓝牙设备中存储的链路标识与蓝牙模块之间的映射关系,确定蓝牙数据包所对应的蓝牙模块,包括:根据从蓝牙数据包中解析到的对象蓝牙设备的蓝牙模块的随机MAC地址,确定蓝牙数据包所对应的通信链路的连接句柄;根据连接句柄,以及蓝牙设备中存储的连接句柄与蓝牙模块之间的映射关系,确定蓝牙数据包所对应的蓝牙模块。
本申请实施方式基于连接句柄将蓝牙数据包分发至正确的蓝牙模块,仅需在蓝牙设备现有软件的基础上做少量改动即可实现本申请实施方式的技术方案。另外,本申请实施方式不改变蓝牙协议栈的原有逻辑,易于方法的实现和维护。
在一些实施方式中,连接句柄与蓝牙模块之间的映射关系包括:第一连接句柄与第一蓝牙模块之间的映射关系,第一连接句柄为第一通信链路的连接句柄,其中,第一连接句柄与第一蓝牙模块之间的映射关系在建立第一通信链路时存储在蓝牙设备中的;第二连接句柄与第二蓝牙模块之间的映射关系,第二连接句柄为第二通信链路的连接句柄,其中,第二连接句柄与第二蓝牙模块之间的映射关系在建立第二通信链路时存储在蓝牙设备中的。
在一些实施方式中,通信控制标识为CID,CID为蓝牙通信链路的L2CAP层逻辑链路的链路标识;根据蓝牙数据包所对应的通信链路的链路标识,以及蓝牙设备中存储的链路标识与蓝牙模块之间的映射关系,确定蓝牙数据包所对应的蓝牙模块,包括:根据从蓝牙数据包中解析到的CID,以及蓝牙设备中存储的CID与蓝牙模块之间的映射关系,确定蓝牙数据包所对应的蓝牙模块。
本申请实施方式通过L2CAP层逻辑链路的链路标识实现蓝牙数据包的正确分发,有利于节省蓝牙设备中数据链路的数量。
在一些实施方式中,CID与蓝牙模块之间的映射关系包括:位于第一CID集合中的CID映射至第一蓝牙模块,以及,位于第二CID集合中的CID映射至第二蓝牙模块;其中,第一CID集合与第二CID集合互不重叠。
在一些实施方式中,位于第一CID集合中的CID与位于第二CID集合中的CID具有不同的奇偶性。
在一些实施方式中,通信控制标识为蓝牙数据包中携带的属性数据的UUID,UUID为蓝牙通信链路的应用层逻辑链路的链路标识;根据蓝牙数据包所对应的通信链路的链路标识,以及蓝牙设备中存储的链路标识与蓝牙模块之间的映射关系,确定蓝牙数据包所对应的蓝牙模块,包括:根据从蓝牙数据包中解析到的UUID,以及蓝牙设备中存储的UUID与蓝牙模块之间的映射关系,确定蓝牙数据包所对应的蓝牙模块。
在一些实施方式中,UUID与蓝牙模块之间的映射关系是根据第一蓝牙应用和第二蓝牙应用所能够处理的属性数据的UUID确定的。
在一些实施方式中,蓝牙数据包为来自对象蓝牙设备的广播数据包,通信控制标识为广播数据包中携带的对象蓝牙设备的设备特征信息;根据蓝牙数据包所对应的通信链路的链路标识,以及蓝牙设备中存储的链路标识与蓝牙模块之间的映射关系,确定蓝牙数据包所对应的蓝牙模块,包括:根据从蓝牙数据包中解析到的对象蓝牙设备的设备特征信息,确定与设备特征信息相匹配的扫描过滤器;根据相匹配的扫描过滤器的过滤器索引,以及蓝牙设备中存储的过滤器索引与蓝牙模块之间的映射关系,确定蓝牙模块。
根据本申请实施方式,当蓝牙设备的某一处理器(例如,CPU)休眠时,可通过蓝牙设备的另一处理器(例如,sensorhub)来接收广播数据,从而可以降低蓝牙设备处理器被唤醒的频次,降低蓝牙设备的功耗。
在一些实施方式中,第一过滤器索引与第一蓝牙模块之间的映射关系,第一过滤器索引为第一蓝牙模块在发起第一蓝牙扫描时,第一蓝牙主机为与第一蓝牙扫描相关联的第一扫描过滤器分配的过滤器索引;以及,第二过滤器索引与第二蓝牙模块之间的映射关系,第二过滤器索引为第二蓝牙模块在发起第二蓝牙扫描时,第二蓝牙主机为与第二蓝牙扫描相关联的第二扫描过滤器分配的过滤器索引。
在一些实施方式中,过滤器索引与蓝牙模块之间的映射关系包括:位于第一过滤器索引集合中的过滤器索引映射至第一蓝牙模块,以及,位于第二过滤器索引集合中的过滤器索引映射至第二蓝牙模块;其中,第一过滤器索引集合与第二过滤器索引集合互不重叠。
在一些实施方式中,对象蓝牙设备的设备特征信息包括下述一个或多个:对象蓝牙设备的设备名称;对象蓝牙设备的厂商信息;对象蓝牙设备的设备类型信息;对象蓝牙设备支持的服务信息。
在一些实施方式中,蓝牙设备还包括第三蓝牙模块,第三蓝牙模块分别与第一蓝牙模块和第二蓝牙模块通信连接,第三蓝牙模块用于执行蓝牙控制器程序;解析蓝牙数据包中携带的通信控制标识,包括:通过第三蓝牙模块解析蓝牙数据包中携带的通信控制标识;确定蓝牙数据包所对应的蓝牙模块,包括:通过第三蓝牙模块确定蓝牙数据包所对应的蓝牙模块;将蓝牙数据包中的数据分发至蓝牙数据包所对应的蓝牙模块,包括:通过第三蓝牙模块将蓝牙数据包中的数据分发至蓝牙数据包所对应的蓝牙模块。
在一些实施方式中,蓝牙设备还包括第三蓝牙模块,第三蓝牙模块分别与第一蓝牙模块和第二蓝牙模块通信连接,第三蓝牙模块用于执行蓝牙控制器程序;方法还包括,第三蓝牙模块将蓝牙数据包发送至第二蓝牙模块;并且,解析蓝牙数据包中携带的通信控制标识,包括:通过第二蓝牙模块解析蓝牙数据包中携带的通信控制标识;确定蓝牙数据包所对应的蓝牙模块,包括:通过第二蓝牙模块确定蓝牙数据包所对应的蓝牙模块;将蓝牙数据包中的数据分发至蓝牙数据包所对应的蓝牙模块,包括:通过第二蓝牙模块将蓝牙数据包中的数据分发至蓝牙数据包所对应的蓝牙模块。
根据本申请实施方式,尽可能地避免了对位于蓝牙协议栈底层的蓝牙控制器的改动,具有较高的实用价值。
在一些实施方式中,第三蓝牙模块将蓝牙数据包发送至第二蓝牙模块,其中,第三蓝牙模块基于接收到来自第一蓝牙模块的控制权移交指令,将蓝牙数据包发送至第二蓝牙模块,其中,控制权移交指令用于对将第三蓝牙模块的读写控制权从第一蓝牙模块移交至第二蓝牙模块。
在一些实施方式中,第一蓝牙主机、第二蓝牙主机为低功耗蓝牙主机;第一蓝牙应用、第二蓝牙应用为低功耗蓝牙应用;蓝牙控制器为低功耗蓝牙控制器。
在一些实施方式中,接收到来自对象蓝牙设备的蓝牙数据包,包括:当用于运行第一蓝牙模块的处理器处于休眠状态时,接收到蓝牙数据包。
在一些实施方式中,用于运行第一蓝牙模块的处理器为蓝牙设备的CPU;和/或,用于运行第二蓝牙模块的处理器为蓝牙设备的协处理器。
在一些实施方式中,协处理器为用于处理来自蓝牙设备的一个或多个传感器的传感器数据的传感器中枢。
第二方面,本申请实施方式提供了一种蓝牙广播方法,应用于蓝牙设备,蓝牙设备与对象蓝牙设备进行蓝牙通信;蓝牙设备包括分别运行于蓝牙设备的多个处理器上的第一蓝牙模块和第二蓝牙模块;第一蓝牙模块用于执行第一蓝牙应用程序和第一蓝牙主机程序,第二蓝牙模块用于执行第二蓝牙应用程序和第二蓝牙主机程序;蓝牙设备还包括第三蓝牙模块,第三蓝牙模块分别与第一蓝牙模块和第二蓝牙模块通信连接,第三蓝牙模块用于执行蓝牙控制器程序;方法包括:第一蓝牙模块指令第三蓝牙模块启动第一蓝牙广播,第一蓝牙广播的广播句柄为第一蓝牙模块在第一句柄集合中为第一蓝牙广播分配的广播句柄;第二蓝牙模块指令第三蓝牙模块启动第二蓝牙广播,第二蓝牙广播的广播句柄为第二蓝牙模块在第二句柄集合中为第二蓝牙广播分配的广播句柄,其中,第一句柄集合和第二句柄集合互不重叠。
根据本申请实施方式,蓝牙设备的不同处理器器可以独立地启动蓝牙广播,互不影响。例如,当蓝牙设备的某一处理器(例如,CPU)休眠时,可通过蓝牙设备的另一处理器(例如,sensorhub)来启动蓝牙广播,可以降低蓝牙设备的功耗。
第三方面,本申请实施方式提供了一种蓝牙设备,包括:存储器,用于存储由蓝牙设备的一个或多个处理器执行的指令;处理器,当处理器执行存储器中的指令时,可使得蓝牙设备执行本申请第一方面任一实施方式提供的方法,或执行本申请第二方面任一实施方式提供的方法。第三方面能达到的有益效果可参考第一方面任一实施方式或第二方面任一实施方式所提供的方法的有益效果,此处不再赘述。
第四方面,本申请实施方式提供了一种计算机可读存储介质,计算机可读存储介质上存储有指令,该指令在计算机上执行时可使计算机执行本申请第一方面任一实施方式提供的方法,或执行本申请第二方面任一实施方式提供的方法。第四方面能达到的有益效果可参考第一方面任一实施方式或第二方面任一实施方式所提供的方法的有益效果,此处不再赘述。
附图说明
图1为本申请实施方式的示例性应用场景;
图2为现有技术蓝牙设备之间的通信方法;
图3为现有技术中蓝牙设备中蓝牙主机和蓝牙控制器的设置方式;
图4为本申请实施例提供的蓝牙设备之间的通信方法;
图5a为本申请实施例提供的蓝牙设备的构造示意图;
图5b为本申请实施例提供的蓝牙设备的软件架构图;
图6a为本申请实施例提供的蓝牙设备的结构框架示意图一;
图6b为本申请实施例提供的蓝牙通信方法的流程图一;
图7a为本申请实施例提供的蓝牙设备的结构框架示意图二;
图7b为本申请实施例提供的蓝牙通信方法的流程图二;
图7c为本申请实施例提供的CID分配方式示意图;
图8a为本申请实施例提供的属性数据块的结构示意图;
图8b为本申请实施例提供的蓝牙设备的结构框架示意图三;
图8c为本申请实施例提供的蓝牙通信方法的流程图三;
图9a为本申请实施例提供的蓝牙设备的结构框架示意图四;
图9b为本申请实施例提供的蓝牙通信方法的流程图四;
图10a为本申请实施例提供的蓝牙设备的结构框架示意图五;
图10b为本申请实施例提供的蓝牙通信方法的流程图五;
图11示出了本申请实施方式提供的蓝牙设备的框图;
图12示出了本申请实施方式提供的片上系统(SoC,System on Chip)的结构示意图。
具体实施方式
以下将参考附图详细说明本申请的具体实施方式。
目前,分布式技术已经逐渐应用到人们的日常生活中。分布式技术用于将多个物理上分离的终端进行能力整合,使得不同终端之间实现计算能力和硬件资源的互助共享,这样,多个物理上分离的终端可共同形成一个“超级虚拟终端”,在使用中发挥各自的优势,优化用户体验。
图1示出了分布式技术的一个应用场景。图1中包括通过短距离通信技术(例如,蓝牙,WiFi)进行组网的手机100和平板200。通过分布式技术,手机100和平板200之间可以共享彼此的软硬件资源和数据资源。例如,手机100上存储有图片文件“日出.png”,平板200上存储有图片文件“树木.png”,当用户打开手机100上的图库应用时,手机100显示屏上会显示可查看图片的图片列表,该图片列表中不仅会包括手机100上存储的图片文件的缩略图(例如:“日出.png”的缩略图),还包括平板200上存储的图片文件的缩略图(例如:“树木.png”的缩略图)。当用户点击“树木.png”的缩略图时,手机100可以从平板200上实时获取“树木.png”的图片数据,以在手机100的显示上显示“树木.png”的图像。
在图1所示的场景中,手机100和平板200形成了一个“超级虚拟终端”,用户通过操作手机100和平板200的其中一者,可以使用整个“超级虚拟终端”上的资源。例如,用户通过操作手机100,便可使用平板200上的资源。
图1为分布式技术应用场景的示例性说明,本申请不限于此,分布式技术还可以应用于除图1所示场景之外的其他场景,例如,车辆导航场景,视频通话场景,多屏协同场景等。分布式技术的应用地点可以是住宅、办公室、工厂、商业楼宇、公共交通工具(例如,地铁)等,不一一赘述。
图1所示的分布式网络(采用分布式技术的网络)中包括两台终端设备(分别为手机100和平板200),本申请对此不作限定,在其他分布式网络中,终端设备的数量可以是两台以上的其他数量。例如,在另一个分布式网络中,包括手机、投影仪、打印机、笔记本电脑、麦克风等5台以上的终端设备。
可以理解,为实现分布式功能,分布式网络中的各终端设备之间需要建立通信连接。蓝牙通信方式由于其成本低、功耗低等特点,被广泛用作分布式网络的组网手段。本申请中,蓝牙可以包括经典蓝牙(Basic Rate/Enhanced Date Rate,BR/EDR),和/或低功耗蓝牙(Bluetooth Low Energy,BLE)。以下以BLE为例进行介绍。
以手机100和平板200为例来介绍现有技术中的蓝牙通信方法。为实现蓝牙数据的正确传输,手机100和平板200中设置有用于实现蓝牙协议的蓝牙协议栈,从而可以按照蓝牙协议规定的方式进行通信。参考图2,蓝牙协议栈可以分为蓝牙应用(BluetoothApplication)、蓝牙主机(Host)和蓝牙控制器(Controller)这三种模块。蓝牙应用和蓝牙主机通常在蓝牙设备的CPU上运行,蓝牙控制器一般在蓝牙芯片中运行。蓝牙主机可以设置在蓝牙设备的操作系统中,操作系统可以是Android,IOS,Linux,鸿蒙,或Windows等。
本文中,蓝牙设备为通过蓝牙技术与外界进行通信的电子设备,例如,手机100,平板200;蓝牙应用为依赖蓝牙数据实现功能的应用,例如,图库应用。
继续参考图2,蓝牙主机和蓝牙控制器各自包括若干个协议层(例如,LL协议层,L2CAP协议层,ATT/GATT协议层等),各协议层的功能可参考蓝牙规范(例如,蓝牙核心规范(Bluetooth Core Specification))的规定,本文不作赘述。蓝牙协议栈的每一层均可视为一个通信实体,位于同一层的两个通信实体之间的通信链路被称为该层的逻辑链路。例如,手机100的L2CAP层和平板200的L2CAP层之间的链路被称为“L2CAP层逻辑链路”。
蓝牙主机和蓝牙控制器之间通过主机控制接口(Host Controller Inter)连接,HCI为蓝牙主机和蓝牙控制器之间的通信提供了一种标准化的接口,参考图2,HCI包括位于蓝牙主机中的部分和位于蓝牙控制器中的部分,HCI对应的硬件为用于连接CPU和蓝牙芯片的物理总线,例如,用于实现UART、USB、SDIO、PCI、I2C、或I3C协议的物理总线。在其他示例中,蓝牙设备中也可以不包括HCI。
参考图3,现有技术中,蓝牙主机为一个,蓝牙控制器可以为多个。例如,图3(a)所示的蓝牙设备中包括一个低功耗蓝牙主控制器(BLE Controller);图3(b)所示的蓝牙设备中包括一个经典蓝牙主控制器(BR/EDR Controller);图3(c)所示的蓝牙设备中包括一个经典蓝牙主控制器,以及一个次要控制器(Alternate MAC/PHYs Controller,AMPController);图3(d)所示的蓝牙设备包括一个经典蓝牙主控制器,以及多个次要控制器;图3(e)所示的蓝牙设备包括一个经典蓝牙和低功耗蓝牙组合的主控制器;图3(f)所示的蓝牙设备包括一个经典蓝牙和低功耗蓝牙组合的主控制器,以及一个次要控制器;图3(g)所示的蓝牙设备包括一个经典蓝牙和低功耗蓝牙组合的主控制器,以及多个次要控制器。
为实现分布式功能,各终端设备之间会存在大量的数据交互。例如,为实现计算资源共享,终端设备需要查询网络中其他设备的状态信息(例如,CPU占用率等);为实现数据共享,终端设备需要查询网络中其他设备中的数据资源(例如,图片数据,邮件数据等);为提供更好地服务,终端设备需要向网络中的其他设备汇报自身的状态信息(例如,低电量状态,CPU运行状态,正在运行的应用等)。
为节省功耗,当没有任务运行时,手机100的CPU会进入休眠状态。例如,手机100在灭屏且没有中断源活动时,CPU会自动进入休眠状态。此时,如果手机100接收到其他设备(例如,平板200)的蓝牙数据包,蓝牙控制器会将该蓝牙数据包上报给蓝牙主机,因此会唤醒手机100的CPU。当网络中存在大量的数据交互时,手机100的CPU会被频繁唤醒,造成手机100耗电,影响手机100的续航能力,降低用户体验。
为了解决上述问题,本申请实施方式提供了一种在手机100的多个处理器上运行蓝牙主机的方案。参考图4,本申请提供的手机100中包括运行于CPU(作为第一处理器)上的蓝牙模块100a(作为第一蓝牙模块),运行于sensorhub(作为第二处理器)上的蓝牙模块100b(作为第二蓝牙模块),以及设置在蓝牙芯片中的蓝牙控制器(作为第三蓝牙模块)。其中,蓝牙模块100a用于执行图库应用A(作为第一蓝牙应用)和蓝牙主机A(作为第一蓝牙主机),蓝牙模块100b用于执行图库应用B(作为第二蓝牙应用)和蓝牙主机B(作为第二蓝牙主机)。蓝牙控制器分别与蓝牙主机A和蓝牙主机B通信连接,以将接收自平板200(作为对象蓝牙设备)的蓝牙数据上报至蓝牙主机A或蓝牙主机B。通过本申请提供的技术方案,当手机100的CPU休眠时,手机100可以通过sensorhub来处理来自平板200(作为对象蓝牙设备)的蓝牙数据,这样可以避免CPU被频繁唤醒,从而降低手机100功耗。
本申请实施方式中,蓝牙模块100a和蓝牙模块100b通过不同的通信链路与平板200进行蓝牙通信。为保证将手机100接收到的蓝牙数据包分发至正确的蓝牙模块,本申请实施方式还提供了蓝牙数据的向上分发方法(从蓝牙协议栈的底层分发到蓝牙协议栈的顶层)。具体地,当手机100接收到来自平板200的蓝牙数据包后,解析蓝牙数据包中携带的通信控制信息,并根据通信控制信息确定蓝牙数据包对应的通信链路。之后,手机100根据蓝牙数据包所对应的通信链路的链路标识,以及手机100中存储的链路标识与蓝牙模块的映射关系,确定蓝牙数据对应的目标蓝牙模块(蓝牙模块100a和蓝牙模块100b的其中之一),并将蓝牙数据包分发至目标蓝牙模块。本申请实施方式利用蓝牙协议的现有逻辑,通过通信链路的链路标识,实现了蓝牙数据包的正确分发,有利于方法的实现和维护。
图4中,将传感器中枢(sensorhub)作为运行图库应用B和蓝牙主机B的处理器的示例。Sensorhub可用于连接并低功耗地处理来自手机100的各个传感器的数据,传感器可以为加速度传感器、距离传感器、陀螺仪、磁传感器、环境光传感器、接近光传感器、气压计、温度计、指纹传感器、触摸传感器、骨传导传感器等。由于sensorhub运行功耗较低,且长期处于运行状态(即sensorhub本身为always on的处理器),因此,通过sensorhub来运行图库应用B和蓝牙主机B,可以将给手机100带来的功耗负担降低至较低的程度。
以上虽以传感器中枢(sensorhub)作为运行图库应用B和蓝牙主机B的处理器的示例,但本申请不限于此,在其他实施例中,图库应用B和蓝牙主机B可以运行在手机100的其他协处理器或专用芯片上。
图4中,虽然示出的蓝牙应用和蓝牙主机运行于两个不同的处理器上,本申请不限于此。在其他示例中,用于运行蓝牙应用和蓝牙主机的处理器可以为两个以上的其他数量,例如,在图4的基础上增加用于运行图库应用C和蓝牙主机C的另一个sensorhub。
图4中,虽然示出的蓝牙控制器的数量为1个,本申请不限于此。在其他示例中,蓝牙控制器的数量可以为多个(例如,图3中所示的数量)。另外,蓝牙控制器也可以不运行在蓝牙芯片中,而是运行于手机100的处理器(例如,CPU)上。
图4中,虽将图库应用作为蓝牙应用的示例,本申请不限于此。在其他示例中,蓝牙应用可以为视频通话应用、投屏应用、导航应用、浏览器应用等其他依赖蓝牙通信实现业务功能的应用。
图4中,将手机100和平板200作为蓝牙设备的示例,本申请不限于此。在其他示例中,蓝牙设备可以为PC、电视、音箱、车机、可穿戴设备等其他具有蓝牙通信功能的设备。
以下结合具体实施例来介绍本申请提供的技术方案。图5a示出了本申请提供的手机100的示例性结构图。
手机100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接头130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本发明实施例示意的结构并不构成对手机100的具体限定。在本申请另一些实施例中,手机100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
处理器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现手机100的触摸功能。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现手机100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现手机100的显示功能。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对手机100的结构限定。在本申请另一些实施例中,手机100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
USB接头130是一种符合USB标准规范的连接器,可以用来连接手机100和外围设备,具体可以是标准USB接头(例如Type C接头),Mini USB接头,Micro USB接头等。USB接头130可以用于连接充电器为手机100充电,也可以用于手机100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接头还可以用于连接其他电子设备,例如AR设备等。在一些实施方案中,处理器110可以支持通用串行总线(Universal Serial Bus),通用串行总线的标准规范可以为USB1.x,USB2.0,USB3.x,USB4。
手机100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。手机100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在手机100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在手机100上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,手机100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得手机100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储手机100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行手机100的各种功能应用以及数据处理。内部存储器121中存储的指令可以包括:由处理器中的至少一个执行时导致手机100实施本申请实施例提供的蓝牙通信方法。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。手机100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,手机100根据压力传感器180A检测所述触摸操作强度。手机100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定手机100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定手机100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测手机100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消手机100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
气压传感器180C用于测量气压。在一些实施例中,手机100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
磁传感器180D包括霍尔传感器。手机100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当手机100是翻盖机时,手机100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
加速度传感器180E可检测手机100在各个方向上(一般为三轴)加速度的大小。当手机100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
距离传感器180F,用于测量距离。手机100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,手机100可以利用距离传感器180F测距以实现快速对焦。
接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。手机100通过发光二极管向外发射红外光。手机100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定手机100附近有物体。当检测到不充分的反射光时,手机100可以确定手机100附近没有物体。手机100可以利用接近光传感器180G检测用户手持手机100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
环境光传感器180L用于感知环境光亮度。手机100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测手机100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。手机100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,手机100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,手机100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,手机100对电池142加热,以避免低温导致手机100异常关机。在其他一些实施例中,当温度低于又一阈值时,手机100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控器件”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于手机100的表面,与显示屏194所处的位置不同。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
手机100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明手机100的软件结构。
图5b是本发明实施例的手机100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图5b所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图5b所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供手机100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
以下介绍本申请的具体实施例。在下述实施例中,仍以目前应用广泛的低功耗蓝牙(BLE)为例进行介绍。
本申请实施例涉及到BLE的两种通信方式,两种通信方式对应于两种不同类型的通信链路。一种是基于连接的通信方式(后述的实施例一、二、三涉及的通信方式),该方式建立通信链路为“数据链路”;另一种是基于广播的通信方式(后述的实施例四、五涉及的通信方式),该方式建立的通信链路为“广播链路”。
对于基于连接的通信方式,手机100和平板200在通信之前需要先约定好一条专用的物理通道。通过该物理通道,通信的双方在约定的时隙和频率上进行通信。对于基于广播的通信方式,手机100和平板200之间没有专用的物理通道,通信的一方(例如,平板200)在设定的广播频率上发送数据,通信的另一方(例如,手机100)在广播频率上扫描广播设备发送的数据。
下文结合图4示出的场景来介绍本申请的具体实施例。图4中,图库应用A和图库应用B是两个在功能上相互关联的应用。具体地,图库应用B的功能为图库应用A的功能的子集。该设置的目的在于,当手机100的CPU处于运行状态时,可以通过图库应用A实现图库应用的完整功能;而当手机100的CPU处于休眠状态时,通过图库应用B实现图库应用的一部分功能(例如,数据吞吐量少、数据运算量小的功能),从而实现图库应用的部分功能(图库应用B对应的功能)始终在线(always on)的效果。为便于理解本申请的技术方案,对图库应用A和图库应用B的功能进行简化描述。
具体地,在实施例一至三中,图库应用A的功能包括:(1)与平板200进行图片数据的共享,例如,接收到来自平板200的图像数据获取请求后,向平板200发送图像数据;(2)获取并存储网络中其他终端设备的状态信息,例如,平板200的电量信息。图库应用B的功能仅包括上述第(2)项,而不包括上述第(1)项。
【实施例一】
本实施例提供了一种蓝牙通信方法,用于降低手机100的功耗。进一步地,本实施例基于连接句柄(Connection handle)来实现蓝牙数据包的正确分发(即,将蓝牙数据包分发至正确的蓝牙模块)。
连接句柄是蓝牙设备的链路层(Link Layer,LL)逻辑链路的标识,也可以称为蓝牙设备的蓝牙主机和蓝牙控制器之间的逻辑链路的唯一标识。两台蓝牙设备之间的每一条数据链路经LL层抽象之后,即形成一条LL层逻辑链路。也就是说,对于每台蓝牙设备,每一条数据链路(或物理链路)对应一条LL层逻辑链路。
图6a示出了本实施例提供的手机100的结构框架图。参考图6a,本实施例中,手机100和平板200之间建立有两条LL层逻辑链路,一条为LL层逻辑链路A(以下简称“LL层链路A”),LL层链路A的连接句柄为handle A;另一条为LL层逻辑链路B(以下简称“LL层链路B”),LL层链路B的连接句柄为handle B。
本实施例中,对于LL层链路B上的蓝牙数据,可通过蓝牙模块100b进行处理,即,对于LL层链路B上的数据,蓝牙芯片将之发送至sensorhub即可,而不用像现有技术那样发送至CPU,从而降低手机100的CPU被唤醒的频次,降低手机100功耗。
以下参考图6b所示的流程图,解释实施例一的具体实施过程。具体地,参考图6b,本实施例包括下述步骤:
S110:图库应用A建立LL层链路A。
为提高用户体验,本实施例中,图库应用A以用户无感的方式建立与平板200图库应用之间的数据链路A(作为第一通信链路),数据链路A可以是异步无连接链路(Asynchronous Connectionless,ACL)链路,也可以是同步面向连接(SynchronousConnection Oriented,SCO)链路。数据链路A对应的LL层逻辑链路为LL层链路A,BLE协议栈为LL层链路A分配的连接句柄为handle A(作为第一连接句柄)。在其他实施中,图库应用A也可以基于用户指令建立与平板200图库应用之间的数据链路,例如,当用户在图库应用A提供的操作界面输入建链指令后,图库应用A启动建立数据链路A。
图库应用A建立数据链路A的过程为:图库应用A通过蓝牙主机A向蓝牙控制器发送建链指令,蓝牙控制器在接收到建链指令后与平板200建立数据链路。数据链路的建立过程可以包括设备发现、鉴权、握手等过程,具体可参考现有技术中两台蓝牙设备建立数据链路的过程,本实施例不作赘述。
S120:蓝牙控制器存储handle A与蓝牙模块100a的映射关系。
当蓝牙协议栈为LL层链路A分配连接句柄(即句柄A)之后,蓝牙控制器在“连接句柄-蓝牙模块”映射表中存储handle A与蓝牙模块100a的映射关系。
表1给出了“连接句柄-蓝牙模块”的一个示例。在表1给出的示例中,蓝牙控制器通过将蓝牙模块100a的标识名以及连接句柄A写在“连接句柄-蓝牙模块”映射表的同一行(第i行)中,以存储handle A与蓝牙模块100a的映射关系。
表1
序号 | 连接句柄 | 蓝牙模块 |
i | handle A | 蓝牙模块100a |
j | handle B | 蓝牙模块100b |
本实施例为本申请技术方案的示例性说明,在其他实施例中,蓝牙控制器以其他存储handle A与蓝牙模块100a的映射关系。例如,将蓝牙模块100a的标识名与handle A指向同一个识别码等。
S130:图库应用B建立LL层链路B。
当图库应用B启动时,自动启动建立与平板200图库应用之间的数据链路B(作为第二通信链路)。数据链路B对应的LL层逻辑链路为LL层链路B,BLE协议栈为LL层链路B分配的连接句柄为handle B(作为第二连接句柄)。与步骤S110相似,图库应用B建立与平板200图库应用的数据链路可以参考现有技术,本实施例不再赘述。与步骤S110不同的是,图库应用B通过蓝牙主机B向蓝牙控制器发送建链指令,蓝牙控制器在接收到建链指令后与平板200建立数据链路B。
本实施例中,图库应用B是应图库应用A的请求而启动的,例如,当手机100的CPU即将进入休眠时,图库应用A向操作系统发送启动图库应用B的请求,操作系统在收到请求后启动运行图库应用B。
S140:蓝牙控制器存储handle B与蓝牙模块100b的映射关系。
当蓝牙协议栈为LL层链路B分配连接句柄(即句柄B)之后,蓝牙控制器在“连接句柄-蓝牙模块”映射表中存储句柄B1与蓝牙模块100b之间的映射关系。具体地,蓝牙控制器通过将蓝牙模块100b的标识名以及连接句柄B写在“连接句柄-蓝牙模块”映射表的同一行(第j行)中,以存储handle B与蓝牙模块100b的映射关系。
蓝牙控制器存储句柄B与蓝牙模块100b的映射关系的方法与步骤S120实质相同,因此本步骤未述的其他细节可参考步骤S120中的描述,不再赘述。
S150:手机100将CPU即将休眠的消息通知平板200,随后,手机100的CPU进入休眠。
当满足设定条件时,手机100的CPU进入休眠状态。手机100的CPU进入休眠状态的条件可以是用户设定的,例如,根据用户设定,手机100在灭屏时间达到设定时长后CPU进入休眠;手机100的CPU进入休眠的条件也可以是操作系统指定的,例如,当手机100灭屏且在设定时长中没有CPU唤醒源(例如,开关键)活动时,手机100的CPU自动进入休眠状态。
在手机100的CPU即将进入休眠时,手机100将CPU即将休眠的消息通知平板200,以方便平板200选择向手机100发送蓝牙数据包的数据链路,平板200选择数据链路的策略将在步骤S160中进行介绍。
S160:平板200向手机100发送蓝牙数据包。
当平板200得到手机100的CPU即将休眠的通知后,可以根据业务需要选择合适的数据通道向手机100发送蓝牙数据包,以在满足业务需要的前提下,尽量较少手机100的CPU被唤醒的频次。
具体地,对于图库应用B可以处理的应用数据(例如,平板200的电量信息),平板200可以通过LL层链路B发送至手机100。对于只能由图库应用A处理而图库应用B不能处理而的应用数据(例如,图像数据获取请求),平板200仍通过LL层链路A发送至手机100(此时为根据业务需求必须唤醒CPU的情况)。
S170:蓝牙控制器确定用于处理蓝牙数据包的目的蓝牙模块,目的蓝牙模块为蓝牙模块100a和蓝牙模块100b的其中之一。
首先,蓝牙控制器确定蓝牙数据包所对应的LL层逻辑链路。根据BLE协议,平板200发送至手机100的蓝牙数据包中携带有平板200的蓝牙模块的MAC地址,该MAC地址为平板200的蓝牙模块的随机MAC地址,不同的随机MAC地址对应不同LL层逻辑链路。蓝牙控制器在接收到平板200发送的蓝牙数据包后,通过解析蓝牙数据包中携带的随机MAC地址,可以确定蓝牙数据包所对应的LL层逻辑链路。
其次,在确定蓝牙数据包所对应的LL层逻辑链路后,蓝牙控制器可以确定该LL层逻辑链路的连接句柄,例如,LL层链路A的连接句柄为handle A,LL层链路B的连接句柄为handle B。之后,蓝牙控制器根据表1所示的“连接句柄-蓝牙模块”映射表确定用于处理蓝牙数据的目的蓝牙模块。例如,当蓝牙数据包所对应的LL层逻辑链路为LL层链路A时,用于处理蓝牙数据的蓝牙模块为蓝牙模块100a。
S180:蓝牙控制器将蓝牙数据包分发至目的蓝牙模块。例如,蓝牙控制器将经LL协议层解析后的蓝牙数据包发送至目的蓝牙模块。
在步骤S170中,如果确定目的蓝牙模块为蓝牙模块100a,蓝牙控制器将蓝牙数据包分发至蓝牙模块100a(对应于蓝牙芯片通过物理总线将蓝牙数据包发送至CPU),以通过蓝牙模块100a对蓝牙数据进行处理,例如,蓝牙应用A根据接收到的图像数据获取请求向平板200发送图像数据。
在步骤S170中,如果确定目的蓝牙模块为蓝牙模块100b,蓝牙控制器将蓝牙数据包分发至蓝牙模块100b(对应于蓝牙芯片通过物理总线将蓝牙数据包发送至sensorhub),以通过蓝牙模块100b对蓝牙数据进行处理,例如,蓝牙应用B将平板200的电量信息存储在设备状态列表中。当手机100的CPU结束休眠后,图库应用B将设备状态列表同步至图库应用A。
综上,本实施例在手机100中设置的蓝牙模块100a和蓝牙模块100b,蓝牙模块100a运行于手机100的CPU上,蓝牙模块100b运行于手机100的sensorhub上,当手机100的CPU休眠时,手机100可以通过蓝牙模块100b处理来自平板200的蓝牙数据,从而可以减少手机100的CPU被唤醒的频次,降低手机100功耗。
另外,本实施例基于LL层逻辑链路的唯一标识——连接句柄将蓝牙数据包分发至正确的蓝牙模块,仅需在手机100现有软件的基础上做少量改动即可实现本实施例的技术方案。另外,本实施例不改变蓝牙协议栈的原有逻辑,易于方法的实现和维护。
本实施例仅为本申请技术方案的示例性说明,本领域技术人员可以在本实施例的基础上进行其他变形。
例如,在其他实施例中,蓝牙数据包的分发过程(步骤S180)可以不通过蓝牙控制器执行,而是通过手机100的其他模块(例如,蓝牙模块100b)执行。
【实施例二】
本实施例提供了另一种蓝牙通信方法,用于降低手机100的功耗。与实施例一不同的是,本实施例基于逻辑链路控制和适配协议层(Logical Link Control and AdaptationProtocol,L2CAP)逻辑链路的链路标识——Channel ID(CID)来实现蓝牙数据包的正确分发。
根据BLE协议,L2CAP层位于蓝牙主机中,用于为不同的蓝牙应用提供数据链路的复用功能。通过L2CAP层提供的功能,不同的蓝牙应用,和/或同一个蓝牙应用的不同业务之间可以复用同一条数据链路。
图7a示出了本实施例提供的手机100的结构框架图。参考图7a,手机100和平板200之间建立有数据链路A,蓝牙应用A和蓝牙应用B均通过数据链路A与平板200进行通信。为此,手机100在数据链路A的基础上,建立了两条L2CAP层逻辑链路,一条为L2CAP层逻辑链路A(以下简称“L2CAP层链路A”),L2CAP层链路A的链路标识为CID A;一条为L2CAP层逻辑链路B(以下简称“L2CAP层链路B”),L2CAP层链路B的链路标识为CID B。
本实施例中,对于L2CAP层链路B上的蓝牙数据,可通过蓝牙模块100b进行处理,即,对于L2CAP层链路B上的数据,蓝牙芯片将之发送至sensorhub即可,而不用像现有技术那样发送至CPU,从而降低手机100的CPU被唤醒的频次,降低手机100功耗。
以下参考图7b所示的流程图,解释实施例二的具体实施过程。具体地,参考图7b,本实施例包括下述步骤:
S210:图库应用A建立L2CAP层链路A。
本实施例中,L2CAP层链路A是图库应用在创建数据链路A的时候创建的,其中,图库应用A创建数据链路A的细节可以参考实施例一步骤S110中的描述。
在创建数据链路A的过程中,蓝牙主机A同时创建L2CAP层链路A,并在CID集合A(作为第一CID集合)中为L2CAP层链路A分配一个CID(本文为CID A),其中,CID集合A的设置方式将在步骤S230中介绍。
在其他实施例中,数据链路A也可以是手机100上的其他蓝牙应用(例如,音乐播放应用,设置应用)创建的,当其他蓝牙应用创建数据链路A之后,图库应用A在数据链路A的基础上创建L2CAP层链路A。
S220:图库应用A将蓝牙主机A中的数据同步至蓝牙主机B。
当图库应用B启动时,启动运行蓝牙主机B。在蓝牙主机B启动之后,图库应用A将蓝牙主机A中的数据同步至蓝牙主机B。可以理解,蓝牙主机A中的数据包括数据链路A的链路信息,例如,数据链路A的连接句柄。
本实施例中,图库应用B是应图库应用A的请求而启动的,图库应用B的启动方式可以参考实施例一步骤S130中的描述。
S230:图库应用B建立L2CAP层链路B。
在将蓝牙主机A的数据同步至蓝牙主机B之后,蓝牙主机B可以获取到数据链路A的链路信息,从而,蓝牙主机B可以在数据链路A的基础上创建L2CAP层链路。
创建2CAP层信道B的具体过程为:图库应用B向蓝牙主机B发送在数据链路A的基础上创建L2CAP层链路的指令,蓝牙主机B在接收到指令后,创建L2CAP层链路B并在CID集合B(作为第二CID集合)中为L2CAP层链路B分配一个CID(本文为CID B)。
本实施例中,CID集合A和CID集合B互不重叠,在此基础上,本实施例对CID集合A和CID集合B的具体设置方式不作限定。
参考表2,根据蓝牙协议,可动态分配的CID范围为0x0040~0x007F。在本实施例提供的示例一中,以某一CID值为界,将可动态分配的CID范围划分为互不重叠的两个集合,一个作为CID集合A,另一个作为CID集合B。例如,以0x0060为界,将0x0040~0x006F之间的CID划分至CID集合A,将0x0070~0x007F之间的CID划分至CID集合B。
在示例二中,CID集合A和CID集合B根据CID值的奇偶性进行划分。例如,将0x0040~0x007F中的所有偶数划分至CID集合A,将0x0040~0x007F中的所有奇数划分至CID集合A。相较于示例一,本示例不限制CID集合的上下限(示例一限制了CID集合A的上限以及CID集合B限制了下限),对CID分配的制约较少。
上述示例仅为CID集合划分方式的示例性说明,本领域技术人员还可以采用其他划分方式,只要CID集合A和CID集合B互不重叠即可。
表2
CID | 描述 | 适用的蓝牙协议 |
0x0000 | 不可使用 | |
0x0004 | 属性协议 | 低功耗蓝牙 |
0x0005 | 低功耗蓝牙信令通道 | 低功耗蓝牙 |
0x0006 | 安全管理协议 | 低功耗蓝牙 |
0x0020-0x003E | 已分配编号 | 低功耗蓝牙 |
0x0040-0x007F | 动态分配 | 低功耗蓝牙 |
其他 | 为后续使用保留 |
S240:手机100将CPU即将休眠的消息通知平板200,随后,手机100的CPU进入休眠。
本实施例手机100的CPU休眠的条件与实施例一步骤S150实质相同,因此可以参考实施例一步骤S150中的叙述,不再赘述。
在手机100的CPU即将进入休眠时,手机100将CPU即将休眠的消息通知平板200,以方便平板200选择向手机100发送蓝牙数据包的L2CAP层链路,平板200选择L2CAP层链路的策略将在步骤S250中进行介绍。
S250:平板200向手机100发送蓝牙数据包。
当平板200得到手机100的CPU即将休眠的通知后,可以根据业务需要选择合适的L2CAP层链路向手机100发送蓝牙数据包,以在满足业务需要的前提下,尽量较少手机100的CPU被唤醒的频次。
具体地,对于图库应用B可以处理的应用数据,平板200通过L2CAP层链路B进行发送至手机100(平板200发送的蓝牙数据包中的CID位于CID集合B中)。对于只能由图库应用A处理而图库应用B不能处理而的应用数据,平板200通过L2CAP层链路A发送至手机100(平板200发送的蓝牙数据包中的CID位于CID集合A中)。
S260:蓝牙控制器确定用于处理蓝牙数据包的目的蓝牙模块,目的蓝牙模块为蓝牙模块100a和蓝牙模块100b的其中之一。
首先,蓝牙控制器解析蓝牙数据包中携带的CID。参考图7a,手机100的蓝牙控制器中包括L2CAP协议层。当蓝牙控制器接收到平板200发送的蓝牙数据包后,通过L2CAP协议层解析蓝牙数据包中携带的CID。
其次,蓝牙控制器根据CID确定用于处理蓝牙数据的目的蓝牙模块。参考图7a,手机100的蓝牙控制器中存储有“CID集合-蓝牙模块”映射表。“CID集合-蓝牙模块”映射表的内容为:位于CID集合A中的CID映射至蓝牙模块100a,位于CID集合B中的CID映射至蓝牙模块100b。蓝牙控制器在解析得到蓝牙数据包中携带的CID后,根据“CID集合-蓝牙模块”映射表判断蓝牙数据包所对应的目的蓝牙模块。例如,当蓝牙数据包中携带的CID位于CID集合A时,蓝牙数据包对应的目的蓝牙模块为蓝牙模块100a。
S270:蓝牙控制器将蓝牙数据包分发至目的蓝牙模块。例如,蓝牙控制器将经LL协议层解析后的蓝牙数据包发送至目的蓝牙模块。
在步骤S260中,如果确定目的蓝牙模块为蓝牙模块100b,蓝牙控制器将蓝牙数据包分发至蓝牙模块100b(对应于蓝牙芯片通过物理总线将蓝牙数据包发送至sensorhub);如果确定目的蓝牙模块为蓝牙模块100a,蓝牙控制器将蓝牙数据包分发至蓝牙模块100a(对应于蓝牙芯片通过物理总线将蓝牙数据包发送至CPU),此时,手机100的CPU会被唤醒,以接收来自蓝牙芯片的数据。
本步骤中,蓝牙控制器分发蓝牙数据的方法与实施例一步骤S180实质相同,即,蓝牙控制器分发蓝牙数据包的其他细节可以参考实施例一步骤S180中的描述,不再赘述。
综上,本实施例在手机100中设置有蓝牙模块100a和蓝牙模块100b,蓝牙模块100a运行于手机100的CPU上,蓝牙模块100b运行于手机100的sensorhub上,当手机100的CPU休眠时,手机100可以通过蓝牙模块100b处理来自平板200的蓝牙数据,从而可以减少手机100的CPU被唤醒的频次,降低手机100功耗。
另外,相较于实施例一中建立两条数据链路的方案,本实施例的蓝牙模块100a和蓝牙模块100b可以共用一条数据链路,因此,本实施例在实现了与实施例一相同的技术效果的机上上,还可以节省数据链路(物理通道)的数量。
本实施例仅为本申请技术方案的示例性说明,本领域技术人员可以在本实施例的基础上进行其他变形。
例如,在一个实施例中,手机100和平板200之间也可以建立多条数据链路。参考图7c,当手机100上存在多条数据链路时,不同数据链路上的L2CAP层链路可以具有相同的CID,例如,当数据链路A上存在CID为0x0060的L2CAP层链路时,另一条数据链路B上也可以存在CID为0x0060的L2CAP层链路。另外,各条数据链路可以有独立的CID集合划分规则,例如,手机100和平板200之间建立有数据链路A和数据链路B,数据链路A按照步骤S230中示例一的方法划分CID集合,数据链路B按照步骤S230中示例二的方法划分CID集合。
又如,在一个实施例中,动态地存储CID与蓝牙模块之间的映射关系。例如,蓝牙主机A在建立L2CAP链路A时,在可用CID(没被分配的CID)中为L2CAP链路A分配链路标识CIDA;并且,蓝牙主机A将L2CAP链路A分配链路标识CID A通知蓝牙控制器,蓝牙控制器存储CIDA与蓝牙模块100a的映射关系;同样地,当蓝牙主机B建立L2CAP链路B后,蓝牙控制器存储L2CAP链路B的链路标识CID B与蓝牙模块100b的映射关系。当蓝牙控制器接收到来平板200的蓝牙数据包后,根据CID与蓝牙模块的映射关系来确定用于处理蓝牙数据包的目的蓝牙模块。例如,当蓝牙数据包中的CID为CID A时,目标蓝牙模块为蓝牙模块100a。可以理解,在该实施例中,蓝牙主机A可以在CID集合A的范围内为L2CAP链路A分配链路标识CID A,以及,蓝牙主机B可以在CID集合B的范围内为L2CAP链路B分配链路标识CID B。
【实施例三】
本实施例提供了另一种蓝牙通信方法,用于降低手机100的功耗。与实施例一和实施例二不同的是,本实施例基于BLE协议的应用层逻辑链路的链路标识——UIDD来实现蓝牙数据包的正确分发。
根据BLE协议,BLE应用基于属性协议(Attribute Protocol,ATT)和通用属性规范(Generic Attribute Profile,GATT)来传输应用数据。根据ATT/GATT协议,蓝牙设备在BLE链路上发送和接收的应用数据为被称作“属性(Attribute)”的数据块。参考图8a,每个属性数据块均包括属性句柄(Attribute Handler)、属性类型(Attribute Type)和属性值(Attribute Value)。
属性句柄犹如指向属性数据块的指针,当BLE设备中定义了多个属性数据块时,各属性数据块的属性句柄由0x0001开始逐步加一,例如,第一个属性数据块的属性句柄为0x0001,第二个属性数据块的属性句柄为0x0002。
属性类型用于表示属性值所对应的类型。属性值有许许多多的数据类型:温度、压强、体积、距离、速度、功率、时间、电量状态、开关机状态等,为了区别如此多的数据类型,一串128位的标识码被用来标识数据类型,这个标识码就叫做通用唯一标识码(UniversallyUnique Identifier,UUID)。
属性值为具体的用户数据,例如,当属性类型为心率时,属性值可以为65bpm;当数据类型为设备名称时,属性值可以为HUAWEI Mate 40Pro;当属性类型为开关机状态时,属性值可以为0(0的具体含义可以由用户定义,例如,0表示关机);当属性类型为电量状态时,属性值可以为20%。
图8b示出了本实施例提供的手机100的结构框架图。参考图8b,手机100的蓝牙主机中设置有ATT/GATT协议层,ATT/GATT协议层位于L2CAP协议层的上层。当手机100接收到来自手机100的蓝牙数据包后,蓝牙数据包依次经过下层协议(例如,LL协议层,L2CAP协议层)的解析之后,被上报至ATT/GATT协议层。ATT/GATT协议层对接收到蓝牙数据包进行进一步解析,得到蓝牙数据包中携带的属性数据。之后,ATT/GATT协议层将解析得到的属性数据上报至BLE应用(例如,图库应用)。需要说明的是,图8b是ATT/GATT协议层的简化表示,根据BLE协议,ATT/GATT协议层包括ATT协议层和位于ATT协议层上层的GATT协议层。
本实施例中,当蓝牙控制器接收到来自平板200的蓝牙数据包后,并非将蓝牙数据包上报至运行于CPU上的蓝牙模块100a,而是上报至运行于sensorhub上的蓝牙模块100b。蓝牙模块100b在接收到蓝牙数据后,通过ATT/GATT层协议层对蓝牙数据进行解析,并将解析得到的属性数据上报至图库应用B。图库应用B根据属性数据块中的UUID来判断用于处理蓝牙数据包的目标蓝牙模块。
也就是说,本实施例中,仅当目标蓝牙模块为图库模块A时,图库应用B才将蓝牙数据包分发至蓝牙模块100a。当目标蓝牙模块为图库应用B时,图库应用B自行进行处理,而不用唤醒CPU,从而可以降低CPU被唤醒的频次,降低手机100的功耗。
以下参考图8c所示的流程图,解释实施例三的具体实施过程。具体地,参考图8c,本实施例包括下述步骤:
S310:手机100和平板200之间建立数据链路A。
本实施例中,数据链路A是图库应用A发起创建的,其中,图库应用A创建数据链路A的细节可以参考实施例一步骤S110中的描述。本实施例中,手机100和平板200之间建立有一条数据链路,在其他实施例中,手机100和平板200之间可以建立多条数据链路。每条数据链路可以包括一条L2CAP层逻辑链路,也可以包括多条L2CAP层逻辑链路。
在其他实施例中,数据链路A也可以是平板200图库应用发起建立的。另外,数据链路A可以是以用户无感的方式建立的,也可以是基于用户的指令建立的。
S320:图库应用A将蓝牙主机A中的数据同步至蓝牙主机B。
当图库应用B启动时,启动运行蓝牙主机B。在蓝牙主机B启动之后,图库应用A将蓝牙主机A中的数据同步至蓝牙主机B。可以理解,蓝牙主机A中的数据包括数据链路A的链路信息,例如,数据链路A上的LL层逻辑链路的连接句柄,数据链路A上的各L2CAP层逻辑链路的CID等。
本实施例中,图库应用B是应图库应用A的请求而启动的,图库应用B的启动方式可以参考实施例一步骤S130中的描述。
S330:图库应用A将“UUID-蓝牙模块”映射表同步至图库应用B。
“UUID-蓝牙模块”映射表用于记录UUID与蓝牙模块之间的映射关系,UUID与蓝牙模块之间的映射关系是根据图库应用A和图库应用B能够处理的属性数据确定的。表3给出了“UUID-蓝牙模块”映射表的一个示例,根据表3,当属性数据块的UUID为UUID A时(本实施例中,UUID A表示的属性类型为“图像数据获取请求”,该类型的属性数据为图库应用A可以处理的属性数据),该UUID映射至蓝牙模块100a;当属性数据块的UUID为UUID B时(本实施例中,UUID B表示的属性类型为“电量信息”,该类型的属性数据为图库应用B可以处理的属性数据),该UUID映射至蓝牙模块100b。
表3
序号 | 连接句柄 | 蓝牙模块 |
i | UUID A | 蓝牙模块100a |
j | UUID B | 蓝牙模块100b |
本实施例中,“UUID-蓝牙模块”映射表存储在图库应用A中,在图库应用B启动之后,图库应用A将“UUID-蓝牙模块”映射表同步至图库应用B,这样,图库应用A可以根据业务需要“UUID-蓝牙模块”映射表进行实时更新和维护。但本申请不限于此,在其他实施例中,“UUID-蓝牙模块”映射表也可以存储在图库应用B中。
S340:蓝牙主机A将对蓝牙控制器的控制权移交至蓝牙主机B(对应于CPU将对蓝牙芯片的控制权移交至sensorhub)。
蓝牙主机A将对蓝牙控制器的控制权移交至蓝牙主机B的目的在于,在移交控制权之后,蓝牙芯片将接收到的上行蓝牙数据上报至蓝牙主机B(在移交控制权之前是上报至蓝牙主机A),这里,上行蓝牙数据为从BLE协议栈底层向BLE协议栈顶层传输的数据;以及,蓝牙芯片从蓝牙主机B接收下行蓝牙数据(在移交控制权之前是从蓝牙主机A接收下行蓝牙数据),这里,下行蓝牙数据为从BLE协议栈顶层向BLE协议栈底层传输的数据。
为避免控制权移交过程中的数据丢失,本步骤包括:
(a)蓝牙主机A向蓝牙控制器发送控制权移交通知,蓝牙控制器在接收到控制权移交通知后,进行控制权切换准备,例如,停止向蓝牙主机A上报蓝牙数据,并将即将上报的蓝牙数据缓存在蓝牙芯片中。蓝牙控制器在做好控制权切换准备后,向蓝牙主机A回复准备就绪的消息。
(b)蓝牙主机A向蓝牙主机B发送控制权移交通知,蓝牙主机B在接收到控制权移交通知后,进行控制权切换准备,例如,开始监听来自蓝牙控制器的数据,为即将接收的蓝牙数据申请存储空间等。蓝牙主机B在做好控制权切换准备后,向蓝牙主机A回复准备就绪的消息。
当上述(a)和(b)完成之后,蓝牙主机A完成控制权的移交。
S350:手机100将CPU即将休眠的消息通知平板200,随后,手机100的CPU进入休眠。
本实施例手机100的CPU休眠的条件与实施例一步骤S150实质相同,因此可以参考实施例一步骤S150中的叙述,不再赘述。
在手机100的CPU即将进入休眠时,手机100将CPU即将休眠的消息通知平板200,以方便平板200确定应用数据的UUID,平板200确定UUID的策略将在步骤S360中进行介绍。
S360:平板200向手机100发送蓝牙数据包。
当平板200得到手机100的CPU即将休眠的通知后,可以根据业务需要选择合适的UUID向手机100发送应用数据,以在满足业务需要的前提下,尽量较少手机100的CPU被唤醒的频次。
具体地,对于图库应用A和图库应用B均可以处理的应用数据,在属性数据块中写入映射至蓝牙模块100b的UUID(即UUID B);对于只能由图库应用A处理而图库应用B不能处理而的应用数据,在属性数据块中写入映射至蓝牙模块100b的UUID(即UUID A)。
例如,对于电量信息,其为图库应用A和图库应用B均可以处理的应用数据,当平板200接收到手机100的CPU即将休眠的通知后,将属性数据块中的UUID设为UUID B,并将该属性数据块发送至手机100;对于图像数据获取请求,其为只能由图库应用A处理的数据,当平板200接收到手机100的CPU即将休眠的通知后,将属性数据块中的UUID设为UUID A,并将该属性数据块发送至手机100。
S370:蓝牙应用B确定用于处理蓝牙数据的目的蓝牙模块,目的蓝牙模块为蓝牙模块100a和蓝牙模块100b的其中之一。
参考图8b,手机100在接收到平板200发送的蓝牙数据包后,由手机100中的蓝牙协议层(例如,LL协议层,L2CAP协议层,ATT/GATT协议层)对蓝牙数据包进行解析,将解析得到的属性数据块上报至图库应用B。
图库应用B在接收到属性数据块之后,将属性数据块中的UUID与“UUID-蓝牙模块”映射表(即表3)中的UUID进行匹配,以确定用于处理属性数据块的目的蓝牙模块。例如,当属性数据块中的UUID为UUID B时,用于处理属性数据块的目的蓝牙模块为蓝牙应用B。
S380:蓝牙应用B将蓝牙数据包分发至目的蓝牙模块。例如,蓝牙控制器从蓝牙数据包中解析出来的属性数据块发送至目的蓝牙模块。
在步骤S370中,如果确定目的蓝牙模块为蓝牙模块100b,蓝牙应用B将属性数据块交给自身相应的业务模块进行处理,例如,对于UIDD为UUID B的属性数据块,蓝牙应用B将其交给自身的“设备状态列表”维护模块,“设备状态列表”维护模块在接收到属性数据块之后,将其中的属性值写入平板200的状态数据中。当手机100的CPU结束休眠后,蓝牙应用B将“设备状态列表”中的数据同步至蓝牙应用A。
在步骤S370中,如果确定目的蓝牙模块为蓝牙模块100a,蓝牙应用B将属性数据块交给蓝牙主机A(对应于sensorhub通过物理总线将属性数据块发送至CPU),并由蓝牙主机A上报至蓝牙应用B。此时,手机100的CPU会被唤醒,以接收来自蓝牙芯片的数据。
综上,本实施例在手机100中设置的蓝牙模块100a和蓝牙模块100b,蓝牙模块100a运行于手机100的CPU上,蓝牙模块100b运行于手机100的sensorhub上,当手机100的CPU休眠时,手机100可以通过蓝牙模块100b处理来自平板200的蓝牙数据,从而可以减少手机100的CPU被唤醒的频次,降低手机100功耗。
并且,本实施例在不显著改变现有蓝牙控制器的基础上,实现了蓝牙数据的分发方案。本领域技术人员可以理解,越靠近底层的模块,对数据处理实时性的要求越高,因此,越靠近底层的模块,其改动难度也越大。因此,本实施例中,最大程度地避免了对位于蓝牙协议栈底层的蓝牙控制器的改动,具有较高的实用价值。
本实施例仅为本申请技术方案的示例性说明,本领域技术人员可以在本实施例的基础上进行其他变形。
例如,在其他实施例中,不是根据UIDD与蓝牙模块的映射关系来确定用于处理蓝牙数据的目的蓝牙模块,而是将目的蓝牙模块的标识写在属性数据块的属性值中,例如,在属性值字段增加用于识别目的蓝牙模块的标识位,当该标识位的值为0时,表示目的蓝牙模块为蓝牙模块100a;当该标识位的值为1时,表示目的蓝牙模块为蓝牙模块100b。
以下将结合附图解释根据本申请的实施例四和五。要注意的是,实施例四和五所适用的通信方式与之前的实施例一至三稍有不同。具体而言,在实施例一至三中,手机100与平板200之间的通信方式为基于连接的通信方式;在下述实施例四和五中,手机100与平板200之间的通信方式为基于广播的通信方式。
在基于广播的通信方式中,通信的一方用于向外发送广播数据(本文称为“广播设备”),通信的另一方用于通过扫描的方式接收广播数据(本文称为“扫描设备”)。广播设备将应用数据封装在广播数据包中发送出去,扫描设备在接收到广播数据包后,对广播数据包进行解析,可以获取到广播数据包中携带的应用数据。
【实施例四】
本实施例提供了一种基于蓝牙广播链路的蓝牙通信方法,用于降低手机100的功耗。进一步地,本实施例基于过滤器索引(filter index)来实现蓝牙数据包的正确分发。
根据BLE协议,蓝牙应用在向蓝牙控制器下发扫描指令时,还向蓝牙控制器下发用于对广播数据包进行过滤的扫描过滤器,蓝牙控制器通过该扫描过滤器对广播数据包进行过滤,以得到蓝牙应用需要的广播数据包。
根据蓝牙芯片提供的功能,蓝牙主机可以在蓝牙控制器中设置一定数量(例如,16个,32个)的扫描过滤器,通常地,蓝牙芯片的功能越强大,可设置扫描过滤器数量越多。每个扫描过滤器都有唯一的编号,该编号被称作过滤器索引(filter index)。示例性地,当蓝牙芯片中可设置的过滤器的数量为32个时,各扫描过滤器的过滤器索引依次为0~31。
扫描过滤器中设置有一个或多个扫描过滤字段,当蓝牙控制器接收到广播数据包后,会将广播数据包与扫描过滤器中的扫描过滤字段进行匹配。当广播数据包与扫描过滤器中的扫描过滤字段相匹配时,该广播数据包被蓝牙控制器确定为蓝牙应用所需要的数据包(即扫描过滤器为白名单过滤方式)。扫描过滤器的其他细节可参考现有技术(例如,蓝牙核心规范)的介绍,不再赘述。
通常地,扫描过滤器基于蓝牙设备的设备特征信息对广播数据包进行过滤。即扫描过滤器中的扫描过滤字段用于描述蓝牙设备的设备特征信息。当广播数据包中携带的广播设备的设备特征信息与扫描过滤器中的扫描过滤字段相同时,蓝牙控制器确定该广播数据包为蓝牙应用所需要的数据包。
本实施例对设备特征信息的具体内容不进行限定,设备特征信息可以是广播设备的设备名称(例如,HUAWEI Mate 40pro),设备厂商(例如,华为,vivo),设备类型(例如,手环,触控笔,扫地机器人等),设备支持的应用(例如,图库应用,视频通话应用),设备支持的服务(例如,电量服务,秘钥服务等)等。
以下仍结合图4示出的场景来介绍本实施例的技术方案。其中,图库应用B的功能仍为图库应用A的功能的子集,与实施例一至三不同的是,本实施例中,图库应用A的功能包括:(3)与平板200建立WLAN链路,例如,从蓝牙广播链路接收来自平板200的WLAN建链请求,并与平板200建立WLAN链路;(4)获取并存储平板200的WLAN建链信息,例如,平板200的WLAN秘钥信息。图库应用B的功能仅包括上述第(4)项,而不包括上述第(3)项。
参考图9a,本实施例中,将手机100作为扫描设备的示例,将平板200作为广播设备的示例。蓝牙应用A在蓝牙控制器中设置有扫描过滤器A(索引为Index A),蓝牙应用B在蓝牙控制器中设置有扫描过滤器B(索引为Index B)。当蓝牙控制器接收到来自平板200的广播数据包时,通过其中设置的扫描过滤器对广播数据包进行过滤。当广播数据包与扫描过滤器B相匹配时,蓝牙芯片将广播数据包发送至sensorhub即可,而不用像现有技术那样发送至CPU,从而降低手机100的CPU被唤醒的频次,降低手机100的功耗。
具体地,参考图9b,本实施例包括下述步骤:
S410:图库应用A启动蓝牙扫描A(作为第一蓝牙扫描)。
图库应用A通过蓝牙主机A向蓝牙控制器发送开启蓝牙扫描的指令。蓝牙控制器在接收到开启蓝牙扫描的指令后,开启蓝牙扫描A。
图库应用A发送的开启蓝牙扫描的指令中,还包括扫描过滤器A(作为第一扫描过滤器)。扫描过滤器A的扫描过滤字段中设置有图库应用A可以处理的服务,例如,WLAN信令服务。
本实施例中,蓝牙主机A在向蓝牙控制器发送开启蓝牙扫描的指令之前,还为扫描过滤器A分配过滤器索引。本实施例中,蓝牙主机A在Index集合A(作为第一过滤器索引集合)中为扫描过滤器A分配一个索引(即Index A或第一过滤器索引)。
S420:蓝牙控制器存储过滤器Index A与蓝牙模块100a的映射关系。
蓝牙主机A在确定扫描过滤器A的过滤器索引(即Index A)之后,将扫描过滤器A的过滤器索引发送至蓝牙控制器。蓝牙控制器在“过滤器索引-蓝牙模块”映射表中存储IndexA与蓝牙模块100a的映射关系。
表4给出了“过滤器索引-蓝牙模块”映射表的一个示例。在表4给出的示例中,蓝牙控制器通过将蓝牙主机A的标识名以及Index A写在“过滤器索引-蓝牙模块”映射表的同一行(第i行)中,以存储Index A与蓝牙模块100a的映射关系。
表4
序号 | 过滤器索引 | 蓝牙模块 |
i | Index A | 蓝牙模块100a |
j | Index B | 蓝牙模块100b |
本实施例为本申请技术方案的示例性说明,在其他实施例中,蓝牙控制器以其他存储过滤器Index A与蓝牙模块100a的映射关系。例如,将蓝牙主机A的标识名与Index A指向同一个识别码等。
S430:图库应用B启动蓝牙扫描B(作为第二蓝牙扫描)。
当图库应用B启动时,通过蓝牙主机B向蓝牙控制器发送开启蓝牙扫描的指令,蓝牙控制器在接收到开启蓝牙扫描的指令后,开启蓝牙扫描B。
图库应用B发送的开启蓝牙扫描的指令中,还包括扫描过滤器B(作为第二扫描过滤器)。扫描过滤器B的扫描过滤字段中设置有图库应用B可以处理的服务,例如,WLAN秘钥服务。
蓝牙主机B在向蓝牙控制器发送开启蓝牙扫描的指令之前,还为扫描过滤器B分配过滤器索引。与步骤S410相同,蓝牙主机B可以在可用索引(即未被分配的索引)中随机为扫描过滤器B分配一个索引,也可以在可用索引中依序为扫描过滤器B分配索引。
本实施例中,蓝牙主机B在向蓝牙控制器发送开启蓝牙扫描的指令之前,还为扫描过滤器B分配过滤器索引。本实施例中,蓝牙主机B在Index集合B(作为第二过滤器集合)中为扫描过滤器B分配一个索引(即Index B或第二过滤器索引)。
本实施例中,Index集合A和Index集合B互不重合。在此基础上,本实施例对Index集合A和Index集合B的设置方式不作限定。例如,以索引值“20”为界,将0~20之间的过滤器索引划分至Index集合A,将21~31之间的过滤器索引划分至Index集合B;或者,将0~31中的所有偶数划分至Index集合A,将0~31中的所有奇数划分至Index集合B。
本实施例中,图库应用B是应图库应用A的请求而启动的,例如,当手机100的CPU即将进入休眠时,图库应用A向操作系统发送启动图库应用B的请求,操作系统在收到请求后启动运行图库应用B。另外,图库应用A在启动图库应用B时,可以将蓝牙主机A中的数据同步至蓝牙主机B,例如,蓝牙扫描A的扫描状态,扫描过滤器A的扫描过滤字段,扫描过滤器A的过滤器索引等。
S440:蓝牙控制器存储过滤器Index B与蓝牙模块100b的映射关系。
蓝牙主机B在确定扫描过滤器B的过滤器索引(即Index B)之后,将扫描过滤器B的过滤器索引发送至蓝牙控制器。蓝牙控制器在“过滤器索引-蓝牙模块”映射表(即表4)中存储Index B与蓝牙模块100b的映射关系。
蓝牙控制器存储过滤器Index B与蓝牙模块100b的映射关系的方法与步骤S420实质相同,因此本步骤未述的其他细节可参考步骤S420中的描述,不再赘述。
S450:手机100将CPU即将休眠的消息通知平板200,随后,手机100的CPU进入休眠。
本实施例手机100的CPU休眠的条件与实施例一步骤S150实质相同,因此可以参考实施例一步骤S150中的叙述,不再赘述。
在手机100的CPU即将进入休眠时,手机100将CPU即将休眠的消息通知平板200,以方便平板200确定向手机100发送的广播数据包,平板200确定广播数据包的策略将在步骤S160中进行介绍。
S460:平板200向手机100发送广播数据包。
当平板200得到手机100的CPU即将休眠的通知后,可以根据业务需要确定向外发送的广播数据包,以在满足业务需要的前提下,尽量较少手机100的CPU被唤醒的频次。
具体地,平板200在接收到手机100的CPU即将休眠的通知后,对于图库应用B可以处理的服务,通过与扫描过滤器B匹配的广播数据包进行发送;对于只能由图库应用A处理而图库应用B不能处理而的服务,与扫描过滤器A匹配的广播数据包进行发送。
S470:蓝牙控制器确定用于处理广播数据的目的蓝牙模块,目的蓝牙模块为蓝牙模块100a和蓝牙模块100b的其中之一。
首先,蓝牙控制器在接收到平板200发送的广播数据包后,将广播数据包与设置在蓝牙控制器中的扫描过滤器进行匹配,以确定与广播数据包相匹配的扫描过滤器,并获取该扫描过滤器的过滤器索引。
其次,蓝牙控制器根据获取到的过滤器索引,在“过滤器索引-蓝牙模块”映射表(即表4)查询与该过滤器索引相对应的蓝牙模块,并且该蓝牙模块确定为目的蓝牙模块。例如,当与广播数据包相匹配的扫描过滤器的过滤器索引为Index B时,目的蓝牙模块为蓝牙模块100b。
S480:蓝牙控制器将广播数据包分发至目的蓝牙模块。
在步骤S470中,如果确定目的蓝牙模块为蓝牙模块100a,蓝牙控制器将蓝牙广播数据包(本实施例为WLAN建链信令)分发至蓝牙模块100a(对应于蓝牙芯片通过物理总线将广播数据包发送至CPU)。此时,CPU会被唤醒,图库应用A基于接收到的WLAN建链信令,与平板200建立WLAN连接。
在步骤S470中,如果确定目的蓝牙模块为蓝牙模块100b,蓝牙控制器将广播数据包(本实施例为WLAN建链信息,例如,WLAN秘钥)分发至蓝牙模块100b(对应于蓝牙芯片通过物理总线将广播数据发送至sensorhub),图库应用B将平板200的WLAN建链信息(例如,WLAN秘钥)存储在WLAN建链信息列表中。手机100的CPU结束休眠后,图库应用B将WLAN建链信息列表同步至图库应用A,以利于手机100与平板200快速建立WLAN链接。
综上,本实施例中,本实施例在手机100中设置有蓝牙模块100a和蓝牙模块100b,蓝牙模块100a运行于手机100的CPU上,蓝牙模块100b运行于手机100的sensorhub上,当手机100的CPU休眠时,手机100可以通过蓝牙模块100b来接收广播数据,从而可以减少手机100的CPU被唤醒的频次,降低手机100功耗。
本实施例仅为本申请技术方案的示例性说明,本领域技术人员可以在本实施例的基础上进行其他变形。
例如,在其他实施例中,蓝牙控制器中存储有“Index集合-蓝牙模块”映射表,“Index集合-蓝牙模块”映射表中的映射规则包括:位于Index集合A中的过滤器索引映射至蓝牙模块100a,位于Index集合B中的过滤器索引映射至蓝牙模块100b。当蓝牙控制器在确定与广播数据包相匹配的扫描过滤器的过滤器索引后,通过“Index集合-蓝牙模块”映射表来确定目标蓝牙模块。例如,与广播数据包相匹配的扫描过滤器的过滤器索引位于Index集合A中时,蓝牙控制器确定目标蓝牙模块为蓝牙模块100a。
【实施例五】
本实施例仍然用于提供一种基于广播通信方式的蓝牙通信方法。与实施例四不同的是,本实施例中,手机100的角色为广播设备。
BLE主机可以通过蓝牙芯片中发起一定数量(例如,16个)的广播。BLE主机在指令BLE控制器发起蓝牙广播时,会为该广播分配一个标识(例如,一串数字),该标识被称作广播句柄(advertising handle)。通过广播句柄,可以唯一确定BLE主机与BLE控制器之间的逻辑通道。
现有技术中,由于蓝牙主机运行于手机100的CPU上,因此,为发送蓝牙广播,手机100的CPU必须处于运行状态,不利于降低手机100功耗。
为此,本实施例提供了一种低功耗发送蓝牙广播的方法。参考图10a,手机100中包括运行于sensorhub上的蓝牙模块100b,当手机100的CPU休眠时,手机100可通过蓝牙模块100b启动广播,从而节省手机100功耗。
具体地,参考图10b,本实施例包括下述步骤:
S510:图库应用A启动蓝牙广播A(作为第一蓝牙广播)。
首先,图库应用A确定需要广播的应用数据,应用数据例如为手机100的电量信息,WLAN建链信息等。
其次,图库应用A通过蓝牙主机A向蓝牙控制器发送启动蓝牙广播的指令,该指令中包括需要广播的应用数据。蓝牙主机A在指令蓝牙控制器启动蓝牙广播之前,在广播句柄集合A(作为第一句柄集合)中为蓝牙广播A分配广播句柄(本文称为“广播句柄A”)。广播句柄集合A的设置方式将在步骤S520中进行介绍。
之后,蓝牙控制器在接收到蓝牙主机A发送的启动蓝牙广播的之后,生成携带应用数据的蓝牙广播数据包,并通过广播链路向外发送该广播数据包。
S520:图库应用B启动蓝牙广播B(作为第二蓝牙广播)。
图库应用B在启动之后,启动蓝牙广播B。图库应用B启动蓝牙广播B的过程与图库应用A启动广播的过程实质相同,具体为:
首先,图库应用B确定需要广播的应用数据,本实施例中,图库应用B广播的应用数据可以与图库应用A相同。
其次,图库应用B通过蓝牙主机B向蓝牙控制器发送启动蓝牙广播的指令,该指令中包括需要广播的应用数据。蓝牙主机B在指令蓝牙控制器启动蓝牙广播之前,在广播句柄集合B(作为第二句柄集合)中为蓝牙广播B分配广播句柄(本文称为“广播句柄B”)。
之后,蓝牙控制器在接收到蓝牙主机B发送的启动蓝牙广播的之后,生成携带应用数据的蓝牙广播包,并通过广播链路向外发送该广播数据包。
本实施例中,广播句柄集合A和广播句柄集合B互不重叠,从而,图库应用A和图库应用B通过不同的广播句柄独立地启动广播,互不干扰。在此基础上,本实施例对广播句柄集合A和广播句柄集合B的设置方式不作限定,例如,以广播句柄“12”为界,将0~12之间的广播句柄划分至广播句柄集合A,将13~16之间的广播句柄划分至广播句柄集合B;或者,将0~15中的所有偶数划分至广播句柄集合A,将0~15中的所有奇数划分至广播句柄集合B。
本实施例中,图库应用B是应图库应用A的请求而启动的,例如,当手机100的CPU即将进入休眠时,图库应用A向操作系统发送启动图库应用B的请求,操作系统在收到请求后启动运行图库应用B。
S530:手机100的CPU进入休眠。
本实施例手机100的CPU休眠的条件与实施例一步骤S150实质相同,因此可以参考实施例一步骤S150中的叙述,不再赘述。
本实施例中,由于蓝牙模块100b运行在sensorhub上,因此,当手机100的CPU进入休眠之后,图库应用B仍可持续进行向外发送蓝牙广播。蓝牙广播数据中可以携带手机100的WLAN建链信息,从而,当手机100的CPU结束休眠后,可与其他设备快速建立WLAN链接。
需要说明的是,虽然上文中各实施例中包括手机100的CPU进入休眠的步骤(例如,实施例一中的步骤S150),但手机100的CPU休眠并不是本申请实施例的必要条件。本领域技术人员可以对上述与手机100的CPU休眠相关联的步骤进行相应调整,以使得本实施例可以在手机100的CPU不休眠的情况下进行。例如,在实施例一中,图库应用A在启动后,即向操作系统发送启动图库应用B的请求,以启动图库应用B;平板200在LL层链路B建立成功后即通过LL层链路B发送应用数据,而非在接收到手机100的CPU即将进入休眠的通知后才通过LL层链路B发送应用数据。
另外,上文各步骤的执行主体仅为本申请技术方案的示例性说明,并非用于对本申请技术方案进行限定。本领域技术人员可以进行其他变形,例如,在实施例二中,目的蓝牙数据模块的判断过程(步骤S260)可以不通过蓝牙控制器执行,而是通过手机100的其他模块(例如,蓝牙模块100b)执行。
另外,本申请实施例中各步骤的步骤序号并非用于限定各步骤的执行顺序,在满足发明目的的前提下,本领域技术人员可以对各步骤的执行顺序进行调整。
现在参考图11,所示为根据本申请的一个实施例的电子设备400的框图。该电子设备可以实现为根据本申请的实施例的蓝牙设备(以下称为蓝牙设备400)。蓝牙设备400可以包括耦合到控制器中枢403的一个或多个处理器401。对于至少一个实施例,控制器中枢403经由诸如前端总线(FSB,Front Side Bus)之类的多分支总线、诸如快速通道连(QPI,QuickPath Interconnect)之类的点对点接口、或者类似的连接406与处理器401进行通信。处理器401执行控制一般类型的数据处理操作的指令。在一实施例中,控制器中枢403包括,但不局限于,图形存储器控制器中枢(GMCH,Graphics&Memory Controller Hub)(未示出)和输入/输出中枢(IOH,Input Output Hub)(其可以在分开的芯片上)(未示出),其中GMCH包括存储器和图形控制器并与IOH耦合。
蓝牙设备400还可包括耦合到控制器中枢403的协处理器402和存储器404。或者,存储器和GMCH中的一个或两者可以被集成在处理器内(如本申请中所描述的),存储器404和协处理器402直接耦合到处理器401以及控制器中枢403,控制器中枢403与IOH处于单个芯片中。
存储器404可以是例如动态随机存取存储器(DRAM,Dynamic Random AccessMemory)、相变存储器(PCM,Phase Change Memory)或这两者的组合。存储器404中可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性计算机可读介质。计算机可读存储介质中存储有指令,具体而言,存储有该指令的暂时和永久副本。该指令可以包括:由处理器中的至少一个执行时导致蓝牙设备400实施如图6b、图7b、图8c、图9b、图10b所示方法的指令。当指令在计算机上运行时,使得计算机执行上述实施例一、实施例二、实施例三、实施例四和/或实施例五公开的方法。
在一个实施例中,协处理器402是专用处理器,诸如例如高吞吐量MIC(ManyIntegrated Core,集成众核)处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU(General-purpose computing on graphics processing units,图形处理单元上的通用计算)、或嵌入式处理器等等。协处理器402的任选性质用虚线表示在图11中。
在一个实施例中,蓝牙设备400可以进一步包括网络接口(NIC,NetworkInterface Controller)406。网络接口406可以包括收发器,用于为蓝牙设备400提供无线电接口,进而与任何其他合适的设备(如前端模块,天线等)进行通信。在各种实施例中,网络接口406可以与蓝牙设备400的其他组件集成。网络接口406可以实现上述实施例中的通信单元的功能。
蓝牙设备400可以进一步包括输入/输出(I/O,Input/Output)设备405。I/O405可以包括:用户界面,该设计使得用户能够与蓝牙设备400进行交互;外围组件接口的设计使得外围组件也能够与蓝牙设备400交互;和/或传感器设计用于确定与蓝牙设备400相关的环境条件和/或位置信息。
值得注意的是,图11仅是示例性的。即虽然图11中示出了蓝牙设备400包括处理器401、控制器中枢403、存储器404等多个器件,但是,在实际的应用中,使用本申请各方法的设备,可以仅包括蓝牙设备400各器件中的一部分器件,例如,可以仅包含处理器401和网络接口406。图11中可选器件的性质用虚线示出。
现在参考图12,所示为根据本申请的一实施例的SoC(System on Chip,片上系统)500的框图。在图12中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图12中,SoC500包括:互连单元550,其被耦合至处理器510;系统代理单元580;总线控制器单元590;集成存储器控制器单元540;一组或一个或多个协处理器520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM,StaticRandom-Access Memory)单元530;直接存储器存取(DMA,Direct Memory Access)单元560。在一个实施例中,协处理器520包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU(General-purpose computing on graphics processing units,图形处理单元上的通用计算)、高吞吐量MIC处理器、或嵌入式处理器等。
静态随机存取存储器(SRAM)单元530可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性计算机可读介质。计算机可读存储介质中存储有指令,具体而言,存储有该指令的暂时和永久副本。该指令可以包括:由处理器中的至少一个执行时导致SoC实施如图6b、图7b、图8c、图9b、图10b所示方法的指令。当指令在计算机上运行时,使得计算机执行上述实施例一、实施例二、实施例三、实施例四和/或实施例五中公开的方法。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请的各方法实施方式均可以以软件、磁件、固件等方式实现。
可将程序代码应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP,Digital Signal Processor)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在计算机可读存储介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP(Intellectual Property,知识产权)核”的这些表示可以被存储在有形的计算机可读存储介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
Claims (23)
1.一种蓝牙通信方法,应用于蓝牙设备,其中,所述蓝牙设备与对象蓝牙设备进行蓝牙通信;其特征在于,所述蓝牙设备包括分别运行于所述蓝牙设备的多个处理器上的第一蓝牙模块和第二蓝牙模块;所述方法包括:
接收到来自所述对象蓝牙设备的蓝牙数据包;
解析所述蓝牙数据包中携带的通信控制标识,所述通信控制标识用于确定所述蓝牙数据包所对应的通信链路,所述通信链路为第一通信链路和第二通信链路的其中之一,其中,所述第一通信链路是所述第一蓝牙模块与所述对象蓝牙设备之间的蓝牙通信链路,所述第二通信链路为所述第二蓝牙模块与所述对象蓝牙设备之间的蓝牙通信链路;
根据所述蓝牙数据包所对应的通信链路的链路标识,以及所述蓝牙设备中存储的链路标识与蓝牙模块的映射关系,将所述第一蓝牙模块和所述第二蓝牙模块的其中之一确定为所述蓝牙数据包所对应的蓝牙模块;
将所述蓝牙数据包中的数据分发至所述蓝牙数据包所对应的蓝牙模块。
2.根据权利要求1所述的方法,其特征在于,所述第一蓝牙模块用于执行第一蓝牙应用程序和第一蓝牙主机程序,所述第二蓝牙模块用于执行第二蓝牙应用程序和第二蓝牙主机程序。
3.根据权利要求1所述的方法,其特征在于,所述通信控制标识为所述对象蓝牙设备的蓝牙模块的随机MAC地址;
所述根据所述蓝牙数据包所对应的通信链路的链路标识,以及所述蓝牙设备中存储的链路标识与蓝牙模块之间的映射关系,确定所述蓝牙数据包所对应的蓝牙模块,包括:
根据从所述蓝牙数据包中解析到的所述对象蓝牙设备的蓝牙模块的随机MAC地址,确定所述蓝牙数据包所对应的通信链路的连接句柄;
根据所述连接句柄,以及所述蓝牙设备中存储的连接句柄与蓝牙模块之间的映射关系,确定所述蓝牙数据包所对应的蓝牙模块。
4.根据权利要求3所述的方法,其特征在于,所述连接句柄与蓝牙模块之间的映射关系包括:
第一连接句柄与所述第一蓝牙模块之间的映射关系,所述第一连接句柄为所述第一通信链路的连接句柄,其中,第一连接句柄与所述第一蓝牙模块之间的映射关系在建立所述第一通信链路时存储在所述蓝牙设备中的;
第二连接句柄与所述第二蓝牙模块之间的映射关系,所述第二连接句柄为所述第二通信链路的连接句柄,其中,第二连接句柄与所述第二蓝牙模块之间的映射关系在建立所述第二通信链路时存储在所述蓝牙设备中的。
5.根据权利要求1所述的方法,其特征在于,所述通信控制标识为CID,所述CID为蓝牙通信链路的L2CAP层逻辑链路的链路标识;
所述根据所述蓝牙数据包所对应的通信链路的链路标识,以及所述蓝牙设备中存储的链路标识与蓝牙模块之间的映射关系,确定所述蓝牙数据包所对应的蓝牙模块,包括:
根据从所述蓝牙数据包中解析到的CID,以及所述蓝牙设备中存储的CID与蓝牙模块之间的映射关系,确定所述蓝牙数据包所对应的蓝牙模块。
6.根据权利要求5所述的方法,其特征在于,所述CID与蓝牙模块之间的映射关系包括:
位于第一CID集合中的CID映射至所述第一蓝牙模块,以及,位于第二CID集合中的CID映射至所述第二蓝牙模块;其中,所述第一CID集合与所述第二CID集合互不重叠。
7.根据权利要求6所述的方法,其特征在于,位于所述第一CID集合中的CID与位于所述第二CID集合中的CID具有不同的奇偶性。
8.根据权利要求1所述的方法,其特征在于,所述通信控制标识为所述蓝牙数据包中携带的属性数据的UUID,所述UUID为蓝牙通信链路的应用层逻辑链路的链路标识;
所述根据所述蓝牙数据包所对应的通信链路的链路标识,以及所述蓝牙设备中存储的链路标识与蓝牙模块之间的映射关系,确定所述蓝牙数据包所对应的蓝牙模块,包括:
根据从所述蓝牙数据包中解析到的UUID,以及所述蓝牙设备中存储的UUID与蓝牙模块之间的映射关系,确定所述蓝牙数据包所对应的蓝牙模块。
9.根据权利要求8所述的方法,其特征在于,所述UUID与蓝牙模块之间的映射关系是根据所述第一蓝牙应用和第二蓝牙应用所能够处理的属性数据的UUID确定的。
10.根据权利要求1所述的方法,其特征在于,所述蓝牙数据包为来自所述对象蓝牙设备的广播数据包,所述通信控制标识为所述广播数据包中携带的所述对象蓝牙设备的设备特征信息;
所述根据所述蓝牙数据包所对应的通信链路的链路标识,以及所述蓝牙设备中存储的链路标识与蓝牙模块之间的映射关系,确定所述蓝牙数据包所对应的蓝牙模块,包括:
根据从所述蓝牙数据包中解析到的所述对象蓝牙设备的设备特征信息,确定与所述设备特征信息相匹配的扫描过滤器;
根据所述相匹配的扫描过滤器的过滤器索引,以及所述蓝牙设备中存储的过滤器索引与蓝牙模块之间的映射关系,确定所述蓝牙模块。
11.根据权利要求10所述的方法,其特征在于,所述过滤器索引与蓝牙模块之间的映射关系包括:
第一过滤器索引与所述第一蓝牙模块之间的映射关系,所述第一过滤器索引为所述第一蓝牙模块在发起第一蓝牙扫描时,所述第一蓝牙主机为与所述第一蓝牙扫描相关联的第一扫描过滤器分配的过滤器索引;以及,
第二过滤器索引与所述第二蓝牙模块之间的映射关系,所述第二过滤器索引为所述第二蓝牙模块在发起第二蓝牙扫描时,所述第二蓝牙主机为与所述第二蓝牙扫描相关联的第二扫描过滤器分配的过滤器索引。
12.根据权利要求10所述的方法,其特征在于,所述过滤器索引与蓝牙模块之间的映射关系包括:
位于第一过滤器索引集合中的过滤器索引映射至所述第一蓝牙模块,以及,位于第二过滤器索引集合中的过滤器索引映射至所述第二蓝牙模块;其中,所述第一过滤器索引集合与所述第二过滤器索引集合互不重叠。
13.根据权利要求10所述的方法,其特征在于,所述对象蓝牙设备的设备特征信息包括下述一个或多个:所述对象蓝牙设备的设备名称;所述对象蓝牙设备的厂商信息;所述对象蓝牙设备的设备类型信息;所述对象蓝牙设备支持的服务信息。
14.根据权利要求3~7、10~13任一所述的方法,其特征在于,所述蓝牙设备还包括第三蓝牙模块,所述第三蓝牙模块分别与所述第一蓝牙模块和所述第二蓝牙模块通信连接,所述第三蓝牙模块用于执行蓝牙控制器程序;
所述解析所述蓝牙数据包中携带的通信控制标识,包括:通过所述第三蓝牙模块解析所述蓝牙数据包中携带的通信控制标识;
所述确定所述蓝牙数据包所对应的蓝牙模块,包括:通过所述第三蓝牙模块确定所述蓝牙数据包所对应的蓝牙模块;
所述将所述蓝牙数据包中的数据分发至所述蓝牙数据包所对应的蓝牙模块,包括:通过所述第三蓝牙模块将所述蓝牙数据包中的数据分发至所述蓝牙数据包所对应的蓝牙模块。
15.根据权利要求8或9所述的方法,其特征在于,所述蓝牙设备还包括第三蓝牙模块,所述第三蓝牙模块分别与所述第一蓝牙模块和所述第二蓝牙模块通信连接,所述第三蓝牙模块用于执行蓝牙控制器程序;
所述方法还包括,所述第三蓝牙模块将所述蓝牙数据包发送至所述第二蓝牙模块;并且,
所述解析所述蓝牙数据包中携带的通信控制标识,包括:通过所述第二蓝牙模块解析所述蓝牙数据包中携带的通信控制标识;
所述确定所述蓝牙数据包所对应的蓝牙模块,包括:通过所述第二蓝牙模块确定所述蓝牙数据包所对应的蓝牙模块;
所述将所述蓝牙数据包中的数据分发至所述蓝牙数据包所对应的蓝牙模块,包括:通过所述第二蓝牙模块将所述蓝牙数据包中的数据分发至所述蓝牙数据包所对应的蓝牙模块。
16.根据权利要求15所述的方法,其特征在于,所述第三蓝牙模块将所述蓝牙数据包发送至所述第二蓝牙模块,其中,所述第三蓝牙模块基于接收到来自所述第一蓝牙模块的控制权移交指令,将所述蓝牙数据包发送至所述第二蓝牙模块,其中,所述控制权移交指令用于将对所述第三蓝牙模块的读写控制权从所述第一蓝牙模块移交至所述第二蓝牙模块。
17.根据权利要求2所述的方法,其特征在于,所述第一蓝牙主机、所述第二蓝牙主机为低功耗蓝牙主机;所述第一蓝牙应用、所述第二蓝牙应用为低功耗蓝牙应用;所述蓝牙控制器为低功耗蓝牙控制器。
18.根据权利要求1所述的方法,其特征在于,接收到来自所述对象蓝牙设备的蓝牙数据包,包括:当用于运行所述第一蓝牙模块的处理器处于休眠状态时,接收到所述蓝牙数据包。
19.根据权利要求1所述的方法,其特征在于,所述用于运行所述第一蓝牙模块的处理器为所述蓝牙设备的CPU;和/或,所述用于运行所述第二蓝牙模块的处理器为所述蓝牙设备的协处理器。
20.根据权利要求19所述的方法,其特征在于,所述协处理器为用于处理来自所述蓝牙设备的一个或多个传感器的传感器数据的传感器中枢。
21.一种蓝牙广播方法,应用于蓝牙设备,其特征在于,所述蓝牙设备与对象蓝牙设备进行蓝牙通信;其特征在于,所述蓝牙设备包括分别运行于所述蓝牙设备的多个处理器上的第一蓝牙模块和第二蓝牙模块;所述第一蓝牙模块用于执行第一蓝牙应用程序和第一蓝牙主机程序,所述第二蓝牙模块用于执行第二蓝牙应用程序和第二蓝牙主机程序;
所述蓝牙设备还包括第三蓝牙模块,所述第三蓝牙模块分别与所述第一蓝牙模块和所述第二蓝牙模块通信连接,所述第三蓝牙模块用于执行蓝牙控制器程序;
所述方法包括:
所述第一蓝牙模块指令所述第三蓝牙模块启动第一蓝牙广播,所述第一蓝牙广播的广播句柄为所述第一蓝牙模块在第一句柄集合中为所述第一蓝牙广播分配的广播句柄;
所述第二蓝牙模块指令所述第三蓝牙模块启动第二蓝牙广播,所述第二蓝牙广播的广播句柄为所述第二蓝牙模块在第二句柄集合中为所述第二蓝牙广播分配的广播句柄,其中,所述第一句柄集合和所述第二句柄集合互不重叠。
22.一种蓝牙设备,其特征在于,包括:
存储器,用于存储由所述蓝牙设备的一个或多个处理器执行的指令;
处理器,当所述处理器执行所述存储器中的所述指令时,可使得所述蓝牙设备执行权利要求1~21任一项所述的方法。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,该指令在计算机上执行时可使所述计算机执行权利要求1~21任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011327943.7A CN114554463A (zh) | 2020-11-24 | 2020-11-24 | 蓝牙通信方法、蓝牙广播方法、蓝牙设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011327943.7A CN114554463A (zh) | 2020-11-24 | 2020-11-24 | 蓝牙通信方法、蓝牙广播方法、蓝牙设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114554463A true CN114554463A (zh) | 2022-05-27 |
Family
ID=81659242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011327943.7A Pending CN114554463A (zh) | 2020-11-24 | 2020-11-24 | 蓝牙通信方法、蓝牙广播方法、蓝牙设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114554463A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023246648A1 (zh) * | 2022-06-23 | 2023-12-28 | 华为技术有限公司 | 蓝牙数据的处理方法、终端设备和可读存储介质 |
-
2020
- 2020-11-24 CN CN202011327943.7A patent/CN114554463A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023246648A1 (zh) * | 2022-06-23 | 2023-12-28 | 华为技术有限公司 | 蓝牙数据的处理方法、终端设备和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020192714A1 (zh) | 显示设备控制页面的方法、相关装置及系统 | |
CN113691842B (zh) | 一种跨设备的内容投射方法及电子设备 | |
CN111405681B (zh) | Wi-Fi Aware的建链方法、系统、电子设备和存储介质 | |
CN114079893B (zh) | 蓝牙通信方法、终端设备及计算机可读存储介质 | |
WO2021052204A1 (zh) | 基于通讯录的设备发现方法、音视频通信方法及电子设备 | |
CN112130788A (zh) | 一种内容分享方法及其装置 | |
WO2022052731A1 (zh) | 传输数据的方法和电子设备 | |
WO2021093626A1 (zh) | 一种内存的管理方法及电子设备 | |
US20230262065A1 (en) | Atomic Ability Invoking Method and Terminal Device | |
CN113973398B (zh) | 无线网络连接方法、电子设备及芯片系统 | |
WO2020133467A1 (zh) | 智能家居设备接入网络的方法及相关设备 | |
WO2020134868A1 (zh) | 一种连接建立方法及终端设备 | |
CN113572800B (zh) | 获取应用的下载信息的方法、系统、服务器以及存储介质 | |
CN114554463A (zh) | 蓝牙通信方法、蓝牙广播方法、蓝牙设备以及存储介质 | |
CN115309547B (zh) | 处理异步binder调用的方法和装置 | |
WO2023284555A1 (zh) | 安全调用服务的方法、安全注册服务的方法及装置 | |
CN114500732B (zh) | 一种界面显示的方法和电子设备、存储介质 | |
CN114546820B (zh) | 一种应用程序的调试方法及电子设备 | |
CN116561085A (zh) | 图片分享方法和电子设备 | |
CN115220881A (zh) | 进程管理方法、电子设备、进程管理系统以及存储介质 | |
CN114567871A (zh) | 文件共享的方法、装置、电子设备以及可读存储介质 | |
WO2023016347A1 (zh) | 声纹认证应答方法、系统及电子设备 | |
WO2022267917A1 (zh) | 蓝牙通信方法及系统 | |
WO2023160177A1 (zh) | 测距方法、装置、系统及可读存储介质 | |
WO2023273856A1 (zh) | 一种唤醒方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |