1. Field of the Invention
The present invention relates to remote controllers and, more particularly, to multiple remote controllers operating in the same vicinity.
2. Description of the Related Art
Remote controllers are generally utilized today for controlling televisions, home stereos, and DVD players, and the like. Typically, when one buys such consumer electronic products, a corresponding remote controller is often provided. Typically, the remote controller is configured for use with the corresponding consumer electronic product and not otherwise generally useable. Here, vendor-specific and/or model-specific messages are transmitted by remote controllers and ignored by consumer electronic products that are from different vendors/models.
There are also universal remote controllers that can be used with a variety of different products. One type of universal remote controller is a learning remote controller. A learning remote controller is trained to operate with a given consumer electronic product by being programmed using an existing remote controller that already operates with the product. Another type of universal remote controller makes use of a database of the large number of different vendors and their products so that the appropriate data can be loaded into the remote controller and then used to control a specific consumer electronic product.
Bluetooth technology allows for local wireless communications between various devices. Bluetooth is a bi-directional wireless communications protocol that permits pairing, but is not well suited for remote controllers, such as infrared (IR) remote controllers.
Recently, remote controllers have begun to be utilized with computers. These remote controllers can mimic keyboard or mouse events for the computers. One solution uses an infrared receiver device that connects to a Universal Serial Bus (USB) port of a computer via a USB cable, and an infrared remote controller that uses infrared transmissions that can be received by the infrared receiver device and supplied to the computer. For example, such a remote controller allows a user to control multimedia applications on the computer. This approach is an aftermarket solution to provide remote control capabilities to existing computers. Another solution connects a receiver device to an Airport Express® unit that wirelessly transmits to a corresponding wireless transceiver within the computer, such as a Macintosh computer from Apple Computer, Inc. Airport Express® is Apple Computer's mobile base station that features analog and digital audio outputs that can be connected to a home stereo, and enables users to wirelessly stream music from iTunes® media management program on their computer to any room in the house. Still another solution uses Bluetooth compatible handheld devices, such as a mobile phone, to serve as a remote controller for a Macintosh computer. This solution requires installation of software on the mobile phone as well as the computer. Once the software is installed, the mobile phone can be used to control popular programs such as iTunes® media management program from Apple Computer, Inc. For example, in controlling iTunes® media management program using this solution, the user can use the directional controls on the mobile phone to change listing volume, skip forward and backward, play/pause, etc.
Unfortunately, however, existing approaches to providing and utilizing remote controllers not only are cumbersome and lack flexibility but also are not well suited for multiple transmitter and multiple receiver environments. Accordingly, there is a need for improved techniques to facilitate use of remote controllers with electronic devices.
Generally speaking, the invention pertains to techniques for associating a wireless controller to a host device. Once associated, the host device is responsive to the associated wireless controller but not responsive to other wireless controllers that may be in the vicinity. Subsequently, if desired, the association with the wireless controller can be removed and a different association with another wireless controller can be invoked. As an example, the wireless controller can be a portable remote controller, and the host device can be a personal computer, a home stereo, a portable media player, or a docking station for a portable media player. In one implementation, the portable remote controller can be an infrared remote controller.
According to another aspect, a wireless controller (e.g., portable remote controller), which is battery powered, can transmit a low battery condition indication when such condition exists. A host device, upon receipt of the low battery condition indication, can notify the host device and/or its user.
The invention can be implemented in numerous ways, including as a method, system, device, apparatus, or computer readable medium. Several embodiments of the invention are discussed below.
As a method for associating a portable remote controller to one of a plurality of host devices (e.g., in a dwelling), one embodiment of the invention includes at least the acts of: temporarily disabling all but a desired one of the host devices from receiving wireless transmissions from the portable remote controller; receiving a user interaction with the portable remote controller to provide a pairing request; wirelessly transmitting the pairing request from the portable remote controller; receiving the pairing request at the desired one of the host devices but not at any of the other host devices; and pairing the portable remote controller to the desired one of the host devices.
As a method for receiving and processing a user command at a host device, with the user command being wirelessly transmitted from a portable remote controller to the host device, one embodiment of the invention includes at least the acts of: receiving at least the user command and a device identifier that were transmitted from the portable remote controller to the host device in a wireless manner, where the device identifier pertains to the portable remote controller; comparing the received device identifier with a previously stored device identifier at the host device; and executing the received user command when the comparing indicates that the received device identifier matches the previously stored device identifier, and not executing the received user command when the comparing indicates that the received device identifier does not match the previously stored device identifier.
A method for associating a portable remote controller to a host device, one embodiment of the invention includes at least the acts of: receiving a user input with respect to the portable remote controller; identifying a command associated with the user input; transmitting a control packet to the host device, the control packet including at least the command and a device identifier; receiving the control packet at the host device; acquiring at least the received command and the received device identifier from the received control packet; comparing the received device identifier with a previously stored device identifier at the host device; and executing the received command when the comparing indicates that the received device identifier matches the previously stored device identifier, and not executing the received command when the comparing indicates that the received device identifier does not match the previously stored device identifier.
As a wireless control system for remotely controlling a host device by a portable remote controller, one embodiment of the invention includes at least a portable remote controller and a host device. The portable remote controller includes at least: a user input device for receiving a user input; a persistent memory that stores a device identifier for the portable remote controller; a controller for identifying a command associated with the user input; and a transmitter for transmitting a control packet to the host device, the control packet including at least the command and the device identifier. The host device includes at least: a receiver for receiving the control packet; and a controller for (i) acquiring at least the received command and the received device identifier from the received control packet, (ii) comparing the received device identifier with a previously stored device identifier at the host device, and (iii) executing the received command when the comparing indicates that the received device identifier matches the previously stored device identifier, and not executing the received command when the comparing indicates that the received device identifier does not match the previously stored device identifier.
As a computer readable medium including at least computer program code for receiving and processing a user command at a host device, with the user command being wirelessly transmitted from a portable remote controller to the host device, one embodiment of the invention includes at least: computer program code for receiving at least a user command and a device identifier that were wirelessly transmitted from the portable remote controller to the host device, where the device identifier pertains to the portable remote controller; and computer program code for executing the received command only when the received device identifier matches the previously stored device identifier.
As computer readable medium including at least computer program code for associating a portable remote controller to one of a plurality of host devices, one embodiment of the invention includes at least: computer program code for configuring a desired one of the host devices to pair with a portable remote controller; computer program code for receiving a request at the desired one of the host devices, the request being provided via wireless transmission from the portable remote controller; and computer program code for at least pairing the portable remote controller to the desired one of the host devices in response to the request.
Other aspects and advantages of the invention will become apparent from the following detailed description taken in conjunction with the accompanying drawings which illustrate, by way of example, the principles of the invention.
The invention will be readily understood by the following detailed description in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements, and in which:
The invention pertains to techniques for associating a wireless controller to a host device. Once associated, the host device is responsive to the associated wireless controller but not responsive to other wireless controllers that may be in the vicinity. Subsequently, if desired, the association with the wireless controller can be removed and a different association with another wireless controller can be invoked.
In one embodiment, the host device includes a receiver to receive signals wirelessly transmitted by a transmitter in the wireless controller. For example, the wireless controller can be a portable remote controller, and the host device can be a personal computer, a home stereo, a portable media player, or a docking station for a portable media player. In one implementation, the portable remote controller can be an infrared remote controller.
In one embodiment, a wireless controller (e.g., portable remote controller), which is battery powered, can transmit a low battery condition indication when such condition exists. A host device upon receipt of the low battery condition indication can notify the host device and/or its user.
The invention is well suited for environments, such as a home or office environment, where multiple wireless controllers and multiple host devices are present. The ability to associate (e.g., pair) one of the wireless controllers to one of the host devices facilitates utilization of multiple wireless controllers and multiple host devices in the same environment. Here, once associated, like wireless controllers can independently control separate host devices.
Embodiments of this aspect of the invention are discussed below with reference to
The wireless control system 100 also includes a plurality of host devices that can be controlled by wireless signals transmitted by the portable remote controllers 102 and 104. As shown in
Consequently, if both of the portable remote controllers 102 and 104 are present in the same general vicinity as the host devices 114, 118 and 122, the sending of a wireless signal from either of the portable remote controllers 102 and 104 can be received by one or more of the host devices 114, 118 and 122. Accordingly, it is likely that a user attempting to control one of the host devices would inadvertently also control other of the host devices. In addition, since there are two portable remote controllers 102 and 104, it is also possible that another user that is using the portable remote controller 104 would inadvertently interfere with the intended actions by the user of the portable remote controller 102.
Although the portable remote controllers 102 and 104 are typically line of sight devices, when operated indoors, there tends to be a number of reflections of the wireless transmissions. As a result, the ability for a user to control the direction of a wireless transmission from a portable remote controller is difficult. Hence, in the environment illustrated in
Beyond management-type commands (used to request pairing/unpairing or status operations), a remote controller can also support various other commands that are understood by host devices and enable host devices to manipulate various applications provided at the host devices. For example, a host device can provide a media player functionality, and the remote controller can be used to interact with a media player, such as by providing media play back controls. Examples of media based commands that can be sent from a portable remote controller to a host device include a menu request, play/pause, next track, previous track, volume up, volume down.
In one embodiment, the wireless transmission from the portable remote controller to a host device is achieved using infrared (IR) transmissions. The infrared transmissions are transmitted from a transmitter within a portable remote controller to one or more receivers within one or more host devices that are within line of sight (directly or via reflections) of the one or more portable remote controllers. As one example, the transmission can conform to an adaptation of the NEC infrared remote control transmission format. The NEC infrared remote control transmission format supports two kinds of packets, standard packets and repeater packets. In general, standard packets include user commands. Repeater packets contain no user command but indicate that the user is repeating the previous user action (e.g., a button being held down). The adapted packet format for control packets (i.e., standard packets) according to one embodiment are discussed below with reference to
The pairing process 200 temporarily disables 202 all but a desired host device from receiving wireless transmissions from the portable remote controller. For example, the wireless transmission window of a host device can be shielded to block any wireless transmissions (e.g., infrared transmissions) from being received by the corresponding host device. As another example, the one or more host devices that are not to receive the wireless transmissions can either disable or power-off their wireless receivers.
Next, a pairing request is triggered 204 based on user interaction with the portable remote controller. For example, using one or more user input devices of the portable remote controller, the user can initiate a pairing request. The pairing request is then wirelessly transmitted 206 from the portable remote controller. Once the pairing request is transmitted 206, any host devices (having compatible receivers) within the vicinity are able to pick-up the wireless transmission and process the pairing request. However, since all but the desired host device have been disabled, only the desired host device should receive 208 the pairing request. The desired host device can then pair 210 the portable remote controller to the desired host device. Following the block 210, the pairing process 200 is complete and ends.
In an alternative embodiment, a pairing process could cause the desired host device to entering a pairing mode. While in the pairing mode, the desired host device would operate to pair itself with a remote controller that next transmits a next incoming transmission that the desired host device receives. Once paired, the desired host device would exit the pairing mode. In this embodiment, other host devices (besides the desired host device) do not need to be disabled.
The remote controller 302 is a low power device and thus can be powered by a battery 306. The remote controller 302 also includes at least a controller 308, a user input device 310 and a memory 312. The controller 308 controls the overall operation of the remote controller 302. The user input device 310 enables a user to interact with the remote controller 302, such as to request an operation with respect to the host device 304. The memory 312 provides persistent data storage for various elements, including program code, identifier(s), data structures, etc. Still further, the remote controller 302 includes a transmitter 314. In one embodiment, the transmitter 314 is an infrared (IR) transmitter. The transmitter 314 can output a wireless transmission 316. Typically, the wireless transmission 316 is directed toward the host device 304.
The host device 304 includes a receiver 318 for the wireless transmission 316. The host device 304 includes at least a controller 320, a memory 322, an operating system 324, application program(s) 326, an output device 328 and a user input device 330. The controller 320 controls the overall operation of the host device 304. The memory 322 can be used to store persistent data, including program code (e.g., for the operating system 324 and the application program(s) 326), identifier(s), data structures, etc. The operating system 324 together with the controller 320 enables the host device 304 to not only wirelessly receive transmissions from the remote controller 302, but to also support and operate one or more application programs 326 as well as to utilize the output device 328 and the user input device 330.
The remote controller 302 can communicate with the host device 304 over a wireless link 316. As a result of such communication, the operation of the host device 304 can be manipulated by a user of the remote controller 302. In this embodiment, the communication is un-idirectional—from remote controller 302 to the host device 304. However, in other embodiments, the communication could be bi-directional.
According to one aspect of the invention, the remote controller 302 can be paired with the host device 304. When paired, the host device 304 is responsive to only the remote controller 302. Hence, if there are other remote controllers in the vicinity of the host device 304, the host device 304 understands to ignore wireless communications from such other remote controllers. In contrast, when unpaired, the host device 304 is responsive to any compatible remote controllers in the vicinity.
Additional details are discussed below for the operations associated with pairing or unpairing remote controllers to host devices.
When paired, a user of the remote controller 302 can interact with the one or more application programs 326 operating on the host device 304. For example, one type of application program 326 is a media player program capable of playing digital media assets stored in the memory 322 or some other memory accessible by the host device 304. Hence, the user of the remote controller 302 can interact with the user input device 310 of the remote controller 302 to manipulate media playback controls, such as volume changes, next track, previous track, and play and pause operations associated with the media player program. For other types of application programs 326 available at the host device 304, the particular controls or commands being provided by the remote controller 302 to the host device 304 can vary widely depending upon the application.
The remote controller process 400 begins with a decision 402 that determines whether a button event has occurred. In this embodiment, the button event is a representative user input action with respect to the portable remote controller. When the decision 402 determines that a button event has not occurred, then the remote controller process 400 awaits such an event. Once the decision 402 determines that a button event has occurred, then the remote controller process 400 continues. In other words, the remote controller process 400 is effectively invoked when a button event has occurred.
After a button event has occurred, a command associated with the button event is identified 404. Here, the particular button or combination of buttons being pressed on the portable remote controller are assigned to particular commands. Hence, the command being identified 404 is based upon the one or more buttons associated with the button event.
Next, a decision 406 determines whether the command is to change a device identifier (UID) associated with the portable remote controller. Each portable remote controller has a pseudo-unique device identifier (UID) that is stored in the portable remote controller (e.g., memory 312). The portable remote controller supports various different commands. However, the command to change the device identifier (UID) is a command that causes an action at the portable remote controller. Hence, additional processing is performed when the command is to change the device identifier (UID). One reason for the command to change the device identifier (UID) is that two remote controllers in the same vicinity may, by chance, have the same device identifier (UID), since the device identifier (UID) is only pseudo-unique. Hence, the ability to affect a change to one of the remote controllers enables the remote controller to thereafter work independently in the same vicinity.
When the decision 406 determines that the command is not to change the device identifier (UID), then a control packet including at least the command and the device identifier (UID) is assembled 408. After the control packet is assembled, the control packet is transmitted 410. In one embodiment, the transmission of the control packet is performed by the transmission of infrared signals in a particular direction, namely, the direction in which the portable remote controller is pointed. Following the block 410, the remote controller process 400 returns to repeat the decision 402 and subsequent blocks so that additional button events can be similarly processed.
On the other hand, when the decision 406 determines that the command is to change the device identifier (UID), additional processing is performed at the portable remote controller. Namely, the existing device identifier (UID) is incremented 412. Then, the new device identifier (UID) is stored 414 in persistent memory (e.g., memory 312). Following the block 414, the remote controller process performs the block 408 and subsequent blocks with respect to a pairing command. In this case, after the device identifier is changed, the change device identifier command is effectively thereafter processed as a pairing command so that the portable remote controller can be re-paired with an appropriate host device.
According to one implementation of the packet format 600 illustrated in
The host process 700 begins with a decision 702. The decision 702 determines whether a control packet has been received. Here, the control packet would be received by a receiver within a host device and then examined within the host device. When the decision 702 determines that a control packet has not yet been received, the host process 700 awaits such a packet. Once the decision 702 determines that a control packet has been received, the host process 700 continues. In other words, the host process 700 is effectively invoked when a control packet is received at the host device.
After a control packet has been received, the control packet is disassembled 704 to acquire at least the command and the device identifier (UID). For example, a representative format for the control packet is depicted in
Alternatively, when the decision 706 determines that the host device is already in a paired state, a stored device identifier (UID) is retrieved 710. For example, the stored device identifier can be retrieved 710 from the memory of the host device. A decision 712 then determines whether the stored device identifier is the same as the device identifier acquired from the control packet that has been received. When the decision 712 determines that the stored device identifier is the same as the acquired device identifier, then the acquired command is also executed 708. Here, it is determined that the control packet has been received from the remote controller that is paired with the host device; hence, it is appropriate for the acquired command to be executed 708. On the other hand, when the decision 712 determines that the stored device identifier does not match the acquired device identifier, the acquired command is not executed because the block 708 is bypassed. Finally, following the block 708 or its being bypassed by the decision 712, the host process 700 returns to repeat the decision 702 and subsequent blocks so that subsequent control packets can be similarly processed.
The command execution process 800 begins with a decision 802 that determines whether the acquired command is a pairing command. When the acquired command is a pairing command, then a decision 804 determines whether the host device is in an unpaired state. When the decision 804 determines that the host device is not in an unpaired state, meaning that the host device is already paired, the acquired command is ignored since the host device is already paired. On the other hand, when the decision 804 determines that the host device is in the unpaired state, the device identifier (UID) for the portable remote controller supplying the pairing command is stored 806 at the host device. Then, the paired state is entered 808. At this point, the portable remote controller is paired to the host device.
When the decision 802 determines that the acquired command is not a pairing command (or following blocks 804 or 808), a decision 810 determines whether the acquired command is an unpairing command. When the decision 810 determines that the acquired command is an unpairing command, the stored device identifier (UID) is deleted 812. For example, the stored device identifier (UID) is the identifier previously stored at block 806. After the stored device identifier (UID) is deleted 812, the unpaired state is entered 814. At this point, although the portable remote controller was previously paired with the host device, the portable remote controller is no longer paired with the host device.
Alternatively, when the decision 810 determines that the acquired command is not an unpairing command (or following the block 814), a decision 816 determines whether the acquired command is another known command. When the decision 816 determines that the acquired command is another known command, the acquired command can be processed 814. The host device can process various other commands in this regard, such as those pertaining to its particular functionality or supported applications. For example, a host device may support a media player and thus the acquired command can be a command associated with media playback controls for the media player. However, there are various other applications and uses that can be provided at a host device.
On the other hand, when the decision 816 determines that the acquired command is not another known command (or following the block 818), the command execution process 800 ends.
In one embodiment, the portable remote controller can send a low battery condition command to a host device, when the battery is in a low battery state. However, in one implementation, to avoid excessive signaling, a single low-battery condition is sent only after a button-down and a corresponding button-up event has occurred. This allows repeater packets to be transmitted as long as the button is held down without excessively sending the low-battery condition command. Hence, only when the button is subsequently released and the repeater packet stopped does a single low-battery condition command be transmitted. Upon receiving a low battery condition command, a host device can take action to notify the host device or its user.
The low battery notification process 900 includes a decision 902 that determines whether the acquired command is a low battery command. When the decision 902 determines that the acquired command is a low battery command, then a host program is notified 904 of the low battery condition for the portable remote controller. In one embodiment, once notified, the host program operates to notify the user of the host device. This notification to the user can be performed in a variety of different ways. For example, the notification can display a message on a display screen, flash a light indicator, or various other ways. On the other hand, when the decision 902 determines that the acquired command is not a low battery command, the block 904 is bypassed.
The wireless controller or portable remote controller used herein can have many different shapes and configurations.
The various aspects, embodiments, implementations or features of the invention can be used separately or in any combination.
The invention can be implemented by software, hardware or a combination of hardware and software. The invention can also be embodied as computer readable code on a computer readable medium. The computer readable medium is any data storage device that can store data which can thereafter be read by a computer system. Examples of the computer readable medium include read-only memory, random-access memory, CD-ROMs, DVDs, magnetic tape, optical data storage devices, and carrier waves. The computer readable medium can also be distributed over network-coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
The advantages of the invention are numerous. Different aspects, embodiments or implementations may yield one or more of the following advantages. One advantage of the invention is that like remote controllers can be provided to control a wide range of different host devices, simultaneously and in the same line-of-sight vicinity, yet they can be associated so as to control only a particular one of the host devices. Another advantage of the invention is that the remote controllers can be highly portable, low power, wireless devices with simplified user input controls.
The many features and advantages of the present invention are apparent from the written description. Further, since numerous modifications and changes will readily occur to those skilled in the art, the invention should not be limited to the exact construction and operation as illustrated and described. Hence, all suitable modifications and equivalents may be resorted to as falling within the scope of the invention.