CN116661955A - 硬件访问方法、装置、电子设备及存储介质 - Google Patents

硬件访问方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116661955A
CN116661955A CN202310945379.2A CN202310945379A CN116661955A CN 116661955 A CN116661955 A CN 116661955A CN 202310945379 A CN202310945379 A CN 202310945379A CN 116661955 A CN116661955 A CN 116661955A
Authority
CN
China
Prior art keywords
hal
hardware
module
native
hal module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310945379.2A
Other languages
English (en)
Other versions
CN116661955B (zh
Inventor
丘子霖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Chaoge Digital Technology Co ltd
Original Assignee
Beijing Chaoge Digital Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Chaoge Digital Technology Co ltd filed Critical Beijing Chaoge Digital Technology Co ltd
Priority to CN202310945379.2A priority Critical patent/CN116661955B/zh
Publication of CN116661955A publication Critical patent/CN116661955A/zh
Application granted granted Critical
Publication of CN116661955B publication Critical patent/CN116661955B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本公开提供一种硬件访问方法、装置、电子设备及存储介质,该硬件访问方法包括:硬件虚拟层(HAL)接收应用程序的HAL模块加载请求,其中,HAL模块加载请求中携带有原生HAL模块的标识,一个原生HAL模块用于访问本地硬件;HAL在确定目标硬件被配置为外部设备时,加载与该标识对应的虚拟HAL模块,其中,一个虚拟HAL模块与一个原生HAL模块对应,一个虚拟HAL模块用于访问外部设备,一个虚拟HAL模块与对应的原生HAL模块的接口相同,应用程序通过该接口访问目标硬件;与标识对应的虚拟HAL模块接收应用程序的硬件访问请求,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。通过本公开,能够实现设备协同工作。

Description

硬件访问方法、装置、电子设备及存储介质
技术领域
本公开涉及计算机领域,尤其涉及一种硬件访问方法、装置、电子设备及存储介质。
背景技术
家庭、办公室等场所内的设备的种类和数量越来越多。但各个设备的功能和外设仍比较单一,使用场景也比较受限,比如机顶盒只用于看电视,摄像头只用于监控和隔空对话,智能音箱只用于听音乐等等。
如何让设备之间协同工作成为研究热点。相关技术中,为了使得设备之间协同工作,需要对设备的系统做深度定制,通用性不强,难以推广。
发明内容
针对硬件设备之间协同工作的技术问题,本公开实施例提供一种硬件访问方法、装置、电子设备及存储介质。
根据本公开实施例的一方面,提供了一种硬件访问方法,应用于电子设备,该方法包括:硬件虚拟层(Hardware Abstraction Layer,HAL)接收应用程序的HAL模块加载请求,其中,HAL模块加载请求中携带有原生HAL模块的标识,一个原生HAL模块用于访问本地硬件;HAL在确定目标硬件被配置为外部设备时,加载与标识对应的虚拟HAL模块,其中,一个虚拟HAL模块与一个原生HAL模块对应,一个虚拟HAL模块用于访问外部设备,一个虚拟HAL模块与对应的原生HAL模块的接口相同,应用程序通过该接口访问目标硬件;与标识对应的虚拟HAL模块接收应用程序的硬件访问请求,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。
在一些实施方式中,至少一个原生HAL模块用于访问多个本地硬件,其中,上述方法还包括:针对一个用于访问多个本地硬件的原生HAL模块:HAL在确定该原生HAL模块对应的多个目标设备包含外部设备和本地硬件时,加载与原生HAL模块对应的虚拟HAL模块;与该原生HAL模块对应的虚拟HAL模块加载该原生HAL模块;与该原生HAL模块对应的虚拟HAL模块,接收应用程序的硬件访问请求,通过该原生HAL模块访问相应的本地硬件,并与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。
在一些实施方式中,HAL确定原生HAL模块对应的多种目标设备包含外部设备和本地硬件,包括:HAL基于该原生HAL模块对应的目标设备列表,确定该原生HAL模块对应的多个目标设备是否包含外部设备和本地硬件,其中,一个原生HAL模块对应的目标设备列表记录有该原生HAL模块能够访问的每个目标设备是否为外部设备。
在一些实施方式中,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备,包括:虚拟HAL模块建立与相应的外部设备之间的数据传输会话;虚拟HAL模块通过数据传输会话接收数据;虚拟HAL模块将数据转换为目标数据格式的数据,其中,目标数据格式为对应的原生HAL模块的格式;虚拟HAL模块向应用程序发送目标数据格式的数据。
在一些实施方式中,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备,还包括:虚拟HAL模块建立与相应的外部设备之间的指令会话;虚拟HAL模块通过该指令会话配置数据格式和/或传输方式。
在一些实施方式中,上述方法还包括:基于用户设置将外部设备配置为目标硬件。
在一些实施方式中,上述方法还包括:获取本地网络中的外部设备的信息;显示用户界面,其中,用户界面包括本地网络中的外部设备的信息;接收将外部设备设置为目标硬件的用户操作,基于用户操作将相应的外部设备设置为目标硬件。
在一些实施方式中,获取本地网络中的外部设备的信息,包括:获取本地网络中的外部设备及其能力;在显示用户界面之前,还包括:基于外部设备的能力确定外部设备是否可配置为目标硬件;显示用户界面,包括:在用户界面中显示能够配置为目标硬件的外部设备的信息。
在一些实施方式中,上述方法还包括:HAL在确定目标硬件被配置为本地硬件时,加载上述标识对应的原生HAL模块;上述标识对应的原生HAL模块接收硬件访问请求,基于硬件访问请求访问相应的本地硬件。
根据本公开的另一方面,提供了一种硬件访问装置,应用于电子设备,该装置包括:HAL,用于接收应用程序的HAL模块加载请求,其中,HAL模块加载请求中携带有原生HAL模块的标识,一个原生HAL模块用于访问本地硬件;在确定目标硬件被配置为外部设备时,加载与标识对应的虚拟HAL模块;一个或多个虚拟HAL模块,用于接收应用程序的硬件访问请求,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备,其中,一个虚拟HAL模块与一个原生HAL模块对应,一个虚拟HAL模块用于访问外部设备,一个虚拟HAL模块与对应的原生HAL模块的接口相同,应用程序通过该接口访问目标硬件。
在一些实施方式中,至少一个原生HAL模块用于访问多个本地硬件,至少一个虚拟HAL模块与该至少一个原生HAL模块对应,其中:针对一个用于访问多个本地硬件的原生HAL模块:HAL,用于在确定该原生HAL模块对应的多个目标设备包含外部设备和本地硬件时,加载与该原生HAL模块对应的虚拟HAL模块;与所述原生HAL模块对应的虚拟HAL模块,用于加载原生HAL模块;接收应用程序的硬件访问请求,通过该原生HAL模块访问相应的本地硬件,并与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。
根据本公开的另一方面,提供了一种电子设备,包括:处理器;以及存储程序的存储器,其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行上述的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行上述的方法。
本公开实施例中提供的一个或多个技术方案,一个原生HAL模块用于访问本地硬件,一个虚拟HAL模块与一个原生HAL模块对应,一个虚拟HAL模块用于访问外部设备,一个虚拟HAL模块与对应的原生HAL模块的接口相同,应用程序通过该接口访问目标硬件,能够兼容应用程序。应用程序在HAL模块加载请求中携带原生HAL模块的标识,HAL接收应用程序的HAL模块加载请求,在确定目标硬件被配置为外部设备时,加载与该标识对应的虚拟HAL模块,该虚拟HAL模块接收应用程序的硬件访问请求,与相应的外部设备通信以基于该硬件访问请求来访问该外部设备,无需对操作系统进行修改即可与外部设备通信,实现外部设备为应用程序提供服务,并且可以不对外部设备进行修改。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1示出了根据本公开示例性实施例的可以在其中实施本文描述的各种方法的示例系统的示意图;
图2示出了记载HAL模块的示意性流程图;
图3示出了根据本公开示例性实施例的系统的示意图;
图4示出了根据本公开示例性实施例的用户界面的示意图;
图5示出了本公开示例性实施例的硬件访问方法的流程图;
图6示出了本公开示例性实施例的硬件访问方法的另一流程图;
图7示出了本公开示例性实施例的虚拟HAL模块进行硬件访问的流程图;
图8示出了本公开示例性实施例的硬件协同系统的示意性框图;
图9示出了本公开示例性实施例的硬件协同工作的流程图;
图10示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本公开中提及的“第一”“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1示出了根据本公开示例性实施例的可以在其中实施本文描述的各种方法的示例系统的示意图,如图1所示,该示例系统可以包括:框架和应用(Framework andApplications)、外部库和运行时(External Libraries and Runtime)、硬件抽象层(HAL)。
HAL屏蔽硬件的差异,为上层应用提供了统一的硬件操作接口,这样就可以将硬件和应用软件隔离开,应用软件不必关心底层的具体硬件,而硬件更改,可以按照HAL接口规范和标准提供HAL驱动,而不影响系统和应用软件。
HAL模块与硬件之间相关联。一个HAL模块可以关联一个或多个硬件。
在一些示例中,HAL模块中的至少一个HAL模块用于访问一个硬件。例如,相机HAL模块用于访问相机,音频HAL模块可以用于访问拾音器。
基于HAL模块与硬件之间的关联关系,可以确定应用程序访问的硬件,在本申请实施例中称为目标硬件。示例性的,应用程序请求加载相机HAL模块时,目标硬件为相机;应用程序请求加载音频HAL模块时,目标硬件为拾音器或扬声器。
在一些示例中,HAL模块中至少一个HAL模块可以用于访问多个硬件。
例如,在多个相机的系统中,相机HAL模块可以访问多个相机,应用程序可以通过相机HAL模块访问多个相机中的任一个或多个相机。
例如,在多传感器的系统中,传感器HAL模块可以访问多个传感器,应用程序可以通过传感器HAL模块访问多个传感器中的任一个或多个传感器。传感器可以包括但不限于加速度计、陀螺仪、磁力计、气压计、湿度传感器、压力传感器、光传感器、近程传感器和心率传感器至少之一。
在一些示例中,应用程序可以通过HAL的接口加载HAL模块。如图2所示,应用程序通过HAL的接口加载HAL模块,然后通过HAL的接口打开硬件,获得硬件的访问接口。
示例性的,HAL提供一个公用的函数:hw_get_module (const char *id, conststruct hw_module_t **module)。这个函数的主要功能是根据HAL模块的标识(ID)去查找注册在当前系统的与标识对应的硬件对象,然后加载相应的HAL模块的文件(例如*so文件)。应用程序可以通过HAL的方法“hw_get_module”加载HAL模块的文件。HAL模块可以接收应用程序的硬件访问请求,通过Linux硬件驱动操作相应的硬件。
例如,应用程序在“hw_get_module()”中指定相机HAL模块的标识,HAL根据HAL模块的标识ID去查找注册在当前系统的与标识对应的硬件对象(也就是相机HAL模块),然后加载相应的HAL模块(也就是相机HAL模块)的文件。应用程序通过相机HAL模块的接口访问相机。相机HAL模块接收应用程序的访问请求,通过相机驱动访问相机。例如,应用程序可以控制相机拍照,相机HAL模块通过相机驱动使用相机进行拍照,并将拍摄得到的图像返回给应用程序。
图3示出了根据本公开示例性实施例的系统的示意图,如图3所示,HAL模块可以包括:原生HAL模块和虚拟HAL模块。
原生HAL模块具有标准的接口,应用程序基于原生HAL模块的接口开发,也就是说应用程序通过原生HAL模块提供的接口来访问硬件。
原生HAL模块可以用于访问本地硬件,也就是电子设备自身的硬件。在一些示例中,原生HAL模块可以访问通过USB连接的硬件,例如USB摄像头。示例性的,原生HAL模块可以包括相机HAL模块、音频HAL模块、传感器HAL模块,本实施例对此不作限定。
虚拟HAL模块可以用于访问外部设备。虚拟HAL模块可以包括相机HAL模块(称为虚拟相机HAL模块)、音频HAL模块(称为虚拟音频HAL模块)、传感器HAL模块(称为虚拟传感器HAL模块)。外部设备可以包括摄像头、音箱、手机等。外部设备由应用程序控制,因此也称为从设备,电子设备称为主设备。
在本公开实施例中,一个虚拟HAL模块与一个原生HAL模块对应,一个虚拟HAL模块与对应的原生HAL模块的接口相同,应用程序可以通过该接口访问目标硬件。由此,可以兼容基于原生HAL模块开发的应用程序,也就是说,可以在不改动应用程序的前提下使得应用程序使用外部设备。
例如,虚拟HAL模块中的虚拟相机HAL模块与原生HAL模块中的原生相机HAL模块对应,并具有相同的接口,应用程序使用相同的接口访问本地相机或外部摄像头。例如,虚拟HAL模块中的虚拟音频HAL模块与原生HAL模块中的原生音频HAL模块对应,并具有相同的接口,应用程序使用相同的接口访问本地拾音器或外部拾音器。
在本公开实施例中,对于应用程序而言,屏蔽了HAL模块的细节,即应用程序可以不关注使用的是原生HAL模块还是虚拟HAL模块,访问的硬件是本地硬件还是外部设备。
在一些示例中,原生HAL模块中至少一个原生HAL模块用于访问一个本地硬件,相应地,虚拟HAL模块中至少一个虚拟HAL模块与该原生HAL模块对应,用于访问一个相应的外部设备。
在一些示例中,原生HAL模块中至少一个原生HAL模块用于访问多个本地硬件,相应地,虚拟HAL模块中至少一个虚拟HAL模块与该原生HAL模块对应,用于访问多个相应的外部设备。
例如,在多个相机的系统中,原生相机HAL模块可以访问多个本地相机,应用程序可以通过原生相机HAL模块访问多个本地相机中的任一个或多个本地相机。相应的,虚拟HAL模块中,虚拟相机HAL模块可以访问多个外部相机,应用程序可以通过虚拟相机HAL模块访问多个外部相机中的任一个或多个外部相机。
例如,在多传感器的系统中,原生传感器HAL模块可以访问多个本地传感器,应用程序可以通过原生传感器HAL模块访问多个本地传感器中的任一个或多个传感器。相应的,虚拟传感器HAL模块可以访问多个外部传感器,应用程序可以通过虚拟传感器HAL模块访问多个外部传感器中的任一个或多个外部传感器。
示例性的,传感器可以包括但不限于加速度计、陀螺仪、磁力计、气压计、湿度传感器、压力传感器、光传感器、近程传感器和心率传感器至少之一。
在一些示例中,原生HAL模块中至少一个原生HAL模块用于访问多个本地硬件,相应地,虚拟HAL模块中至少一个虚拟HAL模块与该原生HAL模块对应,用于访问相应的外部设备,并且虚拟HAL模块可以通过原生HAL模块访问本地硬件。由此,外部设备和本地硬件可以混合使用。
作为一种实施方式,针对一个用于访问多个本地硬件的原生HAL模块:
HAL在确定该原生HAL模块对应的多个目标设备包含外部设备和本地硬件时,加载与原生HAL模块对应的虚拟HAL模块;
与该原生HAL模块对应的虚拟HAL模块加载该原生HAL模块;
与该原生HAL模块对应的虚拟HAL模块,接收应用程序的硬件访问请求,通过该原生HAL模块访问相应的本地硬件,并与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。其中,与该原生HAL模块对应的虚拟HAL模块,可以按照操作系统加载原生HAL模块的方式,动态打开和链接原生HAL模块,从而通过该原生HAL模块访问相应的本地硬件。
例如,在多个相机的系统中,原生相机HAL模块可以访问多个本地相机,应用程序可以通过原生相机HAL模块访问多个本地相机中的任一个或多个本地相机。相应的,虚拟HAL模块中,虚拟相机HAL模块可以访问一个或多个外部相机,应用程序可以通过虚拟相机HAL模块访问本地相机和外部相机中的任一个或多个相机。
继续多相机的系统示例,HAL在确定原生相机HAL模块对应的多个相机包含外部相机和本地相机时,加载虚拟相机HAL模块;虚拟相机HAL模块加载原生相机HAL模块;虚拟相机HAL模块,接收应用程序的硬件访问请求,通过该原生相机HAL模块访问相应的本地相机,并与相应的外部相机通信以基于硬件访问请求访问相应的外部相机。
例如,在多传感器的系统中,原生传感器HAL模块可以访问多个本地传感器,应用程序可以通过原生传感器HAL模块访问多个本地传感器中的任一个或多个传感器。相应的,虚拟传感器HAL模块可以访问多个外部传感器,应用程序可以通过虚拟传感器HAL模块访问多个外部传感器中的任一个或多个外部传感器。
继续多传感器的系统示例,HAL在确定原生传感器HAL模块对应的多个传感器包含外部传感器和本地传感器时,加载虚拟传感器HAL模块;虚拟传感器HAL模块加载原生传感器HAL模块;虚拟传感器HAL模块,接收应用程序的硬件访问请求,通过该原生传感器HAL模块访问相应的本地传感器,并与相应的外部传感器通信以基于硬件访问请求访问相应的外部传感器。
在一些示例中,HAL在确定该原生HAL模块对应的多个目标设备均为外部设备时,加载与原生HAL模块对应的虚拟HAL模块,该虚拟HAL模块接收应用程序的硬件访问请求,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。
在一些示例中,HAL在确定该原生HAL模块对应的多个目标设备均为本地硬件时,加载原生HAL模块,该原生HAL模块接收应用程序的硬件访问请求,访问相应的本地硬件。
下面对目标硬件的配置进行示例性说明。
在一些示例中,可以将外部设备设置为HAL模块的目标硬件。例如,将外部的摄像头设置为目标相机,也就是说应用程序在访问相机时,访问外部的摄像头。例如,将外部的音箱设置为目标扬声器,也就是说应用程序在访问扬声器时,访问外部的音箱。例如,将外部的传感器设置为目标传感器,也就是说应用程序在访问传感器时,访问外部的传感器。
在一些示例中,可以维护目标设备列表,目标设备列表中配置目标硬件为本地硬件还是外部设备,在目标硬件为外部设备时,可以记录外部设备标识,外部设备标识可以包括 MAC 地址、IP 地址等,示例性的目标设备列表如表1所示。
表1 目标设备列表示例一
如表1所示,相机HAL模块被配置为外部设备,音频HAL模块被配置为外部设备,传感器HAL模块被配置为包括本地硬件(传感器1、3和5)和外部设备(传感器2和4)。也就是说,如表1所示,当应用程序在请求加载相机HAL模块时,HAL确认目标硬件为相机,根据目标设备列表确认目标硬件被配置为外部设备,HAL加载虚拟HAL模块中的虚拟相机HAL模块;当应用程序在请求加载音频HAL模块时,HAL确认目标硬件为音频硬件,根据目标设备列表确认目标硬件被配置为外部设备,HAL加载虚拟HAL模块中的虚拟音频HAL模块;当应用程序在请求加载传感器HAL模块时,HAL确认目标硬件为传感器,根据目标设备列表确认目标硬件被配置为本地硬件和外部设备,HAL加载虚拟传感器HAL模块。
在一些示例中,提供用户界面供用户将外部设备设置为目标硬件。通常可供设置的外部设备为本地网络中的外部设备。本地网络可以包括有线网络和/或无线网络。在一些示例中,本地网络为无线网络,无线网络可以包括Wi-Fi网络、蓝牙网络、ZigBee网络中至少之一。例如,一些外部设备通过蓝牙与电子设备连接,另一些电子设备通过Wi-Fi与电子设备连接。在一些示例中,电子设备与外部设置之间可以通过网关连接,例如,电子设备与网关通过Wi-Fi网络连接,网关与一些外部设备通过ZigBee网络连接。
示例性的,设置目标硬件可以包括:获取本地网络中的外部设备的信息,例如,基于约束应用协议(Constrained Application Protocol,CoAP)进行局域网内的设备发现;在用户界面中显示本地网络中的外部设备的信息;接收将外部设备设置为目标硬件的用户操作,基于用户操作将相应的外部设备设置为目标硬件。
在一些示例中,获取本地网络中的外部设备的信息,包括:获取本地网络中的外部设备及其能力。在显示用户界面之前还包括:基于外部设备的能力确定外部设备是否可配置为目标硬件。显示用户界面包括:在用户界面中显示能够配置为目标硬件的外部设备的信息。
图4示出了示例性的用户界面的示意图,如图4所示,用户界面400中显示了本地网络中的外部设备的列表,外部设备的信息包括外部设备的名称401和类型402。此外,还包括将外部设备设置为目标设备的选项403。如图4所示,外部设备包括的类型包括音频设备、相机、传感器。在图4中将名称为“设备标识a”的相机设置为目标设备,也就是说应用程序访问相机时,访问相机a。
在一些示例中,在用户界面上配置之后,保存配置形成目标设备列表。在此后加载HAL 模块时,按照保存的配置确定目标硬件是否为外部设备。在被配置为目标硬件的外部设备与电子设备断开连接时,可以提示用户外部设备断开连接,此时可以再次配置。
应用程序在HAL模块加载请求中携带原生HAL模块的标识,HAL接收应用程序的HAL模块加载请求,在确定目标硬件被配置为外部设备时,加载与该标识对应的虚拟HAL模块。该虚拟HAL模块可以接收应用程序的硬件访问请求,与相应的外部设备通信以基于该硬件访问请求来访问相应的外部设备。在一些示例中,HAL在确定目标硬件被配置为本地硬件时,加载与该标识对应的原生HAL模块,该原生HAL模块接收硬件访问请求,基于硬件访问请求访问相应的本地硬件。
示例性的,将外部相机配置为目标硬件。应用程序使用原生HAL模块中的原生相机HAL 模块的 ID 请求加载相机HAL 模块。HAL 接收应用程序的HAL 模块加载请求,基于HAL 模块加载请求中携带的ID确定目标硬件为相机,基于硬件配置表确定相机被配置为外部相机,HAL 加载虚拟HAL模块中的虚拟相机 HAL 模块。应用程序使用原生相机HAL模块对应的接口发送硬件访问请求,虚拟相机 HAL 模块可以接收应用程序的硬件访问请求,与外部相机通信以基于硬件访问请求访问外部相机。
示例性的,将外部传感器配置为目标硬件。应用程序使用虚拟HAL模块中的传感器HAL 模块的 ID 请求加载传感器HAL 模块。HAL 接收应用程序的HAL 模块加载请求,基于HAL 模块加载请求中携带的ID确定目标硬件为传感器,基于硬件配置表确定相机被配置为外部传感器,HAL 加载虚拟HAL模块中的虚拟传感器 HAL 模块。虚拟传感器 HAL 模块可以接收应用程序的硬件访问请求,与外部传感器通信以基于硬件访问请求访问外部传感器。
根据本公开实施例还提供了一种硬件访问方法,该方法可以应用于电子设备。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理和其他适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其他类似的计算装置。
图 5 示出了本公开示例性实施例的硬件访问方法的流程图,如图 5 所示,该方法包括步骤 S501 至步骤 S503。
步骤 S501,HAL接收应用程序的HAL模块加载请求,其中,HAL模块加载请求中携带有原生HAL模块的标识。
其中,一个原生HAL模块可以用于访问本地硬件。一个原生 HAL 模块具有应用程序访问硬件的标准接口。
步骤 S502,HAL在确定目标硬件被配置为外部设备时,加载与标识对应的虚拟HAL模块。
其中,一个虚拟HAL模块与一个原生HAL模块对应,一个虚拟HAL模块用于访问外部设备,一个虚拟HAL模块与对应的原生HAL模块的接口相同,应用程序通过该接口访问目标硬件。
作为一种实施方式,HAL 可以基于HAL 模块加载请求中携带的标识确定目标硬件,基于HAL模块对应的目标硬件列表确定目标硬件被配置为外部设备。
示例性的,将外部相机配置为目标硬件(目标相机)。应用程序使用虚拟HAL模块中的相机 HAL 模块的 ID 请求加载相机HAL 模块。HAL 接收应用程序的HAL 模块加载请求,基于 HAL 模块加载请求中携带的ID确定目标硬件为相机,基于相机HAL模块对应的目标硬件列表确定相机被配置为外部相机,HAL 加载虚拟HAL模块中的虚拟相机 HAL 模块。虚拟相机 HAL 模块可以接收应用程序的硬件访问请求,与外部相机通信以基于硬件访问请求访问外部相机。
步骤 S503,与标识对应的虚拟HAL模块接收应用程序的硬件访问请求,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。
在一些实施方式中,HAL在确定目标硬件被配置为本地硬件时,加载上述标识对应的原生HAL模块;上述标识对应的原生HAL模块接收硬件访问请求,基于硬件访问请求访问相应的本地硬件。
在一些示例中,原生HAL模块中至少一个原生HAL模块用于访问一个本地硬件,相应地,虚拟HAL模块中至少一个虚拟HAL模块与该原生HAL模块对应,用于访问一个相应的外部设备。
在一些示例中,原生HAL模块中至少一个原生HAL模块用于访问多个本地硬件,相应地,虚拟HAL模块中至少一个虚拟HAL模块与该原生HAL模块对应,用于访问多个相应的外部设备。
在一些示例中,原生HAL模块中至少一个原生HAL模块用于访问多个本地硬件,相应地,虚拟HAL模块中至少一个虚拟HAL模块与该原生HAL模块对应,用于访问相应的外部设备,并且虚拟HAL模块可以通过原生HAL模块访问本地硬件。由此,可以混合使用本地硬件和外部设备。
对于一个HAL模块可以访问多个硬件的情形,可以将HAL模块对应的目标硬件均配置为本地硬件,或者均配置为外部设备。在一些示例中,HAL模块对应的目标硬件可以包括本地硬件和外部设备,下面结合图6对该情形的硬件访问方法进行说明。
图 6 示出了本公开示例性实施例的硬件访问方法的流程图,如图 6 所示,该方法包括步骤 S601 至步骤 S605。
步骤S601,HAL在确定原生HAL模块对应的多个目标设备包含外部设备和本地硬件时,加载与原生HAL模块对应的虚拟HAL模块。
步骤S602,与原生HAL模块对应的虚拟HAL模块加载原生HAL模块。
步骤S603,与原生HAL模块对应的虚拟HAL模块,接收应用程序的硬件访问请求。
步骤S604,与原生HAL模块对应的虚拟HAL模块,通过原生HAL模块访问相应的本地硬件。
步骤S605,与原生HAL模块对应的虚拟HAL模块,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。
例如,在多个相机的系统中,原生相机HAL模块可以访问多个本地相机,应用程序可以通过原生相机HAL模块访问多个本地相机中的任一个或多个本地相机。相应的,虚拟HAL模块中,虚拟相机HAL模块可以访问一个或多个外部相机,应用程序可以通过虚拟相机HAL模块访问本地相机和外部相机中的任一个或多个相机。
继续多相机的系统示例,HAL在确定原生相机HAL模块对应的多个相机包含外部相机和本地相机时,加载虚拟相机HAL模块;虚拟相机HAL模块加载原生相机HAL模块;虚拟相机HAL模块,接收应用程序的硬件访问请求,通过该原生相机HAL模块访问相应的本地相机,并与相应的外部相机通信以基于硬件访问请求访问相应的外部相机。
例如,在多传感器的系统中,原生传感器HAL模块可以访问多个本地传感器,应用程序可以通过原生传感器HAL模块访问多个本地传感器中的任一个或多个传感器。相应的,虚拟传感器HAL模块可以访问多个外部传感器,应用程序可以通过虚拟传感器HAL模块访问多个外部传感器中的任一个或多个外部传感器。
继续多传感器的系统示例,HAL在确定原生传感器HAL模块对应的多个传感器包含外部传感器和本地传感器时,加载虚拟传感器HAL模块;虚拟传感器HAL模块加载原生传感器HAL模块;虚拟传感器HAL模块,接收应用程序的硬件访问请求,通过该原生传感器HAL模块访问相应的本地传感器,并与相应的外部传感器通信以基于硬件访问请求访问相应的外部传感器。
在一些示例中,HAL在确定该原生HAL模块对应的多个目标设备均为外部设备时,加载与原生HAL模块对应的虚拟HAL模块,该虚拟HAL模块接收应用程序的硬件访问请求,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。
在一些示例中,HAL在确定该原生HAL模块对应的多个目标设备均为本地硬件时,加载原生HAL模块,该原生HAL模块接收应用程序的硬件访问请求,访问相应的本地硬件。
在一些实施方式中,如图7所示,上述提及的与相应的外部设备通信以基于硬件访问请求访问相应的外部设备,可以包括步骤S701至步骤S704。
步骤S701,虚拟HAL模块建立与相应的外部设备之间的数据传输会话。
步骤S702,虚拟HAL模块通过数据传输会话接收数据。
步骤S703,虚拟HAL模块将数据转换为目标数据格式的数据,其中,目标数据格式为对应的原生HAL模块的格式。
示例性的,将数据转换为目标数据格式的数据包括对数据进行解码。
步骤S704,虚拟HAL模块向应用程序发送目标数据格式的数据。
在一些实施方式中,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备,还可以包括:虚拟HAL模块建立与相应的外部设备之间的指令会话,通过该指令会话配置数据格式和/或传输方式。
在一些实施方式中,上述方法还包括:基于用户设置将外部设备配置为目标硬件。
在一些示例中,提供用户界面供用户将外部设备设置为目标硬件。通常可供设置为的外部设备为本地网络中的外部设备。本地网络可以包括有线网络和/或无线网络。在一些示例中,本地网络为无线网络,无线网络可以包括Wi-Fi网络、蓝牙网络、ZigBee网络中至少之一。例如,一些外部设备通过蓝牙与电子设备连接,另一些电子设备通过Wi-Fi与电子设备连接。在一些示例中,电子设备与外部设置之间可以通过网关连接,例如,电子设备与网关通过wifi网络连接,网关与一些外部设备通过ZigBee网络连接。
作为一种实施方式,设置目标硬件可以包括:获取本地网络中的外部设备的信息;显示用户界面,其中,用户界面包括本地网络中的外部设备的信息;接收将外部设备设置为目标硬件的用户操作,基于用户操作将相应的外部设备设置为目标硬件。
作为一种实施方式,获取本地网络中的外部设备的信息,包括:获取本地网络中的外部设备及其能力;在显示用户界面之前还包括:基于外部设备的能力确定外部设备是否可配置为目标硬件;显示用户界面包括:在用户界面中显示能够配置为目标硬件的外部设备的信息。
在一些实施方式中,上述本地硬件和外部设备包括音频设备、视频设备、传感器设备中至少之一。
下面对本公开更具体的一个实施示例进行描述。该实施示例建立一种机制将机顶盒、家用摄像头、智能音箱、手机等嵌入式设备的能力协同并连接起来,在不需要额外购置外设(如USB摄像头、USB麦克风、体感手柄、鼠标)的情况下,赋予机顶盒摄像头、麦克风、传感器、鼠标的能力,使机顶盒可以应用于更多的场景,如拍照录像、音视频通话、体感游戏等。
在该示例中,根据HAL的特点,按照HAL接口规范和标准实现“虚拟化设备HAL”驱动,不同的是,原生HAL驱动打开的是实际的硬件外设,而虚拟化HAL驱动打开的是本地网络中的设备。
如图8所示,终端的硬件虚拟化主要实现在应用层和HAL层。设备管理应用,用于设备发现、设备选择和设备管理,可以基于CoAP协议进行局域网内的设备发现和自发现,并通过用户界面(UI)展示设备类型和基本信息,供用户选择从设备及其能力。设备虚拟化HAL,用于设备虚拟化驱动,外围接口与HAL层标准接口保持一致,系统可直接调用,可与原生HAL库和虚拟HAL模块进行指令和数据的交互。虚拟HAL模块,是设备功能对接模块,具备数据传输、远程调用、编解码等能力,与终端设备进行指令和数据的交互,可根据设备类型向系统推送音频、视频、传感器等数据。从设备(外部设备),是虚拟HAL模块的能力提供者,即从设备可为主设备共享其拥有的硬件能力,如常见的看家摄像头提供音视频采集能力、智能音响可提供拾音器和扬声器能力、手机可提供音视频、加速度计、重力感应数据等。
如图9所示,主设备开机后,可以启动设备管理应用。设备管理应用进行设备发现、设备显示和用户选择。其中,主设备和从设备开机后,各自启动设备发现模块,主设备进入设备监听;从设备发送上线广播,其中广播信息包含其网络信息、能力信息。设备管理应用通过用户界面将局域网内存在的虚拟化设备显示出来,供用户选择。用户根据实际需要选择设备类型、设备及其能力。
例如,将外部的摄像头设置为目标相机,也就是说应用程序在访问相机时,访问外部的摄像头。例如,将外部的音箱设置为目标扬声器,也就是说应用程序在访问扬声器时,访问外部的音箱。例如,将外部的传感器设置为目标传感器,也就是说应用程序在访问传感器时,访问外部的传感器。
在用户选择完成后,可以形成目标设备列表,目标设备列表中配置目标硬件为本地硬件还是外部设备,在目标硬件为外部设备时,可以记录外部设备标识,外部设备标识可以包括 MAC 地址、IP 地址等,示例性的目标设备列表如前述表1所示。
启动用户应用后,加载HAL模块。设备虚拟化HAL根据设备类型确定加载原生HAL模块或虚拟HAL模块。
示例性的,将外部相机配置为目标硬件(目标相机)。应用程序使用原生HAL模块中的原生相机 HAL 模块的 ID 请求加载相机HAL 模块。设备虚拟化HAL接收应用程序的HAL模块加载请求,基于 HAL 模块加载请求中携带的ID确定目标硬件为相机,基于硬件配置表确定相机被配置为外部相机,HAL 加载虚拟HAL模块中的虚拟相机 HAL 模块。应用程序使用原生相机HAL模块对应的接口发送硬件访问请求,虚拟相机 HAL 模块可以接收应用程序的硬件访问请求,与外部相机通信以基于硬件访问请求访问外部相机。
示例性的,在多个相机的系统中,原生相机HAL模块可以访问多个本地相机,应用程序可以通过原生相机HAL模块访问多个本地相机中的任一个或多个本地相机。相应的,虚拟HAL模块中,虚拟相机HAL模块可以访问一个或多个外部相机,应用程序可以通过虚拟相机HAL模块访问本地相机和外部相机中的任一个或多个相机。
继续多相机的系统示例,HAL在确定原生相机HAL模块对应的多个相机包含外部相机和本地相机时,加载虚拟相机HAL模块;虚拟相机HAL模块加载原生相机HAL模块;虚拟相机HAL模块,接收应用程序的硬件访问请求,通过该原生相机HAL模块访问相应的本地相机,并与相应的外部相机通信以基于硬件访问请求访问相应的外部相机。
示例性的,在多传感器的系统中,原生传感器HAL模块可以访问多个本地传感器,应用程序可以通过原生传感器HAL模块访问多个本地传感器中的任一个或多个传感器。相应的,虚拟传感器HAL模块可以访问多个外部传感器,应用程序可以通过虚拟传感器HAL模块访问多个外部传感器中的任一个或多个外部传感器。
继续多传感器的系统示例,HAL在确定原生传感器HAL模块对应的多个传感器包含外部传感器和本地传感器时,加载虚拟传感器HAL模块;虚拟传感器HAL模块加载原生传感器HAL模块;虚拟传感器HAL模块,接收应用程序的硬件访问请求,通过该原生传感器HAL模块访问相应的本地传感器,并与相应的外部传感器通信以基于硬件访问请求访问相应的外部传感器。
此外,HAL在确定该原生HAL模块对应的多个目标设备均为外部设备时,加载与原生HAL模块对应的虚拟HAL模块,该虚拟HAL模块接收应用程序的硬件访问请求,与相应的外部设备通信以基于硬件访问请求访问相应的外部设备。例如,在多传感器的系统示例,HAL在确定原生传感器HAL模块对应的多个传感器均为外部传感器时,加载虚拟传感器HAL模块;虚拟传感器HAL模块,接收应用程序的硬件访问请求,相应的外部传感器通信以基于硬件访问请求访问相应的外部传感器。
此外,HAL在确定该原生HAL模块对应的多个目标设备均为本地硬件时,加载原生HAL模块,该原生HAL模块接收应用程序的硬件访问请求,访问相应的本地硬件。例如,在多相机的系统示例,HAL在确定原生相机HAL模块对应的多个相机均为本地相机时,加载原生相机HAL模块;原生相机HAL模块接收应用程序的硬件访问请求,访问相应的本地相机。
加载虚拟HAL模块后,虚拟HAL模块与从设备建立指令会话,用于配置数据格式、传输方式等;虚拟HAL模块与从设备建立数据传输通道,根据设备类型,可使用于传输音频、视频、坐标等数据类型的传输;虚拟HAL模块对从设备返回的数据进行一定的处理,如编解码、格式转换、数据格式封装等;将处理好的数据按照HAL标准格式,返回给系统。
本实施示例,对接的是HAL标准接口,通用性强,对设备的兼容性较好,可适用于大多数的系统版本,且无需对系统SDK进行额外的改造;设备虚拟化HAL加入了设备原生驱动的加载流程,即可根据用户的选择动态在虚拟化设备和物理设备间切换,既保留了原有的硬件外设驱动能力,也能较好较快捷地集成设备虚拟化功能。
本公开示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本公开实施例的方法。
本公开示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的方法。
本公开示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本公开实施例的方法。
参考图10,现将描述可以作为本公开的外部设备或电子设备的电子设备1000的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机和其他适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其他类似的计算装置。本文所示的部件、它们的连接和关系,以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图10所示,电子设备1000包括计算单元1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
电子设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006、输出单元1007、存储单元1008以及通信单元1009。输入单元1006可以是能向电子设备1000输入信息的任何类型的设备,输入单元1006可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元1007可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1008可以包括但不限于磁盘、光盘。通信单元1009允许电子设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙设备、Wi-Fi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP),以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理。例如,在一些实施例中,上述的方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到电子设备1000上。在一些实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述的方法。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的,或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本公开使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其他种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

Claims (13)

1.一种硬件访问方法,其特征在于,应用于电子设备,所述方法包括:
硬件虚拟层HAL接收应用程序的HAL模块加载请求,其中,所述HAL模块加载请求中携带有原生HAL模块的标识,一个原生HAL模块用于访问本地硬件;
所述HAL在确定目标硬件被配置为外部设备时,加载与所述标识对应的虚拟HAL模块,其中,一个虚拟HAL模块与一个原生HAL模块对应,一个虚拟HAL模块用于访问外部设备,一个虚拟HAL模块与对应的原生HAL模块的接口相同,应用程序通过所述接口访问目标硬件;
与所述标识对应的虚拟HAL模块接收所述应用程序的硬件访问请求,与相应的外部设备通信以基于所述硬件访问请求访问相应的外部设备。
2.如权利要求1所述的方法,其特征在于,至少一个原生HAL模块用于访问多个本地硬件,其中,所述方法还包括:
针对一个用于访问多个本地硬件的原生HAL模块:
所述HAL在确定所述原生HAL模块对应的多个目标设备包含外部设备和本地硬件时,加载与所述原生HAL模块对应的虚拟HAL模块;
所述与所述原生HAL模块对应的虚拟HAL模块加载所述原生HAL模块;
所述与所述原生HAL模块对应的虚拟HAL模块,接收应用程序的硬件访问请求,通过所述原生HAL模块访问相应的本地硬件,并与相应的外部设备通信以基于所述硬件访问请求访问相应的外部设备。
3.如权利要求2所述的方法,其特征在于,所述HAL确定所述原生HAL模块对应的多种目标设备包含外部设备和本地硬件,包括:
所述HAL基于所述原生HAL模块对应的目标设备列表,确定所述原生HAL模块对应的多个目标设备是否包含外部设备和本地硬件,其中,一个原生HAL模块对应的目标设备列表记录有所述原生HAL模块能够访问的每个目标设备是否为外部设备。
4.如权利要求1~3任一项所述的方法,其特征在于,所述与相应的外部设备通信以基于所述硬件访问请求访问相应的外部设备,包括:
所述虚拟HAL模块建立与相应的外部设备之间的数据传输会话;
所述虚拟HAL模块通过所述数据传输会话接收数据;
所述虚拟HAL模块将所述数据转换为目标数据格式的数据,其中,所述目标数据格式为对应的原生HAL模块的格式;
所述虚拟HAL模块向所述应用程序发送所述目标数据格式的数据。
5.如权利要求4所述的方法,其特征在于,所述与相应的外部设备通信以基于所述硬件访问请求访问相应的外部设备,还包括:
所述虚拟HAL模块建立与相应的外部设备之间的指令会话;
所述虚拟HAL模块通过所述指令会话配置数据格式和/或传输方式。
6.如权利要求1~3任一项所述的方法,其特征在于,还包括:基于用户设置将外部设备配置为目标硬件。
7.如权利要求6所述的方法,其特征在于,还包括:
获取本地网络中的外部设备的信息;
显示用户界面,其中,所述用户界面包括本地网络中的外部设备的信息;
接收将外部设备设置为目标硬件的用户操作,基于所述用户操作将相应的外部设备设置为目标硬件。
8.如权利要求7所述的方法,其特征在于,获取本地网络中的外部设备的信息,包括:获取本地网络中的外部设备及其能力;
在显示用户界面之前,还包括:基于外部设备的能力确定外部设备是否可配置为目标硬件;
所述显示用户界面,包括:在用户界面中显示能够配置为目标硬件的外部设备的信息。
9.如权利要求1~3任一项所述的方法,其特征在于,还包括:
所述HAL在确定目标硬件被配置为本地硬件时,加载所述标识对应的原生HAL模块;
所述标识对应的原生HAL模块接收硬件访问请求,基于所述硬件访问请求访问相应的本地硬件。
10.一种硬件访问装置,其特征在于,应用于电子设备,所述装置包括:
硬件虚拟层HAL,用于接收应用程序的HAL模块加载请求,其中,所述HAL模块加载请求中携带有原生HAL模块的标识,一个原生HAL模块用于访问本地硬件;在确定目标硬件被配置为外部设备时,加载与所述标识对应的虚拟HAL模块;
一个或多个虚拟HAL模块,用于接收所述应用程序的硬件访问请求,与相应的外部设备通信以基于所述硬件访问请求访问相应的外部设备,其中,一个虚拟HAL模块与一个原生HAL模块对应,一个虚拟HAL模块用于访问外部设备,一个虚拟HAL模块与对应的原生HAL模块的接口相同,应用程序通过所述接口访问目标硬件。
11.如权利要求10所述的装置,其特征在于,至少一个原生HAL模块用于访问多个本地硬件,至少一个虚拟HAL模块与该至少一个原生HAL模块对应,其中:
针对一个用于访问多个本地硬件的原生HAL模块:
所述HAL,用于在确定所述原生HAL模块对应的多个目标设备包含外部设备和本地硬件时,加载与所述原生HAL模块对应的虚拟HAL模块;
所述与所述原生HAL模块对应的虚拟HAL模块,用于加载所述原生HAL模块,接收应用程序的硬件访问请求,通过所述原生HAL模块访问相应的本地硬件,并与相应的外部设备通信以基于所述硬件访问请求访问相应的外部设备。
12. 一种电子设备,其特征在于,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-9中任一项所述的方法。
13.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行根据权利要求1-9中任一项所述的方法。
CN202310945379.2A 2023-07-31 2023-07-31 硬件访问方法、装置、电子设备及存储介质 Active CN116661955B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310945379.2A CN116661955B (zh) 2023-07-31 2023-07-31 硬件访问方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310945379.2A CN116661955B (zh) 2023-07-31 2023-07-31 硬件访问方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116661955A true CN116661955A (zh) 2023-08-29
CN116661955B CN116661955B (zh) 2023-10-03

