Patent Description:
Aspects and implementations of the present disclosure are generally directed to Bluetooth-based systems and methods for acknowledging the reception of wireless packets.

In existing wireless transmission schemes, a central device transmits packets. If the packets are successfully received by a peripheral device, the peripheral device responds by transmitting an acknowledgment to the central device. However, if the central device fails to receive a portion of the data, or if a portion of the data is incomplete or corrupted, the peripheral device will either (<NUM>) forego transmitting the acknowledgment or (<NUM>) transmit a negative acknowledgment. In this case, the central device responds to the lack of acknowledgment or negative acknowledgment by retransmitting the lost, incomplete, or corrupted portion of the data to ensure the peripheral device receives all of the data. The retransmission may repeat until the central device receives an acknowledgment from the peripheral device.

<CIT> and <CIT> disclose an audio apparatus comprising a first device and a second device that each receive the same audio data transmitted from a source device, one of the first and second devices operating as a primary device while the other operates as a secondary device, wherein the primary device performs a retransmission request for the audio data to the source device, while the secondary device performs a retransmission request to the primary device.

The present disclosure provides improved systems and methods of wireless packet acknowledgment. In particular, these improved systems and methods enable wireless audio devices, such as a pair of earbuds, to acknowledge receipt of packets, and initiate retransmission of unreceived or corrupted packets when necessary. This acknowledgment scheme enables the wireless audio devices to implement spatialized audio. Generally, a central device, such as a smartphone, transmits a first isochronous data stream and a second isochronous data stream. The first and second isochronous data streams are typically Bluetooth Low Energy (LE) Audio Connected Isochronous data streams (CISs). Further, the first and second isochronous data streams typically include first audio channel data and second audio channel data, respectively. The first audio channel data typically corresponds to a left channel or a right channel of a stereo pair, while the second audio channel data typically corresponds to the other channel.

The first isochronous data stream is intended to be received by a first peripheral device (such as a first earbud), while the second isochronous data stream is intended to be received by a second peripheral device (such as a second earbud). During transmission, the second peripheral device eavesdrops on the first isochronous data stream in an attempt to receive a packet of the first isochronous data stream. The second peripheral device then transmits an acknowledgment or negative acknowledgment based on whether the packet was received by the second peripheral device. If the second device fails to transmit an acknowledgment (or transmits a negative acknowledgment), the central device retransmits the packet. This retransmission may repeat until the second device acknowledges successful reception of the packet.

In some examples, the system selects either the first peripheral device or the second peripheral device to acknowledge the receipt of audio data on behalf of the other. In particular, this scheme may be implemented in situations where the link quality between the central device and one of the peripheral devices is much weaker than the other. Thus, if the peripheral device associated with weaker link quality successfully acknowledges receipt of the transmitted packets, the other peripheral device almost certainly received the transmitted packets. Therefore, only one peripheral device is required to acknowledge receipt, improving system efficiency. In alternative examples, a programmable pattern may be used to designate which peripheral device is providing acknowledgment. In these examples, the acknowledging peripheral device may alternate periodically, such as every one, two, or three subevents.

In some examples, the retransmission of unreceived data packets occurs between the first and second peripheral devices, rather than between the central device and one of the peripheral devices. In these examples, the second peripheral device transmits the acknowledgment or negative acknowledgment to the first peripheral device. If the first peripheral device receives a negative acknowledgment, or if it fails to receive an acknowledgement, it will transmit the data packet from the first isochronous data stream to the second peripheral device. In further examples, the second peripheral device transmits block acknowledgments representative of receiving or not receiving several data packets. Upon receiving the block acknowledgment, the first peripheral device will transmit the data packets not received by the second peripheral device.

Generally, a method of acknowledgment of wireless data packets is provided. The method includes receiving, from a central device at a first peripheral device, a first isochronous data stream intended to be received by the first peripheral device. In some examples, the central device is a smartphone. In some examples, the first peripheral device is a left earbud.

The method further includes receiving, from a central device at a second peripheral device, a second isochronous data stream intended to be received by the second peripheral device. In some examples, the second peripheral device is a right earbud.

According to an example, the first isochronous data stream includes first audio channel data, and the second isochronous data stream includes second audio channel data. The second audio channel data may be different from the first audio channel data. The first audio channel data may relate to one of a left channel or a right channel of a stereo pair, and the second audio channel data may relate to the other of the left channel or the right channel of the stereo pair. The first audio channel data may not be included in the second isochronous data stream.

According to an example, the first isochronous data stream may further include third audio channel data. The first audio channel data, the second audio channel data, and the third audio channel data may each relate to one of a plurality of audio channels of a surround sound system.

According to an example, the first isochronous data stream and the second isochronous data stream are each a Bluetooth LE Audio CIS.

The method further includes eavesdropping, via the second peripheral device, the first isochronous data stream in an attempt to receive a packet of the first isochronous data stream.

The method further includes sending, from the second peripheral device, an acknowledgment based on whether the packet was received by the second peripheral device. In some examples, the method further includes sending, from the second peripheral device, a negative acknowledgment in response to the second peripheral device failing to receive the packet. In other examples, the method further includes not sending, from the second peripheral device, the acknowledgement in response to the second peripheral device failing to receive the packet.

