用于蓝牙通信的方法和电子设备转让专利

申请号 : CN202010899012.8

文献号 : CN114124165B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈刚张明锟陈志彬孟庆彬

申请人 : 华为技术有限公司

摘要 :

本申请提供了一种用于蓝牙通信的方法和电子设备。该方法包括:第一设备中的第一操作系统可以通过HCI通道并借助第二操作系统建立第一设备与第二设备之间的第一蓝牙连接,从而为第一设备的第一操作系统与第二设备进行蓝牙通信提供了可能,有助于第一设备的容器与第二设备通信。

权利要求 :

1.一种用于蓝牙通信的方法,所述方法适用于第一设备,所述第一设备包括第一操作系统和第二操作系统,其特征在于,所述方法包括:第一操作系统通过主机控制接口HCI通道向第二操作系统发送第一指令,所述第一指令用于建立所述第一设备与第二设备之间的第一蓝牙连接;

所述第二操作系统根据所述第一指令建立所述第一设备与所述第二设备的所述第一蓝牙连接;

所述第二操作系统通过所述HCI通道向所述第一操作系统发送第二指令,所述第二指令用于指示所述第一蓝牙连接建立成功。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第二操作系统根据所述第一蓝牙连接建立所述第二操作系统与所述第一操作系统之间传输数据的数据通道。

3.根据权利要求2所述的方法,其特征在于,所述第二操作系统根据所述第一蓝牙连接建立所述第二操作系统与所述第一操作系统之间传输数据的数据通道,包括:所述第二操作系统确定所述第一蓝牙连接对应的第一路由标识信息;

所述第二操作系统通过所述HCI通道向所述第一操作系统发送所述第一路由标识信息;

所述第一操作系统确定与所述第一路由标识信息对应的第一端口信息,所述第一端口信息用于标识所述第一操作系统中的端口;

所述第一操作系统通过所述HCI通道向所述第二操作系统发送所述第一端口信息和所述第一路由标识信息;

所述第二操作系统与所述第一操作系统根据所述第一端口信息建立所述第二操作系统与所述第一操作系统之间的所述数据通道。

4.根据权利要求2所述的方法,其特征在于,所述方法还包括:所述第二操作系统接收所述第二设备通过所述第一蓝牙连接发送的第一数据包;

所述第二操作系统根据第一对应关系和所述第一蓝牙连接确定第一路由标识信息,所述第一对应关系用于指示至少一个路由标识信息与至少一个蓝牙连接一一对应,所述至少一个路由标识信息包括所述第一路由标识信息,所述至少一个蓝牙连接包括所述第一蓝牙连接;

所述第二操作系统根据第二对应关系确定所述第一路由标识信息对应的第一端口信息,所述第二对应关系用于指示至少一个路由标识信息与至少一个端口信息一一对应,所述至少一个端口信息包括所述第一端口信息;

所述第二操作系统通过所述第一端口信息对应的所述数据通道向所述第一操作系统发送所述第一数据包。

5.根据权利要求4所述的方法,其特征在于,所述第二操作系统包括蓝牙硬件层、内核层、HCI层,所述第一操作系统包括系统层、应用程序框架层和应用程序层,所述第二操作系统接收所述第二设备通过所述第一蓝牙连接发送的第一数据包,包括:所述第二操作系统依次通过所述蓝牙硬件层、所述内核层和所述HCI层接收所述第二设备通过所述第一蓝牙连接发送的所述第一数据包;

其中,所述第二操作系统通过所述第一端口信息对应的数据通道向所述第一操作系统发送所述第一数据包,包括:所述第二操作系统通过所述HCI层向第一操作系统的所述系统层发送所述第一数据包;

所述第一操作系统的所述系统层接收所述第一数据包之后依次发送到所述第一操作系统的所述应用程序框架层和所述应用程序层。

6.根据权利要求2至5中任一项所述的方法,其特征在于,所述方法还包括:所述第二操作系统接收所述第一操作系统通过所述数据通道发送的第二数据包;

所述第二操作系统根据所述第二对应关系和所述数据通道所对应的第一端口信息确定所述第一端口信息对应的第一路由标识信息;

所述第二操作系统根据所述第一对应关系确定所述第一路由标识信息对应的第一蓝牙连接;

所述第二操作系统通过所述第一蓝牙连接向所述第二设备发送所述第二数据包。

7.根据权利要求6所述的方法,其特征在于,其中,所述第二操作系统包括蓝牙硬件层、内核层、HCI层,所述第一操作系统包括应用程序层、应用程序框架层和系统层,所述第二操作系统接收所述第一操作系统通过所述数据通道发送的第二数据包,包括:所述第一操作系统的第一数据包依次通过所述应用程序层、所述应用程序框架层到达所述系统层;

所述第一操作系统通过所述系统层将所述第一数据包发送到所述第二操作系统的HCI层;

其中,所述第二操作系统通过所述第一蓝牙连接向所述第二设备发送所述第二数据包,包括:所述第二数据包依次通过所述第二操作系统的HCI层、内核层到达所述蓝牙硬件层;

所述第二操作系统通过所述第一蓝牙连接在所述第二操作系统的硬件层向所述第二设备发送所述第二数据包。

8.根据权利要求1至5中任一项所述的方法,其特征在于,所述HCI通道为所述第一操作系统的系统层的第一HCI接口以及第二操作系统的HCI层对应的通道。

9.根据权利要求1至5中的任一项所述的方法,其特征在于,所述第一操作系统运行于所述第二操作系统的容器中。

10.一种电子设备,其特征在于,包括处理器,所述处理器与存储器耦合,所述处理器用于执行所述存储器中存储的计算机程序或指令,以使得所述电子设备实现如权利要求1至9中任一项所述的方法。

11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1至9中任一项所述的方法。

说明书 :

用于蓝牙通信的方法和电子设备

技术领域

[0001] 本申请涉及通信领域,并且更具体地涉及通信领域中的用于蓝牙通信的方法和电子设备。

背景技术

[0002] 两个设备通过蓝牙进行通信时,具体可以通过两个设备上所运行的操作系统进行通信。如果第一设备有两个不同的操作系统,第二设备需要与第一设备中的两个操作系统都进行通信时,可能由于蓝牙硬件的限制,只能与第一设备其中的一个操作系统进行蓝牙通信,第二设备无法与另一个操作系统进行蓝牙通信。例如,当另一个操作系统运行在容器或者虚拟机中时,会导致容器中的操作系统无法与外部的第二设备进行通信,举例来说,第一设备为电脑,第二设备为手机,电脑上运行有 系统,电脑的容器运行有安卓系统,手机为安卓系统,则手机的安卓系统无法与电脑的容器中的安卓系统进行蓝牙通信。

发明内容

