本发明涉及无线传输通信应用技术领域,尤其涉及一种基于安卓电视获取wifi信息的方法、智能电视及存储介质。
背景技术:
随着wifi标准技术的不断发展,wifi已经成为当今社会最流行的无线传输技术,同时随着安卓电视的发展,wifi在智能电视上的搭配使用已经成为了一种趋势,每一家智能电视厂商,都会集成多家wifi芯片方案,或者同一芯片方案的不同型号产品;比如一些芯片厂商如broadcom、qualcomm、realtek、mediatek等,又比如同一家芯片商realtek的不同型号产品,例如8812、8192、8188等,mediatek的不同型号产品,例如7601、7603等;而每一个模块型号,比如realtek8812都有唯一的pid和vid信息;并且对于智能电视而言,因为其空间设计的特殊性以及传输性能的要求,几乎都采用usb通信方式连接wifi模块,所以在安卓电视上,usb总线上必定可以看到模块的挂载存在。
因为芯片产商的不同,同一家芯片厂商型号的多样化,以及作为数据连接中心的wifi路由器的层出不穷,还有wifi环境的各种干扰因素,wifi问题的出现也一定是多样化和密集的,毋庸置疑必然存在wifi连接问题、wifi卡顿问题等;当出现各种wifi问题的时候,对于工程人员都会需要知道wifi的厂商名字(比如realtek)、wifi的模块型号(比如8812)、wifi的驱动版本,其中wifi的驱动版本信息是最重要的,因为很多智能电视机型不会及时更新系统,而系统里会包含驱动的更新,从目前的市场问题反馈的解决情况来说,大部分wifi问题都可以通过wifi驱动的更新而解决。
对于wifi工程人员来说,可以进入安卓电视系统进行文件系统的访问,进而得知wifi模块所有的相关信息包括驱动版本,这些信息对wifi问题的解决是最重要的基础保证,但是那么对于非工程人员或者用户来说,因为其专业性,根本无法得知,那么因为无法得知wifi的相关信息,就无法进行基本诊断和后续的维护管理。
因此,现有技术还有待于改进和发展。
技术实现要素:
本发明要解决的技术问题在于,针对现有技术中当wifi出现问题后无法获取wifi的相关信息导致无法进行及时处理的问题,提供一种获取wifi信息的方法、智能电视及存储介质,旨在提供一种简单通用的获取wifi信息的方法,对于任何用户甚至工程人员来说,通过执行包装有此算法的上层ui程序,就可得到wifi所有信息,便于进行重要的基本诊断和后续维护管理。
本发明解决技术问题所采用的技术方案如下:
一种获取wifi信息的方法,其中,所述获取wifi信息的方法包括:
读取usb总线上所有设备的pid和vid信息后,遍历预先静态维护的内置pid和vid对应模块型号的映射表;
判断usb总线上所有设备的pid和vid信息是否在所述映射表内,当是时通过内置pid和vid获取wifi模块型号和wifi厂商名字;
通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号,将获取到的wifi信息通过ui界面进行显示。
所述的获取wifi信息的方法,其中,所述wifi信息包括:wifi模块型号、wifi厂商名字以及wifi驱动版本号。
所述的获取wifi信息的方法,其中,所述读取usb总线上所有设备的pid和vid信息后,遍历预先静态维护的内置pid和vid对应模块型号的映射表具体包括:
开启获取wifi信息的ui程序;
访问usb文件系统,通过特定程序读取usb总线上所有设备的pid和vid信息;
遍历预先静态维护的内置pid和vid对应模块型号的映射表,得到usb总线的pid和vid设备对应的wifi模块型号和wifi厂商名字。
所述的获取wifi信息的方法,其中,所述判断usb总线上所有设备的pid和vid信息是否在所述映射表内之后还包括:
当usb总线上所有设备的pid和vid信息不在所述映射表内时,通过ui界面呈现提示信息,提示用户更新内置pid和vid对应模块型号的映射表。
所述的获取wifi信息的方法,其中,所述通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号,将获取到的wifi信息通过ui界面进行显示具体包括:
当获取到wifi模块型号和wifi厂商名字后,通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号;
将获取到的wifi模块型号、wifi厂商名字以及wifi驱动版本号通过ui界面进行显示。
一种智能电视,其中,包括处理器,以及与所述处理器连接的存储器,所述存储器存储有获取wifi信息的程序,所述获取wifi信息的程序被所述处理器执行时用于实现以下步骤:
读取usb总线上所有设备的pid和vid信息后,遍历预先静态维护的内置pid和vid对应模块型号的映射表;
判断usb总线上所有设备的pid和vid信息是否在所述映射表内,当是时通过内置pid和vid获取wifi模块型号和wifi厂商名字;
通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号,将获取到的wifi信息通过ui界面进行显示。
所述的智能电视,其中,所述获取wifi信息的程序被所述处理器执行时,还用于实现以下步骤:
开启获取wifi信息的ui程序;
访问usb文件系统,通过特定程序读取usb总线上所有设备的pid和vid信息;
遍历预先静态维护的内置pid和vid对应模块型号的映射表,得到usb总线的pid和vid设备对应的wifi模块型号和wifi厂商名字。
所述的智能电视,其中,所述获取wifi信息的程序被所述处理器执行时,还用于实现以下步骤:
当usb总线上所有设备的pid和vid信息不在所述映射表内时,通过ui界面呈现提示信息,提示用户更新内置pid和vid对应模块型号的映射表。
所述的智能电视,其中,所述获取wifi信息的程序被所述处理器执行时,还用于实现以下步骤:
当获取到wifi模块型号和wifi厂商名字后,通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号;
将获取到的wifi模块型号、wifi厂商名字以及wifi驱动版本号通过ui界面进行显示。
一种存储介质,其中,所述存储介质存储有计算机程序,所述计算机程序能够被执行以用于实现所述的获取wifi信息的方法。
本发明公开了一种获取wifi信息的方法、智能电视及存储介质,所述方法包括:读取usb总线上所有设备的pid和vid信息后,遍历预先静态维护的内置pid和vid对应模块型号的映射表;判断usb总线上所有设备的pid和vid信息是否在所述映射表内,当是时通过内置pid和vid获取wifi模块型号和wifi厂商名字;通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号,将获取到的wifi信息通过ui界面进行显示。本发明提供一种简单通用的获取wifi信息的方法,对于任何用户甚至工程人员来说,通过执行包装有此算法的上层ui程序,就可得到wifi所有信息,便于进行重要的基本诊断和后续维护管理。
附图说明
图1是本发明获取wifi信息的方法的较佳实施例的流程图。
图2是本发明智能电视较佳实施例的功能原理框图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明较佳实施例所述的一种获取wifi信息的方法,如图1所示,所述方法包括:
s100,读取usb总线上所有设备的pid和vid信息后,遍历预先静态维护的内置pid和vid对应模块型号的映射表。
进一步地,所述步骤s100具体包括:
s101,开启获取wifi信息的ui程序;
s102,访问usb文件系统,通过特定程序读取usb总线上所有设备的pid和vid信息;
s103,遍历预先静态维护的内置pid和vid对应模块型号的映射表,得到usb总线的pid和vid设备对应的wifi模块型号和wifi厂商名字。
具体地,根据usb规范的规定,所有的usb设备都有供应商id(vid)和产品识别码(pid),主机通过不同的vid和pid来区别不同的设备,vid和pid都是两个字节长,其中,供应商id(vid)由供应商向usb执行论坛申请,每个供应商的vid是唯一的,pid由供应商自行决定,理论上来说,不同的产品、相同产品的不同型号、相同型号的不同设计的产品最好采用不同的pid,以便区别相同厂家的不同设备。
vid和pid通常情况下有两种存储方式,第一种是主控生产商的vid和pid,存储在主控的bootcode中;第二种是设备生产商的vid和pid,该vid和pid存储在主控外部的非易失性存储设备中(eeprom或flash)的设备固件中,当usb设备连接主机时,如果固件中有设备生产商的vid和pid,会将该vid和pid报告给主机,而忽略主控生产商的vid和pid。所以理论上一个usb存储设备的vid应该是设备生产商的vid,而不是主控生产商的vid,这两个vid应该是不同的(主控生产商自己生产的设备除外)。
通过访问usb文件系统,这里可以通过lsusbshell(lsusb命令用于显示本机的usb设备列表,以及usb设备的详细信息)程序(所述特定程序为lsusbshell程序)获取,可得到所有usb总线上挂载的设备的pid和vid信息,例如:
bus002device006:id15d9:0a37;
bus002device001:id0000:0000;
其中,表示002号usb主控制器上接入了两个设备:一个是usb根hub--001,一个是usb鼠标--006。
遍历预先静态维护的内置pid和vid对应模块型号的映射表,找到usb总线的pid和vid设备对应的模块型号和芯片厂商名字,映射表举例实现,此示例以c语言实现:
typedefstruct
{
charid[16];
charname[16];
charvendor[16]
}idlist;
idlistidlist[]={
{"0bda:b812","rtl8812bu","realtek"},
{"0bda:8812","rtl8812aus","realtek"},
{"0bda:8194","rtl8192du","realtek"},
{"0bda:818b","rtl8192eu","realtek"},
{"0bda:8813","rtl8814au","realtek"},
{"0bda:8176","rtl8192cu","realtek"},
{"0bda:8178","rtl8192cu","realtek"},
{"0bda:0179","rtl8188etv","realtek"},
{"148f:7601","mt7601sta","mediatek"},
{"0e8d:0000","mt7602sta","mediatek"},
{"0e8d:7603","mt7603sta","mediatek"},
{"0e8d:0000","mt7612sta","mediatek"},
{"0e8d:7632","mt7662sta","mediatek"},
{"0a5c:bd27","bcm43569","broadcom"},
{"0a5c:0bdc","bcm43569","broadcom"},
};
从上述idlist的声明可以知道,id变量代表pid和vid,name变量代表wifi模块型号,vendor代表wifi厂商名字;从idlist定义可以知道,内置映射表包含的所有目前安卓电视厂商集成的wifi方案信息。
s200,判断usb总线上所有设备的pid和vid信息是否在所述映射表内,当是时通过内置pid和vid获取wifi模块型号和wifi厂商名字。
具体地,假如usb总线上挂载设备的pid和vid在映射表内被找到,说明此算法内置的模块列表中有此usb设备的信息,通过内置pid和vid,得到name(wifi模块型号)和vendor(wifi厂商名字),接下来是要获取wifi驱动版本。
另外,当usb总线上所有设备的pid和vid信息不在所述映射表内时,通过ui界面呈现提示信息,提示用户更新内置pid和vid对应模块型号的映射表,这意味这usb总线的设备为较新的wifi模块,程序没有添加对应的模块pid和vid信息。
s300,通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号,将获取到的wifi信息通过ui界面进行显示。
进一步地,所述步骤s300具体包括:
s301,当获取到wifi模块型号和wifi厂商名字后,通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号;
s302,将获取到的wifi模块型号、wifi厂商名字以及wifi驱动版本号通过ui界面进行显示。
具体地,所述wifi信息包括:wifi模块型号、wifi厂商名字以及wifi驱动版本号。通过已经得到了模块名字,通过访问sys文件系统对应的模块驱动接口/sys/module/模块型号/version,可以获取wifi驱动版本号,最后在用户ui界面通告如下信息:wifi厂商名字、wifi模块型号和wifi驱动版本号。
本发明从usb总线上获取所有usbdevices的pid和vid,通过遍历内置静态维护的pid和vid对应模块型号的映射表,找到对应的模块型号,根据模块型号,去sys文件系统的module目录找到对应模块型号的驱动版本接口,最后反馈wifi厂商名字、wifi模块型号和wifi驱动版本号给程序使用者,完善了行业中的功能缺陷,提高了产品的用户体验,大大增强了产品竞争力。
本发明实施例还提供了一种智能电视,如图2所示,其中,本实施例的智能电视包括处理器10,以及与所述处理器10连接的存储器20;
所述存储器20存储有获取wifi信息的程序,所述获取wifi信息的程序被所述处理器10执行时实现以下步骤:
读取usb总线上所有设备的pid和vid信息后,遍历预先静态维护的内置pid和vid对应模块型号的映射表;
判断usb总线上所有设备的pid和vid信息是否在所述映射表内,当是时通过内置pid和vid获取wifi模块型号和wifi厂商名字;
通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号,将获取到的wifi信息通过ui界面进行显示;具体如上所述。
进一步地,所述获取wifi信息的程序被所述处理器10执行时,还用于实现以下步骤:
开启获取wifi信息的ui程序;
访问usb文件系统,通过特定程序读取usb总线上所有设备的pid和vid信息;
遍历预先静态维护的内置pid和vid对应模块型号的映射表,得到usb总线的pid和vid设备对应的wifi模块型号和wifi厂商名字;具体如上所述。
进一步地,所述获取wifi信息的程序被所述处理器10执行时,还用于实现以下步骤:
当usb总线上所有设备的pid和vid信息不在所述映射表内时,通过ui界面呈现提示信息,提示用户更新内置pid和vid对应模块型号的映射表;具体如上所述。
进一步地,所述获取wifi信息的程序被所述处理器10执行时,还用于实现以下步骤:
当获取到wifi模块型号和wifi厂商名字后,通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号;
将获取到的wifi模块型号、wifi厂商名字以及wifi驱动版本号通过ui界面进行显示;具体如上所述。
一种存储介质,其中,所述存储介质存储有获取wifi信息的程序,所述获取wifi信息的程序被处理器10执行时实现所述获取wifi信息的方法;具体如上所述。
综上所述,本发明提供一种获取wifi信息的方法、智能电视及存储介质,所述方法包括:读取usb总线上所有设备的pid和vid信息后,遍历预先静态维护的内置pid和vid对应模块型号的映射表;判断usb总线上所有设备的pid和vid信息是否在所述映射表内,当是时通过内置pid和vid获取wifi模块型号和wifi厂商名字;通过访问sys文件系统对应的模块驱动接口获取wifi驱动版本号,将获取到的wifi信息通过ui界面进行显示。本发明提供一种简单通用的获取wifi信息的方法,对于任何用户甚至工程人员来说,通过执行包装有此算法的上层ui程序,就可得到wifi所有信息,便于进行重要的基本诊断和后续维护管理。
当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。