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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote 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
본 발명의 실시예들은 일반적으로 제어기 기반 장치(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
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
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
제어기 기반 장치들(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
각각의 제어기 기반 장치(에지 장치들(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
사용자 장치(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) 상에 디스플레이된다.
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
일부 실시예들(도시되지 않음)에서, 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),
코드 가상화 서버(114)는 범용 컴퓨터이거나 또는 본 발명의 실시예들과 관련된 기능들을 수행하기 위해 특정 목적의 컴퓨터로 프로그래밍되는 다른 전자 처리 장치일 수 있다. 코드 가상화 서버(114)는 CPU(150), 지원 회로들(152), 그리고 명령어 및 알고리즘을 포함하는 메모리(154)를 포함한다. CPU(150)는 상업적으로 이용 가능한 프로세서, 마이크로프로세서, 마이크로제어기 등일 수 있다. 지원 회로들(152)은 사용자 인터페이스, 클록 회로, 네트워크 통신, 캐시, 전원 공급 장치, I/O 회로 등과 같은 기능을 CPU에게 제공하는 잘 알려진 회로를 포함한다. 대안의 실시예들은 주문형 ASIC(Application Specific Integrated Circuit) 상의 제어 알고리즘들을 사용하여 CPU(150), 지원 회로들(152) 및 메모리(154)의 임의의 조합에 의해 제공되는 기능을 제공할 수 있다. 일부 실시예들에서, 사용자 인터페이스는 키패드, 전자 버튼, 스피커, 터치스크린, 디스플레이, 또는 다른 사용자 상호 작용 메커니즘을 포함한다. 일부 실시예들에서, 사용자 인터페이스는 제어기 기반 장치들(102, 103 및 108)과 통신할 수 있다.
메모리(154)는 데이터 및 실행 가능한 소프트웨어를 저장하기 위해 사용되는 임의의 형태의 디지털 스토리지일 수 있다. 이러한 메모리는 랜덤 액세스 메모리, 판독 전용 메모리, 디스크 스토리지, 광학 스토리지 등을 포함하며, 이에 한정되지 않는다. 메모리는 인터페이스(156), 프로파일 업데이터(157), 프로세스 라이브러리(158), 소프트웨어 개발 키트(software development kit; SDK) 생성기(160), 코드 생성기(162), 프로파일 데이터베이스(164), 실행 엔진(166), 및 장치 데이터베이스(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)에 분산될 수 있다.
본 발명의 실시예들에 따르면, 프로파일 업데이터(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,
[표 1][Table 1]
실행 엔진(166)은 장치(100)의 다양한 구성 요소들 간의 상호 운용성을 용이하게 하기 위해 전술한 모든 기능들을 지원한다. 실행 엔진은 위에서 설명한 각 기능 블록들을 사용하여, 사용자가 제어기 기반 장치들을 프로그래밍하여 사용자 장치의 GUI를 통해 해당 기능을 제어 및 수정할 수 있게 한다.
원격 서비스(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
네트워크(110)는 인터넷 또는 광역 네트워크(WAN) 또는 그 조합을 포함하며, 하나 이상의 그러한 네트워크들을 포함할 수도 있다. 장치(100)의 모든 구성 요소들은 공지된 방법들 및 구성 요소들을 사용하여, 도 1에 도시된 바와 같이 네트워크(110)에 또는 서로에 연결된다.
도 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
도 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
단계(304)에서, 방법(300)은 예를 들어 전술한 바와 같이, 디스플레이(134) 상의 GUI(138)를 사용하여 제어기 기반 장치들의 리스트(140)를 표시한다. 이 리스트는 사용자 장치(112)에 의한 요청에 응답하여 코드 가상화 서버에 의해 전송되는 제어기 기반 장치들(102, 103, 108)의 리스트(예를 들면, 리스트(182))일 수 있으며, 또는 이 리스트가 사용자 장치(112)에게 제공될 수도 있다. 일부 실시예들에서, 사용자 장치(112)는 이 리스트를 리스트(140)로서 저장한다. 단계(306)에서, 방법(300)은 단계(308)에서 코드 가상화 서버(114)로 전송되는 GUI(138)를 통해 제어기 기반 장치, 예를 들어 제어기 기반 장치(130P)의 선택을 수신한다.At
방법(300)의 실행은 단계(332)에서 코드 가상화 서버(114)로 시프트되며, 이 단계에서 방법(300)은 제어기 기반 장치(103P) 상에서의 실행을 위한 코드와 관련된 관련된 하나 이상의 프로파일(들), 예를 들어, 프로파일(168) 및 다른 프로파일들을 검색한다. 방법(300)은 단계(334)로 진행하며, 이 단계에서 프로파일(168) 및 다른 프로파일들이 수정을 위해 사용자 장치(112)로 전송된다.Execution of the
방법(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
방법(300)의 실행은 단계(336)에서 코드 가상화 서버(114)로 시프트되며, 이 단계에서 방법(300)은 수정된 프로파일을 사용하여 프로파일(168)을 업데이트한다. 방법(300)은 수정된 프로파일의 대응하는 파라미터에 따라 각 파라미터를 업데이트함으로써 프로파일 업데이터(157)를 사용하여 프로파일(168)을 업데이트하거나, 또는 프로파일(168)을 수정된 프로파일로 대체하며, 단계(338)에서 방법(300)은 수정된 프로파일을 프로파일(168)로서 저장한다. 이러한 방식으로, 단계들(304-320) 및 단계들(332-338)은 수정된 프로파일을 사용하여 프로파일(168)을 업데이트하는 것을 달성한다. 간략화를 위해, 방법(300)의 설명은 단일의 프로파일, 예를 들어 프로파일(168)을 참조하여 이루어지겠지만, 본 기술분야의 통상의 기술자가 쉽게 이해할 수 있는 바와 같이, 방법(300)의 단계들은 복수의 프로파일들을 포함하는 것으로 확장될 수 있다. 추가의 단계들은 업데이트된 프로파일을 사용하여 제어기 기반 장치(103P)와 관련된 코드를 실행함으로써 코드의 동작을 수정하는 것에 관한 것이다.Execution of
단계(352)에서, 방법(300)은 제어기 기반 장치(103P) 상의 제 1 코드(126)를 실행한다. 방법(300)은 단계(354)로 진행하며, 이 단계에서 제 1 코드(126)는 코드 가상화 서버(114) 상의 제 2 코드(159)를 실행하기 위해, 호출(128)을 통해서, 코드 가상화 서버(114)를 호출한다.At
방법(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
선택적 단계(344)가 실행될 경우, 방법(300)의 실행은 원격 서비스(118)로 시프트되며, 이것은 제어기 기반 장치(103P), 코드 가상화 서버(114) 또는 사용자 장치(112)에 대하여 원격인 하나 이상의 서버들에 의해 제공될 수 있다. 단계(362)에서, 방법(300)은 제 2 코드(159)에 따라, 및, 예를 들어 수정된 프로파일(168) 파라미터들에 따라 원격 서비스(118)를 실행한다. 단계(364)에서, 방법(300)은 원격 서비스(118)의 실행으로부터 생성된 데이터를 코드 가상화 서버(114)로 전송한다. 원격 서비스(118)의 실행으로부터 생성되는 데이터는 원격 서비스의 프로비저닝이 성공적이었는지의 여부 또는 원격 서비스(118)의 임의의 출력에 대한 상태 업데이트를 포함할 수 있다.When
방법(300)은 단계(346)에서 코드 가상화 서버(114)로 시프트되며, 이 단계에서 방법(300)은 원격 서비스(118)의 프로비저닝으로부터 생성된 데이터를 제어기 기반 장치(103P)로, 및 선택적으로는 사용자 장치(112)로 전송한다 .The
방법(300)의 실행은 단계(356)에서 제어기 기반 장치(103P)로 시프트되며, 이 단계에서 방법(300)은 제 1 코드(126)를 계속 실행한다. 선택적 단계(344)가 실행되지 않을 경우에는, 방법(300)의 실행은 단계(342) 이후에 단계(356)에서 제어기 기반 장치(103P)로 시프트된다. 또한, 일부 실시예들에서는, 제어기 기반 장치(103P) 상의 제 1 코드(126)의 실행이 단계(354) 이후에 종료되며, 이러한 실시예들에서는, 방법(300)이 단계(356)를 실행하지 않는다.Execution of the
단계(346)에서, 데이터가 사용자 장치(112)로 전송될 경우, 방법(300)의 실행은 단계(322)에서 사용자 장치로 시프트되며, 이 단계에서 방법(300)은 예를 들어 디스플레이(134) 상의 GUI(138)를 통해 데이터를 수신 및 표시한다.At step 346, if the data is to be transmitted to the
유리하게는, 코드와 관련된 모든 다른 프로세스들, 예를 들어 코드의 개발, 테스트, 배포가 예비되며, 즉, 이러한 프로세스들에 대한 수정을 필요로 하지 않게 된다. 따라서, 본 개시된 실시예들에 따라 프로파일을 수정하는 것은 코드 자체를 수정할 필요없이, 또한 개발, 테스트 및 배포의 단계들을 재실행할 필요없이 코드 동작을 수정하는 것을 가능하게 한다.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
단계들(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
본 발명의 일부 실시예들에 따르면, 제 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
방법(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
단계들(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
또한, 설명된 예가 상이한 서비스의 프로비저닝 및 상이한 텍스트의 게시에 관한 동작만 변경하지만, 코드 동작의 광범위한 수정을 제공하도록 코드 및 프로파일들의 조합이 구성될 수도 있다. 코드 및 프로파일 구성에 있어서의 이러한 변형예들은 본 청구항들에 정의된 본 발명의 범위 및 사상을 벗어남 없이 당업자에게 용이하게 고려될 수 있다. 본 명세서에서 논의된 다양한 실시예들에 의해 예시되는 기술들은 각 제어기 기반 장치를 개별적으로 재프로그래밍할 필요성을 제거함으로써, 사용자에 대한 신속하고 용이한 코드 동작 제어 또는 수정을 가능하게 한다. 일부 실시예들에서, 코드 가상화 서버(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,
본 명세서에서 설명되는 방법들은 상이한 실시예들에서 소프트웨어, 하드웨어 또는 이들의 조합으로 구현될 수 있다. 또한, 방법들의 순서는 변경될 수 있으며, 다양한 요소들이 추가, 재정렬, 결합, 생략 또는 수정될 수 있다. 본 명세서에서 설명되는 모든 예들은 비제한적인 방식으로 제공된 것이다. 본 발명의 이익을 받는 당업자에게는 명백한 바와 같이 다양한 수정 및 변경이 이루어질 수 있다. 실시예들에 따른 실현에 대하여 특정 실시예들과 관련하여 기술되었다. 이들 실시예는 한정이 아닌 예시를 위한 것이다. 다수의 변형, 수정, 추가 및 개선이 가능하다. 따라서, 단일의 인스턴스로서 본 명세서에서 설명되는 구성 요소들에 대한 복수의 인스턴스들이 제공될 수도 있다. 다양한 구성 요소들, 동작들 및 데이터 저장소들 간의 경계는 다소 임의적이며, 특정 동작들은 구체적인 예시 구성들과 관련하여 나타낸 것이다. 다른 기능 할당들이 상정될 수 있으며, 아래의 청구범위 내에 포함될 수도 있다. 마지막으로, 예시적인 구성들에서 별개의 구성 요소들로서 제시된 구조 및 기능은 조합된 구조 또는 구성 요소로서 구현될 수도 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 아래의 청구범위에 정의된 실시예들의 범위 내에 포함될 수 있다.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)
코드 가상화 서버(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.
상기 업데이트하는 단계는 상기 수정된 프로파일의 대응하는 파라미터에 따라 상기 프로파일의 상기 적어도 하나의 파라미터를 수정하는 단계를 포함하는, 방법.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.
상기 코드 가상화 서버로부터 상기 사용자 장치로 복수의 제어기 기반 장치들의 리스트를 전송하는 단계 - 상기 리스트는 사용자 장치에서의 디스플레이를 위한 것임 -; 및
상기 사용자 장치로부터, 상기 제어기 기반 장치에 대한 코드의 동작을 수정하기 위한, 상기 복수의 제어기 기반 장치들 중의 제어기 기반 장치의 선택을 수신하는 단계를 더 포함하는, 방법.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.
상기 수정된 프로파일을 사용하여 업데이트되는 프로파일을 검색하는 단계; 및
디스플레이를 위해 그 프로파일을 사용자 장치에게 전송하는 단계를 더 포함하는, 방법.According to claim 3,
Retrieving an updated profile using the modified profile; and
and transmitting the profile to a user device for display.
상기 리스트는 상기 사용자 장치의 그래픽 사용자 인터페이스(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.
상기 수정된 프로파일을 사용하여 업데이트된 후에 상기 프로파일을 저장하는 단계를 더 포함하는, 방법.According to claim 1,
and saving the profile after being updated using the modified profile.
상기 제 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.
상기 적어도 하나의 원격 서비스의 프로비저닝 후에, 상기 적어도 하나의 원격 서비스의 프로비저닝에 관련된 데이터를, 상기 사용자 장치 또는 상기 제어기 기반 장치 중 적어도 하나에 전송하는 단계를 더 포함하는, 방법.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.
상기 프로파일을 포함하는 적어도 하나의 프로파일로 상기 제어기 기반 장치를 상호 참조하는 인덱스를 더 포함하는, 장치.According to claim 9,
and an index that cross-references the controller-based device to at least one profile that includes the profile.
상기 업데이트하는 단계는, 상기 수정된 프로파일의 대응하는 파라미터에 따라 상기 프로파일의 적어도 하나의 파라미터를 수정하는 단계를 포함하는, 장치.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.
상기 방법은,
사용자 장치에서의 디스플레이를 위해 상기 코드 가상화 서버로부터 상기 사용자 장치로 복수의 제어기 기반 장치들의 리스트를 전송하는 단계; 및
상기 사용자 장치로부터, 상기 제어기 기반 장치에 대한 코드의 동작을 수정하기 위한, 상기 복수의 제어기 기반 장치들 중의 제어기 기반 장치의 선택을 수신하는 단계를 더 포함하는, 장치.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.
상기 방법은,
상기 수정된 프로파일을 사용하여 업데이트되는 프로파일을 검색하는 단계; 및
디스플레이를 위해 그 프로파일을 상기 사용자 장치에 전송하는 단계를 더 포함하는, 장치.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.
상기 리스트는 상기 사용자 장치의 그래픽 사용자 인터페이스(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.
상기 방법은, 상기 수정된 프로파일을 사용하여 업데이트된 후에 상기 프로파일을 저장하는 단계를 더 포함하는, 장치.According to claim 9,
The method further comprises saving the profile after being updated using the modified profile.
상기 제 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.
상기 방법은, 상기 적어도 하나의 원격 서비스의 프로비저닝 후에, 상기 적어도 하나의 원격 서비스의 프로비저닝에 관련된 데이터를, 상기 사용자 장치 또는 상기 제어기 기반 장치 중 적어도 하나에 전송하는 단계를 더 포함하는, 장치.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.
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)
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)
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)
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 |
-
2016
- 2016-07-08 CN CN201680040535.9A patent/CN107851009B/en active Active
- 2016-07-08 KR KR1020187002797A patent/KR102567780B1/en active IP Right Grant
- 2016-07-08 JP JP2018500410A patent/JP6626956B2/en active Active
- 2016-07-08 EP EP16822056.4A patent/EP3320426A4/en active Pending
- 2016-07-08 CA CA2989654A patent/CA2989654C/en active Active
- 2016-07-08 WO PCT/US2016/041573 patent/WO2017008036A1/en active Application Filing
Patent Citations (2)
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 |