# Patent

## Title
Automatic determination and retrieval of a favorite channel

## Abstract

A consumer electronic device tracks the current channel to which the electronic consumer device is tuned. The consumer electronic device determines an amount of time that the current channel remains unchanged. Based at least in part on this amount of time, the consumer electronic device determines whether the current channel should be stored as a favorite channel. When the consumer electronic device subsequently receives a favorite channel command, the consumer electronic device is caused to tune to the favorite channel that is currently stored in memory. Changing user preferences are thus automatically accommodated without manual intervention, resulting in an effortless user interface.

## Background
RELATED APPLICATION DATA
This application claims the benefit of and is a continuation of U.S. application Ser. No. 13/864,724, filed on Apr. 17, 2013, which application claims the benefit of and is a continuation of U.S. application Ser. No. 12/315,169, filed on Nov. 28, 2008, the disclosure of which is incorporated herein by reference in its entirety.


TECHNICAL FIELD
The disclosed embodiments relate to the field of remote control devices, more specifically, to the automatic tracking, storing, and retrieving of frequently viewed channels.
BACKGROUND
A universal remote control (URC) device transmits operational signals to control one or more electronic consumer devices. Examples of electronic consumer devices include televisions, video cassette recorders, set-top boxes, audio home theatre systems, and CD/DVD players. Many users of electronic consumer devices such as televisions use URC devices to frequently change channels. Often consumers change channels to avoid watching uninteresting content, such as television advertisements or promotional clips, which periodically interrupt the presentation of interesting content. In the context of television viewing, this behavior is popularly referred to as “channel surfing”.
In a common scenario of channel surfing, a viewer is engaged in a particular program for an extended period of time, for instance fifteen to twenty minutes. The programming will then be interrupted by advertising or promotional content. In response, the viewer will “surf” through a sequence of channels until the viewer finds something to watch that is more interesting than the commercial or promotional clips.
The viewer typically “surfs” with the aid of a URC either by explicitly entering particular channel numbers or by incrementally changing the channel using a channel up/down button. After a period of “surfing” the user will very often want to return to the initial program, estimating that by this time the advertisements are finished and the initial interesting program is being presented once again.
To return to the initial program using a typical URC the viewer must both recall and explicitly enter the channel associated with the initial program or repeatedly increment the channel number until the initial program appears. Both of these approaches complicate the user experience. First, the user may forget the channel number of the initial program. Second, entering the channel number on a small keypad often requires the user to focus attention to the URC itself to make the correct sequence of key presses. Using a channel up/down button, a user may have to increment through many channels to return to the original program. Both of these approaches cause viewer frustration and loss of viewing time.
In an attempt to avoid such frustration and loss of viewing time, a viewer may explicitly program an association between a key and a particular channel such that upon a subsequent pressing of the key the URC transmits a “macro” of operational signals to the television such that the television is tuned to the preprogrammed particular channel. A problem with this approach is that the programming sequence is typically a time consuming sequence of keystrokes that a user should memorize. In addition, any change in a user's preferred channel requires the association to be manually reprogrammed. As a result of these problems many viewers choose not to utilize the macro key functionality of a URC.
SUMMARY
A novel remote control device includes a microcontroller integrated circuit and a favorite key. In one embodiment, the remote control device is usable to control an electronic consumer device such as a television. The microcontroller waits for a user channel selection input and determines if the favorite key has been pressed. If the microcontroller determines that the favorite key has been pressed, then the microcontroller uses a stored codeset to generate an operational signal that carries an indication of a Favorite Channel (FC) associated with the favorite key. The operational signal is communicated from the remote control device to the electronic consumer device and causes the electronic consumer device to tune to the FC.
As the remote control device is used, the microcontroller automatically tracks and stores the Likely Current Channel (LCC) to which the electronic consumer device is likely tuned. The microcontroller measures the amount of time the LCC was selected and may also record other information. In one embodiment, the microcontroller uses this timing information to determine if a particular LCC qualifies as a Favorite channel (FC) by determining if the LCC has remained unchanged for more than a minimum threshold period of time. In another embodiment, a FC is not determine by the amount of time the LCC has remained unchanged but rather is determined by a total cumulative amount of time the LCC has been selected in a given period of time. The microcontroller may store a list of such FCs. The microcontroller may also automatically rank FCs in the list by the amount of time each channel remained unchanged. Alternatively, the microcontroller may automatically rank FCs chronologically based on when the FCs were determined to be in the list.
The novel integrated circuit eliminates the need for complex user programming of universal remote control devices. The remote control user simply navigates through channels normally. The remote control device automatically detects, stores, and ranks FCs.
When the user subsequently presses the favorite channel key on the remote control device, the remote control device accesses the list of FCs, retrieves an FC value, and uses this FC value to generate an operational signal that carries the FC value to the electronic consumer device to be controlled. The operational signal causes the electronic consumer device (for example, a television) to be tuned to the FC.
In one example, successive pressings of the favorite key by the user causes the remote control device to generate and transmit a succession of operational signals, one operational signal for each FC in the list. Because the ranking of FCs is automatically updated within the remote control device over time, changing user preferences are automatically accommodated without manual intervention, resulting in an effortless user interface. Advantageously, the novel FC determining functionality can be implemented into remote control devices with little or no additional cost.
In some embodiments the tracking of the amount of time that the LCC is unchanged, and the associated determination of an FC, and the storage of FCs, is performed by the electronic consumer device to be controlled rather than by the remote control device. When a user presses a favorite key on the remote control device, the remote control device sends a communication to the electronic consumer device. In response to this communication, the electronic consumer device accesses the stored FC information and uses it to tune to the FC.
Other structures and methods are described in the detailed description below. This summary does not purport to define the invention. The invention is defined by the claims.



BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, where like numerals indicate like components, illustrate embodiments of the invention.
FIG. 1 is a diagram illustrative of a remote control system.
FIG. 2 is a diagram illustrative of a novel integrated circuit in the context of the remote control system of FIG. 1.
FIG. 3 is a simplified flowchart of a method of automatically determining, storing and retrieving favorite channels.
FIG. 4 is a simplified flowchart of a channel tracking routine in accordance with a novel aspect of FIG. 3.
FIG. 5 is a simplified flowchart of a channel timing routine in accordance with a novel aspect of FIG. 3.
FIG. 6 is a simplified flowchart of a channel timing routine in accordance with another novel aspect of FIG. 3.
FIG. 7 is a table illustrative of a favorite channel determining routine in accordance with a novel aspect of FIG. 3.
FIG. 8 is a table illustrative of a favorite channel determining routine in accordance with another novel aspect of FIG. 3.
FIG. 9 is a simplified flowchart of a favorite channel transmission routine in accordance with a novel aspect of FIG. 3.



DETAILED DESCRIPTION
Reference will now be made in detail to some embodiments of the invention, examples of which are illustrated in the accompanying drawings.
FIG. 1 is a diagram of a system 1 including a universal remote control (URC} device 2 and a television 3 in accordance with one novel aspect. URC 2 includes an IR/LED 15 and various device-keys and function-keys. As illustrated in FIG. 1, examples of device-keys are TV key 4, VCR key 5, DVD key 6, and CABLE key 7. Examples of function-keys are POWER key 8, CHANNEL UP key 11, CHANNEL DOWN key 12, CHANNEL NUMBER keys 13, and FAVORITE key 10. When a user presses a key on URC 2, if URC 2 is programmed to control a particular electronic consumer device, for example, television 3, then IR/LED 15 transmits IR/LED operational signal 16 to control television 3 corresponding to the pressed key. In one advantageous aspect, when the FAVORITE key 10 is pressed, URC 2 generates an IR/LED operational signal 16 that carries an indication of the favorite channel.
FIG. 2 is a simplified block diagram of one embodiment of URC 2 of FIG. 1. URC 2 includes keypad 11, IR/LED 15, and a microcontroller 20. Microcontroller 20 includes a processor 21, a memory 22, a timer 28, keyscan input terminals 29, and transmitter output terminal 17. A processor-readable medium may include optically based storage components, such as a compact disc, or magnetically based storage components, such as a hard disk or flash memory. Memory 22 includes channel tracking routine 23, channel timing routine 24, favorite channel determining routine 25, favorite channel transmission routine 26, and codeset database 27. Keypad 11 includes all of the keys of URC 2 such as channel number keys 13, favorite key 10, etc.
In one embodiment the keyscan input signals 18 are read by processor 21 via keyscan input terminals 29. The processor 21 runs a keyscan routine 19 to determine a particular keypress from the keyscan input signal values. For instance, the pressing of favorite key 10 may be determined by reading a particular set of keyscan input signals. Depending on the particular keypress the processor may run:
a) channel tracking routine 23 to track the likely current channel (LCC),
b) channel timing routine 24 which references timer 28 to determine the amount of time a channel was the LCC,
c) favorite channel determining routine 25 to determine if a channel is a favorite channel, and
d) favorite channel transmission routine 26 to output a transmitter operational signal 14 via transmitter output terminal 17.
An IR/LED 15 converts the transmitter operational signal 14 into an IR/LED operational signal 16 to transmit an indication of a favorite channel to a controlled device such as television 3. A particular brand and model of electronic consumer device responds to IR/LED operational signals containing a particular set of keycodes and performs the corresponding functions. Various types of keycodes are stored in codesets as a codeset database 27. Each codeset is identified by a three digit codeset identifier associated with a particular brand and make of electronic consumer device. A URC 2 generally stores hundreds of codesets in a codeset database 27 and is programmed to use one particular codeset to control one particular electronic consumer device.
As illustrated in FIG. 3, processor 21 waits for a channel selection input 30. A channel selection input indicates a desire to set the channel. Typically, a channel selection input would result from a keypad button press of any of the URC keys that command a change of channel. The processor 21 determines whether the keypad button press corresponds with the favorite key 31. If the favorite key has been pressed, processor 21 proceeds to run the favorite channel transmission routine 32. The favorite channel transmission routine uses the stored codeset to output a transmitter operational signal associated with the favorite channel. Thus, the resulting IR/LED operational signal 16 is transmitted as a command to the controlled device to change to the favorite channel. If the favorite channel has not been pressed, processor 21 skips over the favorite channel transmission routine and calls the channel tracking routine 33 directly. Next, processor 21, runs the channel tracking routine 33 to track a likely current channel (LCC). The channel tracking routine monitors any change of channel keypress, interprets that as a change of channel, and updates the LCC to be the newly selected channel. Next, processor 21 runs the channel timing routine 34 to calculate the amount of time a channel was the LCC. To perform this function, the timer 28 is referenced to determine the amount of time a channel remained unchanged.
In one embodiment, following the channel timing routine, processor 21 determines whether a channel was the LCC for more than a minimum threshold period of time 35. The minimum threshold period of time may be selectable by the user. It may also be pre-programmed by the manufacturer. The minimum threshold period of time may be tuned to a typical interval of broadcast programming without commercial interruption. For instance the minimum threshold period of time may be 15 minutes. If processor 21 determines that a channel was not the LCC for more than the minimum threshold period of time, the channel is not considered a favorite channel and does not participate in a favorite channel ranking. If processor 21 determines that a channel is the LCC for more than the minimum threshold period of time, processor 21 calls the favorite channel determining routine 36. The favorite channel determining routine 36 ranks favorite channels so that a list of favorite channels is automatically generated. In another embodiment, following the channel timing routine, processor 21 calls the favorite channel determining routine without determining whether a channel was the LCC for more than a minimum threshold period of time.
FIG. 4 illustrates one embodiment of a channel tracking routine in more detail. Processor 21 waits for a channel selection input 40, then analyzes the type of channel selection input received to determine the likely current channel (LCC). For example, if the user pressed a sequence of channel number keys 13 to indicate a desire to change the channel 41, processor 21 would store the channel corresponding to the explicit channel number key sequence as the LCC 44. For example, if the user pressed the channel up key 11 (or the channel down key 12) to indicate a desire to change the channel 42, processor 21 would increment (or decrement) the previous LCC and store the result as the LCC 45. For example, if the user pressed the favorite key 10 to indicate a desire to change the channel 43, processor 21 would store the LCC as the channel transmitted by the favorite channel transmission routine as a result of depressing the favorite key 46. For example, if none of the favorite key, channel up/down keys, or the channel number keys are pressed, processor 21 stores the LCC as the channel last transmitted by the URC 47.
FIG. 5 illustrates one embodiment of a channel timing routine. Processor 21 waits for a first channel selection input 51 then acquires and stores a first timer value T[O] 52. Timer value T[O] is an indication of time at the point of transition where a first channel becomes the LCC. Then processor 21 waits for a second channel selection input 53. When this second channel selection input is detected, processor 21 acquires and stores a second timer value T[1] 54. Timer value T[1] is an indication of time at the point of transition where a second channel becomes the LCC. Processor 21 then calculates the elapsed time that the first channel was the LCC by taking the difference in values between T[1] and T[O] 55.
FIG. 6 illustrates another embodiment of a channel timing routine. Processor 21 waits for a first channel selection input 61 then resets the timer 62. Because of the reset, the indication of time at the point of transition where a first channel becomes the LCC is zero. Then processor 21 waits for a second channel selection input 63. When a second channel selection input is detected processor 21 acquires and stores a timer value T[1] and resets the timer 64. Timer value T[1] is both an indication of time at the point of transition where a second channel becomes the LCC and the elapsed time that the first channel was the LCC 65.
FIG. 7 illustrates one embodiment of a favorite channel determining routine. A time-ranked favorite channel list 70 is compiled by appending the list at each change of LCC and represents a historical record of channels that were a LCC. Each row of the time-ranked favorite channel list 70 stores the index number of each change of LCC in chronological order, the channel number associated with each LCC, the elapsed time that the channel was the LCC, and the time ranking of that LCC. At each change of LCC, the time ranking of each LCC on the time-ranked favorite channel list 70 is recalculated. The list length can be one or greater than one. The list length is generally limited by memory 22 allocated in a specific design. Time ranking is in the order of the elapsed time of each LCC. For example, for a list length N, the LCC with the longest elapsed viewing time is assigned rank one and the LCC with the shortest elapsed viewing time is assigned rank N. For the particular example illustrated in FIG. 7, the list length N is five and the LCCs are time ranked according to their relative elapsed viewing time.
FIG. 8 illustrates a second embodiment of a favorite channel determining routine. A chronologically ranked favorite channel list 80 is compiled by appending the list at each change of LCC where the list length N can be one or greater than one. The list length N is generally limited by memory 22 allocated in a specific design. Each row of the chronologically ranked favorite channel list 80 stores the index number of each change of LCC in chronological order and the channel number associated with each LCC. At each change of LCC, the chronological ranking of each LCC is indexed by one such that the channel that was most recently the LCC is assigned rank one.
FIG. 9 illustrates one embodiment of a favorite channel transmission routine. Processor 21 waits for a press of the favorite key 90. Next, processor 21 outputs the favorite channel of rank 1 93. Processor 21 then waits for a consecutive press of the favorite key. Next, processor 21 determines if a favorite key timeout has occurred 96. A favorite key timeout occurs when the time between the current favorite key press and the previous favorite key press exceeds a prescribed period of time. The timeout period may be programmed by the user. It also may be pre-programmed by the manufacturer. For instance, if there is a list with many favorite channels, rapid, successive presses of the favorite key may indicate that the user wishes to cycle down the list of favorite channels. However, if a considerable period of time has elapsed since the previous favorite key press, the user may wish to simply view the highest ranking favorite channel. Thus, if a timeout has occurred, processor 21 outputs the favorite channel of rank 1 95. However, if a timeout has not occurred, processor 21 outputs the favorite channel of rank 2 97. As long as the favorite key is pressed consecutively, this routine continues through a list of favorite channels. Thus, processor 21 waits again for another consecutive favorite key press 98, determines if a timeout has occurred 99 and either outputs a favorite channel of rank 1 101 if a timeout has occurred or outputs a channel of rank N if a timeout has not occurred. The favorite channel transmission routine terminates if at any time a button other than the favorite key is pressed.
In another embodiment of a favorite channel determining routine, the timeout function may be eliminated and consecutive presses of the favorite button will pass through a list of favorite channels without regard for how much time has elapsed between consecutive presses of the favorite key.
Although certain specific embodiments are described above for instructional purposes, the teachings of this patent document have general applicability and are not limited to the specific embodiments described above. The functionality of microcontroller 20 may be implemented as an amount of programmable logic of a Field Programmable Gate Array (FPGA) architecture. The timer 28 may be integrated with the microcontroller or may communicate with the microcontroller as a peripheral device. Although the novel favorite channel determining and retrieving method is described above in connection with a universal remote control, the novel method sees general usage in channel switching applications. The novel method may, for example, be implemented in an electronic consumer device (for example, a television or set-top box) that is controlled by a remote control device. Accordingly, various modifications, adaptations, and combinations of various features of the described embodiments can be practiced without departing from the scope of the invention as set forth in the claims.