[0003] 本申请实施例提供了一种用于蓝牙通信的方法和电子设备,能够使得第一设备的第一操作系统可以与第二设备的操作系统进行蓝牙通信。
[0004] 第一方面,提供了一种用于蓝牙通信的方法,所述方法适用于第一设备,所述第一设备包括第一操作系统和第二操作系统,所述方法包括:第一操作系统通过主机控制接口(host controller interface,HCI)通道向第二操作系统发送第一指令,所述第一指令用于建立所述第一设备与第二设备的第一蓝牙连接;所述第二操作系统根据所述第一指令建立所述第一设备与第二设备的所述第一蓝牙连接;所述第二操作系统通过所述HCI通道向所述第一发送第二指令,所述第二指令用于指示所述第一蓝牙连接建立成功。
[0005] 在上述方案中,第一设备中的第一操作系统可以通过HCI通道并借助第二操作系统建立第一设备与第二设备之间的第一蓝牙连接,从而为第一设备的第一操作系统与第二设备进行蓝牙通信提供了可能,能够实现第一设备的第一操作系统与第二设备之间进行蓝牙通信。
[0006] 其中,第一蓝牙连接用于所述第一操作系统与第二设备进行蓝牙通信。
[0007] 例如,第一指令为第一指令分组。第二指令为第一事件分组。
[0008] 可选地,HCI通道为第一操作系统的第一HCI接口以及所述第二操作系统的HCI层对应的通道。
[0009] 可选地,所述第一操作系统为安卓系统,所述第二操作系统为Linux系统或者Windows系统。
[0010] 可选地,所述第一设备中的容器运行有所述第一操作系统。
[0011] 在一些可能的实现方式中,所述方法还包括:所述第二操作系统根据所述第一蓝牙连接建立所述第二操作系统与所述第一操作系统之间传输数据的数据通道。
[0012] 在一些可能的实现方式中,所述第二操作系统根据所述第一蓝牙连接建立所述第二操作系统与所述第一操作系统之间传输数据的数据通道,包括:所述第二操作系统确定所述第一蓝牙连接对应的第一路由标识信息;所述第二操作系统所述HCI通道向所述第一操作系统发送所述第一路由标识信息;所述第一操作系统确定与所述第一路由标识信息对应的第一端口信息,所述第一端口信息用于标识所述第一操作系统中的端口;所述第一操作系统通过所述HCI通道向所述第二操作系统发送所述第一端口信息和所述第一路由标识信息;
[0013] 所述第二操作系统与所述第一操作系统根据所述第一端口信息建立所述第二操作系统与所述第一操作系统之间的所述数据通道。
[0014] 可选地,第二指令可以包括第一路由标识信息。
[0015] 可选地,第一端口信息用于标识第一操作系统中的第一端口的端口号或者端口号的索引。
[0016] 可选地,第二操作系统保存第一端口信息和第一路由标识信息。
[0017] 可选地,第二操作系统执行的动作可以由第二操作系统的HCI层的HCI管理模块执行。
[0018] 在一些可能的实现方式中,所述方法还包括:所述第二操作系统接收所述第二设备通过所述第一蓝牙连接发送的第一数据包;所述第二操作系统根据第一对应关系和所述第一蓝牙连接确定所述第一路由标识信息,所述第一对应关系用于指示至少一个路由标识信息与至少一个蓝牙连接一一对应,所述至少一个路由标识信息包括所述第一路由标识信息,所述至少一个蓝牙连接包括所述第一蓝牙连接;
[0019] 所述第二操作系统根据第二对应关系确定所述第一路由标识信息对应的所述第一端口信息,所述第二对应关系用于指示至少一个路由标识信息与至少一个端口信息一一对应,所述至少一个端口信息包括所述第一端口信息;
[0020] 所述第二操作系统通过所述第一端口信息对应的所述数据通道向所述第一操作系统发送所述第一数据包。
[0021] 可选地,至少一个端口信息用于标识不同端口的端口号。
[0022] 可选地,不同蓝牙连接对应不同的路由标识信息,第二操作系统可以为不同蓝牙连接生成不同的路由标识信息,不同的蓝牙连接可以是第二操作系统与不同设备之间的蓝牙连接,不同的蓝牙连接对应不同的设备,例如第一蓝牙连接对应第二设备,第二操作系统生成第一蓝牙连接对应的第一路由标识信息,具体包括:第二操作系统可以根据第二设备的设备标识生成第一蓝牙连接对应的第一路由标识信息。
[0023] 在一些可能的实现方式中,所述第二操作系统包括蓝牙硬件层、内核层、HCI层,所述第一操作系统包括系统层、应用程序框架层和应用程序层,所述第二操作系统接收所述第二设备通过所述第一蓝牙连接发送的第一数据包,包括:
[0024] 所述第二操作系统依次通过所述蓝牙硬件层、所述内核层和所述HCI层接收所述第二设备通过所述第一蓝牙连接发送的所述第一数据包;
[0025] 其中,所述第二操作系统通过所述第一端口信息对应的数据通道向所述第一操作系统发送所述第一数据包,包括:
[0026] 所述第二操作系统通过所述HCI层向第一操作系统的所述系统层发送所述第一数据包;
[0027] 所述第一操作系统的所述系统层接收所述第一数据包之后依次发送到所述第一操作系统的所述应用程序框架层和所述应用程序层。
[0028] 在上述方案中,第二操作系统可以依次通过蓝牙硬件层、内核层、依次HCI层接收第二设备发送的第一数据包,第二操作系统将在HCI层接收到的第一数据包发送到第一操作系统的系统层,第一数据包依次到达第一操作系统的系统层、应用程序框架层以及应用层,从而可以实现第二设备向第一操作系统发送数据的过程。
[0029] 在一些可能的实现方式中,所述方法还包括:所述第二操作系统接收所述第一操作系统通过所述数据通道发送的第二数据包;所述第二操作系统根据所述第二对应关系和所述数据通道所对应的第一端口信息确定所述第一端口信息对应的第一路由标识信息;
[0030] 所述第二操作系统根据所述第一对应关系确定所述第一路由标识信息对应的第一蓝牙连接;
[0031] 所述第二操作系统通过所述第一蓝牙连接向所述第二设备发送所述第二数据包。
[0032] 在上述方案中,第二操作系统不仅可以将来自第二设备的第一数据包通过第一端口信息对应的数据通道发送给第一操作系统。第一操作系统也可以通过第一端口信息对应的数据通道向第二操作系统发送第二数据包,第二操作系统再向第二设备发送第二数据包。从而可以实现第一设备中的第一操作系统与第二设备互相传输蓝牙数据的过程。
[0033] 在一些可能的实现方式中,其中,所述第二操作系统包括蓝牙硬件层、内核层、HCI层,所述第一操作系统包括应用程序层、应用程序框架层和系统层,所述第二操作系统接收所述第一操作系统通过所述数据通道发送的第二数据包,包括:
[0034] 所述第一操作系统的第一数据包依次通过所述应用程序层、所述应用程序框架层到达所述系统层;
[0035] 所述第一操作系统通过所述系统层将所述第一数据包发送到所述第二操作系统的HCI层;
[0036] 其中,所述第二操作系统通过所述第一蓝牙连接向所述第二设备发送所述第二数据包,包括:
[0037] 所述第二数据包依次通过所述第二操作系统的HCI层、内核层到达所述蓝牙硬件层;
[0038] 所述第二操作系统通过所述第一蓝牙连接在所述第二操作系统的硬件层向所述第二设备发送所述第二数据包。
[0039] 在上述方案中,第一操作系统可以依次将第二数据包经过应用程序层到应用程序框架层再到系统层,第一操作系统通过系统层向第二操作系统的HCI层发送第二数据包,第二数据包依次经过第二操作系统的内核层到达蓝牙硬件层,第二操作系统将第二数据包在蓝牙硬件层发送给第二设备,第二设备依次在蓝牙硬件层接收到第二数据包,第二数据包依次经过第二设备的内核层、系统层、应用程序框架层到达应用程序层。
[0040] 在一些可能的实现方式中,所述第一操作系统为安卓系统,所述第二操作系统为系统或者 系统。
[0041] 在一些可能的实现方式中,所述第一操作系统运行于所述第二操作系统的容器中。
[0042] 在一些可能的实现方式中,所述第一设备为电脑,所述第二设备为手机。或者所述第一设备为平板,所述第二设备为手机。
[0043] 第二方面,提供了一种用于蓝牙通信的方法,包括:所述方法适用于第一设备,所述第一设备包括第一操作系统和第二操作系统,所述方法包括:第二操作系统接收第二设备通过第一蓝牙连接发送的第一数据包;第二操作系统根据第一对应关系和所述第一蓝牙连接确定所述第一路由标识信息,所述第一对应关系用于指示至少一个路由标识信息与至少一个蓝牙连接一一对应,所述至少一个路由标识信息包括所述第一路由标识信息,所述至少一个蓝牙连接包括所述第一蓝牙连接;第二操作系统根据第二对应关系确定所述第一路由标识信息对应的所述容器的第一端口信息,所述第二对应关系用于指示至少一个路由标识信息与至少一个端口信息一一对应,所述至少一个端口信息包括所述第一端口信息;第二操作系统通过所述第一端口信息对应的数据通道向所述第一操作系统发送所述第一数据包。
[0044] 在上述方案中,第一设备可以作为第一操作系统的宿主机,第一设备可以包括蓝牙硬件,容器没有蓝牙设备,第一设备的第二操作系统可以根据至少一个路由标识信息与至少一个蓝牙连接的第一对应关系确定第一蓝牙连接对应的第一路由标识信息;第二操作系统根据第一路由标识信息以及至少一个路由标识信息与至少一个端口信息的第二对应关系确定第一端口信息,第二操作系统通过第一端口信息对应的数据通道向第一操作系统发送第一数据包。换句话说,第二操作系统可以借助第一蓝牙连接、第一路由标识信息以及第一端口信息三者之间的对应关系,确定来自第二设备的第一数据包的路由方向,从而为第一设备的第一操作系统与第二设备传输数据提供了可能,有助于第一设备的第一操作系统与第二设备通信。
[0045] 可选地,第一设备的容器上运行有所述第一操作系统,第一设备本身运行第二操作系统。
[0046] 可选地,第二操作系统执行的动作可以由第二操作系统的HCI层的HCI管理模块执行。
[0047] 可选地,至少一个端口信息用于标识不同端口的端口号,例如,第一端口信息用于标识所述容器的端口的端口号或者端口号的索引等。
[0048] 可选地,不同蓝牙连接对应不同的路由标识信息,第二操作系统可以为不同蓝牙连接生成不同的路由标识信息,不同的蓝牙连接可以是第二操作系统与不同设备之间的蓝牙连接,不同的蓝牙连接对应不同的设备,例如第一蓝牙连接对应第二设备,第二操作系统生成第一蓝牙连接对应的第一路由标识信息,具体包括:第二操作系统可以根据第二设备的设备标识生成第一蓝牙连接对应的第一路由标识信息。
[0049] 在一些可能的实现方式中,所述方法还包括:第二操作系统接收所述第一操作系统通过所述数据通道发送的第二数据包;第二操作系统根据所述第二对应关系和所述数据通道所对应的第一端口信息确定所述第一端口信息对应的第一路由标识信息;第二操作系统根据所述第一对应关系确定所述第一路由标识信息对应的第一蓝牙连接;第二操作系统通过所述第一蓝牙连接向所述第二设备发送所述第二数据包。
[0050] 在上述方案中,第二操作系统不仅可以将来自第二设备的第一数据包通过第一端口信息对应的数据通道发送给第一设备的第一操作系统。第一操作系统也可以通过第一端口信息对应的数据通道向第二操作系统发送第二数据包,第二操作系统再向第二设备发送第二数据包。从而可以实现第一设备中的第一操作系统与第二设备互相传输数据的过程。
[0051] 在一些可能的实现方式中,在所述接收第二设备通过第一蓝牙连接发送的第一数据包之前,所述方法还包括:第二操作系统通过HCI通道接收所述第一操作系统发送的第一指令,所述第一指令用于建立所述第一操作系统与第二设备的第一蓝牙连接;第二操作系统根据所述第一指令第一操作系统与第二设备之间的第一蓝牙连接;第二操作系统根据所述第一蓝牙连接生成所述第一路由标识信息。
[0052] 在上述方案中,第二操作系统利用触发建立第一蓝牙连接的第一指令建立第一操作系统与第二设备的第一蓝牙连接,第二操作系统可以利用第一蓝牙连接的标识生成第一路由标识信息,从而可以将第一蓝牙连接与第一路由标识信息绑定,以便路由数据。
[0053] 可选地,第二操作系统可以通过第一蓝牙连接发送的数据包包括的Hand ID确定第一路由标识信息。
[0054] 可选地,第二操作系统根据所述第一指令与第二设备建立所述第一蓝牙连接,包括:第二操作系统根据第二操作系统中的蓝牙硬件与第二设备建立第一蓝牙连接。
[0055] 可选地,通过HCI通道是第一设备上的第一操作系统加载主机驱动生成的。例如主机驱动为Native,Native包括BT so文件,第一操作系统可以加载BT so生成HCI通道。HCI通道是用于与第二操作系统的HCI层进行同行的专用通道。HCI通道在第一操作系统侧可以为第一HCI,第一HCI可以预置在第一设备的第一操作系统中的也可以是实时加载驱动程序生成,本申请不予限制。
[0056] 在一些可能的实现方式中,所述方法还包括:第二操作系统通过HCI通道向所述容器的发送所述第一路由标识信息;所述第一操作系统确定与所述第一路由标识信息对应的第一端口信息,所述第一端口信息用于标识所述第一操作系统中的端口;所述第一操作系统通过所述HCI通道向所述第二操作系统发送所述第一端口信息和所述第一路由标识信息;所述第二操作系统与所述第一操作系统根据所述第一端口信息建立所述第二操作系统与所述第一操作系统之间的所述数据通道。
[0057] 可选地,第二操作系统可以保存第一路由标识信息以及第一端口信息之间的对应关系。
[0058] 在一些可能的实现方式中,所述方法还包括:第二操作系统通过HCI通道接收第一操作系统发送的第三指令,所述第三指令用于指示数据通道建立成功。这样,第二操作系统可以基于第三指令从第二设备接收第一数据包,或者基于第三指令向第一操作系统发送第一数据包。
[0059] 在一些可能的实现方式中,所述第一操作系统为安卓系统,所述第二设备的系统为安卓系统。这样,可以实现第一设备中系统的安卓系统与第二设备的安卓系统进行蓝牙通信。
[0060] 在一些可能的实现方式中,所述方法还包括:第二操作系统可以解析来自第二设备的用于建立蓝牙指令,若指令是发送给第一操作系统的,则将指令通过HCI通道发送给第一操作系统,若指令不是发送给第一操作系统的,则将指令丢弃或者单独处理。
[0061] 在一些可能的实现方式中,所述方法还包括:第二操作系统可以解析通过HCI通道传输的来自第一操作系统指令,若指令是发送给第二设备的,则将指令发送给第二设备,若指令不是发送给第二设备,则将指令丢弃或者单独处理。
[0062] 第三方面,提供了一种用于蓝牙通信的方法,所述方法适用于第一设备,第一设备包括第一操作系统和第二操作系统,所述方法包括:第二操作系统接收所述第一操作系统通过所述数据通道发送的第二数据包;第二操作系统根据所述第二对应关系和所述数据通道所对应的第一端口信息确定所述第一端口信息对应的第一路由标识信息,所述第二对应关系用于指示至少一个路由标识信息与至少一个端口信息一一对应,所述至少一个路由标识信息包括所述第一路由标识信息,所述至少一个端口信息包括所述第一端口信息;第二操作系统根据所述第一对应关系确定所述第一路由标识信息对应的第一蓝牙连接,所述第一对应关系用于指示至少一个路由标识信息与至少一个蓝牙连接一一对应,所述至少一个蓝牙连接包括所述第一蓝牙连接;第二操作系统通过所述第一蓝牙连接向所述第二设备发送所述第二数据包。
[0063] 可选地,第一设备的容器上运行有第一操作系统。
[0064] 可选地,第二操作系统执行的动作可以由第二操作系统的HCI层的HCI管理模块执行。
[0065] 在一些可能的实现方式中,在所述第二操作系统接收所述容器通过所述数据通道发送的第二数据包之前,所述方法还包括:第二操作系统接收所述第一操作系统通过HCI通道发送的第一指令,所述第一指令用于建立所述第一设备与第二设备的第一蓝牙连接;第二操作系统根据所述第一指令与第二设备建立所述第一蓝牙连接;第二操作系统根据所述第一蓝牙连接生成所述第一路由标识信息。
[0066] 在一些可能的实现方式中,所述方法还包括:第二操作系统通过HCI通道向所述第一操作系统发送所述第一路由标识信息;
[0067] 第二操作系统接收所述第一操作系统通过所述HCI通道发送的所述第一路由标识信息以及与所述第一路由标识信息对应的所述第一操作系统中建立的端口的所述第一端口信息;第二操作系统根据所述第一端口信息建立所述第二操作系统与所述第一操作系统之间传输数据的数据通道。
[0068] 在一些可能的实现方式中,所述第一操作系统为安卓系统,所述第二操作系统为系统或者 系统。
[0069] 第四方面,提供一种用于蓝牙通信的装置,所述装置用于执行上述各方面或各方面的任一可能的实现方式中的方法。具体地,所述装置可以包括用于执行各方面或各方面的任一可能的实现方式中的方法的模块。
[0070] 第五方面,提供一种用于蓝牙通信的装置,所述装置包括处理器,处理器与存储器耦合,存储器用于存储计算机程序或指令,处理器用于执行存储器存储的计算机程序或指令,使得上述各方面中的方法被执行。
[0071] 例如,处理器用于执行存储器存储的计算机程序或指令,使得该装置执行各方面中的方法。
[0072] 第六方面,提供一种计算机可读存储介质,其上存储有用于实现各方面中的方法的计算机程序(也可称为指令或代码)。
[0073] 例如,该计算机程序被计算机执行时,使得该计算机可以执行各方面中的方法。
[0074] 第七方面,本申请提供一种芯片,包括处理器。处理器用于读取并执行存储器中存储的计算机程序,以执行各方面及其任意可能的实现方式中的方法。
[0075] 可选地,所述芯片还包括存储器,存储器与处理器通过电路或电线与存储器连接。
[0076] 进一步可选地,所述芯片还包括通信接口。
[0077] 第八方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机程序(也可称为指令或代码),所述计算机程序被计算机执行时使得所述计算机实现各方面中的方法。

