本发明涉及计算机领域,具体涉及一种通信接口的功能复用方法及装置。
背景技术:
通信接口是计算机和外部系统进行连接、交互的接口,比如较为常见的通用串行总线(Universal Serial Bus,USB)接口,采用让计算机主机和外设设备进行通讯的串行总线标准。目前市场上大部分无线网卡都是基于USB接口。而基于USB接口的无线网卡设备往往需要同时枚举(enumeration)多个接口(interface),并在不同的接口上实现不同的功能,典型的功能有:
Diag接口,用以实现设备诊断信息的输出、设备控制等;
AT接口,用以实现发送和接收AT指令;
MODEM(调制解调器)接口,用以实现PPP(点对点协议)拨号;
VOUSB接口,用以实现语音数据传输;
SIM-reader接口,用以实现智能卡访问;
GPS(全球定位系统)接口,用以实现定位数据接收;
Mass-Storage接口,用以实现大容量存储设备);
NDIS(网络驱动接口规范)接口,用以实现虚拟以太网卡。
根据USB协议,每个USB接口都由一定数量的端点(Endpoint)组成,协议规定USB最多可以提供16对端点。而在一些低成本的硬件平台上,USB控制器为了节约成本,往往提供的端点数量会非常有限,不足以满足无线网卡设备同时枚举多个接口、实现多个功能的需求。要解决这个问题,目前通用的做法是让硬件断电重启、或者不断电而通过USB重枚举的方式实现功能的切换,这两种方式的弊端在于其切换过程势必会影响整个无线网卡设备在 短时间内无法使用。
技术实现要素:
本发明要解决的技术问题是提供一种可以在一个通信接口实现多个功能动态切换的方案。
为了解决上述问题,本发明提供了一种通信接口的功能复用方法,包括:
当外部设备连接主机后,将所述外部设备的通信接口所支持的属于同一驱动类型的各功能通知给所述主机;
所述外部设备接收所述主机发送的设置指令,按照所述设置指令确定所述主机所选择的功能,将所述通信接口的数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈。
可选地,所述外部设备为通用串行总线USB设备,所述通信接口为USB接口,所述设置指令为USB设置指令。
可选地,所述将外部设备的通信接口所支持的属于同一驱动类型的各功能通知给所述主机包括:
将所述外部设备的通信接口所支持的属于同一驱动类型的各功能的指示信息携带在字符串描述符中,将所述字符串描述符发送给所述主机。
可选地,所述将外部设备的通信接口所支持的属于同一驱动类型的各功能通知给所述主机包括:
确定所述外部设备的通信接口所支持的属于同一驱动类型的各功能;将各功能的指示信息形成序列发送给所述主机。
可选地,所述设置指令中通过功能的指示信息在所述序列中的位置指示所选择的功能。
可选地,所述功能的指示信息为功能对应的关键字。
一种通信接口的功能复用方法,包括:
主机收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动 类型的功能时,在所述多个属于同一驱动类型的功能中选择一个功能,并将所选择的功能通过设置指令通知所述外部设备;
所述主机根据所选择的功能,将与所述通信接口连接的数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈。
可选地,所述外部设备为通用串行总线USB设备,通信接口为USB接口,所述设置指令为USB设置指令。
可选地,所述主机收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能包括:
所述主机收到所述外部设备发送的字符串描述符,所述字符串描述符中携带了所述外部设备的通信接口所支持的属于同一驱动类型的多个功能的指示信息。
可选地,所述主机收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能包括:
所述主机收到所述外部设备发送的序列,所述序列是由所述外部设备的通信接口所支持的属于同一驱动类型的多个功能的指示信息形成的序列。
可选地,所述主机在所述设置指令中通过功能的指示信息在所述序列中的位置指示所选择的功能。
可选地,所述功能的指示信息为功能对应的关键字。
一种通信接口的功能复用装置,设置于外部设备中,包括:
配置上报模块,用于当所述外部设备连接主机后,将所述外部设备的通信接口所支持的属于同一驱动类型的各功能通知给所述主机;
功能配置模块,用于接收所述主机发送的设置指令,按照所述设置指令确定所述主机所选择的功能,将所述通信接口的数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈。
可选地,所述外部设备为通用串行总线USB设备,通信接口为USB接口,所述设置指令为USB设置指令。
可选地,所述配置上报模块将外部设备的通信接口所支持的属于同一驱动类型的各功能通知给所述主机是指:
所述配置上报模块将所述外部设备的通信接口所支持的属于同一驱动类型的各功能的指示信息携带在字符串描述符中,将所述字符串描述符发送给所述主机。
可选地,所述配置上报模块将外部设备的通信接口所支持的属于同一驱动类型的各功能通知给所述主机是指:
所述配置上报模块确定所述外部设备的通信接口所支持的属于同一驱动类型的各功能;将各功能的指示信息形成序列,发送给所述主机。
可选地,所述设置指令中通过功能的指示信息在所述序列中的位置指示所选择的功能。
可选地,所述功能的指示信息为功能对应的关键字。
一种通信接口的功能复用装置,设置于主机中,包括:
功能选择模块,用于当收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能时,在所述多个属于同一驱动类型的功能中选择一个功能,并将所选择的功能通过设置指令通知所述外部设备;
接口功能配置模块,用于根据所述功能选择模块所选择的功能,将与所述通信接口连接的数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈。
可选地,所述外部设备为通用串行总线USB设备,通信接口为USB接口,所述设置指令为USB设置指令。
可选地,所述功能选择模块收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能是指:
所述功能选择模块收到所述外部设备发送的字符串描述符,所述字符串描述符中携带了所述外部设备的通信接口所支持的属于同一驱动类型的多个功能的指示信息。
可选地,所述功能选择模块收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能是指:
所述功能选择模块收到所述外部设备发送的序列,所述序列是由所述外部设备的通信接口所支持的属于同一驱动类型的多个功能的指示信息形成的序列。
可选地,所述功能选择模块在所述设置指令中通过功能的指示信息在所述序列中的位置指示所选择的功能。
可选地,所述功能的指示信息为功能对应的关键字。
本发明的方案能够在不影响其它接口且无需重启的情况下,对某一通信接口进行功能重新配置,从而使得通信接口可以根据需要在驱动类型相同的多个功能中选择当前要实现的功能,这就意味着同一个通信接口的功能可以动态切换,而且在不同时间段能够提供不同的功能,实现了通信接口的功能的分时复用。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1是实施例一的通信接口的功能复用方法的流程示意图;
图2是实施例二的通信接口的功能复用方法的流程示意图;
图3是实施例三的通信接口的功能复用方法装置的结构示意图;
图4是实施例四的通信接口的功能复用方法装置的结构示意图;
图5是实施例五的流程示意图图;
图6是实施示例一的无线网卡类设备DIAG功能、AT功能和VOUSB 功能复用一个USB接口的流程示意图。
具体实施方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明是针对通信接口上驱动类型相同、数据格式不同的功能进行复用,比如针对无线网卡的USB接口,AT、MODEM、Diag、VOUSB、SIM-reader、GPS功能等同属于串口类型,加载同样类型的串口PC(个人电脑)驱动,区别在于传输的数据格式不同,因此可以采用本发明的方案进行复用。
实施例一、一种通信接口的功能复用方法,如图1所示,包括:
S110、当外部设备连接主机后,将所述外部设备的通信接口所支持的属于同一驱动类型的各功能通知给所述主机;
S120、所述外部设备接收所述主机发送的设置指令,按照所述设置指令确定所述主机所选择的功能,将所述通信接口的数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈。
其中,将通信接口的数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈具体是指,所述通信接口发送的数据通过所连接的协议栈进行封装处理,所接收的数据通过所连接的协议栈进行解析处理。
其中,通知的方式可以包括以下任一种或其任意组合:
外部设备发送通信接口所支持的功能的指示信息给主机;
外部设备发送实现约定的、表示通信接口支持默认的一个或多个功能的特定信息(比如全0信息)给主机;
外部设备发送通信接口所支持的功能的组合对应的标识给主机,比如支 持功能A和B时对应001,支持功能A、B、C时对应010等。
其中,当通信接口支持多个功能时,主机根据需要或预定条件在通信接口所支持的功能中进行选择;所述需要包括用户的需要和主机本身的需要,比如根据用户操作进行选择,或根据主机当前需要通信接口完成的功能进行选择;所述预定条件可以由用户设置和更改,比如设置当主机运行导航程序时,选择USB接口的GPS功能。
本实施例通过由外部设备通知主机通信接口所支持的属于同一驱动类型的功能,并按主机的选择连接到相应的协议栈,从而可以在无需下电的情况下切换通信接口的功能。
可选地,所述外部设备为通用串行总线USB设备,所述通信接口为USB接口,所述设置指令为USB设置指令。
可选地,将所述外部设备的通信接口所支持的各功能通知给所述主机包括:
将所述外部设备的通信接口所支持的属于同一驱动类型的各功能的指示信息携带在字符串描述符中,将所述字符串描述符发送给所述主机。
可选地,将所述外部设备的通信接口所支持的各功能通知给所述主机包括:
确定通信接口所支持的属于同一驱动类型的各功能;
将所确定的各功能的指示信息形成序列,发送给所述主机。
其中,功能的指示信息在所述序列中的排列顺序可以随机,也可以根据预定的规则排序,比如按照功能的指示信息的首字母在字母表中的顺序进行排序,或按照各功能的优先级进行排序。
可选地,所述功能的指示信息可以但不限于为功能对应的关键字,比如USB接口所支持的属于同一驱动类型的功能包括Diag接口、AT接口、VOUSB接口,确定这三个功能对应的关键字分别为Diag、AT、VOUSB;将三个关键字以分隔符“\”连接,形成序列Diag\AT\VOUSB。
所述功能的指示信息还可以包括其它形式的指示信息,比如功能对应的数值或标识,所述主机和外部设备中均保存各功能和数值/标识的对应关系, 根据所述对应关系,外部设备可以得到和功能对应的数值/标识序列,所述主机可以确定数值/标识序列对应的各功能。还可以用二进制序列中各个位的数值作为指示信息,比如属于同一驱动类型共有5种功能,则采用5位的二进制序列,其中每一位和每一种功能一一对应,为“1”时表示支持该功能,为“0”时表示不支持该功能。
可选地,所述设置指令中通过功能的指示信息在所述序列中的位置指示所选择的功能。比如序列Diag\AT\VOUSB中,Diag的位置是第一,AT的位置是第二,VOUSB的位置是第三(或倒数第一)。
所述位置可以但不限于以序号表示。
比如上例中的Diag序号为1,AT序号为2,VOUSB序号为3。
实施例二、一种通信接口的功能复用方法,如图2所示,包括:
S210、主机收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能时,在所述多个属于同一驱动类型的功能中选择一个功能,并将所选择的功能通过设置指令通知所述外部设备;
S220、所述主机根据所选择的功能,将与所述通信接口连接的数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈。
可选地,所述外部设备为通用串行总线USB设备,所述通信接口为USB接口,所述设置指令为USB设置指令。
可选地,所述主机收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能包括:
所述主机收到所述外部设备发送的字符串描述符,所述字符串描述符中携带了所述外部设备的通信接口所支持的属于同一驱动类型的多个功能的指示信息。
可选地,所述主机收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能包括:
所述主机收到所述外部设备发送的序列,所述序列是由所述外部设备的通信接口所支持的属于同一驱动类型的多个功能的指示信息形成的序列。
可选地,所述主机在所述设置指令中通过功能的指示信息在所述序列中的位置指示所选择的功能。
所述位置可以但不限于以序号表示。
可选地,所述功能的指示信息可以但不限于为功能对应的关键字。
实施例三、一种通信接口的功能复用装置,设置于外部设备中,如图3所示,包括:
配置上报模块101,用于当所述外部设备连接主机后,将通信接口所支持的属于同一驱动类型的各功能通知给所述主机;
功能配置模块102,用于接收所述主机发送的设置指令,按照所述设置指令确定所述主机所选择的功能,将所述通信接口的数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈。
可选地,所述外部设备为通用串行总线USB设备,所述通信接口为USB接口,所述设置指令为USB设置指令。
可选地,所述配置上报模块101将外部设备的通信接口所支持的属于同一驱动类型的各功能通知给所述主机是指:
所述配置上报模块将所述外部设备的通信接口所支持的属于同一驱动类型的各功能的指示信息携带在字符串描述符中,将所述字符串描述符发送给所述主机。
可选地,配置上报模块101将外部设备的通信接口所支持的属于同一驱动类型的各功能通知给所述主机是指:
所述配置上报模块101确定所述外部设备的通信接口所支持的属于同一驱动类型的各功能;将各功能的指示信息形成序列,携带在所述通信接口的字符串描述符中发送给所述主机。
可选地,所述设置指令中通过功能的指示信息在所述序列中的位置指示所选择的功能。
所述位置可以但不限于以序号表示。
可选地,所述功能的指示信息可以但不限于为功能对应的关键字。
实施例四、一种通信接口的功能复用装置,设置于主机中,如图4所示,包括:
功能选择模块104,用于当收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能时,在所述多个属于同一驱动类型的功能中选择一个功能,并将所选择的功能通过设置指令通知所述外部设备;
接口功能配置模块103,用于根据所述功能选择模块104所选择的功能,将与所述通信接口连接的数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈。
可选地,所述外部设备为通用串行总线USB设备,所述通信接口为USB接口,所述设置指令为USB设置指令。
可选地,所述功能选择模块104收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能是指:
所述功能选择模块104收到所述外部设备发送的字符串描述符,所述字符串描述符中携带了所述外部设备的通信接口所支持的属于同一驱动类型的多个功能的指示信息。
可选地,所述功能选择模块104收到外部设备通知所述外部设备的通信接口支持多个属于同一驱动类型的功能是指:
所述功能选择模块104收到所述外部设备发送的序列,所述序列是由所述外部设备的通信接口所支持的属于同一驱动类型的多个功能的指示信息形成的序列。
可选地,所述功能选择模块104在所述设置指令中通过功能的指示信息在所述序列中的位置指示所选择的功能。
所述位置可以但不限于以序号表示。
可选地,所述功能的指示信息可以但不限于为功能对应的关键字。
实施例五、一种USB接口的功能复用方法。
根据USB协议的规定,当USB设备插入计算机后,计算机的操作系统下发用于获取描述符的指令来索要USB设备的设备描述符(device descriptor)、配置描述符(configuration descriptor)、接口描述符(interface descriptor)以及端点描述符(endpoint descriptor)。其中接口描述符中的类bInterfaceClass、子类bInterfaceSubClass和协议码bInterfaceProtocol三个字段决定了该接口的功能属性以及所要加载的PC驱动类型;而接口描述符中的iInterface字段对应的String descriptor(字符串描述符)则是对该接口的字符串描述;接口描述符中的bInterfaceNumber字段则对应这个接口的编号,在所述计算机向此接口发送命令时,需要以该编号来填充命令。本方案基于上述USB协议规范实现同一个USB接口上的多个功能复用。
首先要实现的是USB设备的USB接口的功能信息上报:在USB设备上报设备描述符、配置描述符、接口描述符、端点描述符之后,如果某个USB接口支持功能复用,则生成所支持的属于同一驱动类型的功能对应的关键字的序列,携带在字符串描述符中上报给主机;
其次要实现USB接口功能的选择和设定:USB协议规定可以发送厂商自定义的USB设置指令到某一USB接口,本实施例中主机获得USB接口所支持的属于同一驱动类型的功能的序列后,以功能对应的关键字在所述序列中的位置为参数,向USB设备发送USB设置指令,设置所述USB接口的功能;所述位置可以但不限于用序号表示,比如所述功能的关键字的序列为功能A\功能B\功能C,则功能A对应的序号为1,功能B对应的序号为2,功能C对应的序号为3,以此类推。
最后实现USB接口上对应功能的配置和运行:在USB接口功能设置后,主机和设备同时根据所选择的功能,将所述USB接口的USB数据接收通道和/或数据发送通道连接到与所选择的功能对应的协议栈,之后开始正常的数据收发和处理。
与之对应的,本实施例中整个系统主要由位于USB设备端的配置上报模块、功能配置模块和位于主机端的接口功能配置模块、功能选择模块四个模块组成,其详细的功能将在下面阐述。
本实施例中模块间的结构示意图如图3、4所示,包括:
设备侧的配置上报模块101,用于设置当前有效的配置信息,收到GET_DESCRIPTOR等指令后将各种描述符信息上报给主机(host),并生成所支持的功能对应的关键字序列,携带在字符串描述符中上报给host;;
设备侧的功能配置模块102,用于接收主机的USB设置指令,并根据所述设置指令中所指示的功能配置与当前USB接口配套的协议栈;
是主机侧的接口功能配置模块103,用于与设备配置上报模块通信,完成USB命令的接收发送,并上报USB接口所支持的功能到功能选择模块;
主机侧的功能选择模块104,用于配置管理主机接口功能配置模块,完成USB接口功能的选择,并通过所述接口功能配置模块或直接通知设备所选择的功能。
图5是本实施例中实施策略流程图,包括步骤201~210:
步骤201:USB设备插入主机;
步骤202:设备的配置上报模块上报设备的各种描述符信息,包含设备描述符、配置描述符、接口描述符、端点描述符等;
步骤203:如果设备的USB接口支持多功能复用,则设备的配置上报模块使用所支持的属于同一驱动类型的功能对应的关键字组合生成序列,携带在字符串描述符中,上报给主机;
步骤204:主机的功能选择模块从主机USB配置模块中获得设备上报的字符串描述符,解析后获得该USB设备的USB接口支持的属于同一驱动类型的功能序列;
步骤205:主机的功能选择模块判断是否选择默认的USB接口功能,是则进行206,不是则进行207;
步骤206、主机的功能选择模块不发送额外的USB指令,仅配置所述默认功能对应的协议栈用于USB接口数据的收发和处理;
步骤207:主机的功能选择模块选择其它USB接口功能,发送含有所选功能对应的序号的USB设置指令给设备;
步骤208:判断设备功能设置是否成功;如果失败,则进行209;如果成功则进行210;
步骤209:异常退出,并通知结果给主机侧USB配置模块,同时进入异常处理流程;
步骤210:设备侧的功能配置模块和主机侧的接口功能配置模块则各自选择对应的协议栈开始工作。
实施示例一:
典型地,在USB无线网卡领域,设备通常枚举多个USB接口,其中一个USB接口使用上述方案实现了DIAG\AT\VOUSB功能复用,即此USB接口可以同时支持这三个功能,图6是本实施示例的示意流程图,详细步骤说明如下:
步骤301、USB设备插入计算机主机后设备的配置上报模块开始上报设备的各种描述符信息;
步骤302、设备的配置上报模块生成所连接的USB接口“Diag\AT\VOUSB USB Interface”的字符串描述符,并上报给主机的接口功能配置模块;其中,Diag\AT\VOUSB为功能的关键字序列;三个功能的关键字Diag、AT、VOUSB之间用“\”隔开;
步骤303主机的功能选择模块解析USB接口的字符串描述符为:该接口支持三种功能复用,依次为DIAG(#1),AT(#2),VOUSB(#3)。主机的功能选择模块选择需要支持的功能,如果此时需要DIAG功能,则进行步骤303a和304a;如果需要AT功能,则进行步骤303b和304b;如果需要VOUSB功能,则进行步骤303c和304c;
303a、以#1为参数,下发自定义的USB设置指令到设备,将USB接口功能设置为DIAG功能;
303b、以#2为参数,下发自定义的USB设置指令到设备,将USB接口功能设置为AT功能;
303c、以#2为参数,下发自定义的USB设置指令到设备,将USB接口 功能设置为VOUSB功能;
步骤304a、设备的功能配置模块和主机的接口功能配置模块分别根据将对应于DIAG功能的协议栈与USB接口的数据接收通道和/或数据发送通道相连,开始数据传输和业务处理;
步骤304b、设备的功能配置模块和主机的接口功能配置模块分别根据将对应于AT功能的协议栈与USB接口的数据接收通道和/或数据发送通道相连,开始数据传输和业务处理;
步骤304c、设备的功能配置模块和主机的接口功能配置模块分别根据将对应于VOUSB功能的协议栈与USB接口的数据接收通道和/或数据发送通道相连,开始数据传输和业务处理;
通过上述步骤,可以完成USB接口的功能复用实施。
此实施示例展示了USB接口的功能复用方案,可以有效解决低成本硬件平台上,由于Endpoint资源不足带来的无法同时使用多个功能的问题,更进一步地,这种方案也可以用在实现功能切换,避免硬件掉电等场景。
本实施例所述的主机(host)可以为计算机,所述的USB设备可以为无线网卡、无线数据卡等。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。