Patent ID: 7796889

Claim:
A method for controlling diverse infrared controlled devices, comprising: receiving an input infrared signal from at least one infrared remote control; capturing and storing said input infrared signal in raw form by sampling said input infrared signal at a predetermined sample rate, and by storing a plurality of resulting sample values in a memory until an end of signal indication is detected; compressing said sample values into a table, wherein said table includes a plurality of table entries, wherein each of said table entries includes a level indication and a length value, wherein said level indication comprises a single bit of each of said table entries and said length value comprises a plurality of remaining bits of each of said table entries, wherein said level indication indicates an associated signal level and said length value indicates a number of associated contiguous samples at said signal level within a corresponding portion of said input infrared signal, and wherein a first predetermined value of said level indication indicates a high signal level and a second predetermined value of said level indication indicates a low signal level in said input infrared signal, wherein said compressing includes creating a new one of said table entries responsive to detecting each signal level transition in said input infrared signal, and wherein said plurality of table entries in said table completely represent said input infrared signal by including an individual corresponding table entry for each respective individual portion of said input infrared signal; forming a table header associated with said table, wherein said table header contains an indication of said sample rate and an indication of a total number of entries in said table; storing said table with said associated table header in a data file; receiving a request for playback of said input infrared signal; opening said data file responsive to said request for playback and loading said table into a dynamic memory; reading said table header to determine the number of entries in said table and said sample rate; transmitting an output infrared signal equivalent to said input infrared signal responsive to said table, wherein said transmitting includes playing back said input infrared signal based on said plurality of table entries in said table until a last one of said plurality of table entries is reached; and after a last one of said entries in said table has been processed, closing said data file and freeing all associated dynamic memory.