附图说明

[0078] 图1是本申请实施例提供的蓝牙搜索界面示意图。
[0079] 图2是本申请实施例提供的应用场景示意图。
[0080] 图3是本申请实施例提供的电子设备的架构示意图。
[0081] 图4是本申请实施例提供的电子设备的软件接口框图。
[0082] 图5是本申请实施例提供的系统架构示意图。
[0083] 图6是本申请实施例提供的用于蓝牙通信的方法示意图。
[0084] 图7是本申请实施例提供的指令分组的格式示意图。
[0085] 图8是本申请实施例提供的另一蓝牙搜索界面示意图。
[0086] 图9是本申请实施例提供的又一蓝牙搜索界面示意图。
[0087] 图10是本申请实施例提供的来自第二设备的数据包的格式。
[0088] 图11是本申请实施例提供的事件分组的格式示意图。

具体实施方式

[0089] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
[0090] 第一设备与第二设备通过蓝牙进行通信时,具体可以通过两个设备上所运行的操作系统进行通信。如果第一设备运行有第一操作系统和第二操作系统,可能由于蓝牙硬件的限制,第二设备只能与第一设备其中的一个操作系统进行蓝牙通信,第二设备无法与另一个操作系统进行蓝牙通信。例如,第一操作系统是第一设备中容器运行的操作系统,第二操作系统是第一设备本身的系统,例如,第一操作系统为安卓系统,第二操作系统为系统。第二设备需要与第一设备中的容器上的第一操作系统进行通信时,由于容器没有蓝牙硬件且容器中的第一操作系统处于封闭的运行环境,则会导致第二设备无法与第一设备中的容器进行蓝牙通信。
[0091] 容器可以是(Linux container),容器中的资源能够与第一设备隔绝,此外容器也不需要模拟第一设备的硬件设备和内核,容器的性能比虚拟机的性能好。当然,本申请实施例中的容器可以替换成虚拟机。
[0092] 例如,第一设备中的容器与第二设备可以通过操作界面触发通信或者碰一碰等触发通信,若通过界面触发通信,则如图1所示第二设备的蓝牙搜索界面的可用设备列表中没有容器的标识1,只有第一设备HUAWEI P30,这样导致第二设备不能发现容器,这样会导致第一设备的容器与第二设备之间通信异常。
[0093] 图2是本申请实施例提供的应用场景示意图。如图2所示,第一设备上的容器可以通过第一设备上的蓝牙设备与第二设备的蓝牙设备进行通信,从而可以实现第一设备的容器与第二设备的通信。可选地,图2中的容器也可以替换成虚拟机。
[0094] 图2所示第一设备和第二设备可以为如图3所示的电子设备300。如图3所示,电子设备300可以包括处理器310、存储器320、通信模块330、显示屏340等。
[0095] 其中,处理器310可以包括一个或多个处理单元,存储器320用于存储程序代码和数据。在本申请实施例中,处理器310可执行存储器320存储的计算机执行指令,用于对电子设备300的动作进行控制管理。
[0096] 通信模块330可以用于电子设备300的各个内部模块之间的通信、或者电子设备300和其他外部电子设备之间的通信等。示例性的,如果电子设备300通过有线连接的方式和其他电子设备通信,通信模块330可以包括接口等,例如USB接口,USB接口可以是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口可以用于连接充电器为电子设备300充电,也可以用于电子设备300与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
[0097] 或者,通信模块330可以包括音频器件、射频电路、蓝牙设备331、无线保真(wireless fidelity,Wi‑Fi)芯片、近距离无线通讯技术(near‑field communication,NFC)模块等,可以通过多种不同的方式实现电子设备300与其他电子设备之间的交互。其中,蓝牙设备331可以是图2中的第一设备的蓝牙设备或者第二设备的蓝牙设备。
[0098] 显示屏340用于显示图像、视频等。可选地,电子设备300还可以包括外设设备350,例如鼠标、键盘、扬声器、麦克风等。
[0099] 应理解,除了图3中列举的各种部件或者模块之外,本申请实施例对电子设备300的结构不做具体限定。在本申请另一些实施例中,电子设备300还可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0100] 电子设备300的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。
[0101] 第一设备可以为电子设备300,例如,第一设备中的容器和第二设备可以为第一操作系统,如第一操作系统为Android系统,图4示出了本申请实施例以分层架构的Android系统为例,第一设备中的容器具有类似第一设备的功能,容器可以利用第一设备的图3所示的模块虚拟出特定的功能。示例性说明第一设备中的容器和第二设备的软件结构。
[0102] 图4是本申请实施例提供的一例第二设备或者第一设备的容器中的第一操作系统的软件结构框图。软件结构框图将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,可以将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,系统层,以及内核层。
[0103] 应用程序层可以包括一系列应用程序包。如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
[0104] 应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
[0105] 如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
[0106] 窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
[0107] 内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
[0108] 视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
[0109] 电话管理器用于提供电子设备300的通信功能。例如通话状态的管理(包括接通,挂断等)。
[0110] 资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
[0111] 通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
[0112] 系统层,负责安卓系统的调度和管理。系统层包括Native,Native包括蓝牙(bluetooth,BT)so文件,BT so也称为BT vendor so,电子设备300可以加载BT vendor so从而可以生成图5中的系统库与HCI管理模块之间的通信的第一HCI。
[0113] 系统层还可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
[0114] 表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
[0115] 媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
[0116] 三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
[0117] 2D图形引擎是2D绘图的绘图引擎。
[0118] 内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
[0119] 需要说明的是,在本申请实施例中,第一设备包括第一操作系统和第二操作系统,第一操作系统与第二操作系统之间可以通信,两个操作系统之间的通信可以理解为两个操作系统中对应的模块通信。当然两个设备之间的通信也可以理解为两个设备的之间的操作系统进行通信。下面的实施例中以容器运行的第一操作系统与第二操作系统中的HCI管理模块通信为例描述,但是不应该造成对本申请实施例的任何限制,容器与HCI管理模块的通信可以理解为第一操作系统与第二操作系统之间的通信。
[0120] 为了便于理解,本申请以下实施例将以具有图3和图4所示结构的电子设备为例,结合附图和应用场景,对本申请实施例提供的用于蓝牙通信的方法进行具体阐述。
[0121] 在本申请实施例中,为了能让第一设备中的容器与第二设备进行蓝牙通信,如图5所示示出了本申请实施例提供的架构示意图。图5中第一设备的容器运行的第一操作系统,第一设备本身运行第二操作系统,第二设备运行第一操作系统。可以利用蓝牙系统中的HCI管理模块传输指令,第一设备也称为容器的宿主机(host),容器称为客户机(guest)。第一设备中的容器可以与第二设备具有相同的第一操作系统,例如都为 系统。图5所示的HCI管理模块和容器可以运行在图3所示的处理器310中。图3所示的处理器310可以加载容器的系统层的驱动程序生成第一HCI,第一HCI接口与HCI管理模块之间的通道为HCI通道。图3所示的通信模块330可以包括图5所示的第一HCI。具体地,下面结合图6对本申请实施例提供的用于蓝牙传输的方法600进行具体阐述。
[0122] 在执行方法600之前,第一设备中的容器可以加载系统层的驱动程序,例如该驱动程序为BT so,加载BT so可以生成第一HCI,第一HCI也称为HCI驱动层用户空间关键接口,该第一HCI可以需要进行自定义修改,该第一HCI与第一设备的蓝牙系统的HCI层的HCI管理模块之间的通道可以称为HCI通道,HCI通道用于传输建立蓝牙连接的指令,换句话说,如图6所示HCI通道用于与蓝牙系统的HCI层进行通信,例如容器可以通过HCI通道与HCI管理模块传输指令。
[0123] S601,第二设备发送搜索蓝牙信号的指令。例如,第二设备发送搜索蓝牙信号的指令可以理解为第二设备的第一操作系统发送搜索蓝牙信号的指令。
[0124] 具体地,第二设备可以通过第一操作系统的应用程序(application)层向应用程序框架层发送搜索蓝牙信号的指令,第二设备调用第一操作系统的应用程序框架层与搜索蓝牙信号的指令相关的一些预定义的函数,利用第一操作系统的系统层和内核层驱动蓝牙硬件设备等待与第一设备中的容器建立蓝牙通信。
[0125] 可以理解的是,用户可以基于第二设备的某一应用触发发送搜索蓝牙信号的指令,例如,手机用户触发将作为第二设备的手机中的图片传送给第一设备的容器,则手机用户可以打开第二设备的手机的蓝牙,手机搜索可配对的设备。或者第二设备可以与第一设备碰一碰会触发发送搜索蓝牙信号的指令。
[0126] S602,第一设备的容器发送搜索蓝牙信号的指令。
[0127] 具体地,第一设备的容器通过第一操作系统的应用程序层向应用程序框架层发送搜索蓝牙信号的指令。第一设备调用容器的第一操作系统的应用程序框架层与搜索蓝牙信号的指令相关的一些预定义的函数,并将搜索蓝牙的指令发送到系统层。
[0128] 可以理解的是,S602中用户可以基于容器中的某一应用触发容器发送搜索蓝牙信号的指令,例如,第一设备可以是电脑,用户可以触发电脑中的容器发送搜索蓝牙信号的控制指令,容器搜索可配对的设备。或者第一设备可以与第二设备碰一碰会触发第一设备中的容器通过第一操作系统发送搜索蓝牙信号的指令。
[0129] 需要说明的是,S601与S602之间的顺序并不限定,S601可以在S602之前或者之后或者同时进行,本申请不予限制。
[0130] S603,第一设备的容器在系统层接收到搜索蓝牙信号的指令之后,通过在系统层的第一HCI与HCI管理模块之间的HCI通道发送第一指令,该第一指令用于建立第一设备与第二设备之间的第一蓝牙连接。例如,第一指令用于请求建立蓝牙连接。
[0131] 本申请实施例中,第一设备与第二设备之间的第一蓝牙连接也称为第一设备中的第一操作系统与第二设备之间的蓝牙连接或者称为第一设备的容器与第二设备之间的蓝牙连接。
[0132] 可选地,第一指令可以为蓝牙协议HCI层的指令,也称为第一指令分组,第一指令分组的格式如图7所示。图7的操作码(OpCode)、操作码组段(opcode group field,OGF)、操作指令段(opcode command field,OCF)等各个字段的定义参见HCI协议的定义。例如第一指令中的OGF为0x37,OCF为0x200用于指示该第一指令用于请求建立蓝牙连接。
[0133] 可选地,在S603之后,S604之前,所述方法还包括:HCI管理模块可以解析从通过HCI通道接收到的任一指令,如解析的第一指令用于请求建立蓝牙连接,则执行S604;若HCI管理模块解析的一个指令不是用于请求建立蓝牙连接,也不是用于进行蓝牙配对的,而是用于修改第一设备的蓝牙系统的名称的,则HCI管理模块可以丢弃或者单独处理。
[0134] 需要说明的是,第一HCI与HCI管理模块之间的HCI通道可以是双向通道,即容器可以通过HCI通道向HCI管理模块发送的指令称为指令分组,容器通过HCI通道向HCI管理模块发送的指令称为事件分组。
[0135] S604,第一设备的HCI管理模块接收到第一指令之后,根据第一指令建立第一设备与第二设备之间的第一蓝牙连接。
[0136] 需要说明的是,第一设备中的容器能够通过HCI通道传送第一指令,这样,第一设备中的容器可以借助第一设备的蓝牙设备可以与第二设备互相发现,从而可以使得第二设备能够发现第一设备中的容器,容器也能发现第二设备。例如,如果第一设备中的容器与第二设备可以通过操作界面触发蓝牙搜索,如图8所示,若第二设备为手机,第一设备为电脑,此时第二设备蓝牙的界面的可用设备中能搜索到容器的标识1,图8中的第二设备为HUAWEI P40。同样的,如图9所示,此时第一设备中的容器的蓝牙界面的可用设备中也能搜索到第二设备HUAWEI P40。
[0137] 可选地,第一设备的HCI管理模块可以过滤来自与容器的HCI通道的指令,若指令是用于建立蓝牙连接的,则根据HCI管理模块根据指令加载内核层的驱动调用蓝牙硬件与第二设备的蓝牙硬件进行建立第一蓝牙连接。若指令不是用于建立蓝牙连接的,则将指令丢弃或者单独处理。例如,若指令是用于修改第一设备的蓝牙系统的名称的,则可以将控制指令丢弃。如图7中的指令的OpCode为0x0013表示该指令用于修改第一设备蓝牙系统的名称,则过滤不做处理。又例如,来自HCI通道的指令指示容器的系统异常,则过滤不作处理。
[0138] 可选地,第一设备的HCI管理模块解析来自第二设备的用于建立蓝牙指令,若指令是发送到容器的与HCI管理模块之间的HCI通道的,则将指令通过HCI通道发送给容器的第一HCI,若指令不是发送给容器的,则将指令丢弃或者单独处理。
[0139] 需要说明的是,用于建立蓝牙的指令传递到不同的层,可以有不同的格式,本申请实施例对此不作限制。
[0140] 需要说明的是,第一蓝牙连接可以理解为第二设备与第一设备中的容器的蓝牙连接,也可以理解为第二设备与第一设备之间的蓝牙连接,第一设备中的容器能够借助第一蓝牙连接与第二设备进行蓝牙通信。
[0141] 具体地,第一设备的HCI管理模块与第二设备建立第一蓝牙连接的具体流程参见现有技术的流程,本申请不进行详细描述。
[0142] S605,第一设备的HCI管理模块与第二设备建立第一蓝牙连接成功之后,HCI管理模块通过HCI通道向第一HCI发送第二指令,第二指令用于指示第一蓝牙连接建立成功。
[0143] S606,第一设备的HCI管理模块与第二设备建立第一蓝牙连接成功之后,HCI管理模块生成第一蓝牙连接对应的第一路由标识信息。
[0144] 换句话说,第一设备的HCI管理模块与第二设备建立第一蓝牙连接之后,可以为建立好的第一蓝牙连接生成第一路由标识信息,这样,通过第一设备的HCI管理模块与第二设备之间的第一蓝牙连接传输的数据需要路由到第一路由标识信息对应的第一端口信息。
[0145] 可选地,第一设备的HCI管理模块可以根据预设规则生成第一蓝牙连接对应的第一路由标识信息。例如,第一设备的HCI管理模块可以根据第一蓝牙连接的标识生成对应的第一路由标识信息,不同的蓝牙连接对应不同的设备,第一设备的HCI管理模块可以根据第二设备标识生成第一蓝牙连接对应的第一路由标识信息。又例如,第一设备的HCI管理模块可以根据来自第一蓝牙连接的任一一个数据包的包头的标识生成第一路由标识信息,如图10所示,示出了第一蓝牙连接的数据包的格式,第一路由标识信息可以根据数据包的路由标识生成的,路由标识可以是(Handle ID)生成,可以取Handle ID的前10位或者前12位作为第一路由标识信息或者可以根据Handle ID按照特定的规则映射生成第一路由标识信息。
[0146] 需要说明的是,第一设备上的HCI管理模块可以与多个设备(如第二设备)建立一个或多个蓝牙连接,第一设备上的HCI管理模块可以为一个或多个不同的蓝牙连接生成一个或多个不同的路由标识信息,这样,第一设备可以保存一个或多个路由标识信息与一个或多个蓝牙连接对之间的第一对应关系。为了避免赘述,方法600中仅以第一蓝牙连接与第一路由标识信息为例,其他的蓝牙连接与其他的路由标识信息的对应关系参见第一蓝牙连接与第一路由标识信息的对应关系。
[0147] S607,第一设备的HCI管理模块通过HCI通道向容器发送第一路由标识信息。
[0148] 例如,HCI管理模块可以通过HCI通道向容器发送第一事件分组,第一事件分组包括第一路由标识信息,如图11所示。第一事件分组的各个字段的含义参见HCI协议中的定义,第一路由标识信息可以为事件分组中的事件参数1、事件参数2、……、事件参数N中的任何一个事件参数包括第一路由标识信息。
[0149] 可选地,第一设备的HCI管理模块可以通过一个指令同时指示第一蓝牙连接建立成功也可以携带第一路由标识信息,此时S605中的第二指令可以为S607中的第一事件分组。当然S605中的第二指令和S607的第一事件分组可以是两个不同的指令。
[0150] S608,第一设备的容器根据S607中的第一路由标识信息建立容器侧的用于蓝牙传输的端口对应的端口号。
[0151] 换句话说,第一设备的容器可以建立用于蓝牙传输的端口的端口号,并且端口号与第一路由标识信息对应。
[0152] S609,第一设备的容器通过HCI通道向第一设备的HCI管理模块发送第一端口信息和第一路由标识信息,所述第一端口信息用于标识端口号。可选地,在S609中,第一设备的容器通过HCI通道向第一设备的HCI管理模块发送第二指令分组,第二指令分组用于请求建立数据通道,第二指令分组还包括第一端口信息和第一路由标识信息。
[0153] 例如,第一设备的容器通过HCI通道向第一设备的HCI管理模块发送第二指令分组,第二指令分组的格式如图7所示。例如第二指令分组中的OGF为0x37,OCF为0x201用于指示该第二指令分组用于请求建立数据通道。第二指令分组中的参数0、参数1、……、参数N中的一个或两个参数可以包括第一端口信息与第一路由标识信息,若两个参数分别包括第一端口信息与第一路由标识信息,则这两个参数存在对应关系。
[0154] 可以理解的是,用于请求建立数据通道的指令分组和包括第一端口信息和第一路由标识信息的指令分组可以是不同的指令分组或者同一个指令分组(第二指令分组),本申请实施例不予限制。
[0155] S610,第一设备的HCI管理模块保存S609中的第一端口信息与第一路由标识信息之间的对应关系,并向通过HCI通道向容器发送确认信息,确认信息用于指示对S609的确认。
[0156] 例如,第二事件分组包括确认信息,第二事件分组可以为S609中第二指令分组中的确认事件分组,第二事件分组可以指示第一设备的HCI管理模块接收到了第二指令分组。
[0157] 需要说明的是,第一设备上可以存在一个或多个容器,不同的容器对应不同的HCI接口,第一设备的HCI管理模块与不同的容器的不同HCI接口对应不同的HCI通道,这样,第一设备的HCI管理模块可以保存一个或多个路由标识信息与一个或多个端口信息之间的第二对应关系。为了避免赘述,方法600中仅以第一端口信息与第一路由标识信息为例,其他的端口信息与其他的路由标识信息的对应关系参见第一端口信息与第一路由标识信息的对应关系。
[0158] S611,第一设备的HCI管理模块根据第一端口信息与容器建立数据通道。
[0159] 换句话说,可以用第一端口信息标识第一设备的HCI管理模块与容器建立的数据通道。
[0160] 在S611中,也可以理解为第一设备的第二操作系统与第一操作系统建立数据通道。
[0161] S612,第一设备的容器通过HCI通道向HCI管理模块发送指示数据通道建立成功的指示信息。
[0162] 例如,第三指令分组包括指示信息,HCI管理模块接收第一设备的容器的通过HCI通道发送的第三指令分组,第三指令分组用于指示数据通道建立成功。
[0163] 具体地,S612中,第一设备的容器在S608中建立了用于蓝牙传输的端口的端口号,等待HCI管理模块与端口号对应的端口建立数据通道,当数据通道建立之后,第一设备的容器通过HCI通道向HCI管理模块发送第三指令分组,用于指示数据通道建立成功,这样,可以避免HCI管理模块不停的建立数据通道所带来的开销。
[0164] 可选地,第三指令分组的格式如图7所示。例如第三指令分组中的OGF为0x37,OCF为0x202用于指示该第三指令分组用于指示数据通道建立成功。
[0165] 可选地,S612可以触发HCI管理模块执行S613或者S616。换句话说,HCI管理模块可以在确定数据通道建立成功之后,再接收来自第二设备的第一数据包,或者HCI管理模块在确定数据通道建立成功之后,再确定向第一设备的容器的第一HCI发送第一数据包。
[0166] 可以理解的是,S612是可选步骤。HCI管理模块可以检测数据通道是否成功,或者尝试向容器的第一HCI发送探测数据包确定数据通道是否成功,本申请实施例不予限制。
[0167] 在第一设备的容器与第二设备进行蓝牙通信的过程中,第一设备的容器可以通过S611建立的数据通道向第二设备发送蓝牙数据,第二设备也可以通过S610中建立的数据通道向第一设备的容器发送蓝牙数据。例如,若第二设备通过S611中建立的数据通道向第一设备中的容器发送数据,则执行S613‑S616;若第一设备中的容器通过S611建立的数据通道向第二设备发送数据,则执行S617‑S620。若第二设备通过S611中建立的数据通道向第一设备中的容器发送数据,且第一设备中的容器通过S611建立的数据通道向第二设备发送数据,则执行S613‑S616和S617‑S620,并且S613‑S616中任一一个步骤与S617‑S620中任何一个步骤的顺序没有任何限制,S613‑S616中任一一个步骤可以在S617‑S620中任何一个步骤之前或之后或者同时进行。
[0168] S613,第二设备通过S604建立的第一蓝牙连接向第一设备的HCI管理模块发送第一数据包,第一设备的HCI管理模块接收第二设备通过S604建立的第一蓝牙连接发送的第一数据包。
[0169] 具体地,第一数据包中的数据是从第二设备的应用程序层开始依次应用程序框架层、系统层、内核层和蓝牙硬件层进行不同的封装能够到达第一设备的蓝牙系统的蓝牙硬件层,第一设备的蓝牙系统的蓝牙硬件层接收到第一数据包之后依次将第一数据包发送到内核层,再到HCI管理模块。第一数据包在不同的层可以有不同的格式,本申请不予限制。
[0170] 可选地,第一数据包可以是某一应用的数据。
[0171] S614,第一设备的HCI管理模块根据第一蓝牙连接和第一对应关系确定第一蓝牙连接对应的第一路由标识信息。
[0172] 由于S606中第一设备的HCI管理模块是根据第一蓝牙连接生成的第一路由标识信息,因此当第一设备的HCI管理模块通过第一蓝牙连接接收到第一数据包时,HCI管理模块需要在第一对应关系中确定第一蓝牙连接对应的第一路由标识信息,则该第一数据包需要根据确定的第一路由标识信息进行路由。
[0173] S615,第一设备的HCI管理模块根据S610中保存的第一路由标识信息和第一端口信息确定来自S612的第一数据包需要发送到第一路由标识信息对应的第一端口信息所标识的数据通道,该数据通道即为S611中建立的数据通道。
[0174] 在S615中,第一设备的HCI管理模块可以在保存的一个或多个路由标识信息与一个或多个端口之间的第二对应关系中确定第一路由标识信息对应的第一端口信息,从而可以将来自第二设备的第一数据包发送到第一端口信息所标识的数据通道。
[0175] S617,第一设备的HCI管理模块通过S615中确定的数据通道向容器的系统层发送来自第二设备的第一数据包。
[0176] 需要说明的是,S613的第一数据包可以是第二设备在S604中的第一蓝牙连接建立成功之后与S611中的建立数据通道之前发送给第一设备的HCI管理模块。若第一数据包是HCI管理模块在与容器的第一HCI建立S611的数据通道之前可以接收到,HCI管理模块可以先将接收到数据包进行缓存不发送,在S617中再通过数据通道发送,本申请实施例不予限制。
[0177] 可以理解的是,第一设备的HCI管理模块在S617中可以将来自S613的第一数据包通过数据通道透传给容器,或者也可以修改第一数据包的包头,修改后的第一数据包的包头可以携带第一设备的HCI管理模块的标识,此时,此时S617中的第一数据包的包头与S613中的第一数据包的包头可以不同,数据部分相同。
[0178] 其中,容器的系统层接收来自HCI管理模块的第一数据包之后,将第一数据包传递到应用程序框架层,再传递到容器的应用程序层。
[0179] 可选地,容器接收到第一数据包之后,在容器的应用程序层显示数据接收成功;第二设备将第一数据包发送给第一设备之后,将发送的结果从下层到上层返回给第二设备的应用程序层,例如,在第二设备的应用程序层显示数据发送成功。
[0180] S617,第一设备通过S611建立的数据通道向第一设备的HCI管理模块发送第二数据包,第一设备的HCI管理模块通过S611建立的数据通道接收第一HCI发送的第二数据包。
[0181] 具体地,第二数据包从第一设备的应用程序层依次通过应用程序框架层和系统层,然后通过容器的系统层发送到HCI管理模块,第二数据包在不同的层可以有不同的封装格式,本申请不予限制。
[0182] 可选地,第二数据包可以是某一应用的数据。
[0183] S618,第一设备的HCI管理模块根据接收第二数据包的数据通道的第一端口信息确定第一路由标识信息。
[0184] 在S618中,第一设备的HCI管理模块可以在保存的一个或多个路由标识信息与一个或多个端口信息之间的第二对应关系中确定第一端口信息对应的第一路由标识信息。
[0185] S619,第一设备的HCI管理模块根据第一路由标识信息确定第一路由标识信息对应的第一蓝牙连接。
[0186] 在S619中,第一设备的HCI管理模块可以在保存的一个或多个路由标识信息与一个或多个蓝牙连接之间的对应关系中确定第一路由标识信息对应的第一蓝牙连接,从而HCI管理模可以确定将来自第一HCI的第二数据包发送到第一蓝牙连接。
[0187] S620,第一设备的HCI管理模块将第二数据包通过第一蓝牙连接发送到第二设备。
[0188] 可以理解的是,第一设备的HCI管理模块在S620中可以将来自S617的第二数据包透传给第二设备,或者也可以修改第二数据包的包头,修改后的第二数据包的包头可以携带第一设备的HCI管理模块的标识,此时,S617中的第二数据包的包头与S620中的第二数据包的包头可以不同,数据部分相同。
[0189] 具体地,第二数据包通过蓝牙系统的内核层到达蓝牙硬件层,从第一设备的蓝牙硬件层传递到第二设备的蓝牙硬件层,第二设备的蓝牙硬件层接收到第二数据包之后依次通道内核层、系统层、应用程序框架层到达应用程序层,第二数据包在不同的层可以有不同的封装格式,本申请不予限制。
[0190] 可选地,第二设备接收到第二数据包之后,在第二设备的应用程序层显示数据接收成功;HCI管理模块将第二数据包发送给第二设备之后,将发送的结果从下层到上层返回给第一设备的应用程序层,例如,在第一设备的应用程序层显示数据发送成功。
[0191] 需要说明的是,本申请实施例,第一设备的容器的第一HCI与HCI管理模块之间传输的指令可以分为事件分组和指令分组,HCI管理模块发送给第一HCI的控制指令称为事件分组,第一HCI发送给HCI管理模块的控制指令称为指令分组。换句话说,事件分组与指令分组的区别在于控制指令的流向不同,以第一设备的容器为参考,指令分组指的是发出去的控制指令,事件分组指的是接收到的控制指令。
[0192] 也需要说明的是,方法600中,S601‑S612为预先配置的过程,S613‑S620为传输数据包的过程,第一设备的容器与第二设备可以基于一次配置传输多次数据包。换句话说,S601‑S612可以执行一次,S613‑S620可以执行多次。
[0193] 可以理解的是,方法600中可以包括更多的步骤或者更少的步骤,方法600的只是示例性的描述。例如,方法600可以不存在S601和S602,只包括S603‑S605,此时该方案的目的是为了建立第一蓝牙连接,至于是如何触发建立第一蓝牙连接的过程,本申请实施例不予限制。又例如,方法600可以只存在S613‑S616,不存在其他的步骤,即只存在第二设备向第一设备的容器发送第一数据包的过程,S613之前的步骤可以是历史数据处理过程中得到的或者是预设的。又例如,方法600可以只存在S617‑S620,不存在其他的步骤,即只存在第一设备的容器向第二设备发送第二数据包的过程,其他的步骤可以是历史数据处理过程中得到的或者是预设的。再例如,方法600可以只存在S613‑S620,不存在其他的步骤,即只存在第二设备向第一设备的容器发送第一数据包以及第一设备的容器向第二设备发送第二数据包的过程,S613之前的步骤可以是历史数据处理过程中得到的或者是预设的。
[0194] 要说明的是,第一数据包或者第二数据包在不同的模块或者接口之间传递时,某一模块可以进行修改控制数据包的包头以适应本模块的封装格式,或者某一模块也可以不修改第一数据包或第二数据包的格式,直接透传到下一个节点,本申请不予限制。
[0195] 可以理解的是,本申请实施例中容器可以替换成虚拟机,换句话说,第一设备上的虚拟机可以通过第一HCI共享第一设备的蓝牙系统,从而可以实现与第一设备共享蓝牙系统。
[0196] 可选地,上述实施例中,第一设备的第二操作系统可以是Lunix系统或者Windows系统。
[0197] 本实施例可以根据上述方法示例对第一设备和第二设备进行功能模块的划分,或者本实施例可以根据上述方法示例对第一设备中的容器和HCI管理模块进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0198] 需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0199] 本实施例提供的第一设备和第二设备,用于执行上述用于蓝牙通信的方法,因此可以达到与上述实现方法相同的效果。在采用集成的单元的情况下,第一设备和第二设备分别可以包括处理模块、存储模块和通信模块。例如,处理模块可以用于对第一设备的HCI管理模块和容器以及第二设备的动作进行控制管理,例如,可以用于支持第一设备的HCI管理模块和容器以及第二设备执行处理单元执行的步骤。存储模块可以用于支持第一设备的HCI管理模块和容器以及第二设备执行存储程序代码和数据等。通信模块,可以用于支持第一设备的HCI管理模块和容器以及第二设备与其他设备的通信,或者用于支持设备内部的通信。
[0200] 其中,处理模块可以是处理器或控制器。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等。存储模块可以是存储器。通信模块具体可以为射频电路、蓝牙芯片、Wi‑Fi芯片等与其他电子设备交互的设备。
[0201] 在一个实施例中,当处理模块为处理器,存储模块为存储器时,本实施例所涉及的电子设备可以为具有图3所示结构的设备。
[0202] 本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的用于蓝牙通信的方法。
[0203] 本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的用于蓝牙通信的方法。
[0204] 另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的安全访问数据的方法。
[0205] 其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0206] 通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0207] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0208] 作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0209] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0210] 集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0211] 以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。