一种蓝牙适配器及其工作方法与流程

文档序号:12375003阅读:466来源:国知局
一种蓝牙适配器及其工作方法与流程

本发明涉及蓝牙通信领域,尤其涉及一种蓝牙适配器及其工作方法。



背景技术:

随着科技的不断进步,蓝牙安全设备可以通过蓝牙通道和移动终端进行通信。但现有技术中,蓝牙安全设备无法直接与上位机(例如PC端)进行通信。



技术实现要素:

本发明解决的技术问题:本发明提供了一种蓝牙适配器及其工作方法,使蓝牙安全设备能够通过本发明提供的蓝牙适配器和上位机进行通信。

本发明提供了一种蓝牙适配器的工作方法,包括:

步骤s1:蓝牙适配器搜索与预设设备标识相匹配的蓝牙安全设备并和其建立连接;

步骤s2:所述蓝牙适配器向上位机声明自身的USB协议标识;

步骤s3:所述蓝牙适配器接收来自所述上位机的USB指令;

步骤s4:所述蓝牙适配器根据所述蓝牙安全设备的协议类型和所述USB指令组织蓝牙指令;

步骤s5:所述蓝牙适配器向所述蓝牙安全设备发送蓝牙指令;

步骤s6:所述蓝牙适配器接收来自所述蓝牙安全设备的蓝牙应答;

步骤s7:所述蓝牙适配器根据所述蓝牙应答和与所述USB协议标识相匹配的USB协议组织USB应答;

步骤s8:所述蓝牙适配器将所述USB应答返回给所述上位机。

本发明还提供了一种蓝牙适配器的工作方法,所述蓝牙适配器包括控制芯片、蓝牙芯片和USB模块;所述方法包括:

步骤y1:所述控制芯片向所述蓝牙芯片发送轮询指令,所述蓝牙芯片接收到轮询指令之后,搜索与预设设备标识相匹配的蓝牙安全设备并与其建立连接,向所述控制芯片返回轮询指令应答;

步骤y2:所述控制芯片初始化USB模块,通过所述USB模块向上位机声明自身的USB协议标识;

步骤y3:所述控制芯片通过所述USB模块接收来自上位机的USB指令;

步骤y4:所述控制芯片根据所述蓝牙安全设备的协议类型和第二预设协议对所述USB指令进行封装,得到指令封装数据;

步骤y5:所述控制芯片将所述指令封装数据发送给所述蓝牙芯片;

步骤y6:所述蓝牙芯片从所述指令封装数据中获取蓝牙指令;

步骤y7:所述蓝牙芯片向蓝牙安全设备发送蓝牙指令;接收来自所述蓝牙安全设备的蓝牙应答;

步骤y8:所述蓝牙芯片根据第二预设协议封装所述蓝牙应答,得到应答封装数据;

步骤y9:所述蓝牙芯片向所述控制芯片发送所述应答封装数据;

步骤y10:所述控制芯片根据所述应答封装数据和与所述USB协议标识相匹配的USB协议组织USB应答;

步骤y11:所述控制芯片通过所述USB模块将所述USB应答返回给所述上位机。

本发明提供了一种蓝牙适配器,包括:第一搜索模块、第一连接模块、第一声明模块、第一组织模块、第一发送模块、第一接收模块、第二接收模块、第二组织模块和第二发送模块;

所述第一搜索模块,用于搜索与预设设备标识相匹配的蓝牙安全设备;

所述第一连接模块,用于与所述第一搜素模块搜索到的所述蓝牙安全设备建立连接;

所述第一声明模块,用于当所述第一连接模块与所述蓝牙安全设备建立连接后,向上位机声明自身的USB协议标识;

所述第一接收模块,用于接收来自所述上位机的USB指令;

所述第一组织模块,用于根据所述蓝牙安全设备的协议类型和所述第一接收模块接收到的所述USB指令组织蓝牙指令;

所述第一发送模块,用于向所述蓝牙安全设备发送蓝牙指令;

所述第二接收模块,用于接收来自所述蓝牙安全设备的蓝牙应答;

所述第二组织模块,用于根据所述第二接收模块接收到的所述蓝牙应答和与所述USB协议标识相匹配的USB协议组织USB应答;

所述第二发送模块,用于将所述USB应答返回给所述上位机。

本发明还提供了一种蓝牙适配器,包括:控制芯片、蓝牙芯片和USB模块;

所述控制芯片包括:第一发送单元、第一初始化单元、第一接收单元、第一组织单元、第二发送单元、第二组织单元和第三发送单元

所述第一发送单元,用于向所述蓝牙芯片发送轮询指令;

所述第一初始化单元,用于当所述第一接收单元接收到来自所述蓝牙芯片的轮询指令应答后,初始化USB模块,通过所述USB模块向上位机声明自身的USB协议标识;

所述第一接收单元,用于接收来自所述蓝牙芯片的轮询指令应答;通过所述USB模块接收来自上位机的USB指令;接收来自所述蓝牙芯片的应答封装数据;

所述第一组织单元,用于根据所述蓝牙安全设备的协议类型和第二预设协议对所述USB指令进行封装,得到指令封装数据;

所述第二发送单元,用于将所述指令封装数据发送给所述蓝牙芯片;

所述第二组织单元,用于根据来自所述蓝牙芯片的所述应答封装数据和与所述USB协议标识相匹配的USB协议组织USB应答;

所述第三发送单元,用于通过所述USB模块将所述USB应答返回给所述上位机;

所述蓝牙芯片包括:第二接收单元、第一搜索单元、第一连接单元、第四发送单元、第三接收单元、第二获取单元、第五发送单元、第四接收单元、第三组织单元和第六发送单元;

所述第二接收单元,用于接收来自控制芯片的轮询指令;

所述第一搜索单元,用于当所述第二接收单元接收到轮询指令之后,搜索与预设设备标识相匹配的所述蓝牙安全设备;

所述第一连接单元,用于与所述蓝牙安全设备建立连接,

所述第四发送单元,用于向所述控制芯片返回轮询指令应答;

第三接收单元,用于接收来自所述控制芯片的指令封装数据;

所述第二获取单元,用于从所述指令封装数据中获取蓝牙指令;

所述第五发送单元,用于向蓝牙安全设备发送第二获取单元获取到的蓝牙指令;

所述第四接收单元,用于接收来自所述蓝牙安全设备的蓝牙应答;

所述第三组织单元,用于根据第二预设协议封装所述第四接收单元接收到的蓝牙应答,得到应答封装数据;

所述第六发送单元,向所述控制芯片发送所述应答封装数据。

本发明的有益效果为:本发明提供了一种蓝牙适配器及其工作方法,蓝牙适配器对来自上位机的符合USB规范的USB指令进行转换,得到蓝牙安全设备能够识别的蓝牙指令后,将蓝牙指令发送给蓝牙安全设备,将蓝牙安全设备返回的蓝牙应答再转换为上位机能够识别的符合USB规范的USB应答,并将符合USB规范的USB应答返回给上位机,最终使蓝牙安全设备能够通过本发明提供的蓝牙适配器和上位机进行通信。

附图说明

图1为本发明实施例1提供的一种蓝牙适配器的工作方法;

图2为本发明实施例2提供的一种蓝牙适配器的工作方法;

图2-1为本发明实施例2提供的步骤107的细化流程图;

图2-2为本发明实施例2提供的步骤110的细化流程图;

图3为本发明实施例3提供的一种蓝牙适配器的工作方法的流程图;

图3-1为本发明实施例3提供的步骤207的细化流程图;

图3-2为本发明实施例3提供的步骤210的细化流程图;

图4和图5为本发明实施例4提供的蓝牙适配器的工作方法的具体流程图;

图6为本发明实施例5提供的一种蓝牙适配器的工作方法的流程图;

图6-1为本发明实施例5提供的步骤507的细化流程图;

图6-2为本发明实施例5提供的步骤508的细化流程图;

图7为本发明实施例6提供的一种蓝牙适配器的结构图;

图8为本发明实施例7提供的一种蓝牙适配器的结构图。

具体实施方法

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本实施例提供了一种蓝牙适配器的工作方法,如图1所示,具体包括:

步骤s1:蓝牙适配器搜索与预设设备标识相匹配的蓝牙安全设备并和其建立连接;

步骤s2:蓝牙适配器向上位机声明自身的USB协议标识;

步骤s3:蓝牙适配器接收来自上位机的USB指令;

步骤s4:蓝牙适配器根据蓝牙安全设备的协议类型和USB指令组织蓝牙指令;

步骤s5:蓝牙适配器向蓝牙安全设备发送蓝牙指令;

步骤s6:蓝牙适配器接收来自蓝牙安全设备的蓝牙应答;

步骤s7:蓝牙适配器根据蓝牙应答和与USB协议标识相匹配的USB协议组织USB应答;

步骤s8:蓝牙适配器将USB应答返回给上位机。

本实施例中,上位机可以但不限于为PC。

本实施例中,步骤s1之后,还可以包括:蓝牙适配器从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识;相应地,步骤s4具体为:蓝牙适配器根据与蓝牙安全设备的第一协议标识对应的协议类型和USB指令组织蓝牙指令。

本实施例中,步骤s4可以具体为:蓝牙适配器获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令;相应地,步骤s7具体为:蓝牙适配器获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

本实施例中,USB指令中的有效指令数据具体为USB指令中的APDU(ApplicationProtocolDataUnit,应用协议数据单元)。

本实施例中,步骤s1之后,步骤s4之前还可以包括:蓝牙适配器从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识;相应地,步骤s3之后,还包括:蓝牙适配器判断USB协议标识是否与第一协议标识相匹配;

当USB协议标识与第一协议标识相匹配时,执行以下步骤:

步骤r1:蓝牙适配器向蓝牙安全设备发送USB指令;

步骤r2:蓝牙适配器接收来自蓝牙安全设备的USB应答;

步骤r3:蓝牙适配器将USB应答返回给上位机;

当USB协议标识与第一协议标识不匹配时,执行以下步骤:

步骤t1:蓝牙适配器获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令;

步骤t2:蓝牙适配器向蓝牙安全设备发送蓝牙指令;

步骤t3:蓝牙适配器接收来自蓝牙安全设备的蓝牙应答;

步骤t4:蓝牙适配器获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答;

步骤t4具体为:蓝牙适配器根据蓝牙安全设备的协议类型获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答;

步骤t5:蓝牙适配器将USB应答返回给上位机。

本实施例中,步骤s1之后,步骤s2之前还包括:蓝牙适配器从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识;相应地,步骤s2具体为:蓝牙适配器将自身的USB协议标识设置为第一协议标识,向上位机声明自身的USB协议标识为第一协议标识;相应地,步骤s4具体为:蓝牙适配器将USB指令作为蓝牙指令;步骤s7具体为:蓝牙适配器将蓝牙应答作为USB应答。

本实施例中,蓝牙安全设备的协议类型还可以是蓝牙适配器自身预设的;

当预设的蓝牙安全设备的协议类型与蓝牙适配器自身的USB协议标识匹配时:步骤s4具体为:蓝牙适配器将USB指令作为蓝牙指令;步骤s7具体为:蓝牙适配器将蓝牙应答作为USB应答;

当预设的蓝牙安全设备的协议类型与蓝牙适配器自身的USB协议标识不匹配时:步骤s4具体为:蓝牙适配器获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令;步骤s7具体为:蓝牙适配器获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

本实施例中,步骤s3具体为:蓝牙适配器等待接收来自上位机的USB指令,当在预设时间内接收到来自上位机的USB指令后,执行步骤s4;当在预设时间内没有接收到来自上位机的USB指令后,检测是否和蓝牙安全设备已断开连接,如果是,则蓝牙适配器复位,返回步骤s1;否则,继续等待接收来自上位机的USB指令;步骤s8之后,返回步骤s3继续等待接收来自上位机的USB指令。

本实施例中,步骤s1之后还包括:蓝牙适配器检测是否和蓝牙安全设备已断开连接,如果是,则蓝牙适配器复位,返回步骤s1;否则,继续检测是否和蓝牙安全设备已断开连接。

本实施例中,蓝牙适配器复位,具体为:蓝牙适配器中的蓝牙芯片复位,控制芯片复位。当蓝牙适配器复位后,上位机通过自身的集线器检测到USB总线上的蓝牙适配器和上位机断开连接。

本实施例中,USB协议具体为CCID协议或SCSI协议或HID协议或其他协议。

本实施例还提供了一种蓝牙适配器的工作方法,其中,蓝牙适配器包括控制芯片、蓝牙芯片和USB模块;所述方法包括:

步骤y1:控制芯片向蓝牙芯片发送轮询指令,蓝牙芯片接收到轮询指令之后,搜索与预设设备标识相匹配的蓝牙安全设备并与其建立连接,向控制芯片返回轮询指令应答;

步骤y2:控制芯片初始化USB模块,通过USB模块向上位机声明自身的USB协议标识;

步骤y3:控制芯片通过USB模块接收来自上位机的USB指令;

步骤y4:控制芯片根据蓝牙安全设备的协议类型和第二预设协议对USB指令进行封装,得到指令封装数据;

步骤y5:控制芯片将指令封装数据发送给蓝牙芯片;

步骤y6:蓝牙芯片从指令封装数据中获取蓝牙指令;

步骤y7:蓝牙芯片向蓝牙安全设备发送蓝牙指令;接收来自蓝牙安全设备的蓝牙应答;

步骤y8:蓝牙芯片根据第二预设协议封装蓝牙应答,得到应答封装数据;

步骤y9:蓝牙芯片向控制芯片发送应答封装数据;

步骤y10:控制芯片根据应答封装数据和与USB协议标识相匹配的USB协议组织USB应答;

步骤y11:控制芯片通过USB模块将USB应答返回给上位机。

进一步地,步骤y1之后,还包括:控制芯片向蓝牙芯片发送获取蓝牙安全设备标识指令;蓝牙芯片向控制芯片返回包括蓝牙安全设备的第一协议标识的应答;相应地,步骤y4具体为:控制芯片根据与蓝牙安全设备的第一协议标识对应的协议类型和第二预设协议对USB指令进行封装,得到指令封装数据。

进一步地,步骤y4具体为:控制芯片获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装,得到指令封装数据;步骤y10具体为:控制芯片对应答封装数据进行解封,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

进一步地,步骤y4具体为:控制芯片获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型对有效指令数据进行封装,得到第一封装数据;根据第二预设协议对第一封装数据进行封装,得到指令封装数据;步骤y6具体为:蓝牙芯片从指令封装数据中获取第一封装数据,将第一封装数据作为蓝牙指令。

进一步地,步骤y10具体为:控制芯片对应答封装数据进行解封,得到蓝牙应答,根据蓝牙安全设备的协议类型获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

更进一步地,步骤y1之后,步骤y4之前还包括:控制芯片向蓝牙芯片发送获取蓝牙安全设备标识指令;蓝牙芯片向控制芯片返回包括蓝牙安全设备的第一协议标识的应答;相应地,步骤y3之后,还包括:控制芯片判断USB协议标识是否与第一协议标识相匹配,当USB协议标识与第一协议标识相匹配时,执行以下步骤:

步骤m1:控制芯片根据第二预设协议对USB指令进行封装,得到指令封装数据;

步骤m2:控制芯片将指令封装数据发送给蓝牙芯片;

步骤m3:蓝牙芯片对指令封装数据进行解封,得到USB指令;

步骤m4:蓝牙芯片向蓝牙安全设备发送USB指令;接收来自蓝牙安全设备的USB应答;

步骤m5:蓝牙芯片根据第二预设协议封装USB应答,得到应答封装数据;

步骤m6:蓝牙芯片向控制芯片发送应答封装数据;

步骤m7:控制芯片对应答封装数据进行解封,得到USB应答;

步骤m8:控制芯片通过USB模块将USB应答返回给上位机;

当USB协议标识与第一协议标识不匹配时,执行步骤y4。

进一步地,步骤y1之后,步骤y2之前还包括:控制芯片向蓝牙芯片发送获取蓝牙安全设备标识指令;蓝牙芯片向控制芯片返回包括蓝牙安全设备的第一协议标识的应答;

步骤y2具体为:控制芯片初始化USB模块,将自身的USB协议标识设置为第一协议标识,通过USB模块向上位机声明自身的第一协议标识;

步骤y4具体为:控制芯片根据第二预设协议对USB指令进行封装,得到指令封装数据;

步骤y6具体为:蓝牙芯片对指令封装数据进行解封,得到USB指令;

步骤y7具体为:蓝牙芯片将USB指令作为蓝牙指令,向蓝牙安全设备发送蓝牙指令;接收来自蓝牙安全设备的蓝牙应答;

步骤y10具体为:控制芯片从应答封装数据中获取蓝牙应答,将蓝牙应答作为USB应答。

进一步地,蓝牙安全设备的协议类型还可以为蓝牙适配器预设的;

当预设的蓝牙安全设备的协议类型与USB协议标识匹配时:

步骤y4具体为:控制芯片根据第二预设协议对USB指令进行封装,得到指令封装数据;步骤y6具体为:蓝牙芯片从指令封装数据中,获取USB指令,将USB指令作为蓝牙指令;步骤y10具体为:控制芯片从应答封装数据中获取蓝牙应答,将蓝牙应答作为USB应答;

当预设的蓝牙安全设备的协议类型与USB协议标识不匹配时:

步骤y4具体为:控制芯片获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装,得到指令封装数据;步骤y10具体为:控制芯片对应答封装数据进行解封,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

进一步地,步骤y3具体为:控制芯片等待接收来自上位机的USB指令,当在预设时间内接收到来自上位机的USB指令后,执行步骤y4;当在预设时间内没有接收到来自上位机的USB指令后,判断是否接收到来自蓝牙芯片的和蓝牙安全设备已断开连接的信息,如果是,则复位蓝牙芯片,复位控制芯片,返回步骤y1;否则,继续等待接收来自上位机的USB指令;步骤y11之后,返回步骤y3。

进一步地,步骤y1之后还包括:控制芯片判断是否接收到来自蓝牙芯片的和蓝牙安全设备已断开连接的信息,如果是,则复位蓝牙芯片,复位控制芯片,返回步骤y1;否则,继续判断是否接收到来自蓝牙芯片的和蓝牙安全设备已断开连接的信息。

本实施例提供的蓝牙适配器的工作方法,蓝牙适配器在和蓝牙安全设备建立连接之后,向PC端报告自身的USB协议标识,蓝牙适配器适可以被识别为HID设备或CCID设备或SCSI设备或者其他USB设备,增强了蓝牙适配器的适应性和应用性。当蓝牙适配器接收到了来自PC端的符合USB规范的USB指令后,对符合USB规范的USB指令进行转换,得到蓝牙安全设备能够识别的蓝牙指令后,将蓝牙指令发送给蓝牙安全设备,将蓝牙安全设备返回的蓝牙应答再转换为PC端能够识别的符合USB规范的USB应答,并将符合USB规范的USB应答返回给PC端,最终使蓝牙安全设备能够通过本发明提供的蓝牙适配器和PC端进行通信。

实施例2

本实施例提供了一种蓝牙适配器的工作方法,如图2所示,具体包括:

步骤101:蓝牙适配器上电;

步骤102:蓝牙适配器初始化;

本实施例中,蓝牙适配器初始化具体为:蓝牙适配器初始化控制芯片和蓝牙芯片。

步骤103:蓝牙适配器搜索与预设设备标识相匹配的蓝牙安全设备并和其建立连接;

具体地,蓝牙适配器通过控制芯片组织轮询指令,向蓝牙芯片发送轮询指令,接收来自蓝牙芯片的轮询指令应答。当蓝牙芯片接收到轮询指令之后,搜索与预设设备标识相匹配的蓝牙安全设备并与其建立连接,向控制芯片返回轮询指令应答。

其中,蓝牙适配器通过控制芯片组织轮询指令,具体为:蓝牙适配器通过控制芯片根据第二预设协议组织轮询指令。本实施例中,轮询指令中包括:指令起始字节、指令标识、数据域的数据长度、数据域和校验位。

例如,蓝牙适配器通过控制芯片将“0x5A”和“0xA5”作为轮询指令的指令起始字节,设置在轮询指令的第一字节和第二字节上,将“0x02”作为轮询指令的指令标识,设置在轮询指令的第三字节上,将“0x00”和“0x00”作为轮询指令中的数据域的数据长度,分别设置在轮询指令的第四字节和第五字节上,将轮询指令的校验值“XOR”,设置在轮询指令的最后一个字节(校验位)上,得到的轮询指令具体为:“5A A5 02 00 00 XOR”,向蓝牙芯片发送轮询指令“5A A5 02 00 00 XOR”;等待接收来自蓝牙芯片的轮询指令应答。

本实施例中,预设设备标识为预设的设备标识,其中,设备标识包括:蓝牙设备的UUID(Universally Unique Identifier,通用唯一识别码)、蓝牙设备的MAC地址和蓝牙设备的设备名称中的至少一种。其中,蓝牙设备的UUID为蓝牙设备支持的服务唯一标识信息,蓝牙设备的MAC地址或蓝牙设备的设备名称为蓝牙设备的唯一标识信息。

本实施例中,蓝牙安全设备可以但不限于为蓝牙智能密钥设备和蓝牙智能卡等。

步骤104:蓝牙适配器判断是否和蓝牙安全设备建立连接,如果是,则执行步骤105;否则,返回步骤104;

具体地,当蓝牙适配器通过控制芯片接收到来自蓝牙芯片的轮询指令应答后,根据轮询指令应答判断是否和蓝牙安全设备建立连接,如果是,则执行步骤105;否则,返回步骤104;

更加具体地,蓝牙适配器通过控制芯片接收到来自蓝牙芯片的轮询指令应答后,根据第二预设协议解析轮询指令应答,获取轮询指令应答中的数据域中的连接结果标识,根据连接结果标识判断是否和蓝牙安全设备建立连接,如果连接结果标识为成功标识“00”,则和蓝牙安全设备建立连接;否则,连接失败。

例如,若蓝牙适配器通过控制芯片接收到来自的蓝牙芯片的轮询指令应答为“A5 5A 02 00 01 00 XOR”,获取第五个字节之后,最后一个字节之前的字节上的数据,并将其作为轮询指令应答中的数据域中的连接结果标识,则根据连接结果标识“00”判定和蓝牙安全设备建立连接;若蓝牙适配器通过控制芯片接收到来自蓝牙芯片的轮询指令应答为“A5 5A 02 00 01 01 XOR”,获取第五个字节之后,最后一个字节之前的字节上的数据,并将其作为轮询指令应答中的数据域中的连接结果标识,则根据连接结果标识“01”判定没有和蓝牙安全设备建立连接。

