WO2012112715A2 - Systems, methods, and architecture for a universal remote control accessory used with a remote control application running on a mobile device - Google Patents

Systems, methods, and architecture for a universal remote control accessory used with a remote control application running on a mobile device Download PDF

Info

Publication number
WO2012112715A2
WO2012112715A2 PCT/US2012/025300 US2012025300W WO2012112715A2 WO 2012112715 A2 WO2012112715 A2 WO 2012112715A2 US 2012025300 W US2012025300 W US 2012025300W WO 2012112715 A2 WO2012112715 A2 WO 2012112715A2
Authority
WO
WIPO (PCT)
Prior art keywords
command
remote control
mobile device
code
commands
Prior art date
Application number
PCT/US2012/025300
Other languages
French (fr)
Other versions
WO2012112715A3 (en
Inventor
Steffen Albrecht
Andreas Sommer
Alexander Gruber
Marius EILBRECHT
Benjamin LUDWIG
Original Assignee
Zero1.tv GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zero1.tv GmbH filed Critical Zero1.tv GmbH
Publication of WO2012112715A2 publication Critical patent/WO2012112715A2/en
Publication of WO2012112715A3 publication Critical patent/WO2012112715A3/en

Links

Classifications

    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C19/00Electric signal transmission systems
    • G08C19/16Electric signal transmission systems in which transmission is by pulses
    • G08C19/28Electric signal transmission systems in which transmission is by pulses using pulse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/4104Peripherals receiving signals from specially adapted client devices
    • H04N21/4126The peripheral being portable, e.g. PDAs or mobile phones
    • H04N21/41265The peripheral being portable, e.g. PDAs or mobile phones having a remote control device for bidirectional communication between the remote control device and client device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/1613Constructional details or arrangements for portable computers
    • G06F1/1626Constructional details or arrangements for portable computers with a single-body enclosure integrating a flat display, e.g. Personal Digital Assistants [PDAs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/1613Constructional details or arrangements for portable computers
    • G06F1/1632External expansion units, e.g. docking stations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/1613Constructional details or arrangements for portable computers
    • G06F1/1633Constructional details or arrangements of portable computers not specific to the type of enclosures covered by groups G06F1/1615 - G06F1/1626
    • G06F1/1684Constructional details or arrangements related to integrated I/O peripherals not covered by groups G06F1/1635 - G06F1/1675
    • G06F1/1698Constructional details or arrangements related to integrated I/O peripherals not covered by groups G06F1/1635 - G06F1/1675 the I/O peripheral being a sending/receiving arrangement to establish a cordless communication link, e.g. radio or infrared link, integrated cellular phone
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C23/00Non-electrical signal transmission systems, e.g. optical systems
    • G08C23/04Non-electrical signal transmission systems, e.g. optical systems using light waves, e.g. infrared
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/422Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
    • H04N21/42204User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor
    • H04N21/42206User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor characterized by hardware details
    • H04N21/42225User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor characterized by hardware details characterized by types of remote control, e.g. universal remote control
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C2201/00Transmission systems of control signals via wireless link
    • G08C2201/10Power supply of remote control devices
    • G08C2201/12Power saving techniques of remote control or controlled devices
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C2201/00Transmission systems of control signals via wireless link
    • G08C2201/20Binding and programming of remote control devices
    • G08C2201/21Programming remote control devices via third means
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C2201/00Transmission systems of control signals via wireless link
    • G08C2201/30User interface
    • G08C2201/33Remote control using macros, scripts
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C2201/00Transmission systems of control signals via wireless link
    • G08C2201/90Additional features
    • G08C2201/92Universal remote control
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C2201/00Transmission systems of control signals via wireless link
    • G08C2201/90Additional features
    • G08C2201/93Remote control using other portable devices, e.g. mobile phone, PDA, laptop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W24/00Supervisory, monitoring or testing arrangements

Definitions

  • a universal remote control is a device that can be programmed to operate multiple consumer electronic devices.
  • An all- hardware URC device has a fixed set of buttons having a fixed shape, design, and layout.
  • Some hardware universal remote controls work in conjunction with personal computer software where a code library can be downloaded on- demand from a manufacturer's server. The codes to be assigned to the buttons of the URC are then transferred from the computer to the remote control.
  • a hardware URC can be used with computer software that downloads a code library from a manufacturer's server and then transfers button commands from the computer to the URC.
  • a host device can run an application for a URC where the host displays a virtual representation of the remote control's buttons.
  • FIG. 1A illustrates an example diagram of a system where a mobile device RCA controls IR controllable devices in conjunction with a URC accessory coupled to the mobile device.
  • FIG. 1 B shows example relationships between database entities.
  • FIGS. 2A and 2B is a flow diagram illustrating an example process of scanning a code library for an appropriate code set while minimizing user input into the process.
  • FIG. 3A shows an example user interface showing a partial listing of target devices.
  • FIG. 3B shows an example user interface showing a partial listing of manufacturers.
  • FIGS. 4A and 4B is a flow diagram illustrating an example process of performing a device scan with command bursts.
  • FIG. 5 is a flow diagram illustrating an example process of performing a reverse device scan using input from a remote control that works with the target device.
  • FIGS. 6A and 6B show pictures of an example URC accessory.
  • FIG. 7 shows examples of button clusters that are available for use in remote control templates and for the user when manually assembling a custom layout.
  • FIG. 8 shows examples of remote control templates that are used for generating a virtual remote control for a television.
  • FIGS. 9A-9B show an example method for adding a composite view that includes buttons from different virtual remote controls.
  • FIGS. 9C-9D show close-up views of example screenshots of the mobile device.
  • FIG. 10 shows an example method for starting the edit mode on the RCA.
  • FIGS. 1 1A-1 1 B show an example method for adding a button or cluster to the URC.
  • FIGS. 12A-12B show an example method for editing a cluster of buttons in the URC.
  • FIG. 13 shows an example method for entering the teach-in mode for programming a new IR command in the RCA.
  • FIG. 14 shows an example method for deleting a button or cluster of buttons in the URC.
  • FIGS. 15A-15B show an example method for copying a button or cluster of buttons in the URC.
  • FIG. 16 shows an example method for dragging and dropping a button or cluster of buttons in the URC.
  • FIGS. 17A-17B shows an example method for creating a macro in the URC.
  • FIG. 18 shows an example method for overwriting an existing macro in the URC.
  • FIGS. 19A-19B show an example method for editing the timing of the functions stored in a one-touch button.
  • FIGS. 20A-20P show pictures and line drawings of an example miniaturized URC accessory.
  • FIG. 20Q shows a see-through view of the top of an example miniaturized URC accessory.
  • FIG. 21A shows a URC accessory attached to the left side of a table computer held in the user's hands.
  • FIG. 21 B shows a URC accessory attached to the top of a smartphone held in the user's hands.
  • FIGS. 22A-22C show schematics for the electronics used in the URC accessory.
  • FIG. 23 is a block diagram illustrating an example of an architecture of a mobile device RCA.
  • FIG. 24 shows a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.
  • a universal remote control (URC) accessory that couples to a mobile device, such as an iPhone mobile phone or iPad, and is controlled by a remote control application (RCA) that runs on the mobile device.
  • the RCA can guide a user through a scanning process to identify a target electronic device and find a corresponding infrared (IR) command code set that will control the device's functions.
  • the URC accessory couples to the mobile device and attaches to the back and sides of the mobile device.
  • a compact miniaturized URC accessory extends only slightly beyond the mobile device when plugged into the port of the mobile device. Once the code set for an electronic device is identified, both the URC accessory and the miniaturized version of the URC accessory are capable of generating the IR commands for controlling the electronic device.
  • FIG. 1A illustrates an example diagram of a system where a mobile device RCA controls IR controllable devices in conjunction with a URC accessory coupled to the mobile device.
  • Code libraries 102, 104 contain infrared command code sets for various electronic devices.
  • the code library parser 106 takes the code libraries 102,104 and re-organizes the relevant data into a convenient format for efficient searching.
  • the data can be edited by text editor 108 and then imported by a database tool for verification, unification, encryption, and compression and then stored as a database file 1 18.
  • An image editor 1 15 can be used to edit images of buttons, clusters, and other images used in the universal remote control (URC).
  • the edited images are stored as image files 1 16.
  • the database file 1 18 and image files 1 16 are added to a mobile device RCA 120 that is downloaded onto the mobile device to be used as a universal remote control.
  • the mobile device RCA 120 can also query a file server 130 for new image files 128 and updates 126 to the RCA 120.
  • the mobile device couples to a URC accessory 32 that transmits infrared code signals to IR controllable devices.
  • the URC accessory 132 also has a sensor used for sensing IR codes emitted by other remote controls for use in teaching the mobile device RCA 120 to replicate the IR codes.
  • the user interacts with the mobile device RCA 120 through the user interface of the mobile device.
  • the mobile device RCA 120 can take advantage of a touch screen capability of the mobile device.
  • the user can also edit user data stored in a memory of the mobile device that is used by the mobile device RCA 120.
  • a remote control code library 102, 104 can be obtained from a library vendor, for example, Innotech Systems of Port Jefferson, NY.
  • the code library includes remote control IR command codes for different brands of home entertainment components, such as televisions, video cassette recorders (VCR), cable boxes, satellite, audio components, and home theater components. By reproducing the IR remote control codes for one of these devices, the device can be made to perform the corresponding function.
  • An RCA should be able to locate and access the IR remote control codes for the appropriate device from the code library in an efficient manner.
  • the code library is parsed to permit relational database inquiries.
  • the format of the code library is an array.
  • the array contains data structures that provide information about a device category, manufacturer name, device model name, and one or more device codes for controlling the respective devices.
  • the device category specifies one or a combination of devices including, but not limited to, television, audio player, VCR, cable receiver, satellite receiver, digital video disc (DVD) player, digital video broadcasting (DVB) receiver, digital video recorder (DVR), compact disc (CD) player, gaming console, home automation, projector, digital media player, and Blu-ray player.
  • the device category is specified using 16-bit bit-field values, and the manufacturer and model names for each device are specified using 8-bit characters, and the device codes are 16-bit integers. Code sets for devices within each device category are stored in a static array.
  • the code library has an application programming interface (API) that can be used to query information from the code library.
  • API application programming interface
  • the data in the code library is not provided in a way that allows relational inquiries.
  • the relevant information from the code library is parsed, appropriately transformed, and imported into a relational database for searching.
  • a code library parser application that runs on a computer obtains relevant information from the code library through the API and creates a set of comma separated values (CSV) files.
  • the set of files includes, but is not limited to, a category file, a brands file, and a devices file.
  • the category file contains a name of a device category and a corresponding identifier for each device entry.
  • the brands file lists all the manufacturer names with the bit-combined value of all device category identifiers for that brand.
  • the devices file stores device information.
  • Each entry in the devices file includes a device code, device category identifier, brand name, model name, and an infrared (IR) protocol identifier.
  • the IR protocol identifier for a device is determined by analyzing the codes in the device's code set to determine whether the infrared protocol for the device code set is one of the well-known, recognizable protocols (e.g., SONY, NEC, and RC5) or an unknown protocol.
  • a well-known, recognizable protocols e.g., SONY, NEC, and RC5
  • the IR command information is parsed.
  • the codes provided by the code library are analyzed and protocols, the signal length, and a command value are determined and stored.
  • the command value is a compact identifier used for specific commands for some of the known protocols.
  • Most code set protocols use a carrier frequency to transmit commands.
  • the amplitude of the infrared signal can have either a high or a low value.
  • the high value represents a pulse having a predetermined duration
  • a low value represents a gap having a predetermined duration.
  • a pulse is typically followed by a gap.
  • a command in the code set is represented in binary form as a series of O's and '1's.
  • a binary ⁇ ' corresponds to a pulse followed by a gap of a fixed duration (e.g. 100 ⁇ )
  • a '1 ' corresponds to a pulse with a gap having a significantly different duration (e.g. 200 ⁇ ).
  • Other features used in typical protocols use other components that have significantly different gap durations from the gaps for the ⁇ ' and '1 ' pulses.
  • the set of files can be inspected and edited with an editing program, for example, Microsoft Excel.
  • an editing program for example, Microsoft Excel.
  • the files are imported into a database using a database utility application.
  • the database can be a relational database management system, such as an SQLite database.
  • the data After the data has been imported into the database, it can be analyzed to find IR commands that have equivalent codes. Then the equivalent codes only need to be stored once along with a correlation, such as a pointer, to the linked device data. Because the memory required to store a pointer is much less than the memory needed to store an IR command code, the total memory required for storing the code library is reduced.
  • the IR command codes are compressed to minimize the amount of memory needed to store the database. Then, the compressed codes are encrypted. In one embodiment, the entire database can also be encrypted to further protect the data. Importing the Database
  • the files are imported into the target database in a fixed order.
  • the category file is imported as a table designated Category.
  • the Category table is imported first because the category of the devices has no dependencies upon other entities.
  • the brands file is created as a table designated Brands.
  • the Brands table references the appropriate entries in the Category table.
  • the devices file is imported as a table called Devices.
  • the Devices table references the appropriate manufacturers in the Brands table.
  • a table, called Commands is created that contains the device codes, and the appropriate relationships with the Devices table are included in the table.
  • the priority ranking indicates a preferred order to test commands to try to minimize the amount of time needed to determine whether a code set works with a target device.
  • the commands for each device category are prioritized based on the frequency with which each command is used and/or the relevance of the command for the device category. For example, the channel up button for a television would be used much more frequently than the brightness control.
  • information as to the market share of devices within each device category and the demographics of the purchasers of the devices are taken into account in prioritizing the commands in each device category.
  • command sets corresponding to the most recently released versions of electronic devices may be given a higher priority.
  • the commands and their command priorities for each device category are stored in a table designated Command Priority.
  • Other database entities can be created, edited in a content management tool, and imported into the database.
  • the database entities include a remote control template, a OneView template, a page, a cluster template, a button template, a teach-in cluster, a source, and images.
  • the remote control template is used to provide images based on the category of a device.
  • the OneView template is used to provide images based on combinations of categories.
  • the page is used to provide an image of grouped buttons or clusters of buttons.
  • the cluster template is used to provide an image of groups of buttons.
  • the button template is used to provide an image of a button.
  • the teach-in cluster is a cluster used to provide an image for the teach-in process.
  • the source is used to determine the source of a data object.
  • the images are used to represent images of objects, such as rooms, remote controls, clusters, and buttons.
  • the database entities can be edited using a content management tool, stored in CSV files, and imported into the database with the other tables.
  • FIG. 1 B shows example relationships between database entities.
  • the room 150 database entity is a container for remote controls and OneViews.
  • the remote control 152 database entity is created from a remote control template, and the OneView 170 database entity is created from a OneView template.
  • the device 154 database entity specifies the one device that the remote control 152 entity controls.
  • the page 156 database entity contains a clusters of buttons 158 database entity which contains button 160 database entities which contain commands 162 database entities that are taken from a code library recorded by the user using the teach-in process.
  • the OneView 170 database entity specifies the multiple devices that the OneView 170 entity controls. Similar to the remote control 152 entity described above, the OneView 170 entity includes a page 174 entity which includes a cluster 176 entity, which includes a button entity 178, and which includes commands 180 entities.
  • FIGS. 2A and 2B is a flow diagram illustrating an example process of scanning the code library for an appropriate code set while minimizing user input into the process. Example user interface screen shots are shown below.
  • the RCA uses the mobile device user interface to show a list of available device categories, as listed in the Category table, and prompts the user to select the category for the targeted device.
  • An example user interface showing a partial listing of target device categories is shown in FIG. 3A. The user selects the target device category from the list, and at block 205, the RCA receives the user's device category selection.
  • the list of manufacturers is filtered to include only the devices in the selected category. Then at block 215, the RCA uses the filtered view of the Brands table to show a list of available manufacturers and prompts the user to select the manufacturer for the targeted device. An example user interface showing a partial listing of manufacturers is shown in FIG. 3B. At block 220, the RCA receives a manufacturer selected by the user or an indication that the user's brand is missing from the list.
  • the RCA determines whether the user responded that the user's brand is missing. If the user's brand is missing (block 225 - Yes), at block 230, the process goes to the teach-in process. If the user selects a listed brand (block 225 - No), at block 235 the code sets are filtered to only include the selected brand. Then at block 237, the filtered code sets having the selected brand are sorted by the length of the codes.
  • the Command Priority table is filtered for the devices in the selected category, and the first command listed, which has the highest priority, is selected from the filtered list. Then at block 245 all code sets that contain this command are filtered and retained.
  • the RCA determines if the remaining devices all use the same code for the command. If all filtered remaining devices use the same code (block 250 - Yes), at decision block 252, the RCA determines if the command is the lowest priority command in the Command Priority table. If the command is not the lowest priority command (block 252 - No), at block 255, the command with the next lowest priority is selected, and the process returns to decision block 250. If the command is the lowest priority command (block 252 - Yes), at block 257 the RCA selects any command for testing, and the process continues to block 258.
  • the RCA selects a code set for testing.
  • the RCA requests that the user test the command.
  • the RCA assigns the IR command to a button that is presented to the user, and the user is instructed to press the button to test the IR command and observe the result of sending the command to the target device.
  • the RCA determines whether the user reported that the command worked. If the command did not work as expected (block 265 - No), at decision block 280, the RCA determines if the code set was the last one of the code sets remaining to be tested. If the code set was the last one to be tested (block 280 - Yes), at decision block 283 the RCA determines if the last command was tested. If the last command in the code set was not tested (block 283 - No), at block 284, a command, such as the next lower priority command is selected for assigning to the test button, and the process continues to decision block 265. If there are no other commands to test (block 283 - Yes), the process continues to block 230.
  • the RCA assigns the code corresponding to the command to be tested from the next code set to be tested to the test button for the user to test, and the process returns to decision block 265.
  • incompatible code sets include code sets that do not contain the selected command, code sets that have a shorter code length, and code sets that have longer code lengths and are not equal in their overlapping portions. By eliminating these devices and their code sets, the number of commands that need to be tested is reduced.
  • the RCA determines if the code set was the last one of the code sets remaining to be tested. If the code set is the last one to be tested (block 270 - Yes), a virtual remote control is created for the code set at block 275. If the code set is not the last one to be tested (block 270 - No), at decision block 272, the RCA determines if code sets of the devices that have been tested have equal codes in their code sets. If the devices have equal codes (block 272 - Yes), the scan process was successful, and at block 275 a virtual remote control is created for any of these devices. If the devices do not have equal codes in their code sets (block 272 - No), at block 278, the RCA selects the next code set and presents the command from the next code set to present to the user for testing with the test button. The process continues to decision block 265.
  • FIGS. 4A and 4B is a flow diagram illustrating an example process 400 of performing a device scan with command bursts.
  • process 400 involves blocks 202-235. Then at block 405, a command is selected that is common to all devices that have been filtered and retained at block 235. If there is no command common to the filtered devices and no previously tested command succeeded in controlling the target device, the command with the highest prevalence among the remaining devices is selected. [0074] At block 410, the commands of the remaining device candidates are divided into groups of identical or equal commands. Then at block 415, each group is added to one of two divisions, a first division D1 or a second division D2. Groups that have commands that are similar are placed in the same division. Similar commands can include commands that have pulse and/or gap width durations that are equal within a certain tolerance, e.g. having a variance of 10%, because the IR codes are sampled with relatively inaccurate sampling rates. Similar commands can also include commands that have a different header or trailer portion or commands that include sections that are repeated within the command.
  • the RCA decides if all groups are similar such that all of the groups have been placed into only one division. If all groups are similar (block 420 - Yes), at block 425 one of the groups in the first division is moved to the second division, and the process continues to decision block 430. If not all groups are similar (block 420 - No), at decision block 430, the RCA determines if there is only one group left. If only one group is left (block 430 - Yes), at decision block 440, the RCA determines if only compatible devices are left in the group. The devices in the group are considered compatible if the code sets for all functions that are common to the devices work for each of the devices in the group.
  • the RCA determines if a command has previously successfully controlled the target device during the process 400. If a command has previously worked (block 445 - Yes), the RCA selects the code set that has the most commands as the matching device to create the virtual remote control. If no command worked previously (block 445 - No), no matching device has been found, and at block 450 the teach-in process is recommended to the user.
  • the RCA assigns a sequence of commands to a test button, where the sequence of commands includes the codes for each of the devices in the first division.
  • the button is then presented to the user, and the user is instructed to press the button to test the sequence of commands and observe the result of sending the commands to the target device.
  • the sequence of commands is referred to as a command burst.
  • the sequence of commands includes delays between each command to give the user time to observe the effect of the commands on the target device.
  • the RCA determines whether the user reported that the test button commands worked. If the commands worked (block 460 - Yes), at block 465 the devices in the second division D2 are eliminated, and only devices in the first division D1 are considered. The process returns to block 415 where the remaining groups are re-divided into two new divisions.
  • the RCA determines if the second division D2 has any devices. If the second division has devices (block 470 - Yes), at block 475 the devices in the first division D1 are eliminated, and only devices in the second division are considered. The process returns to block 415 where the groups in the second division are divided into two new divisions.
  • the RCA determines if at least three previous command bursts have failed. If at least three previous command bursts failed (block 480 - Yes), no matching device code set has been found, and the teach-in process is recommended to the user.
  • the RCA determines if there has been any previous successful response. If there has been a successful response (block 485 - Yes), at block 495 the code set corresponding to the best device is selected for creating a virtual remote control. The best device is the device having the largest number of codes in the command set. [0082] If there has not been a success response (block 485 - No), the process returns to block 405 to determine the next most suitable command to test.
  • FIG. 5 is a flow diagram illustrating an example process of performing a reverse device scan using input from a remote control that works with the target device.
  • the RCA uses the user interface to show a list of available device categories and prompts the user to select the category for the targeted device. The user selects the target device category from the list, and at block 505, the RCA receives the user's device category selection.
  • the system prompts the user to point the original remote control or other known working remote control towards the infrared sensor of the universal remote control accessory and press any button.
  • FIGS. 6A and 6B show illustrations of an example of the universal remote control accessory.
  • the universal remote control accessory attaches to the sides, bottom, and back of a mobile device.
  • the infrared transmitter is oriented to face toward the top of the URC accessory and the top edge of the mobile device so that the user can point the mobile device towards the target device while still viewing the screen of the mobile device in its normal operating position facing the user.
  • the infrared sensor on the URC accessory is located along the bottom edge of the URC accessory. This position allows the sensor to receive infrared signals while the user is holding the mobile device in its normal operating position.
  • the infrared transmitter is physically separate from the infrared sensor in the URC accessory. By separating the infrared sensor and transmitter and placing the infrared sensor and transmitter in their respective positions on the URC accessory, both the mobile device and the original remote control can be used in their normal operating positions facing towards the user.
  • the remote control When the user presses a button on the known working remote control, the remote control emits the corresponding infrared command code. Then at block 515, the RCA records the emitted IR command code and analyzes the code to determine the length of the code.
  • the RCA determines if the infrared protocol used by the original remote control is one of the more common protocols, such as RC-5 or NEC.
  • the comparison process is fast for known protocols because the system can use the IR protocol identifier used with the code sets in the database. However, if the recorded command's protocol is an unknown protocol, the comparison process is slower because a comparison of the pulse width and gap width information is performed, and the system should account for variations in the pulse widths and gap widths.
  • the code sets are filtered by the category of the target device, and the process continues to block 532. If the protocol is known (block 525 - No), at block 532 the RCA retains only the code sets from the code library that have the same or similar length and the same protocol, if known.
  • the system determines if there are any remaining code sets. If there are no remaining code sets (block 535 - No), the reverse scan has failed, and at block 540 the RCA informs the user that no code set match has been found and recommends using the teach-in process to program a button used the URC.
  • the RCA determines if there is only one remaining code set or if all of the remaining code sets are common among the remaining devices. If there is only one remaining code set or if the remaining codes are common (block 545 - Yes), the reverse scan was successful, and all remaining code sets are considered a match. At block 560 the RCA selects the device that has the most commands in its code set and a virtual remote control is created for the code set.
  • the RCA identifies the command that is closest to being included in approximately half of the code sets of the remaining devices. If a command cannot be identified that applies to half of the code sets, then a command is selected that applies to a number of code sets closest to half of the total code sets remaining to be considered. In one embodiment, the RCA scans the code identifiers of the remaining code sets and sums the absolute frequency of their appearance within the candidate code sets.
  • the RCA prompts the user to press the button on the known working remote control that corresponds to the identified command.
  • the process continues at block 515. The process ends when a match has been made or when the RCA determines that there is no code set in the code library that matches the command codes emitted by the remote control.
  • the 'teach-in' or programming process uses a remote control that works with the target device to generate the IR command to be stored by the RCA.
  • the remote control can be the original remote control that came with the device or another remote control that has been programmed with codes that work with the target device.
  • the remote control application guides the user through the teach- in process by prompting the user to select a button from the layout of a virtual remote provided by the remote control application to be associated with the new IR command. Then the user is requested to activate the corresponding button on the target device's remote control while aiming the remote control toward the IR sensor in the URC accessory.
  • the URC accessory senses the IR command, and the RCA stores the IR command and links it to the selected button.
  • the RCA uploads the new code to a code set database.
  • the database can store new code sets that have been programmed into a remote control application, thus enlarging the code set database.
  • the newly uploaded code sets can then be verified and/or edited before being made available to other users of the remote control application for downloading.
  • the RCA determines an appropriate layout for the buttons of the virtual remote control.
  • the buttons can be grouped into clusters that can include one or more buttons.
  • FIG. 7 shows three examples of button clusters that are available for use in the remote control templates and for the user when manually assembling a custom layout.
  • buttons are organized onto pages.
  • the URC is presented to the user in one or more pages.
  • pages to organize the buttons of a remote control the user interface is not cluttered and button clusters are ordered based on usage and the relation of one button cluster to another. Both the button cluster and the page are generated using templates from the database, as described above.
  • a layout management module in the RCA uses a layout template for each known device category.
  • the templates define remote control layouts that are constructed to present the most relevant buttons at the front pages and less relevant or common buttons on subsequent pages.
  • FIG. 8 shows three examples of remote control templates that are used for generating a virtual remote control for a television.
  • the layout management module builds new virtual remote controls from the appropriate categories of templates by adding each cluster found in the template to the new virtual remote control.
  • Each button that corresponds to an infrared command found in the target device's code set is enabled. All other buttons are added to the layout but are not enabled.
  • the nonfunctioning buttons can by enabled either by using the teach-in process, or they can be removed by the user using edit mode.
  • buttons that are not included in the templates but are found in the target device's code set are added to additional pages at the back of the virtual remote control layout. The user can reposition these buttons in edit mode.
  • the RCA checks if there are any other devices that have been added that can make a useful combination. In particular, the RCA searches for all the devices that can provide video input, audio input, video output, and audio output. If these inputs and output are applicable to the OneView that can be generated from a user's electronic devices, the user is requested to select one of the available video and audio inputs and video and audio outputs to generate a mixed remote control.
  • buttons with specialized functions from the specified electronic devices are grouped. For example, channel switching is assigned to the selected television device, and volume control, muting and speaker settings are routed to the selected audio output device.
  • OneViews are generated using use-case specific templates. The pages and clusters in OneViews are defined based on the frequency of their usage in the context of the individual use-case. Further, when the user sets up the OneView, the table of electronic devices that are presented to the user to select from automatically includes the devices based on their functions as video/audio inputs, audio output, and video output. If there is only a single electronic device available that has a required function, that device is automatically selected.
  • FIGS. 9A-9B show an example method for adding a composite view, called a OneView, that includes buttons from different virtual remote controls.
  • the wire frames for the screens are shown on the top of FIGS. 9A- 9B, while corresponding screenshots of the mobile device are shown on the bottom.
  • FIGS. 9C-9D show close-up views of the screenshots of the mobile device corresponding to screens 3-8.
  • the user is shown a start button to begin interacting with the URC. Then at screen 2, the user is shown a list of rooms to select from for which the OneView is to be associated. Upon selecting the example room 'kitchen', at screen 3 the user is shown a selection of electronic devices for that room that have been added to the URC and a control bar on top that includes a 'settings' option. Upon selecting the 'settings' option, at screen 4 the user can select the option to add a new OneView. Upon making this selection, at screen 5 the user is presented with a list of options for the new OneView based upon the available devices, for example, watch recorded content, listen to music, gaming, watch DVD, and watch television.
  • the user Upon selecting 'watch DVD', for example, the user is shown a list of devices that can provide video input, such as a DVD player and a VCR player, as shown in screen 6.
  • video input device Upon selecting an video input device, the user is shown a list of devices that can provide video output, for example, a television and a beamer, as shown in screen 7.
  • video output device Upon selecting a video output device, the user is shown a list of devices that can provide audio output, for example, a television and an audio receiver, as shown in screen 8.
  • the OneView is created and shown to the user for selection as a button in the list of devices for the room, as shown in screen 9.
  • FIGS. 9A-9D is for adding a OneView for watching a DVD. If the desired OneView only involves audio, for example, listening to music, then the steps for setting up the One View will automatically include only the steps for selecting an audio input and an audio output.
  • button graphic resources are stored as raster graphics.
  • raster graphics are scaled, the quality of the resulting images are noticeably reduced in quality.
  • the RCA does not use raster graphics. Instead, the RCA uses vector graphics to generate high quality graphical representations of the RCA control elements (e.g., all icon, button, and cluster graphics) in a lossless and resolution- invariant way.
  • Vector graphics can be scaled without loss. Thus, scaled representations of the same graphics do not need to be stored for each target resolution, thereby saving memory space. Further, because vector graphics can be colorized on demand, there is no need to store versions of the resources for each color variant, again saving memory space.
  • the basic vector resources are generated in a standard vector editor, such as Adobe Illustrator and stored as PDF files.
  • the button graphic that is shown to the user in the remote control layout is generated by layering an icon graphic and/or label text over a button graphic, which is then layered on top of a cluster graphic.
  • the generation and rendering of the graphic is only performed once when the remote control view is opened. If the user stays in the remote control view, the pre-rendered graphics are temporarily cached for later use.
  • the universal remote control has an edit mode for customizing the remote control, for example, selecting colors for the buttons, changing icons on the buttons, removing buttons, adding new buttons, or dragging and dropping buttons to change the positions of the buttons.
  • the editing methods described below assume that the mobile device has a touch screen, however the editing functions can also be performed with a pointer or other input device.
  • FIG. 10 shows an example method for starting the edit mode on the URC.
  • the user is shown a start button to begin interacting with the URC.
  • the user is shown a list of rooms to select from for which the button to be edited is associated.
  • the user is shown a selection of devices for that room that have been added to the URC.
  • the user is shown the buttons defined for that device and a button for selecting settings in the top bar of the screen.
  • the settings button at screen 5 the user is shown several options, including changing the icon image, editing the layout for the URC, or deleting the device. The user enters edit mode upon selecting the button for editing the layout.
  • FIGS. 1 1A-1 1 B show an example method for adding a button or cluster to the URC.
  • screen 1 is shown to the user which has an add button and a save button in the top bar and a grid in the background.
  • the add button at screen 2 the user is shown two options, a 'button' option for adding buttons to the URC or a one- touch button for creating a macro (described below), above a display of remote control buttons that have already been created by the user in the URC.
  • 'button' at screen 3 the options for adding buttons appears in a bar near the bottom of the display. The options include 'empty', 'play', 'pause', and 'stop'.
  • buttons are linked with their respective infrared command for the device, if available.
  • the bar also includes options for adding either a single button or a cluster of buttons. The default selection is a single button.
  • Screen 4 shows the user dragging a new empty button to the remote control display. The user can also tap on the button to move it to the display. Upon adding a new button to the display, the user can drag the button to a preferred location in the remote control display, as shown in screen 5. Once the user releases the button, the button remains in its location as shown in screen 6. The added button remains inactive if no infrared command is available, although the teach-in process can be used to program an infrared command for the button.
  • FIGS. 12A-12B show an example method for editing a cluster of buttons in the URC.
  • Screen 1 shows a cluster of buttons in the URC.
  • the user can tap a button or cluster of buttons to select them.
  • a context menu appears with several options, such as 'copy', 'teach in', 'edit', and 'delete' as shown in screen 2.
  • the buttons in the cluster indicate that they can be selected by, for example, glowing.
  • an edit menu appears as shown at screen 4.
  • the user can change the color of the button, change the icon, or change the text.
  • screen 6 Upon clicking the button for applying the settings, as shown in screen 5, screen 6 displays the buttons or cluster for editing and a 'done' button in the top bar. Upon selecting the 'done' button, the URC leaves the edit cluster mode and shows the URC at screen 7.
  • FIG. 13 shows an example method for entering the teach-in mode for programming a new IR command in the remote control application.
  • the remote control buttons are shown to the user for selecting for teaching-in at screen 1.
  • a 'teach-in' button is shown in the control bar at screen 2.
  • the screen automatically steps to the next button or cluster of buttons that has a button with no corresponding infrared command to enable the teach-in process to be implemented.
  • the user is shown a 'done' button at the top of the screen for selection upon completion of the teach-in process.
  • FIG. 14 shows an example method for deleting a button or cluster of buttons in the URC.
  • Screen 1 shows a button in the URC.
  • the user is shown a control bar that includes a 'delete' button.
  • the RCA asks the user to confirm that the button should be deleted.
  • the URC is shown without the deleted button.
  • FIGS. 15A-15B show an example method for copying a button or cluster of buttons in the URC.
  • Screen 1 shows a page of buttons in the URC.
  • a context menu appears with several options, such as 'copy', 'teach in', 'edit', and 'delete' as shown in screen 2.
  • the selected button is written into a buffer, and at screen 3 the page of buttons is shown again.
  • the user can switch between views of different remote controls in the URC by swiping the shown page, as shown at screen 4.
  • a context menu appears with a 'paste' option, as shown at screen 5.
  • the paste option at screen 6 the previously selected button is placed in the selected position of the remote control, as shown in screen 7.
  • FIG. 16 shows an example method for dragging and dropping a button or cluster of buttons in the URC.
  • Screen 1 shows a button in the URC. The user can drag a button by tapping and holding his finger down on the button. Screen 2 shows the selected button. Without releasing his finger, the button can be dragged to a desired position on the URC, as shown at screen 3. Once the user lifts his finger, the button is released into its selected position, as shown at screen 4. Buttons or clusters of buttons can be dragged between pages of the URC.
  • a button in the universal remote control can be programmed by the user to generate a single command to cause an electronic device to perform a single function.
  • a button in the remote control can be user-defined as a macro that generates a series of infrared commands to cause one electronic device to perform multiple functions or to cause multiple electronic devices to each perform one or more functions. For example, if the user has three different electronic devices, a television, DVD player, and an audio system, and the user wants to watch a DVD, the user would need to turn on the television, turn on the DVD player, turning on the audio system, and set the volume of the audio system. The user can program a macro or 'one-touch' button to send the appropriate infrared commands to the three electronic devices.
  • FIGS. 17A-17B show an example method for creating a macro in the URC.
  • Screen 1 shows an add button at the left of the control bar.
  • the user can select two options, adding a standard button or adding a one-touch button.
  • the option to add a one-touch button at screen 3 the user is presented with a button for starting to record the functions of the one-touch button. If the user taps on this button, the edit mode ends and the One Touch mode starts. In the One Touch mode, the 'remote flip' function is available that permits the user to record different button functions from remote controls for different electronic devices.
  • a blinking glow indicates the recording process is active.
  • buttons with the desired functions in the preferred order the selected buttons are recorded in a one-touch button.
  • Screen 5 shows the selection of a button for recording. If the user taps the save button in the upper control bar, the recording of the macro for the one-touch button stops. If the user taps the save button before a button is recorded, the user is alerted that a one-touch button can not be saved without recording at least one button function.
  • the cancel button in the upper control bar changes into an 'undo' button, as shown in screen 6. Selecting the 'undo' button removes the last selected button from the one-touch button macro. After a button is selected for recording, the button shows an indicator that displays whether the button was pressed before and how many times it was pressed so that the user knows how many times a function will be performed by the one-touch button.
  • screen 7 displays the URC view where the user started the one touch recording process.
  • a progress bar indicates the percentage of completion of the generation of the one-touch button, as shown in screen 8.
  • Screen 9 shows the one-touch button that has been generated in the middle of the screen. The mode then changes from the one touch mode back to the edit mode.
  • the user can position the one-touch button using drag and drop motions.
  • FIG. 18 shows an example method for overwriting an existing one- touch button macro in the URC.
  • the user can re-record the one-touch button by selecting the one-touch button, as shown in screen 1 .
  • a context menu appears with several options, such as 'copy', 'record', 'timings', 'edit', and 'delete', as shown in screen 2.
  • the user is asked whether he really wants to overwrite the one-touch button functions, as shown in screen 3. Selecting cancel in response brings the user back to the edit mode.
  • the user is shown the one-touch button that can be selected to record a new series of functions, as shown in screen 4.
  • FIGS. 19A-19B show an example method for editing the timing of the functions recorded in a one-touch button.
  • the remote control application automatically adjusts the delays between sending the sequential IR commands based upon the time it typically takes for the device being controlled to respond. For example, powering on a television takes long than powering on a stereo. Thus, the remote control application would add a longer delay after the IR command for turning on the television is sent than after the IR command for turning on a stereo is sent.
  • the user can re-record the one-touch button by selecting the one- touch button, as shown in screen 1.
  • the context menu appears in screen 2 with a 'timings' option.
  • the user is shown a listing of the individual buttons recorded in the selected one-touch button along with a timing slider for each button, as shown in screen 3.
  • the graphics of screen 3 are shown in more detail in screen 3'.
  • the user can change the order of the button functions performed by the macro by dragging a button to a new position in the list. Further, the user can drag the slider corresponding to a particular button to adjust the delay in seconds for the start of the associated function, for example, turning on the DVD player.
  • the user can select the apply button shown in screen 4. Then the screen shows the one-touch button, as shown in screen 5.
  • the URC accessory can be implemented in a miniaturized package that is approximately the size of a paper clip and attaches to the dock connector of a mobile device, such as a smartphone or tablet computer.
  • a mobile device such as a smartphone or tablet computer.
  • FIGS. 20A-20P The following different views of an example miniaturized URC accessory are shown in FIGS. 20A-20P, respectively: top picture, top line drawing, bottom picture, bottom line drawing, non-connecting end picture, non- connecting end line drawing, connector end picture, connector end line drawing, left side picture, left side line drawing, right side picture, right side line drawing, top perspective view picture, top perspective view line drawing, bottom perspective view picture, and bottom perspective view line drawing.
  • FIG. 20Q shows a see-through view of the top of an example miniaturized URC accessory.
  • the URC accessory connections are device agnostic for certain types of devices so that the same URC accessory can be used with any type of mobile device made by Apple Computer of Cupertino, CA, for example, an iPhone, iPod, and iPad.
  • the RCA can be used with the miniaturized URC accessory implementations described above as a remote control for IR-controlled devices. Further, a software application can be downloaded to the RCA to allow a user to access a television guide to select television broadcast programs, access social media such as Facebook and Twitter, and customize the functionality of the URC accessory.
  • the miniaturized URC accessory that attaches to the mobile device functions as a remote control in conjunction with the RCA
  • a user interacts with the mobile device to which the URC accessory is attached differently than a standard remote control for an IR-controlled device.
  • Users hold the mobile device in a number of different orientations when interacting with the mobile device's user interface. For example, the user can hold the mobile device vertically, angled from vertical, horizontally, or angled from horizontal in his hands, in his lap, propped up on a surface, or laying down on a surface, where the surface can be horizontal or have any other orientation that will support the mobile device.
  • a user typically moves around while interacting with the device so that the device is turned or tilted into different orientations during the interaction. Consequently, the URC accessory that is attached to the connector of the mobile device also moves to different corresponding orientations.
  • Some conventional smartphone or tablet computer-based remote controls use a single infrared transmitter that emits into a wide angle to allow the remote control to send commands to IR-controlled devices over a wide range of angles.
  • a single wide angle LED the usable distance that the remote control can be from the devices to be controlled is very limited, thus restricting the number of electronic devices that can be controlled from a given location.
  • FIG. 21A shows a URC accessory 2101 attached to the right side of a tablet computer 2102 held in the user's hands. The right side of FIG.
  • FIG. 21 A shows that a URC accessory 21 1 1 oriented such that the end that points away from the tablet computer to which it is connected emits infrared commands to control electronic devices located within line of sight of the accessory, in approximately the space 21 13.
  • FIG. 21 B shows a URC accessory 2121 attached to the top of a smartphone 2122 held in the user's hands. The right side of FIG. 21 B shows that a URC accessory 2131 oriented such that the end that points away from the smartphone to which it is connected can emit infrared commands to control electronic devices located within line of sight of the accessory, in approximately the space 2133.
  • a URC accessory is attached to the left side of a mobile device, it emits infrared commands to electronic devices within line of sight of the left of the mobile device.
  • a user can use the mobile device in any position without having to point the URC accessory in a certain direction to control an electronic device.
  • All of the LEDs in the URC accessory do not have to be powered on for every orientation of the mobile device.
  • the mobile devices made by Apple Computer have accelerometers that can determine the position of the device and change the orientation of the screen between portrait and landscape modes as the mobile device moves.
  • the RCA can access the accelerometer readings from the mobile device to determine the orientation of the mobile device. With this information the RCA can select the appropriate LEDs to turn on for emitting infrared commands.
  • the mobile device is used in landscape mode, and the URC accessory is located on the right side of the mobile device.
  • the RCA first determines the orientation of the display. For example, if the accelerometer readings indicate that the display is upright, the processor turns on the left and bottom LEDs to send a command, while the right and top LEDs remain off. The right LED is not used because it would emit light into the user's right hand, and the top LED is not used because it would emit light directly towards the user.
  • power consumption by the URC accessory is minimized while maximizing the range of the LEDs that are used.
  • the mobile device is held angled from vertical in the user's hand in portrait mode, and the URC accessory is located on the top of the device.
  • the top and bottom LEDs are used to transmit infrared commands, while the left and right LEDs remain off.
  • the left and right LEDs can be switched on in addition or instead of the top and/or the bottom LEDs.
  • the RCA automatically determines which LEDs are optimal to be used for a particular position of the mobile device and automatically switches between the appropriate LEDs.
  • the number of LEDs used in the URC accessory can be greater than or less than four, and the appropriate number of LEDs to turn on for a given orientation of the mobile device is determined based upon the orientations of the LEDs within the miniaturized URC accessory.
  • FIGS. 22A-22C Schematics for the electronics used in the URC accessory are shown in FIGS. 22A-22C.
  • a microcontroller is used for communicating with the mobile device (e.g., iPhone, iPod, and iPad) and controlling the infrared emitter(s) in the URC accessory.
  • the mobile device e.g., iPhone, iPod, and iPad
  • FIG. 23 is a block diagram illustrating an example of an architecture of a mobile device RCA 2300.
  • the mobile device RCA 2300 includes a plurality of functional modules, each of the functional modules configured to perform a unique function of the mobile device RCA 2300.
  • the mobile device RCA 2300 includes a communications module 2305, a scanning module 2320, a layout management module 2325, a graphic rendering module 2330, an editing module 2335, a macro module 2340, and an orientation sensing module 2345.
  • the communications module 2305 communicates with the mobile device to provide information to the user through the user interface, transfer data, and access registers.
  • the scanning module 2320 guides the user through a scan process to determine whether any of the code sets in a code library works with the user's targeted device.
  • the scanning module 2320 requests needed information from the user, such as category and/or brand of the target device.
  • the scanning module 2320 determines the most efficient commands to test and assigns the IR command to a test button for the user to test with the target device.
  • the scanning module 2320 can divide the code sets for the various IR-controllable devices into groups for testing with command bursts to determine which code sets to retain and eliminate in determining the appropriate code set for the target device.
  • the scanning module 2320 can also analyze a captured and stored IR command to determine which code sets in the code library are compatible with the IR command.
  • the layout management module 2325 automatically generates a virtual remote control layout based on a category of a target device for which a code set has been identified by the scanning module 2320.
  • the layout management module 2325 uses a remote control template for the target device's category to build a new virtual remote control layout. Buttons in the template that have a corresponding IR code in the identified code set are enabled to produce the corresponding code.
  • the graphic rendering module 2330 uses vector graphics to generate graphical elements used in the remote control layout.
  • the graphic rendering module 2330 renders composite graphical elements by layering a graphical element on top of another graphical element.
  • the graphic rendering module 2330 only performs the rendering once when a remote control view is opened by the user and temporarily caches the rendered graphical elements.
  • the editing module 2335 allows a user to customize a virtual remote control generated by the layout management module 2325, for example, selecting button colors, changing button icons, deleting buttons from a layout, adding new buttons, and changing the position of buttons.
  • the macro module 2340 generates a button that triggers a series of IR commands to be emitted that cause one or more IR-controllable devices to perform multiple functions.
  • the macro module 2340 automatically adjusts the timing between each of the IR commands in the series based upon typical time durations it takes for a device to perform a particular function.
  • the macro module 2340 also allows a user to modify the timing and the order of the series of IR commands.
  • the orientation sensing module 2345 receives accelerometer readings from the mobile device's accelerometer through the communications module 2305. Based on the accelerometer readings, the orientation sensing module 2345 determines a relative orientation of the mobile device, and thus the relative orientation of the miniaturized URC accessory coupled to the mobile device. Using the orientation information, the orientation sensing module 2345 can determine which of the infrared transmitters in the miniaturized URC accessory should be turned on to optimize the range and direction of the transmitted infrared commands. In one embodiment, the orientation sensing module 2345 is a module that is part of the miniaturized URC accessory, rather than the RCA 2300, but communicates with the RCA 2300 to obtain the accelerometer readings from the mobile device.
  • FIG. 24 shows a diagrammatic representation of a machine 2400 in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.
  • the machine operates as a standalone device or may be connected (e.g., networked) to other machines.
  • the machine may be a computer, a user device, a tablet PC, a laptop computer, a personal digital assistant (PDA), a cellular telephone, an iPhone, an iPad, an iPod, a Blackberry, a processor, a telephone, a web appliance, a hand-held console, a (hand-held) gaming device, a music player, any portable, mobile, hand-held device, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
  • PDA personal digital assistant
  • machine-readable medium or machine-readable storage medium is shown in an exemplary embodiment to be a single medium, the term “machine-readable medium” and “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
  • the term “machine-readable medium” and “machine-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the presently disclosed technique and innovation.
  • routines executed to implement the embodiments of the disclosure may be implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions referred to as "computer programs.”
  • the computer programs typically comprise one or more instructions set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processing units or processors in a computer, cause the computer to perform operations to execute elements involving the various aspects of the disclosure.
  • machine-readable storage media machine-readable media, or computer-readable (storage) media
  • recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital Versatile Disks, (DVDs), etc.), among others, and transmission type media such as digital and analog communication links.
  • CD ROMS Compact Disk Read-Only Memory
  • DVDs Digital Versatile Disks
  • transmission type media such as digital and analog communication links.
  • the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense (i.e., to say, in the sense of “including, but not limited to”), as opposed to an exclusive or exhaustive sense.
  • the terms “connected,” “coupled,” or any variant thereof means any connection or coupling, either direct or indirect, between two or more elements. Such a coupling or connection between the elements can be physical, logical, or a combination thereof.
  • the words “herein,” “above,” “below,” and words of similar import when used in this application, refer to this application as a whole and not to any particular portions of this application.

Abstract

A universal remote control accessory used in conjunction with a mobile device remote control application and mobile device for controlling IR controllable devices is described. A code library can be downloaded to the mobile device remote control application, and the mobile device application can prompt a user through a user interface to find a matching code set for controlling a target device.

Description

SYSTEMS, METHODS, AND ARCHITECTURE FOR A UNIVERSAL REMOTE CONTROL ACCESSORY USED WITH A REMOTE CONTROL APPLICATION RUNNING ON A MOBILE DEVICE
CROSS-REFERENCES TO RELATED APPLICATIONS
[0001] This application claims priority to U.S. Provisional Patent Application No. 61/443,212 filed 15 February 201 1 , which is hereby incorporated by reference in its entirety.
[0002] This application claims priority to U.S. Provisional Patent Application No. 61/467,922 filed 25 March 201 1 , which is hereby incorporated by reference in its entirety.
[0003] This application claims priority to U.S. Provisional Patent Application No. 61/512,659 filed 28 July 201 1 , which is hereby incorporated by reference in its entirety.
[0004] This application claims priority to U.S. Provisional Patent Application No. 61/531 ,512 filed 6 September 201 1 , which is hereby incorporated by reference in its entirety.
BACKGROUND
[0005] A universal remote control (URC) is a device that can be programmed to operate multiple consumer electronic devices. An all- hardware URC device has a fixed set of buttons having a fixed shape, design, and layout. Some hardware universal remote controls work in conjunction with personal computer software where a code library can be downloaded on- demand from a manufacturer's server. The codes to be assigned to the buttons of the URC are then transferred from the computer to the remote control. A hardware URC can be used with computer software that downloads a code library from a manufacturer's server and then transfers button commands from the computer to the URC. A host device can run an application for a URC where the host displays a virtual representation of the remote control's buttons.
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] Examples of a system for a URC accessory used with a remote control application (RCA) running on a mobile device are illustrated in the figures. The examples and figures are illustrative rather than limiting.
[0007] FIG. 1A illustrates an example diagram of a system where a mobile device RCA controls IR controllable devices in conjunction with a URC accessory coupled to the mobile device.
[0008] FIG. 1 B shows example relationships between database entities.
[0009] FIGS. 2A and 2B is a flow diagram illustrating an example process of scanning a code library for an appropriate code set while minimizing user input into the process.
[0010] FIG. 3A shows an example user interface showing a partial listing of target devices.
[0011] FIG. 3B shows an example user interface showing a partial listing of manufacturers.
[0012] FIGS. 4A and 4B is a flow diagram illustrating an example process of performing a device scan with command bursts.
[0013] FIG. 5 is a flow diagram illustrating an example process of performing a reverse device scan using input from a remote control that works with the target device.
[0014] FIGS. 6A and 6B show pictures of an example URC accessory.
[0015] FIG. 7 shows examples of button clusters that are available for use in remote control templates and for the user when manually assembling a custom layout.
[0016] FIG. 8 shows examples of remote control templates that are used for generating a virtual remote control for a television. [0017] FIGS. 9A-9B show an example method for adding a composite view that includes buttons from different virtual remote controls. FIGS. 9C-9D show close-up views of example screenshots of the mobile device.
[0018] FIG. 10 shows an example method for starting the edit mode on the RCA.
[0019] FIGS. 1 1A-1 1 B show an example method for adding a button or cluster to the URC.
[0020] FIGS. 12A-12B show an example method for editing a cluster of buttons in the URC.
[0021] FIG. 13 shows an example method for entering the teach-in mode for programming a new IR command in the RCA.
[0022] FIG. 14 shows an example method for deleting a button or cluster of buttons in the URC.
[0023] FIGS. 15A-15B show an example method for copying a button or cluster of buttons in the URC.
[0024] FIG. 16 shows an example method for dragging and dropping a button or cluster of buttons in the URC.
[0025] FIGS. 17A-17B shows an example method for creating a macro in the URC.
[0026] FIG. 18 shows an example method for overwriting an existing macro in the URC.
[0027] FIGS. 19A-19B show an example method for editing the timing of the functions stored in a one-touch button.
[0028] FIGS. 20A-20P show pictures and line drawings of an example miniaturized URC accessory. FIG. 20Q shows a see-through view of the top of an example miniaturized URC accessory.
[0029] FIG. 21A shows a URC accessory attached to the left side of a table computer held in the user's hands. [0030] FIG. 21 B shows a URC accessory attached to the top of a smartphone held in the user's hands.
[0031] FIGS. 22A-22C show schematics for the electronics used in the URC accessory.
[0032] FIG. 23 is a block diagram illustrating an example of an architecture of a mobile device RCA.
[0033] FIG. 24 shows a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.
DETAILED DESCRIPTION
[0034] Systems, methods, and architecture are described for a universal remote control (URC) accessory that couples to a mobile device, such as an iPhone mobile phone or iPad, and is controlled by a remote control application (RCA) that runs on the mobile device. The RCA can guide a user through a scanning process to identify a target electronic device and find a corresponding infrared (IR) command code set that will control the device's functions. The URC accessory couples to the mobile device and attaches to the back and sides of the mobile device. Alternatively, a compact miniaturized URC accessory extends only slightly beyond the mobile device when plugged into the port of the mobile device. Once the code set for an electronic device is identified, both the URC accessory and the miniaturized version of the URC accessory are capable of generating the IR commands for controlling the electronic device.
[0035] Various aspects and examples of the invention will now be described. The following description provides specific details for a thorough understanding and enabling description of these examples. One skilled in the art will understand, however, that the invention may be practiced without many of these details. Additionally, some well-known structures or functions may not be shown or described in detail, so as to avoid unnecessarily obscuring the relevant description.
[0036] The terminology used in the description presented below is intended to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific examples of the technology. Certain terms may even be emphasized below; however, any terminology intended to be interpreted in any restricted manner will be overtly and specifically defined as such in this Detailed Description section.
[0037] FIG. 1A illustrates an example diagram of a system where a mobile device RCA controls IR controllable devices in conjunction with a URC accessory coupled to the mobile device.
[0038] Code libraries 102, 104 contain infrared command code sets for various electronic devices. The code library parser 106 takes the code libraries 102,104 and re-organizes the relevant data into a convenient format for efficient searching. The data can be edited by text editor 108 and then imported by a database tool for verification, unification, encryption, and compression and then stored as a database file 1 18. An image editor 1 15 can be used to edit images of buttons, clusters, and other images used in the universal remote control (URC). The edited images are stored as image files 1 16.
[0039] The database file 1 18 and image files 1 16 are added to a mobile device RCA 120 that is downloaded onto the mobile device to be used as a universal remote control. The mobile device RCA 120 can also query a file server 130 for new image files 128 and updates 126 to the RCA 120.
[0040] The mobile device couples to a URC accessory 32 that transmits infrared code signals to IR controllable devices. The URC accessory 132 also has a sensor used for sensing IR codes emitted by other remote controls for use in teaching the mobile device RCA 120 to replicate the IR codes.
[0041] The user interacts with the mobile device RCA 120 through the user interface of the mobile device. The mobile device RCA 120 can take advantage of a touch screen capability of the mobile device. The user can also edit user data stored in a memory of the mobile device that is used by the mobile device RCA 120.
[0042] More details of the above system elements are described below. Code Library Processing
[0043] A remote control code library 102, 104 can be obtained from a library vendor, for example, Innotech Systems of Port Jefferson, NY. The code library includes remote control IR command codes for different brands of home entertainment components, such as televisions, video cassette recorders (VCR), cable boxes, satellite, audio components, and home theater components. By reproducing the IR remote control codes for one of these devices, the device can be made to perform the corresponding function. An RCA should be able to locate and access the IR remote control codes for the appropriate device from the code library in an efficient manner. In one embodiment, the code library is parsed to permit relational database inquiries.
[0044] In one embodiment, the format of the code library is an array. The array contains data structures that provide information about a device category, manufacturer name, device model name, and one or more device codes for controlling the respective devices. The device category specifies one or a combination of devices including, but not limited to, television, audio player, VCR, cable receiver, satellite receiver, digital video disc (DVD) player, digital video broadcasting (DVB) receiver, digital video recorder (DVR), compact disc (CD) player, gaming console, home automation, projector, digital media player, and Blu-ray player. In one embodiment, the device category is specified using 16-bit bit-field values, and the manufacturer and model names for each device are specified using 8-bit characters, and the device codes are 16-bit integers. Code sets for devices within each device category are stored in a static array.
[0045] Typically, the code library has an application programming interface (API) that can be used to query information from the code library. However, the data in the code library is not provided in a way that allows relational inquiries. Thus, the relevant information from the code library is parsed, appropriately transformed, and imported into a relational database for searching.
[0046] In one embodiment, a code library parser application that runs on a computer obtains relevant information from the code library through the API and creates a set of comma separated values (CSV) files. The set of files includes, but is not limited to, a category file, a brands file, and a devices file.
[0047] The category file contains a name of a device category and a corresponding identifier for each device entry. The brands file lists all the manufacturer names with the bit-combined value of all device category identifiers for that brand.
[0048] The devices file stores device information. Each entry in the devices file includes a device code, device category identifier, brand name, model name, and an infrared (IR) protocol identifier. The IR protocol identifier for a device is determined by analyzing the codes in the device's code set to determine whether the infrared protocol for the device code set is one of the well-known, recognizable protocols (e.g., SONY, NEC, and RC5) or an unknown protocol. By categorizing the code sets, code distinction and device recognition is improved for some of the processes associated with the RCA, such as the teach-in process described below.
[0049] Then, the IR command information is parsed. The codes provided by the code library are analyzed and protocols, the signal length, and a command value are determined and stored. The command value is a compact identifier used for specific commands for some of the known protocols.
[0050] Most code set protocols use a carrier frequency to transmit commands. The amplitude of the infrared signal can have either a high or a low value. The high value represents a pulse having a predetermined duration, and a low value represents a gap having a predetermined duration. A pulse is typically followed by a gap. A command in the code set is represented in binary form as a series of O's and '1's. A binary Ό' corresponds to a pulse followed by a gap of a fixed duration (e.g. 100 με), and a '1 ' corresponds to a pulse with a gap having a significantly different duration (e.g. 200 με). Other features used in typical protocols use other components that have significantly different gap durations from the gaps for the Ό' and '1 ' pulses.
[0051] Storing a command in raw form using binary zeros and ones to represent the pulses requires 16 bits for each duration value or 32 bits for a pulse followed by a gap. The 32 bits are multiplied by the number of bits of the command and the other components are added as well. Thus, coding a 32 bit value would need more than 128 bytes. The amount of memory used to store the commands of the code sets can be reduced by just saving the actual value (i.e. the command values) to the database and creating the pulse and gap pairs on demand when a particular command is requested by the user. This technique saves almost 124 bytes per command in the above example because only 4 bytes (32 bits) are used instead of 128 bytes.
[0052] Once the set of files has been generated, they can be inspected and edited with an editing program, for example, Microsoft Excel. After the files have been reviewed and any errors have been corrected, they are imported into a database using a database utility application. In one embodiment, the database can be a relational database management system, such as an SQLite database.
[0053] After the data has been imported into the database, it can be analyzed to find IR commands that have equivalent codes. Then the equivalent codes only need to be stored once along with a correlation, such as a pointer, to the linked device data. Because the memory required to store a pointer is much less than the memory needed to store an IR command code, the total memory required for storing the code library is reduced.
[0054] In one embodiment, the IR command codes are compressed to minimize the amount of memory needed to store the database. Then, the compressed codes are encrypted. In one embodiment, the entire database can also be encrypted to further protect the data. Importing the Database
[0055] To allow the proper association of entities within the relational database, the files are imported into the target database in a fixed order. First, the category file is imported as a table designated Category. The Category table is imported first because the category of the devices has no dependencies upon other entities.
[0056] Next, the brands file is created as a table designated Brands. The Brands table references the appropriate entries in the Category table. Then the devices file is imported as a table called Devices. The Devices table references the appropriate manufacturers in the Brands table. Then a table, called Commands, is created that contains the device codes, and the appropriate relationships with the Devices table are included in the table.
[0057] Because a command code can have a different meaning for devices in different categories, it is important to provide the device category for each command and the priority of the command within each device category. Essentially, the priority ranking indicates a preferred order to test commands to try to minimize the amount of time needed to determine whether a code set works with a target device. In one embodiment, the commands for each device category are prioritized based on the frequency with which each command is used and/or the relevance of the command for the device category. For example, the channel up button for a television would be used much more frequently than the brightness control. In one embodiment, information as to the market share of devices within each device category and the demographics of the purchasers of the devices are taken into account in prioritizing the commands in each device category. For example, a user of an iPhone as the host for the URC accessory is likely to be interested in electronic gadgets that provide the latest improvements. Thus, command sets corresponding to the most recently released versions of electronic devices may be given a higher priority. The commands and their command priorities for each device category are stored in a table designated Command Priority. [0058] Other database entities can be created, edited in a content management tool, and imported into the database. The database entities include a remote control template, a OneView template, a page, a cluster template, a button template, a teach-in cluster, a source, and images. The remote control template is used to provide images based on the category of a device. The OneView template is used to provide images based on combinations of categories. The page is used to provide an image of grouped buttons or clusters of buttons. The cluster template is used to provide an image of groups of buttons. The button template is used to provide an image of a button. The teach-in cluster is a cluster used to provide an image for the teach-in process. The source is used to determine the source of a data object. The images are used to represent images of objects, such as rooms, remote controls, clusters, and buttons. The database entities can be edited using a content management tool, stored in CSV files, and imported into the database with the other tables.
[0059] FIG. 1 B shows example relationships between database entities. The room 150 database entity is a container for remote controls and OneViews. The remote control 152 database entity is created from a remote control template, and the OneView 170 database entity is created from a OneView template. The device 154 database entity specifies the one device that the remote control 152 entity controls. The page 156 database entity contains a clusters of buttons 158 database entity which contains button 160 database entities which contain commands 162 database entities that are taken from a code library recorded by the user using the teach-in process.
[0060] The OneView 170 database entity specifies the multiple devices that the OneView 170 entity controls. Similar to the remote control 152 entity described above, the OneView 170 entity includes a page 174 entity which includes a cluster 176 entity, which includes a button entity 178, and which includes commands 180 entities.
Scanning for a Matching Code Set [0061] The RCA guides the user through a scanning process to identify a target device and to find a corresponding code set. FIGS. 2A and 2B is a flow diagram illustrating an example process of scanning the code library for an appropriate code set while minimizing user input into the process. Example user interface screen shots are shown below.
[0062] At block 202, the RCA uses the mobile device user interface to show a list of available device categories, as listed in the Category table, and prompts the user to select the category for the targeted device. An example user interface showing a partial listing of target device categories is shown in FIG. 3A. The user selects the target device category from the list, and at block 205, the RCA receives the user's device category selection.
[0063] " At block 210, based upon the user's category selection, the list of manufacturers is filtered to include only the devices in the selected category. Then at block 215, the RCA uses the filtered view of the Brands table to show a list of available manufacturers and prompts the user to select the manufacturer for the targeted device. An example user interface showing a partial listing of manufacturers is shown in FIG. 3B. At block 220, the RCA receives a manufacturer selected by the user or an indication that the user's brand is missing from the list.
[0064] At decision block 225, the RCA determines whether the user responded that the user's brand is missing. If the user's brand is missing (block 225 - Yes), at block 230, the process goes to the teach-in process. If the user selects a listed brand (block 225 - No), at block 235 the code sets are filtered to only include the selected brand. Then at block 237, the filtered code sets having the selected brand are sorted by the length of the codes.
[0065] Next, at block 240, the Command Priority table is filtered for the devices in the selected category, and the first command listed, which has the highest priority, is selected from the filtered list. Then at block 245 all code sets that contain this command are filtered and retained.
[0066] At decision block 250, the RCA determines if the remaining devices all use the same code for the command. If all filtered remaining devices use the same code (block 250 - Yes), at decision block 252, the RCA determines if the command is the lowest priority command in the Command Priority table. If the command is not the lowest priority command (block 252 - No), at block 255, the command with the next lowest priority is selected, and the process returns to decision block 250. If the command is the lowest priority command (block 252 - Yes), at block 257 the RCA selects any command for testing, and the process continues to block 258.
[0067] If all filtered remaining devices do not use the same code (block 250 - No), at block 258 the RCA selects a code set for testing. At block 260, the RCA requests that the user test the command. The RCA assigns the IR command to a button that is presented to the user, and the user is instructed to press the button to test the IR command and observe the result of sending the command to the target device.
[0068] At decision block 265, the RCA determines whether the user reported that the command worked. If the command did not work as expected (block 265 - No), at decision block 280, the RCA determines if the code set was the last one of the code sets remaining to be tested. If the code set was the last one to be tested (block 280 - Yes), at decision block 283 the RCA determines if the last command was tested. If the last command in the code set was not tested (block 283 - No), at block 284, a command, such as the next lower priority command is selected for assigning to the test button, and the process continues to decision block 265. If there are no other commands to test (block 283 - Yes), the process continues to block 230.
[0069] If the code set was not the last one to be tested (block 280 - No), at block 285, the RCA assigns the code corresponding to the command to be tested from the next code set to be tested to the test button for the user to test, and the process returns to decision block 265.
[0070] If the user reports that the command worked as expected (block 265 - Yes), at block 267 incompatible code sets are eliminated from testing. Incompatible code sets include code sets that do not contain the selected command, code sets that have a shorter code length, and code sets that have longer code lengths and are not equal in their overlapping portions. By eliminating these devices and their code sets, the number of commands that need to be tested is reduced.
[0071] Then at decision block 270, the RCA determines if the code set was the last one of the code sets remaining to be tested. If the code set is the last one to be tested (block 270 - Yes), a virtual remote control is created for the code set at block 275. If the code set is not the last one to be tested (block 270 - No), at decision block 272, the RCA determines if code sets of the devices that have been tested have equal codes in their code sets. If the devices have equal codes (block 272 - Yes), the scan process was successful, and at block 275 a virtual remote control is created for any of these devices. If the devices do not have equal codes in their code sets (block 272 - No), at block 278, the RCA selects the next code set and presents the command from the next code set to present to the user for testing with the test button. The process continues to decision block 265.
Device Scanning with Command Burst
[0072] While the above-described scanning process for code sets in the code library eventually results in determining the appropriate code set for the target device, the number of steps used to make the determination can be significantly reduced by sending out a series of codes at each user test step, rather than just a single one. Ideally, every time a user is requested to press a button to test a command, the total number of potential code set candidates is decreased by approximately half or as close to half as possible. FIGS. 4A and 4B is a flow diagram illustrating an example process 400 of performing a device scan with command bursts.
[0073] Similar to process 200, process 400 involves blocks 202-235. Then at block 405, a command is selected that is common to all devices that have been filtered and retained at block 235. If there is no command common to the filtered devices and no previously tested command succeeded in controlling the target device, the command with the highest prevalence among the remaining devices is selected. [0074] At block 410, the commands of the remaining device candidates are divided into groups of identical or equal commands. Then at block 415, each group is added to one of two divisions, a first division D1 or a second division D2. Groups that have commands that are similar are placed in the same division. Similar commands can include commands that have pulse and/or gap width durations that are equal within a certain tolerance, e.g. having a variance of 10%, because the IR codes are sampled with relatively inaccurate sampling rates. Similar commands can also include commands that have a different header or trailer portion or commands that include sections that are repeated within the command.
[0075] At decision block 420, the RCA decides if all groups are similar such that all of the groups have been placed into only one division. If all groups are similar (block 420 - Yes), at block 425 one of the groups in the first division is moved to the second division, and the process continues to decision block 430. If not all groups are similar (block 420 - No), at decision block 430, the RCA determines if there is only one group left. If only one group is left (block 430 - Yes), at decision block 440, the RCA determines if only compatible devices are left in the group. The devices in the group are considered compatible if the code sets for all functions that are common to the devices work for each of the devices in the group. If only compatible devices are left (block 440 - Yes), at decision block 445, the RCA determines if a command has previously successfully controlled the target device during the process 400. If a command has previously worked (block 445 - Yes), the RCA selects the code set that has the most commands as the matching device to create the virtual remote control. If no command worked previously (block 445 - No), no matching device has been found, and at block 450 the teach-in process is recommended to the user.
[0076] If the code sets are not all compatible (block 440 - No), the process returns to block 405 to select the next most suitable command.
[0077] If more than one group is left at decision block 430 (block 430 - No), at block 435 the RCA assigns a sequence of commands to a test button, where the sequence of commands includes the codes for each of the devices in the first division. The button is then presented to the user, and the user is instructed to press the button to test the sequence of commands and observe the result of sending the commands to the target device. The sequence of commands is referred to as a command burst. The sequence of commands includes delays between each command to give the user time to observe the effect of the commands on the target device.
[0078] At decision block 460, the RCA determines whether the user reported that the test button commands worked. If the commands worked (block 460 - Yes), at block 465 the devices in the second division D2 are eliminated, and only devices in the first division D1 are considered. The process returns to block 415 where the remaining groups are re-divided into two new divisions.
[0079] If the test button commands did not work (block 460 - No), at decision block 470, the RCA determines if the second division D2 has any devices. If the second division has devices (block 470 - Yes), at block 475 the devices in the first division D1 are eliminated, and only devices in the second division are considered. The process returns to block 415 where the groups in the second division are divided into two new divisions.
[0080] If the second division does not have any devices (block 470 - No), at decision block 480 the RCA determines if at least three previous command bursts have failed. If at least three previous command bursts failed (block 480 - Yes), no matching device code set has been found, and the teach-in process is recommended to the user.
[0081] If fewer than three previous command bursts failed (block 480 - No), at decision block 485 the RCA determines if there has been any previous successful response. If there has been a successful response (block 485 - Yes), at block 495 the code set corresponding to the best device is selected for creating a virtual remote control. The best device is the device having the largest number of codes in the command set. [0082] If there has not been a success response (block 485 - No), the process returns to block 405 to determine the next most suitable command to test.
Reverse Scanning
[0083] Another way to determine a compatible code set from the code library for a target device is to record one or more infrared codes emitted from the target device's original remote control or other remote control known to control the target device and search for the codes in the code library. FIG. 5 is a flow diagram illustrating an example process of performing a reverse device scan using input from a remote control that works with the target device.
[0084] At block 502, the RCA uses the user interface to show a list of available device categories and prompts the user to select the category for the targeted device. The user selects the target device category from the list, and at block 505, the RCA receives the user's device category selection.
[0085] Then at block 510, the system prompts the user to point the original remote control or other known working remote control towards the infrared sensor of the universal remote control accessory and press any button.
[0086] FIGS. 6A and 6B show illustrations of an example of the universal remote control accessory. In one embodiment, the universal remote control accessory attaches to the sides, bottom, and back of a mobile device. The infrared transmitter is oriented to face toward the top of the URC accessory and the top edge of the mobile device so that the user can point the mobile device towards the target device while still viewing the screen of the mobile device in its normal operating position facing the user. The infrared sensor on the URC accessory is located along the bottom edge of the URC accessory. This position allows the sensor to receive infrared signals while the user is holding the mobile device in its normal operating position. The infrared transmitter is physically separate from the infrared sensor in the URC accessory. By separating the infrared sensor and transmitter and placing the infrared sensor and transmitter in their respective positions on the URC accessory, both the mobile device and the original remote control can be used in their normal operating positions facing towards the user.
[0087] When the user presses a button on the known working remote control, the remote control emits the corresponding infrared command code. Then at block 515, the RCA records the emitted IR command code and analyzes the code to determine the length of the code.
[0088] At decision block 525, the RCA determines if the infrared protocol used by the original remote control is one of the more common protocols, such as RC-5 or NEC. The comparison process is fast for known protocols because the system can use the IR protocol identifier used with the code sets in the database. However, if the recorded command's protocol is an unknown protocol, the comparison process is slower because a comparison of the pulse width and gap width information is performed, and the system should account for variations in the pulse widths and gap widths.
[0089] To speed up the comparison process, if the protocol is unknown (block 525 - Yes), at block 530, the code sets are filtered by the category of the target device, and the process continues to block 532. If the protocol is known (block 525 - No), at block 532 the RCA retains only the code sets from the code library that have the same or similar length and the same protocol, if known.
[0090] At decision block 535, the system determines if there are any remaining code sets. If there are no remaining code sets (block 535 - No), the reverse scan has failed, and at block 540 the RCA informs the user that no code set match has been found and recommends using the teach-in process to program a button used the URC.
[0091] If there are remaining code sets (block 535 - Yes), at decision block 545 the RCA determines if there is only one remaining code set or if all of the remaining code sets are common among the remaining devices. If there is only one remaining code set or if the remaining codes are common (block 545 - Yes), the reverse scan was successful, and all remaining code sets are considered a match. At block 560 the RCA selects the device that has the most commands in its code set and a virtual remote control is created for the code set.
[0092] If there is more than one device remaining (block 545 - No), at block 550 the RCA identifies the command that is closest to being included in approximately half of the code sets of the remaining devices. If a command cannot be identified that applies to half of the code sets, then a command is selected that applies to a number of code sets closest to half of the total code sets remaining to be considered. In one embodiment, the RCA scans the code identifiers of the remaining code sets and sums the absolute frequency of their appearance within the candidate code sets.
[0093] Then at block 555, the RCA prompts the user to press the button on the known working remote control that corresponds to the identified command. The process continues at block 515. The process ends when a match has been made or when the RCA determines that there is no code set in the code library that matches the command codes emitted by the remote control.
Teaching the RCA
[0094] As described above, when no code set in the code library works to control a target device, it is possible to 'teach' or program an IR command for use by the RCA. The 'teach-in' or programming process uses a remote control that works with the target device to generate the IR command to be stored by the RCA. The remote control can be the original remote control that came with the device or another remote control that has been programmed with codes that work with the target device.
[0095] The remote control application guides the user through the teach- in process by prompting the user to select a button from the layout of a virtual remote provided by the remote control application to be associated with the new IR command. Then the user is requested to activate the corresponding button on the target device's remote control while aiming the remote control toward the IR sensor in the URC accessory. The URC accessory senses the IR command, and the RCA stores the IR command and links it to the selected button.
[0096] In one embodiment, after a user has taught a code set or even a single command code to the RCA, the RCA uploads the new code to a code set database. The database can store new code sets that have been programmed into a remote control application, thus enlarging the code set database. The newly uploaded code sets can then be verified and/or edited before being made available to other users of the remote control application for downloading.
Automated Remote Control Layout Generation
[0097] After the target device and its code set have been identified, in order to provide a remote control for generating the commands, the RCA determines an appropriate layout for the buttons of the virtual remote control. In one embodiment, the buttons can be grouped into clusters that can include one or more buttons. FIG. 7 shows three examples of button clusters that are available for use in the remote control templates and for the user when manually assembling a custom layout.
[0098] Additionally, clusters of buttons are organized onto pages. The URC is presented to the user in one or more pages. By using pages to organize the buttons of a remote control, the user interface is not cluttered and button clusters are ordered based on usage and the relation of one button cluster to another. Both the button cluster and the page are generated using templates from the database, as described above.
Remote Control Templates
[0099] To generate an optimal layout for the virtual remote control, a layout management module in the RCA uses a layout template for each known device category. The templates define remote control layouts that are constructed to present the most relevant buttons at the front pages and less relevant or common buttons on subsequent pages. FIG. 8 shows three examples of remote control templates that are used for generating a virtual remote control for a television. [00100] The layout management module builds new virtual remote controls from the appropriate categories of templates by adding each cluster found in the template to the new virtual remote control. Each button that corresponds to an infrared command found in the target device's code set is enabled. All other buttons are added to the layout but are not enabled. The nonfunctioning buttons can by enabled either by using the teach-in process, or they can be removed by the user using edit mode.
[00101] Buttons that are not included in the templates but are found in the target device's code set are added to additional pages at the back of the virtual remote control layout. The user can reposition these buttons in edit mode.
OneView Assembly and Layout Generation
[00102] The flexibility of the layout of the URC allows buttons from the virtual remote controls created for different electronic devices to be combined in a composite virtual remote control called OneViews.
[00103] When a user adds a code set of a new electronic device to the URC, the RCA checks if there are any other devices that have been added that can make a useful combination. In particular, the RCA searches for all the devices that can provide video input, audio input, video output, and audio output. If these inputs and output are applicable to the OneView that can be generated from a user's electronic devices, the user is requested to select one of the available video and audio inputs and video and audio outputs to generate a mixed remote control. In the OneView remote control, buttons with specialized functions from the specified electronic devices are grouped. For example, channel switching is assigned to the selected television device, and volume control, muting and speaker settings are routed to the selected audio output device.
[00104] Similar to single device virtual remote controls, OneViews are generated using use-case specific templates. The pages and clusters in OneViews are defined based on the frequency of their usage in the context of the individual use-case. Further, when the user sets up the OneView, the table of electronic devices that are presented to the user to select from automatically includes the devices based on their functions as video/audio inputs, audio output, and video output. If there is only a single electronic device available that has a required function, that device is automatically selected.
[00105] FIGS. 9A-9B show an example method for adding a composite view, called a OneView, that includes buttons from different virtual remote controls. The wire frames for the screens are shown on the top of FIGS. 9A- 9B, while corresponding screenshots of the mobile device are shown on the bottom. FIGS. 9C-9D show close-up views of the screenshots of the mobile device corresponding to screens 3-8.
[00106] At the home screen shown in screen 1 , the user is shown a start button to begin interacting with the URC. Then at screen 2, the user is shown a list of rooms to select from for which the OneView is to be associated. Upon selecting the example room 'kitchen', at screen 3 the user is shown a selection of electronic devices for that room that have been added to the URC and a control bar on top that includes a 'settings' option. Upon selecting the 'settings' option, at screen 4 the user can select the option to add a new OneView. Upon making this selection, at screen 5 the user is presented with a list of options for the new OneView based upon the available devices, for example, watch recorded content, listen to music, gaming, watch DVD, and watch television. Upon selecting 'watch DVD', for example, the user is shown a list of devices that can provide video input, such as a DVD player and a VCR player, as shown in screen 6. Upon selecting an video input device, the user is shown a list of devices that can provide video output, for example, a television and a beamer, as shown in screen 7. Upon selecting a video output device, the user is shown a list of devices that can provide audio output, for example, a television and an audio receiver, as shown in screen 8. After making the audio output selection, the OneView is created and shown to the user for selection as a button in the list of devices for the room, as shown in screen 9. [00107] The example of FIGS. 9A-9D is for adding a OneView for watching a DVD. If the desired OneView only involves audio, for example, listening to music, then the steps for setting up the One View will automatically include only the steps for selecting an audio input and an audio output.
Scalable, Resolution-Invariant Icon, Button, and Cluster Library
[00108] Traditionally, button graphic resources are stored as raster graphics. However, when raster graphics are scaled, the quality of the resulting images are noticeably reduced in quality. Because different mobile devices (e.g. iPhone, iPod, iPad) have different screen resolutions, the RCA does not use raster graphics. Instead, the RCA uses vector graphics to generate high quality graphical representations of the RCA control elements (e.g., all icon, button, and cluster graphics) in a lossless and resolution- invariant way.
[00109] Vector graphics can be scaled without loss. Thus, scaled representations of the same graphics do not need to be stored for each target resolution, thereby saving memory space. Further, because vector graphics can be colorized on demand, there is no need to store versions of the resources for each color variant, again saving memory space. The basic vector resources are generated in a standard vector editor, such as Adobe Illustrator and stored as PDF files.
[00110] The button graphic that is shown to the user in the remote control layout is generated by layering an icon graphic and/or label text over a button graphic, which is then layered on top of a cluster graphic. The generation and rendering of the graphic is only performed once when the remote control view is opened. If the user stays in the remote control view, the pre-rendered graphics are temporarily cached for later use.
Edit Mode
[00111] The universal remote control has an edit mode for customizing the remote control, for example, selecting colors for the buttons, changing icons on the buttons, removing buttons, adding new buttons, or dragging and dropping buttons to change the positions of the buttons. The editing methods described below assume that the mobile device has a touch screen, however the editing functions can also be performed with a pointer or other input device.
[00112] FIG. 10 shows an example method for starting the edit mode on the URC. At the home screen shown in screen 1 , the user is shown a start button to begin interacting with the URC. Then at screen 2, the user is shown a list of rooms to select from for which the button to be edited is associated. Upon selecting the example room 'kitchen', at screen 3 the user is shown a selection of devices for that room that have been added to the URC. Upon selecting the example device 'television', at screen 4 the user is shown the buttons defined for that device and a button for selecting settings in the top bar of the screen. Upon selecting the settings button, at screen 5 the user is shown several options, including changing the icon image, editing the layout for the URC, or deleting the device. The user enters edit mode upon selecting the button for editing the layout.
[00113] FIGS. 1 1A-1 1 B show an example method for adding a button or cluster to the URC. Once the URC enters the edit mode, screen 1 is shown to the user which has an add button and a save button in the top bar and a grid in the background. Upon selecting the add button, at screen 2 the user is shown two options, a 'button' option for adding buttons to the URC or a one- touch button for creating a macro (described below), above a display of remote control buttons that have already been created by the user in the URC. Upon selecting 'button', at screen 3 the options for adding buttons appears in a bar near the bottom of the display. The options include 'empty', 'play', 'pause', and 'stop'. The buttons are linked with their respective infrared command for the device, if available. The bar also includes options for adding either a single button or a cluster of buttons. The default selection is a single button. Screen 4 shows the user dragging a new empty button to the remote control display. The user can also tap on the button to move it to the display. Upon adding a new button to the display, the user can drag the button to a preferred location in the remote control display, as shown in screen 5. Once the user releases the button, the button remains in its location as shown in screen 6. The added button remains inactive if no infrared command is available, although the teach-in process can be used to program an infrared command for the button.
[00114] FIGS. 12A-12B show an example method for editing a cluster of buttons in the URC. Screen 1 shows a cluster of buttons in the URC. The user can tap a button or cluster of buttons to select them. Once the user selects a button or cluster, a context menu appears with several options, such as 'copy', 'teach in', 'edit', and 'delete' as shown in screen 2. Upon selecting the edit option, at screen 3 the buttons in the cluster indicate that they can be selected by, for example, glowing. Upon selecting one of the buttons, an edit menu appears as shown at screen 4. In the edit menu, the user can change the color of the button, change the icon, or change the text. Upon clicking the button for applying the settings, as shown in screen 5, screen 6 displays the buttons or cluster for editing and a 'done' button in the top bar. Upon selecting the 'done' button, the URC leaves the edit cluster mode and shows the URC at screen 7.
[00115] FIG. 13 shows an example method for entering the teach-in mode for programming a new IR command in the remote control application. The remote control buttons are shown to the user for selecting for teaching-in at screen 1. Upon selection of a button, a 'teach-in' button is shown in the control bar at screen 2. The user presses the 'teach-in' button and then selects the button on the original remote control to transfer the infrared command to the URC. The screen automatically steps to the next button or cluster of buttons that has a button with no corresponding infrared command to enable the teach-in process to be implemented. At screen 3, the user is shown a 'done' button at the top of the screen for selection upon completion of the teach-in process.
[00116] FIG. 14 shows an example method for deleting a button or cluster of buttons in the URC. Screen 1 shows a button in the URC. Upon selecting the button, at screen 2 the user is shown a control bar that includes a 'delete' button. Upon selecting the 'delete' button, at screen 3 the RCA asks the user to confirm that the button should be deleted. Upon confirming, at screen 4 the URC is shown without the deleted button.
[00117] FIGS. 15A-15B show an example method for copying a button or cluster of buttons in the URC. Screen 1 shows a page of buttons in the URC. Once the user selects a button or cluster, a context menu appears with several options, such as 'copy', 'teach in', 'edit', and 'delete' as shown in screen 2. Upon selecting the copy option, the selected button is written into a buffer, and at screen 3 the page of buttons is shown again. The user can switch between views of different remote controls in the URC by swiping the shown page, as shown at screen 4. Then when the user taps on an empty location, a context menu appears with a 'paste' option, as shown at screen 5. Upon selecting the paste option at screen 6, the previously selected button is placed in the selected position of the remote control, as shown in screen 7.
[00118] FIG. 16 shows an example method for dragging and dropping a button or cluster of buttons in the URC. Screen 1 shows a button in the URC. The user can drag a button by tapping and holding his finger down on the button. Screen 2 shows the selected button. Without releasing his finger, the button can be dragged to a desired position on the URC, as shown at screen 3. Once the user lifts his finger, the button is released into its selected position, as shown at screen 4. Buttons or clusters of buttons can be dragged between pages of the URC.
Macros
[00119] As discussed above, a button in the universal remote control can be programmed by the user to generate a single command to cause an electronic device to perform a single function. Additionally, a button in the remote control can be user-defined as a macro that generates a series of infrared commands to cause one electronic device to perform multiple functions or to cause multiple electronic devices to each perform one or more functions. For example, if the user has three different electronic devices, a television, DVD player, and an audio system, and the user wants to watch a DVD, the user would need to turn on the television, turn on the DVD player, turning on the audio system, and set the volume of the audio system. The user can program a macro or 'one-touch' button to send the appropriate infrared commands to the three electronic devices.
[00120] FIGS. 17A-17B show an example method for creating a macro in the URC. Screen 1 shows an add button at the left of the control bar. Upon selecting the add button, at screen 2 the user can select two options, adding a standard button or adding a one-touch button. Upon selecting the option to add a one-touch button, at screen 3 the user is presented with a button for starting to record the functions of the one-touch button. If the user taps on this button, the edit mode ends and the One Touch mode starts. In the One Touch mode, the 'remote flip' function is available that permits the user to record different button functions from remote controls for different electronic devices. Upon selecting this button, at screen 4 a blinking glow indicates the recording process is active.
[00121] In the One Touch mode, the user selects the buttons with the desired functions in the preferred order, and the selected buttons are recorded in a one-touch button. Screen 5 shows the selection of a button for recording. If the user taps the save button in the upper control bar, the recording of the macro for the one-touch button stops. If the user taps the save button before a button is recorded, the user is alerted that a one-touch button can not be saved without recording at least one button function. Once a button is selected for recording by the user, the cancel button in the upper control bar changes into an 'undo' button, as shown in screen 6. Selecting the 'undo' button removes the last selected button from the one-touch button macro. After a button is selected for recording, the button shows an indicator that displays whether the button was pressed before and how many times it was pressed so that the user knows how many times a function will be performed by the one-touch button.
[00122] Upon pressing the save button, screen 7 displays the URC view where the user started the one touch recording process. A progress bar indicates the percentage of completion of the generation of the one-touch button, as shown in screen 8. Screen 9 shows the one-touch button that has been generated in the middle of the screen. The mode then changes from the one touch mode back to the edit mode. At screen 10, the user can position the one-touch button using drag and drop motions.
[00123] FIG. 18 shows an example method for overwriting an existing one- touch button macro in the URC. The user can re-record the one-touch button by selecting the one-touch button, as shown in screen 1 . Upon selecting the one-touch button, a context menu appears with several options, such as 'copy', 'record', 'timings', 'edit', and 'delete', as shown in screen 2. Upon selecting the 'record' option, the user is asked whether he really wants to overwrite the one-touch button functions, as shown in screen 3. Selecting cancel in response brings the user back to the edit mode. Upon indicating that the one-touch button should be overwritten, the user is shown the one-touch button that can be selected to record a new series of functions, as shown in screen 4.
[00124] FIGS. 19A-19B show an example method for editing the timing of the functions recorded in a one-touch button. The remote control application automatically adjusts the delays between sending the sequential IR commands based upon the time it typically takes for the device being controlled to respond. For example, powering on a television takes long than powering on a stereo. Thus, the remote control application would add a longer delay after the IR command for turning on the television is sent than after the IR command for turning on a stereo is sent.
[00125] The user can re-record the one-touch button by selecting the one- touch button, as shown in screen 1. The context menu appears in screen 2 with a 'timings' option. Upon selecting the 'timings' option, the user is shown a listing of the individual buttons recorded in the selected one-touch button along with a timing slider for each button, as shown in screen 3. The graphics of screen 3 are shown in more detail in screen 3'. The user can change the order of the button functions performed by the macro by dragging a button to a new position in the list. Further, the user can drag the slider corresponding to a particular button to adjust the delay in seconds for the start of the associated function, for example, turning on the DVD player. Upon finishing the timings adjustment, the user can select the apply button shown in screen 4. Then the screen shows the one-touch button, as shown in screen 5.
Miniaturized URC
[00126] In one embodiment, the URC accessory can be implemented in a miniaturized package that is approximately the size of a paper clip and attaches to the dock connector of a mobile device, such as a smartphone or tablet computer. The following different views of an example miniaturized URC accessory are shown in FIGS. 20A-20P, respectively: top picture, top line drawing, bottom picture, bottom line drawing, non-connecting end picture, non- connecting end line drawing, connector end picture, connector end line drawing, left side picture, left side line drawing, right side picture, right side line drawing, top perspective view picture, top perspective view line drawing, bottom perspective view picture, and bottom perspective view line drawing. FIG. 20Q shows a see-through view of the top of an example miniaturized URC accessory.
[00127] In one embodiment, the URC accessory connections are device agnostic for certain types of devices so that the same URC accessory can be used with any type of mobile device made by Apple Computer of Cupertino, CA, for example, an iPhone, iPod, and iPad.
[00128] The RCA can be used with the miniaturized URC accessory implementations described above as a remote control for IR-controlled devices. Further, a software application can be downloaded to the RCA to allow a user to access a television guide to select television broadcast programs, access social media such as Facebook and Twitter, and customize the functionality of the URC accessory.
Orientational awareness
[00129] Although the miniaturized URC accessory that attaches to the mobile device functions as a remote control in conjunction with the RCA, a user interacts with the mobile device to which the URC accessory is attached differently than a standard remote control for an IR-controlled device. Users hold the mobile device in a number of different orientations when interacting with the mobile device's user interface. For example, the user can hold the mobile device vertically, angled from vertical, horizontally, or angled from horizontal in his hands, in his lap, propped up on a surface, or laying down on a surface, where the surface can be horizontal or have any other orientation that will support the mobile device. Moreover, a user typically moves around while interacting with the device so that the device is turned or tilted into different orientations during the interaction. Consequently, the URC accessory that is attached to the connector of the mobile device also moves to different corresponding orientations.
[00130] Some conventional smartphone or tablet computer-based remote controls use a single infrared transmitter that emits into a wide angle to allow the remote control to send commands to IR-controlled devices over a wide range of angles. However, with a single wide angle LED, the usable distance that the remote control can be from the devices to be controlled is very limited, thus restricting the number of electronic devices that can be controlled from a given location.
[00131] In contrast, four infrared transmitting LEDs facing in different directions are integrated into the miniaturized URC accessory. The appropriate combination of LEDs is turned on to emit infrared commands based upon the orientation of the mobile device. Thus, the LEDs effectively allow a user to control an electronic device that is within line of sight of the miniaturized URC accessory coupled to the mobile device without having to point the miniaturized URC accessory at the device to be controlled. FIG. 21A shows a URC accessory 2101 attached to the right side of a tablet computer 2102 held in the user's hands. The right side of FIG. 21 A shows that a URC accessory 21 1 1 oriented such that the end that points away from the tablet computer to which it is connected emits infrared commands to control electronic devices located within line of sight of the accessory, in approximately the space 21 13. FIG. 21 B shows a URC accessory 2121 attached to the top of a smartphone 2122 held in the user's hands. The right side of FIG. 21 B shows that a URC accessory 2131 oriented such that the end that points away from the smartphone to which it is connected can emit infrared commands to control electronic devices located within line of sight of the accessory, in approximately the space 2133. Similarly, if a URC accessory is attached to the left side of a mobile device, it emits infrared commands to electronic devices within line of sight of the left of the mobile device. Thus, a user can use the mobile device in any position without having to point the URC accessory in a certain direction to control an electronic device.
[00132] All of the LEDs in the URC accessory do not have to be powered on for every orientation of the mobile device. The mobile devices made by Apple Computer have accelerometers that can determine the position of the device and change the orientation of the screen between portrait and landscape modes as the mobile device moves. Likewise, the RCA can access the accelerometer readings from the mobile device to determine the orientation of the mobile device. With this information the RCA can select the appropriate LEDs to turn on for emitting infrared commands.
[00133] As shown in the example of FIG. 21 A, the mobile device is used in landscape mode, and the URC accessory is located on the right side of the mobile device. The RCA first determines the orientation of the display. For example, if the accelerometer readings indicate that the display is upright, the processor turns on the left and bottom LEDs to send a command, while the right and top LEDs remain off. The right LED is not used because it would emit light into the user's right hand, and the top LED is not used because it would emit light directly towards the user. By supplying power only to the LEDs needed to reach the electronic devices to be controlled, power consumption by the URC accessory is minimized while maximizing the range of the LEDs that are used.
[00134] As shown in the example of FIG. 21 B, the mobile device is held angled from vertical in the user's hand in portrait mode, and the URC accessory is located on the top of the device. The top and bottom LEDs are used to transmit infrared commands, while the left and right LEDs remain off. Depending on the position of the accessory as the user move's his hand, the left and right LEDs can be switched on in addition or instead of the top and/or the bottom LEDs.
[00135] The RCA automatically determines which LEDs are optimal to be used for a particular position of the mobile device and automatically switches between the appropriate LEDs. As will be appreciated by those skilled in the art, the number of LEDs used in the URC accessory can be greater than or less than four, and the appropriate number of LEDs to turn on for a given orientation of the mobile device is determined based upon the orientations of the LEDs within the miniaturized URC accessory.
Electronics
[00136] Schematics for the electronics used in the URC accessory are shown in FIGS. 22A-22C. A microcontroller is used for communicating with the mobile device (e.g., iPhone, iPod, and iPad) and controlling the infrared emitter(s) in the URC accessory.
Mobile Device Application Modules
[00137] FIG. 23 is a block diagram illustrating an example of an architecture of a mobile device RCA 2300. In the illustrated embodiment, the mobile device RCA 2300 includes a plurality of functional modules, each of the functional modules configured to perform a unique function of the mobile device RCA 2300.
[00138] The mobile device RCA 2300 includes a communications module 2305, a scanning module 2320, a layout management module 2325, a graphic rendering module 2330, an editing module 2335, a macro module 2340, and an orientation sensing module 2345. The communications module 2305 communicates with the mobile device to provide information to the user through the user interface, transfer data, and access registers.
[00139] The scanning module 2320 guides the user through a scan process to determine whether any of the code sets in a code library works with the user's targeted device. The scanning module 2320 requests needed information from the user, such as category and/or brand of the target device. The scanning module 2320 determines the most efficient commands to test and assigns the IR command to a test button for the user to test with the target device.
[00140] The scanning module 2320 can divide the code sets for the various IR-controllable devices into groups for testing with command bursts to determine which code sets to retain and eliminate in determining the appropriate code set for the target device.
[00141] The scanning module 2320 can also analyze a captured and stored IR command to determine which code sets in the code library are compatible with the IR command.
[00142] The layout management module 2325 automatically generates a virtual remote control layout based on a category of a target device for which a code set has been identified by the scanning module 2320. The layout management module 2325 uses a remote control template for the target device's category to build a new virtual remote control layout. Buttons in the template that have a corresponding IR code in the identified code set are enabled to produce the corresponding code.
[00143] The graphic rendering module 2330 uses vector graphics to generate graphical elements used in the remote control layout. The graphic rendering module 2330 renders composite graphical elements by layering a graphical element on top of another graphical element. The graphic rendering module 2330 only performs the rendering once when a remote control view is opened by the user and temporarily caches the rendered graphical elements.
[00144] The editing module 2335 allows a user to customize a virtual remote control generated by the layout management module 2325, for example, selecting button colors, changing button icons, deleting buttons from a layout, adding new buttons, and changing the position of buttons.
[00145] The macro module 2340 generates a button that triggers a series of IR commands to be emitted that cause one or more IR-controllable devices to perform multiple functions. The macro module 2340 automatically adjusts the timing between each of the IR commands in the series based upon typical time durations it takes for a device to perform a particular function. The macro module 2340 also allows a user to modify the timing and the order of the series of IR commands.
[00146] The orientation sensing module 2345 receives accelerometer readings from the mobile device's accelerometer through the communications module 2305. Based on the accelerometer readings, the orientation sensing module 2345 determines a relative orientation of the mobile device, and thus the relative orientation of the miniaturized URC accessory coupled to the mobile device. Using the orientation information, the orientation sensing module 2345 can determine which of the infrared transmitters in the miniaturized URC accessory should be turned on to optimize the range and direction of the transmitted infrared commands. In one embodiment, the orientation sensing module 2345 is a module that is part of the miniaturized URC accessory, rather than the RCA 2300, but communicates with the RCA 2300 to obtain the accelerometer readings from the mobile device.
[00147] FIG. 24 shows a diagrammatic representation of a machine 2400 in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines.
[00148] The machine may be a computer, a user device, a tablet PC, a laptop computer, a personal digital assistant (PDA), a cellular telephone, an iPhone, an iPad, an iPod, a Blackberry, a processor, a telephone, a web appliance, a hand-held console, a (hand-held) gaming device, a music player, any portable, mobile, hand-held device, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. [00149] While the machine-readable medium or machine-readable storage medium is shown in an exemplary embodiment to be a single medium, the term "machine-readable medium" and "machine-readable storage medium" should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term "machine-readable medium" and "machine-readable storage medium" shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the presently disclosed technique and innovation.
[00150] In general, the routines executed to implement the embodiments of the disclosure, may be implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions referred to as "computer programs." The computer programs typically comprise one or more instructions set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processing units or processors in a computer, cause the computer to perform operations to execute elements involving the various aspects of the disclosure.
[00151] Moreover, while embodiments have been described in the context of mobile devices, those skilled in the art will appreciate that the various embodiments are capable of being distributed as a program product in a variety of forms, and that the disclosure applies equally regardless of the particular type of machine or computer-readable media used to actually effect the distribution.
[00152] Further examples of machine-readable storage media, machine- readable media, or computer-readable (storage) media include, but are not limited to, recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital Versatile Disks, (DVDs), etc.), among others, and transmission type media such as digital and analog communication links.
Conclusion
[00153] Unless the context clearly requires otherwise, throughout the description and the claims, the words "comprise," "comprising," and the like are to be construed in an inclusive sense (i.e., to say, in the sense of "including, but not limited to"), as opposed to an exclusive or exhaustive sense. As used herein, the terms "connected," "coupled," or any variant thereof means any connection or coupling, either direct or indirect, between two or more elements. Such a coupling or connection between the elements can be physical, logical, or a combination thereof. Additionally, the words "herein," "above," "below," and words of similar import, when used in this application, refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word "or," in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.
[00154] The above Detailed Description of examples of the invention is not intended to be exhaustive or to limit the invention to the precise form disclosed above. While specific examples for the invention are described above for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. For example, while the mobile device RCA, URC accessory, and miniaturized URC accessory are mentioned for mobile phones, the URC application can be used with any type of mobile device under the principles disclosed herein. While processes or blocks are presented in a given order in this application, alternative implementations may perform routines having steps performed in a different order, or employ systems having blocks in a different order. Some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or subcombinations. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed or implemented in parallel, or may be performed at different times. Further any specific numbers noted herein are only examples. It is understood that alternative implementations may employ differing values or ranges.
[00155] The various illustrations and teachings provided herein can also be applied to systems other than the system described above. The elements and acts of the various examples described above can be combined to provide further implementations of the invention.
[00156] Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the invention can be modified, if necessary, to employ the systems, functions, and concepts included in such references to provide further implementations of the invention.
[00157] These and other changes can be made to the invention in light of the above Detailed Description. While the above description describes certain examples of the invention, and describes the best mode contemplated, no matter how detailed the above appears in text, the invention can be practiced in many ways. Details of the system may vary considerably in its specific implementation, while still being encompassed by the invention disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the invention should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the invention with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the invention to the specific examples disclosed in the specification, unless the above Detailed Description section explicitly defines such terms. Accordingly, the actual scope of the invention encompasses not only the disclosed examples, but also all equivalent ways of practicing or implementing the invention under the claims. [00158] While certain aspects of the invention are presented below in certain claim forms, the applicant contemplates the various aspects of the invention in any number of claim forms. For example, while only one aspect of the invention is recited as a means-plus-function claim under 35 U.S.C. § 1 12, sixth paragraph, other aspects may likewise be embodied as a means-plus- function claim, or in other forms, such as being embodied in a computer- readable medium. (Any claims intended to be treated under 35 U.S.C. § 1 12, U 6 will begin with the words "means for.") Accordingly, the applicant reserves the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the invention.

