As the market for consumer electronics (CE) expands, more and more sophisticated CE devices become available. Today's CE device manufacturers are facing demands for more advanced features which can only be satisfied with high technology solutions. The use of processing power in many CE devices facilitates providing more technically advanced features in more compact and less expensive CE devices, such as various hand-held devices.
Also, network connectivity is becoming a new trend in more CE devices. For example, new models of television sets manufactured by various vendors are equipped with Internet capabilities for content delivery without the need for a personal computer (PC). Such Internet connectivity features may drastically improve the functionality of CE devices that utilize this feature.
Some embodiments of the disclosed technology are illustrated by way of example and not limitation in the figures of the accompanying drawings in which:
An example dynamically configurable cluster of apparatuses and methods for dynamically configuring the apparatuses are described. In the following description, for the purpose of explanation, numerous examples having example-specific details are set forth to provide an understanding of example embodiments. It will be evident, however, to one of ordinary skill in the art that the present examples may be practiced without these example-specific details, and/or with different combinations of the details than are given here.
Some example embodiments including a dynamically configurable cluster of apparatuses and methods and systems for dynamically configuring the apparatuses are provided. At a server computer, a list of identified resources available to the clustered apparatuses may be received from an apparatus of the cluster, also called a configurable chameleon device. The server computer may provide to the apparatus a list of functionalities, including functionalities performable by one or more of the clustered apparatuses, based on the list of identified resources. A selection from the list of functionalities may be received from the apparatus. The server computer may provide one or more of the clustered apparatuses with additional resources, based on the selection.
Example methods may include dynamically identifying the list of resources initially such as, for example, after the apparatus is turned on for the first time, and/or upon detecting a change in the resources available to the apparatus such as, for example, when an external resource such as a universal serial bus (USB) is coupled to the apparatus. The resources initially available to the apparatus may include sufficient capabilities to perform an initial bringing up of an operating system and providing a network connection to a server computer. In implementations, the network includes the Internet or another network. Generally, the apparatus at this point is blank in terms of any functionality or feature that is utilized by a user. However, the apparatus is able to redefine itself, or be defined, by configuring its resources to perform various functionalities as discussed in more detail below.
Following the identification of resources, the apparatus 140 may communicate with the server 120. Generally, the server 120 is maintained and/or operated by a service provider such as, for example, a service provider implemented by Rovi™ Corporation of Santa Clara, Calif. After communicating with the server 120, the apparatus 140 may identify itself, for instance, via a registration number, etc., to the server 120 and after some authentication processes, provide the server 120 with a list of identified resources that are available to the apparatus 140. The resources may include hardware and/or software resources.
The server 120 may analyze the list of resources received from the apparatus 120 and, based on the potential capabilities of the resources, provide a list of functionalities to the apparatus 140. In an example embodiment, the server 120 is able to detect the resources available to the apparatus 140 upon coupling of the apparatus 140 to the server 120. The list of resources received from the apparatus 120 may also be added to resources available to the cluster 710 of
The user 150 may select one or more desired configuration and/or feature options. For example, the user 150 may want to use the apparatus 140 as a PVR. In this case, after acquiring the additional resources, the apparatus 140 may redefine itself by configuring its resources to perform as a PVR. The apparatus 140 may perform the functionality of a PVR and at the same time offer features such as, for example, a number and type of controls or displays, etc., that are selected by the user 150.
Some currently available consumer electronic devices may be able to download updated files from a server via the Internet and perform the functionalities that are predefined at time of manufacturing. The capabilities discussed above with respect to the apparatus 140 being able to dynamically redefine or configure itself to perform one or more desired functionalities and/or features selected by the user 150 may not be present in many existing devices or instruments. For example, as the hardware and software configuration of the apparatus 140 changes, such as, for example, by adding new hardware or downloading new features, the list of available features offered to the user 150 is dynamically adjusted. More details regarding various resources available to the apparatus 140 and additional resources provided by the server 120 are discussed below.
After reporting the existing resources 220 to the server 120 of
The auxiliary resources 370 are coupled to the apparatus 140 to provide additional functionalities and/or features to the apparatus 140. In some cases, an auxiliary resource 370 is coupled to and internal within the apparatus 140. For example, the auxiliary resources 370 may include certain internal and/or external interface cards coupled to the apparatus 140. Technical specifications of the auxiliary resources 370 may be reported to the server 120. The server 120, based on the added capabilities of the auxiliary resources 370, provides the apparatus 140 with executable programs, such as drivers and/or libraries (such as dynamic link libraries (DLL)) to enable the apparatus 140 to perform new functionalities.
The identification module 410 preferably identifies the list of existing resources 220 of
The identification module 410 is further preferably able to detect technical specifications of the existing resources 220 of
The interface module 420 may obtain the list of functionalities from the database 460 and provide an interface to the user interface device 430. The interface may include functionality and/or feature options for presentation to the user 150 of
The other interface devices 480 may include audio and/or video inputs, outputs, USB interfaces, network interfaces, Ethernet interfaces, PSTN jacks, HDMI, antennas, wireless network interfaces, and so forth. Once identified to the server 120, each of the other interface devices 480 may become part of a solution to provide certain functionality to the apparatus 140.
Once the additional resources 240 of
Many CE devices use operations that may allow hackers to break into the device, identify executables and libraries, and reverse engineer the device. An example embodiment may protect the apparatus 140 from such hacking activities by using the database 460 to store configurations, executables and libraries. In another example embodiment, the database 460 may further protect the apparatus 140 by encrypting stored features. Some embodiments employ a structured query language (SQL) database.
Once the apparatus 140 is configured, the user 150 may add new hardware that implements, for example, one or more of the auxiliary resources 370 of
In an example embodiment, the user 150 may desire to have a certain added functionality within the apparatus 140, but is not sure how the apparatus 140 is able to perform that functionality. The user 150 communicates the desired functionality request to the user interface device 430. The user interface device may pass the desired functionality request to the network interface device 470, which may in turn communicate the desired functionality request to the server 120.
The server 120 may analyze the desired functionality request and provide the network interface device 470 with a list of one or more external devices that is coupled to the apparatus 140 to perform the desired functionality. The user interface device 430 may receive the list of one or more external devices and communicate the list to the user 150. Once the one or more external devices are coupled to the apparatus 140, the configuration module 440 configures the apparatus 140 to perform the desired functionality.
In some embodiments, the server 120 communicates warnings to the user 150 with respect to possible performance issues when the apparatus 140 lacks sufficient capabilities or marginally meets the requirements to support a requested functionality. For example, the user 150 may request PVR functionality where the apparatus 140 has a flash memory and/or removable memory stick as the only available memory. The server 120 may warn the user 150 of potential poor user experience, based on historical data and/or customer feedback stored in a database.
At operation 520, in response to the identification, the network interface device 470 may communicate the list of existing resources 220 to the server 120 over the network 130 of
In some embodiments, the server 120 generates a database to store the list of identified resources 220, the list of functionalities, and a current configuration of the apparatus 140. The server 120 may dynamically update the database. The server 120 may provide the apparatus 140 with promotional materials to present to the user 150. The promotional materials may be in the form of advertisements that promote various functionalities performable by the apparatus 140 to the user 150.
At operation 535, the network interface device 470 may receive the list of functionalities from the server 120 over the network 130. The network interface device 470 may pass the list of functionalities to the database server 450 of
At operation 540, the user interface device 430 of
At operation 555, the network interface device 470 may receive additional resources 240 and pass them to the database server 450 for storage in the database 460. The configuration module 440 of
The operating system 630 may include Linux or various other operating systems. The apparatus 140 may be able to bring up this operating system upon powering up at its initial state to enable the apparatus 140 to communicate with the server 120 and the network 130 of
The additional resources 240 may include one or more software and/or databases. The databases may contain libraries, configuration files, images and fonts, and so forth. The software may include various applications and executable programs that are executable by the hardware block 640. In example embodiments, the applications and executable programs included in the additional resources 240 also employ other components of the additional resources 240, including libraries and databases. The applications and executable programs included in the additional resources 240 may also use contents of applications block 610. The applications block 610 may include software which initially existed in the original configuration of the apparatus 140.
The apparatuses 140 of the cluster 710 may form a local area network (LAN) 730 such as, for example a home or office network. The apparatuses may communicate with the server 120 via a wide area network (WAN) 750, such as the Internet. The apparatuses 140 may use the LAN 730 to communicate with the WAN 750 and/or may have independent communication means such as satellite communication means. In embodiments, the server 120 provides resources such as computer programs to reconfigure each of the apparatuses 140 to enable them to perform specialized functionalities, as described in detail below. The computer programs may be received such as, for example, downloaded by the apparatuses 140.
In the cluster 710, a first apparatus 140 such as, for example, APPARATUS_K, initiates a communication with the server 120 for the first time and may be assigned a cluster controller role. When acting as a cluster controller, the apparatus 140 may perform a number of tasks. For example, the cluster controller (that is, the apparatus 140, which is assigned the cluster controller role) may act as an intermediary between other apparatuses 140 of the cluster 710 and the server 120. In an embodiment, the cluster controller may act as an agent of the server 120, for instance, in receiving information from other apparatuses 140 of the cluster 710 or delivering information and/or resources to these apparatuses.
When turned on for the first time, the apparatuses 140, including the cluster controller, identify themselves to the server 120, and receive a cluster program. The cluster program assists the apparatuses 140 in identifying the other apparatuses 140 in the cluster 710, including the cluster controller. The cluster program may also be used to configure the apparatuses 140 to share resources among themselves and/or with other local clusters of the associated clusters, for instance, through cluster controllers of the associate clusters.
For example, the user 150 of
The communication module 810 may be implemented in hardware and, for example, operate as the network interface device 470 shown in
In an embodiment, the apparatuses 140 of the cluster 710 may communicate lists of their existing resources 220 to the cluster controller of the cluster 710. The server 120 may then receive the list of existing resources 220 from the cluster controller of the cluster 710. The provisional module 820 may provide the apparatuses 140 of the cluster 710 with a list of functionalities, based on the list of identified existing resources 220. The functionalities may be performable by one or more apparatuses 140 of the cluster 710 by using the existing resources 220. For example, the list of functionalities may include functionalities associated with CE devices such as a television, a DVD player and/or recorder, a CD player and/or recorder, a PVR, or functionalities of more sophisticated scientific and/or research instruments such as an oscilloscope or a PHA and so forth.
The communication module 810 may receive from the apparatuses 140 of the cluster 710 a selection from the list of functionalities. For example, the user 150 of
The provisioning module 820 may provide one or more of the apparatuses 140 of the cluster 710 with additional resources 240 based on the selection. The additional resources 240 may include software applications and/or one or more server databases stored in the memory 840. The server databases may contain libraries, configuration files, images, fonts, and so forth. The software may include various applications and executable programs that are executable by the resources 220 of
In some embodiments, the provisioning module 820 may facilitate formation of the cluster 710 and/or associated clusters comprising, for instance, a local cluster such as a home cluster, a car cluster, a vacation home cluster, and the like. The cluster program may assist each apparatus 140 in detecting other apparatuses 140 in the cluster 710, including the cluster controller. The cluster program may also be used to configure the apparatuses 140 to share resources among themselves and/or with other local clusters of the associated clusters, for instance, through cluster controllers of the associate clusters. The provisioning module 820 may facilitate two or more local clusters sharing resources, for instance existing resources 220 and additional resources 240 both of
In some embodiments, the cluster control module 830 of
Preferably, the cluster control module 830 periodically, for instance once a day, monitors the qualifications of apparatuses 140 to find out which apparatus 140 is a better candidate for the cluster controller role. The cluster control module 830 may then assign the cluster controller role to another apparatus 140, when that apparatus 140 is more qualified than a current cluster controller. The more qualified apparatus may, for example, have a longer uptime, more resources such as processing power or storage capacity, or better performance, for instance higher speed, shorter response time, higher amplification, more fidelity, higher resolution, and the like. Further, the cluster controller may identify one of the apparatuses 140 as a standby cluster controller.
The standby cluster controller may assume the responsibilities of an active cluster controller in case the active cluster controller is down or otherwise fails to perform one or more of the cluster controller's tasks. The active cluster controller and the standby cluster controller may receive control resources such as programs and databases from the provisioning module 820. The control resources may enable the active cluster controller and the standby cluster controller to perform cluster controller tasks as outlined with respect to
In some embodiments, one of the apparatuses 140 of the cluster 710 may act as a proxy for the server 120 of
In an embodiment, the communication module 810 may receive a selected functionality for one or more of the apparatuses 140 of the cluster 710 both of
At operation 920, the provisioning module 820 of
At operation 930, the communication module 810 of
The machine 1000 may be a server computer, a client computer, a PC, a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, an Internet or Web appliance, a network router, switch or bridge, or any apparatus capable of executing a set of instructions, sequential or otherwise, that specify actions to be taken by that apparatus. Further, while only a single apparatus is illustrated, the term “apparatus” shall also be taken to include any collection of apparatuses that individually or jointly execute a set, or multiple sets, of instructions to perform any one or more of the methodologies discussed herein.
The example machine 1000 may include a processor 1060 such as, for example, a central processing unit (CPU), a graphics processing unit (GPU), or both, a main memory 1070 and a static memory 1080, all of which communicate with each other via a bus 1008. The machine 1000 may further include a video display unit 1010 such as, for example, a liquid crystal display (LCD) or cathode ray tube (CRT) display. The machine 1000 also may include an alphanumeric input device 1020 such as, for example, a keyboard, a cursor control device 1030 such as a mouse, a disk drive unit 1040, a signal generation device 1050 such as a speaker, and a network interface device 470.
The disk drive unit 1040 may include a machine-readable medium 1022 on which is stored one or more sets of instructions 1024 such as, for example, software embodying any one or more of the methodologies or functions described herein. The instructions 1024 may also reside, completely or at least partially, within the main memory 1070 and/or within the processor 1060 during execution thereof by the machine 1000. Preferably, the main memory 1070 and the processor 1060 also comprise machine-readable media. The instructions 1024 may further be transmitted or received over a network 1075 via the network interface device 470. The network 1075 may operate as the network 130 of
While the machine-readable medium 1022 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media such as, for example, media found in a centralized or distributed database, and/or associated caches and servers that store the one or more sets of instructions. The term “machine-readable medium” shall also be taken to include any medium that is capable of storing, encoding, and/or carrying a set of instructions for execution by the apparatus and that cause the apparatus to perform any one or more of the methodologies of the present technology. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories and optical and magnetic media.
Embodiments of a dynamically configurable cluster of apparatuses and methods for dynamically configuring the apparatuses have been described. Although the present embodiments have been described, it will be evident that various modifications and changes may be made to these embodiments. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b), requiring an abstract that allows the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the claims. In addition, in the foregoing Detailed Description, it may be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as limiting the claims. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.
The present application is related to the following patent applications each assigned to a common assignee: United States Patent Application [2147.026US1, CP0007] entitled, “DYNAMICALLY CONFIGURABLE CHAMELEON DEVICE,” which is hereby incorporated by reference. U.S. patent application Ser. No. 12/622,766, filed on Nov. 20, 2009 and entitled, “DATA DELIVERY FOR A CONTENT SYSTEM,” which is hereby incorporated by reference.