步骤105:蓝牙适配器向上位机声明自身的USB协议标识;

具体地,蓝牙适配器通过自身的控制芯片初始化USB模块,向上位机声明自身的USB协议标识。

本实施例中,上位机可以但不限于为PC;USB协议标识具体为CCID协议标识或者HID协议标识或SCSI协议标识。本实施例中,USB协议标识以SCSI协议标识为例。

步骤106:蓝牙适配器等待接收来自上位机的USB指令,当在预设时间内接收到来自上位机的USB指令后,执行步骤107;当在预设时间内没有接收到来自上位机的USB指令后,检测是否和蓝牙安全设备已断开连接,如果是,则蓝牙适配器复位,返回步骤102;否则,返回步骤106;

优选地,预设时间为3秒。

本实施例中,蓝牙适配器复位,具体为:蓝牙适配器中的蓝牙芯片复位,控制芯片复位。当蓝牙适配器复位后,上位机通过自身的集线器检测到USB总线上的蓝牙适配器和上位机断开连接。

步骤107:蓝牙适配器解析USB指令,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令;

本实施例中,USB指令中的有效指令数据具体为USB指令中的APDU(ApplicationProtocolDataUnit,应用协议数据单元)。

本实施例中,USB指令以SCSI指令为例;蓝牙安全设备的类型协议可以是蓝牙适配器和蓝牙安全设备预先协商好的,可以以CCID协议为例。

具体地,蓝牙适配器根据与USB协议标识相匹配的USB协议解析USB指令,获取USB指令中的有效指令数据,在有效指令数据前添加第一协议头和命令描述标识,根据第一预设校验算法对包括第一协议头、命令描述标识和有效指令数据的数据进行运算,得到第一校验值,在有效数据后添加第一校验值,得到包括第一协议头、命令描述标识、有效指令数据和第一校验值的蓝牙指令。

例如,蓝牙适配器根据SCSI协议解析SCSI指令“5553424358aad6d60500000000000aff4550415353000000550000000000000047474b80”,将SCSI指令中的前31个字节上的数据作为命令控制字,获取命令控制字中的第十三字节上的数据“00”,根据获取到的命令控制字中的第十三字节上的数据“00”判定当前SCSI指令为上位机发送有效指令数据的指令,获取命令控制字的第九个字节上的数据“05”,并将其作为SCSI指令中的有效指令数据的长度,获取命令控制字之后的5个字节长度的数据,并将其作为SCSI指令中的有效指令数据,得到SCSI指令的有效指令数据为“00 47 47 4b 80”,在有效指令数据前添加CCID协议头“6F070000 00000400 0000”和命令描述标识“00”,得到包括CCID协议头、命令描述标识和有效指令数据的数据“6F070000 00000400 0000000047474b80”,根据EDC校验算法对包括CCID协议头和有效指令数据进行运算得到第一校验值“A7”,在有效数据后添加第一校验值,得到包括CCID协议头、命令描述标识、有效指令数据和第一校验值的蓝牙指令“6F070000 00000400 00000000 0047474b80A7”。

需说明的是,当蓝牙适配器接收到来自上位机的SCSI指令后,还包括向上位机返回响应控制字,例如,当蓝牙适配器接收到来自上位机的SCSI指令“5553424358aad6d60500000000000aff4550415353000000550000000000000047474b80”后,向上位机返回响应控制字“5553425358aad6d60000000000”。

步骤108:蓝牙适配器向蓝牙安全设备发送蓝牙指令;

具体地,蓝牙适配器通过蓝牙芯片向蓝牙安全设备发送蓝牙指令。

步骤109:蓝牙适配器接收来自蓝牙安全设备的蓝牙应答;

具体地,蓝牙适配器通过蓝牙芯片接收来自蓝牙安全设备的蓝牙应答。

步骤110:蓝牙适配器解析蓝牙应答,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答;

具体地,蓝牙适配器根据蓝牙安全设备的协议类型获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括所述有效应答数据的USB应答。

更加具体地,蓝牙适配器根据蓝牙安全设备的协议类型解析蓝牙应答,将蓝牙应答的第一协议头之后的数据作为蓝牙应答数据域,在蓝牙应答的数据域中获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

例如,蓝牙适配器根据蓝牙安全设备的协议类型解析蓝牙应答“80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75 DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66”,将蓝牙应答中的前十个字节上的数据“80830000 000106000000”作为蓝牙应答中的CCID协议头,将第十字节之后的数据作为蓝牙应答中的数据域,将蓝牙应答中的数据域中的第一个字节作为蓝牙应答中的命令描述标识,数据域中的最后一个字节作为第三校验值,获取蓝牙应答中的数据域中的命令描述标识之后,第三校验值之前的所有字节上的数据“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”,并将其作为有效应答数据,根据SCSI协议组织包括有效应答数据的USB应答“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FC B190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 55 53 42 53f8 58 df da 00 00 00 00 00”。

需说明的是,根据SCSI协议组织的包括有效应答数据的USB应答具体为:根据SCSI协议组织的包括有效应答数据和响应控制字的USB应答。更加具体地:根据SCSI协议在有效应答数据后添加响应控制字,得到包括有效应答数据和响应控制字的USB应答。

例如,根据SCSI协议在有效应答数据“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”后添加响应控制字“55 53 42 53f8 58 df da 00 00 00 00 00”,得到包括有效应答数据和响应控制字的USB应答为:“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”。

步骤111:蓝牙适配器将USB应答返回给上位机,返回步骤106;

本实施例中,当USB应答具体为SCSI应答时,即USB协议标识为SCSI协议标识时,蓝牙适配器将USB应答返回给上位机前,还包括:接收来自上位机的返回USB应答指令。

本实施例中,步骤107可以如图2-1所示,具体包括:

步骤1071:控制芯片解析USB指令,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装;

具体地,控制芯片获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型对有效指令数据进行封装,得到第一封装数据;根据第二预设协议对第一封装数据进行封装,得到指令封装数据;

更加具体地,控制芯片根据与USB协议标识相匹配的USB协议解析USB指令,获取USB指令中的有效指令数据,在有效指令数据前添加第一协议头和命令描述标识,根据第一预设校验算法对包括第一协议头、命令描述标识和有效指令数据的数据进行运算,得到第一校验值,在有效指令数据之后添加第一校验值,得到包括第一协议头、命令描述标识、有效指令数据和第一校验值的第一封装数据;在第一封装数据前添加第二预设协议头,根据第二预设校验算法对包括第一封装数据和第二预设协议头的数据进行运算,得到第二校验值,在第一封装数据之后添加第二校验值,得到根据第一协议头和第二预设协议头对有效指令数据进行封装后的指令封装数据。

例如,控制芯片根据SCSI协议解析SCSI指令,得到SCSI指令的有效指令数据为“00 47 47 4b 80”,在有效指令数据前添加CCID协议头“6F070000 00000400 000000”和命令描述标识“00”,得到包括CCID协议头、命令描述标识和有效指令数据的数据“6F070000 00000400 0000000047474b80”,根据EDC校验算法对包括CCID协议头和有效指令数据的进行运算得到第一校验值“A7”,得到第一封装数据“6F070000 00000400 00000000 0047474b80 A7”;在第一封装数据前添加第二预设协议头“5A A5 04 0013”,得到包括第一封装数据和第二预设协议头的数据“5A A50400136F070000 00000400 00000000 0047474b80 A7”,根据LRC校验算法对包括第一封装数据和第二预设协议头的数据进行运算,得到第二校验值“00”,在第一封装数据之后添加第二校验值,得到根据第一协议头和第二预设协议头对有效指令数据进行封装后的指令封装数据“5A A5 04 00 13 6F 07 00 00 00 00 04 00 00 00 00 00 00 47 47 4b 80 A7 00”。

步骤1072:控制芯片将根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装后的数据,发送给蓝牙芯片;

具体地,控制芯片将指令封装数据发送给蓝牙芯片。

步骤1073:蓝牙芯片从根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装后的数据中,获取蓝牙指令;

具体地,蓝牙芯片从指令封装数据中获取第一封装数据,将所述第一封装数据作为蓝牙指令。

更加具体地,蓝牙芯片根据第二预设协议对指令封装数据进行解封,从指令封装数据中获取第一封装数据,将第一封装数据作为蓝牙指令。

例如,蓝牙芯片对指令封装数据进行解封,得到的数据为“5AA504 0013 6F070000 00000400 00000000 0047474b80A7 00”,获取第二预设协议头之后的,第二校验值之前的所有字节上的数据,将获取到的数据“6F070000 00000400 00000000 0047474b80 A7”作为第一封装数据,将第一封装数据作为蓝牙指令。

相应地,步骤110可以如图2-2所示,具体包括:

步骤1101:蓝牙芯片根据第二预设协议封装蓝牙应答;

具体地,蓝牙芯片在蓝牙应答之前添加第二预设协议头,根据第三预设校验算法对包括第二预设协议头和蓝牙应答的数据进行运算,得到第四校验值,在蓝牙应答之后添加第四校验值,得到封装后的蓝牙应答,将封装后的蓝牙应答作为应答封装数据。

例如,蓝牙芯片在蓝牙应答“80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66”之前,添加第二预设协议头“A5 5A 04 00 8F”,根据LRC校验算法对包括第二预设协议头和蓝牙应答的数据进行运算,得到第四校验值“00”,在蓝牙应答之后添加第四校验值,得到根据第二预设协议头封装后的蓝牙应答“A55A04008F80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66 00”,将封装后的蓝牙应答作为应答封装数据。

步骤1102:蓝牙芯片向控制芯片发送根据第二预设协议封装后的蓝牙应答;

具体地,蓝牙芯片向控制芯片发送应答封装数据。

步骤1103:控制芯片对根据第二预设协议封装后的蓝牙应答,进行解封,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

具体地,控制芯片对根据第二预设协议封装后的蓝牙应答,即对应答封装数据,进行解封,得到蓝牙应答,根据蓝牙安全设备的协议类型获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

更加具体地,控制芯片对根据第二预设协议封装后的蓝牙应答,即对应答封装数据,进行解封,将第一协议头之后的所有数据作为蓝牙应答中的数据域,获取数据域中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

例如,控制芯片对根据第二预设协议封装后的蓝牙应答“A55A04008F80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66 00”进行解封,获取CCID协议头之后,第三校验值之前的所有字节上的数据,将获取到的数据“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”作为蓝牙应答中的有效应答数据,根据SCSI协议组织包括有效应答数据的SCSI应答“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F900055534253f858dfda0000000000”。

需说明的是,根据SCSI协议组织的包括有效应答数据的USB应答具体为:根据SCSI协议组织的包括有效应答数据和响应控制字的USB应答。更加具体地:根据SCSI协议在有效应答数据后添加响应控制字,得到包括有效应答数据和响应控制字的USB应答。

例如,根据SCSI协议在有效应答数据“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”后添加响应控制字“55534253f858dfda0000000000”,得到包括有效应答数据和响应控制字的USB应答为:“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”。

本实施例中,蓝牙指令和蓝牙应答的数据格式与蓝牙安全设备的协议类型相匹配,控制芯片和蓝牙芯片之间的通讯的数据格式与第二预设协议相匹配,其中,蓝牙安全设备的协议类型是蓝牙适配器和蓝牙安全设备预先协商好的,第二预设协议是控制芯片和蓝牙芯片之间预先协商好的。蓝牙芯片和控制芯片之间可以但不限于通过UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)/SPI(Serial Peripheral Interface,串行外设接口)/I2C(Inter-Integrated Circuit,内部集成电路)总线等多种方式传输数据。