## Claims

1. A non-transitory, computer readable media having instructions stored thereon which, when executed by a processing device, causes the processing device to perform steps comprising:
causing a television to exit from a first channel tuning state and enter into a second channel tuning state;
determining if the television remains in the second channel tuning state for a length of time that exceeds a length of time during which the television was in the first channel tuning state; and
when it is determined that the television has remained in the second channel tuning state a length of time that exceeds a length of time during which the television was in the first channel tuning state, storing in a memory associated with the processing device an association between a predetermined input element that is coupled to the processing device and channel tuning commands to be transmitted to the television whereupon a subsequent activation of the predetermined input element will cause the channel tuning commands to be transmitted to the television for the purpose of placing the television into the second channel tuning state;
wherein the channel tuning commands to be transmitted to the television are determined by using an increment of a channel number associated with the first media tuning state when a channel up input element that is coupled to the processing device was activated to cause the television to exit from the first channel tuning state and enter into the second channel tuning state or by using a decrement of the channel number when a channel down input element that is coupled to the processing device was activated to cause the television to exit from the first channel tuning state and enter into the second channel tuning state.

2. The non-transitory, computer readable media as recited in claim 1, wherein the channel tuning commands are transmitted to the television from a controlling device.

3. The non-transitory, computer readable media as recited in claim 1, wherein the channel tuning commands are transmitted to be received via an infrared receiver of the television.

