KR102567780B1 - Method and Apparatus for Modifying Code Behavior for Controller-Based Devices - Google Patents

Method and Apparatus for Modifying Code Behavior for Controller-Based Devices Download PDF

Info

Publication number
KR102567780B1
KR102567780B1 KR1020187002797A KR20187002797A KR102567780B1 KR 102567780 B1 KR102567780 B1 KR 102567780B1 KR 1020187002797 A KR1020187002797 A KR 1020187002797A KR 20187002797 A KR20187002797 A KR 20187002797A KR 102567780 B1 KR102567780 B1 KR 102567780B1
Authority
KR
South Korea
Prior art keywords
code
profile
controller
virtualization server
based device
Prior art date
Application number
KR1020187002797A
Other languages
Korean (ko)
Other versions
KR20180027529A (en
Inventor
장 밥티스트 레오넬리
트리사라 찬다리아
Original Assignee
시암벨라 리미티드
장 밥티스트 레오넬리
트리사라 찬다리아
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 시암벨라 리미티드, 장 밥티스트 레오넬리, 트리사라 찬다리아 filed Critical 시암벨라 리미티드
Publication of KR20180027529A publication Critical patent/KR20180027529A/en
Application granted granted Critical
Publication of KR102567780B1 publication Critical patent/KR102567780B1/en

Links

Images

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

Abstract

제어기 기반 장치에 대한 코드의 동작을 원격으로 수정하기 위한 방법 및 장치가 제공된다. 이 방법은 코드 가상화 서버(code virtualization server)에서, 수정된 프로파일을 사용자 장치로부터 수신하는 단계로서, 상기 수정된 프로파일은 제어기 기반 장치에서의 실행을 위해 상기 코드와 연관된 프로파일에 대응하고, 상기 제어기 기반 장치는 상기 사용자 장치 및 상기 코드 가상화 서버에 대하여 원격인, 상기 수신하는 단계; 및 상기 프로파일을 상기 수정된 프로파일로 업데이트하는 단계를 포함한다. 상기 코드는 상기 제어기 기반 장치에서의 실행을 위한 제 1 코드를 포함하고, 상기 제 1 코드는 상기 업데이트된 프로파일을 사용하여 상기 코드 가상화 서버에서의 제 2 코드의 실행을 야기하는, 상기 제어기 기반 장치로부터 상기 코드 가상화 서버로의 원격 호출을 포함한다.Methods and apparatus are provided for remotely modifying the operation of code for a controller-based device. The method comprises receiving, at a code virtualization server, a modified profile from a user device, the modified profile corresponding to a profile associated with the code for execution on a controller-based device, the controller-based the receiving step, wherein the device is remote to the user device and the code virtualization server; and updating the profile to the modified profile. wherein the code comprises first code for execution on the controller-based device, the first code causing execution of a second code at the code virtualization server using the updated profile. remote call to the code virtualization server from

Description

제어기 기반 장치에 대한 코드 동작을 수정하기 위한 방법 및 장치Method and Apparatus for Modifying Code Behavior for Controller-Based Devices

본 발명의 실시예들은 일반적으로 제어기 기반 장치(controller-based device)에 대한 코드 동작을 수정하기 위한 방법 및 장치에 관한 것이다.Embodiments of the present invention relate generally to methods and apparatus for modifying code operation for a controller-based device.

필드 프로그래머블 게이트 어레이(FPGA)들 및 다른 제어기 기반 장치들(예컨대, 마이크로제어기 또는 마이크로프로세서 기반), 예를 들어 MCU, SoC, 이동 전화, 컴퓨터 등의 사용이 상당히 대중화되고 있다. 제어기의 낮은 제조 비용, 가용성 및 커스터미제이션은, 장치 생산을 위해 상업적 회사와 애호가 모두가 사용하게 되는 마이크로제어기 및 SoC(Systems on a Chip)(예를 들어, PIC, ARDUINO, RASPBERRY PI 등)의 확산을 가져왔다. 제어기 기반 장치들은 주변 장치와의 통신으로 입/출력 데이터를 처리하도록 프로그래밍될 수 있는 프로세서 코어 및 메모리를 포함한다. NOR FLASH 또는 OTP ROM 형태의 프로그램 메모리는 소량의 랜덤 액세스 메모리(RAM)뿐만 아니라 이러한 제어기 기반 장치들에도 종종 포함된다. 이러한 제어기 기반 장치들 몇몇은 대형 장치들 내에 임베드되는 응용들을 위해서 설계되었다.The use of Field Programmable Gate Arrays (FPGAs) and other controller-based devices (eg, microcontroller or microprocessor-based), eg MCUs, SoCs, mobile phones, computers, etc., are becoming quite popular. The controller's low manufacturing cost, availability, and customization make it a popular choice for microcontrollers and Systems on a Chip (SoC) (e.g. PIC, ARDUINO, RASPBERRY PI, etc.) used by commercial companies and hobbyists alike for device production. brought about the spread Controller-based devices include a processor core and memory that can be programmed to process input/output data in communication with peripheral devices. Program memory in the form of NOR FLASH or OTP ROM is often included in these controller-based devices as well as a small amount of random access memory (RAM). Some of these controller-based devices are designed for applications that are embedded within larger devices.

이러한 제어기 기반 장치들의 실제 응용은 잠재적으로 제어기 기반 장치들을 주변 장치인 종래의 객체들 또는 시스템들과 연결하여 디지털화, 접속 및 이러한 주변 장치에 대한 원격 제어를 가능하게 하는 것을 포함할 수 있다. 그러나 일반 사용자, 특히 프로그래밍 및 하드웨어 지식이 제한되거나 전혀없는 사람들이 이러한 실제 응용들에 액세스할 수 있도록 하는데는 여러 가지 도전 과제가 있다.Practical applications of these controller-based devices could potentially include connecting controller-based devices with peripheral conventional objects or systems to enable digitization, connection, and remote control of these peripherals. However, there are several challenges in making these real-world applications accessible to ordinary users, especially those with limited or no programming and hardware knowledge.

제어기 기반 장치들과 함께 사용하기 위해 주변 장치들(종래의 객체들 또는 시스템들)을 구성하는 것은 일반적으로 상당히 복잡하다. 또한, 제어기 기반 장치들의 여러 응용들에서는, 동적 입력을 수용하고/하거나 동적 출력을 생성하는 능력이 바람직할 수 있다. 동적 입력 또는 출력을 수용하도록 제어기 기반 장치를 구성 및 프로그래밍하려면 모든 제어기 기반 장치에 대한 코드를 작성 또는 재작성할 필요가 있으며, 코드를 재작성하거나 제어기 기반 장치를 다시 프로그래밍하려면 주변 장치의 계층 구조와 주변 장치, 코딩 명령어, 적절한 호출 구문 및 그 밖의 프로그래밍 파라미터들에 적합한 제어기 기반 장치에 대한 이해가 필요하기 때문에, 이것은 평균적인 사용자에게 매우 어려운 과제이다. 정확한 코드가 없으면, 프로그램이 실행되지 않거나 오류가 발생한다. 또한, 코드 동작의 입력, 출력, 또는 임의의 다른 변경사항으로의 수정 시마다 프로그램을 재작성하는 것이 필요하며, 이것은 단순하고 작은 그룹의 그러한 제어기 기반 장치들에서 조차도, 번거스러우면서 과도하게 시간 소모적인 것일 수 있다. 여러 경우들에 있어서, 코드를 다시 프로그래밍하거나 재작성하는 것은 코드를 처음 프로그래밍하거나 작성하는 것만큼이나 힘이 들 수 있다.Configuring peripherals (conventional objects or systems) for use with controller-based devices is generally quite complex. Additionally, in many applications of controller-based devices, the ability to accept dynamic input and/or generate dynamic output may be desirable. Configuring and programming a controller-based device to accommodate dynamic inputs or outputs requires writing or rewriting code for every controller-based device; This is a very difficult task for the average user, as it requires an understanding of the controller-based device to fit the device, coding instructions, proper calling syntax, and other programming parameters. Without the correct code, the program will not run or an error will occur. Additionally, every modification to the inputs, outputs, or any other changes in code operation requires rewriting the program, which would be cumbersome and excessively time-consuming, even for a simple and small group of such controller-based devices. can In many cases, reprogramming or rewriting code can be as arduous as programming or writing code the first time.

또한, "IoT(Internet of Things)"의 성장에 따라, 점점 더 많은 그러한 제어기 기반 장치가 서로 및/또는 인터넷에 연결될수록, 원하는 코드 동작의 달성과 관련된 재프로그래밍의 복잡성은 상당히 증가하게 된다. 그러한 장치들의 그룹은 서로 간에 통신할 수 있으며/있거나 게이트웨이가 소위 에지 장치(edge device)들에 대한 인터넷 통신을 위한 프록시가 되도록 하는 게이트웨이와 통신할 수 있다. 이 에지 장치들은 하나 이상의 게이트웨이를 통해 통신하거나, 독립적인 장치로서 직접 통신할 수 있다. 그룹 내에서, 상호 운용성(interoperability)을 용이하게 하기 위해서는 모든 장치(게이트웨이 및 에지)를 호환 가능한 방식으로 프로그래밍해야 한다. 원하는 코드 동작을 얻기 위해 커스터미제이션에 따라 다시 프로그래밍하는 것 외에도, 커스터미제이션이 구현될 때마다 호환성을 관리하는 것은 과도하게 시간 소모적인 것일 수 있다.Further, with the growth of the "Internet of Things" (IoT), as more and more such controller-based devices become connected to each other and/or to the Internet, the reprogramming complexity associated with achieving desired code behavior increases significantly. A group of such devices may communicate with each other and/or with a gateway such that the gateway becomes a proxy for internet communication for so-called edge devices. These edge devices can communicate through one or more gateways or directly as independent devices. Within a group, all devices (gateways and edges) must be programmed in a compatible way to facilitate interoperability. In addition to reprogramming per customization to get desired code behavior, managing compatibility each time a customization is implemented can be disproportionately time consuming.

따라서, 본 기술 분야에서는 제어기 기반 장치에 대한 코드 동작을 효율적으로 수정하여, 전술한 문제점들 중 적어도 일부를 감소시킬 필요가 있다.Accordingly, there is a need in the art to efficiently modify the code operation for controller-based devices to reduce at least some of the aforementioned problems.

본 발명의 실시예들은 일반적으로 제어기 기반 장치에 대한 코드 동작을 원격으로 수정하기 위한 방법 및 장치에 관한 것이며, 실질적으로 이것은, 도면들 중 적어도 하나와 관련하여 도시 및/또는 설명되어 있고, 청구범위에 보다 완전하게 기재되어 있다.Embodiments of the present invention generally relate to a method and apparatus for remotely modifying code operation on a controller-based device, substantially as shown and/or described in connection with at least one of the drawings, and claims are more fully described in

본 발명의 이들 및 다른 특징들 및 이점들은 첨부된 도면들과 함께 본 발명의 다음의 상세한 설명의 검토로부터 이해될 수 있으며, 도면들 전반에 걸쳐 동일한 참조 번호는 동일한 부분을 나타낸다.These and other features and advantages of the present invention may be understood from a review of the following detailed description of the present invention in conjunction with the accompanying drawings, wherein like reference numerals indicate like parts throughout the drawings.

본 발명의 전술한 특징들이 상세하게 이해될 수 있는 방식으로, 그 일부가 첨부된 도면들에 예시되어 있는 실시예들을 참조하여, 위에서 간략하게 요약된 본 발명에 대하여 보다 구체적으로 설명하도록 한다. 그러나, 첨부된 도면들은 본 발명의 전형적인 실시예들을 예시한 것이므로 본 발명의 범주를 제한하는 것으로 간주되어서는 안되며, 본 발명은 다른 동등한 효과의 실시예들을 인정할 수 있다.
도 1은 본 발명의 일 실시예에 따른, 코드 동작을 원격으로 수정하기 위한 시스템(100)의 블록도.
도 2는 본 발명의 일 실시예에 따른, 도 1의 코드 가상화 서버에 의해 실행되는 프로세스와 연관된 프로파일을 변경함으로써 제어기 기반 장치에 대한 코드의 동작을 변경하기 위한 방법의 흐름도.
도 3은 본 발명의 일 실시예에 따른, 제어기 기반 장치로 실행하기 위한 코드의 동작을 수정하기 위해, 도 1의 장치(100)의 다양한 장치들에 의해 실행되는 방법(300)의 흐름도.
도 4는 본 발명의 일 실시예에 따른, 적어도 하나의 제어기 기반 장치에 대한 코드 동작을 제어하기 위해, 도 1의 적어도 하나의 제어기 기반 장치 및 코드 가상화 서버에 의해 실행되는 방법의 흐름도.
In such a way that the foregoing features of the present invention may be understood in detail, the present invention briefly summarized above will be described in more detail with reference to embodiments, some of which are illustrated in the accompanying drawings. However, the accompanying drawings illustrate exemplary embodiments of the present invention and should not be regarded as limiting the scope of the present invention, as the present invention may admit other equally effective embodiments.
1 is a block diagram of a system 100 for remotely modifying code operation, in accordance with one embodiment of the present invention.
2 is a flow diagram of a method for altering the behavior of code on a controller-based device by changing a profile associated with a process executed by the code virtualization server of FIG. 1, according to one embodiment of the present invention.
3 is a flow diagram of a method 300 executed by various devices of the device 100 of FIG. 1 to modify the operation of code for execution by a controller-based device, in accordance with one embodiment of the present invention.
4 is a flow diagram of a method executed by at least one controller-based device of FIG. 1 and a code virtualization server for controlling code operations on the at least one controller-based device, in accordance with one embodiment of the present invention.

본 발명의 실시예들은 에지 및 게이트웨이 장치들(간략화를 위해 "제어기 기반 장치" 또는 "CB 장치"라고도 함)에 대한 코드의 동작을 원격으로 수정하는 방법 및 장치에 관한 것이며, 보다 구체적으로는 코드 자체를 변경하지 않고, 제어기 기반 장치의 코드와 연관된 프로파일(들)을 수정하는 방법 및 장치에 관한 것이다. 제어기 기반 장치에 대한 코드는 수정된 프로파일을 사용하여 실행되므로, 제어기 기반 장치의 전체 코드를 재기록하는 것 없이도, 코드 동작을 수정할 수 있다. 제어기 기반 장치에 배포된 코드("제 1 코드")는 원격 장치(예를 들어, 서버)에서 기능("제 2 코드")을 실행하기 위한 호출을 포함한다. 제어기 기반 장치(제 1 코드) 및 원격 기능(제 2 코드)에 배포된 코드가 함께 제어기 기반 장치에 대한(또는 그와 관련된) 코드를 구성한다. 프로파일들은 제어기 기반 장치(들)(예를 들어, 마이크로제어기, 마이크로프로세서, SoC, MCU 등과 같은 제어기를 가진 장치들)에 대한 코드를 구현하는데 사용되는 그와 연관된 코드이다. 프로파일들은 제어기 기반 장치들에 대하여 원격인 장치, 예를 들어, 제 2 코드를 실행하는 원격 장치일 수도 있는 코드 가상화 서버에서 수정 및 저장된다. 본 발명의 실시예들은 사용자 장치에 있는 그래픽 사용자 인터페이스(GUI)를 사용하여, 사용자가 사용자 장치에 대하여 원격인 제어기 기반 장치를 선택하고, 제어기 기반 장치에 대한 코드와 연관된 프로파일에 액세스하고, 프로파일을 원격으로 수정하고, 그 수정된 프로파일로 코드의 실행을 개시하게 할 수 있다. 수정된 프로파일로 코드를 구현하면 코드 자체를 수정할 필요 없이, 원하는 수정된 코드 동작을 얻을 수 있다. 결과적으로 제어기 기반 장치를 실행하기 위한 코드의 동작은 제어기 기반 장치를 다시 프로그래밍할 필요 없이 원격으로 제어 또는 수정된다.Embodiments of the present invention relate to methods and apparatus for remotely modifying the behavior of code on edge and gateway devices (also referred to as "controller-based devices" or "CB devices" for brevity), and more specifically to code A method and apparatus for modifying the profile(s) associated with the code of a controller-based device without changing itself. Because the code for the controller-based device is executed using the modified profile, the behavior of the code can be modified without rewriting the entire code of the controller-based device. Code deployed on the controller-based device (“first code”) contains calls to execute functions (“second code”) on the remote device (eg, server). The code distributed to the controller-based device (first code) and the remote function (second code) together constitute code for (or related to) the controller-based device. Profiles are associated code used to implement code for controller-based device(s) (eg, devices with controllers such as microcontrollers, microprocessors, SoCs, MCUs, etc.). The profiles are modified and stored in a code virtualization server, which may be a device remote to the controller-based devices, for example a remote device executing the second code. Embodiments of the present invention use a graphical user interface (GUI) on the user device to allow the user to select a controller-based device that is remote to the user device, access a profile associated with code for the controller-based device, and select a profile. You can remotely modify it and have it initiate execution of code with that modified profile. By implementing code with a modified profile, you can achieve the desired modified code behavior without having to modify the code itself. As a result, the operation of the code to run the controller-based device can be remotely controlled or modified without the need to reprogram the controller-based device.

본 명세서에 사용되는 "제어기 기반 장치와 관련된 코드", "제어기 기반 장치를 위한 코드" 및 "제어기 기반 장치에서의 실행을 위한 코드"라는 용어는, 문맥에서 명백히 달리 명시하지 않는다면, 상호 교환적으로 사용될 수 있다. 제어기 기반 장치에 대한 코드는 제어기 기반 장치에서 실행되는 제 1 코드와, 제어기 기반 장치에 대하여 원격인 장치에서 실행하기 위해 제 1 코드에 의해 호출되는 제 2 코드를 포함한다. 제 2 코드는 제 2 코드와 연관된 프로파일을 사용하여 실행된다. 이 프로파일은 또한 제 2 코드의 실행을 요구하는 제 1 코드와도 연관된다. 이러한 방식으로, 프로파일은 제어기 기반 장치에서 실행하기 위한 코드와도 연관된다.As used herein, the terms "code associated with a controller-based device," "code for a controller-based device," and "code for execution on a controller-based device" are used interchangeably, unless the context clearly dictates otherwise. can be used The code for the controller-based device includes first code that runs on the controller-based device and second code called by the first code for execution on a device that is remote to the controller-based device. The second code is executed using the profile associated with the second code. This profile is also associated with a first piece of code that requires the execution of a second piece of code. In this way, the profile is also associated with code for execution on the controller-based device.

일반 양도된 2007년 9월 11일에 출원된 미국 특허출원번호 제11/853,137호, 제11/853,143호 및 2011년 1월 28일에 출원된 제12/931,292호(현재 미국 특허 제8,726,285호)에는 워크플로우들을 원격으로 생성, 배포 및 실행하는 기술들에 대하여 기재되어 있다. 일반 양도된 2014년 6월 17일에 출원된 미국 특허출원번호 제14/307,198호, 제14/307,208호, 및 제14/307,227호, 2014년 7월 10일 출원된 제14/328,415호, 2015년 1월 9일에 출원된 제14/593,151호, 및 2015년 4월 13일에 출원된 제14/685,064호에는 자동적인 코드 및 SDK의 생성, 코드 및 SDK의 가상화, 코드 가상화를 위한 원격 프로세스 호출 생성을 위한 기술들이 기재되어 있다. 상기 열거되어 있는 출원들에는 제어기를 포함하는 제어기 기반 장치에 대한 소프트웨어를 자동으로 개발하는 기술, 그래픽 사용자 인터페이스를 사용하여 센서 또는 액추에이터와 같은 하드웨어 사용을 원격으로 제어기에 맵핑하는 기술, 예를 들어 정의된 워크플로우들을 통해 그러한 제어기 기반 장치의 능력을 확장하기 위해 원격으로 소프트웨어를 실행하는 기술이 기재되어 있다. 상기 열거되어 있는 각각의 출원들은 그 전체가 참조로서 본 명세서에 포함된다.Commonly Assigned U.S. Patent Application Serial Nos. 11/853,137, 11/853,143, filed September 11, 2007, and 12/931,292, filed January 28, 2011 (now U.S. Patent No. 8,726,285) describes techniques for remotely creating, deploying, and executing workflows. U.S. Patent Application Serial Nos. 14/307,198, 14/307,208, and 14/307,227, filed on June 17, 2014, commonly assigned, and 14/328,415, filed on July 10, 2014, 2015 14/593,151, filed on Jan. 9, 2015, and 14/685,064, filed on Apr. 13, 2015, include automatic code and SDK generation, code and SDK virtualization, and remote processes for code virtualization. Techniques for call creation are described. The applications listed above include techniques for automatically developing software for controller-based devices that include controllers, techniques for remotely mapping hardware usage, such as sensors or actuators, to controllers using graphical user interfaces, e.g. definitions Techniques for remotely executing software to extend the capabilities of such controller-based devices through integrated workflows are described. Each of the applications listed above is incorporated herein by reference in its entirety.

이들 기술은 제어기 기반 장치의 메모리에 코드 및/또는 라이브러리의 스니핏(snippet)을 위치시킴으로써 기능을 수행하며, 이 스니핏은, 실행될 시에, 원격 장치, 예를 들어 코드 가상화 서버에서 실행되기 위한 함수(또는 코드의 일부)를 호출하고, 및/또는 코드 가상화 서버에 대하여 원격인 원격 서비스로 (직접적으로 또는 코드 가상화 서버를 통해) 데이터를 전송하고, 및/또는 원격 서비스에 의해서 데이터에 대하여 원격으로 수행될 함수를 더 호출한다. 이들 기술은 제어기 기반 장치용 프로그램 생성을 비롯한, 제어기 기반 장치를 구성하는 제어기 기반 솔루션들을 만들고 관리하는데 사용된다. 본 발명의 실시예들은 이들 기술을 사용하여 제어기 기반 장치에 대한 프로그램들의 코드 동작을 수정한다. 이러한 실시예에서, 코드 동작은 예를 들어, 코드에 대한 입력이 변경될 필요가 있거나, 상이한 출력이 요구되거나, 또는 양쪽 모두일 수 있는 동적 환경에서, 수정될 수 있다. 또한, 실시예들은 예를 들어, 코드가 실행되는 장치에 대하여 원격인 사용자 컴퓨터를 사용하는 사용자에 의해서, 코드 동작을 원격으로 수정하는 것을 가능하게 한다.These techniques work by placing snippets of code and/or libraries in the memory of the controller-based device, which, when executed, are intended to be executed on a remote device, e.g., a code virtualization server. Call a function (or piece of code), and/or send data (directly or via a code virtualization server) to a remote service that is remote to the code virtualization server, and/or send data remotely to the remote service. Call more functions to be executed with . These technologies are used to create and manage controller-based solutions that make up controller-based devices, including creating programs for controller-based devices. Embodiments of the present invention use these techniques to modify the code operation of programs for controller-based devices. In such embodiments, code operation may be modified, for example, in a dynamic environment where inputs to the code may need to change, different outputs may be required, or both. Embodiments also enable remote modification of code operation, for example by a user using a user computer that is remote to the device on which the code is executed.

도 1은 본 발명의 하나 이상의 실시예들에 따른, 코드 동작을 원격으로 수정하기 위한 시스템(100)의 블록도이다. 시스템(100)은 복수의 제어기 기반 장치들(1021 … 102N)(제어기 기반 장치들(102)로 통칭함), 복수의 제어기 기반 장치들(1031 … 103P)(제어기 기반 장치들(103)로 통칭함), 게이트웨이(108), 인터넷(110), 사용자 컴퓨터(112), 코드 가상화 서버(114), 옵션 데이터베이스(115), 및 원격 서비스(118)를 포함한다.1 is a block diagram of a system 100 for remotely modifying code operation, in accordance with one or more embodiments of the present invention. The system 100 includes a plurality of controller-based devices 102 1 ... 102 N (collectively referred to as controller-based devices 102 ), a plurality of controller-based devices 103 1 ... 103 P (controller-based devices ( 103), gateway 108, Internet 110, user computer 112, code virtualization server 114, option database 115, and remote service 118.

제어기 기반 장치들(102) 및 게이트웨이(108)는 인터넷(110)에 연결된 장치들의 그룹(또는 장치 그룹(116))을 형성한다. 장치 그룹(116)은 통신 경로들(1061 … 106N)을 따라서 제어기 기반 장치들(102)과 게이트웨이(108) 사이에서 통신한다. 일반적으로는 통신 경로들이 무선 경로이지만, 일부 실시예들에서, 경로가 유선일 수도 있다. 또한, 일부 실시예들에서, 제어기 기반 장치들(102)은 점선 경로들(1041 … 104N)을 따라서 그들 사이에서 통신할 수도 있다. 제어기 기반 장치들(103)은 인터넷(110)과 직접 통신하여, 점선 경로(109)를 따라서 그들 사이에서 통신한다. 단일의 게이트웨이(108)가 도시되어 있지만, 장치 그룹(116)과 유사하게 복수의 게이트웨이들(108)이 그 그룹 내에서 또는 여러 그룹에 걸쳐 사용될 수 있다. 제어기 기반 장치들(102), 제어기 기반 장치들(103) 및 게이트웨이(108) 각각은 제어기, 예를 들어, 마이크로제어기 또는 사용자 장치(112)로부터의 직접 연결을 통해 또는 원격으로 프로그래밍될 수 있는 프로세서를 포함한다. 일부 실시예들에서, 제어기 기반 장치들(102), 제어기 기반 장치들(103) 및 게이트웨이(108) 각각의 마이크로제어기는, 코드 가상화 서버(114)에 의해서 프로그래밍될 수 있다.The controller-based devices 102 and gateway 108 form a group of devices (or device group 116) connected to the Internet 110. Device group 116 communicates between controller-based devices 102 and gateway 108 along communication paths 106 1 ... 106 N . Typically the communication paths are wireless paths, but in some embodiments the paths may be wired. Further, in some embodiments, controller-based devices 102 may communicate among themselves along dotted paths 104 1 ... 104 N . Controller-based devices 103 communicate directly with the Internet 110, communicating among themselves along a dotted path 109. Although a single gateway 108 is shown, similar to device group 116, multiple gateways 108 may be used within that group or across multiple groups. Each of the controller-based devices 102, controller-based devices 103, and gateway 108 is a controller, e.g., a microcontroller or processor that may be programmed remotely or via a direct connection from the user device 112. includes In some embodiments, the microcontroller of each of controller-based devices 102 , controller-based devices 103 , and gateway 108 may be programmed by code virtualization server 114 .

각각의 제어기 기반 장치(에지 장치들(102, 103) 및 게이트웨이(108))는 장치 제어기(device controller; DC), 주변 전자 기기(peripheral electronics; PE) 및 메모리를 포함한다. 예를 들어, 간략화를 위해, 제어기 기반 장치(103P)만이 장치 제어기(120), 주변 전자 기기(122) 및 메모리(124)를 포함하는 것으로 도시되어 있지만, 각각의 장치(에지 장치들(102, 103) 및 게이트웨이(108))가 장치 제어기 및 메모리를 포함하며, 주변 기기를 포함할 수도 있다. 장치 제어기(120)는 마이크로제어기(예를 들어, PIC, AVR 유형, ARM 유형 등), 시스템 온 칩(SoC, 예를 들어, RASPBERRY PI), 또는 본 기술분야에 일반적으로 공지된 마이크로프로세서 중의 하나 이상을 포함한다. 제어기의 유형은, 예를 들어 그러한 장치의 응용 및 요구되는 기능에 따라, 장치마다 다를 수 있다. 주변 전자 기기(122)는 센서, 조명, 오디오 스피커, 액추에이터, 디스플레이, 프린터, 스캐너, I/O 장치 등을 포함하며, 이에 한정되지 않는다. 주변 전자 기기(122)는 종래의 시스템을 관리 또는 조작하기 위한 구성 요소를 포함하며, 또는 주변 전자 기기(122) 자체가 음악 시스템, 알람, 가전 제품, 전기 장치, 전자-기계 장치 등과 같은 종래의 시스템이다. 메모리(124)는 데이터 및 실행 가능한 소프트웨어를 저장하기 위해 사용되는 임의의 형태의 디지털 스토리지이다. 이러한 메모리는 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함하며, 이에 한정되지 않는다. 메모리(124)는 운영 체제(도시되지 않음)에 대응하는 컴퓨터 판독가능 명령어들, 제 1 코드(126)를 저장하고 있으며, 제 1 코드(126)는 제어기 기반 장치(103P)에 대하여 원격인 예를 들어, 코드 가상화 서버(114) 장치 상의 제 2 코드에 대한 호출(128)을 더 포함한다. 제 1 코드(126)는 자동 생성 제어기 프로그램(automatically generated controller program; AGCP) 코드, 및 제 1 코드(126)와 호출(128)을 실행하는데 필요한 라이브러리들을 포함하는 다른 코드 구성 요소들(도시되지 않음)을 포함할 수 있다. 이 코드 구성 요소들은 또한 제어기 기반 장치가 게이트웨이(108)를 경유하거나 경유하지 않고 코드 가상화 서버(114)와 통신할 수 있도록 보장 가능하며, 게이트웨이(108)의 유사한 코드 구성 요소들은 그러한 통신들을 가능하게 할 수 있다.Each controller-based device (edge devices 102, 103 and gateway 108) includes a device controller (DC), peripheral electronics (PE) and memory. For example, for simplicity, only the controller-based device 103 P is shown as including the device controller 120, peripheral electronics 122, and memory 124, but each device (edge devices 102 , 103) and gateway 108) include a device controller and memory, and may include peripheral devices. Device controller 120 may be one of a microcontroller (e.g., PIC, AVR type, ARM type, etc.), a system on a chip (SoC, e.g., RASPBERRY PI), or a microprocessor generally known in the art. contains more than The type of controller may vary from device to device, depending, for example, on the application and required functionality of such device. The peripheral electronics 122 include, but are not limited to, sensors, lights, audio speakers, actuators, displays, printers, scanners, I/O devices, and the like. The peripheral electronic device 122 includes a component for managing or operating a conventional system, or the peripheral electronic device 122 itself is a conventional electronic device such as a music system, an alarm, a home appliance, an electric device, an electro-mechanical device, and the like. It is a system. Memory 124 is any form of digital storage used to store data and executable software. Such memory includes, but is not limited to, random access memory, read only memory, disk storage, optical storage, and the like. Memory 124 stores computer readable instructions corresponding to an operating system (not shown), first code 126 , first code 126 remote to controller-based device 103 P . For example, a call 128 to the second code on the code virtualization server 114 device. First code 126 includes automatically generated controller program (AGCP) code and other code components (not shown) including libraries necessary to execute first code 126 and call 128. ) may be included. These code components can also ensure that the controller-based device can communicate with the code virtualization server 114 with or without the gateway 108, and similar code components of the gateway 108 enable such communications. can do.

사용자 장치(112)는 CPU(130), 지원 회로들(132) 및 메모리(136)를 포함한다. CPU(130)는 상업적으로 이용 가능한 프로세서, 마이크로프로세서, 마이크로제어기 등일 수 있다. 지원 회로들(132)은 사용자 인터페이스, 클럭 회로, 네트워크 통신, 캐시, 전원 공급 장치, I/O 회로 등과 같은 기능을 CPU에게 제공하는 잘 알려진 회로들을 포함한다. I/O 회로들은 디스플레이(134), 예를 들어 본 기술분야에 일반적으로 공지된 컴퓨터 모니터들과 같은 다양한 표준 또는 터치 기반 디스플레이들을 포함한다. 일부 실시예들에서, 사용자 인터페이스는 키패드, 전자 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호 작용 메커니즘을 포함한다. 메모리(136)는 데이터 및 실행 가능한 소프트웨어를 저장하기 위해 사용되는 임의의 형태의 디지털 스토리지이다. 이러한 메모리는 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함하며, 이에 한정되지 않는다. 메모리(136)는 운영 체제(도시되지 않음), 그래픽 사용자 인터페이스(GUI)(138), 본 실시예들을 사용하여 코드 동작의 수정을 이용 가능한 제어기 기반 장치들의 리스트(140), 및 코드 가상화 서버(114)로부터 수신되는 하나 이상의 프로파일들 또는 이들에 대한 수정사항을 저장하기 위한 프로파일 저장소(142)를 저장한다. 사용자 장치(112)는 코드 동작의 수정을 위해 제어기 기반 장치를 선택할 경우에, 코드 동작의 수정을 위해 수정된 프로파일을 생성 및 전송할 경우에, 및 디스플레를 위해 수정된 코드의 실행 결과를 수신할 경우에 네트워크(110)에 커플링된다. GUI(138)는 제어기 기반 장치들(102, 103, 108) 상에 설치된 코드(예를 들어, 제 1 코드)의 동작을 수정하기 위한 제어기 기반 장치들의 리스트를 코드 가상화 서버(114)로부터 검색한다. GUI(138)는 또한 리스트(140)에 포함된 하나 이상의 제어기 기반 장치들 상에 설치된 코드와 관련된 프로파일(들)을 검색하고, 그러한 검색된 프로파일(들)을 수정 전후에 프로파일 저장소(142)에 저장할 수 있다. 일부 실시예들에서, GUI(138)는 사용자 장치(112) 상의 브라우저를 통해 사용자 장치 상에 렌더링되는, 코드 가상화 서버 상에 상주하는 소프트웨어이다. 일부 실시예들(도시되지 않음)에서, 리스트(140) 및 프로파일 저장소(142)는 코드 가상화 서버(114) 상에 상주하며, 브라우저를 통해 사용자 장치(112) 상에 디스플레이된다.User device 112 includes CPU 130 , support circuits 132 and memory 136 . The CPU 130 may be a commercially available processor, microprocessor, microcontroller, or the like. Support circuits 132 include well-known circuits that provide functionality to the CPU, such as user interface, clock circuitry, network communication, cache, power supply, I/O circuitry, and the like. I/O circuits include display 134, for example various standard or touch based displays such as computer monitors commonly known in the art. In some embodiments, the user interface includes a keypad, electronic buttons, speaker, touchscreen, display, or other user interaction mechanism. Memory 136 is any form of digital storage used to store data and executable software. Such memory includes, but is not limited to, random access memory, read only memory, disk storage, optical storage, and the like. Memory 136 includes an operating system (not shown), a graphical user interface (GUI) 138, a list of controller-based devices 140 capable of modifying code operations using the present embodiments, and a code virtualization server ( 114) and stores a profile repository 142 for storing one or more profiles received or modifications to them. When user device 112 selects a controller-based device for modification of code operation, when generating and transmitting a modified profile for modification of code operation, and when receiving execution result of modified code for display. coupled to the network 110. The GUI 138 retrieves from the code virtualization server 114 a list of controller-based devices to modify the operation of the code (e.g., the first code) installed on the controller-based devices 102, 103, 108. . GUI 138 also retrieves profile(s) associated with code installed on one or more controller-based devices included in list 140, and stores such retrieved profile(s) in profile store 142 before or after modification. can In some embodiments, GUI 138 is software resident on a code virtualization server that is rendered on a user device through a browser on user device 112 . In some embodiments (not shown), list 140 and profile store 142 reside on code virtualization server 114 and are displayed on user device 112 via a browser.