需说明的是,本发明中,当蓝牙安全设备的协议类型为蓝牙适配器预设时,与蓝牙适配器的USB协议标识相匹配的USB协议和第一协议可以为不同的协议或者相同的协议,如本实施例中的,USB协议为SCSI协议,蓝牙安全设备的协议类型为CCID协议。

还需说明的是,本实施例中,蓝牙安全设备的协议类型还可以是蓝牙适配器根据蓝牙安全设备的广播信息中获取到的,具体地,步骤104之后,还可以包括:蓝牙适配器从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识;相应地,步骤107中根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令,具体为:根据与蓝牙安全设备的第一协议标识对应的协议类型和USB指令组织蓝牙指令。

本实施例中,当蓝牙适配器在步骤104之后,步骤107之前,从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识后,在步骤106之后,还可以包括:蓝牙适配器判断USB协议标识是否与蓝牙安全设备的第一协议标识相匹配,如果否,则执行步骤107;如果是,则执行步骤a1;

步骤a1:蓝牙适配器向蓝牙安全设备发送USB指令;

步骤a2:蓝牙适配器接收来自蓝牙安全设备的USB应答;

步骤a3:蓝牙适配器将USB应答返回给上位机。

本实施例中,当蓝牙适配器在步骤104之后,步骤105之前,从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识后,步骤107还可以被替换为步骤b1:蓝牙适配器将USB指令作为蓝牙指令,执行步骤108;步骤110还可以被替换为步骤c1:蓝牙适配器将蓝牙应答作为USB应答,执行步骤111。

本实施例中,步骤104之后,还可以包括:蓝牙适配器检测是否和蓝牙安全设备已断开连接,如果是,则蓝牙适配器复位,返回步骤102;否则,继续检测是否和蓝牙安全设备已断开连接。相应地,步骤106中当在预设时间内没有接收到来自上位机的USB指令后,返回步骤106。

实施例3

本实施例提供了一种蓝牙适配器的工作方法,如图3所示,具体包括:

步骤201:蓝牙适配器上电;

步骤202:蓝牙适配器初始化;

本实施例中,蓝牙适配器初始化具体为:蓝牙适配器初始化控制芯片和蓝牙芯片。

步骤203:蓝牙适配器搜索与预设设备标识相匹配的蓝牙安全设备并和其建立连接;

具体地,蓝牙适配器通过控制芯片组织轮询指令,向蓝牙芯片发送轮询指令,接收来自蓝牙芯片的轮询指令应答。当蓝牙芯片接收到轮询指令之后,搜索与预设设备标识相匹配的蓝牙安全设备并与其建立连接,向控制芯片返回轮询指令应答。

其中,蓝牙适配器通过控制芯片组织轮询指令,具体为:蓝牙适配器通过控制芯片根据第二预设协议组织轮询指令。本实施例中,轮询指令中包括:指令起始字节、指令标识、数据域的数据长度、数据域和校验位。

例如,蓝牙适配器通过控制芯片将“0x5A”和“0xA5”作为轮询指令的指令起始字节,设置在轮询指令的第一字节和第二字节上,将“0x02”作为轮询指令的指令标识,设置在轮询指令的第三字节上,将“0x00”和“0x00”作为轮询指令中的数据域的数据长度,分别设置在轮询指令的第四字节和第五字节上,将轮询指令的校验值“XOR”,设置在轮询指令的最后一个字节(校验位)上,得到的轮询指令具体为:“5A A5 02 00 00 XOR”,向蓝牙芯片发送轮询指令“5A A5 02 00 00 XOR”;等待接收来自蓝牙芯片的轮询指令应答。

本实施例中,预设设备标识为预设的设备标识,其中,设备标识包括:蓝牙设备的UUID(Universally Unique Identifier,通用唯一识别码)、蓝牙设备的MAC地址和蓝牙设备的设备名称中的至少一种。其中,蓝牙设备的UUID为蓝牙设备支持的服务唯一标识信息,蓝牙设备的MAC地址或蓝牙设备的设备名称为蓝牙设备的唯一标识信息。

本实施例中,蓝牙安全设备可以但不限于为蓝牙智能密钥设备和蓝牙智能卡等。

步骤204:蓝牙适配器判断是否和蓝牙安全设备建立连接,如果是,则执行步骤205;否则,返回步骤204;

具体地,当蓝牙适配器通过控制芯片接收到来自蓝牙芯片的轮询指令应答后,根据轮询指令应答判断是否和蓝牙安全设备建立连接,如果是,则执行步骤205;否则,返回步骤204;

更加具体地,蓝牙适配器通过控制芯片接收到来自蓝牙芯片的轮询指令应答后,根据第二预设协议解析轮询指令应答,获取轮询指令应答中的数据域中的连接结果标识,根据连接结果标识判断是否和蓝牙安全设备建立连接,如果连接结果标识为成功标识,则和蓝牙安全设备建立连接;否则,连接失败。

例如,若蓝牙适配器通过控制芯片接收到来自的蓝牙芯片的轮询指令应答为“A5 5A 02 00 01 00 XOR”,获取第五个字节之后,最后一个字节之前的字节上的数据,并将其作为轮询指令应答中的数据域中的连接结果标识,则根据连接结果标识“00”判定和蓝牙安全设备建立连接;若蓝牙适配器通过控制芯片接收到来自蓝牙芯片的轮询指令应答为“A5 5A 02 00 01 01 XOR”,获取第五个字节之后,最后一个字节之前的字节上的数据,并将其作为轮询指令应答中的数据域中的连接结果标识,则根据连接结果标识“01”判定没有和蓝牙安全设备建立连接。

步骤205:蓝牙适配器向上位机声明自身的USB协议标识;

具体地,蓝牙适配器通过自身的控制芯片初始化USB模块,向上位机声明自身的USB协议标识。

本实施例中,上位机可以但不限于为PC;USB协议标识具体为CCID协议标识或者HID协议标识或SCSI协议标识。本实施例中,USB协议标识以HID协议标识为例。

步骤206:蓝牙适配器等待接收来自上位机的USB指令,当在预设时间内接收到来自上位机的USB指令后,执行步骤207;当在预设时间内没有接收到来自上位机的USB指令后,检测是否和蓝牙安全设备已断开连接,如果是,则蓝牙适配器复位,返回步骤202;否则,返回步骤206;

优选地,预设时间为3秒。

本实施例中,蓝牙适配器复位,具体为:蓝牙适配器中的蓝牙芯片复位,控制芯片复位。当蓝牙适配器复位后,上位机通过自身的集线器检测到USB总线上的蓝牙适配器和上位机断开连接。

步骤207:蓝牙适配器解析USB指令,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令;

本实施例中,USB指令中的有效指令数据具体为USB指令中的APDU。

本实施例中,USB指令以HID指令为例;蓝牙安全设备的协议类型可以为蓝牙适配器和蓝牙安全设备预先协商好的,可以以CCID协议为例。

具体地,蓝牙适配器根据与USB协议标识相匹配的USB协议解析USB指令,获取USB指令中的有效指令数据,在有效指令数据前添加第一协议头和命令描述标识,根据第一预设校验算法对包括第一协议头、命令描述标识和有效指令数据的数据进行运算,得到第一校验值,在有效数据后添加第一校验值,得到包括第一协议头、命令描述标识、有效指令数据和第一校验值的蓝牙指令。

例如,蓝牙适配器根据HID协议解析HID指令“00 05 00 00 00 05 00 47 47 4b 80cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc”,将HID指令的前六个字节上的数据作为HID指令的HID协议头“00 05 00 00 00 05”,将HID协议头的前两个字节“00 05”作为HID指令的有效指令数据的数据长度,将HID协议头的第三和第四字节上的数据“00 00”作为当前包数据传输数据包的偏移,将HID协议头的第五和第六字节上的数据“00 05”作为当前包传输的数据长度,根据HID协议头获取HID协议头之后的5个字节长度的数据,并将其作为HID指令的有效指令数据,得到HID指令的有效指令数据为“00 47 47 4b 80”,在有效指令数据前添加HID协议头“6F070000 00000400 0000”和命令描述标识“00”,得到包括CCID协议头、命令描述标识和有效指令数据的数据“6F070000 00000400 0000000047474b80”,根据EDC校验算法对包括CCID协议头和有效指令数据的进行运算得到第一校验值“A7”,在有效数据后添加第一校验值,得到包括CCID协议头、命令描述标识、有效指令数据和第一校验值的蓝牙指令“6F070000 00000400 00000000 0047474b80 A7”。

步骤208:蓝牙适配器向蓝牙安全设备发送蓝牙指令;

具体地,蓝牙适配器通过蓝牙芯片向蓝牙安全设备发送蓝牙指令。

步骤209:蓝牙适配器接收来自蓝牙安全设备的蓝牙应答;

具体地,蓝牙适配器通过蓝牙芯片接收来自蓝牙安全设备的蓝牙应答。

步骤210:蓝牙适配器解析蓝牙应答,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答;

具体地,蓝牙适配器根据蓝牙安全设备的协议类型获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

更加具体地,蓝牙适配器根据蓝牙安全设备的协议类型解析蓝牙应答,将蓝牙应答的第一协议头之后的数据作为蓝牙应答数据域,在蓝牙应答的数据域中获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

例如,蓝牙适配器根据蓝牙安全设备的协议类型解析蓝牙应答“80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66”,将蓝牙应答中的前十个字节上的数据“80830000 000106000000”作为蓝牙应答中的CCID协议头,将第十字节之后的数据作为蓝牙应答中的数据域,将蓝牙应答中的数据域中的第一个字节作为蓝牙应答中的命令描述标识,数据域中的最后一个字节作为第三校验值,获取蓝牙应答中的数据域中的命令描述标识之后,第三校验值之前的所有字节上的数据“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”,并将其作为有效应答数据,根据HID协议组织包括有效应答数据的USB应答。

其中,根据HID协议组织包括有效应答数据的USB应答具体为:根据HID协议组织包括HID协议头和有效应答数据的USB应答。

更加具体地,还可以根据HID协议、预设的分包长度和有效应答数据判断是否需要分包,如果是,则根据预设的分包长度将有效应答数据分为多包有效应答数据,在每包有效应答数据前添加相应的HID协议头,得到包括有效应答数据的多包USB应答;否则,组织包括HID协议头和有效应答数据的USB应答。

例如,据据HID协议、预设的分包长度“40”和有效应答数据“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”,判断需要将USB应答分为三包,得到的第一包有效应答数据为6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB80;第二包有效应答数据为:55F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BD E1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B;第三包有效应答数据为:00820074000e746F50544C008A7CDC106D0F9000,并在每包有效应答数据前添加相应的HID协议头,得到包括第一包有效应答数据的第一包USB应答为:00820000003a6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB80;

得到包括第二包有效应答数据的第二包USB应答为:

0082003a003a55F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B;

得到包括第三包有效应答数据的第三包USB应答为:

00820074000e746F50544C008A7CDC106D0F9000cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc。

步骤211:蓝牙适配器将USB应答返回给上位机,返回步骤206;

本实施例中,步骤207可以如图3-1所示,具体包括:

步骤2071:控制芯片解析USB指令,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装;