According to an example, the sending of the acknowledgment is from the second peripheral device to the central device. Further to this example, the sending of the acknowledgment is in place of an acknowledgment being sent from the first peripheral device to the central device. The sending of the acknowledgment occurs when a link quality between the central device and the second peripheral device is weaker than a link quality between the central device and the first peripheral device. Further, the sending of the acknowledgment may be based on a pattern wherein the first peripheral device and the second peripheral device alternate sending an acknowledgment. The pattern may alternate after every one, two, or three packet transmission subevents.

According to an example, the sending of the acknowledgment may be from the second peripheral device to the first peripheral device. In this example, the method may further comprise sending, from the second peripheral device, a negative acknowledgment to the first peripheral device in response to the second peripheral device failing to receive the packet. In response to the negative acknowledgment, the first peripheral device retransmits the packet to the second peripheral device.

In various implementations, a processor or controller can be associated with one or more storage media (generically referred to herein as "memory," e.g., volatile and nonvolatile computer memory such as ROM, RAM, PROM, EPROM, and EEPROM, floppy disks, compact disks, optical disks, magnetic tape, Flash, OTP-ROM, SSD, HDD, etc.). In some implementations, the storage media can be encoded with one or more programs that, when executed on one or more processors and/or controllers, perform at least some of the functions discussed herein. Various storage media can be fixed within a processor or controller or can be transportable, such that the one or more programs stored thereon can be loaded into a processor or controller so as to implement various aspects as discussed herein. The terms "program" or "computer program" are used herein in a generic sense to refer to any type of computer code (e.g., software or microcode) that can be employed to program one or more processors or controllers.

It should also be appreciated that terminology explicitly employed herein that also can appear in any disclosure herein referred to should be accorded a meaning most consistent with the particular concepts disclosed herein.

Other features and advantages will be apparent from the description and the claims.

Also, the drawings are not necessarily to scale, emphasis instead generally being placed upon illustrating the principles of the various examples.

In audio systems including two devices (such as a set of truly wireless earbuds), one device will typically receive one channel of audio data (such as a left channel of a stereo pair), and the other device will typically receive a different channel of audio data (such as a right channel of the stereo pair). If the devices wish to spatialize the audio in some manner, then each device would need to receive more than the single channel. For instance, for a set of truly wireless earbuds, the right bud would need to receive its right channel as well as the left channel transmitted to the left bud, and the left bud would need to receive its left channel as well as the right channel that is transmitted to the right bud. This would allow audio to be spatialized by the buds (as opposed to having pre-spatialized audio sent to the buds), which can enable using data from the buds themselves to help with the audio spatialization (such as using data from onboard inertial measurement units (IMUs), accelerometers, or gyroscopes). However, existing acknowledgment schemes are unable to provide sufficient acknowledgment of receipt of left and right audio channels by both devices within the timing required for spatialized audio. Accordingly, the present disclosure describes techniques for improving wireless packet acknowledgment schemes, which can be used in the context of spatialized audio.

The present disclosure provides improved systems and methods of wireless packet acknowledgment. In particular, these improved systems and methods enable wireless audio devices to acknowledge receipt of packets, and initiate retransmission of unreceived or corrupted packets when necessary. This acknowledgment scheme enables the wireless audio devices to implement spatialized audio. Generally, a central device transmits a first isochronous data stream and a second isochronous data stream. The first and second isochronous data streams are typically Bluetooth Low Energy (LE) Audio Connected Isochronous data streams (CISs). Further, the first and second isochronous data streams typically include first audio channel data and second audio channel data, respectively. The first audio channel data typically corresponds to a left channel or right channel of a stereo pair, while the second audio channel data typically corresponds to the other channel.

<FIG> shows an example system implementing wireless data packet acknowledgment. The system includes a central device <NUM>, a first peripheral device <NUM>, and a second peripheral device <NUM>. In <FIG>, the central device <NUM> is illustrated as a smartphone, but in other examples, the central device may be any device capable of transmitting wireless packets, such as a personal computer, tablet, smart television, stereo receiver, soundbar, etc. Further, in <FIG>, the first peripheral device <NUM> is illustrated as a left earbud, while the second peripheral device <NUM> is illustrated as a right earbud. In other examples, the first peripheral device <NUM> and the second peripheral device <NUM> may form other types of wearable audio devices, such as a pair of headphones, an audio headset, or audio eyeglasses. In other examples, the first peripheral device <NUM> and the second peripheral device <NUM> may be non-wearable audio devices, such as a pair of stereo loudspeakers.

A first isochronous data stream <NUM> is formed between the central device <NUM> and the first peripheral device <NUM>. In some examples, the first isochronous data stream <NUM> is a Bluetooth stream, such as a Bluetooth LE Audio CIS. The first isochronous data stream <NUM> conveys packets <NUM> from the central device <NUM> to the first peripheral device <NUM>. In some examples, the packets <NUM> include first audio channel data <NUM>. In further examples, the first audio channel data <NUM> can relate to either a left channel or a right channel of a stereo pair.

