U.S. patent application number 17/668160 was filed with the patent office on 2022-08-25 for star cluster codeset database for universal remote control devices.
The applicant listed for this patent is Universal Electronics Inc.. Invention is credited to Oscar C. Miramontes.
Application Number | 20220270474 17/668160 |
Document ID | / |
Family ID | 1000006330372 |
Filed Date | 2022-08-25 |
United States Patent
Application |
20220270474 |
Kind Code |
A1 |
Miramontes; Oscar C. |
August 25, 2022 |
STAR CLUSTER CODESET DATABASE FOR UNIVERSAL REMOTE CONTROL
DEVICES
Abstract
A keycode data structure includes a device type byte, a set of
keycodes, system code information, a system data byte, a protocol
pointer that points to a protocol table and a number of flagbytes
that are used to index a particular key among the keycodes. The
keycode data structure also contains a plurality of keycode data
structure pointers (KDSPs). Keycode data structures are linked
together using KDSPs. A special value in the keycode data structure
is used to indicate that the keycode data structure contains
multiple KDSPs. The number of pointers is stored in a particular
location of the keycode data structure.
Inventors: |
Miramontes; Oscar C.; (El
Paso, TX) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Universal Electronics Inc. |
Scottsdale |
AZ |
US |
|
|
Family ID: |
1000006330372 |
Appl. No.: |
17/668160 |
Filed: |
February 9, 2022 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
15831717 |
Dec 5, 2017 |
11270577 |
|
|
17668160 |
|
|
|
|
14538337 |
Nov 11, 2014 |
9852618 |
|
|
15831717 |
|
|
|
|
11544147 |
Oct 6, 2006 |
8909676 |
|
|
14538337 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G08C 19/28 20130101;
G08C 2201/92 20130101; G06F 16/9024 20190101; G08C 23/04 20130101;
G08C 2201/70 20130101 |
International
Class: |
G08C 19/28 20060101
G08C019/28; G06F 16/901 20060101 G06F016/901; G08C 23/04 20060101
G08C023/04 |
Claims
1. A non-transitory, computer-readable media having stored thereon
instructions executable by a controlling device comprising a
transmitting device and an input element wherein the instructions,
when executed by the controlling device, cause the controlling
device to respond to a user interaction with the input element by
sequentially accessing a plurality of keycode data structures that
are linked to each other until a keycode corresponding to the input
element is determined to be contained in a one of the plurality of
keycode data structures being accessed and to use the keycode to
transmit a command, via use of the transmitting device, to control
a functional operation of an appliance.
2. The non-transitory, computer-readable media as recited in claim
1, wherein the instructions further cause the transmitting device
to use a system code and a protocol to transmit the command to
control the functional operation of the appliance.
3. The non-transitory, computer-readable media as recited in claim
2, wherein at least one of the plurality of keycode data structures
being accessed contains the system code that is used by the
transmitting device to transmit the command to control the
functional operation of the appliance.
4. The non-transitory, computer-readable media as recited in claim
2, wherein a first accessed one of the plurality of keycode data
structures contains the system code that is used by the
transmitting device to transmit the command to control the
functional operation of the appliance.
5. The non-transitory, computer-readable media as recited in claim
2, wherein the protocol comprises a sequence of indices and the
indices identify mark times and space times characterizing digital
ones and zeros in a command signal having the command to control
the functional operation of the appliance.
6. The non-transitory, computer-readable media as recited in claim
2, wherein a one of the plurality of keycode data structures
contains a link to the protocol that is used by the transmitting
device to transmit the command to control the functional operation
of the appliance.
7. The non-transitory, computer-readable media as recited in claim
1, wherein the transmitting device comprises an infrared
transmitter.
8. The non-transitory, computer-readable media as recited in claim
1, wherein the input element comprises a one of a plurality of hard
keys of the controlling device.
9. The non-transitory, computer-readable media as recited in claim
1, wherein the plurality of keycode data structures are linked to
each other via use of relative offset values.
10. The non-transitory, computer-readable media as recited in claim
1, wherein the plurality of keycode data structures are linked to
each other via use of absolute address values.
11. The non-transitory, computer-readable media as recited in claim
1, wherein the plurality of keycode data structures are stored in a
memory of the controlling device.
12. A method performed by a controlling device comprising a
transmitting device and an input element, the method comprising:
responding to a user interaction with the input element by
sequentially accessing a plurality of keycode data structures that
are linked to each other until a keycode corresponding to the input
element is determined to be contained in a one of the plurality of
keycode data structures being accessed; and using the keycode to
transmit a command, via use of the transmitting device, to control
a functional operation of an appliance.
13. The method as recited in claim 12, wherein the instructions
further cause the transmitting device to use a system code and a
protocol to transmit the command to control the functional
operation of the appliance.
14. The method as recited in claim 13, wherein at least one of the
plurality of keycode data structures being accessed contains the
system code that is used by the transmitting device to transmit the
command to control the functional operation of the appliance.
15. The method as recited in claim 13, wherein a first accessed one
of the plurality of keycode data structures contains the system
code that is used by the transmitting device to transmit the
command to control the functional operation of the appliance.
16. The method as recited in claim 13, wherein the protocol
comprises a sequence of indices and the indices identify mark times
and space times characterizing digital ones and zeros in a command
signal having the command to control the functional operation of
the appliance.
17. The method as recited in claim 13, wherein a one of the
plurality of keycode data structures contains a link to the
protocol that is used by the transmitting device to transmit the
command to control the functional operation of the appliance.
18. The method as recited in claim 12, wherein the transmitting
device comprises an infrared transmitter.
19. The method as recited in claim 12, wherein the input element
comprises a one of a plurality of hard keys of the controlling
device.
20. The method as recited in claim 12, wherein the plurality of
keycode data structures are linked to each other via use of
relative offset values.
21. The method as recited in claim 12, wherein the plurality of
keycode data structures are linked to each other via use of
absolute address values.
22. The method as recited in claim 12, wherein the plurality of
keycode data structures are stored in a memory of the controlling
device.
Description
RELATED APPLICATION INFORMATION
[0001] This application claims the benefit of and is a continuation
of U.S. application Ser. No. 15/831,717, filed on Dec. 5, 2017,
which application claims the benefit of and is a continuation of
U.S. application Ser. No. 14/538,337, filed on Nov. 11, 2014, which
application claims the benefit of and is a continuation of U.S.
application Ser. No. 11/544,147, filed on Oct. 6, 2006, which
applications are incorporated herein by reference in their
entirety.
BACKGROUND
[0002] A Universal Infrared Remote (UIR) is a remote control device
that sends out operational signals to control one or more types of
electronic consumer devices such as TVs, VCRs, Cable set-top boxes,
and CD/DVD players. Each operational signal conveys a keycode
associated with the 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.
[0003] In order to provide the functionality of a UIR, various
types of keycodes are stored in keycode tables (also referred to as
keycode data structures) in a codeset database format. Each type of
keycode table is identified by a three digit device code
corresponding to a particular brand and make of an electronic
consumer device. A user first programs the UIR to control a
particular device type by entering its corresponding three digit
device code. Thereafter, when the user presses a key on the UIR, a
processor inside the UIR uses the device code to locate the address
of a corresponding keycode table. The processor then searches for
the keycode of the pressed key within the keycode table. If the
keycode is found, then an operational signal is generated and
transmitted to control the selected electronic consumer device.
[0004] One particular keycode table is defined by a keycode data
structure that includes a device type byte, a set of keycodes,
system code information, a system data byte, a keycode data
structure pointer (KDSP) and a protocol data structure pointer
(PDSP) that points to a protocol table which stores timing,
modulation, and encoding information. The keycode data structure
also includes a number of flagbytes that are used to mask each
particular key among the keycodes.
[0005] FIG. 1 (prior art) illustrates one method of linking keycode
data structures in order to store the codeset database efficiently.
In the example of FIG. 1, keycode data structure 1 is used for TV
device type001 and keycode data structure 2 is used for TV device
type 002. Keycode data structure 1 contains KEYCODES #1-#5,
representing all common keys for a TV. Keycode data structure 2
contains KEYCODE #6, representing the "sleep" key. Suppose that the
UIR is programmed to control TV002 and that a user presses the
"sleep" key. The processor first locates the byte0 address of
keycode data structure 2, it then finds KEYCODE #6 and generates an
operational signal using the protocol information of protocol data
structure 3 pointed by PDSP 4. Now suppose that the user presses
the "power" key. The processor searches but cannot find the keycode
of the "power" key in keycode data structure 2. The processor then
locates the byte0 address of keycode data structure 1 pointed to by
KDSP 5. The processor finds the keycode (for instance, KEYCODE #2)
corresponding to the "power" key and generates an operational
signal using the protocol information of protocol data structure 3
pointed by PDSP 6.
[0006] By linking keycode data structures 1 and 2 using KDSP 5,
this chain linking method is able to eliminate the redundant
storing of keycodes #1-#5 in keycode data structure 2, thereby
saving memory space. However, in this example, TV_CODE002 contains
all the keycodes of TV_CODE001, in other words, is a superset of
TV_CODE001. If TV_CODE001 has an additional keycode that is not
included in TV_CODE002, then the chain linking scheme does not
work.
[0007] FIG. 2 illustrates an example of a codeset database that
supports a type of electronic consumer device called a "combo
device". In the example of FIG. 2, TV keycode tables 7 are linked
together and VCR keycode tables 8 are linked together using the
chain linking scheme. For illustration purposes, assume that the
combo device is a television with a built-in VCR. Further assume
that the TV portion of the combo device uses TV keycode table
TV_CODE003, whereas the VCR portion uses VCR keycode table VCR
CODE103. Under the chain linking scheme, TV_CODE003 and VCR CODE103
cannot be further linked together because such linking would
destroy the database's ability to individually support the TV and
the VCR. Therefore, for combo device, TV keycode tables 9 are
duplicated from TV keycode tables 7 and then linked to VCR keycode
tables 8 by KDSP 10. If an operational signal fora combo device is
to be generated, the processor searches for the keycode of the
pressed key starting in keycode table TV_CODE203. Searching then
proceeds through keycode tables TV_CODE202, TV_CODE201,
VCR_CODE103, VCR_CODE102, and VCR_CODE101 until the keycode is
found.
[0008] Because of the large number of different electronic consumer
devices, the amount of memory space needed to store the codeset
database is large. Therefore, it is desirable to have an optimized
compression scheme of storing a codeset database that reduces the
amount of memory substantially. It is especially desirable to be
able to store a codeset database for combo devices without the need
to duplicate large numbers of keycode tables.
SUMMARY
[0009] A remote control device can generate an operational signal
that controls an electronic consumer device of a selectable type.
The operational signal contains a keycode (sometimes referred as a
"command code") associated with the selected electronic consumer
device. Various types of keycodes are stored as keycode data
structures (sometimes referred as "groups of command codes") in a
codeset database format.
[0010] One particular keycode data structure includes a device type
byte, a set of keycodes, system code information, a system data
byte, a protocol pointer that points to a protocol table and a
number of flagbytes that are used to index a particular key among
the keycodes. The keycode data structure also contains a plurality
of keycode data structure pointers (KDSPs). Keycode data structures
are linked together using KDSPs. A special value (for instance,
1001) in the keycode data structure is used to indicate that the
keycode data structure contains multiple KDSPs. The number of
pointers is stored in a particular location {for instance, byte-1)
of the keycode data structure.
[0011] In one embodiment, several keycode data structures are
maintained and linked together using a sequential star linking
scheme for a "combo device." An example of a "combo device" is a
television with a built-in VCR. A dummy keycode data structure is
provided. The dummy keycode data structure does not contain any
keycodes for TV or VCR. Instead, it contains two keycode data
structure pointers. The first KDSP is used to point to a TV keycode
data structure which contains the keycodes for one of the device
types of the combo device. The second KDSP is used to point to a
VCR keycode data structure which contains the keycodes for the
other of the device types of the combo device.
[0012] In another embodiment, several keycode data structures are
maintained and linked together as a cluster to achieve a high
degree of compression. In the example of a particular TV device
type 001, a common keycode data structure is provided. The common
keycode data structure contains the actual TV keycodes for
TV_CODE001 and some system codes. Suppose there are several other
TV device types whose corresponding keycodes are the same as the
keycodes for TV_CODE001. However, their corresponding system codes
are different from the system codes for TV_CODE001. A new set of
keycode data structures is provided for those other TV device
types. Each new keycode data structure has a KDSP that points to
the common keycode data structure. In addition, each new keycode
data structure contains no actual keycodes, but does contain system
codes. A special value (for instance, 1010) in the new keycode data
structures is used to indicate that the system code in its own
keycode data structure is used even if the actual keycode is found
in the common keycode data structure.
[0013] 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
[0014] The accompanying drawings, where like numerals indicate like
components, illustrate embodiments of the invention.
[0015] FIG. 1 (prior art) illustrates an example of a keycode
database format.
[0016] FIG. 2 (prior art) illustrates an example of a set of
keycode tables for a combo device.
[0017] FIG. 3 illustrates a system in accordance with one novel
aspect.
[0018] FIG. 4 is a diagram of a circuit within a remote control
device.
[0019] FIG. 5 illustrates the key index table of FIG. 4.
[0020] FIG. 6 illustrates the device index table of FIG. 4.
[0021] FIG. 7 illustrates an example of a keycode data structure in
accordance with one novel aspect.
[0022] FIG. 8 illustrates a mark/space table.
[0023] FIG. 9 illustrates an operational signal using binary
transmission.
[0024] FIG. 10 illustrates an operational signal using pulse width
modulation.
[0025] FIG. 11 illustrates a star linking method of finding a
keycode in a codeset database.
[0026] FIG. 12 illustrates the codeset database involved in the
method of FIG. 11 for a combo device.
[0027] FIG. 13 illustrates the codeset database involved in the
method of FIG. 11 for a multi-function device.
[0028] FIG. 14 illustrates a cluster linking method of finding a
keycode in a codeset database.
[0029] FIG. 15 illustrates the codeset database involved in the
method of FIG. 14.
DETAILED DESCRIPTION
[0030] Reference will now be made in detail to some embodiments of
the invention, examples of which are illustrated in the
accompanying drawings.
[0031] FIG. 3 is a diagram of a system 101 in accordance with one
novel aspect. System 101 includes a remote control device 102,
first electronic consumer device 103, and a second electronic
consumer device 104. A user uses remote control device 102 to
control a selected electronic consumer device. In the example of
FIG. 3, a user may press key 105 on the remote control device 102
to turn on/off the power of the first electronic consumer device
103, a television. When the user presses key 105, remote control
device 102 emits an operational signal 106 from a LED (light
emitting diode) 107. Operational signal 106 is transmitted to an
infrared receiver 108 of TV 103. Infrared receiver 108 interprets
operational signal 106 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.
[0032] Remote control device 102 of FIG. 3 is a Universal Infrared
Remote control device (UIR). Such UIR can be programmed to send out
infrared 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 UIR 102 to control a particular
brand and make of TV 103, the user first presses device key 109,
and then inputs a three digit device code. Thereafter, when the
user presses key 105, operational signal 106 is transmitted to
control TV 103. Similarly, to program UIR 102 to control a
particular brand and make of VCR 104, the user first presses the
device key 110, and then inputs a three digit device code.
Thereafter, when the user presses key 105, operational signal 111
is transmitted to control VCR 104.
[0033] FIG. 4 is a diagram of a circuit within remote control
device 102 of FIG. 3. The circuit of FIG. 4 includes a set of keys
112, a microcontroller 113, and an infrared LED 114.
Microcontroller 113 includes a processor 115 and a memory 116.
Memory 116 stores software programs executable by processor 115 and
a codeset database (sometimes referred as a codeset library). The
codeset database includes a key index table 117, a device index
table 118, a set of keycode tables (for instance, two keycode
tables 119 and 120 are illustrated), and a protocol table 121.
Microcontroller 113 performs key-scanning and determines the row
and column coordinates of any key that is pressed by the user.
[0034] FIG. 5 is an illustration of key index table 117 of FIG. 4.
For each row and column of a key coordinate, key index table 117
includes an offset value.
[0035] FIG. 6 is an illustration of device index table 118 of FIG.
4. For each three digit device code identifying a particular brand
and make of a device type, device index table 118 includes an
address of the corresponding keycode table (also referred as a
keycode data structure).
[0036] FIG. 7 illustrates the content of keycode data structure 119
in accordance with one novel aspect. Keycode data structure 119 is
a block of continuous bytes stored in memory 116 of FIG. 4. It
includes a device type byte 122, one or more keycode data structure
pointers (KDSPs) 123, a protocol pointer 124, one or more flag
bytes 125, a system data byte 126, a system code byte or bytes 127,
and a set of keycodes 128. Each KDSP 123 is a two-byte pointer that
contains the absolute address of a memory location. Alternatively,
each KDSP 123 may be a relative offset value. The offset value is
the difference between the address of the current memory location
and the address of the memory location that KDSP 123 points to. The
number of keycode data structure pointers 129 is stored in byte-1.
The last flag byte is indicated by a value 0 in its least
significant bit (LSB). The lower bits of system data byte 126 are
used to store the size information of system code and keycodes. The
upper bits of system data byte 126 are used as a linking scheme
identifier (LSI) 130, which indicates whether and how keycode data
structure 119 is linked to other keycode data structures.
[0037] When a user presses a key on remote control device 102 of
FIG. 3, processor 115 of FIG. 4 accesses device index table 118 of
FIG. 6 to obtain the byte0 address of a keycode data structure
corresponding to the three digit device code that the user has
programmed. Processor 115 also accesses key index table 117 of FIG.
5 to obtain the offset value of its flag bit in the flag bytes of
the keycode data structure corresponding to the key coordinates
that the user has pressed. Using the offset value, processor 115
identifies the flag bit in the keycode data structure and
determines whether the pressed key is present in the keycode data
structure. 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. Assume that the keycode is found in the
keycode data structure, processor 115 uses the keycode in
combination with system code information 127 to generate an
operational signal according to the timing and modulation scheme
information of the protocol table pointed by protocol pointer 124
(sometimes the timing and modulation scheme information is included
within the keycode).
[0038] The keycode data can take any one of numerous forms. FIG. 8
is a diagram of one example of what a keycode within a keycode data
structure might look like. The keycode data in this case is a
string of timing information containing a sequence of values, where
each value is an index that points to an associated value in a
mark/space table. In the example of FIG. 8, the first value 5
identifies a mark time of 2030 sec, the next value 7 identifies a
space time of 3130 sec, the next value 1 identifies a mark time of
450 usec, and so forth. The sequence of mark times and space times
is then output by microcontroller 113 to control LED 114 to
generate an operational signal.
[0039] FIG. 9 is another example of what a keycode within a keycode
data structure might look like. In the example of FIG. 9, the
keycode data is a sequence of bits 00011100 and is transmitted in
operational signal 131A as a stream of digital values in binary
transmission format.
[0040] FIG. 10 is an illustration of another representative
operational signal 1318. In the example of FIG. 10, the keycode is
modulated onto operational signal 1318 using pulse width
modulation. Digital ones and zeros are characterized by pairs of
marks and spaces. A digital zero has a shorter duration of mark
time than a digital one. Regardless of the form of the keycode (as
illustrated in FIG. 8 or FIG. 9), the same operational signal that
can be understood by an electronic consumer device is transmitted
by remote control device 102 of FIG. 3.
[0041] FIG. 11 is a flow chart of a method in accordance of one
novel aspect. FIG. 12 is a diagram of several keycode data
structures 137, 138, 139 as well as a device index table 118 that
are involved in the method of FIG. 11. The method of FIG. 11
maintains and links the keycode data structures in a sequential
star linking scheme that substantially reduces required memory
space in certain situations. In addition, the star linking method
stores codeset database for combo device efficiently.
[0042] Consider a UIR which controls a set of TV device types, a
set of VCR device types, and a combo TV device with a built-in VCR.
For each three digit device code, the device index table 118
includes an address of a corresponding keycode data structure. In
the example of FIG. 12, the byte0 address of keycode data structure
137 is provided for device code 868, the byte0 address of keycode
data structure 138 is provided for device code 003, and the byte0
address of keycode data structure 139 is provided for device code
103. If the UIR is programmed to control TV device type 003, then
processor 115 of FIG. 4 accesses the byte0 address of keycode data
structure 138. The processor then identifies the flag bit in
keycode data structure 138 and determines whether a keycode for the
pressed key is present using the offset value provided by key index
table 117. If the keycode is not present, then processor 115
accesses the next TV keycode data structure pointed by KDSP 143 and
searches for the keycode until it either finds the keycode or
reaches the last TV keycode data structure with a NULL KDSP.
Similarly, if the UIR is programmed to control VCR device type 103,
then processor 115 accesses the byte0 address of keycode data
structure 139 and repeats the same process as illustrated
above.
[0043] If the UIR is programmed to control combo device type 868,
then processor 115 of FIG. 4 follows the steps as illustrated in
FIG. 11. For illustration purposes, consider a situation in which a
"play" key is pressed. The keycode corresponding to the "play" key
is stored in VCR keycode data structure 139. In first step 132, the
processor accesses the byte0 address of keycode data structure 137,
as indicated by link 140. In this example, keycode data structure
137 contains no actual keycodes but does contain multiple keycode
data structure pointers (for instance, KDSP 143 and KDSP 144 are
illustrated in FIG. 12). Linking scheme identifier (LSI) indicates
whether a keycode data structure contains multiple KDSPs. If the
LSI has a value of 0000, then the keycode data structure has a NULL
KDSP and is not linked to any other keycode data structures. If the
LSI has a value of 0110, then the keycode data structure has one
KDSP. If the LSI has a value of 1001, then the keycode data
structure has multiple KDSPs. If a keycode data structure contains
multiple KDSPs, then the number of pointers (#PRTS) is stored in
byte-1 of the keycode data structure.
[0044] In second step 133, processor 115 uses the first keycode
data structure pointer KDSP 141 to access the TV keycode data
structure 138. Processor 115 then determines (step 134) that the
keycode for "play" key is not present in keycode data structure
138. Because there are multiple KDSPs available, processor 115 then
uses (step 135) the second keycode data structure pointer KDSP 142
to access the VCR keycode data structure 139. In the last step 136,
processor 115 determines that the keycode for the "play" key is
present in keycode data structure 139. Microcontroller 113 of FIG.
4 then uses the keycode in combination with the system code and
protocol information to generate an operational signal to control
the "play" function of the combo device.
[0045] In the above example, keycode data structure 137 for a combo
device is provided without the need to duplicate TV keycode data
structure 138, or VCR keycode data structure 139. Because keycode
data structure 137 does not contain any keycodes of a TV or VCR
device, its size is substantially smaller than a keycode data
structure which contains all the common keycodes of a TV device
(for instance, keycode data structure 138) or VCR device (for
instance, keycode data structure 139). Therefore, by linking the TV
and VCR keycode data structures in a sequential star linking
scheme, substantial memory space is saved.
[0046] FIG. 13 illustrates one application of the sequential star
linking method, which is to store a codeset database for a
multi-function device efficiently. Suppose that a multi-function
device has three different sets of functionality, i.e., TV, VCR,
and cable set-top box. In the example of FIG. 13, keycode data
structures 146, 147 and 148 are stored in the keycode database for
each device type with device code TV001, VCR101 and Cable301. Using
the star linking method, a new keycode data structure 145 is
provided for the multi-function device without the need to
duplicate any of the existing keycode data structures. Keycode data
structure 145 contains multiple keycode data structure pointers
(KDSPs), as indicated by the LSI (for instance, the value of 100).
The number of KDSPs {for instance, the value of 3) is stored in the
byte-1 location. In this particular example, keycode data structure
145 contains three KDSPs. The three KDSPs link keycode data
structures 145 to keycode data structures 146, 147, and 148 using a
sequential star linking scheme.
[0047] If the UIR is programmed to control a multi-function device
(for instance, with device code 901), then processor 115 of FIG. 4
follows the same method as illustrated in FIG. 11. Consider a
situation in which a "menu" key for CABLE CODE301 is pressed,
processor 115 first accesses keycode data structure 145, as
indicated by link 149. It then sequentially traverses the keycode
data structures 146, 147 and 148 linked by KDSP 150, 151 and 152.
Finally, processor 115 finds the keycode for the "menu" key in
keycode data structure 148 and generates a corresponding
operational signal.
[0048] Now suppose that the multi-function device requires a new
keycode which is not present in any of the existing keycode data
structures. Assume that the new key is associated with KEYCODE #10.
In such a scenario, keycode data structure 145 is modified to
include the additional KEYCODE #10, as illustrates in FIG. 13. In
addition, the flagbytes are also modified to indicate that the new
key is present in keycode data structure 145. Without any other
modification or memory increase, the functionality of the new key
can be easily supported.
[0049] FIG. 14 is a flow chart of another method in accordance of
one novel aspect. FIG. 15 is a diagram of several keycode data
structures 158-161 as well as a device index table 118 that are
involved in the method of FIG. 14. The method of FIG. 14 maintains
and links the keycode data structures in a cluster linking scheme
that substantially reduces required memory space in certain
situations. The cluster linking scheme is used in a scenario where
different electronic consumer device types share the same keycodes
but have distinct system code information.
[0050] In the example of FIG. 15, keycode data structure 158
contains all common TV keycodes (for instance, KEYCODE #1-#6 are
illustrated in FIG. 15) for TV device type 001. It also contains
its own SYSTEMCODE #1. A system code is used in combination with a
keycode to generate an operational signal. Suppose that aside from
the device type TV_CODE001, there are three other TV devices (for
instance, TV_CODE002, TV CODE003 and TV CODE004 are illustrated in
FIG. 15) all share the same keycodes as TV CODE001. However, these
keycode data structures all have their own distinct system codes.
Under such a scenario, keycode data structures 159, 160 and 161 do
not contain KEYCODES #1-#6. Instead, each keycode data structure
contains its own system code, a keycode data structure pointer that
points to keycode data structure 158 (for instance, KDSP 162, 163
and 164, are illustrated in FIG. 15), and a special nibble in the
system data byte with a value of 1010.
[0051] Suppose a UIR is programmed to control TV device type 001.
When a key is pressed on the UIR, processor 115 of FIG. 4 first
accesses the byte0 address of keycode data structure 158, as
indicated by link 165. The processor then identifies the flag bit
in keycode data structure 158 and determines whether the pressed
key is present using the offset value provided by key index table
117. If the keycode is found (for instance, KEYCODE #2), then
KEYCODE #2 in combination with SYSTEMCODE #1 are used to generate
an operational signal. Now suppose the UIR is programmed to control
TV device type 002. When a key is pressed on the UIR, processor 115
follows the steps illustrated in FIG. 14. Processor 115 of FIG. 4
first accesses (step 153) keycode data structure 159, as indicated
by link 166. Processor 115 then determines (step 154) that the
keycode for the pressed key is not present in keycode data
structure 159. Processor 115 then uses (step 155) keycode data
structure pointer (KDSP) 162 to access keycode data structure 158.
In the fourth step 156, processor 115 determines that the keycode
for the pressed key (for instance, KEYCODE #2) is present in
keycode data structure 158. In the last step 157, KEYCODE #2 in
combination with SYSTEMCODE #2 are used to generate an operational
signal.
[0052] In the above example, keycode data structures are provided
for different TV device types with the same keycodes but distinct
system code. Among those keycode data structures, only one of them
contains the actual keycodes. The other keycode data structures
contain only the system code and a keycode data structure pointer
that points to the same keycode data structure that contains the
actual keycodes. By linking all the keycode data structures into
the same cluster, substantial memory space is saved. The processor
simply relies on the LSI value (for instance, the value of 1010) to
determine which system code to use when it generates an operational
signal.
[0053] For additional information on codesets, keycodes, modulation
information, the generation of operational signals, universal
remote control devices, their uses and related topics, see: U.S.
patent application Ser. No. 10/737,129, filed Dec. 16, 2003, by
Daniel SauFu Mui, entitled "Relaying Key Code Signals through a
Remote Control Device"; U.S. patent application Ser. No.
10/777,023, filed Feb. 10, 2004, by Lee et al., entitled
"Interactive Web-Based Codeset Selection And Development Tool";
U.S. patent application Ser. No. 10/928,808, filed Aug. 27, 2004,
by Provis et al., entitled "An 8-Bit Register-Based Virtual
Machine" (the subject matter of these documents is incorporated
herein by reference).
[0054] Although certain specific exemplary embodiments are
described above in order to illustrate the invention, the invention
is not limited to the specific embodiments. In the example above of
FIG. 7 each of the pointers 123 is not followed by a device type
identifier. In one example, however, each of the pointers 123 is
followed by a device type identifier associated with the pointer.
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.
* * * * *