具体地,控制芯片获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型对有效指令数据进行封装,得到第一封装数据;根据第二预设协议对第一封装数据进行封装,得到指令封装数据;

更加具体地,控制芯片根据与USB协议标识相匹配的USB协议解析USB指令,获取USB指令中的有效指令数据,在有效指令数据前添加第一协议头和命令描述标识,根据第一预设校验算法对包括第一协议头、命令描述标识和有效指令数据的数据进行运算,得到第一校验值,在有效指令数据之后添加第一校验值,得到包括第一协议头、命令描述标识、有效指令数据和第一校验值的第一封装数据;在第一封装数据前添加第二预设协议头,根据第二预设校验算法对包括第一封装数据和第二预设协议头的数据进行运算,得到第二校验值,在第一封装数据之后添加第二校验值,得到根据第一协议头和第二预设协议头对有效指令数据进行封装后的指令封装数据。

例如,控制芯片根据HID协议解析HID指令“0005000000050047474b80cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc”,将HID指令的前六个字节上的数据“00 05 00 00 00 05”作为HID指令的HID协议头,将HID协议头的前两个字节“00 05”作为HID指令的有效指令数据的数据长度,将HID协议头的第三和第四字节上的数据“00 00”作为当前包数据传输数据包的偏移,将HID协议头的第五和第六字节上的数据“00 05”作为当前包传输的数据长度,根据HID协议头获取HID协议头之后的5个字节长度的数据,并将其作为HID指令的有效指令数据,得到HID指令的有效指令数据为“00 47 47 4b 80”,在有效指令数据前添加CCID协议头“6F070000 00000400 000000”和命令描述标识“00”,得到包括CCID协议头、命令描述标识和有效指令数据的数据“6F070000 00000400 0000000047474b80”,根据EDC校验算法对包括CCID协议头和有效指令数据的进行运算得到第一校验值“A7”,得到第一封装数据“6F070000 00000400 00000000 0047474b80 A7”;在第一封装数据前添加第二预设协议头“5A A5 04 0013”,得到包括第一封装数据和第二预设协议头的数据“5A A50400136F070000 00000400 00000000 0047474b80 A7”,根据LRC校验算法对包括第一封装数据和第二预设协议头的数据进行运算,得到第二校验值“00”,在第一封装数据之后添加第二校验值,得到根据第一协议头和第二预设协议头对有效指令数据进行封装后的指令封装数据“5A A5 04 00 13 6F 07 00 00 00 00 04 00 00 00 00 00 00 47 47 4b 80 A7 00”。

步骤2072:控制芯片将根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装后的数据,发送给蓝牙芯片;

具体地,控制芯片将指令封装数据发送给蓝牙芯片;

步骤2073:蓝牙芯片从根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装后的数据中,获取蓝牙指令;

具体地,蓝牙芯片从指令封装数据中获取第一封装数据,将所述第一封装数据作为蓝牙指令。

更加具体地,蓝牙芯片根据第二预设协议对指令封装数据进行解封,从指令封装数据中获取第一封装数据,将第一封装数据作为蓝牙指令。

例如,蓝牙芯片对指令封装数据进行解封,得到的数据为“5AA504 0013 6F070000 00000400 00000000 0047474b80 A7 00”,获取第二预设协议头之后的,第二校验值之前的所有字节上的数据,将获取到的数据“6F070000 00000400 00000000 0047474b80 A7”作为第一封装数据,将第一封装数据作为蓝牙指令。

相应地,步骤210可以如图3-2所示,具体包括:

步骤2101:蓝牙芯片根据第二预设协议封装蓝牙应答;

具体地,蓝牙芯片在蓝牙应答之前添加第二预设协议头,根据第三预设校验算法对包括第二预设协议头和蓝牙应答的数据进行运算,得到第四校验值,在蓝牙应答之后添加第四校验值,得到封装后的蓝牙应答,将封装后的蓝牙应答作为应答封装数据。

例如,蓝牙芯片在蓝牙应答“80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66”之前,添加第二预设协议头“A5 5A 04 00 8F”,根据LRC校验算法对包括第二预设协议头和蓝牙应答的数据进行运算,得到第四校验值“00”,在蓝牙应答之后添加第四校验值,得到根据第二预设协议头封装后的蓝牙应答“A55A04008F80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66 00”,将封装后的蓝牙应答作为应答封装数据。

步骤2102:蓝牙芯片向控制芯片发送根据第二预设协议封装后的蓝牙应答;

具体地,蓝牙芯片向控制芯片发送应答封装数据。

步骤2103:控制芯片对根据第二预设协议封装后的蓝牙应答,进行解封,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

具体地,控制芯片对根据第二预设协议封装后的蓝牙应答,即对应答封装数据,进行解封,得到蓝牙应答,根据蓝牙安全设备的协议类型获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

更加具体地,控制芯片对根据第二预设协议封装后的蓝牙应答,即对应答封装数据,进行解封,将第一协议头之后的所有数据作为蓝牙应答中的数据域,获取数据域中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

例如,控制芯片对根据第二预设协议封装后的蓝牙应答“A55A04008F8083000000010600000000 6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66 00”进行解封,获取CCID协议头之后,第三校验值之前的所有字节上的数据,将获取到的数据“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”作为蓝牙应答中的有效应答数据,根据HID协议组织包括有效应答数据的HID应答。

其中,根据HID协议组织包括有效应答数据的USB应答具体为:根据HID协议组织包括HID协议头和有效应答数据的USB应答。

更加具体地,还可以根据HID协议、预设的分包长度和有效应答数据判断是否需要分包,如果是,则根据预设的分包长度将有效应答数据分为多包有效应答数据,在每包有效应答数据前添加相应的HID协议头,得到包括有效应答数据的多包USB应答;否则,组织包括HID协议头和有效应答数据的USB应答。

例如,据据HID协议、预设的分包长度和有效应答数据“6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FC B190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000”,判断需要将的USB应答分为三包,得到的第一包有效应答数据为:6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB80;第二包有效应答数据为:55F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B;第三包有效应答数据为:00820074000e746F50544C008A7CDC106D0F9000,并在每包有效应答数据前添加相应的HID协议头,得到包括第一包有效应答数据的第一包USB应答为:00820000003a6AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB80;

得到包括第二包有效应答数据的第二包USB应答为:

0082003a003a55F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B;

得到包括第三包有效应答数据的第三包USB应答为

00820074000e746F50544C008A7CDC106D0F9000cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc。

本实施例中,蓝牙指令和蓝牙应答的数据格式与蓝牙安全设备的协议类型相匹配,控制芯片和蓝牙芯片之间的通讯的数据格式与第二预设协议相匹配,其中,蓝牙安全设备的协议类型可以是蓝牙适配器和蓝牙安全设备预先协商好的,第二预设协议是控制芯片和蓝牙芯片之间预先协商好的。蓝牙芯片和控制芯片之间可以但不限于通过UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)/SPI(Serial Peripheral Interface,串行外设接口)/I2C(Inter-Integrated Circuit,内部集成电路)总线等多种方式传输数据。

需说明的是,本发明中,当蓝牙安全设备的协议类型为蓝牙适配器预设时,与蓝牙适配器的USB协议标识相匹配的USB协议和蓝牙安全设备的协议类型可以为不同的协议或者相同的协议,如本实施例中的,USB协议为HID协议,蓝牙安全设备的协议类型为CCID协议。

还需说明的是,本实施例中,蓝牙安全设备的协议类型还可以是蓝牙适配器根据蓝牙安全设备的广播信息中获取到的,具体地,步骤204之后,还可以包括:蓝牙适配器从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识;相应地,步骤207中蓝牙适配器根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令,具体为:根据与蓝牙安全设备的第一协议标识对应的协议类型和USB指令组织蓝牙指令。

本实施例中,当蓝牙适配器在步骤204之后,步骤207之前,从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识后,在步骤206之后,还可以包括:蓝牙适配器判断USB协议标识是否与蓝牙安全设备的第一协议标识相匹配,如果否,则执行步骤207;如果是,则执行步骤d1;

步骤d1:蓝牙适配器向蓝牙安全设备发送USB指令;

步骤d2:蓝牙适配器接收来自蓝牙安全设备的USB应答;

步骤d3:蓝牙适配器将USB应答返回给上位机。

本实施例中,当蓝牙适配器在步骤204之后,步骤205之前,从从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识后,步骤207还可以被替换为步骤e1:蓝牙适配器将USB指令作为蓝牙指令,执行步骤208;步骤210还可以被替换为步骤f1:蓝牙适配器将蓝牙应答作为USB应答,执行步骤211。

本实施例中,步骤204之后,还可以包括:蓝牙适配器检测是否和蓝牙安全设备已断开连接,如果是,则蓝牙适配器复位,返回步骤202;否则,继续检测是否和蓝牙安全设备已断开连接。相应地,步骤206中当在预设时间内没有接收到来自上位机的USB指令后,返回步骤206。

实施例4

本实施例提供了一种蓝牙适配器的工作方法,适用于包括蓝牙适配器、蓝牙安全设备和上位机的系统,如图4所示,包括:

步骤301:蓝牙适配器上电;

步骤302:蓝牙适配器初始化;

步骤303:蓝牙适配器搜索与预设设备标识相匹配的蓝牙安全设备并和其建立连接;

步骤304:蓝牙适配器判断是否和蓝牙安全设备建立连接,如果是,则执行步骤305;否则,返回步骤304;

步骤305:蓝牙适配器向上位机声明自身的USB协议标识;

步骤306:上位机向蓝牙适配器发送USB指令;

步骤307:蓝牙适配器解析USB指令,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令;

具体地,蓝牙适配器根据与USB协议标识相匹配的USB协议解析USB指令,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令。

本实施例中,USB指令中的有效指令数据具体为USB指令中的APDU。

步骤308:蓝牙适配器向蓝牙安全设备发送蓝牙指令;

步骤309:蓝牙安全设备解析蓝牙指令,组织与蓝牙指令对应的蓝牙应答;

具体地,蓝牙安全设备根据蓝牙安全设备的协议类型解析蓝牙指令,根据蓝牙安全设备的协议类型组织与蓝牙指令对应的蓝牙应答。

步骤310:蓝牙安全设备向蓝牙适配器发送蓝牙应答;

步骤311:蓝牙适配器解析蓝牙应答,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答;

具体地,蓝牙安全设备根据蓝牙安全设备的协议类型解析蓝牙应答,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议和有效应答数据组织USB应答。

步骤312:蓝牙适配器向上位机发送USB应答。

需说明的是,本发明中,当蓝牙安全设备的协议类型为蓝牙适配器预设时,与蓝牙适配器的USB协议标识相匹配的USB协议和蓝牙安全设备的协议类型可以为不同的协议或者相同的协议。

还需说明的是,本实施例中,蓝牙安全设备的协议类型还可以是蓝牙适配器根据蓝牙安全设备的广播信息中获取到的,具体地,步骤304之后,还可以包括:蓝牙适配器从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识;相应地,步骤307中蓝牙适配器根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令,具体为:蓝牙适配器根据与蓝牙安全设备的第一协议标识对应的协议类型和USB指令组织蓝牙指令。

本实施例中,当蓝牙适配器在步骤304之后,步骤307之前,从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识后,在步骤306之后,还可以包括:蓝牙适配器判断USB协议标识是否与蓝牙安全设备的第一协议标识相匹配,如果否,则执行步骤307;如果是,则执行步骤g1;

