一种实现多卡槽访问的方法和装置制造方法及图纸

技术编号:4271887 阅读:264 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种实现多卡槽访问的方法和装置,属于数据通信领域。方法包括:多卡槽的CCID设备与主机建立连接,将至少一对用来实现应答管道和命令管道的IN/OUT端点声明为BULK-IN和BULK-OUT端点,将至少一个用来实现事件通知管道的IN端点声明为中断端点,并向所述主机声明其自身是符合CCID接口标准的设备以及自身支持的卡槽数;主机对所述多卡槽的CCID设备进行访问;所述多卡槽的CCID设备接收BULK-OUT数据包,并根据所述BULK-OUT数据包判断所述主机下发的CCID命令的类型;当所述CCID命令类型是通道扩展命令时,则判断所述通道扩展命令是否是通道切换命令;如果所述通道扩展命令是通道切换命令时,则解析所述通道切换命令,并激活所述主机欲访问的相应卡槽。

【技术实现步骤摘要】

本专利技术涉及数据通讯领域,特别涉及一种实现多卡槽访问的方法和装置
技术介绍
CCID (USB Chip/Smart Card Interface Devices-USB,芯片智能卡接口设备)标 准是由几大国际级IT企业共同制定的一个标准,它提供了一种智能卡读写设备与主机或 其他嵌入式主机之间实现相互通讯的可能。CCID标准规定了 CCID设备是一种芯片/智 能卡接口设备,设备通过USB接口与主机或其他嵌入式主机连接,进行符合CCID标准的 数据通信,同时设备通过符合7816标准协议的接口与智能卡进行通讯。微软公司在其 WIND0WS2000及以上的操作系统上提供并支持CCID驱动,使设备生产厂商可以轻松的开发 使用符合CCID接口标准的设备。同时,CCID接口标准支持PC (Personal Computer个人计 算机)/SC(Smart Card智能卡)接口调用,使广大开发者可以方便的对智能密钥设备进行 开发操作。在其他开源操作系统如LINUX的众多版本上,也有许多开源的CCID驱动可供开 发者和使用者使用。 在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下缺点 CCID协议是一个单通道协议,支持多卡槽的访问,但微软的CCID驱动在对读卡器操作时,仅可以对一个卡槽进行访问。
技术实现思路
为了实现CCID协议下的多卡槽访问,本专利技术实施例提供了 一种实现多卡座访问 的方法和装置。所述技术方案如下 —种实现多卡槽访问的方法,其特征在于,所述方法包括 多卡槽的CCID设备与主机建立连接,将至少一对用来实现应答管道和命令管道 的IN/OUT端点声明为BULK-IN和BULK-OUT端点,将至少一个用来实现事件通知管道的IN 端点声明为中断端点,并向所述主机声明其自身是符合CCID接口标准的设备以及自身支 持的卡槽数; 主机对所述多卡槽的CCID设备进行访问; 所述多卡槽的CCID设备接收BULK-OUT数据包,并根据所述BULK-OUT数据包判断 所述主机下发的CCID命令的类型; 当所述CCID命令类型是通道扩展命令时,则判断所述通道扩展命令是否是通道 切换命令;如果所述通道扩展命令是通道切换命令时,则解析所述通道切换命令,并激活所 述主机欲访问的相应卡槽;如果所述通道扩展命令不是通道切换命令时,则根据所述通道 扩展命令的命令类型进行相应的处理; 当所述CCID命令的类型不是通道扩展命令,则根据所述CCID命令类型进行相应 的处理。 向所述主机声明其自身支持的卡槽数,具体包括 所述CCID设备向所述主机发送卡槽描述符,所述卡槽描述符中使用一个字节表 示CCID设备自身支持的卡槽数。 根据所述BULK-OUT数据包判断所述主机下发的CCID命令的类型,具体包括 所述CCID设备解析符合CCID标准的命令流,拆分所述命令流的包头中的第一个 其中,当所述第一个字节为6B时,表示通道扩展命令。 判断所述通道扩展命令是否是通道切换命令,具体包括 所述CCID设备解析所述通道扩展命令,根据所述通道扩展命令中的标识符字段得到该命令的的命令类型; 其中,所述标识符是自定义标识符。 解析所述通道切换命令,并激活所述主机欲访问的相应卡槽,具体包括 所述CCID设备中的固件程序拆分所述通道切换命令的包头; 通过计算所述通道切换命令包头中的数据长度标志,获知数据包的长度及所述数 据包在所述CCID设备收发缓冲中的位置,得到所述通道切换命令数据包中的标识符,所述 标识符用于标识所述通道切换命令的具体用途; 如果所述标识符表示该通道切换命令是用于卡槽切换的,则查看所述通道切换命 令的第13个字节,得到本条通道切换命令所要访问的卡槽序号; 通过所述CCID设备的电路控制程序单元将所述卡槽序号所对应的卡槽激活。所述方法还包括判断被激活卡槽中是否有智能卡插拔事件信息; 如果有,则向所述主机返回符合CCID标准的智能卡插拔事件信息; 如果没有,则继续执行所述多卡槽的CCID设备接收BULK-OUT数据包的步骤。 所述判断是否有智能卡插拔事件信息,具体包括 判断所述CCID设备的收发缓冲中是否有所述智能卡插拔事件信息,所述智能卡 插拔事件信息由所述CCID设备在接收到有智能卡插入或拔出的中断信号时写入到所述收 发缓冲中。 —种多卡槽的CCID设备,所述设备包括接口模块、主控模块、判断模块和卡槽切 换电路模块; 所述接口模块,分别与主机和所述主控模块相连接,用于实现所述主机与所述主 控模块之间的信息交互; 所述主控模块,分别与所述接口模块和所述判断模块相连接,用于控制所述接口 模块接收主机下发的命令流,控制所述判断模块接收智能卡发送的应答,控制所述判断模 块发送命令流中的数据包到所述智能卡,控制所述接口模块发送符合CCID标准的应答数 据包到所述主机; 所述判断模块,分别与所述主控模块和所述卡槽切换电路模块相连接,用于判断 CCID设备中是否有智能卡插拔事件信息,并将所述智能卡插拔事件信息通过所述主控模块 返回给所述主机, 所述卡槽切换电路模块,分别与所述判断模块和卡槽相连接,用于接收所述主控 模块发送的命令流;如果接收到所述主控模块发送的通道切换命令,则根据卡槽序列号激 活相应的卡槽;如果接收到所述主控模块发送的其他命令,则将所述其他命令发送给所述智能卡,并将所述智能卡的应答数据包发送给所述判断模块。所述接口模块具体包括描述符设置单元和端点设置单元; 所述描述符设置单元,用于设置符合CCID标准中规定的设备类型描述符及卡槽 描述符;所述CCID设备通过所述设备类型描述符向主机声明自身是CCID设备,通过所述卡 槽描述符向主机声明自身支持的卡槽数; 所述端点设置单元,用于将至少一对用来实现应答管道和命令管道的IN/OUT端 点设置为BULK-IN和BULK-OUT端点,将至少一个用来实现事件通知管道的IN端点声明为 中断端点。 所述主控模块具体包括 接收单元,用于接收所述主机通过所述接口模块发送的命令流,及接收智能卡通 过所述判断模块返回的应答; 解析单元,用于解析所述接收单元接收到的所述命令流; 拆分单元,用于拆分所述解析单元解析出来的命令流的包头中的第一个字节,得到该命令流的命令类型,其中,当第一个字节为6B时,表示通道扩展命令; 计算单元,用于根据所述接收单元接收到的命令流中的数据长度标志,确定命令流中的数据包长度和所述数据包在所述CCID设备收发缓冲中的位置; 应答组成单元,用于将应答组成符合CCID标准的应答数据包; 第一判断单元,用于根据所述接收模块接收到的BULK-OUT数据包判断主机下发的CCID命令的类型; 第二判断单元,用于当所述第一判断单元的判断结果为通道扩展命令时,判断所 述通道扩展命令是否是通道切换命令; 第一处理单元,用于如果所述第一判断单元的判断结果为不是通道扩展命令时, 根据所述CCID命令类型进行相应的处理; 第二处理单元,用于如果所述第二判断单元的判断结果为通道扩展命令不是通道 切换命令时,根据所述通道扩展命令的命令类型进行相应的处理; 发送单元,用于发送所述主机下发的命令流给所述智能卡,及发送智能卡返回的 应答给所述主机。 所述第二判断单元具体包括 拆分子单元,用于拆分通道切换命本文档来自技高网...

【技术保护点】
一种实现多卡槽访问的方法,其特征在于,所述方法包括:多卡槽的CCID设备与主机建立连接,将至少一对用来实现应答管道和命令管道的IN/OUT端点声明为BULK-IN和BULK-OUT端点,将至少一个用来实现事件通知管道的IN端点声明为中断端点,并向所述主机声明其自身是符合CCID接口标准的设备以及自身支持的卡槽数;主机对所述多卡槽的CCID设备进行访问;所述多卡槽的CCID设备接收BULK-OUT数据包,并根据所述BULK-OUT数据包判断所述主机下发的CCID命令的类型;当所述CCID命令类型是通道扩展命令时,则判断所述通道扩展命令是否是通道切换命令;如果所述通道扩展命令是通道切换命令时,则解析所述通道切换命令,并激活所述主机欲访问的相应卡槽;如果所述通道扩展命令不是通道切换命令时,则根据所述通道扩展命令的命令类型进行相应的处理;当所述CCID命令的类型不是通道扩展命令,则根据所述CCID命令类型进行相应的处理。

【技术特征摘要】
一种实现多卡槽访问的方法,其特征在于,所述方法包括多卡槽的CCID设备与主机建立连接,将至少一对用来实现应答管道和命令管道的IN/OUT端点声明为BULK-IN和BULK-OUT端点,将至少一个用来实现事件通知管道的IN端点声明为中断端点,并向所述主机声明其自身是符合CCID接口标准的设备以及自身支持的卡槽数;主机对所述多卡槽的CCID设备进行访问;所述多卡槽的CCID设备接收BULK-OUT数据包,并根据所述BULK-OUT数据包判断所述主机下发的CCID命令的类型;当所述CCID命令类型是通道扩展命令时,则判断所述通道扩展命令是否是通道切换命令;如果所述通道扩展命令是通道切换命令时,则解析所述通道切换命令,并激活所述主机欲访问的相应卡槽;如果所述通道扩展命令不是通道切换命令时,则根据所述通道扩展命令的命令类型进行相应的处理;当所述CCID命令的类型不是通道扩展命令,则根据所述CCID命令类型进行相应的处理。2. 如权利要求1所述的实现多卡槽访问的方法,其特征在于,向所述主机声明其自身支持的卡槽数,具体包括所述CCID设备向所述主机发送卡槽描述符,所述卡槽描述符中使用一个字节表示 CCID设备自身支持的卡槽数。3. 如权利要求1所述的实现多卡槽访问的方法,其特征在于,根据所述BULK-OUT数据 包判断所述主机下发的CCID命令的类型,具体包括所述CCID设备解析符合CCID标准的命令流,拆分所述命令流的包头中的第一个字节, 得到该命令流的命令类型;其中,当所述第一个字节为6B时,表示通道扩展命令。4. 如权利要求1所述的实现多卡槽访问的方法,其特征在于,判断所述通道扩展命令 是否是通道切换命令,具体包括所述CCID设备解析所述通道扩展命令,根据所述通道扩展命令中的标识符字段得到 该命令的的命令类型;其中,所述标识符是自定义标识符。5. 如权利要求1所述的实现多卡槽访问的方法,其特征在于,解析所述通道切换命令, 并激活所述主机欲访问的相应卡槽,具体包括所述CCID设备中的固件程序拆分所述通道切换命令的包头;通过计算所述通道切换命令包头中的数据长度标志,获知数据包的长度及所述数据包 在所述CCID设备收发缓冲中的位置,得到所述通道切换命令数据包中的标识符,所述标识 符用于标识所述通道切换命令的具体用途;如果所述标识符表示该通道切换命令是用于卡槽切换的,则查看所述通道切换命令的 第13个字节,得到本条通道切换命令所要访问的卡槽序号;通过所述CCID设备的电路控制程序单元将所述卡槽序号所对应的卡槽激活。6. 如权利要求1所述的实现多卡槽访问的方法,其特征在于,所述方法还包括判断被 激活卡槽中是否有智能卡插拔事件信息;如果有,则向所述主机返回符合CCID标准的智能卡插拔事件信息;如果没有,则继续执行所述多卡槽的CCID设备接收BULK-OUT数据包的步骤。7. 如权利要求6所述的实现多卡槽访问的方法,其特征在于,所述判断是否有智能卡插拔事件信息,具体包括判断所述CCID设备的收发缓冲中是否有所述智能卡插拔事件信息,所述智能卡插拔 事件信息由所述CCID设备在接收到有智能卡插入或拔出的中断信号时写入到所述收发缓 冲中。8. —种多卡槽的CCID设备,其特征在于,所述设备包括接口模块、主控模块、判断模 块和卡槽切换电路模块;所述接口模块,分别与主机和所述主控模块相连接,用于实现所述主机与所述主控模 块之间的信息交互;所述主控模块,分别与所述接口模块和所述判断模块相连接,用于控制所述接口模块...

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:北京飞天诚信科技有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1