GUI(138)(직접적으로 또는 브라우저를 통해 디스플레이됨)는 디스플레이(134) 상에 렌더링된다. 리스트(140)는 하나 이상의 제어기 기반 장치들(CBD1 … CBDx)이 선택될 수 있는, 선택 가능한 리스트(144)로서 GUI(138)에 디스플레이된다. 코드 가상화 서버(114)로부터 GUI(138)에 의해 검색되는, 선택 가능한 프로파일들의 리스트(146)는, 선택된 제어기 기반 장치에 대응하는 하나 이상의 프로파일들(프로파일1 … 프로파일y)을 포함한다. 각각의 프로파일은 파라미터들의 리스트(148)(파라미터1 … 파라미터z)를 포함한다. 사용자는 리스트(140)를 요청할 수 있으며, 이 리스트는 코드 가상화 서버(114)로부터 요청될 수도 있고, 일단 검색되면, 리스트(144)로서 표시되고, 이로부터 사용자가 CBD(145)에 대한 코드의 동작을 원격으로 수정하기 위해 CBD1(또는 "CBD(145)")을 검색하게 된다. CBD(145)의 선택을 수신하면, GUI(138)는 CBD(145)에 대한 코드와 관련된 프로파일(들)(CBD 상에서 실행되기 위한 코드, 및/또는 그와 관련된 코드)을 검색하고, 사용자에 의한 선택을 위해서 그 프로파일들의 리스트(146)를 제공한다. 사용자는 프로파일1(또는 "프로파일(147)")을 선택하고, GUI(138)는 프로파일(147)에 포함된 파라미터들의 리스트(148)를 디스플레이한다. 사용자는 원하는 바에 따라 CBD(145)에 대한 코드의 동작을 수정하기 위해, 파라미터(149)의 수정용의 파라미터1(또는 "파라미터(149)")을 선택한다. 사용자는 본 기술분야에 일반적으로 공지된 바와 같은 I/O 장치를 사용하여 하나 이상의 파라미터들을 수정할 수 있으며, 마찬가지로 리스트(140)에 포함된 하나 이상의 제어기 기반 장치들에 대응하는 하나 이상의 파라미터들 및 프로파일들을 수정할 수도 있다. 수정된 프로파일은 예를 들어 "저장" 버튼(133)을 사용하여 프로파일 저장소(142)에 저장되며, 예를 들어 "전송" 버튼(135)을 사용하여 코드 가상화 서버(114)로 전송된다. 상기한 설명은 하나의 가능한 GUI 레이아웃 방식만을 예시한 것이며, 본 명세서에 설명되는 기술들을 그러한 예시로 제한하지 않는다.A GUI 138 (either directly or displayed through a browser) is rendered on the display 134 . The list 140 is displayed in the GUI 138 as a selectable list 144 from which one or more controller-based devices CBD 1 ... CBD x can be selected. The list of selectable profiles 146, retrieved by the GUI 138 from the code virtualization server 114, includes one or more profiles (profile 1 ...profile y ) corresponding to the selected controller-based device. Each profile includes a list of parameters 148 (parameter 1 ... parameter z ). A user may request a list 140, which may be requested from the code virtualization server 114, and once retrieved, displayed as a list 144, from which the user may select a list of codes for the CBD 145. You will search for CBD 1 (or "CBD(145)") to remotely modify the operation. Upon receiving the selection of CBD 145, GUI 138 retrieves the profile(s) associated with code for CBD 145 (code to run on CBD, and/or code associated therewith), and informs the user provides a list 146 of its profiles for selection by The user selects profile 1 (or "profile 147"), and GUI 138 displays a list 148 of the parameters included in profile 147. The user selects parameter 1 for modification (or "parameter 149") of parameter 149 to modify the behavior of the code for CBD 145 as desired. A user may modify one or more parameters using an I/O device as generally known in the art, and likewise one or more parameters and profiles corresponding to one or more controller-based devices included in list 140. can also modify them. The modified profile is saved to the profile storage 142 using, for example, the "save" button 133 and transmitted to the code virtualization server 114 using, for example, the "send" button 135. The above description is illustrative of only one possible GUI layout scheme, and the techniques described herein are not limited to such an example.

일부 실시예들(도시되지 않음)에서, GUI(138)는 또한 수정된 코드 동작의 결과를 디스플레이(134) 상에 표시한다. 일부 실시예들(도시되지 않음)에서, GUI(138)는 제어기 기반 장치들에 대한 프로그램들을 생성 및/또는 수정하고, 그 프로그램들을 테스트하여 제어기 기반 장치들(102, 103)로 배포하기 위한 IDE(integrated development environment) 및/또는 게이트웨이들(108)을 포함한다. 대안의 실시예들은 주문형 ASIC(Application Specific Integrated Circuit) 상의 알고리즘들을 사용하여 CPU(130), 지원 회로들(132) 및 메모리(136)의 임의의 조합에 의해 제공되는 기능을 제공할 수 있다. 일부 실시예들에서, I/O 장치들은 키패드, 전자 버튼, 스피커, 터치스크린, 디스플레이 또는 다른 사용자 상호 작용 메커니즘을 포함한다.In some embodiments (not shown), GUI 138 also displays the result of the modified code operation on display 134 . In some embodiments (not shown), GUI 138 is an IDE for creating and/or modifying programs for controller-based devices, testing and distributing those programs to controller-based devices 102, 103. (integrated development environment) and/or gateways 108. Alternate embodiments may use algorithms on a custom application specific integrated circuit (ASIC) to provide functionality provided by any combination of CPU 130 , support circuits 132 and memory 136 . In some embodiments, the I/O devices include a keypad, electronic buttons, speaker, touchscreen, display or other user interaction mechanism.