Claims

We claim:
[ci] 1. A computer-implemented method of identifying a code set from a plurality of code sets for controlling an infrared (IR)-controllable target device, comprising:
selecting an IR command for testing based on an associated priority ranking of the IR command;
transmitting the IR command for testing;
receiving feedback from a user regarding whether the IR command produced an expected response from the target device;
eliminating a code set from the plurality of code sets based on a length of the IR command and whether the IR command produced the expected response.
[c2] 2. The method of claim 1 , further comprising selecting additional IR commands for testing until a code set is determined for the target device or determining none of the plurality of code sets match the target device.
[c3] 3. The method of claim 1 , wherein eliminating a code set based on the length of the IR command comprises eliminating a code set if a length of the commands in the code set is shorter than the length of the IR command and eliminating a code set if a length of the commands in the code set is longer than the length of the IR command and an overlapping portion of the commands is not equal to the IR command.
[c4] 4. A computer-implemented method of identifying a code set from a plurality of code sets for controlling an infrared (IR)-controllable device, comprising:
searching a code set database for versions of an IR command for a plurality of candidate devices that correspond to the same function;
transmitting the versions of the IR command sequentially to a target device;
determining a code set for the target device based on whether the target device performed the function.
[c5] 5. The method of claim 4, further comprising dividing the plurality of candidate devices into a plurality of groups, wherein the plurality of groups are distinguished based on code set features for the plurality of candidate devices, and wherein the versions of the IR commands transmitted sequentially correspond to the candidate devices in one of the plurality of groups.
[c6] 6. The method of claim 5, further comprising:
transmitting a second series of versions of the IR commands corresponding to the candidate devices in a different one of the plurality of groups if the target device did not respond by performing the function;
transmitting a second series of versions of a different IR command to the candidate devices in the one of the plurality of groups if the target device responded by performing the function.
[c7] 7. The method of claim 4, wherein transmitting the versions of the IR command sequentially comprises assigning the versions of the IR command in the series to a user interface button and transmitting the versions of the IR command sequentially when a user activates the button.
[c8] 8. A computer-implemented method of identifying a code set from a plurality of code sets for controlling an infrared (IR)-controllable device, comprising:
receiving a known IR command for the device;
eliminating a code set from consideration if a length of the known
IR command is incompatible with a length of the commands in athe code set;
eliminating a code set from consideration if a protocol of the code set is different from a protocol of the known IR command, if the protocol of the known IR command can be determined.
[c9] 9. The method of claim 8, wherein eliminating a code set from consideration if the length of the known IR command is incompatible with a length of the commands in the code set comprises eliminating a code set if the length of the commands in the code set is shorter than the length of the IR command and eliminating a code set if a length of the commands is longer than the length of the IR command and an overlapping portion of the commands is not equal to the IR command.
[do] 10. The method of claim 8, further comprising:
selecting a second command not common to all the remaining code sets;
receiving the second command;
eliminating a code set from consideration based on a length of the second command.
[CM]
11. The method of claim 8, wherein the selected command is common to approximately half of the remaining code sets.
[ci2]
12. A computer-implemented method of organizing a database of command code sets, the method comprising:
determining known code set protocols; adding a code identifier to commands in the code sets, wherein the code identifier specifies a protocol of the code sets.
[ci3]
13. The method of claim 12, further comprising converting raw pulse data for the commands to compact code values in the database.
[ci4]
14. A computer-implemented method of organizing commands of codes sets in a database by function, the method comprising:
determining functions corresponding to commands in the database;
assigning a priority ranking to each function, wherein priority is based on frequency of use.
[ci5]
15. The method of claim 14, further comprising:
obtaining demographic data on infrared controllable devices preferred by mobile device users, wherein priority is further based on the demographic data.
[ci6]
16. A computer-implemented comprising:
receiving a new code set from a user;
verifying the new code set;
adding the new code set to a code library of code sets, wherein the code library is included in a remote control application that runs on a mobile device.
[ci7]
17. The method of claim 16, further comprising sending the new code set as an update to code library used by a remote control application running on a mobile device.
[ci8]
18. The method of claim 16, wherein the user obtained the new code set by teaching the remote control application with a remote control that generates infrared commands for a target device. [ci9]
19. A computer-implemented method of generating a remote control layout for an infrared (IR)-controlled device for display on a mobile device user interface in conjunction with a remote control application running on the mobile device, the method comprising:
maintaining a template for different categories of device, wherein more frequently used buttons and clusters are placed on earlier pages of the template;
adding each button or cluster in the template for the category of the IR-controlled device to the remote control layout.
[c20] 20. The method of claim 19, wherein buttons having a corresponding IR command in the IR-controlled device's code set are enabled to transmit the corresponding IR command, and wherein buttons not having a corresponding IR command in the IR-controlled device's code set are not enabled in the layout.
[c2i] 21. The method of claim 19, wherein buttons not enabled in the layout are programmable to generate a specific IR command.
[c22] 22. The method of claim 19, wherein IR commands in the IR- controlled device's code set that do not have a corresponding button in the template are assigned to buttons placed in an additional page following the pages of buttons taken from the template.
[c23] 23. A computer-implemented method of generating a remote control layout for an infrared (IR)-controlled device for display on a mobile device user interface in conjunction with a remote control application running on the mobile device, the method comprising:
automatically organizing related remote control buttons for the IR- controlled device into a cluster; automatically organizing related clusters and buttons into one or more pages, wherein clusters and buttons used more frequently are placed on earlier pages.
[c24] 24. The method of claim 23, wherein a user can edit the one or more pages.
[c25] 25. A computer-implemented method of generating a composite remote control layout for an infrared (IR)-controlled device for display on a mobile device user interface in conjunction with a remote control application running on the mobile device, the method comprising:
receiving a composite remote control request from a user;
determining relevancy of a video input, audio input, video output, and audio output to the composite RC request;
prompting the user to select a device for each of the relevant inputs and outputs by listing each device for which the remote control has a code set that can perform the corresponding function;
placing buttons from the selected layout in a composite layout.
[c26] 26. The method of claim 25, wherein most frequently used buttons for the composite remote control are shown on a single page.
[c27] 27. The method of claim 25, further comprising:
maintaining a composite template for different combinations of devices, wherein more frequently used buttons and clusters are placed on earlier pages of the template;
adding to a composite layout each button or cluster in the composite template for the combination of the IR-controlled devices used in the composite RC request.
[c28] 28. A computer-implemented method of generating resolution invariant graphical elements on a user interface of a mobile device for a remote control application, the method comprising:
using vector graphics to generate a plurality of graphical elements; rendering a composite graphical element by layering a first graphical element over a second graphical element.
[c29] 29. The method of claim 28, wherein the first graphical element is an icon graphic and a second graphical element is a button graphic.
[c30] 30. The method of claim 28, wherein the first graphical element is a label text and a second graphical element is a button graphic.
[c3i] 31. The method of claim 28, wherein the first graphical element is a button graphic and a second graphical element is a cluster graphic.
[c32] 32. The method of claim 28, wherein the rendering is performed when a virtual remote control is opened with the remote control application, and the composite graphical elements are temporarily cached for re-use without re-rendering the composite graphical elements.
[c33] 33. A computer-implemented method of using a mobile device as a remote control, the method comprising:
receiving a user input to transmit a plurality of pre-recorded infrared (IR) commands;
transmitting the plurality of pre-recorded IR commands sequentially without further user input.
[c34] 34. The method of claim 33, wherein the plurality of IR commands trigger a single device to perform a plurality of functions.
[c35] 35. The method of claim 33, wherein the plurality of IR commands trigger a first device to perform at Heast one function and a second device to perform at least one function.
[c36] 36. The method of claim 33, wherein the user input comprises selecting a macro button on a user interface of the mobile device.
[c37] 37. The method of claim 33, wherein the pre-recorded IR commands comprises timing information for the transmission of the plurality of IR commands.
[c38] 38. An apparatus communicatively coupled to a mobile device for transmitting infrared (IR) commands for a remote control, comprising:
a sensor configured to sense IR signals, wherein the sensor is oriented to receive IR signals sent toward a first side of the mobile device;
a transmitter configured to transmit IR signals, wherein the transmitter is oriented to transmit IR signals from a second edge of the mobile device wherein the second side of the mobile device is on an opposite side of the mobile device.
[c39] 39. An apparatus communicatively coupled to a mobile device running an application to remotely control infrared controllable devices, the apparatus comprising:
electronics configured to drive a plurality of infrared transmitters; the plurality of infrared transmitters configured to transmit an infrared code, wherein the mobile device includes an accelerometer, and the application determines which of the plurality of infrared transmitters to activate based on readings of the accelerometer. [c40] 40. The apparatus of claim 39, wherein each of the plurality of infrared transmitters is positioned to emit in a different direction.
[c4i] 41. The apparatus of claim 40, wherein the plurality of infrared transmitters comprises four infrared transmitters.
[c42] 42. A computer-implemented method for using a mobile device as a remote control, the method comprising:
receiving accelerometer readings from an accelerometer in the mobile device;
determining a relative position of the mobile device from the accelerometer readings;
activating all or a subset of a plurality of infrared transmitters coupled to the mobile device to transmit an infrared code based on the relative position of the mobile device.
PCT/US2012/025300 2011-02-15 2012-02-15 Systems, methods, and architecture for a universal remote control accessory used with a remote control application running on a mobile device WO2012112715A2 (en)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201161443212P 2011-02-15 2011-02-15
US61/443,212 2011-02-15
US201161467922P 2011-03-25 2011-03-25
US61/467,922 2011-03-25
US201161512659P 2011-07-28 2011-07-28
US61/512,659 2011-07-28
US201161531512P 2011-09-06 2011-09-06
US61/531,512 2011-09-06

Publications (2)

Publication Number Publication Date
WO2012112715A2 true WO2012112715A2 (en) 2012-08-23
WO2012112715A3 WO2012112715A3 (en) 2013-01-03

Family

ID=46673160

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2012/025300 WO2012112715A2 (en) 2011-02-15 2012-02-15 Systems, methods, and architecture for a universal remote control accessory used with a remote control application running on a mobile device

Country Status (1)

Country Link
WO (1) WO2012112715A2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014152728A1 (en) * 2013-03-15 2014-09-25 Universal Electronics Inc. Optimizing memory usage in a universal controlling device
US9685074B2 (en) 2014-11-05 2017-06-20 Sony Corporation Method and system for remote interaction with electronic device
EP3392750A4 (en) * 2015-12-15 2018-12-26 Sony Corporation Information processing device, information processing method, and program
CN110675615A (en) * 2019-09-23 2020-01-10 深圳市火乐科技发展有限公司 Remote communication implementation method, intelligent projector and related product
CN113163249A (en) * 2021-04-28 2021-07-23 深圳感臻科技有限公司 Method, device and application for optimizing recommended code value
US20220278868A1 (en) * 2016-08-29 2022-09-01 Lutron Technology Company Llc Load control system having audio output devices

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6008735A (en) * 1997-02-03 1999-12-28 Microsoft Corporation Method and system for programming a remote control unit
US20040150546A1 (en) * 2003-01-24 2004-08-05 Samsung Electronics Co., Ltd. Remote control service processing device using GUI in home network environment
US20100028010A1 (en) * 2008-04-11 2010-02-04 The Directv Group, Inc. Method and system for updating a control device database via flashing light
US20100039282A1 (en) * 2008-08-12 2010-02-18 Hostage Christine M Universal Remote Control Programming
US20100171635A1 (en) * 2009-01-02 2010-07-08 Ewig Industries Macao Commerical Offshore, Ltd. System And Method For Motion-Sensitive Remote Control For Audio-Visual Entertainment System
US20100313169A1 (en) * 2001-11-20 2010-12-09 Universal Electronics Inc. User interface for a remote control application

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6008735A (en) * 1997-02-03 1999-12-28 Microsoft Corporation Method and system for programming a remote control unit
US20100313169A1 (en) * 2001-11-20 2010-12-09 Universal Electronics Inc. User interface for a remote control application
US20040150546A1 (en) * 2003-01-24 2004-08-05 Samsung Electronics Co., Ltd. Remote control service processing device using GUI in home network environment
US20100028010A1 (en) * 2008-04-11 2010-02-04 The Directv Group, Inc. Method and system for updating a control device database via flashing light
US20100039282A1 (en) * 2008-08-12 2010-02-18 Hostage Christine M Universal Remote Control Programming
US20100171635A1 (en) * 2009-01-02 2010-07-08 Ewig Industries Macao Commerical Offshore, Ltd. System And Method For Motion-Sensitive Remote Control For Audio-Visual Entertainment System

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014152728A1 (en) * 2013-03-15 2014-09-25 Universal Electronics Inc. Optimizing memory usage in a universal controlling device
US9524234B2 (en) 2013-03-15 2016-12-20 Universal Electronics Inc. System and method for optimizing memory usage in a universal controlling device
US9685074B2 (en) 2014-11-05 2017-06-20 Sony Corporation Method and system for remote interaction with electronic device
EP3392750A4 (en) * 2015-12-15 2018-12-26 Sony Corporation Information processing device, information processing method, and program
US20220278868A1 (en) * 2016-08-29 2022-09-01 Lutron Technology Company Llc Load control system having audio output devices
US11811549B2 (en) * 2016-08-29 2023-11-07 Lutron Technology Company Llc Load control system having audio output devices
CN110675615A (en) * 2019-09-23 2020-01-10 深圳市火乐科技发展有限公司 Remote communication implementation method, intelligent projector and related product
CN113163249A (en) * 2021-04-28 2021-07-23 深圳感臻科技有限公司 Method, device and application for optimizing recommended code value
CN113163249B (en) * 2021-04-28 2022-08-19 深圳感臻智能股份有限公司 Method, device and application for optimizing recommended code value

Also Published As

Publication number Publication date
WO2012112715A3 (en) 2013-01-03

Similar Documents

Publication Publication Date Title
US10820035B2 (en) Methods for controlling presentation of content using a multi-media table
RU2557457C2 (en) Control function gestures
WO2012112715A2 (en) Systems, methods, and architecture for a universal remote control accessory used with a remote control application running on a mobile device
EP1742222B1 (en) Reproducing apparatus and reproducing method.
US8604329B2 (en) MIDI learn mode
JP4812841B2 (en) Video playback device for AV equipment
US9177538B2 (en) Channel-mapped MIDI learn mode
US20100064255A1 (en) Contextual menus in an electronic device
US20090077491A1 (en) Method for inputting user command using user's motion and multimedia apparatus thereof
CN101236764B (en) Playback control device, method and program
EP2579169A1 (en) Information processing apparatus, information processing method, and computer readable medium
US20070031116A1 (en) Reproducing apparatus, reproducing method, and content reproducing system
CN105657498A (en) Video recording method and device of mobile terminal
CN1856065B (en) Video processing apparatus
KR20010024415A (en) Gui of remote control facilitates user-friendly editing of macros
KR102570379B1 (en) Display device for providing a screen mirroring function and operating method thereof
EP3255896B1 (en) Display device
KR20140133269A (en) display apparatus and user interface screen displaying method using the smae
JP2003069940A (en) Recorder and output device, and recording medium
CN105261384A (en) Recording apparatus
KR20120023420A (en) Method for zapping contents and displaying apparatus for implementing thereof
WO2011004655A1 (en) Av device
JP4363117B2 (en) Content reproduction apparatus, content management apparatus, content reproduction control system, content reproduction method, content management method, content reproduction control method, and program
JP5652065B2 (en) Content playback system, control device, and playback device
JP2007053701A (en) Set top box connected to ieee 1894 serial bus and controller connected to ieee1394 serial bus

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12747766

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12747766

Country of ref document: EP

Kind code of ref document: A2