U.S. patent application number 16/311650 was filed with the patent office on 2019-07-11 for wireless audio source switching.
This patent application is currently assigned to Dolby Laboratories Licensing Corporation. The applicant listed for this patent is Dolby Laboratories Licensing Corporation. Invention is credited to Jack T. HA, Adam Scott KONIAK, Gareth James SELFE.
Application Number | 20190215597 16/311650 |
Document ID | / |
Family ID | 59216108 |
Filed Date | 2019-07-11 |
![](/patent/app/20190215597/US20190215597A1-20190711-D00000.png)
![](/patent/app/20190215597/US20190215597A1-20190711-D00001.png)
![](/patent/app/20190215597/US20190215597A1-20190711-D00002.png)
![](/patent/app/20190215597/US20190215597A1-20190711-D00003.png)
![](/patent/app/20190215597/US20190215597A1-20190711-D00004.png)
![](/patent/app/20190215597/US20190215597A1-20190711-D00005.png)
![](/patent/app/20190215597/US20190215597A1-20190711-D00006.png)
![](/patent/app/20190215597/US20190215597A1-20190711-D00007.png)
![](/patent/app/20190215597/US20190215597A1-20190711-D00008.png)
United States Patent
Application |
20190215597 |
Kind Code |
A1 |
HA; Jack T. ; et
al. |
July 11, 2019 |
Wireless Audio Source Switching
Abstract
Methods, systems, and apparatus, including computer programs
encoded on computer storage media, for wireless audio source
switching. One of the methods includes receiving user input
selecting a user interface control corresponding to one of a
plurality of paired audio source devices with a wireless audio sink
device that is a slave device of a first master/slave connection
with a first paired audio source device of the plurality of paired
audio source devices. The wireless audio sink device initiates a
request to become a master device of a second master/slave
connection with a second paired audio source device corresponding
to the selected user interface control. The wireless audio sink
device sends to the second paired audio source device a request to
become a slave device of the second master/slave connection. The
wireless audio sink device receives audio input from the second
paired audio source device and outputs the received audio
input.
Inventors: |
HA; Jack T.; (San Ramon,
CA) ; KONIAK; Adam Scott; (Redwood City, CA) ;
SELFE; Gareth James; (San Francisco, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Dolby Laboratories Licensing Corporation |
San Francisco |
CA |
US |
|
|
Assignee: |
Dolby Laboratories Licensing
Corporation
San Francisco
CA
|
Family ID: |
59216108 |
Appl. No.: |
16/311650 |
Filed: |
June 21, 2017 |
PCT Filed: |
June 21, 2017 |
PCT NO: |
PCT/US2017/038479 |
371 Date: |
December 19, 2018 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
62354649 |
Jun 24, 2016 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
H04R 2225/55 20130101;
H04W 4/80 20180201; H04M 1/7253 20130101; G06F 3/165 20130101; H04R
1/1041 20130101; H04R 2420/03 20130101; H04R 5/04 20130101; H04W
76/10 20180201; H04M 1/6066 20130101; H04R 2420/05 20130101; H04R
25/554 20130101; H04R 2420/07 20130101; H04M 2250/02 20130101; H04R
3/12 20130101; H04R 5/033 20130101; H04W 84/20 20130101 |
International
Class: |
H04R 1/10 20060101
H04R001/10; G06F 3/16 20060101 G06F003/16; H04R 3/12 20060101
H04R003/12; H04W 76/10 20060101 H04W076/10 |
Foreign Application Data
Date |
Code |
Application Number |
Jun 24, 2016 |
EP |
16176287.7 |
Claims
1. A wireless audio headset comprising one or more audio output
devices, a plurality of dedicated user interface controls, one or
more data processing apparatus and one or more storage devices
storing instructions that are operable, when executed by the one or
more data processing apparatus, to cause the one or more data
processing apparatus to perform operations comprising: receiving an
indication of user input selecting one of the dedicated user
interface controls, wherein the selected dedicated user interface
control corresponds to one of a plurality of paired audio source
devices that are paired with the wireless audio headset, wherein
the wireless audio headset is a slave device of a first
master/slave connection with a first paired audio source device of
the plurality of paired audio source devices; identifying a second
paired audio source device corresponding to the selected user
interface control; initiating a request to become a master device
of a second master/slave connection with the second paired audio
source device corresponding to the selected user interface control;
determining that the second master/slave connection has been
established with the second paired audio source device; in response
to the determining, sending, by the wireless audio headset to the
second paired audio source device, a request to become a slave
device of the second master/slave connection; receiving, by the
wireless audio headset, audio input from the second paired audio
source device and outputting the received audio input on the one or
more audio output devices.
2. The wireless audio headset of claim 1, wherein the plurality of
dedicated user interface controls are a plurality of physical
buttons, each button of the plurality of buttons being assigned to
a respective paired audio source devices of the plurality of paired
audio source devices.
3. The wireless audio headset of claim 1, wherein no further user
input is received by the wireless audio sink device after receiving
the user input selecting the user interface control.
4. The wireless audio headset of claim 3, wherein no user input is
received by any of the plurality of paired audio source
devices.
5. The wireless audio headset of claim 1, wherein identifying the
second paired audio source device corresponding to the selected
user interface control comprises: identifying a user interface
control index corresponding to the user interface control;
identifying a wireless protocol address associated with the user
interface control index; searching a trusted device table for an
entry having the wireless protocol address; and identifying a
trusted device index corresponding to the second paired audio
source device; and using the trusted device index to initiate the
request to become a master device of a second master/slave
connection with the second paired audio source device.
6. The wireless audio headset of claim 1, wherein the operations
further comprise maintaining a separate switching device table that
associates user interface control indexes with wireless protocol
addresses.
7. The wireless audio headset of claim 1, wherein the operations
further comprise storing, in a persistent data store integrated
with the wireless audio headset, the switching device table that
associates user interface control indexes with wireless protocol
addresses.
8. The wireless audio headset of claim 1, wherein the operations
further comprise: determining that a connection with an audio
source device has been lost; and switching to another paired audio
source if and only if further user input selecting a different
audio source device is received.
9. The wireless audio headset of claim 8, wherein the operations
further comprise: determining that the audio source device is
available again; and in response, automatically reestablishing a
connection with the audio source device.
10. The wireless audio headset of claim 1, wherein the operations
further comprise: identifying a particular activity identifier of
the second paired audio source device corresponding to the selected
user interface control; and providing, to the second paired audio
source device, the particular activity identifier, and wherein
receiving the audio input from the second paired audio source
device comprises receiving audio input corresponding to the
particular activity identifier.
11.-21. (canceled)
22. A wireless audio sink device comprising one or more audio
output devices, a plurality of dedicated user interface controls,
one or more data processing apparatus and one or more storage
devices storing instructions that are operable, when executed by
the one or more data processing apparatus, to cause the one or more
data processing apparatus to perform operations comprising:
receiving, at the wireless audio sink device, user input selecting
a user interface control of the wireless audio sink device, the
user interface control corresponding to one of a plurality of
paired audio source devices, wherein the wireless audio sink device
is a slave device of a first master/slave connection with a first
paired audio source device of the plurality of paired audio source
devices; identifying, by the wireless audio sink device, a second
paired audio source device corresponding to the selected user
interface control; initiating, by the wireless audio sink device, a
request to become a master device of a second master/slave
connection with the second paired audio source device corresponding
to the selected user interface control; determining, by the
wireless audio sink device, that the second master/slave connection
has been established with the second paired audio source device; in
response to the determining, sending, by the wireless audio sink
device to the second paired audio source device, a request to
become a slave device of the second master/slave connection; and
receiving, by the wireless audio sink device, audio input from the
second paired audio source device and outputting the received audio
input on the one or more audio output devices.
23. The wireless audio sink device of claim 22, wherein no further
user input is received by the wireless audio sink device after
receiving the user input selecting the user interface control.
24. The wireless audio sink device of claim 22, wherein no user
input is received by any of the plurality of paired audio source
devices.
25. The wireless audio sink device of claim 22, wherein identifying
the second paired audio source device corresponding to the selected
user interface control comprises: identifying a user interface
control index corresponding to the user interface control;
identifying a wireless protocol address associated with the user
interface control index; searching a trusted device table for an
entry having the wireless protocol address; and identifying a
trusted device index corresponding to the second paired audio
source device; and using the trusted device index to initiate the
request to become a master device of a second master/slave
connection with the second paired audio source device.
26. The wireless audio sink device of claim 22, wherein the
operations further comprise maintaining a separate switching device
table that associates user interface control indexes with wireless
protocol addresses.
27. The wireless audio sink device of claim 22, wherein the
operations further comprise storing, in a persistent data store
integrated with the sink device, the switching device table that
associates user interface control indexes with wireless protocol
addresses.
28. The wireless audio sink device of claim 22, wherein the user
interface control is a physical button of a plurality of physical
buttons of the sink device, each button of the plurality of buttons
being assigned to a respective paired audio source devices of the
plurality of paired audio source devices.
29. The wireless audio sink device of claim 22, wherein the user
interface control is a physical user interface of the sink device
that cycles through the plurality of paired audio source devices in
response to subsequent user inputs.
30. The wireless audio sink device of claim 22, wherein the
operations further comprise: determining, by the wireless audio
sink device, that a connection with an audio source device has been
lost; and switching, by the wireless audio sink device, to another
paired audio source if and only if further user input selecting a
different audio source device is received.
31. The wireless audio sink device of claim 30, wherein the
operations further comprise: determining, by the wireless audio
sink device, that the audio source device is available again; and
in response, automatically reestablishing a connection with the
audio source device.
32. The wireless audio sink device of claim 22, wherein the
operations further comprise: identifying, by the wireless audio
sink device, a particular activity identifier of the second paired
audio source device corresponding to the selected user interface
control; and providing, to the second paired audio source device,
the particular activity identifier, and wherein receiving, by the
wireless audio sink device, the audio input from the second paired
audio source device comprises receiving audio input corresponding
to the particular activity identifier.
33. (canceled)
Description
CROSS-REFERENCE TO RELATED APPLICATION(S)
[0001] This application claims the benefit of priority to European
Patent Application No. 16176287.7, filed Jun. 24, 2016, and U.S.
Provisional Application No. 62/354,649, filed Jun. 24, 2016, both
of which are incorporated herein by reference in their
entirety.
BACKGROUND
[0002] This specification relates to wireless audio output
devices.
[0003] Some wireless communications protocols operate by
designating devices as either a master device or a slave device.
Thus, in any pair of communicating devices, one device is the
master and the other device is the slave. For example, in the
Bluetooth.RTM. wireless technology standard maintained by the
Bluetooth Special Interest Group of Kirkland, Wash., a master
device can establish connections with up to seven slave devices
simultaneously. However, a slave device can only connect to one
master device at a time.
[0004] A master device and its connected slave devices is referred
to as a piconet. It is possible for multiple piconets to be linked
together, which is referred to as a scatternet.
[0005] Establishing a Bluetooth connection starts in an inquiry
phase, in which a device transmits an inquiry request. Devices that
listen for inquiries are referred to as being in a discoverable
state. All devices that receive the inquiry respond with their
address.
[0006] A device can become a master device during a paging phase.
During the paging phase, two devices synchronize their clocks. One
device sends a sequence of paging messages and listens for a
response from another device. A device that is listening for paging
messages is referred to as being in a connectable state. If another
device responds, the first device becomes the master device of the
connection and the responding device becomes the slave.
[0007] After synchronizing during the paging phase, the devices
establish an Asynchronous Connection-Less (ACL) connection, which
is a low-level communications protocol that carries all data of
higher levels of the Bluetooth network protocol stack.
[0008] After establishing the ACL connection, the devices open a
Logical Link Control and Adaption (L2CAP) channel. The devices can
use the L2CAP channel to perform service discovery in order to
perform pairing and to discover supported profiles and features of
the master device.
[0009] Upon first establishing a connection, two devices may
undergo a pairing process. During the pairing process, the sink
device sends a pairing request to the master device. The sink
device then prompts a user to enter a personal identification
number (PIN) at the master device to complete the pairing
process.
[0010] Once pairing has been completed, the sink device can store
the address of the master device in a list of trusted devices that
have successfully been paired with the sink device. The list of
trusted devices thus maintains an address for each paired master
device as well as an associated index for each paired master
device. The sink device can then skip the pairing process for any
master device that occurs in the list of trusted devices.
[0011] The Bluetooth standard defines a number of application
profiles that specify services that are offered by a
Bluetooth-enabled device. A single device can support multiple
profiles. Common profiles include an Advanced Audio Distribution
Profile (A2DP), which defines how audio data can be streamed from
one device to another; an Audio Video Remote Control Profile
(AVRCP), which provides an interface for controlling televisions
and other audio/video equipment; and a Hands Free Profile (HFP),
which is used to communicate with hands-free sink devices. The
devices can open one or more L2CAP channels to support one or more
of the supported profiles.
SUMMARY
[0012] This specification describes a wireless audio output sink
device that can switch between multiple audio source devices using
dedicated user interface controls.
[0013] Particular embodiments of the subject matter described in
this specification can be implemented so as to realize one or more
of the following advantages. A sink device can implement
intent-based switching that honors the intent of the user in
determining which audio source from which to receive audio data. A
user can easily and quickly switch between multiple audio source
devices with very little user input. After requesting a switch, the
user need not provide any additional input to the sink device or
any of the source devices to begin receiving audio data at the sink
device. A sink device can switch between multiple different
activities of a single audio source device. A sink device does not
switch to other sources when a connected source device becomes
unavailable.
[0014] The details of one or more embodiments of the subject matter
of this specification are set forth in the accompanying drawings
and the description below. Other features, aspects, and advantages
of the subject matter will become apparent from the description,
the drawings, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0015] FIG. 1 is a diagram of an example system.
[0016] FIG. 2 is a flow chart of an example process for assigning a
dedicated user interface control to one of multiple audio source
devices.
[0017] FIG. 3 is a flow chart of an example process for a sink
device to switch to a new source device.
[0018] FIG. 4 is a flow chart of an example process for a sink
device to connect to a new audio source device.
[0019] FIG. 5 is a flow chart of an example process for a sink
device to switch to a new source device.
[0020] FIG. 6 illustrates an example switch by a sink device
between two source devices.
[0021] FIG. 7 is a flow chart of an example process for a sink
device to connect to a new audio source device.
[0022] FIG. 8 is a flow chart of an example process for handling
disconnections by a sink device.
[0023] Like reference numbers and designations in the various
drawings indicate like elements.
DETAILED DESCRIPTION
[0024] This specification describes an audio sink device with user
intent-based switching capability. This means that a user can cause
the audio sink device to switch between multiple wirelessly
connected source devices using user input, which can be one or more
dedicated user interface controls. A "sink device" is an audio
output device that is configured to wirelessly receive audio data
from a source device using a wireless communications protocol.
Common sink devices include wireless headphone sets and standalone
wireless speakers.
[0025] In this specification, a dedicated user interface control
means a user input mechanism that maps user input to a particular
source device. For example, a dedicated user interface control can
be a physical button, toggle, dial, or switch. The dedicated user
interface control can also be a soft user interface control that
corresponds to a particular activated area of a presence-sensitive
surface or display.
[0026] FIG. 1 is a diagram of an example system 100. The system 100
includes two sink devices: a headphone set 110 and a wireless
speaker set 120. The system 100 also includes three source devices:
a mobile phone 130, a laptop computer 140, and a television
150.
[0027] The source devices 130, 140, and 150 are devices that can
use a short- to mid-range wireless communication protocol, e.g.,
Bluetooth, to provide audio data to one or more sink devices.
[0028] The wireless headphone set 110 has integrated buttons 112a-c
that are dedicated user interface controls for switching between
source devices, e.g., the source devices 130, 140, and 150. For
example, if a user presses the button 112a, the headphone set 110
can switch to receiving audio data from the mobile phone 130. If
the user presses the button 112b, the headphone set 110 can switch
to receiving audio data from the laptop computer 140. If the user
presses the button 112c, the headphone set 110 can switch to
receiving audio data from the television 150.
[0029] The wireless speaker set 120 has another type of integrated
user interface control: a toggle button 122. The toggle button 122
can be used to cycle through connected source devices. For example,
if the wireless speaker set 120 is connected to the television 150,
the wireless speaker set 120 can switch to receiving audio data
from the mobile phone 130 when the toggle button 122 is
pressed.
[0030] FIG. 2 illustrates components of an example sink device 210.
The sink device 210 has three dedicated user interface controls: a
first source button 202, a second source button 204, and a third
source button 206.
[0031] The sink device 210 has a switching device table 220 that
associates user interface control indexes with addresses of
corresponding source devices. The sink device 210 also has a
trusted device table 230 that associates trusted device indexes
with addresses of corresponding source devices.
[0032] A user can associate one of the dedicated user interface
controls during a pairing process. The sink device 210 can be
configured to distinguish user input that requests pairing with a
new audio source device and user input that requests switching to a
particular audio source device. For example, the sink device 210
can interpret a short press of a button, e.g., less than 1 second,
as a request to switch to an audio source device associated with
the button and can interpret a long press of the same button, e.g.,
1 second or more, as a request to pair with a new audio source
device to be associated with the button.
[0033] Thus, during state 1, a user can provide a long press on the
second source button 204. The sink device 210 interprets this user
input as a request to associate the second source button 204 with a
new audio source device.
[0034] The sink device 210 then pairs with the new audio source
device. This process is described in more detail below with
reference to FIG. 3.
[0035] After pairing, the sink device 210 considers the paired
audio source device to be a trusted device. During state 2, the
sink device 210 stores the address of the new audio source device
in the trusted device table 230. During state 3, the sink device
210 stores the address of the new audio source device in the
switching device table 220, which associates the address of the new
audio source device with a user interface control index of the
second source button 204.
[0036] In some implementations, the sink device can associate each
of the dedicated user interface controls with a particular activity
on a source device. Thus, a single source device can be associated
with multiple user interface controls.
[0037] For example, a tablet computer can provide multiple sources
of audio information to a sink device that each correspond to a
particular activity, e.g., music player audio, cinematic audio, and
system notification audio. A user can associate each activity with
a user interface control, e.g., one of the source buttons 202, 204,
or 206.
[0038] For example, a user can associate music player audio with
the first source button 202 and cinematic audio with the second
source button 204. The user can explicitly select the source button
corresponding to desired activity.
[0039] To associate a particular activity of a device, the sink
device 210 can store a additional column attribute in the switching
device table. The additional column attribute corresponds to an
activity identifier for a particular activity. Thus, some rows of
the switching device table 220 will refer to the same address but
different activity identifiers.
[0040] This additional information may need to be configured by
software running on the source device that provides an activity
identifier to the sink device 210. For example, a mobile phone can
install an application that enumerates the different activities.
Then, during the pairing process, a user can use the application to
cause the phone to provide particular activity identifiers to the
sink device 210. The sink device 210 then stores the received
activity identifiers in the switching device table 220.
[0041] FIG. 3 is a flow chart of an example process for assigning a
dedicated user interface control to one of multiple audio source
devices. The process can be performed by an appropriately
programmed wireless audio output device comprising one or more
computers. For convenience, the process will be described as being
performed by an embedded computer or logic circuitry in a sink
device. Typically the audio output device will perform the example
process for each of multiple master audio source devices.
[0042] The sink device receives user input requesting pairing for a
new audio source device (310).
[0043] The sink device determines whether its state is connectable
(320). A sink device is in a connectable state when it is listening
for paging messages from potential master devices trying to
establish connections. If the sink device is in a connectable
state, the sink device enters a discoverable state (branch to
360).
[0044] In the discoverable state, the sink device listens for
inquiries from master devices. The connectable state and the
discoverable state are not mutually exclusive. Thus, the sink
device may already be in the discoverable state. In other words, in
step 360 the sink device ensures that it is in the discoverable
state in order to discover any new audio source devices that are
within range.
[0045] The responsiveness of the sink device can be improved by
exiting the connectable state so that the sink device is no longer
scanning for paging messages. Thus, in some implementations, when
entering the discoverable state (360), the sink device exits the
connectable state.
[0046] After entering the discoverable state (360), the sink device
pairs with the new audio source device (370). To pair with the new
audio source device, the sink device enters a discoverable state to
provide its address to the new audio source device. The sink device
then enters a connectable state to synchronize with the new audio
source device. In some implementations, the sink device does not
require a pairing code in order to pair with the new audio source
device.
[0047] If the state of the sink device is not connectable (320),
the sink device determines whether its state is discoverable
(branch to 330). If so, the sink device is ready to pair with new
source devices. Thus, the sink device can then pair with the new
audio source device (branch to 380).
[0048] If the state of the sink device is not discoverable (330),
the sink device likely has already has an established connection
with a previous master audio source device, and such connection
needs to be torn down before pairing with the new audio source
device.
[0049] Thus, if the state of the sink device is not discoverable
(330), the sink device disconnects all service level connections
and all profiles (branch to 340). For example, the sink device can
disconnect the ACL and L2CAP connections with the previous master
audio source device as well as disconnect all A2DP and AVRCP
profiles.
[0050] When these disconnections occur, the sink device will
receive a disconnect message from the previous master audio source
device (350). Upon receiving the disconnect message, the sink
device can then pair with the new audio source device (370).
[0051] After being paired, the sink device associates the new
paired device with the selected user interface control (380). For
example, the sink device can directly associate the address of the
new paired device with a user interface control index corresponding
to the selected user interface control. For example, if the sink
devices has multiple buttons, each button can be assigned a
respective user interface control index. The sink device can
associate each user interface control index with the address of a
corresponding paired device in a switching device table.
[0052] Table 1 illustrates an example switching device table that
associates user interface control indexes with addresses.
TABLE-US-00001 TABLE 1 USER INTERFACE CONTROL INDEX ADDRESS 1
00025b00ff06 2 00025b00ff01 3 00025b00ff09
[0053] Thereafter, when the sink device receives user input at a
user interface control that requests switching to receiving audio
from the new paired device, the sink device can use the switching
device table to obtain the address of the new paired device.
[0054] However, in some cases, fewer modifications to the wireless
protocol stack are required if the sink device also maintains a
trusted device table that associates trusted device indexes to
addresses. After being paired, the standard libraries of some
wireless communication protocols maintain a trusted device table.
When using these libraries, the sink device assigns a trusted
device index for the new paired device and associates the address
of the new paired device with the corresponding trusted device
index.
[0055] Subsequent interactions with the wireless protocol stack use
the trusted device index as input to the application programming
interfaces (APIs) of the standard libraries. Thus, instead of using
the address of the connected devices to perform various operations,
the sink device can use the trusted device index.
[0056] Table 2 illustrates an example trusted device table that
associates trusted device indexes to addresses:
TABLE-US-00002 TABLE 2 TRUSTED DEVICE INDEX ADDRESS 1 00025b00ff09
2 00025b00ff06 3 00025b00ff01
[0057] The sink device can obtain a trusted device index given a
user interface control index by comparing the entries in the
tables. This process is described in more detail below with
reference to FIG. 7.
[0058] The sink device can then optionally store the trusted device
table and the switching device table in persistent storage
integrated with the sink device. By storing the trusted device
table and the switching device table in persistent storage, the
device need not undergo pairing processes after a restart.
[0059] FIG. 4 illustrates components of an example sink device 410.
The sink device 410 has three dedicated user interface controls: a
first source button 402, a second source button 404, and a third
source button 406.
[0060] The sink device 410 has a switching device table 420 that
associates user interface control indexes with addresses of
corresponding source devices. The sink device 410 also has a
trusted device table 430 that associates trusted device indexes
with addresses of corresponding source devices.
[0061] A user can cause the sink device to switch to a new audio
source device by pressing any of the source buttons 402, 404, or
406.
[0062] For example during state 1, the user can press the second
source button 404. During state 2, the sink device 410 can use a
user interface control index corresponding to the selected second
source button 404 as an index into the switching device table 420
to obtain the address of the requested audio source device.
[0063] During state 3, the sink device 410 searches the trusted
device table 430 for a matching address. During state 4, after
finding the matching address, the sink device 410 obtains the
trusted device index of the requested audio source device. The sink
device 410 can then use the trusted device index to connect to the
requested audio source device.
[0064] If the sink device 410 was configured to switch between
particular activities of a single source device, the sink device
410 will use an activity identifier stored in the switching device
table 420 when establishing the connection with the requested audio
source device. However, if the sink device 410 is already connected
to the audio source device, the sink device 410 may not need to
establish a new connection with the requested source device.
[0065] FIG. 5 is a flow chart of an example process for a sink
device to switch to a new source device. The process can be
performed by an appropriately programmed wireless audio output
device comprising one or more computers. For convenience, the
process will be described as being performed by an embedded
computer or logic circuitry in a sink device.
[0066] The sink device pairs with two or more audio source devices
(510). For example, the sink device can use the process described
above with reference to FIGS. 2-3 for each of multiple audio source
devices.
[0067] The sink device receives user input requesting to switch
from a first paired audio source device to a different second
paired audio source device (520). When a request to switch devices
is received by the sink device, the sink device will typically be a
slave device of a master/slave connection with the first paired
audio source device. The sink device can receive the user input at
a dedicated user interface control.
[0068] The sink device can also receive the user input as a voice
command. The sink device can then determine a paired audio source
device corresponding to the user input.
[0069] As described above, in some cases fewer modifications to the
wireless protocol software stack are required if the sink device
maintains a switching device table and a separate trusted device
table. The sink device can then obtain the trusted device index for
a particular user input using both tables. To do so, the sink
device obtains a user interface control index of the dedicated user
interface control. The sink device then searches a switching device
table with the user interface control index to obtain an address of
the second paired audio source device. After obtaining the address
of the second paired audio source device, the sink device searches
a trusted device table to obtain a trusted device index of the
second paired audio source device. For example, the system can
compare the address of the second paired audio source device with
each entry in the trusted device table. Upon finding a matching
entry, the sink device can use the trusted device index of the
matching entry as the trusted device index of the second paired
audio source device.
[0070] The sink device initiates a request to become a master
device of a master/slave connection with the second paired audio
source device (530). As described above, to become the master
device the sink device can send paging messages and wait for a
response from the second paired audio source device. The sink
device can then establish the connection with the second paired
audio source device.
[0071] The sink device can then use the trusted device index to
establish a connection with the second paired audio source device.
However, the sink device need not use the trusted device index to
establish such a connection. In some implementations, the sink
device can use the address of the second paired audio source device
directly. In addition, the sink device need not use two separate
tables to obtain the trusted device index. In some implementations,
the sink device can directly associate the user interface control
index with a corresponding trusted device index.
[0072] The sink device determines that a master/slave connection is
established with the second paired audio source device (540).
[0073] The sink device sends a request to the second paired audio
source device to become a slave device of the master/slave
connection (550). In other words, the sink device sends a request
to exchange roles in the connection with the second paired audio
source device.
[0074] FIG. 6 illustrates an example switch by a sink device 620
between two source devices 610 and 630. During state 1, the sink
device 620 is a slave device of a master/slave connection with the
first source device 610. During state 2, the sink device initiates
a connection as a master with the second source device 630. During
state 3, the sink device 620 requests an exchange, and the sink
device 620 becomes the slave device of the connection with the
second source device 630.
[0075] As shown in FIG. 5, upon exchanging roles, the sink device
begins receiving audio input from the second paired audio source
device and outputting the received audio input (560). Because the
sink device was already paired to multiple master devices, the
switch to the second paired audio source device requires no further
user input after the initial request. For example, if the user
interface control is a button, a user can switch audio source
devices by simply pressing the button on the sink device. The sink
device then seamlessly switches to the second audio source device
without any further input by the user at the sink device or at any
of the audio source devices.
[0076] To illustrate the functionality, consider a use case in
which a user pairs the sink device with a television, a tablet
computer, and a mobile phone. The sink device has three buttons
that are assigned respectively to these three devices.
[0077] To listen to the television, the user simply presses a first
button on the sink device. The connection is established to the
television and the other devices are not impacted. To listen to the
tablet computer, the user presses a second button on the sink
device. The sink device terminates the connection with the
television and connects to the tablet computer. The television
reacts to the disconnection by resuming a previous audio playback
state. The mobile phone is not impacted.
[0078] To listen to the mobile phone, the user presses a third
button on the sink device. The sink device terminates the
connection with the tablet computer and connects with the mobile
phone.
[0079] FIG. 7 is a flow chart of an example process for a sink
device to connect to a new audio source device. The process can be
performed by an appropriately programmed wireless audio output
device comprising one or more computers. For convenience, the
process will be described as being performed by an embedded
computer or logic circuitry in a sink device.
[0080] The sink device receives user input requesting a switch to
an audio source device (710). For example, the sink device can
receive the user input at a dedicated user interface control. In
some implementations, the sink device determines a trusted device
index for the requested audio source device, e.g., as described
above with reference to FIGS. 2-3. The sink device can then use the
trusted device index to interact with the corresponding audio
source device.
[0081] The sink device determines whether its state is connectable
(720). If so, the sink device cancels all service level connections
(branch to 750). In doing so, the sink device clears random access
memory space occupied by one or more previous connections.
[0082] The sink device then sends a connection request to the audio
source device (770). As described above with reference to FIG. 5,
the sink device can initiate the connection as a master device, and
then send a request to exchange roles with the audio source
device.
[0083] If the state of the sink device was not connectable (720),
the sink device determines whether its state is discoverable
(branch to 730). If so, the sink device enters the connectable
state (760) and sends a connection request to the audio source
device (770).
[0084] If the state of the sink device was not discoverable (730),
the sink device disconnects all service level connections and
profiles (branch to 740) and sends a connection request to the
audio source device (770). By disconnecting all service level
connections and profiles, the sink device can clear memory that was
occupied by one or more previous connections.
[0085] FIG. 8 is a flow chart of an example process for handling
disconnections by a sink device. The process can be performed by an
appropriately programmed wireless audio output device comprising
one or more computers. For convenience, the process will be
described as being performed by an embedded computer or logic
circuitry in a sink device.
[0086] The sink device receives user input selecting a paired audio
source device (810). Generally, the sink device will have multiple
paired audio source devices. The sink device can store the
addresses of the paired audio source devices in a trusted device
table as describe above.
[0087] The sink device establishes a connection with the selected
audio source device (820).
[0088] The sink device determines that the connection with the
audio source device has been lost (830). The connection can be lost
for any of a number of reasons. For example, the audio source
device can go out of range, encounter electromagnetic interference,
or lose power.
[0089] The sink device waits for the connection with the audio
source device to be reestablished without switching to other paired
devices (840). In other words, instead of searching for a
most-recently connected device or searching through the trusted
device table for a next paired audio source device to connect with,
the intent-based switching mechanism of the sink device means that
the sink device waits for the device to reconnect. In some
implementations, the sink device does not connect to another source
device without explicit user input that selects another source
device.
[0090] The sink device determines that the audio source device is
available again (850). For example, the audio source device can
power back on or come back into range.
[0091] The sink device reestablishes the connection with the audio
source device (860). The sink device can automatically request to
establish a connection as a master device and then request to
switch roles, as describe above with reference to FIGS. 5-6.
[0092] After reestablishing the connection, the sink device can
again receive audio input from the connected audio source
device.
[0093] Embodiments of the subject matter and the functional
operations described in this specification can be implemented in
digital electronic circuitry, in tangibly-embodied computer
software or firmware, in computer hardware, including the
structures disclosed in this specification and their structural
equivalents, or in combinations of one or more of them. Embodiments
of the subject matter described in this specification can be
implemented as one or more computer programs, i.e., one or more
modules of computer program instructions encoded on a tangible
non-transitory storage medium for execution by, or to control the
operation of, data processing apparatus. The computer storage
medium can be a machine-readable storage device, a machine-readable
storage substrate, a random or serial access memory device, or a
combination of one or more of them. Alternatively or in addition,
the program instructions can be encoded on an
artificially-generated propagated signal, e.g., a machine-generated
electrical, optical, or electromagnetic signal, that is generated
to encode information for transmission to suitable receiver
apparatus for execution by a data processing apparatus.
[0094] The term "data processing apparatus" refers to data
processing hardware and encompasses all kinds of apparatus,
devices, and machines for processing data, including by way of
example a programmable processor, a computer, or multiple
processors or computers. The apparatus can also be, or further
include, special purpose logic circuitry, e.g., an FPGA (field
programmable gate array) or an ASIC (application-specific
integrated circuit). The apparatus can optionally include, in
addition to hardware, code that creates an execution environment
for computer programs, e.g., code that constitutes processor
firmware, a protocol stack, a database management system, an
operating system, or a combination of one or more of them.
[0095] A computer program, which may also be referred to or
described as a program, software, a software application, an app, a
module, a software module, a script, or code, can be written in any
form of programming language, including compiled or interpreted
languages, or declarative or procedural languages; and it can be
deployed in any form, including as a stand-alone program or as a
module, component, subroutine, or other unit suitable for use in a
computing environment. A program may, but need not, correspond to a
file in a file system. A program can be stored in a portion of a
file that holds other programs or data, e.g., one or more scripts
stored in a markup language document, in a single file dedicated to
the program in question, or in multiple coordinated files, e.g.,
files that store one or more modules, sub-programs, or portions of
code. A computer program can be deployed to be executed on one
computer or on multiple computers that are located at one site or
distributed across multiple sites and interconnected by a data
communication network.
[0096] As used in this specification, an "engine," or "software
engine," refers to a software implemented input/output system that
provides an output that is different from the input. An engine can
be an encoded block of functionality, such as a library, a
platform, a software development kit ("SDK"), or an object. Each
engine can be implemented on any appropriate type of computing
device, e.g., servers, mobile phones, headphone sets, portable
speakers, tablet computers, notebook computers, music players,
e-book readers, laptop or desktop computers, PDAs, smart phones, or
other stationary or portable devices, that includes one or more
processors and computer readable media. Additionally, two or more
of the engines may be implemented on the same computing device, or
on different computing devices.
[0097] The processes and logic flows described in this
specification can be performed by one or more programmable
computers executing one or more computer programs to perform
functions by operating on input data and generating output. The
processes and logic flows can also be performed by special purpose
logic circuitry, e.g., an FPGA or an ASIC, or by a combination of
special purpose logic circuitry and one or more programmed
computers.
[0098] Computers suitable for the execution of a computer program
can be based on general or special purpose microprocessors or both,
or any other kind of central processing unit. Generally, a central
processing unit will receive instructions and data from a read only
memory or a random access memory or both. The essential elements of
a computer are a central processing unit for performing or
executing instructions and one or more memory devices for storing
instructions and data. The central processing unit and the memory
can be supplemented by, or incorporated in, special purpose logic
circuitry. Generally, a computer will also include, or be
operatively coupled to receive data from or transfer data to, or
both, one or more mass storage devices for storing data, e.g.,
magnetic, magneto optical disks, or optical disks. However, a
computer need not have such devices. Moreover, a computer can be
embedded in another device, e.g., a mobile telephone, a personal
digital assistant (PDA), a mobile audio or video player, a game
console, a Global Positioning System (GPS) receiver, or a portable
storage device, e.g., a universal serial bus (USB) flash drive, to
name just a few.
[0099] Computer readable media suitable for storing computer
program instructions and data include all forms of non volatile
memory, media and memory devices, including by way of example
semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory
devices; magnetic disks, e.g., internal hard disks or removable
disks; magneto optical disks; and CD ROM and DVD-ROM disks.
[0100] To provide for interaction with a user, embodiments of the
subject matter described in this specification can be implemented
on a computer having a display device, e.g., a CRT (cathode ray
tube) or LCD (liquid crystal display) monitor, for displaying
information to the user and a keyboard and a pointing device, e.g.,
a mouse or a trackball, by which the user can provide input to the
computer. Other kinds of devices can be used to provide for
interaction with a user as well; for example, feedback provided to
the user can be any form of sensory feedback, e.g., visual
feedback, auditory feedback, or tactile feedback; and input from
the user can be received in any form, including acoustic, speech,
or tactile input.
[0101] While this specification contains many specific
implementation details, these should not be construed as
limitations on the scope of any invention or of what may be
claimed, but rather as descriptions of features that may be
specific to particular embodiments of particular inventions.
Certain features that are described in this specification in the
context of separate embodiments can also be implemented in
combination in a single embodiment. Conversely, various features
that are described in the context of a single embodiment can also
be implemented in multiple embodiments separately or in any
suitable subcombination. Moreover, although features may be
described above as acting in certain combinations and even
initially claimed as such, one or more features from a claimed
combination can in some cases be excised from the combination, and
the claimed combination may be directed to a subcombination or
variation of a sub combination.
[0102] Similarly, while operations are depicted in the drawings in
a particular order, this should not be understood as requiring that
such operations be performed in the particular order shown or in
sequential order, or that all illustrated operations be performed,
to achieve desirable results. In certain circumstances,
multitasking and parallel processing may be advantageous. Moreover,
the separation of various system modules and components in the
embodiments described above should not be understood as requiring
such separation in all embodiments, and it should be understood
that the described program components and systems can generally be
integrated together in a single software product or packaged into
multiple software products.
[0103] Particular embodiments of the subject matter have been
described. Other embodiments are within the scope of the following
claims. For example, the actions recited in the claims can be
performed in a different order and still achieve desirable results.
As one example, the processes depicted in the accompanying figures
do not necessarily require the particular order shown, or
sequential order, to achieve desirable results. In certain
implementations, multitasking and parallel processing may be
advantageous.
[0104] Various aspects of the present invention may be appreciated
from the following enumerated example embodiments (EEEs):
EEE 1. A wireless audio headset comprising one or more audio output
devices, a plurality of dedicated user interface controls, one or
more data processing apparatus and one or more storage devices
storing instructions that are operable, when executed by the one or
more data processing apparatus, to cause the one or more data
processing apparatus to perform operations comprising:
[0105] receiving an indication of user input selecting one of the
dedicated user interface controls, wherein the selected dedicated
user interface control corresponds to one of a plurality of paired
audio source devices that are paired with the wireless audio
headset, wherein the wireless audio headset is a slave device of a
first master/slave connection with a first paired audio source
device of the plurality of paired audio source devices;
[0106] identifying a second paired audio source device
corresponding to the selected user interface control;
[0107] initiating a request to become a master device of a second
master/slave connection with the second paired audio source device
corresponding to the selected user interface control;
[0108] determining that the second master/slave connection has been
established with the second paired audio source device;
[0109] in response to the determining, sending, by the wireless
audio headset to the second paired audio source device, a request
to become a slave device of the second master/slave connection;
[0110] receiving, by the wireless audio headset, audio input from
the second paired audio source device and outputting the received
audio input on the one or more audio output devices.
EEE 2. The wireless audio headset of EEE 1, wherein the plurality
of dedicated user interface controls are a plurality of physical
buttons, each button of the plurality of buttons being assigned to
a respective paired audio source devices of the plurality of paired
audio source devices. EEE 3. The wireless audio headset of EEE 1 or
EEE 2, wherein no further user input is received by the wireless
audio sink device after receiving the user input selecting the user
interface control. EEE 4. The wireless audio headset of EEE 3,
wherein no user input is received by any of the plurality of paired
audio source devices. EEE 5. The wireless audio headset of any
preceding EEE, wherein identifying the second paired audio source
device corresponding to the selected user interface control
comprises:
[0111] identifying a user interface control index corresponding to
the user interface control;
[0112] identifying a wireless protocol address associated with the
user interface control index;
[0113] searching a trusted device table for an entry having the
wireless protocol address; and
[0114] identifying a trusted device index corresponding to the
second paired audio source device; and
[0115] using the trusted device index to initiate the request to
become a master device of a second master/slave connection with the
second paired audio source device.
EEE 6. The wireless audio headset of any preceding EEE, wherein the
operations further comprise maintaining a separate switching device
table that associates user interface control indexes with wireless
protocol addresses. EEE 7. The wireless audio headset of any
preceding EEE, wherein the operations further comprise storing, in
a persistent data store integrated with the wireless audio headset,
the switching device table that associates user interface control
indexes with wireless protocol addresses. EEE 8. The wireless audio
headset of any preceding EEE, wherein the operations further
comprise:
[0116] determining that a connection with an audio source device
has been lost; and
[0117] switching to another paired audio source if and only if
further user input selecting a different audio source device is
received.
EEE 9. The wireless audio headset of EEE 8, wherein the operations
further comprise:
[0118] determining that the audio source device is available again;
and
[0119] in response, automatically reestablishing a connection with
the audio source device.
EEE 10. The wireless audio headset of any preceding EEE, wherein
the operations further comprise: [0120] identifying a particular
activity identifier of the second paired audio source device
corresponding to the selected user interface control; and
providing, to the second paired audio source device, the particular
activity identifier, and
[0121] wherein receiving the audio input from the second paired
audio source device comprises receiving audio input corresponding
to the particular activity identifier.
EEE 11. A method comprising:
[0122] receiving, at a wireless audio sink device, user input
selecting a user interface control of the wireless audio sink
device, the user interface control corresponding to one of a
plurality of paired audio source devices, wherein the wireless
audio sink device is a slave device of a first master/slave
connection with a first paired audio source device of the plurality
of paired audio source devices;
[0123] identifying, by the wireless audio sink device, a second
paired audio source device corresponding to the selected user
interface control;
[0124] initiating, by the wireless audio sink device, a request to
become a master device of a second master/slave connection with the
second paired audio source device corresponding to the selected
user interface control;
[0125] determining, by the wireless audio sink device, that the
second master/slave connection has been established with the second
paired audio source device;
[0126] in response to the determining, sending, by the wireless
audio sink device to the second paired audio source device, a
request to become a slave device of the second master/slave
connection; and
[0127] receiving, by the wireless audio sink device, audio input
from the second paired audio source device and outputting the
received audio input.
EEE 12. The method of EEE 11, wherein no further user input is
received by the wireless audio sink device after receiving the user
input selecting the user interface control. EEE 13. The method of
EEE 11 or EEE 12, wherein no user input is received by any of the
plurality of paired audio source devices. EEE 14. The method of any
one of EEEs 11 to 13, wherein identifying the second paired audio
source device corresponding to the selected user interface control
comprises:
[0128] identifying a user interface control index corresponding to
the user interface control;
[0129] identifying a wireless protocol address associated with the
user interface control index;
[0130] searching a trusted device table for an entry having the
wireless protocol address; and
[0131] identifying a trusted device index corresponding to the
second paired audio source device; and
[0132] using the trusted device index to initiate the request to
become a master device of a second master/slave connection with the
second paired audio source device.
EEE 15. The method of any one of EEEs 11 to 14, further comprising
maintaining a separate switching device table that associates user
interface control indexes with wireless protocol addresses. EEE 16.
The method of any one of EEEs 11 to 15, further comprising storing,
in a persistent data store integrated with the sink device, the
switching device table that associates user interface control
indexes with wireless protocol addresses. EEE 17. The method of any
one of EEEs 11 to 16, wherein the user interface control is a
physical button of a plurality of physical buttons of the sink
device, each button of the plurality of buttons being assigned to a
respective paired audio source devices of the plurality of paired
audio source devices. EEE 18. The method of any one of EEEs 11 to
16, wherein the user interface control is a physical user interface
of the sink device that cycles through the plurality of paired
audio source devices in response to subsequent user inputs. EEE 19.
The method of any one of EEEs 11 to 18, further comprising:
[0133] determining, by the wireless audio sink device, that a
connection with an audio source device has been lost; and
[0134] switching, by the wireless audio sink device, to another
paired audio source if and only if further user input selecting a
different audio source device is received.
EEE 20. The method of EEE 19, further comprising:
[0135] determining, by the wireless audio sink device, that the
audio source device is available again; and
[0136] in response, automatically reestablishing a connection with
the audio source device.
EEE 21. The method of any one of EEEs 11 to 20, further
comprising:
[0137] identifying, by the wireless audio sink device, a particular
activity identifier of the second paired audio source device
corresponding to the selected user interface control; and
[0138] providing, to the second paired audio source device, the
particular activity identifier, and
[0139] wherein receiving, by the wireless audio sink device, the
audio input from the second paired audio source device comprises
receiving audio input corresponding to the particular activity
identifier.
EEE 22. A wireless audio sink device comprising one or more audio
output devices, a plurality of dedicated user interface controls,
one or more data processing apparatus and one or more storage
devices storing instructions that are operable, when executed by
the one or more data processing apparatus, to cause the one or more
data processing apparatus to perform operations comprising:
[0140] receiving, at the wireless audio sink device, user input
selecting a user interface control of the wireless audio sink
device, the user interface control corresponding to one of a
plurality of paired audio source devices, wherein the wireless
audio sink device is a slave device of a first master/slave
connection with a first paired audio source device of the plurality
of paired audio source devices;
[0141] identifying, by the wireless audio sink device, a second
paired audio source device corresponding to the selected user
interface control;
[0142] initiating, by the wireless audio sink device, a request to
become a master device of a second master/slave connection with the
second paired audio source device corresponding to the selected
user interface control;
[0143] determining, by the wireless audio sink device, that the
second master/slave connection has been established with the second
paired audio source device;
[0144] in response to the determining, sending, by the wireless
audio sink device to the second paired audio source device, a
request to become a slave device of the second master/slave
connection; and
[0145] receiving, by the wireless audio sink device, audio input
from the second paired audio source device and outputting the
received audio input on the one or more audio output devices.
EEE 23. The wireless audio sink device of EEE 22, wherein no
further user input is received by the wireless audio sink device
after receiving the user input selecting the user interface
control. EEE 24. The wireless audio sink device of EEE 22 or EEE
23, wherein no user input is received by any of the plurality of
paired audio source devices. EEE 25. The wireless audio sink device
of any one of EEEs 22 to 24, wherein identifying the second paired
audio source device corresponding to the selected user interface
control comprises:
[0146] identifying a user interface control index corresponding to
the user interface control;
[0147] identifying a wireless protocol address associated with the
user interface control index;
[0148] searching a trusted device table for an entry having the
wireless protocol address; and
[0149] identifying a trusted device index corresponding to the
second paired audio source device; and
[0150] using the trusted device index to initiate the request to
become a master device of a second master/slave connection with the
second paired audio source device.
EEE 26. The wireless audio sink device of any one of EEEs 22 to 25,
wherein the operations further comprise maintaining a separate
switching device table that associates user interface control
indexes with wireless protocol addresses. EEE 27. The wireless
audio sink device of any one of EEEs 22 to 26, wherein the
operations further comprise storing, in a persistent data store
integrated with the sink device, the switching device table that
associates user interface control indexes with wireless protocol
addresses. EEE 28. The wireless audio sink device of any one of
EEEs 22 to 27, wherein the user interface control is a physical
button of a plurality of physical buttons of the sink device, each
button of the plurality of buttons being assigned to a respective
paired audio source devices of the plurality of paired audio source
devices. EEE 29. The wireless audio sink device of any one of EEEs
22 to 27, wherein the user interface control is a physical user
interface of the sink device that cycles through the plurality of
paired audio source devices in response to subsequent user inputs.
EEE 30. The wireless audio sink device of any one of EEEs 22 to 29,
wherein the operations further comprise:
[0151] determining, by the wireless audio sink device, that a
connection with an audio source device has been lost; and
[0152] switching, by the wireless audio sink device, to another
paired audio source if and only if further user input selecting a
different audio source device is received.
EEE 31. The wireless audio sink device of EEE 30, wherein the
operations further comprise:
[0153] determining, by the wireless audio sink device, that the
audio source device is available again; and
[0154] in response, automatically reestablishing a connection with
the audio source device.
EEE 32. The wireless audio sink device of any one of EEEs 22 to 31,
wherein the operations further comprise:
[0155] identifying, by the wireless audio sink device, a particular
activity identifier of the second paired audio source device
corresponding to the selected user interface control; and
[0156] providing, to the second paired audio source device, the
particular activity identifier, and
[0157] wherein receiving, by the wireless audio sink device, the
audio input from the second paired audio source device comprises
receiving audio input corresponding to the particular activity
identifier.
EEE 33. A computer storage medium encoded with a computer program,
the program comprising instructions that are operable, when
executed by data processing apparatus, to cause the data processing
apparatus to perform the method of any one of EEEs 11-21.
* * * * *