An embodiment of the present invention will now be detailed with the aid of the accompanying figures. It is to be understood that this embodiment is merely an illustration of one particular implementation of the invention, without in any way foreclosing other embodiments and implementations.
DCPs are normally defined at a low level, e.g. to control “tiny” actions provided by the services of the UPNP device in question. Using the DCPs, it is difficult to implement use case scenarios that would require the CP to automatically perform a sequence of actions without constant and direct user intervention. Even though the CP and device are logical entities, and it is possible to implement a single control point for a number of UPNP device categories, the situation becomes even more difficult when there are multiple device categories (e.g. UPNP AV, UPNP lighting, and the like) involved in the use case.
The present embodiment of the invention may be implemented using a UPNP stack (UDA) as well as a basic control point functionality that can be extended with the features required when adding new device control protocols (DCPs). In other words, the control point implementation has to be such that it can be extended to support several DCPs in order to control several UPNP device categories.
Implementation of this embodiment of the invention requires selection or definition of a language (i.e. grammar and vocabulary) that can represent sequences of UPNP actions dedicated to a set of UPNP devices. An existing XML or SOAP-based language may be suitable for this purpose, although the present invention is of course not limited to a particular language.
In this embodiment of the invention, an editor may be used to create and modify the above-mentioned representations. For usability reasons, it can also be advantageous to add a recorder (e.g. for learn mode), so that the user can manually control the multiple devices and/or device categories so as to perform the desired sequence of actions while the system learns the required sequence (e.g. to prepare the home theatre for watching a movie). Instead of being learned, the sequence of actions may also be pre-installed in the Control Point, or the sequence may be downloadable.
Implementation of the present embodiment of the invention furthermore requires a parser and/or command scheduler that can interpret the above-mentioned representations, and pass actions and arguments to a generic control point layer. The generic control point will be capable of handling a selected set of DCPs, for using the services of certain UPNP device categories.
Additionally, implementation of this embodiment of the invention also may include a user interface (UI) and application logic extensions, in order to take care of tasks such as storing and fetching the above-mentioned representations. The devices should preferably be such that they could be in a sleep mode and be awakened upon request from the control point.
Referring now to the figures,
In any event, a representation is then fetched 130 from the memory, corresponding to the desired complex task. When the representation has been obtained, a control point layer is signalled 135, the control point being a UPNP control point. Finally, the control point directs 140 remote electronic devices to take the sequence of actions needed to perform the complex task (e.g. to create the desired environment).
The sequence of actions needed to perform a complex task could be based on the outcome of the previous action(s). For example, the sharpness of the TV could be based on the previous light dimming, or the sound of the movie could be based on the background noise. The complex task definition could include non-UPnP actions and/or UPNP actions, in order to obtain information about the environment (such as the “light level” that could be obtained from a camera), and conditional statements using that kind of environment. Based on the conditional statements, the high-level task sequence could then have several branches (as in typical programming). In this scenario, the high-level sequence itself could include “input” statements to get external information, and conditional branch statements to control the flow of actions to be suited for various conditions such as environmental conditions.
Accordingly, the sequence of actions may include obtaining environmental information after performing at least one of the actions, in order to determine at least one further action. Similarly, the fetching 130 may fetch the representation at least partly in response to environmental information.
Note that many word processing programs automatically finish typing a word once the user has begun to type it, and this principle can be extended to performing a complex task. Thus, the complex task signal could be provided 115 by selecting a portion of the complex task, or at least partly in response to selecting a portion of the complex task.
Turning now to
The interpreter 250 parses the XML or SOAP presentation of the high-level task scenario in question in order to find the sequence (together with possible timing info) of separate UPNP actions, and to identify the device to which each of the actions should be sent. It is also the task of the interpreter, based on the acknowledgement messages from the devices, to ensure that the sequence is progressing as planned. In an error case, the user should be informed.
The representation can be created in the first place as follows. The user uses the user interface 230 to design the representation by sending various programming commands to a creator module 265, and the creator module then send the representation to the memory 270. Alternatively, the user can use the user interface 230 to directly send directions to each of the electronic devices one-by-one, as the creator module 265 (operating in a learn mode) records what the user is doing. Again, this enables the creator module 265 to construct a representation, which is then sent to the memory 270.
The learn mode works in some ways as the opposite of the interpreter 250. The learn mode, when activated, records the sequence of user-initiated UPnP actions to control the plurality of devices needed to implement the intended high-level use case scenario. When the user indicates that the learn mode has been completed, the sequence of UPNP actions (per device), together with the timing information, is stored in the selected XML or SOAP format to the device's memory.
Of course, the present invention also includes a software product for performing the embodiment of the method described above, and the software can be implemented using a general purpose or specific-use computer system, with standard operating system software conforming to the method described herein. The software is designed to drive the operation of the particular hardware of the system, and will be compatible with other system components and I/O controllers. The computer system of this embodiment includes a CPU processor comprising a single processing unit, multiple processing units capable of parallel operation, or the CPU can be distributed across one or more processing units in one or more locations, e.g., on a client and server, or within components 220 as shown in
It is to be understood that all of the present figures, and the accompanying narrative discussions of corresponding embodiments, do not purport to be completely rigorous treatments of the method, apparatus, system, and software product under consideration. A person skilled in the art will understand that the steps and signals of the present application represent general cause-and-effect relationships that do not exclude intermediate interactions of various types, and will further understand that the various steps and structures described in this application can be implemented by a various steps and structures described in this application can be implemented by a variety of different sequences and configurations, using various combinations of hardware and software which need not be further detailed herein. Likewise, although the claims listed below contain dependent claims having specific dependencies, it is to be understood that the scope of the invention encompasses all possible combinations of claim dependencies.