Family

ID=87715682

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310945379.2A Active CN116661955B (zh) 2023-07-31 2023-07-31 硬件访问方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116661955B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1622028A (zh) * 2003-04-22 2005-06-01 夏普株式会社 分布式外围设备控制系统和方法
CN102301605A (zh) * 2009-01-30 2011-12-28 卡西斯国际私人有限公司 用于在终端设备中虚拟化外围设备使通过具有处理器能力的可移动便携设备实现远程管理的系统和方法
US9141564B1 (en) * 2010-08-04 2015-09-22 Open Invention Network, Llc Interconnection of peripheral devices on different electronic devices
CN110287036A (zh) * 2019-05-09 2019-09-27 华为技术有限公司 一种设备共享方法、装置和系统
CN115136570A (zh) * 2020-02-20 2022-09-30 华为技术有限公司 物联网设备的集成

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1622028A (zh) * 2003-04-22 2005-06-01 夏普株式会社 分布式外围设备控制系统和方法
CN102301605A (zh) * 2009-01-30 2011-12-28 卡西斯国际私人有限公司 用于在终端设备中虚拟化外围设备使通过具有处理器能力的可移动便携设备实现远程管理的系统和方法
US9141564B1 (en) * 2010-08-04 2015-09-22 Open Invention Network, Llc Interconnection of peripheral devices on different electronic devices
CN110287036A (zh) * 2019-05-09 2019-09-27 华为技术有限公司 一种设备共享方法、装置和系统
CN115136570A (zh) * 2020-02-20 2022-09-30 华为技术有限公司 物联网设备的集成

