USB连接方法及装置、电子设备及存储介质
文献发布时间:2023-06-19 12:19:35
技术领域
本申请涉及通信技术领域,特别涉及一种用于USB主机的USB连接方法、USB连接装置、电子设备及存储介质。
背景技术
对于采用USB连接的USB主机与USB设备,通常利用USB协议或者说USB模式进行数据传输。随着智能业务的发展,上层应用程序的业务越来越丰富,对于某些特殊应用程序,往往需要在USB主机安装特殊驱动并耗费较长时间,使得用户体验较差。
尤其对于车辆领域,当手机与车辆进行USB连接时,现有的手机和车机的互联主要有两种方式,一种是Google的AOA,AOA协议只支持了简单的数据收发接口,但是对于应用层现有的网络库是不支持的,如果开发者基于业务需要想在手机端和车机端建立WebSocket,这种情况下AOA是不支持的,导致AOA协议对于开发者来说不够灵活。另一种是Apple的EAP协议,目前要使用EAP协议必须做MFI认证,首先在MFI官网上申请资质认证,其次还需要购买Apple的加密芯片集成在车机上,增加了软硬件成本。目前,有些技术将USB连接枚举为虚拟网卡,但没有具体地实现方式,或者枚举过程较为复杂,通常经过两次或多次枚举,实现方式较为复杂。
发明内容
有鉴于此,本申请的实施例提供了一种用于USB主机的USB连接方法、一种用于USB设备的USB连接方法、USB连接装置、电子设备及存储介质。
本申请提供了一种用于USB主机的USB连接方法,包括:
当检测到USB连接请求时枚举以确定目标USB设备;
将所述目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机将当前模式切换至NCM模式及对所述目标NCM设备进行配置;
发送切换命令至所述目标USB设备以使得所述目标USB设备切换至所述NCM模式。
本申请还提供了一种USB设备的USB连接方法,包括:
接收USB主机发送的切换命令;
根据所述切换命令将当前模式切换至所述NCM模式;
利用网络连接状态机进行第二设备状态配置及第二网络连接配置,并根据所述第二设备状态配置及所述第二网络连接配置与所述主机USB设备建立连接。
本申请还提供了一种用于USB主机的USB连接装置,包括:
枚举模块,用于当检测到USB连接请求时枚举以确定目标USB设备;
重新枚举模块,用于将所述目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机将当前模式切换至NCM模式及对所述目标NCM设备进行配置;
发送模块,用于发送切换命令至所述目标USB设备以使得所述目标USB设备切换至所述NCM模式。
本申请还提供了一种USB设备的USB连接装置,包括:
接收模块,用于接收USB主机发送的切换命令;
切换模块,用于根据所述切换命令将当前模式切换至所述NCM模式;
配置模块,用于利用网络连接状态机进行第二设备状态配置及第二网络连接配置,并根据所述第二设备状态配置及所述第二网络连接配置与所述主机USB设备建立连接。
本申请还提供了一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,实现上述实施方式的USB连接方法。
本申请还提供了一种计算机程序的非易失性计算机可读存储介质,当所述计算机程序被一个或多个处理器执行时,实现上述实施方式的USB连接方法。
如此,本申请实施方式的USB连接方法、连接装置、电子设备通过当检测到USB连接请求时枚举以确定目标USB设备,将目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机将当前模式切换至NCM模式及对目标NCM设备进行配置,发送切换命令至目标USB设备以使得目标USB设备切换至NCM模式。使得USB设备与USB主机连接后,可通过切换至NCM模式使得构建一个基于IP的传输通道,为USB连接增加了特定的网络类型-NCM,从而上层应用程序或者其他服务可以使用标准的Android API在NCM模式中传输数据。相对于USB模式,使用标准网卡传输数据对于上层应用来说,一方面无需增加特殊的驱动,另一方面支持的业务的网络库更多,从而有效地提高了上层应用的开发效率。其次,当USB设备与USB主机的NCM模式的连接成功后,对于其他上层应用程序来说可通过如网卡的IP地址及端口就能建立webSocket等网络服务及其它网络数据传输。解决了目前的车机与移动终端的连接方式中的Google AOA协议无法建立Websocket的问题,支持应用层现有的网络库。另外,无需增加额外的加密芯片集成在车机上,从而有效地降低了软硬件成本。
附图说明
本申请的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解。
图1是本申请某些实施方式的USB连接方法流程示意图;
图2是本申请某些实施方式的USB连接装置模块图;
图3是本申请某些实施方式的USB连接方法流程示意图;
图4是本申请某些实施方式的USB连接方法流程示意图;
图5是本申请某些实施方式的网络状态机流程示意图;
图6是本申请某些实施方式的USB连接方法流程示意图;
图7是本申请某些实施方式的USB连接装置模块图;
图8是本申请某些实施方式的USB连接方法流程示意图;
图9是本申请某些实施方式的USB连接方法流程示意图;
图10是本申请某些实施方式的USB连接装置模块图;
图11是本申请某些实施方式的USB连接方法流程示意图;
图12是本申请某些实施方式的USB连接装置模块图;
图13是本申请某些实施方式的USB连接方法流程示意图。
具体实施方法
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
请参阅图1,本申请提供了一种用于USB主机的USB连接方法,包括:
S10:当检测到USB连接请求时枚举以确定目标USB设备;
S20:将目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机将当前模式切换至NCM模式及对目标NCM设备进行配置;
S30:发送切换命令至目标USB设备以使得目标USB设备切换至NCM模式。
相应地,请参阅图2,本申请实施方式还提供了一种USB连接装置100,本申请实施方式的USB连接方法可以由USB连接装置100实现。USB连接装置100包括枚举模块110、重新枚举模块120及发送模块130。S10可以由枚举模块110实现,S20可以由重新枚举模块120实现,S30可以由发送模块130实现。或者说,枚举模块110用于当检测到USB连接请求时枚举以确定目标USB设备。重新枚举模块120用于将目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机将当前模式切换至NCM模式及对目标NCM设备进行配置。发送模块130用于发送切换命令至目标USB设备以使得目标USB设备切换至NCM模式。
本申请实施方式还提供了一种电子设备。电子设备包括存储器和处理器。存储器中存储有计算机程序,处理器用于当检测到USB连接请求时枚举以确定目标USB设备,将目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机将当前模式切换至NCM模式及对目标NCM设备进行配置,发送切换命令至目标USB设备以使得目标USB设备切换至NCM模式。
具体地,USB连接方法用于USB主机与USB设备之间的连接及后续的数据传输。USB主机为USB总线中作为主设备角色的设备,负责管理USB总线中的数据传输及端口管理。在一个例子中,一个U盘(USB大容量储存设备)和PC电脑通讯,PC可以是USB主机。在另一个例子中,一个手机和车辆或车机通讯,车机可以是USB主机。USB主机包括但不限于:PC电脑、车辆、平板电脑、可穿戴设备、移动终端等具备USB总线中的主设备的电子设备。与USB主机连接进行通讯的电子设备为USB设备。
本申请以车机作为USB主机,手机作为USB设备展开实施例。
可以理解的是,目前手机和车机的有线互联的两种方案:Google的AOA和Apple的EAP。首先,AOA协议只支持了简单的数据收发接口,但是于应用层现有的网络库是不支持的,如果开发者基于业务需要想在手机端和车机端建立WebSocket这种情况AOA是不支持的,故Google的AOA协议对于开发者来说不够灵活。另外,对于Apple的EAP协议,在建立连接时要使用EAP协议必须做MFI认证,首先在MFI官网上申请资质认证,其次还需要增加Apple的加密芯片集成在车机上,增加了软硬件成本。
本申请的USB连接方法在步骤S10中,当检测到USB连接请求时枚举以确定目标USB设备。当USB设备与USB主机连接时,USB主机会执行枚举以找到与之连接的USB设备即就是确定目标USB设备。
在一个例子中,枚举可包括如下过程,首先,USB设备上电后,USB主机集线器检测到有电压变化,将利用自己的中断端点将信息反馈给主控制器有设备连接。USB主机得知新USB设备连上以后,进行集线器复位工作,同时,USB主机持续向集线器发送Get_Port_Status请求,以查询设备是否复位成功。USB主机通过检测USB总线空闲时差分线的高低电压来判断所连接设备的速度类型及检测所连接的全速设备是否是支持高速模式。进一步地,USB主机控制器通过Set_Address请求向USB设备分配一个唯一的地址。在完成这次传输之后,USB设备即目标USB设备进入地址状态(Address State),之后启用新地址继续与USB主机通信,USB主机获取目标USB设备的相关信息。
进一步地,在步骤S20中,将目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机将当前模式切换至NCM模式及对目标NCM设备进行配置。
具体地,当USB主机确定目标USB设备后,进行重新枚举。重新枚举包括将目标USB设备进行重新枚举至目标NCM设备,其中,目标NCM设备支持NCM模式。目标NCM设备包括虚拟网卡或其它可用于建立网络连接的设备。另外,枚举可通过随机或指定某一NCM设备作为目标NCM设备。为便于说明,后续以虚拟网卡作为目标NCM设备展开实施例。
将目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机对目标NCM设备进行配置,以此实现将当前USB连接模式切换至NCM模式。其中,NCM模式为网络连接管理模式(Network Connection Management,NCM),在NCM模式下,USB主机与目标USB设备可通过网络连接管理进行数据传输,其数据传输可通过IP通道进行传输,包括IPv4、IPv6等传输协议。当切换完成后,USB主机与USB设备通过NCM模式进行连接,或者说在USB主机与USB设备之间建立了一条基于虚拟网卡的IP传输通道,以使得后续USB主机与USB设备之间的数据传输为IP传输。
预设的网络连接状态机可包括准备、连接成功、连接失败等状态。利用预设的网络连接状态机将当前模式切换至NCM模式及对目标NCM设备进行配置,即就是在网络连接状态机的各种状态下完成对目标NCM设备的配置以及最终的切换完成。而当配置失败时,通过网络连接状态机可结束连接或回到原始的USB连接方法。其中,配置包括对虚拟网卡的网址、网关、IP地址、端口等进行设置。即通过对网络连接的自动配置,目标USB设备与USB主机的应用层可通过网络连接状态机配置的相关参数如IP地址进行数据传输。对于IPv4,可通过IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery)进行对端发现并连接。对于IPv6,可通过邻居发现协议NDP(Neighbor Discovery Protocol)进行对端发现并连接。
优选地,请参阅图3,在某些实施方式中,配置包括第一设备状态配置及第一网络连接配置,步骤S20包括:
S21:利用网络连接状态机对目标NCM设备进行第一设备状态配置;
S22:若第一设备状态配置成功,改变网络连接状态机的状态并进行第一网络连接配置。
在某些实施方式中,S21和S22可以由重新枚举模块120来实现。或者说,重新枚举模块120用于利用网络连接状态机对目标NCM设备进行第一设备状态配置,若第一设备状态配置成功,改变网络连接状态机的状态并进行第一网络连接配置。
在某些实施方式中,处理器用于利用网络连接状态机对目标NCM设备进行第一设备状态配置,若第一设备状态配置成功,改变网络连接状态机的状态并进行第一网络连接配置。
具体地,第一设备状态配置包括目标NCM设备的设备状态配置,如设备名称、设备性能、设备版本、设备可用传输类型等。当第一设备状态配置成功后,网络连接状态机将状态改变并进行第一网络连接配置。其中,第一网络连接配置包括IP配置等以实现虚拟网卡的网络连接配置。
优选地,请参阅图4,在某些实施方式中,步骤S21包括:
S211:生成切换事件并根据切换事件改变网络连接状态机为第一状态;
S212:对目标NCM设备进行第一设备状态配置并加载目标NCM设备的驱动程序,第一设备状态配置至少包括设置设备名称、设置传输类型及注册NetworkAgent;
相应地,步骤S22包括:
S221:若第一设备状态配置成功,改变网络连接状态机为第二状态;
S222:对目标NCM设备进行第一网络连接配置,第一网络连接配置至少包括IP配置;
在某些实施方式中,S211和S212、S221和S222可以由重新枚举模块120来实现。或者说,重新枚举模块120用于生成切换事件并根据切换事件改变网络连接状态机为第一状态,对目标NCM设备进行第一设备状态配置并加载目标NCM设备的驱动程序,第一设备状态配置至少包括设置设备名称、设置传输类型及注册NetworkAgent,若第一设备状态配置成功,改变网络连接状态机为第二状态,对目标NCM设备进行第一网络连接配置,第一网络连接配置至少包括IP配置。
在某些实施方式中,处理器用于生成切换事件并根据切换事件改变网络连接状态机为第一状态,对目标NCM设备进行第一设备状态配置并加载目标NCM设备的驱动程序,第一设备状态配置至少包括设置设备名称、设置传输类型及注册NetworkAgent,若第一设备状态配置成功,改变网络连接状态机为第二状态,对目标NCM设备进行第一网络连接配置,第一网络连接配置至少包括IP配置。
具体地,当重新枚举确定目标USB设备后,USB主机的驱动层生成切换事件并将切换事件发送至USB主机的框架层FrameWork,在USB主机的框架层FrameWork中增加SystemService,并在SystemService中预设网络连接状态机。其中,网络连接状态机中包括多个网络状态,在建立连接的过程中,通过状态之间的切换进行配置,从而对建立连接进行管理。
请参阅图5,在一个例子中,网络状态机可包括DefaultState、DisconnectedState、ReadyState、NetWorkConfigurationState和ConnectedState。当USB主机将当前模式切换至NCM模式,驱动层生成切换事件UEvent并上发至FrameWork。FrameWork的SystemService监听到以后,网络状态机根据切换事件UEvent从DisconnectedState进入第一状态ReadyState状态,并对虚拟网卡进行第一设备状态的配置,其中,第一设备状态配置至少包括设置设备名称如虚拟网卡的网卡名、设置传输类型及注册NetworkAgent。设置传输类型可通过在NetworkCapabilities中添加传输类型为:TRANSPORT_USB_NCM,后续上层应用可在构造NetworkRequest对象时将TransportType设置为TRANSPORT_USB_NCM,上层应用即可通过调用Android标准API来通过此目标NCM设备进行数据传输。另外,NetworkCapabilities还可包括如下参数:
NET_CAPABILITY_NOT_METERED(此网络不计费)
NET_CAPABILITY_NOT_ROAMING(表示此网络未漫游)
NET_CAPABILITY_NOT_SUSPENDED(指示此网络当前未挂起)
NET_CAPABILITY_TRUSTED(指示用户已指示对此网络的隐式信任)
setLinkUpstreamBandwidthKbps(1024*1024)(上行带宽1Gbps)
setLinkDownstreamBandwidthKbps(1024*1024)(下行带宽1Gbps,)
通过对上述第一设备状态的配置可确定虚拟网卡的状态,即虚拟网卡的网卡参数及状态。
当确定虚拟网卡后,可通过网络连接自动加载虚拟网卡的驱动程序,从而可进行后续的数据传输。
如此,对某些特殊应用,在首次连接USB主机的USB设备需要安装第三方提供的驱动程序才可使用,对于多个应用则需要在首次使用时安装多个设备的驱动程序,同时可能产生较多系统垃圾,本申请通过切换至NCM模式并自动安装驱动,可提高USB的连接效率,无需等待较长时间,用户体验较好。同时,因应用程序无需依赖接口安装驱动,在一定程度上降低了应用程序与USB连接的耦合度。
在某些实施方式中,在将当前模式切换至NCM模式之前,还可对确定的目标USB设备继续检测,包括但不限于判断是否支持NCM模式,或是否在黑白名单中,即就是通过检测目标USB设备以确定是否可继续切换至NCM模式
当虚拟网卡的第一设备状态的配置成功后,网络状态机进入第二状态NetWorkConfigurationState状态,并对虚拟网卡进行第一网络连接的配置,其中,第一网络连接至少包括IP配置。IP配置至少包括:网址、网关、端口等。同时,IP配置可通过IpClientProxy与Networkstack和Netd通信。反之,当虚拟网卡的第一设备状态的配置失败后,网络状态机重新进入DisconnectedState状态。
进一步地,当第一网络连接的配置成功后进入ConnectedState状态,目标USB设备与USB主机成功建立NCM模式的连接。反之,若第一网络连接的配置失败则再次进入DisconnectedState状态。
如此,通过预设网络连接状态机及其网络状态机对切换及网络连接进行管理,一方面,可对切换事件及其相关配置进行关联,提高切换的效率。另一方面,预设的网络连接状态机提供了对系统层的控制接口,对于上层应用,仅需要了解接口的使用方式就可以方便的进行系统控制,获得系统各个服务的信息,而不需要了解接口的具体实现方式,其实现方式简单有效,同时便于管理,在一定程度上降低了与应用的耦合度。
可以理解的是,当第一网络连接配置成功后,网络为可用状态,USB设备与USB主机的NCM模式的连接成功。对于其他上层应用程序来说可通过如网卡的IP地址及端口就能建立webSocket等网络服务及其它网络数据传输。
本申请通过当检测到USB连接请求时枚举以确定目标USB设备,将目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机将当前模式切换至NCM模式及对目标NCM设备进行配置,并发送切换命令至目标USB设备以使得目标USB设备切换至NCM模式。如此,USB设备与USB主机连接后,可通过切换至NCM模式构建一个基于IP的传输通道,为USB连接增加了特定的网络类型-NCM,从而上层应用程序或者其他服务可以使用标准的AndroidAPI在NCM模式中传输数据。相对于USB模式,使用标准网卡传输数据对于上层应用来说,一方面无需增加特殊的驱动,另一方面支持的业务的网络库更多,从而有效地提高了上层应用的开发效率。其次,对某些特殊应用,对于首次连接USB主机的USB设备需要安装第三方提供的驱动程序才可使用,如此需要在第一次使用时安装多个设备的驱动程序,同时可能产生较多系统垃圾,本申请通过切换至NCM模式并自动安装驱动,可提高USB的连接效率,无需等待较长时间,用户体验较好,同时,因应用程序无需依赖接口安装驱动,在一定程度上降低了应用程序与USB连接的耦合度。再者,解决了目前的车机与移动终端的连接方式中的Google AOA协议无法建立Websocket的问题,支持应用层现有的网络库。另外,无需增加额外的加密芯片集成在车机上,从而有效地降低了软硬件成本。
优选地,请参阅图6,在一种实施方式中,步骤S20之前还可包括:
S01:发送第一指令至目标USB设备并根据目标USB设备返回的第一指令响应判断目标USB设备是否满足预设条件;
S02:当USB设备满足预设条件时,发送第二指令至目标USB设备以确定NCM模式的NCM信息。
相应地,请参阅图7,本申请实施方式的USB连接装置还包括判断模块140,S01和S02可以由判断模块140来实现。或者说,判断模块140用于发送第一指令至目标USB设备并根据目标USB设备返回的第一指令响应判断目标USB设备是否满足预设条件,当USB设备满足预设条件时,发送第二指令至目标USB设备以确定NCM模式的NCM信息。
在某些实施方式中,处理器用于发送第一指令至目标USB设备并根据目标USB设备返回的第一指令响应判断目标USB设备是否满足预设条件,当USB设备满足预设条件时,发送第二指令至目标USB设备以确定NCM模式的NCM信息。
具体地,当枚举确定目标USB设备后,USB主机发送第一指令至目标USB设备,其中,第一指令可包括认证指令0X81,通过认证指令0X81获取USB设备的相关版本信息。当目标USB设备接收到认证指令0X81后,将自身的版本信息在第一指令响应中返回至USB主机,USB主机根据目标USB设备返回的第一指令响应判断目标USB设备是否满足预设条件。其中,预设条件包括目标USB设备是否支持NCM模式,或通过黑白名单查询目标USB设备是否可进行切换等。
优选地,请参阅图8,在一种实施方式中,步骤S01还可包括:
S011:发送第一指令至目标USB设备;
S012:接收目标USB设备返回的第一指令响应以获取目标USB设备的预设参数;
S013:根据预设参数查询目标USB设备是否支持NCM模式;
S014:若目标USB设备支持NCM模式,则确定USB设备满足预设条件;
S015:若目标USB设备不支持NCM模式,则确定USB设备不满足预设条件。
在某些实施方式中,S011-S015可以由判断模块140来实现。或者说,判断模块140用于发送第一指令至目标USB设备,接收目标USB设备返回的第一指令响应以获取目标USB设备的预设参数,根据预设参数查询目标USB设备是否支持NCM模式,若目标USB设备支持NCM模式,则确定USB设备满足预设条件,若目标USB设备不支持NCM模式,则确定USB设备不满足预设条件。
在某些实施方式中,处理器用于发送第一指令至目标USB设备,接收目标USB设备返回的第一指令响应以获取目标USB设备的预设参数,根据预设参数查询目标USB设备是否支持NCM模式,若目标USB设备支持NCM模式,则确定USB设备满足预设条件,若目标USB设备不支持NCM模式,则确定USB设备不满足预设条件。
具体地,USB主机通过发送认证指令0X81即第一指令至目标USB设备,并接收目标USB设备返回的第一指令响应,其中第一指令可包括认证指令0X81,通过认证指令0X81获取USB设备的预设参数,其中,预设参数包括目标USB设备相关版本信息、NCM版本信息等。进一步地,USB主机根据第一指令响应返回的预设参数即相关版本信息等查询该目标USB设备是否支持NCM模式,若支持NCM模式,即就是满足了预设条件,若目标USB设备不支持NCM模式,则确定USB设备不满足预设条件。
在另一种实施方式中,USB主机预设黑白名单,在黑白名单中记录有多个USB设备的数据。其中,对于白名单中的USB设备,可继续进行连接传输,反之,对于黑名单中的USB设备,则停止连接。当确定目标USB设备后,判断目标USB设备是否支持NCM模式,当目标USB设备支持NCM模式时,继续判断目标USB设备是否在黑白名单中,若不在黑白名单数据库中,或在黑白名单的白名单中,即就是满足了预设条件。在另一种实施方式中,也可不进行判断目标USB设备是否支持NCM模式,而直接通过黑白名单判断是否满足预设条件。
可以理解的是,若不满足预设条件,则停止切换,可以原USB连接方式,或停止USB连接,对此不作限制,根据实际情况构建后续业务流程。
进一步地,当USB设备满足预设条件时,发送第二指令至目标USB设备以确定NCM模式的NCM信息。其中,第二指令包括指令0X82,指令中可包含USB主机的NCM版本信息,当目标USB设备接收到包含NCM版本信息的OX82指令时,可将USB主机的NCM版本信息发送至框架协议层,可进行NCM版本信息查询、对USB主机进行鉴权认证或NCM版本是否执行升级等。
如此,通过判断目标USB设备是否满足预设条件来检测是否可以切换至NCM模式,可有效地避免对不支持NCM模式或者在黑名单中的USB设备执行切换,在一定程度上保障了USB连接方法的有效性。
请参阅图9,本申请还提供了一种USB设备的USB连接方法,包括:
S40:接收USB主机发送的切换命令;
S50:根据切换命令将当前模式切换至NCM模式;
S60:利用网络连接状态机进行第二设备状态配置及第二网络连接配置,并根据第二设备状态配置及第二网络连接配置与主机USB设备建立连接。
相应地,请参阅图10,本申请实施方式还提供了一种USB连接装置200,本申请实施方式的USB连接方法可以由USB连接装置200实现。USB连接装置200包括接收模块210、切换模块220及配置模块230。S40可以由接收模块210实现,S50可以由切换模块220实现,S60可以由配置模块230实现。或者说,接收模块210用于接收USB主机发送的切换命令。切换模块220用于根据切换命令将当前模式切换至NCM模式。配置模块230用于利用网络连接状态机进行第二设备状态配置及第二网络连接配置,并根据第二设备状态配置及第二网络连接配置与主机USB设备建立连接。
本申请实施方式还提供了一种电子设备。电子设备包括存储器和处理器。存储器中存储有计算机程序,处理器用于接收USB主机发送的切换命令,根据切换命令将当前模式切换至NCM模式,利用网络连接状态机进行第二设备状态配置及第二网络连接配置,并根据第二设备状态配置及第二网络连接配置与主机USB设备建立连接。
可以理解的是,USB连接方法用于USB主机与USB设备之间的连接及后续的数据传输。USB设备为USB总线中作为从设备角色的设备。在一个例子中,一个U盘(USB大容量储存设备)和PC电脑通讯,U盘可以是USB设备。在另一个例子中,一个手机和车辆或车机通讯,手机可以是USB设备。USB设备包括但不限于:手机、平板电脑、可穿戴设备、智能终端等具备USB总线中的从设备的电子设备。与USB设备连接进行通讯的电子设备为USB主机。
具体地,当USB设备插入USB主机时,USB主机会执行枚举USB设备,其枚举方法基本同上述实施例,此处不再赘述。当检测完成后,USB主机会发送切换命令值USB设备。USB设备接收USB主机的切换命令,并根据切换命令将当前模式切换至NCM模式,切换方式基本同上述实施例,此处不再赘述。
优选地,请参阅图11,在一种实施方式中,步骤S40之前还包括:
S03:接收USB主机发送的第一指令;
S04:根据第一指令将预设参数生成第一指令响应并将第一指令响应发送至USB主机;
S05:接收USB主机发送的第二指令;
S06:根据第二指令确定NCM模式的NCM信息。
相应地,请参阅图12,本申请实施方式的USB连接装置200还包括确定模块240,S03-S06可以由确定模块240实现。或者说,确定模块240用于接收USB主机发送的第一指令,根据第一指令将预设参数生成第一指令响应并将第一指令响应发送至USB主机,接收USB主机发送的第二指令,及根据第二指令确定NCM模式的NCM信息。
在某些实施方式中,处理器用于接收USB主机发送的第一指令,根据第一指令将预设参数生成第一指令响应并将第一指令响应发送至USB主机,接收USB主机发送的第二指令,及根据第二指令确定NCM模式的NCM信息。
具体地,USB设备接收USB主机发送的第一指令。其中,第一指令可包括认证指令0X81。当接收到认证指令0X81后,根据第一指令将预设参数生成第一指令响应并将第一指令响应发送至USB主机。其中,预设参数至少包括NCM版本信息等。相应地,USB主机根据目标USB设备返回的第一指令响应判断目标USB设备是否满足预设条件。其中,预设条件包括目标USB设备是否支持NCM模式,或通过黑白名单查询目标USB设备是否可进行切换等。
进一步地,接收到USB主机发送的第二指令。其中,第二指令包括指令0X82,指令中可包含USB主机的NCM版本信息,当目标USB设备接收到包含NCM版本信息的OX82指令时,可将USB主机的NCM版本信息发送至框架协议层确定NCM模式的NCM信息,包括可进行NCM版本信息查询及确定、对USB主机进行鉴权认证是否可继续进行通讯或NCM版本是否需要升级等处理。
如此,可通过第一指令及第二指令确定USB主机与USB设备之间是否可进行NCM模式切换,及确定相关NCM版本信息。
进一步地,在步骤S60中,利用网络连接状态机进行第二设备状态配置及第二网络连接配置,并根据第二设备状态配置及第二网络连接配置与主机USB设备建立连接。
具体地,当USB设备切换至NCM模式后,根据预设的网络连接状态机对NCM模式进行管理,或者说对重新枚举确定的目标NCM设备进行第二设备状态配置及第二网络连接配置。
优选地,请参阅图13,在一种实施方式中,步骤S60还可包括:
S601:根据第二指令生成切换事件并根据切换事件改变预设的网络连接状态机为第一状态;
S602:进行第二设备状态配置,第二设备状态配置至少包括设置设备名称、设置传输类型及注册NetworkAgent;
S603:若第二设备状态配置成功,改变网络连接状态机为第二状态;
S604:进行第二网络连接配置,第二网络连接配置至少包括IP配置;
S605:若第二网络连接配置成功,则确定与USB主机建立USB连接。
在某些实施方式中,S601-S605可以由配置模块230来实现。或者说,配置模块230用于根据第二指令生成切换事件并根据切换事件改变预设的网络连接状态机为第一状态,进行第二设备状态配置,第二设备状态配置至少包括设置设备名称、设置传输类型及注册NetworkAgent,若第二设备状态配置成功,改变网络连接状态机为第二状态,进行第二网络连接配置,第二网络连接配置至少包括IP配置,若第二网络连接配置成功,则确定与USB主机建立USB连接。
在某些实施方式中,处理器用于根据第二指令生成切换事件并根据切换事件改变预设的网络连接状态机为第一状态,进行第二设备状态配置,第二设备状态配置至少包括设置设备名称、设置传输类型及注册NetworkAgent,若第二设备状态配置成功,改变网络连接状态机为第二状态,进行第二网络连接配置,第二网络连接配置至少包括IP配置,若第二网络连接配置成功,则确定与USB主机建立USB连接。
具体地,在USB设备的框架层FrameWork中预设网络连接状态机SystemService及网络状态机。其中,网络状态机中包括各种网络状态,在建立连接的过程中,通过状态之间的切换进行配置,从而对建立连接进行管理。
在一个例子中,网络状态机包括DefaultState、DisconnectedState、ReadyState、NetWorkConfigurationState和ConnectedState。当USB设备将当前模式切换至NCM模式,驱动层生成切换事件UEvent并上发至FrameWork。而FrameWork的SystemService监听到以后,网络状态机根据切换事件UEvent从DisconnectedState进入第一状态如ReadyState状态,并进行第二设备状态的配置,第二设备状态配置至少包括设置设备名称如虚拟网卡的网卡名、设置传输类型及注册NetworkAgent。
当第二设备状态的配置成功后,网络状态机进入第二状态如NetWorkConfigurationState状态,并进行第二网络连接的配置,其中,第二网络连接至少包括IP配置。IP配置至少包括:网址、网关、端口等。同时,IP配置可通过IpClientProxy与Networkstack和Netd通信。反之,当第二设备状态的配置失败后,网络状态机重新进入DisconnectedState状态。
进一步地,当第二网络连接的配置成功后进入ConnectedState状态,则目标USB设备与USB主机建立好NCM模式的连接。反之,若第二网络连接的配置失败则再次进入DisconnectedState状态。
如此,通过预设网络连接状态机及其网络状态机对切换及网络连接进行管理,一方面,可对切换事件及其相关配置进行关联,提高切换的效率。另一方面,预设的网络连接状态机提供了对系统层的控制接口。对于上层应用,仅需要了解接口的使用方式就可以方便的进行系统控制,获得系统各个服务的信息,而不需要了解接口的具体实现方式,其实现方式简单有效,同时便于管理,在一定程度上降低了与应用的耦合度。
本申请实施方式的USB连接方法、连接装置、电子设备通过接收USB主机发送的切换命令,根据切换命令将当前模式切换至NCM模式,根据预设的网络连接状态机对NCM模式进行管理以与目标USB设备建立USB连接。使得在USB设备端生成了一张虚拟网卡,构建一个基于IP的传输通道,为USB连接增加了特定的网络类型-NCM,从而上层应用程序或者其他服务可以通过此虚拟网卡使用标准的Android API在NCM模式中传输数据。相对于USB模式,使用标准网卡传输数据对于上层应用来说,一方面无需增加特殊的驱动,另一方面支持的业务的网络库更多,从而有效地提高了上层应用的开发效率。
综上所述,本申请通过USB主机当检测到USB连接请求时枚举以确定目标USB设备,将目标USB设备重新枚举为目标NCM设备,并利用预设的网络连接状态机将当前模式切换至NCM模式及对目标NCM设备进行配置,发送切换命令至目标USB设备以使得目标USB设备切换至NCM模式。以及USB设备接收USB主机发送的切换命令,根据切换命令将当前模式切换至NCM模式,利用网络连接状态机进行第二设备状态配置及第二网络连接配置,并根据第二设备状态配置及第二网络连接配置与主机USB设备建立连接。至少具有以下有益效果:
一、USB设备与USB主机连接后,可通过切换至NCM模式使得构建一个基于IP的传输通道,为USB连接增加了特定的网络类型-NCM,从而上层应用程序或者其他服务可以使用标准的Android API在NCM模式中传输数据。相对于USB模式,使用标准网卡传输数据对于上层应用来说,一方面无需增加特殊的驱动,另一方面支持的业务的网络库更多,从而有效地提高了上层应用的开发效率。
二、对某些特殊应用,在首次连接USB主机的USB设备需要安装第三方提供的驱动程序才可使用,对于多个应用则需要在首次使用时安装多个设备的驱动程序,同时可能产生较多系统垃圾,本申请通过切换至NCM模式并自动安装驱动,可提高USB的连接效率,无需等待较长时间,用户体验较好。同时,因应用程序无需依赖接口安装驱动,在一定程度上降低了应用程序与USB连接的耦合度。
三、解决了目前的车机与移动终端的连接方式中的Google AOA协议无法建立Websocket的问题,支持应用层现有的网络库。另外,无需增加额外的加密芯片集成在车机上,从而有效地降低了软硬件成本。
四、通过预设网络连接状态机及其网络状态机对切换及网络连接进行管理,一方面,可对切换事件及其相关配置进行关联,提高切换的效率。另一方面,预设的网络连接状态机提供了对系统层的控制接口。对于上层应用,仅需要了解接口的使用方式就可以方便的进行系统控制,获得系统各个服务的信息,而不需要了解接口的具体实现方式,其实现方式简单有效,同时便于管理,在一定程度上降低了与应用的耦合度。
本申请实施方式还提供了一种计算机可读存储介质。一个或多个存储有计算机程序的非易失性计算机可读存储介质,当计算机程序被一个或多个处理器执行时,实现上述任一实施方式的USB连接方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的软件来完成。程序可存储于一非易失性计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- USB连接方法及装置、电子设备及存储介质
- USB接口检测器、检测方法、USB连接器及电子设备