코드 가상화 서버(114)는 범용 컴퓨터이거나 또는 본 발명의 실시예들과 관련된 기능들을 수행하기 위해 특정 목적의 컴퓨터로 프로그래밍되는 다른 전자 처리 장치일 수 있다. 코드 가상화 서버(114)는 CPU(150), 지원 회로들(152), 그리고 명령어 및 알고리즘을 포함하는 메모리(154)를 포함한다. CPU(150)는 상업적으로 이용 가능한 프로세서, 마이크로프로세서, 마이크로제어기 등일 수 있다. 지원 회로들(152)은 사용자 인터페이스, 클록 회로, 네트워크 통신, 캐시, 전원 공급 장치, I/O 회로 등과 같은 기능을 CPU에게 제공하는 잘 알려진 회로를 포함한다. 대안의 실시예들은 주문형 ASIC(Application Specific Integrated Circuit) 상의 제어 알고리즘들을 사용하여 CPU(150), 지원 회로들(152) 및 메모리(154)의 임의의 조합에 의해 제공되는 기능을 제공할 수 있다. 일부 실시예들에서, 사용자 인터페이스는 키패드, 전자 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호 작용 메커니즘을 포함한다. 일부 실시예들에서, 사용자 인터페이스는 제어기 기반 장치들(102, 103 및 108)과 통신할 수 있다.Code virtualization server 114 may be a general purpose computer or other electronic processing device programmed as a special purpose computer to perform functions related to embodiments of the present invention. The code virtualization server 114 includes a CPU 150, support circuits 152, and memory 154 containing instructions and algorithms. The CPU 150 may be a commercially available processor, microprocessor, microcontroller, or the like. Support circuits 152 include well-known circuitry that provides functionality to the CPU, such as user interface, clock circuitry, network communication, cache, power supply, I/O circuitry, and the like. Alternate embodiments may use control algorithms on an application specific integrated circuit (ASIC) to provide functionality provided by any combination of CPU 150 , support circuits 152 and memory 154 . In some embodiments, the user interface includes a keypad, electronic buttons, speaker, touchscreen, display, or other user interaction mechanism. In some embodiments, the user interface may communicate with controller-based devices 102, 103, and 108.

메모리(154)는 데이터 및 실행 가능한 소프트웨어를 저장하기 위해 사용되는 임의의 형태의 디지털 스토리지일 수 있다. 이러한 메모리는 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함하며, 이에 한정되지 않는다. 메모리는 인터페이스(156), 프로파일 업데이터(157), 프로세스 라이브러리(158), 소프트웨어 개발 키트(software development kit; SDK) 생성기(160), 코드 생성기(162), 프로파일 데이터베이스(164), 실행 엔진(166), 및 장치 데이터베이스(178)에 대응하는 컴퓨터 판독가능 명령어들을 저장한다.Memory 154 may be any form of digital storage used to store data and executable software. Such memory includes, but is not limited to, random access memory, read only memory, disk storage, optical storage, and the like. Memory interface 156, profile updater 157, process library 158, software development kit (SDK) generator 160, code generator 162, profile database 164, execution engine 166 ), and computer readable instructions corresponding to the device database 178.

인터페이스(156)는 사용자 장치(112)가 코드 가상화 서버(114)와 상호 작용하도록 하는 기능을 제공한다. 일부 실시예들에서, 인터페이스(156)는 또한 예를 들어 GUI(138)에 대응하는 GUI 소프트웨어를 포함할 수 있으며, 이 GUI(138)는 코드 가상화 서버(114)에 의해서 사용자 장치에게 전송되거나, 그렇지 않으면 사용자 장치(112) 상의 설치를 위해서 사용자에게 제공될 수 있다. 일부 실시예들에서, 인터페이스(156)는 사용자 장치(112) 상의 브라우저를 통해 GUI(138)를 렌더링하는 소프트웨어를 포함한다. 또한, 인터페이스(156)는 제어기 기반 장치들(102, 103, 108) 및 원격 서비스(118)에의 연결을 제공한다. 프로파일 업데이터(157)는 예를 들어 사용자 장치(112)로부터 수신되는 수정된 프로파일을 사용하여 프로파일(168)을 업데이트한다. 프로파일 업데이터(157)는 수정된 프로파일의 대응 파라미터(들)에 따라 프로파일(168)의 하나 이상의 파라미터(들)를 수정한다. 프로파일 업데이터(157)는 또한 업데이트된 프로파일을 프로파일(168)에 또는 프로파일(168)로서 저장한다. 일부 실시예들에서는, 프로파일 업데이터(157)가 인터페이스(156)에 포함된다. 프로세스 라이브러리(158)는 제어기 기반 장치로부터의 호출 수신 시에 실행될 수 있는 코드(즉, "코레오그래프(choreographs)" 또는 "코레오(choreos)"라고도 하는 제 2 코드(159))를 포함한다. 일부 실시예들에 따르면, 제 2 코드는 사용자 장치(112)로부터 수신되는 수정된 프로파일에 기초하여 업데이트된 프로파일을 사용하여 실행된다. 일부 실시예들에 따르면, 제 2 코드는 제어기 기반 장치의 장치 제어기가 달리 수행할 수 없는 소정의 오프 제어기 기반 장치 기능들을 수행한다. SDK 생성기(160)는 예를 들어 하드웨어, 소프트웨어 플랫폼, 통신 인프라스트럭처 및 다른 코드 실행 파라미터들에 따라 필요한 코드 라이브러리들을 제공함으로써, 제 1 코드, 제 2 코드 또는 양쪽 코드 모두의 실행을 지원하기 위한 SDK를 생성한다. 코드 생성기(162)는 제어기 기반 장치에 대한 제 1 코드를 생성하고, 제 1 코드는 제어기 기반 장치와 관련된 프로파일을 사용하여 제 2 코드(159)를 실행하기 위한 제어기 기반 장치로부터 코드 가상화 서버(114)로의 호출을 포함한다. 프로파일 데이터베이스(164)는 프로세스 라이브러리(158)의 적어도 하나의 프로세스(예를 들어, 제 2 코드(159))에 대응하는 적어도 하나의 프로파일(168)을 포함한다. 프로파일(168)은 프로세스 파라미터들(170)과 그것의 리스트, 사용자 이름, 식별 정보와 패스워드 같은 사용자 데이터를 포함하는 연결 프로파일들(172), 연결 파라미터들(174), 및 제 2 코드(159)의 실행과 관련된 프로토콜들(176)을 포함한다. 또한, 프로파일(168)은 프로파일 명칭과 같은 파라미터들(예를 들어 파라미터들의 세트(모든 서브-프로파일들을 포함함)의 명칭), 하드웨어 유형 또는 프로세서 유형과 같은 하드웨어 프로파일 파라미터들(예를 들어 Arduino Uno, Arduino Yun이 하드웨어 유형의 예이며, AVR, ARM, PIC가 프로세서 유형의 예임)을 포함할 수 있다. 프로파일 파라미터들의 예가 표 1에 예시되어 있으며, 이에 한정되지 않는다. 프로파일(168)은 제 2 코드(159)의 원하는 동작에 따라 설정된다. 프로파일 데이터베이스(164)는 프로파일(168)과 유사한 몇몇 프로파일들(도시되지 않음)을 포함한다. 장치 데이터베이스(178)는 코드 동작이 수정될 수 있는 제어기 기반 장치들(102, 103, 108)의 리스트(182), 및 하나 이상의 제어기 기반 장치들(예를 들어, 제어기 기반 장치(103P))에 의해서 프로파일들(예를 들어, 프로파일(168))을 참조하게 하는 인덱스(184)를 포함한다. 프로파일 데이터베이스(164) 및 장치 데이터베이스(178)에 포함된 정보는 코드 가상화 서버(114) 상의 하나 이상의 데이터베이스에, 또는 선택적으로는 네트워크(110) 상의 장치들, 예를 들어 데이터베이스(115)에 분산될 수 있다.Interface 156 provides functionality that allows user device 112 to interact with code virtualization server 114 . In some embodiments, interface 156 may also include GUI software, for example corresponding to GUI 138, which is transmitted by code virtualization server 114 to a user device, or Otherwise, it may be presented to the user for installation on the user device 112 . In some embodiments, interface 156 includes software that renders GUI 138 through a browser on user device 112 . Interface 156 also provides connections to controller-based devices 102, 103, 108 and remote services 118. Profile updater 157 updates profile 168 using, for example, a modified profile received from user device 112 . Profile updater 157 modifies one or more parameter(s) of profile 168 according to the corresponding parameter(s) of the modified profile. Profile updater 157 also stores the updated profile in profile 168 or as profile 168 . In some embodiments, profile updater 157 is included in interface 156 . Process library 158 includes code (i.e., second code 159, also referred to as “choreographs” or “choreos”) that can be executed upon receipt of a call from a controller-based device. . According to some embodiments, the second code is executed using the updated profile based on the modified profile received from the user device 112 . According to some embodiments, the second code performs certain off-controller-based device functions that the device controller of the controller-based device cannot otherwise perform. The SDK generator 160 provides an SDK for supporting the execution of the first code, the second code or both codes, for example by providing necessary code libraries depending on the hardware, software platform, communication infrastructure and other code execution parameters. generate A code generator (162) generates first code for the controller-based device, the first code from the controller-based device for executing second code (159) using a profile associated with the controller-based device (114). ) includes a call to Profile database 164 includes at least one profile 168 corresponding to at least one process (eg, second code 159 ) in process library 158 . Profile 168 includes process parameters 170 and its list, connection profiles 172 including user data such as user name, identification information and password, connection parameters 174, and second code 159 It includes protocols 176 related to the execution of Profile 168 also includes parameters such as profile name (eg the name of a set of parameters (including all sub-profiles)), hardware profile parameters such as hardware type or processor type (eg Arduino Uno , Arduino Yun is an example of hardware type and AVR, ARM, PIC are examples of processor type). Examples of profile parameters are illustrated in Table 1, but are not limited thereto. The profile 168 is set according to the desired behavior of the second code 159. Profile database 164 includes several profiles (not shown) similar to profile 168 . Device database 178 includes a list 182 of controller-based devices 102, 103, 108 whose code operation can be modified, and one or more controller-based devices (eg, controller-based device 103 P ). and an index 184 that references profiles (e.g., profile 168) by Information contained in profile database 164 and device database 178 may be distributed to one or more databases on code virtualization server 114, or optionally to devices on network 110, for example database 115. can

본 발명의 실시예들에 따르면, 프로파일 업데이터(157)는 GUI(138)를 통해 사용자 장치(112)로부터 수신되는 수정된 프로파일을 사용하여 프로파일(168)을 업데이트한다. 제어기 기반 장치(103P) 상에서 제 1 코드(126)를 실행하여 호출(128)을 행함으로써, 업데이트된 프로파일(168)을 사용하여 코드 가상화 서버(114) 상에 제 2 코드(159)를 실행한다. 실행 엔진(166)은 업데이트된 프로파일(168)을 사용하여 제 2 코드(159)를 실행함으로써, 그 업데이트된 프로파일(168)에 따른 코드 동작을 발생시킨다. 이러한 방식으로, 제어기 기반 장치(103P)와 관련된 코드(즉, 제 1 코드 및 제 2 코드)의 동작은, 코드 자체를 수정함 없이, 예를 들어 코드로부터 원격으로 수정된다.According to embodiments of the present invention, profile updater 157 updates profile 168 using a modified profile received from user device 112 via GUI 138 . Execute the first code 126 on the controller-based device 103 P to make the call 128, thereby executing the second code 159 on the code virtualization server 114 using the updated profile 168 do. Execution engine 166 uses updated profile 168 to execute second code 159, resulting in code operation according to updated profile 168. In this way, the operation of the code (ie the first code and the second code) associated with the controller-based device 103 P is modified remotely from the code, for example, without modifying the code itself.

[표 1][Table 1]

Figure 112018009981460-pct00001
Figure 112018009981460-pct00001

Figure 112018009981460-pct00002
Figure 112018009981460-pct00002

실행 엔진(166)은 장치(100)의 다양한 구성 요소들 간의 상호 운용성을 용이하게 하기 위해 전술한 모든 기능들을 지원한다. 실행 엔진은 위에서 설명한 각 기능 블록들을 사용하여, 사용자가 제어기 기반 장치들을 프로그래밍하여 사용자 장치의 GUI를 통해 해당 기능을 제어 및 수정할 수 있게 한다.Execution engine 166 supports all of the functions described above to facilitate interoperability between the various components of device 100. The execution engine uses each of the functional blocks described above to allow the user to program the controller-based devices to control and modify corresponding functions through the GUI of the user device.