The first peripheral device <NUM> may respond to the transmission of packets <NUM> via the first isochronous data stream <NUM> in several ways. First, upon successful receipt of a packet <NUM>, the first peripheral device <NUM> wirelessly transmits an acknowledgment <NUM> to the central device <NUM>. This acknowledgment <NUM> indicates that the corresponding packet <NUM> was successfully transmitted and received, and further retransmission of the packet <NUM> is unnecessary. However, in some cases, the packet <NUM> may not be successfully received by the first peripheral device <NUM>. In this case, the first peripheral device <NUM> either omits the transmission of the acknowledgment <NUM>, or transmits a negative acknowledgment <NUM>. For example, if the first peripheral device <NUM> receives a corrupted version of the packet <NUM>, the first peripheral device <NUM> may transmit the negative acknowledgment <NUM>. Further, if the first peripheral device <NUM> doesn't receive any version of the packet <NUM>, the first peripheral device <NUM> may omit transmission of the acknowledgment <NUM>. The central device <NUM> may recognize the lack of acknowledgment from the first peripheral device <NUM> due to the timing of the first isochronous stream <NUM>. If the central device <NUM> fails to receive an acknowledgment <NUM>, or if it receives a negative acknowledgment <NUM>, the central device <NUM> retransmits the packet <NUM>, via the first isochronous data stream <NUM>, to the first peripheral device <NUM>. In some examples, the central device <NUM> may continually retransmit the packet <NUM> until the central device <NUM> receives a corresponding acknowledgment <NUM>.

As further illustrated in <FIG>, the second peripheral device <NUM> eavesdrops on the first isochronous data stream <NUM> to attempt to capture the packets <NUM> conveyed by the first isochronous data stream <NUM>. This eavesdropping may be enabled by the central device <NUM> or the first peripheral device <NUM> sharing credentials or other information corresponding to the first isochronous data stream <NUM> with the second peripheral device <NUM>. Similar to the first peripheral device <NUM>, the second peripheral device <NUM> may generate acknowledgments <NUM> or negative acknowledgments <NUM> corresponding to receiving (or failing to receive) the packets <NUM>. As will be described in further detail below with reference to <FIG>, the negative acknowledgments <NUM> or lack of acknowledgments <NUM> may be received or recognized by either the central device <NUM> or the first peripheral device <NUM>, depending on the configuration of the system. The negative acknowledgments <NUM> or lack of acknowledgments <NUM> may then cause either central device <NUM> or the first peripheral device <NUM> to retransmit the packets <NUM> that the second peripheral device <NUM> failed to successfully receive. The central device <NUM> or the first peripheral device <NUM> may recognize the lack of acknowledgment from the second peripheral device <NUM> due to the timing of the first isochronous stream <NUM>.

In order for the second peripheral device <NUM> to eavesdrop on the first isochronous data stream <NUM> (or for the first peripheral device <NUM> to eavesdrop on the second isochronous data stream <NUM> as illustrated in <FIG>), the first <NUM> and second <NUM> peripheral devices must exchange information so that the second peripheral device <NUM> knows when to eavesdrop. Further, the first <NUM> and second <NUM> peripheral devices must negotiate a pattern for transmitting acknowledgments <NUM> and negative acknowledgments <NUM> to the central device <NUM>. This pattern may dynamically change over time, but a communication channel must exist between the first <NUM> and second <NUM> peripheral devices to facilitate this negotiation. The central device <NUM> will not perceive any difference between an acknowledgement <NUM> sent from the first peripheral device <NUM> or the second peripheral device <NUM>, as, due to the negotiation, both peripheral devices <NUM>, <NUM> will send acknowledgments <NUM> at the proper time and on the proper frequency.

The negotiation ensures that only one peripheral device <NUM>, <NUM> transmits at a time on the proper frequency. Different patterns of acknowledgment may be used depending on a variety of factors, such as radio frequency (RF) condition, the number of packet retransmission opportunities, the battery level of the peripheral devices <NUM>, <NUM>, and/or other receive or transmit commitments of the peripheral devices. Some example acknowledgement schemes, where P1 represents the first peripheral device <NUM>, and P2 represents the second peripheral device <NUM>, include P1 P1 P1 P1, P1 P1 P2 P2, P1 P2 P1 P2, P1 P1 P1 P2, etc..

<FIG> shows another aspect of the system illustrated in <FIG>. While <FIG> illustrates the conveyance of packets <NUM> via the first isochronous data stream <NUM>, <FIG> illustrates the conveyance of packets <NUM> via the second isochronous data stream <NUM>. The second isochronous data stream <NUM> is formed between the central device <NUM> and the second peripheral device <NUM>. As with the first isochronous data stream <NUM>, the second isochronous data stream <NUM> may be a Bluetooth stream, such as a Bluetooth LE Audio CIS. In some examples, the packets <NUM> include second audio channel data <NUM>. In further examples, the second audio channel data <NUM> can relate to either a left channel or a right channel of a stereo pair, preferably the opposite of the first audio channel data <NUM> conveyed by the first isochronous data stream <NUM>.

Upon successful receipt of the packet <NUM>, the second peripheral device <NUM> transmits an acknowledgment <NUM> to the central device <NUM>. Otherwise, the second peripheral device <NUM> either omits the transmission of the acknowledgment <NUM>, or transmits a negative acknowledgment <NUM>. If the central device <NUM> fails to receive an acknowledgment <NUM>, or if it receives a negative acknowledgment <NUM>, the central device <NUM> retransmits the packet <NUM>, via the second isochronous data stream <NUM>, to the second peripheral device <NUM>. The central device <NUM> may recognize the lack of acknowledgment from the second peripheral device <NUM> due to the timing of the second isochronous stream <NUM>.

