EP3320426A1 - Verfahren und vorrichtung zur modifizierung des verhaltens eines codes für eine steuergerätbasierte vorrichtung - Google Patents

Verfahren und vorrichtung zur modifizierung des verhaltens eines codes für eine steuergerätbasierte vorrichtung

Info

Publication number
EP3320426A1
EP3320426A1 EP16822056.4A EP16822056A EP3320426A1 EP 3320426 A1 EP3320426 A1 EP 3320426A1 EP 16822056 A EP16822056 A EP 16822056A EP 3320426 A1 EP3320426 A1 EP 3320426A1
Authority
EP
European Patent Office
Prior art keywords
code
profile
controller
based device
virtualization server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
EP16822056.4A
Other languages
English (en)
French (fr)
Other versions
EP3320426A4 (de
Inventor
Jean-Baptiste Leonelli
Trisala Chandaria
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ciambella Ltd
Original Assignee
Ciambella Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/063,764 external-priority patent/US10067490B2/en
Priority claimed from PCT/US2016/031217 external-priority patent/WO2016182913A1/en
Application filed by Ciambella Ltd filed Critical Ciambella Ltd
Publication of EP3320426A1 publication Critical patent/EP3320426A1/de
Publication of EP3320426A4 publication Critical patent/EP3320426A4/de
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/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

Definitions

  • Embodiments of the present invention generally relate to a method and apparatus for modifying behavior of code for controller-based devices.
  • controller-based devices e.g. microcontroller or microprocessor based
  • MCU mobile phones
  • SoC Systems on a Chip
  • Controller-based devices include a processor core and a memory, which are programmable for processing input/output data in communication with peripherals.
  • Program memory in the form of NOR FLASH or OTP ROM is also often included on such controller-based devices, as well as a small amount of random access memory (RAM).
  • RAM random access memory
  • Configuring the peripherals for use with controller-based devices is, in general, quite complex. Further, in several applications of controller-based devices, ability to accommodate dynamic inputs and/or generate dynamic output may be desirable. Configuring and programming controller-based devices to accommodate dynamic inputs or outputs requires writing or rewriting the code for all controller-based devices, and is very challenging for average users because rewriting code or reprogramming the controller-based devices needs an understanding of hierarchies of the peripherals and suitable controller-based devices for the peripherals, coding commands, proper calling syntaxes, and other programming parameters. In the absence of accurate code, a program will fail to run or produce errors.
  • rewriting programs every time a modification in input, output, or any other change in code behavior is required can be cumbersome and excessively time consuming, even in simple and small groups of such controller-based devices.
  • reprogramming or rewriting code may be nearly as laborious as programming or writing the code for the first time.
  • Embodiments of the present invention generally relate to a method and apparatus for remotely modifying behavior of code for a controller-based device, substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.
  • Figure 1 is a block diagram of a system 100 for modifying code behavior remotely, in accordance with an embodiment of the present invention
  • Figure 2 is flow diagram of a method for modifying behavior of code for a controller-based device by changing a profile associated with a process as executed by the code virtualization server of Figure 1 , in accordance with an embodiment of the invention
  • Figure 3 is a flow diagram of a method 300 executed by various devices of the apparatus 100 of Figure 1 , for modifying behavior of code for execution with a controller-based device, in accordance with an embodiment of the invention
  • Figure 4 is a flow diagram of a method executed by at least one controller- based device and the code virtualization server of Figure 1 for controlling code behavior for the at least one controller-based device, in accordance with an embodiment of the invention.
  • Embodiments of the present invention relate to method and apparatus for remotely modifying behavior of code for edge and gateway devices (also referred to as "controller-based devices,” or “CB devices” for brevity), and more specifically to modifying profile(s) associated with the code for the controller-based device, without changing the code itself.
  • the code for the controller-based device is executed using the modified profile, thereby modifying the code behavior without requiring re-writing the entire code for the controller-based device.
  • the code deployed on the controller- based device (a "first code”) includes a call for executing a function (a "second code”) on a remote device, e.g. a server.
  • Code deployed on the controller-based device (the first code) and the remote function (the second code) together form the code for, or associated with, the controller-based device.
  • Profiles are associated with and used for implementing such code for the controller-based device(s) (e.g., devices having a controller, such as microcontrollers, microprocessors, SoC, MCU, among others).
  • the profiles are modified and stored on a device remote to controller-based devices, for example, a code virtualization server, which may also be the remote device executing the second code.
  • Embodiments of the present invention using a graphical user interface (GUI) on a user device, enable a user to select a controller-based device remote to the user device, access a profile associated with code for the controller- based device, modify the profile remotely, and initiate execution of the code with the modified profile.
  • GUI graphical user interface
  • Implementing the code with the modified profile achieves desired modified code behavior, without requiring a modification of the code itself. Consequently, behavior of code for execution a controller-based device is controlled or modified remotely without having to reprogram the controller-based device.
  • the terms "code associated with a controller-based device,” “code for a controller-based device” and “code for execution on a controller-based device,” may be used interchangeably unless otherwise apparent from the context.
  • the code for the controller-based device includes the first code, which is executed on the controller-based device, and the second code, which is called by the first code for execution on a device remote to the controller-based device.
  • the second code is executed using a profile, which is therefore associated with the second code.
  • the profile is also associated with the first code, which calls for executing the second code. In this manner, the profile is also associated with the code for execution on the controller-based device.
  • the listed applications describe techniques for developing software automatically for a controller-based device incorporating a controller, mapping the use of hardware such as sensors or actuators to the controller remotely using a graphical user interface, and executing the software, e.g. remotely, to extend the capabilities of such a controller-based device via defined workflows.
  • Each of the applications listed above is incorporated herein by reference in its entirety.
  • These techniques function by placing a snippet of code and/or a library in the memory of the controller-based device, wherein the snippet, when executed, calls a function (or a portion of code) for being executed on a remote device, for example, a code virtualization server, and/or sends (directly, or via the code virtualization server) data to a remote service which is remote to the code virtualization server, and/or further calls a function to be remotely performed on the data by the remote service.
  • a remote device for example, a code virtualization server
  • code behavior can be modified in dynamic environments, for example, where inputs for the code need to be changed, or a different output is required, or both. Further, the embodiments enable modifying the code behavior remotely, for example, by a user using a user computer remote to a device on which the code is executed.
  • FIG. 1 is a block diagram of a system 100 for modifying code behavior remotely, in accordance with one or more embodiments of the present invention.
  • the system 100 comprises multiple controller-based devices 102i ... 102 N (collectively referred to as controller-based devices 102), multiple controller-based devices 103 ! ... 103 P (collectively referred to as controller-based devices 103), gateway 108, Internet 1 10, a user computer 1 12, a code virtualization server 1 14, an optional database 1 15, and a remote service 1 18.
  • the controller-based devices 102 and the gateway 108 form a group of devices (or device group 1 16) connected to the Internet 1 10.
  • the device group 1 16 communicates between controller-based devices 102 and the gateway 108 along communications paths 106i ... 106 N .
  • the communications paths are generally wireless paths, in some embodiments, the paths may be wired.
  • the controller-based devices 102 may be able to communicate amongst themselves along dashed paths 104i ... 104 N .
  • the controller-based devices 103 communicate directly with the Internet 1 10, and amongst themselves along dashed path 109.
  • Each of controller-based devices 102, controller-based devices 103, and the gateway 108 comprises a controller, e.g., a microcontroller or a processor that can be programmed either remotely or through direct connection from the user device 1 12.
  • microcontroller of each of the controller-based devices 102, the controller-based devices 103 and the gateway 108 can be programmed by the code virtualization server 1 14.
  • Each controller-based device includes a device controller (DC), peripheral electronics (PE), and a memory.
  • DC device controller
  • PE peripheral electronics
  • a memory for example, and for the sake of brevity, only the controller-based device 103 P is shown to include the device controller 120, peripheral electronics 122 and a memory 124, although each device (edge devices 102, 103 and the gateway 108) includes a device controller and a memory, and may include peripheral electronics.
  • the device controller 120 includes one or more of a microcontroller (e.g., PIC, AVR type, ARM type, and the like), a system on chip (SoC, e.g., RASPBERRY PI), or a microprocessor as generally known in the art.
  • SoC system on chip
  • the type of controller may differ from device to device, for example, based on the application of such device and the functionality required.
  • 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 electronics 122 comprise components to manage or operate a conventional system, or the peripheral electronics 122 are themselves a conventional system, such as a music system, an alarm, household appliances, electrical devices, electro-mechanical devices, among several others.
  • the memory 124 is any form of digital storage used for storing 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.
  • the memory 124 stores computer readable instructions corresponding to an operating system (not shown), a first code 126, which further includes a call 128 to a second code on a device remote to the controller-based device 103 P , for example, the code virtualization server 1 14.
  • the first code 126 may include an automatically generated controller program (AGCP) code, and other code components (not shown) which include libraries necessary for executing the first code 126 and the call 128.
  • AGCP automatically generated controller program
  • the code components are also capable of ensuring that a controller-based device can communicate to the code virtualization server 1 14 via or without a gateway 108, and similar code components in the gateway 108 are capable of allowing such communications.
  • the user device 1 12 comprises a CPU 130, support circuits 132 and a memory 136.
  • the CPU 130 may be any commercially available processor, microprocessor, microcontroller, and the like.
  • the support circuits 132 comprise well-known circuits that provide functionality to the CPU such as a user interface, clock circuits, network communications, cache, power supplies, I/O circuits, and the like.
  • the I/O circuits include a display 134, for example, various standard or touch-based displays, such as computer monitors as generally known in the art.
  • the user interface comprises a keypad, electronic buttons, speaker, touchscreen, display, or other user interaction mechanism.
  • the memory 136 is any form of digital storage used for storing 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.
  • the memory 136 stores computer readable instructions corresponding to an operating system (not shown), a graphical user interface (GUI) 138, a list 140 of controller-based devices for which modification of code behavior is available using the present embodiments, and a profile store 142 for storing one or more profiles received from the code virtualization server 1 14, or modifications thereto.
  • the user device 1 12 is coupled to the network 1 10 when selecting a controller-based device for modifying code behavior, generating and sending a modified profile for modifying code behavior, and receiving the results of execution of the modified code for display.
  • the GUI 138 retrieves a list of controller-based devices (102, 103, 108) for modifying behavior of code (e.g. first code) installed on the controller-based devices (102, 103, 108) from the code virtualization server 1 14.
  • the GUI 138 also retrieves profile(s) associated with code installed on one or more controller-based devices included in the list 140, and such retrieved profile(s) may be stored in the profile store 142 before and after modification.
  • the GUI 138 is a software resident on the code virtualization server, rendered on the user device via a browser on the user device 1 12.
  • the list 140 and the profile store 142 reside on the code virtualization server 1 14, and is displayed on the user device 1 12 via the browser.
  • the GUI 138 (displayed directly or via the 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 of controller-based devices (CBD-i ... CBD X ) may be selected.
  • a selectable list of profiles 146 retrieved by the GUI 138 from the code virtualization server 1 14, includes one or more profiles (Profilei ... Profile y ) corresponding to the selected controller-based device.
  • Each profile includes a list of parameters 148 (Parameter ... Parameter ⁇ .
  • a user may request the list 140, which may be requested from the code virtualization server 1 14, and once retrieved, be displayed as the list 144, from which the user selects CBDi (or "CBD 145") for remotely modifying the behavior of the code for CBD 145.
  • CBDi or "CBD 145”
  • the GUI 138 retrieves profile(s) associated with the code for CBD 145 (code for being executed on the CBD, and/or code associated therewith) and presents the list of profiles 146 for selection by the user.
  • the user selects Profilei (or "Profile 147"), and the GUI 138 displays the list of parameters 148 contained in the profile 147.
  • the user selects Parameter (or "parameter 149”) for modifying the parameter 149 to modify behavior of code for CBD 145 as desired.
  • the user may modify one or more parameters using the I/O devices, as generally known in the art, and may similarly modify one or more parameters and profiles corresponding one or more controller-based devices included in the list 140.
  • the modified profiles are stored in the profile store 142, for example, using the "SAVE" button 133, and sent to the code virtualization server 1 14, for example, using the "SEND” button 135.
  • the above description only illustrates one possible GUI layout scheme, and does not limit the techniques described herein to such illustration.
  • the GUI 138 also displays results of modified code behavior on the display 134.
  • the GUI 138 includes an integrated development environment (IDE) for creating and/or modifying programs for the controller-based devices, and testing and deploying the programs to the controller-based devices 102, 103 and/or the gateways 108.
  • IDE integrated development environment
  • Alternative embodiments may use algorithms on a custom Application Specific Integrated Circuit (ASIC) to provide the functionality provided by the any combination of the CPU 130, the support circuits 132 and the memory 136.
  • the I/O devices include comprises a keypad, electronic buttons, speaker, touchscreen, display, or other user interaction mechanism.
  • the code virtualization server 1 14 may be a general-purpose computer or other electronic processing device that is programmed to be a specific purpose computer to perform functions related to embodiments of the present invention.
  • the code virtualization server 1 14 comprises a CPU 150, support circuits 152, and a memory 154 containing instructions and algorithms.
  • the CPU 150 may be any commercially available processor, microprocessor, microcontroller, and the like.
  • the support circuits 152 comprise well-known circuits that provide functionality to the CPU such as a user interface, clock circuits, network communications, cache, power supplies, I/O circuits, and the like.
  • Alternative embodiments may use control algorithms on a custom Application Specific Integrated Circuit (ASIC) to provide the functionality provided by the any combination of the CPU 150, the support circuits 152 and the memory 154.
  • the user interface comprises a keypad, electronic buttons, speaker, touchscreen, display, or other user interaction mechanism.
  • the user interface may communicate with the controller-based devices 102, 103 and 108.
  • the memory 154 may be any form of digital storage used for storing 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.
  • the memory stores computer readable instructions corresponding to an interface 156, a profile updater 157, a process library 158, a software development kit (SDK) generator 160, a code generator 162, a profile database 164, an execution engine 166, and a device database 178.
  • SDK software development kit
  • the interface 156 provides functionality for the user device 1 12 to interact with the code virtualization server 1 14.
  • the interface 156 may also include GUI software, for example, corresponding to the GUI 138, which may be sent by the code virtualization server 1 14 to the user device, or otherwise provided to a user for installation on the user device 1 12.
  • the interface 156 includes software to render the GUI 138 through a browser on the user device 1 12.
  • the interface 156 provides connections to the controller-based devices 102, 103, 108 and the remote service 1 18.
  • the profile updater 157 updates the profile 168 using a modified profile, for example, received from the user device 1 12.
  • the profile updater 157 modifies one or more parameter(s) of the profile 168 according to the corresponding parameter(s) of the modified profile.
  • the profile updater 157 further stores the updated profile to, or as, the profile 168.
  • the profile updater 157 is included in the interface 156.
  • the process library 158 comprises code (i.e. a second code 159, also referred to as "choreographs" or “choreos”) that may be executed upon receiving a call from the controller-based device.
  • the second code is executed using a profile updated based on a modified profile received from the user device 1 12.
  • the second code performs certain off controller-based device functions that the device controller of the controller-based device would otherwise not be able to perform.
  • the SDK generator 160 generates an SDK for supporting execution of the first code, the second code or both, for example, by providing necessary code libraries according to the hardware, software platform, communication infrastructure and other code execution parameters.
  • the code generator 162 creates the first code for controller- based device, and the first code includes a call from a controller-based device to the code virtualization server 1 14 for executing the second 159 using a profile associated with the controller-based device.
  • the profile database 164 comprises at least one profile 168 corresponding to at least one process (e.g. the second code 159) of the process library 158.
  • the profile 168 includes process parameters 170 and a list thereof, connection profiles 172 including user data such as user names, identification information and passwords, connection parameters 174, and protocols 176 relating to execution of the second code 159.
  • the profile 168 may also include parameters such as profile name, for example a name of a set of parameters (includes all sub-profiles), hardware profile parameters, such as Hardware type or Processor Type, and for example, chicken Uno, iOS Yun are examples of Hardware type, and AVR, ARM, PIC are examples of Processor type. Examples of profile parameters are illustrated, without limitation, in Table 1 .
  • the profile 168 is set up according to the desired behavior of the second code 159.
  • the profile database 164 includes several profiles (not shown) similar to the profile 168.
  • the device database 178 comprises a list 182 of controller-based devices 102, 103, 108 for which the code behavior may be modified, and an index 184 referencing profiles, for example, the profile 168, with one or more controller-based devices, for example, the controller-based device 103 P .
  • the information included in the profile database 164 and the device database 178 may be distributed in one or more databases on the code virtualization server 1 14, or optionally on devices on the network 1 10, for example, a database 1 15.
  • the profile updater 157 updates the profile 168 using a modified profile received from the user device 1 12 via the GUI 138.
  • Executing the first code 126 on the controller-based device 103 P places the call 128 to execute the second 159 on the code virtualization server 1 14 using the updated profile 168.
  • the execution engine 166 executes the second code 159 using the updated profile 168, resulting in a code behavior according to the updated profile 168.
  • behavior of the code i.e., the first code and the second code
  • the controller-based device 103 P is modified, for example, remotely from the code, without modifying the code itself.
  • Credential Password Password for a webservice like Facebook, ...
  • Setup Input Pin Indicates which Input Pin is selected on the processor Profile (multiple Input Pins can be selected)
  • Input Required Also called variable. Can be any parameter a choreo Profile Input needs to be executed. Can be multiple Input
  • Parameters For example, a choreo sending an email
  • Optional Optional Input parameters are used to add Parameters Profile Input that are not necessary. Multiple Optional Input
  • Parameters are possible. For example, a choreo
  • the execution engine 166 supports all the foregoing functions to facilitate interoperability between the various components of the apparatus 100.
  • the execution engine utilizes each of the functional blocks described above to enable a user to program controller-based devices to control and modify their functionality through a GUI on the user device.
  • the remote service 1 18 includes private or public services provided by third party servers or databases (i.e., devices) that are remote to the user device 1 12, the code virtualization server 1 14, and the controller-based devices (102, 103, 108).
  • the remote service 1 18 includes third party databases and services (e.g., AMAZON, EBAY, FACEBOOK, APPLE PUSH NOTIFICATION servers, text message servers, email servers, and the like), or an internal data source (e.g., DB, noSQL DB, files and the like).
  • the remote service 1 18 is accessible to the code virtualization server 1 14 via the network 1 10 or another network.
  • the remote service 1 18 is provisioned by executing, using the execution engine 166, the second code 159 using the updated profile 168.
  • the network 1 10 comprises the Internet, or a wide area network (WAN) or a combination, and may include one or more such networks. All the components of the apparatus 100 are connected to the network 1 10 or to each other as illustrated in Figure 1 , using known methods and components.
  • WAN wide area network
  • FIG. 2 depicts a flow diagram of a method 200 executed by the code virtualization server 1 14 for modifying behavior of code associated with a controller- based device, remotely, by updating a profile used for execution of the code associated with the controller-based device, in accordance with embodiments of the present invention.
  • the method 200 begins at step 202 and proceeds to step 204.
  • the code virtualization server 1 14 receives, from the user device 1 12, a modified profile corresponding to a profile used for execution of code (e.g. a first code 126 and/or a second code 159) associated with a controller-based device, for example, the controller-based device 103 P .
  • the profile updater 157 receives the modified profile from the GUI 138.
  • the method 200 proceeds to step 206, at which the method 200 updates the profile used for execution of the code with the modified profile.
  • the profile updater 157 modifies at least one parameter of the profile 168 to the same value as a corresponding parameter of the modified profile.
  • the method 200 proceeds to step 208, at which, upon receiving a call from the controller-based device 103 P to execute a second code (e.g. the second code 159) on the code virtualization server 1 14, the method 200 executes the second code using the updated profile.
  • the execution engine 166 executes the second code 159 using the updated profile 168, resulting in a modification of behavior of the code associated with the controller-based device 103 P .
  • the method 200 then proceeds to step 210, at which, the method 200 ends.
  • Figure 3 depicts a flow diagram of a method 300 executed by various devices of the apparatus 100 of Figure 1 , for modifying behavior of code for execution with a controller-based device, by changing a profile associated with the code, in accordance with embodiments of the present invention.
  • the user device 1 12 executes a method 302
  • the code virtualization server 1 14 executes a method 330
  • the controller-based device 130 P executes a method 350
  • the remote service 1 18 executes a method 360
  • the methods 302, 330, 350 and 360 combine to provide the functionality of the method 300.
  • the method 300 displays a list 140 of controller-based devices, for example using the GUI 138 on the display 134, as discussed above.
  • the list may be a list (e.g. the list 182) of controller-based devices 102, 103, 108 sent by the code virtualization server in response to a request by the user device 1 12, or the list may be otherwise provided to the user device 1 12.
  • the user device 1 12 stores the list as the list 140.
  • the method 300 receives a selection of a controller-based device, for example, the controller-based device 130 P , via the GUI 138, which is sent, at step 308, to the code virtualization server 1 14.
  • Execution of the method 300 shifts to the code virtualization server 1 14 at step 332, at which the method 300 retrieves one or more profile(s), for example, the profile 168 and other profiles associated with code for execution on the controller-based device 103 P .
  • the method 300 proceeds to step 334, at which, the profile 168 and other profiles are sent to the user device 1 12 for modification.
  • Execution of the method 300 shifts to the user device at step 310, at which the method 300 displays the received profiles including the profile 168, for example, using the GUI 138.
  • the method 300 receives a selection of a profile, for example, the profile 168 (e.g. as an input entered by a user at the user device 1 12, or an input from another file or database selected by the user) to modify the profile 168.
  • the method 300 displays one or more parameter(s) included in the profile 168 for being modified or updated.
  • the method 300 receives an input to modify a parameter of the profile 168, and at step 318, the method 300 generates a modified profile with the parameter modified at step 316.
  • the method 300 may receive multiple inputs associated with multiple parameters, and generate the modified profile accordingly. According to some embodiments, the method 300 generates the modified profile using the GUI 138. Further, the method 300 optionally stores the modified profile, for example, in the profile store 142. At step 320, the method 300 sends the modified profile to the code virtualization server 1 14.
  • Execution of the method 300 shifts to the code virtualization server 1 14 at step 336, at which the method 300 updates the profile 168 using the modified profile.
  • the method 300 updates the profile 168 using the profile updater 157 by updating each parameter according to a corresponding parameter of the modified profile, or replaces the profile 168 with the modified profile, and at step 338, the method 300 stores the modified profile as the profile 168.
  • steps 304-320 and steps 332-338 achieve updating the profile 168 using a modified profile.
  • discussion of the method 300 is made with reference to a single profile, for example, the profile 168, although the steps of the method 300 can be extended to incorporate multiple profiles, as would occur readily to those skilled in the art. Further steps relate to executing code associated with the controller-based device 103 P using the updated profile to modify the behavior of the code.
  • step 352 the method 300 executes the first code 126 on the controller-based device 103 P .
  • the method 300 proceeds to step 354, at which the first code 126 calls, via the call 128, the code virtualization server 1 14 for executing the second code 159 on the code virtualization server 1 14.
  • Execution of the method 300 shifts to the code virtualization server 1 14 at step 340, at which the method 300 receives the call 128 from the user device 1 12.
  • the code virtualization server 1 14 executes the second code 159 using the profile 168, which has been updated using a modified profile, as described above.
  • Execution of the second code 159 using the updated profile 168 causes a difference in the behavior of the second code 159, and thereby, the behavior of the first code 126.
  • the method 300 includes an optional step 344 to provision the remote service 1 18 as part of executing the second code 159.
  • the code behavior related to provisioning of the remote service 1 18 is modified.
  • the profile modification may result in change of the remote service (FACEBOOK, AMAZON, etc.) used, the account used, text displayed, among several other parameters, as desired.
  • execution of the method 300 shifts to the remote service 1 18, which may be provided by one or more servers remote to the controller-based device 103 P , the code virtualization server 1 14, or the user device 1 12.
  • the method 300 executes remote service 1 18 in accordance with the second code 159, and, for example, according to the modified profile 168 parameters.
  • the method 300 sends data resulting from execution of the remote service 1 18 to the code virtualization server 1 14. Data resulting from the execution of the remote service 1 18 may include a status update on whether the provisioning of the remote service was successful, or any output of the remote service 1 18.
  • Execution of the method 300 shifts to the code virtualization server 1 14 at step 346, at which the method 300 sends the data resulting from provisioning of the remote service 1 18 to the controller-based device 103 P , and optionally, the user device 1 12.
  • Execution of the method 300 shifts to the controller-based device 103 P at step 356, at which the method 300 continues to execute the first code 126. If the optional step 344 is not executed, then the execution of the method 300 shifts to the controller- based device 103 P at step 356 after the step 342. Further, in some embodiments, execution of the first 128 on the controller-based device 103 P terminates after step 354, and in such embodiments, the method 300 does not execute the step 356.
  • step 346 the data is sent to the user device 1 12
  • execution of the method 300 shifts to the user device step 322, at which the method 300 receives and displays the data, for example, via the GUI 138 on the display 134.
  • FIG 4 is a flow diagram of a method 400, executed by at least one controller- based device (102, 103, 108), for example, the controller-based device 103 P and the code virtualization server 1 14, for controlling code behavior for the at least one controller-based device of Figure 1 in accordance with an embodiment of the invention.
  • the method 400 starts at step 402 on the controller-based device, and proceeds to step 404 at which the method 400 begins executing code (e.g. the first code 126) on the controller-based device 103 P .
  • the first code 126 includes predefined program code or process associated with the controller-based device 103 P .
  • the first code 126 includes one or more call(s) 128 to a function provided by the code virtualization server 1 14.
  • the call is made from the controller-based device 103 P to the code virtualization server 1 14, and the method 400 switches to the code virtualization server 1 14.
  • the method 400 proceeds to step 408, at which the method 400 executes code corresponding to the called function (e.g. the second code 159) on the code virtualization server 1 14, using a first profile (or PROFILE 1 ) stored on the code virtualization server 1 14.
  • the method 400 Upon executing the step 408 on the code virtualization server 1 14, at step 410, the method 400 returns execution of the code to the controller-based device 103 P .
  • the method 400 completes the execution of the first code 126 on the controller-based device 103 P .
  • the first code 126 execution may complete at the step 410 on the code virtualization server 1 14, and no additional execution of code may take place at step 412.
  • the method 400 proceeds to step 414, where the method 400 ends.
  • Steps 402-414 describe execution of the code for the controller-based device 103 P using PROFILE 1 which is stored as the profile 168.
  • the controller-based device 103 P is a temperature sensor configured to turn on heating when temperature drops below a predetermined value.
  • the code is executed using PROFILE 1 .
  • the first code 128 is configured to turn on the heating, and call (via the call 128) the code virtualization server 1 14 for provisioning a remote service 1 18 (e.g. posting a predefined text on FACEBOOK).
  • the code virtualization server 1 14 Upon receiving the call 128, the code virtualization server 1 14, executes the second 159 using the PROFILE 1 , which include a user's login credentials and predefined text. Executing the second 159 results in generating a FACEBOOK post from the user's account stating, "Heating has been turned on.” This outcome is a first behavior of the code (the first code 128 and the second code 159) for the controller-based device 103 P .
  • the first profile (PROFILE 1 ) is modified or updated by the user to a second profile (PROFILE 2), for example, using the method 200 described with respect to Figure 2, or steps 304-320 and steps 332- 338 described in the method 300 of Figure 3.
  • the profile 168 is updated to PROFILE 2.
  • the method 400 is then executed using the second profile, PROFILE 2, in a similar manner as steps 402-414, and for example, as described below with respect to steps 422-434.
  • the method 400 starts at step 422 on the controller-based device 103 P , and proceeds to step 424 at which the method 400 begins executing code (e.g. the first code 126) on the controller-based device 103 P .
  • the first code 126 includes predefined program code or process associated with the controller-based device 103 P .
  • the first code 126 includes one or more call(s) 128 to a function provided by the code virtualization server 1 14.
  • the call 128 is made from the controller-based device 103 P to the code virtualization server 1 14, and the method 400 switches to the code virtualization server 1 14.
  • the method 400 proceeds to step 428, at which the method 400 executes code corresponding to the called function (e.g.
  • the method 400 Upon executing the step 428 on the code virtualization server 1 14, at step 430, the method 400 returns execution to the controller-based device 103 P . At step 432, the method 400 completes the execution of the first code 126 on the controller-based device 103 P . In some embodiments, the first code 126 execution may complete at the step 430 on the code virtualization server 1 14, and no additional execution of code may take place at step 432. The method 400 proceeds to step 434, where the method 400 ends.
  • Steps 422-434 describe execution of the code for the controller-based device 103 P using PROFILE 2, which is stored as the profile 168 after modification of the profile 168 using the techniques described above.
  • the controller-based device 103 P is a temperature sensor configured to turn on heating when temperature drops below a predetermined value.
  • the code is now executed using PROFILE 2.
  • the first code 128 is configured to turn on the heating, and call (via the call 128) the code virtualization server 1 14 for provisioning a remote service 1 18 (e.g., posting a different text on TWITTER).
  • the code virtualization server 1 14 Upon receiving the call 128, the code virtualization server 1 14, executes the second 159 using the PROFILE 2, which include a user's login credentials for TWITTER and predefined text. Executing the second 159 results in generating a TWITTER post from the user's account stating, "It is really cold out here! This outcome is a second behavior of the code (the first code 128 and the second code 159) for the controller-based device 103 P . In this manner, the described embodiments enable modifying behavior of the code for the controller-based device 103 P , without having to rewrite or modify the code itself.
  • the code virtualization server 1 14 is implemented as a service (not shown) that provides access to code generation, deployment, remote reprogramming through a web interface by default, or any GUI (e.g., a smartphone app or a computer application). While the embodiments are described with respect to Internet of things (loT) devices, those skilled in the art will readily appreciate that the techniques exemplified by the disclosed embodiments are applicable to several other programming environments.
  • GUI Internet of things
EP16822056.4A 2015-07-09 2016-07-08 Verfahren und vorrichtung zur modifizierung des verhaltens eines codes für eine steuergerätbasierte vorrichtung Pending EP3320426A4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562190408P 2015-07-09 2015-07-09
US201562270107P 2015-12-21 2015-12-21
US15/063,764 US10067490B2 (en) 2015-05-08 2016-03-08 Method and apparatus for modifying behavior of code for a controller-based device
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
EP3320426A1 true EP3320426A1 (de) 2018-05-16
EP3320426A4 EP3320426A4 (de) 2019-04-24

Family

ID=57686194

Family Applications (1)

Application Number Title Priority Date Filing Date
EP16822056.4A Pending EP3320426A4 (de) 2015-07-09 2016-07-08 Verfahren und vorrichtung zur modifizierung des verhaltens eines codes für eine steuergerätbasierte vorrichtung

Country Status (6)

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

Families Citing this family (1)

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

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09160847A (ja) * 1995-12-08 1997-06-20 Hitachi Ltd クライアント・サーバ型分散処理システム
JP2001325237A (ja) * 2000-05-16 2001-11-22 Hitachi Ltd 分散処理システムにおけるプログラム実行方法および装置
JP4263387B2 (ja) * 2000-08-25 2009-05-13 四国電力株式会社 リモートコントロールサーバ、センターサーバおよびそれらを備えたシステム
US20020194608A1 (en) * 2001-04-26 2002-12-19 Goldhor Richard S. Method and apparatus for a playback enhancement system implementing a "Say Again" feature
JP2003052093A (ja) * 2001-08-08 2003-02-21 Matsushita Electric Ind Co Ltd 機器の遠隔制御装置および機器の遠隔制御システム
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
US20090198770A1 (en) * 2008-02-04 2009-08-06 Universal Scientific Industrial Co., Ltd. System and method of updating codes in controller
AU2013247347B2 (en) * 2012-04-12 2018-02-15 Ivanti, Inc. Configuration of third party applications in a sandboxed environment
KR102220127B1 (ko) * 2013-06-18 2021-03-02 시암벨라 리미티드 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치
JP2015121887A (ja) * 2013-12-20 2015-07-02 キヤノン株式会社 情報処理装置及びその制御方法、およびプログラム

Also Published As

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

Similar Documents

Publication Publication Date Title
US10067490B2 (en) Method and apparatus for modifying behavior of code for a controller-based device
EP3295649B1 (de) Verfahren und vorrichtung zur automatischen softwareentwicklung für eine gruppe von steuergerätebasierte vorrichtungen
EP3596593B1 (de) Verfahren und vorrichtung zur automatischen erzeugung und integration von codes in entwicklungsumgebungen
EP3394743B1 (de) Verfahren und vorrichtung zur erzeugung und verwaltung von steuergerätebasierten remote-lösungen
US10798780B2 (en) Method and apparatus for creating and managing controller based remote solutions
US20170063611A1 (en) User Configuration Mechanism for Internet-of-Things (IOT)
US10338904B2 (en) Specialized app development and deployment system and method
CN107003836B (zh) 用于所连接的消费者设备的灵活设备模板
US11269308B2 (en) Method and apparatus for creating and managing smart programmable logic controller (PLC) solutions
CA2989654C (en) Method and apparatus for modifying behavior of code for a controller-based device
EP3501160B1 (de) Verfahren und vorrichtung zur erzeugung und verwaltung von steuergerätebasierten remote-lösungen
US20150201003A1 (en) System and method for utilizing script logic in connection with an installed enterprise service application
JP5956679B2 (ja) 制御デバイス
WO2011121143A1 (es) Sistema y método de configuración dinámica y remota de dispositivos móviles

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20171213

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
A4 Supplementary search report drawn up and despatched

Effective date: 20190325

RIC1 Information provided on ipc code assigned before grant

Ipc: G06F 9/54 20060101ALI20190319BHEP

Ipc: G06F 8/65 20180101AFI20190319BHEP

Ipc: G06F 9/445 20180101ALI20190319BHEP

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20200323

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS