ALTERNATIVE METHOD OF AUTOMATIC CABLE BOX SET
BACKGROUND OF THE INVENTION
The present invention relates to the automatic programming of a control device to enable the control device to remotely control another device through infrared signals.
As televisions, video cassette recorders, and other household devices have become more and more common, the number which can be controlled remotely has also increased. Many of these devices use an infrared signal emitter (in combination with a receiver connected to the device itself) as the "remote control." Typically, the manufacturers of the device have included such a remote control with the device. Naturally, the manufacturer's remote control has been capable of controlling its associated device. However, because different manufacturers use different infrared code sets, one manufacturer's remote control typically cannot control another manufacturer's device. As the number of remotely controllable devices in a user's household has increased, so has the number of remote controls. Many users have found this to be objectionable and sometimes confusing.
One solution offered to this problem has been the "universal remote." A universal remote is a device capable of remotely controlling multiple devices by using multiple infrared code sets. One common example is a remote control which can remotely control a television as well as a video cassette recorder. Universal remotes achieve this functionality by being programmable.
The user can input various number codes to select which infrared code sets the remote control will use in controlling the devices.
Programming universal remotes is often confusing and many users have found this to be a difficult task. A simpler and more automatic method of determining the correct infrared code set would be an improvement in the art.
SUMMARY OF THE INVENTION
An embodiment of the present invention is a method for programming a control device for selection, from a plurality of infrared (IR) code sets, an IR code set for subsequent control of IR signal communication with a video device such as a video cassette recorder (VCR). In the case where the video device is a VCR, each IR code set is for communicating with a different corresponding VCR. To this end, each such VCR has a tuner, which, when tuned to an actual channel of broadcast video signals, provides video signals derived from the actual channel to a video output thereof. A predetermined series of signals is provided to the VCR using a selected IR code set, which is selected from one of the provided IR code sets. The video output of the VCR is monitored for predetermined signal conditions. An IR code set is then selected for subsequent signal communication with the VCR. The IR code set which is selected is the one
which results in the predetermined signal conditions. With this arrangement, it is possible to automatically determine the proper IR code set for communication between a remote controller and any of a number of VCRs automatically with virtually no user intervention.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a system according to an embodiment of the invention;
FIG. 2 is a flow diagram illustrating a method according to an embodiment of the invention;
FIG. 3 is a truth table illustrating the logical analysis employed by an embodiment of the invention.
DETAILED DESCRIPTION The present invention describes a system for automatically selecting one IR code set which is appropriate for remotely controlling a particular video device, such as a cable box, from a plurality of IR code sets stored in, for example, a VCR. The system sends a series of commands to the particular video device using a selected test IR code set and monitors the results of those commands by examining the video signal coming from the video device. These results are analyzed to determine if the test IR code set successfully controls the video device. If the test IR code set does not successfully control the video device, then the system cycles through all of the stored IR code sets as the test IR code set until an IR code set which successfully controls the video device is found.
FIG. 1 depicts one embodiment of the present invention where a tuner 10 receives television signals from an outside source and outputs a video signal derived from the television signals on the channel to which the tuner 10 is set. The tuner 10 can be set either manually by the user via input 12 or remotely via a receiver 14. The video signal goes to a television display 16 and also to a XDS decoder 18.
XDS signals are transmitted by the broadcasting source in the vertical blanking interval (VBI) portion of the video signal and contain digital information, including information about the video signal in which they are contained. The XDS decoder 18 filters the video signal from the tuner 10 so that an XDS signal is isolated, if present. By analyzing the XDS signal, the XDS decoder 18 can derive various information about the video signal such as the channel number or other channel identifier for the channel to which the tuner 10 is set. In alternative embodiments, VBI decoders that look at a different portions of the VBI for data signals other than XDS signals are used. In any case, the VBI decoder is set to decode a portion of the video signal from which the channel number or channel identifier for the channel to which the tuner 10 is set can be derived. Other embodiments may be employed that do not use a VBI decoder, as long the
controller 20 is able to receive information identifying the channel to which the tuner 10 is tuned at a particular time. The XDS decoder 18 sends the XDS signal information to a controller 20. The controller
20 is connected to memory 22 in which it can store XDS signal information, comparison results, or any other information. The controller 20 is also connected to storage 24 from which it can access previously stored IR code sets. Storage 24 can be any data .storage device, but preferably is a ROM or other non-volatile memory. Using an IR code set from the storage 24, the controller can cause an emitter 26 to send appropriate IR signals to the receiver 14 in order to remotely control the tuner 10. Using a process described below, the controller 20 sends several commands to the tuner 10 and stores the results in the memory 22. After storing various XDS signals and comparison results in the memory 22, the controller analyzes this information to determine whether the current IR code set is the IR code set which is the correct set to remotely control the tuner 10. This allows the controller to automatically select the correct IR code set for remotely controlling the tuner 10.
In an embodiment such as the one described above and in FIG. 1, the system can determine the correct IR code set for remote control of the video device using a series of operations such as those described below and shown in FIG. 2. First, in block 100, the user manually inputs a predetermined channel into the tuner 10 via the input 12. This channel is the "Base Channel." The Base Channel must be a channel which is identifiable by the controller, such as one which contains an XDS signal in the VBI. The channel for the Public Broadcast Station (PBS) in the user's area is a preferred choice for the Base Channel because PBS stations presently broadcast an XDS signal in the VBI throughout the country.
In block 110, the controller then retrieves the first test IR code set to test from the storage 24. Using the XDS decoder 18, in block 105, the controller 20 then determines the XDS signal information of the current video signal, which is the Base Channel, and stores the information in the memory 22. This is the "Base Signal." The controller then sends, in block 115, via the emitter 26, to the receiver 14, an IR signal which is appropriate to the current test IR code set to set the channel of the timer 10 to some predetermined channel. This predetermined channel is the "Test Channel."
Also in block 115, using the XDS decoder 18, the controller 20 determines the XDS signal information of the current channel and stores this in the memory 22. This result is "Testl ." The controller 20 compares Testl to the Base Signal. If they are different, meaning the channel of the tuner 10 was successfully changed, then the current IR code set is the correct set. If Testl and the Base Signal are the same as is discussed in more detail below, the analysis must continue. The result of the comparison of Testl to the Base Signal is stored in the memory 22.
The controller 20, in block 120, then sends via the emitter 26 to the receiver 14 an IR signal appropriate to the current IR code set to increment the channel of the tuner 10. Using the XDS decoder 18, the controller 20 determines the XDS signal information of the current channel and stores the information in the memory 22. This result is "Test2." The controller 20 then compares Test2 to the Base Signal and stores the result of this comparison in the memory 22. This result is "Result2." Similar to Resultl and as discussed below, Result2 is not determinative of whether the current test IR code set is the correct code set, either. Next, in block 125, the controller 20 then sends via the emitter 26 to the receiver 14 an
IR signal appropriate to the current IR code set to again set the channel of the tuner 10 to the Test Channel. Using the XDS decoder 18, the controller 20 determines the XDS signal information of the current channel and stores this in the memory 22. This result is "Test3." The controller 20 then compares Test3 to the Base Signal and stores the result in the memory 22. This result is "Result3." Now, the combination of Resultl, Result2 and Result3, as explained below, is determinative of whether the current test IR code set is the correct code set.
In block 130, the controller analyzes the results of the three comparisons, between Testl and the Base Signal (Resultl), Test2 and the Base Signal (Result2), and Test3 and the Base Signal (Result3). As described below and shown in the FIG.3, if Testl is different from the Base Signal, the current IR code set is the correct set and the analysis is complete. In this case, the Yes path from block 135 is taken and the process is complete in block 140. If Testl and the Base Signal are the same, the analysis must continue. If Test2 and the Base Signal are different and Test3 and the Base Signal are the same, then the current IR code set is the correct set and the process is complete. Again, in this case, the Yes path from block 135 is taken and the process is complete in block 140. Any other combination of results indicates that the current IR code set is not the correct IR code set.
After completing this analysis, if the current IR code set is not correct, the No path from block 135 is taken. But first, the controller 20 will reset the tuner 10 to the Base Channel if necessary. If the tuner 10 was successfully incremented but the IR code set was not correct (CASE 3 or CASE 6 in FIG. 3), then the tuner 10 is set to some channel other than the Base Channel. To set the tuner 10 to the Base Channel the controller 20 sends via the emitter 26 to the receiver 14 an IR signal which will decrement the channel to which the tuner 10 is set. This will return the tuner 10 to the Base Channel.
The No path from block 135 is then taken and the controller 20 will return to block 110 and select the next IR code set from the storage 24. The controller 20 will then begin the process again by using the XDS decoder 18 to determine the XDS of the current channel, now the Base Channel once again, and store this in the memory 22 as the Base Signal. The process continues
from that point as before, storing Testl, Test2, Test3, Resultl , Result2, and Result3 to determine if the new IR code set is the correct IR code set. FIG. 3 depicts a Truth Table showing the logical analysis used in the present invention.
In order to determine whether the current IR code set is the correct IR code set, all three commands (SET CHANNEL - CHANNEL UP - SET CHANNEL) are necessary. One command is insufficient because there are several unknown variables. In particular, some television tuners will respond correctly to the same channel up commands, but will not respond to the same set channel commands. When the user sets the channel of the tuner 10 to the Base Channel, the local channel number for the Base Channel may be the same as the predetermined Test Channel. If the result of a single command to set the channel of the tuner 10 to the Test Channel were relied upon, the incorrect IR code set might be selected. The channel input by the user, the Base Channel, might be the same as the Test Channel, giving the illusion that the command to set the channel of the tuner 10 was successful.
In addition, even if the current IR code set is not the correct IR code set, there may be some overlap between this incorrect IR code set and the video device's correct IR code set. This is because some IR code sets use the same IR code to indicate the signal for "channel up" (the command which increments the channel to which the tuner is set by one) and also for "channel down," even though other codes do not correspond. As a result, sending the a "channel up" signal to the tuner may not be conclusive. The IR code set may not be the correct IR code set for the VCR, but the "channel up" signal may be the same and the channel will be incremented. By using both commands, the "set channel" command and the "channel up" command, a unique and determinative result can be achieved. In the complete logical analysis, there are six possible situations, as shown in FIG. 3.
CASE 1 is where the Base Channel and the Test Channel are the same and the IR code set is the correct IR code set. CASE 2 is where the Base Channel and the Test Channel are the same, but the IR code set is incorrect for the video device and none of the commands are functional. CASE 3 is where the Base Channel and the Test Channel are the same, the IR code set is incorrect, but the "channel up" command is still functional. CASE 4 is where the Base Chaimel and the Test Channel are different and the IR code set is the correct IR code set. CASE 5 is where the Base Channel and the Test Channel are different, the IR code set is incorrect for the video device and none of the commands are functional. CASE 6 is where the Base Channel and the Test Channel are different, the IR code set is incorrect, but the "channel up" command is still functional. By using a series of commands the two cases where the IR code set is correct for this video device (CASE 1 and CASE 4) can be determined.
After sending the signal to set the tuner 10 to the Test Channel and determining the channel of the tuner 10 did not change, it is unknown if the channel did not change because the
IR code set is incorrect or because, though the IR code set is correct, the Test Channel .and the Base Channel are the same. If the channel did change after sending the signal to set the channel to the Test Channel, then the analysis is complete. The only possibility is that this is CASE 4, where the Base Channel and the Test Channel are different and the IR code set is correct. Now five possibilities remain, CASE 1, CASE 2, CASE 3, CASE 5 and CASE 6. After sending the "channel up" signal and comparing the XDS signal information to the Base Signal, if the channel was successfully changed, CASE 2 and CASE 5 are eliminated. However, there is no distinction between CASE 1 , CASE 3 and CASE 6. The final step is to send the signal to set the channel to the Test Channel again. If the channel of the tuner 10 is successfully set to the Test Channel and the channel of the tuner 10 was previously successfully incremented, that is Test2 and the Base Signal were different and Test3 and the Base Signal were the same, then the current IR code set is the correct set for this video device. The results of each of these comparisons, Testl to Base Signal, Test2 to Base Signal,
Test3 to Base Signal (also stored as Resultl, Result2, Result3), are necessary, except in CASE 4. In CASE 2 and CASE 5, the channel of the tuner 10 will never change because the IR code set is completely incompatible with the video device. As a result, the comparison of Testl to the Base Signal will indicate that they are the same and the comparison of Test3 to the Base Signal will indicated that they are the same. To distinguish CASE 2 and CASE 5 from CASE 1, the comparison of Test2 to the Base Signal is necessary. In CASE 1, Test2 and the Base Signal are different, while in CASE 2 and CASE 5, Test2 and the Base Signal are the same. Similarly, CASE 1, CASE 3, and CASE 6 have the same results from the first two tests (Testl and the Base Signal are the same, Test2 and Base Signal are different). To distinguish CASE 1, a final "set channel" command is necessary. In CASE 1, the channel will be successfully returned to the Base Channel (Test3 is the same as Base Signal), while in CASE 3 and CASE 6, the channel will not change (so Test3 remains different from Base Signal) because the "set channel" command does not work. These comparisons allow the identification of the correct IR code set.
The embodiment and process described are only one example of how the logical analysis described can be used to determine the correct IR code set. Variations on this embodiment are possible so long as they utilize the same logical analysis of a combination of commands to isolate the correct IR code set.