The first device <NUM> eavesdrops on the second isochronous data stream <NUM> to attempt to capture the packets <NUM> conveyed by the second isochronous data stream <NUM>. The second peripheral device <NUM> may then generate acknowledgments <NUM> or negative acknowledgments <NUM> corresponding to receiving (or failing to receive) the packets <NUM>. The negative acknowledgments <NUM> (or lack of acknowledgments <NUM>) may be received (or recognized) by either the central device <NUM> or the second peripheral device <NUM>, depending on the configuration of the system. The negative acknowledgments <NUM> or lack of acknowledgments <NUM> may then trigger either central device <NUM> or the second peripheral device <NUM> to retransmit the packets <NUM> that the first peripheral device <NUM> failed to successfully receive via the eavesdropping. The central device <NUM> or the second peripheral device <NUM> may recognize the lack of acknowledgment from the first peripheral device <NUM> due to the timing of the second isochronous stream <NUM>.

The arrangements described above with reference to <FIG> and <FIG> enable the implementation of spatialized audio, as each peripheral device <NUM>, <NUM> receives packets <NUM>, <NUM> from both isochronous data streams <NUM>, <NUM>. These packets <NUM>, <NUM> contain first and second audio channel data <NUM>, <NUM>, thus enabling each peripheral device <NUM>, <NUM> to receive both right and left channel audio. By receiving both left and right channel audio, the processors <NUM>, <NUM> of the peripheral devices <NUM>, <NUM> may generate spatialized audio signals using both left and right audio channels, as well as other inputs, such as data collected by accelerometers, gyroscopes, and/or additional sensors. These spatialized audio signals may be played to the users via acoustic transducers <NUM>, <NUM>.

In some examples, the spatialized audio signals are generated based on more than two audio channels. For instance, a surround sound system (such as <NUM> surround sound or <NUM> surround sound) may have several channels. In these cases, the packets <NUM>, <NUM> may include data corresponding to more than one audio channel. For example, each packet <NUM> of the first isochronous data stream <NUM> may include first audio channel data <NUM> and/or third audio channel data <NUM>, while each packet <NUM> of the second isochronous data stream may include second audio channel data <NUM>. In this example, each type of audio channel data <NUM>, <NUM>, <NUM> may represent one of three different speakers in a surround sound system. For the first audio channel data <NUM> may correspond to a left treble speaker, the second audio channel data <NUM> may correspond to a right treble speaker, and the third audio channel data <NUM> may correspond to a center bass speaker. The processors <NUM>, <NUM> of the peripheral devices <NUM>, <NUM> then use the third audio channel data <NUM> along with the other audio channel data <NUM>, <NUM> and additional inputs to generate spatialized audio signals.

In a further example, the acknowledgment scheme may be configured for more than two isochronous data streams. For example, the central device <NUM> could form a first isochronous data stream <NUM> with the first peripheral device <NUM>, a second isochronous data stream <NUM> with the second peripheral device <NUM>, and a third isochronous data stream with the first peripheral device <NUM> or the second peripheral device <NUM>. The third isochronous data stream may be configured to convey the third audio channel data <NUM> described above, or other types of data, depending on the application. Additional isochronous data streams may be utilized where appropriate. As demonstrated in <FIG>, the transmission of packets by the isochronous streams must be coordinated to avoid interference.

<FIG> is an illustration demonstrating the cross-body effect. As shown in <FIG>, a user U is carrying a central device <NUM>, embodied as a smartphone, in his right hand. The user U is also wearing a first peripheral device <NUM>, embodied as a left earbud, in his left ear. A first isochronous data stream <NUM> conveys packets <NUM> from the central device <NUM> to the first peripheral device <NUM>. However, because the shortest path of the first isochronous data stream <NUM> travels through the user U, the first isochronous data stream <NUM> may experience packet losses (and other effects) due to the physical structure of the body of the user U. Accordingly, packets <NUM> conveyed via the first isochronous data stream <NUM> may need to be retransmitted due to the cross-body effect.

<FIG> is a flow diagram of an interleaved scheme for wireless packet acknowledgment. As shown in <FIG>, the system includes a first isochronous data stream <NUM> configured to convey a packet <NUM> corresponding to a left stereo channel, and a second isochronous data stream <NUM> configured to convey a packet <NUM> corresponding to a right stereo channel. The packets <NUM>, <NUM> are transmitted by central device <NUM>, not shown. The isochronous data streams <NUM>, <NUM> alternate conveying packets <NUM>, <NUM> during a CIS interval <NUM>. The CIS interval is divided into a series of subevents <NUM>. In each subevent <NUM>, one of the isochronous data streams <NUM>, <NUM> transmits a packet <NUM>, <NUM>, and one of the peripheral devices <NUM>, <NUM> responds by transmitting an acknowledgment <NUM>, <NUM> or negative acknowledgment <NUM>, <NUM>. By alternating the transmission of packets <NUM>, <NUM> according to the subevents <NUM>, the interleaved scheme prevents the packets <NUM>, <NUM> and acknowledgments <NUM>, <NUM> from interfering with each other.

Starting on the left side of the diagram, the first isochronous data stream <NUM> transmits a packet <NUM>, designated L1 for left stereo audio channel, during the first subevent <NUM>. L1 is received by the first peripheral device <NUM>. In response to receiving L1, the first peripheral device <NUM> transmits an acknowledgment <NUM>. This acknowledgment <NUM> is received by the central device <NUM>. The acknowledgment <NUM> configures the central device <NUM> to stop transmitting the packet <NUM>, as it has been successfully received by the first peripheral device <NUM>.

During the second subevent <NUM>, the second isochronous data stream <NUM> transmits a packet <NUM>, designated R1 for right stereo audio channel. R1 is received by the second peripheral device <NUM>. In response to receiving R1, the second peripheral device <NUM> transmits an acknowledgment <NUM>. This acknowledgment <NUM> is received by the central device <NUM>. The acknowledgment <NUM> configures the central device <NUM> to stop transmitting the packet <NUM>, as it has been successfully received by the second peripheral device <NUM>.

However, if the central device <NUM> fails to receive an acknowledgment <NUM>, <NUM> from either of the peripheral devices <NUM>, <NUM>, the central device <NUM> may retransmit one or both of the packets <NUM>, <NUM> during a retransmission period <NUM> of the CIS interval <NUM>. For example, if the central device <NUM> fails to receive an acknowledgment <NUM> of the first peripheral device <NUM> receiving the packet <NUM>, the central device <NUM> will retransmit the packet <NUM> via the first isochronous data stream <NUM> during the third subevent <NUM>. In this example, the retransmitted packet <NUM> is designated L2. If L2 is not received by the first peripheral device <NUM>, L3 will be transmitted during the fifth subevent <NUM>. Similarly, if central device <NUM> fails to receive an acknowledgment <NUM> of the second peripheral device <NUM> receiving the packet <NUM>, the central device will retransmit the packet <NUM> via the second isochronous data stream <NUM> during the fourth subevent. In this example, the retransmitted packet <NUM> is designated R2. If R2 is not received by the second peripheral device <NUM>, R3 will be transmitted during the sixth subevent <NUM>.

The central device <NUM> may recognize the lack of acknowledgment from the first peripheral device <NUM> due to the timing of the first isochronous stream <NUM>. For example, if a subevent <NUM> has expired and the central device <NUM> has not received an acknowledgment <NUM> from the first peripheral device <NUM>, the central device <NUM> recognizes that the first peripheral device <NUM> did not successfully receive the transmitted packet <NUM>, triggering future retransmission of the packet <NUM>. Similarly, the central device <NUM> may recognize the lack of acknowledgment from the second peripheral device <NUM> due to the timing of the second isochronous stream <NUM>. If a subevent <NUM> has expired and the central device <NUM> has not received an acknowledgment <NUM> from the second peripheral device <NUM>, the central device <NUM> recognizes that first peripheral device <NUM> did not successfully receive the transmitted packet <NUM>, triggering future retransmission of the packet <NUM>.

<FIG> illustrates a variation of <FIG> in which each of the peripheral devices <NUM>, <NUM> eavesdrop on the isochronous data stream <NUM>, <NUM> transmitting a packet <NUM>, <NUM> to the other peripheral device <NUM>, <NUM>. More specifically, during the first subevent <NUM>, the first isochronous data stream <NUM> transmits packet <NUM>, designated L1. L1 is received by the first peripheral device <NUM> via the first isochronous data stream <NUM>. However, the second peripheral device <NUM> eavesdrops on the first isochronous data stream <NUM> to also receive L1. Similarly, during the second subevent, the second isochronous data stream <NUM> transmits packet <NUM>, designated R1. R1 is received by the second peripheral device <NUM> via the second isochronous data stream <NUM>. The first peripheral device <NUM> eavesdrops on the second isochronous data stream <NUM> to also receive R1. Accordingly, both peripheral devices <NUM>, <NUM> receive packets <NUM>, <NUM> from both isochronous data streams <NUM>, <NUM> to enable spatialized audio.

However, with both peripheral devices <NUM>, <NUM> receiving both packets <NUM>, <NUM>, the acknowledgment scheme must provide a method for acknowledging the receipt of the packets <NUM>, <NUM> and to trigger retransmission when necessary. The configuration of <FIG> relies on determining a first link quality <NUM> between the central device <NUM> and the first peripheral device <NUM>, and a second link quality <NUM> between the central device <NUM> and the second peripheral device <NUM>. These link qualities <NUM>, <NUM> may be determined by the transceivers <NUM>, <NUM> and processors <NUM>, <NUM> embedded within each peripheral device <NUM>, <NUM>. Alternatively, the link qualities <NUM>, <NUM> may be determined by one or more components of the central device <NUM>.

These link qualities <NUM>, <NUM> may also be shared between the central device <NUM> and the peripheral devices <NUM>, <NUM> to enable proper selection of an acknowledgment device. The acknowledgment device is the peripheral device <NUM>, <NUM> chosen to provide acknowledgments <NUM>, <NUM> (and/or negative acknowledgments <NUM>, <NUM>) to the central device <NUM> in response to receiving the packets <NUM>, <NUM>. In one example, the peripheral device <NUM>, <NUM> corresponding to the lower link quality is chosen as the acknowledgment device. For example, if a user carries a central device <NUM> (smartphone) in their left hand, wears a first peripheral device <NUM> (left earbud) in their left ear, and wears a second peripheral device <NUM> (right earbud) in their right ear, the first link quality <NUM> between the central device <NUM> and the first peripheral device <NUM> will likely be significantly higher than the second link quality <NUM> between the central device <NUM> and the second peripheral device <NUM> due to the cross-body effect. Thus, if, despite the low link quality <NUM>, the second device <NUM> successfully received the packets <NUM>, <NUM> transmitted by the central device <NUM>, it is highly probable that the first peripheral device <NUM> also successfully received the packets <NUM>, <NUM>. Accordingly, the second peripheral device <NUM> is designated as the acknowledgment device configured to transmit acknowledgments <NUM>, <NUM> to the central device <NUM> when the packets <NUM>, <NUM> are successfully received.

In some examples, the designation of the acknowledgment device may dynamically change during the CIS interval <NUM>. For example, if the user U moves the central device <NUM> from their left hand to their right back pocket, the first link quality <NUM> will become significantly lower than the second link quality <NUM>. Accordingly, the devices <NUM>, <NUM>, <NUM> in the system may be configured to dynamically determine the link qualities <NUM>, <NUM> during streaming, and switch designation of acknowledgment device when appropriate.

<FIG> illustrates a further variation of <FIG> and <FIG>. In <FIG>, the acknowledgment device was chosen based on a comparison of the link qualities <NUM>, <NUM> between the central device <NUM> and the peripheral devices <NUM>, <NUM>. In the example of <FIG>, the acknowledgment device for each subevent <NUM> is selected based on a pattern <NUM> which alternates between the first peripheral device <NUM> and the second peripheral device <NUM>. In some examples, the pattern <NUM> may be predetermined and stored in the memories <NUM>, <NUM> of the peripheral devices <NUM>, <NUM>. In further examples, the pattern <NUM> may be dynamically adjusted based on a wide array of factors, including the link qualities <NUM>, <NUM> between the central device <NUM> and the peripheral devices <NUM>, <NUM>. As shown in <FIG>, the first peripheral device <NUM> is used as the acknowledgment device during the second, third, and sixth subevents <NUM>. The second peripheral device <NUM> is used as the acknowledgment device during the first, fourth, and fifth subevents <NUM>.

During the first subevent <NUM>, packet <NUM>, designated L1, is conveyed by the first isochronous data stream <NUM> to the first peripheral device <NUM>. The first peripheral device <NUM> successfully receives the packet <NUM>. However, the second peripheral device <NUM> attempts to capture the packet <NUM> via eavesdropping and fails. Since the second peripheral device <NUM> is designated as the acknowledgment device, the second device <NUM> transmits a negative acknowledgment <NUM> to the central device <NUM>. Having received the negative acknowledgment <NUM>, the central device <NUM> now knows to retransmit the packet <NUM>, even though the packet <NUM> was successfully received by the first peripheral device <NUM>.

During the second subevent <NUM>, packet <NUM>, designated R1, is conveyed by the second isochronous data stream <NUM> to the second peripheral device <NUM>. The second peripheral device <NUM> successfully receives the packet <NUM>. Further, the first peripheral device <NUM> eavesdrops the second isochronous data stream <NUM> and successfully receives the packet <NUM>. Since the first peripheral device <NUM> is designated as the acknowledgment device in the second subevent <NUM>, the first peripheral device <NUM> transmits an acknowledgment <NUM> to the central device <NUM>. Upon successfully receiving the acknowledgment <NUM>, the central device <NUM> will not retransmit the packet <NUM>.

During the third subevent <NUM>, packet <NUM> is retransmitted by the central device <NUM>. Retransmitted packet <NUM> is designated L2. Even though it successfully received L1, the first peripheral device <NUM> successfully receives L2. Further, after failing to receive the packet <NUM>, the second peripheral device <NUM> now successfully receives L2. However, according to the pattern <NUM>, the first peripheral device <NUM> is now selected as the acknowledgment device, and transmits the acknowledgment <NUM> to the central device <NUM>. Thus, the reception of the packet <NUM> by the second peripheral device <NUM> during the third subevent is irrelevant to the acknowledgment scheme. Upon successfully receiving the acknowledgment <NUM>, the central device <NUM> will not retransmit the packet <NUM>.

<FIG> is a further variation of the pattern-based acknowledgment scheme of <FIG>. In the example of <FIG>, when the acknowledgment device transmits an acknowledgment <NUM>, <NUM> or negative acknowledgment <NUM>, <NUM>, the other peripheral device <NUM>, <NUM> eavesdrops on this transmission to learn whether or not the acknowledgment device successfully received the packet <NUM>, <NUM>. If not, the other peripheral device <NUM>, <NUM> will be configured to not transmit an acknowledgment <NUM>, <NUM> based on successfully receiving the packet <NUM>, <NUM>, thus forcing retransmission of the packet <NUM>, <NUM> until the initially chosen acknowledgment device successfully acknowledges receipt of the packet <NUM>, <NUM>. This variation may be implemented in pattern-based acknowledgment schemes and if the link quality between the initial acknowledgment device and the central device <NUM> is significantly lower than the link quality between the other peripheral device and the central device <NUM>.