원격 서비스(118)는 사용자 장치(112), 코드 가상화 서버(114), 및 제어기 기반 장치들(102, 103, 108)에 대해 원격인 제 3 자 서버들 또는 데이터베이스들(즉, 장치들)에 의해 제공되는 개인 또는 공공 서비스들을 포함한다. 예를 들어, 원격 서비스(118)는 제 3 자 데이터베이스들 및 서비스들(예를 들어, AMAZON, EBAY, FACEBOOK, APPLE PUSH NOTIFICATION 서버들, 텍스트 메시지 서버들, 이메일 서버들 등) 또는 내부 데이터 소스(예를 들어, DB, noSQL DB, 파일 등)을 포함한다. 원격 서비스(118)는 네트워크(110) 또는 다른 네트워크를 통해 코드 가상화 서버(114)에 액세스 가능하다. 일부 실시예들에 따르면, 원격 서비스(118)는 업데이트된 프로파일(168)을 사용하여 제 2 코드(159)를 실행함으로써(실행 엔진(166)을 사용), 제공된다.The remote service 118 provides access to third-party servers or databases (i.e., devices) that are remote to the user device 112, the code virtualization server 114, and the controller-based devices 102, 103, 108. includes private or public services provided by For example, the remote service 118 may use third party databases and services (eg, AMAZON, EBAY, FACEBOOK, APPLE PUSH NOTIFICATION servers, text message servers, email servers, etc.) or internal data sources ( For example, DB, noSQL DB, files, etc.). Remote service 118 is accessible to code virtualization server 114 via network 110 or another network. According to some embodiments, remote service 118 is provided by executing (using execution engine 166 ) second code 159 using updated profile 168 .

네트워크(110)는 인터넷 또는 광역 네트워크(WAN) 또는 그 조합을 포함하며, 하나 이상의 그러한 네트워크들을 포함할 수도 있다. 장치(100)의 모든 구성 요소들은 공지된 방법들 및 구성 요소들을 사용하여, 도 1에 도시된 바와 같이 네트워크(110)에 또는 서로에 연결된다.Network 110 includes the Internet or a wide area network (WAN), or a combination thereof, and may include one or more such networks. All components of device 100 are connected to network 110 or to each other as shown in FIG. 1 using known methods and components.

도 2는 본 발명의 실시예들에 따른, 제어기 기반 장치와 관련된 코드의 실행에 사용되는 프로파일을 업데이트함으로써 제어기 기반 장치와 관련된 코드의 동작을 원격으로 수정하기 위해 코드 가상화 서버(114)에 의해 실행되는 방법(200)의 흐름도를 도시한 것이다. 방법(200)은 단계(202)에서 시작하여 단계(204)로 진행한다. 단계(204)에서, 코드 가상화 서버(114)는, 사용자 장치(112)로부터, 제어기 기반 장치, 예를 들어 제어기 기반 장치(103P)와 관련된 코드(예를 들어, 제 1 코드(126) 및/또는 제 2 코드(159))의 실행에 사용되는 프로파일에 대응하는 수정된 프로파일을 수신한다. 일부 실시예들에서, 프로파일 업데이터(157)는 GUI(138)로부터 수정된 프로파일을 수신한다. 방법(200)은 단계(206)로 진행하며, 이 단계에서 방법(200)은 코드의 실행에 사용되는 프로파일을 수정된 프로파일로 업데이트한다. 일부 실시예들에 따르면, 프로파일 업데이터(157)는 프로파일(168)의 적어도 하나의 파라미터를, 수정된 프로파일의 대응 파라미터와 동일한 값으로 수정한다. 방법(200)은 단계(208)로 진행하며, 이 단계에서, 코드 가상화 서버(114) 상에서 제 2 코드(예를 들어, 제 2 코드(159))를 실행하도록 하는 호출을 제어기 기반 장치(103P)로부터 수신할 시에, 방법(200)은 업데이트된 프로파일을 사용하여 제 2 코드를 실행한다. 일부 실시예들에 따르면, 실행 엔진(166)은 업데이트된 프로파일(168)을 사용하여 제 2 코드(159)를 실행함으로써, 제어기 기반 장치(103P)와 관련된 코드 동작의 수정을 발생시킨다. 그 후에, 방법(200)은 단계(210)로 진행하며, 이 단계에서 방법(200)이 종료된다.2 is executed by code virtualization server 114 to remotely modify the behavior of code associated with a controller-based device by updating a profile used for execution of code associated with the controller-based device, in accordance with embodiments of the present invention. A flowchart of the method 200 is shown. Method 200 begins at step 202 and proceeds to step 204 . At step 204, the code virtualization server 114 generates, from the user device 112, code (eg, first code 126 and /or a modified profile corresponding to a profile used for execution of the second code 159) is received. In some embodiments, profile updater 157 receives the modified profile from GUI 138 . The method 200 proceeds to step 206, where the method 200 updates the profile used for execution of the code to the modified profile. According to some embodiments, profile updater 157 modifies at least one parameter of profile 168 to the same value as the corresponding parameter of the modified profile. Method 200 proceeds to step 208, where controller-based device 103 makes a call to execute second code (e.g., second code 159) on code virtualization server 114. Upon receiving from P , the method 200 executes the second code using the updated profile. According to some embodiments, execution engine 166 executes second code 159 using updated profile 168 , resulting in modification of code operation associated with controller-based device 103 P . Method 200 then proceeds to step 210, at which point method 200 ends.

도 3은 본 발명의 실시예들에 따른, 코드와 관련된 프로파일을 변경함으로써, 제어기 기반 장치로 실행하는 코드 동작을 수정하기 위한, 도 1의 장치(100)의 다양한 장치들에 의해 실행되는 방법(300)의 흐름도를 도시한 것이다. 사용자 장치(112)가 방법(302)을 실행하고, 코드 가상화 서버(114)가 방법(330)을 실행하고, 제어기 기반 장치(130P)가 방법(350)을 실행하고, 원격 서비스(118)가 방법(360)을 실행하며, 이 방법들(302, 330, 350 및 360)이 조합되어 방법(300)의 기능을 제공한다. 여기서, 본 명세서에서 설명되는 다양한 단계들이 방법(300)의 단계들로서 지칭될 것이지만, 각 단계가 또한 방법들(302, 330, 350 및 360) 중 하나가 된다는 것은 명백하다.FIG. 3 illustrates a method (executed by various devices of the device 100 of FIG. 1 ) for modifying code operations executing with a controller-based device by changing a profile associated with the code, in accordance with embodiments of the present invention. 300) is shown. User device 112 executes method 302 , code virtualization server 114 executes method 330 , controller-based device 130 P executes method 350 , and remote service 118 executes method 350 . executes method 360, and methods 302, 330, 350 and 360 are combined to provide the functionality of method 300. Here, although the various steps described herein will be referred to as steps of method 300 , it is clear that each step is also one of methods 302 , 330 , 350 and 360 .

단계(304)에서, 방법(300)은 예를 들어 전술한 바와 같이, 디스플레이(134) 상의 GUI(138)를 사용하여 제어기 기반 장치들의 리스트(140)를 표시한다. 이 리스트는 사용자 장치(112)에 의한 요청에 응답하여 코드 가상화 서버에 의해 전송되는 제어기 기반 장치들(102, 103, 108)의 리스트(예를 들면, 리스트(182))일 수 있으며, 또는 이 리스트가 사용자 장치(112)에게 제공될 수도 있다. 일부 실시예들에서, 사용자 장치(112)는 이 리스트를 리스트(140)로서 저장한다. 단계(306)에서, 방법(300)은 단계(308)에서 코드 가상화 서버(114)로 전송되는 GUI(138)를 통해 제어기 기반 장치, 예를 들어 제어기 기반 장치(130P)의 선택을 수신한다.At step 304 , method 300 displays list 140 of controller-based devices using GUI 138 on display 134 , for example as described above. This list can be a list (e.g., list 182) of controller-based devices 102, 103, 108 sent by the code virtualization server in response to a request by user device 112, or A list may also be provided to the user device 112 . In some embodiments, user device 112 stores this list as list 140 . At step 306, method 300 receives a selection of a controller-based device, for example controller-based device 130 P , via GUI 138 transmitted at step 308 to code virtualization server 114. .

방법(300)의 실행은 단계(332)에서 코드 가상화 서버(114)로 시프트되며, 이 단계에서 방법(300)은 제어기 기반 장치(103P) 상에서의 실행을 위한 코드와 관련된 관련된 하나 이상의 프로파일(들), 예를 들어, 프로파일(168) 및 다른 프로파일들을 검색한다. 방법(300)은 단계(334)로 진행하며, 이 단계에서 프로파일(168) 및 다른 프로파일들이 수정을 위해 사용자 장치(112)로 전송된다.Execution of the method 300 shifts to the code virtualization server 114 at step 332, at which point the method 300 passes one or more associated profiles ( s), for example profile 168 and other profiles. Method 300 proceeds to step 334, where profile 168 and other profiles are transmitted to user device 112 for modification.

방법(300)의 실행은 단계(310)에서 사용자 장치로 시프트되며, 이 단계에서 방법(300)은 예를 들어 GUI(138)를 사용하여 프로파일(168)을 비롯한 수신된 프로파일들을 디스플레이한다. 단계(312)에서, 방법(300)은 프로파일, 예를 들어 프로파일(168)의 선택(예컨대, 사용자 장치(112)에서 사용자에 의해 입력되는 입력, 또는 사용자에 의해 선택되는 다른 파일 또는 데이터베이스로부터의 입력으로서)을 수신하여 프로파일(168)을 수정한다. 단계(314)에서, 방법(300)은 수정 또는 업데이트되는 프로파일(168)에 포함된 하나 이상의 파라미터(들)를 디스플레이한다. 단계(316)에서, 방법(300)은 프로파일(168)의 파라미터를 수정하도록 하는 입력을 수신하며, 단계(318)에서, 방법(300)은 단계(316)에서 수정된 파라미터에 의해서 수정되는 프로파일을 생성한다. 방법(300)은 복수의 파라미터들과 관련된 복수의 입력들을 수신할 수 있으며, 그에 따라 수정된 프로파일을 생성할 수 있다. 일부 실시예들에 따르면, 방법(300)은 GUI(138)를 사용하여 수정된 프로파일을 생성한다. 또한, 선택적으로는 방법(300)은 예를 들어 프로파일 저장소(142)에, 수정된 프로파일을 저장한다. 단계(320)에서, 방법(300)은 수정된 프로파일을 코드 가상화 서버(114)에 전송한다.Execution of method 300 shifts to the user device at step 310, at which step method 300 displays the received profiles, including profile 168 using, for example, GUI 138. At step 312, method 300 starts with a selection of a profile, e.g., profile 168 (e.g., from input entered by a user at user device 112, or from another file or database selected by the user). as input) to modify the profile 168. At step 314 , method 300 displays one or more parameter(s) included in profile 168 being modified or updated. At step 316, the method 300 receives input to modify the parameters of the profile 168, and at step 318, the method 300 returns the profile modified by the parameters modified at step 316. generate The method 300 can receive a plurality of inputs related to a plurality of parameters and can generate a modified profile accordingly. According to some embodiments, method 300 uses GUI 138 to create a modified profile. Optionally, method 300 also stores the modified profile, for example in profile store 142 . At step 320 , method 300 transmits the modified profile to code virtualization server 114 .