4. The non-transitory, computer readable media as recited in claim 1, wherein the channel tuning commands are transmitted to be received via a radio frequency receiver of the television.

5. The non-transitory, computer readable media as recited in claim 1, wherein the instructions cause a timing device associated with the processing device to measure a time interval and the measured time interval is used in determining if the television has remained in the second channel tuning state for a length of time that exceeds a length of time during which the television was in the first channel tuning state.

6. The non-transitory, computer readable media as recited in claim 5, wherein the instructions cause the timing device to be started in response to the television being caused to exit from the first channel tuning state and enter into the second channel tuning state.

7. A non-transitory, computer readable media having instructions stored thereon which, when executed by a processing device, causes the processing device to perform steps comprising:
causing a set-top box to exit from first channel tuning state and enter into a second channel tuning state;
determining if the set-top box remains in the second channel tuning state for a length of time that exceeds a length of time during which the set-top box was in the first channel tuning state; and
when it is determined that the set-top box has remained in the second channel tuning state a length of time that exceeds a length of time during which the set-top box was in the first channel tuning state, storing in a memory associated with the processing device an association between a predetermined input element that is coupled to the processing device and channel tuning commands to be transmitted to the set-top box whereupon a subsequent activation of the predetermined input element will cause the channel tuning commands to be transmitted to the set-top box for the purpose of placing the set-top box into the second channel tuning state;
wherein the channel tuning commands to be transmitted to the set-top box are determined by using an increment of a channel number associated with the first media tuning state when a channel up input element that is coupled to the processing device was activated to cause the set-top box to exit from the first channel tuning state and enter into the second channel tuning state or by using a decrement of the channel number when a channel down input element that is coupled to the processing device was activated to cause the set-top box to exit from the first channel tuning state and enter into the second channel tuning state.

8. The non-transitory, computer readable media as recited in claim 7, wherein the channel tuning commands are transmitted to the set-top box from a controlling device.

9. The non-transitory, computer readable media as recited in claim 7, wherein the channel tuning commands are transmitted to be received via an infrared receiver of the set-top box.

10. The non-transitory, computer readable media as recited in claim 7, wherein the channel tuning commands are transmitted to be received via a radio frequency receiver of the set-top box.

11. The non-transitory, computer readable media as recited in claim 7, wherein the instructions cause a timing device associated with the processing device to measure a time interval and the measured time interval is used in determining if the set-top box has remained in the second channel tuning state for a length of time that exceeds a length of time during which the set-top box was in the first channel tuning state.

12. The non-transitory, computer readable media as recited in claim 11, wherein the instructions cause the timing device to be started in response to the set-top box being caused to exit from the first channel tuning state and enter into the second channel tuning state.