RELATED APPLICATION INFORMATION
This application claims the benefit of and is a continuation of U.S. application Ser. No. 12/147,770, filed on Jun. 27, 2008, the disclosure of which is incorporated herein by reference in its entirety.
Portable controlling devices, such as for example universal remote controls, and the features and functions offered by such devices are well known in the art. Increasingly sophisticated implementations of these devices incorporate technologies such as color touch screens, wireless home network compatibility, user configurable graphical user interfaces, slave relay stations positioned to control appliances not situated in line of sight of the controlling device, etc. Contemporaneously, personal communication, productivity, and entertainment devices such as cellular phones, portable email devices, hand-held games, etc. have begun to offer features such as graphical user interfaces on color touch screens, wireless Internet capability, etc.
SUMMARY OF THE INVENTION
This invention relates generally to systems and methods for adapting various appliance control capabilities of a universal remote control system such that they may be ubiquitously accessed by personal communication devices within a wireless network. Specifically, one or more network-capable slave relay stations installed in conjunction with a universal remote control device may additionally be adapted to serve and/or host pages comprising a simplified graphic user interface (GUI) encoded in a widely recognized format such as for example HTML or WML, which GUI embodies activatable links corresponding to control functions for configured appliances. A wireless phone or other device with network access and the capability to process and present such pages, for example via a Web browser, may then be utilized to effect control of such appliances by simply navigating to the network address of that slave relay station. Such devices may include without limitation cellular phones, smartphones, personal productivity devices, personal gaming, audio, or video players, game controllers, PDAs, etc., all collectively referred to hereafter as personal communication devices.
In some embodiments, the GUI pages to be served by slave relay stations may be to created using the same editor as provided for use in creating or modifying the universal controlling device graphical user interface. Further, in certain embodiments the GUI pages to be served may be dynamically selected, scaled, or otherwise modified by a local or remote service based upon the known or inferred capabilities of the requesting personal communication device.
A better understanding of the objects, advantages, features, properties, and relationships of the invention will be obtained from the following detailed description and accompanying drawings which set forth illustrative embodiments and which are indicative of the various ways in which the principles of the invention may be employed.
BRIEF DESCRIPTION OF THE DRAWINGS
For a better understanding of the various aspects of the invention, reference may be had to preferred embodiments shown in the attached drawings in which:
FIG. 1 illustrates an exemplary prior art universal controlling device and system;
FIG. 2 illustrates an exemplary prior art system for creating graphical user interface pages for the controlling device of FIG. 1;
FIG. 3 illustrates a block diagram of exemplary components of an exemplary slave relay device;
FIGS. 4a and 4b illustrate exemplary systems in which exemplary personal communication devices may be used as controlling devices in accordance with the teachings of the instant invention;
FIG. 5 illustrates in flow chart form exemplary actions of an exemplary slave relay device when serving GUI pages to a personal communication device;
FIG. 6 illustrates an exemplary personal communication device functioning as a controlling device;
FIG. 7 illustrates a second exemplary personal communication device functioning as a controlling device;
FIG. 8 illustrates in flow chart form an exemplary method for adapting or selecting GUI pages to match the capabilities of exemplary personal communication devices;
FIG. 9 illustrates an exemplary editing program which may be used to create GUI pages for use with personal communication devices;
FIG. 10a illustrates an exemplary set of data files which may define a GUI page from which an appliance may be controlled;
FIG. 10b illustrates an exemplary tag file comprising XML which may be executed by a slave relay device to effect control of an appliance; and
FIG. 11 illustrates in flow chart form another exemplary method for adapting or selecting GUI pages to match the capabilities of an exemplary personal communication device.
With reference to FIGS. 1 and 2, which are representative of prior art, it is known to provide a universal controlling device 102 comprising a touch screen graphical user interface 120 through which various appliances, for example a TV 108, cable set top box (STB) 104 and/or AV receiver 104 may be controlled. For further detail regarding this type of controlling device, reference may be made to U.S. Pat. No. 7,143,214, entitled “Hand Held Device Having a Browser Application,” or U.S. Pat. No. 7,266,777, entitled “Configurable Controlling Device Having an Associated Editing Program,” both of like assignee and incorporated herein by reference in their entirety.
In order to facilitate control of infrared (IR) signal responsive appliances which are not positioned in line of sight of controlling device 102, it is also known to provide a slave relay station 100 which receives RF communications 110 from controlling device 102 and outputs IR signals 112 to the various controlled devices. In the simplest form, said slave relay station may consist of nothing more than an analog RF demodulator and IR remodulator such as described, for example, in U.S. Pat. No. 5,142,397, entitled “System for Extending the Effective Operational Range of an Infrared Remote Control System.” However, in the more general case where the RF communication path 110 utilizes a standardized protocol such as for example WiFi, Bluetooth, Zwave, Zigbee, etc., the slave relay device 100 may be required to receive and decode incoming messages in one format and translate these into IR commands (or even sequences of commands) having one or more different format(s) recognizable by the intended target device(s) for said commands. In this regard, see for example the “Nevo Link” brochure NSL007-2 published by Universal Electronics Inc. which is incorporated herein by reference in its entirety. To this end, the slave relay devices contemplated by the teachings of this invention incorporate processing capabilities, as will be described in greater detail in conjunction with FIG. 3.
As illustrated in FIG. 2, it is also known to provide application software comprising an editor 200 for execution on a PC 202 or other computer which may be used to configure and create individualized graphical user interfaces and command libraries for downloading into a controlling device 102. Such editor software may also be used to configure/assign slave relay device(s) 100 attached to a local area network and accessible to controlling device 102. The editor software may make use of local 204 and/or remote 208 database facilities for the retrieval of appliance command data, interface graphics, etc., as well as for storage of edited configurations. Remote database 208 may be hosted on a server 210 accessible via, for example, the Internet or a similar wide area network 206. For further detail regarding controlling device editor applications, the reader may refer to, for example, the aforementioned U.S. Pat. No. 7,266,777, U.S. Pat. No. 6,211,870, entitled “Computer Programmable Remote Control,” and pending U.S. patent application Ser. No. 11/357,681, entitled “Configurable Controlling Device and Associated Configuration Distribution System and Method,” all of like assignee and incorporated herein by reference in their entirety, as well as U.S. Pat. No. 6,937,972, entitled “Fully Functional Remote Control Editor and Emulator,” also incorporated herein by reference in its entirety.
Turning now to FIG. 3, the architecture of an exemplary slave relay station is illustrated in block diagram form. For use in commanding the functional operations of one or more appliances in response to messages received via a wired or wireless network connection, a slave relay station 100 may include, as needed for a particular application, a processor 300 coupled to a ROM memory 304, a RAM memory 302, a non-volatile read/write memory 306, circuit(s) 308 for transmission of operating commands to appliances (e.g., IR and/or RF), a wireless network transceiver 310 (e.g. WiFi, Bluetooth, etc.) and/or a wired network interface 312 (e.g. Ethernet) for communication with a local network, a means 314 to provide feedback to the user (e.g., one or more LEDs, LCD display, speaker, and/or the like), and a power source 316.
As will be understood by those skilled in the art, some or all of the memories 302, 304, 306 may include executable instructions (collectively, the program memory) that are intended to be executed by the processor 300 to control the operation of the slave relay station 100, as well as data that serves to define appliance control protocols and command values to the operational software (the appliance code data). In this manner, the processor 200 may be programmed to control the various electronic components within the slave relay station 100 and process the input and output data thereof, for example, to receive and transmit data via network interfaces 308 and/or 310, to act upon commands and requests embodied in such data, to cause the transmission of appliance command signals via transmission circuits(s) 308 to appliances to be controlled, to control visual feedback device(s) 314, etc. In a contemplated embodiment, the non-volatile read/write memory 306, for example an EEPROM, battery-backed up RAM, FLASH, Smart Card, memory stick, or the like, may additionally be used to store HTML page data for serving to requesting devices, as described in greater detail hereafter. While the memory 304 is illustrated and described as a ROM memory, memory 304 may also be comprised of any type of readable media, such as ROM, FLASH, EEPROM, or the like. Preferably, the memories 304 and 306 are non-volatile or battery-backed such that data is not required to be reloaded after power interruptions. In addition, the memories 302, 304, and 306 may take the form of a chip, a hard disk, a magnetic disk, an optical disk, and/or the like. Still further, it will be appreciated that some or all of the illustrated memory devices may be physically incorporated within the same IC chip as the microprocessor 300 (a so called “microcontroller”) and, as such, they are shown separately in FIG. 3 only for the sake of clarity.
To cause the slave relay device 100 to perform an action, slave relay device 100 is adapted to be responsive to events, such as a received signal from network interface port 310 or 312. In response to an event, appropriate instructions within the program memory (hereafter the “operating program”) may be executed. For example, receipt of a command message from controlling device 102 may result in the retrieval from the appliance code data the command value and control protocol appropriate for an intended target device and a resulting transmission of the requested command to the intended target appliance, e.g., the STB 106, in a format recognizable by the intended target appliance. Additionally, in keeping with the teachings of the instant invention, receipt of, for example, an HTTP page request from a browser capable, client, personal communication device may result in the retrieval of HTML formatted data and serving of a page comprised of the HTML formatted data back to the requesting client, as will be described in greater detail hereafter.
For selecting a set of appliance code data to be associated with an appliance to be controlled, data may be provided to the slave relay device 100 that serves to identify an intended target appliance by its type and make (and sometimes model). Such data may allow the slave relay device 100 to identify the appropriate appliance code data elements within a preprogrammed library of appliance code data, to be used to transmit recognizable commands in a format appropriate for such identified appliances. Alternatively, either in place of or in addition to a pre-stored library, appliance code data may be downloaded into slave relay device 100 via a network interface(s) 310, 312 either during an initialization phase or on an as required basis.
Referring now to FIG. 4a, in an exemplary embodiment a wireless local area network 406, for example a WiFi network, provides a means for communication between slave relay devices 100 and 100′ and a universal controlling device 102. Slave relay devices 100 and 100′ provide a conduit for controlling device 102 to issue operational commands to appliances 108, 106, 104 and 108′, 106′ respectively. Various embodiments of such slave relay devices may interface directly to wireless network 406 (e.g., via a built-in wireless network transceiver 310) as illustrated by device 100, or may interface to the network via a hardwired connection to a router 408 (e.g., via a built-in wired network interface 312) as illustrated by device 100′. In either case, wireless commands originating from controlling device 102 are converted into appliance control commands of a format suitable for use with the target appliance(s), e.g. 104, 106 or 108, as previously described in conjunction with FIGS. 1 and 3. A local personal computer 202 or other device having Internet connectivity and an Internet connection 410 (e.g., a cable modem) are also connected to router 408 and thus accessible via the wireless local network 406.
In an exemplary embodiment, in addition to servicing requests from universal controlling device 102 as is known in the art, the illustrated slave relay devices 100 and 100′ of the instant invention are also capable of serving HTML-formatted pages over local area network 406 as requested by browser-capable devices such as personal communications devices 400 or 402, thereby allowing such devices to be used as surrogate or additional universal controlling devices, as will be described hereafter in greater detail.
As will be appreciated by those of skill in the art, not all personal communication devices may be equipped to communicate directly with a local network (e.g., have a WiFi capability). As illustrated in FIG. 4b, certain exemplary personal communication devices, e.g., cell phone 422, may be adapted to communicate only via a closed wide area network 424, 426 (e.g., a cellular phone network) to a contracted service provider 420. Such a personal communication device may however offer access to the Internet 206 via a service provider gateway 428. In such cases, it will be appreciated that the exemplary personal communication device may request HTML formatted GUI pages from slave relay station 100 via Internet 206 and local router 408. Accordingly in the discussions that follow, it is to be understood that the services described are not intended to be limited to only those devices which are equipped to directly access local network 406.
Turning now to FIG. 5, there is illustrated in flowchart form an exemplary series of steps which may be performed by the operating program of a slave relay device upon receipt of a communication from the local network. While for the purpose of this illustrative example certain terminology common to a WiFi-based local network and HTTP transaction protocol may be used for clarity, this is not intended to be limiting as it will be appreciated that the concepts presented may be practiced equally effectively using other appropriate network architectures and/or protocols.
Upon initial receipt of a network communication, at step 502 the operating program of the slave relay station may first determine if the communication comprises a function command from an associated universal controlling device (e.g., controller 102). If so, at steps 514, 516 and 518 the operating software may retrieve the requested command function from the appliance code data previously associated with the desired appliance, transmit that command to the appliance in the appropriate format, and then issue a completion confirmation response to the initiating device, all as is known in the prior art.
If the received communication is not a function command from a universal controlling device, the operating software may next determine if the communication is a request from a user agent, e.g., a browser application resident in a networked device such as personal communication devices 400, 402, or 422 (each alternatively referred to hereafter as the “client device”). If not, at step 520 an error message, e.g., an HTTP “Error 404—Not Found” response is issued to the originating network device. Alternatively the operating software may be configured to issue a simplified default interface page in the event that the unknown client device is able to render rudimentary HTML or other markup language pages. If the communication is a recognized user agent request, the operating software at step 506 then determines if this is GUI page request, e.g., a request for an HTML file. If so, at step 530 the operating software resolves the request file path and determines the GUI page to be served in response to the user agent request. (If any error is encountered, e.g., the file path/name does not exist, an error response akin to step 520 may be issued to the requesting device. For the sake of clarity, this and other similar error conditions are not exhaustively illustrated in the flowchart of FIG. 5.) Once the GUI page to be served has been identified, the operating software at step 534 may next optionally determine the requesting client device type and capabilities. This may include, for example, examining various fields in the received request (for example, “accept” and “user agent” data in an HTTP request header) or other pre-defined identification data, searching a local or remote cross-reference table of IP or MAC addresses to device types, or even interacting with the requesting device itself to obtain the identification data. Alternatively, a fixed set of device capabilities for the request issuing device may have been predetermined at the time the slave relay device was configured. Once the client device capabilities are known or inferred, at step 538 the page data corresponding to the identified GUI page may be scaled or reformatted, or an alternate GUI page selected, based on the capabilities of the client device. This process will be described in greater detail later. Finally, at step 540 the requesting client device is responded to with the GUI page data.
Turning momentarily to FIG. 6, by way of example only, such a GUI page may comprise HTML data 600 as illustrated. When rendered on a personal communication device 402, such an HTML page may appear as illustrated at 602. In particular such a GUI page display may comprise a series of icons representative of appliance control actions which may be initiated from the displaying client device. When one of the displayed icons or links is selected (it will be appreciated that such selection may be by touch, by cursor movement, by operation of navigation keys, etc., as appropriate to the particular client device currently rendering the GUI page) this may result in a message being transmitted back to the originating slave relay device, receipt of which causes the desired command(s) to be issued to an appliance. By way of more detailed example, the GUI page display 602 of the embodiment illustrated in FIG. 6 comprises six channel selection icons, four of which are configured to cause a tunable appliance (e.g., set top box 106) to be set to particular channel, while the remaining two are configured to issue generic “channel up” and “channel down” commands to the appliance. To this end, the HTML data comprising GUI page 600 may include six HTML “tags” such as for example tag 604 corresponding to the broadcast TV channel “ABC” or tag 606 corresponding to the “channel up” function. In this implementation, each tag comprises a definition of an icon to be displayed, e.g., “abc_button.png” (in this example, a graphic file to be retrieved from the originating server), an action to be taken if and when the icon is selected (in this example, an HTTP request back to the originating server for a filename such as for example “switch_to_abc.irm” or “channel_up.irc”), and size and formatting information for positioning the displayed icon.
Returning now to FIG. 5, if the operating program of the slave relay device has determined that a received communication is not a function command from an associated universal controlling device and is not a GUI page request, it next determines at step 510 if the received message is a request for an individual appliance command function (e.g., “Channel up”, “Mute” or “Pause”). This may be determined, for example, by the type or format of the request. By way of further specific example, in the HTML example described above in conjunction with FIG. 6, the file extension “.irc” may have special significance to the slave relay device operating software, i.e., receipt of a request for “channel_up.irc” may cause the operating software to retrieve from the stored appliance code data the appropriate command value and control protocol and use these to transmit the requested command to the designated appliance as illustrated at steps 524 and 526. The manner in which an association is formed between a function request and the appropriate appliance command will be discussed in greater detail later. Thereafter, at step 528 the operating software may determine the next GUI page to be presented, if any, and serve this back to the requesting client device as previously described.
If the received communication is not a request for an individual appliance command function, the operating software next checks if the request is for a sequence of commands (e.g., the digits “0”, “0”, “7” to tune to channel seven). Once again, this may be determined, for example, by the type or format of the request. If the request is for a command sequence, the desired series of commands is determined at step 522 and then transmitted to the specified appliance(s) in similar manner to that described previously. By way of further specific example, in the HTML example described above in conjunction with FIG. 6, the file extension “.irm” may have special significance to the slave relay device operating software, i.e. receipt of a request for “switch-to-abc.irm” may cause the operating software to retrieve a stored series of commands operable to change a pre-determined channel tuning device to the ABC broadcast channel and transmit these to that appliance. The manner in which an association is formed between a command sequence request and a series of appliance command will be discussed in greater detail later. Upon completion of the sequence transmission, the operating software may determine the next GUI page to be presented, if any, and serve this back to the requesting client device as previously described. By way of example, on completion of a channel changing sequence, it may be desirable to automatically switch to a GUI page from which television volume may be controlled, e.g., the page 412 illustrated in FIG. 4a.
Finally, at step 542 the operating program of the slave relay device may check for other valid requests (for example, requests for icon graphics as mentioned above in conjunction with the HTML data of FIG. 6). If valid, other requests may be serviced as appropriate at step 544, else an error message may be returned to the requesting client device.
As mentioned above in connection with step 538 of FIG. 5, GUI pages to be served may be scaled, reformatted, or selected to match the capabilities of the requesting client device. By way of specific example, again using HTTP as an exemplary transfer protocol, the HTTP request header issued by client device 402 illustrated in FIGS. 4a and 6 may include a user agent string such as:
User-Agent=[Mozilla/5.0 (iPhone; u; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A102 Safari/419.3]
while the HTTP request header issued by client device 422 illustrated in FIGS. 4b and 7 and may include a user agent string such as:
User-Agent=[Nokia6500s-1/2.0 (04.80) Profile/MIDP-2.1 Configuration/CLDC-1.1]
Upon receipt of an HTTP “GET” command requesting a GUI page, the operating program of a slave relay device may examine the request header contents (or forward them to another system for examination) to determine an appropriate format for the GUI page to be served. Continuing the specific example, an examination of the HTML defining the “ABC” tags illustrated at 604 and 704 will reveal that the size of the button icon (i.e., the “width” and “height” parameters) is adjusted to better match the screen resolution, screen size, orientation capabilities, and rendering engines of the respective client devices 402 (e.g., an Apple iPhone) and 422 (e.g. a Nokia6500s).
Turning now to FIG. 8, by way of further example a method by which GUI pages may be modified or selected to match specific requesting client devices, corresponding to steps 534 and 538 of FIG. 5, is illustrated in greater detail once again using HTTP as an exemplary transfer protocol, without limitation. Having determined that a particular GUI page (for example, an HTML file) is to be served to a requesting client device, the operating software of the exemplary slave relay device 100 may, at step 802, determine if GUI page scaling/selection is enabled. If not, at step 820 a fixed GUI page is returned and no further page formatting action is taken. This may occur, for example, when an author of a group of universal remote control GUI pages has decided to support only a lowest common denominator set of client device capabilities, when a specific GUI page comprises only a single function such as a status message or on/off button, etc. In various embodiments such pages may be stored in memory 302,304,306 of slave relay device 100, may be retrieved from a local 202 or remote 210 server by the slave relay device 100, or a combination thereof, as appropriate. In addition, it will be appreciated that such pages may be stored in a local 202 or remote 210 server and merely caused by the slave relay device 100 to be forwarded to the client device via an appropriate communications channel. Still further, the local 202 or remote 210 server may forward such pages to the client device via an appropriate communications channel upon seeing a page request being issued from the client device without requiring the slave relay device 100 itself to initiate any operations associated with such page fulfillment requests.
If however GUI page scaling/selection is enabled, a device adaptation service 800 may be invoked. At step 804 the user agent string may be retrieved from the client device\'s HTTP request header, which as previously illustrated may contain information which serves to identify the requesting client device. If the user agent string is recognized at step 806, device capability information corresponding to the requesting client device is retrieved at step 814. By way of example only, in one contemplated embodiment client devices may be categorized into several classes based on maximum supported horizontal screen resolution, e.g., less than 105 pixels, 106 to 175 pixels, 176 to 239 pixels, 240 to 319 pixels, 320 to 639 pixels, etc., etc. Once a client device has been identified, its class may be determined via a look-up table and an appropriate HTML file selected by the device adaptation service at step 818 from a library of pre-formatted versions of each GUI page, one for each device class. Alternatively, in another exemplary embodiment, a single master HTML file may be created for each GUI page based on a default resolution, and then scaled by the device adaptation service at step 818 to match the exact resolution of the target client device, once again determined from a look-up table. In this regard, it should be noted that certain client device browser implementations may be adapted to compress or shrink received graphic pages in order to emulate a browser screen of greater resolution than that of the underlying personal communication device hardware. In such instances, it will be appreciated that the parameters used by the device adaptation service in creating or scaling GUI pages should match the emulated, and not the actual, resolution of the target client device. Further, in various embodiments, other client device capabilities, e.g., color versus monochrome, touch screen selection of icons versus navigation keys, etc., may also be used to additionally refine GUI pages to match a specific target client device.
In the event a user agent string is not immediately recognized, e.g. by being found in a look-up table as described above, at step 808 a determination is made by the device adaptation service whether additional analysis is possible. When possible, at step 810 such analysis may include forwarding the user agent string data to additional search services for further processing, inspection of additional fields in the HTTP request header (e.g., a URL pointing to profile data for the client device), direct interaction with the requesting client device, etc. By way of specific example, the HTTP request header issued by client device 422 illustrated in FIGS. 4b and 7 may include a reference to a device profile, e.g.:
which profile data, when retrieved from the indicated URL, may include for example statements such as: