Abstract:
A codeset having function-code combinations is provisioned on a controlling device to control functions of an intended target device. Input is provided to the controlling device which designates a function to be controlled on the intended target device. From a plurality of codes that are each associated with the designated function in a database stored in a memory of the controlling device a first code that is determined to be valid for use in controlling the designated function on the intended target device is selected. When the codeset is then provisioned on the controlling device, the provisioned codeset includes as a function-code combination thereof the designated function and the first code.

Description:
RELATED APPLICATION INFORMATION 
       [0001]    This application claims the benefit of and is a continuation of U.S. application Ser. No. 11/655,419, filed on Jan. 19, 2007, the disclosure of which is incorporated herein by reference in its entirety. 
     
    
     TECHNICAL FIELD 
       [0002]    The disclosed embodiments relate to dynamic linking of multiple codesets for generating operational signals, such as those transmitted from a universal remote control device. 
       BACKGROUND 
       [0003]    A universal remote control device transmits operational signals to control one or more electronic consumer devices such as TVs, VCRs, cable set-top boxes, and CD/DVD players. Each operational signal communicates a keycode associated with a selected electronic consumer device. Each keycode corresponds to a function of the selected electronic consumer device, such as power on, power off, volume up, volume down, play, stop, select, channel up, channel down, etc. A particular brand and make of electronic consumer device responds to operational signals containing a particular set of keycodes and performs the corresponding functions. 
         [0004]    In order to provide the functionality of a universal remote control device, various types of keycodes are stored in codesets as a codeset database format. Each codeset is identified by a three digit device code associated with a particular brand and make of an electronic consumer device. 
         [0005]    There are more than ten thousand codesets used in the market. Because of the large number of different electronic consumer devices, the amount of memory space required to store the entire codeset database is large. Various compression schemes are used to store the codeset database with reduced memory. Typically, a universal remote control device stores less than one thousand codesets due to limited memory space. 
         [0006]    After a universal remote control device has been manufactured, it is likely that the remote control does not have a particular codeset that contains all the keycodes corresponding to all functions of a particular brand and make of a consumer electronic device. For instance, the remote control device is able to control the power, volume, and channel of a television when it is programmed to use codeset # 1 . However, the remote control device cannot control the picture-in-picture function of the TV when it is programmed to use codeset # 1 . On the other hand, the remote control device is able to control the picture-in-picture function of the TV when it is programmed to use codeset # 2 . However, when the remote control device is programmed to use codeset # 2 , it cannot control the power, volume, and channel of the TV. 
         [0007]    Some remote control devices provide additional programmable keys on the remote control device to allow the user to define his/her own desired keycodes. However, the number of programmable keys available on a remote control device is limited. The programmable keys are therefore usually used for advanced functions. Some other remote control devices provide a “key mover” feature which allows a user to reassign a function associated with one key to another key. The “key mover” feature increases flexibility, but it does not solve the problem that a particular codeset does not contain all keycodes corresponding to all functions of a selected electronic consumer device. 
         [0008]    Sometimes it is also desirable for a user to be able to control multiple electronic consumer devices without having to reprogram the universal remote control device. 
         [0009]    For instance, a user may want to be able to control the power of multiple devices types. The “punch through” feature works for a predefined set of keys, typically, the TV channel and volume up/down keys. Another feature known as “double-press” is available on some remote control devices. The “double-press” feature of the power key is, however, hard to use and inflexible, because the user either has to turn on the power of all the devices or has to turn off the power of all the devices by double-pressing the power key quickly. 
         [0010]    A solution is desired. 
       SUMMARY 
       [0011]    A universal remote control device stores various codesets to control various types of electronic consumer devices. A user programs the universal remote control device to use a selected codeset to control a selected electronic consumer device. Typically, a universal remote control device stores a few hundred codesets (less than one thousand codesets) due to limited memory space. Therefore, it is likely that a universal remote control device does not have a particular codeset that contains all the keycodes corresponding to all functions of a particular brand and make of electronic consumer device. Moreover, it is likely that a universal remote control device is not able to control different types of electronic consumer devices without being programmed with different codesets. 
         [0012]    In one example, a user programs a universal remote control device to use codeset # 1  that contains a set of keycodes to control a particular brand and make of electronic consumer device. The selected electronic consumer device responds to operational signals communicating the keycodes and performs the corresponding functions. However, the selected electronic consumer device does not respond and perform a desired function when the user presses KEY X on the remote control device. 
         [0013]    In one embodiment, the user presses a predefined sequence of keys on the remote control device to search (sometimes called “auto scan”) for the keycode associated with KEY X for the selected electronic consumer device. Suppose that the keycode is found in codeset # 2 . The user then presses KEY X in combination with another predefined key on the remote control device to “dynamically link” the keycode in codeset # 2  to codeset # 1 . A keycode link routine executing on a processor inside the remote control device generates keycode link information and stores the keycode link information in a volatile memory space. The keycode link information includes a codeset identifier of codeset # 2  and a key identifier of KEY X associated with the keycode. Thereafter, when the user presses KEY X, the remote control device uses the keycode link information to access codeset # 2  and then generates an operational signal communicating the keycode associated with KEY X. The selected electronic consumer device responds to the operational signal and performs the desired function. 
         [0014]    In another example, a user programs a universal remote control device to use codeset # 1 . Codeset # 1  contains a set of keycodes to control a first electronic consumer device. However, the user also wishes to control a second electronic consumer device that performs a desired function without reprogramming the universal remote control device with a different codeset. Suppose that KEY Y corresponds to the desired function. 
         [0015]    In one embodiment, the user presses a predefined sequence of keys on the remote control device to search for (“auto scan” for) the keycode that corresponds to the desired function of the second electronic consumer device. Suppose that the keycode is found in codeset # 2 . The user then presses KEY Z in combination with another predefined key on the remote control device to “dynamically link” the keycode in codeset # 2  to codeset # 1 . A keycode link routine executing on a processor inside the remote control device generates keycode link information and stores the keycode link information in a volatile memory space. In this example, KEY Y is used to control the first electronic consumer device for the desired function. The user links both KEY Z and the keycode associated with KEY Y in codeset # 2  to codeset # 1  such that KEY Z can be used to control the second electronic consumer device for the same function. Therefore, the keycode link information includes a codeset identifier of codeset # 2 , a key identifier of KEY Y, and a key identifier of KEY Z. Thereafter, when the user presses KEY Z, the remote control device uses the keycode link information to access codeset # 2  and then generates an operational signal communicating the keycode associated with KEY Y. The second electronic consumer device responds to the operational signal and performs the desired function. 
         [0016]    Other embodiments and advantages 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 
         [0017]    The accompanying drawings, where like numerals indicate like components, illustrate embodiments of the invention. 
           [0018]      FIG. 1  illustrates a system in accordance with one novel aspect. 
           [0019]      FIG. 2  is a simplified diagram of a circuit within a universal remote control device. 
           [0020]      FIG. 3  is a detailed diagram of a device index table, a codeset index table, a protocol table, a key index table, and two codesets of  FIG. 2 . 
           [0021]      FIG. 4  illustrates an example of dynamic linking of two codesets in accordance with one novel aspect. 
           [0022]      FIG. 5  is a flow chart of a method of dynamic linking of two codesets. 
           [0023]      FIG. 6  is a flow chart of a method of using keycode link information to access dynamically linked codesets. 
           [0024]      FIG. 7  illustrates another example of dynamically linked codesets involved in the methods of  FIGS. 5 and 6 . 
       
    
    
     DETAILED DESCRIPTION 
       [0025]    Reference will now be made in detail to some embodiments of the invention, examples of which are illustrated in the accompanying drawings. 
         [0026]      FIG. 1  is a diagram of a system  1  in accordance with, one novel aspect. System  1  includes a remote control device  2 , a first electronic consumer device  3 , and a second electronic consumer device  4 . A user uses remote control device  2  to control a selected electronic consumer device. Although an ordinary handheld infrared remote control device is depicted, the remote control device can take other forms and may, for example, be a personal digital assistant (PDA), or personal computer or any other suitable device. In the example of  FIG. 1 , the user may press key  5  on remote control device  2  to turn on/off the power of the first electronic consumer device  3 , a television. When the user presses key  5 , remote control device  2  emits an operational signal  6  from a LED (light emitting diode)  7 . Operational signal  6  is transmitted to an infrared receiver  8  of TV  3 . Infrared receiver  8  interprets operational signal  6  and takes appropriate action, which in this case is to turn on the TV if it is off, or to turn off the TV if it is on. 
         [0027]    Remote control device  2  of  FIG. 1  is a universal remote control device. The user programs remote control device  2  to send out operational signals to control several types of electronic consumer devices, such as TVs, VCRs, cable set-top boxes, and CD/DVD players. For example, to program remote control device  2  to control a particular brand and make of TV  3 , the user first presses device key  9  for device type “TV”, and then inputs a three digit device code. Thereafter, when the user presses key  5 , operational signal  6  is transmitted to control TV  3 . Similarly, to program remote control device  2  to control a particular brand and make of cable set-top box  4 , the user first presses the device key  10  for device type “cable”, and then inputs a three digit device code. Thereafter, when the user presses key  5 , operational signal  11  is transmitted to control cable set-top box  4 . 
         [0028]      FIG. 2  is a simplified diagram of a circuit within remote control device  2  of  FIG. 1 . The circuit of  FIG. 2  includes a set of keys  12 , a microcontroller integrated circuit  13 , and an infrared LED  14 . Microcontroller  13  includes a processor  15 , a read-only memory (ROM)  16 , and a random-access memory (RAM)  17 . ROM  16  stores software program  18  executable by processor  15  and a codeset database  19  (sometimes referred as a codeset library). Program  18  includes a keycode link routine  20 . Codeset database  19  includes a key index table  21 , a codeset index table  22 , a set of codesets  23 ,  24  (for instance, codeset TV 000  and TV 001  as illustrated), and a protocol table  25 . RAM  17  stores a device index table  26 , and keycode link information  27 . Microcontroller  13  performs key-scanning and determines the row and column coordinates of any key that is pressed by the user. 
         [0029]      FIG. 3  is a detailed diagram of device index table  26 , codeset index table  22 , protocol table  25 , keycode index table  21 , and codeset  23  of  FIG. 2 . When a user presses a key on remote control device  2  of  FIG. 1 , processor  15  of  FIG. 2  accesses device index table  26  to obtain the three digit device code that the user has programmed (for instance, 000 for TV device type). Processor  15  then accesses codeset index table  22  to obtain the byte  0  address of codeset  23  corresponding to the three digit device code (for instance, codeset TV 000  as illustrated). Processor  15  also accesses key index table  21  to obtain the offset value of the flag bit (in the flag bytes of codeset  23 ) corresponding to the key coordinates that the user has pressed. Using the offset value, processor  15  identifies the flag bit in codeset  23  and determines whether the keycode of the pressed key is present in codeset  23 . The keycode of the pressed key is present if the flag bit is of value  1 . The keycode of the pressed key is not present if the flag bit is of value  0 . If the keycode is found in codeset  23 , then processor  15  uses the keycode to generate an operational signal according to the timing and modulation scheme information of protocol table  25  (sometimes the timing and modulation scheme information is included within the keycode). 
         [0030]      FIG. 4  is a diagram of a device index table  26 , a codeset index table  22 , two codesets  28 ,  29 , keycode link information  27 , and electronic consumer device TV  3  that are involved in a method of dynamic linking of two codesets in accordance of one novel aspect.  FIG. 5  is a flow chart of the dynamic linking method that links codesets  28  and  29 .  FIG. 6  is a flow chart of accessing the linked codesets  28  and  29  using keycode linking information  27 . 
         [0031]    In the example of  FIG. 4 , remote control device  2  is programmed to control a particular brand and make of TV  3  using codeset  28  (TV 123 ). Codeset TV 123  contains various keycodes (for instance, keycodes # 1 -# 4  are illustrated) corresponding to different keys on remote control device  2 . Suppose that keycode # 1  is associated with the volume up (VUP) key, keycode # 2  is associated with the volume down (VDN) key, keycode # 3  is associated with the picture-in-picture (PIP) key and keycode # 4  is associated with the split-picture (SPLIT) key. When a user presses the VUP key on remote control device  2 , processor  15  of  FIG. 2  accesses codeset TV 123  and determines whether the keycode of the pressed VUP key is present in codeset TV 123 . In this particular example, the flag byte has a value of 01100110, with flagbit # 1 =0, flagbit # 2 =1, flagbit # 3 =1, and so forth. Assume that the VUP key is indicated by flagbit # 2  according to the offset value of key index table  21  of  FIG. 3 . Because flagbit # 2  has a digital value of 1, processor  15  determines that keycode # 1  associated with the VUP key is present in codeset TV 123  and uses keycode # 1  to generate an operational signal to increase the volume of TV  3 . Similarly, when the user presses the PIP key, processor  15  accesses codeset TV 123  and determines whether the PIP key is present in codeset TV 123 . Assume that the PIP key is indicated by flagbit # 6  according to the offset value of key index table  21  of  FIG. 3 . Because flagbit # 6  has a digital value of 1, processor  15  determines that keycode # 3  associated with the PIP key is present in codeset TV 123  and uses keycode # 3  to generate an operational signal to display a picture-in-picture screen on TV  3 . 
         [0032]    In one situation, most of the functions of TV  3  are performed correctly by pressing the corresponding keys on remote control device  2  that is programmed to use codeset TV 123 . For instance, TV  3 &#39;s power is turned on/off when the power key is pressed, its channel goes up/down when the channel up/down key is pressed, and its volume goes up/down when the volume up/down key is pressed. However, the picture-in-picture screen is not displayed on TV  3  when the PIP key is pressed. Although codeset TV 123  includes keycode # 3  associated with the PIP key, the operational signal generated using keycode # 3  in codeset TV 123  does not perform the desired picture-in-picture function for TV  3 . In the example of  FIG. 4 , there is another codeset  29  (TV 345 ) that is also stored in ROM  18  of remote control device  2 . Codeset TV 345  contains various keycodes including keycode # 3  associated with the PIP key. In another situation, most of the functions of TV  3  are not performed correctly by pressing the corresponding keys on remote control device  2  that is programmed to use codeset TV 345 . However, the picture-in-picture screen is displayed on TV  3  when the PIP key is pressed. Therefore, if the user programs remote control device  2  to use codeset TV 123 , then most of the keys on remote control device  2  work properly except for the PIP key. On the other hand, if the user programs remote control device  2  to use codeset TV 345 , then the PIP key works properly except for most of the other keys. 
         [0033]      FIG. 5  illustrates a method of dynamic linking of codeset TV 123  and TV 345  such that the PIP key also works properly for remote control device  2  that is programmed to use codeset TV 123 . In the example of  FIG. 5 , remote control device  2  is programmed to use codeset TV 123  to control TV  3  and most of the keys work properly except for the PIP key. In the first step  30  of  FIG. 5 , the user presses and holds the TV device key, and then presses and releases the EXIT key to enter a search mode. In step  31 , the user presses and holds the EXIT key, and then presses and releases the PIP key to start automatic searching for keycodes associated with the PIP key. During the auto search (also called “auto scan”), the remote control device transmits operational signals corresponding to keycodes associated with the PIP key starting from codeset TV 000 , TV 001 , TV 002 , and so forth. There is a 5 second gap between successive transmissions. When a picture-in-picture screen appears on TV  3 , the user stops the auto search by pressing the EXIT key (step  32 ). An identifier of the codeset just transmitted (for instance, TV 345 ) is saved in a temporary location. The user then decides either to restart or to stop the search by toggling the EXIT key. In order to link the keycode associated with the PIP key, the user presses and holds the MENU key, and then presses and releases the PIP key (step  33 ). The user continues this searching and linking operation by going back to step  31 . Otherwise, in step  34 , the user exits the search mode by pressing the TV device key and the EXIT key together. 
         [0034]    When two codesets are dynamically linked in step  33  of  FIG. 5 , keycode link routine  20  generates and stores keycode link information  27  in RAM  17  of  FIG. 2 . In the example of  FIG. 4 , keycode link information  27  includes the programmed codeset identifier # 1  (for instance, TV 123 ), the linked codeset identifier # 2  (for instance, TV 345 ), and a keycode key identifier (for instance, value  21  as illustrated) of the linked PIP key. A key identifier is a value that represents a key on a remote control device. The key identifier is used to determine the coordinate of the pressed key in the key index table. In the example of  FIG. 4 , keycode link information  27  also includes a substitute flag byte, with a new value of 01100000 as compared to the original value of 01100110. In the substitute flag byte, flagbit # 6  has a new digit value of 0 indicating that the keycode associated with the PIP key in codeset TV 123  no longer exists (is no longer to be used). 
         [0035]      FIG. 6  is a flow chart of a method of accessing the linked codesets using keycode link information  27  after codesets TV 123  and TV 345  have been dynamically linked. In one scenario, the user presses the VUP key in step  35 . In the next step  36 , processor  15  determines whether the programmed codeset TV 123  is dynamically linked by examining keycode link information  27 . In this example, codeset TV 123  is linked because keycode link information  27  contains codeset identifier # 1 , TV 123 . Processor  15  then uses the substitute flag byte to access codeset TV 123  in step  37 . Because flagbit # 2  has a digital value of 1 in the substitute flagbyte, processor  15  determines in step  38  that keycode # 1  associated with the VUP key is present in codeset TV 123 . In step  39 , processor  15  uses keycode # 1  in TV 123  to generate operational signal # 1  of  FIG. 4  to increase the volume of TV  3 . 
         [0036]    In another scenario, the user presses the PIP key in step  35 . Processor  15  then determines (step  36 ) that the programmed codeset TV 123  is linked. Processor  15  then uses the substitute flag byte to access codeset TV 123  in step  37 . Because flagbit # 6  has a digital value of 0 in the substitute flag byte, processor  15  determines in step  38  that keycode # 3  associated with the PIP key in codeset TV 123  is no longer present (is no longer to be used). In step  40 , processor  15  uses the codeset identifier # 2  in keycode link information  27  to access codeset TV 345 . In step  41 , processor  15  uses the keycode key identifier in keycode link information  27  to obtain the key coordinate of the PIP key. Because the key coordinate matches the pressed PIP key, processor  15  then uses the keycode key identifier to determine that keycode # 3  associated with the PIP key is present in codeset TV 345 . Finally, in step  39 , processor  15  uses keycode # 3  in codeset TV 345  to generate operational signal # 2  of  FIG. 4  to display a picture-in-picture screen on TV  3 . Thus, without reprogramming remote control device  2 , both VUP key and PIP key perform their corresponding functions properly when remote control device  2  is programmed to use codeset TV 123 . 
         [0037]    In the above example, only one keycode associated with the PIP key in codeset TV 345  is linked to codeset TV 123 . Because the picture-in-picture function is closely related to the split-screen function, it is very likely that the keycode associated with the SPLIT key in codeset TV 345  also works for the same electronic consumer device TV  3 . 
         [0038]    In one method, the PIP key and the SPLIT key are predefined such that they belong to the same cluster of keys. A cluster is a set of keys that is associated with a given set of functions. If a key in a cluster is in two different codesets, then there is a high probability that other keys in the cluster will also be present in both codesets. When the PIP key in codeset TV 345  is linked to codeset TV 123 , the SPLIT key, as a member of the same cluster of keys, is automatically linked to codeset TV 123  as well. As illustrated in  FIG. 4 , keycode link information  27  also includes the SPLIT key identifier. When the user presses the SPLIT key, processor  15  follows the steps illustrated in  FIG. 6  and uses keycode # 4  in codeset TV 345  to generate an operational signal to display a split screen on TV  3 . 
         [0039]      FIG. 7  illustrates another example of dynamic linking of two codesets in accordance with one novel aspect.  FIG. 7  is a diagram of device index table  26 , codeset index table  22 , two codesets  43 ,  44 , keycode link information  27 , and two electronic consumer devices  45 ,  46  that are involved in the dynamic linking method. 
         [0040]    In the example of  FIG. 7 , remote control device  2  is programmed with codeset CABLE 301  to control cable set-top box  46 . The user uses remote control device  2  to turn on/off the power and to change the channel selected by cable set-top box  46 . However, in order to turn on/off the power of TV  45 , the user has to reprogram remote control device  2  to use codeset TV 101  by pressing the TV device key. The user follows the steps in  FIG. 5  to link the two codesets CABLE 301  and TV 101 . The user first follows step  30  of  FIG. 5  to enter the search mode. In step  31 , the user presses the EXIT and the POWER key together to start automatic searching for keycodes associated with the POWER key. When TV  45  is powered on, the user stops the auto search by pressing the EXIT key (step  32 ). An identifier of the codeset just transmitted (for instance, TV 101 ) is saved in a temporary location. In step  33 , to link the keycode associated with the POWER key, the user presses and holds the MENU key, and then presses and releases a key other than the power key (for instance, a GREEN key on the remote control device that is ordinarily not used). The user finally exits the search mode by pressing the TV device key and the EXIT key together (step  34 ). 
         [0041]    In this particular example, because the POWER key is used to control the power of cable set-top box  46 , the user links the keycode of the POWER key in TV 001  with a different physical key to control TV  45 . When keycode link routine  20  executes, it stores keycode link information  27  in RAM  17  of  FIG. 2 . In the example of  FIG. 7 , keycode link information  27  includes the programmed codeset identifier 
         [0042]    # 1  (for instance, CABLE 301 ), the linked codeset identifier 
         [0043]    # 2  (for instance, TV 101 ), a keycode key identifier (for instance, value  6  as illustrated) of the linked POWER key, and a physical key identifier (for instance, value  32  as illustrated) of the GREEN key. Keycode link information  27  also includes a substitute flag byte which remains unchanged in this example. 
         [0044]    Following the steps illustrated in  FIG. 6 , when the user presses a key (for instance the channel up key) on remote control device  2  that is programmed to use codeset CABLE 301 , processor  15  first determines that codeset CABLE 301  is linked to another codeset because keycode link information  27  contains the codeset identifier # 1 , CABLE 301 . 
         [0045]    Processor  15  then accesses CABLE 301  using the substitute flag byte in keycode link information  27 . In this example, processor  15  determines that keycode # 1  associated with the CHUP key is present in CABLE 301 . In step  39  of  FIG. 6 , processor  15  uses keycode # 1  in codeset CABLE 301  to generate operational signal # 1  of  FIG. 7  to increase the channel number selected by cable set-top box  46 . 
         [0046]    When the user later presses the GREEN key, processor  15  also accesses CABLE 301  using the substitute flag byte and determines that the keycode for the GRENN key is not present in codeset CABLE 301 . Processor  15  then uses the codeset identifier # 2  in keycode link information  27  to access codeset TV 101 . In step  41 , processor  15  uses the physical key identifier in keycode link information  27  to determine the key coordinate of the GREEN key. Because the key coordinate matches the pressed GREEN key, processor  15  then uses the keycode key identifier to determine that keycode# 3  associated with the POWER key is present in codeset TV 101 . Finally, in step  39 , processor  15  uses keycode # 3  in codeset TV 101  to generate operational signal # 2  of  FIG. 7  to turn on/off the power of TV  45 . 
         [0047]    Although certain specific exemplary embodiments are described above in order to illustrate the invention, the invention is not limited to the specific embodiments. 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.