Also Published As

Publication number Publication date
CN116661955B (zh) 2023-10-03

Similar Documents

Publication Publication Date Title
EP3389230B1 (en) System for providing dialog content
US10223132B2 (en) Synchronization between electronic devices
EP3793169B1 (en) Application function implementation method and electronic device
EP4013003A1 (en) Communication protocol switching method, apparatus and system
US9591433B2 (en) Communication method, electronic device, and storage medium
EP4220402A2 (en) Augmenting capabilities of a host device
WO2022127661A1 (zh) 应用共享方法、电子设备和存储介质
CN112328318B (zh) 专有云平台自动规划的方法、装置及存储介质
EP2784661B1 (en) Computer program product, information processing method, and information processing apparatus
WO2022156535A1 (zh) 分布式应用的处理方法和装置
US20200125346A1 (en) Method, User Equipment, and Application Server for Downloading Application
KR102133514B1 (ko) 전자 장치의 상태 메시지 서비스 제공 방법 및 그 전자 장치
KR102424930B1 (ko) 외부 장치에 따라 다른 서비스를 제공하는 전자 장치
CN116661955B (zh) 硬件访问方法、装置、电子设备及存储介质
WO2015196586A1 (zh) 虚拟桌面的配置、获取方法及装置
US20150280933A1 (en) Electronic device and connection method thereof
WO2022188509A1 (zh) 分布式环境下的任务处理方法、装置、电子设备和介质
CN111866278B (zh) 无线耳机的电量显示方法、装置、设备及存储介质
CN110582079B (zh) 一种蓝牙连接设置方法、装置、计算机可读存储介质及终端
KR102457007B1 (ko) 리치 통신 스위트 서비스를 통한 비디오 공유 제어 방법 및 전자 장치
CN112272223A (zh) 应用的运行方法、装置、服务器及计算机可读存储介质
WO2023241558A1 (zh) 通信方法、通信系统和鼠标
US20240089414A1 (en) Electronic device, method for data transmission between the electronic device and another electronic device, and medium
WO2022228214A1 (zh) 设备发现方法、系统及其电子设备
CN116599921A (zh) 一种消息刷新方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant