EP3135024A1 - Managing connections of a user device - Google Patents

Managing connections of a user device

Info

Publication number
EP3135024A1
EP3135024A1 EP15720230.0A EP15720230A EP3135024A1 EP 3135024 A1 EP3135024 A1 EP 3135024A1 EP 15720230 A EP15720230 A EP 15720230A EP 3135024 A1 EP3135024 A1 EP 3135024A1
Authority
EP
European Patent Office
Prior art keywords
computing device
network connection
user
devices
headset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
EP15720230.0A
Other languages
German (de)
French (fr)
Other versions
EP3135024B1 (en
Inventor
Andreas E. SCHOBEL
Nathan DE VRIES
Gregory B. Novick
Anthony J. Guetta
Jason C. Conn
Augustin Prats
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Priority to EP18155906.3A priority Critical patent/EP3361698B1/en
Priority to EP20162058.0A priority patent/EP3687137B1/en
Publication of EP3135024A1 publication Critical patent/EP3135024A1/en
Application granted granted Critical
Publication of EP3135024B1 publication Critical patent/EP3135024B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72409User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories
    • H04M1/72412User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories using two-way short-range wireless interfaces
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R1/00Details of transducers, loudspeakers or microphones
    • H04R1/10Earpieces; Attachments therefor ; Earphones; Monophonic headphones
    • H04R1/1091Details not provided for in groups H04R1/1008 - H04R1/1083
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/60Substation equipment, e.g. for use by subscribers including speech amplifiers
    • H04M1/6033Substation equipment, e.g. for use by subscribers including speech amplifiers for providing handsfree use or a loudspeaker mode in telephone sets
    • H04M1/6041Portable telephones adapted for handsfree use
    • H04M1/6058Portable telephones adapted for handsfree use involving the use of a headset accessory device connected to the portable telephone
    • H04M1/6066Portable telephones adapted for handsfree use involving the use of a headset accessory device connected to the portable telephone including a wireless connection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72409User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories
    • H04M1/724094Interfacing with a device worn on the user's body to provide access to telephonic functionalities, e.g. accepting a call, reading or composing a message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72442User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality for playing music files
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M19/00Current supply arrangements for telephone systems
    • H04M19/02Current supply arrangements for telephone systems providing ringing current or supervisory tones, e.g. dialling tone or busy tone
    • H04M19/04Current supply arrangements for telephone systems providing ringing current or supervisory tones, e.g. dialling tone or busy tone the ringing-current being generated at the substations
    • H04M19/045Call privacy arrangements, e.g. timely inhibiting the ring signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/20Manipulation of established connections
    • H04W76/25Maintenance of established connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04RLOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
    • H04R2420/00Details of connection covered by H04R, not provided for in its groups
    • H04R2420/07Applications of wireless loudspeakers or wireless microphones

Definitions

  • ⁇ олователи may include audio players, headsets, or the like.
  • some of these user devices are configured with only one or sometimes only a few functionalities.
  • some of these user devices may be able to connect to multiple source devices, while others may only be able to connect to a single source device.
  • the source device may be configured to provide content for presentation by the user device. As 5 such, managing such user devices may pose challenges for developers of source and user devices. BRIEF SUMMARY
  • Embodiments of the present disclosure can provide systems, methods, and
  • Two source devices may be configured to establish and/or maintain a data stream for communicating with one another about the connections of the user device. Once established, the two source devices may instruct each other how to handle individual network connections with the user device. For example, one of the source devices may use the data stream to 15 inform the other source device about its own network connections with the user device.
  • Requests to connect the second source device to the user device may also be shared with the first source device using the data stream.
  • a method may be executed by one of the two source devices to establish a network connection with the user device. Using that established 20 connection, the first device may provide content (e.g., audio content) to the user device.
  • content e.g., audio content
  • the second source device may provide configuration instructions to the first source device.
  • the configuration instructions may indicate to the first source device information about configuring the network connection 25 between the first source and the user device.
  • the second source may then establish a
  • a system may be implemented as a first computing device (e.g., one of the source devices) configured to maintain a data stream with 30 the other source device.
  • the first source may also be configured to establish a first network connection with a third device (e.g., the user device).
  • the user device may be configured to present information (e.g., electronic content) to a user.
  • the first source may provide information to the user device using the first network connection.
  • the second computing device Upon receipt of instructions for configuring the first network connection, the second computing device may be enabled to establish a different network connection with the user device once the first network connection ends. The first computing device may be able to identify that the different (e.g., second) network connection has been established.
  • a computer-readable medium may include
  • the first computing device may also identify a network connection between the second computing device and a user device. This identification may take place via the data stream, where the second device 10 may provide information that identifies the network connection to the first device.
  • An event may be received by the first device that identifies content to be transmitted to the user device. The content may be requested to be transmitted by the first device.
  • instructions to configure the first network connection may be provided to the second device. At least in response to the event, another network connection (e.g., between 15 the first device and the user device) may be utilized to provide the content to the user device from the first device.
  • FIG. 1 is a simplified block diagram illustrating an example architecture for 20 managing connections of a user device as described herein, according to at least one example.
  • FIG. 2 is another simplified block diagram with connection flows illustrating at least some features of managing connections of a user device as described herein, according to at least one example.
  • FIG. 3 is a sequence diagram illustrating additional features of managing
  • FIG. 4 is a flowchart of a method for managing connections of a user device as described herein, according to at least one example.
  • FIG. 5 is a simplified block diagram illustrating another example architecture for managing connections of a user device as described herein, according to at least one example.
  • FIG. 6 is a simplified block diagram illustrating at least some features of network connections available for managing connections of a user device as described herein, according to at least one example. 5 DETAILED DESCRIPTION
  • Examples of the present disclosure are directed to, among other things, managing connections of a user device by one or more source devices.
  • two source devices may be configured to establish and/or maintain a data stream for communicating with one another about the connections of the user device. Once established, the two source 10 devices may instruct each other how to handle individual network connections with the user device. For example, one of the source devices may use the data stream to inform the other source device about its own network connections with the user device. Requests to connect the second source device to the user device may also be shared with the first source device using the data stream. 15 [0014] In some cases, connections of mobile peripheral devices (also referred to herein as “user devices”) may be managed by the two source devices.
  • the user devices may be network-accessible devices such as, but not limited to, wireless headsets (e.g., headphones and/or a microphone), wireless audio playback devices (e.g., streaming media players, Moving Picture Experts Group (MPEG)-1 or MPEG-2 Audio Layer III (MP3) 20 players, or the like), wireless file transfer devices, or other similar types of devices
  • wireless headsets e.g., headphones and/or a microphone
  • wireless audio playback devices e.g., streaming media players, Moving Picture Experts Group (MPEG)-1 or MPEG-2 Audio Layer III (MP3) 20 players, or the like
  • MP3 Moving Picture Experts Group
  • MP3 MPEG-2 Audio Layer III
  • a device may be considered a source device because one of its functions, when paired with the user device, is to provide content for the user device to present to a user.
  • the source device may also receive data from the user device.
  • the user device is a mobile headset
  • the source device e.g., a mobile
  • the user device may send audio (e.g., the voice of a caller) to the user device and also receive audio (e.g., the voice of the user) from the user device.
  • the user device may only receive audio (e.g., music, etc.) from the source device. But, it is possible, even in this scenario, for the user device to provide data back to the source device (e.g., volume control information, audio position control information, playback speed control information, or the like).
  • SIM subscriber identity module
  • BP baseband processor
  • the user 5 device may emulate a BP and/or a SIM card to generate a ring that will appear to other
  • Some user devices may be configured to establish network connections with a plurality of source devices. However, other user devices may be configured to only establish 10 network connections with a single source device. Still, even when multiple network
  • the user device may be limited to the number of simultaneous connections.
  • a user device may have the capability to establish multiple connections, but may be limited to the number of those connections that it can manage at the same time.
  • some user devices may be able to manage a plurality of network 15 connections with multiple different source devices. While the following disclosure may focus mostly on user devices that can only manage or otherwise establish a single network connection at a time, it should be understood that the same or similar techniques may be used to manage network connections of user devices that can handle multiple different network connections (either concurrently or consecutively). Thus, the following techniques are not 20 intended to, and do not, limit the applicability of similar techniques with more advanced user devices. I.
  • two source devices may communicate with one another to aid in the management of network connections for the user 25 device (e.g., as a shared resource of the two source devices).
  • the user device in this scenario may be a Bluetooth headset configured to play audio files of the laptop and/or the mobile phone noted above.
  • the user may use the headset to listen to music or other audio that may be stored locally on (and/or accessed remotely by) the laptop and/or mobile phone.
  • the two source devices may be configured to manage individual network connections with the headset.
  • the user may relatively seamlessly use both source devices to play music on the headset (e.g., consecutively switching from one source to the other source).
  • the source devices may be configured to establish a network socket or other mechanism for streaming data between the two source devices. Once established, the network stream may be utilized by the two source devices to 5 manage the network connections with the user device as if the two source devices were a single device managing a network resource via other network connections. [0019] In some aspects, using the established stream (e.g., a persistent connection, assuming the two source devices stay within a desired distance of each other), the laptop and the mobile phone may be able to provide configuration instructions to one another.
  • This 10 communication between the laptop and the mobile device can be independent of data being communicated between the laptop and the headset and/or between the mobile phone and the headset.
  • the mobile phone may use the established stream (e.g., the network socket) to indicate this connection to the laptop.
  • the laptop may use the established 15 stream to indicate this connection to the mobile phone.
  • the two source devices may be up to date on the current state associated with Bluetooth (or other) connections of the headset.
  • the headset may establish a Bluetooth connection with the laptop and may play music to the user that is provided by the laptop. The information about this connection may be provided by the laptop to the mobile 20 phone via the persistent stream.
  • the mobile phone may provide an instruction to the laptop via the stream, e.g., to instruct the laptop to release the headset from its Bluetooth connection. In this 25 way, the headset may now be able to establish a new connection with another device. As desired, the mobile phone may then establish a network connection with the headset and pick up where the laptop left off.
  • a“play” object e.g., a button
  • FIG. 1 illustrates a simplified architecture diagram 100 depicting at least a first computing device 102, a second computing device 104, and at least one user device (or peripheral device) 106.
  • the peripheral device 106 may include, but is not 5 limited to, a headset, a pair of headphones, a speaker, a data transferring device, a media player, or the like).
  • the peripheral device 106 may be accessible to either or both of the first computing device 102 or the second computing device 104 via one or more networks 108 (e.g., a local area network (LAN), a wide area network (WAN), a personal area network (PAN), or any other wired or wireless network). Based at least in part 10 on the type of network 108 and/or the types of the devices 102, 104, 106, the network
  • connections may be persistent or may be temporal.
  • the first computing device 102 and the second computing device 104 may identify or otherwise request a network socket for establishing a stream of data 110 between the two devices 102, 104.
  • a particular network socket may be used to 15 enable direct streaming of data from the first computing device 102 to the second computing device 104.
  • the streaming can be performed in a persistent manner as long as the two devices 102, 104 remain within a desired physical range of one another.
  • the two devices 102, 104 may stream 110 data through the networks 112, the networks 108, and/or a combination of the two. 20 [0024]
  • the networks 108 and 112 may actually be the same network.
  • the first computing device 102 and/or the second computing device 104 may be any types of computing devices including, but not limited to, a laptop, a mobile phone, a wearable device (e.g., a smart watch, smart glasses, a smart wristband, or a smart wallet), a tablet, or the like. Further, the first computing device 102 and the second computing device 25 104 may use the stream 110 to transmit configuration and/or state information about the
  • peripheral device 106 may be used to communicate network connection termination instructions, call answering instructions, call transferring instructions, device pairing and/or connection instructions, or the like.
  • the peripheral device 106 may be: (1) paired and
  • Type 1 peripheral devices e.g., paired and connected to one device
  • Pairing the Type 1 peripheral to a new device may cause the peripheral to forget about the previous pairing.
  • switching from a new device to a previously paired device might require a manual re-pairing with the previously paired device.
  • Type 2 peripheral devices e.g., paired to multiple 5 devices but connected to only one at a time
  • Type 2 peripheral devices may allow pairing to multiple devices; however, they can only connect to one of the paired devices at a time.
  • Type 3 and Type 4 peripheral devices may allow multiple pairings and multiple connections. However, Type 3 devices may experience a multi-second delay 10 when switching the connection between paired devices. On the other hand, Type 4 devices may switch connections between paired devices without any perceivable delay.
  • the first computing device 102 and/or the second computing device 104 may be configured to probe the peripheral device 106 to identify its capabilities. For example, the first computing device may utilize a probing sequence for such a determination, thus enabling faster switching 15 between paired devices (e.g., when it is detected that the peripheral 106 is a Type 4 device).
  • the probing may be performed in advance of any incoming calls. This may allow for faster switching when desired. In other examples, the probing can be performed after the first computing device 102 is paired and connected. [0026] In some cases, if the peripheral 106 is manufactured by the same manufacturer of 20 the first computing device 102 or the second computing device 104, a flag may be included in the peripheral 106 so that if the flag is detected, the probing may not be performed, because the capabilities of the peripheral 106 will be known. Additionally, a device identifier (ID) may be provided, such that the first computing device 102 or the second computing device 104 may look up the capabilities of the peripheral 106 in a table or other data structure.
  • ID device identifier
  • the type and/or capabilities of the peripheral 106 may be identified by a probing scheme of two devices. For example, a first device may pair with the peripheral 106. Once paired, the second device may attempt to pair with the peripheral 106. If the pairing between the first device and the peripheral is lost at this point, the two devices may have identified a Type 1 30 device. Additionally, if the first device remains paired when the second device connects, but the first device cannot also connect while the second device is connected, the two devices may have identified a Type 2 device.
  • the probing scheme may identify a Type 3 or Type 4 device if both devices are capable of being connected to the peripheral 106 at the same time (e.g., at t0 the first device pairs with the peripheral 106, at t1 the second device pairs with the peripheral 106, at t2 the first device connects to the peripheral 106, and at t3 when the second device connects to the peripheral 106, the first device maintains its connection). At least because the two devices are in communication with one another (e.g., 5 via the established stream of data 110), they are able to deduce the type of the peripheral 106 by sharing the results of the probing schemes described above.
  • the first computing device 102 may be configured to establish a network connection with the peripheral device 106. Once paired and connected, the first computing device 102 may be able to provide content to the peripheral 106 via the
  • the first computing device 102 may provide music for the peripheral 106 to play or otherwise present to the user.
  • the two devices 102, 104 may determine which of the two devices 102, 104 should provide the call to the peripheral 106.
  • the call could be routed to 15 the first computing device 102 since it is already paired and connected via the network
  • the determination of which device 102, 104 to use for providing the call to the peripheral 106 may be made based at least in part on historical 20 user information (e.g., which device 102, 104 the user typically uses for calls), preferences (e.g., which device 102, 104 the user prefers based at least in part on a configuration setting), usage patterns (e.g., which device 102, 104 was the user using last), and/or battery concerns (e.g., which device 102, 104 has more battery life remaining or which device 102, 104 uses less batter power to provide calls). 25 [0028] In some examples, once the determination of which device 102, 104 is to be
  • the two devices 102, 104 may communicate configuration information, instructions for switching devices 102, 104, and/or metadata associated with the currently active network connection 114, 116. For example, if the first computing device 102 is paired and connected to the peripheral 106, but the devices 102, 104 determine that the second 30 computing 104 should provide an incoming phone call (or other content), several instructions may be provided via the stream 110. That is, the second computing device 104 may provide a connection termination instruction to the first computing device 102 via the stream 110. Either before, simultaneously, or sometime after, the second computing device 104 may also begin polling the peripheral device 106 in order to pair.
  • the peripheral device 106 may be able to pair and connect with the second computing device 104 via the second network connection 116.
  • the second computing device 104 may then be able to provide the call to the peripheral 5 device 106.
  • the first computing device 102 may be able to identify when and/or that the second network connection 116 has been established between the peripheral device 106 and the second computing device 104.
  • either or both of the peripheral device 106 and the second computing device 104 may provide information to the first computing device 102 that indicates the establishment of the second network connection 10 116.
  • the first computing device 102 may be able to detect the second network connection 116 (e.g., by packet sniffing or the like) on its own, or the first computing device 102 may be configured to cause the establishment of the second network connection 116 (e.g., by providing instructions to the peripheral device 106 to pair and connect with the second computing device 104.
  • the features described herein can enable two devices (e.g., the first computing device 102 and the second computing device 104) that are connected and working together (e.g., in tandem) to share a third device (e.g., the user device 106).
  • events may come into either or both of the first computing device 102 or the second computing device 104, and the two devices may be configured to determine which of the two 20 devices 102, 104 should alert the user device 106 of the incoming event (e.g., when both devices 102, 104 receive the same event information). Both devices 102, 104 may be configured to know the state of the other, as well as the state of the user device 106, and may be further configured to command audio (or other event information) routing and policies of the set of devices 102, 104, 106. 25 III. EXAMPLE FLOW [0030] FIG.
  • the first computing device 102 and the second computing device 104 may establish a data stream for 30 communicating with one another.
  • the data stream may be initiated, established, and/or maintained by either of the first or second computing devices 102, 104.
  • the data stream may then be used by the two devices 102, 104 to communicate with each other about the state and/or configuration of network connections with the user device 106.
  • the first computing device 102 may communicate any network connections that it has with the user device 106 or with other devices to the second computing device 104 over the data stream.
  • the first computing device 102 may also be configured to establish a first
  • This first connection may be utilized by the first
  • the second computing device 104 may receive a data request (e.g., from a user) or other indication that data may be requested to be provided from the second 10 computing device 104 to the user device 106.
  • a telephone call may come into the second computing device 104 while the user is listening to the audio track via the user device 106.
  • the data request may be the request to answer the call from the second computing device 104.
  • the two source devices 102, 104 may first communicate with one another via the data stream to configure the appropriate connections.
  • the second computing device 104 may provide configuration information to the first computing device 102 via the data stream. The configuration
  • FIG. 3 illustrates a simplified network flow diagram 300, for describing at least one use case for the techniques described herein.
  • the flow diagram represents 30 requests, application programming interface (API) calls, connections, etc., made by one or more computing devices.
  • API application programming interface
  • a first source 302 may request a network socket 304 for creating a persistent stream with a second source 306.
  • the first source 302 and the second source 306 may be computing devices configured to manage a shared resource (e.g., a user or peripheral device 308), similar to the first computing device 102 and the second computing device 104 of FIGS. 1 and 2.
  • the user device 308 may be configured to provide presentation of content to a user, where the content was provided to the user 5 device 308 from one of the first source 302 or the second source 306.
  • the second source 306 may establish the stream 310 with the first source 302. As noted above, this stream may enable the two sources 302, 306 to manage the connections of the user device 308.
  • the first source 302 may receive a data request 312 (e.g., a request from a user to 10 provide data to the user device 308) or an event (e.g., an indication of incoming call or a calendar appointment). At least in response to a first connection request from the first source 302, the user device 308 may approve the connection request 314 and then the first sources 302 may establish the first network connection 316. The order of these operations may be actually be performed in a variety of different ways (e.g., with or without the initial request 15 for the connection from the first source 302). [0035] Using a Bluetooth network connection, the first source 302 may first attempt to pair with the user device 308 by polling (e.g., sending a request and waiting for a response).
  • polling e.g., sending a request and waiting for a response
  • a connection may be established (not necessarily“by” either device) once the user device 308 responds with an acceptance of the request.
  • the 20 user device 308 may always be pairable with the first source 302, in which case the first source 302 may simply establish a connection with the user device 308 upon completion of the data request 312 or receipt of an event.
  • the first source 302 may provide content (e.g., an audio file, portions of an audio file, a telephone call, a notification of an event or calendar appointment, etc.) 318 to the 25 user device 308 via the first network connection 316.
  • the second source 306 may, at some point, receive a second or new data request 320. Similar to the data request 312, the second data request 320 received by the second source 306 may include, but is not limited to, a request from a user to provide content of the second source, an event received by the second source 306, or the like.
  • the second data 30 request 320 may also include a request from a user to switch content sources (e.g., from the first source 302 to the second source 308). That is, the user may navigate to a settings user interface (UI) of the second source 308 (e.g., a network connections control UI) and request that the second source 308 become the source of content for the user device 308.
  • UI settings user interface
  • the second source 306 may be configured to take over control of the user device 308. As such, the second source 306 may provide configuration
  • the configuration 5 instructions may include, among other things, an instruction to release or terminate the first network connection 316, metadata associated with a state of the first network connection 316 and/or the use device 308, instructions for the first source 302 to stop providing content (e.g., pause an audio track), or the like.
  • the configuration instructions 322 may instruct the first source to 10 terminate the first connection 316 and provide metadata about the state of the user device 308 and/or the content being provided 318.
  • the first source 302 may provide metadata 324 to the second source (e.g., a location of a song being played by the user device 308) via the stream 310.
  • the first source 302 may terminate the firs network connection 326 with the user device, thus, freeing up the user device 308 for 15 other connections (e.g., a connection with the second source 306).
  • the first source 302 may terminate the firs network connection 326 with the user device, thus, freeing up the user device 308 for 15 other connections (e.g., a connection with the second source 306).
  • FIG. 4 illustrates an example flow diagram showing a process 400 for managing user device connections, according to at least a few embodiments. This process is illustrated as a logical flow diagram, each operation of which represents a sequence of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the 25 context of computer instructions, the operations may represent computer-executable
  • computer- executable instructions stored on one or more non-transitory computer-readable storage media that, when executed by one or more processors, perform the recited operations.
  • computer- executable instructions include routines, programs, objects, components, data structures and the like that perform particular functions or implement particular data types.
  • the order in 30 which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be combined in any order and/or in parallel to implement the processes.
  • any, or all of the processes may be performed under the control of one or more computer systems configured with specific executable instructions and may be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) executing collectively on one or more processors, by hardware, or 5 combinations thereof.
  • code e.g., executable instructions, one or more computer programs, or one or more applications
  • the code may be stored on a non-transitory
  • the first computing device 102 shown in FIG. 1 may perform the process 400 of FIG. 4. Additionally, the following description is from the perspective of the first device 102 but it is 10 to be understood that the method could be performed by the second device 104 instead, in which case, references to the“second” computing device would refer to either first device 102 or a third device different from either the first or second devices 102, 104.
  • a data stream between a first device a second computing device can be maintained. In some examples, this process may be executed or performed by a mobile 15 phone of the user, while the second computing device with which a stream is being
  • the maintained stream may enable the mobile phone and the different mobile device to manage a peripheral device (e.g., a headset or the like) as a shared resource.
  • the different mobile device of the user e.g., the second computing device in this example
  • the wearable device may already be connected to the headset (e.g., streaming music or other content to the headset).
  • the 25 mobile phone may be made aware of the first connection based at least in part on data shared via the stream that was maintained at 402.
  • an event that identifies content to be transmitted to the user device may be received.
  • the content may be a telephone call received by either or both of the mobile device or the mobile phone and the event may be a notification that the call is being 30 received.
  • the content may be a song that the user wishes to play from the mobile phone (e.g., that may not be stored locally on the wearable device) and the event may be a notification of a request to play the song.
  • the content may be a calendar appointment and the event may be a signal indicating that the calendar appointment is occurring or will occur soon.
  • instructions for configuring the first network connection to the second computing device may be provided.
  • This instruction may be provided via the stream that is 5 maintained at 402.
  • the instructions for configuring the first network connection may include an instruction to terminate the first network connection or for the wearable device to otherwise release the headset from its connection.
  • the instructions 10 may also include an instruction to provide metadata via the maintained stream.
  • the metadata may identify information about the first network connection including, but not limited to, a track that is playing on the headset, a playing position in the track that is playing on the headset, a volume of the headset, or the like.
  • the content may be provided to the user device via a second connection 15 between the mobile phone and the headset.
  • the instructions of 408 may terminate the connection between the wearable device and the headset, and the mobile phone may then establish the second connection with the headset.
  • the mobile phone may then source or otherwise provide the incoming telephone call to the headset.
  • the headset is paired and connected to both the mobile phone and the wearable device, and the user is listening to music from either, the mobile phone and/or the wearable device may attempt to determine which device should send an incoming telephone call to the headset. At may be that both the mobile phone and the wearable device are notified when a call comes in.
  • the phone may cause the headset to ring and the wearable device may suppress the ring.
  • This direction e.g., the determination to have the mobile phone provide the ring instead of the wearable device
  • the two devices may decide to have the wearable device route the call based at least in part on a determination that the wearable device has more remaining battery life, or a higher percentage of total battery life remaining.
  • the wearable device may route the call to the headset without even notifying the mobile phone.
  • the 5 mobile phone may act as the arbitrator for the two devices, making routing decisions for events that are received at both the mobile phone and the wearable device (or other connected peripheral).
  • a telephone call may be transferred from the wearable device to the mobile device (e.g., the routing of the call to the headset may be 10 switched from the wearable device to the mobile device) by providing an icon on a user interface (UI) that identifies the connection and/or the wearable device.
  • UI user interface
  • the user may be able to cause the call to be transferred from the wearable device to the mobile phone (but still sent to the headset).
  • Other use cases include when a user is listening to music on the wearable device 15 and a call comes in, the user may be able to tap an icon on the wearable device and cause the music to pause or duck, thereby allowing the user to hear the incoming call. This may be implemented by having the call sent from the wearable device or from the mobile phone to the headset. In the former scenario, the wearable device would be configured to pause or duck the music temporarily while providing the call.
  • the 20 mobile phone may be configured to provide an instruction via the stream to the wearable device, instructing the wearable device to pause or duck the music and/or to give up the connection with the headset so that the mobile phone may connect and provide the call.
  • the two devices may be able to know each other’s 25 available audio routes, current audio route, and whether audio is active. Using this
  • smart decisions may be made regarding which of the mobile device or wearable device should provide notifications and/or information. For example, if the wearable device is actively playing music on a headset, the system may assume that the user last interacted with the wearable device. In this case, if a call or other notification came in, the system may 30 determine to provide the call or other notification via the wearable device regardless of
  • the two devices may be able to know the active audio routes of each of the two devices with respect to the headset. Using this information, smart decisions may be made regarding which of the mobile device or wearable device 5 should provide notifications and/or information. For example, if the wearable device is
  • the system may assume that the user last interacted with the wearable device. In this case, if a call or other notification came in, the system may determine to provide the call or other notification via the wearable device regardless of battery or other optimization concerns.
  • Other data such as, information that identifies interaction with a screen, information that identifies whether a screen is on, or other the like, may be utilized to predict which device (e.g., the wearable device or the mobile phone) the user is actively using. As noted, this information can be used to determine which device should manage the headset. Routing decisions of incoming events may also be determined based at least in part on the type of 15 event it is, whether it has a sound, etc.
  • Other decisions may be based at least in part on power management decisions.
  • the power management decisions may be made by an external service.
  • the routing decisions of this system may be based at least in part on those power management rules.
  • the switch may only be made automatically when the user stops or pauses playback; however, in other cases it might be done when the connected device appears to be running out of (or low on) power (e.g., once a threshold remaining power level is 25 reached).
  • FIG. 5 illustrates an example architecture 500 for implementing the management of connections of a user device that includes the first computing device 102 and the second computing device 104, as well as the user device (or peripheral) 106 of FIG 1.
  • the devices may be connected via one or more networks 108
  • one or more users may utilize the first computing device 102 and/or the second computing device 104 to manage, control, or otherwise utilize one or more user devices 106, via one or more networks 108.
  • the illustrated example represents the computing devices 102, 104 accessing the peripheral device 106 via the networks 108 and/or 112, the described techniques may 5 equally apply in instances where the computing devices 102, 104 interact with the user device 106 over a landline phone, via a kiosk, or in any other manner.
  • the described techniques may apply in other client/server arrangements, as well as in non- client/server arrangements (e.g., locally stored applications, peer to peer configurations, etc.).
  • the first and second computing devices 102, 104 may be configured 10 to receive events, communicate with one another through the stream 110 (e.g., via the
  • the computing devices 102, 104 may be in
  • either or both of the computing devices 102, 104 15 may include at least one memory 514 and one or more processing units (or processor(s)) 516.
  • the processor(s) 516 may be implemented as appropriate in hardware, software (e.g., computer-executable instructions, firmware, etc.), or combinations thereof.
  • Computer- executable instruction or firmware implementations of the processor(s) 516 may include machine-executable instructions written in any suitable programming language to perform the 20 various functions described.
  • the computing devices 102, 104 may also include geo-location devices (e.g., a global positioning system (GPS) device or the like) for providing and/or recording geographic location information associated with the computing devices 102, 104.
  • GPS global positioning system
  • the memory 514 may store program instructions that are loadable and executable on the processor(s) 516, as well as data generated during the execution of these programs.
  • the memory 514 may be volatile (e.g., random access memory (RAM)) and/or non-volatile (e.g., read-only memory (ROM), flash memory, etc.).
  • RAM random access memory
  • ROM read-only memory
  • the mobile device 102 may also include additional removable storage and/or non-removable storage including, but not limited to, magnetic storage, optical disks, etc.
  • the disk drives and their associated non-transitory computer-readable media may 30 provide non-volatile storage of computer-readable instructions, program modules, data
  • the memory 514 may include multiple different types of memory, such as RAM, static random access memory (SRAM), dynamic random access memory (DRAM), or ROM. While the volatile memory described herein may be referred to as RAM, any volatile memory (e.g., that does not maintain data stored therein once unplugged from a host and/or power) would be appropriate.
  • RAM static random access memory
  • DRAM dynamic random access memory
  • ROM ROM
  • RAM any volatile memory (e.g., that does not maintain data stored therein once unplugged from a host and/or power) would be appropriate.
  • the memory 514 and the additional storage 526 both removable and non- removable, are all examples of non-transitory computer-readable storage media.
  • the memory 514 and the additional storage 526 are all examples of non-transitory computer storage media.
  • Additional types of computer storage media may include, but are not limited to, phase-change RAM (PRAM), SRAM, 10 electrically erasable programmable read-only memory (EEPROM), flash memory, compact disc read-only memory (CD-ROM), digital video disc (DVD), magnetic cassettes or tape, magnetic disk storage, or any other medium that can be used to store the desired information and that can be accessed by the computing devices 102, 104. Combinations of any of the above should also be included within the scope of non-transitory computer-readable media.
  • computer-readable communication media may include computer-readable instructions, program modules, or other data transmitted within a data signal, such as a carrier wave, or other transmission.
  • the computing devices 102, 104 may also contain communications connection(s) 20 528 that allow the computing devices 102, 104 to communicate with a data store or another computing device via the networks 108.
  • the computing devices 102, 104 may also include input/output (I/O) device(s) 530, such as a keyboard, a mouse, a pen, a voice input device, a touch input device, a display, speakers, etc.
  • I/O input/output
  • the memory 514 may 25 include an operating system 532 and/or one or more application programs or services for implementing the features disclosed herein (e.g., the process 400 of FIG.
  • the stream module 534 may be configured to establish and/or manage a stream (e.g., a persistent Bluetooth connection) between the first computing device 102 and the 30 second computing device 104, such as the stream 110 of FIG. 1.
  • the stream 110 may, in some cases, be established via a network socket when the two devices 102, 104 are within a specific range of one another. The specific range may be defined by the type of network socket, connection, and/or protocol used for the stream 110.
  • the stream 110 may be persistent as long the first computing device 102 and the second computing device 104 are within four or five meters of each other.
  • no specific range may be necessary, as the two 5 devices 102, 104 may set up a stream 110 while they are both connected to a single network (e.g., a LAN or the like).
  • the stream module 534 may be configured to manage the communications over the stream 110 by the two computing devices 102, 104.
  • connection module 536 may be configured to manage or otherwise control secondary connections of the computing devices 102, 104.
  • secondary connections may include connections with computing devices other than the first 15 and second computing devices 102, 104. That is, when the first computing device 102
  • a secondary connection of the second computing device 104 may include one with the user device 106.
  • Secondary connections e.g., a first network connection between the first computing device 102 and the user device 106 or a 20 second network connection between the second computing device 104 and the user device 106 may be utilized by the first and second computing devices 102, 104 to provide event information, audio signals, and/or other data to the user devices 106.
  • the secondary connections managed by the connection module 536 may be initiated by the first or second computing devices 102, 104 and/or by the user 25 devices 106.
  • the first computing device 102 may send a request to establish a first network connection with the user device 106 using the connection module 536. It may then wait until it receives a response from the user device 106 (e.g., a handshake to establish a connection), an indication from a user to quit waiting, information from the stream 110 to quit waiting, or a timeout signal (e.g., indicating that the first computing device should not 30 wait any longer).
  • a response from the user device 106 e.g., a handshake to establish a connection
  • an indication from a user to quit waiting e.g., information from the stream 110 to quit waiting
  • a timeout signal e.g., indicating that the first computing device should not 30 wait any longer.
  • the first and second computing devices 102, 104 may
  • the content module 538 may be configured to store, mange, and/or provide content to the user devices 106 via the secondary connections managed by the 5 connection module 536.
  • the content module 538 may be configured to receive content (e.g., a telephone call, a song, a video, etc.) and provide the content to the user device 106.
  • the content module 538 may be responsible for storing the song locally, preparing the song for transmission, and then providing the song to the user device via the secondary connection.
  • the content may be a call
  • the content 10 module 538 may be configured to provide the audio of the call to the user device 106 (e.g., a headset).
  • the communication of data from a device can occur through 15 various protocols (e.g., 802.11 protocols, Bluetooth protocols, and near field communication (NFC) protocols).
  • a device can include a link manager for determining which protocol to use for a particular application, and thus which driver path data should be sent.
  • a lower level link layer can also perform selections of a particular protocol to use.
  • UTUN user tunnel controller
  • UTUN controller can coordinate a plurality of virtual 20 connections with various client applications to communicate over a common socket
  • FIG. 6 shows a protocol stack 600 for communicating data according to some examples.
  • Various modules in protocol stack 600 can be omitted, or other modules added. 25
  • the software modules can be run on a same processor or different processors.
  • Bluetooth protocols can include Basic Rate (BR), Enhanced Data Rate (EDR), and Low Energy (LE) options.
  • BR/EDR is also referred to as Classic Bluetooth.
  • a client application 605 on the device e.g., mobile device 30 115
  • can request data to be sent to another device e.g., companion device 120).
  • the request can specify the other device via any suitable identifier, e.g., an account name, an IP address, a MAC address, etc.
  • the request can be before or after the device determines that the other device is within communication, e.g., as determined by initial signaling, such as a handshake.
  • the data e.g., in a message or a stream
  • the other device can be any device, including 5 another device of the user.
  • the request can made be in response to an action by the user, an internal event (e.g., based on time or other criteria) that may be in a same or other application (e.g., a calendar app), or an external event (e.g., in response to a message from another device).
  • An example of an event is a syncing event.
  • client application 605 can submit an open socket request (e.g., 10 in a streaming example).
  • the socket request can use information from an identity services (IDS) framework 615, which can provide an address (or other type of ID) for the other device.
  • IDS identity services
  • client application 605 can know account information for the second device (e.g., account information of a different or same user), and IDS framework 615 can store a list of device IDs for a particular account.
  • IDS framework 615 can be in
  • IDS framework 615 can store or otherwise obtain device IDs (e.g., addresses) for all devices that a user has registered with ID infrastructure 105.
  • IDS framework 615 can request via an IDS daemon to ID infrastructure 105 to obtain the device IDs.
  • the socket request can be made to kernel 610.
  • the request to send data can go to IDS framework 615 to obtain a device ID, which can be sent to message a message controller 618 and a user tunnel (UTUN controller 620).
  • UTUN controller can establish a mapping between the device ID and an IP address (e.g., a virtual IP address) when the device ID is not an IP address.
  • a socket can be created between message controller 618 (which assigns a device ID to the socket) and 25 kernel 610 (which can assigns an address to the socket, such as a virtual IP address).
  • UTUN controller can be used to create the socket connection between message controller 618 and kernel 610.
  • the send-date request from client application 605 does not need to include a device ID, but can specify an account, which can then be cross-referenced by IDS framework 615 with known devices of the account and their capabilities (e.g., if the request 30 requires certain capabilities). Given that a device ID can be obtained, a pairing does not need to occur prior to creating the socket.
  • IDS framework 615 can receive a particular port/service at the other device from client application 605, determine the port/service based on information obtained from an ID infrastructure, or determine the port/service from a token sent in the request. IDS framework 615 can then communicate a device ID and other header information 5 to message controller 618 and/or UTUN controller 620. IDS framework 615 and UTUN
  • UTUN controller 620 can communicate via cross process communication (XPC).
  • UTUN controller 620 can be part of an IDS daemon, and can receive a device ID from ID infrastructure 105.
  • UTUN controller 620 can create a virtual address that corresponds to the actual device address, where the virtual address can be used to create a 10 virtual socket.
  • a virtual socket can also be created using any device ID (e.g., an actual device ID).
  • a socket can be created for communication between client application 605 and kernel 610 (e.g., in a streaming context), where kernel 610 can have various sockets open with various client applications. Kernel 610 can have a single connection to UTUN controller 620 for the other device and multiplex (mux) the data from 15 various client applications into the single connection. Instead or in addition, UTUN controller 620 can also perform the muxing, e.g., if multiple socket exist between kernel 610 and UTUN controller 620 for various client applications to the other device. Incoming data can be demultiplexed (demuxed) for sending to the destination client application. [0071] As another example, a socket can be created between kernel 610 and message 20 controller 618 (e.g., in a messaging context), where a socket can be created for each
  • Message controller 618 can have various connections to various client applications. Thus, message controller 618 can provide mux/demux
  • UTUN controller can create a primary socket with the other device.
  • UTUN controller 620 receives data using a virtual connection associated with the second device, it can then map the virtual connection to the primary socket for communicating with the other device. All data for the other device can then be sent out through the primary socket.
  • the 30 virtual address for a virtual socket can be passed back to client application 615, e.g., in the stream context.
  • a virtual socket involving kernel 610 is a TCP socket.
  • the virtual address can have a same format as a regular address, e.g., an IPv6 address.
  • a mux module can include any combination of kernel 610, message controller 618, and UTUN controller 620.
  • client application 605 can use the virtual socket to send data to kernel 610.
  • the data can be sent using TCP via the virtual socket.
  • Kernel 610 can implement an UTUN interface for communicating with UTUN controller 620. Kernel 610 would pass the data (e.g., with a TCP header) and the virtual socket identifying the virtual address to UTUN controller 620, which would then use the virtual address to resolve the device address for determining the device socket.
  • a link manager 625 can determine 10 which link to use.
  • a link can be a particular combination of a wireless interface protocol (e.g., Bluetooth or Wi-Fi) and a transport protocol (e.g., TCP, UDP, etc.). In this manner, UTUN controller 620 does not need to know how the data is being sent, but instead can simply send the data to link manager 625.
  • the determination by link manger 625 can be made per 15 data packet, per set of data packets, per device socket, and may change from one data packet to another. Link manager 625 may then select a link for sending the data.
  • a Wi-Fi link 630 provides software drivers for communicating with one or more Wi- Fi protocols
  • BTLE link 635 provides software drivers for communicating with Blutooth LE.
  • Wi-Fi link 630 is in communication with Wi-Fi hardware 660, and BTLE link 635 is in 20 communication with BTLE hardware 655.
  • Wi-Fi link 630 can be used for various Wi-Fi protocols, such as infra-WiFi (infrastructure WiFi).
  • link manager 625 can try all links to determine whether any of the links can contact the other device, and then use a connected link with a highest predetermined rank or dynamic rank.
  • a combined link 640 can include an interface 644 for 25 communicating with link manager 625 and a selector 648 that selects a particular protocol to use. The protocols can be the same or different than that available to link manager 625.
  • Selector 648 can perform similar functions as link manager 625 in that a particular link is selected. However, link manager 625 and selector 648 can use different criteria for determining which link to use. For example, link manager 625 can determine to use
  • BTLE hardware 655 can be used.
  • the hardware can be contained on a same or separate chips.
  • One or more protocols can be only available via combined link 640, such as classic Bluetooth hardware 650.
  • Link manager 625 and selector 648 can use various criteria for determining which link to use, such as power usage of a link, speed of a link (e.g., real-time data rate), and signal strength of a link.
  • a goal of the optimization for selecting a link can be 5 to provide a minimal data rate at a lowest possible energy.
  • Illustrative methods and systems for managing user device connections are described above. Some or all of these systems and methods may, but need not, be
  • User devices can include any type of general purpose personal computer such as, but not limited to, desktop or laptop computers running a standard operating system, 20 as well as cellular, wireless, and/or handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. These devices can also include other electronic devices, such as dummy terminals, thin-clients, gaming systems, or other devices capable of communicating via a network. [0080] Most embodiments utilize at least one network that would be familiar to those25 skilled in the art for supporting communications using any of a variety of commercially- available protocols, such as TCP/IP, OSI, FTP, UPnP, NFS, CIFS, and AppleTalk.
  • the network can be, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, and any combination thereof.
  • the environment can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers. Alternatively, the memory can be remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (SAN) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers or other network devices may be stored locally and/or remotely, as 5 desired.
  • the system and various devices may also include one or more software
  • managing a communication stream between a first device and a second device establishing a first network connection between the first device and a headset; providing, by the first device, first audio content to the headset using the first network connection;
  • Clause 2 The method of clause 1, wherein the communication stream between the first device and the second device is configured to be persistent when the first device is within communication range of the second device. Clause 3. The method of clause 1, further comprising receiving, by the first device, a user input that indicates a different request to provide the first audio content from the first device to the headset prior to establishing the first network connection. Clause 4. The method of clause 3, wherein the first network connection is established based at least in part on the user input that indicates the different request to provide the first audio content from the first device to the headset. Clause 5.
  • Clause 6 The method of clause 5, wherein the second audio content is provided to the second computing device based at least in part on the metadata associated with the first audio content.
  • a memory configured to store computer-executable instructions
  • a first computing device in communication with the memory and configured to execute the computer-executable instructions to:
  • Clause 8 The system of clause 7, wherein the second network connection is enabled after ending the first network connection with the third computing device.
  • a network socket is configured to stream data about at least one of the first network connection or the second network connection between the first computing device and the second computing device.
  • the third computing device comprises at least one of a headset, an audio playback device, or a video playback device.
  • Clause 11 The system of clause 10, wherein the headset is configured to be connectible to only one of the first computing device or the second computing device at a time.
  • the instructions to configure the first network connection include at least one instruction to end the first network connection.
  • Clause 13 The system of clause 12, wherein the at least one instruction to end the first network connection is received from the second computing device. Clause 14. The system of clause 13, wherein the at least one instruction to end the first network connection is received based at least in part on a request from the user to provide data from the second computing device to the third computing device. Clause 15. The system of clause 14, wherein the second network connection enables the second computing device to provide the data to the third computing device. Clause 16.
  • a computer-readable storage medium storing computer- executable instructions that, when executed by a first computing device, configure the first computing device to perform operations comprising:
  • Clause 17 The one or more computer-readable media of clause 16, wherein the instructions to configure the first network connection comprise at least an instruction to end the first network connection.
  • Clause 18 The computer-readable medium of clause 16, wherein the user device comprises at least one of a wireless headset or a media player.
  • Clause 19 The computer-readable medium of clause 16, wherein the event is received by the computer system and the second computing device.
  • Clause 20 The computer-readable medium of clause 19, wherein the content comprises audio of a telephone call or information associated with a calendar appointment.

Abstract

Systems, methods, and computer-readable medium are provided for managing connections of user devices. For example, two source devices may be configured to maintain a data stream with one another. The data stream may enable the two source devices to identify one or more connections between each other and at least a third device. In response to receiving an event that indicates content to be provided to the third device, the data stream may be used by the source devices to configure their network connections with the third device.

Description

MANAGING CONNECTIONS OF A USER DEVICE 5 CROSS-REFERENCES TO RELATED APPLICATIONS
[0001] The present application claims priority to U.S. Application No. 14/475,422, filed September 2, 2014, which claims the benefit of U.S. Provisional Application No. 62/005,505, 10 filed May 30, 2014 entitled“Managing Connections of a User Device,” by Schobel, et al.
(Ref. No. P23295USP1), which are hereby incorporated by reference for all purposes. The present application is also related to U.S. Provisional Applications:“ANSWER AND HOLD WITH CLIENT AND HOST” by Rauenbuehler et al. (Ref. No. P23172USP1);
“ANSWERING A CALL WITH CLIENT THROUGH A HOST” by Rauenbuehler et al. 15 (Ref. No. P23171USP1);“CLIENT APPLICATIONS COMMUNICATING VIA A USER TUNNEL” by Tung et al. (Ref. No. P23188USP1);“PROXIED PUSH” by Pollack et al. (Ref. No. P23053USP1);“SMS PROXYING” by Circosta et al. (Ref. No. P23192USP1); “APPLICATION-LEVEL ACKNOWLEDGEMENTS” by Pollack et al. (Ref. No
P23189USP1);“MESSAGES WITH ATTENUATING RETRANSMIT IMPORTANCE” by 20 Pollack et al. (Ref. No. P23190USP1);“UNIFIED MESSAGE DELIVERY BETWEEN
PORTABLE ELECTRONIC DEVICES” by Pollack et al. (Ref: P22929USP1); and “PROTOCOL SWITCHING IN INTER-DEVICE COMMUNICATION” by Prats et al. (Ref. No. P22319USP1), which are concurrently filed and commonly owned and are hereby incorporated by reference for all purposes. The present application is also related to U.S. 25 Provisional Application 61/953,591. Entitled“DYNAMIC LINK ADAPTATION FOR
IMPROVED LINK MARGIN,” by Liu et al., filed March 14, 2014, which is hereby incorporated by reference for all purposes. BACKGROUND
30 [0002] Network-accessible user devices have become ubiquitous over the years, with
many different manufacturers providing a plethora of different types, styles, and models. For example, different types of such user devices may include audio players, headsets, or the like. Additionally, some of these user devices are configured with only one or sometimes only a few functionalities. Further, with the number of variations in type and the recent changes in technology, some of these user devices may be able to connect to multiple source devices, while others may only be able to connect to a single source device. In some examples, the source device may be configured to provide content for presentation by the user device. As 5 such, managing such user devices may pose challenges for developers of source and user devices. BRIEF SUMMARY
[0003] Embodiments of the present disclosure can provide systems, methods, and
10 computer-readable medium for managing connections of a user device by one or more source devices. Two source devices may be configured to establish and/or maintain a data stream for communicating with one another about the connections of the user device. Once established, the two source devices may instruct each other how to handle individual network connections with the user device. For example, one of the source devices may use the data stream to 15 inform the other source device about its own network connections with the user device.
Requests to connect the second source device to the user device may also be shared with the first source device using the data stream. [0004] According to one embodiment, a method may be executed by one of the two source devices to establish a network connection with the user device. Using that established 20 connection, the first device may provide content (e.g., audio content) to the user device.
When an input is received (e.g., at the second source device) that indicates additional content for the second source to provide to the user device, the second source device may provide configuration instructions to the first source device. The configuration instructions may indicate to the first source device information about configuring the network connection 25 between the first source and the user device. The second source may then establish a
connection with the user device and provide content to the user device (e.g., once the first connection has been terminated by the first source). [0005] According to another embodiment, a system may be implemented as a first computing device (e.g., one of the source devices) configured to maintain a data stream with 30 the other source device. The first source may also be configured to establish a first network connection with a third device (e.g., the user device). The user device may be configured to present information (e.g., electronic content) to a user. In some aspects, the first source may provide information to the user device using the first network connection. Upon receipt of instructions for configuring the first network connection, the second computing device may be enabled to establish a different network connection with the user device once the first network connection ends. The first computing device may be able to identify that the different (e.g., second) network connection has been established. 5 [0006] According to another embodiment, a computer-readable medium may include
instructions that, when executed, configure a computer processor of a first computing device to maintain a data stream with a second computing device. In some cases, the first computing device may also identify a network connection between the second computing device and a user device. This identification may take place via the data stream, where the second device 10 may provide information that identifies the network connection to the first device. An event may be received by the first device that identifies content to be transmitted to the user device. The content may be requested to be transmitted by the first device. Additionally, using the data stream, instructions to configure the first network connection may be provided to the second device. At least in response to the event, another network connection (e.g., between 15 the first device and the user device) may be utilized to provide the content to the user device from the first device. BRIEF DESCRIPTION OF THE DRAWINGS
[0007] FIG. 1 is a simplified block diagram illustrating an example architecture for 20 managing connections of a user device as described herein, according to at least one example. [0008] FIG. 2 is another simplified block diagram with connection flows illustrating at least some features of managing connections of a user device as described herein, according to at least one example. [0009] FIG. 3 is a sequence diagram illustrating additional features of managing
25 connections of a user device as described herein, according to at least one example. [0010] FIG. 4 is a flowchart of a method for managing connections of a user device as described herein, according to at least one example. [0011] FIG. 5 is a simplified block diagram illustrating another example architecture for managing connections of a user device as described herein, according to at least one example. [0012] FIG. 6 is a simplified block diagram illustrating at least some features of network connections available for managing connections of a user device as described herein, according to at least one example. 5 DETAILED DESCRIPTION
[0013] Examples of the present disclosure are directed to, among other things, managing connections of a user device by one or more source devices. In some examples, two source devices may be configured to establish and/or maintain a data stream for communicating with one another about the connections of the user device. Once established, the two source 10 devices may instruct each other how to handle individual network connections with the user device. For example, one of the source devices may use the data stream to inform the other source device about its own network connections with the user device. Requests to connect the second source device to the user device may also be shared with the first source device using the data stream. 15 [0014] In some cases, connections of mobile peripheral devices (also referred to herein as “user devices”) may be managed by the two source devices. In some examples, the user devices may be network-accessible devices such as, but not limited to, wireless headsets (e.g., headphones and/or a microphone), wireless audio playback devices (e.g., streaming media players, Moving Picture Experts Group (MPEG)-1 or MPEG-2 Audio Layer III (MP3) 20 players, or the like), wireless file transfer devices, or other similar types of devices
configured to receive and/or provide data over a network connection. In some cases, such user devices may communicate with the one or more source devices (e.g., a laptop, a telephone, a tablet, etc.) using various types of wireless communication protocols or standards including, but not limited to, Bluetooth, Bluetooth low energy (BTLE), ZigBee, 25 Near field Communication (NFC), or the like. [0015] A device may be considered a source device because one of its functions, when paired with the user device, is to provide content for the user device to present to a user.
However, in some cases, the source device may also receive data from the user device. For example, when the user device is a mobile headset, the source device (e.g., a mobile
30 telephone) may send audio (e.g., the voice of a caller) to the user device and also receive audio (e.g., the voice of the user) from the user device. Still, in the example where the user device is a set of mobile headphones, the user device may only receive audio (e.g., music, etc.) from the source device. But, it is possible, even in this scenario, for the user device to provide data back to the source device (e.g., volume control information, audio position control information, playback speed control information, or the like). In addition, even if the user device does not have a subscriber identity module (SIM) card or a baseband processor (BP), it may still be able to simulate such network interface devices. For example, the user 5 device may emulate a BP and/or a SIM card to generate a ring that will appear to other
devices as an outgoing call from the user device. The emulation may be provided by the Bluetooth stack of the user device. [0016] Some user devices may be configured to establish network connections with a plurality of source devices. However, other user devices may be configured to only establish 10 network connections with a single source device. Still, even when multiple network
connections are enabled, the user device may be limited to the number of simultaneous connections. In other words, a user device may have the capability to establish multiple connections, but may be limited to the number of those connections that it can manage at the same time. Alternatively, some user devices may be able to manage a plurality of network 15 connections with multiple different source devices. While the following disclosure may focus mostly on user devices that can only manage or otherwise establish a single network connection at a time, it should be understood that the same or similar techniques may be used to manage network connections of user devices that can handle multiple different network connections (either concurrently or consecutively). Thus, the following techniques are not 20 intended to, and do not, limit the applicability of similar techniques with more advanced user devices. I. TWO SOURCE DEVICES [0017] In at least one example, two source devices (e.g., a laptop and a mobile phone) may communicate with one another to aid in the management of network connections for the user 25 device (e.g., as a shared resource of the two source devices). For the purposes of explanation, the user device in this scenario may be a Bluetooth headset configured to play audio files of the laptop and/or the mobile phone noted above. In other words, the user may use the headset to listen to music or other audio that may be stored locally on (and/or accessed remotely by) the laptop and/or mobile phone. 30 [0018] Regardless of whether the headset can connect to both the laptop and the mobile phone at the same time, the two source devices may be configured to manage individual network connections with the headset. In this way, the user may relatively seamlessly use both source devices to play music on the headset (e.g., consecutively switching from one source to the other source). In this example, the source devices may be configured to establish a network socket or other mechanism for streaming data between the two source devices. Once established, the network stream may be utilized by the two source devices to 5 manage the network connections with the user device as if the two source devices were a single device managing a network resource via other network connections. [0019] In some aspects, using the established stream (e.g., a persistent connection, assuming the two source devices stay within a desired distance of each other), the laptop and the mobile phone may be able to provide configuration instructions to one another. This 10 communication between the laptop and the mobile device can be independent of data being communicated between the laptop and the headset and/or between the mobile phone and the headset. For example, if the mobile phone is connected to the headset, the mobile phone may use the established stream (e.g., the network socket) to indicate this connection to the laptop. Alternatively, if the laptop is connected to the headset, the laptop may use the established 15 stream to indicate this connection to the mobile phone. [0020] In this way, the two source devices may be up to date on the current state associated with Bluetooth (or other) connections of the headset. For example, the headset may establish a Bluetooth connection with the laptop and may play music to the user that is provided by the laptop. The information about this connection may be provided by the laptop to the mobile 20 phone via the persistent stream. If the user requests to switch to using the mobile phone for providing the music, the user may simply press a“play” object (e.g., a button) on the mobile phone. [0021] In some aspects, the mobile phone may provide an instruction to the laptop via the stream, e.g., to instruct the laptop to release the headset from its Bluetooth connection. In this 25 way, the headset may now be able to establish a new connection with another device. As desired, the mobile phone may then establish a network connection with the headset and pick up where the laptop left off. In some examples, this may enable the user to seamlessly (or relatively seamlessly) transition from music being played from one device (e.g., at a desk) to the music being played from another device (e.g., while going for a walk), or from music 30 being played on one device to a phone call being answered via the other device. II. EXAMPLE SYSTEM [0022] FIG. 1 illustrates a simplified architecture diagram 100 depicting at least a first computing device 102, a second computing device 104, and at least one user device (or peripheral device) 106. As noted above, the peripheral device 106 may include, but is not 5 limited to, a headset, a pair of headphones, a speaker, a data transferring device, a media player, or the like). In some examples, the peripheral device 106 may be accessible to either or both of the first computing device 102 or the second computing device 104 via one or more networks 108 (e.g., a local area network (LAN), a wide area network (WAN), a personal area network (PAN), or any other wired or wireless network). Based at least in part 10 on the type of network 108 and/or the types of the devices 102, 104, 106, the network
connections may be persistent or may be temporal. [0023] In some examples, the first computing device 102 and the second computing device 104 may identify or otherwise request a network socket for establishing a stream of data 110 between the two devices 102, 104. For example, a particular network socket may be used to 15 enable direct streaming of data from the first computing device 102 to the second computing device 104. The streaming can be performed in a persistent manner as long as the two devices 102, 104 remain within a desired physical range of one another. For example, the two devices 102, 104 may stream 110 data through the networks 112, the networks 108, and/or a combination of the two. 20 [0024] In some cases, the networks 108 and 112 may actually be the same network. As noted above, the first computing device 102 and/or the second computing device 104 may be any types of computing devices including, but not limited to, a laptop, a mobile phone, a wearable device (e.g., a smart watch, smart glasses, a smart wristband, or a smart wallet), a tablet, or the like. Further, the first computing device 102 and the second computing device 25 104 may use the stream 110 to transmit configuration and/or state information about the
peripheral device 106. For example, the stream 110 may be used to communicate network connection termination instructions, call answering instructions, call transferring instructions, device pairing and/or connection instructions, or the like. [0025] As noted, in some cases, the peripheral device 106 may be: (1) paired and
30 connected to one device, (2) paired to multiple devices but connected to only one at a time, or (3) paired and connected to one or more devices. The first type listed above, Type 1 peripheral devices (e.g., paired and connected to one device), may only allow pairing to a single device. Pairing the Type 1 peripheral to a new device may cause the peripheral to forget about the previous pairing. For this type of peripheral, switching from a new device to a previously paired device might require a manual re-pairing with the previously paired device. The second type listed above, Type 2 peripheral devices (e.g., paired to multiple 5 devices but connected to only one at a time) may allow pairing to multiple devices; however, they can only connect to one of the paired devices at a time. The third type listed above may divided into two separate types, Type 3 and Type 4 peripheral devices (e.g., paired and connected to one or more devices). Type 3 and Type 4 devices may allow multiple pairings and multiple connections. However, Type 3 devices may experience a multi-second delay 10 when switching the connection between paired devices. On the other hand, Type 4 devices may switch connections between paired devices without any perceivable delay. The first computing device 102 and/or the second computing device 104 may be configured to probe the peripheral device 106 to identify its capabilities. For example, the first computing device may utilize a probing sequence for such a determination, thus enabling faster switching 15 between paired devices (e.g., when it is detected that the peripheral 106 is a Type 4 device).
The probing may be performed in advance of any incoming calls. This may allow for faster switching when desired. In other examples, the probing can be performed after the first computing device 102 is paired and connected. [0026] In some cases, if the peripheral 106 is manufactured by the same manufacturer of 20 the first computing device 102 or the second computing device 104, a flag may be included in the peripheral 106 so that if the flag is detected, the probing may not be performed, because the capabilities of the peripheral 106 will be known. Additionally, a device identifier (ID) may be provided, such that the first computing device 102 or the second computing device 104 may look up the capabilities of the peripheral 106 in a table or other data structure.
25 However, as noted above, when the type of the peripheral 106 is not known in advance, the type and/or capabilities of the peripheral 106 may be identified by a probing scheme of two devices. For example, a first device may pair with the peripheral 106. Once paired, the second device may attempt to pair with the peripheral 106. If the pairing between the first device and the peripheral is lost at this point, the two devices may have identified a Type 1 30 device. Additionally, if the first device remains paired when the second device connects, but the first device cannot also connect while the second device is connected, the two devices may have identified a Type 2 device. Also, the probing scheme may identify a Type 3 or Type 4 device if both devices are capable of being connected to the peripheral 106 at the same time (e.g., at t0 the first device pairs with the peripheral 106, at t1 the second device pairs with the peripheral 106, at t2 the first device connects to the peripheral 106, and at t3 when the second device connects to the peripheral 106, the first device maintains its connection). At least because the two devices are in communication with one another (e.g., 5 via the established stream of data 110), they are able to deduce the type of the peripheral 106 by sharing the results of the probing schemes described above. [0027] In some aspects, the first computing device 102 may be configured to establish a network connection with the peripheral device 106. Once paired and connected, the first computing device 102 may be able to provide content to the peripheral 106 via the
10 established connection. For example, the first computing device 102 may provide music for the peripheral 106 to play or otherwise present to the user. In some examples, if a telephone call arrives at the second computing device 104 while the first connection 114 is being used for playing music, the two devices 102, 104 may determine which of the two devices 102, 104 should provide the call to the peripheral 106. In one example, the call could be routed to 15 the first computing device 102 since it is already paired and connected via the network
connection 102. However, the call could stay with the second computing device 104 and be routed to the peripheral 106 via a second network connection 116. In some cases, the determination of which device 102, 104 to use for providing the call to the peripheral 106 (and, thus, receiving the call to be provided) may be made based at least in part on historical 20 user information (e.g., which device 102, 104 the user typically uses for calls), preferences (e.g., which device 102, 104 the user prefers based at least in part on a configuration setting), usage patterns (e.g., which device 102, 104 was the user using last), and/or battery concerns (e.g., which device 102, 104 has more battery life remaining or which device 102, 104 uses less batter power to provide calls). 25 [0028] In some examples, once the determination of which device 102, 104 is to be
connected, the two devices 102, 104 may communicate configuration information, instructions for switching devices 102, 104, and/or metadata associated with the currently active network connection 114, 116. For example, if the first computing device 102 is paired and connected to the peripheral 106, but the devices 102, 104 determine that the second 30 computing 104 should provide an incoming phone call (or other content), several instructions may be provided via the stream 110. That is, the second computing device 104 may provide a connection termination instruction to the first computing device 102 via the stream 110. Either before, simultaneously, or sometime after, the second computing device 104 may also begin polling the peripheral device 106 in order to pair. Once, the first computing device 102 has released the first network connection 114, the peripheral device 106 may be able to pair and connect with the second computing device 104 via the second network connection 116. The second computing device 104 may then be able to provide the call to the peripheral 5 device 106. In some examples, the first computing device 102 may be able to identify when and/or that the second network connection 116 has been established between the peripheral device 106 and the second computing device 104. For example, either or both of the peripheral device 106 and the second computing device 104 may provide information to the first computing device 102 that indicates the establishment of the second network connection 10 116. Alternatively, or in addition, the first computing device 102 may be able to detect the second network connection 116 (e.g., by packet sniffing or the like) on its own, or the first computing device 102 may be configured to cause the establishment of the second network connection 116 (e.g., by providing instructions to the peripheral device 106 to pair and connect with the second computing device 104. 15 [0029] At an even higher level, the features described herein can enable two devices (e.g., the first computing device 102 and the second computing device 104) that are connected and working together (e.g., in tandem) to share a third device (e.g., the user device 106). In some cases, events may come into either or both of the first computing device 102 or the second computing device 104, and the two devices may be configured to determine which of the two 20 devices 102, 104 should alert the user device 106 of the incoming event (e.g., when both devices 102, 104 receive the same event information). Both devices 102, 104 may be configured to know the state of the other, as well as the state of the user device 106, and may be further configured to command audio (or other event information) routing and policies of the set of devices 102, 104, 106. 25 III. EXAMPLE FLOW [0030] FIG. 2 illustrates a simplified block diagram 200 depicting a connection flow associated with the first computing device 102, the second computing device 104, and the user (or peripheral) device 106 of FIG.1. In some examples, as noted above, the first computing device 102 and the second computing device 104 may establish a data stream for 30 communicating with one another. The data stream may be initiated, established, and/or maintained by either of the first or second computing devices 102, 104. The data stream may then be used by the two devices 102, 104 to communicate with each other about the state and/or configuration of network connections with the user device 106. For example, the first computing device 102 may communicate any network connections that it has with the user device 106 or with other devices to the second computing device 104 over the data stream. [0031] The first computing device 102 may also be configured to establish a first
5 connection with the user device 106. This first connection may be utilized by the first
computing device 102 to provide content to the user device 106. For example, the first computing device 102 may provide an audio track to the user device for presentation to the user. In some examples, the second computing device 104 may receive a data request (e.g., from a user) or other indication that data may be requested to be provided from the second 10 computing device 104 to the user device 106. For example, a telephone call may come into the second computing device 104 while the user is listening to the audio track via the user device 106. Even though the audio track is being provided to the user device 106 by the first computing device 102, the user may wish to answer the call from the second computing device 104. The data request may be the request to answer the call from the second
15 computing device 104 (via the user device 106). [0032] In order to provide the call to the user device 106, the two source devices 102, 104 may first communicate with one another via the data stream to configure the appropriate connections. For example, the second computing device 104 may provide configuration information to the first computing device 102 via the data stream. The configuration
20 information may include instructions for ending the first network connection that is being used by the first computing device 102 to provide the audio track. Based at least in part on this configuration information, the first computing device 102 may then terminate the first data connection so that the second computing device 104 can subsequently establish a second network connection with the user device 106. Once the second network connection is 25 established, the second computing device 104 may be able to provide content (e.g., the call) to the user device 106. IV. SEQUENCE DIAGRAM [0033] FIG. 3 illustrates a simplified network flow diagram 300, for describing at least one use case for the techniques described herein. In some examples, the flow diagram represents 30 requests, application programming interface (API) calls, connections, etc., made by one or more computing devices. In one example, a first source 302 may request a network socket 304 for creating a persistent stream with a second source 306. The first source 302 and the second source 306 may be computing devices configured to manage a shared resource (e.g., a user or peripheral device 308), similar to the first computing device 102 and the second computing device 104 of FIGS. 1 and 2. Additionally, the user device 308 may be configured to provide presentation of content to a user, where the content was provided to the user 5 device 308 from one of the first source 302 or the second source 306. In some examples, the second source 306 may establish the stream 310 with the first source 302. As noted above, this stream may enable the two sources 302, 306 to manage the connections of the user device 308. [0034] The first source 302 may receive a data request 312 (e.g., a request from a user to 10 provide data to the user device 308) or an event (e.g., an indication of incoming call or a calendar appointment). At least in response to a first connection request from the first source 302, the user device 308 may approve the connection request 314 and then the first sources 302 may establish the first network connection 316. The order of these operations may be actually be performed in a variety of different ways (e.g., with or without the initial request 15 for the connection from the first source 302). [0035] Using a Bluetooth network connection, the first source 302 may first attempt to pair with the user device 308 by polling (e.g., sending a request and waiting for a response). In this example, a connection may be established (not necessarily“by” either device) once the user device 308 responds with an acceptance of the request. However, in other examples, the 20 user device 308 may always be pairable with the first source 302, in which case the first source 302 may simply establish a connection with the user device 308 upon completion of the data request 312 or receipt of an event. In some aspects, once the first network connection is established 316, the first source 302 may provide content (e.g., an audio file, portions of an audio file, a telephone call, a notification of an event or calendar appointment, etc.) 318 to the 25 user device 308 via the first network connection 316. [0036] In some cases, the second source 306 may, at some point, receive a second or new data request 320. Similar to the data request 312, the second data request 320 received by the second source 306 may include, but is not limited to, a request from a user to provide content of the second source, an event received by the second source 306, or the like. The second data 30 request 320 may also include a request from a user to switch content sources (e.g., from the first source 302 to the second source 308). That is, the user may navigate to a settings user interface (UI) of the second source 308 (e.g., a network connections control UI) and request that the second source 308 become the source of content for the user device 308. Upon receipt of this data request 320, the second source 306 may be configured to take over control of the user device 308. As such, the second source 306 may provide configuration
instructions 322 to the first source 302 using the established stream 310. The configuration 5 instructions may include, among other things, an instruction to release or terminate the first network connection 316, metadata associated with a state of the first network connection 316 and/or the use device 308, instructions for the first source 302 to stop providing content (e.g., pause an audio track), or the like. [0037] In one example, the configuration instructions 322 may instruct the first source to 10 terminate the first connection 316 and provide metadata about the state of the user device 308 and/or the content being provided 318. The first source 302 may provide metadata 324 to the second source (e.g., a location of a song being played by the user device 308) via the stream 310. Based at least in part on the provided instructions 32, the first source 302 may terminate the firs network connection 326 with the user device, thus, freeing up the user device 308 for 15 other connections (e.g., a connection with the second source 306). Here, much like the
establishment of the first connection, the user device 308 may (or may not need to) approve a connection request 328 from the second source 306. The second source 306 (or the user device 308) may then establish the second network connection 330, and the second source 306 may then provide content 332 to the user device 308 via the second connection 330. 20 V. EXAMPLE METHOD [0038] FIG. 4 illustrates an example flow diagram showing a process 400 for managing user device connections, according to at least a few embodiments. This process is illustrated as a logical flow diagram, each operation of which represents a sequence of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the 25 context of computer instructions, the operations may represent computer-executable
instructions stored on one or more non-transitory computer-readable storage media that, when executed by one or more processors, perform the recited operations. Generally, computer- executable instructions include routines, programs, objects, components, data structures and the like that perform particular functions or implement particular data types. The order in 30 which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be combined in any order and/or in parallel to implement the processes. [0039] Additionally, some, any, or all of the processes may be performed under the control of one or more computer systems configured with specific executable instructions and may be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) executing collectively on one or more processors, by hardware, or 5 combinations thereof. As noted above, the code may be stored on a non-transitory
computer-readable storage medium, for example, in the form of a computer program including a plurality of instructions executable by one or more processors. In some examples, the first computing device 102 shown in FIG. 1 may perform the process 400 of FIG. 4. Additionally, the following description is from the perspective of the first device 102 but it is 10 to be understood that the method could be performed by the second device 104 instead, in which case, references to the“second” computing device would refer to either first device 102 or a third device different from either the first or second devices 102, 104. [0040] At block 402, a data stream between a first device a second computing device can be maintained. In some examples, this process may be executed or performed by a mobile 15 phone of the user, while the second computing device with which a stream is being
maintained is a different mobile device of the user (e.g., a laptop, tablet, or the like). As noted, the maintained stream may enable the mobile phone and the different mobile device to manage a peripheral device (e.g., a headset or the like) as a shared resource. In some aspects, the different mobile device of the user (e.g., the second computing device in this example) 20 may be a wearable device such as, but not limited to, smart glasses, a smart watch, or the like). [0041] At block 404, a first network connection between the second computing device and the user device can be identified. For example, the wearable device may already be connected to the headset (e.g., streaming music or other content to the headset). As such, at 404, the 25 mobile phone may be made aware of the first connection based at least in part on data shared via the stream that was maintained at 402. [0042] At 406, an event that identifies content to be transmitted to the user device may be received. In some cases, the content may be a telephone call received by either or both of the mobile device or the mobile phone and the event may be a notification that the call is being 30 received. In other scenarios, the content may be a song that the user wishes to play from the mobile phone (e.g., that may not be stored locally on the wearable device) and the event may be a notification of a request to play the song. Additionally, the content may be a calendar appointment and the event may be a signal indicating that the calendar appointment is occurring or will occur soon. [0043] At 408, instructions for configuring the first network connection to the second computing device may be provided. This instruction may be provided via the stream that is 5 maintained at 402. As such, it should be understood that the stream maintained at 402 may be maintained persistently so long as the mobile phone and the wearable device remain within a threshold distance of each other. In some aspects, the instructions for configuring the first network connection may include an instruction to terminate the first network connection or for the wearable device to otherwise release the headset from its connection. The instructions 10 may also include an instruction to provide metadata via the maintained stream. The metadata may identify information about the first network connection including, but not limited to, a track that is playing on the headset, a playing position in the track that is playing on the headset, a volume of the headset, or the like. [0044] At 410, the content may be provided to the user device via a second connection 15 between the mobile phone and the headset. In other words, if the event indicates an incoming call, the instructions of 408 may terminate the connection between the wearable device and the headset, and the mobile phone may then establish the second connection with the headset. The mobile phone may then source or otherwise provide the incoming telephone call to the headset. 20 [0045] In some examples, if the headset is paired and connected to both the mobile phone and the wearable device, and the user is listening to music from either, the mobile phone and/or the wearable device may attempt to determine which device should send an incoming telephone call to the headset. At may be that both the mobile phone and the wearable device are notified when a call comes in. However, it may be desired that only one of the two 25 devices route the call to the headset. As such, in some cases, if both the mobile phone and the wearable device are within range of the other, the phone may cause the headset to ring and the wearable device may suppress the ring. [0046] This direction (e.g., the determination to have the mobile phone provide the ring instead of the wearable device) may be based at least in part on power advantages realized by 30 having the phone route the call. For example, the phone might have more battery power or might use less battery power to route calls. However, in some examples, the two devices may decide to have the wearable device route the call based at least in part on a determination that the wearable device has more remaining battery life, or a higher percentage of total battery life remaining. In other examples, if the wearable device is out of range of the mobile phone and/or is in stand-alone mode (e.g., not paired with the mobile device), the wearable device may route the call to the headset without even notifying the mobile phone. In some cases, the 5 mobile phone may act as the arbitrator for the two devices, making routing decisions for events that are received at both the mobile phone and the wearable device (or other connected peripheral). [0047] Additionally, in some examples, a telephone call may be transferred from the wearable device to the mobile device (e.g., the routing of the call to the headset may be 10 switched from the wearable device to the mobile device) by providing an icon on a user interface (UI) that identifies the connection and/or the wearable device. By sliding the icon, the user may be able to cause the call to be transferred from the wearable device to the mobile phone (but still sent to the headset). [0048] Other use cases include when a user is listening to music on the wearable device 15 and a call comes in, the user may be able to tap an icon on the wearable device and cause the music to pause or duck, thereby allowing the user to hear the incoming call. This may be implemented by having the call sent from the wearable device or from the mobile phone to the headset. In the former scenario, the wearable device would be configured to pause or duck the music temporarily while providing the call. However, I the latter scenario, the 20 mobile phone may be configured to provide an instruction via the stream to the wearable device, instructing the wearable device to pause or duck the music and/or to give up the connection with the headset so that the mobile phone may connect and provide the call. [0049] As noted, using the stream between the mobile phone and the wearable device, or between any two connectible user devices, the two devices may be able to know each other’s 25 available audio routes, current audio route, and whether audio is active. Using this
information, smart decisions may be made regarding which of the mobile device or wearable device should provide notifications and/or information. For example, if the wearable device is actively playing music on a headset, the system may assume that the user last interacted with the wearable device. In this case, if a call or other notification came in, the system may 30 determine to provide the call or other notification via the wearable device regardless of
battery or other optimization concerns. [0050] As noted, using the stream between the mobile phone and the wearable device, or between any two connectible user devices, the two devices may be able to know the active audio routes of each of the two devices with respect to the headset. Using this information, smart decisions may be made regarding which of the mobile device or wearable device 5 should provide notifications and/or information. For example, if the wearable device is
actively playing music on the headset, the system may assume that the user last interacted with the wearable device. In this case, if a call or other notification came in, the system may determine to provide the call or other notification via the wearable device regardless of battery or other optimization concerns. 10 [0051] Other data such as, information that identifies interaction with a screen, information that identifies whether a screen is on, or other the like, may be utilized to predict which device (e.g., the wearable device or the mobile phone) the user is actively using. As noted, this information can be used to determine which device should manage the headset. Routing decisions of incoming events may also be determined based at least in part on the type of 15 event it is, whether it has a sound, etc. [0052] Other decisions, as noted, may be based at least in part on power management decisions. In some cases, the power management decisions may be made by an external service. However, the routing decisions of this system may be based at least in part on those power management rules. In one non-limiting example, if a user switches music being played 20 on a headset from a first device to a second device for a particular reason. At some point, the system may automatically revert the connection back to the device with the best power efficiency. In some cases, the switch may only be made automatically when the user stops or pauses playback; however, in other cases it might be done when the connected device appears to be running out of (or low on) power (e.g., once a threshold remaining power level is 25 reached). VI. MANAGEMENT OF CONNECTIONS [0053] FIG. 5 illustrates an example architecture 500 for implementing the management of connections of a user device that includes the first computing device 102 and the second computing device 104, as well as the user device (or peripheral) 106 of FIG 1. In some 30 examples, as noted above, the devices may be connected via one or more networks 108
and/or 112 (e.g., via Bluetooth, BTLE, or the like). In architecture 500, one or more users may utilize the first computing device 102 and/or the second computing device 104 to manage, control, or otherwise utilize one or more user devices 106, via one or more networks 108. [0054] While the illustrated example represents the computing devices 102, 104 accessing the peripheral device 106 via the networks 108 and/or 112, the described techniques may 5 equally apply in instances where the computing devices 102, 104 interact with the user device 106 over a landline phone, via a kiosk, or in any other manner. It is also noted that the described techniques may apply in other client/server arrangements, as well as in non- client/server arrangements (e.g., locally stored applications, peer to peer configurations, etc.). [0055] As noted above, the first and second computing devices 102, 104 may be configured 10 to receive events, communicate with one another through the stream 110 (e.g., via the
networks 112), and manage routing of information between the two devices 102, 104 and the user devices 106. In some examples, the computing devices 102, 104 may be in
communication with each other via the networks 112, or via other network connections. [0056] In one illustrative configuration, either or both of the computing devices 102, 104 15 may include at least one memory 514 and one or more processing units (or processor(s)) 516.
The processor(s) 516 may be implemented as appropriate in hardware, software (e.g., computer-executable instructions, firmware, etc.), or combinations thereof. Computer- executable instruction or firmware implementations of the processor(s) 516 may include machine-executable instructions written in any suitable programming language to perform the 20 various functions described. The computing devices 102, 104 may also include geo-location devices (e.g., a global positioning system (GPS) device or the like) for providing and/or recording geographic location information associated with the computing devices 102, 104. [0057] The memory 514 may store program instructions that are loadable and executable on the processor(s) 516, as well as data generated during the execution of these programs. 25 Depending on the configuration and type of mobile device 102, the memory 514 may be volatile (e.g., random access memory (RAM)) and/or non-volatile (e.g., read-only memory (ROM), flash memory, etc.). The mobile device 102 may also include additional removable storage and/or non-removable storage including, but not limited to, magnetic storage, optical disks, etc. The disk drives and their associated non-transitory computer-readable media may 30 provide non-volatile storage of computer-readable instructions, program modules, data
structures, and other data for the computing devices. In some implementations, the memory 514 may include multiple different types of memory, such as RAM, static random access memory (SRAM), dynamic random access memory (DRAM), or ROM. While the volatile memory described herein may be referred to as RAM, any volatile memory (e.g., that does not maintain data stored therein once unplugged from a host and/or power) would be appropriate. 5 [0058] The memory 514 and the additional storage 526, both removable and non- removable, are all examples of non-transitory computer-readable storage media. The memory 514 and the additional storage 526 are all examples of non-transitory computer storage media. Additional types of computer storage media that may be present in the computing devices 102, 104 may include, but are not limited to, phase-change RAM (PRAM), SRAM, 10 electrically erasable programmable read-only memory (EEPROM), flash memory, compact disc read-only memory (CD-ROM), digital video disc (DVD), magnetic cassettes or tape, magnetic disk storage, or any other medium that can be used to store the desired information and that can be accessed by the computing devices 102, 104. Combinations of any of the above should also be included within the scope of non-transitory computer-readable media. 15 Alternatively, computer-readable communication media may include computer-readable instructions, program modules, or other data transmitted within a data signal, such as a carrier wave, or other transmission. However, as used herein, computer-readable storage media does not include computer-readable communication media. [0059] The computing devices 102, 104 may also contain communications connection(s) 20 528 that allow the computing devices 102, 104 to communicate with a data store or another computing device via the networks 108. The computing devices 102, 104 may also include input/output (I/O) device(s) 530, such as a keyboard, a mouse, a pen, a voice input device, a touch input device, a display, speakers, etc. [0060] Turning to the contents of the memory 514 in more detail, the memory 514 may 25 include an operating system 532 and/or one or more application programs or services for implementing the features disclosed herein (e.g., the process 400 of FIG. 4) including a stream module 534, a connection module 536, and/or a content module 538. In some examples, the stream module 534 may be configured to establish and/or manage a stream (e.g., a persistent Bluetooth connection) between the first computing device 102 and the 30 second computing device 104, such as the stream 110 of FIG. 1. The stream 110 may, in some cases, be established via a network socket when the two devices 102, 104 are within a specific range of one another. The specific range may be defined by the type of network socket, connection, and/or protocol used for the stream 110. For example, if Bluetooth has an effective range of four or five meters, then the stream 110 may be persistent as long the first computing device 102 and the second computing device 104 are within four or five meters of each other. However, in other examples, no specific range may be necessary, as the two 5 devices 102, 104 may set up a stream 110 while they are both connected to a single network (e.g., a LAN or the like). Further, in some examples, the stream module 534 may be configured to manage the communications over the stream 110 by the two computing devices 102, 104. These communications may include, but are not limited to, providing state information, connection information (e.g., connections of the user devices 106), and/or any 10 other information that may enable or aid the two computing devices 102, 104 is managing the shared resource and/or routing events, audio, etc., to the user devices 106. [0061] In some examples, the connection module 536 may be configured to manage or otherwise control secondary connections of the computing devices 102, 104. For example, secondary connections may include connections with computing devices other than the first 15 and second computing devices 102, 104. That is, when the first computing device 102
connects with a peripheral device 106, this may be considered a secondary connection for the first computing device 102. Similarly, a secondary connection of the second computing device 104 may include one with the user device 106. Secondary connections (e.g., a first network connection between the first computing device 102 and the user device 106 or a 20 second network connection between the second computing device 104 and the user device 106) may be utilized by the first and second computing devices 102, 104 to provide event information, audio signals, and/or other data to the user devices 106. [0062] In some examples, the secondary connections managed by the connection module 536 may be initiated by the first or second computing devices 102, 104 and/or by the user 25 devices 106. For example, the first computing device 102 may send a request to establish a first network connection with the user device 106 using the connection module 536. It may then wait until it receives a response from the user device 106 (e.g., a handshake to establish a connection), an indication from a user to quit waiting, information from the stream 110 to quit waiting, or a timeout signal (e.g., indicating that the first computing device should not 30 wait any longer). As noted above, the first and second computing devices 102, 104 may
communicate via the stream 110 (e.g., utilizing the stream module 534) to provide each other with connection information (e.g., the first computing device 102 may instruct the second computing device 104 to end a connection with the user device 106) for managing the connections of the user device 106. [0063] In some examples, the content module 538 may be configured to store, mange, and/or provide content to the user devices 106 via the secondary connections managed by the 5 connection module 536. For example, the content module 538 may be configured to receive content (e.g., a telephone call, a song, a video, etc.) and provide the content to the user device 106. If the content is a song, the content module 538 may be responsible for storing the song locally, preparing the song for transmission, and then providing the song to the user device via the secondary connection. In other examples, the content may be a call, and the content 10 module 538 may be configured to provide the audio of the call to the user device 106 (e.g., a headset). VII. COMMUNICATION STACK ON MOBILE DEVICE [0064] The communication of data from a device (e.g., the first computing device 102, the second computing device 104, and/or the user devices 106 of FIG. 1) can occur through 15 various protocols (e.g., 802.11 protocols, Bluetooth protocols, and near field communication (NFC) protocols). To determine which protocol to use, a device can include a link manager for determining which protocol to use for a particular application, and thus which driver path data should be sent. A lower level link layer can also perform selections of a particular protocol to use. Further, a user tunnel (UTUN) controller can coordinate a plurality of virtual 20 connections with various client applications to communicate over a common socket
connection with another device (e.g., the first computing device 102 communicating with the second computing device 104). [0065] FIG. 6 shows a protocol stack 600 for communicating data according to some examples. Various modules in protocol stack 600 can be omitted, or other modules added. 25 The software modules can be run on a same processor or different processors. Although only a few communication protocols are listed, numerous wireless protocols can be used. For example, Bluetooth protocols can include Basic Rate (BR), Enhanced Data Rate (EDR), and Low Energy (LE) options. Bluetooth BR/EDR is also referred to as Classic Bluetooth. [0066] In some embodiments, a client application 605 on the device (e.g., mobile device 30 115) can request data to be sent to another device (e.g., companion device 120). The request can specify the other device via any suitable identifier, e.g., an account name, an IP address, a MAC address, etc. The request can be before or after the device determines that the other device is within communication, e.g., as determined by initial signaling, such as a handshake. The data (e.g., in a message or a stream) can be sent any suitable application layer protocol, such as HTTP, RTP, SMTP, MGCP, etc. The other device can be any device, including 5 another device of the user. The request can made be in response to an action by the user, an internal event (e.g., based on time or other criteria) that may be in a same or other application (e.g., a calendar app), or an external event (e.g., in response to a message from another device). An example of an event is a syncing event. [0067] Before sending data, client application 605 can submit an open socket request (e.g., 10 in a streaming example). The socket request can use information from an identity services (IDS) framework 615, which can provide an address (or other type of ID) for the other device. For example, client application 605 can know account information for the second device (e.g., account information of a different or same user), and IDS framework 615 can store a list of device IDs for a particular account. IDS framework 615 can be in
15 communication with identity management infrastructure 105 to obtain the list. Thus, IDS framework 615 can store or otherwise obtain device IDs (e.g., addresses) for all devices that a user has registered with ID infrastructure 105. For example, IDS framework 615 can request via an IDS daemon to ID infrastructure 105 to obtain the device IDs. In one implementation, the socket request can be made to kernel 610. 20 [0068] In a messaging example, the request to send data can go to IDS framework 615 to obtain a device ID, which can be sent to message a message controller 618 and a user tunnel (UTUN controller 620). UTUN controller can establish a mapping between the device ID and an IP address (e.g., a virtual IP address) when the device ID is not an IP address. A socket can be created between message controller 618 (which assigns a device ID to the socket) and 25 kernel 610 (which can assigns an address to the socket, such as a virtual IP address). UTUN controller can be used to create the socket connection between message controller 618 and kernel 610. In this manner, the send-date request from client application 605 does not need to include a device ID, but can specify an account, which can then be cross-referenced by IDS framework 615 with known devices of the account and their capabilities (e.g., if the request 30 requires certain capabilities). Given that a device ID can be obtained, a pairing does not need to occur prior to creating the socket. [0069] In various embodiments, IDS framework 615 can receive a particular port/service at the other device from client application 605, determine the port/service based on information obtained from an ID infrastructure, or determine the port/service from a token sent in the request. IDS framework 615 can then communicate a device ID and other header information 5 to message controller 618 and/or UTUN controller 620. IDS framework 615 and UTUN
controller 620 can communicate via cross process communication (XPC). UTUN controller 620 can be part of an IDS daemon, and can receive a device ID from ID infrastructure 105. [0070] As mentioned above, UTUN controller 620 can create a virtual address that corresponds to the actual device address, where the virtual address can be used to create a 10 virtual socket. A virtual socket can also be created using any device ID (e.g., an actual
address of a device or other ID). As an example, a socket can be created for communication between client application 605 and kernel 610 (e.g., in a streaming context), where kernel 610 can have various sockets open with various client applications. Kernel 610 can have a single connection to UTUN controller 620 for the other device and multiplex (mux) the data from 15 various client applications into the single connection. Instead or in addition, UTUN controller 620 can also perform the muxing, e.g., if multiple socket exist between kernel 610 and UTUN controller 620 for various client applications to the other device. Incoming data can be demultiplexed (demuxed) for sending to the destination client application. [0071] As another example, a socket can be created between kernel 610 and message 20 controller 618 (e.g., in a messaging context), where a socket can be created for each
destination device, with different sockets to a same device potentially having different priorities. Thus, a particular virtual socket can be associated with a particular device and a particular priority (e.g., high and low). Message controller 618 can have various connections to various client applications. Thus, message controller 618 can provide mux/demux
25 capabilities. [0072] UTUN controller can create a primary socket with the other device. When UTUN controller 620 receives data using a virtual connection associated with the second device, it can then map the virtual connection to the primary socket for communicating with the other device. All data for the other device can then be sent out through the primary socket. The 30 virtual address for a virtual socket can be passed back to client application 615, e.g., in the stream context. In one embodiment, a virtual socket involving kernel 610 is a TCP socket. The virtual address can have a same format as a regular address, e.g., an IPv6 address. A mux module can include any combination of kernel 610, message controller 618, and UTUN controller 620. [0073] When client application sends data, client application 605 can use the virtual socket to send data to kernel 610. For example, the data can be sent using TCP via the virtual socket. 5 Kernel 610 can implement an UTUN interface for communicating with UTUN controller 620. Kernel 610 would pass the data (e.g., with a TCP header) and the virtual socket identifying the virtual address to UTUN controller 620, which would then use the virtual address to resolve the device address for determining the device socket. [0074] When sending to the data over the device socket, a link manager 625 can determine 10 which link to use. A link can be a particular combination of a wireless interface protocol (e.g., Bluetooth or Wi-Fi) and a transport protocol (e.g., TCP, UDP, etc.). In this manner, UTUN controller 620 does not need to know how the data is being sent, but instead can simply send the data to link manager 625. [0075] In various embodiments, the determination by link manger 625 can be made per 15 data packet, per set of data packets, per device socket, and may change from one data packet to another. Link manager 625 may then select a link for sending the data. In the example shown, a Wi-Fi link 630 provides software drivers for communicating with one or more Wi- Fi protocols, and BTLE link 635 provides software drivers for communicating with Blutooth LE. Wi-Fi link 630 is in communication with Wi-Fi hardware 660, and BTLE link 635 is in 20 communication with BTLE hardware 655. Wi-Fi link 630 can be used for various Wi-Fi protocols, such as infra-WiFi (infrastructure WiFi). In one embodiment, link manager 625 can try all links to determine whether any of the links can contact the other device, and then use a connected link with a highest predetermined rank or dynamic rank. [0076] In some embodiments, a combined link 640 can include an interface 644 for 25 communicating with link manager 625 and a selector 648 that selects a particular protocol to use. The protocols can be the same or different than that available to link manager 625.
Selector 648 can perform similar functions as link manager 625 in that a particular link is selected. However, link manager 625 and selector 648 can use different criteria for determining which link to use. For example, link manager 625 can determine to use
30 combined link 640, and selector 648 can then determine that BTLE hardware 655 is to be used. The hardware can be contained on a same or separate chips. [0077] One or more protocols can be only available via combined link 640, such as classic Bluetooth hardware 650. Link manager 625 and selector 648 can use various criteria for determining which link to use, such as power usage of a link, speed of a link (e.g., real-time data rate), and signal strength of a link. A goal of the optimization for selecting a link can be 5 to provide a minimal data rate at a lowest possible energy. [0078] Illustrative methods and systems for managing user device connections are described above. Some or all of these systems and methods may, but need not, be
implemented at least partially by architectures such as those shown at least in FIGS. 1-6 above. In the foregoing description, various non-limiting examples were described. For 10 purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the examples. However, it should also be apparent to one skilled in the art that the examples may be practiced without the specific details. Furthermore, well- known features were sometimes omitted or simplified in order not to obscure the example being described. 15 [0079] The various embodiments further can be implemented in a wide variety of operating environments, which in some cases can include one or more user computers, computing devices or processing devices which can be used to operate any of a number of applications. User devices (e.g., client devices) can include any type of general purpose personal computer such as, but not limited to, desktop or laptop computers running a standard operating system, 20 as well as cellular, wireless, and/or handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. These devices can also include other electronic devices, such as dummy terminals, thin-clients, gaming systems, or other devices capable of communicating via a network. [0080] Most embodiments utilize at least one network that would be familiar to those25 skilled in the art for supporting communications using any of a variety of commercially- available protocols, such as TCP/IP, OSI, FTP, UPnP, NFS, CIFS, and AppleTalk. The network can be, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, and any combination thereof. 30 [0081] The environment can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers. Alternatively, the memory can be remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (SAN) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers or other network devices may be stored locally and/or remotely, as 5 desired. [0082] The system and various devices may also include one or more software
applications, modules, services, or other elements located within at least one working memory device, including an operating system and application programs, such as a client application or browser. It should be appreciated that alternate embodiments may have 10 numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software
(including portable software, such as applets) or both. Further, connection to other computing devices such as network input/output devices may be employed. [0083] The specification and drawings are, accordingly, to be regarded in an illustrative 15 rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the disclosure as set forth in the claims. [0084] Other variations are within the spirit of the present disclosure. Thus, while the disclosed techniques are susceptible to various modifications and alternative constructions, 20 certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the disclosure to the specific form or forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions and equivalents falling within the spirit and scope of the disclosure, as defined in the appended claims. 25 [0085] The use of the terms“a” and“an” and“the” and similar referents in the context of describing the disclosed embodiments (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms“comprising,”“having,”“including,” and “containing” are to be construed as open-ended terms (i.e., meaning“including, but not 30 limited to,”) unless otherwise noted. The term“connected” is to be construed as partly or wholly contained within, attached to, or joined together, even if there is something intervening. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein, and each separate value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. 5 The use of any and all examples, or exemplary language (e.g.,“such as”) provided herein, is intended merely to better illuminate embodiments of the disclosure and does not pose a limitation on the scope of the disclosure unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the disclosure. 10 [0086] Disjunctive language such as the phrase“at least one of X, Y, or Z,” unless
specifically stated otherwise, is otherwise understood within the context as used in general to present that an item, term, etc., may be either X, Y, or Z, or any combination thereof (e.g., X, Y, and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of 15 Z to each be present. [0087] Any of the methods described herein may be totally or partially performed with a computer system including one or more processors, which can be configured to perform the steps. Thus, embodiments can be directed to computer systems configured to perform the steps of any of the methods described herein, potentially with different components
20 performing a respective steps or a respective group of steps. Although presented as numbered steps, steps of methods herein can be performed at a same time or in a different order.
Additionally, portions of these steps may be used with portions of other steps from other methods. Also, all or portions of a step may be optional. Additionally, any of the steps of any of the methods can be performed with modules, circuits, or other means for performing these 25 steps. [0088] The specific details of particular embodiments may be combined in any suitable manner without departing from the spirit and scope of embodiments of the invention.
However, other embodiments of the invention may be directed to specific embodiments relating to each individual aspect, or specific combinations of these individual aspects 30 [0089] The above description of exemplary embodiments of the invention has been
presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form described, and many modifications and variations are possible in light of the teaching above. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. 5 [0090] All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein. Clause 1. A method, comprising:
managing a communication stream between a first device and a second device; establishing a first network connection between the first device and a headset; providing, by the first device, first audio content to the headset using the first network connection;
receiving, by the second device, an input that indicates a request to provide second audio content from the second device to the headset;
providing, by the second device using the communication stream, instructions for terminating the first network connection;
establishing, by the second device, a second network connection between the second device and the headset; and
providing, by the second device, second audio content to the headset using the second network connection. Clause 2. The method of clause 1, wherein the communication stream between the first device and the second device is configured to be persistent when the first device is within communication range of the second device. Clause 3. The method of clause 1, further comprising receiving, by the first device, a user input that indicates a different request to provide the first audio content from the first device to the headset prior to establishing the first network connection. Clause 4. The method of clause 3, wherein the first network connection is established based at least in part on the user input that indicates the different request to provide the first audio content from the first device to the headset. Clause 5. The method of clause 1, further comprising providing, by the first computing device to the second computing device via the communication stream, metadata associated with the first audio content at least in response to the at least one instruction to terminate the first network connection. Clause 6. The method of clause 5, wherein the second audio content is provided to the second computing device based at least in part on the metadata associated with the first audio content. Clause 7. A system, comprising:
a memory configured to store computer-executable instructions; and a first computing device in communication with the memory and configured to execute the computer-executable instructions to:
maintain a network stream with a second computing device;
establish a first network connection with a third computing device that is configured to present information to a user;
provide the information to the third computing device via the first network connection; and
receive, via the network stream, instructions to configure the first network connection. Clause 8. The system of clause 7, wherein the second network connection is enabled after ending the first network connection with the third computing device. Clause 9. The system of clause 7, wherein a network socket is configured to stream data about at least one of the first network connection or the second network connection between the first computing device and the second computing device. Clause 10. The system of clause 7, wherein the third computing device comprises at least one of a headset, an audio playback device, or a video playback device. Clause 11. The system of clause 10, wherein the headset is configured to be connectible to only one of the first computing device or the second computing device at a time. Clause 12. The system of clause 7, wherein the instructions to configure the first network connection include at least one instruction to end the first network connection. Clause 13. The system of clause 12, wherein the at least one instruction to end the first network connection is received from the second computing device. Clause 14. The system of clause 13, wherein the at least one instruction to end the first network connection is received based at least in part on a request from the user to provide data from the second computing device to the third computing device. Clause 15. The system of clause 14, wherein the second network connection enables the second computing device to provide the data to the third computing device. Clause 16. A computer-readable storage medium storing computer- executable instructions that, when executed by a first computing device, configure the first computing device to perform operations comprising:
maintaining a data stream between the first computing device and a second computing device;
identifying a first network connection between the second computing device and a user device via the data stream;
receiving an event that identifies content to be transmitted to the user device; providing to the second computing device, via the data stream, instructions to configure the first network connection; and
in response to the event, providing the content to the user device via a second network connection between the first computing device and the user device. Clause 17. The one or more computer-readable media of clause 16, wherein the instructions to configure the first network connection comprise at least an instruction to end the first network connection. Clause 18. The computer-readable medium of clause 16, wherein the user device comprises at least one of a wireless headset or a media player. Clause 19. The computer-readable medium of clause 16, wherein the event is received by the computer system and the second computing device. Clause 20. The computer-readable medium of clause 19, wherein the content comprises audio of a telephone call or information associated with a calendar appointment.

Claims

WHAT IS CLAIMED IS: 1. A method, comprising:
managing a communication stream between a first device and a second device; establishing a first network connection between the first device and a headset; providing, by the first device, first audio content to the headset using the first network connection;
receiving, by the second device, an input that indicates a request to provide second audio content from the second device to the headset;
providing, by the second device using the communication stream, instructions for terminating the first network connection;
establishing, by the second device, a second network connection between the second device and the headset; and
providing, by the second device, second audio content to the headset using the second network connection. 2. The method of claim 1, wherein the communication stream between the first device and the second device is configured to be persistent when the first device is within communication range of the second device. 3. The method of claim 1, further comprising receiving, by the first device, a user input that indicates a different request to provide the first audio content from the first device to the headset prior to establishing the first network connection. 4. The method of claim 1, further comprising providing, by the first computing device to the second computing device via the communication stream, metadata associated with the first audio content at least in response to the at least one instruction to terminate the first network connection. 5. The method of claim 4, wherein the second audio content is provided to the second computing device based at least in part on the metadata associated with the first audio content. 6. A system, comprising:
a memory configured to store computer-executable instructions; and a first computing device in communication with the memory and configured to execute the computer-executable instructions to:
maintain a network stream with a second computing device;
establish a first network connection with a third computing device that is configured to present information to a user;
provide the information to the third computing device via the first network connection; and
receive, via the network stream, instructions to configure the first network connection. 7. The system of claim 6, wherein the second network connection is enabled after ending the first network connection with the third computing device. 8. The system of claim 6, wherein a network socket is configured to stream data about at least one of the first network connection or the second network connection between the first computing device and the second computing device. 9. The system of claim 6, wherein the third computing device comprises at least one of a headset, an audio playback device, or a video playback device. 10. The system of claim 9, wherein the headset is configured to be connectible to only one of the first computing device or the second computing device at a time. 11. The system of claim 6, wherein the instructions to configure the first network connection include at least one instruction to end the first network connection. 12. The system of claim 11, wherein the at least one instruction to end the first network connection is received from the second computing device. 13. A computer-readable storage medium storing computer-executable instructions that, when executed by a first computing device, configure the first computing device to perform operations comprising: maintaining a data stream between the first computing device and a second computing device;
identifying a first network connection between the second computing device and a user device via the data stream;
receiving an event that identifies content to be transmitted to the user device; providing to the second computing device, via the data stream, instructions to configure the first network connection; and
in response to the event, providing the content to the user device via a second network connection between the first computing device and the user device. 14. The computer-readable medium of claim 13, wherein the event is received by the computer system and the second computing device. 15. The computer-readable medium of claim 14, wherein the content comprises audio of a telephone call or information associated with a calendar appointment.
EP15720230.0A 2014-05-30 2015-03-26 Managing connections of a user device Active EP3135024B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP18155906.3A EP3361698B1 (en) 2014-05-30 2015-03-26 Managing connections of a user device
EP20162058.0A EP3687137B1 (en) 2014-05-30 2015-03-26 Managing connections of a user device

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462005505P 2014-05-30 2014-05-30
US14/475,422 US9510083B2 (en) 2014-03-14 2014-09-02 Managing connections of a user device
PCT/US2015/022839 WO2015183393A1 (en) 2014-05-30 2015-03-26 Managing connections of a user device

Related Child Applications (2)

Application Number Title Priority Date Filing Date
EP18155906.3A Division EP3361698B1 (en) 2014-05-30 2015-03-26 Managing connections of a user device
EP20162058.0A Division EP3687137B1 (en) 2014-05-30 2015-03-26 Managing connections of a user device

Publications (2)

Publication Number Publication Date
EP3135024A1 true EP3135024A1 (en) 2017-03-01
EP3135024B1 EP3135024B1 (en) 2018-03-14

Family

ID=53040675

Family Applications (3)

Application Number Title Priority Date Filing Date
EP15720230.0A Active EP3135024B1 (en) 2014-05-30 2015-03-26 Managing connections of a user device
EP18155906.3A Active EP3361698B1 (en) 2014-05-30 2015-03-26 Managing connections of a user device
EP20162058.0A Active EP3687137B1 (en) 2014-05-30 2015-03-26 Managing connections of a user device

Family Applications After (2)

Application Number Title Priority Date Filing Date
EP18155906.3A Active EP3361698B1 (en) 2014-05-30 2015-03-26 Managing connections of a user device
EP20162058.0A Active EP3687137B1 (en) 2014-05-30 2015-03-26 Managing connections of a user device

Country Status (4)

Country Link
US (5) US9510083B2 (en)
EP (3) EP3135024B1 (en)
CN (3) CN111263006A (en)
WO (1) WO2015183393A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3840435A1 (en) * 2019-12-16 2021-06-23 Beijing Xiaomi Mobile Software Co., Ltd. Audio playing control method and device and storage medium

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9510083B2 (en) 2014-03-14 2016-11-29 Apple Inc. Managing connections of a user device
CN105208434A (en) * 2014-06-11 2015-12-30 阿里巴巴集团控股有限公司 Media projection method, media projection equipment, control terminal, and cloud server
KR102295516B1 (en) 2014-09-15 2021-08-31 후아웨이 테크놀러지 컴퍼니 리미티드 Communication method, communication system and relevant device of wearable device
KR102296184B1 (en) * 2014-10-01 2021-08-31 삼성전자주식회사 SCHEME FOR Communication AND transmitting discovery signal in MOBILE COMMUNICATION SYSTEM
CN105653013A (en) * 2014-11-10 2016-06-08 安徽华米信息科技有限公司 Multimedia play control method, device and system
US9819560B2 (en) * 2014-12-24 2017-11-14 Mediatek Inc. Dynamic data distribution method in private network and associated electronic device
US9743219B2 (en) * 2014-12-29 2017-08-22 Google Inc. Low-power wireless content communication between devices
US9716969B2 (en) * 2015-07-01 2017-07-25 Lg Electronics Inc. Method and apparatus for controlling device in wireless communication system
US9661117B2 (en) * 2015-07-16 2017-05-23 Plantronics, Inc. Wearable devices for headset status and control
USD793443S1 (en) * 2015-11-17 2017-08-01 Samsung Electronics Co., Ltd. Display screen or portion thereof with icon
KR102333138B1 (en) * 2016-02-19 2021-11-30 삼성전자주식회사 Apparatus and method for call forwarding in communication system
WO2017167273A1 (en) 2016-04-01 2017-10-05 腾讯科技(深圳)有限公司 Service processing method and apparatus
JP6700972B2 (en) * 2016-05-23 2020-05-27 キヤノン株式会社 Communication device, control method, and program
US10459684B2 (en) * 2016-08-05 2019-10-29 Sonos, Inc. Calibration of a playback device based on an estimated frequency response
US10715936B2 (en) 2016-10-12 2020-07-14 Sonova Ag Hearing device with wireless interface
EP3439274B1 (en) * 2017-08-04 2021-11-10 Nokia Technologies Oy Event notification
US11363440B2 (en) 2017-08-11 2022-06-14 Sonova Ag Communication device having a wireless interface
JP7063990B2 (en) * 2017-10-21 2022-05-09 アップル インコーポレイテッド Personal domain for virtual assistant system on shared device
US11490429B2 (en) 2018-02-13 2022-11-01 Apple Inc. Companion assistance and efficient link selection for wearable devices
GB2575970A (en) 2018-07-23 2020-02-05 Sonova Ag Selecting audio input from a hearing device and a mobile device for telephony
CN113225693B (en) * 2019-04-18 2022-04-15 华为技术有限公司 Bluetooth connection method, equipment and system
US10863397B2 (en) * 2019-05-08 2020-12-08 Apple Inc. Opportunistic use of the cellular capabilities of a paired device
US11233888B2 (en) * 2019-06-19 2022-01-25 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Communicating with a short-range wireless device over a local area network
KR20210034200A (en) * 2019-09-20 2021-03-30 삼성전자주식회사 Electronic device for audio, electronic device and method for managing communication link
CN111200783B (en) * 2019-12-30 2021-12-24 联想(北京)有限公司 Information processing method and device and multimedia equipment
CN112596907B (en) * 2019-12-31 2021-12-03 华为技术有限公司 Method for occupying equipment and electronic equipment
CN111464689A (en) 2020-01-22 2020-07-28 华为技术有限公司 Audio output method and terminal equipment
US11575781B1 (en) * 2020-02-04 2023-02-07 Salvador RODRIGUEZ Portable multifunction personal electronic device
US11042354B1 (en) * 2020-03-06 2021-06-22 Sony Corporation Audio adjustment control for wireless device
US11886628B2 (en) * 2020-05-07 2024-01-30 Google Llc Notification delivery based on context awareness
CN111641753B (en) * 2020-05-27 2021-07-06 维沃移动通信有限公司 Audio output control method and device, electronic equipment and readable storage medium
KR20220061740A (en) * 2020-11-06 2022-05-13 삼성전자주식회사 Electronic device for transmitting data via communication connection and method of operating the same
US11637880B2 (en) 2021-05-06 2023-04-25 Spotify Ab Device discovery for social playback
CN113853031B (en) * 2021-09-18 2024-04-02 雅迪科技集团有限公司 Helmet connection mode switching method and device
US11652890B1 (en) 2022-07-13 2023-05-16 Oxylabs, Uab Methods and systems to maintain multiple persistent channels between proxy servers

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5680549A (en) * 1994-12-30 1997-10-21 Compuserve Incorporated System for transferring network connections from first to second program where the first enters an inactive state and resumes control of connections when second terminates
US20070127645A1 (en) * 2000-01-19 2007-06-07 Sony Ericsson Mobile Communications Ab Technique for providing secondary information to a user equipment
JP4329232B2 (en) * 2000-06-08 2009-09-09 ソニー株式会社 Monitor system
US6714233B2 (en) * 2000-06-21 2004-03-30 Seiko Epson Corporation Mobile video telephone system
JP2002009903A (en) * 2000-06-23 2002-01-11 Kobe Steel Ltd Portable audio player having radio function
JP2002208996A (en) * 2001-01-11 2002-07-26 Sony Corp Portable apparatus, portable audio signal processor, and portable communication terminal
EP1235387B1 (en) * 2001-02-19 2005-12-14 Alcatel Method for handling calls received at a wireless mobile terminal comprising a short range interface, and wireless mobile terminal and computer program therefor
US20030212804A1 (en) * 2002-05-09 2003-11-13 Ardeshir Hashemi Method and apparatus for media clip sharing over a network
JP3696192B2 (en) * 2002-09-27 2005-09-14 株式会社東芝 Electronic device and method for switching connection destination of electronic device
JP2004235838A (en) * 2003-01-29 2004-08-19 Toshiba Corp Electronic apparatus, its connection controlling method and method for regulating voice
TWI241828B (en) * 2004-02-18 2005-10-11 Partner Tech Corp Handheld personal data assistant (PDA) for communicating with a mobile in music-playing operation
CN1808928B (en) * 2005-01-17 2010-11-03 智邦科技股份有限公司 Method of receiving network telephone with Blue Teeth earphone
US7460495B2 (en) * 2005-02-23 2008-12-02 Microsoft Corporation Serverless peer-to-peer multi-party real-time audio communication system and method
US8073137B2 (en) * 2006-03-06 2011-12-06 Sony Ericsson Mobile Communications Ab Audio headset
US9037850B2 (en) 2006-03-17 2015-05-19 Sandisk Il Ltd. Session handover between terminals
JP4707623B2 (en) * 2006-07-21 2011-06-22 富士通東芝モバイルコミュニケーションズ株式会社 Information processing device
US20080070516A1 (en) * 2006-09-15 2008-03-20 Plantronics, Inc. Audio data streaming with auto switching between wireless headset and speakers
US8068925B2 (en) * 2007-06-28 2011-11-29 Apple Inc. Dynamic routing of audio among multiple audio devices
JP2009124243A (en) * 2007-11-12 2009-06-04 Toshiba Corp Information processor
US8060631B2 (en) * 2007-12-10 2011-11-15 Deluxe Digital Studios, Inc. Method and system for use in coordinating multimedia devices
US8155588B2 (en) * 2007-12-27 2012-04-10 Lenovo (Singapore) Pte. Ltd. Seamless hand-off of bluetooth pairings
US20090228897A1 (en) * 2008-03-04 2009-09-10 Murray Frank H Bidirectional Control of Media Players
US8126995B2 (en) * 2008-06-23 2012-02-28 Adobe Systems Incorporated Multi-source broadcasting in peer-to-peer network
JP4220575B1 (en) * 2008-09-12 2009-02-04 株式会社東芝 Information processing device
US8180933B2 (en) * 2009-01-21 2012-05-15 Microsoft Corporation Dynamic call handling from multiple attached devices wherein devices advertize its capabililes before facilitating call through appropriate device
US9131278B2 (en) * 2009-11-23 2015-09-08 At&T Intellectual Property I, Lp System and method for layered delivery of media content quality
CN102075891A (en) * 2009-11-24 2011-05-25 中兴通讯股份有限公司 Mobile phone answering method and system based on personal network
CN102238599A (en) 2010-05-06 2011-11-09 中兴通讯股份有限公司 Radio remote unit management device, system and method
KR101454564B1 (en) * 2010-09-30 2014-10-23 애플 인크. Wireless accessory device pairing transfer between multiple host devices
EP2664118B1 (en) * 2011-01-14 2018-11-14 BlackBerry Limited Mobile media content delivery
US8938312B2 (en) * 2011-04-18 2015-01-20 Sonos, Inc. Smart line-in processing
CN103703864B (en) * 2011-07-25 2017-10-27 Lg电子株式会社 Electronic equipment and its operating method
CN103037319B (en) * 2011-09-30 2016-04-27 联想(北京)有限公司 Communication transfer method, mobile terminal and server
US20130094660A1 (en) * 2011-10-07 2013-04-18 Halo2Cloud Llc Hands-free mobile audio device for wirelessly connecting an electronic device with headphones for transmitting audio signals therethrough
US8892088B2 (en) * 2011-12-16 2014-11-18 Htc Corporation Systems and methods for handling incoming calls on a media device
US9363653B2 (en) * 2012-03-08 2016-06-07 Intel Corporation Transfer of communication from one device to another
JP2013211747A (en) * 2012-03-30 2013-10-10 Fujitsu Ltd Session management method for mobile communication system, radio base station device, mobile apparatus, and mobile communication system
US9191988B2 (en) * 2012-05-26 2015-11-17 Qualcomm Incorporated Smart pairing using bluetooth technology
US9715365B2 (en) * 2012-06-27 2017-07-25 Sonos, Inc. Systems and methods for mobile music zones
US9131332B2 (en) * 2012-09-10 2015-09-08 Qualcomm Incorporated Method of providing call control information from a mobile phone to a peripheral device
CN103780751B (en) * 2012-10-25 2015-07-08 三星电子(中国)研发中心 System and method for sharing conversation of incoming call of cell phone
US9307312B2 (en) 2013-03-15 2016-04-05 Apple Inc. Audio accessory with internal clock
US9501259B2 (en) * 2013-11-22 2016-11-22 Qualcomm Incorporated Audio output device to dynamically generate audio ports for connecting to source devices
US8738723B1 (en) * 2013-12-10 2014-05-27 Google Inc. Predictive forwarding of notification data
EP3107304A4 (en) * 2014-02-10 2017-09-20 LG Electronics Inc. Method and device for reproducing content
US9510083B2 (en) * 2014-03-14 2016-11-29 Apple Inc. Managing connections of a user device
GB2524532A (en) * 2014-03-26 2015-09-30 Nokia Technologies Oy Apparatus, methods and computer programs for establishing wireless connections
US9891881B2 (en) * 2014-09-09 2018-02-13 Sonos, Inc. Audio processing algorithm database

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3840435A1 (en) * 2019-12-16 2021-06-23 Beijing Xiaomi Mobile Software Co., Ltd. Audio playing control method and device and storage medium

Also Published As

Publication number Publication date
US20150350766A1 (en) 2015-12-03
EP3687137A1 (en) 2020-07-29
EP3361698A1 (en) 2018-08-15
US10070215B2 (en) 2018-09-04
US20170078786A1 (en) 2017-03-16
EP3361698B1 (en) 2020-03-11
CN111263006A (en) 2020-06-09
US20180376238A1 (en) 2018-12-27
US9668044B2 (en) 2017-05-30
US10433047B2 (en) 2019-10-01
WO2015183393A1 (en) 2015-12-03
US20190394558A1 (en) 2019-12-26
CN106416207B (en) 2020-01-21
EP3135024B1 (en) 2018-03-14
US10986436B2 (en) 2021-04-20
US9510083B2 (en) 2016-11-29
US20170245047A1 (en) 2017-08-24
EP3687137B1 (en) 2023-01-25
CN106416207A (en) 2017-02-15
CN115314586A (en) 2022-11-08

Similar Documents

Publication Publication Date Title
US10986436B2 (en) Managing connections of a user device
US10701629B2 (en) Smart battery wear leveling for audio devices
US10135965B2 (en) Use of a digital assistant in communications
US9712623B2 (en) Answering a call with client through a host
US20160073250A1 (en) System and method for providing discovery of a wireless device
WO2017028396A1 (en) Connection method for multimedia playing device, master device, control terminal, and system
WO2018082335A1 (en) Method, apparatus, system, and device for connecting bluetooth device
US11914537B2 (en) Techniques for load balancing with a hub device and multiple endpoints
US20240073265A1 (en) Wireless multimedia apparatus and operation method thereof
WO2017000453A1 (en) Method and device for managing contact number
US20220337691A1 (en) Techniques for establishing communications with third-party accessories
WO2016085395A1 (en) Dynamic timing for improved communication handling between communication devices

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20161123

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: GRANT OF PATENT IS INTENDED

RIC1 Information provided on ipc code assigned before grant

Ipc: H04L 29/06 20060101ALI20170818BHEP

Ipc: H04W 76/00 20090101ALI20170818BHEP

Ipc: H04R 1/10 20060101ALI20170818BHEP

Ipc: H04M 1/725 20060101AFI20170818BHEP

INTG Intention to grant announced

Effective date: 20170919

GRAS Grant fee paid

Free format text: ORIGINAL CODE: EPIDOSNIGR3

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE PATENT HAS BEEN GRANTED

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

REG Reference to a national code

Ref country code: GB

Ref legal event code: FG4D

REG Reference to a national code

Ref country code: CH

Ref legal event code: EP

Ref country code: AT

Ref legal event code: REF

Ref document number: 979908

Country of ref document: AT

Kind code of ref document: T

Effective date: 20180315

REG Reference to a national code

Ref country code: FR

Ref legal event code: PLFP

Year of fee payment: 4

REG Reference to a national code

Ref country code: IE

Ref legal event code: FG4D

REG Reference to a national code

Ref country code: DE

Ref legal event code: R096

Ref document number: 602015008848

Country of ref document: DE

REG Reference to a national code

Ref country code: NL

Ref legal event code: MP

Effective date: 20180314

REG Reference to a national code

Ref country code: LT

Ref legal event code: MG4D

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: CY

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: LT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: FI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: HR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: NO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180614

RAP2 Party data changed (patent owner data changed or rights of a patent transferred)

Owner name: APPLE INC.

REG Reference to a national code

Ref country code: AT

Ref legal event code: MK05

Ref document number: 979908

Country of ref document: AT

Kind code of ref document: T

Effective date: 20180314

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: BG

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180614

Ref country code: RS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: GR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180615

Ref country code: SE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: LV

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: RO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: PL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: ES

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: NL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: AL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: EE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

REG Reference to a national code

Ref country code: CH

Ref legal event code: PL

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: AT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: SM

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: CZ

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: SK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

REG Reference to a national code

Ref country code: BE

Ref legal event code: MM

Effective date: 20180331

REG Reference to a national code

Ref country code: DE

Ref legal event code: R097

Ref document number: 602015008848

Country of ref document: DE

REG Reference to a national code

Ref country code: IE

Ref legal event code: MM4A

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: PT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180716

Ref country code: LU

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20180326

PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20180326

Ref country code: DK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: MC

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

26N No opposition filed

Effective date: 20181217

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: CH

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20180331

Ref country code: SI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

Ref country code: LI

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20180331

Ref country code: BE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20180331

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: MT

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20180326

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: TR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180314

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: HU

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO

Effective date: 20150326

Ref country code: MK

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20180314

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20180714

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: GB

Payment date: 20230202

Year of fee payment: 9

Ref country code: DE

Payment date: 20230131

Year of fee payment: 9

P01 Opt-out of the competence of the unified patent court (upc) registered

Effective date: 20230524

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: FR

Payment date: 20231229

Year of fee payment: 10