During the first subevent <NUM>, packet <NUM>, designated L1, is conveyed by the first isochronous data stream <NUM> to the first peripheral device <NUM>. The first peripheral device <NUM> successfully receives the packet <NUM>. However, as with <FIG>, the second peripheral device <NUM> attempts to capture the packet <NUM> via eavesdropping and fails. Since the second peripheral device <NUM> is designated as the acknowledgment device, the second device transmits a negative acknowledgment <NUM> to the central device <NUM>. Having received the negative acknowledgment <NUM>, the central device <NUM> now knows to retransmit the packet <NUM>, even though the packet <NUM> was successfully received by the first peripheral device <NUM>. Further, the first peripheral device <NUM> eavesdrops on the transmission of the negative acknowledgment <NUM>, and now knows that the second peripheral device <NUM> failed to receive the packet <NUM>.

During the second subevent <NUM>, packet <NUM>, designated R1, is conveyed by the second isochronous data stream <NUM> to the second peripheral device <NUM>. The second peripheral device <NUM> successfully receives the packet <NUM>. Further, the first peripheral device <NUM> eavesdrops the second isochronous data stream <NUM> and successfully receives the packet <NUM>. Since the first peripheral device <NUM> is designated as the acknowledgment device in the second subevent <NUM>, the first peripheral device <NUM> transmits an acknowledgment <NUM> to the central device <NUM>. Upon successfully receiving the acknowledgment <NUM>, the central device <NUM> will not retransmit the packet <NUM>. Further, the second peripheral device <NUM> eavesdrops on the transmission of the acknowledgment <NUM>, and now knows that the first peripheral device <NUM> successfully received the packet <NUM>.

During the third subevent <NUM>, packet <NUM> is retransmitted by the central device <NUM>. Retransmitted packet <NUM> is designated L2. Even though it successfully received L1 during the first subevent <NUM>, the first peripheral device <NUM> now successfully receives L2. Further, after failing to receive the packet <NUM>, the second peripheral device <NUM> now successfully receives L2. However, because the first peripheral device <NUM> knows the second peripheral device <NUM> failed to receive L1 during the first subevent <NUM>, the first peripheral device <NUM> does not transmit an acknowledgment <NUM> to the central device <NUM> during the third subevent <NUM>, thus again requiring retransmission of the packet <NUM> so that the second peripheral device <NUM> is required to provide an acknowledgment <NUM> during a future subinterval.

During the fourth subevent, no packets <NUM> of the second isochronous data stream <NUM> are transmitted, as successful transmission and receipt of the packet <NUM> was previously acknowledged during the second subevent.

During the fifth subevent, packet <NUM> is again retransmitted by the central device <NUM>. Retransmitted packet <NUM> is designated L3. Even though it successfully received L1 and L2, the first peripheral device <NUM> now successfully receives L3. Further, despite successfully receiving L2, the second peripheral device <NUM> now also successfully receives L3. As the second peripheral device <NUM> is now the acknowledgment device according to the pattern <NUM>, the second peripheral device <NUM> transmits the acknowledgment to the central device <NUM>. Upon successfully receiving the acknowledgment <NUM>, the central device <NUM> will not retransmit the packet <NUM>.

<FIG> is a flow diagram of an acknowledgment scheme wherein one of the peripheral devices <NUM>, <NUM>, rather than the central device <NUM>, retransmit packets <NUM>, <NUM> based on block acknowledgments <NUM> transmitted by the other peripheral device <NUM>, <NUM>. Block acknowledgments <NUM>, <NUM> are an aggregate of the aforementioned acknowledgments <NUM>, <NUM> and negative acknowledgments <NUM>, <NUM>.

As shown in <FIG>, the central device <NUM> transmits, via the first isochronous data stream <NUM>, first packet 102A during the first subinterval <NUM>. The first packet 102A is received by the first peripheral device <NUM>, which transmits a first acknowledgment 104A to the central device <NUM>. The central device <NUM> then transmits, via the first isochronous data stream <NUM>, second packet 102B during the second subinterval <NUM>. The second packet 102B is received by the first peripheral device <NUM>, which transmits a second acknowledgment 104B to the central device <NUM>. The central device <NUM> then transmits, via the first isochronous data stream <NUM>, third packet 102C during the third subinterval <NUM>. The third packet 102C is received by the first peripheral device <NUM>, which transmits a third acknowledgment 104C to the central device <NUM>.

Upon receiving all three acknowledgments 104A-C, the central device <NUM> generates a close event <NUM> during the fourth subevent <NUM>. The close event <NUM> triggers the second peripheral device <NUM> to generate a block acknowledgment <NUM>. While packets 102A-C were transmitted to the first peripheral device <NUM>, the second peripheral device <NUM> eavesdropped on the first isochronous data stream <NUM> in an attempt to capture the packets 102A-C. The block acknowledgment <NUM> aggregates the acknowledgments <NUM> and negative acknowledgments <NUM> corresponding to the receipt of these packets 102A-C by the second peripheral device <NUM>. In this case, the second peripheral device <NUM> successfully received the first and second packets 102A, 102B, but failed to receive the third packet 102C. Accordingly, the block acknowledgment <NUM> includes acknowledgments 104A, 104B corresponding to the first and second packets 102A, 102B, and a negative acknowledgment 106C corresponding to the third packet 102C.

During the fifth subevent, the second peripheral device <NUM> transmits the block acknowledgment <NUM> to the first peripheral device <NUM>. Based on the block acknowledgment <NUM>, the first peripheral device <NUM> wirelessly transmits the third packet 102C to the second peripheral device <NUM>. However, the second peripheral device <NUM> again fails to receive the third packet 102C.

Thus, during the sixth subevent, the second peripheral device <NUM> again transmits the block acknowledgment <NUM> indicating that the third packet 102C was not successfully received. Based on the block acknowledgment <NUM>, the first peripheral device <NUM> again wirelessly transmits the third packet 102C to the second peripheral device <NUM>. This time, the second peripheral device <NUM> successfully receives the third packet 102C, and generates a new block acknowledgment <NUM> indicating that all of the packets 102A-C were successfully received.

During the seventh subevent, the second peripheral device <NUM> transmits the updated block acknowledgment <NUM>. Based on the updated block acknowledgment <NUM>, the first peripheral device <NUM> learns that the second peripheral device has successfully received all of the packets 102A-C, and that further transmission of the packets 102A-C is not required.

<FIG> is a variation of the scheme of <FIG>, focused on the second isochronous data stream <NUM>. In <FIG>, packets 202A-C are transmitted, via the second isochronous data stream <NUM>, to the second peripheral device <NUM>. The first peripheral device <NUM> attempts to receive the packets 202A-C via eavesdropping. If the first peripheral device <NUM> is unsuccessful in receiving any of the packets 202A-C, the second peripheral device <NUM> transmits the missing packets 202A-C to the first peripheral device <NUM> based on block acknowledgements <NUM> generated by the first peripheral device <NUM>.

<FIG> is a schematic diagram of the first peripheral device <NUM>. The first peripheral device <NUM> includes an acoustic transducer <NUM>, a transceiver <NUM> (such as a Bluetooth transceiver), a memory <NUM>, and a processor <NUM>. The memory <NUM> stores a variety of data, including packets <NUM>, <NUM>, acknowledgments <NUM>, <NUM>, negative acknowledgments <NUM>, <NUM>, block acknowledgments <NUM>, <NUM>, link quality measurements <NUM>, <NUM>, and patterns <NUM> of acknowledgment.

<FIG> is a schematic diagram of the second peripheral device <NUM>. The second peripheral device <NUM> includes an acoustic transducer <NUM>, a transceiver <NUM> (such as a Bluetooth transceiver), a memory <NUM>, and a processor <NUM>. The memory <NUM> stores a variety of data, including packets <NUM>, <NUM>, acknowledgments <NUM>, <NUM>, negative acknowledgments <NUM>, <NUM>, block acknowledgments <NUM>, <NUM>, link quality measurements <NUM>, <NUM>, and patterns <NUM> of acknowledgment.

<FIG> is a flow chart of a method <NUM> of acknowledgment of wireless data packets. The method <NUM> includes receiving <NUM>, from a central device at a first peripheral device, a first isochronous data stream intended to be received by the first peripheral device. The method <NUM> further includes receiving <NUM>, from a central device at a second peripheral device, a second isochronous data stream intended to be received by the second peripheral device. The method <NUM> further includes eavesdropping <NUM>, via the second peripheral device, the first isochronous data stream in an attempt to receive a packet of the first isochronous data stream. The method <NUM> further includes sending <NUM>, from the second peripheral device, an acknowledgment or a negative acknowledgment based on whether the packet was received by the second peripheral device.

Other elements can optionally be present other than the elements specifically identified by the "and/or" clause, whether related or unrelated to those elements specifically identified.

This definition also allows that elements can optionally be present other than the elements specifically identified within the list of elements to which the phrase "at least one" refers, whether related or unrelated to those elements specifically identified.

The above-described examples of the described subject matter can be implemented in any of numerous ways. For example, some aspects can be implemented using hardware, software or a combination thereof. When any aspect is implemented at least in part in software, the software code can be executed on any suitable processor or collection of processors, whether provided in a single device or computer or distributed among multiple devices/computers.

The present disclosure can be implemented as a system, a method, and/or a computer program product at any possible technical detail level of integration. The computer program product can include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure.

The computer readable storage medium can be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing.

Computer readable program instructions for carrying out operations of the present disclosure can be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or the like, and procedural programming languages, such as the "C" programming language or similar programming languages. In some examples, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) can execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure.

Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to examples of the disclosure.

The computer readable program instructions can be provided to a processor of a, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions can also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram or blocks.

The computer readable program instructions can also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.

The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various examples of the present disclosure.

Claim 1:
A method (<NUM>) of acknowledgment of wireless data packets, comprising:
receiving (<NUM>), from a central device (<NUM>) at a first peripheral device (<NUM>), a first isochronous data stream (<NUM>) intended to be received by the first peripheral device;
receiving (<NUM>), from a central device at a second peripheral device (<NUM>), a second isochronous data stream (<NUM>) intended to be received by the second peripheral device;
eavesdropping (<NUM>), via the second peripheral device, the first isochronous data stream in an attempt to receive a packet (<NUM>) of the first isochronous data stream; and
sending (<NUM>), from the second peripheral device to the central device, an acknowledgment (<NUM>) after the packet has
been received by the second peripheral device, wherein the sending of the acknowledgment occurs when a link quality between the central device and the second peripheral device is weaker than a link quality between the central device and the first peripheral device