CN107851009A - 用于修改基于控制器的设备的代码的行为的方法和装置 - Google Patents

用于修改基于控制器的设备的代码的行为的方法和装置 Download PDF

Info

Publication number
CN107851009A
CN107851009A CN201680040535.9A CN201680040535A CN107851009A CN 107851009 A CN107851009 A CN 107851009A CN 201680040535 A CN201680040535 A CN 201680040535A CN 107851009 A CN107851009 A CN 107851009A
Authority
CN
China
Prior art keywords
code
equipment
configuration file
controller
modification
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
CN201680040535.9A
Other languages
English (en)
Other versions
CN107851009B (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.)
Ciambella Ltd
Original Assignee
Ciambella 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
Priority claimed from US15/063,764 external-priority patent/US10067490B2/en
Priority claimed from PCT/US2016/031217 external-priority patent/WO2016182913A1/en
Application filed by Ciambella Ltd filed Critical Ciambella Ltd
Publication of CN107851009A publication Critical patent/CN107851009A/zh
Application granted granted Critical
Publication of CN107851009B publication Critical patent/CN107851009B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Telephonic Communication Services (AREA)
  • Stored Programmes (AREA)

Abstract

提供了一种用于远程修改基于控制器的设备的代码的行为的方法和装置。所述方法包括:在代码虚拟化服务器处接收来自用户设备的修改的配置文件,所述修改的配置文件对应于与在所述基于控制器的设备上执行的代码相关联的配置文件,其中所述基于控制器的设备远离所述用户设备和所述代码虚拟化服务器;以及用所述修改的配置文件更新所述配置文件。所述代码包括用于在所述基于控制器的设备上执行的第一代码,并且所述第一代码包括从所述基于控制器的设备到所述代码虚拟化服务器的远程调用,以使得在所述代码虚拟化服务器上使用更新的配置文件执行所述第二代码。

Description

用于修改基于控制器的设备的代码的行为的方法和装置
技术领域
本发明的实施例总体上涉及用于修改基于控制器的设备的代码的行为的方法和装置。
背景技术
现场可编程门阵列(FPGA)和诸如MCU、片上系统(SoC)、移动电话、计算机等的其他基于控制器的设备(例如基于微控制器或微处理器的设备)的使用已经相当普及。控制器的低制造成本、可用性和定制化已经导致商业公司和业余爱好者等使用来创造设备的微控制器和片上系统(SoC)(例如,PIC、ARDUINO、树莓派(RASPBERRY PI)等)的迅速发展。基于控制器的设备包括处理器内核和存储器,其可编程以处理与外设通信的输入/输出数据。NORFLASH或OTP ROM形式的程序存储器以及少量的随机存取存储器(RAM)通常也包含在这样的基于控制器的设备上。数个这样的基于控制器的设备被设计用于较大设备中的嵌入式应用。
这样的基于控制器的设备在真实世界的应用可能潜在地包括将基于控制器的设备与作为外围设备的常规对象或系统相连接,从而实现数字化、连接性和甚至对这样的外围设备的远程控制。然而,在使普通用户可以利用这样的真实世界的应用时,特别是对于那些对编程和硬件知识有限或没有此类知识的用户来说,存在一些挑战。
配置外围设备(常规对象或系统)以与基于控制器的设备一起使用通常是相当复杂的。此外,在基于控制器的设备的数个应用中,可能期望具备适应动态输入和/或产生动态输出的能力。配置和编程基于控制器的设备以适应动态输入或输出需要编写或重写所有基于控制器的设备的代码,而这对于普通用户来说是非常具有挑战性的,因为对基于控制器的设备重写代码或重新编程需要理解外围设备和用于外围设备的合适的基于控制器的设备的层次结构、编码命令、正确的调用语法和其他编程参数。在代码不准确的情况下,程序将无法运行或产生错误。此外,即使在简单且小型的这样的基于控制器的设备组中,每次重写程序都需要对输入、输出进行修改或需要代码行为的任何其他改变,这可能是麻烦且过分耗时的。在很多情况下,重新编程或重写代码可能与第一次编程或编写代码几乎一样费劲。
此外,随着“物联网(IoT)”的发展,越来越多这样的基于控制器的设备彼此连接和/或连接到因特网,这显著增加了与实现期望的代码行为相关联的重新编程的复杂性。这样的设备的组可以彼此通信和/或与网关通信,使得网关成为用于所谓的边缘设备的因特网通信的代理。边缘设备可以通过一个或多个网关进行通信,或者直接作为独立的设备。在组内,必须以兼容的方式对所有设备(网关和边缘)进行编程,以促进互操作性。除了根据用于实现期望的代码行为的定制进行重新编程之外,每次执行定制化时管理兼容性也可能是非常耗时的。
因此,本领域存在对高效地修改基于控制器的设备的代码的行为并且减少至少一些上述问题的需要。
发明内容
本发明的实施例总体上涉及基本上如结合至少一个附图所示出和/或所描述的用于远程修改基于控制器的设备的代码的行为的方法和装置,在权利要求中更完整的阐述了所述方法和装置。
通过审阅本公开的以下详细描述以及附图,可以理解本公开的这些和其他特征和优点,在附图中相同的附图标记始终表示相同的部分。
附图说明
因此,通过参考实施例,可以获得可以详细理解本发明的上述特征的方式、本发明的详细描述、简要总结,其中的一些实施例在附图中示出。然而,要注意的是,附图仅示出了本发明的典型实施例,因此不认为其是对本发明范围的限制,因为本发明可以允许其他等效的实施例。
图1是根据本发明实施例的用于远程修改代码行为的系统100的框图;
图2是根据本发明的实施例的通过改变与由图1的代码虚拟化服务器执行的进程相关联的配置文件,来修改用于基于控制器的设备的代码的行为的方法的流程图;
图3是根据本发明实施例的由图1的装置100的各个设备执行的用于修改用基于控制器的设备执行的代码的行为的方法300的流程图;以及
图4是根据本发明的一个实施例的由图1的至少一个基于控制器的设备和代码虚拟化服务器执行的用于控制至少一个基于控制器的设备的代码行为的方法的流程图。
具体实施方式
本发明的实施例涉及用于远程修改边缘设备和网关设备(也称为“基于控制器的设备”或简称为“CB设备”)的代码行为的方法和装置,并且更特别地涉及修改与用于基于控制器的设备的代码相关联的配置文件,而不改变代码本身。使用修改的配置文件执行基于控制器的设备的代码,从而在不需要重写基于控制器的设备的全部代码的情况下修改代码行为。部署在基于控制器的设备上的代码(“第一代码”)包括用于在远程设备(例如,服务器)上执行功能(“第二代码”)的调用(call)。部署在基于控制器的设备上的代码(第一代码)和远程功能(第二代码)一起形成了用于基于控制器的设备的代码或与基于控制器的设备相关联的代码。配置文件与用于基于控制器的设备(例如,具有控制器(如微控制器、微处理器、SoC、MCU等)的设备)的这样的代码相关联并且用于实现这样的代码。对配置文件进行修改并将其存储在远离基于控制器的设备的设备(例如代码虚拟化服务器)上,该设备也可以是执行第二代码的远程设备。本发明的实施例通过使用用户设备上的图形用户界面(GUI)来使得用户能够选择远离用户设备的基于控制器的设备,访问与用于基于控制器的设备的代码相关联的配置文件,远程修改配置文件,并使用修改的配置文件启动代码的执行。使用修改的配置文件实现代码获得所需的修改的代码行为,而不需要修改代码本身。因此,远程控制或修改基于控制器的设备执行的代码的行为,而不必对基于控制器的设备重新编程。
当在本文使用时,除非上下文另有说明,否则术语“与基于控制器的设备相关联的代码”,“用于基于控制器的设备的代码”和“用于在基于控制器的设备上执行的代码”可以互换使用。用于基于控制器的设备的代码包括在基于控制器的设备上执行的第一代码和由第一代码调用以在远离基于控制器的设备的设备上执行的第二代码。第二代码是使用配置文件执行的,因此配置文件与第二代码相关联。配置文件还与调用执行第二代码的第一代码相关联。通过这种方式,配置文件还与用于在基于控制器的设备上执行的代码相关联。
共同转让的2007年9月11日提交的专利申请序列号11/853,137、2007年9月11日提交的11/853,143和2011年1月28日提交的12/931,292(现在的美国专利8,726,285)描述了用于远程生成、部署和执行工作流程的技术。共同转让的2014年6月17日提交的专利申请序列号14/307,198、2014年6月17日提交的14/307,208、2014年6月17日提交的14/307,227、2014年7月10日提交的14/328,415、2015年1月9日提交的14/593,151以及2015年4月13日提交的14/685,064中描述了代码和SDK的自动生成、代码和SDK的虚拟化以及生成用于代码虚拟化的远程进程调用的技术。列出的申请描述了为包括控制器的基于控制器的设备的自动开发软件、使用图形用户界面远程地将诸如传感器或致动器之类的硬件的使用映射到控制器以及执行软件(例如,远程地执行)以通过定义的工作流程扩展这样的基于控制器的设备的能力的技术。上面列出的每个申请都通过引用的方式将其整体并入本文中。
这些技术通过将代码段(snippet)和/或库放置在基于控制器的设备的存储器中而起作用,其中当代码段被执行时,其调用用于在远程设备(例如代码虚拟化服务器)上执行的功能(或代码的一部分),和/或(直接地或通过代码虚拟化服务器)将数据发送到远离代码虚拟化服务器的远程服务,和/或进一步调用由远程服务对数据远程执行的功能。这些技术用于创建和管理包括基于控制器的设备的基于控制器的解决方案,包括生成用于基于控制器的设备的程序。本发明的实施例使用这些技术来修改用于基于控制器的设备的程序的代码行为。通过这样的实施例,可以在动态环境中修改代码行为,例如,在需要改变代码的输入,或者需要不同的输出,或者上述两者的动态环境中。此外,本实施例能够例如使得由使用用户计算机的用户来远程修改代码行为,所述用户计算机远离代码在其上被执行的设备。
图1是根据本发明的一个或多个实施例的用于远程修改代码行为的系统100的框图。系统100包括多个基于控制器的设备1021...102N(统称为基于控制器的设备102)、多个基于控制器的设备1031...103P(统称为基于控制器的设备103)、网关108、因特网110、用户计算机112、代码虚拟化服务器114、可选的数据库115和远程服务118。
基于控制器的设备102和网关108形成连接到因特网110的一组设备(或设备组116)。设备组116在基于控制器的设备102和网关108之间沿着通信路径1061...106N通信。尽管通信路径通常是无线路径,但是在一些实施例中,通信路径可以是有线的。另外,在一些实施例中,基于控制器的设备102可以能够沿着虚线路径1041...104N在它们自己之间通信。基于控制器的设备103直接与因特网110通信,并沿着虚线路径109在它们自己之间通信。尽管描绘了单个网关108,但是可以在类似于设备组116的组内使用多个网关108或跨越多个组使用多个网关108。基于控制器的设备102、基于控制器的设备103和网关108中的每一个都包括控制器,例如微控制器或处理器,其可以被远程编程或者通过来自用户设备112的直接连接而被编程。在一些实施例中,基于控制器的设备102、基于控制器的设备103和网关108中的每一个的微控制器都可以被代码虚拟化服务器114编程。
每个基于控制器的设备(边缘设备102,103和网关108)都包括设备控制器(DC)、外围电子设备(PE)和存储器。例如,为了简洁起见,尽管每个设备(边缘设备102,103和网关108)都包括设备控制器和存储器,并且可以包括外围电子设备,但是仅示出了基于控制器的设备103P包括设备控制器120、外围电子设备122和存储器124。设备控制器120包括微控制器(例如,PIC,AVR类型,ARM类型等),片上系统(SoC,例如RASPBERRY PI)或本领域中通常已知的微处理器中的一个或多个。例如,基于这样的设备的应用和所需功能,控制器的类型可以一个设备与另一个设备不同。外围电子设备122包括但不限于传感器、灯、音频扬声器、致动器、显示器、打印机、扫描仪、I/O设备等。外围电子设备122包括用于管理或操作常规系统的组件,或者外围电子设备122本身是常规系统,例如音乐系统、警报器、家用电器、电气设备、机电设备等等。存储器124是用于存储数据和可执行软件的任何形式的数字存储装置。这样的存储器包括但不限于随机存取存储器、只读存储器、磁盘存储装置、光学存储装置等。存储器124存储对应于操作系统(未示出)的计算机可读指令、第一代码126,第一代码126还包括对远离基于控制器的设备103P的设备(例如代码虚拟化服务器114)上的第二代码的调用128。第一代码126可以包括自动生成的控制器程序(AGCP)代码和包括执行第一代码126和调用128所必需的库的其他代码组件(未示出)。代码组件还能够确保基于控制器的设备可以经由或不经由网关108与代码虚拟化服务器114通信,并且网关108中类似的代码组件能够允许这样的通信。
用户设备112包括CPU 130、支持电路132和存储器136。CPU 130可以是市场上可买到的任何处理器、微处理器、微控制器等。支持电路132包括为CPU提供功能的公知电路,例如用户接口、时钟电路、网络通信、高速缓存、电源、I/O电路等。I/O电路包括显示器134,例如各种标准或基于触摸的显示器,例如本领域中公知的计算机监视器。在一些实施例中,用户界面包括小键盘、电子按钮、扬声器、触摸屏、显示器或其他用户交互机构。存储器136是用于存储数据和可执行软件的任何形式的数字存储装置。这样的存储器包括但不限于随机存取存储器、只读存储器、磁盘存储装置、光学存储装置等。存储器136存储对应于操作系统(未示出)、图形用户界面(GUI)138、使用本实施例代码行为的修改对其可用的基于控制器的设备的列表140、用于存储从代码虚拟化服务器114接收到的一个或多个配置文件或对其的修改的配置文件存储库(store)142的计算机可读指令。当选择基于控制器的设备以修改代码行为、生成并发送修改的配置文件以修改代码行为和接收修改的代码的执行结果以用于显示时,用户设备112耦接到网络110。GUI 138从代码虚拟化服务器114获取基于控制器的设备(102,103,108)的列表以修改安装在基于控制器的设备(102,103,108)上的代码(例如,第一代码)的行为。GUI 138还获取与安装在列表140中包括的一个或多个基于控制器的设备上的代码相关联的配置文件,并且在修改之前和之后,这样的检索到的配置文件可以存储在配置文件存储库142中。在一些实施例中,GUI 138是驻留在代码虚拟化服务器上、通过用户设备112上的浏览器呈现在用户设备上的软件。在一些实施例中(未示出),列表140和配置文件存储器142驻留在代码虚拟化服务器114上,并通过浏览器显示在用户设备112上。
GUI 138(直接显示或通过浏览器显示)呈现在显示器134上。列表140作为可选列表144显示在GUI 138中,从可选列表144可以选择一个或多个基于控制器的设备(CBD1...CBDx)。由GUI 138从代码虚拟化服务器114获取到的配置文件146的可选列表包括对应于选择的基于控制器的设备的一个或多个配置文件(配置文件1...配置文件y)。每个配置文件都包括参数(参数1...参数z)的列表148。用户可以请求列表140,可以从代码虚拟化服务器114请求列表140,并且一旦获取得到列表140,就将其显示为列表144,用户从其中选择CBD1(或“CBD 145”)以远程修改CBD 145的代码的行为。在接收到对CBD 145的选择之后,GUI 138就获取与CBD 145的代码(用于在CBD上执行的代码和/或与CBD相关联的代码)相关联的配置文件,并且呈现配置文件的列表146供用户选择。用户选择配置文件1(或“配置文件147”),然后GUI 138显示包含在配置文件147中的参数的列表148。用户选择参数1(或“参数149”)以如所期望地修改参数149来修改用于CBD 145的代码的行为。用户可以使用本领域中通常已知I/O设备修改一个或多个参数,并且可以类似地修改对应于包括在列表140中的一个或多个基于控制器的设备的一个或多个参数和配置文件。例如,使用“保存”按钮133将修改的配置文件存储在配置文件存储库142中,并且例如使用“发送”按钮135将其发送到代码虚拟化服务器114。以上描述仅示出了一种可能的GUI布局方案,并且不将这里描述的技术限制于这样的说明。
在一些实施例(未示出)中,GUI 138还在显示器134上显示修改的代码行为的结果。在一些实施例中(未示出),GUI 138包括用于创建和/或修改用于基于控制器的设备的程序以及测试和向基于控制器的设备102,103和/或网关108部署程序的集成开发环境(IDE)。替代实施例可以使用定制专用集成电路(ASIC)上的算法来提供由CPU 130、支持电路132和存储器136的任何组合提供的功能。在一些实施例中,I/O设备包括小键盘、电子按钮、扬声器、触摸屏、显示器或其他用户交互机构。
代码虚拟化服务器114可以是通用计算机或被编程为专用计算机的其他电子处理设备,以执行与本发明的实施例相关的功能。代码虚拟化服务器114包括CPU 150、支持电路152和包含指令和算法的存储器154。CPU 150可以是市场上可买到的任何处理器、微处理器、微控制器等。支持电路152包括为CPU提供功能的公知电路,例如用户接口、时钟电路、网络通信、高速缓存、电源、I/O电路等。替代实施例可使用定制专用集成电路(ASIC)上的控制算法来提供由CPU 150、支持电路152和存储器154的任何组合提供的功能。在一些实施例中,用户接口包括小键盘、电子按钮、扬声器、触摸屏、显示器或其他用户交互机构。在一些实施例中,用户接口可以与基于控制器的设备102,103和108通信。
存储器154可以是用于存储数据和可执行软件的任何形式的数字存储装置。这样的存储器包括但不限于随机存取存储器、只读存储器,磁盘存储装置、光学存储装置等。存储器存储对应于界面156、配置文件更新器157、进程库158、软件开发工具包(SDK)生成器160、代码生成器162、配置文件数据库164、执行引擎166以及设备数据库178的计算机可读指令。
界面156为用户设备112提供与代码虚拟化服务器114交互的功能。在一些实施例中,界面156还可以包括GUI软件,例如对应于GUI 138,GUI软件可以由代码虚拟化服务器114提发送到用户设备,或以其他方式提供给用户以安装在用户设备112上。在一些实施例中,界面156包括通过用户设备112上的浏览器呈现GUI 138的软件。另外,界面156提供到基于控制器的设备102,103,108和远程服务118的连接。配置文件更新器157使用例如从用户设备112接收的修改的配置文件来更新配置文件168。配置文件更新器157根据修改的配置文件的对应参数修改配置文件168的一个或多个参数。配置文件更新器157进一步将更新后的配置文件存储到配置文件168或作为配置文件168。在一些实施例中,配置文件更新器157包括在界面156中。进程库158包括可以在接收到来自基于控制器的设备的调用时执行的代码(即第二代码159,也称为“编排(choreos)”或“编排(choreographs)”)。根据一些实施例,使用基于从用户设备112接收的修改的配置文件更新的配置文件来执行第二代码。根据一些实施例,第二代码执行遮蔽(curtain off)基于控制器的设备的功能,不是这样的话基于控制器的设备的设备控制器将不能执行此类功能。SDK生成器160例如通过根据硬件、软件平台、通信基础设施和其他代码执行参数提供必要的代码库来生成用于支持第一代码、第二代码或两者的执行的SDK。代码生成器162创建用于基于控制器的设备的第一代码,并且第一代码包括从基于控制器的设备到代码虚拟化服务器114的用于使用与基于控制器的设备相关联的配置文件执行第二代码159的调用。配置文件数据库164包括对应于进程库158的至少一个进程(例如,第二代码159)的至少一个配置文件168。配置文件168包括进程参数170及其列表,包括诸如用户名、标识信息和密码的用户数据的连接配置文件172,连接参数174和与第二代码159的执行相关的协议176。配置文件168还可以包括诸如配置文件名(例如,一组参数(包括所有子配置文件)的名称)、硬件配置文件参数(例如,硬件类型或处理器类型,例如Arduino Uno,Arduino Yun是硬件类型的例子,而AVR,ARM,PIC是处理器类型的例子)的参数。配置文件参数的例子在表1中示出,但不限于此。根据第二代码159的期望行为设置(set up)配置文件168。配置文件数据库164包括类似于配置文件168的几个配置文件(未示出)。设备数据库178包括其代码行为可以被修改的基于控制器的设备102,103,108的列表182以及使配置文件(例如配置文件168)与一个或多个基于控制器的设备(例如基于控制器的设备103P)进行参照(referencing)的索引184。包括在配置文件数据库164和设备数据库178中的信息可以分布在代码虚拟化服务器114上的一个或多个数据库中,或者可选地分布在网络110上的设备(例如数据库115)上。
根据本发明的实施例,配置文件更新器157使用通过GUI 138从用户设备112接收的修改的配置文件来更新配置文件168。在基于控制器的设备103P上执行第一代码126将使得调用128在代码虚拟化服务器114上使用更新的配置文件168执行第二代码159。执行引擎166使用更新的配置文件168执行第二代码159,产生根据更新的配置文件168的代码行为。通过这种方式,与基于控制器的设备103P相关联的代码(即,第一代码和第二代码)的行为被修改,例如,远离代码地被修改,不修改代码本身。
表1
执行引擎166支持所有上述功能以促进装置100的各种组件之间的互操作性。执行引擎利用上述每个功能块来使用户能够通过用户设备上的GUI对基于控制器的设备进行编程以控制和修改它们的功能。
远程服务118包括由远离用户设备112、代码虚拟化服务器114和基于控制器的设备(102,103,108)的第三方服务器或者数据库(即设备)提供的私人或公共服务。例如,远程服务118包括第三方数据库和服务(例如,亚马逊,易贝,脸书,苹果推送通知(APPLE PUSHNOTIFICATION)服务器,文本消息服务器,电子邮件服务器等)或内部数据源(例如,DB,noSQL数据库,文件等)。代码虚拟化服务器114可以经由网络110或另外的网络访问远程服务118。根据一些实施例,通过使用执行引擎166、使用更新的配置文件168执行第二代码159来提供(provision)远程服务118。
网络110包括因特网或广域网(WAN)或其组合,并且可以包括一个或多个这样的网络。如图1所示,装置100的所有组件都使用已知的方法和组件连接到网络110或彼此连接。
图2示出了根据本发明的实施例的由代码虚拟化服务器114执行的、通过更新用于执行与基于控制器的设备相关联的代码的配置文件来远程修改与基于控制器的设备相关联的代码的行为的方法200的流程图。方法200从步骤202开始并进行到步骤204。在步骤204,代码虚拟化服务器114从用户设备112接收与用于执行代码(例如,第一代码126和/或第二代码159)的配置文件相对应的修改的配置文件,所述代码与基于控制器的设备(例如,基于控制器的设备103P)相关联。在一些实施例中,配置文件更新器157从GUI 138接收修改的配置文件。方法200进行到步骤206,在步骤206,方法200用修改的配置文件更新用于执行代码的配置文件。根据一些实施例,配置文件更新器157将配置文件168的至少一个参数修改为与修改的配置文件的对应参数相同的值。方法200进行到步骤208,在步骤208,在从基于控制器的设备103P接收到在代码虚拟化服务器114上执行第二代码(例如,第二代码159)的调用时,方法200使用更新的配置文件执行第二代码。根据一些实施例,执行引擎166使用更新的配置文件168执行第二代码159,导致与基于控制器的设备103P相关联的代码的行为的修改。方法200然后进行到步骤210,在此,方法200结束。
图3示出了根据本发明实施例的由图1的装置100的各个设备执行的方法300的流程图,方法300通过改变与代码相关联的配置文件来修改用基于控制器的设备执行的代码的行为。用户设备112执行方法302,代码虚拟化服务器114执行方法330,基于控制器的设备130P执行方法350,并且远程服务118执行方法360,并且方法302,330,350和360结合以提供方法300的功能。在此,将参考本文描述的作为方法300的步骤的各个步骤,但显然每个步骤也是方法302,330,350和360中的一个步骤。
在步骤304,如上所述,方法300例如使用显示器134上的GUI 138显示基于控制器的设备的列表140。该列表可以是代码虚拟化服务器响应于用户设备112的请求而发送的基于控制器的设备102,103,108的列表(例如,列表182),或者可以以其他方式将列表提供给用户设备112。在一些实施例中,用户设备112将列表存储为列表140。在步骤306中,方法300接收经由GUI 138对基于控制器的设备(例如,基于控制器的设备130P)的选择,在步骤308,将该选择发送到代码虚拟化服务器114。
在步骤332,方法300的执行转移到代码虚拟化服务器114,在步骤332,方法300获取一个或多个配置文件(例如,配置文件168)和与用于在基于控制器的设备103P上执行的代码相关联的其他配置文件。方法300进行到步骤334,在步骤334,将配置文件168和其他配置文件发送到用户设备112进行修改。
在步骤310,方法300的执行转移到用户设备,在步骤310,方法300例如使用GUI138显示接收到的包括配置文件168在内的配置文件。在步骤312,方法300接收对配置文件的选择,例如,配置文件168(例如,作为由用户在用户设备112输入的输入,或者来自用户选择的另一个文件或数据库的输入)以修改配置文件168。在步骤314,方法300显示包括在配置文件168中的一个或多个参数以对其进行修改或更新。在步骤316,方法300接收修改配置文件168的参数的输入,并且在步骤318,方法300生成具有在步骤316被修改的参数的修改的配置文件。方法300可以接收与多个参数相关联的多个输入,并相应地生成修改的配置文件。根据一些实施例,方法300使用GUI 138来生成修改的配置文件。此外,方法300可选地将修改的配置文件存储在例如配置文件存储库142中。在步骤320,方法300将修改的配置文件发送到代码虚拟化服务器114。
方法300的执行在步骤336转移到代码虚拟化服务器114,在步骤336处,方法300使用修改的配置文件来更新配置文件168。方法300使用配置文件更新器157通过根据修改的配置文件的相应参数来更新每个参数从而更新配置文件168或者用修改的配置文件替换配置文件168,并且在步骤338,方法300将修改的配置文件存储为配置文件168。通过这种方式,步骤304-320和步骤332-338使用修改的配置文件实现了对配置文件168的更新。尽管如本领域技术人员将容易想到的那样方法300的步骤可以扩展为包括多个配置文件,但是为了简洁起见,参考单个配置文件(例如配置文件168)对方法300进行了讨论。其他步骤涉及使用更新的配置文件执行与基于控制器的设备103P相关联的代码以修改代码的行为。
在步骤352,方法300在基于控制器的设备103P上执行第一代码126。方法300进行到步骤354,在步骤354,第一代码126通过调用128调用代码虚拟化服务器114来在代码虚拟化服务器114上执行第二代码159。
在步骤340,方法300的执行转移到代码虚拟化服务器114,在步骤340,方法300从用户设备112接收调用128。在步骤342,代码虚拟化服务器114使用如上所述已经使用修改的配置文件更新了的配置文件168来执行第二代码159。使用更新的配置文件168执行第二代码159导致第二代码159的行为的差异,从而导致第一代码126的行为的差异。然而,第一代码126和第二代码159都不需要修改。在一些实施例中,方法300包括可选的步骤344,步骤344提供远程服务118作为执行第二代码159的一部分。通过更新配置文件168,与提供远程服务118相关的代码行为被修改。例如,根据需要,配置文件的修改可以导致使用的远程服务(脸书,亚马逊等)、使用的账户、显示的文本、若干其他参数的改变。
如果执行可选的步骤344,则方法300的执行转移到远程服务118,远程服务118可以由远离基于控制器的设备103P、代码虚拟化服务器114或用户设备112的一个或多个服务器提供。在步骤362,方法300根据第二代码159并且例如根据修改的配置文件168的参数来执行远程服务118。在步骤364,方法300将执行远程服务118产生的数据发送到代码虚拟化服务器114。执行远程服务118产生的数据可以包括关于是否成功提供了远程服务的状态更新,或者远程服务118的任何输出。
在步骤346,方法300的执行转移到代码虚拟化服务器114,在步骤346,方法300将提供远程服务118所产生的数据发送到基于控制器的设备103P,并且可选地发送到用户设备112。
在步骤356,方法300的执行转移到基于控制器的设备103P,在步骤356,方法300继续执行第一代码126。如果未执行可选的步骤344,则在步骤342之后的步骤356,方法300的执行转移到基于控制器的设备103P。此外,在一些实施例中,在基于控制器的设备103P上的第一代码128的执行在步骤354之后终止,并且在这样的实施例中,方法300不执行步骤356。
如果在步骤346,将数据发送到用户设备112,则在步骤322方法300的执行转移到用户设备,在步骤322,方法300例如经由显示器134上的GUI 138接收并显示数据。
有利地,保护与代码相关联的所有其他进程(例如,保护代码的开发、测试、部署),也就是说,不需要对这样的进程进行修改。因此,根据所公开的实施例修改配置文件允许修改代码行为而不需要修改代码本身,并且不需要重新执行开发、测试和部署的步骤。
图4是根据本发明的实施例的由至少一个基于控制器的设备(102,103,108)(例如,基于控制器的设备103P)和代码虚拟化服务器114执行的用于控制图1的至少一个基于控制器的设备的代码行为的方法400的流程图。方法400在基于控制器的设备上于步骤402开始,并且进行到步骤404,在步骤404,方法400开始在基于控制器的设备103P上执行代码(例如,第一代码126)。第一代码126包括与基于控制器的设备103P相关联的预定义的程序代码或进程。第一代码126包括对由代码虚拟化服务器114提供的功能的一个或多个调用128。在步骤406,从基于控制器的设备103P向代码虚拟化服务器114作出调用128,并且方法400切换到代码虚拟化服务器114。方法400进行到步骤408,在步骤408,方法400使用存储在代码虚拟化服务器114上的第一配置文件(或配置文件1),在代码虚拟化服务器114上执行对应于调用功能的代码(例如,第二代码159)。当在代码虚拟化服务器114上执行步骤408之后,在步骤410,方法400将代码的执行返回到基于控制器的设备103P。在步骤412,方法400完成在基于控制器的设备103P上的第一代码126的执行。在一些实施例中,第一代码126的执行可以在代码虚拟化服务器114上于步骤410完成,并且在步骤412中可以不发生代码的附加执行。方法400进行到步骤414,方法400在步骤414结束。
步骤402-414描述了使用存储为配置文件168的配置文件1执行用于基于控制器的设备103P的代码。例如,在实施例中,基于控制器的设备103P是被配置为在温度降低到预定值以下时接通加热的温度传感器。当温度下降到预定值以下时,使用配置文件1执行该代码。具体地,当条件满足时(温度降低到预定值以下),第一代码128被配置接通加热,并且(通过调用128)调用代码虚拟化服务器114来提供远程服务118(例如,在脸书上发布预定义的文本)。在接收到调用128后,代码虚拟化服务器114使用包括用户的登录凭证和预定义文本的配置文件1来执行第二代码159。执行第二代码159导致通过用户的账户生成脸书帖子,说明“已经接通加热”。该结果是用于基于控制器的设备103P的代码(第一代码128和第二代码159)的第一行为。
根据本发明的一些实施例,例如使用参考图2描述的方法200,或者在图3的方法300中描述的步骤304-320和步骤332-338,由用户将第一配置文件(配置文件1)修改或更新为第二配置文件(配置文件2)。因此,配置文件168被更新为配置文件2。然后以类似于步骤402-328的方式并且例如下文关于步骤422-434所描述的那样,使用第二配置文件(配置文件2)执行方法400。
方法400在基于控制器的设备103P上于步骤422开始,并且进行到步骤424,在步骤424,方法400开始在基于控制器的设备103P上执行代码(例如,第一代码126)。第一代码126包括与基于控制器的设备103P相关联的预定义的程序代码或进程。第一代码126包括对由代码虚拟化服务器114提供的功能的一个或多个调用128。在步骤426,从基于控制器的设备103P向代码虚拟化服务器114作出调用128,并且方法400切换到代码虚拟化服务器114。方法400进行到步骤428,在步骤428,方法400使用存储在代码虚拟化服务器114上的更新的配置文件(或第二配置文件2),在代码虚拟化服务器114上执行对应于调用功能的代码(例如,第二代码159)。当在代码虚拟化服务器114上执行步骤428之后,在步骤430,方法400将代码的执行返回到基于控制器的设备103P。在步骤432,方法400完成在基于控制器的设备103P上的第一代码126的执行。在一些实施例中,第一代码126的执行可以在代码虚拟化服务器114上于步骤430完成,并且在步骤432中可以不发生代码的附加执行。方法400进行到步骤434,方法400在步骤434结束。
步骤422-434描述了使用配置文件2执行用于基于控制器的设备103P的代码,在使用上述技术修改配置文件168之后,将所述配置文件2存储为配置文件168。继续基于控制器的装置103P是被配置为当温度下降到预定值以下时接通加热的温度传感器的示例。当温度下降到预定值以下时,现在使用配置文件2执行代码。具体地,当满足条件(温度下降到预定值以下)时,第一代码128被配置为接通加热,并且(通过调用128)调用代码虚拟化服务器114来提供远程服务118(例如,在TWITTER上发布不同的文本)。在接收到调用128后,代码虚拟化服务器114使用包括TWITTER的用户的登录凭证和预定义文本的配置文件2来执行第二代码159。执行第二代码159导致通过用户的账户生成TWITTER帖子,说明“这里真的很冷!”。该结果是用于基于控制器的设备103P的代码(第一代码128和第二代码159)的第二行为。通过这种方式,所描述的实施例能够修改用于基于控制器的设备103P的代码的行为,而不必重写或修改代码本身。
此外,尽管所描述的示例仅改变了关于提供不同服务和发布不同文本的行为,但是代码和配置文件的组合可以被配置为提供对代码行为的宽范围的修改。在不脱离如权利要求所限定的本发明的范围和精神的情况下,对于本领域技术人员来说,在对代码和配置文件的配置中容易发生这种变化。本文讨论的各种实施例所示的技术通过无需对每个基于控制器的设备单独重新编,使得用户快速且容易地控制或修改代码行为。在一些实施例中,代码虚拟化服务器114实现为默认通过web界面、或者任何GUI(例如,智能手机应用或计算机应用)提供对代码生成、部署、远程重新编程的访问的服务(未示出)。尽管针对物联网(IoT)设备描述了实施例,但是本领域技术人员将容易理解,所公开的实施例示例的技术适用于若干其他编程环境。
本文描述的方法可以在不同实施例中以软件、硬件或其组合来实现。另外,可以改变方法的顺序,并且可以添加、重新排序、组合、省略或以其他方式修改各个元件。本文描述的所有示例以非限制性的方式呈现。可以进行各种修改和改变,这对受益于本公开内容的本领域技术人员将是显而易见的。已经在特定实施例的上下文中描述了根据实施例的实现。这些实施例意在说明而不是限制。许多变化,修改,添加和改进都是可能的。因此,可以为在本文作为单个实例描述的组件提供多个实例。各个组件、操作和数据存储之间的边界不那么严格,并且在特定说明性配置的上下文中对特定操作进行说明。功能的其他分配是可预见的,并且可以落入下面的权利要求的范围内。最后,在示例配置中作为分立组件呈现的结构和功能可以实现为组合结构或组件。这些和其他变形、修改、添加和改进可落入如下权利要求中所限定的实施例的范围内。
尽管前述内容针对本发明的实施例,但是可以在不脱离本发明的基本范围的情况下设计本发明的其他和进一步的实施例,并且本发明的范围由随后的权利要求确定。