步骤g1:蓝牙适配器向蓝牙安全设备发送USB指令;

步骤g2:蓝牙适配器接收来自蓝牙安全设备的USB应答;

步骤g3:蓝牙适配器将USB应答返回给上位机。

本实施例中,当蓝牙适配器在步骤304之后,步骤305之前,从从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识后,步骤307还可以被替换为步骤:蓝牙适配器将USB指令作为蓝牙指令;步骤310还可以被替换为步骤:蓝牙适配器将蓝牙应答作为USB应答。

本实施例中,步骤304之后,还可以包括:蓝牙适配器检测是否和蓝牙安全设备已断开连接,如果是,则蓝牙适配器复位,返回步骤302;否则,继续检测是否和蓝牙安全设备已断开连接。

本实施例中,还提供了一种蓝牙适配器的工作方法,适用于包括蓝牙适配器、蓝牙安全设备和上位机的系统,其中,蓝牙适配器包括控制芯片和蓝牙芯片,具体如图5所示,当蓝牙适配器上电后,包括:

步骤401:控制芯片初始化,蓝牙芯片初始化;

步骤402:控制芯片向蓝牙芯片发送轮询指令;

本实施例中,控制芯片向蓝牙芯片发送轮询指令后,控制芯片等待接收来自蓝牙芯片的轮询指令应答。

具体地,控制芯片根据第二预设协议组织轮询指令,向蓝牙芯片发送轮询指令,待接收来自蓝牙芯片的轮询指令应答。

步骤403:蓝牙芯片搜索与预设设备标识相匹配的蓝牙安全设备并与其建立连接;

步骤404:蓝牙芯片向控制芯片返回轮询指令应答;

具体地,控制芯片根据第二预设协议组织轮询指令应答,向蓝牙芯片返回轮询指令应答。

步骤405:控制芯片根据轮询指令应答判断是否和蓝牙安全设备建立连接,如果是,则执行步骤406;否则,继续等待接收来自蓝牙芯片的轮询指令应答,当接收到来自蓝牙芯片的轮询指令应答后,返回步骤405;

具体地,控制芯片接收到来自蓝牙芯片的轮询指令应答后,根据第二预设协议解析轮询指令应答,获取轮询指令应答中的数据域中的连接结果标识,根据连接结果标识判断是否和蓝牙安全设备建立连接,如果连接结果标识为成功标识“00”,则和蓝牙安全设备建立连接;否则,连接失败。

步骤406:控制芯片初始化USB模块,向上位机声明自身的USB协议标识;

步骤407:上位机向控制芯片发送USB指令;

步骤408:控制芯片解析USB指令,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装;

具体地,控制芯片根据与USB协议标识相匹配的USB协议解析USB指令,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装,得到指令封装数据。

更加具体地,控制芯片根据与USB协议标识相匹配的USB协议解析USB指令,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型对有效指令数据进行封装,得到第一封装数据;根据第二预设协议对第一封装数据进行封装,得到指令封装数据;

步骤409:控制芯片将根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装后的数据,发送给蓝牙芯片;

具体地,控制芯片将指令封装数据发送给蓝牙芯片;

步骤410:蓝牙芯片从根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装后的数据中,获取蓝牙指令;

具体地,蓝牙芯片从指令封装数据中获取第一封装数据,将第一封装数据作为蓝牙指令。

更加具体地,蓝牙芯片根据第二预设协议对指令封装数据进行解封,从指令封装数据中获取第一封装数据,将第一封装数据作为蓝牙指令。

步骤411:蓝牙芯片向蓝牙安全设备发送蓝牙指令;

步骤412:蓝牙安全设备解析蓝牙指令,组织与蓝牙指令对应的蓝牙应答;

具体地,蓝牙安全设备根据蓝牙安全设备的协议类型解析蓝牙指令,根据蓝牙安全设备的协议类型组织与蓝牙指令对应的蓝牙应答。

步骤413:蓝牙安全设备向蓝牙芯片发送蓝牙应答;

步骤414:蓝牙芯片根据第二预设协议封装蓝牙应答;

具体地,蓝牙芯片根据第二预设协议封装蓝牙应答,得到应答封装数据;

步骤415:蓝牙芯片向控制芯片发送根据第二预设协议封装后的蓝牙应答;

具体地,蓝牙芯片向控制芯片发送应答封装数据;

步骤416:控制芯片对根据第二预设协议封装后的蓝牙应答,进行解封,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答;

具体地,控制芯片对根据第二预设协议封装后的蓝牙应答进行解封,即对应答封装数据进行解封,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

步骤417:控制芯片向上位机发送USB应答。

本实施例中,蓝牙芯片和控制芯片之间可以但不限于通过UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)/SPI(Serial Peripheral Interface,串行外设接口)/I2C(Inter-Integrated Circuit,内部集成电路)总线等多种方式传输数据。

需说明的是,蓝牙安全设备的协议类型可以是蓝牙适配器和蓝牙安全设备预先协商好的,第二预设协议是控制芯片和蓝牙芯片之间预先协商好的。

还需说明的是,本实施例中,蓝牙安全设备的协议类型还可以是控制芯片根据蓝牙安全设备的广播信息获取到的,具体地,步骤402之后,还包括:控制芯片向蓝牙芯片发送获取蓝牙安全设备标识指令;蓝牙芯片向控制芯片返回包括蓝牙安全设备的第一协议标识的应答;

相应地,步骤408中控制芯片根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装具体为:控制芯片根据与蓝牙安全设备的第一协议标识对应的协议类型和第二预设协议对有效指令数据进行封装。

本实施例中,当控制芯片在步骤405之后,步骤408之前,还包括:控制芯片向蓝牙芯片发送获取蓝牙安全设备标识指令;蓝牙芯片向控制芯片返回包括蓝牙安全设备的第一协议标识的应答后,在步骤406之后,还可以包括:控制芯片判断USB协议标识是否与第一协议标识相匹配,当USB协议标识与第一协议标识相匹配时,执行以下步骤:

步骤m1:控制芯片根据第二预设协议对USB指令进行封装,得到指令封装数据;

步骤m2:控制芯片将指令封装数据发送给蓝牙芯片;

具体地,控制芯片将根据第二预设协议封装后的USB指令,发送给蓝牙芯片;

步骤m3:蓝牙芯片对指令封装数据进行解封,得到USB指令;

具体地,蓝牙芯片根据第二预设协议对封装后的USB指令进行解封,得到USB指令;即蓝牙芯片根据第二预设协议对指令封装数据进行解封,得到USB指令。

步骤m4:蓝牙芯片向蓝牙安全设备发送USB指令;接收来自蓝牙安全设备的USB应答;

步骤m5:蓝牙芯片根据第二预设协议封装USB应答,得到应答封装数据;

步骤m6:蓝牙芯片向控制芯片发送应答封装数据;

具体地,蓝牙芯片向控制芯片发送根据第二预设协议封装后的USB应答;

步骤m7:控制芯片对应答封装数据进行解封,得到USB应答;

具体地,控制芯片根据第二预设协议对根据第二预设协议封装后的USB应答进行解封,得到USB应答;即控制芯片根据第二预设协议对应答封装数据进行解封,得到USB应答。

步骤m8:控制芯片通过USB模块将USB应答返回给上位机;

当USB协议标识与第一协议标识不匹配时,执行步骤408。

本实施例中,当控制芯片在步骤402之后,步骤406之前,还包括:控制芯片向蓝牙芯片发送获取蓝牙安全设备标识指令;蓝牙芯片向控制芯片返回包括蓝牙安全设备的第一协议标识的应答后,步骤406具体为:控制芯片初始化USB模块,将自身的USB协议标识设置为第一协议标识,通过USB模块向上位机声明自身的第一协议标识;

步骤408被替换为:控制芯片根据第二预设协议对USB指令进行封装,得到指令封装数据;

步骤409被替换为:控制芯片将根据第二预设协议封装后的USB指令,即将指令封装数据,发送给蓝牙芯片;

步骤410被替换为:蓝牙芯片根据第二预设协议对封装后的USB指令进行解封,得到USB指令,执行步骤411;即步骤410被替换为:蓝牙芯片根据第二预设协议对指令封装数据进行解封,得到USB指令,执行步骤411;

步骤416被替换为:控制芯片从根据第二预设协议封装后的蓝牙应答中获取蓝牙应答,将蓝牙应答作为USB应答。即,步骤416被替换为:控制芯片从应答封装数据中获取蓝牙应答,将蓝牙应答作为USB应答。

本实施例中,步骤406之后,步骤408之前,控制芯片等待接收来自上位机的USB指令,当在预设时间内接收到来自上位机的USB指令后,执行步骤408;当在预设时间内没有接收到来自上位机的USB指令后,判断是否接收到来自蓝牙芯片的和蓝牙安全设备已断开连接的信息,如果是,则复位蓝牙芯片,复位控制芯片,返回步骤401;否则,继续等待接收来自上位机的USB指令;

步骤417之后,控制芯片返回等待接收来自上位机的USB指令。

本实施例中,步骤405之后,还包括:控制芯片判断是否接收到来自蓝牙芯片的和蓝牙安全设备已断开连接的信息,如果是,则复位蓝牙芯片,复位控制芯片,返回步骤401;否则,继续判断是否接收到来自蓝牙芯片的和蓝牙安全设备已断开连接的信息。

实施例5

本实施例提供了一种蓝牙适配器的工作方法,如图6所示,具体包括:

步骤501:蓝牙适配器上电;

步骤502:蓝牙适配器初始化;

本实施例中,蓝牙适配器初始化控制芯片和蓝牙芯片。

步骤503:蓝牙适配器搜索与预设设备标识相匹配的蓝牙安全设备并和其建立连接;

具体地,蓝牙适配器通过控制芯片组织轮询指令,向蓝牙芯片发送轮询指令,接收来自蓝牙芯片的轮询指令应答。当蓝牙芯片接收到轮询指令之后,搜索与预设设备标识相匹配的蓝牙安全设备并与其建立连接,向控制芯片返回轮询指令应答。

其中,蓝牙适配器通过控制芯片组织轮询指令,具体为:蓝牙适配器通过控制芯片根据第二预设协议组织轮询指令。本实施例中,轮询指令中包括:指令起始字节、指令标识、数据域的数据长度、数据域和校验位。

例如,蓝牙适配器通过控制芯片将“0x5A”和“0xA5”作为轮询指令的指令起始字节,设置在轮询指令的第一字节和第二字节上,将“0x02”作为轮询指令的指令标识,设置在轮询指令的第三字节上,将“0x00”和“0x00”作为轮询指令中的数据域的数据长度,分别设置在轮询指令的第四字节和第五字节上,将轮询指令的校验值“XOR”,设置在轮询指令的最后一个字节(校验位)上,得到的轮询指令具体为:“5A A5 02 00 00 XOR”,向蓝牙芯片发送轮询指令“5A A5 02 00 00 XOR”;等待接收来自蓝牙芯片的轮询指令应答。

本实施例中,预设设备标识为预设的设备标识,其中,设备标识包括:蓝牙设备的UUID(Universally Unique Identifier,通用唯一识别码)、蓝牙设备的MAC地址和蓝牙设备的设备名称中的至少一种。其中,蓝牙设备的UUID为蓝牙设备支持的服务唯一标识信息,蓝牙设备的MAC地址或蓝牙设备的设备名称为蓝牙设备的唯一标识信息。

