The present invention relates to invocation of functionalities in devices in a network, and more particularly to automated execution of tasks in electronics devices in a network.
Electronic devices such a consumer electronics (CE) devices utilize a variety of approaches for invocation of their functionalities (e.g., UPnP, Jini). As new devices and technologies become available, new invocation mechanisms are required to operate these devices.
In existing approaches, the logic/code that performs device invocation is introduced during the design of a device or a design of the networked devices. New features such as support for invoking device functionalities are provided by introducing new code.
A shortcoming of such conventional approaches is that different devices provide different sets of application programming interfaces (APIs) for invocation of their functionalities. Even devices of the same class can differ in the way their functionalities are invoked.
Further, in network systems such as home-networking middleware systems, all of the different invocation mechanisms have to be incorporated during the design phase. As a result, the devices that the existing middleware systems can operate are fixed during the design phase, and are not easily expandable. As new devices and technologies become available, new interfaces are needed for invoking device functionalities. Conventionally, the middleware system has to be redesigned to invoke these new devices/technologies. Redesigning the existing middleware system requires writing new code. Further, the middleware system must be recompiled and reinstalled for the new code to take effect in the system. However, in CE devices (e.g., CD player, VCR, TV, DVD player, PVR, STB), unlike personal computers (PCs), installing new programs and updating existing programs is difficult due to scant support for such actions. Even if such support exists, it is not standardized for all CE devices.
Given the heterogeneity of CE devices, introducing a new invocation mechanism conventionally has been very difficult. There is, therefore, a need for a method and system that allows invocation of functionalities for new devices and technologies without requiring redesign or recoding of invocation mechanisms in electronic devices.
The present invention provides a method and system that enables automatic invocation of device functionalities on electronic devices such as CE devices. Device function invocation mechanisms are provided to support heterogeneous function invocations including new function invocations. The invocation mechanisms can be added without the need for recompilation of systems that invoke device functionalities, such as home-networking middleware systems. The present invention further enables the use of scripts that can coordinate the use of multiple devices in accomplishing tasks that require multiple devices.
Further, in a system implementing automated execution of tasks and functions by devices, according to the present invention, logic/code that encapsulates device invocation functionality is represented as interpreted scripts such as ECMA/JavaScript. The system provides an environment where these scripts can be executed, which allows extendibility. New features can be introduced by adding new scripts without the need to recompile supporting modules. The distribution of new features to various devices in a system is made simple since the system has to merely download the script. No reinstallation or recompilation is required. This makes the system modular, and new device invocation mechanisms can essentially be introduced freely. Therefore, new device types and technologies can also be supported. Scripts can also be provided to perform tasks that span multiple devices.
These and other features, aspects and advantages of the present invention will become understood with reference to the following description, appended claims and accompanying figures.
The present invention provides a method and system that enable automatic invocation of device functionalities on CE devices. In one embodiment, scripting languages are utilized for adding invocation mechanisms to support heterogeneous function invocation including new function invocation. The invocation mechanism can be added without the need for recompilation of the systems that invoke the device functionality. The present invention also enables use of scripts for coordinating multiple devices in accomplishing a task.
Example implementations are described hereinbelow in the context of CE devices in a home network environment. However, as those skilled in the art will recognize the present invention is useful in other environments as well such as systems where new functionality is added while the system is running, critical systems that cannot be turned off/restarted, etc.
Home networking middleware systems function to invoke devices in the network using interfaces provided by the devices. Middleware systems aggregate various devices and aggregate the content in some devices for presentation to a user. The middleware systems allow the users to operate networked devices individually or in various combinations.
An essential part of a middleware system is the capability to invoke device functionalities. For example, if the user wishes to see the list of music files on a CD loaded in a networked CD player, the middleware system queries the CD player using an interface provided by the CD player. In another example, a request is made to a networked TV to switch from playing broadcast TV to playing a DVD.
In one implementation, device invocation by middleware includes two levels. One level comprises Device Invocation (DI) which involves executing a single device functionality. An example is querying to find the songs on a CD in a networked CD player. Another level comprises Device Orchestration (DO) which involves coordinating multiple device invocations (device combinations) to achieve a task. An example is using a DVD in a networked DVD player to play a movie on a networked TV, which requires first obtaining the appropriate video stream from the DVD player and then passing the stream to the TV for display.
In one embodiment, the present invention incorporates interpreted scripts, such as ECMA/JavaScript, as extensions for handling both DI and DO, as described below.
Device Invocation Extensions
Each type of device in the network 10 (e.g., devices 20, CE devices 30) provides a fixed set of functionalities. These functionalities can be invoked using an API each device provides. In one example, according to the present invention, in the network 10, each device 30 provides a script file 32 that includes a function (method) for each of the functionalities of that device 30. The script file 32 can also include additional methods that are for internal use or methods that encapsulate alternate mechanisms for invoking device functionalities.
A discovery process is performed by a discovery module 35 (
A device in the network 10 that performs the actual device function invocation is known as the controller and task execution environment (CTEE) 25, according to the present invention.
When a device (e.g., device 20, 30 in
When a new class of devices is introduced into the network, each device provides a script file including methods corresponding to the new functionality. To invoke a new functionality, the system executes the corresponding new method. The methods can internally use various technologies (like UPnP stack, SOAP stack, HTTP, various XML standards etc) for executing the device functionality, as long as the scripting environment supports it. In this manner, the system remains modular and can be easily extended.
Automatic Device Orchestration
Tasks performed by the user in the network 10 often involve collaboration between multiple devices 20, 30. Performing a task that involves multiple devices involves coordination among the devices and the corresponding processes. This is achieved in the network 10 using task-level scripts 22, 32 that contain the methods that correspond to those tasks that involve multiple devices, according to the present invention.
For example, in the network 10, in order to play a movie DVD on a DVD player for display on a TV screen, first a stream/content identifier must be fetched from the DVD player. The identifier is then passed to a method that switches to the appropriate channel on the TV for displaying an input stream. Then, a second method corresponding to “PLAY” is activated on the DVD player. Sequence of steps such as the above can be encapsulated in a script and the task of playing a DVD from a DVD player on a TV can be performed by executing the script in the scripting engine, according to an embodiment of the present invention.
The architecture 100 allows invocation of device functionalities in the network 10, wherein the controller 102 in
The composer module 106 is responsible for transforming user actions into commands to the TEE 104. Commands to the TEE 104 are requests for executing methods in the script files provided by the discovered devices in the network. Scripts are executed by a script engine 110 via a script engine interface 112 in the TEE 104. The script engine 110 utilizes stacks 114 in the TEE 104, wherein the stacks 114 correspond to different technological CE device frameworks such as UPnP, Jini, etc., and provide support for networking protocols like Ethernet, WiFi, Bluetooth, etc.
The device description file 204 contains mapping between standard terminologies and the corresponding methods in the script file 206. For example, the device description states that play( ) is its implementation of AVTransport:Play( ), wherein AVTransport:Play( ) is a standard UPnP service to start the play functionality on a UPnP device. The script file 206 contains methods like play( ) implemented in a scripting language. In one example where AVTransport:Play( ) is mapped to a method x, the controller 102, knowing that AVTransport:Play( ) is for playing, achieves a play operation by executing the method x.
Example operation scenarios according to the present invention are now described. Referring to the example process 300 in
In a second example operation scenario, execution of a task is orchestrated in the network 10 using scripts.
The steps of discovery and processing of device/task description and scripts for the DVD player 402 and the TV 452 are similar to that explained above. Specifically, the DVD player 402 is one of the devices discovered in the network by the controller 102 in
A task description file provides the controller 102 (
Referring to the process 500 in
As such, in a system implementing automated execution of tasks by devices, according to the present invention, logic/code that encapsulates device invocation functionality is represented as interpreted scripts such as ECMA/JavaScript. The system provides an environment where these scripts can be executed, providing extendibility for additional features. New features can be introduced by adding new scripts without the need to recompile supporting modules (e.g., home-networking middleware). The distribution of new features to various devices is made simple since the system has to merely download the script. No reinstallation or recompilation is required. This makes the system modular and new device invocation mechanisms can essentially be introduced freely. Therefore, new device types and technologies can also be supported. Scripts can also be written that can perform tasks that span multiple devices.
As is known to those skilled in the art, the aforementioned example architectures described above, according to the present invention, can be implemented in many ways, such as program instructions for execution by a processor, as logic circuits, as an application specific integrated circuit, as firmware, etc.
The present invention has been described in considerable detail with reference to certain preferred versions thereof; however, other versions are possible. Therefore, the spirit and scope of the appended claims should not be limited to the description of the preferred versions contained herein.
This application claims priority from U.S. Provisional Patent Application Ser. No. 60/784,281, filed Mar. 20, 2006, incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
5544321 | Theimer et al. | Aug 1996 | A |
5555376 | Theimer et al. | Sep 1996 | A |
5611050 | Theimer et al. | Mar 1997 | A |
5812865 | Theimer et al. | Sep 1998 | A |
5910799 | Carpenter et al. | Jun 1999 | A |
6169991 | Tsukahara | Jan 2001 | B1 |
6256019 | Allport | Jul 2001 | B1 |
6389288 | Kuwahara et al. | May 2002 | B1 |
6563430 | Kemink et al. | May 2003 | B1 |
6618764 | Shteyn | Sep 2003 | B1 |
6640218 | Golding et al. | Oct 2003 | B1 |
6748462 | Dubil | Jun 2004 | B2 |
6817028 | Jerding | Nov 2004 | B1 |
6822698 | Clapper | Nov 2004 | B2 |
6823519 | Baird | Nov 2004 | B1 |
6857128 | Borden | Feb 2005 | B1 |
6859197 | Klein | Feb 2005 | B2 |
6954737 | Kalantar et al. | Oct 2005 | B2 |
6957075 | Iverson | Oct 2005 | B1 |
7024256 | Krzyzanowski et al. | Apr 2006 | B2 |
7046263 | Abbott et al. | May 2006 | B1 |
7064675 | Zigmond et al. | Jun 2006 | B2 |
7076255 | Parupudi et al. | Jul 2006 | B2 |
7170422 | Nelson et al. | Jan 2007 | B2 |
7184848 | Krzyzanowski et al. | Feb 2007 | B2 |
7206559 | Meade, II | Apr 2007 | B2 |
7307746 | Inoue | Dec 2007 | B2 |
7336942 | Wang | Feb 2008 | B2 |
7337217 | Wang | Feb 2008 | B2 |
7346663 | Abbott et al. | Mar 2008 | B2 |
7522549 | Karaoguz et al. | Apr 2009 | B2 |
7533079 | Naito et al. | May 2009 | B2 |
7613285 | Ha et al. | Nov 2009 | B2 |
7640546 | Zarenin et al. | Dec 2009 | B2 |
20010032132 | Moran | Oct 2001 | A1 |
20010033554 | Ayyagari et al. | Oct 2001 | A1 |
20010047431 | Eytchison | Nov 2001 | A1 |
20020130834 | Madarasz et al. | Sep 2002 | A1 |
20020138327 | Mello et al. | Sep 2002 | A1 |
20030046401 | Abbott et al. | Mar 2003 | A1 |
20030208569 | O'Brien et al. | Nov 2003 | A1 |
20040230636 | Masuoka et al. | Nov 2004 | A1 |
20050097478 | Killian et al. | May 2005 | A1 |
20050246726 | Labrou et al. | Nov 2005 | A1 |
20060064693 | Messer et al. | Mar 2006 | A1 |
20060064694 | Messer et al. | Mar 2006 | A1 |
20060069602 | Messer et al. | Mar 2006 | A1 |
20060156252 | Sheshagiri et al. | Jul 2006 | A1 |
20060156307 | Kunjithapatham et al. | Jul 2006 | A1 |
20060248233 | Park et al. | Nov 2006 | A1 |
20070266384 | Labrou et al. | Nov 2007 | A1 |
20070279389 | Hoch et al. | Dec 2007 | A1 |
20080270999 | Goring et al. | Oct 2008 | A1 |
Number | Date | Country |
---|---|---|
1168124 | Jan 2002 | EP |
2852173 | Sep 2004 | FR |
20010041425 | May 2001 | KR |
20020022049 | Mar 2002 | KR |
0038039 | Jun 2000 | WO |
0039964 | Jul 2000 | WO |
0169380 | Sep 2001 | WO |
2004081713 | Sep 2004 | WO |
WO2005003967 | Jan 2005 | WO |
Number | Date | Country | |
---|---|---|---|
20070220529 A1 | Sep 2007 | US |
Number | Date | Country | |
---|---|---|---|
60784281 | Mar 2006 | US |