방법(300)의 실행은 단계(336)에서 코드 가상화 서버(114)로 시프트되며, 이 단계에서 방법(300)은 수정된 프로파일을 사용하여 프로파일(168)을 업데이트한다. 방법(300)은 수정된 프로파일의 대응하는 파라미터에 따라 각 파라미터를 업데이트함으로써 프로파일 업데이터(157)를 사용하여 프로파일(168)을 업데이트하거나, 또는 프로파일(168)을 수정된 프로파일로 대체하며, 단계(338)에서 방법(300)은 수정된 프로파일을 프로파일(168)로서 저장한다. 이러한 방식으로, 단계들(304-320) 및 단계들(332-338)은 수정된 프로파일을 사용하여 프로파일(168)을 업데이트하는 것을 달성한다. 간략화를 위해, 방법(300)의 설명은 단일의 프로파일, 예를 들어 프로파일(168)을 참조하여 이루어지겠지만, 본 기술분야의 통상의 기술자가 쉽게 이해할 수 있는 바와 같이, 방법(300)의 단계들은 복수의 프로파일들을 포함하는 것으로 확장될 수 있다. 추가의 단계들은 업데이트된 프로파일을 사용하여 제어기 기반 장치(103P)와 관련된 코드를 실행함으로써 코드의 동작을 수정하는 것에 관한 것이다.Execution of method 300 shifts to code virtualization server 114 at step 336, at which point method 300 updates profile 168 using the modified profile. The method 300 updates the profile 168 using the profile updater 157 by updating each parameter according to the corresponding parameter of the modified profile, or replaces the profile 168 with the modified profile, steps ( At 338 , method 300 stores the modified profile as profile 168 . In this way, steps 304-320 and steps 332-338 accomplish updating profile 168 using the modified profile. For simplicity, the description of method 300 will be made with reference to a single profile, e.g., profile 168, but as will be readily appreciated by those skilled in the art, the steps of method 300 are It can be extended to include multiple profiles. Additional steps relate to modifying the behavior of the code by executing the code associated with the controller-based device 103 P using the updated profile.

단계(352)에서, 방법(300)은 제어기 기반 장치(103P) 상의 제 1 코드(126)를 실행한다. 방법(300)은 단계(354)로 진행하며, 이 단계에서 제 1 코드(126)는 코드 가상화 서버(114) 상의 제 2 코드(159)를 실행하기 위해, 호출(128)을 통해서, 코드 가상화 서버(114)를 호출한다.At step 352 , method 300 executes first code 126 on controller-based device 103 P . Method 300 proceeds to step 354, where first code 126, via call 128, code virtualization to execute second code 159 on code virtualization server 114. Call the server 114.

방법(300)의 실행은 단계(340)에서 코드 가상화 서버(114)로 시프트되며, 이 단계에서 방법(300)은 사용자 장치(112)로부터 호출(128)을 수신한다. 단계 342에서, 코드 가상화 서버(114)는 전술한 바와 같이 수정된 프로파일을 사용하여 업데이트된 프로파일(168)을 사용하여 제 2 코드(159)를 실행한다. 업데이트된 프로파일(168)을 사용하는 제 2 코드(159)의 실행으로 인해 제 2 코드(159)의 동작이 달라져서, 제 1 코드(126)의 동작이 발생한다. 그러나, 제 1 코드(126) 및 제 2 코드(159) 모두 수정을 필요로 하지 않는다. 일부 실시예들에서, 방법(300)은 제 2 코드(159)를 실행하는 일부로서 원격 서비스(118)를 제공하기 위한 선택적 단계(344)를 포함한다. 프로파일(168)을 업데이트함으로써, 원격 서비스(118)의 프로비저닝과 관련된 코드 동작이 수정된다. 예를 들어, 프로파일 수정의 결과, 사용되는 원격 서비스(FACEBOOK, AMAZON 등), 사용되는 계정, 표시되는 텍스트 등이 원하는 바에 따라 변경될 수 있다.Execution of method 300 shifts to code virtualization server 114 at step 340 , at which point method 300 receives call 128 from user device 112 . At step 342, the code virtualization server 114 executes the second code 159 using the updated profile 168 using the modified profile as described above. Execution of the second code 159 using the updated profile 168 causes the behavior of the second code 159 to change, resulting in the behavior of the first code 126. However, neither the first code 126 nor the second code 159 requires modification. In some embodiments, method 300 includes optional step 344 for providing remote service 118 as part of executing second code 159 . By updating the profile 168, code behavior related to provisioning of the remote service 118 is modified. For example, as a result of profile modification, a used remote service (FACEBOOK, AMAZON, etc.), an account used, displayed text, etc. may be changed as desired.

선택적 단계(344)가 실행될 경우, 방법(300)의 실행은 원격 서비스(118)로 시프트되며, 이것은 제어기 기반 장치(103P), 코드 가상화 서버(114) 또는 사용자 장치(112)에 대하여 원격인 하나 이상의 서버들에 의해 제공될 수 있다. 단계(362)에서, 방법(300)은 제 2 코드(159)에 따라, 및, 예를 들어 수정된 프로파일(168) 파라미터들에 따라 원격 서비스(118)를 실행한다. 단계(364)에서, 방법(300)은 원격 서비스(118)의 실행으로부터 생성된 데이터를 코드 가상화 서버(114)로 전송한다. 원격 서비스(118)의 실행으로부터 생성되는 데이터는 원격 서비스의 프로비저닝이 성공적이었는지의 여부 또는 원격 서비스(118)의 임의의 출력에 대한 상태 업데이트를 포함할 수 있다.When optional step 344 is executed, execution of method 300 shifts to remote service 118 , which is remote to controller-based device 103 P , code virtualization server 114 , or user device 112 . It may be served by one or more servers. At step 362 , method 300 executes remote service 118 according to second code 159 and, for example, according to modified profile 168 parameters. At step 364 , method 300 transmits data generated from execution of remote service 118 to code virtualization server 114 . Data resulting from execution of the remote service 118 may include status updates on whether provisioning of the remote service was successful or any output of the remote service 118 .

방법(300)은 단계(346)에서 코드 가상화 서버(114)로 시프트되며, 이 단계에서 방법(300)은 원격 서비스(118)의 프로비저닝으로부터 생성된 데이터를 제어기 기반 장치(103P)로, 및 선택적으로는 사용자 장치(112)로 전송한다 .The method 300 shifts to the code virtualization server 114 at step 346, at which point the method 300 transfers the data generated from the provisioning of the remote service 118 to the controller-based device 103 P , and optionally to the user device 112.

방법(300)의 실행은 단계(356)에서 제어기 기반 장치(103P)로 시프트되며, 이 단계에서 방법(300)은 제 1 코드(126)를 계속 실행한다. 선택적 단계(344)가 실행되지 않을 경우에는, 방법(300)의 실행은 단계(342) 이후에 단계(356)에서 제어기 기반 장치(103P)로 시프트된다. 또한, 일부 실시예들에서는, 제어기 기반 장치(103P) 상의 제 1 코드(126)의 실행이 단계(354) 이후에 종료되며, 이러한 실시예들에서는, 방법(300)이 단계(356)를 실행하지 않는다.Execution of the method 300 shifts to the controller-based device 103 P at step 356, at which point the method 300 continues executing the first code 126. If optional step 344 is not executed, execution of method 300 shifts after step 342 to controller-based device 103 P at step 356 . Also, in some embodiments, execution of the first code 126 on the controller-based device 103 P ends after step 354, and in such embodiments, method 300 may include step 356. don't run

단계(346)에서, 데이터가 사용자 장치(112)로 전송될 경우, 방법(300)의 실행은 단계(322)에서 사용자 장치로 시프트되며, 이 단계에서 방법(300)은 예를 들어 디스플레이(134) 상의 GUI(138)를 통해 데이터를 수신 및 표시한다.At step 346, if the data is to be transmitted to the user device 112, execution of the method 300 shifts to the user device at step 322, where the method 300, for example, displays the display 134 Receives and displays data through the GUI 138 on ).

유리하게는, 코드와 관련된 모든 다른 프로세스들, 예를 들어 코드의 개발, 테스트, 배포가 예비되며, 즉, 이러한 프로세스들에 대한 수정을 필요로 하지 않게 된다. 따라서, 본 개시된 실시예들에 따라 프로파일을 수정하는 것은 코드 자체를 수정할 필요없이, 또한 개발, 테스트 및 배포의 단계들을 재실행할 필요없이 코드 동작을 수정하는 것을 가능하게 한다.Advantageously, all other processes associated with the code, such as development, testing, and distribution of the code, are spared, ie no modifications to these processes are required. Thus, modifying a profile according to the disclosed embodiments makes it possible to modify code behavior without having to modify the code itself, and without having to re-run steps of development, testing, and deployment.

도 4는 본 발명의 일 실시예에 따른, 도 1의 적어도 하나의 제어기 기반 장치에 대한 코드 동작을 제어하기 위한, 적어도 하나의 제어기 기반 장치(102, 103, 108), 예를 들어, 제어기 기반 장치(103P) 및 코드 가상화 서버(114)에 의해 실행되는 방법(400)의 흐름도이다. 방법(400)은 단계(402)에서 제어기 기반 장치 상에서 시작되어, 단계(404)로 진행하며, 이 단계에서 방법(400)은 제어기 기반 장치(103P) 상의 코드(예를 들면, 제 1 코드(126))를 실행하기 시작한다. 제 1 코드(126)는 제어기 기반 장치(103P)와 관련된 소정의 프로그램 코드 또는 프로세스를 포함한다. 제 1 코드(126)는 코드 가상화 서버(114)에 의해 제공되는 기능에 대한 하나 이상의 호출(들)(128)을 포함한다. 단계(406)에서는, 제어기 기반 장치(103P)로부터 코드 가상화 서버(114)로의 호출이 이루어지며, 방법(400)이 코드 가상화 서버(114)로 전환된다. 방법(400)은 단계(408)로 진행하여, 이 단계에서 방법(400)은 코드 가상화 서버(114)에 저장된 제 1 프로파일(또는 프로파일 1)을 사용하여, 코드 가상화 서버(114) 상의 호출된 함수(예를 들어, 제 2 코드(159))에 대응하는 코드를 실행한다. 코드 가상화 서버(114) 상에서 단계(408)를 실행할 경우에는, 단계(410)에서, 방법(400)은 코드의 실행을 제어기 기반 장치(103P)로 리턴한다. 단계(412)에서, 방법(400)은 제어기 기반 장치(103P) 상의 제 1 코드(126)의 실행을 완료한다. 일부 실시예들에서는, 제 1 코드(126) 실행이 코드 가상화 서버(114) 상의 단계(410)에서 완료될 수 있으며, 추가적인 코드 실행이 단계(412)에서 발생하지 않을 수도 있다. 방법(400)은 단계(414)로 진행하며, 이 단계에서 방법(400)이 종료된다.FIG. 4 illustrates at least one controller-based device (102, 103, 108), e.g., controller-based, for controlling the operation of code for the at least one controller-based device of FIG. 1, in accordance with an embodiment of the present invention. A flow diagram of a method 400 executed by the device 103 P and the code virtualization server 114 . The method 400 begins on the controller-based device at step 402 and proceeds to step 404, where the method 400 executes code (eg, first code) on the controller-based device 103 P . (126)). The first code 126 includes any program code or process associated with the controller-based device 103 P . The first code 126 includes one or more call(s) 128 to functions provided by the code virtualization server 114. At step 406 , a call is made from the controller-based device 103 P to the code virtualization server 114 , and the method 400 switches to the code virtualization server 114 . The method 400 proceeds to step 408, where the method 400 uses the first profile (or profile 1) stored on the code virtualization server 114 to generate a call on the code virtualization server 114. Code corresponding to the function (eg, second code 159) is executed. When executing step 408 on code virtualization server 114 , at step 410 , method 400 returns execution of the code to controller-based device 103 P . At step 412 , method 400 completes execution of first code 126 on controller-based device 103 P . In some embodiments, execution of the first code 126 may complete at step 410 on code virtualization server 114 and no further code execution may occur at step 412 . Method 400 proceeds to step 414, at which point method 400 ends.

단계들(402-414)은 프로파일(168)로서 저장된 프로파일 1을 사용하는 제어기 기반 장치(103P)에 대한 코드의 실행을 나타내고 있다. 예를 들어, 일 실시예에서, 제어기 기반 장치(103P)는 온도가 미리 결정된 값 미만으로 떨어질 경우, 난방을 켜도록 구성된 온도 센서이다. 온도가 미리 결정된 값 미만으로 떨어질 경우, 프로파일 1을 사용하여 코드가 실행된다. 구체적으로, 일 조건을 충족할 경우(온도가 미리 결정된 값 미만으로 떨어짐), 제 1 코드(128)는 난방을 켜고, 원격 서비스(118)를 프로비저닝하기 위해(예를 들어, FACEBOOK 상에 소정 텍스트를 게시) 코드 가상화 서버(114)를 호출(호출(128)을 통해)하도록 구성된다. 호출(128)을 수신할 경우, 코드 가상화 서버(114)는 사용자의 로그인 크리덴셜 및 사전 정의된 텍스트를 포함하는 프로파일 1을 사용하여 제 2 코드(159)를 실행한다. 제 2 코드(159)를 실행하면 사용자 계정에서 "난방이 켜졌습니다"라는 FACEBOOK 게시물이 생성된다. 이 결과는 제어기 기반 장치(103P)에 대한 코드(제 1 코드(128) 및 제 2 코드(159))의 제 1 동작이다.Steps 402 - 414 represent execution of code on controller-based device 103 P using profile 1 stored as profile 168 . For example, in one embodiment, the controller-based device 103 P is a temperature sensor configured to turn on heating if the temperature falls below a predetermined value. When the temperature drops below a predetermined value, the code is executed using Profile 1. Specifically, if a condition is met (temperature drops below a predetermined value), first code 128 turns on heating and to provision remote service 118 (e.g., send certain text on FACEBOOK). ) is configured to call (via call 128) the code virtualization server 114. Upon receiving call 128, code virtualization server 114 executes second code 159 using profile 1 containing the user's login credentials and predefined text. When the second code (159) is executed, a FACEBOOK post that says "The heating is turned on" is created in the user account. This result is the first operation of the codes (first code 128 and second code 159) for the controller-based device 103 P .

본 발명의 일부 실시예들에 따르면, 제 1 프로파일(프로파일 1)은 예를 들어 도 2와 관련하여 설명된 방법(200)을 사용하거나, 또는 도 3의 방법(300)에서 설명된 단계들(304-320) 및 단계들(332-338)을 사용하여, 사용자에 의해서 제 2 프로파일(프로파일 2)로 수정 또는 업데이트된다. 이에 따라, 프로파일(168)은 프로파일 2로 업데이트된다. 그 후에, 방법(400)은 단계들(402-414)과 유사한 방식으로, 예를 들어, 단계들(422-434)과 관련하여 아래에서 설명되는 바와 같이, 제 2 프로파일(프로파일 2)을 사용하여 실행된다.According to some embodiments of the present invention, the first profile (Profile 1) uses, for example, the method 200 described with respect to FIG. 2 , or the steps described in method 300 of FIG. 3 ( 304-320) and steps 332-338, the second profile (Profile 2) is modified or updated by the user. Accordingly, profile 168 is updated to profile 2. Method 400 then uses a second profile (profile 2) in a manner similar to steps 402-414, e.g., as described below with respect to steps 422-434. and it is executed

방법(400)은 단계(422)에서 제어기 기반 장치(103P) 상에서 시작되어 단계(424)로 진행하며, 이 단계에서 방법(400)은 제어기 기반 장치(103P) 상의 코드(예를 들어, 제 1 코드(126))를 실행하기 시작한다. 제 1 코드(126)는 제어기 기반 장치(103P)와 관련된 소정의 프로그램 코드 또는 프로세스를 포함한다. 제 1 코드(126)는 코드 가상화 서버(114)에 의해 제공되는 기능에 대한 하나 이상의 호출(들)(128)을 포함한다. 단계(426)에서, 호출(128)은 제어기 기반 장치(103P)로부터 코드 가상화 서버(114)로 행해지며, 방법(400)은 코드 가상화 서버(114)로 전환된다. 방법(400)은 단계(428)로 진행하며, 이 단계에서 방법(400)은 코드 가상화 서버(114)에 저장된 업데이트된 프로파일(또는 프로파일 2)을 사용하여 코드 가상화 서버(114) 상의 호출된 함수(예를 들어, 제 2 코드(159))에 대응하는 코드를 실행한다. 코드 가상화 서버(114) 상에서 단계(428)를 실행할 경우에는, 단계(430)에서, 방법(400)은 제어기 기반 장치(103P)로 실행을 리턴한다. 단계(432)에서, 방법(400)은 제어기 기반 장치(103P) 상의 제 1 코드(126)의 실행을 완료한다. 일부 실시예들에서는, 제 1 코드(126) 실행이 코드 가상화 서버(114) 상의 단계(430)에서 완료될 수 있으며, 단계(432)에서 추가의 코드 실행이 발생하지 않을 수도 있다. 방법(400)은 단계(434)로 진행하며, 이 단계에서 방법(400)이 종료된다.The method 400 starts at step 422 on the controller-based device 103 P and proceeds to step 424 , at which point the method 400 executes code (eg, Execution of the first code (126) begins. The first code 126 includes any program code or process associated with the controller-based device 103 P . The first code 126 includes one or more call(s) 128 to functions provided by the code virtualization server 114. At step 426, a call 128 is made from the controller-based device 103 P to the code virtualization server 114, and the method 400 switches to the code virtualization server 114. Method 400 proceeds to step 428, where method 400 calls the function on code virtualization server 114 using the updated profile (or profile 2) stored on code virtualization server 114. (For example, the code corresponding to the second code 159) is executed. When executing step 428 on code virtualization server 114 , at step 430 , method 400 returns execution to controller-based device 103 P . At step 432 , method 400 completes execution of first code 126 on controller-based device 103 P . In some embodiments, execution of the first code 126 may complete at step 430 on code virtualization server 114 and no further code execution may occur at step 432 . Method 400 proceeds to step 434, at which point method 400 ends.

단계들(422-434)은 전술한 기술을 사용하여 프로파일(168)을 수정한 후에 프로파일(168)로서 저장되는 프로파일 2를 사용하는 제어기 기반 장치(103P)에 대한 코드의 실행을 나타낸다. 제어기 기반 장치(103P)가, 온도가 미리 결정된 값 미만으로 떨어질 경우 난방을 켜도록 구성된 온도 센서인 예에 대하여 계속 설명한다. 온도가 미리 결정된 값 미만으로 떨어질 경우에는, 이제 프로파일 2를 사용하여 코드가 실행된다. 구체적으로, 일 조건을 충족할 경우(온도가 미리 결정된 값 미만으로 떨어짐), 제 1 코드(128)는 난방을 켜고, 원격 서비스(118)를 프로비저닝하기 위해(예를 들어, TWITTER 상에 상이한 텍스트를 게시) 코드 가상화 서버(114)를 호출(호출(128)을 통해)하도록 구성된다. 호출(128)을 수신할 경우, 코드 가상화 서버(114)는 TWITTER에 대한 사용자의 로그인 크리덴셜 및 사전 정의된 텍스트를 포함하는 프로파일 2를 사용하여 제 2 코드(159)를 실행한다. 제 2 코드(159)를 실행하면 사용자 계정에서 "여기 정말 추워!"라는 TWITTER 게시물이 생성된다. 이 결과는 제어기 기반 장치(103P)에 대한 코드(제 1 코드(128) 및 제 2 코드(159))의 제 2 동작이다. 이러한 방식으로, 상기 실시예들은 코드 자체를 재기록하거나 수정함 없이도, 제어기 기반 장치(103P)에 대한 코드의 동작을 수정하는 것을 가능하게 한다.Steps 422-434 represent the execution of code on controller-based device 103 P that uses profile 2, which is saved as profile 168 after modifying profile 168 using the techniques described above. The description continues with an example in which the controller-based device 103 P is a temperature sensor configured to turn on the heating if the temperature falls below a predetermined value. If the temperature falls below a predetermined value, the code is now executed using Profile 2. Specifically, if a condition is met (temperature drops below a predetermined value), first code 128 turns on heating and to provision remote service 118 (e.g., different text on TWITTER). ) is configured to call (via call 128) the code virtualization server 114. Upon receiving call 128, code virtualization server 114 executes second code 159 using profile 2 containing the user's login credentials for TWITTER and the predefined text. Execution of the second code 159 creates a TWITTER post from the user account saying "It's really cold here!" This result is the second operation of the codes (first code 128 and second code 159) for the controller-based device 103 P . In this way, the embodiments make it possible to modify the operation of the code for the controller-based device 103 P without rewriting or modifying the code itself.

또한, 설명된 예가 상이한 서비스의 프로비저닝 및 상이한 텍스트의 게시에 관한 동작만 변경하지만, 코드 동작의 광범위한 수정을 제공하도록 코드 및 프로파일들의 조합이 구성될 수도 있다. 코드 및 프로파일 구성에 있어서의 이러한 변형예들은 본 청구항들에 정의된 본 발명의 범위 및 사상을 벗어남 없이 당업자에게 용이하게 고려될 수 있다. 본 명세서에서 논의된 다양한 실시예들에 의해 예시되는 기술들은 각 제어기 기반 장치를 개별적으로 재프로그래밍할 필요성을 제거함으로써, 사용자에 대한 신속하고 용이한 코드 동작 제어 또는 수정을 가능하게 한다. 일부 실시예들에서, 코드 가상화 서버(114)는 코드 생성, 배포, 디폴트 웹 인터페이스를 통한 원격 재프로그래밍, 또는 임의의 GUI(예를 들어, 스마트폰 앱 또는 컴퓨터 애플리케이션)에 대한 액세스를 제공하는 서비스(도시되지 않음)로서 구현된다. 실시예들이 사물 인터넷(IoT) 장치와 관련하여 기술되었지만, 당업자는 개시된 실시예들에 의해 예시된 기술들이 몇몇 다른 프로그래밍 환경들에 적용 가능하다는 것을 용이하게 이해할 것이다.Further, although the described example only changes behavior regarding provisioning of different services and publishing of different texts, combinations of codes and profiles may be configured to provide wide-ranging modifications of code behavior. Such variations in code and profile construction can readily be considered by those skilled in the art without departing from the scope and spirit of the invention as defined in the present claims. The techniques exemplified by the various embodiments discussed herein eliminate the need to individually reprogram each controller-based device, thereby enabling quick and easy code operation control or modification for a user. In some embodiments, code virtualization server 114 is a service that provides access to code generation, distribution, remote reprogramming through a default web interface, or any GUI (eg, a smartphone app or computer application). (not shown). Although the embodiments have been described in the context of an Internet of Things (IoT) device, those skilled in the art will readily appreciate that the techniques illustrated by the disclosed embodiments are applicable to several other programming environments.

본 명세서에서 설명되는 방법들은 상이한 실시예들에서 소프트웨어, 하드웨어 또는 이들의 조합으로 구현될 수 있다. 또한, 방법들의 순서는 변경될 수 있으며, 다양한 요소들이 추가, 재정렬, 결합, 생략 또는 수정될 수 있다. 본 명세서에서 설명되는 모든 예들은 비제한적인 방식으로 제공된 것이다. 본 발명의 이익을 받는 당업자에게는 명백한 바와 같이 다양한 수정 및 변경이 이루어질 수 있다. 실시예들에 따른 실현에 대하여 특정 실시예들과 관련하여 기술되었다. 이들 실시예는 한정이 아닌 예시를 위한 것이다. 다수의 변형, 수정, 추가 및 개선이 가능하다. 따라서, 단일의 인스턴스로서 본 명세서에서 설명되는 구성 요소들에 대한 복수의 인스턴스들이 제공될 수도 있다. 다양한 구성 요소들, 동작들 및 데이터 저장소들 간의 경계는 다소 임의적이며, 특정 동작들은 구체적인 예시 구성들과 관련하여 나타낸 것이다. 다른 기능 할당들이 상정될 수 있으며, 아래의 청구범위 내에 포함될 수도 있다. 마지막으로, 예시적인 구성들에서 별개의 구성 요소들로서 제시된 구조 및 기능은 조합된 구조 또는 구성 요소로서 구현될 수도 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 아래의 청구범위에 정의된 실시예들의 범위 내에 포함될 수 있다.The methods described herein may be implemented in software, hardware, or a combination thereof in different embodiments. Also, the order of methods may be changed, and various elements may be added, rearranged, combined, omitted, or modified. All examples described herein are provided in a non-limiting manner. Various modifications and changes may be made as will be apparent to those skilled in the art having the benefit of this disclosure. Realization according to the embodiments has been described in relation to specific embodiments. These examples are for illustration and not limitation. Numerous variations, modifications, additions and improvements are possible. Accordingly, multiple instances of components described herein as a single instance may be provided. The boundaries between the various components, operations, and data stores are somewhat arbitrary, and specific operations are presented in relation to specific example configurations. Other functional assignments are contemplated and may fall within the scope of the following claims. Finally, structures and functionality presented as separate components in example configurations may also be implemented as a combined structure or component. These and other variations, modifications, additions and improvements may be included within the scope of the embodiments defined in the claims below.

전술한 내용이 본 발명의 실시예들에 관한 것이지만, 본 발명의 다른 실시예 및 추가 실시예가 본 발명의 기본 범위를 벗어남 없이 고안될 수도 있으며, 그 범위는 아래의 청구범위에 의해 결정된다.Although the foregoing relates to embodiments of the invention, other and additional embodiments of the invention may be devised without departing from the basic scope of the invention, which scope is determined by the claims below.

Claims (18)

제어기 기반 장치(controller-based device)에 대한 코드의 동작을 원격으로 수정하기 위한 컴퓨터 구현 방법으로서,
코드 가상화 서버(code virtualization server)에서 수정된 프로파일을 사용자 장치로부터 수신하는 단계 - 상기 수정된 프로파일은 상기 제어기 기반 장치를 위한 코드와 연관된 프로파일의 수정이고,
상기 제어기 기반 장치를 위한 코드는 상기 제어기 기반 장치에서의 실행을 위한 제 1 코드 및 상기 코드 가상화 서버에서의 실행을 위한 제 2 코드를 포함하고,
상기 제 1 코드는 상기 제어기 기반 장치로부터 상기 코드 가상화 서버로의 원격 호출을 포함하고, 상기 원격 호출은 상기 코드 가상화 서버에서의 상기 제 2 코드의 실행을 야기하도록 구성되고,
상기 프로파일은 상기 제 2 코드를 실행하는데 사용되기 위한 적어도 하나의 파라미터를 포함하고,
상기 제어기 기반 장치는 상기 사용자 장치 및 상기 코드 가상화 서버에 대해 원격임 -;
상기 프로파일을 상기 코드 가상화 서버에서의 수정된 프로파일로 업데이트하는 단계; 및
상기 제어기 기반 장치로부터 상기 코드 가상화 서버에서 원격 호출을 수신할 때, 상기 업데이트된 프로파일을 이용하여 상기 코드 가상화 서버에서 상기 제 2 코드를 실행하는 단계 - 상기 업데이트된 프로파일을 이용한 상기 제 2 코드의 실행은 상기 제어기 기반 장치에 대한 코드의 동작의 수정을 야기함 - 를 포함하는, 방법.
A computer implemented method for remotely modifying the operation of code for a controller-based device, comprising:
receiving a modified profile from a user device at a code virtualization server, the modified profile being a modification of a profile associated with code for the controller-based device;
the code for the controller-based device includes a first code for execution on the controller-based device and a second code for execution on the code virtualization server;
the first code comprises a remote call from the controller-based device to the code virtualization server, the remote call configured to cause execution of the second code at the code virtualization server;
the profile includes at least one parameter for use in executing the second code;
the controller-based device is remote to the user device and the code virtualization server;
updating the profile to a modified profile in the code virtualization server; and
executing the second code at the code virtualization server using the updated profile when receiving a remote call at the code virtualization server from the controller-based device - executing the second code using the updated profile causes modification of the operation of the code for the controller-based device.
제 1 항에 있어서,
상기 업데이트하는 단계는 상기 수정된 프로파일의 대응하는 파라미터에 따라 상기 프로파일의 상기 적어도 하나의 파라미터를 수정하는 단계를 포함하는, 방법.
According to claim 1,
wherein the updating step comprises modifying the at least one parameter of the profile according to a corresponding parameter of the modified profile.
제 1 항에 있어서,
상기 코드 가상화 서버로부터 상기 사용자 장치로 복수의 제어기 기반 장치들의 리스트를 전송하는 단계 - 상기 리스트는 사용자 장치에서의 디스플레이를 위한 것임 -; 및
상기 사용자 장치로부터, 상기 제어기 기반 장치에 대한 코드의 동작을 수정하기 위한, 상기 복수의 제어기 기반 장치들 중의 제어기 기반 장치의 선택을 수신하는 단계를 더 포함하는, 방법.
According to claim 1,
sending a list of a plurality of controller-based devices from the code virtualization server to the user device, the list being for display at the user device; and
receiving, from the user device, a selection of a controller-based device of the plurality of controller-based devices to modify operation of the code for the controller-based device.
제 3 항에 있어서,
상기 수정된 프로파일을 사용하여 업데이트되는 프로파일을 검색하는 단계; 및
디스플레이를 위해 그 프로파일을 사용자 장치에게 전송하는 단계를 더 포함하는, 방법.
According to claim 3,
Retrieving an updated profile using the modified profile; and
and transmitting the profile to a user device for display.
제 4 항에 있어서,
상기 리스트는 상기 사용자 장치의 그래픽 사용자 인터페이스(GUI)에서의 디스플레이를 위해 전송되고, 상기 선택은 상기 GUI를 통해 수신되고, 상기 수정된 프로파일은 상기 GUI를 통해 수신되는, 방법.
According to claim 4,
wherein the list is sent for display in a graphical user interface (GUI) of the user device, the selection is received via the GUI, and the modified profile is received via the GUI.
제 1 항에 있어서,
상기 수정된 프로파일을 사용하여 업데이트된 후에 상기 프로파일을 저장하는 단계를 더 포함하는, 방법.
According to claim 1,
and saving the profile after being updated using the modified profile.
제 1 항에 있어서,
상기 제 2 코드의 실행은 상기 프로파일을 사용하여 적어도 하나의 원격 서비스의 프로비저닝(provisioning)을 개시시키고, 상기 원격 서비스는 상기 제어기 기반 장치에 대하여 원격인 장치들인, 상기 사용자 장치 및 상기 코드 가상화 서버 상에서 프로비저닝되는, 방법.
According to claim 1,
Execution of the second code initiates provisioning of at least one remote service using the profile, the remote service on the user device and the code virtualization server, which devices are remote to the controller-based device. Provisioned, how.
제 7 항에 있어서,
상기 적어도 하나의 원격 서비스의 프로비저닝 후에, 상기 적어도 하나의 원격 서비스의 프로비저닝에 관련된 데이터를, 상기 사용자 장치 또는 상기 제어기 기반 장치 중 적어도 하나에 전송하는 단계를 더 포함하는, 방법.
According to claim 7,
After provisioning of the at least one remote service, transmitting data related to provisioning of the at least one remote service to at least one of the user device or the controller-based device.
제어기 기반 장치에 대한 코드의 동작을 원격으로 수정하기 위한 장치로서, 코드 가상화 서버를 포함하는 상기 장치는,
프로세서; 및
상기 프로세서를 사용하여 실행될 시에, 방법을 실행하게 하는 실행 가능한 명령어들을 포함하는 메모리를 포함하며,
상기 방법은,
상기 코드 가상화 서버에서 수정된 프로파일을 사용자 장치로부터 수신하는 단계 - 상기 수정된 프로파일은 상기 제어기 기반 장치를 위한 코드와 연관된 프로파일의 수정이고,
상기 제어기 기반 장치를 위한 코드는 상기 제어기 기반 장치에서의 실행을 위한 제 1 코드 및 상기 코드 가상화 서버에서의 실행을 위한 제 2 코드를 포함하고,
상기 제 1 코드는 상기 제어기 기반 장치로부터 상기 코드 가상화 서버로의 원격 호출을 포함하고, 상기 원격 호출은 상기 코드 가상화 서버에서의 상기 제 2 코드의 실행을 야기하도록 구성되고,
상기 프로파일은 상기 제 2 코드를 실행하는데 사용되기 위한 적어도 하나의 파라미터를 포함하고,
상기 제어기 기반 장치는 상기 사용자 장치 및 상기 코드 가상화 서버에 대해 원격임 -;
상기 프로파일을 상기 코드 가상화 서버에서의 수정된 프로파일로 업데이트하는 단계; 및
상기 제어기 기반 장치로부터 상기 코드 가상화 서버에서 원격 호출을 수신할 때, 상기 업데이트된 프로파일을 이용하여 상기 코드 가상화 서버에서 상기 제 2 코드를 실행하는 단계 - 상기 업데이트된 프로파일을 이용한 상기 제 2 코드의 실행은 상기 제어기 기반 장치에 대한 코드의 동작의 수정을 야기함 - 를 포함하는, 장치.
An apparatus for remotely modifying the operation of code for a controller-based device, the apparatus comprising a code virtualization server, comprising:
processor; and
a memory containing executable instructions that, when executed using the processor, cause execution of a method;
The method,
receiving a modified profile from the code virtualization server from a user device, wherein the modified profile is a modification of a profile associated with code for the controller-based device;
the code for the controller-based device includes a first code for execution on the controller-based device and a second code for execution on the code virtualization server;
the first code comprises a remote call from the controller-based device to the code virtualization server, the remote call configured to cause execution of the second code at the code virtualization server;
the profile includes at least one parameter for use in executing the second code;
the controller-based device is remote to the user device and the code virtualization server;
updating the profile to a modified profile in the code virtualization server; and
executing the second code at the code virtualization server using the updated profile when receiving a remote call at the code virtualization server from the controller-based device - executing the second code using the updated profile causes modification of the operation of the code for the controller-based device.
제 9 항에 있어서,
상기 프로파일을 포함하는 적어도 하나의 프로파일로 상기 제어기 기반 장치를 상호 참조하는 인덱스를 더 포함하는, 장치.
According to claim 9,
and an index that cross-references the controller-based device to at least one profile that includes the profile.
제 9 항에 있어서,
상기 업데이트하는 단계는, 상기 수정된 프로파일의 대응하는 파라미터에 따라 상기 프로파일의 적어도 하나의 파라미터를 수정하는 단계를 포함하는, 장치.
According to claim 9,
wherein the updating comprises modifying at least one parameter of the profile according to a corresponding parameter of the modified profile.
제 9 항에 있어서,
상기 방법은,
사용자 장치에서의 디스플레이를 위해 상기 코드 가상화 서버로부터 상기 사용자 장치로 복수의 제어기 기반 장치들의 리스트를 전송하는 단계; 및
상기 사용자 장치로부터, 상기 제어기 기반 장치에 대한 코드의 동작을 수정하기 위한, 상기 복수의 제어기 기반 장치들 중의 제어기 기반 장치의 선택을 수신하는 단계를 더 포함하는, 장치.
According to claim 9,
The method,
transmitting a list of a plurality of controller-based devices from the code virtualization server to the user device for display at the user device; and
receiving, from the user device, a selection of a controller-based device of the plurality of controller-based devices to modify operation of the code for the controller-based device.
제 12 항에 있어서,
상기 방법은,
상기 수정된 프로파일을 사용하여 업데이트되는 프로파일을 검색하는 단계; 및
디스플레이를 위해 그 프로파일을 상기 사용자 장치에 전송하는 단계를 더 포함하는, 장치.
According to claim 12,
The method,
Retrieving an updated profile using the modified profile; and
and transmitting the profile to the user device for display.
제 13 항에 있어서,
상기 리스트는 상기 사용자 장치의 그래픽 사용자 인터페이스(GUI)에서의 디스플레이를 위해 전송되고, 상기 선택은 상기 GUI를 통해 수신되고, 상기 수정된 프로파일은 상기 GUI를 통해 수신되는, 장치.
According to claim 13,
wherein the list is sent for display in a graphical user interface (GUI) of the user device, the selection is received via the GUI, and the modified profile is received via the GUI.
제 9 항에 있어서,
상기 방법은, 상기 수정된 프로파일을 사용하여 업데이트된 후에 상기 프로파일을 저장하는 단계를 더 포함하는, 장치.
According to claim 9,
The method further comprises saving the profile after being updated using the modified profile.
제 9 항에 있어서,
상기 제 2 코드의 실행은 상기 프로파일을 사용하여 적어도 하나의 원격 서비스의 프로비저닝을 개시시키고, 상기 원격 서비스는 상기 제어기 기반 장치에 대하여 원격인 장치들인, 상기 사용자 장치 및 상기 코드 가상화 서버 상에서 프로비저닝되는, 장치.
According to claim 9,
Execution of the second code initiates provisioning of at least one remote service using the profile, the remote service being provisioned on the user device and the code virtualization server, which are devices remote to the controller-based device. Device.
제 16 항에 있어서,
상기 방법은, 상기 적어도 하나의 원격 서비스의 프로비저닝 후에, 상기 적어도 하나의 원격 서비스의 프로비저닝에 관련된 데이터를, 상기 사용자 장치 또는 상기 제어기 기반 장치 중 적어도 하나에 전송하는 단계를 더 포함하는, 장치.
17. The method of claim 16,
The method further comprises, after provisioning of the at least one remote service, transmitting data related to provisioning of the at least one remote service to at least one of the user device or the controller-based device.
제어기 기반 장치에 대한 코드의 동작을 원격으로 수정하기 위한 컴퓨터 명령들을 저장하는 비일시적 컴퓨터 판독가능 매체로서, 상기 컴퓨터 명령들은, 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서가 방법을 수행하도록 하고, 상기 방법은,
사용자 장치의 그래픽 사용자 인터페이스(GUI)에 제어기 기반 장치들의 리스트를 디스플레이하는 단계;
상기 GUI에서, 상기 리스트로부터의 제어기 기반 장치의 선택을 수신하는 단계;
상기 사용자 장치로부터 코드 가상화 서버로 상기 선택을 전송하는 단계;
상기 사용자 장치에서, 상기 코드 가상화 서버로부터, 상기 제어기 기반 장치에 대한 코드를 실행하는데 사용되기 위한 적어도 하나의 파라미터를 포함하는 프로파일을 수신하는 단계;
상기 GUI를 통해 상기 프로파일을 디스플레이하는 단계;
상기 GUI를 통해, 상기 프로파일의 적어도 하나의 파라미터를 수정하기 위한 입력을 수신하는 단계;
상기 사용자 장치에서, 상기 입력을 사용하여 수정된 프로파일을 생성하는 단계 - 상기 수정된 프로파일은 상기 프로파일의 수정임 -; 및
상기 수정된 프로파일을 상기 사용자 장치로부터 상기 코드 가상화 서버로 전송하는 단계를 포함하는, 비일시적 컴퓨터 판독가능 매체.
A non-transitory computer-readable medium storing computer instructions for remotely modifying the operation of code on a controller-based device, the computer instructions, when executed by at least one processor, causing the at least one processor to perform a method. and the method,
displaying a list of controller-based devices on a graphical user interface (GUI) of a user device;
receiving, at the GUI, a selection of a controller-based device from the list;
transmitting the selection from the user device to a code virtualization server;
receiving, at the user device, a profile including at least one parameter for use in executing code for the controller-based device, from the code virtualization server;
displaying the profile through the GUI;
receiving an input for modifying at least one parameter of the profile through the GUI;
generating, at the user device, a modified profile using the input, wherein the modified profile is a modification of the profile; and
and transmitting the modified profile from the user device to the code virtualization server.
KR1020187002797A 2015-07-09 2016-07-08 Method and Apparatus for Modifying Code Behavior for Controller-Based Devices KR102567780B1 (en)

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
KR20180027529A KR20180027529A (en) 2018-03-14
KR102567780B1 true KR102567780B1 (en) 2023-08-18

Family

ID=57686194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187002797A KR102567780B1 (en) 2015-07-09 2016-07-08 Method and Apparatus for Modifying Code Behavior for Controller-Based Devices

Country Status (6)

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

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110995462B (en) * 2019-10-31 2022-06-07 北京浪潮数据技术有限公司 Cloud host function expansion method, system, equipment and computer storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09160847A (en) * 1995-12-08 1997-06-20 Hitachi Ltd Client server-type distribution processing system
JP2001325237A (en) * 2000-05-16 2001-11-22 Hitachi Ltd Program execution method and device in distributed processing system
JP4263387B2 (en) * 2000-08-25 2009-05-13 四国電力株式会社 Remote control server, center server, and system including them
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 (en) * 2001-08-08 2003-02-21 Matsushita Electric Ind Co Ltd Remote controller of apparatus and remote control system of apparatus
US7457815B2 (en) * 2003-03-27 2008-11-25 Apple Inc. Method and apparatus for automatically providing network services
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
KR102220127B1 (en) * 2013-06-18 2021-03-02 시암벨라 리미티드 Method and apparatus for customized software development kit (sdk) generation
JP2015121887A (en) * 2013-12-20 2015-07-02 キヤノン株式会社 Information processing device and control method thereof, and program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Also Published As

Publication number Publication date
EP3320426A4 (en) 2019-04-24
JP6626956B2 (en) 2019-12-25
CA2989654A1 (en) 2017-01-12
CN107851009B (en) 2021-11-09
KR20180027529A (en) 2018-03-14
CN107851009A (en) 2018-03-27
CA2989654C (en) 2021-12-14
WO2017008036A1 (en) 2017-01-12
JP2018519611A (en) 2018-07-19
EP3320426A1 (en) 2018-05-16

Similar Documents

Publication Publication Date Title
US10067490B2 (en) Method and apparatus for modifying behavior of code for a controller-based device
JP6719484B2 (en) Method and apparatus for automatic software development for a group of controller-based devices
EP3394743B1 (en) Method and apparatus for creating and managing controller based remote solutions
US10798780B2 (en) Method and apparatus for creating and managing controller based remote solutions
CN107003836B (en) Flexible device template for connected consumer devices
US20140195663A1 (en) Method and System for Providing Cloud-Based Common Distribution Applications
US20200387129A1 (en) Method and apparatus for creating and managing smart programmable logic controller (plc) solutions
KR102567780B1 (en) Method and Apparatus for Modifying Code Behavior for Controller-Based Devices
EP3501160B1 (en) Method and apparatus for creating and managing controller based remote solutions
JP5956679B2 (en) Control device
EP3113141A1 (en) Enriched instructions for remotely controlling electronic devices

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right