本实施例中,蓝牙安全设备可以但不限于为蓝牙智能密钥设备和蓝牙智能卡等。

步骤504:蓝牙适配器判断是否和蓝牙安全设备建立连接,如果是,则执行步骤505;否则,返回步骤504;

具体地,当蓝牙适配器通过控制芯片接收到来自蓝牙芯片的轮询指令应答后,根据轮询指令应答判断是否和蓝牙安全设备建立连接,如果是,则执行步骤505;否则,返回步骤504;

更加具体地,蓝牙适配器通过控制芯片接收到来自蓝牙芯片的轮询指令应答后,根据第二预设协议解析轮询指令应答,获取轮询指令应答中的数据域中的连接结果标识,根据连接结果标识判断是否和蓝牙安全设备建立连接,如果连接结果标识为成功标识,则和蓝牙安全设备建立连接;否则,连接失败。

例如,若蓝牙适配器通过控制芯片接收到来自的蓝牙芯片的轮询指令应答为“A5 5A 02 00 01 00 XOR”,获取第五个字节之后,最后一个字节之前的字节上的数据,并将其作为轮询指令应答中的数据域中的连接结果标识,则根据连接结果标识“00”判定和蓝牙安全设备建立连接;若蓝牙适配器通过控制芯片接收到来自蓝牙芯片的轮询指令应答为“A5 5A 02 00 01 01 XOR”,获取第五个字节之后,最后一个字节之前的字节上的数据,并将其作为轮询指令应答中的数据域中的连接结果标识,则根据连接结果标识“01”判定没有和蓝牙安全设备建立连接。

步骤505:蓝牙适配器向上位机声明自身的CCID协议标识;

具体地,蓝牙适配器通过自身的控制芯片初始化USB模块,向上位机声明自身的CCID协议标识。

步骤506:蓝牙适配器等待接收来自上位机的CCID指令,当在预设时间内接收到来自上位机的CCID指令后,执行步骤507;当在预设时间内没有接收到来自上位机的CCID指令后,检测是否和蓝牙安全设备已断开连接,如果是,则蓝牙适配器复位,返回步骤502;否则,返回步骤506;

优选地,预设时间为3秒。

本实施例中,蓝牙适配器复位,具体为:蓝牙适配器中的蓝牙芯片复位,控制芯片复位。当蓝牙适配器复位后,上位机通过自身的集线器检测到USB总线上的蓝牙适配器和上位机断开连接。

步骤507:蓝牙适配器向蓝牙安全设备发送CCID指令;

具体地,蓝牙适配器通过蓝牙芯片向蓝牙安全设备发送CCID指令。

例如,蓝牙适配器通过蓝牙芯片向蓝牙安全设备发送CCID指令“6F070000 00000400 00000000 0047474b80A7”。

步骤508:蓝牙适配器接收来自蓝牙安全设备的CCID应答;

具体地,蓝牙适配器通过蓝牙芯片接收来自蓝牙安全设备的CCID应答。

例如,蓝牙适配器通过蓝牙芯片接收来自蓝牙安全设备的CCID应答为“80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66”。

步骤509:蓝牙适配器将CCID应答返回给上位机,返回步骤506;

本实施例中,步骤507可以如图6-1所示,具体包括:

步骤5071:控制芯片根据第二预设协议对CCID指令进行封装;

具体地,控制芯片在CCID指令添加第二预设协议头,根据第二预设校验算法对包括CCID指令和第二预设协议头的数据进行运算,得到第二校验值,在CCID指令之后添加第二校验值,得到封装后的CCID指令,将封装后的CCID指令作为指令封装数据。

例如,控制芯片在CCID指令“6F070000 00000400 00000000 0047474b80 A7”前添加第二预设协议头“5A A5 04 0013”,得到包括CCID指令和第二预设协议头的数据“5A A50400136F070000 00000400 00000000 0047474b80 A7”,根据LRC校验算法对包括CCID指令和第二预设协议头的数据进行运算,得到第二校验值“00”,在CCID指令之后添加第二校验值,得到根据第二预设协议头封装后的CCID指令“5A A5 04 00 13 6F 07 00 00 00 00 04 00 00 00 00 00 00 47 47 4b 80 A7 00”。

步骤5072:控制芯片将根据第二预设协议封装后的CCID指令,发送给蓝牙芯片;

步骤5073:蓝牙芯片根据第二预设协议对封装后的CCID指令进行解封,得到CCID指令;

具体地,蓝牙芯片对根据第二预设协议对封装后的CCID指令进行解封,从根据第二预设协议对封装后的CCID指令进行解封后的数据中,获取CCID指令。

例如,蓝牙芯片对根据第二预设协议对有效指令数据进行封装后的数据进行解封得到的数据为“5AA504 0013 6F070000 00000400 00000000 0047474b80 A7 00”,获取第二预设协议头之后的,第二校验值之前的所有字节上的数据,将获取到的数据“6F070000 00000400 00000000 0047474b80 A7”作为CCID指令。

步骤5074:蓝牙芯片向蓝牙安全设备发送CCID指令。

相应地,步骤508可以如图6-2所示,具体包括:

步骤5081:蓝牙芯片根据第二预设协议封装CCID应答;

具体地,蓝牙芯片在CCID应答之前添加第二预设协议头,根据第三预设校验算法对包括第二预设协议头和CCID应答的数据进行运算,得到第四校验值,在CCID应答之后添加第四校验值,得到封装后的CCID应答,将封装后的CCID应答作为应答封装数据。

例如,蓝牙芯片在CCID应答“80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66”之前,添加第二预设协议头“A5 5A 04 00 8F”,根据LRC校验算法对包括第二预设协议头和CCID应答的数据进行运算,得到第四校验值“00”,在CCID应答之后添加第四校验值,得到根据第二预设协议头封装后的CCID应答“A55A04008F80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66 00”,将封装后的CCID应答作为应答封装数据。

步骤5082:蓝牙芯片向控制芯片发送根据第二预设协议封装后的CCID应答;

步骤5083:控制芯片对根据第二预设协议封装后的CCID应答,进行解封,获取CCID应答。

具体地,控制芯片对根据第二预设协议封装后的CCID应答,进行解封,将第二预设协议头之后的,第四校验值之前的所有数据作为CCID应答。

例如,控制芯片对根据第二预设协议封装后的CCID应答“A55A04008F80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66 00”,进行解封,获取第二预设协议头之后,第四校验值之前的所有字节上的数据,将获取到的数据“8F80830000000106000000006AF61B6E94C5CE5871D54D31F9456F9BA397DE422AC11D75DD95A8FE2895D234CF80D2F1436A91E94CAB11F0A577461BC384F7E9B8DFBC19CB8055F8B43E8A23B1DCF2FE1BAC129FB85889161DC5176BE28F3CE62E9ED1BDE1FCB190DD1CBD3417EEB06D1CBE52CC5D490E9B47A8C5AECE485C9B746F50544C008A7CDC106D0F9000 66”作为CCID应答。

本实施例中,控制芯片和蓝牙芯片之间的通讯的数据格式与第二预设协议相匹配,其中,第二预设协议是控制芯片和蓝牙芯片之间预先协商好的。蓝牙芯片和控制芯片之间可以但不限于通过UART(Universal Asynchronous Receiver/Transmitter,通用异步收发传输器)/SPI(Serial Peripheral Interface,串行外设接口)/I2C(Inter-Integrated Circuit,内部集成电路)总线等多种方式传输数据。

本实施例中,步骤504之后,还可以包括:蓝牙适配器检测是否和蓝牙安全设备已断开连接,如果是,则蓝牙适配器复位,返回步骤502;否则,继续检测是否和蓝牙安全设备已断开连接。相应地,步骤506中当在预设时间内没有接收到来自上位机的USB指令后,返回步骤506。

实施例6

本实施例提供了一种蓝牙适配器,如图7所示,包括:第一搜索模块01、第一连接模块02、第一声明模块03、第一组织模块04、第一发送模块05、第一接收模块06、第二接收模块07、第二组织模块08和第二发送模块09;

第一搜索模块01,用于搜索与预设设备标识相匹配的蓝牙安全设备;

第一连接模块02,用于与第一搜素模块01搜索到的蓝牙安全设备建立连接;

第一声明模块03,用于当第一连接模块02与蓝牙安全设备建立连接后,向上位机声明自身的USB协议标识;

第一接收模块06,用于接收来自上位机的USB指令;

第一组织模块04,用于根据蓝牙安全设备的协议类型和第一接收模块06接收到的USB指令组织蓝牙指令;

第一发送模块05,用于向蓝牙安全设备发送蓝牙指令;

第二接收模块07,用于接收来自蓝牙安全设备的蓝牙应答;

第二组织模块08,用于根据第二接收模块07接收到的蓝牙应答和与USB协议标识相匹配的USB协议组织USB应答;

第二发送模块09,用于将USB应答返回给上位机。

本实施例中,USB协议具体为CCID协议或SCSI协议或HID协议或其他协议。

本实施例中,蓝牙适配器还可以包括第一获取模块;

第一获取模块,用于当第一连接模块02与蓝牙安全设备建立连接后,从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识;

相应地,第一组织模块04,具体用于根据与蓝牙安全设备的第一协议标识对应的协议类型和USB指令组织蓝牙指令。

本实施例中,第一组织模块04,具体用于获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令;

第二组织模块08,具体用于获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

进一步地,蓝牙适配器还可以包括第二获取模块、第一判断模块、第三发送模块、第三接收模块和第四发送模块;

第二获取模块,用于当第一连接模块02与蓝牙安全设备建立连接后、第一组织模块04组织蓝牙指令之前,从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识;

第一判断模块,用于当第一接收模块06接收来自上位机的USB指令之后,判断USB协议标识是否与第一协议标识相匹配;

第三发送模块,用于当第一判断模块判断为是后,向蓝牙安全设备发送USB指令;

第三接收模块,用于接收来自蓝牙安全设备的USB应答;

第四发送模块,用于将USB应答返回给上位机;

相应地,第一组织模块04,具体用于当第一判断模块判断为否后,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令;

第二组织模块08,具体用于获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

本实施例中,第二组织模块08可以具体包括:第一获取单元和第一组织单元;

第一获取单元,用于根据蓝牙安全设备的协议类型获取蓝牙应答中的有效应答数据;

第一组织单元,用于根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

本实施例中,蓝牙适配器还可以包括:第三获取模块;

第三获取模块,用于当第一连接模块02与蓝牙安全设备建立连接后,第一声明模块03向上位机声明自身的USB协议标识之前,从蓝牙安全设备的广播信息中获取蓝牙安全设备的第一协议标识;

第一声明模块03,具体用于将自身的USB协议标识设置为第一协议标识,向上位机声明自身的第一协议标识;

第一组织模块04,具体用于将USB指令作为蓝牙指令;

第二组织模块08,具体用于将蓝牙应答作为USB应答。

本实施例中,蓝牙安全设备的协议类型可以为蓝牙适配器预设的;

相应地:第一组织模块04,具体用于当蓝牙安全设备的协议类型与USB协议标识匹配时,将USB指令作为蓝牙指令;当蓝牙安全设备的协议类型与USB协议标识不匹配时,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和有效指令数据组织蓝牙指令;

第二组织模块08,具体用于当蓝牙安全设备的协议类型与USB协议标识匹配时,将蓝牙应答作为USB应答;当蓝牙安全设备的协议类型与USB协议标识不匹配时,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

本实施中,蓝牙适配器还可以包括第一检测模块和第一复位模块;

第一接收模块06,具体用于当第一声明模块03向上位机声明自身的USB协议标识后,等待接收来自上位机的USB指令;当第一检测模块检测为否后,等待接收来自上位机的USB指令;以及当第二发送模块09将USB应答返回给上位机后,等待接收来自上位机的USB指令;

第一组织模块04,具体用于当第一接收模块06在预设时间内接收到来自上位机的USB指令后,根据蓝牙安全设备的协议类型和USB指令组织蓝牙指令;

第一检测模块,用于当第一接收模块06在预设时间内没有接收到来自上位机的USB指令后,检测是否和蓝牙安全设备已断开连接;

第一复位模块,用于当第一检测模块检测为是后,复位;

第一搜索模块01,还用于当第一复位模块复位后,搜索与预设设备标识相匹配的蓝牙安全设备。

本实施例中,蓝牙适配器还可以包括:第二检测模块和第二复位模块;

第二检测模块,用于当连接模块与蓝牙安全设备建立连接后以及用于当检测结果为否后,继续检测是否和所述蓝牙安全设备已断开连接;,检测是否和蓝牙安全设备已断开连接;

第二复位模块,用于当第二检测模块检测为是后,复位;

第一搜索模块01,还用于当第二复位模块复位后,搜索与预设设备标识相匹配的蓝牙安全设备。

本实施例中,USB协议具体为CCID协议或SCSI协议或HID协议或其他协议。本实施例提供的蓝牙适配器在和蓝牙安全设备建立连接之后,向PC端报告自身的USB协议标识,蓝牙适配器适可以被PC端识别为HID设备或CCID设备或SCSI设备或者其他USB设备,增强了蓝牙适配器的适应性和应用性。当蓝牙适配器接收到了来自PC端的符合USB规范的USB指令后,对符合USB规范的USB指令进行转换,得到蓝牙安全设备能够识别的蓝牙指令后,将蓝牙指令发送给蓝牙安全设备,将蓝牙安全设备返回的蓝牙应答再转换为PC端能够识别的符合USB规范的USB应答,并将符合USB规范的USB应答返回给PC端,最终使蓝牙安全设备能够通过本发明提供的蓝牙适配器和PC端进行通信。

实施例7

本实施例提供了一种蓝牙适配器,如图8所示,包括:控制芯片、蓝牙芯片和USB模块;

控制芯片包括:第一发送单元601、第一初始化单元602、第一接收单元603、第一组织单元604、第二发送单元605、第二组织单元606和第三发送单元607;

第一发送单元601,用于向蓝牙芯片发送轮询指令;

第一初始化单元602,用于当第一接收单元603接收到来自蓝牙芯片的轮询指令应答后,初始化USB模块,通过USB模块向上位机声明自身的USB协议标识;

本实施例中,USB协议具体为CCID协议或SCSI协议或HID协议或其他协议。

第一接收单元603,用于接收来自蓝牙芯片的轮询指令应答;通过USB模块接收来自上位机的USB指令;接收来自蓝牙芯片的应答封装数据;

第一组织单元604,用于根据蓝牙安全设备的协议类型和第二预设协议对USB指令进行封装,得到指令封装数据;

第二发送单元605,用于将指令封装数据发送给蓝牙芯片;

第二组织单元606,用于根据来自蓝牙芯片的应答封装数据和与USB协议标识相匹配的USB协议组织USB应答;

第三发送单元607,用于通过USB模块将USB应答返回给上位机;

蓝牙芯片包括:第二接收单元701、第一搜索单元702、第一连接单元703、第四发送单元704、第三接收单元705、第二获取单元706、第五发送单元707、第四接收单元708、第三组织单元709和第六发送单元710;

第二接收单元701,用于接收来自控制芯片的轮询指令;

第一搜索单元702,用于当第二接收单元701接收到轮询指令之后,搜索与预设设备标识相匹配的蓝牙安全设备;

第一连接单元703,用于与蓝牙安全设备建立连接,

第四发送单元704,用于向控制芯片返回轮询指令应答;

第三接收单元705,用于接收来自控制芯片的指令封装数据;

第二获取单元706,用于从第三接收单元705接收到的指令封装数据中,获取蓝牙指令;

第五发送单元707,用于向蓝牙安全设备发送第二获取单元706获取到的蓝牙指令;

第四接收单元708,用于接收来自蓝牙安全设备的蓝牙应答;

第三组织单元709,用于根据第二预设协议封装第四接收单元708接收到的蓝牙应答,得到应答封装数据;

第六发送单元710,向控制芯片发送第三组织单元709组织的应答封装数据。

本实施例中,控制芯片还包括第七发送单元;蓝牙芯片还包括第八发送单元;

第七发送单元,用于当蓝牙芯片的第四发送单元704向控制芯片返回轮询指令应答后,向蓝牙芯片发送获取蓝牙安全设备标识指令;

第八发送单元,用于向控制芯片返回包括蓝牙安全设备的第一协议标识的应答;

相应地,第一组织单元604,具体用于根据与蓝牙安全设备的第一协议标识对应的协议类型和第二预设协议对USB指令进行封装,得到指令封装数据。

本实施例中,第一组织单元604,可以具体用于获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装,得到指令封装数据;

第二组织单元606,可以具体用于对来自蓝牙芯片的应答封装数据进行解封,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

本实施例中,第一组织单元604,也可以具体用于获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型对有效指令数据进行封装,得到第一封装数据;根据第二预设协议对第一封装数据进行封装,得到指令封装数据;第二获取单元706,可以具体用于从指令封装数据中获取第一封装数据,将第一封装数据作为蓝牙指令。

本实施例中,第二组织单元606,也可以具体用于对应答封装数据进行解封,得到蓝牙应答,根据蓝牙安全设备的协议类型获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

更进一步地,控制芯片还包括第九发送单元、第一判断单元、第一封装单元、第十一发送单元、第二解封单元和第十四发送单元;蓝牙芯片还包括第十发送单元、第一解封单元、第二封装单元、第十二发送单元、第五接收单元和第十三发送单元;

第九发送单元,用于当蓝牙芯片的第四发送单元704向控制芯片返回轮询指令应答后,第一组织单元604对USB指令进行封装之前,向蓝牙芯片发送获取蓝牙安全设备标识指令;

第十发送单元,用于向控制芯片返回包括蓝牙安全设备的第一协议标识的应答;

第一判断单元,用于当第一接收单元603通过USB模块接收来自上位机的USB指令后,判断USB协议标识是否与第一协议标识相匹配;当第一判断单元判定为否后,触发第一组织单元604;

相应地,第一组织单元604具体用于获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型对有效指令数据进行封装,得到第一封装数据;根据第二预设协议对第一封装数据进行封装,得到指令封装数据;或者具体用于获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装,得到指令封装数据。

第一封装单元,用于当第一判断单元判定为是后,根据第二预设协议对USB指令进行封装,得到指令封装数据;

第十一发送单元,用于将指令封装数据发送给蓝牙芯片;

第一解封单元,用于对指令封装数据进行解封,得到USB指令;

第十二发送单元,用于向蓝牙安全设备发送USB指令;

第五接收单元,用于接收来自蓝牙安全设备的USB应答;

第二封装单元,用于根据第二预设协议封装USB应答,得到应答封装数据;

第十三发送单元,用于向控制芯片发送应答封装数据;

第二解封单元,用于对应答封装数据进行解封,得到USB应答;

第十四发送单元,用于通过USB模块将USB应答返回给上位机。

本实施例中,控制芯片还可以包括第十五发送单元;蓝牙芯片还可以包括第十六发送单元;

第十五发送单元,用于当蓝牙芯片的第四发送单元704向控制芯片返回轮询指令应答后,第一初始化单元602通过USB模块向上位机声明自身的USB协议标识之前,向蓝牙芯片发送获取蓝牙安全设备标识指令;

第十六发送单元,用于向控制芯片返回包括蓝牙安全设备的第一协议标识的应答;

第一初始化单元602,具体用于初始化USB模块,将自身的USB协议标识设置为第一协议标识,通过USB模块向上位机声明自身的第一协议标识;

第一组织单元604,具体用于根据第二预设协议对USB指令进行封装,得到指令封装数据;

第二获取单元706,具体用于对指令封装数据进行解封,得到所述USB指令;

第五发送单元707,具体用于将USB指令作为蓝牙指令,向蓝牙安全设备发送蓝牙指令;

第二组织单元606,具体用于从应答封装数据中获取蓝牙应答,将蓝牙应答作为USB应答。

本实施例中,蓝牙安全设备的协议类型为预设的;

第一组织单元604,具体用于当蓝牙安全设备的协议类型与USB协议标识匹配时,根据第二预设协议对USB指令进行封装,得到指令封装数据;当蓝牙安全设备的协议类型与USB协议标识不匹配时,获取USB指令中的有效指令数据,根据蓝牙安全设备的协议类型和第二预设协议对有效指令数据进行封装,得到指令封装数据;

第二获取单元706,具体用于当蓝牙安全设备的协议类型与USB协议标识匹配时,从指令封装数据中,获取USB指令,将USB指令作为蓝牙指令;当蓝牙安全设备的协议类型与USB协议标识不匹配时,从指令封装数据中,获取蓝牙指令;

第二组织单元606,具体用于当蓝牙安全设备的协议类型与USB协议标识匹配时,从应答封装数据中获取蓝牙应答,将蓝牙应答作为USB应答;当蓝牙安全设备的协议类型与USB协议标识不匹配时,对应答封装数据进行解封,获取蓝牙应答中的有效应答数据,根据与USB协议标识相匹配的USB协议组织包括有效应答数据的USB应答。

本实施例中,控制芯片还可以包括第二判断单元和第一复位单元;第一接收单元603包括第一接收子单元、第二接收子单元和第三接收子单元;

第一接收子单元,用于当第一初始化单元602向上位机声明自身的USB协议标识后,等待接收来自上位机的USB指令;当第二判断单元判断为否后,等待接收来自上位机的USB指令;以及当第三发送单元607将USB应答返回给上位机后,等待接收来自上位机的USB指令;

第二接收子单元,用于接收来自蓝牙芯片的轮询指令应答;

第三接收子单元,用于接收来自蓝牙芯片的应答封装数据;

第一组织单元604,具体用于当第一接收单元603在预设时间内接收到来自上位机的USB指令后,根据蓝牙安全设备的协议类型和第二预设协议对USB指令进行封装;

第二判断单元,用于当第一接收单元603在预设时间内没有接收到来自上位机的USB指令后,判断是否接收到来自蓝牙芯片的和蓝牙安全设备已断开连接的信息;

第一复位单元,用于当第二判断单元判断为是后,复位蓝牙芯片,复位控制芯片;

第一发送单元601,还用于当第一复位单元复位蓝牙芯片,复位控制芯片后,向蓝牙芯片发送轮询指令。

本实施例中,控制芯片还可以包括:第三判断单元和第二复位单元;

第三判断单元,用于当第四发送单元704向控制芯片返回轮询指令应答后以及自身判断为否后,判断是否接收到来自蓝牙芯片的和蓝牙安全设备已断开连接的信息;

第二复位单元,用于当第三判断单元判断为是后,复位蓝牙芯片,复位控制芯片;

第一发送单元601,还用于当第二复位单元复位蓝牙芯片,复位控制芯片后,向蓝牙芯片发送轮询指令。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

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