Claims (15)

1.一种用于远程修改基于控制器的设备的代码的行为的计算机实现的方法,包括:
在代码虚拟化服务器处接收来自用户设备的修改的配置文件,所述修改的配置文件对应于与在所述基于控制器的设备上执行的所述代码相关联的配置文件,其中所述基于控制器的设备远离所述用户设备和所述代码虚拟化服务器;以及
用所述修改的配置文件更新所述配置文件,
其中所述代码包括用于在所述基于控制器的设备上执行的第一代码,并且其中所述第一代码包括从所述基于控制器的设备到所述代码虚拟化服务器的远程调用,以使得在所述代码虚拟化服务器上使用更新的配置文件执行第二代码。
2.根据权利要求1所述的方法,其中,所述更新包括根据所述修改的配置文件的相应参数来修改所述配置文件的至少一个参数。
3.根据权利要求1所述的方法,还包括:
将多个基于控制器的设备的列表从所述代码虚拟化服务器发送到用户设备,以在所述用户设备上进行显示;以及
从所述用户设备接收从所述多个基于控制器的设备的对所述基于控制器的设备的选择,以修改用于所述基于控制器的设备的代码的行为。
4.根据权利要求3所述的方法,还包括:
获取要使用所述修改的配置文件更新的配置文件;以及
将所述配置文件发送到所述用户设备以进行显示。
5.根据权利要求4所述的方法,其中,发送所述列表以在所述用户设备的图形用户界面(GUI)处显示,经由所述GUI接收所述选择,并且经由所述GUI接收所述修改的配置文件。
6.根据权利要求1所述的方法,还包括:在从所述基于控制器的设备接收到所述远程调用时,在所述代码虚拟化服务器上使用所述更新的配置文件执行所述第二代码。
7.根据权利要求6所述的方法,其中,执行所述第二代码使用所述配置文件启动至少一个远程服务的提供,所述远程服务在远离所述基于控制器的设备、所述用户设备和所述代码虚拟化服务器的设备上提供。
8.根据权利要求7所述的方法,还包括在提供所述远程服务之后,将与所述远程服务的提供有关的数据发送到所述用户设备或所述基于控制器的设备中的至少一个。
9.一种用于远程修改基于控制器的设备的代码的行为的装置,包括:
处理器;和
包括可执行指令的存储器,在使用所述处理器执行所述可执行指令时,所述可执行指令导致执行包括以下步骤的方法:
在代码虚拟化服务器处接收来自用户设备的修改的配置文件,所述修改的配置文件对应于与在所述基于控制器的设备上执行第一代码相关联的配置文件,其中所述基于控制器的设备远离所述用户设备和所述代码虚拟化服务器;以及
用所述修改的配置文件更新所述配置文件,
其中所述第一代码包括从所述基于控制器的设备到所述代码虚拟化服务器的远程调用,以使得在所述代码虚拟化服务器上使用所述配置文件执行第二代码。
10.根据权利要求9所述的装置,还包括:使基于控制器的设备与包括所述配置文件的至少一个配置文件交叉参照的索引,其中所述更新包括根据所述修改的配置文件的相应参数来修改所述配置文件的至少一个参数。
11.根据权利要求9所述的装置,其中,所述方法进一步包括:
将多个基于控制器的设备的列表从所述代码虚拟化服务器发送到用户设备,以在所述用户设备上进行显示;以及
从所述用户设备接收从所述多个基于控制器的设备的对所述基于控制器的设备的选择,以修改用于所述基于控制器的设备的代码的行为;
获取要使用所述修改的配置文件更新的配置文件;以及
将所述配置文件发送到所述用户设备以进行显示,
其中发送所述列表以在所述用户设备的图形用户界面(GUI)处显示,经由所述GUI接收所述选择,并且经由所述GUI接收所述修改的配置文件。
12.根据权利要求9所述的装置,其中,所述方法还包括在使用所述修改的配置文件更新所述配置文件之后存储所述配置文件。
13.根据权利要求9所述的设备,其中,所述方法还包括:在从所述基于控制器的设备接收到所述远程调用时,在所述代码虚拟化服务器上使用所述更新的配置文件执行所述第二代码。
14.根据权利要求13所述的装置,其中,执行所述第二代码使用所述配置文件启动至少一个远程服务的提供,所述远程服务在远离所述基于控制器的设备、所述用户设备和所述代码虚拟化服务器的设备上提供。
15.根据权利要求14所述的设备,其中,所述方法还包括在提供所述服务之后,将与所述远程服务的提供有关的数据发送到所述用户设备或所述基于控制器的设备中的至少一个。
CN201680040535.9A 2015-07-09 2016-07-08 用于修改基于控制器的设备的代码的行为的方法和装置 Active CN107851009B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201562190408P 2015-07-09 2015-07-09
US62/190,408 2015-07-09
US201562270107P 2015-12-21 2015-12-21
US62/270,107 2015-12-21
US15/063,764 2016-03-08
US15/063,764 US10067490B2 (en) 2015-05-08 2016-03-08 Method and apparatus for modifying behavior of code for a controller-based device
USPCT/US2016/031217 2016-05-06
PCT/US2016/031217 WO2016182913A1 (en) 2015-05-08 2016-05-06 Method and apparatus for automatic software development for a group of controller-based devices
PCT/US2016/041573 WO2017008036A1 (en) 2015-07-09 2016-07-08 Method and apparatus for modifying behavior of code for a controller-based device

Publications (2)

Publication Number Publication Date
CN107851009A true CN107851009A (zh) 2018-03-27
CN107851009B CN107851009B (zh) 2021-11-09

Family

ID=57686194

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680040535.9A Active CN107851009B (zh) 2015-07-09 2016-07-08 用于修改基于控制器的设备的代码的行为的方法和装置

Country Status (6)

Country Link
EP (1) EP3320426A4 (zh)
JP (1) JP6626956B2 (zh)
KR (1) KR102567780B1 (zh)
CN (1) CN107851009B (zh)
CA (1) CA2989654C (zh)
WO (1) WO2017008036A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110995462A (zh) * 2019-10-31 2020-04-10 北京浪潮数据技术有限公司 一种云主机功能扩展方法、系统、设备及计算机存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040193635A1 (en) * 2003-03-27 2004-09-30 Karl Hsu Method and apparatus for automatically providing network services
US20090198770A1 (en) * 2008-02-04 2009-08-06 Universal Scientific Industrial Co., Ltd. System and method of updating codes in controller
US20130275560A1 (en) * 2012-04-12 2013-10-17 Absolute Software Corporation Configuration of third party applications in a sandboxed environment

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09160847A (ja) * 1995-12-08 1997-06-20 Hitachi Ltd クライアント・サーバ型分散処理システム
JP2001325237A (ja) * 2000-05-16 2001-11-22 Hitachi Ltd 分散処理システムにおけるプログラム実行方法および装置
JP4263387B2 (ja) * 2000-08-25 2009-05-13 四国電力株式会社 リモートコントロールサーバ、センターサーバおよびそれらを備えたシステム
US20020194608A1 (en) * 2001-04-26 2002-12-19 Goldhor Richard S. Method and apparatus for a playback enhancement system implementing a "Say Again" feature
JP2003052093A (ja) * 2001-08-08 2003-02-21 Matsushita Electric Ind Co Ltd 機器の遠隔制御装置および機器の遠隔制御システム
US7481361B2 (en) * 2005-09-29 2009-01-27 International Business Machines Corporation Method and system for identifying unsafe synthetic transactions and modifying parameters for automated playback
CN105765527B (zh) * 2013-06-18 2019-04-26 西安姆贝拉有限公司 用于定制的软件开发包(sdk)的方法和装置
JP2015121887A (ja) * 2013-12-20 2015-07-02 キヤノン株式会社 情報処理装置及びその制御方法、およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040193635A1 (en) * 2003-03-27 2004-09-30 Karl Hsu Method and apparatus for automatically providing network services
US20090198770A1 (en) * 2008-02-04 2009-08-06 Universal Scientific Industrial Co., Ltd. System and method of updating codes in controller
US20130275560A1 (en) * 2012-04-12 2013-10-17 Absolute Software Corporation Configuration of third party applications in a sandboxed environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LEI ZHONGCHENG ETC: "Web-based Remote Networked Control for Smart Homes", 《PROCEEDINGS OF THE 32ND CHINESE CONTROL CONFERENCE》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110995462A (zh) * 2019-10-31 2020-04-10 北京浪潮数据技术有限公司 一种云主机功能扩展方法、系统、设备及计算机存储介质

Also Published As

Publication number Publication date
JP2018519611A (ja) 2018-07-19
EP3320426A1 (en) 2018-05-16
CA2989654A1 (en) 2017-01-12
KR102567780B1 (ko) 2023-08-18
JP6626956B2 (ja) 2019-12-25
KR20180027529A (ko) 2018-03-14
EP3320426A4 (en) 2019-04-24
WO2017008036A1 (en) 2017-01-12
CN107851009B (zh) 2021-11-09
CA2989654C (en) 2021-12-14

Similar Documents

Publication Publication Date Title
CN103778178B (zh) 用于重新配置虚拟机的快照的方法和系统
CN108604186B (zh) 用于创建和管理基于控制器的远程解决方案的方法和装置
US9848277B2 (en) High-speed application for installation on mobile devices for permitting remote configuration of such mobile devices
CN106170764B (zh) 用于自动设备程序生成的方法和装置
CN103229144B (zh) 预热软件安装
JP5933692B2 (ja) パーソナライズ及びカスタマイズされたモバイル装置を生成するシステム
CN105635063B (zh) 物联网通信协议配置方法和装置
US10067490B2 (en) Method and apparatus for modifying behavior of code for a controller-based device
CN107750356A (zh) 用于一组基于控制器的装置的自动软件开发的方法和设备
CN104516738A (zh) 一种app应用的开发与发布一体化实现方法
CN105765533A (zh) 用于固件虚拟化的方法和装置
CN102207872A (zh) 按照用户需求定制Web UI控件的方法和系统
CN103761329B (zh) 一种对移动设备进行刷机的方法及其装置
CN202177892U (zh) Web UI控件定制系统
WO2011056191A2 (en) System and method for providing automated support to electronic devices
CN107807823A (zh) 一种快捷菜单的生成方法
CN106257418A (zh) 用于通过使用辅助应用来评价应用的技术
CN109240733A (zh) 一种基于安卓系统更新广告sdk的方法及终端
CN108920171A (zh) 固件更新方法及装置、电子设备
CN107851009A (zh) 用于修改基于控制器的设备的代码的行为的方法和装置
JP2014217186A (ja) 電子装置、検証方法及び検証プログラム
US20210271458A1 (en) Managing an app method and system
CN110019482A (zh) 粮情数据采集方法、粮情中间件平台及粮情数据采集系统
CN108399183A (zh) 基于Excel系统界面的数据库联动方法、电子装置及存储介质
CN107533436A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1245457

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant