METHOD AND SYSTEM FOR PROVIDING AN APPLIANCE USER INTERFACE

Abstract: A method and system for providing user interfaces for controlling various media appliances through a master device. The user interface system allows media appliances to provide executable code that implements their user interfaces to a master device that can execute the user interface code. To provide an appliance-specific user interface, the master device first identifies the appliances that are connected to the master device, for example, via a bus. The master device then displays an indication of each of the identified appliances to a user. The user can then select one of the displayed appliances that is to be controlled or monitored. In response, the master device retrieves from the selected appliance the user interface code that may be customized to the selected appliance. The master device then stores the retrieved user interface code in memory. The master device can then execute the stored user interface code to control and monitor the selected appliance.

Description: METHOD AND SYSTEM FOR PROVIDING AN APPLIANCE USER INTERFACE CROSS-REFERENCE TO RELATED APPLICATIONS This application is related to U.S. Patent Application No. 60/085,021 filed on May 11, 1998, which is hereby incorporated by reference. TECHNICAL FIELD The described technology relates to providing a user interface and, more particularly, to providing a user interface for a media appliance. BACKGROUND Home entertainment systems are increasingly being implemented as complex interconnections of special-purpose computer systems, which are generally referred to as "home entertainment devices." These home entertainment devices may be video and audio receivers, DVD players, CD-ROM players, sound mixers, amplifiers, speaker systems, display devices, and so on. Many different companies develop (e.g., design and manufacture) such home entertainment devices. Each company may develop its devices using proprietary interconnect technology. As a result, the input and output of devices developed by different companies may not be compatible. For example, a DVD player developed by one company may output data that is incompatible with a speaker subsystem developed by another company. Thus, it may be impractical to have a home entertainment system that includes devices that are developed by different companies. Various standards, such as the IEEE 1394 "Standard for High Performance Serial Bus," have been developed to facilitate the development of compatible home entertainment devices. Any devices that conform to such standards can be interconnected to a home entertainment system. In addition, these standards define a common bus interconnection mechanism by which any devices connected to the bus can communicate with any other device connected to the bus. In this way, a standard bus cabling can be used within a house for interconnecting these home entertainment devices and other types of devices such as coffeemaker, microwave oven, home security system, and so on. Such devices are referred to as "appliances," and home entertainment devices are referred to as "media appliances." The appliances may be considered to be a single function device with computer capabilities. One area in which the standards are deficient is in providing user interfaces for the various appliances and, in particular, media appliances. Two primary mechanisms are currently used for displaying user interfaces for media appliances. Figure 1 is a block diagram illustrating the providing of user interfaces for "classes" of media appliances. A class of media appliances refers to a generic type of media appliance. For example, a class of media appliances may include all VCRs, and another class may include all CD-ROM players. The appliances in a class share many characteristics in common. For example, all VCRs may have a rewind function and a play function. The appliances 101 and bus controller 103 are connected via bus 102. Each appliance has a class associated with it that can be provided to the bus controller. The bus controller includes a manager component and a driver component 106 for each class. The bus controller is typically provided by its manufacturer with a standard set of driver components. The driver components are adapted to interact with the appliances in the corresponding class and may display a user interface on I/O device 104. The interaction with the appliances may include the retrieval of status information and the setting of parameters (e.g., volume) of the appliance. A bus controller that uses such generic drivers may have several disadvantages. First, the bus controller cannot control appliances in classes for which it has no driver. Second, the bus controller needs to be loaded with all possible appliance drivers so that it can control as many appliances as possible. The adding of such drivers to the bus controller can increase the development cost of the bus controller and the hardware cost of the bus controller itself. Figure 2 is a block diagram illustrating the providing of user interfaces based on appliance-provided controls. Each appliance 201 provides various objects, also known as controls, through which the bus controller 203 can access the functionality of the appliances via bus 202. The controls can be implemented using various well-known object models such as the Distributed Component Object Model ("DCOM") of Microsoft Corporation or the Common Object Request Broker Architecture ("CORBA") of the Object Management Group. The manager 205 can ask each appliance to the enumerate its controls. When a user selects to control an appliance, the manager retrieves an enumeration of the controls for that appliance and generates a user interface appropriate to those controls. The bus controller may have a user interface database 206 that contains a mapping from various types of controls to the user interface for that control. The manager then combines the user interfaces for the controls to generate a user interface window for the selected appliance and displays the user interface window on I/O device 204. Bus controllers that use such a mechanism for the generating user interfaces have several disadvantages. First, the cost of developing the bus controller is increased because development of a manager to generate such user interfaces for appliances can be expensive. Second, the appliances themselves have no control over their user interfaces. SUMMARY A method and system for providing user interfaces for controlling various media appliances through a master device is provided. The user interface system allows media appliances to provide executable code that implements their user interfaces to a master device that can execute the user interface code. To provide an appliance-specific user interface, the master device first identifies the appliances that are connected to the master device, for example, via a bus. The master device then displays an indication of each of the identified appliances to a user. The user can then select one of the displayed appliances that is to be controlled or monitored. In response, the master device retrieves from the selected appliance the user interface code that may be customized to the selected appliance. The master device then stores the retrieved user interface code in memory. The master device can then execute the stored user interface code to control and monitor the selected appliance. BRIEF DESCRIPTION OF THE DRAWINGS Figure 1 is a block diagram illustrating the providing of user interfaces for "classes" of media appliances. Figure 2 is a block diagram illustrating the providing of user interfaces based on appliance-provided controls. Figure 3 is a block diagram illustrating the user interface system. Figure 4 is a flow diagram of an example implementation of the user interface master component. Figure 5 is a flow diagram of an example implementation of the main entry point of the user interface code. Figure 6 is a flow diagram of an example implementation of an event handler for handling the setting of a volume event. Figure 7 is a flow diagram of the example implementation of an event handler to process a done event. Figure 8 illustrates a user interface for controlling various mixers that may be connected to the master device. DETAILED DESCRIPTION A method and system for providing user interfaces for controlling various media appliances through a master device is provided. The user interface system allows media appliances to provide executable code that implements their user interfaces to a master device that can execute the user interface code. Because each media appliance can provide its own user interface code, many of the disadvantages of the prior user interface mechanisms are avoided. For example, each media appliance can provide a custom user interface, and the master device can support new custom user interfaces as they are developed and provided by the media appliances. To provide an appliance-specific user interface, the master device first identifies the appliances that are connected to the master device, for example, via a bus. The master device then displays an indication of each of the identified appliances to a user. The user can then select one of the displayed appliances that is to be controlled or monitored. In response, the master device retrieves from the selected appliance the user interface code that may be customized to the selected appliance. The master device then stores the retrieved user interface code in memory. The master device can then execute the stored user interface code to control and monitor the selected appliance. Figure 3 is a block diagram illustrating the user interface system. The user interface system comprises appliances 301 that are connected to master device 303 via a bus 302. Each appliance includes user interface code 304 and service code 305. The user interface code copies instructions that can be executed by the master device to provide a user interface for the appliance and to control and monitor the appliance. The user interface code may also include data structures containing information relating to the user interface. The user interface code may be implemented as a JAVA applet that can be executed by a JAVA virtual machine at the master device, as a user interface scripting language, as byte code can be interpreted by the master device, as object code that is executable by the central processing unit of the master device, or as any other type of instructions that can be performed by the master device. The master device includes a user interface master component 307, the user interface application programming interface ("APF) 308, and a bus application programming interface 309. The master device may be a conventional computer that includes a central processing unit, a memory, and various I/O devices such as a display, a keyboard, and a bus controller. The programs implementing the processing of the master device and the appliances may be stored on computer-readable medium such as RAM, ROM, or disk. The user interface master component controls the identifying of the appliances that are connected to the bus and the selection of an appliance to be controlled. In one embodiment, the user interface master component displays on I/O device 306 a list of each of the appliances that are currently connected to the bus. When a user selects one of the displayed appliances, the user interface master component requests the selected appliance to provide its user interface code. In response, the appliance downloads its user interface code to the master device. The user interface master component then effects the execution of the user interface code. The user interface code may invoke the user interface API, which provides a set of functions for controlling the user interface. In one embodiment, the user interface is a graphical user interface. The user interface code may also invoke functions of the bus API to access the bus. The user interface component may access the bus to set various parameters of the appliance and to retrieve the current state of the appliance. The service code of the appliances provides the interface for setting and retrieving of parameters. Figure 4 is a flow diagram of an example implementation of the user interface master component. In this example implementation, the user interface master component identifies the appliances and then retrieves and executes the user interface code for an appliance selected by a user. In step 401, the user interface master component identifies the appliances that are available on the bus. The user interface master component may identify the appliances by sending out an identification request and receiving responses or by receiving unsolicited identifications from the appliances. In steps 402-405, the user interface master component loops retrieving the selection of an appliance and executing the user interface code from that appliance. In step 402, the user interface master component displays the identification of the appliances on a display device. In step 403, the user interface master component receives a selection of an appliance from a user. In step 404, the user interface master component retrieves the user interface code for the selected appliance. In step 405, the user interface master component executes the retrieved user interface code. The user interface master component then loops to step 402 to receive a selection of another appliance to control. The user interface master component may cache the user interface code so that when an appliance is next retrieved, the user interface master component can execute the code without retrieving the user interface code from the appliance. The user interface component may also retrieve and cache the user interface code from the appliance when it is first powered on or when an appliance is connected to the bus. Figures 5-7 are flow diagrams of example implementations of user interface code that may be provided by an appliance. Figure 5 is a flow diagram of the main entry point of the user interface code. This user interface code invokes various functions of APIs provided by the master device. This user interface code uses an event-based windowing system to process a user selection of a displayed window. In step 501, the code identifies the bus address of its appliance by invoking a get appliance function provided by the master device. In step 502, the code invokes a get status function of a bus API passing the address of the appliance to retrieve the current state of the appliance. The state of the appliance may include, for example, an indication of the current volume setting of the appliance, an indication of what CD is currently inserted in a CD player, an indication of the currently selected channel of a television, and so on. In step 503, the code generates a user interface window for the appliance based on the retrieved state. The user interface window may include visual controls, such as a slider for controlling the volume of the appliance or a button for controlling the ejection of a CD from a CD player. In step 504, the code registers various routines for handling user interface events generated by the user. For example, a user interface event may be the selecting of a displayed button. In step 506, the code displays the generated user interface window. The user interface window may contain a button that when selected returns control to the user interface master component. Figure 6 is a flow diagram illustrating an implementation of an event handler for handling the setting of a volume event. This handler is passed a volume level selected by a user. In step 601, the handler formats a packet to be transmitted on the bus that contains the volume setting for the appliance in a format that can be recognized by the appliance. In step 602, the handler invokes a function of an API provided by the master device to retrieve the address of the appliance. In step 603, the handler invokes a function of the bus API to send the packet to the address of the appliance. The handler then returns. When the appliance receives the packet, the appliance decode the packet and sets the volume accordingly. Figure 7 is a flow diagram of the example implementation of an event handler to process a done event. When a user selects a button on the user interface window that indicates the user has completed control of the selected appliance, then this event handler is invoked to handle the event. In step 701, the handler performs any necessary cleanup and then returns to the user interface master component so that a user can select to control another appliance. In one embodiment, the master device can provide a graphical user interface API for displaying a traditional graphical user interface that includes windows, buttons, scroll bars, and so on. However, the user interface need not be graphical in nature. For example, the user interface may be a set of physical controls (e.g., switches) that can be adjusted by the user. In one embodiment, the physical controls may have updatable displays which the user interface code of the appliance can set to identify the function of each physical control. The user interface code may also provides the behavior associated with the adjustment of the physical controls, that is, notify the appliance of the new setting of the physical control. Figure 8 illustrates a user interface for controlling various mixers that may be connected to the master device. The user interface 800 may contain various physical controls that may be manipulated by a user. The user interface component may set the titles 802 for each control to indicate the function or behavior associated with that slider. One skilled in the art would appreciate that the physical controls may also be implemented using conventional sliders in a graphical user interface environment. Based upon the above description, it will be appreciated that although specific embodiment of the technology have been described for purposes of illustration, various modifications may be made to these embodiments without deviating from the spirit and scope of the invention. For example, the master device may include default user interface code. The master device may also be compatible with prior user interface mechanisms. That is, the master device may also support providing drivers for classes of appliances and support providing user interfaces that use the controls of appliances. Each appliance may indicate it the type of user interface mechanism. The master device may also receive user interface code from external devices that is to supersede the user interface code provided by certain appliances. The master device and the appliance may also be considered to interact in a master/slave relationship. One skilled in the art will appreciate that a bus may have multiple "master" devices. For example, in the home environment, master devices may be located in several different living quarters (e.g., living room, bedroom, and kitchen). Each of these master devices can be used to control and monitor any of the appliances of the bus and can retrieve and execute the user interface code provided by the appliances. Accordingly, this invention is not limited except as by the appended claims.

Claims: CLAIMS 1. A method in a master device for providing a user interface for controlling a plurality of appliances connected to the master device, the method comprising: identifying the appliances that are connected to the master device; displaying an indication of each of the identified appliances; in response to a user selecting an appliance from a displayed indication, retrieving from the selected appliance user interface code and storing the retrieved user interface code in memory of the master device; and executing the stored user interface code at the master device to control and monitor the selected appliance. 2. The method of claim 1 wherein the user interface code is a Java applet. 3. The method of claim 1 wherein the user interface code is a user interface script. 4. The method of claim 1 wherein the user interface code is object code that can be directly executed by a central processing unit of the master device. 5. The method of claim 1 wherein the executing user interface code invokes functions provided by the master device to access the selected appliance. 6. The method of claim 1 wherein the executing of user interface code invokes functions provided by the master device to control the user interface. 7. The method of claim 1 wherein the user interface is a graphical user interface. 8. A device for displaying user interfaces for controlling a plurality of appliances, comprising: a selection component for selecting an appliance; a retrieving component that retrieves from the selected appliance user interface code for displaying a user interface for controlling the appliance; and an execution component that executes the retrieved user interface code wherein each appliance can provide its own user interface code. 9. The device of claim 8 wherein when user interface code is not retrieved from an appliance, the execution component executes default user interface code for the selected appliance 10. The device of claim 8 including an override component that determines whether the selected appliance has overriding user interface code available to the device and wherein the execution component executes that overriding user interface code. 11. The device of claim 8 including a bus interface component that provides functions to be invoked by the user interface code to access a bus to which the device and the appliances are connected. 12. The device of claim 8 including a user interface component that provides functions to be invoked by the user interface code to control a user interface of the device. 13. The device of claim 8 including an output device and an input device that is controlled by the user interface code. 14. An appliance comprising: a memory containing user interface code for providing a user interface for controlling the appliance; and a transmitting component that transmits the user interface code from the memory to a device for execution by the device. 15. The appliance of claim 14 wherein the transmitting component transmits in response to receiving a request from the device. 16. The appliance of claim 14 including a service component for receiving service requests from the user interface code as it executes at the device. 17. The appliance of claim 16 wherein the service request requests to control the appliance. 18. The appliance of claim 16 wherein the service request requests status information from the appliance.

Inventors: BARTLETT GREGORY J, KARR BRIAN D, MOSES ROBERT W, BARTLETT, GREGORY, J., KARR, BRIAN, D., MOSES, ROBERT, W.
Applicants: BARTLETT GREGORY J, DIGITAL HARMONY TECHNOLOGIES L, KARR BRIAN D, MOSES ROBERT W, BARTLETT, GREGORY, J., DIGITAL HARMONY TECHNOLOGIES, L.L.C., KARR, BRIAN, D., MOSES, ROBERT, W.
Application year: 1999
Main classification: G06F13
IPC codes: G06F9, G06F13, H04J3, H04L7, H04L12, H04N5, H04N7